Vous êtes sur la page 1sur 8

Ecole Nationale Polytechnique d’Alger

Département Automatique

Exercices et Travaux de TP
Conception/Programmation VHDL

Préparation
Travail à réaliser studieusement chez soi et à remettre impérativement en début de séance du TP.
a) Rappeler Les équations et la table de vérité de l’additionneur complet
b) Donner une description VHDL, Flot de données, (style with select) de ce circuit
c) Déduire le schéma correspondant.
d) Donner le schéma de cet additionneur en utilisant des multiplexeurs élémentaires
e) Déduire la description Vhdl flot de données correspondante
f) Ecrire le code Vhdl de l’additionneur en utilisant l’opérateur + en mode concurrent
g) Donner une description Vhdl comportementale du circuit utilisant l’instruction Case when
h) Réécrire le code Vhdl des questions d) et f) en utilisant un process combinatoire
i) Donner les descriptions Flot de données et comportementales de l’additionneur N bits non
signé (utiliser l’opérateur +)
j) Quelles modifications apporter aux codes précédents pour additionner des nombres signés,
donner les codes Vhdl correspondants.
Ecole Nationale Polytechnique d’Alger
Département Automatique

Exercices et Travaux de TP
Conception/Programmation VHDL

Manipulations de TP
Partie I
Objectif :

L’objectif de ce TP est de se familiariser avec la description VHDL de composants numériques


combinatoires.

Introduction
Un additionneur est un circuit logique capable de réaliser l’addition de deux nombre de N bits. Une
addition génère deux résultats : la somme et la retenue.
Ce circuit est très présent dans les ordinateurs pour le calcul arithmétique mais également pour le
calcul d'adresses, d'indice de tableau dans le processeur. On dénombre deux types d'additionneurs :
parallèle (circuit combinatoire) et série (circuit séquentiel). Dans la classe des additionneurs parallèles,
nous décrirons ici ceux à propagation de retenue et ceux à retenue anticipée ((Wikipedia).

(A) Réalisation d’une bibliothèque de composants


Les entités de conceptions qui seront utilisées par la suite sont supposées avoir été préalablement
analysées et stockées dans une bibliothèque de nom logique GATES.
1-Ecrire le code VHDL des portes logiques AND2D1, EX2D1, OR2D1, et NOT1D1.
2-Faire les Simulations nécessaires, relever les chronogrammes
3-Compléter et créer la bibliothèque GATES selon les besoins des manipulations du TP.
(B) Réalisation d’un demi-additionneur d’un bit :
Il s’agit de créer en VHDL une entité représentant un additionneur de deux données d’un bit : :

a) Donner les descriptions Flot de données et comportementales du demi-additionneur.


b) Donner une description VHDL structurelle à base des portes logiques (à deux entrées)
préalablement decrites dans la bibliothèque de composants GATES.
c) Faire les Simulations nécessaires, relever les chronogrammes et commenter.

( C ) Réalisation d’un additionneur complet d’un bit :


Un additionneur complet nécessite une entrée supplémentaire : une retenue. L'intérêt de celle-ci est de
permettre le chaînage des circuits.

1. Rappeler la table de vérité d'un additionneur complet.


2. Donner le schéma du circuit logique à base de portes xor, and, et or.
3. Proposez le schéma d’un additionneur complet basé sur les demi-additionneurs.
4. Donner une description VHDL de l’additionneur complet,
5. Simuler le projet pour les chronogrammes d’entrées présentés dans la figure suivante
(D1) Additionneur à propagation de retenue 4 bits
On souhaite réaliser l’additionneur à propagation de retenue 4 bits en utilisant une description
structurelle à partir des instructions COMPONENT en VHDL.
La figure suivante montre l’architecture d’un additionneur 4 bits conçus à partir de 4 additionneurs 1
bit.

Réutiliser le composant additionneur complet d’un bit pour concevoir un additionneur 4 bits.
 Créer un nouveau fichier VHD correspondant à la description structurelle en VHDL de
l’additionneur 4bits.
 Testerez en simulation le comportement du composant
 Consignerez dans votre rapport les développements et les résultats.

(D2) Additionneur à anticipation de retenue (Manip facultative)


Le principal inconvénient de l’additionneur à propagation de retenue est que le temps de calcul est
proportionnel au nombre de bits additionnés. En effet, le calcul de l’addition 1 bit à un rang donné
nécessite de connaître la retenue obtenue à l’addition du rang directement inférieur.
Pour pallier à cet inconvénient, on peut imaginer de calculer la retenue à un rang donné, à partir de
tous les bits d’entrée des rangs inférieurs. C’est ce qu’on appelle l’anticipation de retenue. Le gain de
temps se fait alors au détriment d’une complexité accrue en termes de circuits.
 Analyser et étudier le circuit calculant la propagation et la génération de retenue pour un étage
en fonction de la propagation et la génération des étages précédents.
Ecole Nationale Polytechnique d’Alger
Département Automatique

Exercices et Travaux de TP
Conception/Programmation VHDL

Manipulations de TP
Partie II
Objectif : L’objectif de ce TP est d’étudier la description VHDL de quelques composants numériques
combinatoires afin de vérifier le comportement de l’additionneur au moyen des afficheurs 7 segments.

(E) Comparateur 1 bit


On rencontre très souvent la nécessité de comparer deux entiers (A = B, A > B ou A < B).
Soit la table de vérité correspondante à ces trois fonctions de comparaison de 2 bits.

La fonction S (supérieur) doit être égale à 1 si et seulement si A > B, la fonction I (inférieur) si et


seulement si A < B et la fonction E (égalité) si et seulement si A = B.
Le comparateur peut être schématisé par le bloc fonctionnel ci-dessus. L'entrée V est une entrée de
validation. Le comparateur fonctionne si V est égal à 1, sinon toutes les sorties sont égales à 0 (on en
verra l’utilité dans l’association de plusieurs de ces blocs).
1. Proposez le schéma logique du comparateur 1 bit.
2. Donner une description VHDL du circuit
3. Tester en simulation le comportement du composant.

(F) Comparateur de mots binaires


Un comparateur permet de comparer 2 mots binaires, c’est à dire d’indiquer si ces 2 mots sont égaux,
mais également, si ça n’est pas le cas, lequel est le plus grand. Il est basé sur l’utilisation d’un
comparateur 1 bit.
Nous cherchons maintenant à réaliser un comparateur de deux mots de quatre bits A (a0, a1, a2, a3) et
B(b0, b1, b2, b3 ) à l'aide de comparateurs 1-bit mis en cascade et de quelques portes logiques.
 Le comparateur doit indiquer s’il y a égalité de ses 2 mots binaires d’entrée, et sinon lequel est
le plus grand, par l’intermédiaire de ses 3 sorties E, S et I.
 L’idée est de comparer les bits correspondants 1 à 1 en partant de celui de poids le plus fort.
 Si le bit de poids le plus fort du 1er mot est 1 et celui du 2e sont les mêmes, on n’est pas
renseigné sur la comparaison de ces 2 mots donc il faut aller voir le bit de poids
immédiatement inférieur. Et ainsi de suite jusqu’aux bits de poids le plus faible.
 Si l’un des bits est 0 et le bit correspondant de l’autre mot est 1, il n’est pas nécessaire d’aller
tester les bits de poids plus faibles, on connaît le résultat. Il faut alors utiliser les informations
de S et de I au moyen d’une porte OU. Pour réaliser ceci, on peut relier la sortie locale Ei d’un
comparateur 1-bit à l’entrée de validation du suivant ; ainsi, dès qu’un bit sera différent du bit
correspondant de l’autre mot, E sera égale à 0 et inhibera la comparaison des bits de poids
inférieurs.
 Si les 2 mots sont égaux, la sortie E du comparateur des bits de poids les plus faibles sera à 1.
Elle peut donc constituer la sortie d’égalité des 2 mots complets.
 La sortie S (supérieur) doit être à 1 si l’une des sorties Si est à 1. Elles doivent donc être
combinées par une porte OU (à 4 entrées ici).
 C’est le même principe pour la sortie I.
On obtient donc le schéma suivant pour ce comparateur :

1. Donner une description VHDL du circuit


2. Tester en simulation le comportement du composant.
(G) Décodeur/ Afficheur 7 segments
Le décodeur doit transformer le nombre reçu en entrée sur 4 bits en 7 bits afin de l’afficher en écriture
décimal (0 jusqu’à 9) sur un afficheur 7 segments,
Dans un afficheur 7 segments, les segments sont le plus souvent désignés par les lettres allant de A à
G. En général, un afficheur à 7 segments se programme sur 4 bits grâce à 4 entrées conformément à
la table de vérité ci-dessous.

NB. Deux types d’afficheurs :


 Anodes communes : L’allumage des segments est assuré par un état logique ‘0’
 Cathodes communes : L’allumage des segments est assuré par un état logique ‘1’
Questions :
 Coder en langage VHDL la description du décodeur BCD / 7 segments en utilisant les
instructions non séquentielle (Affectation conditionnelle)/ Instruction séquentielle (process,
case).
 Tester en simulation le comportement du composant.

(H ) Convertisseur binaire - Décimal


Nous voulons concevoir un convertisseur qui affiche directement la valeur décimale d’un nombre
binaire V sur 4 bits au moyen de deux afficheurs 7 segments HEX0 (unité) et HEX1 (décimal).
La table de vérité est donnée ci-dessous
Une description schématique de l’architecture de ce convertisseur est donnée ci-dessous.

Le comparateur permet de tester si le nombre est supérieur ou inférieur à 9 afin de contrôler l’afficheur
d1 et les multiplexeurs.
Créer un nouveau projet TP.
1. Analyser l’architecture du convertisseur et donner les fonctions des circuits A et B.
2. Ecrire le code VHDL des blocs A, B, multiplexeur 2->1, comparateur et décodeur 7 segments.
Pour chaque blocs, vous :
• créerez un fichier VHDL
• testerez en simulation le comportement
• créerez un composant que vous intégrerez dans bibliothèque
Consignerez dans votre rapport les développements et les résultats de simulations.

(I) Affichage du résultat de l’additionneur


On souhaite vérifier le comportement de l’additionneur au moyen des afficheurs 7 segments.
 Créer un composant pour le convertisseur.
 Créer un composant pour l’additionneur 4 bits
 Connecter les deux composants de manière à afficher le résultat de deux nombres A et B sur les
Afficheurs 7 segments HEX1 et HEX0.
 Consignez dans votre rapport la structure que vous avez programmée.