Operatører udfører en operation på en eller flere operander i et udtryk. Et udtryk kombinerer operander med passende operatorer for at producere det ønskede funktionelle udtryk.
1. Aritmetiske operatorer
For FPGA er division og multiplikation meget dyre, og nogle gange kan vi ikke syntetisere division. Hvis vi bruger Z eller X til værdier, er resultatet ukendt. Operationerne behandler værdierne som usignerede.
Karakter | Operation udført | Eksempel |
+ | Tilføje | b + c = 11 |
- | Subtrac | b - c = 9, -b = -10 |
/ | Dele | b/a = 2 |
* | Formere sig | a * b = 50 |
% | Modulus | b % a = 0 |
2. Bitvise operatører
Hver bit betjenes, resultatet er størrelsen af den største operand, og den mindre operand efterlades udvidet med nuller til den større operands størrelse.
Karakter | Operation udført | Eksempel |
~ | Vend hver bit | ~a = 3'b010 |
& | Og hver bid | b & c = 3'b010 |
| | Eller hver bid | en | b = 3'b111 |
^ | Xor hver bit | a ^ b = 3'b011 |
^~ eller ~^ | Xnor hver bit | a ^~ b = 3'b100 |
3. Reduktionsoperatører
Disse operatorer reducerer vektorerne til kun én bit. Hvis der er tegnene z og x, kan resultatet være en kendt værdi.
Karakter | Operation udført | Eksempel |
& | Og alt sammen | &a = 1'b0, &d = 1'b0 |
~& | Nand alle dele | ~&a = 1'b1 |
| | Eller alle dele | |a = 1'b1, |c = 1'bX |
~| | Heller ikke alle dele | ~|a= 1'b0 |
^ | Xor alle bits | ^a = 1'b1 |
^~ eller ~^ | Xnor alle bits | ~^a = 1'b0 |
4. Relationelle operatører
Disse operatorer sammenligner operander og resulterer i en 1-bit skalar boolsk værdi. Case-ligheds- og ulighedsoperatorerne kan bruges til ukendte eller høje impedansværdier (z eller x), og hvis de to operander er ukendte, er resultatet en 1.
Karakter | Operation udført | Eksempel |
> | Bedre end | a > b = 1'b0 |
< | Mindre end | -en |
>= | Større end eller lig | a >= d = 1'bX |
<=< td> | Mindre end eller lig | -en<= e='1'bX</td'> => | =<>
== | Lighed | a == b = 1'b0 |
!= | Ulighed | a != b = 1'b1 |
=== | Sagslighed | e === e = 1'b1 |
!=== | Ulighed i sager | og !== d = 1'b1 |
5. Logiske operatører
Disse operatorer sammenligner operander og resulterer i en 1-bit skalar boolsk værdi.
Karakter | Operation udført | Eksempel |
! | Ikke sandt | !(a && b) = 1'b1 |
&& | Begge udtryk er sande | a && b = 1'b0 |
|| | Et eller begge udtryk er sande | og || b = 1'b1 |
6. Skifteoperatører
Disse operatorer skifter operander til højre eller venstre, størrelsen holdes konstant, forskudte bits går tabt, og vektoren er fyldt med nuller.
erstatte en farve i gimp
Karakter | Operation udført | Eksempel |
>> | Skift til højre | b >> 1 resultater 4?b010X |
<< | Skift til venstre | a << 2 resultater 4?b1000 |
7. Opgaveoperatører
Der er tre tildelingsoperatører, som hver udfører forskellige opgaver og bruges med forskellige datatyper:
- tildele (løbende tildeling)
- <= (non-blocking assignment)< li>
- = (blokerende opgave) =>
8. Andre operatører
Disse er operatorer, der bruges til tilstandstest og til at skabe vektorer.
Karakter | Operation udført | Eksempel |
?: | Forholdstest | test kond. ? hvis sandt gør dette eller hvis ikke gør dette |
{} | Sammenkæd | c = {a,b} = 8'101010x0 |
{{}} | Repliker | {3{2'b10}}= 6'b101010 |
9. Operatørers forrang
Rækkefølgen af tabellen fortæller, hvilken handling der foretages først. Den første har højeste prioritet. () kan bruges til at tilsidesætte standarden.
Operatørers forrang |
---|
+, -, !, ~ (unær) |
+,- (Binær) |
<> |
,= |
==, != |
& |
^, ^~ eller ~^ |
| |
&& |
|| |
?: |