Operatører utfører en operasjon på en eller flere operander i et uttrykk. Et uttrykk kombinerer operander med passende operatorer for å produsere det ønskede funksjonelle uttrykket.
1. Aritmetiske operatorer
For FPGA er divisjon og multiplikasjon veldig kostbart, og noen ganger kan vi ikke syntetisere divisjon. Hvis vi bruker Z eller X for verdier, er resultatet ukjent. Operasjonene behandler verdiene som usignerte.
Karakter | Operasjon utført | Eksempel |
+ | Legg til | b + c = 11 |
- | Subtrac | b - c = 9, -b = -10 |
/ | Dele opp | b/a = 2 |
* | Multiplisere | a * b = 50 |
% | Modulus | b % a = 0 |
2. Bitvise operatører
Hver bit blir operert, resultatet er størrelsen på den største operanden, og den mindre operanden blir utvidet med nuller til den større operandens størrelse.
Karakter | Operasjon utført | Eksempel |
~ | Inverter hver bit | ~a = 3'b010 |
& | Og hver bit | b & c = 3'b010 |
| | Eller hver bit | en | b = 3'b111 |
^ | Xor hver bit | a ^ b = 3'b011 |
^~ eller ~^ | Xnor hver bit | a ^~ b = 3'b100 |
3. Reduksjonsoperatører
Disse operatorene reduserer vektorene til bare én bit. Hvis det er tegnene z og x, kan resultatet være en kjent verdi.
Karakter | Operasjon utført | Eksempel |
& | Og alle biter | &a = 1'b0, &d = 1'b0 |
~& | Nand alle biter | ~&a = 1'b1 |
| | Eller alle biter | |a = 1'b1, |c = 1'bX |
~| | Heller ikke alle biter | ~|a= 1'b0 |
^ | Xor alle biter | ^a = 1'b1 |
^~ eller ~^ | Xnor alle biter | ~^a = 1'b0 |
4. Relasjonelle operatører
Disse operatorene sammenligner operander og resulterer i en 1-bits skalar boolsk verdi. Operatorene for kasuslikhet og ulikhet kan brukes for ukjente eller høye impedansverdier (z eller x), og hvis de to operandene er ukjente, er resultatet en 1.
Karakter | Operasjon utført | Eksempel |
> | Større enn | a > b = 1'b0 |
< | Mindre enn | en |
>= | Større enn eller lik | a >= d = 1'bX |
<=< td> | Mindre enn eller lik | en<= e='1'bX</td'> => | =<>
== | Likestilling | a == b = 1'b0 |
!= | Ulikhet | a != b = 1'b1 |
=== | Sakslikhet | e === e = 1'b1 |
!=== | Saksulikhet | og !== d = 1'b1 |
5. Logiske operatører
Disse operatorene sammenligner operander og resulterer i en 1-bits skalar boolsk verdi.
Karakter | Operasjon utført | Eksempel |
! | Ikke sant | !(a && b) = 1'b1 |
&& | Begge uttrykkene er sanne | a && b = 1'b0 |
|| | Ett eller begge uttrykk er sanne | og || b = 1'b1 |
6. Skiftoperatører
Disse operatørene skifter operander til høyre eller venstre, størrelsen holdes konstant, forskjøvede biter går tapt, og vektoren fylles med nuller.
erstatte en farge i gimp
Karakter | Operasjon utført | Eksempel |
>> | Skift til høyre | b >> 1 resultater 4?b010X |
<< | Skift til venstre | a << 2 resultater 4?b1000 |
7. Oppdragsoperatører
Det er tre oppdragsoperatører, som hver utfører forskjellige oppgaver, og brukes med forskjellige datatyper:
- tilordne (løpende oppdrag)
- <= (non-blocking assignment)< li>
- = (blokkeringsoppdrag) =>
8. Andre operatører
Dette er operatorer som brukes til tilstandstesting og for å lage vektorer.
Karakter | Operasjon utført | Eksempel |
?: | Forholdstesting | prøvekond. ? hvis sant gjør dette eller hvis ikke gjør dette |
{} | Sammenknytt | c = {a,b} = 8'101010x0 |
{{}} | Gjenskape | {3{2'b10}}= 6'b101010 |
9. Operatørers forrang
Rekkefølgen på tabellen forteller hvilken operasjon som gjøres først. Den første har høyeste prioritet. () kan brukes til å overstyre standarden.
Operatørers forrang |
---|
+, -, !, ~ (unær) |
+,- (binær) |
<> |
,= |
==, != |
& |
^, ^~ eller ~^ |
| |
&& |
|| |
?: |