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

Subversion Repositories or1k_soc_on_altera_embedded_dev_kit

[/] [or1k_soc_on_altera_embedded_dev_kit/] [trunk/] [soc/] [rtl/] [mem_if/] [rtl/] [verilog/] [mc_rf.v] - Blame information for rev 12

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 12 xianfeng
/////////////////////////////////////////////////////////////////////
2
////                                                             ////
3
////  WISHBONE Memory Controller Register File                   ////
4
////                                                             ////
5
////                                                             ////
6
////  Author: Rudolf Usselmann                                   ////
7
////          rudi@asics.ws                                      ////
8
////                                                             ////
9
////                                                             ////
10
////  Downloaded from: http://www.opencores.org/cores/mem_ctrl/  ////
11
////                                                             ////
12
/////////////////////////////////////////////////////////////////////
13
////                                                             ////
14
//// Copyright (C) 2000-2002 Rudolf Usselmann                    ////
15
////                         www.asics.ws                        ////
16
////                         rudi@asics.ws                       ////
17
////                                                             ////
18
//// This source file may be used and distributed without        ////
19
//// restriction provided that this copyright statement is not   ////
20
//// removed from the file and that any derivative work contains ////
21
//// the original copyright notice and the associated disclaimer.////
22
////                                                             ////
23
////     THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY     ////
24
//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED   ////
25
//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS   ////
26
//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR      ////
27
//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,         ////
28
//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES    ////
29
//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE   ////
30
//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR        ////
31
//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF  ////
32
//// LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT  ////
33
//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT  ////
34
//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE         ////
35
//// POSSIBILITY OF SUCH DAMAGE.                                 ////
36
////                                                             ////
37
/////////////////////////////////////////////////////////////////////
38
 
39
//  CVS Log
40
//
41
//  $Id: mc_rf.v,v 1.8 2002-01-21 13:08:52 rudi Exp $
42
//
43
//  $Date: 2002-01-21 13:08:52 $
44
//  $Revision: 1.8 $
45
//  $Author: rudi $
46
//  $Locker:  $
47
//  $State: Exp $
48
//
49
// Change History:
50
//               $Log: not supported by cvs2svn $
51
//               Revision 1.7  2001/12/21 05:09:29  rudi
52
//
53
//               - Fixed combinatorial loops in synthesis
54
//               - Fixed byte select bug
55
//
56
//               Revision 1.6  2001/12/11 02:47:19  rudi
57
//
58
//               - Made some changes not to expect clock during reset ...
59
//
60
//               Revision 1.5  2001/11/29 02:16:28  rudi
61
//
62
//
63
//               - More Synthesis cleanup, mostly for speed
64
//               - Several bug fixes
65
//               - Changed code to avoid auto-precharge and
66
//                 burst-terminate combinations (apparently illegal ?)
67
//                 Now we will do a manual precharge ...
68
//
69
//               Revision 1.4  2001/10/04 03:19:37  rudi
70
//
71
//               Fixed Register reads
72
//               Tightened up timing for register rd/wr
73
//
74
//               Revision 1.3  2001/09/24 00:38:21  rudi
75
//
76
//               Changed Reset to be active high and async.
77
//
78
//               Revision 1.2  2001/08/10 08:16:21  rudi
79
//
80
//               - Changed IO names to be more clear.
81
//               - Uniquifyed define names to be core specific.
82
//               - Removed "Refresh Early" configuration
83
//
84
//               Revision 1.1  2001/07/29 07:34:41  rudi
85
//
86
//
87
//               1) Changed Directory Structure
88
//               2) Fixed several minor bugs
89
//
90
//               Revision 1.3  2001/06/12 15:19:49  rudi
91
//
92
//
93
//               Minor changes after running lint, and a small bug fix reading csr and ba_mask registers.
94
//
95
//               Revision 1.2  2001/06/03 11:37:17  rudi
96
//
97
//
98
//               1) Fixed Chip Select Mask Register
99
//                      - Power On Value is now all ones
100
//                      - Comparison Logic is now correct
101
//
102
//               2) All resets are now asynchronous
103
//
104
//               3) Converted Power On Delay to an configurable item
105
//
106
//               4) Added reset to Chip Select Output Registers
107
//
108
//               5) Forcing all outputs to Hi-Z state during reset
109
//
110
//               Revision 1.1.1.1  2001/05/13 09:39:42  rudi
111
//               Created Directory Structure
112
//
113
//
114
//
115
//
116
 
117
`include "mc_defines.v"
118
 
119
module mc_rf(clk, rst,
120
 
121
        wb_data_i, rf_dout, wb_addr_i, wb_we_i, wb_cyc_i,
122
        wb_stb_i, wb_ack_o, wp_err,
123
 
124
        csc, tms, poc,
125
        sp_csc, sp_tms, cs,
126
        mc_data_i, mc_sts, mc_vpen, fs,
127
 
128
        cs_le_d, cs_le, cs_need_rfr, ref_int, rfr_ps_val, init_req,
129
        init_ack, lmr_req, lmr_ack,
130
        spec_req_cs
131
        );
132
 
133
input           clk, rst;
134
 
135
// --------------------------------------
136
// WISHBONE INTERFACE 
137
 
138
// Slave Interface
139
input   [31:0]   wb_data_i;
140
output  [31:0]   rf_dout;
141
input   [31:0]   wb_addr_i;
142
input           wb_we_i;
143
input           wb_cyc_i;
144
input           wb_stb_i;
145
output          wb_ack_o;
146
output          wp_err;
147
 
148
// --------------------------------------
149
// Misc Signals
150
output  [31:0]   csc;
151
output  [31:0]   tms;
152
output  [31:0]   poc;
153
output  [31:0]   sp_csc;
154
output  [31:0]   sp_tms;
155
output  [7:0]    cs;
156
 
157
input   [31:0]   mc_data_i;
158
input           mc_sts;
159
output          mc_vpen;
160
output          fs;
161
 
162
input           cs_le_d;
163
input           cs_le;
164
 
165
output  [7:0]    cs_need_rfr;    // Indicates which chip selects have SDRAM
166
                                // attached and need to be refreshed
167
output  [2:0]    ref_int;        // Refresh Interval
168
output  [7:0]    rfr_ps_val;
169
 
170
output          init_req;
171
input           init_ack;
172
output          lmr_req;
173
input           lmr_ack;
174
 
175
output  [7:0]    spec_req_cs;
176
 
177
////////////////////////////////////////////////////////////////////
178
//
179
// Local Wires
180
//
181
 
182
reg             wb_ack_o;
183
 
184
reg     [31:0]   csc;
185
reg     [31:0]   tms;
186
reg     [31:0]   sp_csc;
187
reg     [31:0]   sp_tms;
188
reg     [31:0]   rf_dout;
189
reg     [7:0]    cs;
190
 
191
reg             rf_we;
192
wire    [31:0]   csr;
193
reg     [10:0]   csr_r;
194
reg     [7:0]    csr_r2;
195
reg     [31:0]   poc;
196
 
197
wire    [31:0]   csc_mask;
198
reg     [10:0]   csc_mask_r;
199
 
200
wire    [31:0]   csc0, tms0;
201
wire    [31:0]   csc1, tms1;
202
wire    [31:0]   csc2, tms2;
203
wire    [31:0]   csc3, tms3;
204
wire    [31:0]   csc4, tms4;
205
wire    [31:0]   csc5, tms5;
206
wire    [31:0]   csc6, tms6;
207
wire    [31:0]   csc7, tms7;
208
 
209
wire            cs0, cs1, cs2, cs3;
210
wire            cs4, cs5, cs6, cs7;
211
wire            wp_err0, wp_err1, wp_err2, wp_err3;
212
wire            wp_err4, wp_err5, wp_err6, wp_err7;
213
reg             wp_err;
214
 
215
wire            lmr_req7, lmr_req6, lmr_req5, lmr_req4;
216
wire            lmr_req3, lmr_req2, lmr_req1, lmr_req0;
217
wire            lmr_ack7, lmr_ack6, lmr_ack5, lmr_ack4;
218
wire            lmr_ack3, lmr_ack2, lmr_ack1, lmr_ack0;
219
 
220
wire            init_req7, init_req6, init_req5, init_req4;
221
wire            init_req3, init_req2, init_req1, init_req0;
222
wire            init_ack7, init_ack6, init_ack5, init_ack4;
223
wire            init_ack3, init_ack2, init_ack1, init_ack0;
224
 
225
reg             init_ack_r;
226
wire            init_ack_fe;
227
reg             lmr_ack_r;
228
wire            lmr_ack_fe;
229
wire    [7:0]    spec_req_cs_t;
230
wire    [7:0]    spec_req_cs_d;
231
reg     [7:0]    spec_req_cs;
232
reg             init_req, lmr_req;
233
reg             sreq_cs_le;
234
 
235
// Aliases
236
assign csr = {csr_r2, 8'h0, 5'h0, csr_r};
237
assign csc_mask = {21'h0, csc_mask_r};
238
 
239
////////////////////////////////////////////////////////////////////
240
//
241
// WISHBONE Register Read logic
242
//
243
 
244
always @(wb_addr_i or csr or poc or csc_mask or csc0 or tms0 or csc1 or
245
        tms1 or csc2 or tms2 or csc3 or tms3 or csc4 or tms4 or csc5 or
246
        tms5 or csc6 or tms6 or csc7 or tms7)
247
        case(wb_addr_i[6:2])            // synopsys full_case parallel_case
248
           5'h00:       rf_dout <= #1 csr;
249
           5'h01:       rf_dout <= #1 poc;
250
           5'h02:       rf_dout <= #1 csc_mask;
251
 
252
           5'h04:       rf_dout <= #1 csc0;
253
           5'h05:       rf_dout <= #1 tms0;
254
           5'h06:       rf_dout <= #1 csc1;
255
           5'h07:       rf_dout <= #1 tms1;
256
           5'h08:       rf_dout <= #1 csc2;
257
           5'h09:       rf_dout <= #1 tms2;
258
           5'h0a:       rf_dout <= #1 csc3;
259
           5'h0b:       rf_dout <= #1 tms3;
260
           5'h0c:       rf_dout <= #1 csc4;
261
           5'h0d:       rf_dout <= #1 tms4;
262
           5'h0e:       rf_dout <= #1 csc5;
263
           5'h0f:       rf_dout <= #1 tms5;
264
           5'h10:       rf_dout <= #1 csc6;
265
           5'h11:       rf_dout <= #1 tms6;
266
           5'h12:       rf_dout <= #1 csc7;
267
           5'h13:       rf_dout <= #1 tms7;
268
        endcase
269
 
270
////////////////////////////////////////////////////////////////////
271
//
272
// WISHBONE Register Write logic
273
//
274
 
275
reg     [6:0]    wb_addr_r;
276
 
277
always @(posedge clk)
278
        wb_addr_r <= #1 wb_addr_i[6:0];
279
 
280
always @(posedge clk or posedge rst)
281
        if(rst)         rf_we <= #1 1'b0;
282
        else            rf_we <= #1 `MC_REG_SEL & wb_we_i & wb_cyc_i & wb_stb_i & !rf_we;
283
 
284
always @(posedge clk or posedge rst)
285
        if(rst)         csr_r2 <= #1 8'h0;
286
        else
287
        if(rf_we & (wb_addr_r[6:2] == 5'h0) )
288
                        csr_r2 <= #1 wb_data_i[31:24];
289
 
290
always @(posedge clk or posedge rst)
291
        if(rst)         csr_r[10:1] <= #1 10'h0;
292
        else
293
        if(rf_we & (wb_addr_r[6:2] == 5'h0) )
294
                        csr_r[10:1] <= #1 wb_data_i[10:1];
295
 
296
always @(posedge clk)
297
        csr_r[0] <= #1 mc_sts;
298
 
299
assign mc_vpen = csr_r[1];
300
assign fs = csr_r[2];
301
assign rfr_ps_val = csr_r2[7:0];
302
 
303
always @(posedge clk or posedge rst)
304
        if(rst)         csc_mask_r <= #1 11'h7ff;
305
        else
306
        if(rf_we & (wb_addr_r[6:2] == 5'h2) )
307
                        csc_mask_r <= #1 wb_data_i[10:0];
308
 
309
////////////////////////////////////////////////////////////////////
310
//
311
// A kludge for cases where there is no clock during reset ...
312
//
313
 
314
reg     rst_r1, rst_r2, rst_r3;
315
 
316
always @(posedge clk or posedge rst)
317
        if(rst)         rst_r1 <= #1 1'b1;
318
        else            rst_r1 <= #1 1'b0;
319
 
320
always @(posedge clk or posedge rst)
321
        if(rst)         rst_r2 <= #1 1'b1;
322
        else            rst_r2 <= #1 rst_r1;
323
 
324
always @(posedge clk or posedge rst)
325
        if(rst)         rst_r3 <= #1 1'b1;
326
        else            rst_r3 <= #1 rst_r2;
327
 
328
always @(posedge clk)
329
        if(rst_r3)      poc <= #1 mc_data_i;
330
 
331
////////////////////////////////////////////////////////////////////
332
//
333
// WISHBONE Register Ack logic
334
//
335
 
336
always @(posedge clk)
337
        wb_ack_o <= #1 `MC_REG_SEL & wb_cyc_i & wb_stb_i & !wb_ack_o;
338
 
339
////////////////////////////////////////////////////////////////////
340
//
341
// Select CSC and TMS Registers
342
//
343
 
344
always @(posedge clk or posedge rst)
345
        if(rst)         cs <= #1 8'h0;
346
        else
347
        if(cs_le)       cs <= #1 {cs7, cs6, cs5, cs4, cs3, cs2, cs1, cs0};
348
 
349
always @(posedge clk or posedge rst)
350
        if(rst)         wp_err <= #1 1'b0;
351
        else
352
        if(cs_le & wb_cyc_i & wb_stb_i)
353
                        wp_err <= #1    wp_err7 | wp_err6 | wp_err5 | wp_err4 |
354
                                        wp_err3 | wp_err2 | wp_err1 | wp_err0;
355
        else
356
        if(!wb_cyc_i)   wp_err <= #1 1'b0;
357
 
358
always @(posedge clk or posedge rst)
359
        if(rst)         csc <= #1 32'h0;
360
        else
361
        if(cs_le_d & wb_cyc_i & wb_stb_i)
362
           begin
363
                if(cs0) csc <= #1 csc0;
364
                else
365
                if(cs1) csc <= #1 csc1;
366
                else
367
                if(cs2) csc <= #1 csc2;
368
                else
369
                if(cs3) csc <= #1 csc3;
370
                else
371
                if(cs4) csc <= #1 csc4;
372
                else
373
                if(cs5) csc <= #1 csc5;
374
                else
375
                if(cs6) csc <= #1 csc6;
376
                else    csc <= #1 csc7;
377
           end
378
 
379
always @(posedge clk or posedge rst)
380
        if(rst)         tms <= #1 32'hffff_ffff;
381
        else
382
        if((cs_le_d | rf_we) & wb_cyc_i & wb_stb_i)
383
           begin
384
                if(cs0) tms <= #1 tms0;
385
                else
386
                if(cs1) tms <= #1 tms1;
387
                else
388
                if(cs2) tms <= #1 tms2;
389
                else
390
                if(cs3) tms <= #1 tms3;
391
                else
392
                if(cs4) tms <= #1 tms4;
393
                else
394
                if(cs5) tms <= #1 tms5;
395
                else
396
                if(cs6) tms <= #1 tms6;
397
                else    tms <= #1 tms7;
398
           end
399
 
400
always @(posedge clk or posedge rst)
401
        if(rst)                         sp_csc <= #1 32'h0;
402
        else
403
        if(cs_le_d & wb_cyc_i & wb_stb_i)
404
           begin
405
                if(spec_req_cs[0])       sp_csc <= #1 csc0;
406
                else
407
                if(spec_req_cs[1])      sp_csc <= #1 csc1;
408
                else
409
                if(spec_req_cs[2])      sp_csc <= #1 csc2;
410
                else
411
                if(spec_req_cs[3])      sp_csc <= #1 csc3;
412
                else
413
                if(spec_req_cs[4])      sp_csc <= #1 csc4;
414
                else
415
                if(spec_req_cs[5])      sp_csc <= #1 csc5;
416
                else
417
                if(spec_req_cs[6])      sp_csc <= #1 csc6;
418
                else                    sp_csc <= #1 csc7;
419
           end
420
 
421
always @(posedge clk or posedge rst)
422
        if(rst)                         sp_tms <= #1 32'hffff_ffff;
423
        else
424
        if((cs_le_d | rf_we) & wb_cyc_i & wb_stb_i)
425
           begin
426
                if(spec_req_cs[0])       sp_tms <= #1 tms0;
427
                else
428
                if(spec_req_cs[1])      sp_tms <= #1 tms1;
429
                else
430
                if(spec_req_cs[2])      sp_tms <= #1 tms2;
431
                else
432
                if(spec_req_cs[3])      sp_tms <= #1 tms3;
433
                else
434
                if(spec_req_cs[4])      sp_tms <= #1 tms4;
435
                else
436
                if(spec_req_cs[5])      sp_tms <= #1 tms5;
437
                else
438
                if(spec_req_cs[6])      sp_tms <= #1 tms6;
439
                else                    sp_tms <= #1 tms7;
440
           end
441
 
442
assign  cs_need_rfr[0] = csc0[0] & (csc0[3:1] == `MC_MEM_TYPE_SDRAM);
443
assign  cs_need_rfr[1] = csc1[0] & (csc1[3:1] == `MC_MEM_TYPE_SDRAM);
444
assign  cs_need_rfr[2] = csc2[0] & (csc2[3:1] == `MC_MEM_TYPE_SDRAM);
445
assign  cs_need_rfr[3] = csc3[0] & (csc3[3:1] == `MC_MEM_TYPE_SDRAM);
446
assign  cs_need_rfr[4] = csc4[0] & (csc4[3:1] == `MC_MEM_TYPE_SDRAM);
447
assign  cs_need_rfr[5] = csc5[0] & (csc5[3:1] == `MC_MEM_TYPE_SDRAM);
448
assign  cs_need_rfr[6] = csc6[0] & (csc6[3:1] == `MC_MEM_TYPE_SDRAM);
449
assign  cs_need_rfr[7] = csc7[0] & (csc7[3:1] == `MC_MEM_TYPE_SDRAM);
450
 
451
assign ref_int = csr_r[10:8];
452
 
453
////////////////////////////////////////////////////////////////////
454
//
455
// Init & Lmr Logic
456
//
457
 
458
// Init Ack falling edge detector
459
always @(posedge clk)
460
        init_ack_r <= #1 init_ack;
461
 
462
assign  init_ack_fe = init_ack_r & !init_ack;
463
 
464
// LMR Ack falling edge detector
465
always @(posedge clk)
466
        lmr_ack_r <= #1 lmr_ack;
467
 
468
assign lmr_ack_fe = lmr_ack_r & !lmr_ack;
469
 
470
// Chip Select Output
471
always @(posedge clk or posedge rst)
472
        if(rst)         spec_req_cs <= #1 8'h0;
473
        else
474
        if(sreq_cs_le)  spec_req_cs <= #1 spec_req_cs_d;
475
 
476
always @(posedge clk or posedge rst)
477
        if(rst) sreq_cs_le <= #1 1'b0;
478
        else    sreq_cs_le <= #1 (!init_req & !lmr_req) | lmr_ack_fe | init_ack_fe;
479
 
480
// Make sure only one is serviced at a time
481
assign  spec_req_cs_d[0] = spec_req_cs_t[0];
482
assign  spec_req_cs_d[1] = spec_req_cs_t[1] & !spec_req_cs_t[0];
483
assign  spec_req_cs_d[2] = spec_req_cs_t[2] & !( |spec_req_cs_t[1:0] );
484
assign  spec_req_cs_d[3] = spec_req_cs_t[3] & !( |spec_req_cs_t[2:0] );
485
assign  spec_req_cs_d[4] = spec_req_cs_t[4] & !( |spec_req_cs_t[3:0] );
486
assign  spec_req_cs_d[5] = spec_req_cs_t[5] & !( |spec_req_cs_t[4:0] );
487
assign  spec_req_cs_d[6] = spec_req_cs_t[6] & !( |spec_req_cs_t[5:0] );
488
assign  spec_req_cs_d[7] = spec_req_cs_t[7] & !( |spec_req_cs_t[6:0] );
489
 
490
// Request Tracking
491
always @(posedge clk or posedge rst)
492
        if(rst) init_req <= #1 1'b0;
493
        else    init_req <= #1  init_req0 | init_req1 | init_req2 | init_req3 |
494
                                init_req4 | init_req5 | init_req6 | init_req7;
495
 
496
always @(posedge clk or posedge rst)
497
        if(rst) lmr_req <= #1 1'b0;
498
        else    lmr_req <= #1   lmr_req0 | lmr_req1 | lmr_req2 | lmr_req3 |
499
                                lmr_req4 | lmr_req5 | lmr_req6 | lmr_req7;
500
 
501
assign spec_req_cs_t = !init_req ?      // Load Mode Register Requests
502
                                {lmr_req7, lmr_req6, lmr_req5, lmr_req4,
503
                                lmr_req3, lmr_req2, lmr_req1, lmr_req0 } :
504
                                // Initialize SDRAM Requests
505
                                {init_req7, init_req6, init_req5, init_req4,
506
                                init_req3, init_req2, init_req1, init_req0 };
507
 
508
// Ack distribution
509
assign lmr_ack0 = spec_req_cs[0] & lmr_ack_fe;
510
assign lmr_ack1 = spec_req_cs[1] & lmr_ack_fe;
511
assign lmr_ack2 = spec_req_cs[2] & lmr_ack_fe;
512
assign lmr_ack3 = spec_req_cs[3] & lmr_ack_fe;
513
assign lmr_ack4 = spec_req_cs[4] & lmr_ack_fe;
514
assign lmr_ack5 = spec_req_cs[5] & lmr_ack_fe;
515
assign lmr_ack6 = spec_req_cs[6] & lmr_ack_fe;
516
assign lmr_ack7 = spec_req_cs[7] & lmr_ack_fe;
517
 
518
assign init_ack0 = spec_req_cs[0] & init_ack_fe;
519
assign init_ack1 = spec_req_cs[1] & init_ack_fe;
520
assign init_ack2 = spec_req_cs[2] & init_ack_fe;
521
assign init_ack3 = spec_req_cs[3] & init_ack_fe;
522
assign init_ack4 = spec_req_cs[4] & init_ack_fe;
523
assign init_ack5 = spec_req_cs[5] & init_ack_fe;
524
assign init_ack6 = spec_req_cs[6] & init_ack_fe;
525
assign init_ack7 = spec_req_cs[7] & init_ack_fe;
526
 
527
////////////////////////////////////////////////////////////////////
528
//
529
// Modules
530
//
531
 
532
mc_cs_rf #(3'h0) u0(
533
                .clk(           clk             ),
534
                .rst(           rst             ),
535
                .wb_we_i(       wb_we_i         ),
536
                .din(           wb_data_i       ),
537
                .rf_we(         rf_we           ),
538
                .addr(          wb_addr_i       ),
539
                .csc(           csc0            ),
540
                .tms(           tms0            ),
541
                .poc(           poc             ),
542
                .csc_mask(      csc_mask        ),
543
                .cs(            cs0             ),
544
                .wp_err(        wp_err0         ),
545
                .lmr_req(       lmr_req0        ),
546
                .lmr_ack(       lmr_ack0        ),
547
                .init_req(      init_req0       ),
548
                .init_ack(      init_ack0       )
549
                );
550
 
551
`ifdef MC_HAVE_CS1
552
mc_cs_rf #(3'h1) u1(
553
                .clk(           clk             ),
554
                .rst(           rst             ),
555
                .wb_we_i(       wb_we_i         ),
556
                .din(           wb_data_i       ),
557
                .rf_we(         rf_we           ),
558
                .addr(          wb_addr_i       ),
559
                .csc(           csc1            ),
560
                .tms(           tms1            ),
561
                .poc(           poc             ),
562
                .csc_mask(      csc_mask        ),
563
                .cs(            cs1             ),
564
                .wp_err(        wp_err1         ),
565
                .lmr_req(       lmr_req1        ),
566
                .lmr_ack(       lmr_ack1        ),
567
                .init_req(      init_req1       ),
568
                .init_ack(      init_ack1       )
569
                );
570
`else
571
mc_cs_rf_dummy #(3'h1) u1(
572
                .clk(           clk             ),
573
                .rst(           rst             ),
574
                .wb_we_i(       wb_we_i         ),
575
                .din(           wb_data_i       ),
576
                .rf_we(         rf_we           ),
577
                .addr(          wb_addr_i       ),
578
                .csc(           csc1            ),
579
                .tms(           tms1            ),
580
                .poc(           poc             ),
581
                .csc_mask(      csc_mask        ),
582
                .cs(            cs1             ),
583
                .wp_err(        wp_err1         ),
584
                .lmr_req(       lmr_req1        ),
585
                .lmr_ack(       lmr_ack1        ),
586
                .init_req(      init_req1       ),
587
                .init_ack(      init_ack1       )
588
                );
589
`endif
590
 
591
`ifdef MC_HAVE_CS2
592
mc_cs_rf #(3'h2) u2(
593
                .clk(           clk             ),
594
                .rst(           rst             ),
595
                .wb_we_i(       wb_we_i         ),
596
                .din(           wb_data_i       ),
597
                .rf_we(         rf_we           ),
598
                .addr(          wb_addr_i       ),
599
                .csc(           csc2            ),
600
                .tms(           tms2            ),
601
                .poc(           poc             ),
602
                .csc_mask(      csc_mask        ),
603
                .cs(            cs2             ),
604
                .wp_err(        wp_err2         ),
605
                .lmr_req(       lmr_req2        ),
606
                .lmr_ack(       lmr_ack2        ),
607
                .init_req(      init_req2       ),
608
                .init_ack(      init_ack2       )
609
                );
610
`else
611
mc_cs_rf_dummy #(3'h2) u2(
612
                .clk(           clk             ),
613
                .rst(           rst             ),
614
                .wb_we_i(       wb_we_i         ),
615
                .din(           wb_data_i       ),
616
                .rf_we(         rf_we           ),
617
                .addr(          wb_addr_i       ),
618
                .csc(           csc2            ),
619
                .tms(           tms2            ),
620
                .poc(           poc             ),
621
                .csc_mask(      csc_mask        ),
622
                .cs(            cs2             ),
623
                .wp_err(        wp_err2         ),
624
                .lmr_req(       lmr_req2        ),
625
                .lmr_ack(       lmr_ack2        ),
626
                .init_req(      init_req2       ),
627
                .init_ack(      init_ack2       )
628
                );
629
`endif
630
 
631
`ifdef MC_HAVE_CS3
632
mc_cs_rf #(3'h3) u3(
633
                .clk(           clk             ),
634
                .rst(           rst             ),
635
                .wb_we_i(       wb_we_i         ),
636
                .din(           wb_data_i       ),
637
                .rf_we(         rf_we           ),
638
                .addr(          wb_addr_i       ),
639
                .csc(           csc3            ),
640
                .tms(           tms3            ),
641
                .poc(           poc             ),
642
                .csc_mask(      csc_mask        ),
643
                .cs(            cs3             ),
644
                .wp_err(        wp_err3         ),
645
                .lmr_req(       lmr_req3        ),
646
                .lmr_ack(       lmr_ack3        ),
647
                .init_req(      init_req3       ),
648
                .init_ack(      init_ack3       )
649
                );
650
`else
651
mc_cs_rf_dummy #(3'h3) u3(
652
                .clk(           clk             ),
653
                .rst(           rst             ),
654
                .wb_we_i(       wb_we_i         ),
655
                .din(           wb_data_i       ),
656
                .rf_we(         rf_we           ),
657
                .addr(          wb_addr_i       ),
658
                .csc(           csc3            ),
659
                .tms(           tms3            ),
660
                .poc(           poc             ),
661
                .csc_mask(      csc_mask        ),
662
                .cs(            cs3             ),
663
                .wp_err(        wp_err3         ),
664
                .lmr_req(       lmr_req3        ),
665
                .lmr_ack(       lmr_ack3        ),
666
                .init_req(      init_req3       ),
667
                .init_ack(      init_ack3       )
668
                );
669
`endif
670
 
671
`ifdef MC_HAVE_CS4
672
mc_cs_rf #(3'h4) u4(
673
                .clk(           clk             ),
674
                .rst(           rst             ),
675
                .wb_we_i(       wb_we_i         ),
676
                .din(           wb_data_i       ),
677
                .rf_we(         rf_we           ),
678
                .addr(          wb_addr_i       ),
679
                .csc(           csc4            ),
680
                .tms(           tms4            ),
681
                .poc(           poc             ),
682
                .csc_mask(      csc_mask        ),
683
                .cs(            cs4             ),
684
                .wp_err(        wp_err4         ),
685
                .lmr_req(       lmr_req4        ),
686
                .lmr_ack(       lmr_ack4        ),
687
                .init_req(      init_req4       ),
688
                .init_ack(      init_ack4       )
689
                );
690
`else
691
mc_cs_rf_dummy #(3'h4) u4(
692
                .clk(           clk             ),
693
                .rst(           rst             ),
694
                .wb_we_i(       wb_we_i         ),
695
                .din(           wb_data_i       ),
696
                .rf_we(         rf_we           ),
697
                .addr(          wb_addr_i       ),
698
                .csc(           csc4            ),
699
                .tms(           tms4            ),
700
                .poc(           poc             ),
701
                .csc_mask(      csc_mask        ),
702
                .cs(            cs4             ),
703
                .wp_err(        wp_err4         ),
704
                .lmr_req(       lmr_req4        ),
705
                .lmr_ack(       lmr_ack4        ),
706
                .init_req(      init_req4       ),
707
                .init_ack(      init_ack4       )
708
                );
709
`endif
710
 
711
`ifdef MC_HAVE_CS5
712
mc_cs_rf #(3'h5) u5(
713
                .clk(           clk             ),
714
                .rst(           rst             ),
715
                .wb_we_i(       wb_we_i         ),
716
                .din(           wb_data_i       ),
717
                .rf_we(         rf_we           ),
718
                .addr(          wb_addr_i       ),
719
                .csc(           csc5            ),
720
                .tms(           tms5            ),
721
                .poc(           poc             ),
722
                .csc_mask(      csc_mask        ),
723
                .cs(            cs5             ),
724
                .wp_err(        wp_err5         ),
725
                .lmr_req(       lmr_req5        ),
726
                .lmr_ack(       lmr_ack5        ),
727
                .init_req(      init_req5       ),
728
                .init_ack(      init_ack5       )
729
                );
730
`else
731
mc_cs_rf_dummy #(3'h5) u5(
732
                .clk(           clk             ),
733
                .rst(           rst             ),
734
                .wb_we_i(       wb_we_i         ),
735
                .din(           wb_data_i       ),
736
                .rf_we(         rf_we           ),
737
                .addr(          wb_addr_i       ),
738
                .csc(           csc5            ),
739
                .tms(           tms5            ),
740
                .poc(           poc             ),
741
                .csc_mask(      csc_mask        ),
742
                .cs(            cs5             ),
743
                .wp_err(        wp_err5         ),
744
                .lmr_req(       lmr_req5        ),
745
                .lmr_ack(       lmr_ack5        ),
746
                .init_req(      init_req5       ),
747
                .init_ack(      init_ack5       )
748
                );
749
`endif
750
 
751
`ifdef MC_HAVE_CS6
752
mc_cs_rf #(3'h6) u6(
753
                .clk(           clk             ),
754
                .rst(           rst             ),
755
                .wb_we_i(       wb_we_i         ),
756
                .din(           wb_data_i       ),
757
                .rf_we(         rf_we           ),
758
                .addr(          wb_addr_i       ),
759
                .csc(           csc6            ),
760
                .tms(           tms6            ),
761
                .poc(           poc             ),
762
                .csc_mask(      csc_mask        ),
763
                .cs(            cs6             ),
764
                .wp_err(        wp_err6         ),
765
                .lmr_req(       lmr_req6        ),
766
                .lmr_ack(       lmr_ack6        ),
767
                .init_req(      init_req6       ),
768
                .init_ack(      init_ack6       )
769
                );
770
`else
771
mc_cs_rf_dummy #(3'h6) u6(
772
                .clk(           clk             ),
773
                .rst(           rst             ),
774
                .wb_we_i(       wb_we_i         ),
775
                .din(           wb_data_i       ),
776
                .rf_we(         rf_we           ),
777
                .addr(          wb_addr_i       ),
778
                .csc(           csc6            ),
779
                .tms(           tms6            ),
780
                .poc(           poc             ),
781
                .csc_mask(      csc_mask        ),
782
                .cs(            cs6             ),
783
                .wp_err(        wp_err6         ),
784
                .lmr_req(       lmr_req6        ),
785
                .lmr_ack(       lmr_ack6        ),
786
                .init_req(      init_req6       ),
787
                .init_ack(      init_ack6       )
788
                );
789
`endif
790
 
791
`ifdef MC_HAVE_CS7
792
mc_cs_rf #(3'h7) u7(
793
                .clk(           clk             ),
794
                .rst(           rst             ),
795
                .wb_we_i(       wb_we_i         ),
796
                .din(           wb_data_i       ),
797
                .rf_we(         rf_we           ),
798
                .addr(          wb_addr_i       ),
799
                .csc(           csc7            ),
800
                .tms(           tms7            ),
801
                .poc(           poc             ),
802
                .csc_mask(      csc_mask        ),
803
                .cs(            cs7             ),
804
                .wp_err(        wp_err7         ),
805
                .lmr_req(       lmr_req7        ),
806
                .lmr_ack(       lmr_ack7        ),
807
                .init_req(      init_req7       ),
808
                .init_ack(      init_ack7       )
809
                );
810
`else
811
mc_cs_rf_dummy #(3'h7) u7(
812
                .clk(           clk             ),
813
                .rst(           rst             ),
814
                .wb_we_i(       wb_we_i         ),
815
                .din(           wb_data_i       ),
816
                .rf_we(         rf_we           ),
817
                .addr(          wb_addr_i       ),
818
                .csc(           csc7            ),
819
                .tms(           tms7            ),
820
                .poc(           poc             ),
821
                .csc_mask(      csc_mask        ),
822
                .cs(            cs7             ),
823
                .wp_err(        wp_err7         ),
824
                .lmr_req(       lmr_req7        ),
825
                .lmr_ack(       lmr_ack7        ),
826
                .init_req(      init_req7       ),
827
                .init_ack(      init_ack7       )
828
                );
829
`endif
830
 
831
endmodule
832
 

powered by: WebSVN 2.1.0

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