Cómo comparar dos números (redes, variables, constantes) en Verilog

10

Soy nuevo en Verilog y me gustaría aprender a comparar dos números. Por ejemplo, comparemos un parámetro o reg (digamos a) con el número 2 (2'b10). ¿Cómo se escribirá esto en Verilog?

Sherby
fuente

Respuestas:

11

Operadores de igualdad y relacionales (devolver X si un operando tiene X o 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 identidad (compare los valores lógicos 0, 1, X y 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)

Ejemplo

Si reg a es menor que 2'b10, almacene 2'b11 en a.

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

Advertencias

  1. Para la mayoría de las operaciones, los operandos pueden ser redes, variables, constantes o llamadas a funciones. Algunas operaciones no son legales en valores reales (punto flotante).
  2. Los operadores que devuelven un resultado verdadero / falso devolverán un valor de 1 bit donde 1 representa verdadero, 0 representa falso y X representa indeterminado
  3. Los operadores === y! == no son compatibles con la síntesis, porque Z y X no tienen el mismo significado en simulación y hardware.
  4. Si compara dos números de ancho desigual, el más pequeño se expandirá. Los operandos sin signo se expanden extendiéndose a la izquierda con cero. Los operandos firmados se expanden extendiéndose a la izquierda con el valor del bit más significativo (el bit de signo).

Fuente: "Guía de referencia rápida de Verilog HDL basada en el estándar Verilog-2001 (IEEE Std 1364-2001)" por Stuart Sutherland

Travisbartley
fuente
1

Los operadores de comparación numérica de Verilog son similares a los de C: ==,! =, <,>, <=,> =.

Dave Tweed
fuente