Integer e Real
Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 8 de 90.
Além de wire e reg, o Verilog possui outros tipos de dados para números com diferentes propósitos.
Inteiro
integer é uma variável de uso geral para contagem e cálculos.
- O tamanho padrão é de 32 bits
- Com sinal (pode armazenar números negativos)
- Usado principalmente em testbenches e loops for
Declarando um inteiro:
integer i; // variável de 32 bits com sinal
integer count; // Pode armazenar números negativosUsando integer:
integer i;
initial begin
i = 0; // Inicia em 0
i = i + 1; // Conta para cima
i = -5; // Pode armazenar negativos
$display("i = %d", i); // Imprime: i = -5
endReal
real é para números de ponto flutuante (números com decimais).
- Armazena valores fracionários
- Usado em testbenches para cálculos
- Não pode ser sintetizado para hardware
Declarando um real:
real pi; // Variável de ponto flutuante
real voltage;Usando real:
real pi;
initial begin
pi = 3.14159; // Valor decimal
pi = 22.0 / 7.0; // Resultado da divisão
$display("pi = %f", pi); // Imprime: pi = 3.142857
endOnde Usá-los
Em testbenches: Inteiros e reais são comumente usados para contadores de loop, cálculos e verificação de valores esperados. Eles tornam o código de teste mais fácil de escrever e entender.
Em hardware: Esses tipos geralmente não são sintetizáveis — o que significa que não podem ser transformados em circuitos reais. Para hardware que será implementado em um FPGA ou chip, use reg e wire em vez disso.
Desafio
Complete o código para fazer o testbench funcionar.
O que fazer:
- Declare um integer chamado i (para o contador do loop)
- Declare um real chamado value (para o cálculo)
Folha de consulta
integer – variável de 32 bits com sinal para contagem/cálculos (testbenches, loops):
integer i;
integer count;
initial begin
i = 0;
i = i + 1;
i = -5; // can store negatives
endreal – variável de ponto flutuante para valores fracionários (apenas testbenches, não sintetizável):
real pi;
initial begin
pi = 3.14159;
pi = 22.0 / 7.0;
$display("pi = %f", pi);
endAmbos integer e real são usados apenas em testbenches. Para hardware sintetizável, use reg e wire.
Experimente você mesmo
module test;
// Declara um inteiro chamado i
// Declara um real chamado value
initial begin
i = 7;
value = i * 0.5;
$display("i = %0d, value = %f", i, value);
$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 SoftwareNíveis de Abstração de ProjetoSeu Primeiro MóduloComentários4Operadores Parte 1
Operadores AritméticosOperador de MóduloOperadores de ComparaçãoRecapitulação - Matemática SimplesOperadores Bitwise7Atribuição e Portas Lógicas
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ão
Instrução IfIf - ElseRecapitulação - Comparador SimplesInstrução CaseCasex e CasezRecapitulação - Projeto de ALU2Tipos de Dados
Tipo WireTipo RegInteger e RealVetoresArraysParâmetrosRecapitulação - Declarar Sinais5Operadores Parte 2
Operadores LógicosOperadores de ReduçãoOperadores de DeslocamentoOperador de ConcatenaçãoOperador CondicionalRecapitulação - Desafio de Operadores3Sistemas de Numeração
Representação BináriaNúmeros com Tamanho DefinidoNúmeros sem Tamanho DefinidoNúmeros NegativosValores Especiais X e ZRecapitulação - Formatos de Números6Módulos
Estrutura de MóduloPortas de Entrada e SaídaPortas InoutInstanciação de MóduloMapeamento de Portas por NomeMapeamento de Portas por OrdemRecapitulação - Construa um Módulo