Vous êtes sur la page 1sur 7

UNIVERSITE DE GABES ‫جــامعة قابس‬

Institut Supérieur de l’Informatique


de Médenine ‫المعهد العالي لإلعالمية بمدنين‬

Matière : Architecture des Systèmes Programmables


Enseignante : Dr Intissar TOIHRIA
Filière : Classe Master Recherche Electronique
A.U. : 2019/2020

Correction Travaux Dirigés 2 : Les circuits logiques combinatoires

Exercice 1 : Multiplexeur 8 Vers 1 (MUX8-1)


On considère un multiplexeur à 8 entrées vers 1 sortie. Ce multiplexeur est appelé MUX8_1,
son entrée est appelée E (bus à 8 entrées). Sa sortie est appelée S. La commande de sélection
de l’entrée qui est transmise à la sortie est appelée C (bus à 3 entrées).

1. Établir la table de vérité puis déduire la fonction booléenne qui exprime la sortie S en
fonction l’entrée 𝐸0 à 7 et de la commande 𝐶0 à 2 .
2. Écrire en VHDL une description complète de multiplexeur MUX8_1 en utilisant un
process combinatoire et l’instruction case.
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity MUX8_1 is
port (
C : in std_logic_vector(1 downto 0);
E0, E1, E2, E3 , E4, E5, E6, E7: in std_logic;
S: out std_logic );
end MUX8_1;
architecture behavMUX8_1 of MUX8_1 is
begin
P1: process (S, A, B, C, D) - - la liste de sensibilité
begin
case C is
when "000" => S <= E0;
when "001" => S <= E1;
when "010" => S <= E2;
when "011" => S <= E3;
when "100" => S <= E4;
when "101" => S <= E5;
when "110" => S <= E6;
when "111" => S <= E7;
end case;
end process P1;
end behav_MUX8_1;
3. Simuler votre description en éditant des stimuli avec Modelsim. Tester les 8
combinaisons possibles des signaux d’entrées et vérifier que les valeurs de sorties
correspondent bien aux résultats attendus. (Q3 facultatif)
Exercice 2 : Réalisation d’un demi-additionneur 1 bit
Il s’agit de créer en VHDL une description représentant un additionneur de deux données
d’un bit pour satisfaire le tableau de vérité suivant :
Entrées Sorties
A B S C
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1

A noter : Il s’agit d’un demi-additionneur, parce qu’il n’additionne pas la retenue (carry) du
bit précédent.
1. Compléter les chronogrammes de sorties S (somme) et C (retenue sortante) dans la
Figure suivante et confronter les avec le tableau de vérité du demi-additionneur.

2. Réaliser le demi-additionneur 1 bit en utilisant deux portes logiques des bases.

3. Écrire une description VHDL complète pour le demi-additionneur en utilisant Q2.


library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity DEMI_ADD is
port (
A,B: in std_logic;
S,C: out std_logic);
end DEMI_ADD;
architecture COMPORT of DEMI_ADD is
begin
S <= A xor B;
C <= A and B;
end COMPORT;
Exercice 3 : Réalisation d’un additionneur complet 1 bit
On considère un additionneur complet 1 bit. Cet additionneur est appelé ADDC1, ses entrées
sont appelées A et B. Sa sortie est appelée S. Nous rajoutons à cet additionneur une entrée de
carry (retenue) Cin et une sortie de carry Cout.
1. Établir la table de vérité puis déduire une fonction booléenne qui exprime les sorties S
et Cout en fonction des entrées A, B et du carry Cin.
Cin A B S Cout
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
S= Cin ⊕ (A ⊕ B)
Cout= Cin (A ⊕ B ) + A. B
2. Proposer le schéma d’un additionneur complet basé sur les demi-additionneurs.
3. Écrire une description VHDL pour l’additionneur ADDC1.
library ieee;

use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity ADD_COMP is
port (
A,B, Cin : in std_logic;
S,Cout: out std_logic);
end ADD_COMP;
architecture COMPORT of ADD_COMP is
begin
S <= Cin xor A xor B;
Cout <= (A and B) and Cin (A xor B) ;
end COMPORT;
4. Simuler votre description en éditant des stimuli avec Modelsim. Compléter dans la
figure suivante les signaux de sorties obtenus dans la simulation. (Q4 facultatif)

Cin

Cout
Exercice 4 : Réalisation d’un additionneur/soustracteur 8 bits pour les nombres
arithmétiques et logiques avec les drapeaux N, Z, C et V :
Il s’agit de créer une description VHDL représentant un additionneur/soustracteur avec deux
entrées de données 8 bits (a et b) et une entrée d‘un bit permettant de sélectionner le type
d’opération à effectuer (op).
Le module donne le résultat r sur 8 bits et les drapeaux N, Z, C, et V.
Conseils : Utiliser les additionneurs complets de l’Exercice 3, puis réaliser la soustraction a –
b comme addition de l’opérande a avec le complément à deux de l’opérande b.

Entity ALU is
Port (
A : in std_logic_vector(7 downto 0);
B : in std_logic_vector(7 downto 0);
OP : in bit;
R: out std_logic_vector(7 downto 0) ;
N , Z, C , V : out std_logic );
end ALU;
architecture behv of ALU is
begin
process(A,B , OP)
begin
case OP is
when "0" => R <= A + B;
when "1" => R <= A + (not B) + 1; -- ou A - B
when others => R <= "--";
end case;
end process;
end behv;
Exercice 5 : Réalisation d’un décodeur HEXA vers un afficheur sept segments
Il s’agit de créer une description VHDL permettant de décoder une valeur binaire sur 4 bits à
un code de sept bits pour afficher la valeur numérique présente à l’entrée du module sur un
afficheur sept segments. Les segments de l’afficheur sont codés de la manière suivante ::

Représentation de 16 chiffres hexadécimaux

Vous aimerez peut-être aussi