Circuits Logiques Programmables (CPLD,FPGA,VHDL): 2024 / 2025 Iset Sousse
TD 2
VHDL : conception circuits numériques combinatoires
Mars 2025
1 Exercice 1
(1.1) Décrivez l’entité et l’architecture du buffer unidirectionnel trois états présenté ci-dessous
Figure 1 – Buffer trois états unidirectionnel
(1.2) Décrivez l’entité et l’architecture du buffer bidirectionnel trois états présenté ci-dessous
Figure 2 – Buffer trois états bidirectionnel
Circuits Logiques Programmables (CPLD,FPGA,VHDL): 2024 / 2025 Iset Sousse
2 Exercice 2
Soit le multiplexeur Mux4 suivant :
Figure 3 – Multiplexeur Mux4
A B Q
0 0 I0
0 1 I1
1 0 I2
1 1 I3
Table 1 – Table de vérité Multiplexeur Mux4
(2.1) A partir du table de vérité, donnez l’équation Q = f (A, B, I0 , I1 , I2 , I3 ),
(2.2) Déclarez l’entité de ce circuit Mux4,
(2.3) Donnez trois architectures pour ce circuit :
(a) Arch_comport : une description comportemental,
(b) Arch_flotData : une description par flot de donnée,
(c) Arch_struc : une description structurelle .
On utilise pour cette dernière description les deux composants AN D3 et OR4 que
vous devez les définir.
(2.4) A fin de simuler le fonctionnement du circuit, écrivez le code de l’entité et l’architecture
du test.
3 Exercice 3
Soit le démultiplexeur 1 vers 8 présenté ci-dessous .
Circuits Logiques Programmables (CPLD,FPGA,VHDL): 2024 / 2025 Iset Sousse
Figure 4 – Demux 1 à 8
(3.1) Décrivez l’entité et l’architecture de Demux .
(3.2) Décrivez l’entité et l’architecture de stimulus qui permet le test de Demux .
4 Exercice 4 :
Figure 5 – Encodeur de priorité 8 à 3
L’encodeur de priorité est un circuit qui détecte la position du premier bit 1 d’un mot en
commençant par le bit le plus significatif (le plus à gauche).
Considérant les mots binaires suivants et la notation a3 a2 a1 a0 :
0010 0110 0001 0100 0110
On cherche à connaître l’indexe i du premier bit ai = 1 en partant de la gauche. Si on reprend
les nombres précédents, nous aurons :
Circuits Logiques Programmables (CPLD,FPGA,VHDL): 2024 / 2025 Iset Sousse
0010 → 1 où a1 = 1 0110 → 2 où a2 = 1 0001 → 0 où a0 = 1
0100 → 2 où a2 = 1 0110 → 2 où a2 = 1 1000 → 3 où a3 = 1
De manière générale, l’encodeur de priorité prend en entrée un mot de 2n bits et donne en
sortie un mot de n bits correspondant à l’indexe du bit non nul le plus significatif. Une question
se pose quand tous les bits à l’entrée valent 0 ? On ajoute alors un signal indicateur (appelé GS)
qui vaut 1 uniquement dans ce cas. Pour le cas d’un encodeur de priorité à 8 entrées, nous au-
rons la table de vérité qui suit. Les tirets de la table de vérité signifient que les entrées peuvent
indifféremment prendre la valeur 0 ou 1.
e7 e6 e5 e4 e3 e2 e1 e0 S2 S1 S0 GS
1 - - - - - - - 1 1 1 0
0 1 - - - - - - 1 1 0 0
0 0 1 - - - - - 1 0 1 0
0 0 0 1 - - - - 1 0 0 0
0 0 0 0 1 - - - 0 1 1 0
0 0 0 0 0 1 - - 0 1 0 0
0 0 0 0 0 0 1 - 0 0 1 0
0 0 0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 1
Table 2 – Table de vérité d’encodeur de priorité 8 à 3
(4.1) Décrivez l’entité et l’architecture de l’encodeur de priorité 8 vers 3.
(4.2) Décrivez l’entité et l’architecture de stimulus qui permet le test de l’encodeur.
(4.3) Décrivez l’entité et l’architecture d’un encodeur de priorité 2n vers n générique .