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 ~^ |
| |
&& |
|| |
?: |