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

Subversion Repositories mem_ctrl

[/] [mem_ctrl/] [trunk/] [rtl/] [verilog/] [mc_obct_top.v] - Blame information for rev 8

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

Line No. Rev Author Line
1 4 rudi
/////////////////////////////////////////////////////////////////////
2
////                                                             ////
3
////  WISHBONE Memory Controller                                 ////
4
////  Open Bank & Row Tracking Block Top Level                   ////
5
////                                                             ////
6
////                                                             ////
7
////  Author: Rudolf Usselmann                                   ////
8
////          rudi@asics.ws                                      ////
9
////                                                             ////
10
////                                                             ////
11
////  Downloaded from: http://www.opencores.org/cores/mem_ctrl/  ////
12
////                                                             ////
13
/////////////////////////////////////////////////////////////////////
14
////                                                             ////
15
//// Copyright (C) 2000 Rudolf Usselmann                         ////
16
////                    rudi@asics.ws                            ////
17
////                                                             ////
18
//// This source file may be used and distributed without        ////
19
//// restriction provided that this copyright statement is not   ////
20
//// removed from the file and that any derivative work contains ////
21
//// the original copyright notice and the associated disclaimer.////
22
////                                                             ////
23
////     THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY     ////
24
//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED   ////
25
//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS   ////
26
//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR      ////
27
//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,         ////
28
//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES    ////
29
//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE   ////
30
//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR        ////
31
//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF  ////
32
//// LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT  ////
33
//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT  ////
34
//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE         ////
35
//// POSSIBILITY OF SUCH DAMAGE.                                 ////
36
////                                                             ////
37
/////////////////////////////////////////////////////////////////////
38
 
39
//  CVS Log
40
//
41 8 rudi
//  $Id: mc_obct_top.v,v 1.2 2001-08-10 08:16:21 rudi Exp $
42 4 rudi
//
43 8 rudi
//  $Date: 2001-08-10 08:16:21 $
44
//  $Revision: 1.2 $
45 4 rudi
//  $Author: rudi $
46
//  $Locker:  $
47
//  $State: Exp $
48
//
49
// Change History:
50
//               $Log: not supported by cvs2svn $
51 8 rudi
//               Revision 1.1  2001/07/29 07:34:41  rudi
52
//
53
//
54
//               1) Changed Directory Structure
55
//               2) Fixed several minor bugs
56
//
57 4 rudi
//               Revision 1.1.1.1  2001/05/13 09:39:47  rudi
58
//               Created Directory Structure
59
//
60
//
61
//
62
//
63
 
64
`include "mc_defines.v"
65
 
66
module mc_obct_top(clk, rst, cs, row_adr, bank_adr, bank_set, bank_clr, bank_clr_all,
67
                bank_open, any_bank_open, row_same, rfr_ack);
68
input           clk, rst;
69
input   [7:0]    cs;
70
input   [12:0]   row_adr;
71
input   [1:0]    bank_adr;
72
input           bank_set;
73
input           bank_clr;
74
input           bank_clr_all;
75
output          bank_open;
76
output          any_bank_open;
77
output          row_same;
78
input           rfr_ack;
79
 
80
////////////////////////////////////////////////////////////////////
81
//
82
// Local Registers & Wires
83
//
84
 
85
reg             bank_open;
86
reg             row_same;
87
reg             any_bank_open;
88
 
89
wire            bank_set_0;
90
wire            bank_clr_0;
91
wire            bank_clr_all_0;
92
wire            bank_open_0;
93
wire            row_same_0;
94
wire            any_bank_open_0;
95
 
96
wire            bank_set_1;
97
wire            bank_clr_1;
98
wire            bank_clr_all_1;
99
wire            bank_open_1;
100
wire            row_same_1;
101
wire            any_bank_open_1;
102
 
103
wire            bank_set_2;
104
wire            bank_clr_2;
105
wire            bank_clr_all_2;
106
wire            bank_open_2;
107
wire            row_same_2;
108
wire            any_bank_open_2;
109
 
110
wire            bank_set_3;
111
wire            bank_clr_3;
112
wire            bank_clr_all_3;
113
wire            bank_open_3;
114
wire            row_same_3;
115
wire            any_bank_open_3;
116
 
117
wire            bank_set_4;
118
wire            bank_clr_4;
119
wire            bank_clr_all_4;
120
wire            bank_open_4;
121
wire            row_same_4;
122
wire            any_bank_open_4;
123
 
124
wire            bank_set_5;
125
wire            bank_clr_5;
126
wire            bank_clr_all_5;
127
wire            bank_open_5;
128
wire            row_same_5;
129
wire            any_bank_open_5;
130
 
131
wire            bank_set_6;
132
wire            bank_clr_6;
133
wire            bank_clr_all_6;
134
wire            bank_open_6;
135
wire            row_same_6;
136
wire            any_bank_open_6;
137
 
138
wire            bank_set_7;
139
wire            bank_clr_7;
140
wire            bank_clr_all_7;
141
wire            bank_open_7;
142
wire            row_same_7;
143
wire            any_bank_open_7;
144
 
145
////////////////////////////////////////////////////////////////////
146
//
147
// Misc Logic
148
//
149
 
150
assign bank_set_0 = cs[0] & bank_set;
151
assign bank_set_1 = cs[1] & bank_set;
152
assign bank_set_2 = cs[2] & bank_set;
153
assign bank_set_3 = cs[3] & bank_set;
154
assign bank_set_4 = cs[4] & bank_set;
155
assign bank_set_5 = cs[5] & bank_set;
156
assign bank_set_6 = cs[6] & bank_set;
157
assign bank_set_7 = cs[7] & bank_set;
158
 
159
assign bank_clr_0 = cs[0] & bank_clr;
160
assign bank_clr_1 = cs[1] & bank_clr;
161
assign bank_clr_2 = cs[2] & bank_clr;
162
assign bank_clr_3 = cs[3] & bank_clr;
163
assign bank_clr_4 = cs[4] & bank_clr;
164
assign bank_clr_5 = cs[5] & bank_clr;
165
assign bank_clr_6 = cs[6] & bank_clr;
166
assign bank_clr_7 = cs[7] & bank_clr;
167
 
168
assign bank_clr_all_0 = (cs[0] & bank_clr_all) | rfr_ack;
169
assign bank_clr_all_1 = (cs[1] & bank_clr_all) | rfr_ack;
170
assign bank_clr_all_2 = (cs[2] & bank_clr_all) | rfr_ack;
171
assign bank_clr_all_3 = (cs[3] & bank_clr_all) | rfr_ack;
172
assign bank_clr_all_4 = (cs[4] & bank_clr_all) | rfr_ack;
173
assign bank_clr_all_5 = (cs[5] & bank_clr_all) | rfr_ack;
174
assign bank_clr_all_6 = (cs[6] & bank_clr_all) | rfr_ack;
175
assign bank_clr_all_7 = (cs[7] & bank_clr_all) | rfr_ack;
176
 
177
always @(posedge clk)
178
        bank_open <= #1 (cs[0] & bank_open_0) | (cs[1] & bank_open_1) |
179
                        (cs[2] & bank_open_2) | (cs[3] & bank_open_3) |
180
                        (cs[4] & bank_open_4) | (cs[5] & bank_open_5) |
181
                        (cs[6] & bank_open_6) | (cs[7] & bank_open_7);
182
 
183
always @(posedge clk)
184
        row_same <= #1  (cs[0] & row_same_0) | (cs[1] & row_same_1) |
185
                        (cs[2] & row_same_2) | (cs[3] & row_same_3) |
186
                        (cs[4] & row_same_4) | (cs[5] & row_same_5) |
187
                        (cs[6] & row_same_6) | (cs[7] & row_same_7);
188
 
189
always @(posedge clk)
190
        any_bank_open <= #1     (cs[0] & any_bank_open_0) | (cs[1] & any_bank_open_1) |
191
                                (cs[2] & any_bank_open_2) | (cs[3] & any_bank_open_3) |
192
                                (cs[4] & any_bank_open_4) | (cs[5] & any_bank_open_5) |
193
                                (cs[6] & any_bank_open_6) | (cs[7] & any_bank_open_7);
194
 
195
////////////////////////////////////////////////////////////////////
196
//
197
// OBCT Modules for each Chip Select
198
//
199
 
200
mc_obct u0(
201
                .clk(           clk             ),
202
                .rst(           rst             ),
203
                .row_adr(       row_adr         ),
204
                .bank_adr(      bank_adr        ),
205
                .bank_set(      bank_set_0      ),
206
                .bank_clr(      bank_clr_0      ),
207
                .bank_clr_all(  bank_clr_all_0  ),
208
                .bank_open(     bank_open_0     ),
209
                .any_bank_open( any_bank_open_0 ),
210
                .row_same(      row_same_0      )
211
                );
212
 
213 8 rudi
`ifdef MC_HAVE_CS1
214 4 rudi
mc_obct u1(
215
                .clk(           clk             ),
216
                .rst(           rst             ),
217
                .row_adr(       row_adr         ),
218
                .bank_adr(      bank_adr        ),
219
                .bank_set(      bank_set_1      ),
220
                .bank_clr(      bank_clr_1      ),
221
                .bank_clr_all(  bank_clr_all_1  ),
222
                .bank_open(     bank_open_1     ),
223
                .any_bank_open( any_bank_open_1 ),
224
                .row_same(      row_same_1      )
225
                );
226
`else
227
mc_obct_dummy   u1(
228
                .clk(           clk             ),
229
                .rst(           rst             ),
230
                .row_adr(       row_adr         ),
231
                .bank_adr(      bank_adr        ),
232
                .bank_set(      bank_set_1      ),
233
                .bank_clr(      bank_clr_1      ),
234
                .bank_clr_all(  bank_clr_all_1  ),
235
                .bank_open(     bank_open_1     ),
236
                .any_bank_open( any_bank_open_1 ),
237
                .row_same(      row_same_1      )
238
                );
239
`endif
240
 
241 8 rudi
`ifdef MC_HAVE_CS2
242 4 rudi
mc_obct u2(
243
                .clk(           clk             ),
244
                .rst(           rst             ),
245
                .row_adr(       row_adr         ),
246
                .bank_adr(      bank_adr        ),
247
                .bank_set(      bank_set_2      ),
248
                .bank_clr(      bank_clr_2      ),
249
                .bank_clr_all(  bank_clr_all_2  ),
250
                .bank_open(     bank_open_2     ),
251
                .any_bank_open( any_bank_open_2 ),
252
                .row_same(      row_same_2      )
253
                );
254
`else
255
mc_obct_dummy   u2(
256
                .clk(           clk             ),
257
                .rst(           rst             ),
258
                .row_adr(       row_adr         ),
259
                .bank_adr(      bank_adr        ),
260
                .bank_set(      bank_set_2      ),
261
                .bank_clr(      bank_clr_2      ),
262
                .bank_clr_all(  bank_clr_all_2  ),
263
                .bank_open(     bank_open_2     ),
264
                .any_bank_open( any_bank_open_2 ),
265
                .row_same(      row_same_2      )
266
                );
267
`endif
268
 
269 8 rudi
`ifdef MC_HAVE_CS3
270 4 rudi
mc_obct u3(
271
                .clk(           clk             ),
272
                .rst(           rst             ),
273
                .row_adr(       row_adr         ),
274
                .bank_adr(      bank_adr        ),
275
                .bank_set(      bank_set_3      ),
276
                .bank_clr(      bank_clr_3      ),
277
                .bank_clr_all(  bank_clr_all_3  ),
278
                .bank_open(     bank_open_3     ),
279
                .any_bank_open( any_bank_open_3 ),
280
                .row_same(      row_same_3      )
281
                );
282
`else
283
mc_obct_dummy   u3(
284
                .clk(           clk             ),
285
                .rst(           rst             ),
286
                .row_adr(       row_adr         ),
287
                .bank_adr(      bank_adr        ),
288
                .bank_set(      bank_set_3      ),
289
                .bank_clr(      bank_clr_3      ),
290
                .bank_clr_all(  bank_clr_all_3  ),
291
                .bank_open(     bank_open_3     ),
292
                .any_bank_open( any_bank_open_3 ),
293
                .row_same(      row_same_3      )
294
                );
295
`endif
296
 
297 8 rudi
`ifdef MC_HAVE_CS4
298 4 rudi
mc_obct u4(
299
                .clk(           clk             ),
300
                .rst(           rst             ),
301
                .row_adr(       row_adr         ),
302
                .bank_adr(      bank_adr        ),
303
                .bank_set(      bank_set_4      ),
304
                .bank_clr(      bank_clr_4      ),
305
                .bank_clr_all(  bank_clr_all_4  ),
306
                .bank_open(     bank_open_4     ),
307
                .any_bank_open( any_bank_open_4 ),
308
                .row_same(      row_same_4      )
309
                );
310
`else
311
mc_obct_dummy   u4(
312
                .clk(           clk             ),
313
                .rst(           rst             ),
314
                .row_adr(       row_adr         ),
315
                .bank_adr(      bank_adr        ),
316
                .bank_set(      bank_set_4      ),
317
                .bank_clr(      bank_clr_4      ),
318
                .bank_clr_all(  bank_clr_all_4  ),
319
                .bank_open(     bank_open_4     ),
320
                .any_bank_open( any_bank_open_4 ),
321
                .row_same(      row_same_4      )
322
                );
323
`endif
324
 
325 8 rudi
`ifdef MC_HAVE_CS5
326 4 rudi
mc_obct u5(
327
                .clk(           clk             ),
328
                .rst(           rst             ),
329
                .row_adr(       row_adr         ),
330
                .bank_adr(      bank_adr        ),
331
                .bank_set(      bank_set_5      ),
332
                .bank_clr(      bank_clr_5      ),
333
                .bank_clr_all(  bank_clr_all_5  ),
334
                .bank_open(     bank_open_5     ),
335
                .any_bank_open( any_bank_open_5 ),
336
                .row_same(      row_same_5      )
337
                );
338
`else
339
mc_obct_dummy   u5(
340
                .clk(           clk             ),
341
                .rst(           rst             ),
342
                .row_adr(       row_adr         ),
343
                .bank_adr(      bank_adr        ),
344
                .bank_set(      bank_set_5      ),
345
                .bank_clr(      bank_clr_5      ),
346
                .bank_clr_all(  bank_clr_all_5  ),
347
                .bank_open(     bank_open_5     ),
348
                .any_bank_open( any_bank_open_5 ),
349
                .row_same(      row_same_5      )
350
                );
351
`endif
352
 
353 8 rudi
`ifdef MC_HAVE_CS6
354 4 rudi
mc_obct u6(
355
                .clk(           clk             ),
356
                .rst(           rst             ),
357
                .row_adr(       row_adr         ),
358
                .bank_adr(      bank_adr        ),
359
                .bank_set(      bank_set_6      ),
360
                .bank_clr(      bank_clr_6      ),
361
                .bank_clr_all(  bank_clr_all_6  ),
362
                .bank_open(     bank_open_6     ),
363
                .any_bank_open( any_bank_open_6 ),
364
                .row_same(      row_same_6      )
365
                );
366
`else
367
mc_obct_dummy   u6(
368
                .clk(           clk             ),
369
                .rst(           rst             ),
370
                .row_adr(       row_adr         ),
371
                .bank_adr(      bank_adr        ),
372
                .bank_set(      bank_set_6      ),
373
                .bank_clr(      bank_clr_6      ),
374
                .bank_clr_all(  bank_clr_all_6  ),
375
                .bank_open(     bank_open_6     ),
376
                .any_bank_open( any_bank_open_6 ),
377
                .row_same(      row_same_6      )
378
                );
379
`endif
380
 
381 8 rudi
`ifdef MC_HAVE_CS7
382 4 rudi
mc_obct u7(
383
                .clk(           clk             ),
384
                .rst(           rst             ),
385
                .row_adr(       row_adr         ),
386
                .bank_adr(      bank_adr        ),
387
                .bank_set(      bank_set_7      ),
388
                .bank_clr(      bank_clr_7      ),
389
                .bank_clr_all(  bank_clr_all_7  ),
390
                .bank_open(     bank_open_7     ),
391
                .any_bank_open( any_bank_open_7 ),
392
                .row_same(      row_same_7      )
393
                );
394
`else
395
mc_obct_dummy   u7(
396
                .clk(           clk             ),
397
                .rst(           rst             ),
398
                .row_adr(       row_adr         ),
399
                .bank_adr(      bank_adr        ),
400
                .bank_set(      bank_set_7      ),
401
                .bank_clr(      bank_clr_7      ),
402
                .bank_clr_all(  bank_clr_all_7  ),
403
                .bank_open(     bank_open_7     ),
404
                .any_bank_open( any_bank_open_7 ),
405
                .row_same(      row_same_7      )
406
                );
407
`endif
408
 
409
endmodule

powered by: WebSVN 2.1.0

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