Este código es de asic-world:
module decoder_using_assign (
binary_in , // 4 bit binary input
decoder_out , // 16-bit out
enable // Enable for the decoder
);
input [3:0] binary_in ;
input enable ;
output [15:0] decoder_out ;
wire [15:0] decoder_out ;
assign decoder_out = (enable) ? (1 << binary_in) : 16'b0 ;
endmodule
Parece que no puedo envolver mi cabeza (1 < < binary_in). binary_in tiene 4 bits de ancho, ¿cómo es que el desplazamiento lógico hacia la izquierda produce una salida de 16 bits de ancho cuando la habilitación es verdadera?