logo

Verilog-Operatoren

Operatoren führen eine Operation an einem oder mehreren Operanden innerhalb eines Ausdrucks aus. Ein Ausdruck kombiniert Operanden mit geeigneten Operatoren, um den gewünschten Funktionsausdruck zu erzeugen.

1. Arithmetische Operatoren

Für das FPGA sind Division und Multiplikation sehr teuer, und manchmal können wir Divisionen nicht synthetisieren. Wenn wir Z oder X für Werte verwenden, ist das Ergebnis unbekannt. Die Operationen behandeln die Werte als vorzeichenlos.

Charakter Operation durchgeführt Beispiel
+ Hinzufügen b + c = 11
- Subtrah b - c = 9, -b=-10
/ Teilen b / a = 2
* Multiplizieren a * b = 50
% Modul b % a = 0

2. Bitweise Operatoren

Jedes Bit wird bearbeitet, das Ergebnis ist die Größe des größten Operanden, und der kleinere Operand wird mit Nullen auf die Größe des größeren Operanden erweitert.

Charakter Operation durchgeführt Beispiel
~ Jedes Bit invertieren ~a = 3'b010
& Und jedes bisschen b & c = 3'b010
| Oder jedes bisschen ein | b = 3'b111
^ Xor jedes Bit a ^ b = 3'b011
^~ oder ~^ Xnor jedes Bit a ^~ b = 3'b100

3. Reduktionsoperatoren

Diese Operatoren reduzieren die Vektoren auf nur ein Bit. Wenn die Zeichen z und x vorhanden sind, kann das Ergebnis ein bekannter Wert sein.

Charakter Operation durchgeführt Beispiel
& Und alle Teile &a = 1'b0, &d = 1'b0
~& Nand alle Teile ~&a = 1'b1
| Oder alle Teile |a = 1'b1, |c = 1'bX
~| Auch nicht alle Teile ~|a= 1'b0
^ Xor alle Bits ^a = 1'b1
^~ oder ~^ Xnor alle Bits ~^a = 1'b0

4. Vergleichsoperatoren

Diese Operatoren vergleichen Operanden und ergeben einen skalaren booleschen 1-Bit-Wert. Die Fallgleichheits- und Ungleichheitsoperatoren können für unbekannte oder hohe Impedanzwerte (z oder x) verwendet werden, und wenn die beiden Operanden unbekannt sind, ist das Ergebnis eine 1.

Charakter Operation durchgeführt Beispiel
> Größer als a > b = 1'b0
< Kleiner als A
>= Größer als oder gleich a >= d = 1'bX
<=< td> Kleiner oder gleich A<= e='1'bX</td'>
== Gleichwertigkeit a == b = 1'b0
!= Ungleichheit a != b = 1'b1
=== Fallgleichheit e === e = 1'b1
!=== Fallungleichheit und !== d = 1'b1

5. Logische Operatoren

Diese Operatoren vergleichen Operanden und ergeben einen skalaren booleschen 1-Bit-Wert.

Charakter Operation durchgeführt Beispiel
! Nicht wahr !(a && b) = 1'b1
&& Beide Ausdrücke sind wahr a && b = 1'b0
|| Einer oder beide Ausdrücke sind wahr und || b = 1'b1

6. Schichtoperatoren

Diese Operatoren verschieben Operanden nach rechts oder links, die Größe bleibt konstant, verschobene Bits gehen verloren und der Vektor wird mit Nullen aufgefüllt.

ASCII eines in Java
Charakter Operation durchgeführt Beispiel
>> Nach rechts verschieben b >> 1 Ergebnisse 4?b010X
<< Nach links verschieben a << 2 ergibt 4?b1000

7. Zuweisungsoperatoren

Es gibt drei Zuweisungsoperatoren, die jeweils unterschiedliche Aufgaben erfüllen und mit unterschiedlichen Datentypen verwendet werden:

  • zuweisen (kontinuierliche Zuweisung)
  • <= (non-blocking assignment)< li>
  • = (Sperrzuweisung)

8. Andere Betreiber

Dies sind Operatoren, die zum Testen von Bedingungen und zum Erstellen von Vektoren verwendet werden.

Charakter Operation durchgeführt Beispiel
?: Prüfung der Bedingungen Testkond. ? Wenn wahr, tun Sie dies oder wenn nicht, tun Sie dies
{} Verketten c = {a,b} = 8'101010x0
{{}} Replizieren {3{2'b10}}= 6'b101010

9. Vorrang der Operatoren

Die Reihenfolge der Tabelle gibt an, welche Operation zuerst ausgeführt wird. Der erste hat die höchste Priorität. Mit () kann die Standardeinstellung überschrieben werden.

Vorrang der Operatoren
+, -, !, ~ (Unär)
+,- (Binär)
<>
,=
==, !=
&
^, ^~ oder ~^
|
&&
||
?: