Trilha de aprendizado · Nível 8 · Tutorial 10

Máquinas de estados para sequenciamento digital

Ao concluir, o aluno será capaz de transformar uma sequência simples de sinalização em uma máquina de estados de hardware, representá-la por diagrama e tabela e verificar suas transições sem usar programação.

  • Nível: Intermediário
  • Duração: 25 min
  • 9 passos
Máquinas de estados para sequenciamento digital

O que você vai percorrer

  1. Defina o comportamento da sequência Defina os elementos e o comportamento de uma sequência de sinalização com três estados. 2 min
  2. Separe memória, decisão e saídas Separe armazenamento, decisão de transição e decodificação das saídas em uma máquina de Moore. 2 min
  3. Desenhe transições e permanências 3 min
  4. Transforme o diagrama em tabela Converta o diagrama funcional em uma tabela de transição completa e mantenha as saídas de Moore vinculadas ao estado atual. 3 min
  5. Codifique os estados em bits Converta os três estados simbólicos da sequência em códigos de dois bits, preservando a tabela de transição. 3 min
  6. Defina inicialização e recuperação Complete a máquina com reset síncrono prioritário e recuperação explícita do código 11. 3 min
  7. Represente a lógica de próximo estado e saída Converta a tabela binária completa em funções para as entradas D e para as saídas da máquina de Moore. 4 min
  8. Verifique a sequência no tempo Acompanhe a máquina por bordas de clock e reconheça as condições necessárias para que essa previsão seja fisicamente válida. 3 min
  9. Conclua e valide o sequenciador Consolide as representações do sequenciador e valide os casos de operação, reset e recuperação. 3 min

O que você vai aprender

  • Definir estados, entradas e saídas para uma sequência de sinalização com até três estados.
  • Construir um diagrama e uma tabela de transição completos.
  • Codificar os estados e representar a lógica de próximo estado e de saída.
  • Verificar sequências de operação, reset e recuperação de um código de estado não utilizado.

Antes de começar

  • Portas lógicas e tabelas-verdade
  • Seleção de sinais com multiplexadores
  • Armazenamento e deslocamento com registradores
  • Sequências de contagem com contadores síncronos
  • Verificação de atrasos e requisitos de temporização

Passo 1 de 9

Defina o comportamento da sequência

Defina os elementos e o comportamento de uma sequência de sinalização com três estados.

O que a máquina descreve

Do contador ao comportamento

Uma máquina de estados descreve um sequenciamento no qual cada etapa tem significado e a mudança pode depender de uma condição. Diferentemente de um contador, que apenas percorre valores, ela associa cada situação armazenada a um comportamento observável.

Neste caso, o circuito controla duas sinalizações, A e B, usando um comando lógico C. As mudanças de etapa ocorrem nas bordas ativas do clock; o clock organiza quando o estado pode mudar, mas não é o comando de solicitação.

Esquema visual de três etapas de sinalização, um comando separado e bordas de clock que marcam as atualizações.

O estado armazenado identifica a etapa atual; C é uma entrada externa, e as saídas A e B mostram a etapa ao ambiente.

Especifique sem confundir papéis

As três etapas

Vamos especificar três estados simbólicos:

  • REPOUSO: nenhuma sinalização está ativa.
  • SINAL_A: A está ativa durante um ciclo.
  • SINAL_B: B fica ativa enquanto o comando ainda estiver ativo.

Um estado é a informação armazenada que, junto com as entradas, basta para decidir a continuação do comportamento. Aqui, saber somente que C está em 1 não basta: é preciso saber em qual etapa a máquina está.

Exemplo

Comportamento desejado

Considere C mantido em nível ativo:

  1. Em REPOUSO, C ativo solicita o início da sequência.
  2. A máquina entra em SINAL_A; a saída A fica ativa por um ciclo.
  3. Na borda seguinte, ela avança para SINAL_B, independentemente de C.
  4. Em SINAL_B, B permanece ativa até uma borda em que C seja observado inativo. Então a máquina volta a REPOUSO.

Assim, manter C ativo não reinicia A repetidamente: depois de iniciar, a máquina sabe que já passou pela etapa A porque armazena seu estado.

Verifique os papéis

Entrada, estado ou saída?

Associe cada elemento à sua função no caso descrito.

Faça as associações corretas.

Toque em um item e depois no par correspondente.

Teste a regra de permanência

Evite uma sequência repetida

C permanece ativo depois que a máquina iniciou a sequência e já chegou a SINAL_B. O que deve acontecer na próxima borda ativa?

Escolha o comportamento correto.

Guarde a especificação

Síntese

Nesta etapa, você definiu o comportamento antes de representar a implementação.

  • C é o comando de entrada.
  • REPOUSO, SINAL_A e SINAL_B são a memória da sequência.
  • A e B são as saídas observáveis.
  • O clock define as bordas em que o estado pode mudar.
  • C mantido ativo sustenta SINAL_B; não reinicia a sequência.

A seguir, esses papéis serão organizados nos blocos de hardware da máquina.

Passo 2 de 9

Separe memória, decisão e saídas

Separe armazenamento, decisão de transição e decodificação das saídas em uma máquina de Moore.

Enxergue a arquitetura

Três funções, três blocos

Uma máquina de estados separa o que está guardado, a decisão do próximo passo e o que é mostrado nas saídas. Essa divisão torna a sequência mais clara do que apenas acompanhar uma contagem.

No nosso caso, o registrador guarda um entre três estados: REPOUSO, SINAL_A ou SINAL_B. O comando C entra na lógica de decisão; as saídas A e B indicam o estado que está ativo.

Arquitetura da máquina

Diagrama em blocos: lógica de próximo estado recebe C e o estado atual; o registrador recebe o próximo estado e o clock; a lógica de saída recebe o estado atual e gera A e B.

O estado atual alimenta tanto a decisão do próximo estado quanto a geração das saídas.

Entenda os sinais

O papel de cada bloco

1. Lógica de próximo estado: recebe o estado atual e o comando C. Ela calcula qual estado deverá ser carregado na próxima borda ativa do clock.

2. Registrador de estado: armazena o estado atual. Na borda ativa, captura o próximo estado calculado. Entre bordas, mantém seu conteúdo.

3. Lógica de saída: observa o estado atual armazenado e produz A e B. Como as saídas vêm do estado atual, este é um modelo de Moore.

Dica

Realimentação e clock

A realimentação não é um erro: o valor armazenado sai do registrador e volta para a lógica de próximo estado. Assim, a máquina pode decidir o passo seguinte a partir do ponto em que está.

O clock não escolhe a sequência e não equivale ao comando C. Ele apenas determina quando o registrador troca para o próximo estado já calculado.

Frente

Se o estado atual é SINAL_A, quais saídas o modelo de Moore produz?

Toque para virar

Separe agora de depois

Mapa de saídas de Moore

A associação de saídas é fixa para cada estado atual. C pode influenciar a decisão sobre o futuro, mas não muda diretamente A ou B enquanto o estado armazenado não mudar.

Saídas observáveis para cada estado armazenado.
Estado atualAB
REPOUSO00
SINAL_A10
SINAL_B01

Exemplo

Cálculo não é armazenamento

Exemplo: estando em SINAL_B, se C passar a 0, a lógica de próximo estado calcula REPOUSO. Porém, até a próxima borda ativa, o registrador ainda contém SINAL_B; portanto, A = 0 e B = 1 nesse intervalo. Depois da borda, o registrador passa a REPOUSO e ambas as saídas ficam em 0.

Verifique sua leitura

Identifique os blocos

Associe cada elemento à sua função principal na arquitetura da máquina.

Associe sinal e função

Faça as correspondências.

Toque em um item e depois no par correspondente.

Teste a separação temporal

Em SINAL_B, C torna-se 0 entre duas bordas. Antes da próxima borda ativa, o registrador já está em REPOUSO e as saídas são A = 0, B = 0.

Passo 3 de 9

Desenhe transições e permanências

Interprete a notação

Leia os elementos do diagrama

Um diagrama de estados mostra o comportamento da máquina sem ainda escolher bits nem portas lógicas. Cada nó representa o estado armazenado; como o modelo é de Moore, as saídas pertencem ao nó:

  • REPOUSO: A=0, B=0
  • SINAL_A: A=1, B=0
  • SINAL_B: A=0, B=1

As setas mostram para qual estado a máquina irá na próxima borda ativa do clock. O rótulo da seta informa a condição de entrada C que seleciona aquele caminho.

Estados, saídas e arcos

Diagrama com três nós: REPOUSO com A e B inativos, SINAL_A com A ativo e SINAL_B com B ativo; há setas entre os nós e laços em REPOUSO e SINAL_B.

Os nós informam as saídas; os arcos informam a condição para o próximo estado.

Trace as transições

Defina todos os destinos

Complete os arcos a partir dos requisitos da sequência:

  1. Em REPOUSO, C=0 mantém a máquina em REPOUSO. Quando C=1, ela segue para SINAL_A.
  2. Em SINAL_A, a máquina sempre segue para SINAL_B. Esse arco é incondicional: vale para C=0 e para C=1.
  3. Em SINAL_B, C=1 mantém a máquina em SINAL_B. Quando C=0, ela retorna a REPOUSO.

Assim, manter C=1 não reinicia a sequência: depois de SINAL_A, a máquina chega a SINAL_B e permanece ali enquanto C continuar ativo.

Exemplo

Exemplo: arco incondicional

A passagem de SINAL_A para SINAL_B não ocorre imediatamente ao entrar em SINAL_A. A máquina permanece em SINAL_A durante o ciclo iniciado naquela borda, mantendo A=1. Somente na borda ativa seguinte ela armazena SINAL_B e passa a apresentar B=1.

Dica

Torne as permanências explícitas

Um laço é um arco que sai de um estado e volta ao próprio estado. Ele é essencial: mostra que, sob determinada condição, o estado armazenado não muda na próxima borda.

Neste caso, desenhe um laço em REPOUSO rotulado C=0 e outro em SINAL_B rotulado C=1.

Verifique se não há lacunas

Cheque a completude

Um diagrama possui o arco SINAL_B → REPOUSO rotulado C=0, mas não mostra nenhum outro arco saindo de SINAL_B. O que falta?

Aplique o critério de completude

Complete um estado

Descreva os arcos que devem sair de REPOUSO, incluindo uma condição para C=0 e outra para C=1. Indique o estado de destino em cada caso.

Escreva pelo menos 35 caracteres (0/35).

Passo 4 de 9

Transforme o diagrama em tabela

Converta o diagrama funcional em uma tabela de transição completa e mantenha as saídas de Moore vinculadas ao estado atual.

Organize as condições

Da seta à linha da tabela

Uma tabela de transição transforma cada seta — inclusive os laços de permanência — em uma linha. Para montá-la, combine o estado atual com cada valor possível de C e registre o próximo estado.

Como há três estados e C pode ser 0 ou 1, existem 3 × 2 = 6 linhas funcionais. Leia uma linha assim: “se este é o estado armazenado antes da borda ativa e C tem este valor, este será o estado armazenado depois da borda”.

Ainda não use códigos binários: nesta tabela, os nomes REPOUSO, SINAL_A e SINAL_B tornam o comportamento mais fácil de conferir.

Do diagrama à tabela

Diagrama de três estados conectado visualmente a uma tabela de seis linhas, mostrando que cada condição de transição gera uma linha.

Cada combinação de estado atual e valor de C deve ter um único destino.

Construa linhas da transição

Complete linhas representativas

Use o diagrama para completar as três linhas abaixo. Elas verificam uma transição incondicional e os dois laços de permanência. Escreva somente o nome do próximo estado.

Linha 1: permanência em REPOUSO

Estado atual REPOUSO, C=0 → próximo estado: ____

Linha 2: transição incondicional

Estado atual SINAL_A, C=0 → próximo estado: ____

Linha 3: permanência em SINAL_B

Estado atual SINAL_B, C=1 → próximo estado: ____

Consolide as seis combinações

Tabela de transição completa

Depois de conferir as condições, a tabela funcional completa fica assim. As seis linhas cobrem todos os valores possíveis de C em cada estado; portanto, não há condição sem destino nem condição com dois destinos.

Tabela funcional simbólica: o próximo estado será armazenado na próxima borda ativa.
Estado atualCPróximo estado
REPOUSO0REPOUSO
REPOUSO1SINAL_A
SINAL_A0SINAL_B
SINAL_A1SINAL_B
SINAL_B0REPOUSO
SINAL_B1SINAL_B

Exemplo

Confira a completude

Observe como cada tipo de arco aparece na tabela:

  • Um laço vira uma linha cujo estado atual e próximo estado têm o mesmo nome.
  • Uma seta condicionada vira uma linha para o valor de C escrito no rótulo.
  • A seta incondicional de SINAL_A vira duas linhas, uma para C=0 e outra para C=1, ambas com destino SINAL_B.

Isso permite conferir o diagrama de modo sistemático: para cada estado atual, devem existir exatamente duas linhas, uma para cada valor de C.

Associe as saídas corretamente

Saídas pertencem ao estado atual

A tabela de transição responde “qual será o estado depois da próxima borda?”. Já as saídas de Moore respondem “o que está ativo no estado armazenado agora?”. Por isso, associe A e B ao estado atual, não ao próximo estado.

Por exemplo, na linha “estado atual SINAL_A, C=1, próximo estado SINAL_B”, A ainda vale 1 e B vale 0 até a borda que armazenará SINAL_B. O destino futuro não altera as saídas antes dessa borda.

Verifique as saídas no instante correto

O estado atual é SINAL_A e C=1; a tabela prevê SINAL_B como próximo estado. Quais são as saídas antes da próxima borda ativa?

Tabela de saídas de Moore

As saídas podem ser registradas em uma tabela separada para evitar confundir presente e futuro.

As saídas são determinadas pelo estado atual armazenado.
Estado atualAB
REPOUSO00
SINAL_A10
SINAL_B01

Passo 5 de 9

Codifique os estados em bits

Converta os três estados simbólicos da sequência em códigos de dois bits, preservando a tabela de transição.

Dimensione a memória de estado

Dois bits para três estados

Até aqui, a tabela usa nomes: REPOUSO, SINAL_A e SINAL_B. Para armazenar o estado em hardware, esses nomes precisam ser associados a bits no registrador.

Com n bits, um registrador representa 2ⁿ combinações. Como esta máquina tem 3 estados, 1 bit não basta: ele representa apenas 0 e 1. Com 2 bits, há quatro combinações possíveis. Portanto, use dois flip-flops D, cujas saídas formam o estado atual Q1Q0.

Os flip-flops guardam o código; eles não sabem, por si só, o significado de REPOUSO ou SINAL_A. Esse significado vem da codificação escolhida.

Registrador de estado de dois bits

Diagrama com dois flip-flops D formando os bits Q1 e Q0 do estado; 00, 01 e 10 estão associados aos três estados, enquanto 11 está sem associação.

Dois flip-flops armazenam quatro códigos possíveis; apenas três representam etapas funcionais da sequência.

Dica

A quantidade de estados determina a largura mínima do registrador: para 3 estados, são necessários 2 bits.

Escolha uma codificação consistente

Associe cada estado a um código

Vamos adotar esta codificação de referência. Ela é uma escolha de projeto consistente com a tabela funcional já construída.

Códigos adotados

Codificação simbólica e binária da máquina

`Q1Q0` é o estado atual armazenado; o próximo estado também será expresso por dois bits.
Estado simbólicoCódigo Q1Q0Saídas A, B
REPOUSO000, 0
SINAL_A011, 0
SINAL_B100, 1
Código não utilizado11ainda não definido neste step

Atenção

A combinação que sobra

O código 11 não cria um quarto estado funcional. Ele apenas é a combinação que sobra ao usar dois bits para representar três estados.

Por enquanto, registre-o como código não utilizado. A regra para tratar esse código será definida no próximo step; não o considere uma condição indiferente na implementação final.

Converta as transições em bits

Traduza a tabela sem mudar o comportamento

Substitua os nomes da tabela funcional pelos códigos adotados. As transições continuam exatamente as mesmas; muda somente a forma de escrever o estado.

Exemplo: em REPOUSO, C = 1 iniciava a sequência indo para SINAL_A. Com os códigos, isso vira 00 → 01 na próxima borda ativa.

Exemplo de conversão

Veja algumas linhas já convertidas. Compare estado atual, entrada e próximo estado — não confunda o próximo código com as saídas do estado atual.

A tabela binária preserva a tabela simbólica construída anteriormente.
Estado atual Q1Q0CPróximo estado Q1⁺Q0⁺Leitura simbólica
00000REPOUSO permanece
00101REPOUSO vai para SINAL_A
010 ou 110SINAL_A vai para SINAL_B
10110SINAL_B permanece
10000SINAL_B vai para REPOUSO

Dica

O sobrescrito + identifica o valor que será armazenado depois da próxima borda ativa. Assim, Q1⁺Q0⁺ é calculado a partir do estado atual e de C; Q1Q0 só muda na borda do clock.

Pratique a leitura binária

Verifique uma transição codificada

Complete a conversão da transição: com estado atual 01 e qualquer valor de C, o próximo estado é {{1}}.

Qual código vem a seguir?

Digite os dois bits do próximo estado.

Escreva pelo menos 2 caracteres (0/2).

Identifique o código não utilizado

Qual combinação ficou sem estado funcional associado nesta codificação?

Escreva pelo menos 2 caracteres (0/2).

Passo 6 de 9

Defina inicialização e recuperação

Complete a máquina com reset síncrono prioritário e recuperação explícita do código 11.

Reset é uma regra de borda

Duas regras para completar a máquina

Até aqui, os três estados funcionais usam 00 (REPOUSO), 01 (SINAL_A) e 10 (SINAL_B). Como dois bits também podem formar 11, a especificação precisa dizer o que acontece tanto na inicialização quanto nesse código não utilizado.

Vamos acrescentar a entrada R, um reset síncrono ativo em nível alto. Quando R=1 na borda ativa do clock, o registrador deve assumir REPOUSO (00), com prioridade sobre o comando C.

Reset prioritário no registrador

Diagrama de uma máquina de estados com registrador de dois bits, clock, comando C e reset R prioritário direcionando o estado para 00.

R e C são avaliados para definir o valor que será armazenado na próxima borda; R tem prioridade.

Recuperação não é inicialização

A prioridade vale na próxima borda

Reset síncrono não muda o estado no instante em que R sobe. Ele só é aplicado na próxima borda ativa do clock. Assim, se a máquina está em SINAL_B e R passa a 1 entre duas bordas, ela permanece em SINAL_B até a borda seguinte; então vai para 00.

No diagrama, represente isso como uma regra global: “em qualquer estado, se R=1 na borda, próximo estado = REPOUSO”. Não é uma seta combinacional instantânea nem um novo estado da sequência.

Atenção

Código não utilizado também tem destino

Com R=0, trate 11 de modo explícito: se o registrador estiver em 11, o próximo estado será 00 na próxima borda válida, qualquer que seja C. Isso é recuperação.

Enquanto o estado atual for 11, A=0 e B=0 após a estabilização da lógica de saída. Portanto, 11 não aciona nenhum dos dois sinais. Não o trate como condição indiferente na implementação.

Regras globais de transição e saída

Regras adicionais à tabela funcional já construída.

A regra de reset se aplica antes de qualquer transição normal.
Condição na borda ativaPróximo estadoA e B após estabilização
R = 1, qualquer estado e C00 (REPOUSO)A=0, B=0
R = 0 e estado atual = 11, qualquer C00 (REPOUSO)No estado 11: A=0, B=0
R = 0 e estado funcionalConforme tabela anteriorConforme o estado atual

Aplique as regras em casos concretos

Exemplo

Exemplo: comando e reset simultâneos

Considere que, pouco antes de uma borda ativa, o estado atual é 10 (SINAL_B), C=1 e R=1.

A prioridade de R faz o próximo estado ser 00. Depois que o registrador atualiza e a lógica se estabiliza, A=0 e B=0. O valor de C não altera essa decisão nessa borda.

Exemplo

Exemplo: retorno determinístico de 11

Agora considere R=0, estado atual 11 e C=1. A máquina não deve iniciar SINAL_A nem permanecer em 11: na próxima borda, ela vai para 00. Se quiser iniciar a sequência, C deverá ser considerado novamente pela regra normal a partir de REPOUSO em uma borda posterior.

Dica

Não confunda os papéis

O reset fornece um ponto inicial conhecido quando aplicado. A recuperação de 11 apenas define como voltar ao comportamento previsto se esse código aparecer. Uma regra não substitui a outra.

Verifique as decisões prioritárias

Teste a ação do reset

Verdadeiro ou falso: se R passa a 1 entre duas bordas de clock, o estado do registrador muda imediatamente para 00.

Determine os próximos estados

Complete com os próximos estados, nesta ordem: (1) estado atual 10, C=1, R=1; (2) estado atual 11, C=0, R=0. Em ambos os casos, o próximo estado é ___.

Passo 7 de 9

Represente a lógica de próximo estado e saída

Converta a tabela binária completa em funções para as entradas D e para as saídas da máquina de Moore.

Calcule o próximo estado funcional

Do próximo estado às entradas D

Com R = 0, cada bit do próximo estado vira diretamente a entrada D do flip-flop correspondente:

  • D1 recebe o próximo valor de Q1.
  • D0 recebe o próximo valor de Q0.

Vamos chamar as funções calculadas sem reset de F1 e F0. Assim, F1 = Q1⁺ e F0 = Q0⁺. Pouco antes da borda ativa, a lógica combinacional calcula essas funções usando o estado atual Q1Q0 e o comando C. Na borda, os dois flip-flops capturam simultaneamente D1D0.

Há oito combinações a conferir: quatro códigos atuais multiplicados pelos dois valores de C. As duas linhas do código não utilizado 11 também entram na tabela: ambas devem produzir próximo estado 00.

Arquitetura completa da máquina

Diagrama de blocos com dois flip-flops de estado, lógica de próximo estado recebendo Q1, Q0 e C, seleção de reset antes das entradas D e decodificador separado para A e B.

F1 e F0 descrevem o próximo estado funcional; o reset seleciona 00 antes das entradas D. As saídas A e B são decodificadas do estado atual.

Reconstrua as oito linhas

A tabela abaixo é a base das funções. Leia Q1⁺Q0⁺ como o valor calculado para ser armazenado na próxima borda, com reset inativo.

Tabela binária completa para R = 0, incluindo a recuperação de 11.
Q1Q0 atualCQ1⁺Q0⁺F1F0
0000000
0010101
0101010
0111010
1000000
1011010
1100000
1110000

Transforme linhas em funções

Monte F1 a partir das linhas 1

Para obter uma função pela soma de produtos, selecione as linhas em que o bit de saída vale 1. Cada linha gera um produto com as variáveis em seu valor observado; depois, some logicamente esses produtos.

Para F1, há três linhas com valor 1:

  • Q1Q0 = 01, com C = 0;
  • Q1Q0 = 01, com C = 1;
  • Q1Q0 = 10, com C = 1.

As duas primeiras diferem somente em C. Como ambas devem ativar F1, podem ser reunidas no termo ¬Q1 · Q0: esse termo vale 1 para 01, independentemente de C. A terceira linha fornece Q1 · ¬Q0 · C.

Portanto, sem buscar uma minimização mais avançada: F1 = ¬Q1 · Q0 + Q1 · ¬Q0 · C.

Monte F0 e confira a recuperação

Para F0, somente uma linha tem valor 1: estado atual 00 e C = 1. O produto dessa linha é ¬Q1 · ¬Q0 · C.

Logo, a função funcional do bit menos significativo é:

F0 = ¬Q1 · ¬Q0 · C

Note o efeito da recuperação: em 11, tanto F1 quanto F0 devem valer 0, para que a próxima borda leve o registrador a 00. Por isso, esse código não pode ser omitido como condição indiferente.

Exemplo

Confira uma linha da tabela

Exemplo: para Q1Q0 = 10, C = 1 e R = 0:

  • F1 = ¬1 · 0 + 1 · ¬0 · 1 = 1
  • F0 = ¬1 · ¬0 · 1 = 0

Assim, D1D0 = 10 e a máquina permanece em SINAL_B na próxima borda. Para o mesmo estado com C = 0, as duas funções valem 0, produzindo o retorno a 00.

Pratique a derivação

Derive as funções de próximo estado

Complete os produtos que formam as funções funcionais F1 e F0. Use · para AND e ¬ para NOT.

Boolean algebra
F1 =  + 
F0 = 

Complete a implementação

Selecione reset e decodifique saídas

Agora inclua o reset síncrono prioritário. Quando R = 1, o próximo estado deve ser 00, qualquer que seja o valor de F1 e F0. Selecione entre o próximo estado funcional e zero para cada entrada D:

D1 = ¬R · F1

D0 = ¬R · F0

Com R = 0, as entradas D preservam as funções funcionais. Com R = 1, ambas são forçadas a 0 antes da borda, sem bloquear, alterar ou criar lógica no clock.

As saídas de Moore usam somente o estado atual:

A = ¬Q1 · Q0

B = Q1 · ¬Q0

Assim, 01 ativa A, 10 ativa B e os códigos 00 e 11 mantêm as duas saídas inativas.

Inclua a prioridade do reset

Complete a expressão da entrada que alimenta o flip-flop de Q1:

D1 = ____ · F1

Posicione cada função

Associe cada expressão ao seu papel na máquina.

Toque em um item e depois no par correspondente.

Passo 8 de 9

Verifique a sequência no tempo

Acompanhe a máquina por bordas de clock e reconheça as condições necessárias para que essa previsão seja fisicamente válida.

Use o estado anterior para decidir o seguinte

Rastreie uma borda por vez

Em cada borda ativa, faça o rastreamento em duas etapas:

  1. Observe o estado armazenado imediatamente antes da borda e os valores estáveis de C e R.
  2. Consulte a tabela/funções e determine o próximo estado; esse é o valor que o registrador passará a armazenar após a borda.

Com R = 0: REPOUSO vai para SINAL_A quando C = 1; SINAL_A sempre vai para SINAL_B; e SINAL_B permanece enquanto C = 1, retornando a REPOUSO quando C = 0. Com R = 1, o reset prioritário leva o estado a REPOUSO na borda.

As saídas são de Moore: A e B são definidas pelo estado que está armazenado, não diretamente por C.

Estado e saídas ao longo das bordas

Diagrama temporal mostrando que cada borda do clock atualiza o estado e, depois, as saídas correspondentes.

O valor de C antes da borda escolhe o estado seguinte; A e B acompanham o estado armazenado após os atrasos físicos.

Confira uma sequência completa

Exemplo de rastreamento funcional

Considere R = 0 em todas as linhas e o estado inicial REPOUSO. A tabela mostra uma solicitação mantida ativa: ela inicia a sequência, mas não reinicia SINAL_A nem SINAL_B.

Cada linha descreve o resultado logo após a respectiva borda ativa, no modelo lógico.
BordaEstado antesCEstado apósA apósB após
1REPOUSO1SINAL_A10
2SINAL_A1SINAL_B01
3SINAL_B1SINAL_B01
4SINAL_B0REPOUSO00
5REPOUSO1SINAL_A10

Exemplo

Leia a sequência sem pular bordas

Na borda 2, C continua em 1, mas o estado antes da borda é SINAL_A. Portanto, a regra aplicável é a transição incondicional de SINAL_A para SINAL_B. Não se volta a SINAL_A enquanto C permanece ativo.

A liberação de C só é observada quando a máquina já está em SINAL_B: na borda 4, C = 0 produz o retorno a REPOUSO. Uma nova solicitação em uma borda posterior reinicia a sequência.

Pratique a leitura por bordas

Complete o rastreamento

No rastreamento anterior, imediatamente antes da borda 3 o estado é SINAL_B e C = 1. Qual estado fica armazenado logo após essa borda?

Permanência em SINAL_B

Estado após a borda 3: ____

Próximo estado não é estado atual

Qual afirmação descreve corretamente o instante da borda ativa?

Separe lógica ideal de temporização física

A tabela pressupõe entradas estáveis

A tabela anterior é uma verificação funcional: ela supõe que C e R obedecem às condições de temporização. Para que a borda tenha resultado garantido, essas entradas precisam chegar com antecedência suficiente para que as entradas D respeitem setup e hold.

Assim, uma mudança de C muito próxima da borda não permite escolher com segurança a linha da tabela. O estado lógico muda na borda; fisicamente, a saída Q muda após o atraso clock-para-Q e A/B se estabilizam após os atrasos da lógica de saída.

Estabilidade antes e depois da borda

Diagrama temporal com janelas de setup e hold, uma mudança segura de entrada e outra muito próxima da borda.

Se C ou R variar dentro da janela de setup ou hold, o resultado capturado não é garantido.

Atenção

Limites importantes

Mesmo com entradas válidas, saídas Moore implementadas por lógica combinacional não são automaticamente livres de pulsos espúrios durante mudanças de estado. Além disso, a recuperação prevista de 11 para 00 define o comportamento funcional na próxima borda, mas não elimina risco de metastabilidade por violação de temporização.

Esses limites exigem atenção ao circuito físico; não devem ser ignorados por uma simulação lógica ideal.

Reconheça um resultado não garantido

C muda dentro da janela de setup imediatamente antes de uma borda ativa, com R = 0. O que se pode afirmar?

Passo 9 de 9

Conclua e valide o sequenciador

Consolide as representações do sequenciador e valide os casos de operação, reset e recuperação.

Conferência integrada do projeto

Checklist de consistência

Revise o sequenciador como uma cadeia de representações equivalentes: requisitos → diagrama → tabela funcional → códigos de estado → funções das entradas D e das saídas → rastreamento por bordas.

A validação está correta quando todas contam a mesma história. Para este caso, essa história é:

  • Em REPOUSO, C=1 inicia SINAL_A; C=0 mantém REPOUSO.
  • SINAL_A dura uma borda e sempre segue para SINAL_B.
  • Em SINAL_B, C=1 mantém B ativo; C=0 retorna a REPOUSO.
  • R=1 tem prioridade e carrega REPOUSO na borda ativa.
  • O código 11 se recupera para 00 na próxima borda, mesmo se C=1.

As saídas A e B são de Moore: dependem do estado armazenado atual, não diretamente de C.

Uma especificação, várias representações

Diagrama visual da máquina com três estados, registrador de dois bits, recuperação de 11 e saídas de sinalização.

Use esta visão como conferência: a sequência, os bits, o reset e as saídas precisam permanecer coerentes entre si.

Conferência por cenários

Rastreie cada linha pela borda ativa. A coluna “saídas após a borda” vem do estado que acabou de ser armazenado.

Sequências curtas que cobrem a operação, o reset e a recuperação.
Antes da bordaEntradas na bordaApós a bordaSaídas após a borda
00 (REPOUSO)R=0, C=101 (SINAL_A)A=1, B=0
01 (SINAL_A)R=0, C=110 (SINAL_B)A=0, B=1
10 (SINAL_B)R=0, C=110 (SINAL_B)A=0, B=1
10 (SINAL_B)R=0, C=000 (REPOUSO)A=0, B=0
01 (SINAL_A)R=1, C=100 (REPOUSO)A=0, B=0
11 (não utilizado)R=0, C=100 (REPOUSO)A=0, B=0

Aplique as regras globais

Recuperação explícita

Complete a regra funcional: se o estado atual é 11 e R=0, o próximo estado deve ser {{blank}} em qualquer valor de C.

Prioridade do reset

Complete: se o estado atual é 10, C=1 e R=1 na borda ativa, o estado armazenado após essa borda será {{blank}}.

Encontre e corrija uma divergência

Diagnostique a tabela

Uma tabela proposta contém a linha: estado atual 01, R=0, C=1 → próximo estado 01. Essa linha está correta?

Justifique a correção

Explique a correção com suas palavras: por que a linha 01, R=0, C=1 → 01 é incompatível com a sequência? Mencione o próximo estado correto e o efeito que o erro teria na saída A.

Escreva pelo menos 80 caracteres (0/80).

Síntese e encerramento

Resumo

Competência consolidada

  • Uma máquina de Moore separa estado armazenado, cálculo do próximo estado e saídas decodificadas do estado atual.
  • O diagrama, a tabela, a codificação e as funções devem descrever exatamente as mesmas transições.
  • Para cada estado e condição de entrada deve existir um único destino; permanências também precisam estar explícitas.
  • Neste sequenciador, 00=REPOUSO, 01=SINAL_A, 10=SINAL_B e 11 retorna a 00 na próxima borda válida.
  • O reset síncrono prioritário leva a máquina a 00 na borda ativa, independentemente de C.
  • A validação por bordas usa o estado anterior e as entradas estáveis para prever o novo estado e, então, as saídas.

Tutorial concluído

Parabéns! Você concluiu: Máquinas de estados para sequenciamento digital

Sequenciador validado: você conectou comportamento, memória e verificação por bordas.

Baixe o Aplicativo agora para ter acesso a + de 5000 cursos gratuitos, exercícios, certificado e muito conteúdo sem pagar nada!

  • Cursos online 100% gratuitos do início ao fim

    Milhares de cursos online em vídeo, ebooks e áudiobooks.

  • Mais de 60 mil exercícios gratuitos

    Para testar seus conhecimentos no decorrer dos cursos online

  • Certificado Digital gratuito válido em todo o Brasil

    Gerado diretamente na galeria de fotos do seu celular e enviado ao seu e-mail

Aplicativo Cursa na tela de ebook, na tela de curso em vídeo e na tela de exercícios do curso, mais o certificado de conclusão de curso