Por favor, explique la siguiente constante entera usada en verilog

2

La constante entera en verilog especificada como "valor base de tamaño".

8'h81 : Creo que en este 8 es el tamaño h (hexadecimal) 81 (valor). Pero estoy confundido, tiene 8 tallas. 81 es un número hexadecimal de 2 dígitos, su tamaño debería ser 2.

16'd5

32'h8f_32_ab_f7

La misma confusión se produce en las dos constantes enteras anteriores. ¿Alguien por favor puede explicar?

    
pregunta SW.

1 respuesta

5

Aunque el indicador de tipo puede ser hexadecimal o decimal, el indicador de tamaño siempre se mide en bits.

8'h81

Dado que 81 es un número de 8 bits en binario ( 1000 0001 ), requiere 8 bits. Por esta razón, el tamaño es 8, aunque el número se expresa en hexadecimal.

Además, el tamaño puede ser el tamaño del bus que está impulsando la señal (o parte de ella), aunque el valor en sí puede requerir menos bits.

Esto se muestra aquí:

16'd5

El decimal 5 solo necesita 3 bits ( 101 ), sin embargo, este valor se puede desglosar para un bus de 16 bits:

wire [15:0] test;
assign test = 16'd5;

Mientras que verilog sí rellena tamaños más pequeños, a veces si estás concatenando, debes especificar cada longitud:

wire [31:0] test;
assign test = {16'd5,16'd5};

En el último caso:

32'h8f_32_ab_f7

Se requieren 32 bits para almacenar el número hexadecimal, que es 1000 1111 0011 0010 1010 1011 1111 0111 en binario.

El hexadecimal es solo una forma breve de escribir el número, pero el tamaño sigue siendo de 32 bits.

    
respondido por el stanri

Lea otras preguntas en las etiquetas