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

Subversion Repositories versatile_mem_ctrl

[/] [versatile_mem_ctrl/] [trunk/] [rtl/] [verilog/] [versatile_mem_ctrl_top.v] - Blame information for rev 111

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

Line No. Rev Author Line
1 111 unneback
/*
2
module `BASE`MODULE (
3
`undef MODULE
4
        // wishbone slave side
5
        wbs_dat_i, wbs_adr_i, wbs_sel_i, wbs_bte_i, wbs_cti_i, wbs_we_i, wbs_cyc_i, wbs_stb_i, wbs_dat_o, wbs_ack_o, wbs_clk, wbs_rst,
6
        // wishbone master side
7
        wbm_dat_o, wbm_adr_o, wbm_sel_o, wbm_bte_o, wbm_cti_o, wbm_we_o, wbm_cyc_o, wbm_stb_o, wbm_dat_i, wbm_ack_i, wbm_clk, wbm_rst);
8
 
9
`ifdef WB3_ARBITER_TYPE1
10
`define MODULE wb3_arbiter_type1
11
module `BASE`MODULE (
12
`undef MODULE
13
    wbm_dat_o, wbm_adr_o, wbm_sel_o, wbm_cti_o, wbm_bte_o, wbm_we_o, wbm_stb_o, wbm_cyc_o,
14
    wbm_dat_i, wbm_ack_i, wbm_err_i, wbm_rty_i,
15
    wbs_dat_i, wbs_adr_i, wbs_sel_i, wbs_cti_i, wbs_bte_i, wbs_we_i, wbs_stb_i, wbs_cyc_i,
16
    wbs_dat_o, wbs_ack_o, wbs_err_o, wbs_rty_o,
17
    wb_clk, wb_rst
18
);
19
*/
20
//`include "versatile_mem_ctrl_defines.v"
21
`define MODULE top
22
module `BASE`MODULE (
23
`undef MODULE
24
    input  [31:0] wbs_1_dat_i,
25
    input  [`WB_ADR_SIZE-1:2] wbs_1_adr_i,
26
    input   [3:0] wbs_1_sel_i,
27
    input   [2:0] wbs_1_cti_i,
28
    input   [1:0] wbs_1_bte_i,
29
    input         wbs_1_we_i,
30
    input         wbs_1_stb_i,
31
    input         wbs_1_cyc_i,
32
    output [31:0] wbs_1_dat_o,
33
    output        wbs_1_ack_o,
34
    input         wbs_1_clk_i,
35
    input         wbs_1_rst_i,
36
`ifdef WB_GRPS_2
37
    input  [31:0] wbs_2_dat_i,
38
    input  [`WB_ADR_SIZE-1:2] wbs_2_adr_i,
39
    input   [3:0] wbs_2_sel_i,
40
    input   [2:0] wbs_2_cti_i,
41
    input   [1:0] wbs_2_bte_i,
42
    input         wbs_2_we_i,
43
    input         wbs_2_stb_i,
44
    input         wbs_2_cyc_i,
45
    output [31:0] wbs_2_dat_o,
46
    output        wbs_2_ack_o,
47
    input         wbs_2_clk_i,
48
    input         wbs_2_rst_i,
49
`endif
50
`ifdef WB_GRPS_3
51
    input  [31:0] wbs_3_dat_i,
52
    input  [`WB_ADR_SIZE-1:2] wbs_3_adr_i,
53
    input   [3:0] wbs_3_sel_i,
54
    input   [2:0] wbs_3_cti_i,
55
    input   [1:0] wbs_3_bte_i,
56
    input         wbs_3_we_i,
57
    input         wbs_3_stb_i,
58
    input         wbs_3_cyc_i,
59
    output [31:0] wbs_3_dat_o,
60
    output        wbs_3_ack_o,
61
    input         wbs_3_clk_i,
62
    input         wbs_3_rst_i,
63
`endif
64
`ifdef WB_GRPS_4
65
    input  [31:0] wbs_4_dat_i,
66
    input  [`WB_ADR_SIZE-1:2] wbs_4_adr_i,
67
    input   [3:0] wbs_4_sel_i,
68
    input   [2:0] wbs_4_cti_i,
69
    input   [1:0] wbs_4_bte_i,
70
    input         wbs_4_we_i,
71
    input         wbs_4_stb_i,
72
    input         wbs_4_cyc_i,
73
    output [31:0] wbs_4_dat_o,
74
    output        wbs_4_ack_o,
75
    input         wbs_4_clk_i,
76
    input         wbs_4_rst_i,
77
`endif
78
`ifdef WB_GRPS_5
79
    input  [31:0] wbs_5_dat_i,
80
    input  [`WB_ADR_SIZE-1:2] wbs_5_adr_i,
81
    input   [3:0] wbs_5_sel_i,
82
    input   [2:0] wbs_5_cti_i,
83
    input   [1:0] wbs_5_bte_i,
84
    input         wbs_5_we_i,
85
    input         wbs_5_stb_i,
86
    input         wbs_5_cyc_i,
87
    output [31:0] wbs_5_dat_o,
88
    output        wbs_5_ack_o,
89
    input         wbs_5_clk_i,
90
    input         wbs_5_rst_i,
91
`endif
92
`ifdef WB_GRPS_6
93
    input  [31:0] wbs_6_dat_i,
94
    input  [`WB_ADR_SIZE-1:2] wbs_6_adr_i,
95
    input   [3:0] wbs_6_sel_i,
96
    input   [2:0] wbs_6_cti_i,
97
    input   [1:0] wbs_6_bte_i,
98
    input         wbs_6_we_i,
99
    input         wbs_6_stb_i,
100
    input         wbs_6_cyc_i,
101
    output [31:0] wbs_6_dat_o,
102
    output        wbs_6_ack_o,
103
    input         wbs_6_clk_i,
104
    input         wbs_6_rst_i,
105
`endif
106
`ifdef WB_GRPS_7
107
    input  [31:0] wbs_7_dat_i,
108
    input  [`WB_ADR_SIZE-1:2] wbs_7_adr_i,
109
    input   [3:0] wbs_7_sel_i,
110
    input   [2:0] wbs_7_cti_i,
111
    input   [1:0] wbs_7_bte_i,
112
    input         wbs_7_we_i,
113
    input         wbs_7_stb_i,
114
    input         wbs_7_cyc_i,
115
    output [31:0] wbs_7_dat_o,
116
    output        wbs_7_ack_o,
117
    input         wbs_7_clk_i,
118
    input         wbs_7_rst_i,
119
`endif
120
`ifdef WB_GRPS_8
121
    input  [31:0] wbs_8_dat_i,
122
    input  [`WB_ADR_SIZE-1:2] wbs_8_adr_i,
123
    input   [3:0] wbs_8_sel_i,
124
    input   [2:0] wbs_8_cti_i,
125
    input   [1:0] wbs_8_bte_i,
126
    input         wbs_8_we_i,
127
    input         wbs_8_stb_i,
128
    input         wbs_8_cyc_i,
129
    output [31:0] wbs_8_dat_o,
130
    output        wbs_8_ack_o,
131
    input         wbs_8_clk_i,
132
    input         wbs_8_rst_i,
133
`endif
134
`ifdef SDR
135
    output  [1:0] ba,
136
    output [12:0] a,
137
    output  [2:0] cmd,
138
    output       cke,
139
    output       cs_n,
140
    output [`SDR_SDRAM_DATA_WIDTH/8-1:0] dqm,
141
    output [`SDR_SDRAM_DATA_WIDTH-1:0] dq_o,
142
    input  [`SDR_SDRAM_DATA_WIDTH-1:0] dq_i,
143
    output dq_oe,
144
`endif
145
    input mem_clk_i,
146
    input mem_rst_i
147
);
148
 
149
wire  [31:0] wbm_1_dat_o;
150
wire  [`WB_ADR_SIZE-1:2] wbm_1_adr_o;
151
wire   [3:0] wbm_1_sel_o;
152
wire   [2:0] wbm_1_cti_o;
153
wire   [1:0] wbm_1_bte_o;
154
wire         wbm_1_we_o;
155
wire         wbm_1_stb_o;
156
wire         wbm_1_cyc_o;
157
wire  [31:0] wbm_1_dat_i;
158
wire         wbm_1_ack_i;
159
`ifdef WB_GRPS_2
160
wire  [31:0] wbm_2_dat_o;
161
wire  [`WB_ADR_SIZE-1:2] wbm_2_adr_o;
162
wire   [3:0] wbm_2_sel_o;
163
wire   [2:0] wbm_2_cti_o;
164
wire   [1:0] wbm_2_bte_o;
165
wire         wbm_2_we_o;
166
wire         wbm_2_stb_o;
167
wire         wbm_2_cyc_o;
168
wire  [31:0] wbm_2_dat_i;
169
wire         wbm_2_ack_i;
170
`endif
171
`ifdef WB_GRPS_3
172
wire  [31:0] wbm_3_dat_o;
173
wire  [`WB_ADR_SIZE-1:2] wbm_3_adr_o;
174
wire   [3:0] wbm_3_sel_o;
175
wire   [2:0] wbm_3_cti_o;
176
wire   [1:0] wbm_3_bte_o;
177
wire         wbm_3_we_o;
178
wire         wbm_3_stb_o;
179
wire         wbm_3_cyc_o;
180
wire  [31:0] wbm_3_dat_i;
181
wire         wbm_3_ack_i;
182
`endif
183
`ifdef WB_GRPS_4
184
wire  [31:0] wbm_4_dat_o;
185
wire  [`WB_ADR_SIZE-1:2] wbm_4_adr_o;
186
wire   [3:0] wbm_4_sel_o;
187
wire   [2:0] wbm_4_cti_o;
188
wire   [1:0] wbm_4_bte_o;
189
wire         wbm_4_we_o;
190
wire         wbm_4_stb_o;
191
wire         wbm_4_cyc_o;
192
wire  [31:0] wbm_4_dat_i;
193
wire         wbm_4_ack_i;
194
`endif
195
`ifdef WB_GRPS_5
196
wire  [31:0] wbm_5_dat_o;
197
wire  [`WB_ADR_SIZE-1:2] wbm_5_adr_o;
198
wire   [3:0] wbm_5_sel_o;
199
wire   [2:0] wbm_5_cti_o;
200
wire   [1:0] wbm_5_bte_o;
201
wire         wbm_5_we_o;
202
wire         wbm_5_stb_o;
203
wire         wbm_5_cyc_o;
204
wire  [31:0] wbm_5_dat_i;
205
wire         wbm_5_ack_i;
206
`endif
207
`ifdef WB_GRPS_6
208
wire  [31:0] wbm_6_dat_o;
209
wire  [`WB_ADR_SIZE-1:2] wbm_6_adr_o;
210
wire   [3:0] wbm_6_sel_o;
211
wire   [2:0] wbm_6_cti_o;
212
wire   [1:0] wbm_6_bte_o;
213
wire         wbm_6_we_o;
214
wire         wbm_6_stb_o;
215
wire         wbm_6_cyc_o;
216
wire  [31:0] wbm_6_dat_i;
217
wire         wbm_6_ack_i;
218
`endif
219
`ifdef WB_GRPS_7
220
wire  [31:0] wbm_7_dat_o;
221
wire  [`WB_ADR_SIZE-1:2] wbm_7_adr_o;
222
wire   [3:0] wbm_7_sel_o;
223
wire   [2:0] wbm_7_cti_o;
224
wire   [1:0] wbm_7_bte_o;
225
wire         wbm_7_we_o;
226
wire         wbm_7_stb_o;
227
wire         wbm_7_cyc_o;
228
wire  [31:0] wbm_7_dat_i;
229
wire         wbm_7_ack_i;
230
`endif
231
`ifdef WB_GRPS_8
232
wire  [31:0] wbm_8_dat_o;
233
wire  [`WB_ADR_SIZE-1:2] wbm_8_adr_o;
234
wire   [3:0] wbm_8_sel_o;
235
wire   [2:0] wbm_8_cti_o;
236
wire   [1:0] wbm_8_bte_o;
237
wire         wbm_8_we_o;
238
wire         wbm_8_stb_o;
239
wire         wbm_8_cyc_o;
240
wire  [31:0] wbm_8_dat_i;
241
wire         wbm_8_ack_i;
242
`endif
243
wire  [31:0] wbs_dat_i;
244
wire  [`WB_ADR_SIZE-1:2] wbs_adr_i;
245
wire   [3:0] wbs_sel_i;
246
wire   [2:0] wbs_cti_i;
247
wire   [1:0] wbs_bte_i;
248
wire         wbs_we_i;
249
wire         wbs_stb_i;
250
wire         wbs_cyc_i;
251
wire  [31:0] wbs_dat_o;
252
wire         wbs_ack_o;
253
 
254
`define MODULE wb3wb3_bridge
255
 
256
`ifdef WB1_CLK
257
wire [31-(`WB_ADR_SIZE):0] dummy1;
258
`VLBASE`MODULE wbwb1 (
259
    // wishbone slave side
260
    .wbs_dat_i(wbs_1_dat_i),
261
    .wbs_adr_i({{32-(`WB_ADR_SIZE){1'b0}},wbs_1_adr_i}),
262
    .wbs_sel_i(wbs_1_sel_i),
263
    .wbs_bte_i(wbs_1_bte_i),
264
    .wbs_cti_i(wbs_1_cti_i),
265
    .wbs_we_i (wbs_1_we_i),
266
    .wbs_cyc_i(wbs_1_cyc_i),
267
    .wbs_stb_i(wbs_1_stb_i),
268
    .wbs_dat_o(wbs_1_dat_o),
269
    .wbs_ack_o(wbs_1_ack_o),
270
    .wbs_clk(wbs_1_clk_i),
271
    .wbs_rst(wbs_1_rst_i),
272
    // wishbone master side
273
    .wbm_dat_o(wbm_1_dat_o),
274
    .wbm_adr_o({dummy1,wbm_1_adr_o}),
275
    .wbm_sel_o(wbm_1_sel_o),
276
    .wbm_bte_o(wbm_1_bte_o),
277
    .wbm_cti_o(wbm_1_cti_o),
278
    .wbm_we_o(wbm_1_we_o),
279
    .wbm_cyc_o(wbm_1_cyc_o),
280
    .wbm_stb_o(wbm_1_stb_o),
281
    .wbm_dat_i(wbm_1_dat_i),
282
    .wbm_ack_i(wbm_1_ack_i),
283
    .wbm_clk(mem_clk_i),
284
    .wbm_rst(mem_rst_i));
285
`endif
286
`ifdef WB1_MEM_CLK
287
    assign wbm_1_dat_o = wbs_1_dat_i;
288
    assign wbm_1_adr_o = wbs_1_adr_i;
289
    assign wbm_1_sel_o = wbs_1_sel_i;
290
    assign wbm_1_bte_o = wbs_1_bte_i;
291
    assign wbm_1_cti_o = wbs_1_cti_i;
292
    assign wbm_1_we_o  = wbs_1_we_i;
293
    assign wbm_1_cyc_o = wbs_1_cyc_i;
294
    assign wbm_1_stb_o = wbs_1_stb_i;
295
    assign wbs_1_dat_o = wbm_1_dat_i;
296
    assign wbs_1_ack_o = wbm_1_ack_i;
297
`endif
298
 
299
`ifdef WB_GRPS_2
300
`ifdef WB2_CLK
301
wire [31-(`WB_ADR_SIZE):0] dummy2;
302
`VLBASE`MODULE wbwb2 (
303
    // wishbone slave side
304
    .wbs_dat_i(wbs_2_dat_i),
305
    .wbs_adr_i({{32-(`WB_ADR_SIZE){1'b0}},wbs_2_adr_i}),
306
    .wbs_sel_i(wbs_2_sel_i),
307
    .wbs_bte_i(wbs_2_bte_i),
308
    .wbs_cti_i(wbs_2_cti_i),
309
    .wbs_we_i (wbs_2_we_i),
310
    .wbs_cyc_i(wbs_2_cyc_i),
311
    .wbs_stb_i(wbs_2_stb_i),
312
    .wbs_dat_o(wbs_2_dat_o),
313
    .wbs_ack_o(wbs_2_ack_o),
314
    .wbs_clk(wbs_2_clk_i),
315
    .wbs_rst(wbs_2_rst_i),
316
    // wishbone master side
317
    .wbm_dat_o(wbm_2_dat_o),
318
    .wbm_adr_o({dummy2,wbm_2_adr_o}),
319
    .wbm_sel_o(wbm_2_sel_o),
320
    .wbm_bte_o(wbm_2_bte_o),
321
    .wbm_cti_o(wbm_2_cti_o),
322
    .wbm_we_o(wbm_2_we_o),
323
    .wbm_cyc_o(wbm_2_cyc_o),
324
    .wbm_stb_o(wbm_2_stb_o),
325
    .wbm_dat_i(wbm_2_dat_i),
326
    .wbm_ack_i(wbm_2_ack_i),
327
    .wbm_clk(mem_clk_i),
328
    .wbm_rst(mem_rst_i));
329
`endif
330
`ifdef WB2_MEM_CLK
331
    assign wbm_2_dat_o = wbs_2_dat_i;
332
    assign wbm_2_adr_o = wbs_2_adr_i;
333
    assign wbm_2_sel_o = wbs_2_sel_i;
334
    assign wbm_2_bte_o = wbs_2_bte_i;
335
    assign wbm_2_cti_o = wbs_2_cti_i;
336
    assign wbm_2_we_o  = wbs_2_we_i;
337
    assign wbm_2_cyc_o = wbs_2_cyc_i;
338
    assign wbm_2_stb_o = wbs_2_stb_i;
339
    assign wbs_2_dat_o = wbm_2_dat_i;
340
    assign wbs_2_ack_o = wbm_2_ack_i;
341
`endif
342
`endif
343
 
344
`ifdef WB_GRPS_3
345
`ifdef WB3_CLK
346
wire [31-(`WB_ADR_SIZE):0] dummy3;
347
`VLBASE`MODULE wbwb3 (
348
    // wishbone slave side
349
    .wbs_dat_i(wbs_3_dat_i),
350
    .wbs_adr_i({{32-(`WB_ADR_SIZE){1'b0}},wbs_3_adr_i}),
351
    .wbs_sel_i(wbs_3_sel_i),
352
    .wbs_bte_i(wbs_3_bte_i),
353
    .wbs_cti_i(wbs_3_cti_i),
354
    .wbs_we_i (wbs_3_we_i),
355
    .wbs_cyc_i(wbs_3_cyc_i),
356
    .wbs_stb_i(wbs_3_stb_i),
357
    .wbs_dat_o(wbs_3_dat_o),
358
    .wbs_ack_o(wbs_3_ack_o),
359
    .wbs_clk(wbs_3_clk_i),
360
    .wbs_rst(wbs_3_rst_i),
361
    // wishbone master side
362
    .wbm_dat_o(wbm_3_dat_o),
363
    .wbm_adr_o({dummy3,wbm_3_adr_o}),
364
    .wbm_sel_o(wbm_3_sel_o),
365
    .wbm_bte_o(wbm_3_bte_o),
366
    .wbm_cti_o(wbm_3_cti_o),
367
    .wbm_we_o(wbm_3_we_o),
368
    .wbm_cyc_o(wbm_3_cyc_o),
369
    .wbm_stb_o(wbm_3_stb_o),
370
    .wbm_dat_i(wbm_3_dat_i),
371
    .wbm_ack_i(wbm_3_ack_i),
372
    .wbm_clk(mem_clk_i),
373
    .wbm_rst(mem_rst_i));
374
`endif
375
`ifdef WB3_MEM_CLK
376
    assign wbm_3_dat_o = wbs_3_dat_i;
377
    assign wbm_3_adr_o = wbs_3_adr_i;
378
    assign wbm_3_sel_o = wbs_3_sel_i;
379
    assign wbm_3_bte_o = wbs_3_bte_i;
380
    assign wbm_3_cti_o = wbs_3_cti_i;
381
    assign wbm_3_we_o  = wbs_3_we_i;
382
    assign wbm_3_cyc_o = wbs_3_cyc_i;
383
    assign wbm_3_stb_o = wbs_3_stb_i;
384
    assign wbs_3_dat_o = wbm_3_dat_i;
385
    assign wbs_3_ack_o = wbm_3_ack_i;
386
`endif
387
`endif
388
 
389
`ifdef WB_GRPS_4
390
`ifdef WB4_CLK
391
wire [31-(`WB_ADR_SIZE):0] dummy4;
392
`VLBASE`MODULE wbwb4 (
393
    // wishbone slave side
394
    .wbs_dat_i(wbs_4_dat_i),
395
    .wbs_adr_i({{32-(`WB_ADR_SIZE){1'b0}},wbs_4_adr_i}),
396
    .wbs_sel_i(wbs_4_sel_i),
397
    .wbs_bte_i(wbs_4_bte_i),
398
    .wbs_cti_i(wbs_4_cti_i),
399
    .wbs_we_i (wbs_4_we_i),
400
    .wbs_cyc_i(wbs_4_cyc_i),
401
    .wbs_stb_i(wbs_4_stb_i),
402
    .wbs_dat_o(wbs_4_dat_o),
403
    .wbs_ack_o(wbs_4_ack_o),
404
    .wbs_clk(wbs_4_clk_i),
405
    .wbs_rst(wbs_4_rst_i),
406
    // wishbone master side
407
    .wbm_dat_o(wbm_4_dat_o),
408
    .wbm_adr_o({dummy4,wbm_4_adr_o}),
409
    .wbm_sel_o(wbm_4_sel_o),
410
    .wbm_bte_o(wbm_4_bte_o),
411
    .wbm_cti_o(wbm_4_cti_o),
412
    .wbm_we_o(wbm_4_we_o),
413
    .wbm_cyc_o(wbm_4_cyc_o),
414
    .wbm_stb_o(wbm_4_stb_o),
415
    .wbm_dat_i(wbm_4_dat_i),
416
    .wbm_ack_i(wbm_4_ack_i),
417
    .wbm_clk(mem_clk_i),
418
    .wbm_rst(mem_rst_i));
419
`endif
420
`ifdef WB4_MEM_CLK
421
    assign wbm_4_dat_o = wbs_4_dat_i;
422
    assign wbm_4_adr_o = wbs_4_adr_i;
423
    assign wbm_4_sel_o = wbs_4_sel_i;
424
    assign wbm_4_bte_o = wbs_4_bte_i;
425
    assign wbm_4_cti_o = wbs_4_cti_i;
426
    assign wbm_4_we_o  = wbs_4_we_i;
427
    assign wbm_4_cyc_o = wbs_4_cyc_i;
428
    assign wbm_4_stb_o = wbs_4_stb_i;
429
    assign wbs_4_dat_o = wbm_4_dat_i;
430
    assign wbs_4_ack_o = wbm_4_ack_i;
431
`endif
432
`endif
433
 
434
`ifdef WB_GRPS_5
435
`ifdef WB5_CLK
436
wire [31-(`WB_ADR_SIZE):0] dummy5;
437
`VLBASE`MODULE wbwb5 (
438
    // wishbone slave side
439
    .wbs_dat_i(wbs_5_dat_i),
440
    .wbs_adr_i({{32-(`WB_ADR_SIZE){1'b0}},wbs_5_adr_i}),
441
    .wbs_sel_i(wbs_5_sel_i),
442
    .wbs_bte_i(wbs_5_bte_i),
443
    .wbs_cti_i(wbs_5_cti_i),
444
    .wbs_we_i (wbs_5_we_i),
445
    .wbs_cyc_i(wbs_5_cyc_i),
446
    .wbs_stb_i(wbs_5_stb_i),
447
    .wbs_dat_o(wbs_5_dat_o),
448
    .wbs_ack_o(wbs_5_ack_o),
449
    .wbs_clk(wbs_5_clk_i),
450
    .wbs_rst(wbs_5_rst_i),
451
    // wishbone master side
452
    .wbm_dat_o(wbm_5_dat_o),
453
    .wbm_adr_o({dummy5,wbm_5_adr_o}),
454
    .wbm_sel_o(wbm_5_sel_o),
455
    .wbm_bte_o(wbm_5_bte_o),
456
    .wbm_cti_o(wbm_5_cti_o),
457
    .wbm_we_o(wbm_5_we_o),
458
    .wbm_cyc_o(wbm_5_cyc_o),
459
    .wbm_stb_o(wbm_5_stb_o),
460
    .wbm_dat_i(wbm_5_dat_i),
461
    .wbm_ack_i(wbm_5_ack_i),
462
    .wbm_clk(mem_clk_i),
463
    .wbm_rst(mem_rst_i));
464
`endif
465
`ifdef WB5_MEM_CLK
466
    assign wbm_5_dat_o = wbs_5_dat_i;
467
    assign wbm_5_adr_o = wbs_5_adr_i;
468
    assign wbm_5_sel_o = wbs_5_sel_i;
469
    assign wbm_5_bte_o = wbs_5_bte_i;
470
    assign wbm_5_cti_o = wbs_5_cti_i;
471
    assign wbm_5_we_o  = wbs_5_we_i;
472
    assign wbm_5_cyc_o = wbs_5_cyc_i;
473
    assign wbm_5_stb_o = wbs_5_stb_i;
474
    assign wbs_5_dat_o = wbm_5_dat_i;
475
    assign wbs_5_ack_o = wbm_5_ack_i;
476
`endif
477
`endif
478
 
479
`ifdef WB_GRPS_6
480
`ifdef WB6_CLK
481
wire [31-(`WB_ADR_SIZE):0] dummy6;
482
`VLBASE`MODULE wbwb6 (
483
    // wishbone slave side
484
    .wbs_dat_i(wbs_6_dat_i),
485
    .wbs_adr_i({{32-(`WB_ADR_SIZE){1'b0}},wbs_6_adr_i}),
486
    .wbs_sel_i(wbs_6_sel_i),
487
    .wbs_bte_i(wbs_6_bte_i),
488
    .wbs_cti_i(wbs_6_cti_i),
489
    .wbs_we_i (wbs_6_we_i),
490
    .wbs_cyc_i(wbs_6_cyc_i),
491
    .wbs_stb_i(wbs_6_stb_i),
492
    .wbs_dat_o(wbs_6_dat_o),
493
    .wbs_ack_o(wbs_6_ack_o),
494
    .wbs_clk(wbs_6_clk_i),
495
    .wbs_rst(wbs_6_rst_i),
496
    // wishbone master side
497
    .wbm_dat_o(wbm_6_dat_o),
498
    .wbm_adr_o({dummy6,wbm_6_adr_o}),
499
    .wbm_sel_o(wbm_6_sel_o),
500
    .wbm_bte_o(wbm_6_bte_o),
501
    .wbm_cti_o(wbm_6_cti_o),
502
    .wbm_we_o(wbm_6_we_o),
503
    .wbm_cyc_o(wbm_6_cyc_o),
504
    .wbm_stb_o(wbm_6_stb_o),
505
    .wbm_dat_i(wbm_6_dat_i),
506
    .wbm_ack_i(wbm_6_ack_i),
507
    .wbm_clk(mem_clk_i),
508
    .wbm_rst(mem_rst_i));
509
`endif
510
`ifdef WB6_MEM_CLK
511
    assign wbm_6_dat_o = wbs_6_dat_i;
512
    assign wbm_6_adr_o = wbs_6_adr_i;
513
    assign wbm_6_sel_o = wbs_6_sel_i;
514
    assign wbm_6_bte_o = wbs_6_bte_i;
515
    assign wbm_6_cti_o = wbs_6_cti_i;
516
    assign wbm_6_we_o  = wbs_6_we_i;
517
    assign wbm_6_cyc_o = wbs_6_cyc_i;
518
    assign wbm_6_stb_o = wbs_6_stb_i;
519
    assign wbs_6_dat_o = wbm_6_dat_i;
520
    assign wbs_6_ack_o = wbm_6_ack_i;
521
`endif
522
`endif
523
 
524
`ifdef WB_GRPS_7
525
`ifdef WB7_CLK
526
wire [31-(`WB_ADR_SIZE):0] dummy7;
527
`VLBASE`MODULE wbwb7 (
528
    // wishbone slave side
529
    .wbs_dat_i(wbs_7_dat_i),
530
    .wbs_adr_i({{32-(`WB_ADR_SIZE){1'b0}},wbs_7_adr_i}),
531
    .wbs_sel_i(wbs_7_sel_i),
532
    .wbs_bte_i(wbs_7_bte_i),
533
    .wbs_cti_i(wbs_7_cti_i),
534
    .wbs_we_i (wbs_7_we_i),
535
    .wbs_cyc_i(wbs_7_cyc_i),
536
    .wbs_stb_i(wbs_7_stb_i),
537
    .wbs_dat_o(wbs_7_dat_o),
538
    .wbs_ack_o(wbs_7_ack_o),
539
    .wbs_clk(wbs_7_clk_i),
540
    .wbs_rst(wbs_7_rst_i),
541
    // wishbone master side
542
    .wbm_dat_o(wbm_7_dat_o),
543
    .wbm_adr_o({dummy7,wbm_7_adr_o}),
544
    .wbm_sel_o(wbm_7_sel_o),
545
    .wbm_bte_o(wbm_7_bte_o),
546
    .wbm_cti_o(wbm_7_cti_o),
547
    .wbm_we_o(wbm_7_we_o),
548
    .wbm_cyc_o(wbm_7_cyc_o),
549
    .wbm_stb_o(wbm_7_stb_o),
550
    .wbm_dat_i(wbm_7_dat_i),
551
    .wbm_ack_i(wbm_7_ack_i),
552
    .wbm_clk(mem_clk_i),
553
    .wbm_rst(mem_rst_i));
554
`endif
555
`ifdef WB7_MEM_CLK
556
    assign wbm_7_dat_o = wbs_7_dat_i;
557
    assign wbm_7_adr_o = wbs_7_adr_i;
558
    assign wbm_7_sel_o = wbs_7_sel_i;
559
    assign wbm_7_bte_o = wbs_7_bte_i;
560
    assign wbm_7_cti_o = wbs_7_cti_i;
561
    assign wbm_7_we_o  = wbs_7_we_i;
562
    assign wbm_7_cyc_o = wbs_7_cyc_i;
563
    assign wbm_7_stb_o = wbs_7_stb_i;
564
    assign wbs_7_dat_o = wbm_7_dat_i;
565
    assign wbs_7_ack_o = wbm_7_ack_i;
566
`endif
567
`endif
568
 
569
`ifdef WB_GRPS_8
570
`ifdef WB8_CLK
571
wire [31-(`WB_ADR_SIZE):0] dummy8;
572
`VLBASE`MODULE wbwb8 (
573
    // wishbone slave side
574
    .wbs_dat_i(wbs_8_dat_i),
575
    .wbs_adr_i({{32-(`WB_ADR_SIZE){1'b0}},wbs_8_adr_i}),
576
    .wbs_sel_i(wbs_8_sel_i),
577
    .wbs_bte_i(wbs_8_bte_i),
578
    .wbs_cti_i(wbs_8_cti_i),
579
    .wbs_we_i (wbs_8_we_i),
580
    .wbs_cyc_i(wbs_8_cyc_i),
581
    .wbs_stb_i(wbs_8_stb_i),
582
    .wbs_dat_o(wbs_8_dat_o),
583
    .wbs_ack_o(wbs_8_ack_o),
584
    .wbs_clk(wbs_8_clk_i),
585
    .wbs_rst(wbs_8_rst_i),
586
    // wishbone master side
587
    .wbm_dat_o(wbm_8_dat_o),
588
    .wbm_adr_o({dummy8,wbm_8_adr_o}),
589
    .wbm_sel_o(wbm_8_sel_o),
590
    .wbm_bte_o(wbm_8_bte_o),
591
    .wbm_cti_o(wbm_8_cti_o),
592
    .wbm_we_o(wbm_8_we_o),
593
    .wbm_cyc_o(wbm_8_cyc_o),
594
    .wbm_stb_o(wbm_8_stb_o),
595
    .wbm_dat_i(wbm_8_dat_i),
596
    .wbm_ack_i(wbm_8_ack_i),
597
    .wbm_clk(mem_clk_i),
598
    .wbm_rst(mem_rst_i));
599
`endif
600
`ifdef WB8_MEM_CLK
601
    assign wbm_8_dat_o = wbs_8_dat_i;
602
    assign wbm_8_adr_o = wbs_8_adr_i;
603
    assign wbm_8_sel_o = wbs_8_sel_i;
604
    assign wbm_8_bte_o = wbs_8_bte_i;
605
    assign wbm_8_cti_o = wbs_8_cti_i;
606
    assign wbm_8_we_o  = wbs_8_we_i;
607
    assign wbm_8_cyc_o = wbs_8_cyc_i;
608
    assign wbm_8_stb_o = wbs_8_stb_i;
609
    assign wbs_8_dat_o = wbm_8_dat_i;
610
    assign wbs_8_ack_o = wbm_8_ack_i;
611
`endif
612
`endif
613
 
614
`undef MODULE
615
 
616
`ifdef WB_GRPS_2
617
// we have at least two ports and need an arbiter
618
`define MODULE wb3_arbiter_type1
619
`VLBASE`MODULE
620
# (.nr_of_ports(`NR_OF_PORTS), .adr_size(`WB_ADR_SIZE))
621
wb0(
622
`undef MODULE
623
    .wbm_dat_o({wbm_1_dat_o,wbm_2_dat_o
624
`ifdef WB_GRPS_3
625
    ,wbm_3_dat_o
626
`endif
627
`ifdef WB_GRPS_4
628
    ,wbm_4_dat_o
629
`endif
630
`ifdef WB_GRPS_5
631
    ,wbm_5_dat_o
632
`endif
633
`ifdef WB_GRPS_6
634
    ,wbm_6_dat_o
635
`endif
636
`ifdef WB_GRPS_7
637
    ,wbm_7_dat_o
638
`endif
639
`ifdef WB_GRPS_8
640
    ,wbm_8_dat_o
641
`endif
642
    }),
643
    .wbm_adr_o({wbm_1_adr_o,wbm_2_adr_o
644
`ifdef WB_GRPS_3
645
    ,wbm_3_adr_o
646
`endif
647
`ifdef WB_GRPS_4
648
    ,wbm_4_adr_o
649
`endif
650
`ifdef WB_GRPS_5
651
    ,wbm_5_adr_o
652
`endif
653
`ifdef WB_GRPS_6
654
    ,wbm_6_adr_o
655
`endif
656
`ifdef WB_GRPS_7
657
    ,wbm_7_adr_o
658
`endif
659
`ifdef WB_GRPS_8
660
    ,wbm_8_adr_o
661
`endif
662
    }),
663
    .wbm_sel_o({wbm_1_sel_o,wbm_2_sel_o
664
`ifdef WB_GRPS_3
665
    ,wbm_3_sel_o
666
`endif
667
`ifdef WB_GRPS_4
668
    ,wbm_4_sel_o
669
`endif
670
`ifdef WB_GRPS_5
671
    ,wbm_5_sel_o
672
`endif
673
`ifdef WB_GRPS_6
674
    ,wbm_6_sel_o
675
`endif
676
`ifdef WB_GRPS_7
677
    ,wbm_7_sel_o
678
`endif
679
`ifdef WB_GRPS_8
680
    ,wbm_8_sel_o
681
`endif
682
    }),
683
    .wbm_cti_o({wbm_1_cti_o,wbm_2_cti_o
684
`ifdef WB_GRPS_3
685
    ,wbm_3_cti_o
686
`endif
687
`ifdef WB_GRPS_4
688
    ,wbm_4_cti_o
689
`endif
690
`ifdef WB_GRPS_5
691
    ,wbm_5_cti_o
692
`endif
693
`ifdef WB_GRPS_6
694
    ,wbm_6_cti_o
695
`endif
696
`ifdef WB_GRPS_7
697
    ,wbm_7_cti_o
698
`endif
699
`ifdef WB_GRPS_8
700
    ,wbm_8_cti_o
701
`endif
702
    }),
703
    .wbm_bte_o({wbm_1_bte_o,wbm_2_bte_o
704
`ifdef WB_GRPS_3
705
    ,wbm_3_bte_o
706
`endif
707
`ifdef WB_GRPS_4
708
    ,wbm_4_bte_o
709
`endif
710
`ifdef WB_GRPS_5
711
    ,wbm_5_bte_o
712
`endif
713
`ifdef WB_GRPS_6
714
    ,wbm_6_bte_o
715
`endif
716
`ifdef WB_GRPS_7
717
    ,wbm_7_bte_o
718
`endif
719
`ifdef WB_GRPS_8
720
    ,wbm_8_bte_o
721
`endif
722
    }),
723
    .wbm_we_o({wbm_1_we_o,wbm_2_we_o
724
`ifdef WB_GRPS_3
725
    ,wbm_3_we_o
726
`endif
727
`ifdef WB_GRPS_4
728
    ,wbm_4_we_o
729
`endif
730
`ifdef WB_GRPS_5
731
    ,wbm_5_we_o
732
`endif
733
`ifdef WB_GRPS_6
734
    ,wbm_6_we_o
735
`endif
736
`ifdef WB_GRPS_7
737
    ,wbm_7_we_o
738
`endif
739
`ifdef WB_GRPS_8
740
    ,wbm_8_we_o
741
`endif
742
    }),
743
    .wbm_stb_o({wbm_1_stb_o,wbm_2_stb_o
744
`ifdef WB_GRPS_3
745
    ,wbm_3_stb_o
746
`endif
747
`ifdef WB_GRPS_4
748
    ,wbm_4_stb_o
749
`endif
750
`ifdef WB_GRPS_5
751
    ,wbm_5_stb_o
752
`endif
753
`ifdef WB_GRPS_6
754
    ,wbm_6_stb_o
755
`endif
756
`ifdef WB_GRPS_7
757
    ,wbm_7_stb_o
758
`endif
759
`ifdef WB_GRPS_8
760
    ,wbm_8_stb_o
761
`endif
762
    }),
763
    .wbm_cyc_o({wbm_1_cyc_o,wbm_2_cyc_o
764
`ifdef WB_GRPS_3
765
    ,wbm_3_cyc_o
766
`endif
767
`ifdef WB_GRPS_4
768
    ,wbm_4_cyc_o
769
`endif
770
`ifdef WB_GRPS_5
771
    ,wbm_5_cyc_o
772
`endif
773
`ifdef WB_GRPS_6
774
    ,wbm_6_cyc_o
775
`endif
776
`ifdef WB_GRPS_7
777
    ,wbm_7_cyc_o
778
`endif
779
`ifdef WB_GRPS_8
780
    ,wbm_8_cyc_o
781
`endif
782
    }),
783
    .wbm_dat_i({wbm_1_dat_i,wbm_2_dat_i
784
`ifdef WB_GRPS_3
785
    ,wbm_3_dat_i
786
`endif
787
`ifdef WB_GRPS_4
788
    ,wbm_4_dat_i
789
`endif
790
`ifdef WB_GRPS_5
791
    ,wbm_5_dat_i
792
`endif
793
`ifdef WB_GRPS_6
794
    ,wbm_6_dat_i
795
`endif
796
`ifdef WB_GRPS_7
797
    ,wbm_7_dat_i
798
`endif
799
`ifdef WB_GRPS_8
800
    ,wbm_8_dat_i
801
`endif
802
    }),
803
    .wbm_ack_i({wbm_1_ack_i,wbm_2_ack_i
804
`ifdef WB_GRPS_3
805
    ,wbm_3_ack_i
806
`endif
807
`ifdef WB_GRPS_4
808
    ,wbm_4_ack_i
809
`endif
810
`ifdef WB_GRPS_5
811
    ,wbm_5_ack_i
812
`endif
813
`ifdef WB_GRPS_6
814
    ,wbm_6_ack_i
815
`endif
816
`ifdef WB_GRPS_7
817
    ,wbm_7_ack_i
818
`endif
819
`ifdef WB_GRPS_8
820
    ,wbm_8_ack_i
821
`endif
822
    }),
823
    .wbm_err_i({wbm_1_err_i,wbm_2_err_i
824
`ifdef WB_GRPS_3
825
    ,wbm_3_err_i
826
`endif
827
`ifdef WB_GRPS_4
828
    ,wbm_4_err_i
829
`endif
830
`ifdef WB_GRPS_5
831
    ,wbm_5_err_i
832
`endif
833
`ifdef WB_GRPS_6
834
    ,wbm_6_err_i
835
`endif
836
`ifdef WB_GRPS_7
837
    ,wbm_7_err_i
838
`endif
839
`ifdef WB_GRPS_8
840
    ,wbm_8_err_i
841
`endif
842
    }),
843
    .wbm_rty_i({wbm_1_rty_i,wbm_2_rty_i
844
`ifdef WB_GRPS_3
845
    ,wbm_3_rty_i
846
`endif
847
`ifdef WB_GRPS_4
848
    ,wbm_4_rty_i
849
`endif
850
`ifdef WB_GRPS_5
851
    ,wbm_5_rty_i
852
`endif
853
`ifdef WB_GRPS_6
854
    ,wbm_6_rty_i
855
`endif
856
`ifdef WB_GRPS_7
857
    ,wbm_7_rty_i
858
`endif
859
`ifdef WB_GRPS_8
860
    ,wbm_8_rty_i
861
`endif
862
    }),
863
    .wbs_dat_i(wbs_dat_i),
864
    .wbs_adr_i(wbs_adr_i),
865
    .wbs_sel_i(wbs_sel_i),
866
    .wbs_cti_i(wbs_cti_i),
867
    .wbs_bte_i(wbs_bte_i),
868
    .wbs_we_i(wbs_we_i),
869
    .wbs_stb_i(wbs_stb_i),
870
    .wbs_cyc_i(wbs_cyc_i),
871
    .wbs_dat_o(wbs_dat_o),
872
    .wbs_ack_o(wbs_ack_o),
873
    .wbs_err_o(wbs_err_o),
874
    .wbs_rty_o(wbs_rty_o),
875
    .wb_clk(mem_clk),
876
    .wb_rst(mem_clk)
877
);
878
 
879
`else
880
// only one external port an no need for arbiter
881
assign wbs_dat_i = wbm_dat_i;
882
assign wbs_adr_i = wbm_adr_i;
883
assign wbs_sel_i = wbm_sel_i;
884
assign wbs_cti_i = wbm_cti_i;
885
assign wbs_bte_i = wbm_bte_i;
886
assign wbs_we_i  = wbm_we_i;
887
assign wbs_stb_i = wbm_stb_i;
888
assign wbs_cyc_i = wbm_cyc_i;
889
assign wbm_dat_o = wbs_dat_o;
890
assign wbm_ack_o = wbs_ack_o;
891
`endif
892
 
893
`ifdef RAM
894
`define MODULE wb_b3_ram_be
895
`VLBASE`MODULE
896
`undef MODULE
897
# (
898
    .adr_size(`RAM_ADR_SIZE),
899
    .mem_size(`RAM_MEM_SIZE),
900
    .memory_init(`RAM_MEM_INIT),
901
    .memory_file(`RAM_MEM_INIT_FILE)
902
)
903
ram0 (
904
    .wbs_dat_i(wbs_dat_i),
905
    .wbs_adr_i(wbs_adr_i),
906
    .wbs_cti_i(wbs_cti_i),
907
    .wbs_bte_i(wbs_bte_i),
908
    .wbs_sel_i(wbs_sel_i),
909
    .wbs_we_i(wbs_we_i),
910
    .wbs_stb_i(wbs_stb_i),
911
    .wbs_cyc_i(wbs_cyc_i),
912
    .wbs_dat_o(wbs_dat_o),
913
    .wbs_ack_o(wbs_ack_o),
914
    .wb_clk(mem_clk),
915
    .wb_rst(mem_rst));
916
 
917
`endif
918
 
919
`ifdef SDR
920
`define MODULE sdr16
921
`BASE`MODULE sdr16_0(
922
`undef MODULE
923
    // wisbone i/f
924
    .dat_i(wbs_dat_i),
925
    .adr_i({wbs_adr_i,1'b0}),
926
    .sel_i(wbs_sel_i),
927
`ifndef SDR_NO_BURST
928
    .bte_i(wbs_bte_i),
929
`endif
930
    .we_i(wbs_we_i),
931
    .cyc_i(wbs_cyc_i),
932
    .stb_i(wbs_stb_i),
933
    .dat_o(wbs_dat_o),
934
    .ack_o(wbs_ack_o),
935
    // SDR SDRAM
936
    .ba(ba),
937
    .a(a),
938
    .cmd(cmd),
939
    .cke(cke),
940
    .cs_n(cs_n),
941
    .dqm(dqm),
942
    .dq_i(dq_i),
943
    .dq_o(dq_o),
944
    .dq_oe(dq_oe),
945
    // system
946
    .clk(mem_clk),
947
    .rst(mem_rst));
948
`endif
949
 
950
`ifdef DDR2
951
`endif
952
 
953
`ifdef DDR3
954
`endif
955
 
956
endmodule

powered by: WebSVN 2.1.0

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