logo

Verilog operátorok

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