logo

Verilog-operatører

Operatører utfører en operasjon på en eller flere operander i et uttrykk. Et uttrykk kombinerer operander med passende operatorer for å produsere det ønskede funksjonelle uttrykket.

1. Aritmetiske operatorer

For FPGA er divisjon og multiplikasjon veldig kostbart, og noen ganger kan vi ikke syntetisere divisjon. Hvis vi bruker Z eller X for verdier, er resultatet ukjent. Operasjonene behandler verdiene som usignerte.

Karakter Operasjon utført Eksempel
+ Legg til b + c = 11
- Subtrac b - c = 9, -b = -10
/ Dele opp b/a = 2
* Multiplisere a * b = 50
% Modulus b % a = 0

2. Bitvise operatører

Hver bit blir operert, resultatet er størrelsen på den største operanden, og den mindre operanden blir utvidet med nuller til den større operandens størrelse.

Karakter Operasjon utført Eksempel
~ Inverter hver bit ~a = 3'b010
& Og hver bit b & c = 3'b010
| Eller hver bit en | b = 3'b111
^ Xor hver bit a ^ b = 3'b011
^~ eller ~^ Xnor hver bit a ^~ b = 3'b100

3. Reduksjonsoperatører

Disse operatorene reduserer vektorene til bare én bit. Hvis det er tegnene z og x, kan resultatet være en kjent verdi.

Karakter Operasjon utført Eksempel
& Og alle biter &a = 1'b0, &d = 1'b0
~& Nand alle biter ~&a = 1'b1
| Eller alle biter |a = 1'b1, |c = 1'bX
~| Heller ikke alle biter ~|a= 1'b0
^ Xor alle biter ^a = 1'b1
^~ eller ~^ Xnor alle biter ~^a = 1'b0

4. Relasjonelle operatører

Disse operatorene sammenligner operander og resulterer i en 1-bits skalar boolsk verdi. Operatorene for kasuslikhet og ulikhet kan brukes for ukjente eller høye impedansverdier (z eller x), og hvis de to operandene er ukjente, er resultatet en 1.

Karakter Operasjon utført Eksempel
> Større enn a > b = 1'b0
< Mindre enn en
>= Større enn eller lik a >= d = 1'bX
<=< td> Mindre enn eller lik en<= e='1'bX</td'>
== Likestilling a == b = 1'b0
!= Ulikhet a != b = 1'b1
=== Sakslikhet e === e = 1'b1
!=== Saksulikhet og !== d = 1'b1

5. Logiske operatører

Disse operatorene sammenligner operander og resulterer i en 1-bits skalar boolsk verdi.

Karakter Operasjon utført Eksempel
! Ikke sant !(a && b) = 1'b1
&& Begge uttrykkene er sanne a && b = 1'b0
|| Ett eller begge uttrykk er sanne og || b = 1'b1

6. Skiftoperatører

Disse operatørene skifter operander til høyre eller venstre, størrelsen holdes konstant, forskjøvede biter går tapt, og vektoren fylles med nuller.

erstatte en farge i gimp
Karakter Operasjon utført Eksempel
>> Skift til høyre b >> 1 resultater 4?b010X
<< Skift til venstre a << 2 resultater 4?b1000

7. Oppdragsoperatører

Det er tre oppdragsoperatører, som hver utfører forskjellige oppgaver, og brukes med forskjellige datatyper:

  • tilordne (løpende oppdrag)
  • <= (non-blocking assignment)< li>
  • = (blokkeringsoppdrag)

8. Andre operatører

Dette er operatorer som brukes til tilstandstesting og for å lage vektorer.

Karakter Operasjon utført Eksempel
?: Forholdstesting prøvekond. ? hvis sant gjør dette eller hvis ikke gjør dette
{} Sammenknytt c = {a,b} = 8'101010x0
{{}} Gjenskape {3{2'b10}}= 6'b101010

9. Operatørers forrang

Rekkefølgen på tabellen forteller hvilken operasjon som gjøres først. Den første har høyeste prioritet. () kan brukes til å overstyre standarden.

Operatørers forrang
+, -, !, ~ (unær)
+,- (binær)
<>
,=
==, !=
&
^, ^~ eller ~^
|
&&
||
?: