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.13. Extension des modules

Lorsqu’il est nécessaire de passer à des éléments de taille supérieure, la façon dont le problème a été traité peut aider à la mise en œuvre. Ainsi le problème précédent peut être réutilisé pour réaliser un additionneur 4 bits.

Quelle que soit la réalisation de l’additionneur 1 bit, on peut envisager d’étendre par instanciation de modules précédents. On doit disposer de 4 modules 1 bit que l’on devra interconnecter pour réaliser un additionneur 4 bits :

Le programme sera :

module ADD4Bit (A, B, Rm1, S, R3) ;

input [3 :0] A, B ;

input Rm1 ;

output [3 :0] S ;

output R3 ;

wire R0, R1, R2 ;

Add1Bit Add0(A[0], B[0], Rm1, S[0], R0) ;

Add1Bit Add1(A[1], B[1], R0, S[1], R1) ;

Add1Bit Add2(A[2], B[2], R1, S[2], R2) ;

Add1Bit Add3(A[3], B[3], R2, S[3], R3) ;

endmodule

Remarque : cette solution permet tout, mais il faudra écrire chacun des modules, l'extension n'est pas modulaire.

Est-il envisageable de traiter le cas de l’additionneur 4 bits par une autre analyse ? Réponse : OUI !

La méthode consistant à traiter le problème par l’arithmétique est très facile à étendre à 4 bits, voire à n bits. Seule la déclaration de bus pour A, B et S est différente. La version 4 bits est la suivante :

module ADD4Bit (A, B, Rm1, S, R3) ;

input [3 :0] A, B ;

input R0 ;

output [3 :0] S ;

output R3 ;

assign {R3, S} = A + B + Rm1 + 0 ;

endmodule


Le cas d'un additionneur n bits est donné ci-dessous avec n= 18 :

parameter n = 18;

module ADDnBit (A, B, Rm1, S, Rn) ;

input [n :0] A, B ;

input R0 ;

output [n :0] S ;

output Rn ;

assign {Rn, S} = A + B + R0 + 0 ;

endmodule

Le contrôle de la taille de la valeur 0 aurait été un problème à l'extension de ce module.

La taille pour les extensions est limitée aux 32 bits de calcul.

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