TP1
TP1
TP1
TP1
Combinatoire, additionneurs et VHDL
Objectif :
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 :
2. Créer un nouveau fichier BDF (bin2dec.bdf). Ce fichier correspondra à la vue de haut niveau du
convertisseur binaire en décimal.
4. 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 symbole que vous intégrerez dans le fichier bin2dec.bdf
• consignerez dans votre rapport les développements et les résultats.
5. Tester sur la carte en assignant les broches d’entrée sortie aux ressources suivantes (SW0, SW1,
SW2, SW3 => v0, v1, v2 et v3) et (d0 => HEX0 et d1 => HEX1)
Olivier Romain 1
IUT GEII de Neuville sur Oise – TP FPGA – 2015
1. Créer un nouveau fichier VHD que vous nommerez adder4bits.vhd. Ce fichier correspondra à la
description structurelle en VHDL de l’additionneur 4bits.
Olivier Romain 2
IUT GEII de Neuville sur Oise – TP FPGA – 2015
2. Analyser l’architecture du convertisseur (figure 2) et donner les équations des sorties (cout, s3, s2,
s1 et s0) en fonctions des entrées (cin, a0..a3, b0..b3). Consignez dans votre rapport.
4. Ecrire le code VHDL d’un additionneur 4bit à partir de l’instruction VHDL COMPONENT. Pour
cela, vous trouverez ci-dessous, le code VHDL d’une porte xnor (xnor.vhd) conçue à partir
d’une porte xor (xor.vhd) et d’un inverseur (not.vhd).
• créerez un fichier VHDL
• testerez en simulation le comportement
• déterminer le temps de calcul de l’additionneur. Consignez dans votre rapport
• créerez un symbole
• consignerez dans votre rapport les développements et les résultats.
ENTITY xor IS
PORT (
a,b : IN STD_LOGIC;
s : OUT STD_LOGIC
);
END;
ENTITY not IS
PORT (
a : IN STD_LOGIC;
s : OUT STD_LOGIC
);
END;
Olivier Romain 3
IUT GEII de Neuville sur Oise – TP FPGA – 2015
ENTITY xnor IS
PORT (
a,b : IN STD_LOGIC;
s : OUT STD_LOGIC
);
END;
COMPONENT not IS
PORT (
a : IN STD_LOGIC;
s : OUT STD_LOGIC
);
END;
1. Créer un nouveau fichier BDF que vous nommerez verif_adder.vhd. Ce fichier correspondra à la
description schématique de l’exercice 3.
4. Connecter les deux symboles de manière à afficher le résultat de deux nombres A et B sur les
afficheurs 7 segments HEX1 et HEX0. A et B seront respectivement les switchs (A3-> SW3 …
A0->SW0 et B3->SW7 …B0->SW4).
Dans les micro-processeurs ou contrôleurs 32 bits, l’ALU comporte un additionneur qui réalise des
opérations sur des opérandes de 32 bits. On souhaite créer un additionneur 32 bits à partir de 8
additionneurs 4 bits.
1. Créer un nouveau fichier VHD que vous nommerez adder32bits.vhd. Ce fichier correspondra
à la description structurelle de l’additionneur à partir de l’instruction COMPONENT.
Olivier Romain 4
IUT GEII de Neuville sur Oise – TP FPGA – 2015
4. A partir des résultats de l’exercice 2 et la 3ème question ci-dessus, dessinez la courbe du temps
de calcul en fonction du nombre de bits de l’additionneur.
L’additionneur par propagation de retenue est purement pédagogique et n’est jamais utiliser en
pratique du fait de son temps de calcul proportionnel au nombre de bits. Dans les microprocesseurs
d’autres techniques sont utilisées pour des nombres de bits importants. Toutes les techniques ont pour
but d’accélérer le calcul des retenues (anticipation de retenue, sélection de retenue, récursivité,
hybride, etc.). La technique d’anticipation de retenue est basée sur le calcul de toutes les retenues
avant même le calcul de la somme. Afin de faciliter le calcul des retenues, on introduit deux quantités
appelées G (pour Generate en anglais) et P (pour Propagate en anglais). Pour deux quantités binaires
Ai et Bi, les quantités Gi et Pi sont définies de la façon suivante. L’indice i correspond au numéro de
l’étage de l’additionneur. Dans un additionneur 4 bits, 4 étages, le calcule du LSB correspond à
l’indice 0 et le calcule du MSB correspond à l’indice 3.
Gi = Ai and Bi et Pi = Ai or Bi
Olivier Romain 5