So vergleichen Sie zwei Zahlen (Netze, Variablen, Konstanten) in Verilog

10

Ich bin neu bei Verilog und möchte lernen, wie man zwei Zahlen vergleicht. Vergleichen wir zum Beispiel einen Parameter oder reg (sagen wir a) mit der Zahl 2 (2'b10). Wie wird das in Verilog geschrieben?

Sherby
quelle

Antworten:

11

Gleichheits- und Vergleichsoperatoren (geben X zurück, wenn ein Operand X oder Z hat)

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)

Identitätsoperatoren (vergleichen Sie die Logikwerte 0, 1, X und 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)

Beispiel

Wenn reg a kleiner als 2'b10 ist, speichern Sie 2'b11 in a.

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

Vorsichtsmaßnahmen

  1. Bei den meisten Operationen können die Operanden Netze, Variablen, Konstanten oder Funktionsaufrufe sein. Einige Operationen sind für reale (Gleitkomma-) Werte nicht zulässig.
  2. Operatoren, die ein wahr / falsch-Ergebnis zurückgeben, geben einen 1-Bit-Wert zurück, wobei 1 für wahr, 0 für falsch und X für unbestimmt steht
  3. Die Operatoren === und! == werden für die Synthese nicht unterstützt, da Z und X in Simulation und Hardware nicht dieselbe Bedeutung haben.
  4. Wenn Sie zwei Zahlen mit ungleicher Breite vergleichen, wird die kleinere erweitert. Vorzeichenlose Operanden werden durch Linksverlängerung mit Null erweitert. Vorzeichenbehaftete Operanden werden durch Linksverlängerung um den Wert des höchstwertigen Bits (des Vorzeichenbits) erweitert.

Quelle: "Verilog HDL-Kurzanleitung basierend auf dem Verilog-2001-Standard (IEEE Std 1364-2001)" von Stuart Sutherland

Travisbartley
quelle
1

Die numerischen Verilog-Vergleichsoperatoren ähneln denen in C: == ,! =, <,>, <=,> =.

Dave Tweed
quelle