Skip to content

Commit 8b7dc97

Browse files
Qiang DuQiang Du
authored andcommitted
soc/zest.v: Add data crossing to dsp_clk domain for adc_data_out
1 parent 120e5cb commit 8b7dc97

3 files changed

Lines changed: 20 additions & 16 deletions

File tree

board_support/fmc11x/iserdes_pack.v

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,9 @@ generate for (ix=0; ix < DW; ix=ix+1) begin: in_cell
145145
// Remap to bitwise_out
146146
// Supports Ad9653 Table 23 and Figure 2, in ZEST.
147147
// Supports LTC2175 in FMC11x.
148-
for (jx=0;jx<8;jx=jx+1) assign bitwise_out[DW*jx+ix] = dq[jx];
148+
for (jx=0;jx<8;jx=jx+1) begin
149+
assign bitwise_out[DW*jx+ix] = dq[jx];
150+
end
149151

150152
// XXX cross domains, data has to be a static training pattern
151153
always @(posedge clk) begin

board_support/zest_soc/zest.v

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,6 @@ module zest #(
6565
// Data interface
6666
// dsp_clk_out domain
6767
output dsp_clk_out,
68-
output [N_ADC-1:0] clk_div_out,
69-
output [N_CH-1:0] adc_out_clk,
7068
output [16*N_CH-1:0] adc_out_data,
7169
// dac_clk_out domain
7270
output dac_clk_out,
@@ -339,6 +337,7 @@ generate for (ix=0; ix<N_ADC; ix=ix+1) begin: ic_map
339337
end endgenerate
340338

341339
wire [15:0] adc_out [N_CH-1:0];
340+
wire [15:0] adc_out_dsp [N_CH-1:0];
342341
genvar ch;
343342
generate for (ch=0; ch<N_CH; ch=ch+1) begin: ch_map
344343
assign in_n[ch] = {ADC_D1_P[ch], ADC_D0_P[ch]}; // inverted due to hardware
@@ -364,20 +363,23 @@ generate for (ch=0; ch<N_CH; ch=ch+1) begin: ch_map
364363
.mem_packed_fwd ( mem_packed_fwd ),
365364
.mem_packed_ret ( mem_packed_rets[ch] )
366365
);
366+
// latch to dsp_clk domain
367+
reg_tech_cdc rtc[15:0] (
368+
.C(dsp_clk_out),
369+
.I(adc_out[ch][15:0]),
370+
.O(adc_out_dsp[ch][15:0])
371+
);
367372
// assign adc_out_data[16*ch+:16] = adc_out[ch]; // inverted by 0x14=0x7
368373
end endgenerate
369374
// Remap to SMA order
370-
assign adc_out_data[16*7+:16] = adc_out[4]; // J11 to ADC1 A
371-
assign adc_out_data[16*6+:16] = adc_out[5]; // J10 to ADC1 B
372-
assign adc_out_data[16*5+:16] = adc_out[6]; // J9 to ADC1 C
373-
assign adc_out_data[16*4+:16] = adc_out[7]; // J8 to ADC1 D
374-
assign adc_out_data[16*3+:16] = adc_out[0]; // J7 to ADC0 A
375-
assign adc_out_data[16*2+:16] = adc_out[1]; // J6 to ADC0 B
376-
assign adc_out_data[16*1+:16] = adc_out[2]; // J5 to ADC0 C
377-
assign adc_out_data[16*0+:16] = adc_out[3]; // J4 to ADC0 D
378-
379-
assign adc_out_clk = clk_div_data;
380-
assign clk_div_out = clk_div;
375+
assign adc_out_data[16*7+:16] = adc_out_dsp[4]; // J11 to ADC1 A
376+
assign adc_out_data[16*6+:16] = adc_out_dsp[5]; // J10 to ADC1 B
377+
assign adc_out_data[16*5+:16] = adc_out_dsp[6]; // J9 to ADC1 C
378+
assign adc_out_data[16*4+:16] = adc_out_dsp[7]; // J8 to ADC1 D
379+
assign adc_out_data[16*3+:16] = adc_out_dsp[0]; // J7 to ADC0 A
380+
assign adc_out_data[16*2+:16] = adc_out_dsp[1]; // J6 to ADC0 B
381+
assign adc_out_data[16*1+:16] = adc_out_dsp[2]; // J5 to ADC0 C
382+
assign adc_out_data[16*0+:16] = adc_out_dsp[3]; // J4 to ADC0 D
381383

382384
wfm_pack #(
383385
.BASE_ADDR ( BASE_ADDR ),

soc/picorv32/test/iserdes/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ include $(PICORV_DIR)/rules.mk
77
VIVADO_BASE = $(dir $(shell which vivado))..
88
BLOCK_RAM_SIZE = 2048
99
SRC_V = memory2_pack.v mpack.v munpack.v picorv32.v pico_pack.v sfr_pack.v
10-
SRC_V += fmc11x/iserdes_pack.v fmc11x/idelay_wrap.v fmc11x/dco_buf.v
11-
SRC_V += flag_xdomain.v dpram.v
10+
SRC_V += $(BOARD_SUPPORT_DIR)/fmc11x/iserdes_pack.v $(BOARD_SUPPORT_DIR)/fmc11x/idelay_wrap.v $(BOARD_SUPPORT_DIR)/fmc11x/dco_buf.v
11+
SRC_V += flag_xdomain.v dpram.v reg_tech_cdc.v
1212
SRC_V += $(VIVADO_BASE)/data/verilog/src/glbl.v
1313
CFLAGS += -DSIMULATION
1414

0 commit comments

Comments
 (0)