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 ~^ |
| |
&& |
|| |
?: |