mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
ALU cleanup
This commit is contained in:
parent
6740624f2d
commit
10af4e4353
@ -41,12 +41,11 @@ module alu #(parameter WIDTH=32) (
|
||||
logic Carry, Neg;
|
||||
logic LT, LTU;
|
||||
logic W64, SubArith, ALUOp;
|
||||
logic [2:0] ALUFunct;
|
||||
logic Asign, Bsign;
|
||||
|
||||
// Extract control signals
|
||||
// W64 indicates RV64 W-suffix instructions acting on lower 32-bit word
|
||||
// SubArith indicates subtraction
|
||||
// SubArith indicates subtraction or arithmetic right shift
|
||||
// ALUOp = 0 for address generation addition or 1 for regular ALU
|
||||
assign {W64, SubArith, ALUOp} = ALUControl;
|
||||
|
||||
@ -71,9 +70,9 @@ module alu #(parameter WIDTH=32) (
|
||||
assign SLTU = {{(WIDTH-1){1'b0}}, LTU};
|
||||
|
||||
// Select appropriate ALU Result
|
||||
assign ALUFunct = Funct3 & {3{ALUOp}}; // Force ALUFunct to 0 to Add when ALUOp = 0
|
||||
always_comb
|
||||
casez (ALUFunct)
|
||||
if (~ALUOp) FullResult = Sum; // Always add for ALUOp = 0
|
||||
else casez (Funct3) // Otherwise check Funct3
|
||||
3'b000: FullResult = Sum; // add or sub
|
||||
3'b?01: FullResult = Shift; // sll, sra, or srl
|
||||
3'b010: FullResult = SLT; // slt
|
||||
|
@ -161,7 +161,6 @@ module controller(
|
||||
ControlsD = `CTRLW'b1_000_00_00_011_0_0_0_0_1_0_0_0_1_00_0; // W-type Multiply/Divide
|
||||
else
|
||||
ControlsD = `CTRLW'b0_000_00_00_000_0_0_0_0_0_0_0_0_0_00_1; // non-implemented instruction
|
||||
//7'b1010011: ControlsD = `CTRLW'b0_000_00_00_101_0_00_0_0_0_0_0_0_0_00_1; // FP
|
||||
7'b1100011: ControlsD = `CTRLW'b0_010_11_00_000_1_0_0_0_0_0_0_0_0_00_0; // branches
|
||||
7'b1100111: ControlsD = `CTRLW'b1_000_01_00_000_0_0_1_1_0_0_0_0_0_00_0; // jalr
|
||||
7'b1101111: ControlsD = `CTRLW'b1_011_11_00_000_0_0_1_1_0_0_0_0_0_00_0; // jal
|
||||
|
Loading…
Reference in New Issue
Block a user