Menu
CoddyTech

Números sin tamaño

Parte de la sección Fundamentos del Journey de Verilog de Coddy. Lección 15 de 90.

Un número sin tamaño es un número escrito sin especificar cuántos bits tiene. Cuando escribes un número sin un prefijo de tamaño, Verilog asume que tiene 32 bits de forma predeterminada.

a = 'b1010;        // Unsized: Verilog treats this as 32 bits
a = 32'b1010;    // Igual que arriba, pero explícito

Los números sin tamaño usan únicamente el formato y el valor: [format][value]

  • format: la base del número: b para binario, d para decimal, h para hexadecimal o o para octal
  • value: el número real (por ejemplo, 1010)

El apóstrofo ' sigue siendo necesario antes de la letra de formato, pero no hay ningún recuento de bits delante.

  • 'b1010: 1010 binario de 32 bits
  • 'd255: 255 decimal de 32 bits
  • 'hFF: FF hexadecimal de 32 bits
  • 'b1: 1 binario de 32 bits (con 31 ceros iniciales)

Ejemplo de código:

reg [7:0] data;

initial begin
  data = 1010;      // Sin tamaño especificado: valor de 32 bits (puede generar una advertencia)
  data = 'd255;     // Unsized: 32-bit decimal 255
  data = 'hFF;      // Sin tamaño especificado: FF hexadecimal de 32 bits
end

Sin tamaño frente a con tamaño

 Sin tamañoCon tamaño
Ejemplo1010 o 'd2558'b1010 o 8'd255
Ancho en bits32 bits (predeterminado)Explícito (según lo especificado)
ApóstrofoObligatorio con el formatoObligatorio
Cuándo usarloCódigo simple de banco de pruebasAsignaciones de hardware

Problema potencial

Los números sin tamaño especificado pueden causar un comportamiento inesperado cuando se asignan a registros más pequeños:

reg [3:0] small_reg;
small_reg = 'b1111;   // 32-bit value, but fits in 4 bits (fine)
small_reg = 'b10000;  // Valor de 32 bits, ¡pero demasiado grande! (advertencia)

El segundo ejemplo asigna un valor de 32 bits 10000 a un registro de 4 bits. Solo se conservan los 4 bits inferiores (0000), lo que quizá no sea lo que esperas.

Cuándo usar números sin tamaño definido

Los números sin tamaño definido son prácticos para:

  • Números sencillos en bancos de pruebas
  • Contadores de bucles
  • $display instrucciones

Para asignaciones de hardware reales, usa números con tamaño especificado para ser explícito y evitar advertencias.

challenge icon

Desafío

En el código siguiente, algunos números no tienen tamaño. Cámbialos por números con tamaño (8 bits) para evitar advertencias.

Qué hacer:

  1. Cambia a por un número binario de 8 bits para 1010
  2. Cambia b por un número decimal de 8 bits para 255
  3. Cambia c por un número hexadecimal de 8 bits para FF

Pruébalo tú mismo

module unsized_challenge;
  reg [7:0] a, b, c;
  
  initial begin
    a = 'b1010;      // Change to sized (8-bit binary)
    b = 'd255;     // Cambia a un valor con tamaño especificado (decimal de 8 bits)
    c = 'hFF;      // Change to sized (8-bit hex)
    
    $display("a = %b", a);
    $display("b = %b", b);
    $display("c = %b", c);
    $finish;
  end
endmodule
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos

Practica por tu cuenta: Compilador de Verilog online

Comprueba una conversión: Conversor de bases numéricas