1 |
2 |
des00 |
//
|
2 |
|
|
// Project : High-Speed SDRAM Controller with adaptive bank management and command pipeline
|
3 |
|
|
//
|
4 |
|
|
// Project Nick : HSSDRC
|
5 |
|
|
//
|
6 |
|
|
// Version : 1.0-beta
|
7 |
|
|
//
|
8 |
|
|
// Revision : $Revision: 1.1 $
|
9 |
|
|
//
|
10 |
|
|
// Date : $Date: 2008-03-06 13:52:43 $
|
11 |
|
|
//
|
12 |
|
|
// Workfile : hssdrc_top.v
|
13 |
|
|
//
|
14 |
|
|
// Description : top level of memory controller
|
15 |
|
|
//
|
16 |
|
|
// HSSDRC is licensed under MIT License
|
17 |
|
|
//
|
18 |
|
|
// Copyright (c) 2007-2008, Denis V.Shekhalev (des00@opencores.org)
|
19 |
|
|
//
|
20 |
|
|
// Permission is hereby granted, free of charge, to any person obtaining a copy of
|
21 |
|
|
// this software and associated documentation files (the "Software"), to deal in
|
22 |
|
|
// the Software without restriction, including without limitation the rights to
|
23 |
|
|
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
24 |
|
|
// the Software, and to permit persons to whom the Software is furnished to do so,
|
25 |
|
|
// subject to the following conditions:
|
26 |
|
|
//
|
27 |
|
|
// The above copyright notice and this permission notice shall be included in all
|
28 |
|
|
// copies or substantial portions of the Software.
|
29 |
|
|
//
|
30 |
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
31 |
|
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
32 |
|
|
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
33 |
|
|
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
34 |
|
|
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
35 |
|
|
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
36 |
|
|
//
|
37 |
|
|
|
38 |
|
|
|
39 |
|
|
`include "hssdrc_timescale.vh"
|
40 |
|
|
|
41 |
|
|
`include "hssdrc_define.vh"
|
42 |
|
|
|
43 |
|
|
module hssdrc_top (
|
44 |
|
|
clk ,
|
45 |
|
|
reset ,
|
46 |
|
|
sclr ,
|
47 |
|
|
sys_write ,
|
48 |
|
|
sys_read ,
|
49 |
|
|
sys_refr ,
|
50 |
|
|
sys_rowa ,
|
51 |
|
|
sys_cola ,
|
52 |
|
|
sys_ba ,
|
53 |
|
|
sys_burst ,
|
54 |
|
|
sys_chid_i ,
|
55 |
|
|
sys_wdata ,
|
56 |
|
|
sys_wdatam ,
|
57 |
|
|
sys_ready ,
|
58 |
|
|
sys_use_wdata ,
|
59 |
|
|
sys_vld_rdata ,
|
60 |
|
|
sys_chid_o ,
|
61 |
|
|
sys_rdata ,
|
62 |
|
|
dq ,
|
63 |
|
|
dqm ,
|
64 |
|
|
addr ,
|
65 |
|
|
ba ,
|
66 |
|
|
cke ,
|
67 |
|
|
cs_n ,
|
68 |
|
|
ras_n ,
|
69 |
|
|
cas_n ,
|
70 |
|
|
we_n
|
71 |
|
|
);
|
72 |
|
|
|
73 |
|
|
input wire clk ;
|
74 |
|
|
input wire reset;
|
75 |
|
|
input wire sclr ;
|
76 |
|
|
|
77 |
|
|
//--------------------------------------------------------------------------------------------------
|
78 |
|
|
// system interface
|
79 |
|
|
//--------------------------------------------------------------------------------------------------
|
80 |
|
|
|
81 |
|
|
input wire sys_write ;
|
82 |
|
|
input wire sys_read ;
|
83 |
|
|
input wire sys_refr ;
|
84 |
|
|
input rowa_t sys_rowa ;
|
85 |
|
|
input cola_t sys_cola ;
|
86 |
|
|
input ba_t sys_ba ;
|
87 |
|
|
input burst_t sys_burst ;
|
88 |
|
|
input chid_t sys_chid_i ;
|
89 |
|
|
input data_t sys_wdata ;
|
90 |
|
|
input datam_t sys_wdatam ;
|
91 |
|
|
|
92 |
|
|
output logic sys_ready ;
|
93 |
|
|
output logic sys_use_wdata ;
|
94 |
|
|
output logic sys_vld_rdata ;
|
95 |
|
|
output chid_t sys_chid_o ;
|
96 |
|
|
output data_t sys_rdata ;
|
97 |
|
|
|
98 |
|
|
//--------------------------------------------------------------------------------------------------
|
99 |
|
|
// sdram interface
|
100 |
|
|
//--------------------------------------------------------------------------------------------------
|
101 |
|
|
|
102 |
|
|
inout wire [pDataBits-1:0] dq;
|
103 |
|
|
output datam_t dqm;
|
104 |
|
|
output sdram_addr_t addr;
|
105 |
|
|
output ba_t ba;
|
106 |
|
|
output logic cke;
|
107 |
|
|
output logic cs_n;
|
108 |
|
|
output logic ras_n;
|
109 |
|
|
output logic cas_n;
|
110 |
|
|
output logic we_n;
|
111 |
|
|
|
112 |
|
|
//--------------------------------------------------------------------------------------------------
|
113 |
|
|
// internal signals
|
114 |
|
|
//--------------------------------------------------------------------------------------------------
|
115 |
|
|
|
116 |
|
|
wire init_done;
|
117 |
|
|
wire hssdrc_sclr;
|
118 |
|
|
|
119 |
|
|
//--------------------------------------------------------------------------------------------------
|
120 |
|
|
// refr_cnt <-> arbiter_in
|
121 |
|
|
//--------------------------------------------------------------------------------------------------
|
122 |
|
|
|
123 |
|
|
wire refr_cnt___ack ;
|
124 |
|
|
wire refr_cnt___hi_req ;
|
125 |
|
|
wire refr_cnt___low_req ;
|
126 |
|
|
|
127 |
|
|
//--------------------------------------------------------------------------------------------------
|
128 |
|
|
// arbiter_in <-> decoder's
|
129 |
|
|
//--------------------------------------------------------------------------------------------------
|
130 |
|
|
|
131 |
|
|
wire arbiter_in0___write ;
|
132 |
|
|
wire arbiter_in0___read ;
|
133 |
|
|
wire arbiter_in0___refr ;
|
134 |
|
|
rowa_t arbiter_in0___rowa ;
|
135 |
|
|
cola_t arbiter_in0___cola ;
|
136 |
|
|
ba_t arbiter_in0___ba ;
|
137 |
|
|
burst_t arbiter_in0___burst ;
|
138 |
|
|
chid_t arbiter_in0___chid ;
|
139 |
|
|
wire arbiter_in0___ready ;
|
140 |
|
|
//
|
141 |
|
|
wire arbiter_in1___write ;
|
142 |
|
|
wire arbiter_in1___read ;
|
143 |
|
|
wire arbiter_in1___refr ;
|
144 |
|
|
rowa_t arbiter_in1___rowa ;
|
145 |
|
|
cola_t arbiter_in1___cola ;
|
146 |
|
|
ba_t arbiter_in1___ba ;
|
147 |
|
|
burst_t arbiter_in1___burst ;
|
148 |
|
|
chid_t arbiter_in1___chid ;
|
149 |
|
|
wire arbiter_in1___ready ;
|
150 |
|
|
//
|
151 |
|
|
wire arbiter_in2___write ;
|
152 |
|
|
wire arbiter_in2___read ;
|
153 |
|
|
wire arbiter_in2___refr ;
|
154 |
|
|
rowa_t arbiter_in2___rowa ;
|
155 |
|
|
cola_t arbiter_in2___cola ;
|
156 |
|
|
ba_t arbiter_in2___ba ;
|
157 |
|
|
burst_t arbiter_in2___burst ;
|
158 |
|
|
chid_t arbiter_in2___chid ;
|
159 |
|
|
wire arbiter_in2___ready ;
|
160 |
|
|
|
161 |
|
|
//--------------------------------------------------------------------------------------------------
|
162 |
|
|
// ba_map <-> decoder's
|
163 |
|
|
//--------------------------------------------------------------------------------------------------
|
164 |
|
|
|
165 |
|
|
wire ba_map___update ;
|
166 |
|
|
wire ba_map___clear ;
|
167 |
|
|
ba_t ba_map___ba ;
|
168 |
|
|
rowa_t ba_map___rowa ;
|
169 |
|
|
wire ba_map___pre_act_rw ;
|
170 |
|
|
wire ba_map___act_rw ;
|
171 |
|
|
wire ba_map___rw ;
|
172 |
|
|
wire ba_map___all_close ;
|
173 |
|
|
|
174 |
|
|
//--------------------------------------------------------------------------------------------------
|
175 |
|
|
// decoder's <-> arbiter_out
|
176 |
|
|
//--------------------------------------------------------------------------------------------------
|
177 |
|
|
|
178 |
|
|
wire dec0___pre_all ;
|
179 |
|
|
wire dec0___refr ;
|
180 |
|
|
wire dec0___pre ;
|
181 |
|
|
wire dec0___act ;
|
182 |
|
|
wire dec0___read ;
|
183 |
|
|
wire dec0___write ;
|
184 |
|
|
wire dec0___pre_all_enable ;
|
185 |
|
|
wire dec0___refr_enable ;
|
186 |
|
|
wire dec0___pre_enable ;
|
187 |
|
|
wire dec0___act_enable ;
|
188 |
|
|
wire dec0___read_enable ;
|
189 |
|
|
wire dec0___write_enable ;
|
190 |
|
|
wire dec0___locked ;
|
191 |
|
|
wire dec0___last ;
|
192 |
|
|
rowa_t dec0___rowa ;
|
193 |
|
|
cola_t dec0___cola ;
|
194 |
|
|
ba_t dec0___ba ;
|
195 |
|
|
chid_t dec0___chid ;
|
196 |
|
|
sdram_burst_t dec0___burst ;
|
197 |
|
|
//
|
198 |
|
|
wire dec1___pre_all ;
|
199 |
|
|
wire dec1___refr ;
|
200 |
|
|
wire dec1___pre ;
|
201 |
|
|
wire dec1___act ;
|
202 |
|
|
wire dec1___read ;
|
203 |
|
|
wire dec1___write ;
|
204 |
|
|
wire dec1___pre_all_enable ;
|
205 |
|
|
wire dec1___refr_enable ;
|
206 |
|
|
wire dec1___pre_enable ;
|
207 |
|
|
wire dec1___act_enable ;
|
208 |
|
|
wire dec1___read_enable ;
|
209 |
|
|
wire dec1___write_enable ;
|
210 |
|
|
wire dec1___locked ;
|
211 |
|
|
wire dec1___last ;
|
212 |
|
|
rowa_t dec1___rowa ;
|
213 |
|
|
cola_t dec1___cola ;
|
214 |
|
|
ba_t dec1___ba ;
|
215 |
|
|
chid_t dec1___chid ;
|
216 |
|
|
sdram_burst_t dec1___burst ;
|
217 |
|
|
//
|
218 |
|
|
wire dec2___pre_all ;
|
219 |
|
|
wire dec2___refr ;
|
220 |
|
|
wire dec2___pre ;
|
221 |
|
|
wire dec2___act ;
|
222 |
|
|
wire dec2___read ;
|
223 |
|
|
wire dec2___write ;
|
224 |
|
|
wire dec2___pre_all_enable ;
|
225 |
|
|
wire dec2___refr_enable ;
|
226 |
|
|
wire dec2___pre_enable ;
|
227 |
|
|
wire dec2___act_enable ;
|
228 |
|
|
wire dec2___read_enable ;
|
229 |
|
|
wire dec2___write_enable ;
|
230 |
|
|
wire dec2___locked ;
|
231 |
|
|
wire dec2___last ;
|
232 |
|
|
rowa_t dec2___rowa ;
|
233 |
|
|
cola_t dec2___cola ;
|
234 |
|
|
ba_t dec2___ba ;
|
235 |
|
|
chid_t dec2___chid ;
|
236 |
|
|
sdram_burst_t dec2___burst ;
|
237 |
|
|
|
238 |
|
|
//--------------------------------------------------------------------------------------------------
|
239 |
|
|
// access_manager -> arbiter_out
|
240 |
|
|
//--------------------------------------------------------------------------------------------------
|
241 |
|
|
|
242 |
|
|
wire access_manager___pre_all_enable ;
|
243 |
|
|
wire access_manager___refr_enable ;
|
244 |
|
|
wire [0:3] access_manager___pre_enable ;
|
245 |
|
|
wire [0:3] access_manager___act_enable ;
|
246 |
|
|
wire [0:3] access_manager___read_enable ;
|
247 |
|
|
wire [0:3] access_manager___write_enable ;
|
248 |
|
|
|
249 |
|
|
//--------------------------------------------------------------------------------------------------
|
250 |
|
|
// arbiter_out -> multiplexer/access_manager
|
251 |
|
|
//--------------------------------------------------------------------------------------------------
|
252 |
|
|
|
253 |
|
|
wire arbiter_out___pre_all ;
|
254 |
|
|
wire arbiter_out___refr ;
|
255 |
|
|
wire arbiter_out___pre ;
|
256 |
|
|
wire arbiter_out___act ;
|
257 |
|
|
wire arbiter_out___read ;
|
258 |
|
|
wire arbiter_out___write ;
|
259 |
|
|
rowa_t arbiter_out___rowa ;
|
260 |
|
|
cola_t arbiter_out___cola ;
|
261 |
|
|
ba_t arbiter_out___ba ;
|
262 |
|
|
chid_t arbiter_out___chid ;
|
263 |
|
|
sdram_burst_t arbiter_out___burst ;
|
264 |
|
|
|
265 |
|
|
//--------------------------------------------------------------------------------------------------
|
266 |
|
|
// init_state -> multiplexer
|
267 |
|
|
//--------------------------------------------------------------------------------------------------
|
268 |
|
|
|
269 |
|
|
wire init_state___pre_all ;
|
270 |
|
|
wire init_state___refr ;
|
271 |
|
|
wire init_state___lmr ;
|
272 |
|
|
rowa_t init_state___rowa ;
|
273 |
|
|
|
274 |
|
|
//--------------------------------------------------------------------------------------------------
|
275 |
|
|
// multiplexer -> sdram_addr_path/sdram_data_path
|
276 |
|
|
//--------------------------------------------------------------------------------------------------
|
277 |
|
|
|
278 |
|
|
wire mux___pre_all ;
|
279 |
|
|
wire mux___refr ;
|
280 |
|
|
wire mux___pre ;
|
281 |
|
|
wire mux___act ;
|
282 |
|
|
wire mux___read ;
|
283 |
|
|
wire mux___write ;
|
284 |
|
|
wire mux___lmr ;
|
285 |
|
|
rowa_t mux___rowa ;
|
286 |
|
|
cola_t mux___cola ;
|
287 |
|
|
ba_t mux___ba ;
|
288 |
|
|
chid_t mux___chid ;
|
289 |
|
|
sdram_burst_t mux___burst ;
|
290 |
|
|
|
291 |
|
|
//
|
292 |
|
|
// this clear use to disable fsm that must be off when sdram chip is not configured
|
293 |
|
|
//
|
294 |
|
|
|
295 |
|
|
assign hssdrc_sclr = sclr | ~init_done;
|
296 |
|
|
|
297 |
|
|
//--------------------------------------------------------------------------------------------------
|
298 |
|
|
//
|
299 |
|
|
//--------------------------------------------------------------------------------------------------
|
300 |
|
|
|
301 |
|
|
hssdrc_refr_counter refr_cnt(
|
302 |
|
|
.clk (clk ),
|
303 |
|
|
.reset (reset),
|
304 |
|
|
.sclr (hssdrc_sclr ), // use internal sclr becouse there is refresh "fsm"
|
305 |
|
|
.ack (refr_cnt___ack ),
|
306 |
|
|
.hi_req (refr_cnt___hi_req ),
|
307 |
|
|
.low_req (refr_cnt___low_req)
|
308 |
|
|
);
|
309 |
|
|
//--------------------------------------------------------------------------------------------------
|
310 |
|
|
//
|
311 |
|
|
//--------------------------------------------------------------------------------------------------
|
312 |
|
|
hssdrc_arbiter_in arbiter_in (
|
313 |
|
|
.clk (clk ),
|
314 |
|
|
.reset (reset),
|
315 |
|
|
.sclr (hssdrc_sclr ), // use internal sclr becouse there is arbiter fsm
|
316 |
|
|
//
|
317 |
|
|
.sys_write (sys_write ) ,
|
318 |
|
|
.sys_read (sys_read ) ,
|
319 |
|
|
.sys_refr (sys_refr ) ,
|
320 |
|
|
.sys_rowa (sys_rowa ) ,
|
321 |
|
|
.sys_cola (sys_cola ) ,
|
322 |
|
|
.sys_ba (sys_ba ) ,
|
323 |
|
|
.sys_burst (sys_burst ) ,
|
324 |
|
|
.sys_chid_i (sys_chid_i) ,
|
325 |
|
|
.sys_ready (sys_ready ) ,
|
326 |
|
|
//
|
327 |
|
|
.refr_cnt_ack (refr_cnt___ack ),
|
328 |
|
|
.refr_cnt_hi_req (refr_cnt___hi_req ),
|
329 |
|
|
.refr_cnt_low_req (refr_cnt___low_req),
|
330 |
|
|
//
|
331 |
|
|
.dec0_write (arbiter_in0___write),
|
332 |
|
|
.dec0_read (arbiter_in0___read ),
|
333 |
|
|
.dec0_refr (arbiter_in0___refr ),
|
334 |
|
|
.dec0_rowa (arbiter_in0___rowa ),
|
335 |
|
|
.dec0_cola (arbiter_in0___cola ),
|
336 |
|
|
.dec0_ba (arbiter_in0___ba ),
|
337 |
|
|
.dec0_burst (arbiter_in0___burst),
|
338 |
|
|
.dec0_chid (arbiter_in0___chid ),
|
339 |
|
|
.dec0_ready (arbiter_in0___ready),
|
340 |
|
|
//
|
341 |
|
|
.dec1_write (arbiter_in1___write),
|
342 |
|
|
.dec1_read (arbiter_in1___read ),
|
343 |
|
|
.dec1_refr (arbiter_in1___refr ),
|
344 |
|
|
.dec1_rowa (arbiter_in1___rowa ),
|
345 |
|
|
.dec1_cola (arbiter_in1___cola ),
|
346 |
|
|
.dec1_ba (arbiter_in1___ba ),
|
347 |
|
|
.dec1_burst (arbiter_in1___burst),
|
348 |
|
|
.dec1_chid (arbiter_in1___chid ),
|
349 |
|
|
.dec1_ready (arbiter_in1___ready),
|
350 |
|
|
//
|
351 |
|
|
.dec2_write (arbiter_in2___write),
|
352 |
|
|
.dec2_read (arbiter_in2___read ),
|
353 |
|
|
.dec2_refr (arbiter_in2___refr ),
|
354 |
|
|
.dec2_rowa (arbiter_in2___rowa ),
|
355 |
|
|
.dec2_cola (arbiter_in2___cola ),
|
356 |
|
|
.dec2_ba (arbiter_in2___ba ),
|
357 |
|
|
.dec2_burst (arbiter_in2___burst),
|
358 |
|
|
.dec2_chid (arbiter_in2___chid ),
|
359 |
|
|
.dec2_ready (arbiter_in2___ready)
|
360 |
|
|
);
|
361 |
|
|
//--------------------------------------------------------------------------------------------------
|
362 |
|
|
//
|
363 |
|
|
//--------------------------------------------------------------------------------------------------
|
364 |
|
|
hssdrc_ba_map ba_map (
|
365 |
|
|
.clk (clk ),
|
366 |
|
|
.reset (reset),
|
367 |
|
|
.sclr (hssdrc_sclr), // use internal sclr becouse there is bank access map
|
368 |
|
|
//
|
369 |
|
|
.update (ba_map___update),
|
370 |
|
|
.clear (ba_map___clear ),
|
371 |
|
|
.ba (ba_map___ba ),
|
372 |
|
|
.rowa (ba_map___rowa ),
|
373 |
|
|
//
|
374 |
|
|
.pre_act_rw (ba_map___pre_act_rw),
|
375 |
|
|
.act_rw (ba_map___act_rw ),
|
376 |
|
|
.rw (ba_map___rw ),
|
377 |
|
|
.all_close (ba_map___all_close )
|
378 |
|
|
);
|
379 |
|
|
//--------------------------------------------------------------------------------------------------
|
380 |
|
|
//
|
381 |
|
|
//--------------------------------------------------------------------------------------------------
|
382 |
|
|
hssdrc_decoder decoder (
|
383 |
|
|
.clk (clk ),
|
384 |
|
|
.reset (reset),
|
385 |
|
|
.sclr (hssdrc_sclr), // use internal sclr becouse there is decoders fsm
|
386 |
|
|
//
|
387 |
|
|
.ba_map_update (ba_map___update ),
|
388 |
|
|
.ba_map_clear (ba_map___clear ),
|
389 |
|
|
.ba_map_ba (ba_map___ba ),
|
390 |
|
|
.ba_map_rowa (ba_map___rowa ),
|
391 |
|
|
//
|
392 |
|
|
.ba_map_pre_act_rw (ba_map___pre_act_rw),
|
393 |
|
|
.ba_map_act_rw (ba_map___act_rw ),
|
394 |
|
|
.ba_map_rw (ba_map___rw ),
|
395 |
|
|
.ba_map_all_close (ba_map___all_close ),
|
396 |
|
|
//
|
397 |
|
|
.arb0_write (arbiter_in0___write),
|
398 |
|
|
.arb0_read (arbiter_in0___read ),
|
399 |
|
|
.arb0_refr (arbiter_in0___refr ),
|
400 |
|
|
.arb0_rowa (arbiter_in0___rowa ),
|
401 |
|
|
.arb0_cola (arbiter_in0___cola ),
|
402 |
|
|
.arb0_ba (arbiter_in0___ba ),
|
403 |
|
|
.arb0_burst (arbiter_in0___burst),
|
404 |
|
|
.arb0_chid (arbiter_in0___chid ),
|
405 |
|
|
.arb0_ready (arbiter_in0___ready),
|
406 |
|
|
//
|
407 |
|
|
.arb1_write (arbiter_in1___write),
|
408 |
|
|
.arb1_read (arbiter_in1___read ),
|
409 |
|
|
.arb1_refr (arbiter_in1___refr ),
|
410 |
|
|
.arb1_rowa (arbiter_in1___rowa ),
|
411 |
|
|
.arb1_cola (arbiter_in1___cola ),
|
412 |
|
|
.arb1_ba (arbiter_in1___ba ),
|
413 |
|
|
.arb1_burst (arbiter_in1___burst),
|
414 |
|
|
.arb1_chid (arbiter_in1___chid ),
|
415 |
|
|
.arb1_ready (arbiter_in1___ready),
|
416 |
|
|
//
|
417 |
|
|
.arb2_write (arbiter_in2___write),
|
418 |
|
|
.arb2_read (arbiter_in2___read ),
|
419 |
|
|
.arb2_refr (arbiter_in2___refr ),
|
420 |
|
|
.arb2_rowa (arbiter_in2___rowa ),
|
421 |
|
|
.arb2_cola (arbiter_in2___cola ),
|
422 |
|
|
.arb2_ba (arbiter_in2___ba ),
|
423 |
|
|
.arb2_burst (arbiter_in2___burst),
|
424 |
|
|
.arb2_chid (arbiter_in2___chid ),
|
425 |
|
|
.arb2_ready (arbiter_in2___ready),
|
426 |
|
|
//
|
427 |
|
|
.dec0_pre_all (dec0___pre_all ),
|
428 |
|
|
.dec0_refr (dec0___refr ),
|
429 |
|
|
.dec0_pre (dec0___pre ),
|
430 |
|
|
.dec0_act (dec0___act ),
|
431 |
|
|
.dec0_read (dec0___read ),
|
432 |
|
|
.dec0_write (dec0___write ),
|
433 |
|
|
.dec0_pre_all_enable(dec0___pre_all_enable),
|
434 |
|
|
.dec0_refr_enable (dec0___refr_enable ),
|
435 |
|
|
.dec0_pre_enable (dec0___pre_enable ),
|
436 |
|
|
.dec0_act_enable (dec0___act_enable ),
|
437 |
|
|
.dec0_read_enable (dec0___read_enable ),
|
438 |
|
|
.dec0_write_enable (dec0___write_enable ),
|
439 |
|
|
.dec0_locked (dec0___locked ),
|
440 |
|
|
.dec0_last (dec0___last ),
|
441 |
|
|
.dec0_rowa (dec0___rowa ),
|
442 |
|
|
.dec0_cola (dec0___cola ),
|
443 |
|
|
.dec0_ba (dec0___ba ),
|
444 |
|
|
.dec0_chid (dec0___chid ),
|
445 |
|
|
.dec0_burst (dec0___burst ),
|
446 |
|
|
//
|
447 |
|
|
.dec1_pre_all (dec1___pre_all ),
|
448 |
|
|
.dec1_refr (dec1___refr ),
|
449 |
|
|
.dec1_pre (dec1___pre ),
|
450 |
|
|
.dec1_act (dec1___act ),
|
451 |
|
|
.dec1_read (dec1___read ),
|
452 |
|
|
.dec1_write (dec1___write ),
|
453 |
|
|
.dec1_pre_all_enable(dec1___pre_all_enable),
|
454 |
|
|
.dec1_refr_enable (dec1___refr_enable ),
|
455 |
|
|
.dec1_pre_enable (dec1___pre_enable ),
|
456 |
|
|
.dec1_act_enable (dec1___act_enable ),
|
457 |
|
|
.dec1_read_enable (dec1___read_enable ),
|
458 |
|
|
.dec1_write_enable (dec1___write_enable ),
|
459 |
|
|
.dec1_locked (dec1___locked ),
|
460 |
|
|
.dec1_last (dec1___last ),
|
461 |
|
|
.dec1_rowa (dec1___rowa ),
|
462 |
|
|
.dec1_cola (dec1___cola ),
|
463 |
|
|
.dec1_ba (dec1___ba ),
|
464 |
|
|
.dec1_chid (dec1___chid ),
|
465 |
|
|
.dec1_burst (dec1___burst ),
|
466 |
|
|
//
|
467 |
|
|
.dec2_pre_all (dec2___pre_all ),
|
468 |
|
|
.dec2_refr (dec2___refr ),
|
469 |
|
|
.dec2_pre (dec2___pre ),
|
470 |
|
|
.dec2_act (dec2___act ),
|
471 |
|
|
.dec2_read (dec2___read ),
|
472 |
|
|
.dec2_write (dec2___write ),
|
473 |
|
|
.dec2_pre_all_enable(dec2___pre_all_enable),
|
474 |
|
|
.dec2_refr_enable (dec2___refr_enable ),
|
475 |
|
|
.dec2_pre_enable (dec2___pre_enable ),
|
476 |
|
|
.dec2_act_enable (dec2___act_enable ),
|
477 |
|
|
.dec2_read_enable (dec2___read_enable ),
|
478 |
|
|
.dec2_write_enable (dec2___write_enable ),
|
479 |
|
|
.dec2_locked (dec2___locked ),
|
480 |
|
|
.dec2_last (dec2___last ),
|
481 |
|
|
.dec2_rowa (dec2___rowa ),
|
482 |
|
|
.dec2_cola (dec2___cola ),
|
483 |
|
|
.dec2_ba (dec2___ba ),
|
484 |
|
|
.dec2_chid (dec2___chid ),
|
485 |
|
|
.dec2_burst (dec2___burst )
|
486 |
|
|
);
|
487 |
|
|
//--------------------------------------------------------------------------------------------------
|
488 |
|
|
//
|
489 |
|
|
//--------------------------------------------------------------------------------------------------
|
490 |
|
|
hssdrc_arbiter_out arbiter_out(
|
491 |
|
|
.clk (clk),
|
492 |
|
|
.reset (reset),
|
493 |
|
|
.sclr (hssdrc_sclr), // use internal sclr becouse there is arbiter fsm
|
494 |
|
|
//
|
495 |
|
|
.dec0_pre_all (dec0___pre_all ),
|
496 |
|
|
.dec0_refr (dec0___refr ),
|
497 |
|
|
.dec0_pre (dec0___pre ),
|
498 |
|
|
.dec0_act (dec0___act ),
|
499 |
|
|
.dec0_read (dec0___read ),
|
500 |
|
|
.dec0_write (dec0___write ),
|
501 |
|
|
.dec0_pre_all_enable(dec0___pre_all_enable),
|
502 |
|
|
.dec0_refr_enable (dec0___refr_enable ),
|
503 |
|
|
.dec0_pre_enable (dec0___pre_enable ),
|
504 |
|
|
.dec0_act_enable (dec0___act_enable ),
|
505 |
|
|
.dec0_read_enable (dec0___read_enable ),
|
506 |
|
|
.dec0_write_enable (dec0___write_enable ),
|
507 |
|
|
.dec0_locked (dec0___locked ),
|
508 |
|
|
.dec0_last (dec0___last ),
|
509 |
|
|
.dec0_rowa (dec0___rowa ),
|
510 |
|
|
.dec0_cola (dec0___cola ),
|
511 |
|
|
.dec0_ba (dec0___ba ),
|
512 |
|
|
.dec0_chid (dec0___chid ),
|
513 |
|
|
.dec0_burst (dec0___burst ),
|
514 |
|
|
//
|
515 |
|
|
.dec1_pre_all (dec1___pre_all ),
|
516 |
|
|
.dec1_refr (dec1___refr ),
|
517 |
|
|
.dec1_pre (dec1___pre ),
|
518 |
|
|
.dec1_act (dec1___act ),
|
519 |
|
|
.dec1_read (dec1___read ),
|
520 |
|
|
.dec1_write (dec1___write ),
|
521 |
|
|
.dec1_pre_all_enable(dec1___pre_all_enable),
|
522 |
|
|
.dec1_refr_enable (dec1___refr_enable ),
|
523 |
|
|
.dec1_pre_enable (dec1___pre_enable ),
|
524 |
|
|
.dec1_act_enable (dec1___act_enable ),
|
525 |
|
|
.dec1_read_enable (dec1___read_enable ),
|
526 |
|
|
.dec1_write_enable (dec1___write_enable ),
|
527 |
|
|
.dec1_locked (dec1___locked ),
|
528 |
|
|
.dec1_last (dec1___last ),
|
529 |
|
|
.dec1_rowa (dec1___rowa ),
|
530 |
|
|
.dec1_cola (dec1___cola ),
|
531 |
|
|
.dec1_ba (dec1___ba ),
|
532 |
|
|
.dec1_chid (dec1___chid ),
|
533 |
|
|
.dec1_burst (dec1___burst ),
|
534 |
|
|
//
|
535 |
|
|
.dec2_pre_all (dec2___pre_all ),
|
536 |
|
|
.dec2_refr (dec2___refr ),
|
537 |
|
|
.dec2_pre (dec2___pre ),
|
538 |
|
|
.dec2_act (dec2___act ),
|
539 |
|
|
.dec2_read (dec2___read ),
|
540 |
|
|
.dec2_write (dec2___write ),
|
541 |
|
|
.dec2_pre_all_enable(dec2___pre_all_enable),
|
542 |
|
|
.dec2_refr_enable (dec2___refr_enable ),
|
543 |
|
|
.dec2_pre_enable (dec2___pre_enable ),
|
544 |
|
|
.dec2_act_enable (dec2___act_enable ),
|
545 |
|
|
.dec2_read_enable (dec2___read_enable ),
|
546 |
|
|
.dec2_write_enable (dec2___write_enable ),
|
547 |
|
|
.dec2_locked (dec2___locked ),
|
548 |
|
|
.dec2_last (dec2___last ),
|
549 |
|
|
.dec2_rowa (dec2___rowa ),
|
550 |
|
|
.dec2_cola (dec2___cola ),
|
551 |
|
|
.dec2_ba (dec2___ba ),
|
552 |
|
|
.dec2_chid (dec2___chid ),
|
553 |
|
|
.dec2_burst (dec2___burst ),
|
554 |
|
|
//
|
555 |
|
|
.am_pre_all_enable (access_manager___pre_all_enable),
|
556 |
|
|
.am_refr_enable (access_manager___refr_enable ),
|
557 |
|
|
.am_pre_enable (access_manager___pre_enable ),
|
558 |
|
|
.am_act_enable (access_manager___act_enable ),
|
559 |
|
|
.am_read_enable (access_manager___read_enable ),
|
560 |
|
|
.am_write_enable (access_manager___write_enable ),
|
561 |
|
|
//
|
562 |
|
|
.arb_pre_all (arbiter_out___pre_all),
|
563 |
|
|
.arb_refr (arbiter_out___refr ),
|
564 |
|
|
.arb_pre (arbiter_out___pre ),
|
565 |
|
|
.arb_act (arbiter_out___act ),
|
566 |
|
|
.arb_read (arbiter_out___read ),
|
567 |
|
|
.arb_write (arbiter_out___write ),
|
568 |
|
|
.arb_rowa (arbiter_out___rowa ),
|
569 |
|
|
.arb_cola (arbiter_out___cola ),
|
570 |
|
|
.arb_ba (arbiter_out___ba ),
|
571 |
|
|
.arb_chid (arbiter_out___chid ),
|
572 |
|
|
.arb_burst (arbiter_out___burst )
|
573 |
|
|
);
|
574 |
|
|
//--------------------------------------------------------------------------------------------------
|
575 |
|
|
//
|
576 |
|
|
//--------------------------------------------------------------------------------------------------
|
577 |
|
|
hssdrc_access_manager access_manager (
|
578 |
|
|
.clk (clk ),
|
579 |
|
|
.reset (reset),
|
580 |
|
|
.sclr (hssdrc_sclr), // use internal sclr becouse there is access "fsm's"
|
581 |
|
|
//
|
582 |
|
|
.arb_pre_all (arbiter_out___pre_all),
|
583 |
|
|
.arb_refr (arbiter_out___refr ),
|
584 |
|
|
.arb_pre (arbiter_out___pre ),
|
585 |
|
|
.arb_act (arbiter_out___act ),
|
586 |
|
|
.arb_read (arbiter_out___read ),
|
587 |
|
|
.arb_write (arbiter_out___write ),
|
588 |
|
|
.arb_ba (arbiter_out___ba ),
|
589 |
|
|
.arb_burst (arbiter_out___burst ),
|
590 |
|
|
//
|
591 |
|
|
.am_pre_all_enable (access_manager___pre_all_enable),
|
592 |
|
|
.am_refr_enable (access_manager___refr_enable ),
|
593 |
|
|
.am_pre_enable (access_manager___pre_enable ),
|
594 |
|
|
.am_act_enable (access_manager___act_enable ),
|
595 |
|
|
.am_read_enable (access_manager___read_enable ),
|
596 |
|
|
.am_write_enable (access_manager___write_enable )
|
597 |
|
|
);
|
598 |
|
|
//--------------------------------------------------------------------------------------------------
|
599 |
|
|
//
|
600 |
|
|
//--------------------------------------------------------------------------------------------------
|
601 |
|
|
hssdrc_init_state init_state(
|
602 |
|
|
.clk (clk ),
|
603 |
|
|
.reset (reset),
|
604 |
|
|
.sclr (sclr ), // use external sclr becouse this is initial start fsm
|
605 |
|
|
.init_done (init_done),
|
606 |
|
|
.pre_all (init_state___pre_all),
|
607 |
|
|
.refr (init_state___refr ),
|
608 |
|
|
.lmr (init_state___lmr ),
|
609 |
|
|
.rowa (init_state___rowa )
|
610 |
|
|
);
|
611 |
|
|
//--------------------------------------------------------------------------------------------------
|
612 |
|
|
//
|
613 |
|
|
//--------------------------------------------------------------------------------------------------
|
614 |
|
|
hssdrc_mux mux (
|
615 |
|
|
.init_done (init_done),
|
616 |
|
|
//
|
617 |
|
|
.init_state_pre_all (init_state___pre_all),
|
618 |
|
|
.init_state_refr (init_state___refr ),
|
619 |
|
|
.init_state_lmr (init_state___lmr ),
|
620 |
|
|
.init_state_rowa (init_state___rowa ),
|
621 |
|
|
//
|
622 |
|
|
.arb_pre_all (arbiter_out___pre_all),
|
623 |
|
|
.arb_refr (arbiter_out___refr ),
|
624 |
|
|
.arb_pre (arbiter_out___pre ),
|
625 |
|
|
.arb_act (arbiter_out___act ),
|
626 |
|
|
.arb_read (arbiter_out___read ),
|
627 |
|
|
.arb_write (arbiter_out___write ),
|
628 |
|
|
.arb_rowa (arbiter_out___rowa ),
|
629 |
|
|
.arb_cola (arbiter_out___cola ),
|
630 |
|
|
.arb_ba (arbiter_out___ba ),
|
631 |
|
|
.arb_chid (arbiter_out___chid ),
|
632 |
|
|
.arb_burst (arbiter_out___burst ),
|
633 |
|
|
//
|
634 |
|
|
.mux_pre_all (mux___pre_all),
|
635 |
|
|
.mux_refr (mux___refr ),
|
636 |
|
|
.mux_pre (mux___pre ),
|
637 |
|
|
.mux_act (mux___act ),
|
638 |
|
|
.mux_read (mux___read ),
|
639 |
|
|
.mux_write (mux___write ),
|
640 |
|
|
.mux_lmr (mux___lmr ),
|
641 |
|
|
.mux_rowa (mux___rowa ),
|
642 |
|
|
.mux_cola (mux___cola ),
|
643 |
|
|
.mux_ba (mux___ba ),
|
644 |
|
|
.mux_chid (mux___chid ),
|
645 |
|
|
.mux_burst (mux___burst )
|
646 |
|
|
);
|
647 |
|
|
//--------------------------------------------------------------------------------------------------
|
648 |
|
|
//
|
649 |
|
|
//--------------------------------------------------------------------------------------------------
|
650 |
|
|
`ifndef HSSDRC_DQ_PIPELINE
|
651 |
|
|
|
652 |
|
|
hssdrc_data_path data_path (
|
653 |
|
|
.clk (clk ),
|
654 |
|
|
.reset (reset),
|
655 |
|
|
.sclr (sclr ), // use external sclr becouse there is no any fsm
|
656 |
|
|
//
|
657 |
|
|
.sys_wdata (sys_wdata ),
|
658 |
|
|
.sys_wdatam (sys_wdatam ),
|
659 |
|
|
.sys_use_wdata (sys_use_wdata),
|
660 |
|
|
.sys_vld_rdata (sys_vld_rdata),
|
661 |
|
|
.sys_chid_o (sys_chid_o ),
|
662 |
|
|
.sys_rdata (sys_rdata ),
|
663 |
|
|
//
|
664 |
|
|
.arb_read (mux___read ),
|
665 |
|
|
.arb_write (mux___write ),
|
666 |
|
|
.arb_chid (mux___chid ),
|
667 |
|
|
.arb_burst (mux___burst ),
|
668 |
|
|
//
|
669 |
|
|
.dq (dq ),
|
670 |
|
|
.dqm (dqm )
|
671 |
|
|
);
|
672 |
|
|
|
673 |
|
|
`else
|
674 |
|
|
|
675 |
|
|
hssdrc_data_path_p1 data_path_p1 (
|
676 |
|
|
.clk (clk ),
|
677 |
|
|
.reset (reset),
|
678 |
|
|
.sclr (sclr ), // use external sclr becouse there is no any fsm
|
679 |
|
|
//
|
680 |
|
|
.sys_wdata (sys_wdata ),
|
681 |
|
|
.sys_wdatam (sys_wdatam ),
|
682 |
|
|
.sys_use_wdata (sys_use_wdata),
|
683 |
|
|
.sys_vld_rdata (sys_vld_rdata),
|
684 |
|
|
.sys_chid_o (sys_chid_o ),
|
685 |
|
|
.sys_rdata (sys_rdata ),
|
686 |
|
|
//
|
687 |
|
|
.arb_read (mux___read ),
|
688 |
|
|
.arb_write (mux___write ),
|
689 |
|
|
.arb_chid (mux___chid ),
|
690 |
|
|
.arb_burst (mux___burst ),
|
691 |
|
|
//
|
692 |
|
|
.dq (dq ),
|
693 |
|
|
.dqm (dqm )
|
694 |
|
|
);
|
695 |
|
|
|
696 |
|
|
`endif
|
697 |
|
|
//--------------------------------------------------------------------------------------------------
|
698 |
|
|
//
|
699 |
|
|
//--------------------------------------------------------------------------------------------------
|
700 |
|
|
`ifndef HSSDRC_DQ_PIPELINE
|
701 |
|
|
|
702 |
|
|
hssdrc_addr_path addr_path(
|
703 |
|
|
.clk (clk ),
|
704 |
|
|
.reset (reset),
|
705 |
|
|
.sclr (sclr ), // use external sclr becouse there is no any fsm
|
706 |
|
|
//
|
707 |
|
|
.arb_pre_all (mux___pre_all),
|
708 |
|
|
.arb_refr (mux___refr ),
|
709 |
|
|
.arb_pre (mux___pre ),
|
710 |
|
|
.arb_act (mux___act ),
|
711 |
|
|
.arb_read (mux___read ),
|
712 |
|
|
.arb_write (mux___write ),
|
713 |
|
|
.arb_lmr (mux___lmr ),
|
714 |
|
|
.arb_rowa (mux___rowa ),
|
715 |
|
|
.arb_cola (mux___cola ),
|
716 |
|
|
.arb_ba (mux___ba ),
|
717 |
|
|
//
|
718 |
|
|
.addr (addr ),
|
719 |
|
|
.ba (ba ),
|
720 |
|
|
.cke (cke ),
|
721 |
|
|
.cs_n (cs_n ),
|
722 |
|
|
.ras_n (ras_n),
|
723 |
|
|
.cas_n (cas_n),
|
724 |
|
|
.we_n (we_n )
|
725 |
|
|
);
|
726 |
|
|
|
727 |
|
|
`else
|
728 |
|
|
|
729 |
|
|
hssdrc_addr_path_p1 addr_path_p1(
|
730 |
|
|
.clk (clk ),
|
731 |
|
|
.reset (reset),
|
732 |
|
|
.sclr (sclr ), // use external sclr becouse there is no any fsm
|
733 |
|
|
//
|
734 |
|
|
.arb_pre_all (mux___pre_all),
|
735 |
|
|
.arb_refr (mux___refr ),
|
736 |
|
|
.arb_pre (mux___pre ),
|
737 |
|
|
.arb_act (mux___act ),
|
738 |
|
|
.arb_read (mux___read ),
|
739 |
|
|
.arb_write (mux___write ),
|
740 |
|
|
.arb_lmr (mux___lmr ),
|
741 |
|
|
.arb_rowa (mux___rowa ),
|
742 |
|
|
.arb_cola (mux___cola ),
|
743 |
|
|
.arb_ba (mux___ba ),
|
744 |
|
|
//
|
745 |
|
|
.addr (addr ),
|
746 |
|
|
.ba (ba ),
|
747 |
|
|
.cke (cke ),
|
748 |
|
|
.cs_n (cs_n ),
|
749 |
|
|
.ras_n (ras_n),
|
750 |
|
|
.cas_n (cas_n),
|
751 |
|
|
.we_n (we_n )
|
752 |
|
|
);
|
753 |
|
|
|
754 |
|
|
`endif
|
755 |
|
|
|
756 |
|
|
endmodule
|
757 |
|
|
|
758 |
|
|
|