-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathForwarding_Unit.v
More file actions
44 lines (37 loc) · 1.04 KB
/
Copy pathForwarding_Unit.v
File metadata and controls
44 lines (37 loc) · 1.04 KB
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
module Forwarding_Unit (
input wire [4:0] reg_RS1,
input wire [4:0] reg_RS2,
input wire [4:0] ex_mem_reg_RD,
input wire [4:0] mem_wb_reg_RD,
input wire ex_mem_regwrite,
input wire mem_wb_regwrite,
output reg [1:0] fwd_A,
output reg [1:0] fwd_B
);
always@(*) begin
if((ex_mem_regwrite && (ex_mem_reg_RD != 0))||(mem_wb_regwrite && (mem_wb_reg_RD != 0))) begin
if(ex_mem_reg_RD == reg_RS1) begin
fwd_A = 2'b10;
end
else if(mem_wb_reg_RD == reg_RS1) begin
fwd_A = 2'b01;
end
else begin
fwd_A = 2'b00;
end
if(ex_mem_reg_RD == reg_RS2) begin
fwd_B = 2'b10;
end
else if(mem_wb_reg_RD == reg_RS2) begin
fwd_B = 2'b01;
end
else begin
fwd_B = 2'b00;
end
end
else begin
fwd_A = 2'b00;
fwd_B = 2'b00;
end
end
endmodule