Operatorji izvajajo operacijo na enem ali več operandih znotraj izraza. Izraz združuje operande z ustreznimi operatorji, da ustvari želeni funkcionalni izraz.
1. Aritmetični operatorji
Za FPGA sta deljenje in množenje zelo draga in včasih ne moremo sintetizirati deljenja. Če za vrednosti uporabimo Z ali X, rezultat ni znan. Operacije obravnavajo vrednosti kot nepredznačene.
Znak | Operacija izvedena | Primer |
+ | Dodaj | b + c = 11 |
- | odštej | b - c = 9, -b = -10 |
/ | Razdeli | b / a = 2 |
* | Pomnožite | a * b = 50 |
% | Modul | b % a = 0 |
2. Bitni operaterji
Vsak bit se upravlja, rezultat je velikost največjega operanda, manjši operand pa ostane razširjen z ničlami na velikost večjega operanda.
Znak | Operacija izvedena | Primer |
~ | Obrnite vsak bit | ~a = 3'b010 |
& | In vsak košček | b & c = 3'b010 |
| | Ali vsak košček | a | b = 3'b111 |
^ | Xor vsak bit | a ^ b = 3'b011 |
^~ ali ~^ | Xnor vsak bit | a ^~ b = 3'b100 |
3. Operatorji redukcije
Ti operaterji zmanjšajo vektorje na samo en bit. Če obstajata znaka z in x, je lahko rezultat znana vrednost.
Znak | Operacija izvedena | Primer |
& | In vse koščke | &a = 1'b0, &d = 1'b0 |
~& | Nand vse bite | ~&a = 1'b1 |
| | Ali vse koščke | |a = 1'b1, |c = 1'bX |
~| | Niti vsi deli | ~|a= 1'b0 |
^ | Xor vsi bitovi | ^a = 1'b1 |
^~ ali ~^ | Xnor vsi bitovi | ~^a = 1'b0 |
4. Relacijski operaterji
Ti operaterji primerjajo operande in dobijo 1-bitno skalarno logično vrednost. Operatorja za enakost in neenakost lahko uporabite za neznane ali visoke vrednosti impedance (z ali x), in če sta operanda neznana, je rezultat 1.
Znak | Operacija izvedena | Primer |
> | Večji kot | a > b = 1'b0 |
< | Manjši od | a |
>= | Večje ali enako | a >= d = 1'bX |
<=< td> | Manjši ali enak | a<= e='1'bX</td'> => | =<>
== | Enakopravnost | a == b = 1'b0 |
!= | Neenakost | a != b = 1'b1 |
=== | Enakost malih in malih črk | e === e = 1'b1 |
!=== | Neenakost primerov | in !== d = 1'b1 |
5. Logični operatorji
Ti operaterji primerjajo operande in dobijo 1-bitno skalarno logično vrednost.
Znak | Operacija izvedena | Primer |
! | Ni res | !(a && b) = 1'b1 |
&& | Oba izraza držita | a && b = 1'b0 |
|| | En ali oba izraza držita | in || b = 1'b1 |
6. Operaterji premika
Ti operaterji premaknejo operande v desno ali levo, velikost ostane konstantna, premaknjeni biti se izgubijo in vektor se napolni z ničlami.
program v java
Znak | Operacija izvedena | Primer |
>> | Premik desno | b >> 1 rezultatov 4?b010X |
<< | Premik levo | a << 2 rezultata 4?b1000 |
7. Operatorji dodelitve
Obstajajo trije operatorji dodelitve, od katerih vsak opravlja različne naloge in se uporabljajo z različnimi vrstami podatkov:
- dodeliti (stalna dodelitev)
- <= (non-blocking assignment)< li>
- = (dodelitev blokiranja) =>
8. Drugi operaterji
To so operaterji, ki se uporabljajo za testiranje pogojev in ustvarjanje vektorjev.
Znak | Operacija izvedena | Primer |
?: | Testiranje pogojev | test kond. ? če je res, naredi to ali če ne naredi to |
{} | Združiti | c = {a,b} = 8'101010x0 |
{{}} | Repliciraj | {3{2'b10}}= 6'b101010 |
9. Prednost operaterjev
Vrstni red v tabeli pove, katera operacija se najprej izvede. Prvi ima najvišjo prednost. () lahko uporabite za preglasitev privzete vrednosti.
Prednost operaterjev |
---|
+, -, !, ~ (enorno) |
+,- (binarni) |
<> |
,= |
==, != |
& |
^, ^~ ali ~^ |
| |
&& |
|| |
?: |