logo

Verilog-operators

Operators voeren een bewerking uit op een of meer operanden binnen een expressie. Een expressie combineert operanden met geschikte operatoren om de gewenste functionele expressie te produceren.

1. Rekenkundige operatoren

Voor de FPGA zijn delen en vermenigvuldigen erg duur, en soms kunnen we deling niet synthetiseren. Als we Z of X voor waarden gebruiken, is het resultaat onbekend. De bewerkingen behandelen de waarden als niet-ondertekend.

Karakter Operatie uitgevoerd Voorbeeld
+ Toevoegen b+c=11
- Aftrekken b - c = 9, -b = -10
/ Verdeling b / een = 2
* Vermenigvuldigen een * b = 50
% Module b% a = 0

2. Bitwise-operatoren

Elke bit wordt bewerkt, het resultaat is de grootte van de grootste operand, en de kleinere operand wordt uitgebreid met nullen tot de grootte van de grotere operand.

Karakter Operatie uitgevoerd Voorbeeld
~ Keer elk bit om ~a = 3'b010
& En elk stukje b & c = 3'b010
| Of elk stukje een | b = 3'b111
^ Xor elk bit a ^ b = 3'b011
^~ of ~^ Xnor elk stukje a ^~ b = 3'b100

3. Reductie-operatoren

Deze operatoren reduceren de vectoren tot slechts één bit. Als er de tekens z en x aanwezig zijn, kan het resultaat een bekende waarde zijn.

Karakter Operatie uitgevoerd Voorbeeld
& En allemaal stukjes &a = 1'b0, &d = 1'b0
~& Nand alle stukjes ~&a = 1'b1
| Of allemaal stukjes |a = 1'b1, |c = 1'bX
~| Ook niet alle stukjes ~|a= 1'b0
^ Xor alle bits ^a = 1'b1
^~ of ~^ Xnor alle bits ~^a = 1'b0

4. Relationele operators

Deze operatoren vergelijken operanden en resulteren in een 1-bit scalaire Booleaanse waarde. De operatoren voor gevalsgelijkheid en ongelijkheid kunnen worden gebruikt voor onbekende of hoge impedantiewaarden (z of x), en als de twee operanden onbekend zijn, is het resultaat een 1.

Karakter Operatie uitgevoerd Voorbeeld
> Groter dan a > b = 1'b0
< Kleiner dan A
>= Groter dan of gelijk aan a >= d = 1'bX
<=< td> Kleiner dan of gelijk A<= e='1'bX</td'>
== Gelijkwaardigheid a == b = 1'b0
!= Ongelijkheid a != b = 1'b1
=== Gelijkheid van gevallen e === e = 1'b1
!=== Ongelijkheid van gevallen en !== d = 1'b1

5. Logische operatoren

Deze operatoren vergelijken operanden en resulteren in een 1-bit scalaire Booleaanse waarde.

Karakter Operatie uitgevoerd Voorbeeld
! Niet waar !(a && b) = 1'b1
&& Beide uitdrukkingen zijn waar a && b = 1'b0
|| Eén of beide uitdrukkingen zijn waar en || b = 1'b1

6. Shiftoperatoren

Deze operatoren verschuiven operanden naar rechts of links, de grootte wordt constant gehouden, verschoven bits gaan verloren en de vector wordt gevuld met nullen.

objectief Java
Karakter Operatie uitgevoerd Voorbeeld
>> Schakel naar rechts b >> 1 resultaten 4?b010X
<< Schakel naar links a << 2 resultaten 4?b1000

7. Toewijzingsoperatoren

Er zijn drie toewijzingsoperatoren, die elk verschillende taken uitvoeren en worden gebruikt met verschillende gegevenstypen:

  • toewijzen (doorlopende toewijzing)
  • <= (non-blocking assignment)< li>
  • = (blokkeertoewijzing)

8. Andere exploitanten

Dit zijn operators die worden gebruikt voor conditietesten en om vectoren te creëren.

Karakter Operatie uitgevoerd Voorbeeld
?: Voorwaarden testen testcond. ? indien waar, doe dit of indien niet, doe dit
{} Samenvoegen c = {a,b} = 8'101010x0
{{}} Repliceren {3{2'b10}}= 6'b101010

9. Voorrang van operators

De volgorde van de tabel geeft aan welke bewerking als eerste wordt uitgevoerd. De eerste heeft de hoogste prioriteit. De () kan worden gebruikt om de standaardwaarde te overschrijven.

Voorrang van operators
+, -, !, ~ (Unair)
+,- (Binair)
<>
,=
==, !=
&
^, ^~ of ~^
|
&&
||
?: