-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathALU.v
More file actions
38 lines (36 loc) · 754 Bytes
/
ALU.v
File metadata and controls
38 lines (36 loc) · 754 Bytes
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
module ALU(
output reg[15:0] Upper,
output reg[15:0] Lower,
output reg[1:0] Zero,
input [15:0] Data1,
input [15:0] Data2,
input [3:0] ALUOp
//input clk,
//input rst
);
always@(*)
begin
if(ALUOp == 4'b0000) //Signed Add
Lower = Data1 + Data2;
else if(ALUOp == 4'b0001) //Signed Sub
Lower = Data1 - Data2;
else if(ALUOp == 4'b0100) //Signed Mul
Lower = Data1 * Data2;
else if(ALUOp == 4'b0101) //Signed Div
begin
Lower = Data1 / Data2;
Upper = Data1 % Data2;
end
else if(ALUOp == 4'b0111) //Move
Lower = Data2;
else if(ALUOp == 4'b1000) //Swap
begin
Lower = Data2;
Upper = Data1;
end
else if(ALUOp == 4'b1001) //AND
Lower = Data1 & Data2;
else if(ALUOp == 4'b1011) //OR
Lower = Data1 | Data2;
end
endmodule