Vous êtes sur la page 1sur 20

MACHINE DETAT FINIES

FSM:FINITE STATE MACHINE

& VHDL
1

Plan
Introduction n Structure dune FSM n Reprsentation dune FSM n Machine de Moore n Machine de Mealy n Description VHDL des FSM
n

Introduction
n

Une FSM est un circuit squentiel dont les sorties dpendent dun tat et ventuellement des entres.

Toute fonction squentielle est caractris par un effet de mmoire : capacit retenir les vnements antrieurs. Une FSM est gnralement utilis comme circuit de contrle qui permet de grer les changes des donnes entre les diffrents units dun systme.

Structure dune FSM

Structure dune FSM


n

Un premier bloc combinatoire qui calcule ltat futur en fonction de ltat prsent et des entres du systme. Un registre dtat cadenc par une entre spciale qui est lhorloge du systme, met jour ltat du systme. Il mmorise ltat actuel du systme en lactualisant des instants prcis. Enfin un troisime bloc combinatoire calcule les sorties du systme en fonction :
de ltat prsent. On obtient une machine de Moore. de ltat prsent et des entres .On a une machine de Mealy.

Reprsentation dune FSM


n n

Une FSM est dcrite par un diagramme tat. Chaque tat contient un certains nombre dinformations(tat,sorties,entres)

Reprsentation dune FSM


n n n

On associe chaque valeur possible du registre dtat, une case sous forme dun cercle. Lvolution du systme est reprsente par des flches reprsentant les transitions. Pour quune transition soit active il faut que les trois conditions suivantes soient vrifies :

Le systme se trouve dans ltat source considr. La condition de ralisation sur les entres est vraie. Un front actif de lhorloge survient.

Machine de Moore
n

Pour les machines de Moore les sorties voluent aprs lactivation de la transition. les sorties changent de manire synchrone sur un front dhorloge Utilis dans les circuits synchrones.

n n

Machine de Mealy
n n n n

Pour les machines de Mealy les sorties voluent aprs lvolution des entres. Une machine de Mealy est donc asynchrone. prise en compte immdiate dun changement en entre. un temps de rponse rduit dun cycle par rapport son quivalent de Moore

Description VHDL des FSM


EXEMPLE:
n

La description du systme se fait par un nombre fini dtats. Ci-dessous la reprsentation schmatique dun systme 4 tats (M0 M3), 2 sorties (S1 et S2), 2 entres X et Y, sans oublier lentre dhorloge qui fait avancer le processus, et celle de remise zro qui permet de linitialiser :

10

Description VHDL des FSM


n

n n

Ltat initial est M0. Les 2 sorties sont 0. Au coup dhorloge on passe inconditionnellement ltat M1 sauf si la condition Y=1 a t vrifie, ce qui mne ltat M3 ou si X=0 a t valid ce qui mne M2. De M3 on revient au coup dhorloge M0. De M1 on passe M2, et de M2 on passe M 3... Dans chaque tat on dfinit les niveaux des sorties.

11

Description VHDL des FSM


--dclaration des librairies library ieee; use ieee.std_logic_1164.all; --Dfinition de l'entit ENTITY machine1 IS PORT ( RAZ, horl :IN STD_LOGIC; X, Y :IN STD_LOGIC; S1, S2 :OUT STD_LOGIC ); END machine1;

12

Description VHDL des FSM


-- Dfinir L'architecture de description d'tat ----------------ARCHITECTURE diagramme OF machine1 IS TYPE etat_4 IS (M0, M1, M2, M3); --dfinir une liste des tats... SIGNAL etat,etat_suiv :etat_4 := M0; --initialise M0) . BEGIN --Process synchrone: state register PROCESS( raz, horl) BEGIN If raz = '1' THEN etat <= M0; ELSIF rising_edge(horl) THEN --Le PACKAGE std_logic_1164 etat <= etat_suiv ; END IF; END PROCESS;

13

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 ; END diagramme ;

14

Description VHDL des FSM


------------ Moore output logic------------------process (etat) -----vous pouvez pouvez utiliser utiliser ceci---ceci---BEGIN -----vous CASE etat IS S1<=1 when when etat=M1 etat=M1 or or etat=M2 etat=M2 S1<=1 WHEN M0 => S1 <= '0'; S2<= '0'; else 0; 0; else WHEN M1 => S2<=1 when when etat=M2 etat=M2 or or etat=M3 etat=M3 S2<=1 S1 <= '1'; S2<= '0'; else 0; 0; else WHEN M2 => S1 <= '1'; S2<= '1'; WHEN M3 => S1 <= '0'; S2<= '1'; END CASE; END process ;

15

Description VHDL des FSM


Exemple de SIMULATION :
n n n n n n

Dfinir les entres : horl : priode 200ns Raz 0ns =1 et 150ns =0 x 0ns =1 , 950ns =0 et 1200ns =1 Y 0ns =0 et 1550ns =1 Simuler pendant 2.5us

16

Description VHDL des FSM


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 ; END ;

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;

19

Description VHDL des FSM


-----------S1<=1 when else S2<=1 when (etat=M3) else

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

(etat=M1 or (etat=M0 and x=0)) 0; ((etat=M0 and x=0) or (etat=M0 and y=1))or (etat=M2) or 0;

20