add delay option to misalign dq from dqs

This commit is contained in:
AngeloJacobo 2023-09-15 20:02:05 +08:00
parent d834a4d67d
commit 0ba4f433e5
1 changed files with 13 additions and 6 deletions

View File

@ -96,7 +96,7 @@
`timescale 1ps / 1ps `timescale 1ps / 1ps
`define den8192Mb `define den8192Mb
`define sg125 `define sg125
`define x8 `define x16
`default_nettype wire `default_nettype wire
module ddr3 ( module ddr3 (
@ -138,7 +138,7 @@ module ddr3 (
parameter feature_truebl4 = 0; parameter feature_truebl4 = 0;
parameter feature_odt_hi = 0; parameter feature_odt_hi = 0;
parameter PERTCKAVG=TDLLK; parameter PERTCKAVG=TDLLK;
parameter FLY_BY_DELAY = 0; parameter FLY_BY_DELAY = 1600, DQ_DELAY = 0;
// text macros // text macros
`define DQ_PER_DQS DQ_BITS/DQS_BITS `define DQ_PER_DQS DQ_BITS/DQS_BITS
@ -534,9 +534,10 @@ module ddr3 (
reg dqs_out; reg dqs_out;
reg [DQS_BITS-1:0] dqs_out_dly; reg [DQS_BITS-1:0] dqs_out_dly;
reg dq_out_en; reg dq_out_en;
reg [DQ_BITS-1:0] dq_out_en_dly; reg [DQ_BITS-1:0] dq_out_en_dly, dq_out_en_dly_delayed;
reg [DQ_BITS-1:0] dq_out; reg [DQ_BITS-1:0] dq_out;
reg [DQ_BITS-1:0] dq_out_dly; reg [DQ_BITS-1:0] dq_out_dly, dq_out_dly_delayed;
reg out_en_delayed;
integer rdqsen_cntr; integer rdqsen_cntr;
integer rdqs_cntr; integer rdqs_cntr;
integer rdqen_cntr; integer rdqen_cntr;
@ -544,7 +545,13 @@ module ddr3 (
bufif1 buf_dqs [DQS_BITS-1:0] (dqs, dqs_out_dly, dqs_out_en_dly & {DQS_BITS{out_en}}); bufif1 buf_dqs [DQS_BITS-1:0] (dqs, dqs_out_dly, dqs_out_en_dly & {DQS_BITS{out_en}});
bufif1 buf_dqs_n [DQS_BITS-1:0] (dqs_n, ~dqs_out_dly, dqs_out_en_dly & {DQS_BITS{out_en}}); bufif1 buf_dqs_n [DQS_BITS-1:0] (dqs_n, ~dqs_out_dly, dqs_out_en_dly & {DQS_BITS{out_en}});
bufif1 buf_dq [DQ_BITS-1:0] (dq, dq_out_dly, dq_out_en_dly & {DQ_BITS {out_en}});
//add delay to DQ
always @(dq_out_dly) dq_out_dly_delayed <= #(DQ_DELAY) dq_out_dly;
always @(dq_out_en_dly) dq_out_en_dly_delayed <= #(DQ_DELAY) dq_out_en_dly;
always @(out_en) out_en_delayed <= #(DQ_DELAY) out_en;
bufif1 buf_dq [DQ_BITS-1:0] (dq, dq_out_dly_delayed, dq_out_en_dly_delayed & {DQ_BITS {out_en_delayed}});
assign tdqs_n = {DQS_BITS{1'bz}}; assign tdqs_n = {DQS_BITS{1'bz}};
assign TZQCS = max( 64, ceil( 80000/tck_avg)); assign TZQCS = max( 64, ceil( 80000/tck_avg));