Université de Tunis
ENSIT
Examen Principal Date : janvier 2018
2ième année Ing_GE Durée : 2 H
Electronique des Systèmes Numériques
EXERCICE I :
On donne les spécifications de haut niveau d’un détecteur de la séquence 1101
1/ Identifier les différent états de ce détecteur (on appellera l’état initial S init)
2/Tracer l’algorithme de détection (ASM) de cette machine à état fini.
3/ Ecrire le code VHDL en 2 process qui décrit le fonctionnement de cette machine (voir le modèle document
réponse),coder les états en binaire naturel.
EXERCICE II :
La figure1 ci-dessous représente l’algorithme (ASM) d’une machines à états fini (FSM) . Les sorties de la
machine FSM commandent les entrées ld, en et sclr d’un compteur synchrone de 8bit.
1/ Compléter le chronogramme (voir document réponse) pour les états et les sorties : ld, en et Q .Sachant
que les bascules se déclenchent sur le front montant.
Figure 1
1/4
EXERCICE III :
On considère le code VHDL ci-dessous .
1/ Compléter le schéma logique correspondant (voir document réponse).
2/ Indiquer si les listes des signaux sensibles des processus this et that contiennent des signaux en trop.
Si c’est le cas, donner la liste minimale.
2/4
Document réponse
(Ne rien écrire sur cette page)
EXERCICE I :
3/ Ecrire le code VHDL en s’appuyant sur le modèle ci-dessous ( on utilise le codage binaire naturel pour
coder les états)l’initialisation se fait à l’état « Sinit » à l’aide de l’entrée reset active haut.
entity detecteur is port(
x,c1k,reset: in std logic;
state: out std_logic_vector(… downto …);
z: out std logic
);
end detecteur;
architecture behavior of detecteur is
- -put constants here
-- example of syntax: constant Sinit: std logic vector(.. downto ..) := B"……";
signal pstate,nstate: std logic vector(… downto… ); --present and next state
begin
state<=………………;
dffs:process (…………)
begin
-- dff logic here
end process dffs;
clogic:process(……………………)
begin
--initialisez les sorties
Case ……………. Is
When……
When……
When……
When……
When……
When others………
End case;
end process clogic;
end behavior ;
3/4
EXERCICE II :
1/ Chronogramme :
EXERCICE III :
1/ Schéma logique
4/4
Solution
EXERCICE I
1/ identification des états :
2/ Algorithme
3/Code VHDL
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.std_logic_unsigned.ALL;
Entity seq_1101 is
port(clk,X,reset: in std_logic;
state: out std_logic_vector(2 downto 0);
Z: out std_logic) ;
end seq_1101 ;
ARCHITECTURE behavior of seq_1101 is
constant Sinit: std_logic_vector(2 downto 0) := B"000";
constant S0: std_logic_vector(2 downto 0) := B"001";
constant S01: std_logic_vector(2 downto 0) := B"010";
constant S010: std_logic_vector(2 downto 0) := B"011";
constant S0101: std_logic_vector(2 downto 0) := B"100";
signal pstate,nstate: std_logic_vector(2 downto 0);
5/4
begin
state <= pstate;
dffs:process (clk )
begin
if reset ='0' then
pstate <= Sinit;
elsif clk'event and clk='1'then
pstate <= nstate;
end if;
end process;
c_logic:process(pstate,X)
begin
nstate <= pstate;
Z<= '0';
case pstate is
when Sinit=> if X ='1' then
nstate <= S1;
else
nstate <= Sinit;
end if;
when S1 => if X ='1' then
nstate <= S11;
else
nstate <= Sinit;
end if;
when S11=> if X = '0' then
nstate <= S110;
else
nstate <= S11;
end if;
when S110 => if X ='1' then
nstate <= S1101;
else
nstate <= Sinit;
end if;
when S1101=> z<=’1’;if X='1' then
6/4
nstate<=S11;
else
nstate<=Sinit;
end if;
WHEN others => nstate<= Sinit;
end case;
end process c_logic;
end behavior;
EXERCICE II
EXERCICE III :
1/ schéma logique
2/ Liste minimale des signaux sensibles
Les listes de sensibilité minimales :
7/4
• this: process (b)
- that: process (a, b ,d )
8/4