Como comparar dois números (redes, variáveis, constantes) no Verilog


10

Eu sou novo no Verilog e gostaria de aprender como comparar dois números. Por exemplo, vamos comparar um parâmetro ou reg (digamos a) com o número 2 (2'b10). Como isso será escrito em Verilog?

Respostas:


11

Operadores relacionais e de igualdade (retorne X se um operando tiver X ou Z)

m == n  // is m equal to n? (1-bit True/False result)

m != n  // is m not equal to n? (1-bit True/False result)

m < n   // is m less than n? (1-bit True/False result)

m > n   // is m greater than n? (1-bit True/False result)

m <= n  // is m less than or equal to n? (1-bit True/False result)

m >= n  // is m greater than or equal to n? (1-bit True/False result)

Operadores de identidade (compare os valores lógicos 0, 1, X e Z)

m === n // is m identical to n? (1-bit True/False results)

m !== n // is m not identical to n? (1-bit True/False result)

Exemplo

Se reg a for menor que 2'b10, armazene 2'b11 em a.

if (a < 2'b10) begin
   a = 2'b11;
end

Ressalvas

  1. Para a maioria das operações, os operandos podem ser redes, variáveis, constantes ou chamadas de função. Algumas operações não são legais em valores reais (ponto flutuante).
  2. Operadores que retornam um resultado verdadeiro / falso retornarão um valor de 1 bit em que 1 representa verdadeiro, 0 representa falso e X representa indeterminado
  3. Os operadores === e! == não são suportados para síntese, porque Z e X não têm o mesmo significado em simulação e hardware.
  4. Se você comparar dois números de largura desigual, o menor será expandido. Operandos não assinados são expandidos estendendo-se à esquerda com zero. Os operandos assinados são expandidos estendendo-se à esquerda com o valor do bit mais significativo (o bit de sinal).

Fonte: "Guia de referência rápida Verilog HDL baseado no padrão Verilog-2001 (IEEE Std 1364-2001)" por Stuart Sutherland


1

Os operadores de comparação numérica da Verilog são semelhantes aos de C: ==,! =, <,>, <=,> =.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.