Números com Tamanho Definido
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:bpara binário,dpara decimal,hpara hexadecimal ouopara 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 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 AAOs 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 1Preenchimento 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'b00001010Desafio
Complete o código escrevendo os números com o tamanho correto.
O que fazer:
- Defina
acomo um número binário de 8 bits para o decimal 170 (binário 10101010) - Defina
bcomo um número binário de 4 bits para o decimal 12 (binário 1100) - Defina
ccomo 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
endmoduleEsta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
1Introdução
O que é VerilogHardware vs. SoftwareSeu primeiro móduloComentáriosNíveis de abstração de projeto4Operadores Parte 1
Operadores aritméticosOperador móduloOperadores de comparaçãoRecapitulação - Matemática simplesOperadores bit a bit7Atribuições e Portas
Atribuição ContínuaAtribuição com OperadoresPrimitivas de Portas IntegradasPortas AND, OR e NOTPortas XOR e XNORRecapitulação - Circuito de Portas Lógicas10Tomada de Decisões
Declaração IfIf - ElseRevisão - Comparador SimplesDeclaração CaseCasex e CasezRevisão - Projeto de ALU2Tipos de Dados
Tipo WireTipo RegInteiro e RealVetoresArraysParâmetrosRecapitulação - Declarar Sinais5Operadores - Parte 2
Operadores lógicosOperadores de reduçãoOperadores de deslocamentoOperador de concatenaçãoOperador condicionalRevisão - Desafio de operadores3Sistema Numérico
Representação BináriaNúmeros com Tamanho DefinidoNúmeros sem Tamanho DefinidoNúmeros NegativosValores Especiais X e ZRevisão - Formatos Numéricos6Módulos
Estrutura de MódulosPortas de Entrada e SaídaPortas InoutInstanciação de MódulosMapeamento de Portas por NomeMapeamento de Portas por OrdemRecapitulação — Construindo um MóduloPratique por conta própria: Compilador de Verilog online