diff options
author | joshua <joshua@joshuayun.com> | 2022-04-16 23:00:55 -0500 |
---|---|---|
committer | joshua <joshua@joshuayun.com> | 2022-04-16 23:00:55 -0500 |
commit | d6b7d26cf51b4b3a7b5604f9b81bb43f55cbc33c (patch) | |
tree | c337d4454d3a4d5aa01ad3531e8c723b09fe7d0e /verilog/riscv_alu.v | |
parent | 2f1be3c7aabb42ac3ad4347595d5d7be0e2ad6a0 (diff) | |
download | riscv-processor-inorder-d6b7d26cf51b4b3a7b5604f9b81bb43f55cbc33c.tar.gz |
Added pdfs and more alu stuff
Diffstat (limited to 'verilog/riscv_alu.v')
-rw-r--r-- | verilog/riscv_alu.v | 39 |
1 files changed, 0 insertions, 39 deletions
diff --git a/verilog/riscv_alu.v b/verilog/riscv_alu.v deleted file mode 100644 index 87dd637..0000000 --- a/verilog/riscv_alu.v +++ /dev/null @@ -1,39 +0,0 @@ -module riscv_alu -( -input wire signed [31:0] alu_in_1, -input wire[31:0] alu_in_2, -input wire[3:0] alu_op_i, -output wire[31:0] alu_output -); - -reg[31:0] tmp_out; -`include "alu_ops.vh" - -wire [31:0] sub_alu = alu_in_1 - alu_in_2; - -always @(*) -begin - case (alu_op_i) - `ADD: tmp_out = alu_in_1 + alu_in_2; - `SUB: tmp_out = sub_alu; - `XOR: tmp_out = alu_in_1 ^ alu_in_2; - `OR: tmp_out = alu_in_1 | alu_in_2; - `AND: tmp_out = alu_in_1 & alu_in_2; - `SLL: tmp_out = alu_in_1 << alu_in_2; - `SRL: tmp_out = alu_in_1 >> alu_in_2; - `SRA: tmp_out = alu_in_1 >>> alu_in_2; - `SLT: tmp_out = (alu_in_1 < alu_in_2) ? 32'h1 : 32'h0; - `SLTU: - begin - if (alu_in_1[31] != alu_in_2[31]) - tmp_out = alu_in_1[31] ? 32'h1 : 32'h0; - else - tmp_out = sub_alu[31] ? 32'h1 : 32'h0; - end - default: tmp_out = alu_in_1; - endcase -end - -assign alu_output = tmp_out; - -endmodule |