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 16

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

powered by: WebSVN 2.1.0

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