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