alu.v
来自「用VHDL设计具有简单MIPS功能的源码」· Verilog 代码 · 共 52 行
V
52 行
//******************************************************************************
//
// ALU.v
//
// The ALU performs all the arithmetic/logical integer operations
// specified by the ALUcontrol from the decoder.
//
//
//******************************************************************************
`include "define.v"
module ALU (ALUResult, ALUcontrol, ALUOpA, ALUOpB);
input [3:0] ALUcontrol; // Operation select
input [31:0] ALUOpA, ALUOpB; // operands
output [31:0] ALUResult; // result of operation
reg [31:0] ALUResult;
always @(ALUOpA or ALUOpB or ALUcontrol)
begin
case (ALUcontrol)
`aluop_add:
ALUResult = ALUOpA + ALUOpB;
`aluop_sub:
ALUResult = ALUOpA - ALUOpB;
`aluop_and:
ALUResult = ALUOpA & ALUOpB;
`aluop_or:
ALUResult = ALUOpA | ALUOpB;
`aluop_slt:
ALUResult = (ALUOpA < ALUOpB);
`aluop_lw:
ALUResult = ALUOpA + ALUOpB;
`aluop_sw:
ALUResult = ALUOpA + ALUOpB;
`aluop_addi:
ALUResult = ALUOpA + ALUOpB;
`aluop_andi:
ALUResult = ALUOpA & ALUOpB;
`aluop_ori:
ALUResult = ALUOpA | ALUOpB;
`aluop_beq:
ALUResult = ALUOpA - ALUOpB;
`aluop_bne:
ALUResult = ALUOpA - ALUOpB;
default:
ALUResult = 32'b1;
endcase
end
endmodule
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?