-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEX_MEM.v
More file actions
89 lines (83 loc) · 2.31 KB
/
EX_MEM.v
File metadata and controls
89 lines (83 loc) · 2.31 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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
module EX_MEM (
input iClk,
input iRstN,
input iFlush,
// Control signals in
input iLui,
input iMemRd,
input iMemWr,
input iMemtoReg,
input iRegWrite,
input iBranch,
input iJump,
input iPcSrc,
// Data signals in
input [31:0] iAluOut,
input iAluZero,
input [31:0] iRs2Data,
input [31:0] iImm,
input [31:0] iPcPlus4,
input [31:0] iPC,
input [2:0] iFunct3,
input [4:0] iRd,
input [4:0] iRs2,
// Control signals out
output reg oLui,
output reg oMemRd,
output reg oMemWr,
output reg oMemtoReg,
output reg oRegWrite,
output reg oBranch,
output reg oJump,
output reg oPcSrc,
// Data signals out
output reg [31:0] oAluOut,
output reg oAluZero,
output reg [31:0] oRs2Data,
output reg [31:0] oImm,
output reg [31:0] oPcPlus4,
output reg [31:0] oPC,
output reg [2:0] oFunct3,
output reg [4:0] oRd,
output reg [4:0] oRs2
);
always @(posedge iClk or negedge iRstN) begin
if (!iRstN || iFlush) begin
oLui <= 1'b0;
oMemRd <= 1'b0;
oMemWr <= 1'b0;
oMemtoReg <= 1'b0;
oRegWrite <= 1'b0;
oBranch <= 1'b0;
oJump <= 1'b0;
oPcSrc <= 1'b0;
oAluOut <= 32'b0;
oAluZero <= 1'b0;
oRs2Data <= 32'b0;
oImm <= 32'b0;
oPcPlus4 <= 32'b0;
oPC <= 32'b0;
oFunct3 <= 3'b0;
oRd <= 5'b0;
oRs2 <= 5'b0;
end else begin
oLui <= iLui;
oMemRd <= iMemRd;
oMemWr <= iMemWr;
oMemtoReg <= iMemtoReg;
oRegWrite <= iRegWrite;
oBranch <= iBranch;
oJump <= iJump;
oPcSrc <= iPcSrc;
oAluOut <= iAluOut;
oAluZero <= iAluZero;
oRs2Data <= iRs2Data;
oImm <= iImm;
oPcPlus4 <= iPcPlus4;
oPC <= iPC;
oFunct3 <= iFunct3;
oRd <= iRd;
oRs2 <= iRs2;
end
end
endmodule