Problemas para entender el decodificador Verilog, cambio lógico hacia la izquierda

0

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?

    
pregunta MMP

1 respuesta

2

binary_in es de 4 bits, por lo que puede mantener un valor decimal en cualquier lugar dentro del rango 0-15.

Si dejaste el desplazamiento 1 entre 0 y 15, obtendrás un número con un máximo de 16 bits.

16'b0000000000000001 < < 0 = 16'b0000000000000001

16'b0000000000000001 < < 1 = 16'b0000000000000010

16'b0000000000000001 < < 2 = 16'b0000000000000100

...

16'b0000000000000001 < < 15 = 16'b1000000000000000

    
respondido por el markt

Lea otras preguntas en las etiquetas