Operaattorit suorittavat toiminnon yhdelle tai useammalle operandille lausekkeen sisällä. Lauseke yhdistää operandit sopiviin operaattoreihin halutun funktionaalisen lausekkeen tuottamiseksi.
1. Aritmeettiset operaattorit
FPGA:lle jako ja kertominen ovat erittäin kalliita, ja joskus emme voi syntetisoida jakoa. Jos käytämme arvoja Z tai X, tulos on tuntematon. Toiminnot käsittelevät arvoja etumerkittöminä.
Merkki | Operaatio suoritettu | Esimerkki |
+ | Lisätä | b + c = 11 |
- | Subtrac | b - c = 9, -b = -10 |
/ | Jakaa | b/a = 2 |
* | Kerro | a * b = 50 |
% | Modulus | b % a = 0 |
2. Bittioperaattorit
Jokaista bittiä operoidaan, tuloksena on suurimman operandin koko ja pienempi operandi jätetään laajennetuksi nollalla suuremman operandin kokoon.
Merkki | Operaatio suoritettu | Esimerkki |
~ | Käännä jokainen bitti ylösalaisin | ~a = 3'b010 |
& | Ja jokainen pala | b & c = 3'b010 |
| | Tai jokainen pala | a | b = 3'b111 |
^ | X tai jokainen bitti | a ^ b = 3'b011 |
^~ tai ~^ | Xnor jokainen bitti | a ^~ b = 3'b100 |
3. Vähennysoperaattorit
Nämä operaattorit pienentävät vektorit vain yhteen bittiin. Jos on merkkejä z ja x, tulos voi olla tunnettu arvo.
Merkki | Operaatio suoritettu | Esimerkki |
& | Ja kaikki palaset | &a = 1'b0, &d = 1'b0 |
~& | Ja kaikki osat | ~&a = 1'b1 |
| | Tai kaikki osat | |a = 1'b1, |c = 1'bX |
~| | Eikä kaikkia osia | ~|a= 1'b0 |
^ | X tai kaikki bitit | ^a = 1'b1 |
^~ tai ~^ | Xnor kaikki bitit | ~^a = 1'b0 |
4. Relaatiooperaattorit
Nämä operaattorit vertaavat operandeja ja saavat tulokseksi 1-bittisen skalaarin Boolen arvon. Tapauksen yhtäläisyys- ja epäyhtälö-operaattoreita voidaan käyttää tuntemattomille tai suurille impedanssiarvoille (z tai x), ja jos molemmat operandit ovat tuntemattomia, tulos on 1.
Merkki | Operaatio suoritettu | Esimerkki |
> | Suurempi kuin | a > b = 1'b0 |
< | Pienempi kuin | a |
>= | Suurempi tai yhtä suuri | a >= d = 1'bX |
<=< td> | Pienempi tai yhtä suuri | a<= e='1'bX</td'> => | =<>
== | Tasa-arvo | a == b = 1'b0 |
!= | Epätasa-arvo | a != b = 1'b1 |
=== | Tapausten tasa-arvo | e === e = 1'b1 |
!=== | Tapauksen epätasa-arvo | ja !== d = 1'b1 |
5. Loogiset operaattorit
Nämä operaattorit vertaavat operandeja ja saavat tulokseksi 1-bittisen skalaarin Boolen arvon.
Merkki | Operaatio suoritettu | Esimerkki |
! | Ei totta | !(a && b) = 1'b1 |
&& | Molemmat ilmaisut totta | a && b = 1'b0 |
|| | Yksi tai molemmat lausekkeet ovat tosia | ja || b = 1'b1 |
6. Vuorotyöntekijät
Nämä operaattorit siirtävät operandit oikealle tai vasemmalle, koko pidetään vakiona, siirretyt bitit menetetään ja vektori täytetään nolilla.
Task Manager Linuxille
Merkki | Operaatio suoritettu | Esimerkki |
>> | Vaihda oikealle | b >> 1 tulosta 4?b010X |
<< | Vaihto vasemmalle | a << 2 tulosta 4?b1000 |
7. Tehtäväoperaattorit
Tehtäväoperaattoreita on kolme, joista jokainen suorittaa erilaisia tehtäviä ja joita käytetään eri tietotyypeissä:
- antaa (jatkuva tehtävä)
- <= (non-blocking assignment)< li>
- = (estotehtävä) =>
8. Muut operaattorit
Nämä ovat operaattoreita, joita käytetään kuntotestaukseen ja vektoreiden luomiseen.
Merkki | Operaatio suoritettu | Esimerkki |
?: | Olosuhteiden testaus | testi kond. ? jos totta, tee tämä tai jos ei, tee tämä |
{} | Liitä yhteen | c = {a,b} = 8'101010x0 |
{{}} | Kopioi | {3{2'b10}}= 6'b101010 |
9. Operaattorien etusija
Taulukon järjestys kertoo, mikä toimenpide suoritetaan ensin. Ensimmäisellä on korkein prioriteetti. () -näppäintä voidaan käyttää oletusarvon ohittamiseen.
Operaattoreiden etusija |
---|
+, -, !, ~ (yksittäinen) |
+,- (binääri) |
<> |
,= |
==, != |
& |
^, ^~ tai ~^ |
| |
&& |
|| |
?: |