-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuffer_IDtoEX.sv
More file actions
50 lines (46 loc) · 1.69 KB
/
buffer_IDtoEX.sv
File metadata and controls
50 lines (46 loc) · 1.69 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
//`timescale 1ns / 1ps
//BUFFER OF INSTRUCTION DECODE TO EXECUTION
module buffer_IDtoEX #(parameter N=32)
(input logic clk,rst,
input logic ALUSrc_next,memWrite_next,memRead_next,memToReg_next,regWrite_next,
input logic [1:0] ALUOp_next,
input logic [3:0] instructionALUCtr_next,
input logic [4:0] writeReg_next,readReg1_next,readReg2_next,
input logic [N*2-1:0] data1_next,data2_next,immGen_next,
output logic ALUSrc_actual,memWrite_actual,memRead_actual,memToReg_actual,regWrite_actual,
output logic [1:0] ALUOp_actual,
output logic [3:0] instructionALUCtr_actual,
output logic [4:0] writeReg_actual,readReg1_actual,readReg2_actual,
output logic [N*2-1:0] data1_actual,data2_actual,immGen_actual);
always_ff @(posedge clk)
if(rst) begin
ALUSrc_actual<=0;
memWrite_actual<=0;
memRead_actual<=0;
memToReg_actual<=0;
regWrite_actual<=0;
ALUOp_actual<=0;
instructionALUCtr_actual<=0;
writeReg_actual<=0;
readReg1_actual<=0;
readReg2_actual<=0;
data1_actual<=0;
data2_actual<=0;
immGen_actual<=0;
end
else begin
ALUSrc_actual<=ALUSrc_next;
memWrite_actual<=memWrite_next;
memRead_actual<=memRead_next;
memToReg_actual<=memToReg_next;
regWrite_actual<=regWrite_next;
ALUOp_actual<=ALUOp_next;
instructionALUCtr_actual<=instructionALUCtr_next;
writeReg_actual<=writeReg_next;
readReg1_actual<=readReg1_next;
readReg2_actual<=readReg2_next;
data1_actual<=data1_next;
data2_actual<=data2_next;
immGen_actual<=immGen_next;
end
endmodule