Académique Documents
Professionnel Documents
Culture Documents
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.
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 ::