logo

Verilog-operaattorit

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 ~^
|
&&
||
?: