Operatory wykonują operację na jednym lub większej liczbie operandów w wyrażeniu. Wyrażenie łączy operandy z odpowiednimi operatorami w celu utworzenia pożądanego wyrażenia funkcjonalnego.
1. Operatory arytmetyczne
W przypadku FPGA dzielenie i mnożenie są bardzo kosztowne i czasami nie możemy zsyntetyzować podziału. Jeśli jako wartości użyjemy Z lub X, wynik jest nieznany. Operacje traktują wartości jako bez znaku.
| Postać | Operacja wykonana | Przykład |
| + | Dodać | b + do = 11 |
| - | Odejmij | b - c = 9, -b=-10 |
| / | Dzielić | b/a = 2 |
| * | Zwielokrotniać | a * b = 50 |
| % | Moduł | b% a = 0 |
2. Operatory bitowe
Każdy bit jest operowany, wynikiem jest rozmiar największego operandu, a mniejszy operand jest rozszerzany o zera do rozmiaru większego operandu.
| Postać | Operacja wykonana | Przykład |
| ~ | Odwróć każdy bit | ~a = 3'b010 |
| & | I każdy kawałek | b i c = 3'b010 |
| | | Lub każdy kawałek | | b = 3'b111 |
| ^ | Xor każdy bit | a ^ b = 3'b011 |
| ^~ lub ~^ | Xnor w każdym calu | a ^~ b = 3'b100 |
3. Operatory redukcji
Operatory te redukują wektory tylko do jednego bitu. Jeśli występują znaki z i x, wynikiem może być znana wartość.
| Postać | Operacja wykonana | Przykład |
| & | I wszystkie kawałki | &a = 1'b0, &d = 1'b0 |
| ~& | I wszystkie bity | ~&a = 1'b1 |
| | | Albo wszystkie kawałki | |a = 1'b1, |c = 1'bX |
| ~| | Ani wszystkie kawałki | ~|a= 1'b0 |
| ^ | Xor wszystkie bity | ^a = 1'b1 |
| ^~ lub ~^ | Xnor wszystkie bity | ~^a = 1'b0 |
4. Operatory relacyjne
Operatory te porównują operandy i dają w wyniku 1-bitową skalarną wartość logiczną. Operatorów równości i nierówności można używać dla nieznanych lub wysokich wartości impedancji (z lub x), a jeśli oba operandy są nieznane, wynikiem jest 1.
| Postać | Operacja wykonana | Przykład |
| > | Lepszy niż | a > b = 1'b0 |
| < | Mniejszy niż | A |
| >= | Większe lub równe | a >= d = 1'bX |
| <=< td> | Mniejszy lub równy | A<= e='1'bX</td'> => | =<>
| == | Równość | a == b = 1'b0 |
| != | Nierówność | a != b = 1'b1 |
| === | Równość przypadków | e === e = 1'b1 |
| !=== | Nierówność przypadków | i !== d = 1'b1 |
5. Operatory logiczne
Operatory te porównują operandy i dają w wyniku 1-bitową skalarną wartość logiczną.
| Postać | Operacja wykonana | Przykład |
| ! | Nie prawda | !(a && b) = 1'b1 |
| && | Obydwa wyrażenia są prawdziwe | a && b = 1'b0 |
| || | Jedno lub oba wyrażenia są prawdziwe | i || b = 1'b1 |
6. Operatorzy zmian
Operatory te przesuwają operandy w prawo lub w lewo, rozmiar pozostaje stały, przesunięte bity są tracone, a wektor jest wypełniany zerami.
rok wynalezienia komputera
| Postać | Operacja wykonana | Przykład |
| >> | Przesuń w prawo | b >> 1 wyniki 4?b010X |
| << | Przesuń w lewo | a << 2 wyniki 4?b1000 |
7. Operatory przypisania
Istnieją trzy operatory przypisania, z których każdy wykonuje inne zadania i jest używany z różnymi typami danych:
- przypisać (przypisanie ciągłe)
- <= (non-blocking assignment)< li>
- = (przypisanie blokujące) =>
8. Inni Operatorzy
Są to operatory używane do testowania warunków i tworzenia wektorów.
| Postać | Operacja wykonana | Przykład |
| ?: | Testowanie warunków | stan testowy ? jeśli to prawda, zrób to, a jeśli nie, zrób to |
| {} | Powiązać | do = {a, b} = 8'101010x0 |
| {{}} | Replika | {3{2'b10}}= 6'b101010 |
9. Pierwszeństwo operatorów
Kolejność tabeli określa, która operacja zostanie wykonana jako pierwsza. Pierwszy z nich ma najwyższy priorytet. Znaku () można użyć do zastąpienia wartości domyślnej.
| Pierwszeństwo operatorów |
|---|
| +, -, !, ~ (jednoargumentowy) |
| +,- (binarny) |
| <> |
| ,= |
| ==, != |
| & |
| ^, ^~ lub ~^ |
| | |
| && |
| || |
| ?: |