-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathregfile.sv
56 lines (47 loc) · 1.23 KB
/
regfile.sv
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/*
Currently 2-write 3-read mode
*/
module regfile (
input [2:0] num_read0_in,
input [2:0] num_read1_in,
input [2:0] num_read2_in,
/*input [2:0] num_read3_in,
input [2:0] num_read4_in,
input [2:0] num_read5_in,
*/
input [2:0] num_write0_in,
input [2:0] num_write1_in,
input write0,
input write1,
input [15:0] data_write0_in,
input [15:0] data_write1_in,
//input rst, //Consider this later
input clk,
output reg [15:0] data_read0_out,
output reg [15:0] data_read1_out,
output reg [15:0] data_read2_out
/*output [15:0] data_read3_out,
output [15:0] data_read4_out,
output [15:0] data_read5_out
*/
);
reg [15:0] regs [7:0];
always @(*) begin
data_read0_out=regs[num_read0_in];
data_read1_out=regs[num_read1_in];
data_read2_out=regs[num_read2_in];
/*
data_read3_out=regs[num_read3_in];
data_read4_out=regs[num_read4_in];
data_read5_out=regs[num_read5_in];
*/
end
always @(posedge clk) begin
if (write0) begin
regs[num_write0_in]=data_write0_in;
end
if (write1) begin
regs[num_write1_in]=data_write1_in;
end
end
endmodule