ad9680- sof + sample delineation
parent
db6d5f509f
commit
5c91e41da8
|
@ -43,6 +43,7 @@ module axi_ad9680 (
|
||||||
// rx_clk is (line-rate/40)
|
// rx_clk is (line-rate/40)
|
||||||
|
|
||||||
rx_clk,
|
rx_clk,
|
||||||
|
rx_sof,
|
||||||
rx_data,
|
rx_data,
|
||||||
|
|
||||||
// dma interface
|
// dma interface
|
||||||
|
@ -89,6 +90,7 @@ module axi_ad9680 (
|
||||||
// rx_clk is (line-rate/40)
|
// rx_clk is (line-rate/40)
|
||||||
|
|
||||||
input rx_clk;
|
input rx_clk;
|
||||||
|
input [ 3:0] rx_sof;
|
||||||
input [127:0] rx_data;
|
input [127:0] rx_data;
|
||||||
|
|
||||||
// dma interface
|
// dma interface
|
||||||
|
@ -193,8 +195,9 @@ module axi_ad9680 (
|
||||||
|
|
||||||
// main (device interface)
|
// main (device interface)
|
||||||
|
|
||||||
axi_ad9680_if i_if (
|
axi_ad9680_if #(.DEVICE_TYPE (DEVICE_TYPE)) i_if (
|
||||||
.rx_clk (rx_clk),
|
.rx_clk (rx_clk),
|
||||||
|
.rx_sof (rx_sof),
|
||||||
.rx_data (rx_data),
|
.rx_data (rx_data),
|
||||||
.adc_clk (adc_clk),
|
.adc_clk (adc_clk),
|
||||||
.adc_rst (adc_rst),
|
.adc_rst (adc_rst),
|
||||||
|
|
|
@ -34,9 +34,6 @@
|
||||||
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
// ***************************************************************************
|
|
||||||
// ***************************************************************************
|
|
||||||
// This is the LVDS/DDR interface
|
|
||||||
|
|
||||||
`timescale 1ns/100ps
|
`timescale 1ns/100ps
|
||||||
|
|
||||||
|
@ -46,6 +43,7 @@ module axi_ad9680_if (
|
||||||
// rx_clk is (line-rate/40)
|
// rx_clk is (line-rate/40)
|
||||||
|
|
||||||
rx_clk,
|
rx_clk,
|
||||||
|
rx_sof,
|
||||||
rx_data,
|
rx_data,
|
||||||
|
|
||||||
// adc data output
|
// adc data output
|
||||||
|
@ -58,10 +56,15 @@ module axi_ad9680_if (
|
||||||
adc_or_b,
|
adc_or_b,
|
||||||
adc_status);
|
adc_status);
|
||||||
|
|
||||||
|
// parameters
|
||||||
|
|
||||||
|
parameter DEVICE_TYPE = 0;
|
||||||
|
|
||||||
// jesd interface
|
// jesd interface
|
||||||
// rx_clk is (line-rate/40)
|
// rx_clk is (line-rate/40)
|
||||||
|
|
||||||
input rx_clk;
|
input rx_clk;
|
||||||
|
input [ 3:0] rx_sof;
|
||||||
input [127:0] rx_data;
|
input [127:0] rx_data;
|
||||||
|
|
||||||
// adc data output
|
// adc data output
|
||||||
|
@ -88,6 +91,7 @@ module axi_ad9680_if (
|
||||||
wire [15:0] adc_data_b_s2_s;
|
wire [15:0] adc_data_b_s2_s;
|
||||||
wire [15:0] adc_data_b_s1_s;
|
wire [15:0] adc_data_b_s1_s;
|
||||||
wire [15:0] adc_data_b_s0_s;
|
wire [15:0] adc_data_b_s0_s;
|
||||||
|
wire [127:0] rx_data_s;
|
||||||
|
|
||||||
// adc clock is the reference clock
|
// adc clock is the reference clock
|
||||||
|
|
||||||
|
@ -105,15 +109,15 @@ module axi_ad9680_if (
|
||||||
|
|
||||||
// data multiplex
|
// data multiplex
|
||||||
|
|
||||||
assign adc_data_a_s3_s = {rx_data[ 57: 56], rx_data[ 31: 24], rx_data[ 63: 58]};
|
assign adc_data_a_s3_s = {rx_data_s[ 57: 56], rx_data_s[ 31: 24], rx_data_s[ 63: 58]};
|
||||||
assign adc_data_a_s2_s = {rx_data[ 49: 48], rx_data[ 23: 16], rx_data[ 55: 50]};
|
assign adc_data_a_s2_s = {rx_data_s[ 49: 48], rx_data_s[ 23: 16], rx_data_s[ 55: 50]};
|
||||||
assign adc_data_a_s1_s = {rx_data[ 41: 40], rx_data[ 15: 8], rx_data[ 47: 42]};
|
assign adc_data_a_s1_s = {rx_data_s[ 41: 40], rx_data_s[ 15: 8], rx_data_s[ 47: 42]};
|
||||||
assign adc_data_a_s0_s = {rx_data[ 33: 32], rx_data[ 7: 0], rx_data[ 39: 34]};
|
assign adc_data_a_s0_s = {rx_data_s[ 33: 32], rx_data_s[ 7: 0], rx_data_s[ 39: 34]};
|
||||||
|
|
||||||
assign adc_data_b_s3_s = {rx_data[121:120], rx_data[ 95: 88], rx_data[127:122]};
|
assign adc_data_b_s3_s = {rx_data_s[121:120], rx_data_s[ 95: 88], rx_data_s[127:122]};
|
||||||
assign adc_data_b_s2_s = {rx_data[113:112], rx_data[ 87: 80], rx_data[119:114]};
|
assign adc_data_b_s2_s = {rx_data_s[113:112], rx_data_s[ 87: 80], rx_data_s[119:114]};
|
||||||
assign adc_data_b_s1_s = {rx_data[105:104], rx_data[ 79: 72], rx_data[111:106]};
|
assign adc_data_b_s1_s = {rx_data_s[105:104], rx_data_s[ 79: 72], rx_data_s[111:106]};
|
||||||
assign adc_data_b_s0_s = {rx_data[ 97: 96], rx_data[ 71: 64], rx_data[103: 98]};
|
assign adc_data_b_s0_s = {rx_data_s[ 97: 96], rx_data_s[ 71: 64], rx_data_s[103: 98]};
|
||||||
|
|
||||||
// status
|
// status
|
||||||
|
|
||||||
|
@ -125,6 +129,21 @@ module axi_ad9680_if (
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
// frame-alignment
|
||||||
|
|
||||||
|
genvar n;
|
||||||
|
|
||||||
|
generate
|
||||||
|
for (n = 0; n < 4; n = n + 1) begin: g_xcvr_if
|
||||||
|
ad_xcvr_rx_if #(.DEVICE_TYPE (DEVICE_TYPE)) i_xcvr_if (
|
||||||
|
.rx_clk (rx_clk),
|
||||||
|
.rx_ip_sof (rx_sof),
|
||||||
|
.rx_ip_data (rx_data[((n*32)+31):(n*32)]),
|
||||||
|
.rx_sof (),
|
||||||
|
.rx_data (rx_data_s[((n*32)+31):(n*32)]));
|
||||||
|
end
|
||||||
|
endgenerate
|
||||||
|
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
|
|
|
@ -14,6 +14,7 @@ adi_ip_files axi_ad9680 [list \
|
||||||
"$ad_hdl_dir/library/common/up_clock_mon.v" \
|
"$ad_hdl_dir/library/common/up_clock_mon.v" \
|
||||||
"$ad_hdl_dir/library/common/up_adc_common.v" \
|
"$ad_hdl_dir/library/common/up_adc_common.v" \
|
||||||
"$ad_hdl_dir/library/common/up_adc_channel.v" \
|
"$ad_hdl_dir/library/common/up_adc_channel.v" \
|
||||||
|
"$ad_hdl_dir/library/common/ad_xcvr_rx_if.v" \
|
||||||
"axi_ad9680_pnmon.v" \
|
"axi_ad9680_pnmon.v" \
|
||||||
"axi_ad9680_channel.v" \
|
"axi_ad9680_channel.v" \
|
||||||
"axi_ad9680_if.v" \
|
"axi_ad9680_if.v" \
|
||||||
|
|
Loading…
Reference in New Issue