19 VHDL
19 VHDL
19 VHDL
Exercice1 :
Le but de ce premier exercice est de manipuler les E/S sorties classiques de la carte
DE1. Dans un premier temps, nous allons nous charger de manipuler les boutons et
les LEDs présentes sur la carte. La figure 1 montre un petit programme VHDL
permettant d'afficher l'état des boutons sur les LEDs associées.
Suivre les étapes suivantes :
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY top is
port(
SW: in STD_LOGIC_VECTOR(2 downto 0);
LEDR: out STD_LOGIC_VECTOR(2 downto 0));
END top;
TP FPGA Page 1
Travaux Pratiques FPGA
B. HAJJI (1ère partie) GE4
Exercice 2 :
Tester ce module en reliant les 4 entrées INP aux boutons présents sur la carte et
valider le fonctionnement de votre décodeur.
Exercice 3 :
TP FPGA Page 2
Travaux Pratiques FPGA
B. HAJJI (1ère partie) GE4
2- Rajoutez la sortie HEX0 sur l’entité du composant top (top.vhd) qui représente
la sortie qui va sur les 7 segments de l’afficheur :
HEX0 : OUT STD LOGIC VECTOR(0 TO 6);
3- Instancier ce décodeur dans le composant top (top.vhd). Connectez les
entrées C1-3 avec Sw2-0 et connectez les sorties de ce décodeur avec HEX0.
4- Compilez le projet et chargez le circuit dans le FPGA. Tester le
fonctionnement de ce décodeur en changeant l’état des Switch et en observant
l’afficheur 7 segments.
Exercice 4 :
TP FPGA Page 3
Travaux Pratiques FPGA
B. HAJJI (1ère partie) GE4
Exercice 5 :
Maintenant on désire faire défiler le mot HELLO sur les 7 afficheurs comme le
montre la table cidessus.
Modifiez le code de l’exercice 4 pour obtenir cette nouvelle fonction et testez sur la
carte DE2.
TP FPGA Page 4
Travaux Pratiques FPGA
B. HAJJI (2ère partie) GE4
Exercice 1 : Multiplexeur
TP FPGA Page 1
Travaux Pratiques FPGA
B. HAJJI (2ère partie) GE4
Exercice 2 : Comparateur
Un comparateur binaire est un dispositif qui accepte deux mots binaires de 4 bits
sous forme parallèle A et B et qui possède des sorties binaires indiquant la relation
d’ordre entre ces mots : égalité, supériorité ou infériorité.
Exercice 3 : Additionneur
Rappel :
Un additionneur complet est constitué de deux demi-additionneurs dont la structure
est représentée Figure1.
Le schéma d’un additionneur complet est donné Figure 2.
Ce composant admet 3 entrées : A, B, Ci et 2 sorties : S et Co.
TP FPGA Page 2
Travaux Pratiques FPGA
B. HAJJI (2ère partie) GE4
a) Description en VHDL
Concevoir l’entité FULL_ADDER ainsi que l’architecture associée. Tester son
fonctionnement en l’implantant directement dans le FPGA. On pourra connecter
les entrées de l’additionneur aux boutons et les sorties aux leds.
b) Synthèse et Implantation
Implanter le FULL_ADDER dans le CYCLONE et en déduire les ressources
utilisées à l’aide des différents rapports générés:
Quels nombres de LE et de LUTs sont nécessaires pour implanter le design ?
Quels sont les « pires » temps de propagation des signaux au sein du circuit ?
TP FPGA Page 3
Travaux Pratiques FPGA
B. HAJJI (2ère partie) GE4
Figure 3 : Représentation de l’additionneur 8 bits à réaliser. Les E/S passent par des
registres.
a) Inclure les nouveaux ports d’E/S dans votre projet. Connecter les entrées A et
B aux 2 registres et connecter les registres aux boutons SW7 à SW0. Utiliser
KEY(0) comme une entrée RESET asynchrone, KEY(1) comme une entrée
d’horloge manuelle, KEY(2) et KEY(3) comme entrée ENABLE des registres
d’entrée. Afficher A et B sur les leds (A sur LEDR et B sur LEDG) et afficher le
résultat de la somme sur les afficheurs 7 segments.
b) A l’aide des outils fournis par Quartus, déterminer le nombre de ressources
nécessaires à la réalisation d’un tel additionneur. Quelle est la fréquence
maximale d’utilisation du circuit ? Pourquoi ?
Répeter l’exercice 5 en utilisant cette fois une des additionneurs prédéfinis par
Altera.
Pour se faire, sélectionner le menu Tools puis MegaWizard Plug_in Manager. Editer
puis générer le composant lpm_add_sub. Ne pas oublier de l’intégrer dans votre
projet.
Après avoir instancié ce composant dans votre code VHDL, compiler le projet et
utiliser l’outil Chip planner de QuartusII pour examiner les détails de l’implantation.
Une manière d’examiner le circuit sous Chip planner est donnée à la figure 4.
TP FPGA Page 4
Travaux Pratiques FPGA
B. HAJJI (2ère partie) GE4
Que constatez vous ? Quelle(s) différences pouvez vous déceler avec l’implantation
de l’exercice 5.
TP FPGA Page 5
Travaux Pratiques FPGA
B. HAJJI (3ère partie) GE4
Exercice 1 : D flip-Flip
Le tableau 1 présente les ports de la bascule D flip-flop. L’entrée D est mémorisée à chaque front
montant du signal d’horloge clk.
1- Décrire en VHDL un registre à décalage 4-bit, utilisant les bascules D Flip-flop, présenté
par le schéma ci-dessous :
Exercice 3 : Compteur
TP FPGA Page 1
Travaux Pratiques FPGA
B. HAJJI (3ère partie) GE4
Les sorties seront d’abord visualisées sur des LED puis sur un afficheur 7 segments.
TP FPGA Page 2
VHDL– FPGA-Travaux Pratiques ENSA-Oujda
1. Introduction
Le but de ce TP est de concevoir le mini-calculateur suivant basé sur une unité arithmétique
et logique et permettant d’effectuer des opérations sur des nombres de 4 bits. Le dispositif à
réaliser est décrit à la figure 1.
4
A R0
CE
UAL
R1
CE
B 4
R2 Res
CE
3
R3
CE
contrôleur clk
instruction 8
Le circuit permet d’effectuer des calculs sur des opérandes de 4 bits et autorise le stockage
des résultats dans 4 registres de 4 bits (R0,R1,R2,R3) .
L’opérande A peut être issue d’une entrée du circuit ou venir d’un des 4 registres.
Une instruction sur 8 bits permet d’indiquer l’opération à réaliser. Elle possède le format
suivant :
7 6 5 4 3 2 1 0
Numéro Numéro
Reg destination Reg source Code_op
Res <= A op B
Res<= Ri op B
B. HAJJI Page 1
VHDL– FPGA-Travaux Pratiques ENSA-Oujda
Le champ Numéro Registre destination permet de sélectionner les registre dans lequel le
résultat de l’UAL sera stocké. Ce champ est stocké sur les bits (7 et 6) de l’instruction.
Le numéro de registre est désigné comme suit :
Le champ Numero Registre source permet de sélectionneur le registre dans lequel une
donnée servira à effectuer un calcul (avec l’opérande B). Ce champ est stocké sur les bits (5
et 4) de l’instruction. Le numéro de registre est désigné comme suit :
Le bit 3 d’une instruction permet de préciser si l’on souhaite effectuer une opération sur les
entrées A et B ou sur B et une donnée provenant du registre dont l’adresse est spécifiée dans
le champ Numero registre source.
Le champ CodeOP est codé sur 3 bits et sert à indiquer la nature de l’opération à réaliser :
Exemple d’instruction :
L’instruction suivante : 01 01 1 111 signifie R1 <= R1 – B
00 10 0 100 signifie R2<= A xor B
B. HAJJI Page 2
VHDL– FPGA-Travaux Pratiques ENSA-Oujda
A
4
4
RES
A_SUP_B
A_INF_B
4 A_EGAL_B
OVFL
B ZERO
CodeOP NEG
b. Conception de l’UAL
1) A partir des différents circuits réalisés dans les parties (a et b), décrire l’UAL
complète en VHDL.
2) Concevoir le fichier testbench permettant de générer les stimuli à appliquer à
l’UAL
3) Simuler l’ensemble de l’UAL et vérifier son fonctionnement
B. HAJJI Page 3
VHDL– FPGA-Travaux Pratiques ENSA-Oujda
Concevoir un registre 4 bits avec entrée clock_enable synchrone et une entrée CLR
asynchrone. Ecrire un test_bench permettant de valider le fonctionnement du
registre.
5. Conception du décodeur
6. Conception Finale
Regrouper tous les éléments construits dans les sections 1 à 5 et concevoir le mini-
calculateur
Prendre soin de bien effectuer un test-bench pour valider le fonctionnement final.
B. HAJJI Page 4