Operatori izvode operaciju na jednom ili više operanda unutar izraza. Izraz kombinira operande s odgovarajućim operatorima kako bi proizveo željeni funkcionalni izraz.
1. Aritmetički operatori
Za FPGA, dijeljenje i množenje su vrlo skupi, a ponekad ne možemo sintetizirati dijeljenje. Ako koristimo Z ili X za vrijednosti, rezultat je nepoznat. Operacije tretiraju vrijednosti kao nepredznačene.
Lik | Operacija obavljena | Primjer |
+ | Dodati | b + c = 11 |
- | Oduzmi | b - c = 9, -b = -10 |
/ | Podijeliti | b/a = 2 |
* | Pomnožiti | a * b = 50 |
% | Modul | b % a = 0 |
2. Bitovi operatori
Sa svakim bitom se radi, rezultat je veličina najvećeg operanda, a manji operand ostaje proširen s nulama na veličinu većeg operanda.
Lik | Operacija obavljena | Primjer |
~ | Invertirajte svaki bit | ~a = 3'b010 |
i | I svaki zalogaj | b & c = 3'b010 |
| | Ili svaki bit | a | b = 3'b111 |
^ | Xor svaki bit | a ^ b = 3'b011 |
^~ ili ~^ | Xnor svaki bit | a ^~ b = 3'b100 |
3. Operatori redukcije
Ovi operatori svode vektore na samo jedan bit. Ako postoje znakovi z i x, rezultat može biti poznata vrijednost.
Lik | Operacija obavljena | Primjer |
i | I svi komadići | &a = 1'b0, &d = 1'b0 |
~& | Nand sve bitove | ~&a = 1'b1 |
| | Ili sve dijelove | |a = 1'b1, |c = 1'bX |
~| | Ni sve dijelove | ~|a= 1'b0 |
^ | Xor sve bitove | ^a = 1'b1 |
^~ ili ~^ | Xnor svi bitovi | ~^a = 1'b0 |
4. Relacijski operatori
Ovi operatori uspoređuju operande i rezultiraju 1-bitnom skalarnom Booleovom vrijednošću. Operatori jednakosti i nejednakosti mogu se koristiti za nepoznate ili visoke vrijednosti impedancije (z ili x), a ako su dva operanda nepoznata, rezultat je 1.
Lik | Operacija obavljena | Primjer |
> | Veći od | a > b = 1'b0 |
< | Manji od | a |
>= | Veće ili jednako | a >= d = 1'bX |
<=< td> | Manji od ili jednak | a<= e='1'bX</td'> => | =<>
== | Jednakost | a == b = 1'b0 |
!= | Nejednakost | a != b = 1'b1 |
=== | Jednakost padeža | e === e = 1'b1 |
!=== | Nejednakost slučajeva | i !== d = 1'b1 |
5. Logički operatori
Ovi operatori uspoređuju operande i rezultiraju 1-bitnom skalarnom Booleovom vrijednošću.
Lik | Operacija obavljena | Primjer |
! | Nije istina | !(a && b) = 1'b1 |
&& | Oba izraza istinita | a && b = 1'b0 |
|| | Jedan ili oba izraza istinita | i || b = 1'b1 |
6. Operatori pomaka
Ovi operatori pomiču operande udesno ili ulijevo, veličina ostaje konstantna, pomaknuti bitovi se gube, a vektor se ispunjava nulama.
nedostaci vezani uz internet
Lik | Operacija obavljena | Primjer |
>> | Pomak udesno | b >> 1 rezultata 4?b010X |
<< | Pomak ulijevo | a << 2 rezultata 4?b1000 |
7. Operatori dodjele
Postoje tri operatora dodjele, od kojih svaki obavlja različite zadatke i koriste se s različitim tipovima podataka:
- dodijeliti (kontinuirana dodjela)
- <= (non-blocking assignment)< li>
- = (dodjela blokiranja) =>
8. Ostali operateri
Ovo su operatori koji se koriste za testiranje uvjeta i stvaranje vektora.
Lik | Operacija obavljena | Primjer |
?: | Ispitivanje uvjeta | test kond. ? ako je istina učinite ovo ili ako nije učinite ovo |
{} | Spojiti | c = {a,b} = 8'101010x0 |
{{}} | Ponoviti | {3{2'b10}}= 6'b101010 |
9. Prioritet operatora
Redoslijed u tablici govori koja se operacija izvodi prva. Prvi ima najveći prioritet. () se može koristiti za nadjačavanje zadane vrijednosti.
Prioritet operatora |
---|
+, -, !, ~ (unarni) |
+,- (binarni) |
<> |
,= |
==, != |
i |
^, ^~ ili ~^ |
| |
&& |
|| |
?: |