Menu
Coddy logo textTech

Sized Numbers

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

Há uma maneira de declarar um número com um tamanho específico em Verilog. Ele é chamado de número dimensionado. Isso é útil porque evita confusão sobre quantos bits seu número tem e garante que seu hardware se comporte exatamente como esperado.

Um número com tamanho definido 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 propriamente dito (por exemplo, 1010)

Por exemplo:

  • 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 (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

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 presume 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

Preenchimento com zeros

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 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)

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

Pratique por conta própria: Compilador de Verilog online