logo

Verilog operatori

Operatori izvode operaciju na jednom ili više operanda unutar izraza. Izraz kombinira operande s odgovarajućim operatorima kako bi proizveo željeni funkcionalni izraz.

1. Aritmetički operatori

Za FPGA, dijeljenje i množenje su vrlo skupi, a ponekad ne možemo sintetizirati dijeljenje. Ako koristimo Z ili X za vrijednosti, rezultat je nepoznat. Operacije tretiraju vrijednosti kao nepredznačene.

Lik Operacija obavljena Primjer
+ Dodati b + c = 11
- Oduzmi b - c = 9, -b = -10
/ Podijeliti b/a = 2
* Pomnožiti a * b = 50
% Modul b % a = 0

2. Bitovi operatori

Sa svakim bitom se radi, rezultat je veličina najvećeg operanda, a manji operand ostaje proširen s nulama na veličinu većeg operanda.

Lik Operacija obavljena Primjer
~ Invertirajte svaki bit ~a = 3'b010
i I svaki zalogaj b & c = 3'b010
| Ili svaki bit a | b = 3'b111
^ Xor svaki bit a ^ b = 3'b011
^~ ili ~^ Xnor svaki bit a ^~ b = 3'b100

3. Operatori redukcije

Ovi operatori svode vektore na samo jedan bit. Ako postoje znakovi z i x, rezultat može biti poznata vrijednost.

Lik Operacija obavljena Primjer
i I svi komadići &a = 1'b0, &d = 1'b0
~& Nand sve bitove ~&a = 1'b1
| Ili sve dijelove |a = 1'b1, |c = 1'bX
~| Ni sve dijelove ~|a= 1'b0
^ Xor sve bitove ^a = 1'b1
^~ ili ~^ Xnor svi bitovi ~^a = 1'b0

4. Relacijski operatori

Ovi operatori uspoređuju operande i rezultiraju 1-bitnom skalarnom Booleovom vrijednošću. Operatori jednakosti i nejednakosti mogu se koristiti za nepoznate ili visoke vrijednosti impedancije (z ili x), a ako su dva operanda nepoznata, rezultat je 1.

Lik Operacija obavljena Primjer
> Veći od a > b = 1'b0
< Manji od a
>= Veće ili jednako a >= d = 1'bX
<=< td> Manji od ili jednak a<= e='1'bX</td'>
== Jednakost a == b = 1'b0
!= Nejednakost a != b = 1'b1
=== Jednakost padeža e === e = 1'b1
!=== Nejednakost slučajeva i !== d = 1'b1

5. Logički operatori

Ovi operatori uspoređuju operande i rezultiraju 1-bitnom skalarnom Booleovom vrijednošću.

Lik Operacija obavljena Primjer
! Nije istina !(a && b) = 1'b1
&& Oba izraza istinita a && b = 1'b0
|| Jedan ili oba izraza istinita i || b = 1'b1

6. Operatori pomaka

Ovi operatori pomiču operande udesno ili ulijevo, veličina ostaje konstantna, pomaknuti bitovi se gube, a vektor se ispunjava nulama.

nedostaci vezani uz internet
Lik Operacija obavljena Primjer
>> Pomak udesno b >> 1 rezultata 4?b010X
<< Pomak ulijevo a << 2 rezultata 4?b1000

7. Operatori dodjele

Postoje tri operatora dodjele, od kojih svaki obavlja različite zadatke i koriste se s različitim tipovima podataka:

  • dodijeliti (kontinuirana dodjela)
  • <= (non-blocking assignment)< li>
  • = (dodjela blokiranja)

8. Ostali operateri

Ovo su operatori koji se koriste za testiranje uvjeta i stvaranje vektora.

Lik Operacija obavljena Primjer
?: Ispitivanje uvjeta test kond. ? ako je istina učinite ovo ili ako nije učinite ovo
{} Spojiti c = {a,b} = 8'101010x0
{{}} Ponoviti {3{2'b10}}= 6'b101010

9. Prioritet operatora

Redoslijed u tablici govori koja se operacija izvodi prva. Prvi ima najveći prioritet. () se može koristiti za nadjačavanje zadane vrijednosti.

Prioritet operatora
+, -, !, ~ (unarni)
+,- (binarni)
<>
,=
==, !=
i
^, ^~ ili ~^
|
&&
||
?: