LOGIQUE PROGRAMMABLE EN VERILOG
Chapitre 1. Introduction
Chapitre 2. Traitement combinatoire et syntaxe du langage
2.1. Le module
2.2. Les entrées - sorties
2.3. Les niveaux logiques
2.4. Le corps du programme
2.5. Les opérations logiques binaires
2.6. Les opérations logiques unaires
2.7. Les opérations arithmétiques
2.8. Les bus
2.9. La déclaration de paramètre
2.10. La concaténation
2.11. Exemple: l'additionneur 1 bit complet
2.12. Taille et codage des nombres
2.13. Extension des modules
2.14. Avantages et Inconvénients des différentes approches sur un exemple
2.15. Exercices
2.16. Solution des exercices
Chapitre 3. L'usage de l'outil QUARTUS II
Chapitre 4. Description comportementale
Chapitre 5. Projets : énoncés
Chapitre 6. Projets : vers la solution
Page d'accueil Table des matières Niveau supérieur Page précédente Bas de la page Page suivante

2.5. Les opérations logiques binaires

Une opération binaire nécessite un opérateur entre 2 opérandes et fournit un résultat. C’est par exemple, le produit de 2 termes.

Le langage a défini un certain nombre d'opérations logiques binaires. On donne le nom et entre parenthèses le symbole de l'opérateur.

  • le ET (&),
  • le OU (|) qui s'obtient en frappant [AltGr-6],
  • le OU Exclusif (^),
  • le décalage à droite non signé (>>) --> entrée d’un 0,
  • le décalage à droite signé (>>>) --> recopie du bit de signe (recopie du bit le plus à gauche),
  • le décalage à gauche (<<) ou (<<<) --> entrée d’un 0,
  • le NOR (~|),
  • le NAND (~&),
  • l'identité ou OU exclusif complémenté (~^ ou ^~).

Remarque : les opérateurs de rotation n’existent pas, mais peuvent être créées avec les décalages et concaténations.

Ces opérateurs réalisent l'opération annoncée au niveau de chaque bit (cette opération est dite « bit à bit »).

Les priorités sont définies du plus prioritaire au moins prioritaire (dans une même case, les opérateurs ont même priorité) :

<< >> <<< >>>
& ~&
^ ~^ ^~
| ~|

 

Important : la priorité des opérations est modifiable localement grâce aux parenthèses.

On pourra avoir ainsi :

assign S = a | b & c ;

qui donnera le même résultat que

assign S = a | (b & c);

et sera différent de :

assign S = (a | b) & c;

Conseil : par précaution, il est toujours préférable de placer des parenthèses, même si elles ne sont pas nécessaires. On évitera toujours la 1ère écriture.

Page d'accueil Table des matières Niveau supérieur Page précédente Haut de la page Page suivante