logo

Verilog-operatörer

Operatörer utför en operation på en eller flera operander i ett uttryck. Ett uttryck kombinerar operander med lämpliga operatorer för att producera det önskade funktionella uttrycket.

1. Aritmetiska operatorer

För FPGA är division och multiplikation mycket dyra, och ibland kan vi inte syntetisera division. Om vi ​​använder Z eller X för värden är resultatet okänt. Operationerna behandlar värdena som osignerade.

Karaktär Operation utförd Exempel
+ Lägg till b + c = 11
- Subtrac b - c = 9, -b = -10
/ Dela upp b/a = 2
* Multiplicera a * b = 50
% Modul b % a = 0

2. Bitvisa operatörer

Varje bit opereras, resultatet är storleken på den största operanden, och den mindre operanden lämnas förlängd med nollor till den större operandens storlek.

Karaktär Operation utförd Exempel
~ Invertera varje bit ~a = 3'b010
& Och varje bit b & c = 3'b010
| Eller varje bit en | b = 3'b111
^ Xor varje bit a ^ b = 3'b011
^~ eller ~^ Xnor varje bit a ^~ b = 3'b100

3. Reduktionsoperatörer

Dessa operatorer reducerar vektorerna till endast en bit. Om det finns tecknen z och x kan resultatet bli ett känt värde.

Karaktär Operation utförd Exempel
& Och alla bitar &a = 1'b0, &d = 1'b0
~& Och alla bitar ~&a = 1'b1
| Eller alla bitar |a = 1'bl, |c = 1'bX
~| Inte heller alla bitar ~|a= 1'b0
^ Xor alla bitar ^a = 1'b1
^~ eller ~^ Xnor alla bitar ~^a = 1'b0

4. Relationella operatörer

Dessa operatorer jämför operander och resulterar i ett 1-bitars skalärt booleskt värde. Operatörerna för falllikhet och ojämlikhet kan användas för okända eller höga impedansvärden (z eller x), och om de två operanderna är okända blir resultatet en 1.

Karaktär Operation utförd Exempel
> Större än a > b = 1'b0
< Mindre än a
>= Större än eller lika med a >= d = 1'bX
<=< td> Mindre än eller lika a<= e='1'bX</td'>
== Jämlikhet a == b = 1'b0
!= Olikhet a != b = 1'b1
=== Jämställdhet e === e = 1'b1
!=== Ojämlikhet i fall och !== d = 1'b1

5. Logiska operatörer

Dessa operatorer jämför operander och resulterar i ett 1-bitars skalärt booleskt värde.

Karaktär Operation utförd Exempel
! Inte sant !(a && b) = 1'b1
&& Båda uttrycken är sanna a && b = 1'b0
|| Ett eller båda uttrycken är sanna och || b = 1'b1

6. Växlingsoperatörer

Dessa operatorer skiftar operander åt höger eller vänster, storleken hålls konstant, skiftade bitar går förlorade och vektorn fylls med nollor.

java-sträng till boolesk
Karaktär Operation utförd Exempel
>> Växla åt höger b >> 1 resultat 4?b010X
<< Växla åt vänster a << 2 resultat 4?b1000

7. Uppdragsoperatörer

Det finns tre uppdragsoperatörer, som var och en utför olika uppgifter och används med olika datatyper:

  • tilldela (löpande tilldelning)
  • <= (non-blocking assignment)< li>
  • = (blockerande tilldelning)

8. Andra operatörer

Dessa är operatorer som används för tillståndstestning och för att skapa vektorer.

Karaktär Operation utförd Exempel
?: Villkorstestning provkondition. ? om det är sant gör det här eller om inte gör det här
{} Sammanfoga c = {a,b} = 8'101010x0
{{}} Återskapa {3{2'b10}}= 6'b101010

9. Operatörernas företräde

Tabellordningen talar om vilken operation som görs först. Den första har högsta prioritet. () kan användas för att åsidosätta standardinställningen.

Operatörernas företräde
+, -, !, ~ (unär)
+,- (binär)
<>
,=
==, !=
&
^, ^~ eller ~^
|
&&
||
?: