Université des Sciences et de la Technologie Houari Boumediene
Faculté de Génie Electrique
Département Electronique
Travaux Dirigés
ElEctroniquE numériquE
avancéE : FPGa - vHDl
Master 1ére année
Élaboré par : Mr. Djamel ADDOU
USTHB/FGE/Dept. ELN Circuits Logiques Programmables-FPGA-VHDL
D. ADDOU
2
USTHB/FGE/Dept. ELN Circuits Logiques Programmables-FPGA-VHDL
Série1
Circuits logiques programmables
PLD de type : PROM, PLA, PAL, FPGA
Rappel : On rappelle que le C.I. de type 74xx utilisant la technologie TTL avec 14 broches, noté
par "N/E" où N est le nombre de portes et E le nombre d’entrées par porte, soit un 4/2 (ex : 7432),
le 2/4 (ex. 7420), le 3/3 (ex. 7411) ou 1/8 (ex. 7430).
Exercice 1
a) Simplifier par Karnaugh les 4 fonctions suivantes et mettez-les en forme puis proposer une
réalisation globale avec un minimum de C.I. de type 74xx. (Préciser le nombre de C.I. utilisés
sans faire de logigramme).
𝐹 = ∏(0,5,6,7,9,10,11,12) ; 𝐹 = ∏(1,3,4,6,9,11,12,14)
𝐹 = ∑(1,3,4,6,9,11,12,14) ; 𝐹 = ∑(13,14,15) + ∅(0, 2,9,10,11)
b) Après avoir donné le schéma de la ROM de 16 mots de 8 bits programmable, réaliser le circuit
des 4 fonctions précédentes avec cette ROM.
Exercice 2
On désire réaliser un transcodeur qui convertit du code BCD au code Gray à 4 entrées.
a) Donner la table de vérité du système.
b) Simplifier les équations logiques à l’aide des tableaux de Karnaugh.
c) Utiliser le PAL 4-4-4 (4 entrées et 4 sorties à 4 termes de produit) afin de réaliser les
fonctions souhaitées.
D. ADDOU
3
USTHB/FGE/Dept. ELN Circuits Logiques Programmables-FPGA-VHDL
Exercice 3
Soit un circuit logique qui fait la comparaison de nombres de 1bit et dont la table de vérité est :
a b a>b a=b a) Réaliser un comparateur de deux nombres de 2 bits chacun à base du circuit
00 0 1 comparateur de 1bit et de portes logiques usuelles.
01 0 0 b) Utiliser un PAL de 4 pins d’entrées et 4 pins de sorties possédant chacune
10 1 0 4 termes de produits, afin de réaliser les fonctions souhaitées.
11 0 1 c) Combien faut-il de nombre de PAL utilisés en question (b), pour réaliser
un comparateur de deux nombres de 8 bits.
Exercice 4
Un comité composé de quatre personnes a besoin d’un mécanisme de vote secret pour les
amendements sur la constitution du comité. Un amendement est approuvé si au moins 3 personnes
votent pour.
a) Concevoir un circuit logique programmable PLA qui accepte 4 entrées représentant les
votes. La sortie du circuit doit indiquer si l’amendement est accepté.
b) Programmer le circuit PAL 4-3-6 (4 entrées, 3 sorties à 6 termes) pour implémenter le
circuit en question.
c) Implémenter le circuit sur une ROM 16x8.
d) Conclure (comparer entre les deux implémentations PAL 4-3-6 et ROM 16x8).
Exercice 5
a) Réaliser un additionneur complet à l’aide d’un PAL que vous choisissez.
b) Réaliser un compteur modulo 8 synchrone en utilisant un FPLA séquentiel.
c) Réaliser le registre définit par la table de fonctionnement suivante à l’aide d’un FPLA
séquentiel ?
S0 S1 h Q3 Q2 Q1 Q0
1 0 FM Q2 Q1 Q0 SL Décalage gauche
0 1 FM SR Q3 Q2 Q1 Décalage droite
0 0 X Q3 Q2 Q1 Q0 Mémorisation
Exercice 6
a) Quel type de PLD représente le bloc diagramme logique de la figure ci-dessous, en annexe.
Donner sa nomenclature. (Justifier votre réponse).
D. ADDOU
4
USTHB/FGE/Dept. ELN Circuits Logiques Programmables-FPGA-VHDL
b) Réaliser un soustracteur complet 1 bit sur ce PLD en choisissant les pins d’entrées ceux
données par la figure ci-contre
Soustracteur_1bit
5 a D ?
6 b
Cs ?
7 Ce
D. ADDOU
5
USTHB/FGE/Dept. ELN Circuits Logiques Programmables-FPGA-VHDL
Exercice 7
On souhaite réaliser un registre à décalage universel 8 bits. Il possède 3 entrées de contrôle S 2, S1
et S0 indiquant le nombre de décalage à gauche à effectuer sur les bits de données D 7, D6, ..., D0.
La donnée décalée à gauche est disponible sur les sorties O 7, O6, ..., O0.
a) Donner la table de vérité du circuit et déduire les équations logiques des sorties.
b) Configurer ce registre sur le PAL 20R8 (voir schéma ci-dessous).
D. ADDOU
6
USTHB/FGE/Dept. ELN Circuits Logiques Programmables-FPGA-VHDL
Exercice 8
On souhaite réaliser la fonction combinatoire de détection de parité d’un mot A de trois bits
(A2A1A0). Si A comporte un nombre de bits pair (pour le bit 1), S=1. Dresser la table de vérité et
faire la réalisation, en utilisant :
a) Une LUT-3 (3 entrées)
b) Des LUT-2 (4 entrées)
Exercice 9
Considérez le module qui doit réaliser les fonctions logiques F et G suivantes :
𝐹 = ∏(0,5,6,7,9,10,11,12) ; 𝐺 = ∑(13,14,15) + ∅(0, 2,9,10,11)
1) Faire l’implémentation du module avec le nombre minimal de tables de correspondance :
a) à 3 entrées (LUT‐3).
b) à 2 entrées (LUT-2).
2) Donner son implémentation sur un PAL 20R8 que vous définissez et le représentez sur
une forme réduite 4R2 avec 8 termes de produits.
3) Donner son implémentation sur une portion d’un réseau pré-diffusé programmable FPGA
de la figure ci-dessous. Décrire brièvement cette portion.
D. ADDOU
7
USTHB/FGE/Dept. ELN Circuits Logiques Programmables-FPGA-VHDL
Exercice 10
Considérez le module qui doit réaliser la fonction logique F et G suivante :
𝑭(𝒂,𝒃,𝒄,𝒅) = ∑ 𝑚(1,3,5,7,8,10,12,14) 𝑒𝑡 𝑮(𝒂,𝒃,𝒄,𝒅) = ∑ 𝑚(10,12,14)
(a étant la variable du bit de poids le plus fort :MSB)
4) Faire l’implémentation du module avec un nombre minimal de tables de
correspondance
c) à 3 entrées (LUT-3).
d) à 2 entrées (LUT-2).
5) Réaliser le module (F, G) avec le PLD de la figure 1. Donnez sa nomenclature.
(Justifier votre réponse).
6) Considérez le module d’équation logique H suivante : 𝑯 = 𝑭 + 𝑮
La figure 2 représente une portion d’un réseau pré-diffusé programmable (FPGA). En
utilisant cette figure, montrer comment implémenter ce module d’équation H, en indiquant
clairement la position de chaque port, le contenu des tables de correspondance (LUT) et le
routage des différents signaux.
Fig. 2
D. ADDOU
8
USTHB/FGE/Dept. ELN Circuits Logiques Programmables-FPGA-VHDL
Fig. 1
D. ADDOU
9
USTHB/FGE/Dept. ELN Circuits Logiques Programmables-FPGA-VHDL
Série2 : Programmation de la logique
combinatoire en VHDL
Exercice 1
Ena
Donner la description VHDL :
a) de la porte logique NOR à 2 entrées,
I (7 :0) O (7 :0)
b) d’un buffer à 3 états (voir figure ci-contre)
c) d’un composant xor3 décrit par le schéma
suivant.
Exercice 2
Soit le schéma d'une application du système suivant : a b c
1.1. Description par flot de données
Le système est décrit par les équations booléennes
qu’il représente. ˣ ˣ S
a). Faire la description VHDL de ce composant.
ˣ ˣ
1.2. Description comportementale
Cette description permet de décrire le comportement sans faire appel aux équations mais en passant
par la table de vérité.
b) Réaliser la table de vérité de ce composant
c) Faire une description comportementale de ce composant sans utiliser de process.
d) Faire une description comportementale de ce composant en utilisant un process.
1.3. Description structurelle
La description structurelle décrit la fonction à partir de composants préexistants.
e).Réaliser le composant ET
f).Réaliser le composant NON
g).Réaliser le composant OU
h).Réaliser le composant globale en utilisant chacun des composants déjà réalisés.
D. ADDOU
10
USTHB/FGE/Dept. ELN Circuits Logiques Programmables-FPGA-VHDL
Exercice 3 (circuit arithmétique)
a) Dans un système combinatoire, comment s’exécute les instructions concurrentes ?
b) Dans ce cas de fonctionnement concurrent, proposer deux solutions pour la description
VHDL d’un demi-additionneur (faire le schéma de compilation du circuit)
c) Donner la description VHDL d’un additionneur 1 bit dans le cas :
1. des instructions concurrentes, en utilisant le schéma de compilation.
2. de l’instruction when-else, en utilisant la table de vérité
3. de l’instruction with-select, en utilisant une table de vérité pour chaque sortie
d) Selon le schéma ci-dessous, Donner la description VHDL d’un additionneur mots de 2 bits.
e) Réaliser, ainsi, un additionneur mots de 8 bits, en utilisant l’instruction for…generate.
Exercice 4 (circuit d’aiguillage)
Donner la description VHDL :
a) d’un multiplexeur 4 vers 1, en utilisant l’instruction "if-then",
b) d’un multiplexeur 4 vers 1, en utilisant l’instruction "case",
c) d’un multiplexeur 4 vers 1, en utilisant des multiplexeurs 2 vers 1comme « component ».
Faire le schéma de compilation avant d’établir le code.
d) d’un démultiplexeur 1 vers 4. Faire le schéma de compilation avant d’établir le code.
A A
B MUX DEMUX B
Z F
C 4 to 1 1 to 4 C
D D
S1 S0 S1 S0
D. ADDOU
11
USTHB/FGE/Dept. ELN Circuits Logiques Programmables-FPGA-VHDL
Exercice 5 (circuit de transcodage)
1°) Donner la description en code VHDL pour l'encodeur 4 vers 2 eu utilisant :
a) l'instruction case,
b) l'instruction if else,
c) des portes logiques
2°) Reprendre la question 1, pour un code VHDL du décodeur 2 vers 4
A0 B0
A1 B0 A0 B1
Encoder Decoder
A2 4 to 2 B1 A1 2 to 4 B2
A3 B3
Exercice 6 (circuit ALU)
Donner une description VHDL (comportementale) d’une unité arithmétique et logique ALU
(voir figure ci-dessous) dont le fonctionnement est résumé dans la table suivante :
sel Opération Unit
0000 Transfer a
0001 Increment a
0010 Decrement a
0011 Transfer b
0100 Increment b
Arithmetic a [7 :0] Logic
0101 Decrement b b [7 :0] Unit
0110 a+b
0111 a+b+Cin MUX y [7 :0]
1000 Complement
1001 a Arithmetic
1010 Complement Cin Unit
1011 b
1100 AND sel [3 :0]
Logic
1101 OR
1110 NAND
1111 NOR
XOR
NXOR
D. ADDOU
12
USTHB/FGE/Dept. ELN Circuits Logiques Programmables-FPGA-VHDL
Exercice 7
La figure ci-dessous présente une implémentation d’une ALU 3 bits avec un additionneur, un
soustracteur, un multiplieur et un comparateur.
Donner le code VHDL du module ALU qui se compose d'un additionneur, d'un soustracteur, d'un
multiplicateur et d'un comparateur 3 bits en tant que composants mappés et d'un multiplexeur 4
vers 1 pour sélectionner le résultat de sortie.
A, B, Rin
A0 – A2
Additionneur
B0 – B2 Sum, Rout
Cin
A, B, Cin
UNITE Soustracteur
S0 – S1 de
Diff, Cout
CONTROL A,B
Multiplieur
Produit
A,B
Resultat
Comparateur
Compare
Exercice 8
On Considère le système d’équations logiques suivant :
𝑃 = 𝐴𝐵𝐶𝐷 + 𝐵 𝐷 + 𝐴̅𝐶̅ 𝐷 + 𝐸𝐹 𝐺
𝑄 = 𝐵𝐶 + 𝐴𝐵 + 𝐶̅ 𝐷
Considérez le circuit ci-dessous, qui représente une portion d’un réseau pré-diffusé programmable
(FPGA). En utilisant ce circuit, montrez comment implémenter ce système d’équations.
a) Indiquez clairement la position de chaque port, le contenu des tables de correspondance (Look-
Up Table– LUT) et le routage des différents signaux.
D. ADDOU
13
USTHB/FGE/Dept. ELN Circuits Logiques Programmables-FPGA-VHDL
b) Considérez l’extrait de code VHDL ci-contre.
Donnez son équivalent en matériel à l’aide d’un schéma de portes logiques.
library ieee;
use ieee.std_logic_1164.all;
entity exo1 is
port (
A,B,C: in std_logic;
F,G,H: out std_logic);
end exo1;
architecture arch of exo1 is
begin
F <= not(A and (B xor not(C)));
G <= '0' when (A = '1' or B /= C)
else '1';
with A select H <= B when '0',
C when others;
end arch;
D. ADDOU
14
USTHB/FGE/Dept. ELN Circuits Logiques Programmables-FPGA-VHDL
Série3 : Programmation de la logique
séquentielle en VHDL
Exercice 1
I. Programmer la tranche du FPGA représenté par son bloc CLB de type Xilinx de la famille
Spartan3E (figures 1et 2), pour implémenter le circuit
réalisant la fonction de la bascule JK.
Pour cette configuration, il faut suivre les étapes suivantes :
a) En s’appuyant sur les figures suivantes, rappelez la façon dont
le CLB est structuré dans le FPGA.
b) Choisir les ports d’entrée et de sortie.
c) Indiquer quelles connexions établir.
d) Donner le contenu des tables de correspondances (LUT).
Fig. 1
Fig. 2
II. Déterminez les bits de configuration pour l'implémentation de la bascule dans un FPGA
2x2 dont les CLB à 1 LC de la figure 2, avec des contraintes d‘E/S et du bloc Switch SB
comme indiqué dans la figure 3. Pour cette génération du bit Stream, il faut :
a) Placement: Sélectionner les CLB
b) Routage : Sélectionner le chemin de l’interconnexion
c) Configuration du bitstream: Le bitstream de configuration doit inclure TOUS les CLB
et SB, même ceux inutilisés
D. ADDOU
15
USTHB/FGE/Dept. ELN Circuits Logiques Programmables-FPGA-VHDL
SB
Fig. 3
III. Reprendre la partie B de l’exercice, pour des CLB à 2 entrées. Pour cela, donnez la nouvelle
configuration des LUT à utiliser. Faire le schéma du CLB approprié et enfin, déduire la
génération du bitstream.
Exercice 2
1) La figure ci-dessous (de gauche) montre un LATCH D construit à partir d’un LATCH
R-S à base de porte logique NAND. Donner la description VHDL du LATCH D.
LATHC D Symbole du Flip-Flop D
2) Compléter les chronogrammes
correspondants aux sorties
d’un Latch D et d’un
Flip-Flop D(figure de droite).
3) Donner , enfin la description
VHDL du Flip-Flop D.
D. ADDOU
16
USTHB/FGE/Dept. ELN Circuits Logiques Programmables-FPGA-VHDL
Exercice 3
a) Rappelez la table de vérité d’un flip-flop JK et faire la Description VHDL de la figure 1.
b) Faire l’analyse du circuit représenté par la figure 2, et donner sa fonction.
Déduire ainsi sa description sans tenir compte du schéma.
Fig. 1 Fig. 2
Exercice 4
Soient les bascules D et JK synchronisés sur front montant.
a) Donnez le chronogramme des sorties Q de chacune des bascules câblées ci-contre en
fonction d’une entrée d’horloge H.
b) Déduire le rôle de chacun des circuits.
c) Décrire en VHDL leur description.
d) Déduire, ainsi, la description structurale d’un compteur synchrone 4 bits en utilisant chacune
des deux figures.
Exercice 5
Soient les circuits séquentiels représentés par les figures ci-dessous, décrire en VHDL :
D. ADDOU
17
USTHB/FGE/Dept. ELN Circuits Logiques Programmables-FPGA-VHDL
a) la description d’un flipflop D avec une entrée de validation (Fig.1).
Fig. 1
b) la description d’un compteur unidirectionnel, Fig. 2
préchargeable et avec une initialisation RAZ (fig. 2).
c) la description d’un compteur préchargeable avec
autorisation (fig. 3).
d) un compteur qui compte jusqu’à 24 avec SET et RESET
asynchrones.
Fig. 3
e) Donnez la description en VHDL du registre de type :
i. Registre à décalage à droite 4 bits, avec reset asynchrone.
ii. Registre D synchrone, 8 bits, avec reset synchrone et entrée de validation.
iii. Registre à décalage à droite 12 bits, avec reset asynchrone.
Exercice 6
On considère le programme VHDL suivant :
library IEEE;
use IEEE.std_logic_1164.all;
entity exo4 is
port (A, B, C : in std_logic;
Q1 : out std_logic :=’1’;
Q2 : out std_logic :=’0’);
end exo4;
architecture synth of exo4 is
signal X, Y : std_logic;
D. ADDOU
18
USTHB/FGE/Dept. ELN Circuits Logiques Programmables-FPGA-VHDL
begin
process (X, C)
begin
if (X =’1‘) then
Q2 <= C;
end if;
end process;
Y <= B xor C;
process (A)
begin
if (A event and A=’1’) then
Q1 <= C;
X <= Y;
end if;
end process;
end synth;
1) Compléter le diagramme des temps suivant :
Q1
Q2
2) Dessiner le système généré par ce code VHDL avec 3 bascules D et 1 porte logique XOR.
Exercice 7
Soit le circuit séquentiel représenté par la figure ci-dessous. A l’instant initial (t=0s) les trois
bascules sont à l’état ‵1′ et Q0 sera prise comme bascule de bit de poids le plus faible (LSB) :
a) Faire l’analyse du circuit et déduire son rôle.
b) Décrire le circuit par une description VHDL de type structurel.
D. ADDOU
19
USTHB/FGE/Dept. ELN Circuits Logiques Programmables-FPGA-VHDL
Exercice 8
a) Faire la synthèse d’un compteur synchrone modulo 8 à l’aide de bascules T qui disposent
d’une entrée RST de remise à zéro asynchrone active à ‘0’. Dessiner le design de ce
compteur.
b) Décrire le circuit par une description VHDL de type structurel.
Exercice 9
Soit le circuit de la Figure 1 constitué de bascule D Flip-Flop. On suppose que les bascules
disposent d’une entrée RST de remise à zéro asynchrone active à ‘1’ ainsi que d’une entrée
d’activation CE active à ‘1’.
a) Donner la description matérielle en VHDL du circuit.
b) Pour la simulation, complétez les chronogrammes de la Figure 2.
Figure 1
D. ADDOU
20
USTHB/FGE/Dept. ELN Circuits Logiques Programmables-FPGA-VHDL
Figure 2
Exercice 10
a) Donner le schéma structure de l’organisation d’une mémoire RAM de 128 octets et donner
sa description VHDL (figure 1).
b) Donner la description VHDL de la BRAM de la figure 2.
Fig. 1
Exercice 11 Fig. 2
Soit la SPRAM, RAM à port unique d’un FPGA Xilinx, représentée par la figure ci-dessous :
D. ADDOU
21
USTHB/FGE/Dept. ELN Circuits Logiques Programmables-FPGA-VHDL
a) Donner sa taille et faire sa description VHDL en mode généralisé avec une lecture
synchronisée et en utilisant les ports suscités. Proposez une simulation de votre code
VHDL.
b) Que doit-on modifier dans le code pour décrire une DPRAM, RAM à port double de taille
8Koctets avec un bus de donné de 4 bits (taille du mot mémoire).
-- ports:
-- we : activation d’écriture (write enable)
-- addr : port d'entrée pour obtenir l'adresse
-- din : données d'entrée à stocker dans la RAM
-- dout : données de sortie lues à partir de la RAM
-- addr_width : nombre total d'éléments à stocker (mettre le nombre exact)
-- data_width : nombre de bits dans chaque élément
-- clkA : horloge spécifiée pour le port A
Exercice 12
On désire concevoir un compteur à sortie sept segments réalisé avec une mémoire (figure ci-
dessous). Pour cela on utilise un compteur normal, c'est à dire qui compte en binaire sur 4 bits suivi
d'une mémoire pour le transcodage BCD-7segments qui permet l'affichage sur un afficheur 7
segments.
1. Dimensionner la ROM nécessaire à votre problème. Calculer les valeurs
hexadécimales contenues dans cette ROM. Donner sa description en VHDL.
2. Réaliser un compteur 4 bits avec initialisation asynchrone en utilisant sa description
matérielle en VHDL.
D. ADDOU
22
USTHB/FGE/Dept. ELN Circuits Logiques Programmables-FPGA-VHDL
3. Réaliser un diviseur de fréquence par 2**26 en utilisant sa description matérielle en VHDL.
4. Afin d’implémenter le compteur sur un FPGA, assembler le tout en utilisant sa description
structurelle en VHDL.
S_7segs
Note Bien : Le tableau d’affichage 7-segments pour le transcodeur BCD-7 segments sera comme indiqué dans le
tableau correspondant à la figure ci-contre :
Affichage G F E D C B A Hexadécimal
0
1 0 0 0 0 1 1 0 0X06
2
3
4
5
6
7
8
9
Bien sûr, si vous êtes en laboratoire, amusez-vous à faire l’implémentation et faire le test.
----------------------------------------------------------------------------Bonne Préparation-----------
D. ADDOU
23