Operátory vykonávajú operáciu na jednom alebo viacerých operandoch vo výraze. Výraz kombinuje operandy s vhodnými operátormi na vytvorenie požadovaného funkčného výrazu.
1. Aritmetické operátory
Pre FPGA je delenie a násobenie veľmi drahé a niekedy delenie nedokážeme syntetizovať. Ak pre hodnoty použijeme Z alebo X, výsledok nie je známy. Operácie považujú hodnoty za nepodpísané.
Charakter | Operácia vykonaná | Príklad |
+ | Pridať | b + c = 11 |
- | Subtrac | b - c = 9, -b = -10 |
/ | Rozdeliť | b/a = 2 |
* | Vynásobte | a * b = 50 |
% | Modul | b % a = 0 |
2. Bitové operátory
Každý bit je prevádzkovaný, výsledkom je veľkosť najväčšieho operandu a menší operand je ponechaný rozšírený o nuly na veľkosť väčšieho operandu.
Charakter | Operácia vykonaná | Príklad |
~ | Invertujte každý bit | ~a = 3'b010 |
& | A každý kúsok | b a c = 3'b010 |
| | Alebo každý kúsok | a | b = 3'b111 |
^ | Xor každý bit | a ^ b = 3'b011 |
^~ alebo ~^ | Xnor každý bit | a ^~ b = 3'b100 |
3. Operátori zníženia
Tieto operátory redukujú vektory iba na jeden bit. Ak existujú znaky z a x, výsledkom môže byť známa hodnota.
Charakter | Operácia vykonaná | Príklad |
& | A všetky kúsky | &a = 1'b0, &d = 1'b0 |
~& | Nand všetky kúsky | ~&a = 1'b1 |
| | Alebo všetky kúsky | |a = 1'b1, |c = 1'bX |
~| | Ani všetky kúsky | ~|a= 1'b0 |
^ | Xor všetky bity | ^a = 1'b1 |
^~ alebo ~^ | Xnor všetky bity | ~^a = 1'b0 |
4. Vzťahoví operátori
Tieto operátory porovnávajú operandy a výsledkom je 1-bitová skalárna booleovská hodnota. Operátory rovnosti a nerovnosti prípadu možno použiť pre neznáme alebo vysoké hodnoty impedancie (z alebo x), a ak sú tieto dva operandy neznáme, výsledkom je 1.
Charakter | Operácia vykonaná | Príklad |
> | Väčší než | a > b = 1'b0 |
< | Menšia než | a |
>= | Väčšie alebo rovné | a >= d = 1'bX |
<=< td> | Menšie alebo rovnaké | a<= e='1'bX</td'> => | =<>
== | Rovnosť | a == b = 1'b0 |
!= | Nerovnosť | a != b = 1'b1 |
=== | Rovnosť prípadov | e === e = 1'b1 |
!=== | Prípadová nerovnosť | a !== d = 1'b1 |
5. Logické operátory
Tieto operátory porovnávajú operandy a výsledkom je 1-bitová skalárna booleovská hodnota.
Charakter | Operácia vykonaná | Príklad |
! | Nepravda | !(a && b) = 1'b1 |
&& | Oba výrazy sú pravdivé | a && b = 1'b0 |
|| | Jeden alebo oba výrazy sú pravdivé | a || b = 1'b1 |
6. Operátori zmien
Tieto operátory posúvajú operandy doprava alebo doľava, veľkosť sa udržiava konštantná, posunuté bity sa strácajú a vektor je vyplnený nulami.
skener v jave
Charakter | Operácia vykonaná | Príklad |
>> | Shift doprava | b >> 1 výsledky 4?b010X |
<< | Shift doľava | a << 2 výsledky 4?b1000 |
7. Operátori pridelenia
Existujú tri operátory priradenia, z ktorých každý vykonáva iné úlohy a používa sa s rôznymi typmi údajov:
- priradiť (priebežné priraďovanie)
- <= (non-blocking assignment)< li>
- = (blokovanie úlohy) =>
8. Iní prevádzkovatelia
Sú to operátory používané na testovanie stavu a na vytváranie vektorov.
Charakter | Operácia vykonaná | Príklad |
?: | Testovanie podmienok | skúšobná podmienka ? ak je pravda, urobte toto alebo ak nie, urobte toto |
{} | zreťaziť | c = {a,b} = 8'101010x0 |
{{}} | Replikovať | {3{2'b10}}= 6'b101010 |
9. Prednosť operátorov
Poradie tabuľky hovorí, ktorá operácia sa vykoná ako prvá. Prvý z nich má najvyššiu prioritu. Znak () možno použiť na prepísanie predvoleného nastavenia.
Prednosť operátorov |
---|
+, -, !, ~ (unárne) |
+,- (binárne) |
<> |
,= |
==, != |
& |
^, ^~ alebo ~^ |
| |
&& |
|| |
?: |