logo

Operadors de Verilog

Els operadors realitzen una operació sobre un o més operands dins d'una expressió. Una expressió combina operands amb operadors adequats per produir l'expressió funcional desitjada.

1. Operadors aritmètics

Per a l'FPGA, la divisió i la multiplicació són molt cares, i de vegades no podem sintetitzar la divisió. Si utilitzem Z o X per a valors, el resultat és desconegut. Les operacions tracten els valors com a sense signe.

Personatge Operació realitzada Exemple
+ Afegeix b + c = 11
- Resta b - c = 9, -b=-10
/ Divideix b/a = 2
* Multiplicar a * b = 50
% Mòdul b % a = 0

2. Operadors bit a bit

Cada bit s'opera, el resultat és la mida de l'operand més gran i l'operand més petit es deixa estès amb zeros a la mida de l'operand més gran.

Personatge Operació realitzada Exemple
~ Inverteix cada bit ~a = 3'b010
& I cada tros b i c = 3'b010
| O cada bit a | b = 3'b111
^ Xo cada bit a ^ b = 3'b011
^~ o ~^ Xnor cada bit a ^~ b = 3'b100

3. Operadors de reducció

Aquests operadors redueixen els vectors a només un bit. Si hi ha els caràcters z i x, el resultat pot ser un valor conegut.

Personatge Operació realitzada Exemple
& I tots els trossos &a = 1'b0, &d = 1'b0
~& Nand tots els bits ~&a = 1'b1
| O tots els trossos |a = 1'b1, |c = 1'bX
~| Ni tots els trossos ~|a= 1'b0
^ Xor tots els bits ^a = 1'b1
^~ o ~^ Xnor tots els bits ~^a = 1'b0

4. Operadors relacionals

Aquests operadors comparen operands i donen com a resultat un valor booleà escalar d'1 bit. Els operadors d'igualtat i desigualtat de casos es poden utilitzar per a valors desconeguts o d'alta impedància (z o x), i si els dos operands són desconeguts, el resultat és un 1.

Personatge Operació realitzada Exemple
> Més gran que a > b = 1'b0
< Menor que a
>= Major o igual a >= d = 1'bX
<=< td> Més petit o igual a<= e='1'bX</td'>
== Igualtat a == b = 1'b0
!= Desigualtat a != b = 1'b1
=== Igualtat de casos e === e = 1'b1
!=== Desigualtat de casos i !== d = 1'b1

5. Operadors lògics

Aquests operadors comparen operands i donen com a resultat un valor booleà escalar d'1 bit.

Personatge Operació realitzada Exemple
! No és cert !(a && b) = 1'b1
&& Les dues expressions són certes a && b = 1'b0
|| Una o les dues expressions són certes i || b = 1'b1

6. Operadors de torn

Aquests operadors desplacen els operands cap a la dreta o l'esquerra, la mida es manté constant, els bits desplaçats es perden i el vector s'omple de zeros.

com comprovar la mida de la pantalla
Personatge Operació realitzada Exemple
>> Canvia a la dreta b >> 1 resultats 4?b010X
<< Canvieu cap a l'esquerra a << 2 resultats 4?b1000

7. Operadors d'assignació

Hi ha tres operadors d'assignació, cadascun dels quals realitza tasques diferents i s'utilitzen amb diferents tipus de dades:

  • assignar (assignació contínua)
  • <= (non-blocking assignment)< li>
  • = (assignació de bloqueig)

8. Altres operadors

Aquests són operadors utilitzats per a la prova de condicions i per crear vectors.

Personatge Operació realitzada Exemple
?: Prova de condicions prova cond. ? si és cert fes això o si no fes això
{} Concatenar c = {a,b} = 8'101010x0
{{}} Replicar {3{2'b10}}= 6'b101010

9. Precedència d'operadors

L'ordre de la taula indica quina operació es fa primer. El primer té la màxima prioritat. El () es pot utilitzar per anul·lar el valor predeterminat.

Precedència dels operadors
+, -, !, ~ (Unari)
+,- (binari)
<>
,=
==, !=
&
^, ^~ o ~^
|
&&
||
?: