Operadores de Comparação
Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 21 de 90.
Operadores de comparação comparam dois valores e retornam 1 (verdadeiro) ou 0 (falso).
Operadores de Comparação Disponíveis
| Operador | Significado |
|---|---|
== | Igual a |
!= | Diferente de |
> | Maior que |
< | Menor que |
>= | Maior ou igual a |
<= | Menor ou igual a |
Exemplo de Código
module comparison_demo;
reg [3:0] a, b;
reg result;
initial begin
a = 5;
b = 3;
result = (a == b);
$display("5 == 3 : %d", result); // 0 (falso)
result = (a != b);
$display("5 != 3 : %d", result); // 1 (verdadeiro)
result = (a > b);
$display("5 > 3 : %d", result); // 1 (verdadeiro)
result = (a < b);
$display("5 < 3 : %d", result); // 0 (falso)
result = (a >= 5);
$display("5 >= 5 : %d", result); // 1 (verdadeiro)
result = (a <= 3);
$display("5 <= 3 : %d", result); // 0 (falso)
$finish;
end
endmoduleSaída:
5 == 3 : 0
5 != 3 : 1
5 > 3 : 1
5 < 3 : 0
5 >= 5 : 1
5 <= 3 : 0Usando Comparações em Condições
Comparações são frequentemente usadas em instruções if:
if (count == 10)
$display("Reached maximum");
if (value > threshold)
$display("Value is too high");Notas Importantes
- Resultados de comparação são valores de 1 bit (0 ou 1)
- Comparações funcionam com qualquer largura de bit
- Tenha cuidado com
==e!=quando os sinais contiverem X ou Z (eles retornarão X)
Desafio
Escreva as expressões de comparação corretas para cada tarefa.
O que fazer:
- Verifique se
aé igual abe armazene emeq - Verifique se
aé maior quebe armazene emgt - Verifique se
aé menor ou igual abe armazene emle
Folha de consulta
Os operadores de comparação em Verilog comparam dois valores e retornam 1 (verdadeiro) ou 0 (falso).
| Operador | Significado |
|---|---|
== | Igual a |
!= | Diferente de |
> | Maior que |
< | Menor que |
>= | Maior ou igual a |
<= | Menor ou igual a |
As comparações são comumente usadas em instruções if:
if (count == 10)
$display("Reached maximum");
if (value > threshold)
$display("Value is too high");Nota: Os resultados são valores de 1 bit. O uso de == ou != com sinais contendo X ou Z retornará X.
Experimente você mesmo
module comparison_challenge;
reg [3:0] a, b;
reg eq, gt, le;
initial begin
a = 4'd7;
b = 4'd7;
eq = ______; // a igual a b
gt = ______; // a maior que b
le = ______; // a menor ou igual a b
$display("a = %d, b = %d", a, b);
$display("a == b : %d", eq);
$display("a > b : %d", gt);
$display("a <= b : %d", le);
$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