Examen VHDL 2eme Session 2008 Mondir PDF
Examen VHDL 2eme Session 2008 Mondir PDF
Examen VHDL 2eme Session 2008 Mondir PDF
Exercice 1 : (7 points)
Le circuit d’un registre à décalage synchrone (front montant) est donné sur la
figure suivante :
Exercice 2 : (7 points)
entity basc is
Port ( T, clk, init : in bit;
S: out bit);
end basc;
begin
S <= etat;
process (clk)
begin
if (clk'event and clk='1') then
if ( init ='0') then
etat <= '1';
elsif (T='0') then
etat <= not etat;
end if;
end if;
end process;
end primitive;
2. Donner la description d’un diviseur par 2 en utilisant la bascule D avec remise à zèro
asynchrone (RST).
Correction
Exercice 1 :
library ieee;
use ieee.std_logic_1164.all;
Exercice 2 :
1. chronogramme
4.
entity basc is
Port ( T, clk, init,raz : in bit;
S: out bit);
end basc;
architecture primitive of basc is
signal etat : bit;
begin
S <= etat;
process (clk,raz)
begin
if (raz='1') then etat<= '0';
elsif (clk'event and clk='1') then
if ( init ='0') then
etat <= '1';
elsif (T='0')then
etat <= not etat;
end if;
end if;
end process;
end primitive;
5.
Library ieee;
use ieee.std_logic_1164.all;
entity basc is
Port ( T, clk, init,raz,oe : in std_logic;
S: out std_logic);
end basc;
architecture primitive of basc is
signal etat : std_logic;
begin
S <= etat;
process (clk,raz,oe)
begin
--wait until (clk = '1');
if (oe='0') then etat<= 'Z';
elsif (raz='1') then etat<= '0';
elsif (clk'event and clk='1') then
if ( init ='0') then
etat <= '1';
elsif (T='0')then
etat <= not etat;
end if;
end if;
end process;
end primitive;
Exercice 3 :
1.
Library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
Correction
Exercice 1 :
Library ieee;
use ieee.std_logic_1164.all;
entity comparateur8bits is port
(A, B: in std_logic_vector (7 downto 0);
EQUA, SUPE, INFE: out std_logic);
end comparateur8bits;
Exercice 2 :
1- Le schéma correspondant
Exercice 3 :
Library ieee;
use ieee.std_logic_1164.all;
-- entity statement
Entity Moore_Machine is port
(x, CLK : in BIT; S1,S2 : out BIT);
End Moore_Machine;
-- architecture statement
S1<=S(0);
S2<=S(1);
End FSM;
library ieee;
use ieee.std_logic_1164.all;
--library SYNTH ;
--use SYNTH.vhdlsynth.all ;
----- Définition de l'entité----
ENTITY diagramme IS
PORT (raz, clk :IN STD_LOGIC; -- Ne pas oublier remise à 0 et horloge !
x :IN bit;
S1,S2 :OUT STD_LOGIC);
END diagramme;
Le but de notre système est de gérer la disponibilité des places de parking. Ce système
possède 4 signaux d’entrée (mode in) les captures d’entrée-sortie de type std_logic,
l’horloge et le nombre maximal de places dans le parking (mot binaire de 4 bits de type
std_logic_vector). Les entrées capteurs servent à incrémenter ou
à décrémenter le compteur (4 bits). La sortie de compteur est comparée au nombre
maximal de places dans le parking.
Les signaux de sortie (mode out) sont :
Il s’agit de réaliser à partir d’un code source en VHDL une communication par liaison
série entre deux module, voir schéma ci-dessous.
I– Réalisation du MODULE A
1. Diviseur:
Ce sous module assure la division de l’horloge HOR à 48 MHz afin d’obtenir un signal
de fréquence 10 kHz permettant de cadencer l’envoi de chaque bit.
Réaliser ce diviseur à partir de 3 compteurs 8 bits. Utilisez pour cela 3 variables
(COUNT_0, COUNT_1, COUNT_2) de type integer, représentant chacune la valeur
d’un compteur.
3. Sérialisation :
Ici, ce module effectue la sérialisation de la donnée 8 bits présente sur donnée Din, cette
donnée est sérialisée grâce au cadencement 10kHz (clk) du sous module sérialisation.
Pour se faire on va procéder par décalage du bus donné. C'est-à-dire que le bit 0 (LSB)
va être envoyé, ensuite on décale les bits 8 à droite et nous répétons cela 7 fois. On aura,
au total, envoyé nos 8 bits de commande un à un. La sortie du module A nommé data.
Donnez la description en VHDL synthétisable de ce registre à décalage à droite
chargement parallèle synchrone.
Le module B nous permettra de réceptionner la donnée série émise par le module A puis
de l’envoyer à l'afficheur lcd. Le module permet simplement la désérialisation des
données reçus par le Module A nommée data et qui a été envoyé grâce à l’horloge
clk. RAZ remise à zéro (1 bit) asynchrone actif au niveau bas (‘0’).
Faire une description en langage VHDL (entity et architecture) d’un registre série-
parallèle à 8 bits pour le module B.
Exercice 3 : Diagramme d’état d’un circuit asynchrone (4 points)
Il s’agit de développer un modèle structurel d’un registre N bits avec une entrée série et
une sortie parallèle basé sur les composants des bascules D.
L’entrées: Horloge CLK (1 bit), reset RST_B remise à zéro (1 bit) asynchrone actif au
niveau bas (’0’), données série DIN (1 bit) et les Sorties: Contenu du registre DOUT (N
bits). N un paramètre générique. Faire une description structurelle en langage VHDL
(entity et architecture) d’un registre Registre série-parallèle à 16 bits (voir shéma ci-
dessus) . L’usage d’une instruction generate est requise.
Exercice 2: (5 points)
Library ieee;
use ieee.std_logic_1164.all;
begin
schem : process (clk)
begin
If ( clk'event and clk = '1') then
qa <= e ;
qb <= qa ;
end if;
end process schem ;
s <= qa xor qb ;
end quasi_struct ;
1. Déduire de ce programme, par une construction méthodique, un schéma
(bascules
et portes logiques).
1. Compléter le chronogramme ci-dessous.
Exercice 3 : (5 points)
Le système à concevoir dispose de deux entrées et de deux sorties. Les entrées sont
l’horloge clk et la commande C ; les sorties sont S1 et S2. Les entrées et les sorties sont
de type std_logic sauf C est de type bit. Le système est actif sur front descendant. Le
système répond au chronogramme suivant :
Correction
Exercice1:
Library ieee;
use ieee.std_logic_1164.all;
Begin
Library ieee;
use ieee.std_logic_1164.all;
begin
cellule : for i in Nb_bits downto 0 generate
Exercice2:
Exercice 3 :
Library ieee;
use ieee.std_logic_1164.all;
begin
case Etat is
when "000" => S1<='0' ; S2<='0';
if C='1' then Etat <= "001";
else Etat <= "000";
end if;
when "001" => S1<='1' ; S2<='0';