logo

Opérateurs Verilog

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