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 2

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 4

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 6

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 F

excitation

State Memory

current state

Output Logic G

outputs

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 F

excitation

State Memory clock input

current state

Output Logic G

outputs

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 EN EN EN D0
D CLK Q Q

excitation Q0

MAX

Q0 Q0 D1
D CLK Q Q

Q1

Q1 Q1

clock signal CLK

current state

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+ = Tableau dtat Z=

Sylvain Martel - INF1500

11

Exemple 1
variables dtat, quations dtat et quation de sortie
A+ = A B B+ = B + X Tableau dtat Z = (A + B) Z 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+ = Tableau dtat Y= Z=

Sylvain Martel - INF1500

13

Exemple 2
variables dtat, quations dtat et quations de sortie A+ = XA + XB B+ = XA Tableau dtat Y Y= = (A+B)X Z=AB 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 FSMis is 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 if event ))then if(clk='1' (clk='1'and andclk' clk' event then if if(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 stateis is when whenstate_0 state_0=> => if if(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 end endarchi archi process process(state (state,,in1, in1,in2) in2) begin begin case casestate stateis is when state_0 when state_0=> => out1 out1<= <='0'; '0'; if if(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; -Partie combinatoire Implmentation de Moore
19

-Partie combinatoire Implmentation de Sylvain Martel - INF1500 Mealy

Exercices

variables dtat, quations dtat et quations de sortie

Q0+ = Q1+ =
Sylvain Martel - INF1500

Q2+ =
20

Exercice: Concevoir un systme de feux de circulation une intersection

Sylvain Martel - INF1500

21

Sylvain Martel - INF1500

22