Académique Documents
Professionnel Documents
Culture Documents
Boumediene
Faculté de Génie électrique
Département d’électronique
Travaux Pratiques
ElEctroniquE numériquE
avancéE : FPGa - vHDl
Master 1ére année
AVANT-PROPOS
S O MM A I R E
TP1 : Guide pratique du logiciel Xilinx ISE : Saisie du flot de conception d’un circuit numérique
TP2 : Structuration et Simulation des Systèmes Combinatoires Simples
TP3 : Développement d’un système numérique Séquentiel : Bascules et Registres
TP4 : Structuration et Simulation des Systèmes Séquentiels Simples : Compteurs
D. ADDOU
2
USTHB/FEI TP-FPGA-VHDL
Travaux Pratiques
Circuits logiques programmables : FPGA-VHDL
Guide de démarrage
Les TP vont être faits sur des cartes Digilent qui embarquent un FPGA Xilinx. Ces cartes
incluent également des entrées sorties telles que : Switches, Leds, afficheur 7-segments,
oscillateur, ...
Vous devez téléchargez et installez XilinxISE 8.1 (Integrated Software Environment). Cet outil
est gratuit (version web pack : version dédiée au laboratoire). Veuillez noter que vous devez,
aussi, télécharger et installer Logiciel Digilent Adept. Le logiciel contient les pilotes pour la
carteque vous avez besoin et fournit également l'interface pour programmer le FPGA.
ISE 8.1 intègre donc différents outils permettant de passer à travers tout le flot de conception
d’un circuit numérique :
• Un éditeur de textes, de schémas et de diagrammes d’états ;
• Un compilateur VHDL/Verilog ;
• Un outil de simulation ;
• Des outils pour la gestion des contraintes temporelles ;
• Des outils pour la synthèse ;
• Des outils pour la vérification ;
• Des outils pour l’implantation sur FPGA.
.Dans notre laboratoire, des conceptions numériques seront implémentées dans la carte
Basys2
qui a un FPGA Xilinx Spartan3E –XC3S500E avec le package CP132. Cette partie FPGA,
d’environ 500K portes, appartient à la famille Spartan des FPGA. Ces cartes de
développement sont disponibles dans une variété de packages. Nous utiliserons des cartes
emballées dans un boîtier à 132 broches portant le numéro de référence suivant :
XC3S500ECP132.
Des informations détaillées sur ces cartes sont disponibles sur le site Xilinx
https://www.xilinx.com/support/documentation/data_sheets/ds312.pdf
D. ADDOU
3
USTHB/FEI TP-FPGA-VHDL
TP1
Guide pratique du logiciel Xilinx ISE 8.1:
Saisie du flot de conception d’un circuit numérique
1. But du TP
L’objectif du TP1 est la prise en main de l'outil de simulation et de programmation (Xilinx ISE 8.1).
Ce TP1, référencé comme guide, permettra d’énumérer et décrire les étapes simples pour :
Créer un projet dans ISE 8.1;
Décrire un circuit numérique à l’aide d’une description hiérarchique, basée sur un
schéma ou à base d’un programme VHDL;
Simuler le circuit ;
Synthétiser et implémenter le circuit via un FPGA ;
Programmer le FPGA de la carte de développement utilisée, pour vérifier et valider le
fonctionnement du circuit.
2. Créer un nouveau projet
Les outils Xilinx peuvent être lancés en cliquant sur l'icône du navigateur de projet sur le bureau
Windows. Cela devrait ouvrir la fenêtre Project Navigator sur votre écran. Cette fenêtre affiche
(fig.1) le dernier projet accédé (Veuillez le fermer), Choisir : File > Close Project
D. ADDOU
4
USTHB/FEI TP-FPGA-VHDL
1. Choisir : File > New Project. L'écran de saisie de nouveau projet apparaîtra.
2. Entrer nom du projet pour « Project Name ». Exemple : "TP1"
il est ajouté automatiquement au nom du répertoire contenant le projet.
3. Sélectionner le répertoire de votre travail >> Exemple : C:\TP-FPGA\TP1 dans le
champ « Project Location ».
4. Sélectionner Schematic pour Top-Level Source Type, et cliquer sur Next.
5. Sélectionner les valeurs suivantes dans la fenêtre ˝ New Project Wizard Device Properties"
Product Category: All
Family: Spartan3E
Device: XC3S500E
Package: FG320
Speed:-4
Top-Level source Type : Schematic
Synthesis Tool: XST (VHDL/Verilog)
Simulator: ISE Simulator (VHDL/Verilog)
PreferredLanguage: VHDL.
6. Cliquer sur Next 3 fois, et ensuite Finish pour compléter la création du nouveau
projet.
D. ADDOU
5
USTHB/FEI TP-FPGA-VHDL
1. Dans la barre de menu, cliquer sur Add> Symbol ou sur l'icône de la barre d’outils,
la fenêtre des symboles s'ouvre à gauche du la fenêtre du schéma affichant la liste des
librairies disponibles ainsi que la liste des composants de chaque librairie (Fig.5).
2. Sélectionner la librairie Logic dans « Categories ».
3. En sélectionnant respectivement, and2, et xor2, ajouter toutes les portes de l'additionneur.
4. Dans la barre de menu, cliquer sur Add>Wire ou sur l’icône de la barre d’outils pour
ajouter les liaisons entre les symboles.
5. Dans la barre de menu, cliquer sur Add> I/OMarker ou sur l’icône pour ajouter les
connecteurs d’entrée/sortie. Choisir le type de connecteurs dans la fenêtre « Processes » à
gauche du schéma et cliquer ensuite sur l’extrémité du fil auquel on souhaite ajouter le
connecteur.
D. ADDOU
6
USTHB/FEI TP-FPGA-VHDL
6. Dans la barre de menu, cliquer sur Add>Text ou sur l’icône pour ajouter au coin
inférieur gauche de la feuille, les noms et matricules des étudiants, le numéro de sous-groupe
et le numéro du TP.
D. ADDOU
7
USTHB/FEI TP-FPGA-VHDL
Pour finir, vérifier votre schéma avec le bouton de la barre d’outil de dessin ou en
sélectionnant dans barre menu Tools>Check Schematic. Vérifier les messages dans la
console au bas de l’écran. S’il y a des erreurs, corrigez-les et recommencer la vérification.
Pour sauvegarder le schéma, cliquer dans la barre de menu sur File > Save ou sur l'icône
de la barre d'outil.
4. Simulation comportementale
La simulation comportementale permet de vérifier le fonctionnement du circuit avant son
implémentation et ne tient pas compte des délais de propagation et des caractéristiques temporelles.
D. ADDOU
8
USTHB/FEI TP-FPGA-VHDL
D. ADDOU
9
USTHB/FEI TP-FPGA-VHDL
• la disposition (placement) : choisir des endroits spécifiques sur le FPGA où disposer les
blocs utilisés, et choisir les pattes du FPGA correspondant aux ports d’entrée et de sortie;
• le routage (routing) : établir des connexions entre les blocs utilisés;
• la configuration (configuration) : convertir toute cette information en un fichier pouvant être
téléchargé sur le FPGA pour le programmer.
Pendant l’étape de disposition de l’implémentation, il faut assigner des broches spécifiques du
FPGA à des ports d’entrée et de sortie de son design. Pour le design présent, les ports d’entrée sont
a et b et les ports des sortie sont somme et retenue. Cette assignation des ports se fait par l’entremise
d’un fichier de contraintes avec l’extension « .ucf » (pour user constraints file):
D. ADDOU
10
USTHB/FEI TP-FPGA-VHDL
11. Après les étapes précédentes, la chaîne doit être initialisée automatiquement, mais vous
pouvez aussi cliquer sur "Initialisation de la chaîne" pour initialiser manuellement.
Maintenant nous somme prêt pour programmer les composants.
12. Lorsque vous essayez de programmer le FPGA, Cliquez sur le bouton Parcourir sur l'icône
du dispositif FPGA, sélectionnez votre fichier de configuration (*.bit) et cliquez sur le
D. ADDOU
11
USTHB/FEI TP-FPGA-VHDL
bouton Ouvrir. Après cela, le programme de la puce FPGA par un clique droit sur l'icône
du dispositif FPGA et sélectionnez "Device Program" ou simplement cliquer sur le bouton
"Program" sur la droite (Fig. 12).
Fig. 12 Chargement du code produit par ISE sur le FPGA de la carte Nexys2
13. Lorsque vous essayez de sauvegarder dans la PROM, Cliquez sur le bouton Parcourir à
l'icône du périphérique PROM, sélectionnez votre fichier de configuration (*.bit) et cliquez
sur le bouton Ouvrir. Après cela, programmer la PROM par un clic droit sur l'icône du
périphérique PROM et sélectionnez "Device Program" ou simplement frapper le bouton
"Program" sur la droite. Nous pouvons également effacer la PROM avant de la
programmer.
14. Enfin, si la programmation a été faite avec succès, nous devrions être en mesure de voir si
nos projets et chargements fonctionnent réellement bien sur la carte.
D. ADDOU
12
USTHB/FEI TP-FPGA-VHDL
3. Sélectionner VHDL Module comme source et entrer le nom du design que vous
allez concevoir.
7. Cliquer sur Next et ensuite sur Finish. Une ébauche du fichier apparaît avec la description
de l’entité et de l’architecture.
D. ADDOU
13
USTHB/FEI TP-FPGA-VHDL
Une fois le fichier VHDL édité, il est conseillé de vérifier la syntaxe du design afin de trouver
des erreurs de syntaxe, de typographie :
1. Vérifier que synthesis/implementation est sélectionné dans la liste déroulante de la fenêtre
sources.
2. Sélectionner le fichier VHDL VHDL_didacticiel pour afficher les processus liés dans la
fenêtre process.
3. Cliquer sur le « + » à coté de synthesize-XST.
4. Double-cliquer sur le processus check syntax. Si tout va bien, un crochet vert apparaît.
Sinon, consulter les messages d’erreur dans la console au bas de l’écran.
5. Corriger les erreurs s’il y a lieu, puis fermer le fichier VHDL.
6. Refaire les étapes des sections 4. et 5.
7. Application
Il vous est demandé de réaliser un soustracteur complet 1 bit (a, b, et Cin représentent les entrées et
d et Cout pour les sorties) en mode schématique et le faire valider son implémentation par votre
enseignant.
D. ADDOU
14
USTHB/FEI TP-FPGA-VHDL
Annexe TP1 :
Bouton – Poussoir : Au niveau bas, il passe au niveau haut quand il est pressé.
D. ADDOU
15
USTHB/FEI TP-FPGA-VHDL
TP2
Structuration et Simulation des Systèmes
Combinatoires Simples
1. But du TP
Dans ce TP, vous allez réaliser votre première conception
simple qui va vous permettre de découvrir les entrées et sorties
de la carte Nexys2. Par la même occasion, ce TP vise à fournir Consignes
une initiation à l’utilisation des outils de Xilinx et Digilent. De Faire valider le code par l’enseignant
par sa simplicité, c’est aussi un bon exemple pour comprendre avant la programmation de la carte ;
le fonctionnement de la chaîne de transformation : comment à Faire valider chacune des applications
partir d’un code de description ou un schéma de circuit vous par l’enseignant ;
allez, par ISE, produire un fichier toplevel.bit. Ce fichier est
Il vous est conseillé de faire un compte-
ensuite chargé sur la carte afin d’implanter sur celle-ci le circuit
spécifié dans ISE.
rendu et le rendre à la fin de séance TP.
D. ADDOU
16
USTHB/FEI TP-FPGA-VHDL
Syntaxe :
Remplissage d’un
Label : process(liste des signaux de sensibilité) Détecteur d’un front
bit_vector
Nom des objets internes : types ; -- si nécessaire
--Front montant --tous les bits à 0
begin
ifclk ‘event andclk=’1’ then … X<= (others=>’0’);
...
--Front descendant --tous les bits à 1
endprocess;
ifclk ‘event andclk=’0’ then … X<= (others=>’1’);
D. ADDOU
17
USTHB/FEI TP-FPGA-VHDL
Pour commencer, il faut créer un décodeur hexadécimal vers 7 segments qui transforme un code
binaire sur 4 bits en 7 signaux affichant le caractère correspondant sur l'afficheur.
3.1 Dresser la table de vérité du décodeur Hexa-7seg. Les segments de l’afficheur sont notés A B
C D E F G comme indiqué sur la figure 1 suivante. Il faut imposerun niveau 0 pour allumer un
segment et un niveau 1 pour l'éteindre.
3.3 Ajouter une nouvelle source de type VHDL Module dans lequel on décrira en langage VHDLle
comportement du décodeur. Nommer ce fichier hex_7seg. Cliquer sur Next. Une nouvelle fenêtre
s'ouvre, il faut indiquer les noms, tailles et sens des différentes entréeset sorties du composant
logique. Les entrées sont les 4 bits du code hexadécimal switchs(3 :0),les sorties sont les 7 segments
nommés seg(6 :0) permettant d'afficher le caractère et 4 anodes nommées anodes(4 :0).
D. ADDOU
18
USTHB/FEI TP-FPGA-VHDL
entity hex_7seg is
Port ( switches : in STD_LOGIC_VECTOR (3 downto 0);
seg : out STD_LOGIC_VECTOR (6 downto 0);
anodes : out STD_LOGIC_VECTOR (3 downto 0));
end hex_7seg;
architectureBehavioral of hex_7seg is
begin
withswitches select
seg<=
"1000000" when x"0" ,
"1111001" when x"1" ,
…
D. ADDOU
19
USTHB/FEI TP-FPGA-VHDL
Une fois que toutes les étapes de "compilation" sont réussies (Fig. 8), le fichier binaire *.bit est
généré (avec un double clic sur GenerateProgramming File) et peut alors êtreimplanté dans le FPGA.Pour
cela, il est nécessaire de relier la carte sur un des ports USB de l’ordinateur et d’allumer la carte
d’étude(interrupteur le plus à gauche - SW8).
D. ADDOU
20
USTHB/FEI TP-FPGA-VHDL
Le fichier généré se trouve dans votre projet et se nomme ici hex_7seg.bit. L’utilitaire Adept
(Digilent) sera alors utiliser pour transférer le fichier binaire vers le FPGA.Pour cela, lancez Adept
depuis le menu démarrer de votre PC. Il vous suffit de sélectionner le bon fichier avec Browse et
une fois effectué vous pouvez charger le code produit par ISE sur le FPGA de la carte Nexys.
Cliquez sur Program.
Enfin, Tester et vérifier le fonctionnement de votre circuit. Le faire valider par votre enseignant.
4. Applications
On se propose ici de reprendre en main le logiciel Xilinx ISE. Pour cela, il vous est demandé de
réaliser les systèmes suivants et faire valider leurs fonctionnements par votre enseignant :
4.1 Réaliser un soustracteur complet à 1 bit. Conformément à la description utilisée en TP1, les
entrées seront réalisées à l’aide des switchs et les sorties seront visualisées sur des LEDs.
4.2 Réaliser un multiplexeur 4 vers 1. Les entrées seront réalisées par des interrupteurs et les sorties
par des LEDs.
D. ADDOU
21
TP2
Structuration et Simulation des Systèmes
Combinatoires Simples
1. But du TP
Dans ce TP, vous allez réaliser votre première conception
simple qui va vous permettre de découvrir les entrées et sorties
de la carte Nexys2. Par la même occasion, ce TP vise à fournir Consignes
une initiation à l’utilisation des outils de Xilinx et Digilent. De Faire valider le code par l’enseignant
par sa simplicité, c’est aussi un bon exemple pour comprendre avant la programmation de la carte ;
le fonctionnement de la chaîne de transformation : comment à Faire valider chacune des applications
partir d’un code de description ou un schéma de circuit vous par l’enseignant ;
allez, par ISE, produire un fichier toplevel.bit. Ce fichier est
Il vous est conseillé de faire un compte-
ensuite chargé sur la carte afin d’implanter sur celle-ci le circuit
rendu et le rendre à la fin de séance TP.
spécifié dans ISE.
Syntaxe :
Remplissage d’un
Label : process(liste des signaux de sensibilité) Détecteur d’un front
bit_vector
Nom des objets internes : types ; -- si nécessaire
--Front montant --tous les bits à 0
begin
ifclk ‘event andclk=’1’ then … X<= (others=>’0’);
...
--Front descendant --tous les bits à 1
endprocess;
ifclk ‘event andclk=’0’ then … X<= (others=>’1’);
D. ADDOU
2
USTHB/FEI TP-FPGA-VHDL
3.1 Dresser la table de vérité du décodeur Hexa-7seg. Les segments de l’afficheur sont notés A B
C D E F G comme indiqué sur la figure 1 suivante. Il faut imposerun niveau 0 pour allumer un
segment et un niveau 1 pour l'éteindre.
3.3 Ajouter une nouvelle source de type VHDL Module dans lequel on décrira en langage VHDLle
comportement du décodeur. Nommer ce fichier hex_7seg. Cliquer sur Next. Une nouvelle fenêtre
s'ouvre, il faut indiquer les noms, tailles et sens des différentes entréeset sorties du composant
logique. Les entrées sont les 4 bits du code hexadécimal switchs(3 :0),les sorties sont les 7 segments
nommés seg(6 :0) permettant d'afficher le caractère et 4 anodes nommées anodes(4 :0).
D. ADDOU
3
USTHB/FEI TP-FPGA-VHDL
Un nouveau fichier nommé hex_7seg.vhd s'ouvre. Une partie du code VHDL est déjà écrite. Ce
code est composé de deux blocs : un bloc ENTITY qui reprend les entrées et les sorties spécifiées
précédemment et un bloc ARCHITECTURE qui décrit le comportement des sortiesen fonction des
entrées.
3.4 Compléter la partie ARCHITECTURE. (fig. 4)
entity hex_7seg is
Port ( switches : in STD_LOGIC_VECTOR (3 downto 0);
seg : out STD_LOGIC_VECTOR (6 downto 0);
anodes : out STD_LOGIC_VECTOR (3 downto 0));
end hex_7seg;
architectureBehavioral of hex_7seg is
begin
withswitches select
seg<=
"1000000" when x"0" ,
"1111001" when x"1" ,
…
D. ADDOU
4
USTHB/FEI TP-FPGA-VHDL
Une fois que toutes les étapes de "compilation" sont réussies (Fig. 8), le fichier binaire *.bit est
généré (avec un double clic sur GenerateProgramming File) et peut alors êtreimplanté dans le FPGA.Pour
cela, il est nécessaire de relier la carte sur un des ports USB de l’ordinateur et d’allumer la carte
d’étude(interrupteur le plus à gauche - SW8).
D. ADDOU
5
USTHB/FEI TP-FPGA-VHDL
Le fichier généré se trouve dans votre projet et se nomme ici hex_7seg.bit. L’utilitaire Adept
(Digilent) sera alors utiliser pour transférer le fichier binaire vers le FPGA.Pour cela, lancez Adept
depuis le menu démarrer de votre PC. Il vous suffit de sélectionner le bon fichier avec Browse et
une fois effectué vous pouvez charger le code produit par ISE sur le FPGA de la carte Nexys.
Cliquez sur Program.
Enfin, Tester et vérifier le fonctionnement de votre circuit. Le faire valider par votre enseignant.
4. Applications
On se propose ici de reprendre en main le logiciel Xilinx ISE. Pour cela, il vous est demandé de
réaliser les systèmes suivants et faire valider leurs fonctionnements par votre enseignant :
4.1 Réaliser un soustracteur complet à 1 bit. Conformément à la description utilisée en TP1, les
entrées seront réalisées à l’aide des switchs et les sorties seront visualisées sur des LEDs.
4.2 Réaliser un multiplexeur 4 vers 1. Les entrées seront réalisées par des interrupteurs et les sorties
par des LEDs.
D. ADDOU
6
TP3
Développement d’un système numérique
Structuration, Simulation et Implémentation (suite)
1. But du TP
signal I : integer range -128 to 127; I sera codé sur 8 bits en CA2
signal J : integer range 0 to 15; J sera codé sur 4 bits non signés
signal K : integer range -32768 to 32767; K sera codé sur 16 bits en CA2
signal L : integer; L sera codé sur 32 bits en CA2 (par défaut)
• Les réels (qui ne sont pas synthétisables mais que l’on peut utiliser dans un testbench)
avec par exemple :
signal X : real; X peut être compris entre -1038 et 1038 (float 32 bits par défaut)
2.1 Créez un nouveau projet, où vous devrez joindre les fichiers sources suivants :
- fichier VHDL Adder4.vhd
- fichier VHDL Bin2Hex.vhd
D. ADDOU
2
USTHB/FEI TP-FPGA-VHDL
Créer un nouveau projet pour décrire un modèle VHDL Complet (Entité Et Architecture
Structurelle) du Multiplexeur 4-Vers-1 illustré par la figure 2.
D. ADDOU
3
USTHB/FEI TP-FPGA-VHDL
D. ADDOU
4
USTHB/FGE TP4/FPGA-VHDL
TP4
Développement d’un système numérique
Séquentiel : Bascules et Registres
1. But du TP
Dans le cadre de développement d’un système séquentiel via les outils CAO Xilinx, Nous nous
intéressons beaucoup plus dans ce TP aux instructions séquentielles qui se déclarent dans le corps
d’un process en VHDL. À l'issue de ce TP, vous devriez être capable de :
1. Connaitre le fonctionnement d’une bascule D.
2. Construire un registre à décalage simple avec des bascules.
3. Construire un registre à décalage chargeable.
2. Rappel de cours :
2.1. Code VHDL de la bascule D : Front d’horloge
Pour modéliser une bascule, il est nécessaire de pouvoir la décrire, le fait que le changement d’état
se produit sur une transition d’un signal d’horloge et non sur sa valeur. Pour ce faire, on peut
utiliser les attributs d’évènements (event attribute) définis en VHDL.
L’exemple ci-dessous démontre l’utilisation de l’attribut event sur le signal CLK, dénoté par
CLK’event. La condition CLK =’1’ dénote alors un front montant.
Le package std_logic_1164 contient aussi deux fonctions, utilisées pour synchroniser un process
sur une horloge : rising_edge() et falling_edge(). Ces deux fonctions retournent des valeurs
booléennes.
D. ADDOU 1
USTHB/FGE TP4/FPGA-VHDL
Une bascule D a deux entrées supplémentaires, PRE (Preset ou set : mise à 1) et CLR (Clear ou
reset: mise à zéro). Ces deux entrées sont asynchrones ou synchrones et permettent à l'utilisateur
de définir les conditions initiales pour la bascule.
Les deux exemples ci-dessous, montrent les deux types de signaux d’initialisations envisageables :
D. ADDOU 2
USTHB/FGE TP4/FPGA-VHDL
3. Manipulation
4- Compilez le projet et chargez le circuit dans le FPGA pour tester le fonctionnement de la bascule
D flip-flop. On pourra connecter les entrées de la bascule
aux Switchs, L'entrée Clock sera reliée à un bouton-
poussoir (BTN0) et la sortie au led.
5- Même travail demandé mais cette fois-ci pour une bascule
D flip-flop avec Reset Asynchrone et Synchrone (figure 2).
Fig. 2
3.2 Manipulation 2 : Registres à décalages
1. En utilisant le paramètre "Geniric" qui permet de définir la taille du registre, écrire le code de
description VHDL pour la réalisation d’un registre, entrée série/ sortie série (SISO) (figure 3).
2. Compilez le projet pour un registre à décalage de 4 bits et chargez le circuit dans le FPGA pour
tester le fonctionnement du registre.
3. Même travail demandé mais cette fois-ci pour réaliser un registre, entrée parallèle/ sortie série
(PISO) (figure 4). Vous utiliserez la commande "load" qui permet de charger le registre.
D. ADDOU 3
USTHB/FGE TP4/FPGA-VHDL
Fig. 5
D. ADDOU 4
USTHB/FGE/M1 TP5/FPGA-VHDL
TP5
Développement d’un système numérique
Séquentiel : Les Compteurs
1. But du TP
L’objectif du TP est de saisir en VHDL, simuler et tester l’implémentation d’:
1. un diviseur d’horloge ;
2. un compteur 4 bits avec reset et sortie sur afficheur 7-segments de la carte FPGA ;
3. un compteur asynchrone utilisant des bascules D.
2. Rappel de cours :
2.1. Diviseur de fréquence
Le diviseur d'horloge est également connu sous le nom de diviseur de fréquence, qui divise la
fréquence d'horloge d'entrée et produit une horloge de sortie. Dans notre cas, on prend la
fréquence d'entrée de l’horloge de la carte FPGA à 50 MHz et on divise la fréquence de cette
dernière pour générer un signal de sortie de 1Hz.
Exemple : Pour avoir une horloge de 2 Hz (période de 0,50s) à partir d'une horloge de 50MHz
(période de 2.10-8s), il nous faut un compteur qui s'incrémente chaque front montant via un
process séquentiel. Ainsi, le signal d'horloge de 2Hz doit changer de valeur chaque 0.25s (c.a.d.
0.25s à ‘1’ et 0.25 s à ‘0’). C’est la valeur de comptage correspondante à la fréquence de sortie
qu’on doit exprimer en VHDL : 0.25s/0.00000002s est égal à 12500000. En effet, si le comptage
est égal à 12500000 donc clk_2_hz <= not(clk_2_hz) et on remet le compteur à 0.
2.2. Compteur
Un compteur est une variable qui permet de compter des évènements par rapport à une horloge.
Il est caractérisé par :
o Sa possibilité de décomptage/décomptage (+/-).
o Son pas d’incrémentation
o Sa résolution binaire (nombre de bits nécessaires).
Le compteur le plus simple formé par une simple bascule D (figure 1) est un diviseur de fréquence
par deux : la fréquence de changement de la variable d’état sera la moitié de celle de l’horloge.
Fig. 1
D. ADDOU 1
USTHB/FGE/M1 TP5/FPGA-VHDL
Fig. 2
3. Manipulation :
Nous allons synthétiser un compteur et utiliser l'afficheur 7 segments pour visualiser ses valeurs.
L'horloge disponible sur notre carte de développement est une horloge 50MHz. Il va donc falloir
considérablement ralentir cette horloge pour pouvoir regarder défiler les valeurs du compteur. La
figure 3 présente le travail à réaliser :
Reset
Fig. 3
Le compteur sera piloté par une horloge d’environ 1Hz (clk_1Hz) et remis à zéro par le signal reset piloté
par un bouton poussoir. La valeur du compteur (Sorties binaires sur 4 bits) s'affichera sur un afficheur 7
segments. Chaque bloc du diagramme sera représenté en VHDL par un processus (process). A l'intérieur
d'un processus, on décrit les instructions séquentiellement comme dans un programme. Mais tous les
processus s'exécutent en parallèle simultanément. Les processus de l'architecture sont interconnectés par
le biais des signaux.
D. ADDOU 2
USTHB/FGE/M1 TP5/FPGA-VHDL
Fig. 4
Processus 2 : Compteur/décompteur (fig. 5)
Fig. 5
D. ADDOU 3
USTHB/FGE/M1 TP5/FPGA-VHDL
c) Compilez le projet et chargez le circuit dans le FPGA pour tester le fonctionnement du compteur.
On pourra connecter les entrées aux Switches et l'entrée Clock_50Hz sera reliée à l’horloge de la
carte FPGA. Faire valider votre implémentation par l’enseignant.
a) Faire l’analyse du circuit séquentiel représenté par la figure 7. Justifier le rôle du circuit.
b) Créer un fichier source VHDL nommé Cpt4D.vhd.
c) Réaliser le compteur asynchrone binaire 4-bit (fig. 7) à partir de la description VHDL d’une
bascule D active sur front descendant ( nommer le fichier ffD.vhd)
(Vous pouvez utiliser l’instruction concurrente for … generate)
d) Compilez le projet et chargez le circuit dans le FPGA pour tester le fonctionnement du compteur.
On pourra connecter l’entrée Clk à un bouton poussoir et les sorties des bascules aux Leds. Faire
valider votre implémentation par l’enseignant.
D1 Q1 D2 Q2 D3 Q3 D4 Q4
Clk 𝑸1 𝑸2 𝑸3 𝑸4
Reset
Fig. 7
D. ADDOU 4