“EEL7020 – Sistemas Digitais”
Universidade Federal de Santa Catarina
Centro Tecnológico – CTC
Departamento de Engenharia Elétrica
Prof. Eduardo Augusto Bezerra
Florianópolis, março de 2010.
Plano de Aula
“Finite State Machine (FSM)”
EEL7020 – Sistemas Digitais 2/38
• 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
• Sistemas computacionais, normalmente, são compostos por um módulo de “controle” e um módulo para “execução das operações”.
Finite State Machine (FSM)
Máquina de vendade refrigerantes
ComputadorAutomóvel (sistemas
embarcados)
EEL7020 – Sistemas Digitais 3/38
Execução:- Recebe R$- Devolve troco- Fornece produto
Controlador
de refrigerantes Execução:- Busca instrução- Decodifica- Executa- Acessa memória- Escreve resultados
Controlador
Execução:- Alarme- Vidros- ABS
Controlador
embarcados)
• 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
Finite State Machine (FSM)
EEL7020 – Sistemas Digitais 4/38
• 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.
• O comportamento de circuitos sequenciais pode ser representado por FSMs de diversas formas:
EstadoAtual
Próximo EstadoX=0 X=1
Saída Atual(z)
S0 S0 S2 0
S1 S0 S2 1
Diagramas de estados (grafos) Tabelas de transição de estados
Finite State Machine (FSM)
EEL7020 – Sistemas Digitais 5/38
S1 S0 S2 1
S2 S2 S3 1
S3 S3 S1 0
Linguagens de
descrição de hardware
case NEXT_STATE is
when S0_C =>
if (x = 0)
z = 0;
NEXT_STATE <= S0_C;
else
z = 0;
NEXT_STATE <= S2_C;
end if;
when S1_C =>
Modelo de comportamento composto por:• Estados• Transições• Ações
EstadosArmazena informação sobre o passado refletindo as modificações
Finite State Machine (FSM)
EEL7020 – Sistemas Digitais 6/38
Armazena informação sobre o passado refletindo as modificações das entradas do início até o presente momento
TransiçãoIndica uma troca de estado e é descrita por uma condição que habilita a modificação de estado
AçãoDescrição da atividade que deve ser executada em um determinado instante
Finite State Machine
Máquina de estados finitos
Finite State Machine (FSM)
EEL7020 – Sistemas Digitais 7/38
Máquina com um conjunto finito de estados
Máquina de estados finita
?
Estrutura de uma FSM
EEL7020 – Sistemas Digitais 8/38
Estrutura de uma FSM
Entradas Primárias Saídas Primárias
Circuito Combinacional
• Dois módulos:• Armazenamento do “estado atual”; e
• Cálculo da “saída” e do “próximo estado”
EEL7020 – Sistemas Digitais 9/38
Próximo Estado Estado Atual
Sinal de relógio ("Clock")
Registrador de Estado
Circuito Combinacional (Funções de Saída e
Funções de Próximo Estado)
Sinal de inicialização ("Reset")
• Armazenamento do “estado atual”• Registrador construído a partir de flip-flops
• Cálculo da “saída” e do “próximo estado”
Estrutura de uma FSM
EEL7020 – Sistemas Digitais 10/38
• 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, ...)
ROM armazena tabela verdade da lógica de saída e de próximo estado
ROM
A0
A1
.
D0
D1
.
Entrada(x)
Saída(z)
x A2 A1 A0 z D2 D1 D0
0 0 0 0 1 0 0 1
0 0 0 1 1 0 1 1
0 0 1 0 0 1 0 0
Endereços
da ROM
Saídas
da ROMFunções de saída e funções de próximo estado
Usada no
controle do
processo
Estrutura de uma FSM
EEL7020 – Sistemas Digitais 11/38
ROM
Flip-flops
.
.
.
An
.
.
.
Dn
(x) (z)
Próximo estado
Estado atual
0 0 1 0 0 1 0 0
0 0 1 1 0 1 0 1
0 1 0 0 1 1 0 1
0 1 0 1 0 0 0 0
0 1 1 0 1 0 0 0
0 1 1 1 X X X X
1 0 0 0 0 0 1 0
1 0 0 1 0 1 0 0
Registrador de estado
Cada posição da ROM armazena uma linha da tabela de estados.
clock
• 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
Moore e Mealy
EEL7020 – Sistemas Digitais 12/38
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
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
Moore e Mealy
Lógica de
próximo estado
(combinacional)
Registradores
de estado atual
(sequencial)
Lógica de saída
(combinacional)
próximo
estado
estado
atual
saídaentrada
reset
assíncrono
EEL7020 – Sistemas Digitais 14/38
• Máquina Mealy – a saída do circuito sequencial é função do estado atual e das entradas
assíncrono
Lógica de
próximo estado
(combinacional)
Registradores
de estado atual
(sequencial)
Lógica de saída
(combinacional)
próximo
estado
estado
atualsaídaentrada
reset
assíncrono
• Máquina Moore – a saída do circuito sequencial é função apenas do estado atual
x = entradaz = saída
• No estado S0, saída é z = 0• No estado S1, saída é z = 1
Moore e Mealy
EEL7020 – Sistemas Digitais 15/38
• Máquina Mealy – a saída do circuito sequencial é função do estado atual e das entradas
x ; zx = entradaz = saída
• No estado S0, com entrada 0, saída é z = 0• No estado S0, com entrada 1, saída é z = 1
• 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
EEL7020 – Sistemas Digitais 16/38
• Geração de tabela de transição de estados a partir de um circuito sequencial
• 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
Tabela de Estados de uma FSM
EEL7020 – Sistemas Digitais 17/38
3. Construir o mapa de Karnaugh para o próximo estado para cada flip-flop
Dica: flip-flop D: Q’ = Dflip-flop T: Q’ = T xor Qflip-flop SR: Q’ = S or RQflip-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
JA
KA
A
A
JB
KB
B
B
Exemplo 1: Moore
EEL7020 – Sistemas Digitais 18/38
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’ = JAA + KAA = x A + (x + B) A
B’ = JB B + KB B = x B + (x xor A) B = x B + (x A + x A) B
Equações de próximo estado para os FFs:
A’ = x A + (x + B) A
B’ = x B + (x A + x A) B
Exemplo 1: Moore
EEL7020 – Sistemas Digitais 19/38
3. Mapas de Karnaugh:
0 1
00 0 1
01 0 1
11 1 1
10 1 0
ABx
A’
0 1
00 0 1
01 0 1
11 1 0
10 0 1
ABx
B’
4. Combinando os mapas de Karnaugh para obter a tabela de estados:
AB X=0 X=1 z
00 00 11 0
01 00 11 1
11 11 10 1
A’ B’EstadoAtual
Próximo EstadoX=0 X=1
Saída Atual(z)
S0 S0 S2 0
S1 S0 S2 1
S2 S2 S3 1
=>
Exemplo 1: Moore
EEL7020 – Sistemas Digitais 20/38
10 10 01 0
S2 S2 S3 1
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.
JA
KA
A
A
JB
KB
B
B
Exemplo 2: Mealy
EEL7020 – Sistemas Digitais 21/38
1. Equações de entrada/saída para os FFs:
JA = x B KA = x z = x B A + x A + x B
JB = x KB = x A
2. Equações de próximo estado para os FFs:
A’ = JAA + KAA = x B A + x A
B’ = JB B + KB B = x B + (A x) B = x B + x B + A B
3. Mapas de Karnaugh:
Equações de próximo estado para os FFs:
A’ = x B A + x A
B’ = x B + x B + A B
Exemplo 2: Mealy
EEL7020 – Sistemas Digitais 22/38
3. Mapas de Karnaugh:
0 1
00 0 0
01 0 1
11 1 0
10 1 0
ABx
A’
0 1
00 0 1
01 1 1
11 1 0
10 0 1
ABx
B’
0 1
00 0 1
01 1 0
11 0 1
10 0 1
ABx
Z
4. Combinando os mapas de Karnaugh para obter a tabela de estados:
AB X=0 X=1 X=0 X=1
00 00 01 0 1
01 01 11 1 0
11 11 00 0 1
10 10 01 0 1
A’ B’EstadoAtual
Próximo EstadoX=0 X=1
Saída Atual(z)
S0 S0 S1 0 1
S1 S1 S2 1 0
S2 S2 S0 0 1
S3 S3 S1 0 1
=>
z
Exemplo 2: Mealy
EEL7020 – Sistemas Digitais 23/38
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.
Estudo de casoControlador de uma máquina de venda de refrigerantes
EEL7020 – Sistemas Digitais 24/38
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
Estudo de caso: Controlador de uma máquina de venda de refrigerantes
EEL7020 – Sistemas Digitais 25/38
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.
Solução: Diagrama de blocos Informações enviadas para os atuadores (eletro-mecânicos
Estudo de caso: Controlador de uma máquina de venda de refrigerantes
EEL7020 – Sistemas Digitais 26/38
Informações fornecidas pelos sensores
Solução: Tabela de estados
Estudo de caso: Controlador de uma máquina de venda de refrigerantes
EEL7020 – Sistemas Digitais 27/38
Solução: Tabela de estados
Estudo de caso: Controlador de uma máquina de venda de refrigerantes
EEL7020 – Sistemas Digitais 28/38
Solução: Representação gráfica
Estudo de caso: Controlador de uma máquina de venda de refrigerantes
EEL7020 – Sistemas Digitais 29/38
Reset
Codificações de estados para FSMs
EEL7020 – Sistemas Digitais 30/38
Codificações 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 de estados para FSMs
EEL7020 – Sistemas Digitais 31/38
simbólicos:
• Escolha do estilo de codificação visa redução de custos e atrasos
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
Codificação de estados para FSMsBinária
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
EEL7020 – Sistemas Digitais 32/38
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
Codificação de estados para FSMsGray
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
EEL7020 – Sistemas Digitais 33/38
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
Codificação de estados para FSMsGray
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)
EEL7020 – Sistemas Digitais 34/38
FFs)
Desvantagens• Decodificação mais complexa
Codificação de estados para FSMsOne hot
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).
EEL7020 – Sistemas Digitais 35/38
Ex.: 000 → 000001
001 → 000010
010 → 000100
011 → 001000
100 → 010000
101 → 100000
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
One hot
EEL7020 – Sistemas Digitais 36/38
Desvantagens• Ocupação de área – necessidade de diversos FFs
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.
Codificação de estados para FSMs
EEL7020 – Sistemas Digitais 37/38
• 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.
É 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;
Codificação de estados para FSMs
EEL7020 – Sistemas Digitais 38/38
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
Top Related