blob: e2bcc0966adb4b2514c19fff681b1d97d230c296 (
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
26
27
28
29
30
31
|
`include "core/uarch.sv"
module core_reg_file
(
input logic clk,
input reg_index rd_index,
wr_index,
input logic wr_enable,
input word wr_value,
output word rd_value
);
// Ver comentario en uarch.sv
word file[30];
word q, wr_value_hold;
logic overwrite_hold;
assign rd_value = overwrite_hold ? wr_value_hold : q;
always @(posedge clk) begin
if(wr_enable) begin
file[rd_index] <= wr_value;
wr_value_hold <= wr_value;
end
q <= file[rd_index];
overwrite_hold <= wr_enable & (rd_index == wr_index);
end
endmodule
|