-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathControl_Unit.v
76 lines (66 loc) · 1.51 KB
/
Control_Unit.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
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
module control_unit(opcode, ALUSrc, MemtoReg, Reg_write, mem_read, mem_write, branch, ALUOp);
input [6:0] opcode;
output reg ALUSrc;
output reg MemtoReg;
output reg Reg_write;
output reg mem_read;
output reg mem_write;
output reg branch;
output reg[1:0] ALUOp;
//reg f0;reg f1;reg f2;
always @(opcode)
begin
casex(opcode)
//R-type instruction
7'b0110011: begin
ALUSrc=1'b0;
MemtoReg=1'b0;
Reg_write=1'b1;
mem_read=1'b0;
mem_write=1'b0;
branch=1'b0;
ALUOp=2'b10;
end
//load instruction
7'b0000011: begin
ALUSrc=1'b1;
MemtoReg=1'b1;
Reg_write=1'b1;
mem_read=1'b1;
mem_write=1'b0;
branch=1'b0;
ALUOp=2'b00;
end
//store double
7'b0100011: begin
ALUSrc=1'b1;
MemtoReg=1'b0;
Reg_write=1'b0;
mem_read=1'b0;
mem_write=1'b1;
branch=1'b0;
ALUOp=2'b00;
end
//beq instr
7'b1100011: begin
ALUSrc=1'b0;
MemtoReg=1'b0;
Reg_write=1'b0;
mem_read=1'b0;
mem_write=1'b0;
branch=1'b1;
ALUOp=2'b01;
end
default:begin
$display("\nWrong input hence values will be dont cares");
ALUSrc=1'bx;
MemtoReg=1'bx;
Reg_write=1'bx;
mem_read=1'bx;
mem_write=1'bx;
branch=1'bx;
ALUOp=2'bxx;
end
endcase
end
endmodule