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 20

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

powered by: WebSVN 2.1.0

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