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.11.1. Par les équations logiques
2.11.2. En se rappelant le mécanisme d'addition
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.11.2. En se rappelant le mécanisme d'addition

Cette opération additionne 3 termes 1 bit qui se retrouvent dans le résultat sous la forme de 2 bits.

L'opérateur d'addition existe, pourquoi ne pas l'utiliser ?

Le programme généré pourrait être :

module ADD1Bit (A1, B1, R0, S1, R1) ;

input A1, B1, R0 ;

output S1, R1 ;

assign {R1, S1} = A1 + B1 + R0;

endmodule

 

Attention ce résultat, bien que semblant conforme ne l’est pas et donne un résultat erroné. En effet, tous les termes à droite du signe égal sont définis sur 1 bit. Le calcul se fera sur 1 bit et le résultat sera sur 1 bit. Il faut, pour que la taille évolue, qu’au moins un des termes soit d’une autre taille (>= 2 bits). Ainsi en ajoutant 0, on ne change pas le résultat, mais le calcul est fait sur 32 bits et ramené à 2 bits au moment de l’affectation.

La solution correcte est : 

module ADD1Bit (A1, B1, R0, S1, R1) ;

input A1, B1, R0 ;

output S1, R1 ;

assign {R1, S1} = A1 + B1 + R0 + 0;

endmodule

Il est aussi possible de contrôler la taille de la variable ainsi que son codage et limiter éventuellement les warnings à la compilation (voir le codage des nombres).

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