-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRegFile.v
36 lines (31 loc) · 897 Bytes
/
RegFile.v
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
32
33
34
35
36
module RegFile(readA, readB,
addrA, addrB, addrWrite, writeData, clk, rst, RegWrite);
input clk, rst, RegWrite;
input [4:0] addrA, addrB, addrWrite;
input [31:0] writeData;
output reg [31:0] readA, readB;
reg [31:0] register_file [31:0];//having 32 registers
always @ (posedge clk or negedge rst)
begin
if (!rst)//flushing data
begin
register_file[0] <= 'd 15;
register_file[1] <= 'd 20;
register_file[2] <= 'd 4;
register_file[3] <= 'd 3;
register_file[4] <= 'd 45;
register_file[10] <= 'd 69;
end
else begin
if (RegWrite)
register_file[addrWrite] <= writeData;
else
register_file[addrWrite] <= register_file[addrWrite];
end
end
always @ (*)
begin
readA = register_file[addrA];
readB = register_file[addrB];
end
endmodule