Mquina de Estados Uma mquina de estados finitos

  • Slides: 18
Download presentation
Máquina de Estados • Uma máquina de estados finitos ou autômato finito é uma

Máquina de Estados • Uma máquina de estados finitos ou autômato finito é uma modelagem de um comportamento composto por estados, transições e ações • Um estado armazena informações sobre o passado • Uma transição indica uma mudança de estado e é descrita por uma condição que precisa ser realizada para que a transição ocorra • Uma ação é a descrição de uma atividade que deve ser realizada em determinado momento

Máquina de Estados • Uma máquina de estados é um sistema seqüencial • O

Máquina de Estados • Uma máquina de estados é um sistema seqüencial • O número de estados são finitos • As entrada e saídas são consideradas em instantes de tempo discretos que são definidos por pulsos de um sinal de sincronização chamado relógio (clock)

Máquina de Estados • Representação de máquinas de estados 1. Tabela de Transição EA

Máquina de Estados • Representação de máquinas de estados 1. Tabela de Transição EA – Estado Atual PE – Próximo Estado

Máquina de Estados • Representação de máquinas de estados 1. Diagrama de Estados

Máquina de Estados • Representação de máquinas de estados 1. Diagrama de Estados

Máquina de Estados • Exemplo 1:

Máquina de Estados • Exemplo 1:

Máquina de Estados • Exemplo 1:

Máquina de Estados • Exemplo 1:

Máquina de Estados • Exemplo 2: • Considere um sistema seqüencial descrito abaixo: Entrada

Máquina de Estados • Exemplo 2: • Considere um sistema seqüencial descrito abaixo: Entrada : x(t ) ∈ {a, b, c} Saída : z(t) ∈ {0, 1} Estado : s(t) ∈ {S 0 , S 1 , S 2 , S 3 } Estado Inicial: s(0) = S 0 Funções : As funções de transição e de saída são: EA – Estado Atual PE – Próximo Estado TABELA DE TRANSIÇÃO ESTADOS

Máquina de Estados • Representação de máquinas de estados 1. Diagrama de Estados da

Máquina de Estados • Representação de máquinas de estados 1. Diagrama de Estados da máquina do Exemplo 2 DIAGRAMA DE ESTADOS TABELA DE TRANSIÇÃO ESTADOS

Máquina de Estados • As máquinas de estados são classificados de acordo com o

Máquina de Estados • As máquinas de estados são classificados de acordo com o tipo de função de saída, em dois tipos: Máquina de Mealy e Máquina de Moore • A máquina de Mealy é um sistema seqüencial cuja saída no tempo t depende do estado e da entrada no tempo t, ou seja: z(t) = H(s(t), x(t)) • A máquina de Moore é um sistema seqüencial cuja saída no tempo t depende somente do estado no tempo t, ou seja: z(t) = H(s(t))

Máquina de Estados • Exemplo 1: Máquina de Mealy z(t) = H(s(t), x(t))

Máquina de Estados • Exemplo 1: Máquina de Mealy z(t) = H(s(t), x(t))

Máquina de Estados • Representação de máquinas de estados Máquina de Moore z(t) =

Máquina de Estados • Representação de máquinas de estados Máquina de Moore z(t) = H(s(t)) 1. Diagrama de Estados da máquina do Exemplo 2 DIAGRAMA DE ESTADOS TABELA DE TRANSIÇÃO ESTADOS

Máquina de Estados • Descrição de máquinas de estados usando VHDL 1. Os dois

Máquina de Estados • Descrição de máquinas de estados usando VHDL 1. Os dois componentes do sistema seqüencial , ou seja, a função de transição de estado e a função de saída são descritas como processos (process) separados. 2. O primeiro processo descreve a função de transição de estado e é ativado sempre que há um evento no sinal de relógio (clock). 3. O segundo processo descreve a função de saída e é ativado sempre que há uma transição de estado ou um evento nos sinais de entrada

Máquina de Estados • Descrição de máquinas de estados usando VHDL Exemplo 3 :

Máquina de Estados • Descrição de máquinas de estados usando VHDL Exemplo 3 : Faça uma descrição VHDL da máquina de estados especificada pelo diagrama de estados abaixo: 0/0 1/0 Sinic 1/0 S 1 1/0 0/0 S 11 1/1 0/0 S 110

Descrição VHDL – Exemplo 3 library IEEE; use ieee. std_logic_1164. all; use ieee. std_logic_unsigned.

Descrição VHDL – Exemplo 3 library IEEE; use ieee. std_logic_1164. all; use ieee. std_logic_unsigned. all; ENTITY detetor_de_padroes IS PORT ( x : IN STD_LOGIC; y : OUT STD_LOGIC; clk : IN STD_LOGIC ); END detetor_de_padroes; 0/0 1/0 Sinic 1/0 S 1 1/0 0/0 S 11 1/1 0/0 S 110 ARCHITECTURE comportamental OF detetor_de_padroes IS TYPE estados IS (Sinic, S 11, S 110); -- tipo define os estados 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 – mudança de estado CASE estado_atual IS WHEN Sinic => IF x = '0' THEN estado_atual <= Sinic; ELSE estado_atual <= S 1; estado_anterior <= Sinic; END IF; WHEN S 1 => IF x = '0' THEN estado_atual <= Sinic; estado_anterior <= S 1; ELSE estado_atual <= S 11; estado_anterior <= S 1; END IF; WHEN S 11 => IF x = '0' THEN estado_atual <= S 110; estado_anterior <= S 11; ELSE estado_atual <= S 11; estado_anterior <= S 11; END IF; WHEN S 110 => IF x = '0' THEN estado_atual <= Sinic; estado_anterior <= S 110; ELSE estado_atual <= S 1; estado_anterior <= S 110; END IF; END CASE; END IF; END PROCESS;

Descrição VHDL – Exemplo 3 PROCESS (estado_atual, estado_anterior, x) -- processo responsável BEGIN --

Descrição VHDL – Exemplo 3 PROCESS (estado_atual, estado_anterior, x) -- processo responsável BEGIN -- pela função de saída CASE estado_atual IS WHEN Sinic => y <= '0'; WHEN S 1 => IF estado_anterior = S 110 THEN y <= '1'; ELSE y <= '0'; END IF; WHEN S 11 => y <= '0'; WHEN S 110 => y <= '0'; END CASE; END PROCESS; END comportamental; 0/0 1/0 Sinic 1/0 S 1 1/0 0/0 S 11 1/1 0/0 S 110

Descrição VHDL – Exemplo 3 library IEEE; use ieee. std_logic_1164. all; use ieee. std_logic_unsigned.

Descrição VHDL – Exemplo 3 library IEEE; use ieee. std_logic_1164. all; use ieee. std_logic_unsigned. all; ENTITY detetor_de_padroes IS PORT ( x : IN STD_LOGIC; y : OUT STD_LOGIC; clk : IN STD_LOGIC ); END detetor_de_padroes; ARCHITECTURE comportamental OF detetor_de_padroes IS TYPE estados IS (Sinic, S 11, S 110); -- tipo define os estados 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 – processo responsável pela mudança de estado CASE estado_atual IS WHEN Sinic => IF x = '0' THEN estado_atual <= Sinic; ELSE estado_atual <= S 1; estado_anterior <= Sinic; END IF; WHEN S 1 => IF x = '0' THEN estado_atual <= Sinic; 0/0 estado_anterior <= S 1; ELSE estado_atual <= S 11; estado_anterior <= S 1; END IF; WHEN S 11 => IF x = '0' THEN estado_atual <= S 110; estado_anterior <= S 11; Sinic ELSE estado_atual <= S 11; estado_anterior <= S 11; END IF; WHEN S 110 => IF x = '0' THEN estado_atual <= Sinic; estado_anterior <= S 110; ELSE estado_atual <= S 1; estado_anterior <= S 110; END IF; END CASE; END IF; END PROCESS; PROCESS (estado_atual, estado_anterior, x) -- processo responsável BEGIN -- pela função de saída CASE estado_atual IS WHEN Sinic => y <= '0'; WHEN S 1 => IF estado_anterior = S 110 THEN y <= '1'; ELSE y <= '0'; END IF; WHEN S 11 => y <= '0'; WHEN S 110 => y <= '0'; END CASE; END PROCESS; END comportamental; MÁQUINA DE MEALY 1/0 S 1 1/0 0/0 S 11 1/1 0/0 S 110

Descrição VHDL – Exemplo 3 0/0 1/0 Sinic 1/0 S 1 1/0 0/0 S

Descrição VHDL – Exemplo 3 0/0 1/0 Sinic 1/0 S 1 1/0 0/0 S 11 1/1 0/0 S 110

Descrição VHDL – Exemplo 3 1/0 0/0 1/0 Sinic S 11 1/0 0/0 1/1

Descrição VHDL – Exemplo 3 1/0 0/0 1/0 Sinic S 11 1/0 0/0 1/1 0/0 0 1 1 0 1 PADRÃO 1 1 0/0 S 110