Você está na página 1de 18

Mquina de Estados

Uma mquina de estados finitos ou autmato finito uma


modelagem de um comportamento composto por estados,
transies e aes

Um estado armazena informaes sobre o passado

Uma transio indica uma mudana de estado e descrita por


uma condio que precisa ser realizada para que a transio
ocorra

Uma ao a descrio de uma atividade que deve ser realizada


em determinado momento

Mquina de Estados

Uma mquina de estados um sistema seqencial

O nmero de estados so finitos

As entrada e sadas so consideradas em instantes de tempo


discretos que so definidos por pulsos de um sinal de
sincronizao chamado relgio (clock)

Mquina de Estados

Representao de mquinas de estados


1. Tabela de Transio

EA Estado Atual
PE Prximo Estado

Mquina de Estados

Representao de mquinas de estados


1. Diagrama de Estados

Mquina de Estados

Exemplo 1:

Mquina de Estados

Exemplo 1:

Mquina de Estados

Exemplo 2:

Considere um sistema seqencial descrito abaixo:


Entrada : x(t ) {a, b, c}
Sada : z(t) {0, 1}
Estado : s(t) {S0 , S1 , S2 , S3 }

Estado Inicial: s(0) = S0


Funes : As funes de transio e de sada so:

EA Estado Atual
PE Prximo Estado

TABELA DE TRANSIO ESTADOS

Mquina de Estados

Representao de mquinas de estados


1. Diagrama de Estados da mquina do Exemplo 2
DIAGRAMA DE ESTADOS

TABELA DE TRANSIO ESTADOS

Mquina de Estados

As mquinas de estados so classificados de acordo com o tipo


de funo de sada, em dois tipos:
Mquina de Mealy e Mquina de Moore

A mquina de Mealy um sistema seqencial cuja sada no


tempo t depende do estado e da entrada no tempo t, ou seja:
z(t) = H(s(t), x(t))

A mquina de Moore um sistema seqencial cuja sada no


tempo t depende somente do estado no tempo t, ou seja:
z(t) = H(s(t))

Mquina de Estados

Exemplo 1:
Mquina de
Mealy
z(t) = H(s(t), x(t))

Mquina de Estados

Representao de mquinas de estados

Mquina de
Moore
z(t) = H(s(t))

1. Diagrama de Estados da mquina do Exemplo 2


DIAGRAMA DE ESTADOS
TABELA DE TRANSIO ESTADOS

Mquina de Estados

Descrio de mquinas de estados usando VHDL


1. Os dois componentes do sistema seqencial , ou seja, a funo
de transio de estado e a funo de sada so descritas como
processos (process) separados.
2. O primeiro processo descreve a funo de transio de
estado e ativado sempre que h um evento no sinal de
relgio (clock).
3. O segundo processo descreve a funo de sada e ativado
sempre que h uma transio de estado ou um evento nos
sinais de entrada

Mquina de Estados

Descrio de mquinas de estados usando VHDL


Exemplo 3 :

Faa uma descrio VHDL da mquina de estados especificada pelo diagrama


de estados abaixo:
0/0

1/0

Sinic

1/0

S1

1/0

0/0

S11
1/1

0/0

0/0

S110

Descrio VHDL Exemplo 3


ARCHITECTURE comportamental OF detetor_de_padroes IS
library IEEE;
use ieee.std_logic_1164.all;

TYPE estados IS (Sinic, S1, S11, S110); -- tipo define os


estados

use ieee.std_logic_unsigned.all;

ENTITY detetor_de_padroes IS
PORT
1/0

0/0

1/0

( x : IN STD_LOGIC;
Sinic

S1
y : OUT STD_LOGIC;
1/0

S11

0/0
clk : IN STD_LOGIC

1/1

0/0
);

END detetor_de_padroes;

0/0

S110

SIGNAL estado_atual: estados;


-- sinal do tipo estados
SIGNAL estado_anterior: estados;
-- sinal do tipo estados
BEGIN
PROCESS (clk)
BEGIN
IF RISING_EDGE (clk) THEN mudana de estado
CASE estado_atual IS
WHEN Sinic => IF x = '0' THEN estado_atual <= Sinic;
ELSE estado_atual <= S1;
estado_anterior <= Sinic;
END IF;
WHEN S1 => IF x = '0' THEN estado_atual <= Sinic;
estado_anterior <= S1;
ELSE estado_atual <= S11;
estado_anterior <= S1;
END IF;
WHEN S11 => IF x = '0' THEN estado_atual <= S110;
estado_anterior <= S11;
ELSE estado_atual <= S11;
estado_anterior <= S11;
END IF;
WHEN S110 => IF x = '0' THEN estado_atual <= Sinic;
estado_anterior <= S110;
ELSE estado_atual <= S1;
estado_anterior <= S110;
END IF;
END CASE;
END IF;

Descrio VHDL Exemplo 3


PROCESS (estado_atual, estado_anterior, x) -- processo responsvel
BEGIN
-- pela funo de sada
CASE estado_atual IS
WHEN Sinic => y <= '0';
WHEN S1 => IF estado_anterior = S110 THEN y <= '1';
ELSE y <= '0';
END IF;
WHEN S11 => y <= '0';
WHEN S110 => y <= '0';
END CASE;
END PROCESS;
END comportamental;
0/0

1/0

Sinic

1/0

S1

1/0

0/0

S11
1/1

0/0

0/0

S110

Descrio VHDL Exemplo 3


library IEEE;
use ieee.std_logic_1164.all;

PROCESS (estado_atual, estado_anterior, x) -- processo responsvel

use ieee.std_logic_unsigned.all;

BEGIN

ENTITY detetor_de_padroes IS
PORT
( x : IN STD_LOGIC;
y : OUT STD_LOGIC;
clk : IN STD_LOGIC
);

CASE estado_atual IS
WHEN Sinic => y <= '0';
WHEN S1 => IF estado_anterior = S110 THEN y <= '1';
ELSE y <= '0';
END IF;
WHEN S11 => y <= '0';

END detetor_de_padroes;
ARCHITECTURE comportamental OF detetor_de_padroes IS
TYPE estados IS (Sinic, S1, S11, S110); -- tipo define os estados
SIGNAL estado_atual: estados;

-- pela funo de sada

WHEN S110 => y <= '0';


END CASE;
END PROCESS;

-- sinal do tipo estados

SIGNAL estado_anterior: estados;


-- sinal do tipo estados
BEGIN
PROCESS (clk)
BEGIN
IF RISING_EDGE (clk) THEN processo responsvel pela mudana de estado
CASE estado_atual IS
WHEN Sinic => IF x = '0' THEN estado_atual <= Sinic;
0/0
ELSE estado_atual <= S1;
estado_anterior <= Sinic;
END IF;
WHEN S1 => IF x = '0' THEN estado_atual <= Sinic;
estado_anterior <= S1;
Sinic
ELSE estado_atual <= S11;
estado_anterior <= S1;
END IF;
WHEN S11 => IF x = '0' THEN estado_atual <= S110;
estado_anterior <= S11;
ELSE estado_atual <= S11;
estado_anterior <= S11;
END IF;
WHEN S110 => IF x = '0' THEN estado_atual <= Sinic;
estado_anterior <= S110;
ELSE estado_atual <= S1;
estado_anterior <= S110;
END IF;
END CASE;
END IF;
END PROCESS;

END comportamental;

MQUINA DE MEALY

1/0

1/0

S1

1/0

0/0

S11
1/1

0/0

0/0

S110

Descrio VHDL Exemplo 3

0/0

1/0

Sinic

1/0

S1

1/0

0/0

S11
1/1

0/0

0/0

S110

Descrio VHDL Exemplo 3


1/0

0/0

1/0

Sinic

S1

0/0

S11

1/0

0/0

1/1
0/0

PADRO

S110

Você também pode gostar