@@ -218,7 +218,19 @@ endgenerate
218
218
always @(posedge clk2x_270)
219
219
postamble <= drive_dqs;
220
220
221
+ reg [NUM_D- 1 :0 ] d_dfi_wrdata_p0;
222
+ reg [NUM_D- 1 :0 ] d_dfi_wrdata_p1;
223
+ reg [NUM_D/ 8 - 1 :0 ] d_dfi_wrdata_mask_p0;
224
+ reg [NUM_D/ 8 - 1 :0 ] d_dfi_wrdata_mask_p1;
225
+ always @(posedge sys_clk) begin
226
+ d_dfi_wrdata_p0 <= dfi_wrdata_p0;
227
+ d_dfi_wrdata_p1 <= dfi_wrdata_p1;
228
+ d_dfi_wrdata_mask_p0 <= dfi_wrdata_mask_p0;
229
+ d_dfi_wrdata_mask_p1 <= dfi_wrdata_mask_p1;
230
+ end
231
+
221
232
wire drive_dq;
233
+ wire d_drive_dq;
222
234
wire [NUM_D/ 2 - 1 :0 ] dq_i;
223
235
wire [NUM_D/ 2 - 1 :0 ] dq_o;
224
236
wire [NUM_D/ 2 - 1 :0 ] dq_t;
@@ -239,14 +251,14 @@ generate
239
251
.IOCE(clk4x_wr_strb),
240
252
.RST(1'b0 ),
241
253
.CLKDIV(sys_clk),
242
- .D1(dfi_wrdata_p0[i+NUM_D/ 2 ]),
243
- .D2(dfi_wrdata_p0[i ]),
244
- .D3(dfi_wrdata_p1[i+NUM_D/ 2 ]),
245
- .D4(dfi_wrdata_p1[i ]),
254
+ .D1(d_dfi_wrdata_p0[i ]),
255
+ .D2(d_dfi_wrdata_p1[i+NUM_D/ 2 ]),
256
+ .D3(d_dfi_wrdata_p1[i ]),
257
+ .D4(dfi_wrdata_p0[i+NUM_D/ 2 ]),
246
258
.TQ(dq_t[i]),
247
- .T1(~drive_dq ),
248
- .T2(~drive_dq ),
249
- .T3(~drive_dq ),
259
+ .T1(~d_drive_dq ),
260
+ .T2(~d_drive_dq ),
261
+ .T3(~d_drive_dq ),
250
262
.T4(~drive_dq),
251
263
.TRAIN(1'b0 ),
252
264
.TCE(1'b1 ),
@@ -313,10 +325,10 @@ generate
313
325
.IOCE(clk4x_wr_strb),
314
326
.RST(1'b0 ),
315
327
.CLKDIV(sys_clk),
316
- .D1(dfi_wrdata_mask_p0[i+NUM_D/ 16 ]),
317
- .D2(dfi_wrdata_mask_p0[i ]),
318
- .D3(dfi_wrdata_mask_p1[i+NUM_D/ 16 ]),
319
- .D4(dfi_wrdata_mask_p1[i ]),
328
+ .D1(d_dfi_wrdata_mask_p0[i ]),
329
+ .D2(d_dfi_wrdata_mask_p1[i+NUM_D/ 16 ]),
330
+ .D3(d_dfi_wrdata_mask_p1[i ]),
331
+ .D4(dfi_wrdata_mask_p0[i+NUM_D/ 16 ]),
320
332
.TQ(),
321
333
.T1(),
322
334
.T2(),
@@ -344,16 +356,17 @@ reg d_dfi_wrdata_en_p1;
344
356
always @(posedge sys_clk)
345
357
d_dfi_wrdata_en_p1 <= dfi_wrdata_en_p1;
346
358
359
+ assign drive_dq = dfi_wrdata_en_p1;
360
+ assign d_drive_dq = d_dfi_wrdata_en_p1;
361
+
347
362
reg r_dfi_wrdata_en;
348
- always @(posedge clk2x_270)
349
- r_dfi_wrdata_en <= d_dfi_wrdata_en_p1;
350
-
351
363
reg r2_dfi_wrdata_en;
352
- always @(posedge clk2x_270)
364
+ always @(posedge clk2x_270) begin
365
+ r_dfi_wrdata_en <= d_dfi_wrdata_en_p1;
353
366
r2_dfi_wrdata_en <= r_dfi_wrdata_en;
367
+ end
354
368
355
369
assign drive_dqs = r2_dfi_wrdata_en;
356
- assign drive_dq = d_dfi_wrdata_en_p1;
357
370
358
371
wire rddata_valid;
359
372
reg [4 :0 ] rddata_sr;
0 commit comments