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. Isso é chamado de número com tamanho definido (sized number). É útil porque evita confusão sobre quantos bits seu número possui e garante que seu hardware se comporte exatamente como esperado.

Um número com tamanho 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 binário, 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, hexadecimal FF (binário 0000000011111111)
  • 3'b1 — 3 bits, binário 001 (os bits à esquerda são preenchidos com zero)

Exemplo de Código:

reg [7:0] data;

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

Todos os três 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 são de 32 bits por padrão, o que pode causar problemas.

Com tamanho:

reg [7:0] data;
data = 8'b00000001;   // Limpar: valor de 8 bits 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;    // Torna-se 8'b00001010
challenge icon

Desafio

Complete o código escrevendo os números com o tamanho correto.

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 (hexadecimal FF)

Folha de consulta

Um número com tamanho definido (sized number) em Verilog segue o formato: [bits]'[format][value]

  • bits — número de bits
  • ' — separador de apóstrofo obrigatório
  • formatb (binário), d (decimal), h (hexadecimal), o (octal)
  • value — o número real
reg [7:0] data;

data = 8'b10101010;   // 8 bits, binary
data = 8'd170;        // 8 bits, decimal
data = 8'hAA;         // 8 bits, hex (all three are equal)

Sem um tamanho definido, o Verilog assume como padrão 32 bits, o que pode causar comportamentos inesperados. Os bits à esquerda são preenchidos com zero quando o valor é menor que o tamanho declarado:

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

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 = ______;   // Hexadecimal 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