Vous êtes sur la page 1sur 23

MACHINE D’ETAT FINIS

FSM : FINITE STATE MACHINE

&
VHDL
Plan
 Introduction
 Structure d’une FSM
 Représentation d’une FSM
 Machine de Moore
 Machine de Mealy
 Description VHDL des FSM

2
Introduction

serrure mécanique serrure à digicode

3
Introduction
 Une FSM est un circuit séquentiel dont les sorties dépendent d’un
état et éventuellement des entrées.

 Toute fonction séquentielle est caractérisé par un effet de mémoire :


capacité à retenir les événements antérieurs.

 Une FSM est généralement utilisé comme circuit de contrôle qui


permet de gérer les échanges des données entre les différents unités
d’un système.

4
Structure d’une FSM

Structure d’une machine à états

5
Structure d’une FSM
 Un premier bloc combinatoire qui calcule l’état futur en fonction de l’état
présent et des entrées du système.

 Un registre d’état cadencé par une entrée spéciale qui est l’horloge du
système, met à jour l’état du système. Il mémorise l’état actuel du système
en l’actualisant à des instants précis.

 Enfin un troisième bloc combinatoire calcule les sorties du système en


fonction de:

 L’état actuel. On obtient une machine de Moore.


 L’état présent et des entrées .On a une machine de Mealy.

6
Représentation d’une FSM
 Une FSM est décrite par un diagramme à état.
 Chaque état contient un certains nombre d’informations
(état,sorties,entrées)

7
Représentation d’une FSM
 On associe à chaque valeur possible du registre d’état, une case sous
forme d’un cercle.
 L’évolution du système est représentée par des flèches représentant les
transitions.
 Pour qu’une transition soit activée il faut que les trois conditions
suivantes soient vérifiées :

 Le système se trouve dans l’état «source » considéré.


 La condition de réalisation sur les entrées est vraie.
 Un front actif de l’horloge survient.

8
Machine de Moore
 Pour les machines de Moore les sorties évoluent après l’activation
de la transition.

 les sorties changent de manière synchrone sur un front d’horloge .


 Utilisé dans les circuits synchrones.

9
Machine de Mealy
 Pour les machines de Mealy les sorties évoluent après l’évolution des
entrées.
 Une machine de Mealy est donc asynchrone.
 prise en compte immédiate d’un changement en entrée.
 un temps de réponse réduit d’un cycle par rapport à son équivalent de
Moore

10
Description VHDL des FSM
Exemple:

La description du système se fait par un nombre fini d’états. Ci-dessous la


représentation schématique d’un système à 4 états (M0 à M3), 2 sorties (S1 et
S2), 2 entrées X et Y, une entrée d’horloge qui fait avancer le processus, et une
autre de remise à zéro qui permet de l’initialiser :

11
Description VHDL des FSM
 L’état initial est M0. Les 2 sorties sont à 0. Au coup d’horloge
on passe inconditionnellement à l’état M1 sauf si la condition
Y=1 a été vérifiée, ce qui mène à l’état M3 ou si X=0 a été
validé ce qui mène à M2.
 De M3 on revient au coup d’horloge à M0. De M1 on passe à
M2, et de M2 on passe à M3...
 Dans chaque état on définit les niveaux des sorties.

12
Description VHDL des FSM
--déclaration des librairies
library ieee;
use ieee.std_logic_1164.all;
--Définition de l'entité
ENTITY machine1 IS
PORT (
RAZ, horl :IN STD_LOGIC;
X, Y :IN STD_LOGIC;
S1, S2 :OUT STD_LOGIC
);
END machine1;

13
Description VHDL des FSM
-- Définir L'architecture de description d'état -----------
ARCHITECTURE diagramme OF machine1 IS
TYPE etat_4 IS (M0, M1, M2, M3);--définir une liste des états...
SIGNAL etat,etat_suiv :etat_4 := M0; --initialisée à M0

BEGIN
--Process synchrone: state register
PROCESS( raz, horl)
BEGIN
if raz = '1' THEN
etat <= M0;
elsif rising_edge(horl) THEN
etat <= etat_suiv ;
end if;
END PROCESS;

14
Description VHDL des FSM
--LE PROCESS ASYNCHRONE :
------------ next state logic ------------------

process (etat, x, y)
BEGIN
CASE etat IS
WHEN M0 => if Y='1' then etat_suiv <= M3;
elsif X='0' then etat_suiv <= M2;
else etat_suiv <= M1;
end if;
WHEN M1 => etat_suiv <= M2;
WHEN M2 => etat_suiv <= M3;
WHEN M3 => etat_suiv <= M0;
WHEN others => etat_suiv <= M0;
END CASE;
end process ;

15
Description VHDL des FSM
------------ Moore output logic-------------------
process (etat)
BEGIN
CASE etat IS
WHEN M0 =>
S1 <= '0'; S2<= '0';
WHEN M1 =>
S1 <= '1'; S2<= '0';
WHEN M2 =>
S1 <= '1'; S2<= '1';
WHEN M3 =>
S1 <= '0'; S2<= '1';

END CASE;
END process ;
end diagramme ;

16
Description VHDL des FSM
Exemple de simulation:

TESTBENCH:

LIBRARY ieee ;
USE ieee.std_logic_1164.all ;
ENTITY machine1_tb IS
END ;

ARCHITECTURE machine1_tb_arch OF machine1_tb IS


SIGNAL s1 : std_logic ;
SIGNAL x : std_logic ;
SIGNAL s2 : std_logic ;
SIGNAL y : std_logic ;
SIGNAL horl: std_logic ;
SIGNAL raz : std_logic ;

17
Description VHDL des FSM
COMPONENT machine1
PORT (
s1 : out std_logic ;
x : in std_logic ;
s2 : out std_logic ;
y : in std_logic ;
horl : in std_logic ;
raz : in std_logic );
END COMPONENT ;

18
Description VHDL des FSM
BEGIN
DUT : machine1
PORT MAP ( s1 => s1,
x => x,
s2 => s2,
y => y,
horl=> horl,
raz => raz );
raz<='1' ,'0' after 150 ns;
x<='1','0' after 950 ns,'1' after 1200 ns;
y<='0','1' after 1550 ns;
clk_p: process
begin
horl<='0'; wait for 100 ns;
horl<='1'; wait for 100 ns;
end process clk_p; END;

19
Description VHDL des FSM

------------ Mealy output logic-------------------


S1<=‘1’ when (etat=M1 or (etat=M0 and x=‘0’))
else ‘0’;
S2<=‘1’ when ((etat=M0 and x=‘0’) or (etat=M0 and y=‘1’))or
(etat=M2) or (etat=M3)
else ‘0’;

20
Exercice d’application

HOR

RAZ
fct S

On désire réaliser une fonction dont la sortie S recopie l’état logique présent
sur son entrée E si celle-ci est restée stable après 2 coups d’horloge successifs.

L’entrée RAZ a été rajoutée afin que l’état initial du système soit défini. De
façon plus générale, un système séquentiel doit toujours être initialisé, de
plus cette initialisation doit être asynchrone.

21
Diagramme à état:

22
Description VHDL: utilisation d’un seul process

23