Les opérateurs effectuent une opération sur un ou plusieurs opérandes dans une expression. Une expression combine des opérandes avec des opérateurs appropriés pour produire l'expression fonctionnelle souhaitée.
1. Opérateurs arithmétiques
Pour le FPGA, la division et la multiplication coûtent très cher, et parfois on ne peut pas synthétiser la division. Si nous utilisons Z ou X pour les valeurs, le résultat est inconnu. Les opérations traitent les valeurs comme non signées.
Personnage | Opération effectuée | Exemple |
+ | Ajouter | b + c = 11 |
- | Soustraire | b - c = 9, -b=-10 |
/ | Diviser | b/a = 2 |
* | Multiplier | une * b = 50 |
% | Module | b % a = 0 |
2. Opérateurs au niveau du bit
Chaque bit est exploité, le résultat est la taille du plus grand opérande, et le plus petit opérande est étendu avec des zéros jusqu'à la taille du plus grand opérande.
Personnage | Opération effectuée | Exemple |
~ | Inverser chaque bit | ~a = 3'b010 |
& | Et chaque morceau | b&c = 3'b010 |
| | Ou chaque morceau | un | b = 3'b111 |
^ | Xor chaque bit | une ^ b = 3'b011 |
^~ ou ~^ | Xnor chaque bit | une ^~ b = 3'b100 |
3. Opérateurs de réduction
Ces opérateurs réduisent les vecteurs à un seul bit. S'il y a les caractères z et x, le résultat peut être une valeur connue.
Personnage | Opération effectuée | Exemple |
& | Et tous les morceaux | &a = 1'b0, &d = 1'b0 |
~& | Et tous les bits | ~&a = 1'b1 |
| | Ou tous les bits | |a = 1'b1, |c = 1'bX |
~| | Ni tous les bits | ~|a= 1'b0 |
^ | Xor tous les bits | ^a = 1'b1 |
^~ ou ~^ | Xni tous les bits | ~^a = 1'b0 |
4. Opérateurs relationnels
Ces opérateurs comparent les opérandes et donnent une valeur booléenne scalaire de 1 bit. Les opérateurs d'égalité et d'inégalité de cas peuvent être utilisés pour des valeurs d'impédance inconnues ou élevées (z ou x), et si les deux opérandes sont inconnus, le résultat est 1.
Personnage | Opération effectuée | Exemple |
> | Plus grand que | a > b = 1'b0 |
< | Plus petit que | un |
>= | Meilleur que ou égal | a >= d = 1'bX |
<=< td> | Inférieur ou égal | un<= e='1'bX</td'> => | =<>
== | Égalité | une == b = 1'b0 |
!= | Inégalité | une != b = 1'b1 |
=== | Égalité des cas | e === e = 1'b1 |
!=== | Inégalité de cas | et !== d = 1'b1 |
5. Opérateurs logiques
Ces opérateurs comparent les opérandes et donnent une valeur booléenne scalaire de 1 bit.
Personnage | Opération effectuée | Exemple |
! | Pas vrai | !(a && b) = 1'b1 |
&& | Les deux expressions sont vraies | a && b = 1'b0 |
|| | Une ou les deux expressions sont vraies | et || b = 1'b1 |
6. Opérateurs de quarts
Ces opérateurs décalent les opérandes vers la droite ou la gauche, la taille reste constante, les bits décalés sont perdus et le vecteur est rempli de zéros.
java ouvrir un fichier
Personnage | Opération effectuée | Exemple |
>> | Décaler vers la droite | b >> 1 résultats 4?b010X |
<< | Décaler vers la gauche | a << 2 résultats 4?b1000 |
7. Opérateurs d'affectation
Il existe trois opérateurs d'affectation, chacun effectuant des tâches différentes et étant utilisé avec différents types de données :
- attribuer (affectation continue)
- <= (non-blocking assignment)< li>
- = (affectation bloquante) =>
8. Autres opérateurs
Ce sont des opérateurs utilisés pour tester les conditions et créer des vecteurs.
Personnage | Opération effectuée | Exemple |
?: | Tests de conditions | test cond. ? si c'est vrai, fais ceci ou sinon, fais ceci |
{} | Enchaîner | c = {a,b} = 8'101010x0 |
{{}} | Reproduire | {3{2'b10}}= 6'b101010 |
9. Priorité des opérateurs
L'ordre du tableau indique quelle opération est effectuée en premier. Le premier a la plus haute priorité. Le () peut être utilisé pour remplacer la valeur par défaut.
Priorité des opérateurs |
---|
+, -, !, ~ (Unaire) |
+,- (binaire) |
<> |
,= |
==, != |
& |
^, ^~ ou ~^ |
| |
&& |
|| |
?: |