bitGateLab Digital · Aprenda
Português (Brasil)
Abrir o simulador

Aprenda › Tema 11

Máquinas de estados Moore e Mealy: projeto completo

Leitura de 7 min · Equipe bitGateLab

Uma máquina de estados finitos (FSM) é um circuito sequencial que "lembra" em que passo de um processo está. Semáforos, fechaduras com senha, controladores de elevador e receptores de comunicação serial são máquinas de estados. Aqui você vai ver os dois modelos clássicos, Moore e Mealy, e acompanhar um projeto completo, da descrição em palavras até as equações dos flip-flops, com um detector da sequência 101.

Partes de uma máquina de estados

Toda FSM síncrona tem três blocos:

A diferença entre os dois modelos está no último bloco:

Uma máquina de Mealy costuma precisar de menos estados e responde no mesmo ciclo em que a entrada chega, mas sua saída pode mudar a qualquer momento se a entrada mudar. Uma de Moore responde um ciclo depois, e sua saída só muda logo após a borda do clock, o que a torna mais limpa.

O problema: detector da sequência 101

Uma entrada serial X chega sincronizada com o clock, um bit por ciclo. A saída Z deve valer 1 sempre que os últimos três bits recebidos forem 1, 0, 1. Permite-se sobreposição: na cadeia 10101 há duas detecções, porque o último 1 da primeira sequência é o primeiro da seguinte.

O primeiro passo é decidir o que a máquina deve lembrar. Cada estado representa "quanto da sequência eu já tenho":

Diagrama e tabela de estados (Moore)

Para cada estado e cada valor de X, pergunte-se: com este novo bit, qual é o sufixo mais longo que coincide com o início de 101? Esse sufixo define o próximo estado.

S0/0 S1/0 S2/0 S3/1 1 0 1 0 1 0 0 1
Detector Moore de 101 com sobreposição. Os números sobre as setas são o valor de X; a saída está dentro de cada estado.
Estado atualX = 0X = 1Z
S0S0S10
S1S2S10
S2S0S30
S3S2S11

Repare em duas transições em que é comum errar. Em S1 chega outro 1: a cadeia termina em 11, e o último 1 continua servindo como início, de modo que a máquina fica em S1. Em S3 chega um 0: a cadeia termina em 1010, cujo sufixo 10 coincide com o início de 101, de modo que ela vai para S2 e não para S0. É isso que permite a sobreposição.

Atribuição de estados e equações

Com 4 estados bastam 2 flip-flops D (Q1 Q0). A atribuição mais direta é a binária: S0 = 00, S1 = 01, S2 = 10, S3 = 11. Com flip-flops D a tabela de excitação é trivial, porque D = Q+.

Q1Q0XQ1+ = D1Q0+ = D0
00000
00101
01010
01101
10000
10111
11010
11101

Simplificação:

  • D0 vale 1 exatamente nas linhas com X = 1, portanto D0 = X. Faz sentido: nessa atribuição, Q0 = 1 significa "o último bit foi 1".
  • D1 = Σm(2, 5, 6) com as variáveis na ordem Q1 Q0 X. Os mintermos 2 (010) e 6 (110) são adjacentes e formam Q0·X. O 5 (101) não tem vizinhos em 1 e fica sozinho: Q1·Q0·X. D1 = Q0·X + Q1·Q0·X.
  • A saída de Moore depende apenas do estado: Z = Q1·Q0.

O circuito fica com 2 flip-flops D, uma AND de 2 entradas para Z e, para D1, uma AND de 2, uma AND de 3 e uma OR de 2 (mais os inversores de Q0 e X).

Verificação com uma sequência de teste

Entrada X = 1 0 1 0 1 1 0 1, partindo de S0. Estado depois de cada borda:

Borda12345678
X10101101
EstadoS1S2S3S2S3S1S2S3
Z00101001

Há três detecções: nos bits 1 a 3, 3 a 5 (sobreposição) e 6 a 8. Confira a borda 4 com as equações: estado S3 = 11 e X = 0, D1 = 1·1 + 1·0·0 = 1 e D0 = 0, próximo estado 10 = S2. Confere.

A versão Mealy

Em Mealy a saída fica na transição, de modo que o estado S3 é desnecessário: a detecção ocorre "quando chega o 1 estando em S2". Com três estados A (nada), B (último bit 1) e C (últimos bits 1, 0):

EstadoX = 0X = 1
AA / 0B / 0
BC / 0B / 0
CA / 0B / 1

Continuam sendo necessários 2 flip-flops, mas a saída Z = 1 aparece no mesmo ciclo em que chega o último 1, um ciclo antes do que na versão Moore.

Erros comuns

Experimente no simulador

Com as equações em mãos, montar o detector leva poucos minutos, e o cronograma permite comprovar cada transição.

  1. Coloque dois flip-flops D com o mesmo clock; nomeie as saídas deles como Q1 e Q0.
  2. Conecte a entrada X diretamente a D0.
  3. Monte D1 = Q0·X + Q1·Q0·X com dois inversores, duas AND e uma OR, e conecte-o a D1.
  4. Conecte uma AND de Q1 e Q0 a um indicador para Z.
  5. Mude X antes de cada borda seguindo a sequência 1 0 1 0 1 1 0 1 e observe no cronograma que Z acende depois das bordas 3, 5 e 8.

Exercícios

  1. Com sobreposição, quantas vezes a máquina detecta 101 na cadeia 1010101?
    Resposta

    Três vezes: nos bits 1 a 3, 3 a 5 e 5 a 7.

  2. Refaça a tabela Moore do detector de 101 sem sobreposição (depois de uma detecção, começa-se do zero).
    Resposta

    Só muda a linha S3: com X = 0 vai para S0 e com X = 1 vai para S1. As demais linhas ficam iguais.

  3. Com a atribuição da versão Mealy A = 00, B = 01, C = 10, obtenha Z.
    Resposta

    Z = 1 somente no estado C com X = 1: Z = Q1·Q0·X. Se o código 11 nunca aparece, ele pode ser marcado como X e fica Z = Q1·X.

  4. De quantos flip-flops precisa, no mínimo, uma máquina de 9 estados?
    Resposta

    4, porque 23 = 8 não é suficiente e 24 = 16 é.

Para revisar os flip-flops que formam o registrador de estado, consulte latches e flip-flops.