0% ont trouvé ce document utile (0 vote)
82 vues21 pages

Machine Detat

La machine d'états finis (FSM) est un modèle de système séquentiel avec un nombre d'états fini, où les sorties dépendent de l'état courant et des entrées. Elle peut être représentée par un graphe d'états et décrite en VHDL à l'aide de processus combinatoires et séquentiels. Des exemples incluent des machines à états pour des séquences spécifiques, illustrant le fonctionnement et la mise à jour des états en fonction des entrées et des horloges.

Transféré par

yessinmerseni44
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 PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
82 vues21 pages

Machine Detat

La machine d'états finis (FSM) est un modèle de système séquentiel avec un nombre d'états fini, où les sorties dépendent de l'état courant et des entrées. Elle peut être représentée par un graphe d'états et décrite en VHDL à l'aide de processus combinatoires et séquentiels. Des exemples incluent des machines à états pour des séquences spécifiques, illustrant le fonctionnement et la mise à jour des états en fonction des entrées et des horloges.

Transféré par

yessinmerseni44
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 PDF, TXT ou lisez en ligne sur Scribd

Machine d’états finis

1
Machine d’états finis

- Machine d’états finis ( FSM : Finite State Machine) est un outil pour représenter
un système séquentiel
- Une machine d’états finis ou automate ou séquenceur câblé est une système
dynamique qui a un nombre d’état fini.

entrées État Registre État sorties


G F
future d’états présent

clk M
Circuit combinatoire
Circuit combinatoire
qui calcule l’état
qui calcule l’état de
future Circuit séquentiel sortie
synchrone

2
Machine d’états finis

- Machine d’états finis ( FSM : Finite State Machine) est un outil pour représenter
un système séquentiel
- Une machine d’états finis ou automate ou séquenceur câblé est une système
dynamique qui a un nombre d’état fini.

entrées État Registre État sorties


G F
future d’états présent

clk M
Circuit combinatoire
Circuit combinatoire
qui calcule l’état
qui calcule l’état de
future Circuit séquentiel sortie
synchrone
- Les sorties du système dépendent de l’état courant (machine de Moore) ou de
l’état courant et des entrées (machine de Mealy)
- Dans le cas d’une FSM synchrone, la valeur des entrées est analysée sur front
3
d’horloge
Graphe d’états

- Une machine d’états est associée à un graphe d’état qui définit différents états dans
lesquels peut être situé le système

M0
S1 = 0 - Le passage d’un état à un autre s’effectue
S2 = 0
Y=1 M1 sur un front d’horloge et si une condition sur
S1 = 1
X=0 S2 = 0
l’entrée est remplie
M3
S1 = 0 - A chaque instant la machine peut se trouver
S2 = 1
M2 dans un état parmi les n états possible.
S1 = 1
S2 = 1

4
Graphe d’états

- Une machine d’états est associée à un graphe d’état qui définit différents états dans
lesquels peut être situé le système

M0
S1 = 0 - Le passage d’un état à un autre s’effectue
S2 = 0
Y=1 M1 sur un front d’horloge et si une condition sur
S1 = 1
X=0 S2 = 0
l’entrée est remplie
M3
S1 = 0 - A chaque instant la machine peut se trouver
S2 = 1
M2 dans un état parmi les n états possible.
S1 = 1
S2 = 1

5
Graphe d’états

Sorties
Entrées
Etat

dénomination de l’état
transition M0
S1 = 0
S2 = 0 Sorties
Y=1
+
Etat des sorties

Condition sur la transition transition inconditionnelle

6
Graphe d’états

M0
S1 = 0 - Un système à 4 états (M0 à M3), 2
S2 = 0
Y=1 M1 sorties (S1 et S2), 2 entrées X et Y, sans
S1 = 1
X=0 S2 = 0 oublier l’entrée d’horloge qui fait avancer
M3
S1 = 0 le processus, et celle de remise à zéro qui
S2 = 1
M2 permet de l’initialiser
S1 = 1
S2 = 1

- L’état initial est M0. Les 2 sorties sont à 0.


- Au coup d’horloge on passe :
- inconditionnellement à l’état M1
- si la condition Y=1 est vérifiée à l’état M3
- si la condition X=0 est validé à l’état M2.
- De M1 on passe à M2, et de M2 on passe à M 3 sans condition
- De M3 on revient au coup d’horloge à M0. 7
Description en VHDL

La machine d’états finis peut être décrite en 3 façons:

3 process : G / M / F

2 process : G + M / F

2 process : G + F / M

8
Graphe d’états

Exemple 1

Ecriture de la machine d’états avec :


* une seule ENTITE
* une seule ARCHITECTURE

9
Graphe d’états

Ecriture de la machine d’états avec :


* une seule ENTITE
* une seule ARCHITECTURE

M0
S1 = 0
S2 = 0
Y=1 M1
S1 = 1
X=0 S2 = 0
M3
S1 = 0
S2 = 1
M2
S1 = 1
S2 = 1

10
Ecriture de la machine d’états avec :
* une ENTITE
* une ARCHITECTURE de description d’état avec 3 PROCESS G / F / M
deux process combinatoire (G )et (F) et un process synchrone (M).

process (etat_pre)
BEGIN
ENTITY machine1 IS
CASE etat_pre IS
PORT (RAZ, H :IN STD_LOGIC;
WHEN M0 => S1 <= '0'; S2<= '0';
X, Y :IN STD_LOGIC;
WHEN M1 => S1 <= '1'; S2<= '0';
S1, S2 :OUT STD_LOGIC);
WHEN M2 => S1 <= '1'; S2<= '1';
END machine1;
WHEN M3 => S1 <= '0'; S2<= '1';
END CASE;
ARCHITECTURE arch OF machine1 IS
END ;
TYPE etat4 IS (M0, M1, M2, M3);
END arch ;
SIGNAL etat_pre, etat_fut :etat4 := M0;
process(etat_pre,x,
BEGIN
y)BEGIN
ROCESS( raz, H)
CASE etat_pre IS
BEGIN
WHEN M0 => IF Y='1' then etat_fut <= M3;
If raz = '1' THEN etat_pre <= M0;
elsif X='0' then etat_fut <= M2;
ELSIF (H’event and H=‘1’)
ELSE etat_fut <= M1;
THEN etat_pre <= etat_fut;
END IF;
END IF;
WHEN M1 => etat_fut <= M2;
END PROCESS;
WHEN M2 => etat_fut <= M3;
WHEN M3 => etat_fut <= M0;
END CASE;
END ; 11
END arch ;
Description en VHDL avec 3 process

Exemple 2

Ecriture de la machine d’états avec :


* une seule ENTITE
* une seule ARCHITECTURE

12
Description en VHDL avec 3 process

Un process séquentiel permet


la mise à jour de l’état présent
par l’état futur sur les fronts
montant d’horloge type Etat is (Etat0, Etat1, Etat2);
Signal Etat_present, Etat_futur : Etat := Etat0;

État État process (clk, reset)


future présent sorties begin
entrées
G Registre F
d’états if reset = '0' then
Etat_present <= Etat0;
clk M elsif clk'event and clk = '1' then
Etat_present <= Etat_futur;
end if;
end process 13
Description en VHDL avec 3 process

process (E, Etat_present)


Un process combinatoire de begin
calcul de l’état futur à partir case Etat_present is
des entrées et de l’état présent when Etat0 => if E = '1' then Etat_futur <= Etat1;
Else Etat_futur <= Etat0;
end if;
État État when Etat1 => if E = ‘0' then Etat_futur <= Etat2;
future présent sorties else Etat_futur <= Etat1;
entrées
G Registre F end if;
d’états
when Etat2 => if E = '1' then Etat_futur <= Etat1;
clk M Else Etat_futur <= Etat0;
end if;
end case;
end process; 14
Description en VHDL avec 3 process

Un process combinatoire de
calcul des sorties à partir des
entrées et de l’état présent

process (Etat_present)
État État begin
future présent sorties case Etat_present is
entrées
G Registre F
d’états when Etat0 => S <= '0';
when Etat1 => S <= '0';
clk M when Etat2 => S <= '1';
end case;
end process
15
Graphe d’états

Exemple 3

Ecriture de la machine d’états avec :


* une seule ENTITE
* une seule ARCHITECTURE

16
Machine à état : Exemple « détecteur de séquence »

La porte ne s’ouvre que si l’on tape la


séquence ‘1’‘2’‘3

Etat 0 : le système attend un ‘1’en entrée, la porte est fermée (P=0)


Etat 1 : le système attend un ‘2’en entrée, la porte est fermée (P=0)
Etat 2 : le système attend un ‘3’en entrée, la porte est fermée (P=0)
Etat 3 : la bonne séquence a étéentrée, la porte est ouverte (P=1)

17
Machine à état : Exemple « détecteur de séquence »

On représente une machine à état par un graphe d’état

18
Machine à état : Exemple « détecteur de séquence » // 3 process

Entité

Entity machine is
Port ( H : in std_logic ;
bouton : in integer rang 0 to 9;
p : out std_logic ) ;
End machine;

Architecture

Architecture arch of machine is


Type statetype is (etat0, etat1, etat2, etat3 ) ;
Signal etat_courant, etat_suivant : statetype ;
begin
19
Machine à état : Exemple « détecteur de séquence » // 3 process

Process (etat_courant, bouton)


Begin
Case etat_courant is
When etat0 => If bouton = 1 then etat_suivant <= etat1 ;
Else etat_suivant <= etat0 ;
End if;

When etat1 => If bouton = 2 then etat_suivant <= etat2 ;


Else etat_suivant <= etat0 ;
End if;

When etat2 => If bouton = 3 then etat_suivant <= etat4


Else etat_suivant <= etat0 ;
End if;

When etat3 => etat_suivant <= etat0 ;


End case;

20
Machine à état : Exemple « détecteur de séquence » // 3 process

Process (etat_courant, bouton)


Begin
Case etat_courant is
When etat0 => p <= ‘0’;
When etat1 => p <= ‘0’;
When etat2 => p <= ‘0’;
When etat3 => p <= ‘1’;
End case;
End process;

Process (clk)
Begin
If (clk’event and clk = ‘1’ ) then
If RST = ‘1’ then Etat_courant <= etat0 ;
Else Etat_courant <= etat_suivant ;
End if ;
End if ;
End process;
End arch
21

Vous aimerez peut-être aussi