Comment comparer deux nombres (réseaux, variables, constantes) dans Verilog

10

Je suis nouveau chez Verilog et j'aimerais apprendre à comparer deux nombres. Par exemple, comparons un paramètre ou reg (disons a) avec le nombre 2 (2'b10). Comment cela sera écrit dans Verilog?

Sherby
la source

Réponses:

11

Opérateurs d'égalité et relationnels (renvoyer X si un opérande a 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)

Opérateurs d'identité (comparer les valeurs logiques 0, 1, X et 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)

Exemple

Si reg a est inférieur à 2'b10, stockez 2'b11 dans a.

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

Avertissements

  1. Pour la plupart des opérations, les opérandes peuvent être des réseaux, des variables, des constantes ou des appels de fonction. Certaines opérations ne sont pas légales sur les valeurs réelles (virgule flottante).
  2. Les opérateurs qui renvoient un résultat vrai / faux renverront une valeur de 1 bit où 1 représente vrai, 0 représente faux et X représente indéterminé
  3. Les opérateurs === et! == ne sont pas pris en charge pour la synthèse, car Z et X n'ont pas la même signification dans la simulation et le matériel.
  4. Si vous comparez deux nombres de largeur inégale, le plus petit sera agrandi. Les opérandes non signés sont développés par extension à gauche avec zéro. Les opérandes signés sont étendus par extension à gauche avec la valeur du bit le plus significatif (le bit de signe).

Source: "Guide de référence rapide Verilog HDL basé sur la norme Verilog-2001 (IEEE Std 1364-2001)" par Stuart Sutherland

travisbartley
la source
1

Les opérateurs de comparaison numérique Verilog sont similaires à ceux de C: ==,! =, <,>, <=,> =.

Dave Tweed
la source