diff --git a/modules/sign_extender.sv b/modules/sign_extender.sv new file mode 100644 index 0000000..114e13d --- /dev/null +++ b/modules/sign_extender.sv @@ -0,0 +1,13 @@ +`ifndef SIGN_EXTENDER_H +`define SIGN_EXTENDER_H + +module sign_extender #(in_width=4, out_width=5)( + input logic [0:0] op, + input logic [2**in_width-1:0] val, + output logic [2**out_width-1:0] ext_val +); + always_comb begin + assign ext_val = (op) ? {{(2**(out_width-in_width)){val[2**in_width-1]}}, val} : ({{(2**(out_width-in_width)){1'b0}}, val}); + end +endmodule +`endif