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

Subversion Repositories mem_ctrl

[/] [mem_ctrl/] [trunk/] [rtl/] [verilog/] [mc_rf.v] - Blame information for rev 12

Go to most recent revision | Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

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