Vous êtes sur la page 1sur 22

INF1500 :

Logique des systmes numriques


Cours 8: Machines tats Moore et Mealy

Sylvain Martel - INF1500

Procdure danalyse dun circuit squentiel

La procdure pour analyser un circuit


squentiel synchrone partir dun
diagramme donn consiste :
Identifier les variables dtat;
crire les quations dtat et les
quations de sortie;
Dresser le tableau dtats; et,
Dessiner le diagramme dtat.
Sylvain Martel - INF1500

Variables et quations dtat


Ltat dun circuit squentiel est la valeur de tous ses
lments mmoire un moment donn.
Dans un circuit squentiel, chaque signal de sortie
dun lment mmoire est une variable dtat du
circuit.
Les quations dtat dun circuit squentiel
dterminent la valeur des variables dtat du circuit
en fonction de leurs valeurs prsentes ainsi que des
entres du systme. Les quations dtat sont aussi
appeles quations de transition.

Sylvain Martel - INF1500

Machines dtats finis (Finite State Machine)

Modle de base pour dcrire le


comportement dun systme :

Selon son tat actuel, selon les vnements


extrieurs,
envoie des messages l'extrieur
change d'tat

Exemples:

Distributeur automatique de monnaie


Feu de circulation pour piton
La partie contrle dun processeur

Sylvain Martel - INF1500

Tableau dtat
Un tableau dtat (aussi appel tableau de transitions
dtat) est similaire une table de vrit. Il comporte
quatre sections : les tats prsents, les entres, les
tats prochains, et les sorties.
Si on a m bascules et n entres, le tableau a 2m + n
ranges en forme gnrale.
En forme compacte, le tableau na que 2m ranges.
On forme alors des colonnes pour couvrir les
diffrents cas des variables dentre.

Sylvain Martel - INF1500

Diagramme dtat

Toute linformation prsente dans un tableau dtat peut tre


reprsente sous forme graphique par un diagramme dtat, et vice
versa. Un diagramme dtat ne contient pas plus dinformation quun
tableau dtat mais facilite la comprhension du comportement du
circuit. Dans un diagramme dtat :

Les tats sont identifis par des cercles, avec leur nom et/ou leur
code binaire associ crit dans le cercle;

Les transitions entre les tats sont identifies par des flches entre
les cercles;

Les conditions pour toute transition (i.e. les valeurs ncessaires de


variables dentre) sont places ct des flches de transition;

Pour les machines de Moore (i.e. si les sorties ne dpendent que de


ltat prsent), la valeur des signaux de sortie est place lintrieur
des cercles; et,

Pour les machines de Mealy (i.e. si les sorties dpendent de ltat


prsent et des entres), la valeur des signaux de sortie est place
ct des flches de transition - on les spare des conditions de
transition par une barre oblique.
Sylvain Martel - INF1500

Circuits squentiels de Moore et de Mealy


Un circuit squentiel a toujours des lments
mmoire et une fonction combinatoire pour calculer le
prochain tat. Il peut aussi avoir une ou des fonctions
combinatoires de Mealy ou de Moore ou des deux.
Dans une machine de Moore, les sorties ne sont
fonctions que de ltat prsent.
Dans une machine de Mealy, les sorties sont fonctions
de ltat prsent ainsi que des entres.

Sylvain Martel - INF1500

Machine de Moore

inputs

Next-state
Logic

excitation

State
Memory

current state

Output
Logic

outputs

G
clock input

clock
signal
Copyright 2000 by Prentice Hall, Inc.
Digital Design Principles and Practices, 3/e

Sylvain Martel - INF1500

Machine de Mealy

inputs

Next-state
Logic

excitation

State
Memory

current state

Output
Logic

outputs

G
clock input

clock
signal

Copyright 2000 by Prentice Hall, Inc.


Digital Design Principles and Practices, 3/e

Sylvain Martel - INF1500

Exemple: compteur 2 bits avec la sortie MAX


Next-state Logic F

State Memory

Output Logic G
output

input

MAX

excitation
EN

EN

D0
EN

D
CLK

Q0

Q0
Q0
D1

D
CLK

Q1

Q1

Q1

clock signal

current state

CLK

Copyright 2000 by Prentice Hall, Inc.


Digital Design Principles and Practices, 3/e

Sylvain Martel - INF1500

10

Exemple 1
variables dtat, quations dtat et quation de sortie
A+ =
B+ =

Z=

Tableau dtat

Sylvain Martel - INF1500

11

Exemple 1
variables dtat, quations dtat et quation de sortie
A+ = A B
B+ = B + X

Z = (A + B)
Z

Tableau dtat

Diagramme dtat ?

0
0
1
1
1
1
0
0

1
1
0
1
1
1
0
1

1
1
0
0
0
0
0
0

Sylvain Martel - INF1500

12

Exemple 2
variables dtat, quations dtat et quations de sortie
A+ =
B+ =

Y=
Z=

Tableau dtat

Sylvain Martel - INF1500

13

Exemple 2
variables dtat, quations dtat et quations de sortie
A+ = XA + XB
B+ = XA

Y
Y == (A+B)X
Z=AB

Tableau dtat

Diagramme dtat ?

0
0
0
1
0
1
0
1

0
1
0
1
0
0
0
0

0
0
1
0
1
0
1
0

0
0
1
1
1
1
0
0

Sylvain Martel - INF1500

14

Exemple de FSMs reconnaissant la squence


10 - En Machine de Moore

S0: Pas dlment de la


squence
S1: 1 observ
S2: 10 observ
Sylvain Martel - INF1500

15

Exemple de FSMs reconnaissant la squence


10 - En Machine de Mealy

S0: Pas dlment de la squence


S1: 1 observ
Sylvain Martel - INF1500

16

Exemple de FSMs reconnaissant la squence


10 Diagramme temporel

Sylvain Martel - INF1500

17

Exemple: Concevoir une machine qui gre un


code secret

La sortie Out vaut 1 ssi les 4 dernires entres taient 0110


Sylvain Martel - INF1500

18

Moore et Mealy en VHDL


entity
entityFSM
FSMisis
port
port((clk,
clk,reset
reset::in
instd_logic;
std_logic;
in1,
in1,in2
in2 ::in
instd_logic;
std_logic;
out1
::out
out1
out
std_logic);
std_logic);
end
endFSM;
FSM;
architecture archi of FSM is
type STATE_TYPE is (state_0,
state_1, state_2, state_3, state_4);
signal state, next_state :
STATE_TYPE;
begin
process
process(clk,
(clk,reset)
reset)
begin
begin
ifif(clk='1'
(clk='1'and
andclk'event)
clk'event)then
then
ifif(reset='0')
(reset='0')then
then state
state<=
<=
state_0;
state_0;
else
else state
state<=
<=next_state;
next_state;
end
endif;
if;
end
endif;
if;
end
endprocess;
process;
-Partie squentielle
Implmentation du registre
state

process
process(state,
(state,in1,
in1,in2)
in2)
begin
begin
case
casestate
stateisis
when
whenstate_0
state_0=>
=>
ifif(in1='0')
(in1='0')then
then
next_state
next_state<=
<=
state_0;
state_0;
out1
out1<=
<='0';
'0';
else
else
next_state
next_state<=
<=
state_2;
state_2;
out1
out1<=
<=1';
1';
end
if;
end if;
when
whenstate_1
state_1=>
=>

end
endcase;
case;
end
endprocess;
process;

process
process(state
(state,,in1,
in1,in2)
in2)
begin
begin
case
casestate
stateisis
when
whenstate_0
state_0=>
=>
out1
out1<=
<='0';
'0';
ifif(in1='0')
(in1='0')then
then
next_state
next_state<=
<=
state_0;
state_0;
else
else
next_state
next_state<=
<=
state_2;
state_2;
end
endif;
if;
when
whenstate_1
state_1=>
=>

end
endcase;
case;
end
endprocess;
process;

end
endarchi
archi

end
endarchi;
archi;

-Partie combinatoire
Implmentation
Sylvain
Martel - INF1500de
Mealy

-Partie combinatoire
Implmentation de
Moore
19

Exercices

variables dtat, quations dtat et quations de sortie

Q0+ =
Q1+ =

Q2+ =
Sylvain Martel - INF1500

20

Exercice: Concevoir un systme de feux de


circulation une intersection

Sylvain Martel - INF1500

21

Sylvain Martel - INF1500

22