0% ont trouvé ce document utile (0 vote)
383 vues8 pages

Examen VHDL : Détecteur de séquence 1101

Ce document contient 3 exercices sur la synthèse de machines à états finis et leurs implémentations en VHDL. L'exercice 1 demande d'identifier les états et de coder un détecteur de séquence en VHDL. L'exercice 2 concerne un chronogramme d'une machine à états commandant un compteur. L'exercice 3 porte sur le schéma logique et la liste minimale de signaux sensibles d'un code VHDL donné.
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
383 vues8 pages

Examen VHDL : Détecteur de séquence 1101

Ce document contient 3 exercices sur la synthèse de machines à états finis et leurs implémentations en VHDL. L'exercice 1 demande d'identifier les états et de coder un détecteur de séquence en VHDL. L'exercice 2 concerne un chronogramme d'une machine à états commandant un compteur. L'exercice 3 porte sur le schéma logique et la liste minimale de signaux sensibles d'un code VHDL donné.
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

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

Vous aimerez peut-être aussi