diff options
Diffstat (limited to 'src/shift_unit.v')
-rw-r--r-- | src/shift_unit.v | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/shift_unit.v b/src/shift_unit.v index d0aa9d3..df4b01d 100644 --- a/src/shift_unit.v +++ b/src/shift_unit.v @@ -1,17 +1,16 @@ -module shift_unit #( - parameter N = 32 -)( - input signed [N-1:0] src0, - input [N-1:0] shamt, - input [1:0] op, // 00: SLL, 01: SRL, 11: SRA - output reg [N-1:0] result +module shift_unit ( + input signed [31:0] a, + input [4:0] b, + input [1:0] op, + output reg [31:0] result ); always @ (*) begin case (op) - 2'b00: result <= src0 << shamt % N; - 2'b01: result <= src0 >> shamt % N; - 2'b11: result <= src0 >>> shamt % N; + 2'b00: result <= a << b; // SLL + 2'b01: result <= a >> b; // SRL + 2'b11: result <= a >>> b; // SRA + default: result <= 32'b0; endcase end |