Gli operatori eseguono un'operazione su uno o più operandi all'interno di un'espressione. Un'espressione combina gli operandi con gli operatori appropriati per produrre l'espressione funzionale desiderata.
1. Operatori aritmetici
Per l'FPGA, la divisione e la moltiplicazione sono molto costose e talvolta non è possibile sintetizzare la divisione. Se usiamo Z o X per i valori, il risultato è sconosciuto. Le operazioni trattano i valori come senza segno.
| Carattere | Operazione eseguita | Esempio |
| + | Aggiungere | b + c = 11 |
| - | Sottrac | b - c = 9, -b=-10 |
| / | Dividere | b/a = 2 |
| * | Moltiplicare | a*b = 50 |
| % | Modulo | b%a = 0 |
2. Operatori bit a bit
Ogni bit viene gestito, il risultato è la dimensione dell'operando più grande e l'operando più piccolo viene lasciato esteso con zeri fino alla dimensione dell'operando più grande.
| Carattere | Operazione eseguita | Esempio |
| ~ | Invertire ogni bit | ~a = 3'b010 |
| & | E ogni pezzo | b&c = 3'b010 |
| | | O ogni bit | un | b = 3'b111 |
| ^ | Xo ogni bit | a^b = 3'b011 |
| ^~ o ~^ | Xné ogni bit | un ^~ b = 3'b100 |
3. Operatori di riduzione
Questi operatori riducono i vettori a un solo bit. Se sono presenti i caratteri z e x, il risultato può essere un valore noto.
| Carattere | Operazione eseguita | Esempio |
| & | E tutti i pezzi | &a = 1'b0, &d = 1'b0 |
| ~& | Nand tutti i bit | ~&a = 1'b1 |
| | | O tutti i pezzi | |a = 1'b1, |c = 1'bX |
| ~| | Né tutti i pezzi | ~|a= 1'b0 |
| ^ | Xo tutti i bit | ^a = 1'b1 |
| ^~ o ~^ | Xné tutti i bit | ~^a = 1'b0 |
4. Operatori Relazionali
Questi operatori confrontano gli operandi e restituiscono un valore booleano scalare a 1 bit. Gli operatori di uguaglianza e disuguaglianza possono essere utilizzati per valori di impedenza sconosciuti o elevati (z o x) e se i due operandi sono sconosciuti, il risultato è 1.
| Carattere | Operazione eseguita | Esempio |
| > | Più grande di | a > b = 1'b0 |
| < | Più piccolo di | UN |
| >= | Maggiore o uguale | a >= d = 1'bX |
| <=< td> | Minore o uguale | UN<= e='1'bX</td'> => | =<>
| == | Uguaglianza | a == b = 1'b0 |
| != | Disuguaglianza | a!= b = 1'b1 |
| === | Uguaglianza dei casi | e === e = 1'b1 |
| !=== | Disuguaglianza dei casi | e !== d = 1'b1 |
5. Operatori logici
Questi operatori confrontano gli operandi e restituiscono un valore booleano scalare a 1 bit.
| Carattere | Operazione eseguita | Esempio |
| ! | Non vero | !(a && b) = 1'b1 |
| && | Entrambe le espressioni sono vere | a&& b = 1'b0 |
| || | Una o entrambe le espressioni sono vere | e || b = 1'b1 |
6. Operatori di turno
Questi operatori spostano gli operandi a destra o a sinistra, la dimensione viene mantenuta costante, i bit spostati vengono persi e il vettore viene riempito di zeri.
Immagini icloud su Android
| Carattere | Operazione eseguita | Esempio |
| >> | Spostati a destra | b >> 1 risultato 4?b010X |
| << | Spostati a sinistra | a << 2 risultati 4?b1000 |
7. Operatori di Assegnazione
Esistono tre operatori di assegnazione, ognuno dei quali esegue attività diverse e vengono utilizzati con tipi di dati diversi:
- assegnare (assegnazione continua)
- <= (non-blocking assignment)< li>
- = (assegnazione bloccante) =>
8. Altri Operatori
Si tratta di operatori utilizzati per i test delle condizioni e per creare vettori.
| Carattere | Operazione eseguita | Esempio |
| ?: | Test delle condizioni | cond. di prova ? se è vero, fai così, altrimenti fallo |
| {} | Concatenare | c = {a,b} = 8'101010x0 |
| {{}} | Replicare | {3{2'b10}}= 6'b101010 |
9. Precedenza degli operatori
L'ordine della tabella indica quale operazione viene eseguita per prima. Il primo ha la massima priorità. Il carattere () può essere utilizzato per sovrascrivere l'impostazione predefinita.
| Precedenza degli operatori |
|---|
| +, -, !, ~ (Unario) |
| +,- (Binario) |
| <> |
| ,= |
| ==, != |
| & |
| ^, ^~ o ~^ |
| | |
| && |
| || |
| ?: |