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

Subversion Repositories thor

[/] [thor/] [trunk/] [FT64v5/] [rtl/] [twoway/] [FT64_regfile2w6r_oc.v] - Blame information for rev 49

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

Line No. Rev Author Line
1 48 robfinch
`timescale 1ns / 1ps
2
// ============================================================================
3
//        __
4
//   \\__/ o\    (C) 2013-2018  Robert Finch, Waterloo
5
//    \  __ /    All rights reserved.
6
//     \/_//     robfinch<remove>@finitron.ca
7
//       ||
8
//
9
// This source file is free software: you can redistribute it and/or modify 
10
// it under the terms of the GNU Lesser General Public License as published 
11
// by the Free Software Foundation, either version 3 of the License, or     
12
// (at your option) any later version.                                      
13
//                                                                          
14
// This source file is distributed in the hope that it will be useful,      
15
// but WITHOUT ANY WARRANTY; without even the implied warranty of           
16
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            
17
// GNU General Public License for more details.                             
18
//                                                                          
19
// You should have received a copy of the GNU General Public License        
20
// along with this program.  If not, see <http://www.gnu.org/licenses/>.    
21
//
22
//
23
// Register file with two write ports and six read ports.
24
// ============================================================================
25
//
26 49 robfinch
`include "FT64_config.vh"
27 48 robfinch
 
28
module FT64_regfileRam_sim(clka, ena, wea, addra, dina, clkb, enb, addrb, doutb);
29 49 robfinch
parameter WID=64;
30 48 robfinch
parameter RBIT = 11;
31
input clka;
32
input ena;
33
input [8:0] wea;
34
input [RBIT:0] addra;
35
input [WID-1:0] dina;
36
input clkb;
37
input enb;
38
input [RBIT:0] addrb;
39
output [WID-1:0] doutb;
40
 
41
integer n;
42
(* RAM_STYLE="BLOCK" *)
43
reg [64:0] mem [0:4095];
44
reg [RBIT:0] raddrb;
45
 
46
initial begin
47
        for (n = 0; n < 4096; n = n + 1)
48
                mem[n] = 0;
49
end
50
 
51
always @(posedge clka) if (ena & wea[0]) mem[addra][7:0] <= dina[7:0];
52
always @(posedge clka) if (ena & wea[1]) mem[addra][15:8] <= dina[15:8];
53
always @(posedge clka) if (ena & wea[2]) mem[addra][23:16] <= dina[23:16];
54
always @(posedge clka) if (ena & wea[3]) mem[addra][31:24] <= dina[31:24];
55
always @(posedge clka) if (ena & wea[4]) mem[addra][39:32] <= dina[39:32];
56
always @(posedge clka) if (ena & wea[5]) mem[addra][47:40] <= dina[47:40];
57
always @(posedge clka) if (ena & wea[6]) mem[addra][55:48] <= dina[55:48];
58
always @(posedge clka) if (ena & wea[7]) mem[addra][63:56] <= dina[63:56];
59
always @(posedge clka) if (ena & wea[8]) mem[addra][64] <= dina[64];
60
 
61
always @(posedge clkb)
62
        raddrb <= addrb;
63
assign doutb = mem[raddrb];
64
 
65
endmodule
66
 
67
module FT64_regfile2w6r_oc(clk4x, clk, wr0, wr1, we0, we1, wa0, wa1, i0, i1,
68
        rclk, ra0, ra1, ra2, ra3, ra4, ra5,
69
        o0, o1, o2, o3, o4, o5);
70
parameter WID=64;
71
parameter RBIT = 11;
72
input clk4x;
73
input clk;
74
input wr0;
75
input wr1;
76
input [8:0] we0;
77
input [8:0] we1;
78
input [RBIT:0] wa0;
79
input [RBIT:0] wa1;
80
input [WID-1:0] i0;
81
input [WID-1:0] i1;
82
input rclk;
83
input [RBIT:0] ra0;
84
input [RBIT:0] ra1;
85
input [RBIT:0] ra2;
86
input [RBIT:0] ra3;
87
input [RBIT:0] ra4;
88
input [RBIT:0] ra5;
89
output [WID-1:0] o0;
90
output [WID-1:0] o1;
91
output [WID-1:0] o2;
92
output [WID-1:0] o3;
93
output [WID-1:0] o4;
94
output [WID-1:0] o5;
95
 
96
reg wr;
97
reg [RBIT:0] wa;
98
reg [WID-1:0] i;
99
reg [7:0] we;
100
wire [WID-1:0] o00, o01, o02, o03, o04, o05;
101
reg wr1x;
102
reg [RBIT:0] wa1x;
103
reg [WID-1:0] i1x;
104
reg [7:0] we1x;
105
 
106
integer n;
107
 
108
`ifdef SIM
109
FT64_regfileRam_sim urf10 (
110
  .clka(clk4x),
111
  .ena(wr),
112
  .wea(we),
113
  .addra(wa),
114
  .dina(i),
115
  .clkb(rclk),
116
  .enb(1'b1),
117
  .addrb(ra0),
118
  .doutb(o00)
119
);
120
 
121
FT64_regfileRam_sim urf11 (
122
  .clka(clk4x),
123
  .ena(wr),
124
  .wea(we),
125
  .addra(wa),
126
  .dina(i),
127
  .clkb(rclk),
128
  .enb(1'b1),
129
  .addrb(ra1),
130
  .doutb(o01)
131
);
132
 
133
FT64_regfileRam_sim urf12 (
134
  .clka(clk4x),
135
  .ena(wr),
136
  .wea(we),
137
  .addra(wa),
138
  .dina(i),
139
  .clkb(rclk),
140
  .enb(1'b1),
141
  .addrb(ra2),
142
  .doutb(o02)
143
);
144
 
145
FT64_regfileRam_sim urf13 (
146
  .clka(clk4x),
147
  .ena(wr),
148
  .wea(we),
149
  .addra(wa),
150
  .dina(i),
151
  .clkb(rclk),
152
  .enb(1'b1),
153
  .addrb(ra3),
154
  .doutb(o03)
155
);
156
 
157
FT64_regfileRam_sim urf14 (
158
  .clka(clk4x),
159
  .ena(wr),
160
  .wea(we),
161
  .addra(wa),
162
  .dina(i),
163
  .clkb(rclk),
164
  .enb(1'b1),
165
  .addrb(ra4),
166
  .doutb(o04)
167
);
168
 
169
FT64_regfileRam_sim urf15 (
170
  .clka(clk4x),
171
  .ena(wr),
172
  .wea(we),
173
  .addra(wa),
174
  .dina(i),
175
  .clkb(rclk),
176
  .enb(1'b1),
177
  .addrb(ra5),
178
  .doutb(o05)
179
);
180
`else
181
FT64_regfileRam urf10 (
182
  .clka(clk4x),
183
  .ena(wr),
184
  .wea(we),
185
  .addra(wa),
186
  .dina(i),
187
  .clkb(rclk),
188
  .enb(1'b1),
189
  .addrb(ra0),
190
  .doutb(o00)
191
);
192
 
193
FT64_regfileRam urf11 (
194
  .clka(clk4x),
195
  .ena(wr),
196
  .wea(we),
197
  .addra(wa),
198
  .dina(i),
199
  .clkb(rclk),
200
  .enb(1'b1),
201
  .addrb(ra1),
202
  .doutb(o01)
203
);
204
 
205
FT64_regfileRam urf12 (
206
  .clka(clk4x),
207
  .ena(wr),
208
  .wea(we),
209
  .addra(wa),
210
  .dina(i),
211
  .clkb(rclk),
212
  .enb(1'b1),
213
  .addrb(ra2),
214
  .doutb(o02)
215
);
216
 
217
FT64_regfileRam urf13 (
218
  .clka(clk4x),
219
  .ena(wr),
220
  .wea(we),
221
  .addra(wa),
222
  .dina(i),
223
  .clkb(rclk),
224
  .enb(1'b1),
225
  .addrb(ra3),
226
  .doutb(o03)
227
);
228
 
229
FT64_regfileRam urf14 (
230
  .clka(clk4x),
231
  .ena(wr),
232
  .wea(we),
233
  .addra(wa),
234
  .dina(i),
235
  .clkb(rclk),
236
  .enb(1'b1),
237
  .addrb(ra4),
238
  .doutb(o04)
239
);
240
 
241
FT64_regfileRam urf15 (
242
  .clka(clk4x),
243
  .ena(wr),
244
  .wea(we),
245
  .addra(wa),
246
  .dina(i),
247
  .clkb(rclk),
248
  .enb(1'b1),
249
  .addrb(ra5),
250
  .doutb(o05)
251
);
252
`endif
253
 
254
// The same clock edge that would normally update the register file is the
255
// clock edge that causes the data to disappear for the next cycle. The
256
// data needs to be held onto so that it can update the register file on
257
// the next 4x clock.
258
always @(posedge clk)
259
begin
260
        wr1x <= wr1;
261
        we1x <= we1;
262
        wa1x <= wa1;
263
        i1x <= i1;
264
end
265
 
266
reg wclk2;
267
always @(posedge clk4x)
268
begin
269
        wclk2 <= clk;
270
        if (clk & ~wclk2) begin
271
                wr <= wr0;
272
                we <= we0;
273
                wa <= wa0;
274
                i <= i0;
275
        end
276
        else if (~clk & wclk2) begin
277
                wr <= wr1x;
278
                we <= we1x;
279
                wa <= wa1x;
280
                i <= i1x;
281
        end
282
        else begin
283
                wr <= 1'b0;
284
                we <= 8'h00;
285
                wa <= 'd0;
286
                i <= 'd0;
287
        end
288
end
289
 
290
assign o0[7:0] = ra0[4:0]==5'd0 ? {8{1'b0}} :
291
        (wr1 && we1[0] && (ra0==wa1)) ? i1[7:0] :
292
        (wr0 && we0[0] && (ra0==wa0)) ? i0[7:0] : o00[7:0];
293
assign o0[15:8] = ra0[4:0]==5'd0 ? {8{1'b0}} :
294
        (wr1 && we1[1] && (ra0==wa1)) ? i1[15:8] :
295
        (wr0 && we0[1] && (ra0==wa0)) ? i0[15:8] : o00[15:8];
296
assign o0[23:16] = ra0[4:0]==5'd0 ? {8{1'b0}} :
297
        (wr1 && we1[2] && (ra0==wa1)) ? i1[23:16] :
298
        (wr0 && we0[2] && (ra0==wa0)) ? i0[23:16] : o00[23:16];
299
assign o0[31:24] = ra0[4:0]==5'd0 ? {8{1'b0}} :
300
        (wr1 && we1[3] && (ra0==wa1)) ? i1[31:24] :
301
        (wr0 && we0[3] && (ra0==wa0)) ? i0[31:24] : o00[31:24];
302
assign o0[39:32] = ra0[4:0]==5'd0 ? {8{1'b0}} :
303
        (wr1 && we1[4] && (ra0==wa1)) ? i1[39:32] :
304
        (wr0 && we0[4] && (ra0==wa0)) ? i0[39:32] : o00[39:32];
305
assign o0[47:40] = ra0[4:0]==5'd0 ? {8{1'b0}} :
306
        (wr1 && we1[5] && (ra0==wa1)) ? i1[47:40] :
307
        (wr0 && we0[5] && (ra0==wa0)) ? i0[47:40] : o00[47:40];
308
assign o0[55:48] = ra0[4:0]==5'd0 ? {8{1'b0}} :
309
        (wr1 && we1[6] && (ra0==wa1)) ? i1[55:48] :
310
        (wr0 && we0[6] && (ra0==wa0)) ? i0[55:48] : o00[55:48];
311
assign o0[55:48] = ra0[4:0]==5'd0 ? {8{1'b0}} :
312
        (wr1 && we1[6] && (ra0==wa1)) ? i1[55:48] :
313
        (wr0 && we0[6] && (ra0==wa0)) ? i0[55:48] : o00[55:48];
314
assign o0[63:56] = ra0[4:0]==5'd0 ? {8{1'b0}} :
315
        (wr1 && we1[7] && (ra0==wa1)) ? i1[63:56] :
316
        (wr0 && we0[7] && (ra0==wa0)) ? i0[63:56] : o00[63:56];
317
 
318
assign o1[7:0] = ra1[4:0]==5'd0 ? {8{1'b0}} :
319
        (wr1 && we1[0] && (ra1==wa1)) ? i1[7:0] :
320
        (wr0 && we0[0] && (ra1==wa0)) ? i0[7:0] : o01[7:0];
321
assign o1[15:8] = ra1[4:0]==5'd0 ? {8{1'b0}} :
322
        (wr1 && we1[1] && (ra1==wa1)) ? i1[15:8] :
323
        (wr0 && we0[1] && (ra1==wa0)) ? i0[15:8] : o01[15:8];
324
assign o1[23:16] = ra1[4:0]==5'd0 ? {8{1'b0}} :
325
        (wr1 && we1[2] && (ra1==wa1)) ? i1[23:16] :
326
        (wr0 && we0[2] && (ra1==wa0)) ? i0[23:16] : o01[23:16];
327
assign o1[31:24] = ra1[4:0]==5'd0 ? {8{1'b0}} :
328
        (wr1 && we1[3] && (ra1==wa1)) ? i1[31:24] :
329
        (wr0 && we0[3] && (ra1==wa0)) ? i0[31:24] : o01[31:24];
330
assign o1[39:32] = ra1[4:0]==5'd0 ? {8{1'b0}} :
331
        (wr1 && we1[4] && (ra1==wa1)) ? i1[39:32] :
332
        (wr0 && we0[4] && (ra1==wa0)) ? i0[39:32] : o01[39:32];
333
assign o1[47:40] = ra1[4:0]==5'd0 ? {8{1'b0}} :
334
        (wr1 && we1[5] && (ra1==wa1)) ? i1[47:40] :
335
        (wr0 && we0[5] && (ra1==wa0)) ? i0[47:40] : o01[47:40];
336
assign o1[55:48] = ra1[4:0]==5'd0 ? {8{1'b0}} :
337
        (wr1 && we1[6] && (ra1==wa1)) ? i1[55:48] :
338
        (wr0 && we0[6] && (ra1==wa0)) ? i0[55:48] : o01[55:48];
339
assign o1[55:48] = ra1[4:0]==5'd0 ? {8{1'b0}} :
340
        (wr1 && we1[6] && (ra1==wa1)) ? i1[55:48] :
341
        (wr0 && we0[6] && (ra1==wa0)) ? i0[55:48] : o01[55:48];
342
assign o1[63:56] = ra1[4:0]==5'd0 ? {8{1'b0}} :
343
        (wr1 && we1[7] && (ra1==wa1)) ? i1[63:56] :
344
        (wr0 && we0[7] && (ra1==wa0)) ? i0[63:56] : o01[63:56];
345
 
346
assign o2[7:0] = ra2[4:0]==5'd0 ? {8{1'b0}} :
347
        (wr1 && we1[0] && (ra2==wa1)) ? i1[7:0] :
348
        (wr0 && we0[0] && (ra2==wa0)) ? i0[7:0] : o02[7:0];
349
assign o2[15:8] = ra2[4:0]==5'd0 ? {8{1'b0}} :
350
        (wr1 && we1[1] && (ra2==wa1)) ? i1[15:8] :
351
        (wr0 && we0[1] && (ra2==wa0)) ? i0[15:8] : o02[15:8];
352
assign o2[23:16] = ra2[4:0]==5'd0 ? {8{1'b0}} :
353
        (wr1 && we1[2] && (ra2==wa1)) ? i1[23:16] :
354
        (wr0 && we0[2] && (ra2==wa0)) ? i0[23:16] : o02[23:16];
355
assign o2[31:24] = ra2[4:0]==5'd0 ? {8{1'b0}} :
356
        (wr1 && we1[3] && (ra2==wa1)) ? i1[31:24] :
357
        (wr0 && we0[3] && (ra2==wa0)) ? i0[31:24] : o02[31:24];
358
assign o2[39:32] = ra2[4:0]==5'd0 ? {8{1'b0}} :
359
        (wr1 && we1[4] && (ra2==wa1)) ? i1[39:32] :
360
        (wr0 && we0[4] && (ra2==wa0)) ? i0[39:32] : o02[39:32];
361
assign o2[47:40] = ra2[4:0]==5'd0 ? {8{1'b0}} :
362
        (wr1 && we1[5] && (ra2==wa1)) ? i1[47:40] :
363
        (wr0 && we0[5] && (ra2==wa0)) ? i0[47:40] : o02[47:40];
364
assign o2[55:48] = ra2[4:0]==5'd0 ? {8{1'b0}} :
365
        (wr1 && we1[6] && (ra2==wa1)) ? i1[55:48] :
366
        (wr0 && we0[6] && (ra2==wa0)) ? i0[55:48] : o02[55:48];
367
assign o2[55:48] = ra2[4:0]==5'd0 ? {8{1'b0}} :
368
        (wr1 && we1[6] && (ra2==wa1)) ? i1[55:48] :
369
        (wr0 && we0[6] && (ra2==wa0)) ? i0[55:48] : o02[55:48];
370
assign o2[63:56] = ra2[4:0]==5'd0 ? {8{1'b0}} :
371
        (wr1 && we1[7] && (ra2==wa1)) ? i1[63:56] :
372
        (wr0 && we0[7] && (ra2==wa0)) ? i0[63:56] : o02[63:56];
373
 
374
assign o3[7:0] = ra3[4:0]==5'd0 ? {8{1'b0}} :
375
        (wr1 && we1[0] && (ra3==wa1)) ? i1[7:0] :
376
        (wr0 && we0[0] && (ra3==wa0)) ? i0[7:0] : o03[7:0];
377
assign o3[15:8] = ra3[4:0]==5'd0 ? {8{1'b0}} :
378
        (wr1 && we1[1] && (ra3==wa1)) ? i1[15:8] :
379
        (wr0 && we0[1] && (ra3==wa0)) ? i0[15:8] : o03[15:8];
380
assign o3[23:16] = ra3[4:0]==5'd0 ? {8{1'b0}} :
381
        (wr1 && we1[2] && (ra3==wa1)) ? i1[23:16] :
382
        (wr0 && we0[2] && (ra3==wa0)) ? i0[23:16] : o03[23:16];
383
assign o3[31:24] = ra3[4:0]==5'd0 ? {8{1'b0}} :
384
        (wr1 && we1[3] && (ra3==wa1)) ? i1[31:24] :
385
        (wr0 && we0[3] && (ra3==wa0)) ? i0[31:24] : o03[31:24];
386
assign o3[39:32] = ra3[4:0]==5'd0 ? {8{1'b0}} :
387
        (wr1 && we1[4] && (ra3==wa1)) ? i1[39:32] :
388
        (wr0 && we0[4] && (ra3==wa0)) ? i0[39:32] : o03[39:32];
389
assign o3[47:40] = ra3[4:0]==5'd0 ? {8{1'b0}} :
390
        (wr1 && we1[5] && (ra3==wa1)) ? i1[47:40] :
391
        (wr0 && we0[5] && (ra3==wa0)) ? i0[47:40] : o03[47:40];
392
assign o3[55:48] = ra3[4:0]==5'd0 ? {8{1'b0}} :
393
        (wr1 && we1[6] && (ra3==wa1)) ? i1[55:48] :
394
        (wr0 && we0[6] && (ra3==wa0)) ? i0[55:48] : o03[55:48];
395
assign o3[55:48] = ra3[4:0]==5'd0 ? {8{1'b0}} :
396
        (wr1 && we1[6] && (ra3==wa1)) ? i1[55:48] :
397
        (wr0 && we0[6] && (ra3==wa0)) ? i0[55:48] : o03[55:48];
398
assign o3[63:56] = ra3[4:0]==5'd0 ? {8{1'b0}} :
399
        (wr1 && we1[7] && (ra3==wa1)) ? i1[63:56] :
400
        (wr0 && we0[7] && (ra3==wa0)) ? i0[63:56] : o03[63:56];
401
 
402
assign o4[7:0] = ra4[4:0]==5'd0 ? {8{1'b0}} :
403
        (wr1 && we1[0] && (ra4==wa1)) ? i1[7:0] :
404
        (wr0 && we0[0] && (ra4==wa0)) ? i0[7:0] : o04[7:0];
405
assign o4[15:8] = ra4[4:0]==5'd0 ? {8{1'b0}} :
406
        (wr1 && we1[1] && (ra4==wa1)) ? i1[15:8] :
407
        (wr0 && we0[1] && (ra4==wa0)) ? i0[15:8] : o04[15:8];
408
assign o4[23:16] = ra4[4:0]==5'd0 ? {8{1'b0}} :
409
        (wr1 && we1[2] && (ra4==wa1)) ? i1[23:16] :
410
        (wr0 && we0[2] && (ra4==wa0)) ? i0[23:16] : o04[23:16];
411
assign o4[31:24] = ra4[4:0]==5'd0 ? {8{1'b0}} :
412
        (wr1 && we1[3] && (ra4==wa1)) ? i1[31:24] :
413
        (wr0 && we0[3] && (ra4==wa0)) ? i0[31:24] : o04[31:24];
414
assign o4[39:32] = ra4[4:0]==5'd0 ? {8{1'b0}} :
415
        (wr1 && we1[4] && (ra4==wa1)) ? i1[39:32] :
416
        (wr0 && we0[4] && (ra4==wa0)) ? i0[39:32] : o04[39:32];
417
assign o4[47:40] = ra4[4:0]==5'd0 ? {8{1'b0}} :
418
        (wr1 && we1[5] && (ra4==wa1)) ? i1[47:40] :
419
        (wr0 && we0[5] && (ra4==wa0)) ? i0[47:40] : o04[47:40];
420
assign o4[55:48] = ra4[4:0]==5'd0 ? {8{1'b0}} :
421
        (wr1 && we1[6] && (ra4==wa1)) ? i1[55:48] :
422
        (wr0 && we0[6] && (ra4==wa0)) ? i0[55:48] : o04[55:48];
423
assign o4[55:48] = ra4[4:0]==5'd0 ? {8{1'b0}} :
424
        (wr1 && we1[6] && (ra4==wa1)) ? i1[55:48] :
425
        (wr0 && we0[6] && (ra4==wa0)) ? i0[55:48] : o04[55:48];
426
assign o4[63:56] = ra4[4:0]==5'd0 ? {8{1'b0}} :
427
        (wr1 && we1[7] && (ra4==wa1)) ? i1[63:56] :
428
        (wr0 && we0[7] && (ra4==wa0)) ? i0[63:56] : o04[63:56];
429
 
430
assign o5[7:0] = ra5[4:0]==5'd0 ? {8{1'b0}} :
431
        (wr1 && we1[0] && (ra5==wa1)) ? i1[7:0] :
432
        (wr0 && we0[0] && (ra5==wa0)) ? i0[7:0] : o05[7:0];
433
assign o5[15:8] = ra5[4:0]==5'd0 ? {8{1'b0}} :
434
        (wr1 && we1[1] && (ra5==wa1)) ? i1[15:8] :
435
        (wr0 && we0[1] && (ra5==wa0)) ? i0[15:8] : o05[15:8];
436
assign o5[23:16] = ra5[4:0]==5'd0 ? {8{1'b0}} :
437
        (wr1 && we1[2] && (ra5==wa1)) ? i1[23:16] :
438
        (wr0 && we0[2] && (ra5==wa0)) ? i0[23:16] : o05[23:16];
439
assign o5[31:24] = ra5[4:0]==5'd0 ? {8{1'b0}} :
440
        (wr1 && we1[3] && (ra5==wa1)) ? i1[31:24] :
441
        (wr0 && we0[3] && (ra5==wa0)) ? i0[31:24] : o05[31:24];
442
assign o5[39:32] = ra5[4:0]==5'd0 ? {8{1'b0}} :
443
        (wr1 && we1[4] && (ra5==wa1)) ? i1[39:32] :
444
        (wr0 && we0[4] && (ra5==wa0)) ? i0[39:32] : o05[39:32];
445
assign o5[47:40] = ra5[4:0]==5'd0 ? {8{1'b0}} :
446
        (wr1 && we1[5] && (ra5==wa1)) ? i1[47:40] :
447
        (wr0 && we0[5] && (ra5==wa0)) ? i0[47:40] : o05[47:40];
448
assign o5[55:48] = ra5[4:0]==5'd0 ? {8{1'b0}} :
449
        (wr1 && we1[6] && (ra5==wa1)) ? i1[55:48] :
450
        (wr0 && we0[6] && (ra5==wa0)) ? i0[55:48] : o05[55:48];
451
assign o5[55:48] = ra5[4:0]==5'd0 ? {8{1'b0}} :
452
        (wr1 && we1[6] && (ra5==wa1)) ? i1[55:48] :
453
        (wr0 && we0[6] && (ra5==wa0)) ? i0[55:48] : o05[55:48];
454
assign o5[63:56] = ra5[4:0]==5'd0 ? {8{1'b0}} :
455
        (wr1 && we1[7] && (ra5==wa1)) ? i1[63:56] :
456
        (wr0 && we0[7] && (ra5==wa0)) ? i0[63:56] : o05[63:56];
457
/*
458
assign o5 = ra5[4:0]==5'd0 ? {WID{1'b0}} :
459
    (wr1 && (ra5==wa1)) ? i1 :
460
    (wr0 && (ra5==wa0)) ? i0 : o05;
461
 
462
*/
463
endmodule
464
 

powered by: WebSVN 2.1.0

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