REPUBLIQUE DU CAMEROUN REPUBLIC OF CAMEROON
Paix – Travail – Patrie Peace – Work – Fatherland
------------- -------------
UNIVERSITE DE DOUALA THE UNIVERSITY OF DOUALA
----------- -----------
ECOLE NATIONALE SUPERIEURE NATIONAL HIGHER POLYTECHNIC
POLYTECHNIQUE DE DOUALA SCHOOL OF DOUALA
----------- -----------
B.P. 2701 Douala [Link] Douala
Tél. (237) 697 542 240 Phone :(237) 697 542 240
Site web : [Link] Email: contact@[Link]
VLSI et systeme
TRAVAIL PERSONNEL DE L’ETUDIANT
SPECIALITE : Génie Electrique et Système Intelligent (GESI) 4
Sous la supervision de M. Djande
Année Académique: 2022-2023
MEMBRES DU GROUPE
1- EMEDI SORELLE 22G00901
2- ENDALLE DIKOUME EUGENIE INGRID 20G00112
3- FOWE KAMLA MELKISEDEK 20G00139
4- FOWENG TCHO DARREL 20G00140
5- EWANE HERVE RAOUL 20G00118
6- EYEBE MARILYN ENNY DOROTHEE 20G00122
7- EPALLE NGANGE RICHARD OLIVER 22G00717
8- EONE SIMON RAPHAEL 22G01053
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 :
1) Qu'est-ce qu'un circuit programmable ?
a) Un circuit intégré figé
b) Un circuit intégré reconfigurable
c) Un circuit intégré analogique
d) Un circuit intégré numérique
Réponse : b) Un circuit intégré reconfigurable
2) Qu'est-ce qu'un FPGA ?
a) Un circuit logique programmable
b) Un circuit analogique programmable
c) Un circuit numérique programmable
d) Un circuit optique programmable
Réponse : a) Un circuit logique programmable
3) Quelle est la principale caractéristique d'un FPGA ?
a) Grande densité de portes logiques
b) Haute fréquence de fonctionnement
c) Grande capacité de mémoire
d) Capacité de reconfiguration
2
Réponse : d) Capacité de reconfiguration
4) Quelle est l'unité de base d'un FPGA ?
a) Macrocellule
b) Porte logique
c) LUT (Look-Up Table)
d) Flip-flop
Réponse : c) LUT (Look-Up Table)
5) Quelle est la fonction principale d'une LUT dans un FPGA ?
a) Stockage de données
b) Réalisation de fonctions logiques
c) Conversion analogique-numérique
d) Amplification de signaux
Réponse : b) Réalisation de fonctions logiques
6) Qu'est-ce qu'un CPLD ?
a) Un type de FPGA
b) Un type de microcontrôleur
c) Un type de mémoire
d) Un type de transducteur
Réponse : a) Un type de FPGA
3
7) Quelle est la différence principale entre un FPGA et un CPLD ?
a) La taille
b) La capacité de reconfiguration
c) Le nombre de broches d'entrée-sortie
d) La technologie de fabrication
Réponse : a) La taille
8) Qu'est-ce qu'un bit Stream dans le contexte des FPGA ?
a) Une séquence de bits représentant la configuration du FPGA
b) Une unité de stockage dans un FPGA
c) Un type de mémoire volatile
d) Un type de bus de communication
Réponse : a) Une séquence de bits représentant la configuration du FPGA
9) Qu'est-ce qu'un ASIC ?
a) Un circuit logique programmable
b) Un circuit analogique programmable
c) Un circuit numérique programmable
d) Un circuit intégré spécifique à une application
Réponse : d) Un circuit intégré spécifique à une application
10) Quelle est la principale différence entre un FPGA et un ASIC ?
4
a) Le coût
b) La capacité de reconfiguration
c) La performance
d) La complexité de conception
Réponse : b) La capacité de reconfiguration
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 : d) SRAM et antifuse
12) Qu'est-ce qu'un circuit logique programmable à base d'antifuse ?
a) Un circuit dont la configuration est stockée dans une mémoire SRAM
b) Un circuit dont la configuration est stockée dans une mémoire antifuse
c) Un circuit dont la configuration est stockée dans une mémoire flash
d) Un circuit dont la configuration est stockée dans une mémoire EEPROM
Réponse : b) Un circuit dont la configuration est stockée dans une mémoire antifuse
13) Qu'est-ce qu'un circuit logique programmable à base de mémoire SRAM ?
a) Un circuit dont la configuration est stockée dans une mémoire SRAM
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
d) Un circuit dont la configuration est stockée dans une mémoire EEPROM
Réponse : a) Un circuit dont la configuration est stockée dans une mémoire SRAM
14) Qu'est-ce qu'un circuit logique programmable à base de mémoire flash ?
a) Un circuit dont la configuration est stockée dans une mémoire flash
b) Un circuit dont la configuration est stockée dans une mémoire antifuse
c) Un circuit dont la configuration est stockée dans une mémoire SRAM
d) Un circuit dont la configuration est stockée dans une mémoire EEPROM
Réponse : a) Un circuit dont la configuration est stockée dans une mémoire flash
15) Qu'est-ce qu'un circuit logique programmable à base de mémoire EEPROM ?
a) Un circuit dont la configuration est stockée dans une mémoire EEPROM
b) Un circuit dont la configuration est stockée dans une mémoire antifuse
c) Un circuit dont la configuration est stockée dans une mémoire flash
d) 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 EEPROM
16) Qu'est-ce qu'une horloge dans un FPGA ?
a) Un composant qui génère des signaux d'horloge
b) Une zone de mémoire spéciale pour stocker les données
c) Un composant utilisé pour les opérations arithmétiques
d) Une unité de reconfiguration
6
Réponse : a) Un composant qui génère des signaux d'horloge
17) Qu'est-ce qu'une IP (Intellectuel Property) dans le contexte des FPGA ?
a) Une adresse IP utilisée pour la communication réseau
b) Une technologie de protection des droits d'auteur
c) Un composant préconçu et réutilisable pour une fonction spécifique
d) Une unité de mesure de la performance des FPGA
Réponse : c) Un composant préconçu et réutilisable pour une fonction spécifique
18) Qu'est-ce qu'un bus dans un FPGA ?
a) Un circuit de communication sur lequel plusieurs composants peuvent se connecter
b) Une unité de calcul arithmétique
c) Un type de mémoire volatile
d) Un circuit logique programmable
Réponse : a) Un circuit de communication sur lequel plusieurs composants peuvent se connecter
19) Qu'est-ce qu'un verrouillage de configuration (Configuration Lock) dans un FPGA ?
a) Un mécanisme qui empêche la reconfiguration du FPGA
b) Un dispositif de sécurité pour protéger la configuration du FPGA
c) Un composant utilisé pour stocker la configuration du FPGA
d) Une fonctionnalité permettant de sauvegarder la configuration du FPGA
Réponse : b) Un dispositif de sécurité pour protéger la configuration du FPGA
7
20) Qu'est-ce qu'un circuit hybride ?
a) Un circuit combinant des composants analogiques et numériques
b) Un circuit intégré spécifique à une application
c) Un circuit logique programmable à base de mémoire flash
d) Un circuit logique programmable à base de mémoire antifuse
Réponse : a) Un circuit combinant des composants analogiques et numériques
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.
✓ Pour A=0 et B=0 :
• (A AND B) = (0 AND 0) = 0
8
• (A XOR B) = (0 XOR 0) = 0
• (A AND B) OR (A XOR B) =0, OR 0= 0
✓ Pour A=0 et B=1
• (A AND B) = (0 AND 1) = 0
• (A XOR B) = (0 XOR 1) = 1
• (A AND B) OR (A XOR B) =0, OR 1= 1
✓ Pour A=1 et B=0
• (A AND B) = (1 AND 0) = 0
• (A XOR B) = (1 XOR 0) = 1
• (A AND B) OR (A XOR B) =0, OR 1= 1
✓ pour A=1 et B=1
• (A AND B) = (1 AND 1) = 1
• (A XOR B) = (1 XOR 1) = 0
• (A AND B) OR (A XOR B) =1, OR 0= 0
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.
✓ Pour A= 0, B=0 et C=0 :
• (A AND B) = (0 AND 0) =0
• (B AND C) = (0 AND 0) =0
• (A AND C) = (0 AND 0) =0
• (A AND B) OR (B AND C) OR (A AND C) = 0 OR 0 OR 0=0
✓ Pour A= 0, B=0 et C=1 :
• (A AND B) = (0 AND 0) =0
• (B AND C) = (0 AND 1) =0
• (A AND C) = (0 AND 1) =0
• (A AND B) OR (B AND C) OR (A AND C) = 0 OR 0 OR 0=0
✓ Pour A= 0, B=1 et C=0 :
• (A AND B) = (0 AND 1) =0
• (B AND C) = (1 AND 0) =0
• (A AND C) = (0 AND 0) =0
• (A AND B) OR (B AND C) OR (A AND C) = 0 OR 0 OR 0=0
✓ Pour A= 0, B=1 et C=1 :
• (A AND B) = (0 AND 1) =0
• (B AND C) = (1 AND 1) =1
• (A AND C) = (0 AND 1) =0
• (A AND B) OR (B AND C) OR (A AND C) = 0 OR 1 OR 0=1
✓ Pour A= 1, B=0 et C=0 :
• (A AND B) = (1 AND 0) =0
• (B AND C) = (0 AND 0) =0
• (A AND C) = (1 AND 0) =0
• (A AND B) OR (B AND C) OR (A AND C) = 0 OR 0 OR 0=0
✓ Pour A= 1, B=0 et C=1 :
• (A AND B) = (1 AND 0) =0
• (B AND C) = (0 AND 1) =0
• (A AND C) = (1 AND 1) =1
• (A AND B) OR (B AND C) OR (A AND C) = 0 OR 0 OR 1=1
✓ Pour A= 1, B=1 et C=0 :
• (A AND B) = (1 AND 1) =1
• (B AND C) = (1 AND 0) =0
• (A AND C) = (1 AND 0) =0
• (A AND B) OR (B AND C) OR (A AND C) = 1 OR 0 OR 0=1
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.
✓ Pour A=0 et B=0 :
• (A AND B) = (0 AND 0) = 0
• (A XOR B) = (0 XOR 0) = 0
• (A AND B) OR (A XOR B) =0, OR 0= 0
✓ Pour A=0 et B=1
• (A AND B) = (0 AND 1) = 0
• (A XOR B) = (0 XOR 1) = 1
• (A AND B) OR (A XOR B) =0, OR 1= 1
✓ Pour A=1 et B=0
11
• (A AND B) = (1 AND 0) = 0
• (A XOR B) = (1 XOR 0) = 1
• (A AND B) OR (A XOR B) =0, OR 1= 1
✓ pour A=1 et B=1
• (A AND B) = (1 AND 1) = 1
• (A XOR B) = (1 XOR 1) = 0
• (A AND B) OR (A XOR B) =1, OR 0= 0
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.
✓ Pour A= 0, B=0 et C=0 :
12
• (A AND B) = (0 AND 0) =0
• (B AND C) = (0 AND 0) =0
• (A AND C) = (0 AND 0) =0
• (A AND B) OR (B AND C) OR (A AND C) = 0 OR 0 OR 0=0
✓ Pour A= 0, B=0 et C=1 :
• (A AND B) = (0 AND 0) =0
• (B AND C) = (0 AND 1) =0
• (A AND C) = (0 AND 1) =0
• (A AND B) OR (B AND C) OR (A AND C) = 0 OR 0 OR 0=0
✓ Pour A= 0, B=1 et C=0 :
• (A AND B) = (0 AND 1) =0
• (B AND C) = (1 AND 0) =0
• (A AND C) = (0 AND 0) =0
• (A AND B) OR (B AND C) OR (A AND C) = 0 OR 0 OR 0=0
✓ Pour A= 0, B=1 et C=1 :
• (A AND B) = (0 AND 1) =0
• (B AND C) = (1 AND 1) =1
• (A AND C) = (0 AND 1) =0
• (A AND B) OR (B AND C) OR (A AND C) = 0 OR 1 OR 0=1
✓ Pour A= 1, B=0 et C=0 :
• (A AND B) = (1 AND 0) =0
• (B AND C) = (0 AND 0) =0
• (A AND C) = (1 AND 0) =0
• (A AND B) OR (B AND C) OR (A AND C) = 0 OR 0 OR 0=0
✓ Pour A= 1, B=0 et C=1 :
• (A AND B) = (1 AND 0) =0
• (B AND C) = (0 AND 1) =0
• (A AND C) = (1 AND 1) =1
• (A AND B) OR (B AND C) OR (A AND C) = 0 OR 0 OR 1=1
✓ Pour A= 1, B=1 et C=0 :
• (A AND B) = (1 AND 1) =1
• (B AND C) = (1 AND 0) =0
• (A AND C) = (1 AND 0) =0
• (A AND B) OR (B AND C) OR (A AND C) = 1 OR 0 OR 0=1
✓ 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.
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;
Architecture behav of exercice2
is Signal S1,S2,S3 : std_logic ;
begin
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
4. Dispositifs logiques programmables plutôt combinatoires que séquentiels : PLA
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
On donne la description VHDL suivante :
Library ieee ;
Use ieee.std_logic_1164.all;
Use work.std_arith.all;
Entity Portes is Port (A, B: in std_logic;
Y1, Y2, Y3, Y4, Y5, Y6, Y7: out std_logic);
end Portes ;
Architecture Arch_Portes of Portes is begin Y1<= A
and B;
Y2<= A or B;
Y3<= A xor B;
Y4<= A not B;
Y5<= A nand B;
Y6<= A nor B;
Y7<= not (A xor B);
1) A partir du fichier donner les noms des bibliothèques utilisées.
end Arch_Portes;
2) Quel est le nom de l’entité ? Quel est le nom de l’architecture ?
3) Représenter le schéma fonctionnel de la fonction. On placera naturellement les entrées à gauche
et les sorties à droites.
Correction 8
1) Les noms des bibliothèques utilisées.
• La bibliothèque IEEE du standard VHDL,
• Le paquetage standard pour ieee.Std_logic_1164 pour typé les entrées/ sorties et les
signaux internes,
• Le paquetage personnalisé par l’utilisateur pour work.std_arith pour spécifié les
fonctions utilisées dans le programme VHDL.
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
1) Faire la description VHDL de ce circuit ?
2) De quel circuit s’agit-il ?
3) Dessiner le schéma bloc de ce circuit ?
18
Correction 9
1) Faire la description VHDL de ce circuit ?
Library ieee ;
Use ieee.std_logic_1164.all ;
Use ieee.std_logic_arith.all ;
Entity Ex_2 is Port (A, B: in std_logic;
S: out std_logic);
end Ex_2;
Architecture arch_ex2 of Ex_2 is
begin
S <= '0' when A= '1' and B='1' else S <= '1';
end arch_ex2;
2) De quel circuit s’agit-il ? Il s’agit du circuit NAND
3) Le schéma de bloc de ce circuit
Exercice 10
1) Faire la description VHDL de ce circuit ?
Library ieee ;
Use ieee.std_logic_1164.all ;
Use ieee.std_logic_arith.all ;
19
Entity Ex_3 is
Port (A0, A1, A2, A3: in std_logic;
S0, S1: out std_logic);
end Ex_3 ;
Architecture arch_ex3 of Ex_3 is
begin
process (A0, A1, A2, A3)
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;
end process; end arch_ex2;
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
Port (A: in std_logic_vector (3 downto 0);
S: out std_logic_vector (1 downto 0));
20
end vecteur;
• Architecture with_select of vecteur is
Begin
with A select
S<= ''11'' when ''0101'',
''01'' when ''0110'',
''10'' when ''1101'',
'0' when others;
end with_select;
• Architecture when_else of vecteur is
begin
S<= ''11'' when A=''0101''
else ''01'' when A=''0110''
else ''10'' when A=''1101''
else '0' when others;
end when_else;
• Architecture if_then of vecteur is
begin
process (A)
begin
if A=''0101'' then S<= ''11'' ;
else if A=''0110'' then S<= ''01'' ;
else if A=''1101'' then S<= ''10'' ;
end if;
end if;
21
end if; end process;
end if_then;
• Architecture case_is of vecteur is
begin
process (A)
begin case A is when ''0101'' => S<= ''11'' ;
when ''0110'' => S<= ''01'' ;
when ''1101'' => S<= ''10'' ;
end process;
end case_is;
Exercice 11
1) Convertir les nombres décimaux suivants en base 2 (base binaire) :
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
1) Conversion en base 2 (binaire) :
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
2) Conversion en hexadécimal (base 16) :
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
3) Conversion en octal (base 8) :
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
Effectuer les opérations arithmétiques suivantes :
a. (101011)2 + (1O11)2
b. (331)4 + (123)4
c. (AF5)16 + (10C)16
d. (101011)2 - (11O11)2
e. (331)4 - (123)4 j. (AF5)16 ÷ (10C)16
f. (AF5)16 - (10C)16
g. (101011)2 x (1O11)2
h. (AF5)16 x (10C)16
i. (101011)2 ÷ (1O11)2
Correction 12
a. (101011)2 + (1O11)2 = (110110)2
b. (331)4 + (123)4 = (454)4
24
c. (AF5)16 + (10C)16 = (BA1)16
d. (101011)2 - (11O11)2 = (100000)2
e. (331)4 - (123)4 = (210)4
f. (AF5)16 - (10C)16 = (9E9)16
g. (101011)2 x (1O11)2 = (110001111)2
h. (AF5)16 x (10C)16 = (A4F65C)16
i. (101011)2 ÷ (1O11)2 = (10)2
j. (AF5)16 ÷ (10C)16 = (A)16
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
Port (a, b: in std_logic; s: out std_logic);
end porte_nor ;
25
Architecture arch_nor of porte_nor is
begin s <= a NOR b;
end arch_nor;
✓ Porte MUX:
Library ieee ;
Use ieee.std_logic_1164.all ;
Use ieee.std_logic_arith.all ;
Entity porte_mux is
Port (a, b, sel: in std_logic;
s: out std_logic);
end porte_mux ;
Architecture arch_mux of porte_mux is
begin s <= a when sel= '0' else b;
end arch_mux;
✓ La description structurelle :
Library ieee ;
Use ieee.std_logic_1164.all ;
Use ieee.std_logic_arith.all ;
Entity structurelle is Port (A, B, C, X, Y, Z: in std_logic;
F: out std_logic);
end structurelle ;
Architecture arch_struc of structurelle is
Signal S1, S2 : std_logic;
Component porte_nor
Port (a, b : in std_logic;
s: out std_logic);
26
end component ;
Component porte_mux
Port (a, b, sel: in std_logic;
s: out std_logic);
end component ;
begin
U1: porte_nor port map (Y, Z, S1);
U2: porte_mux port map (A, B, S1, S2);
U3: porte_mux port map (C, S2, X, F);
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.
Ecrire une description VHDL de ce circuit en utilisant :
1) Instruction de choix ? de quelle description s’agit-il ?
2) Affectation sélective ? de quelle description s’agit-il ?
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
Port (Enable: in std_logic;
E: in std_logic_vector (1 downto 0);
Y: out std_logic_vector (3 downto 0));
end EX3_1 ;
Architecture case_is of EX3_1 is
begin
process (Enable, E)
begin
28
if Enable='0' then Y<= ''0000'' ;
else case E is
when ''00'' => S<= ''0001'' ;
when ''01'' => S<= ''0010'' ;
when ''10'' => S<= ''0100'' ;
when ''11'' => S<= ''1000'' ;
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
Port (Enable: in std_logic;
E: in std_logic_vector (1 downto 0);
Y: out std_logic_vector (3 downto 0));
end EX3_2 ;
Architecture when_else of EX3_2 is
begin
Y<= ''0000'' when Enable='0' else
Y<= ''0000'' when Enable='1' and E= ''00'' else
Y<= ''0000'' when Enable='1' and E= ''01'' else
Y<= ''0000'' when Enable='1' and E= ''10'' else
29
Y<= ''0000'' when Enable='1' and E= ''11'';
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.
Nombre de cellule logique : 1000
Nombre de transistors par cellule logique : 8
Nombre Total de transistor nécessaires :
1000 Cellules logiques * 8 transistors par cellule= 8 000 transistors
En conclusion, il est nécessaire d’avoir 8000 transistors au total dans ce FPGA.
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 :
Considérons un circuit logique programmable (CPLD) avec une architecture de base
composée de 4 blocs logique et 8 macrocellules programmables. Chaque bloc logique
contient 4 portes logiques (AND, OR, NOT) et chaque macrocellule programmable peut être
configurée pour implémenter une fonction logique spécifique.
1) Combien de porte logique peuvent être implémentées au total dans ce CPLD ?
2) Combien de macrocellules programmables sont disponibles dans ce CPLD ?
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
a) 0 ⊕ a=a, a ⊕ a= 0 comme on le constate en faisant a = 0 puis a = 1. Notons que l’on a aussi
1⊕ = 𝑎̅.
b)
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
On a ce schéma de multiplexeur 1 parmi 4. Qu’obtient-on en sortie, cette sortie S étant seulement
fonction des deux bits a et b de sélection ? On supposera que les quatre entrées du multiplexeur sont
numérotées de 0 à 3 de haut en bas (et le nombre ab est lu en binaire descendant).
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.
Quel type de multiplexeur correspond finalement à ce circuit ?
34
Corrige 20
35