Você está na página 1de 38

Universidade Federal de Santa Catarina

Centro Tecnológico – CTC


Departamento de Engenharia Elétrica

“EEL7020 – Sistemas Digitais”

Prof. Eduardo Augusto Bezerra


Eduardo.Bezerra@eel.ufsc.br

Florianópolis, março de 2010.


Plano de Aula

“Finite State Machine (FSM)”

• Objetivos:
– Conhecer a estrutura de FSMs
– Classificar máquinas Moore e Mealy
– Identificar opções para codificação de estados para síntese de
FSMs
– Implementar e relatar estudo de caso

EEL7020 – Sistemas Digitais 2/38


Finite State Machine (FSM)

• Sistemas computacionais, normalmente, são


compostos por um módulo de “controle” e um
módulo para “execução das operações”.
Automóvel
Máquina de venda Computador (sistemas
de refrigerantes Execução: embarcados)
Execução: - Busca instrução Execução:
- Recebe R$ - Decodifica - Alarme
- Devolve troco - Executa - Vidros
- Fornece produto - Acessa memória - ABS
- Escreve resultados

Controlador Controlador
Controlador

EEL7020 – Sistemas Digitais 3/38


Finite State Machine (FSM)
• O “controlador” é responsável por coordenar a sequência
de atividades a ser realizada em um determinado
processo (ou sistema)
• Em sistemas digitais são utilizados “circuitos sequenciais”
na geração de sinais de controle
• Um circuito sequencial transita por uma série de estados
e, a cada estado (a cada momento), poderá fornecer uma
determinada saída
• As saídas são utilizadas no controle da execução de
atividades em um processo
• A lógica sequencial utilizada na implementação de uma
FSM possui um número “finito” de estados.
EEL7020 – Sistemas Digitais 4/38
Finite State Machine (FSM)
• O comportamento de circuitos sequenciais pode ser
representado por FSMs de diversas formas:
Diagramas de estados (grafos) Tabelas de transição de estados
Estado Próximo Estado Saída Atual
Atual X=0 X=1 (z)
S0 S0 S2 0
S1 S0 S2 1
S2 S2 S3 1
S3 S3 S1 0

case NEXT_STATE is
when S0_C =>
if (x = 0)
z = 0; Linguagens de
NEXT_STATE <= S0_C; descrição de hardware
else
z = 0;
NEXT_STATE <= S2_C;
end if;
when S1_C =>
EEL7020 – Sistemas Digitais 5/38
Finite State Machine (FSM)

Modelo de comportamento composto por:


• Estados
• Transições
• Ações

Estados
Armazena informação sobre o passado refletindo as modificações
das entradas do início até o presente momento

Transição
Indica uma troca de estado e é descrita por uma condição que
habilita a modificação de estado

Ação
Descrição da atividade que deve ser executada em um
determinado instante

EEL7020 – Sistemas Digitais 6/38


Finite State Machine (FSM)

Finite State Machine

Máquina de estados finitos

Máquina com um conjunto finito de estados

Máquina de estados finita

EEL7020 – Sistemas Digitais 7/38


Estrutura de uma FSM

EEL7020 – Sistemas Digitais 8/38


Estrutura de uma FSM
• Dois módulos:
• Armazenamento do “estado atual”; e
• Cálculo da “saída” e do “próximo estado”

Entradas Primárias Saídas Primárias


Circuito Combinacional
(Funções de Saída e
Funções de Próximo Estado)
Estado Atual Próximo Estado

Registrador de Estado

Sinal de relógio ("Clock") Sinal de inicialização ("Reset")

EEL7020 – Sistemas Digitais 9/38


Estrutura de uma FSM

• Armazenamento do “estado atual”


• Registrador construído a partir de flip-flops

• Cálculo da “saída” e do “próximo estado”


• Circuito combinacional; ou
• Tabela verdade da lógica de saída e da lógica de
próximo estado armazenada em uma memória
(ROM, Flash, RAM, ...)

EEL7020 – Sistemas Digitais 10/38


Estrutura de uma FSM
ROM armazena tabela verdade da lógica de saída e de próximo estado
Endereços Saídas Usada no
da ROM da ROM controle do
Funções de saída processo
x A2 A1 A0 z D2 D1 D0
e funções de
0 0 0 0 1 0 0 1 próximo estado
0 0 0 1 1 0 1 1 Saída
Entrada A0 D0
A1 D1
0 0 1 0 0 1 0 0 (x) . . (z)
0 0 1 1 0 1 0 1
.
.
ROM .
.
An Dn
0 1 0 0 1 1 0 1
0 1 0 1 0 0 0 0 clock

0 1 1 0 1 0 0 0 Estado Próximo
Flip-flops estado
0 1 1 1 X X X X atual
Registrador
1 0 0 0 0 0 1 0
de estado
1 0 0 1 0 1 0 0
Cada posição da ROM armazena uma linha da tabela de estados.
EEL7020 – Sistemas Digitais 11/38
Moore e Mealy

• FSM é um circuito sequencial que realiza transições


em uma sequência de padrões predeterminados
• Uma FSM utiliza um ou mais flip-flops para
armazenar seu estado interno
• O “estado atual” de uma FSM é utilizado na
definição de seu próximo estado
• A saída fornecida por um circuito sequencial pode
ser função apenas do seu estado atual, ou também
de sua entrada
EEL7020 – Sistemas Digitais 12/38
Moore e Mealy

EEL7020 – Sistemas Digitais 13/38


Moore e Mealy
• Máquina Moore – a saída do circuito sequencial é função apenas do
estado atual

Lógica de Registradores
entrada próximo estado Lógica de saída saída
próximo estado estado de estado atual atual (combinacional)
(combinacional) (sequencial)
reset
assíncrono

• Máquina Mealy – a saída do circuito sequencial é função do estado


atual e das entradas

Lógica de Registradores
entrada próximo estado Lógica de saída saída
próximo estado estado de estado atual atual (combinacional)
(combinacional) (sequencial)
reset
assíncrono

EEL7020 – Sistemas Digitais 14/38


Moore e Mealy
• Máquina Moore – a saída do circuito sequencial é função apenas do
estado atual
x = entrada
z = saída

• No estado S0, saída é z = 0


• No estado S1, saída é z = 1

• Máquina Mealy – a saída do circuito sequencial é função do estado


atual e das entradas
x;z
x = entrada
z = saída

• No estado S0, com entrada 0, saída é z = 0


• No estado S0, com entrada 1, saída é z = 1

EEL7020 – Sistemas Digitais 15/38


• Estrutura de uma FSM: cálculo da “saída” e do
“próximo estado” usando circuito combinacional

• Geração de tabela de transição de estados a


partir de um circuito sequencial

EEL7020 – Sistemas Digitais 16/38


Tabela de Estados de uma FSM

• Considerando FSMs onde é utilizado um circuito combinacional para o


cálculo do próximo estado e da saída, a tabela de estados da FSM
pode ser obtida da seguinte forma:

1. Determinar as equações de entrada e saída para os flip-flops

2. Determinar as equações de próximo estado para os flip-flops

3. Construir o mapa de Karnaugh para o próximo estado para cada flip-flop

Dica: flip-flop D: Q’ = D
flip-flop T: Q’ = T xor Q
flip-flop SR: Q’ = S or RQ
flip-flop JK: Q’ = JQ or KQ

4. Combinar os mapas para formar a tabela de estados. Essa tabela,


também conhecida por “tabela de transição de estados”, fornece o
próximo estado dos flip-flops como uma função do estado atual e das
entradas do circuito sequencial
EEL7020 – Sistemas Digitais 17/38
Exemplo 1: Moore

JB B
JA A

KB B
KA A

1. Equações de entrada/saída para os FFs:


JA = x KA = x and B z=B
JB = x KB = x xor A

2. Equações de próximo estado para os FFs:


A’ = JA A + KA A = x A + (x + B) A
B’ = JB B + KB B = x B + (x xor A) B = x B + (x A + x A) B

EEL7020 – Sistemas Digitais 18/38


Exemplo 1: Moore

Equações de próximo estado para os FFs:


A’ = x A + (x + B) A
B’ = x B + (x A + x A) B

3. Mapas de Karnaugh:

A’ B’
x x
AB 0 1 0 1
AB
00 0 1 00 0 1
01 0 1 01 0 1
11 1 1 11 1 0
10 1 0 10 0 1

EEL7020 – Sistemas Digitais 19/38


Exemplo 1: Moore
4. Combinando os mapas de Karnaugh para obter a tabela de estados:
A’ B’
Estado Próximo Estado Saída Atual
AB X=0 X=1 z Atual X=0 X=1 (z)
00 00 11 0 S0 S0 S2 0
01 00 11 1 => S1 S0 S2 1
11 11 10 1 S2 S2 S3 1
10 10 01 0 S3 S3 S1 0

Moore: Saída z (dentro do


retângulo) depende apenas do
estado atual do FF.

Grafo da FSM possibilita melhor


entendimento do funcionamento
do circuito sequencial.
EEL7020 – Sistemas Digitais 20/38
Exemplo 2: Mealy

JB B
JA A

KB B
KA A

1. Equações de entrada/saída para os FFs:


JA = x B KA = x z=xBA+xA+xB
JB = x KB = x A

2. Equações de próximo estado para os FFs:


A’ = JA A + KA A = x B A + x A
B’ = JB B + KB B = x B + (A x) B = x B + x B + A B
EEL7020 – Sistemas Digitais 21/38
Exemplo 2: Mealy

Equações de próximo estado para os FFs:


A’ = x B A + x A
B’ = x B + x B + A B

3. Mapas de Karnaugh:

A’ B’ Z
x x x
AB 0 1 0 1 0 1
AB AB
00 0 0 00 0 1 00 0 1
01 0 1 01 1 1 01 1 0
11 1 0 11 1 0 11 0 1
10 1 0 10 0 1 10 0 1

EEL7020 – Sistemas Digitais 22/38


Exemplo 2: Mealy
4. Combinando os mapas de Karnaugh para obter a tabela de estados:
A’ B’ z
Estado Próximo Estado Saída Atual
AB X=0 X=1 X=0 X=1 Atual X=0 X=1 (z)
00 00 01 0 1 S0 S0 S1 0 1
01 01 11 1 0 S1 S1 S2 1 0
=>
11 11 00 0 1 S2 S2 S0 0 1
10 10 01 0 1 S3 S3 S1 0 1

As transições indicam entrada ; saída


(ou x ; z)

Mealy: Saída z depende do estado


atual e da entrada.

Grafo da FSM possibilita melhor


entendimento do funcionamento do
circuito sequencial.
EEL7020 – Sistemas Digitais 23/38
Estudo de caso
Controlador de uma máquina de venda de refrigerantes

EEL7020 – Sistemas Digitais 24/38


Estudo de caso: Controlador de uma máquina de
venda de refrigerantes
Projetar o circuito de controle (FSM) para gerência das operações
de uma máquina de venda de refrigerantes.
Especificação:
A máquina fornece dois tipos de refrigerantes, denominados MEET e ETIRPS.
Estes estão disponíveis para escolha pelo usuário a partir de duas teclas no
painel com o nome dos refrigerantes. Ambos refrigerantes custam R$1,50 e
existe na máquina uma fenda para inserir moedas com um sistema
eletromecânico capaz de reconhecer moedas de R$1,00, R$0,50 e R$0,25, e
capaz de devolver automaticamente qualquer outro tipo de moeda ou objeto
não reconhecido. Além disso, durante a compra, o usuário pode desistir da
transação e apertar a tecla DEV que devolve as moedas inseridas até o
momento. Somente após acumular um crédito mínimo de R$1,50 o usuário
pode obter um refrigerante. A devolução de excesso de moedas é automática
sempre que o valor inserido antes de retirar um refrigerante ultrapassar
R$1,50. Uma terceira simplificadora consiste em ignorar a composição exata
das moedas inseridas na máquina, atendo-se apenas ao montante total
inserido.
Link para a especificação completa.
EEL7020 – Sistemas Digitais 25/38
Estudo de caso: Controlador de uma máquina de
venda de refrigerantes

Solução: Diagrama de blocos Informações


enviadas para os
atuadores (eletro-
mecânicos

Informações
fornecidas pelos
sensores

EEL7020 – Sistemas Digitais 26/38


Estudo de caso: Controlador de uma máquina de
venda de refrigerantes

Solução: Tabela de estados

EEL7020 – Sistemas Digitais 27/38


Estudo de caso: Controlador de uma máquina de
venda de refrigerantes

Solução: Tabela de estados

EEL7020 – Sistemas Digitais 28/38


Estudo de caso: Controlador de uma máquina de
venda de refrigerantes
Solução: Representação gráfica

Reset

EEL7020 – Sistemas Digitais 29/38


Codificações de estados para FSMs

EEL7020 – Sistemas Digitais 30/38


Codificação de estados para FSMs

• Definição dos estados da FSM da máquina de venda de refrigerantes:

package refri is
type cmd is (Nada, M025, M050, M100, DEV, MEET, ETIRPS);
end package;

• Ferramentas de síntese geram a codificação mais adequada para os estados


simbólicos:

Codificação Exemplo – FSM com 4 estados Otimização


Sequencial (binária) 00, 01, 10, 11 Área
One hot 0001, 0010, 0100, 1000 Velocidade
Grey 00, 01, 11, 10 Ruído

• Escolha do estilo de codificação visa redução de custos e atrasos

EEL7020 – Sistemas Digitais 31/38


Binária
Codificação de estados para FSMs
Codificação Binária
Vantagens:
• Mais simples e direta, visto que segue a numeração
binária padrão
• Número de FFs também é menor, quando comparado a
outros métodos tais como one-hot
• Custo de área menor

Desvantagens
• Mais de um bit pode mudar de uma transição para outra
• Maior consumo (maior atividade de chaveamento nos
FFs)
• Lógica mais complexa para determinar o estado atual

EEL7020 – Sistemas Digitais 32/38


Gray
Codificação de estados para FSMs
Codificação Gray

• Estados são identificados através de números binários, mas na


codificação Gray

• Para transformar um número binário na codificação Gray:


“Seja o número: b1b2..bn-1bn. Se bn-1 é 1, trocar bn para 1-bn, caso
contrário manter como está. Repetir o procedimento até atingir o bit mais
significativo.”

Ex.:
000 → 000
001 → 001
010 → 011
011 → 010
100 → 110
101 → 111
EEL7020 – Sistemas Digitais 33/38
Gray
Codificação de estados para FSMs
Codificação Gray
Vantagens:
• Mesmo número de FFs que a codificação binária
• Apenas um bit muda para estados adjacentes
• Menor consumo (menos atividade de chaveamento de
FFs)

Desvantagens
• Decodificação mais complexa

EEL7020 – Sistemas Digitais 34/38


One hot
Codificação de estados para FSMs
Codificação one hot

• Lógica de decodificação é mais simplificada, mas utiliza um número


maior de FFs

• Cada estado possui seu próprio FF com o valor 1 (um), enquanto os


demais ficam em 0 (zero).

Ex.:
000 → 000001
001 → 000010
010 → 000100
011 → 001000
100 → 010000
101 → 100000

EEL7020 – Sistemas Digitais 35/38


One hot
Codificação de estados para FSMs
Codificação one hot
Vantagens:
• Facilmente visualizado devido a simplicidade da lógica
de decodificação
• Apenas dois FFs mudam de estado – menor consumo

Desvantagens
• Ocupação de área – necessidade de diversos FFs

EEL7020 – Sistemas Digitais 36/38


Codificação de estados para FSMs

Justificativa para one hot ser default em FPGAs:

• Abundância de flip-flops em FPGAs facilita o mapeamento.


• FSMs one hot são mais rápidas. Uma FSM mais codificada
pode ficar mais lenta com a inclusão de novos estados.
• Facilidade para projetar FSMs one hot. VHDL pode ser escrito a
partir de um diagrama de estados, sem necessidade de criação
de uma tabela de estados.
• Facilidade para realizar modificações.
• Facilidade para realizar a síntese em VHDL ou Verilog.

EEL7020 – Sistemas Digitais 37/38


Codificação de estados para FSMs

É possível forçar a utilização de outras codificações no processo


de síntese. Incluir no VHDL:
package refri is
type cmd is (Nada, M025, M050, M100, DEV, MEET, ETIRPS);
attribute syn_enum_encoding : string;
attribute syn_enum_encoding of cmd : type is “gray";
end package;

-- opções disponíveis: onehot, gray, sequential

Log da síntese do Synplify mostrará:


@N:CD232 : VendingMachine.vhd(29) | Using gray code encoding for type cmd

EEL7020 – Sistemas Digitais 38/38