blob: 5142a69f68b36812da2175e2d7b60e1d9155f31a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
module register_file (
input clk, rst, we,
input [4:0] rs1, rs2, rd,
input [31:0] rd_data,
output reg [31:0] rs1_data, rs2_data
);
reg [31:0] registers[31:1];
integer i;
always @(posedge clk or rst) begin
if (rst) begin
for (i = 1; i < 32; i = i + 1)
registers[i] <= 32'b0;
end else begin
rs1_data = (rs1 == 0) ? 32'b0 : registers[rs1];
rs2_data = (rs2 == 0) ? 32'b0 : registers[rs2];
if (we && (rd != 0)) begin
registers[rd] <= rd_data;
end
end
end
endmodule
|