Az operátorok egy kifejezésen belül egy vagy több operanduson hajtanak végre műveletet. Egy kifejezés az operandusokat a megfelelő operátorokkal kombinálja a kívánt funkcionális kifejezés létrehozásához.
1. Aritmetikai operátorok
Az FPGA esetében az osztás és szorzás nagyon drága, és néha nem tudunk osztást szintetizálni. Ha Z vagy X értékeket használunk, az eredmény ismeretlen. A műveletek előjel nélküliként kezelik az értékeket.
karakter | Művelet végrehajtva | Példa |
+ | Hozzáadás | b + c = 11 |
- | Subtrac | b-c = 9, -b = -10 |
/ | Feloszt | b/a = 2 |
* | Szorozni | a * b = 50 |
% | Modulus | b % a = 0 |
2. Bitenkénti operátorok
Minden bitet működtetünk, az eredmény a legnagyobb operandus mérete, és a kisebb operandust nullákkal kibővítjük a nagyobb operandus méretére.
karakter | Művelet végrehajtva | Példa |
~ | Fordítsa meg az egyes biteket | ~a = 3'b010 |
& | És minden egyes darab | b & c = 3'b010 |
| | Vagy minden egyes darabot | a | b = 3'b111 |
^ | X vagy minden bit | a ^ b = 3'b011 |
^~ vagy ~^ | Xnor minden bit | a ^~ b = 3'b100 |
3. Redukciós operátorok
Ezek az operátorok a vektorokat csak egy bitre redukálják. Ha vannak z és x karakterek, az eredmény egy ismert érték lehet.
karakter | Művelet végrehajtva | Példa |
& | És minden apróság | &a = 1'b0, &d = 1'b0 |
~& | És minden apróság | ~&a = 1'b1 |
| | Vagy az összes bitet | |a = 1'b1, |c = 1'bX |
~| | Sem az összes bitet | ~|a= 1'b0 |
^ | X vagy minden bit | ^a = 1'b1 |
^~ vagy ~^ | Xnor minden bit | ~^a = 1'b0 |
4. Relációs operátorok
Ezek az operátorok összehasonlítják az operandusokat, és 1 bites skaláris logikai értéket adnak. Az esetegyenlőség és egyenlőtlenség operátorok használhatók ismeretlen vagy nagy impedancia értékekhez (z vagy x), és ha a két operandus ismeretlen, az eredmény 1.
karakter | Művelet végrehajtva | Példa |
> | Nagyobb, mint | a > b = 1'b0 |
< | Kisebb, mint | a |
>= | Nagyobb vagy egyenlő | a >= d = 1'bX |
<=< td> | Kisebb vagy egyenlő | a<= e='1'bX</td'> => | =<>
== | Egyenlőség | a == b = 1'b0 |
!= | Egyenlőtlenség | a != b = 1'b1 |
=== | Esetek egyenlősége | e === e = 1'b1 |
!=== | Esetek egyenlőtlensége | és !== d = 1'b1 |
5. Logikai operátorok
Ezek az operátorok összehasonlítják az operandusokat, és 1 bites skaláris logikai értéket adnak.
karakter | Művelet végrehajtva | Példa |
! | Nem igaz | !(a && b) = 1'b1 |
&& | Mindkét kifejezés igaz | a && b = 1'b0 |
|| | Egy vagy mindkét kifejezés igaz | és || b = 1'b1 |
6. Műszakkezelők
Ezek az operátorok az operandusokat jobbra vagy balra tolják, a méretet állandóan tartják, az eltolt bitek elvesznek, és a vektort nullákkal töltik meg.
mit csinál ravel a pythonban
karakter | Művelet végrehajtva | Példa |
>> | Váltás jobbra | b >> 1 találat 4?b010X |
<< | Váltás balra | a << 2 eredmény 4?b1000 |
7. Hozzárendelés operátorok
Három hozzárendelési operátor létezik, amelyek mindegyike különböző feladatokat hajt végre, és különböző adattípusokkal használatos:
- hozzárendelés (folyamatos hozzárendelés)
- <= (non-blocking assignment)< li>
- = (blokkoló hozzárendelés) =>
8. Egyéb üzemeltetők
Ezek a feltételek tesztelésére és vektorok létrehozására használt operátorok.
karakter | Művelet végrehajtva | Példa |
?: | Feltételek tesztelése | teszt kond. ? ha igaz, tedd ezt, vagy ha nem, tedd ezt |
{} | Összekapcsol | c = {a,b} = 8'101010x0 |
{{}} | Megismételni | {3{2'b10}}= 6'b101010 |
9. Operátorok elsőbbsége
A táblázat sorrendje megmutatja, hogy melyik műveletet kell először végrehajtani. Az elsőnek van a legmagasabb prioritása. A () segítségével felülírható az alapértelmezett.
Az operátorok elsőbbsége |
---|
+, -, !, ~ (egyetlen) |
+,- (bináris) |
<> |
,= |
==, != |
& |
^, ^~ vagy ~^ |
| |
&& |
|| |
?: |