Menu
Coddy logo textTech

Sized Numbers

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

Existe una forma de declarar un número con un tamaño específico en Verilog. Se llama número dimensionado. Es útil porque evita confusiones sobre cuántos bits tiene tu número y garantiza que tu hardware se comporte exactamente como esperas.

Un número con tamaño sigue este formato: [bits]'[format][value]

  • <strong>bits</strong>: el número de bits (por ejemplo, 8)
  • <strong>'</strong>: un apóstrofo que separa el tamaño del formato (obligatorio)
  • <strong>format</strong>: la base del número: b para binario, d para decimal, h para hexadecimal u o para octal
  • <strong>value</strong>: el número real (por ejemplo, 1010)

Por ejemplo:

  • 4'b1010: 4 bits, binary 1010 (decimal 10)
  • 8'd255: 8 bits, decimal 255 (binary 11111111)
  • 16'hFF: 16 bits, hex FF (binary 0000000011111111)
  • 3'b1: 3 bits, binary 001 (los bits de la izquierda se rellenan con ceros)

Ejemplo de código:

reg [7:0] data;

data = 8'b10101010;   // 8 bits, binary 10101010
data = 8'd170;        // 8 bits, decimal 170
data = 8'hAA;         // 8 bits, hex AA

All tres ejemplos asignan el mismo valor a data.

Por qué importa el tamaño

Sin tamaño:

reg [7:0] data;
data = 1;        // ¿Qué significa esto? ¿1 bit? ¿8 bits?

Verilog supone que los números pequeños tienen 32 bits de forma predeterminada, lo que puede causar problemas.

Con tamaño:

reg [7:0] data;
data = 8'b00000001;   // Clear: 8-bit value 1

Relleno con ceros

Cuando asignas un valor más pequeño a un vector más grande, Verilog rellena los bits de la izquierda con ceros:

reg [7:0] data;
data = 4'b1010;    // Becomes 8'b00001010
challenge icon

Desafío

Completa el código escribiendo los números del tamaño correcto.

What hacer:

  1. Establece a en un número binary de 8 bits para decimal 170 (binary 10101010)
  2. Establece b en un número binary de 4 bits para decimal 12 (binary 1100)
  3. Establece c en un número hexadecimal de 16 bits para decimal 255 (hex FF)

Pruébalo tú mismo

module sized_challenge;
  reg [7:0] a;
  reg [3:0] b;
  reg [15:0] c;
  
  initial begin
    a = ______;   // binario de 8 bits para 170 (10101010)
    b = ______;   // binario de 4 bits para 12 (1100)
    c = ______;   // hexadecimal de 16 bits para 255 (FF)
    
    $display("a = %b", a);
    $display("b = %b", b);
    $display("c = %h", 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