/* Parameterized extender that can handle both zero- and sign-extension. */
module extender #(parameter M = 4, N = 8)
(output [N-1:0] out,
input [M-1:0] in,
input sign);
assign out = sign ? {{(N-M){in[M-1]}}, in} : {{(N-M){1'b0}}, in};
endmodule // extender