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

Subversion Repositories wdsp

[/] [wdsp/] [trunk/] [rtl/] [verilog/] [minsoc/] [wb_conmax/] [tags/] [start/] [rtl/] [verilog/] [wb_conmax_master_if.v] - Blame information for rev 7

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 7 parrado
/////////////////////////////////////////////////////////////////////
2
////                                                             ////
3
////  WISHBONE Connection Matrix Master Interface                ////
4
////                                                             ////
5
////                                                             ////
6
////  Author: Rudolf Usselmann                                   ////
7
////          rudi@asics.ws                                      ////
8
////                                                             ////
9
////                                                             ////
10
////  Downloaded from: http://www.opencores.org/cores/wb_conmax/ ////
11
////                                                             ////
12
/////////////////////////////////////////////////////////////////////
13
////                                                             ////
14
//// Copyright (C) 2001 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
//  $Id: wb_conmax_master_if.v,v 1.1.1.1 2001-10-19 11:01:41 rudi Exp $
41
//
42
//  $Date: 2001-10-19 11:01:41 $
43
//  $Revision: 1.1.1.1 $
44
//  $Author: rudi $
45
//  $Locker:  $
46
//  $State: Exp $
47
//
48
// Change History:
49
//               $Log: not supported by cvs2svn $
50
//
51
//
52
//
53
//
54
 
55
`include "wb_conmax_defines.v"
56
 
57
module wb_conmax_master_if(
58
 
59
        clk_i, rst_i,
60
 
61
        // Master interface
62
        wb_data_i, wb_data_o, wb_addr_i, wb_sel_i, wb_we_i, wb_cyc_i,
63
        wb_stb_i, wb_ack_o, wb_err_o, wb_rty_o,
64
 
65
        // Slave 0 Interface
66
        s0_data_i, s0_data_o, s0_addr_o, s0_sel_o, s0_we_o, s0_cyc_o,
67
        s0_stb_o, s0_ack_i, s0_err_i, s0_rty_i,
68
 
69
        // Slave 1 Interface
70
        s1_data_i, s1_data_o, s1_addr_o, s1_sel_o, s1_we_o, s1_cyc_o,
71
        s1_stb_o, s1_ack_i, s1_err_i, s1_rty_i,
72
 
73
        // Slave 2 Interface
74
        s2_data_i, s2_data_o, s2_addr_o, s2_sel_o, s2_we_o, s2_cyc_o,
75
        s2_stb_o, s2_ack_i, s2_err_i, s2_rty_i,
76
 
77
        // Slave 3 Interface
78
        s3_data_i, s3_data_o, s3_addr_o, s3_sel_o, s3_we_o, s3_cyc_o,
79
        s3_stb_o, s3_ack_i, s3_err_i, s3_rty_i,
80
 
81
        // Slave 4 Interface
82
        s4_data_i, s4_data_o, s4_addr_o, s4_sel_o, s4_we_o, s4_cyc_o,
83
        s4_stb_o, s4_ack_i, s4_err_i, s4_rty_i,
84
 
85
        // Slave 5 Interface
86
        s5_data_i, s5_data_o, s5_addr_o, s5_sel_o, s5_we_o, s5_cyc_o,
87
        s5_stb_o, s5_ack_i, s5_err_i, s5_rty_i,
88
 
89
        // Slave 6 Interface
90
        s6_data_i, s6_data_o, s6_addr_o, s6_sel_o, s6_we_o, s6_cyc_o,
91
        s6_stb_o, s6_ack_i, s6_err_i, s6_rty_i,
92
 
93
        // Slave 7 Interface
94
        s7_data_i, s7_data_o, s7_addr_o, s7_sel_o, s7_we_o, s7_cyc_o,
95
        s7_stb_o, s7_ack_i, s7_err_i, s7_rty_i,
96
 
97
        // Slave 8 Interface
98
        s8_data_i, s8_data_o, s8_addr_o, s8_sel_o, s8_we_o, s8_cyc_o,
99
        s8_stb_o, s8_ack_i, s8_err_i, s8_rty_i,
100
 
101
        // Slave 9 Interface
102
        s9_data_i, s9_data_o, s9_addr_o, s9_sel_o, s9_we_o, s9_cyc_o,
103
        s9_stb_o, s9_ack_i, s9_err_i, s9_rty_i,
104
 
105
        // Slave 10 Interface
106
        s10_data_i, s10_data_o, s10_addr_o, s10_sel_o, s10_we_o, s10_cyc_o,
107
        s10_stb_o, s10_ack_i, s10_err_i, s10_rty_i,
108
 
109
        // Slave 11 Interface
110
        s11_data_i, s11_data_o, s11_addr_o, s11_sel_o, s11_we_o, s11_cyc_o,
111
        s11_stb_o, s11_ack_i, s11_err_i, s11_rty_i,
112
 
113
        // Slave 12 Interface
114
        s12_data_i, s12_data_o, s12_addr_o, s12_sel_o, s12_we_o, s12_cyc_o,
115
        s12_stb_o, s12_ack_i, s12_err_i, s12_rty_i,
116
 
117
        // Slave 13 Interface
118
        s13_data_i, s13_data_o, s13_addr_o, s13_sel_o, s13_we_o, s13_cyc_o,
119
        s13_stb_o, s13_ack_i, s13_err_i, s13_rty_i,
120
 
121
        // Slave 14 Interface
122
        s14_data_i, s14_data_o, s14_addr_o, s14_sel_o, s14_we_o, s14_cyc_o,
123
        s14_stb_o, s14_ack_i, s14_err_i, s14_rty_i,
124
 
125
        // Slave 15 Interface
126
        s15_data_i, s15_data_o, s15_addr_o, s15_sel_o, s15_we_o, s15_cyc_o,
127
        s15_stb_o, s15_ack_i, s15_err_i, s15_rty_i
128
        );
129
 
130
////////////////////////////////////////////////////////////////////
131
//
132
// Module Parameters
133
//
134
 
135
parameter               dw      = 32;           // Data bus Width
136
parameter               aw      = 32;           // Address bus Width
137
parameter               sw      = dw / 8;       // Number of Select Lines
138
 
139
////////////////////////////////////////////////////////////////////
140
//
141
// Module IOs
142
//
143
 
144
input                   clk_i, rst_i;
145
 
146
// Master Interface
147
input   [dw-1:0] wb_data_i;
148
output  [dw-1:0] wb_data_o;
149
input   [aw-1:0] wb_addr_i;
150
input   [sw-1:0] wb_sel_i;
151
input                   wb_we_i;
152
input                   wb_cyc_i;
153
input                   wb_stb_i;
154
output                  wb_ack_o;
155
output                  wb_err_o;
156
output                  wb_rty_o;
157
 
158
// Slave 0 Interface
159
input   [dw-1:0] s0_data_i;
160
output  [dw-1:0] s0_data_o;
161
output  [aw-1:0] s0_addr_o;
162
output  [sw-1:0] s0_sel_o;
163
output                  s0_we_o;
164
output                  s0_cyc_o;
165
output                  s0_stb_o;
166
input                   s0_ack_i;
167
input                   s0_err_i;
168
input                   s0_rty_i;
169
 
170
// Slave 1 Interface
171
input   [dw-1:0] s1_data_i;
172
output  [dw-1:0] s1_data_o;
173
output  [aw-1:0] s1_addr_o;
174
output  [sw-1:0] s1_sel_o;
175
output                  s1_we_o;
176
output                  s1_cyc_o;
177
output                  s1_stb_o;
178
input                   s1_ack_i;
179
input                   s1_err_i;
180
input                   s1_rty_i;
181
 
182
// Slave 2 Interface
183
input   [dw-1:0] s2_data_i;
184
output  [dw-1:0] s2_data_o;
185
output  [aw-1:0] s2_addr_o;
186
output  [sw-1:0] s2_sel_o;
187
output                  s2_we_o;
188
output                  s2_cyc_o;
189
output                  s2_stb_o;
190
input                   s2_ack_i;
191
input                   s2_err_i;
192
input                   s2_rty_i;
193
 
194
// Slave 3 Interface
195
input   [dw-1:0] s3_data_i;
196
output  [dw-1:0] s3_data_o;
197
output  [aw-1:0] s3_addr_o;
198
output  [sw-1:0] s3_sel_o;
199
output                  s3_we_o;
200
output                  s3_cyc_o;
201
output                  s3_stb_o;
202
input                   s3_ack_i;
203
input                   s3_err_i;
204
input                   s3_rty_i;
205
 
206
// Slave 4 Interface
207
input   [dw-1:0] s4_data_i;
208
output  [dw-1:0] s4_data_o;
209
output  [aw-1:0] s4_addr_o;
210
output  [sw-1:0] s4_sel_o;
211
output                  s4_we_o;
212
output                  s4_cyc_o;
213
output                  s4_stb_o;
214
input                   s4_ack_i;
215
input                   s4_err_i;
216
input                   s4_rty_i;
217
 
218
// Slave 5 Interface
219
input   [dw-1:0] s5_data_i;
220
output  [dw-1:0] s5_data_o;
221
output  [aw-1:0] s5_addr_o;
222
output  [sw-1:0] s5_sel_o;
223
output                  s5_we_o;
224
output                  s5_cyc_o;
225
output                  s5_stb_o;
226
input                   s5_ack_i;
227
input                   s5_err_i;
228
input                   s5_rty_i;
229
 
230
// Slave 6 Interface
231
input   [dw-1:0] s6_data_i;
232
output  [dw-1:0] s6_data_o;
233
output  [aw-1:0] s6_addr_o;
234
output  [sw-1:0] s6_sel_o;
235
output                  s6_we_o;
236
output                  s6_cyc_o;
237
output                  s6_stb_o;
238
input                   s6_ack_i;
239
input                   s6_err_i;
240
input                   s6_rty_i;
241
 
242
// Slave 7 Interface
243
input   [dw-1:0] s7_data_i;
244
output  [dw-1:0] s7_data_o;
245
output  [aw-1:0] s7_addr_o;
246
output  [sw-1:0] s7_sel_o;
247
output                  s7_we_o;
248
output                  s7_cyc_o;
249
output                  s7_stb_o;
250
input                   s7_ack_i;
251
input                   s7_err_i;
252
input                   s7_rty_i;
253
 
254
// Slave 8 Interface
255
input   [dw-1:0] s8_data_i;
256
output  [dw-1:0] s8_data_o;
257
output  [aw-1:0] s8_addr_o;
258
output  [sw-1:0] s8_sel_o;
259
output                  s8_we_o;
260
output                  s8_cyc_o;
261
output                  s8_stb_o;
262
input                   s8_ack_i;
263
input                   s8_err_i;
264
input                   s8_rty_i;
265
 
266
// Slave 9 Interface
267
input   [dw-1:0] s9_data_i;
268
output  [dw-1:0] s9_data_o;
269
output  [aw-1:0] s9_addr_o;
270
output  [sw-1:0] s9_sel_o;
271
output                  s9_we_o;
272
output                  s9_cyc_o;
273
output                  s9_stb_o;
274
input                   s9_ack_i;
275
input                   s9_err_i;
276
input                   s9_rty_i;
277
 
278
// Slave 10 Interface
279
input   [dw-1:0] s10_data_i;
280
output  [dw-1:0] s10_data_o;
281
output  [aw-1:0] s10_addr_o;
282
output  [sw-1:0] s10_sel_o;
283
output                  s10_we_o;
284
output                  s10_cyc_o;
285
output                  s10_stb_o;
286
input                   s10_ack_i;
287
input                   s10_err_i;
288
input                   s10_rty_i;
289
 
290
// Slave 11 Interface
291
input   [dw-1:0] s11_data_i;
292
output  [dw-1:0] s11_data_o;
293
output  [aw-1:0] s11_addr_o;
294
output  [sw-1:0] s11_sel_o;
295
output                  s11_we_o;
296
output                  s11_cyc_o;
297
output                  s11_stb_o;
298
input                   s11_ack_i;
299
input                   s11_err_i;
300
input                   s11_rty_i;
301
 
302
// Slave 12 Interface
303
input   [dw-1:0] s12_data_i;
304
output  [dw-1:0] s12_data_o;
305
output  [aw-1:0] s12_addr_o;
306
output  [sw-1:0] s12_sel_o;
307
output                  s12_we_o;
308
output                  s12_cyc_o;
309
output                  s12_stb_o;
310
input                   s12_ack_i;
311
input                   s12_err_i;
312
input                   s12_rty_i;
313
 
314
// Slave 13 Interface
315
input   [dw-1:0] s13_data_i;
316
output  [dw-1:0] s13_data_o;
317
output  [aw-1:0] s13_addr_o;
318
output  [sw-1:0] s13_sel_o;
319
output                  s13_we_o;
320
output                  s13_cyc_o;
321
output                  s13_stb_o;
322
input                   s13_ack_i;
323
input                   s13_err_i;
324
input                   s13_rty_i;
325
 
326
// Slave 14 Interface
327
input   [dw-1:0] s14_data_i;
328
output  [dw-1:0] s14_data_o;
329
output  [aw-1:0] s14_addr_o;
330
output  [sw-1:0] s14_sel_o;
331
output                  s14_we_o;
332
output                  s14_cyc_o;
333
output                  s14_stb_o;
334
input                   s14_ack_i;
335
input                   s14_err_i;
336
input                   s14_rty_i;
337
 
338
// Slave 15 Interface
339
input   [dw-1:0] s15_data_i;
340
output  [dw-1:0] s15_data_o;
341
output  [aw-1:0] s15_addr_o;
342
output  [sw-1:0] s15_sel_o;
343
output                  s15_we_o;
344
output                  s15_cyc_o;
345
output                  s15_stb_o;
346
input                   s15_ack_i;
347
input                   s15_err_i;
348
input                   s15_rty_i;
349
 
350
////////////////////////////////////////////////////////////////////
351
//
352
// Local Wires
353
//
354
 
355
reg     [dw-1:0] wb_data_o;
356
reg                     wb_ack_o;
357
reg                     wb_err_o;
358
reg                     wb_rty_o;
359
wire    [3:0]            slv_sel;
360
 
361
////////////////////////////////////////////////////////////////////
362
//
363
// Select logic
364
//
365
 
366
assign slv_sel = wb_addr_i[aw-1:aw-4];
367
 
368
////////////////////////////////////////////////////////////////////
369
//
370
// Address & Data Pass
371
//
372
 
373
assign s0_addr_o = wb_addr_i;
374
assign s1_addr_o = wb_addr_i;
375
assign s2_addr_o = wb_addr_i;
376
assign s3_addr_o = wb_addr_i;
377
assign s4_addr_o = wb_addr_i;
378
assign s5_addr_o = wb_addr_i;
379
assign s6_addr_o = wb_addr_i;
380
assign s7_addr_o = wb_addr_i;
381
assign s8_addr_o = wb_addr_i;
382
assign s9_addr_o = wb_addr_i;
383
assign s10_addr_o = wb_addr_i;
384
assign s11_addr_o = wb_addr_i;
385
assign s12_addr_o = wb_addr_i;
386
assign s13_addr_o = wb_addr_i;
387
assign s14_addr_o = wb_addr_i;
388
assign s15_addr_o = wb_addr_i;
389
 
390
assign s0_sel_o = wb_sel_i;
391
assign s1_sel_o = wb_sel_i;
392
assign s2_sel_o = wb_sel_i;
393
assign s3_sel_o = wb_sel_i;
394
assign s4_sel_o = wb_sel_i;
395
assign s5_sel_o = wb_sel_i;
396
assign s6_sel_o = wb_sel_i;
397
assign s7_sel_o = wb_sel_i;
398
assign s8_sel_o = wb_sel_i;
399
assign s9_sel_o = wb_sel_i;
400
assign s10_sel_o = wb_sel_i;
401
assign s11_sel_o = wb_sel_i;
402
assign s12_sel_o = wb_sel_i;
403
assign s13_sel_o = wb_sel_i;
404
assign s14_sel_o = wb_sel_i;
405
assign s15_sel_o = wb_sel_i;
406
 
407
assign s0_data_o = wb_data_i;
408
assign s1_data_o = wb_data_i;
409
assign s2_data_o = wb_data_i;
410
assign s3_data_o = wb_data_i;
411
assign s4_data_o = wb_data_i;
412
assign s5_data_o = wb_data_i;
413
assign s6_data_o = wb_data_i;
414
assign s7_data_o = wb_data_i;
415
assign s8_data_o = wb_data_i;
416
assign s9_data_o = wb_data_i;
417
assign s10_data_o = wb_data_i;
418
assign s11_data_o = wb_data_i;
419
assign s12_data_o = wb_data_i;
420
assign s13_data_o = wb_data_i;
421
assign s14_data_o = wb_data_i;
422
assign s15_data_o = wb_data_i;
423
 
424
always @(slv_sel or s0_data_i or s1_data_i or s2_data_i or s3_data_i or
425
        s4_data_i or s5_data_i or s6_data_i or s7_data_i or s8_data_i or
426
        s9_data_i or s10_data_i or s11_data_i or s12_data_i or
427
        s13_data_i or s14_data_i or s15_data_i)
428
        case(slv_sel)   // synopsys parallel_case
429
           4'd0:        wb_data_o = s0_data_i;
430
           4'd1:        wb_data_o = s1_data_i;
431
           4'd2:        wb_data_o = s2_data_i;
432
           4'd3:        wb_data_o = s3_data_i;
433
           4'd4:        wb_data_o = s4_data_i;
434
           4'd5:        wb_data_o = s5_data_i;
435
           4'd6:        wb_data_o = s6_data_i;
436
           4'd7:        wb_data_o = s7_data_i;
437
           4'd8:        wb_data_o = s8_data_i;
438
           4'd9:        wb_data_o = s9_data_i;
439
           4'd10:       wb_data_o = s10_data_i;
440
           4'd11:       wb_data_o = s11_data_i;
441
           4'd12:       wb_data_o = s12_data_i;
442
           4'd13:       wb_data_o = s13_data_i;
443
           4'd14:       wb_data_o = s14_data_i;
444
           4'd15:       wb_data_o = s15_data_i;
445
           default:     wb_data_o = {dw{1'bx}};
446
        endcase
447
 
448
////////////////////////////////////////////////////////////////////
449
//
450
// Control Signal Pass
451
//
452
 
453
assign s0_we_o = wb_we_i;
454
assign s1_we_o = wb_we_i;
455
assign s2_we_o = wb_we_i;
456
assign s3_we_o = wb_we_i;
457
assign s4_we_o = wb_we_i;
458
assign s5_we_o = wb_we_i;
459
assign s6_we_o = wb_we_i;
460
assign s7_we_o = wb_we_i;
461
assign s8_we_o = wb_we_i;
462
assign s9_we_o = wb_we_i;
463
assign s10_we_o = wb_we_i;
464
assign s11_we_o = wb_we_i;
465
assign s12_we_o = wb_we_i;
466
assign s13_we_o = wb_we_i;
467
assign s14_we_o = wb_we_i;
468
assign s15_we_o = wb_we_i;
469
 
470
assign s0_cyc_o = (wb_cyc_i & !wb_stb_i) ? s0_cyc_o : ((slv_sel==4'd0) ? wb_cyc_i : 1'b0);
471
assign s1_cyc_o = (wb_cyc_i & !wb_stb_i) ? s1_cyc_o : ((slv_sel==4'd1) ? wb_cyc_i : 1'b0);
472
assign s2_cyc_o = (wb_cyc_i & !wb_stb_i) ? s2_cyc_o : ((slv_sel==4'd2) ? wb_cyc_i : 1'b0);
473
assign s3_cyc_o = (wb_cyc_i & !wb_stb_i) ? s3_cyc_o : ((slv_sel==4'd3) ? wb_cyc_i : 1'b0);
474
assign s4_cyc_o = (wb_cyc_i & !wb_stb_i) ? s4_cyc_o : ((slv_sel==4'd4) ? wb_cyc_i : 1'b0);
475
assign s5_cyc_o = (wb_cyc_i & !wb_stb_i) ? s5_cyc_o : ((slv_sel==4'd5) ? wb_cyc_i : 1'b0);
476
assign s6_cyc_o = (wb_cyc_i & !wb_stb_i) ? s6_cyc_o : ((slv_sel==4'd6) ? wb_cyc_i : 1'b0);
477
assign s7_cyc_o = (wb_cyc_i & !wb_stb_i) ? s7_cyc_o : ((slv_sel==4'd7) ? wb_cyc_i : 1'b0);
478
assign s8_cyc_o = (wb_cyc_i & !wb_stb_i) ? s8_cyc_o : ((slv_sel==4'd8) ? wb_cyc_i : 1'b0);
479
assign s9_cyc_o = (wb_cyc_i & !wb_stb_i) ? s9_cyc_o : ((slv_sel==4'd9) ? wb_cyc_i : 1'b0);
480
assign s10_cyc_o = (wb_cyc_i & !wb_stb_i) ? s10_cyc_o : ((slv_sel==4'd10) ? wb_cyc_i : 1'b0);
481
assign s11_cyc_o = (wb_cyc_i & !wb_stb_i) ? s11_cyc_o : ((slv_sel==4'd11) ? wb_cyc_i : 1'b0);
482
assign s12_cyc_o = (wb_cyc_i & !wb_stb_i) ? s12_cyc_o : ((slv_sel==4'd12) ? wb_cyc_i : 1'b0);
483
assign s13_cyc_o = (wb_cyc_i & !wb_stb_i) ? s13_cyc_o : ((slv_sel==4'd13) ? wb_cyc_i : 1'b0);
484
assign s14_cyc_o = (wb_cyc_i & !wb_stb_i) ? s14_cyc_o : ((slv_sel==4'd14) ? wb_cyc_i : 1'b0);
485
assign s15_cyc_o = (wb_cyc_i & !wb_stb_i) ? s15_cyc_o : ((slv_sel==4'd15) ? wb_cyc_i : 1'b0);
486
 
487
assign s0_stb_o = (slv_sel==4'd0) ? wb_stb_i : 1'b0;
488
assign s1_stb_o = (slv_sel==4'd1) ? wb_stb_i : 1'b0;
489
assign s2_stb_o = (slv_sel==4'd2) ? wb_stb_i : 1'b0;
490
assign s3_stb_o = (slv_sel==4'd3) ? wb_stb_i : 1'b0;
491
assign s4_stb_o = (slv_sel==4'd4) ? wb_stb_i : 1'b0;
492
assign s5_stb_o = (slv_sel==4'd5) ? wb_stb_i : 1'b0;
493
assign s6_stb_o = (slv_sel==4'd6) ? wb_stb_i : 1'b0;
494
assign s7_stb_o = (slv_sel==4'd7) ? wb_stb_i : 1'b0;
495
assign s8_stb_o = (slv_sel==4'd8) ? wb_stb_i : 1'b0;
496
assign s9_stb_o = (slv_sel==4'd9) ? wb_stb_i : 1'b0;
497
assign s10_stb_o = (slv_sel==4'd10) ? wb_stb_i : 1'b0;
498
assign s11_stb_o = (slv_sel==4'd11) ? wb_stb_i : 1'b0;
499
assign s12_stb_o = (slv_sel==4'd12) ? wb_stb_i : 1'b0;
500
assign s13_stb_o = (slv_sel==4'd13) ? wb_stb_i : 1'b0;
501
assign s14_stb_o = (slv_sel==4'd14) ? wb_stb_i : 1'b0;
502
assign s15_stb_o = (slv_sel==4'd15) ? wb_stb_i : 1'b0;
503
 
504
always @(slv_sel or s0_ack_i or s1_ack_i or s2_ack_i or s3_ack_i or
505
        s4_ack_i or s5_ack_i or s6_ack_i or s7_ack_i or s8_ack_i or
506
        s9_ack_i or s10_ack_i or s11_ack_i or s12_ack_i or
507
        s13_ack_i or s14_ack_i or s15_ack_i)
508
        case(slv_sel)   // synopsys parallel_case
509
           4'd0:        wb_ack_o = s0_ack_i;
510
           4'd1:        wb_ack_o = s1_ack_i;
511
           4'd2:        wb_ack_o = s2_ack_i;
512
           4'd3:        wb_ack_o = s3_ack_i;
513
           4'd4:        wb_ack_o = s4_ack_i;
514
           4'd5:        wb_ack_o = s5_ack_i;
515
           4'd6:        wb_ack_o = s6_ack_i;
516
           4'd7:        wb_ack_o = s7_ack_i;
517
           4'd8:        wb_ack_o = s8_ack_i;
518
           4'd9:        wb_ack_o = s9_ack_i;
519
           4'd10:       wb_ack_o = s10_ack_i;
520
           4'd11:       wb_ack_o = s11_ack_i;
521
           4'd12:       wb_ack_o = s12_ack_i;
522
           4'd13:       wb_ack_o = s13_ack_i;
523
           4'd14:       wb_ack_o = s14_ack_i;
524
           4'd15:       wb_ack_o = s15_ack_i;
525
           default:     wb_ack_o = 1'b0;
526
        endcase
527
 
528
always @(slv_sel or s0_err_i or s1_err_i or s2_err_i or s3_err_i or
529
        s4_err_i or s5_err_i or s6_err_i or s7_err_i or s8_err_i or
530
        s9_err_i or s10_err_i or s11_err_i or s12_err_i or
531
        s13_err_i or s14_err_i or s15_err_i)
532
        case(slv_sel)   // synopsys parallel_case
533
           4'd0:        wb_err_o = s0_err_i;
534
           4'd1:        wb_err_o = s1_err_i;
535
           4'd2:        wb_err_o = s2_err_i;
536
           4'd3:        wb_err_o = s3_err_i;
537
           4'd4:        wb_err_o = s4_err_i;
538
           4'd5:        wb_err_o = s5_err_i;
539
           4'd6:        wb_err_o = s6_err_i;
540
           4'd7:        wb_err_o = s7_err_i;
541
           4'd8:        wb_err_o = s8_err_i;
542
           4'd9:        wb_err_o = s9_err_i;
543
           4'd10:       wb_err_o = s10_err_i;
544
           4'd11:       wb_err_o = s11_err_i;
545
           4'd12:       wb_err_o = s12_err_i;
546
           4'd13:       wb_err_o = s13_err_i;
547
           4'd14:       wb_err_o = s14_err_i;
548
           4'd15:       wb_err_o = s15_err_i;
549
           default:     wb_err_o = 1'b0;
550
        endcase
551
 
552
always @(slv_sel or s0_rty_i or s1_rty_i or s2_rty_i or s3_rty_i or
553
        s4_rty_i or s5_rty_i or s6_rty_i or s7_rty_i or s8_rty_i or
554
        s9_rty_i or s10_rty_i or s11_rty_i or s12_rty_i or
555
        s13_rty_i or s14_rty_i or s15_rty_i)
556
        case(slv_sel)   // synopsys parallel_case
557
           4'd0:        wb_rty_o = s0_rty_i;
558
           4'd1:        wb_rty_o = s1_rty_i;
559
           4'd2:        wb_rty_o = s2_rty_i;
560
           4'd3:        wb_rty_o = s3_rty_i;
561
           4'd4:        wb_rty_o = s4_rty_i;
562
           4'd5:        wb_rty_o = s5_rty_i;
563
           4'd6:        wb_rty_o = s6_rty_i;
564
           4'd7:        wb_rty_o = s7_rty_i;
565
           4'd8:        wb_rty_o = s8_rty_i;
566
           4'd9:        wb_rty_o = s9_rty_i;
567
           4'd10:       wb_rty_o = s10_rty_i;
568
           4'd11:       wb_rty_o = s11_rty_i;
569
           4'd12:       wb_rty_o = s12_rty_i;
570
           4'd13:       wb_rty_o = s13_rty_i;
571
           4'd14:       wb_rty_o = s14_rty_i;
572
           4'd15:       wb_rty_o = s15_rty_i;
573
           default:     wb_rty_o = 1'b0;
574
        endcase
575
 
576
endmodule
577
 
578
 

powered by: WebSVN 2.1.0

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