Files
kernels/rtl/VX_register_file.v
2019-03-21 02:23:10 -04:00

41 lines
726 B
Verilog

module VX_register_file (
input wire clk,
input wire in_write_register,
input wire[4:0] in_rd,
input wire[31:0] in_data,
input wire[4:0] in_src1,
input wire[4:0] in_src2,
output wire[31:0] out_src1_data,
output wire[31:0] out_src2_data
);
reg[31:0] registers[31:0];
wire[31:0] write_data;
wire[4:0] write_register;
wire write_enable;
assign write_data = in_data;
assign write_register = in_rd;
assign write_enable = in_write_register && (in_rd != 5'h0);
always @(posedge clk) begin
if(write_enable) begin
registers[write_register] <= write_data;
end
end
assign out_src1_data = registers[in_src1];
assign out_src2_data = registers[in_src2];
endmodule