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

Subversion Repositories hssdrc

[/] [hssdrc/] [trunk/] [rtl/] [hssdrc_arbiter_out.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_arbiter_out.v
13
// 
14
// Description  : output 3 way decode arbiter
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_arbiter_out (
44
  clk                ,
45
  reset              ,
46
  sclr               ,
47
  //
48
  dec0_pre_all       ,
49
  dec0_refr          ,
50
  dec0_pre           ,
51
  dec0_act           ,
52
  dec0_read          ,
53
  dec0_write         ,
54
  dec0_pre_all_enable,
55
  dec0_refr_enable   ,
56
  dec0_pre_enable    ,
57
  dec0_act_enable    ,
58
  dec0_read_enable   ,
59
  dec0_write_enable  ,
60
  dec0_locked        ,
61
  dec0_last          ,
62
  dec0_rowa          ,
63
  dec0_cola          ,
64
  dec0_ba            ,
65
  dec0_chid          ,
66
  dec0_burst         ,
67
  //
68
  dec1_pre_all       ,
69
  dec1_refr          ,
70
  dec1_pre           ,
71
  dec1_act           ,
72
  dec1_read          ,
73
  dec1_write         ,
74
  dec1_pre_all_enable,
75
  dec1_refr_enable   ,
76
  dec1_pre_enable    ,
77
  dec1_act_enable    ,
78
  dec1_read_enable   ,
79
  dec1_write_enable  ,
80
  dec1_locked        ,
81
  dec1_last          ,
82
  dec1_rowa          ,
83
  dec1_cola          ,
84
  dec1_ba            ,
85
  dec1_chid          ,
86
  dec1_burst         ,
87
  //
88
  dec2_pre_all       ,
89
  dec2_refr          ,
90
  dec2_pre           ,
91
  dec2_act           ,
92
  dec2_read          ,
93
  dec2_write         ,
94
  dec2_pre_all_enable,
95
  dec2_refr_enable   ,
96
  dec2_pre_enable    ,
97
  dec2_act_enable    ,
98
  dec2_read_enable   ,
99
  dec2_write_enable  ,
100
  dec2_locked        ,
101
  dec2_last          ,
102
  dec2_rowa          ,
103
  dec2_cola          ,
104
  dec2_ba            ,
105
  dec2_chid          ,
106
  dec2_burst         ,
107
  //
108
  am_pre_all_enable  ,
109
  am_refr_enable     ,
110
  am_pre_enable      ,
111
  am_act_enable      ,
112
  am_read_enable     ,
113
  am_write_enable    ,
114
  //                 
115
  arb_pre_all        ,
116
  arb_refr           ,
117
  arb_pre            ,
118
  arb_act            ,
119
  arb_read           ,
120
  arb_write          ,
121
  arb_rowa           ,
122
  arb_cola           ,
123
  arb_ba             ,
124
  arb_chid           ,
125
  arb_burst
126
  );
127
 
128
  input wire clk  ;
129
  input wire reset;
130
  input wire sclr ;
131
 
132
  //-------------------------------------------------------------------------------------------------- 
133
  // interface from sequence decoders 
134
  //-------------------------------------------------------------------------------------------------- 
135
 
136
  input  wire           dec0_pre_all       ;
137
  input  wire           dec0_refr          ;
138
  input  wire           dec0_pre           ;
139
  input  wire           dec0_act           ;
140
  input  wire           dec0_read          ;
141
  input  wire           dec0_write         ;
142
  output logic          dec0_pre_all_enable;
143
  output logic          dec0_refr_enable   ;
144
  output logic          dec0_pre_enable    ;
145
  output logic          dec0_act_enable    ;
146
  output logic          dec0_read_enable   ;
147
  output logic          dec0_write_enable  ;
148
  input  wire           dec0_locked        ;
149
  input  wire           dec0_last          ;
150
  input  rowa_t         dec0_rowa          ;
151
  input  cola_t         dec0_cola          ;
152
  input  ba_t           dec0_ba            ;
153
  input  chid_t         dec0_chid          ;
154
  input  sdram_burst_t  dec0_burst         ;
155
  //
156
  input  wire           dec1_pre_all       ;
157
  input  wire           dec1_refr          ;
158
  input  wire           dec1_pre           ;
159
  input  wire           dec1_act           ;
160
  input  wire           dec1_read          ;
161
  input  wire           dec1_write         ;
162
  output logic          dec1_pre_all_enable;
163
  output logic          dec1_refr_enable   ;
164
  output logic          dec1_pre_enable    ;
165
  output logic          dec1_act_enable    ;
166
  output logic          dec1_read_enable   ;
167
  output logic          dec1_write_enable  ;
168
  input  wire           dec1_locked        ;
169
  input  wire           dec1_last          ;
170
  input  rowa_t         dec1_rowa          ;
171
  input  cola_t         dec1_cola          ;
172
  input  ba_t           dec1_ba            ;
173
  input  chid_t         dec1_chid          ;
174
  input  sdram_burst_t  dec1_burst         ;
175
  //
176
  input  wire           dec2_pre_all       ;
177
  input  wire           dec2_refr          ;
178
  input  wire           dec2_pre           ;
179
  input  wire           dec2_act           ;
180
  input  wire           dec2_read          ;
181
  input  wire           dec2_write         ;
182
  output logic          dec2_pre_all_enable;
183
  output logic          dec2_refr_enable   ;
184
  output logic          dec2_pre_enable    ;
185
  output logic          dec2_act_enable    ;
186
  output logic          dec2_read_enable   ;
187
  output logic          dec2_write_enable  ;
188
  input  wire           dec2_locked        ;
189
  input  wire           dec2_last          ;
190
  input  rowa_t         dec2_rowa          ;
191
  input  cola_t         dec2_cola          ;
192
  input  ba_t           dec2_ba            ;
193
  input  chid_t         dec2_chid          ;
194
  input  sdram_burst_t  dec2_burst         ;
195
 
196
  //-------------------------------------------------------------------------------------------------- 
197
  // interface from access manager 
198
  //-------------------------------------------------------------------------------------------------- 
199
 
200
  input wire       am_pre_all_enable  ;
201
  input wire       am_refr_enable     ;
202
  input wire [0:3] am_pre_enable      ;
203
  input wire [0:3] am_act_enable      ;
204
  input wire [0:3] am_read_enable     ;
205
  input wire [0:3] am_write_enable    ;
206
 
207
  //-------------------------------------------------------------------------------------------------- 
208
  // interface to multiplexer 
209
  //-------------------------------------------------------------------------------------------------- 
210
 
211
  output logic         arb_pre_all  ;
212
  output logic         arb_refr     ;
213
  output logic         arb_pre      ;
214
  output logic         arb_act      ;
215
  output logic         arb_read     ;
216
  output logic         arb_write    ;
217
  output rowa_t        arb_rowa     ;
218
  output cola_t        arb_cola     ;
219
  output ba_t          arb_ba       ;
220
  output chid_t        arb_chid     ;
221
  output sdram_burst_t arb_burst    ;
222
 
223
  //-------------------------------------------------------------------------------------------------- 
224
  // 
225
  //-------------------------------------------------------------------------------------------------- 
226
  enum bit [1:0] {ARB0, ARB1, ARB2} arb, ba_rowa_mux;
227
 
228
  logic       arb_ack;
229
 
230
  logic       dec0_access_enable;
231
  logic       dec1_access_enable;
232
  logic       dec2_access_enable;
233
 
234
  logic       dec0_bank_access_enable;
235
  logic       dec1_bank_access_enable;
236
  logic       dec2_bank_access_enable;
237
 
238
  logic dec1_can_have_access_when_arb_is_0  ;
239
  logic dec2_can_have_access_when_arb_is_0  ;
240
 
241
  logic dec2_can_have_access_when_arb_is_1  ;
242
  logic dec0_can_have_access_when_arb_is_1  ;
243
 
244
  logic dec0_can_have_access_when_arb_is_2  ;
245
  logic dec1_can_have_access_when_arb_is_2  ;
246
 
247
  logic       dec0_access_done;
248
  logic       dec1_access_done;
249
  logic       dec2_access_done;
250
 
251
  //-------------------------------------------------------------------------------------------------- 
252
  // 
253
  //-------------------------------------------------------------------------------------------------- 
254
 
255
  always_ff @(posedge clk or posedge reset) begin : arbiter_logic
256
    if (reset)
257
      arb <= ARB0;
258
    else if (sclr)
259
      arb <= ARB0;
260
    else if (arb_ack)
261
      unique case (arb)
262
        ARB0 : arb <= ARB1;
263
        ARB1 : arb <= ARB2;
264
        ARB2 : arb <= ARB0;
265
      endcase
266
  end
267
 
268
  //
269
  //
270
  //
271
  `ifndef HSSDRC_NOT_SHARE_ACT_COMMAND
272
    // use act command sharing 
273
    assign dec0_bank_access_enable = (dec0_pre & am_pre_enable [dec0_ba] ) |
274
                                     (dec0_act & am_act_enable [dec0_ba] ) ;
275
 
276
    assign dec1_bank_access_enable = (dec1_pre & am_pre_enable [dec1_ba] ) |
277
                                     (dec1_act & am_act_enable [dec1_ba] ) ;
278
 
279
    assign dec2_bank_access_enable = (dec2_pre & am_pre_enable [dec2_ba] ) |
280
                                     (dec2_act & am_act_enable [dec2_ba] ) ;
281
  `else
282
    // not use act command sharing
283
    assign dec0_bank_access_enable = (dec0_pre & am_pre_enable [dec0_ba] ) ;
284
 
285
    assign dec1_bank_access_enable = (dec1_pre & am_pre_enable [dec1_ba] ) ;
286
 
287
    assign dec2_bank_access_enable = (dec2_pre & am_pre_enable [dec2_ba] ) ;
288
  `endif
289
  //
290
  // 
291
  // 
292
  assign dec0_access_enable = (dec0_read   & am_read_enable   [dec0_ba] ) |
293
                              (dec0_write  & am_write_enable  [dec0_ba] ) |
294
                              (dec0_pre    & am_pre_enable    [dec0_ba] ) |
295
                              (dec0_act    & am_act_enable    [dec0_ba] ) ;
296
 
297
  assign dec1_access_enable = (dec1_read   & am_read_enable   [dec1_ba] ) |
298
                              (dec1_write  & am_write_enable  [dec1_ba] ) |
299
                              (dec1_pre    & am_pre_enable    [dec1_ba] ) |
300
                              (dec1_act    & am_act_enable    [dec1_ba] ) ;
301
 
302
 
303
  assign dec2_access_enable = (dec2_read   & am_read_enable   [dec2_ba] ) |
304
                              (dec2_write  & am_write_enable  [dec2_ba] ) |
305
                              (dec2_pre    & am_pre_enable    [dec2_ba] ) |
306
                              (dec2_act    & am_act_enable    [dec2_ba] ) ;
307
  //
308
  //
309
  //
310
  assign dec0_access_done   = (dec0_refr  & dec0_refr_enable) |
311
                              (dec0_last &
312
                                ((dec0_read  & dec0_read_enable  ) |
313
                                ( dec0_write & dec0_write_enable ))
314
                                );
315
 
316
  assign dec1_access_done   = (dec1_refr  & dec1_refr_enable) |
317
                              (dec1_last &
318
                                ((dec1_read  & dec1_read_enable  ) |
319
                                ( dec1_write & dec1_write_enable ))
320
                                );
321
 
322
  assign dec2_access_done   = (dec2_refr  & dec2_refr_enable) |
323
                              (dec2_last &
324
                                ((dec2_read  & dec2_read_enable  ) |
325
                                ( dec2_write & dec2_write_enable ))
326
                                );
327
  //
328
  //
329
  //
330
  assign arb_ack = (dec0_access_done && (arb == ARB0)) |
331
                   (dec1_access_done && (arb == ARB1)) |
332
                   (dec2_access_done && (arb == ARB2));
333
  //-------------------------------------------------------------------------------------------------- 
334
  // decoder roundabout : dec0 -> dec1 -> dec2 -> dec0 -> dec1
335
  //
336
  // arbiter for command pipeline need in folow comparators : 
337
  // 0  : dec0 - dec1 -> select dec1
338
  //    : dec0 - dec2 & dec1 - dec2 -> select dec2
339
  // 1  : dec1 - dec2 -> select dec2
340
  //    : dec1 - dec2 & dec2 - dec0 -> select dec0
341
  // 2  : dec2 - dec0 -> select dec0
342
  //    : dec2 - dec1 & dec0 - dec1 -> select dec1
343
  // we can reclock it. becouse "ba" and "locked" is valid 1 tick before command 
344
  //-------------------------------------------------------------------------------------------------- 
345
 
346
  always_ff @(posedge clk) begin : locked_and_bank_access_comparator
347
    dec1_can_have_access_when_arb_is_0  <= ~dec0_locked & (dec1_ba != dec0_ba);
348
    dec2_can_have_access_when_arb_is_0  <= ~dec0_locked & (dec2_ba != dec0_ba) & ~dec1_locked & (dec2_ba != dec1_ba);
349
 
350
    dec2_can_have_access_when_arb_is_1  <= ~dec1_locked & (dec2_ba != dec1_ba);
351
    dec0_can_have_access_when_arb_is_1  <= ~dec1_locked & (dec0_ba != dec1_ba) & ~dec2_locked & (dec0_ba != dec2_ba);
352
 
353
    dec0_can_have_access_when_arb_is_2  <= ~dec2_locked & (dec0_ba != dec2_ba);
354
    dec1_can_have_access_when_arb_is_2  <= ~dec2_locked & (dec1_ba != dec2_ba) & ~dec0_locked & (dec1_ba != dec0_ba);
355
  end
356
 
357
  //
358
  //
359
  //
360
 
361
  always_comb begin : control_path_arbiter
362
 
363
    dec0_pre_all_enable = 1'b0;
364
    dec0_refr_enable    = 1'b0;
365
    dec0_pre_enable     = 1'b0;
366
    dec0_act_enable     = 1'b0;
367
    dec0_read_enable    = 1'b0;
368
    dec0_write_enable   = 1'b0;
369
 
370
    dec1_pre_all_enable = 1'b0;
371
    dec1_refr_enable    = 1'b0;
372
    dec1_pre_enable     = 1'b0;
373
    dec1_act_enable     = 1'b0;
374
    dec1_read_enable    = 1'b0;
375
    dec1_write_enable   = 1'b0;
376
 
377
    dec2_pre_all_enable = 1'b0;
378
    dec2_refr_enable    = 1'b0;
379
    dec2_pre_enable     = 1'b0;
380
    dec2_act_enable     = 1'b0;
381
    dec2_read_enable    = 1'b0;
382
    dec2_write_enable   = 1'b0;
383
 
384
    arb_pre_all = 1'b0;
385
    arb_refr    = 1'b0;
386
    arb_pre     = 1'b0;
387
    arb_act     = 1'b0;
388
    arb_read    = 1'b0;
389
    arb_write   = 1'b0;
390
 
391
    ba_rowa_mux = arb;
392
 
393
    unique case (arb)
394
      ARB0 : begin : dec0_is_master
395
 
396
        dec0_pre_all_enable = am_pre_all_enable             ;
397
        dec0_refr_enable    = am_refr_enable                ;
398
        dec0_pre_enable     = am_pre_enable     [dec0_ba];
399
        dec0_act_enable     = am_act_enable     [dec0_ba];
400
        dec0_read_enable    = am_read_enable    [dec0_ba];
401
        dec0_write_enable   = am_write_enable   [dec0_ba];
402
 
403
        arb_pre_all = dec0_pre_all & dec0_pre_all_enable ;
404
        arb_refr    = dec0_refr    & dec0_refr_enable    ;
405
        arb_pre     = dec0_pre     & dec0_pre_enable     ;
406
        arb_act     = dec0_act     & dec0_act_enable     ;
407
        arb_read    = dec0_read    & dec0_read_enable    ;
408
        arb_write   = dec0_write   & dec0_write_enable   ;
409
 
410
`ifndef HSSDRC_SHARE_NONE_DECODER
411
 
412
        if (~dec0_access_enable) begin
413
 
414
          if (dec1_can_have_access_when_arb_is_0) begin
415
 
416
            ba_rowa_mux = ARB1;
417
            //            
418
            dec1_pre_enable  = am_pre_enable [dec1_ba];
419
 
420
            arb_pre          = dec1_pre & dec1_pre_enable ;
421
            //
422
            `ifndef HSSDRC_NOT_SHARE_ACT_COMMAND
423
              dec1_act_enable  = am_act_enable [dec1_ba];
424
 
425
              arb_act          = dec1_act & dec1_act_enable ;
426
            `endif
427
 
428
          end
429
 
430
    `ifndef HSSDRC_SHARE_ONE_DECODER
431
          if (~dec1_bank_access_enable & dec2_can_have_access_when_arb_is_0) begin
432
    `else
433
          else if (dec2_can_have_access_when_arb_is_0) begin
434
    `endif
435
            ba_rowa_mux = ARB2;
436
            //
437
            dec2_pre_enable  = am_pre_enable [dec2_ba];
438
 
439
            arb_pre          = dec2_pre & dec2_pre_enable ;
440
            // 
441
            `ifndef HSSDRC_NOT_SHARE_ACT_COMMAND
442
              dec2_act_enable  = am_act_enable [dec2_ba];
443
 
444
              arb_act          = dec2_act & dec2_act_enable ;
445
            `endif
446
 
447
          end
448
        end
449
`endif // HSSDRC_SHARE_NONE_DECODER
450
      end
451
 
452
      ARB1 : begin : dec1_is_master
453
 
454
        dec1_pre_all_enable = am_pre_all_enable             ;
455
        dec1_refr_enable    = am_refr_enable                ;
456
        dec1_pre_enable     = am_pre_enable     [dec1_ba];
457
        dec1_act_enable     = am_act_enable     [dec1_ba];
458
        dec1_read_enable    = am_read_enable    [dec1_ba];
459
        dec1_write_enable   = am_write_enable   [dec1_ba];
460
 
461
        arb_pre_all = dec1_pre_all & dec1_pre_all_enable ;
462
        arb_refr    = dec1_refr    & dec1_refr_enable    ;
463
        arb_pre     = dec1_pre     & dec1_pre_enable     ;
464
        arb_act     = dec1_act     & dec1_act_enable     ;
465
        arb_read    = dec1_read    & dec1_read_enable    ;
466
        arb_write   = dec1_write   & dec1_write_enable   ;
467
 
468
`ifndef HSSDRC_SHARE_NONE_DECODER
469
 
470
        if (~dec1_access_enable) begin
471
 
472
          if (dec2_can_have_access_when_arb_is_1) begin
473
 
474
            ba_rowa_mux = ARB2;
475
            //
476
            dec2_pre_enable  = am_pre_enable   [dec2_ba];
477
 
478
            arb_pre          = dec2_pre & dec2_pre_enable ;
479
            //
480
            `ifndef HSSDRC_NOT_SHARE_ACT_COMMAND
481
              dec2_act_enable  = am_act_enable   [dec2_ba];
482
 
483
              arb_act          = dec2_act & dec2_act_enable ;
484
            `endif
485
 
486
          end
487
 
488
    `ifndef HSSDRC_SHARE_ONE_DECODER
489
          if (~dec2_bank_access_enable & dec0_can_have_access_when_arb_is_1) begin
490
    `else
491
          else if (dec0_can_have_access_when_arb_is_1) begin
492
    `endif
493
            ba_rowa_mux = ARB0;
494
            //
495
            dec0_pre_enable  = am_pre_enable   [dec0_ba];
496
 
497
            arb_pre          = dec0_pre & dec0_pre_enable ;
498
            // 
499
            `ifndef HSSDRC_NOT_SHARE_ACT_COMMAND
500
              dec0_act_enable  = am_act_enable   [dec0_ba];
501
 
502
              arb_act          = dec0_act & dec0_act_enable ;
503
            `endif
504
 
505
          end
506
        end
507
`endif // HSSDRC_SHARE_NONE_DECODER
508
      end
509
 
510
      ARB2 : begin : dec2_is_master
511
 
512
        dec2_pre_all_enable = am_pre_all_enable               ;
513
        dec2_refr_enable    = am_refr_enable                  ;
514
        dec2_pre_enable     = am_pre_enable     [dec2_ba]  ;
515
        dec2_act_enable     = am_act_enable     [dec2_ba]  ;
516
        dec2_read_enable    = am_read_enable    [dec2_ba]  ;
517
        dec2_write_enable   = am_write_enable   [dec2_ba]  ;
518
 
519
        arb_pre_all = dec2_pre_all & dec2_pre_all_enable ;
520
        arb_refr    = dec2_refr    & dec2_refr_enable    ;
521
        arb_pre     = dec2_pre     & dec2_pre_enable     ;
522
        arb_act     = dec2_act     & dec2_act_enable     ;
523
        arb_read    = dec2_read    & dec2_read_enable    ;
524
        arb_write   = dec2_write   & dec2_write_enable   ;
525
 
526
`ifndef HSSDRC_SHARE_NONE_DECODER
527
 
528
        if (~dec2_access_enable) begin
529
 
530
          if (dec0_can_have_access_when_arb_is_2) begin
531
 
532
            ba_rowa_mux = ARB0;
533
            //
534
            dec0_pre_enable  = am_pre_enable   [dec0_ba];
535
 
536
            arb_pre          = dec0_pre & dec0_pre_enable ;
537
            //
538
            `ifndef HSSDRC_NOT_SHARE_ACT_COMMAND
539
              dec0_act_enable  = am_act_enable   [dec0_ba];
540
 
541
              arb_act          = dec0_act & dec0_act_enable ;
542
            `endif
543
 
544
          end
545
 
546
    `ifndef HSSDRC_SHARE_ONE_DECODER
547
          if (~dec0_bank_access_enable & dec1_can_have_access_when_arb_is_2) begin
548
    `else
549
          else if (dec1_can_have_access_when_arb_is_2) begin
550
    `endif
551
            ba_rowa_mux = ARB1;
552
            //
553
            dec1_pre_enable  = am_pre_enable   [dec1_ba];
554
 
555
            arb_pre          = dec1_pre & dec1_pre_enable  ;
556
            //
557
            `ifndef HSSDRC_NOT_SHARE_ACT_COMMAND
558
              dec1_act_enable  = am_act_enable   [dec1_ba];
559
 
560
              arb_act          = dec1_act & dec1_act_enable  ;
561
            `endif
562
 
563
          end
564
        end
565
`endif // HSSDRC_SHARE_NONE_DECODER
566
      end
567
    endcase
568
  end
569
 
570
 
571
 
572
  always_comb begin : mux_addr_path2arbiter
573
 
574
    //
575
    // no complex mux : used in read/write command 
576
    //
577
 
578
    arb_cola   = dec0_cola;
579
    arb_chid   = dec0_chid;
580
    arb_burst  = dec0_burst;
581
 
582
    unique case (arb)
583
      ARB0 : begin
584
        arb_cola   = dec0_cola;
585
        arb_chid   = dec0_chid;
586
        arb_burst  = dec0_burst;
587
        end
588
      ARB1 : begin
589
        arb_cola   = dec1_cola;
590
        arb_chid   = dec1_chid;
591
        arb_burst  = dec1_burst;
592
        end
593
      ARB2 : begin
594
        arb_cola   = dec2_cola;
595
        arb_chid   = dec2_chid;
596
        arb_burst  = dec2_burst;
597
        end
598
      default : begin end
599
    endcase
600
 
601
    //
602
    // complex mux used in pre command
603
    //
604
 
605
    arb_ba     = dec0_ba;
606
 
607
    unique case (ba_rowa_mux)
608
      ARB0 : arb_ba = dec0_ba;
609
      ARB1 : arb_ba = dec1_ba;
610
      ARB2 : arb_ba = dec2_ba;
611
    endcase
612
 
613
    //
614
    // complex mux used in act command
615
    //
616
 
617
    arb_rowa   = dec0_rowa;
618
 
619
`ifndef HSSDRC_NOT_SHARE_ACT_COMMAND
620
      unique case (ba_rowa_mux)
621
`else
622
      unique case (arb)
623
`endif
624
      ARB0 : arb_rowa = dec0_rowa;
625
      ARB1 : arb_rowa = dec1_rowa;
626
      ARB2 : arb_rowa = dec2_rowa;
627
    endcase
628
 
629
  end
630
 
631
endmodule

powered by: WebSVN 2.1.0

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