Menu
Coddy logo textTech

Números com Tamanho Definido

Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 14 de 90.

Existe uma maneira de declarar um número com um tamanho específico em Verilog. Ele é chamado de sized number (número com tamanho definido). É útil porque evita confusões sobre quantos bits seu número possui e garante que seu hardware se comporte exatamente como esperado.

Um número com tamanho (sized number) segue este formato: [bits]'[format][value]

  • <strong>bits</strong> — o número de bits (por exemplo, 8)
  • <strong>'</strong> — um apóstrofo que separa o tamanho do formato (obrigatório)
  • <strong>format</strong> — a base do número: b para binary, d para decimal, h para hexadecimal ou o para octal
  • <strong>value</strong> — o número real (por exemplo, 1010)

Por exemplo:

  • 4'b1010 — 4 bits, binário 1010 (decimal 10)
  • 8'd255 — 8 bits, decimal 255 (binário 11111111)
  • 16'hFF — 16 bits, hex FF (binário 0000000011111111)
  • 3'b1 — 3 bits, binário 001 (os bits à esquerda são preenchidos com zeros)

Exemplo 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

Todos os three exemplos atribuem o mesmo valor a data.

Por que o tamanho importa

Sem tamanho:

reg [7:0] data;
data = 1;        // O que isso significa? 1 bit? 8 bits?

O Verilog assume que números pequenos têm 32 bits por padrão, o que pode causar problemas.

Com tamanho:

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

Zero Padding

Quando você atribui um valor menor a um vetor maior, o Verilog preenche os bits à esquerda com zeros:

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

Desafio

Complete o código escrevendo os números dimensionados corretos.

O que fazer:

  1. Defina a como um número binário de 8 bits para o decimal 170 (binário 10101010)
  2. Defina b como um número binário de 4 bits para o decimal 12 (binário 1100)
  3. Defina c como um número hexadecimal de 16 bits para o decimal 255 (hex FF)

Experimente você mesmo

module sized_challenge;
  reg [7:0] a;
  reg [3:0] b;
  reg [15:0] c;
  
  initial begin
    a = ______;   // binário de 8 bits para 170 (10101010)
    b = ______;   // binário de 4 bits para 12 (1100)
    c = ______;   // hex de 16 bits para 255 (FF)
    
    $display("a = %b", a);
    $display("b = %b", b);
    $display("c = %h", c);
    $finish;
  end
endmodule
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos