Files
lab-rv32i-asm-number-systems/src/tasks/task02_extension_shifts.sv
T

14 lines
446 B
Systemverilog

module extension_shifts(
input logic [7:0] value,
input logic [2:0] shift,
output logic [31:0] zero_extended,
output logic [31:0] sign_extended,
output logic [31:0] logical_right,
output logic [31:0] arithmetic_right
);
assign zero_extended = {24'b0, value};
assign sign_extended = {{24{value[7]}}, value};
assign logical_right = zero_extended >> shift;
assign arithmetic_right = $signed(sign_extended) >>> shift;
endmodule