Vous êtes sur la page 1sur 12

Machines tats finie

Machine de Mealy.
Ltat futur est calcul partir des entres et de ltat prsent.
Les sorties dune machine de Mealy dpendent de ltat prsent et des entres.
Mmorisation synchrone des
tats (cd sur un front dhorloge).
La sortie dpend directement de
lentre et ceci indpendamment
de lhorloge (clk).

Entres

Combinatoire
des tats
Etat futur

Sortie asynchrone.
Nombre dtats plus rduit que
pour une machine de Moore.
Il est possible de resynchroniser
la sortie au besoin en ajoutant des
bascules D.

clk

Mmorisation
tat (registre)

Etat prsent

Combinatoire
de la sortie

Sorties

Machine de Mealy
Exemple : Machine de Mealy reconnaissant la squence 10
E = 1 / S <= 0

E = 0 / S <= 0
Etat 0

reset

E = 1 / S <= 0

E = 1 / S <= 0
Etat 1

Condition de
validation de
la transition

Affectation
de la valeur
0 la sortie

E = 0 / S <= 1

clk
E
Etat prsent

Etat 0

Etat 1

Etat 0

S
2

Machines tats finie


Machine de Moore.
Les sorties dune machine de Moore dpendent de ltat prsent (synchrones, elles
changent sur un front dhorloge).
Ltat futur est calcul partir des entres et de ltat prsent.

Entres

Combinatoire
des tats
Etat futur

clk

Mmorisation
tat (registre)

Etat prsent

Combinatoire
de la sortie

Sorties

Machine de Moore
Exemple : Machine de Moore reconnaissant la squence 10
E = 1

E = 0

E = 0

E = 1
Etat 0

Etat 1

Etat 2

S <= 0

S <= 0

S <= 1

reset

E = 1
E = 0

clk
E
Etat prsent

Etat 0

Etat 1

Etat 2

Etat 0

S
4

Ecriture VHDL Machine de Mealy


Description avec 3 process
Un process squentiel de mise jour de ltat
prsent par ltat futur sur les fronts montant
dhorloge (reset asynchrone inclus) :

Entres

type Etat is (Etat0, Etat1);


Signal Etat_present, Etat_futur : Etat := Etat0;

Combinatoire
des tats

Sequentiel_maj_etat : process (clk, reset)


begin

Etat futur

clk

Mmorisation
tat (registre)

if reset = '0' then

Etat prsent

Etat_present <= Etat0;

Combinatoire
de la sortie

Sorties

elsif clk'event and clk = '1' then


Etat_present <= Etat_futur;

E = 0 / S <= 0

E = 1 / S <= 0

Etat 0

reset

end if;
E = 1 / S <= 0
Etat 1

end process Sequentiel_maj_etat;

E = 0 / S <= 1

Ecriture VHDL Machine de Mealy


Description avec 3 process
Un process combinatoire de calcul de ltat
futur partir des entres et de ltat prsent :

Entres

Combinatoire_etats : process (E, Etat_present)


begin

Combinatoire
des tats

case Etat_present is

Etat futur

clk

when Etat0 => if E = '1' then


Etat_futur <= Etat1;
else
Etat_futur <= Etat0;
end if;

Mmorisation
tat (registre)

Etat prsent

Combinatoire
de la sortie

E = 0 / S <= 0

E = 1 / S <= 0

Etat 0

Sorties

E = 1 / S <= 0

when Etat1 => if E = '1' then


Etat_futur <= Etat1;
else
Etat_futur <= Etat0;
end if;
end case;

Etat 1

end process Combinatoire_etats;


reset

E = 0 / S <= 1

Ecriture VHDL Machine de Mealy


Description avec 3 process
Un process combinatoire de calcul des sorties
partir des entres et de ltat prsent :

Entres

Combinatoire_sorties : process (E, Etat_present)


begin

Combinatoire
des tats

case Etat_present is

Etat futur

clk

when Etat0 => if E = '1' then


S <= '0';
else
S <= '0';
end if;

Mmorisation
tat (registre)

Etat prsent

Combinatoire
de la sortie

E = 0 / S <= 0

E = 1 / S <= 0

Etat 0

Sorties

E = 1 / S <= 0

when Etat1 => if E = '0' then


S <= '1';
else
S <= '0';
end if;
end case;

Etat 1

end process Combinatoire_sorties;


reset

E = 0 / S <= 1

Ecriture VHDL Machine de Mealy


Description avec 2 process
Les 2 process combinatoires possdent la mme liste de sensibilit, ils peuvent
donc tre regroups en un seul process afin dabrger lcriture.
2 process = 1 process squentiel + 1 process combinatoire

Description avec 1 process


Description la plus compacte en utilisant une variable pour ltat (en lieu et place
des 2 signaux).
A pour effet de resynchroniser la sortie de faon implicite.
Cependant perte de lisibilit lors de lcriture. Alors que cette description
napporte rien en terme de rsultat de synthse par rapport une description 2
process.
viter (pt de vue personnel cependant ).

Ecriture VHDL Machine de Moore


Description avec 3 process
Un process squentiel de mise jour de ltat
prsent par ltat futur sur les fronts montant
dhorloge (reset asynchrone inclus) :

Entres

type Etat is (Etat0, Etat1, Etat2);


Signal Etat_present, Etat_futur : Etat := Etat0;

Combinatoire
des tats

Sequentiel_maj_etat : process (clk, reset)


begin

Etat futur

clk

Mmorisation
tat (registre)

if reset = '0' then


Etat_present <= Etat0;

Etat prsent

Combinatoire
de la sortie

Sorties

elsif clk'event and clk = '1' then


Etat_present <= Etat_futur;

E = 1

E = 0

end if;

E = 0

E = 1
Etat 0

Etat 1

Etat 2

S <= 0

S <= 0

S <= 1

reset

end process Sequentiel_maj_etat;

E = 1
E = 0

Ecriture VHDL Machine de Moore


Description avec 3 process

Entres

Combinatoire_etats : process (E, Etat_present)


begin
case Etat_present is

Combinatoire
des tats

when Etat0 => if E = '1' then


Etat_futur <= Etat1;
else
Etat_futur <= Etat0;
end if;

Etat futur

clk

Mmorisation
tat (registre)

Etat prsent

Combinatoire
de la sortie

E = 1

E = 0

Sorties

E = 0

E = 1
Etat 0

Etat 1

Etat 2

S <= 0

S <= 0

S <= 1

reset

E = 1
E = 0

Un process combinatoire de calcul de ltat


futur partir des entres et de ltat prsent :

when Etat1 => if E = 0' then


Etat_futur <= Etat2;
else
Etat_futur <= Etat1;
end if;
when Etat2 => if E = '1' then
Etat_futur <= Etat1;
else
Etat_futur <= Etat0;
end if;
end case;
end process Combinatoire_etats;

10

Ecriture VHDL Machine de Moore


Description avec 3 process
Un process combinatoire de calcul des sorties
partir de ltat prsent :
Entres

Combinatoire
des tats

Combinatoire_sorties : process (Etat_present)


begin

Etat futur

clk

case Etat_present is
when Etat0 => S <= '0';

Mmorisation
tat (registre)

when Etat1 => S <= '0';

Etat prsent

Combinatoire
de la sortie

Sorties

when Etat2 => S <= '1';


end case;
end process Combinatoire_sorties;

E = 1

E = 0

E = 0

E = 1
Etat 0

Etat 1

Etat 2

S <= 0

S <= 0

S <= 1

reset

E = 1
E = 0

11

Ecriture VHDL Machine de Moore


Description avec 2 process
Les 2 process combinatoires possdent des listes de sensibilit compatibles ,
ils peuvent donc tre regroups en un seul process afin dabrger lcriture.
2 process = 1 process squentiel + 1 process combinatoire

Description avec 1 process


Description la plus compacte en utilisant une variable pour ltat (en lieu et place
des 2 signaux).
Cependant perte de lisibilit lors de lcriture. Alors que cette description
napporte rien en terme de rsultat de synthse par rapport une description 2
process.
viter (pt de vue personnel cependant ).

12