OpenCores
URL https://opencores.org/ocsvn/hssdrc/hssdrc/trunk

Subversion Repositories hssdrc

[/] [hssdrc/] [trunk/] [rtl/] [hssdrc_top.v] - Blame information for rev 3

Details | Compare with Previous | View Log

Line No. Rev Author Line
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
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.