source: XOpenSparcT1/trunk/T1-common/srams/regfile_1w_4r.v @ 6

Revision 6, 1.5 KB checked in by pntsvt00, 13 years ago (diff)

versione iniziale opensparc

Line 
1module regfile_1w_4r(
2   input clk,
3   
4   input  [71:0] din,
5   input  [ 7:0] wraddr,
6   input         wren,
7   input  [ 7:0] rdaddr0,
8   input  [ 7:0] rdaddr1,
9   input  [ 7:0] rdaddr2,
10   input  [ 7:0] rdaddr3,
11   input         rd0,
12   input         rd1,
13   input         rd2,
14   input         rd3,
15
16   output [71:0] dout0,
17   output [71:0] dout1,
18   output [71:0] dout2,
19   output [71:0] dout3
20);
21
22reg [7:0] rdaddr0_d;
23reg [7:0] rdaddr1_d;
24reg [7:0] rdaddr2_d;
25reg [7:0] rdaddr3_d;
26reg       rd0_d;
27reg       rd1_d;
28reg       rd2_d;
29reg       rd3_d;
30
31always @(posedge clk)
32   begin
33      rdaddr0_d<=rdaddr0;
34      rdaddr1_d<=rdaddr1;
35      rdaddr2_d<=rdaddr2;
36      rdaddr3_d<=rdaddr3;
37      rd0_d<=rd0;
38      rd1_d<=rd1;
39      rd2_d<=rd2;
40      rd3_d<=rd3;
41   end
42
43regfile1 regfile_inst0(
44   .wrclock(clk),
45   .rdclock(~clk),
46 
47   .data(din),
48   .rdaddress(rdaddr0_d),
49   .rden(rd0_d),
50   .wraddress(wraddr),
51   .wren(wren),
52   .q(dout0)
53);
54
55regfile1 regfile_inst1(
56   .wrclock(clk),
57   .rdclock(~clk),
58 
59   .data(din),
60   .rdaddress(rdaddr1_d),
61   .rden(rd1_d),
62   .wraddress(wraddr),
63   .wren(wren),
64   .q(dout1)
65);
66
67regfile1 regfile_inst2(
68   .wrclock(clk),
69   .rdclock(~clk),
70 
71   .data(din),
72   .rdaddress(rdaddr2_d),
73   .rden(rd2_d),
74   .wraddress(wraddr),
75   .wren(wren),
76   .q(dout2)
77);
78
79regfile1 regfile_inst3(
80   .wrclock(clk),
81   .rdclock(~clk),
82 
83   .data(din),
84   .rdaddress(rdaddr3_d),
85   .rden(rd3_d),
86   .wraddress(wraddr),
87   .wren(wren),
88   .q(dout3)
89);
90
91endmodule
Note: See TracBrowser for help on using the repository browser.