Chuỗi bài: RISC V Hardware
verilog
45 dòng
· Cập nhật 2026-07-04
alu.v
RISC_V_Hardware/verilog/rtl/alu.v
// ============================================================
// alu.v -- RV32I ALU
// op encoding (alu_op):
// 0000 ADD 0001 SUB 0010 SLL 0011 SLT
// 0100 SLTU 0101 XOR 0110 SRL 0111 SRA
// 1000 OR 1001 AND
// ============================================================
`timescale 1ns/1ps
module alu (
input wire [31:0] a,
input wire [31:0] b,
input wire [3:0] alu_op,
output reg [31:0] y,
output wire zero
);
localparam ALU_ADD = 4'b0000;
localparam ALU_SUB = 4'b0001;
localparam ALU_SLL = 4'b0010;
localparam ALU_SLT = 4'b0011;
localparam ALU_SLTU = 4'b0100;
localparam ALU_XOR = 4'b0101;
localparam ALU_SRL = 4'b0110;
localparam ALU_SRA = 4'b0111;
localparam ALU_OR = 4'b1000;
localparam ALU_AND = 4'b1001;
always @(*) begin
case (alu_op)
ALU_ADD : y = a + b;
ALU_SUB : y = a - b;
ALU_SLL : y = a << b[4:0];
ALU_SLT : y = ($signed(a) < $signed(b)) ? 32'd1 : 32'd0;
ALU_SLTU: y = (a < b) ? 32'd1 : 32'd0;
ALU_XOR : y = a ^ b;
ALU_SRL : y = a >> b[4:0];
ALU_SRA : y = $signed(a) >>> b[4:0];
ALU_OR : y = a | b;
ALU_AND : y = a & b;
default : y = 32'b0;
endcase
end
assign zero = (y == 32'b0);
endmodule
Bài viết liên quan
RISC V Hardware
bash
Cập nhật 2026-07-04
build.sh
build.sh — bash source code from the RISC V Hardware learning materials (RISC_V_Hardware/build.sh).
Đọc bài viết →
RISC V Hardware
latex
Cập nhật 2026-07-04
style.tex
style.tex — latex source code from the RISC V Hardware learning materials (RISC_V_Hardware/latex/common/style.tex).
Đọc bài viết →
RISC V Hardware
verilog
Cập nhật 2026-07-04
branch_unit.v
branch_unit.v — verilog source code from the RISC V Hardware learning materials (RISC_V_Hardware/verilog/rtl/branch_unit.v).
Đọc bài viết →
RISC V Hardware
verilog
Cập nhật 2026-07-04
control.v
control.v — verilog source code from the RISC V Hardware learning materials (RISC_V_Hardware/verilog/rtl/control.v).
Đọc bài viết →
RISC V Hardware
verilog
Cập nhật 2026-07-04
dmem.v
dmem.v — verilog source code from the RISC V Hardware learning materials (RISC_V_Hardware/verilog/rtl/dmem.v).
Đọc bài viết →
RISC V Hardware
verilog
Cập nhật 2026-07-04
imem.v
imem.v — verilog source code from the RISC V Hardware learning materials (RISC_V_Hardware/verilog/rtl/imem.v).
Đọc bài viết →