Skip to content

Commit 8d4a428

Browse files
author
Sebastien Bourdeauducq
committedFeb 24, 2012
ddrphy: working on hardware, simulation a bit messed up
1 parent baba267 commit 8d4a428

File tree

3 files changed

+31
-22
lines changed

3 files changed

+31
-22
lines changed
 

‎software/bios/ddrinit.c

-2
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ static void init_sequence(void)
6161

6262
/* Load Mode Register */
6363
setaddr(0x0132); /* Reset DLL, CL=3, BL=4 */
64-
//setaddr(0x0162); /* Reset DLL, CL=2.5, BL=4 */
6564
CSR_DFII_COMMAND_P0 = DFII_COMMAND_RAS|DFII_COMMAND_CAS|DFII_COMMAND_WE|DFII_COMMAND_CS;
6665
cdelay(200);
6766

@@ -78,7 +77,6 @@ static void init_sequence(void)
7877

7978
/* Load Mode Register */
8079
setaddr(0x0032); /* CL=3, BL=4 */
81-
//setaddr(0x0062); /* CL=2.5, BL=4 */
8280
CSR_DFII_COMMAND_P0 = DFII_COMMAND_RAS|DFII_COMMAND_CAS|DFII_COMMAND_WE|DFII_COMMAND_CS;
8381
cdelay(200);
8482
}

‎tb/s6ddrphy/tb_s6ddrphy.v

+2-4
Original file line numberDiff line numberDiff line change
@@ -123,14 +123,13 @@ initial begin
123123
`ifdef TEST_WRITE
124124
#13;
125125
dfi_address_p1 <= 13'h0dbe;
126-
#12;
127-
dfi_address_p1 <= 0;
128126
dfi_wrdata_en_p1 <= 1;
129127
dfi_wrdata_mask_p0 <= 8'h12;
130128
dfi_wrdata_mask_p1 <= 8'h34;
131129
dfi_wrdata_p0 <= 64'hcafebabeabadface;
132130
dfi_wrdata_p1 <= 64'h0123456789abcdef;
133131
#12;
132+
dfi_address_p1 <= 0;
134133
dfi_wrdata_en_p1 <= 0;
135134
dfi_wrdata_mask_p0 <= 0;
136135
dfi_wrdata_mask_p1 <= 0;
@@ -142,10 +141,9 @@ initial begin
142141
`ifdef TEST_READ
143142
#13;
144143
dfi_address_p0 <= 13'h1234;
145-
#12;
146-
dfi_address_p0 <= 0;
147144
dfi_rddata_en_p0 <= 1;
148145
#12;
146+
dfi_address_p0 <= 0;
149147
dfi_rddata_en_p0 <= 0;
150148
#15.5;
151149
dq_tb <= 32'h12345678;

‎verilog/s6ddrphy/s6ddrphy.v

+29-16
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,19 @@ endgenerate
218218
always @(posedge clk2x_270)
219219
postamble <= drive_dqs;
220220

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+
221232
wire drive_dq;
233+
wire d_drive_dq;
222234
wire [NUM_D/2-1:0] dq_i;
223235
wire [NUM_D/2-1:0] dq_o;
224236
wire [NUM_D/2-1:0] dq_t;
@@ -239,14 +251,14 @@ generate
239251
.IOCE(clk4x_wr_strb),
240252
.RST(1'b0),
241253
.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]),
246258
.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),
250262
.T4(~drive_dq),
251263
.TRAIN(1'b0),
252264
.TCE(1'b1),
@@ -313,10 +325,10 @@ generate
313325
.IOCE(clk4x_wr_strb),
314326
.RST(1'b0),
315327
.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]),
320332
.TQ(),
321333
.T1(),
322334
.T2(),
@@ -344,16 +356,17 @@ reg d_dfi_wrdata_en_p1;
344356
always @(posedge sys_clk)
345357
d_dfi_wrdata_en_p1 <= dfi_wrdata_en_p1;
346358

359+
assign drive_dq = dfi_wrdata_en_p1;
360+
assign d_drive_dq = d_dfi_wrdata_en_p1;
361+
347362
reg r_dfi_wrdata_en;
348-
always @(posedge clk2x_270)
349-
r_dfi_wrdata_en <= d_dfi_wrdata_en_p1;
350-
351363
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;
353366
r2_dfi_wrdata_en <= r_dfi_wrdata_en;
367+
end
354368

355369
assign drive_dqs = r2_dfi_wrdata_en;
356-
assign drive_dq = d_dfi_wrdata_en_p1;
357370

358371
wire rddata_valid;
359372
reg [4:0] rddata_sr;

0 commit comments

Comments
 (0)
Please sign in to comment.