14 lines
446 B
Systemverilog
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
|