Académique Documents
Professionnel Documents
Culture Documents
VLSI et systeme
1
20 EXERCICES SUR ARCHITECTURE DES CIRCUITS LOGIQUE PROGRAMMABLE
EXERCICE 1 :
20 questions à choix multiples (QCM) sur l'architecture des circuits programmables, accompagnées
de leurs réponses corrélées :
d) Capacité de reconfiguration
2
Réponse : d) Capacité de reconfiguration
a) Macrocellule
b) Porte logique
d) Flip-flop
a) Stockage de données
c) Conversion analogique-numérique
d) Amplification de signaux
a) Un type de FPGA
b) Un type de microcontrôleur
c) Un type de mémoire
d) Un type de transducteur
3
7) Quelle est la différence principale entre un FPGA et un CPLD ?
a) La taille
b) La capacité de reconfiguration
d) La technologie de fabrication
Réponse : a) La taille
4
a) Le coût
b) La capacité de reconfiguration
c) La performance
d) La complexité de conception
11) Quelles sont les deux principales technologies de mémoire utilisées dans les FPGA ?
a) SRAM et DRAM
b) Flash et EEPROM
c) ROM et PROM
d) SRAM et antifuse
Réponse : b) Un circuit dont la configuration est stockée dans une mémoire antifuse
5
c) Un circuit dont la configuration est stockée dans une mémoire flash
Réponse : a) Un circuit dont la configuration est stockée dans une mémoire SRAM
Réponse : a) Un circuit dont la configuration est stockée dans une mémoire flash
Réponse : a) Un circuit dont la configuration est stockée dans une mémoire EEPROM
6
Réponse : a) Un composant qui génère des signaux d'horloge
7
20) Qu'est-ce qu'un circuit hybride ?
EXERCICE 2 :
Considérons un circuit logique simple avec deux entrées A et B, et une sortie C. La sortie C est définie
comme suit : C= (A AND B) OR (A XOR B). Ecrivez la table de vérité pour ce circuit.
CORRECTION 2 :
Pour résoudre cet exercice, nous devons examiner toutes les combinaisons possibles des valeurs des
entrées A et B, et déterminer la valeur correspondante de la sortie C.
Table de vérité :
A B C
0 0 0
0 1 1
1 0 1
1 1 0
Explication :
Pour chaque combinaison d’entrées, nous évaluons l’expression logique (A AND B) OR (A XOR B) pour
obtenir la valeur de la sortie C.
EXERCICE 3 :
Considérons un circuit logique avec trois entrées A, B et C, et une sortie D. La sortie D est définie
comme suit : D = (A AND B) OR (B AND C) OR (A AND C). Ecrivez la table de vérité pour ce circuit.
Correction 3:
Pour résoudre cet exercice, nous devons examiner toutes les combinaisons possibles
des valeurs des entrées A et B et C, et déterminer la valeur correspondante de la sortie D.
Table de vérité :
A B C D
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1
9
Explication :
Pour chaque combinaison d’entrées, nous évaluons l’expression logique (A AND B) OR (B AND C) OR
(A AND C) pour obtenir la valeur de la sortie D.
10
✓ Pour A= 1, B=1 et C=1 :
• (A AND B) = (1 AND 1) =1
• (B AND C) = (1 AND 1) =1
• (A AND C) = (1 AND 1) =1
• (A AND B) OR (B AND C) OR (A AND C) = 1 OR 1 OR 1=1.
EXERCICE 4 :
Considérons un circuit logique simple avec deux entrées A et B, et une sortie C. La sortie C est définie
comme suit : C= (A AND B) OR (A XOR B). Ecrivez la table de vérité pour ce circuit.
CORRECTION 4:
Pour résoudre cet exercice, nous devons examiner toutes les combinaisons possibles des
valeurs des entrées A et B, et déterminer la valeur correspondante de la sortie C.
Table de vérité :
A B C
0 0 0
0 1 1
1 0 1
1 1 0
Explication :
Pour chaque combinaison d’entrées, nous évaluons l’expression logique (A AND B) OR (A XOR B) pour
obtenir la valeur de la sortie C.
EXERCICE 5 :
Considérons un circuit logique avec trois entrées A, B et C, et une sortie D. La sortie D est définie
comme suit : D = (A AND B) OR (B AND C) OR (A AND C). Ecrivez la table de vérité pour ce circuit.
Correction 5 :
Pour résoudre cet exercice, nous devons examiner toutes les combinaisons possibles
des valeurs des entrées A et B et C, et déterminer la valeur correspondante de la sortie D.
Table de vérité :
A B C D
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1
Explication :
Pour chaque combinaison d’entrées, nous évaluons l’expression logique (A AND B) OR (B AND C) OR
(A AND C) pour obtenir la valeur de la sortie D.
13
Exercice 6
Compléter le programme VHDL correspondant au circuit ci-dessous :
Sel
S1 A
B
S3
MUX D O
S2
CLK
Correction 6
Library ieee ;
Use ieee.std_logic_1164.all ;
Entity exercice2 is
Port ( A : in std_logic ;
B : in std_logic ;
SEL : in std_logic ;
CLK : in std_logic ;
O : out std_logic);
End exercice2;
M2 Auto
S1<=A xor B ;
S2<= A and B ;
Process (SEL)
begin if
SEL=’1’ then
S3<=S1 ; else
S3<=S2 ;
end if ;
14
end process;
process(CLK,S3)
begin
if (CLK'event and CLK=’1’) then
O<=S3 ;
end if; end
process;
end behv;
EXERCICE CORRIGE 7 :
Indiquez, pour chacune des expressions suivantes, quel terme lui correspond dans la liste suivante :
FPGA, PLA, circuit logique, PROM, ou programme exécutable.
1. Un PLD avec une matrice AND fixe et une matrice OR programmable est : PROM
2. Le dispositif logique programmable complexe composé de CLB (Configurable Logic Bloc) est :
__FPGA__
3. Un langage HDL est un langage de programmation qui sert à donner naissance à : un circuit
logique
Donner la table des états de ce circuit séquentiel sachant qu’il démarre à partir de l’état initial Q2Q1Q0
= 000.
15
16
Exercice 8
Library ieee ;
Use ieee.std_logic_1164.all;
Use work.std_arith.all;
end Portes ;
Y2<= A or B;
Y3<= A xor B;
Y4<= A not B;
Y5<= A nand B;
Y6<= A nor B;
Correction 8
2) Quel est le nom de l’entité ? Portes Quel est le nom de l’architecture ? Arch_Portes
17
3) Représenter le schéma fonctionnel de la fonction.
Exercice 9
B A S
0 0 1
0 1 1
1 0 1
1 1 0
18
Correction 9
Library ieee ;
Use ieee.std_logic_1164.all ;
Use ieee.std_logic_arith.all ;
S: out std_logic);
end Ex_2;
begin
end arch_ex2;
Exercice 10
Library ieee ;
Use ieee.std_logic_1164.all ;
Use ieee.std_logic_arith.all ;
19
Entity Ex_3 is
end Ex_3 ;
begin
begin
if (A0='1' and A0='0' and A0='1' and A0='0') then S0<= '1'; S1<='1' ;
else if (A0='0' and A0='1' and A0='1' and A0='0') then S0<= '1';S1<='0' ;
else if (A0='1' and A0='0' and A0='1' and A0='1') then S0<= '0';S1<='1' ;
end if;
end if;
end if;
2) Ecrire une description VHDL qui utilise les entrées et les sorties en vecteurs dans une entité
et plusieurs architectures qui contiennent différentes descriptions :
• Affectation sélective (with… select… when) ?
• Affectation conditionnelle (when… else) ?
• Structure de test (if… then… else)?
• Structure de choix (case… is… when) ?
Library ieee ;
Use ieee.std_logic_1164.all ;
Use ieee.std_logic_arith.all ;
Entity vecteur is
20
end vecteur;
Begin
with A select
end with_select;
begin
end when_else;
begin
process (A)
begin
end if;
end if;
21
end if; end process;
end if_then;
begin
process (A)
end process;
end case_is;
Exercice 11
a. 13
f. 0,125 b. 27 g. 0,25
c. 135
h. 0,35
d. 2016
i. 15,33
e. 10512
j. 135,625
2) Convertir les nombres décimaux précédents en hexadécimal (base 16) puis en octal (base 8).
22
Correction 11
a. 13 = 1101
b. 27 = 11011
c. 135 = 10000111
d. 2016 = 11111100000
e. 10512 = 10100100010000
f. 0,125 = 0.001
g. 0,25 = 0.01
h. 0,35 = 0.01011
i. 15,33 = 1111.01001
j. 135,625 = 10000111.101
a. 13 = D
b. 27 = 1B
c. 135 = 87
d. 2016 = 7E0
e. 10512 = 2900
f. 0,125 = 0.2
g. 0,25 = 0.4
h. 0,35 = 0.59
i. 15,33 = F.52
j. 135,625 = 87.A
23
a. 13 = 15
b. 27 = 33
c. 135 = 207
d. 2016 = 3740
e. 10512 = 24420
f. 0,125 = 0.1
g. 0,25 = 0.2
h. 0,35 = 0.27
i. 15,33 = 17.24
j. 135,625 = 207.5
Exercice 12
a. (101011)2 + (1O11)2
b. (331)4 + (123)4
c. (AF5)16 + (10C)16
d. (101011)2 - (11O11)2
f. (AF5)16 - (10C)16
g. (101011)2 x (1O11)2
h. (AF5)16 x (10C)16
i. (101011)2 ÷ (1O11)2
Correction 12
EXERCICE 13
Ecrire une description VHDL du schéma fonctionnel suivant, de quelle description avez-vous besoin ?
CORRECTION 13
Nous avons besoin d’une description structurelle avec deux programmes en parallèle celui de la
porte NOR et celui de la porte MUX.
Library ieee ;
Use ieee.std_logic_1164.all ;
Use ieee.std_logic_arith.all ;
Entity porte_nor is
end porte_nor ;
25
Architecture arch_nor of porte_nor is
end arch_nor;
✓ Porte MUX:
Library ieee ;
Use ieee.std_logic_1164.all ;
Use ieee.std_logic_arith.all ;
Entity porte_mux is
s: out std_logic);
end porte_mux ;
end arch_mux;
✓ La description structurelle :
Library ieee ;
Use ieee.std_logic_1164.all ;
Use ieee.std_logic_arith.all ;
F: out std_logic);
end structurelle ;
Component porte_nor
s: out std_logic);
26
end component ;
Component porte_mux
s: out std_logic);
end component ;
begin
end arch_struc;
EXERCICE 14
Voici le schéma bloc d’un démultiplexeur 1à 4, une entrée de validation Enable (le circuit est actif à
l’état haut de ce signal), une entrée de sélection E et 4 sorties.
27
Correction 14
Enable E1 E0 Y3 Y2 Y1 Y0
0 0 0 0 0 0 0
0 0 1 0 0 0 0
0 1 0 0 0 0 0
0 1 1 0 0 0 0
1 0 0 0 0 0 1
1 0 1 0 0 1 0
1 1 0 0 1 0 0
1 1 1 1 0 0 0
1) Introduction de choix
Instruction de choix ?
Library ieee ;
Use ieee.std_logic_1164.all;
Use iee.std_logic_arith.all;
Entity EX3_1 is
end EX3_1 ;
begin
process (Enable, E)
begin
28
if Enable='0' then Y<= ''0000'' ;
else case E is
end if;
end process;
end case_is;
De quelle description s’agit-il ? c’est une description comportementale avec l’utilisation d’une
instruction séquentielle.
2) Affectation conditionnelle
Library ieee ;
Use ieee.std_logic_1164.all;
Use iee.std_logic_arith.all;
Entity EX3_2 is
end EX3_2 ;
begin
end when_else;
De quelle description s’agit-il ? c’est une description flot de données avec l’utilisation d’une
instruction concurrente.
EXERCICE 15 :
Un circuit logique programmable FPGA (Field programmable Gate Array) a une matrice de 1000
Cellules logiques. Chaque cellule logique peut être programmée pour réaliser une fonction logique
combinatoire a 4 entrées. Si chaque cellule logique utilise 8 transistors pour sa mise en œuvre,
combien de transistors sont nécessaires au total dans dans ce FPGA ?
Correction 15 :
Pour trouver le nombre total de transistors nécessaires dans le FPGA, nous devons multiplier le
nombre de cellules logique par le nombre de transistors par cellule logique.
NB : Dans cet exercice on suppose que chaque cellule logique utilise le même nombre de transistor
et que nous ne tenons pas compte des autres composants/logique présents dans le FPGA.
EXERCICE16 :
30
3) Si chaque macrocellule programmable peut être configurée pour implémenter
une fonction logique a 4 entrées, quelle est la taille maximale de la fonction
logique pouvant être réalisée dans chaque macrocellule programmable ?
4) Quelle est la taille maximale de la fonction logique pouvant être réalisée dans
l’ensemble du CPLD, en utilisant toutes les macrocellules programmables ?
Correction 16 :
1) Le CPLD contient 4 blocs logique, et chaque bloc logique contient 4 portes logiques.
Donc, le nombre total de portes logique pouvant être implémentées est calculé en
multipliant le nombre de blocs logique par le nombre de portes logiques par bloc :
4 blocs logiques * 4 logiques par bloc = 16 portes logiques portes
2) Le CPLD contient 8 macrocellules programmables disponibles.
3) Chaque macrocellule programmable peut être configurée pour implémenter une
fonction logique a 4 entrées. Cela signifie que chaque macrocellule programmable
peut représenter une fonction logique avec 4 variables d’entrée.
4) Etant donné qu’il y a 8 macrocellules programmables dans le CPLD, la taille maximale
de la fonction logique pouvant être réalisée dans l’ensemble du CPLD est de 8
variables d’entrée.
EXERCICE 17 :
a) Que valent 0 ⊕ a, et a ⊕ a ?
b) On se donne ce circuit logique avec quatre bits d’entrées A, B, C, D et une sortie S. Montrer qu’il
existe deux cas exactement pour les entrées aboutissant à S = 1 en sortie, et donner ces deux cas.
Pour ce faire, ajouter sur le dessin les résultats obtenus à la sortie de chacune des portes XOR du
schéma.
31
Corrige 17
Pour avoir S = 1, il convient que toutes les entrées sur la porte ET valent 1, ce qui impose : A
= 0, A B ⊕ =1d’où B = 1, puis A B C ⊕ ⊕ =1, soit C = 0. Comme D est quelconque, on trouve
bien deux solutions pour (A, B, C, D) : (0, 1, 0, 0) ou (0, 1, 0, 1).
Exercice 18
Correction 18
a b S
0 0 0
0 1 1
1 0 1
1 1 0
32
On reconnaît le XOR : S = a ⊕ b.
Exercice 19
Avec cet autre multiplexeur 1 parmi 4, combien vaut la sortie S en fonction des variables X2, X1, X0,
les deux dernières correspondant aux fils de sélection ? Puis simplifier cette équation grâce à un
tableau de Karnaugh.
Corrige 19
X2 X1 X0 S
0 0 0 1
0 0 1 1
0 1 0 1
1 1 1 0
1 0 0 1
1 0 1 0
1 1 0 1
1 1 1 0
33
̅̅̅̅ + 𝑋2
D’où l’équation 𝑆 = 𝑋0 ̅̅̅̅ + 𝑋1
̅̅̅̅
Exercice 20
On rappelle qu’un multiplexeur 1 parmi 2 ayant en entrées a1, a0 met dans la sortie S ce qui est dans
a0 (entrée de droite) lorsque s = 0 ou ce qui est dans a1 (entrée de gauche) lorsque s = 1. On utilise
maintenant un circuit comportant trois multiplexeurs 1 parmi 2 comme indiqué sur le dessin ci-
dessous. Sans faire de table de vérité, indiquer ce que l’on obtient en sortie quand le nombre s1s0
(en binaire descendant) prend les valeurs 00, 01, 10, 11.
34
Corrige 20
35