CAPÍTULO 11
MÁQUINAS DE ESTADO
Máquinas de estado são circuitos digitais utilizados no controle de operações e processos digitais, podendo ocorrer desde simples contadores à execução de operações de microprocessadores, e são muito usados em circuitos de comunicação. As máquinas de estado podem ter qualquer número de entradas e pelo menos uma saída. As saídas podem ser dependentes ou independentes das entradas, e cada uma apresenta suas aplicações.
11.1 CONCEITOS DE MÁQUINAS DE ESTADOS
Máquina de estado é um circuito digital síncrono, com entradas e saídas, como indicado na Figura 11.1. Como todo circuito digital síncrono, a máquina de estado também apresenta uma linha de sincronismo, ou linha de clock.
Circuito
Sequencial
Síncrono
... X0 X1 Xm-1 ... Z0 Z1 Zn-1Figura 11.1 – Circuito sequencial síncrono.
Circuitos sequenciais síncronos são formados por flip-flops e portas lógicas. Consequentemente, os flip-flops podem ser agrupados e separados do circuito combinacional restante, que corresponde às portas lógicas. Essa separação de flip-flops e circuito combinacional pode apresentar a estrutura da Figura 11.2, chamada de Máquina de Mealy, ou da Figura 11.3, chamado de Máquina de Moore.
No caso da Máquina de Mealy, como pode ser observado pela Figura 11.3, as saídas Zi dependem dos estados dos flip-flops e das entradas Xi. Assim, se houver mudança nas entradas, as saídas poderão mudar de valor, e se houver pulso de clock que cause mudança de estado, as saídas também poderão mudar. Na Máquina de Moore, como pode ser observado pela Figura 11.3, as saídas Zi dependem somente dos estados dos flip-flops.
Circuito
Combinacional
... X0 X1 Xm-1 ... Z0 Z1 Zn-1Flip-flops
... ... ClockFigura 11.2 – Máquina de Mealy.
Circuito Combinacional ... X0 X1 Xm-1 ... Z0 Z1 Zn-1 Flip-flops ... ... Clock Circuito Combinacional de Saída ...
Figura 11.3 – Máquina de Moore.
De forma resumida, tem-se:
Máquina de Mealy: as saídas dependem das estradas e dos estados dos
flip-flops.
Máquina de Moore: as saídas dependem somente dos estados dos flips-flops.
11.2 PROJETO DE MÁQUINAS DE ESTADOS
Máquinas de estado podem ser melhor entendidas através do seu projeto. Assim, a seguir serão apresentados os sete passos de projeto, e a seguir a análise das formas de onda
11.2.1 Passo 1 – Obtenção do Diagrama de Estados
O Diagrama de Estados corresponde à visualização ou descrição gráfica do comportamento desejado do circuito. O diagrama é composto pode estados circulados, por transições e por valores das saídas. No diagrama de estados tem-se:
Estados: representam as condições de repouso do circuito.
Transições: representam as mudanças entre os estados, na ocorrência de um sinal de clock, dependente dos valores das entradas.
Saídas: indicadas nos estados, no caso da Máquina de Moore, e nas transições, no caso de Máquina de Mealy.
Desta forma, os estados representam as condições de repouso, e as transições indicam as transições entre estados na ocorrência do sinal de clock. Em outras palavras, as transições correspondem às condições temporárias do circuito. A Figura 11.4 apresenta as representações genéricas de Máquina de Mealy e Máquina de Moore, com as indicações de saída. Estado Saída Entrada (a) Estado Entrada (b) Saída
Figura 11.4 – Representações de (a) Máquina de Mealy e (b) Máquina de Moore.
A seguir são apresentados alguns exemplos de diagramas de estados.
Exemplo 1: Obtenha o diagrama de estados de uma máquina de estados capaz de detectar a
paridade ímpar de um sinal serial, como indicado na Figura 11.5. Considere Máquina de Moore.
Detector de
Paridade
Clock
X Z
Por ser sinal serial, tem-se que há somente uma linha de entrada. A indicação da paridade requer somente uma linha de saída. Por ser máquina de estado, tem-se o sinal de clock.
Antes de se desenvolver a máquina de estado torna-se necessário entender a proposta. Paridade ímpar corresponde ao número acumulado de 1 recebidos pelo circuito. Se o número total de 1 recebidos for ímpar, a saída é 1, por outro lado se o número total de 1 recebidos for par, a saída é 0.
Como exemplo de operação considere a sequência apresentada na Tabela 11.1. O instante a corresponde ao momento que se energiza o circuito, e como não houve nenhum sinal recebido ainda, a quantidade de 1 acumulado é 0, que é par. No instante b o circuito recebe 0, e assim a quantidade de 1 acumulado é 0, que é par. Já no instante c o circuito recebe 1, e assim a quantidade de 1 acumulado é 1, que é ímpar. Como nos instantes d e e o circuito recebe 0, a quantidade de 1 acumulado continua 1, isto é, ímpar. Por outro lado, no instante f o circuito recebe 1, e assim a quantidade de 1 torna-se 2, que é par.
Desta forma, nos instantes em que a quantidade de 1 acumulado é par, a saída é 0, e quando a quantidade de 1 acumulado é ímpar, a saída é 1.
Tabela 11.1 – Exemplo de operação de um detector de paridade ímpar.
X 0 1 0 0 1 0 1 0 1 1 1 Z 0 0 1 1 1 0 0 1 1 0 1 0
Instante a b c d e f g h i j k l
1 recebidos 0 0 1 1 1 2 2 3 3 4 5 6
Obs Par Par Ímpar Ímpar Ímpar Par Par Ímpar Ímpar Par Ímpar Par
Na condição inicial, ao ser energizado, o circuito se encontra no estado S0, onde a paridade é par, pois nenhum 1 foi recebido, como indicado na Figura 11.6.
S
00
Figura 11.6 – Estado inicial do detector de paridade.
Admita agora que o circuito receba 0. A quantidade de 1 recebidos continua nula, portanto a paridade continua par. Consequentemente a máquina deve permanecer nesse mesmo estado, como indicado na Figura 11.7. Na verdade, se a máquina continuar a receber
S
00
0
Figura 11.7 – Detector de paridade recebendo primeiro 0.
Considere agora que o circuito receba 1. A quantidade de 1 recebidos passa a ser 1, portanto a paridade muda para ímpar. Consequentemente a máquina muda para o estado S1, como indicado na Figura 11.8 (instante c da Tabela 11.1).
S
00
0
S
11
1
Figura 11.8 – Detector de paridade recebendo primeiro 1.
Se agora o circuito receber 0, a quantidade de 1 recebidos continua 1, portanto a paridade mantém-se ímpar. Consequentemente a máquina mantém-se no estado S1, como indicado na Figura 11.9 (instante d e e da Tabela 11.1).
S
00
0
S
11
1
0
Figura 11.9 – Detector de paridade recebendo 0 no estado S1.
Considere agora que o circuito receba 1. A quantidade de 1 recebidos passa a ser 2, portanto a paridade muda para par. Consequentemente a máquina muda para o estado S0, como indicado na Figura 11.10 (instante f da Tabela 11.1).
Com essa última transição, o diagrama de estados fica completo, onde todas as combinações estão contempladas. Estando a no estado S0, se for recebido 0, a máquina mantém-se no estado S0 (instante g da Tabela 11.1), e se for recebido 1, a máquina muda para o estado S0 (instante i da Tabela 11.1).
S
00
0
S
11
1
0
1
Figura 11.10 – Detector de paridade recebendo 1 no estado S1.
Exemplo 2: Obtenha o diagrama de estados de uma máquina de estados capaz de detectar
todas as ocorrências da sequência 101. Considere Máquina de Moore.
Por ser sequência, entende-se que seja um sinal serial e consequentemente há somente uma linha de entrada. A indicação de detecção da sequência requer somente uma linha de saída. Por ser máquina de estado, tem-se o sinal de clock, como indicado pela Figura 11.11.
Detector de
Sequências
Clock X ZFigura 11.11 – Detector de sequências.
Como exemplo de operação considere a sequência apresentada na Tabela 11.2. Observe que a sequência 101 ocorre nos instantes fgh (marcado em vermelho) e nos instantes hij (marcado em violeta). O instante h corresponde ao final da primeira sequência e início da segunda sequência.
Tabela 11.2 – Exemplo de operação do detector de sequência 101.
X 0 1 0 0 1 0 1 0 1 1 1 Z 0 0 0 0 0 0 0 1 0 1 0 0
Instante a b c d e f g h i j k l
Na condição inicial, ao ser energizado, o circuito se encontra no estado S0. O recebimento de 0 indica que não houve início de sequência 101 e portanto a máquina se mantém nesse estado. Por outro lado, o recebimento de 1 indica que houve início da
S
00
0
S
10
1
Figura 11.12 – Condições iniciais do detector de paridade.
Admita agora que, no estado S1, o circuito receba 1. Isso frustra a continuidade da sequência. Entretanto esse 1 pode ser também o início da sequência, e nesse caso o circuito mantém-se no estado S1. Por outro lado, o recebimento de 0 significa que a sequência progrediu, e consequentemente a máquina avança para o estado S10, como indicado na Figura 11.13, e correspondente aos instantes fg da Tabela 11.2.
S
00
0
S
10
0
1
S
100
Figura 11.13 – Detecção parcial da sequência.
Estando a máquina no estado S10 (onde já ocorreu a sequência 10), o recebimento de 0 interrompe a continuidade da sequência desejada. Isso força o circuito a voltar ao estado inicial para esperar o reinício da sequencia. Por outro lado, o recebimento de 1 completa a sequência desejada e a máquina avança para o estado S101, onde a saída torna-se 1. Estas condições estão indicadas na Figura 11.14, e correspondem aos instantes fgh da Tabela 11.2.
S
00
0
S
10
0
1
S
1011
S
100
1
0
Figura 11.14 – Detecção completa da sequência.
O último 1 da sequência 101 pode ser também o primeiro 1 de uma nova sequência 101. Como já apresentado na Tabela 11.2, o instante h corresponde ao final da sequência fgh (marcado em vermelho) é início da sequência hij (marcado em violeta). Desta forma, estando a máquina no estado S101 (onde já ocorreu a sequência 101), o recebimento de 0 dá continuidade à sequência desejada. Assim o circuito volta ao estado S10.
Por outro lado, o recebimento de 1 leva a máquina ao estado S1, pois esse 1 é entendido como o reinício da sequência. Estas condições estão indicadas no diagrama de estados completo apresentado na Figura 11.15.
S
00
0
S
10
1
0
1
S
1011
S
100
0
1
1
0
Exemplo 3: Obtenha o diagrama de estados de uma máquina que detecte se o número de 1
recebidos é maior do que zero e divisível por 3. Considere Máquina de Mealy.
Novamente, essa é uma máquina com uma entrada, uma saída e a linha de clock, tendo portanto o mesmo diagrama de blocos das Figuras 11.6 e 11.11. Como exemplo de operação considere a sequência aleatória apresentada na Tabela 11.3.
Tabela 11.3 – Exemplo de operação de um detector de três 1.
X 0 1 0 0 1 0 1 0 1 1 1 Z 0 0 0 0 0 0 0 1 1 0 0 1
Instante a b c d e f g h i j k l
1 recebidos 0 0 1 1 1 2 2 3 3 4 5 6
A máquina deve monitor a quantidade de 1 recebidos e verificar se essa quantidade é maior que zero e divisível por 3, Na condição inicial, ao ser energizado, o circuito se encontra no estado S0 (nenhum 1 recebido). Nesse estado, ao receber 0 a saída vale 0 e na ocorrência de clock, o circuito retorna ao mesmo estado S0. Por outro lado, ao receber 1 a saída também vale 0, porém na ocorrência de clock o circuito muda para o estado S1. Essas condições estão ilustradas na Figura 11.16.
S0
0 S1
0
1 0
Figura 11.16 – Condições iniciais do detector de três.
O estado S1 corresponde à um 1 acumulado. Nesse estado, ao receber 0 a saída vale 0 e na ocorrência de clock, o circuito retorna ao próprio S1. Entretanto, ao receber 1 a saída também vale 0, porém na ocorrência de clock o circuito muda para o estado S2. Essas condições estão ilustradas na Figura 11.17.
Como o estado S2 corresponde à dois 1 acumulados, ao receber 0 a saída vale 0 e na ocorrência de clock, o circuito retorna ao próprio S2. Por outro lado, ao receber 1 a saída torna-se 1, e na ocorrência de clock o circuito muda para o estado S3. Observe que agora o número de 1 acumulados é três, e portanto divisível por três. Essas condições estão ilustradas na Figura 11.18.
S0 0 S1 S2 0 1 0 0 0 1 0
Figura 11.17 – Condições parciais do detector de três.
S0 0 S1 S3 S2 0 1 0 0 0 1 0 1 1 0 0
Figura 11.18 – Acumulo de três 1 no detector de três.
Como o estado S3 corresponde à três 1 acumulados (consequentemente divisível por três), ao receber 0 a saída vale 1 e na ocorrência de clock, o circuito retorna ao próprio S3. Por outro lado, ao receber 1 a saída torna-se 0, e na ocorrência de clock o circuito muda para o estado S1. Essas condições completam o diagrama de estados, como pode ser visto na Figura 11.19.
Observe que estando estado S3, ao ocorrer o sinal de clock e com 1 na entrada, a quantidade acumulada de 1 é quatro. Isso tem o mesmo efeito de três (divisível por três) mais um, assim, o circuito passa para o estado S1. Esse mesmo raciocínio se repete para cinco 1 acumulados (equivalente a dois 1 acumulados), e para seis 1 acumulados, que equivale a três 1 acumulados, pois ambos são divisíveis por três
S0 0 S1 S3 S2 0 1 0 0 0 1 0 1 1 0 1 0 0 0 0
Figura 11.19 – Diagrama de estados completo do detector de três.
Exemplo 4: Obtenha o diagrama de estados de uma máquina que indique se o número de 0
recebidos é par e maior que zero. Se ocorrer mais do que dois 1 consecutivos, a máquina deve ir para um estado de travamento com saída em 0. Considere Máquina de Mealy.
Essa descrição corresponde à uma máquina com uma entrada, uma saída e a linha de clock, tendo portanto o mesmo diagrama de blocos das Figuras 11.6 e 11.11. Como há duas considerações (paridade de 0 e 1 consecutivos), o diagrama de estados será desenvolvido inicialmente somente para a paridade de 0.
Na condição inicial, ao ser energizado, o circuito se encontra no estado S0 (nenhum 0 recebido). Nesse estado, ao receber 0 a saída vale 0 e na ocorrência de clock, o circuito avança para estado Si0 (quantidade ímpar de 0 e nenhum 1). Agora estando no estado Si0, ao receber 0, a quantidade de 0 torna-se par e a saída assume 1, e na ocorrência de clock o circuito avança para estado Sp0 (quantidade par de 0 e nenhum 1). Dando continuidade, estando no estado Sp0, ao receber 0, a quantidade de 0 torna-se ímpar e a saída assume 0, e na ocorrência de clock o circuito retorna para estado Si0 (quantidade par de 0 e nenhum 1). Essas condições estão ilustradas na Figura 11.20.
S
0S
i00
0
S
p00
1
0
0
A segunda parte do problema é a identificação de dois 1 consecutivos. Para a detecção de dois 1 consecutivos, torna-se necessário monitorar a ocorrência do primeiro 1 (mantendo a identificação das paridades anteriores), e do segundo 1 imediatamente após o primeiro 1.
Estando no estado S0 (nenhum 0 recebido), ao receber 1 a saída vale 0 e na ocorrência de clock, o circuito avança para estado S1 (nenhum 0 e um 1). Agora estando no estado S1, ao receber 0, a quantidade de 0 torna-se ímpar e a saída permanece em 0, e na ocorrência de clock o circuito avança para estado Si0 (quantidade par de 0 e nenhum 1). A passagem foi possível, pois ao receber 0, houve a interrupção da possibilidade de dois 1 consecutivos. Essas condições estão ilustradas na Figura 11.21.
S0 Si0 0 0 Sp0 0 1 S1 1 0 0 0 0 0
Figura 11.21 – Ocorrência inicial de 1 no detector de 0.
Essa mesma abordagem pode ser feita para os estados Si0 e Sp0. Estando no estado Si0 (quantidade ímpar de 0 e nenhum 1), ao receber 1 a saída vale 0 e na ocorrência de clock, o circuito avança para estado Si1 (quantidade ímpar de 0 e um 1). Partindo do estado Si1, ao receber 0 a saída vale 1 e na ocorrência de clock, o circuito avança para estado Sp0 (quantidade par de 0 e um 1). Isso é possível, pois ao receber 0, há a interrupção da possibilidade de dois 1 consecutivos.
Agora estando no estado Sp0 (quantidade par de 0 e nenhum 1), ao receber 1 a saída vale 1 e na ocorrência de clock, o circuito passa para estado Sp1 (quantidade par de 0 e um 1). Partindo do estado Sp1, ao receber 0 a saída vale 0 e na ocorrência de clock, o circuito avança para estado Si0 (quantidade par de 0 e um 1). Novamente isso só é possível, pois ao receber 0, há a interrupção da possibilidade de dois 1 consecutivos. Essas condições estão ilustradas na Figura 11.22.
S
0S
i00
0
S
p00
1
S
1S
i1S
p11
0
0
0
1
0
0
0
0
1
0
0
1
1
Figura 11.22 – Condições intermediárias do detector de 0.
A máquina de estado já recebeu 1 para atingir os estados S1, Si1 e Sp1. Assim, estando em um desses estados, se o circuito receber outro 1, haverá dois 1 consecutivos e portanto, n ocorrência de clock, a máquina passa para o estado de travamento St. Uma vez no estado St, a máquina só sai dessa condição mediante reset. A Figura 11.23 apresenta o diagrama de estados completo. S0 Si0 0 0 Sp0 0 1 S1 Si1 Sp1 St 1 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 1 1 1 1
Exemplo 5: Obtenha o diagrama de estados de uma máquina de estados capaz de detectar
todas as ocorrências da sequência 0010. Quando ocorrer mais do que dois 0 consecutivos, a máquina deve ser reiniciada após o próximo 1. Considere Máquina de Moore.
Essa descrição corresponde à uma máquina com uma entrada, uma saída e a linha de clock, tendo portanto o mesmo diagrama de blocos das Figuras 11.6 e 11.11. Como exemplo de operação considere a sequência apresentada na Tabela 11.4. Observe que a sequência 0010 ocorre nos instantes defg (marcado em vermelho) e nos instantes ghij (marcado em violeta). O instante g corresponde ao final da primeira sequência e início da segunda.
Tabela 11.4 – Exemplo de operação do detector de sequência 0010.
X 0 1 0 0 1 0 0 1 0 0 0 Z 0 0 0 0 0 0 1 0 0 1 0 0
Instante a b c d e f g h i j k l
A Figura 11.12 apresenta o trecho responsável pela detecção de 0010.
Si 0 S0 0 0 0 0 S00 0 S001 0 1 S0010 1 Figura 11.24 – Detecção de 0010.
O diagrama deve ser completado, considerando as demais possibilidades de entrada. Assim, estando no estado inicial Si e ocorrer 1, a máquina continua em Si. Estando no estado S0 e ocorrer 1, a máquina deve retornar para Si pois a sequencia desejada foi frustrada.
O estado S0010 indica que a sequência 0010 já ocorreu e, portanto a saída vale 1. O último 0 dessa sequência é o primeiro 0 de uma nova sequência 0010. Desta forma, estando a máquina no estado S0010 e ocorrendo 0, o circuito passa para o estado S00. Assim, basta ocorrer 10 e a nova sequência se completa. Essas condições foram incorporadas ao diagrama, como mostrado na Figura 11.25.
Si 0 1 S0 0 0 0 0 0 S00 0 S001 0 1 S0010 1 1
Figura 11.25 – Detecção de múltiplos 0010.
A condição restante é a detecção de mais de dois 0 consecutivos. Observe no diagrama da Figura 11.25, que o estado S00 corresponde ao recebimento de dois 0 consecutivos. Assim, na ocorrência outro 0, o circuito deve passar para o estado de travamento S000 e lá permanecer até a ocorrência de 1, quando a máquina volta para o estado inicial estado Si. A Figura 11.26 mostra o diagrama de estado completo.
Si 0 1 S0 0 0 0 S000 0 0 0 1 0 S00 0 S001 0 1 S0010 1 1 0 1 1
Figura 11.26 – Diagrama de estados completo do detector de 0010.
Exemplo 6: Obtenha o diagrama de estados de uma máquina capaz de gerar a sequência
0010 110 110 110...
Como não há menção de entrada, significa que esse circuito não depende de entrada para operar. Na verdade ele equivale à um contador, pois nos contadores não há linhas de entrada, mas há uma contagem a cada pulso de clock. A Figura 11.27 apresenta o diagrama de estados desse circuito.
S0 0 S01 1 S010 0 S0101 1 S1 1 S11 1 S110 0
Figura 11.27 – Diagrama de estados completo do gerador de sequência.
Exemplo 7: Obtenha o diagrama de estados de uma máquina de estados com duas entradas
(A e B) e uma saída, como indicado na Figura 11.28, que apresente a seguinte operação:
Sequência AB = 01, 11 saída torna-se 0,
Sequência AB = 10, 11 saída torna-se 1,
Sequência AB = 10, 01 saída troca de estado.
Máquina de
Estados de
duas entradas
Clock Z A BFigura 11.28 – Máquina de estados de duas entradas.
A Figura 11.29 apresenta o diagrama de estados completo dessa máquina de estados. Apesar de aparentemente grande, na verdade a operação é bem simples. Deve-se observar que as condições anteriores são dadas em pares.
Diretivas para Montagem de Diagrama de Estados:
A montagem do diagrama de estados deve ser iniciada pela sequência ou pelo problema principal.
As variantes da sequência ou problema principal é feita em seguida.
Se a máquina de estados tem uma entrada, essa entrada obviamente pode assumir o valor 0 ou 1, consequentemente há duas transições (setas) saindo de cada estado dessa máquina. Se a máquina tem duas entradas, deve haver quatro transições saindo de cada estado.
Deve-se tentar vislumbrar todas as possibilidades de sequencia e tentar validá-las no diagrama de estados. Quanto mais abrangente, melhor.
Si 0 01 S0 0 10 S00 0 Si 0 00,11 S0 0 11 S00 0 10 01 00,11 10 00,11 10 00,11 01 00 01 01 10 01 10 11 00
Figura 11.29 – Diagrama de estados completo do gerador de sequência.
11.2.2 Passo 2 – Obtenção da Tabela de Estados
A Tabela de estados corresponde à tradução do Diagrama de Estados na forma de tabela. A conversão é rápida e de fácil obtenção. Há uma coluna para o estado atual e colunas para estados seguintes e saídas, com suas dependências dos valores das entradas.
Exemplo 1: Obtenha a tabela de estados do diagrama de estados da Máquina de Moore da
Figura 11.26, que por conveniência é reapresentado na Figura 11.30.
Si 0 1 S0 0 0 0 S000 0 0 0 1 0 S00 0 S001 0 1 S0010 1 1 0 1 1
A Tabela 11.5 apresenta a tabela de estados do diagrama de estados da Figura 11.30. Observando a Figura 11.30, estando no estado Si, cuja saída vale 0, ocorrendo um sinal de clock, a máquina vai para o estado S0 se X=0 e retorna para Si se X=1. Exatamente essa mesma informação está presenta na Tabela 11.5. Isso é feito para todos os estados do diagrama.
Tabela 11.5 – Tabela de estados do diagrama de estados da Figura 11.30.
Estado Atual Estado Seguinte Saída X=0 X=1 Si S0 Si 0 S0 S00 Si 0 S00 S000 S001 0 S000 S000 Si 0 S001 S0010 Si 1 S0010 S00 Si 0
Exemplo 2: Obtenha a tabela de estados do diagrama de estados da Máquina de Mealy da
Figura 11.23, que por conveniência é reapresentado na Figura 11.31.
S0 Si0 0 0 Sp0 0 1 S1 Si1 Sp1 St 1 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 1 1 1 1
Tabela 11.6 – Tabela de estados do diagrama de estados da Figura 11.31.
Estado Atual Estado Seguinte Saída X=0 X=1 X=0 X=1 S0 Si0 S1 0 0 Si0 Sp0 Si1 0 1 Sp0 Si0 Sp1 0 1 S1 Si0 St 0 0 Si1 Sp0 St 0 0 Sp1 Si0 St 0 1 St St St 0 0
Observando a Figura 11.31, estando no estado Si0, ocorrendo X=0 a saída vale 1 e na ocorrência do sinal de clock, a máquina vai para o estado Sp0. Por outro lado, ocorrendo X=1 a saída vale 0 e na ocorrência do sinal de clock, a máquina vai para o estado Si1.. Essa mesma informação está presenta na segunda linha da Tabela 11.5. Essa mesma análise é válida para os demais estados do diagrama.
11.2.3 Passo 3 – Eliminação de Estados Equivalentes
Durante a elaboração do Diagrama de Estados é muito comum aparecerem estados à mais do que o necessário. Assim, para implementar o circuito de forma otimizada, torna-se necessário eliminar esses estados equivalentes. Dois estados são equivalentes, ou redundantes, se possuem as mesmas saídas e os mesmos estados seguintes, ou seus equivalentes.
Esses estados podem ser eliminados através da metodologia apresentada a seguir, que utiliza a tabela de estados com equivalência apresentado na Tabela 11.7.
Tabela 11.7 – Tabela de estados com equivalências.
Estado Atual Estado Seguinte Saída X=0 X=1 S0 S1 S0 0 S1 S2 S0 0 S2 S5 S1 1 S3 S6 S1 1 S4 S0 S4 0 S5 S2 S4 0 S6 S3 S4 0
A seguir é mantada uma tabela de possíveis equivalências, como apresentado na Tabela 11.8, em que são colocadas as condições para a ocorrência de uma equivalência.
Tabela 11.8 – Tabela condicional de possíveis equivalências, em branco. S1 K S2 S3 S4 S5 S6 S0 S1 S2 S3 S4 S5
A célula K da Tabela 11.8 corresponde ao cruzamento da coluna S0 e da linha S1. Nessa célula são colocadas as condições para que exista equivalência entre os estados atuais S0 e S1 da Tabela 11.7.
Observando a Tabela 11.7, verifica-se que para os estados S0 e S1 serem equivalentes, as suas saídas devem ser iguais. Isto ocorre! Adicionalmente os estados
seguintes de S0 e S1 devem ser equivalentes. Assim, na coluna X=0, S1 e S2 deveriam ser equivalentes, e portanto essa condição é colocada na tabela condicional de equivalências, como vista na Tabela 11.9. Por outro lado, na coluna X=1, S0 e S0 já são iguais, e desta forma não precisa ser lançado na Tabela 11.9.
Tabela 11.9 – Tabela com as possíveis equivalências entre S0 e S1.
S1 S1≡S2 S2 S3 S4 S5 S6 S0 S1 S2 S3 S4 S5
Tabela 11.10 – Tabela com todas as possíveis equivalências. S1 S1≡S2 S2 S3 S5≡S6 S4 S0≡S1 S0≡S2 S0≡S4 S5 S1≡S2 S0≡S4 S0≡S4 S0≡S2 S6 S1≡S3 S0≡S5 S0≡S4 S2≡S3 S0≡S3 S2≡S3 S0 S1 S2 S3 S4 S5
Da mesma forma os estados S0 e S3 também não podem jamais ser equivalentes pois têm saídas diferentes. Os estados S0 e S4 têm saídas iguais, e para serem equivalentes os seus estados seguintes S0 e S1 deveriam ser iguais, como indicado na Tabela 11.10.
Continuando, para os estados S0 e S5 serem equivalentes, os seus estados seguintes S1 e S2 deveriam ser iguais, assim como seguintes S0 e S4, como ilustrado na Tabela 11.10. Continuando esse procedimento, completa-se a tabela de possíveis equivalências.
Uma vez que a tabela de possíveis equivalências esteja completa, ela deve ser avaliada para eliminar as não-equivalências. Assim, veja pela Tabela 11.10 que S0 e S1 (primeira coluna e primeira linha) serão equivalentes se S1 e S2 forem equivalentes. Entretanto, pode-se observar pela própria tabela que S1 e S2 não são equivalentes (há uma marca vermelha), portanto se S1 e S2 não serão equivalentes. Isso está sinalizado na Tabela 11.11 por uma marca na cor violeta.
Tabela 11.11 – Tabela de equivalências.
S1 S1≡S2 S2 S3 S5≡S6 S4 S0≡S1 S0≡S2 S0≡S4 S5 S1≡S2 S0≡S4 S0≡S4 S0≡S2 S6 S1≡S3 S0≡S5 S0≡S4 S2≡S3 S0≡S3 S2≡S3 S0 S1 S2 S3 S4 S5
Dando continuidade, para que S0 e S4 (primeira coluna e quarta linha) sejam equivalentes, então S0 e S1 deveriam ser. Como S0 e S1 não são equivalentes, então S0 e S4 não serão! Isso está sinalizado na Tabela 11.11 por uma marca na cor violeta. Seguindo o mesmo procedimento, pode-se verificar todas não equivalências da tabela. Após a análise em todas as células, tem-se a Tabela 11.11.
Observe que S2 e S3 seriam equivalentes se S5 e S6 fossem equivalentes. Da mesma forma, S5 e S6 seriam equivalentes se S2 e S3 fossem equivalentes. Como não há restrição alguma à esses dois casos, eles são equivalentes.
Como S2 e S3 são equivalentes, um deles deve ser eliminado na Tabela 11.7. Admitindo que se deseje eliminar o S3, as inserções de S3 na tabela devem ser substituídas por S2. Da mesma forma, admitindo que se deseje eliminar o S5, as inserções de S5 na tabela devem ser substituídas por S6. A nova tabela de estados, com as equivalências eliminadas está indicada na Tabela 11.8.
Tabela 11.8 – Tabela de estados com equivalências eliminadas.
Estado Atual Estado Seguinte Saída X=0 X=1 S0 S1 S0 0 S1 S2 S0 0 S2 S5 S6 S1 1 S3 S6 S1 1 S4 S0 S4 0 S5 S2 S4 0 S6 S3 S2 S4 0
Como grande objeto de aprendizado, deve-se retornar ao diagrama de estados e eliminar esses estados equivalentes. A seguir deve-se analisar o diagrama de estados para localizar os pontos e motivos dos erros originais.
11.2.4 Passo 4 – Designação de Estados Auxiliares
Até esse momento os estados são dados por seus nomes, entretanto circuitos digitais lidam com valores binários. Assim, os nomes dos estados devem ser traduzidos por valores digitais. Dois flip-flops permitem alocar quatro estados (00, 01, 10 e 11), três flip-flops permitem alocar oito estados, e assim sucessivamente.
A tradução do nome do estado em um valor digital pode ser feito de forma aleatória, e o circuito funcionará corretamente. Entretanto existe uma metodologia de alocação que
Metodologia de Designação de Estados: A seguir são apresentadas as diretivas, que devem
ser atendidas preferencialmente na ordem de prioridades apresentada. Muitas vezes a maioria das diretivas não será atendida, e portanto não é motivo de grandes preocupações.
i. Estados, cujos estados seguintes são iguais, devem ficar próximos. ii. Estados seguintes à um mesmo estado devem ficar próximos. iii. Estados com mesmas saídas devem ficar próximos.
Considere como exemplo a tabela de estados apresentada na Tabela 11.9.
Tabela 11.9 – Tabela de estados para obter designação de estados auxiliares.
Estado Atual Estado Seguinte Saída X=0 X=1 X=0 X=1 S0 S1 S2 0 0 S1 S3 S2 0 1 S2 S1 S4 1 0 S3 S5 S2 1 1 S4 S1 S6 0 1 S5 S5 S2 0 1 S6 S1 S6 0 0
Pela primeira diretiva, pode-se observar que os estados S0, S2, S4 e S6 apresentam o estado seguinte S1 para X=0, portanto esses estados devem ficar próximos. Observe também que os estados S3 e S5 apresentam o estado seguinte S5 e portanto devem ficar próximos. Continuando, os estados S0, S1, S3 e S5 apresentam o estado seguinte S2 para X=1, portanto esses estados devem ficar próximos. Finalmente os estados S4 e S6 apresentam o estado seguinte S6 e consequentemente devem ficar próximos.
Pela segunda diretiva, os estados S1 e S2 são estados seguintes do S0 e devem ficar próximos (primeira linha da Tabela 11.9). Na segunda linha da tabela, observe que os estados S2 e S3 são estados seguintes do S1 e devem ficar próximos. Dando continuidade, faz-se essa mesma análise para as demais linhas. Observe entretanto que estados S2 e S5 são estados seguintes dos estados S3 e S5, e desse modo têm um peso maior. Isso também ocorre para estados S1 e S6 que são estados seguintes dos estados S4 e S6.
Pela terceira diretiva, os estados S0 e S6 devem ficar próximos pois apresentam as mesmas saídas. Da mesma forma, os estados S1, S4 e S6 também devem ficar próximos.
A Tabela 11.10 apresenta essas condições de proximidade. Ao se implementar as proximidades, dificilmente as diretivas i e ii serão completamente atendidas, e quase nunca a terceira diretiva será atendida.
Tabela 11.10 – Tabela de proximidades. Proximidades Diretiva i S0 – S2 – S4 – S6 S3 – S5 S0 – S1 – S3 – S5 S4 – S6 Diretiva ii S1 – S2 S2 – S3 S1 – S4 (S2 – S5)*2 (S1 – S6)*2 Diretiva iii S0 – S6 S1 – S4 – S6
Como há sete estados, são necessárias três variáveis auxiliares. Preferencialmente o estado S0 deve posicionado em Y2Y1Y0 = 000, pois durante a inicialização ou ao ocorrer reset, o circuito irá naturalmente para a condição Y2Y1Y0 = 000. Os demais estados são colocados de forma a atender o maior número de proximidades possível. Por proximidade entende-se aqui somente uma variável de distância, isto é, são próximos se forem vizinhos na horizontal ou na vertical. A seguir é apresentada uma possibilidade.
Y2 Y1Y0 0 1 00 S0 S3 01 S6 S1 11 S4 - 10 S2 S5
No primeiro mapa, na primeira coluna tem-se que S0 – S2 – S4 – S6 estão próximos entre si, pois a sequência não importa. Nessa mesma coluna S4 – S6 estão próximos. Nesse primeiro mapa, S0 – S3, S3 – S5, e S3 – S1 estão próximos entre si, satisfazendo portanto a condição S0 – S1 – S3 – S5, mesmo que aparentemente não estejam próximos. Essas proximidades correspondem à primeira diretiva, que foi integralmente atendida.
Com relação à segunda diretiva, observe que S2 – S5 e S1 – S6 são atendidas prioritariamente pois têm peso duplo. Entretanto, S1 – S2, S2 – S3 e S1 – S4 não são atendidas.
Todas as proximidades da terceira diretiva foram atendidas. A Tabela 11.11 ilustra as condições atendidas, para o primeiro mapa de proximidades.
Tabela 11.11 – Tabela de proximidades. Proximidades Diretiva i S0 – S2 – S4 – S6 S3 – S5 S0 – S1 – S3 – S5 S4 – S6 Diretiva ii S1 – S2 S2 – S3 S1 – S4 (S2 – S5)*2 (S1 – S6)*2 Diretiva iii S0 – S6 S1 – S4 – S6 A seguir é apresentada outra possibilidade de alocação.
Y2 Y1Y0 0 1 00 S0 S4 01 S1 S6 11 S3 - 10 S5 S2
11.2.5 Passo 5 – Mapas de Transição
O passo anterior serviu para obter mapa de estados auxiliares que converteu nomes de estados em seus valores binários. De posse do mapa de estados auxiliares e da tabela de estados, pode-se então determinar o estado seguinte da máquina em função das variáveis de entrada. Em outras palavras, sabendo a condição atual do circuito (valor binário do estado), pode-se determinar os estados seguintes (valores binários) em função das entradas.
Como exemplo serão usados a tabela de estados da Tabela 11.9, reapresentada como Tabela 11.12 e tabela de designação de estados, também reapresentada a seguir.
Como há sete estados, foram necessárias três variáveis auxiliares Y2, Y1 e Y0. Além dessas variáveis, há também a variável de entrada X, e consequentemente o mapa de transição conterá quatro variáveis.
Tabela 11.12 – Tabela de estados.
Estado Atual Estado Seguinte Saída X=0 X=1 X=0 X=1 S0 S1 S2 0 0 S1 S3 S2 0 1 S2 S1 S4 1 0 S3 S5 S2 1 1 S4 S1 S6 0 1 S5 S5 S2 0 1 S6 S1 S6 0 0 Y2 Y1Y0 0 1 00 S0 S3 01 S6 S1 11 S4 - 10 S2 S5 Y2X Y1Y0 00 01 11 10 00 01 11 10
Observe que a célula S0, na designação de estados, ocupa a posição Y2Y1Y0 = 000 (marcado em vermelho). Essa mesma posição Y2Y1Y0 = 000 corresponde à uma célula dupla no mapa de transição (marcado em laranja). Essa célula dupla se divide em X=0 e X=1. Desta forma, nessa célula dupla colocam-se os valores seguintes de S0, que estão obtidos da tabela de estados (marcado em violeta). Os estados seguintes de S0 são: S1 para X=0 e S2 para X=1. Desta forma, a célula dupla torna-se:
Y2X Y1Y0 00 01 11 10 00 S1 S2 01 11 10
Agora observe a célula S6, que na designação de estados a seguir, ocupa a posição Y2Y1Y0 = 001 (marcado em azul). Essa mesma posição Y2Y1Y0 = 001 corresponde à célula dupla no mapa de transição (marcado em verde). Pela tabela de estados, os estados seguintes de S6 (marcado em rosa) são: S1 para X=0 e S6 para X=1. Desta forma, a célula dupla
torna-Y2 Y1Y0 0 1 00 S0 S3 01 S6 S1 11 S4 - 10 S2 S5 Y2X Y1Y0 00 01 11 10 00 S1 S2 01 S1 S6 11 10
Continuando, a célula S4 ocupa a posição Y2Y1Y0 = 011 na designação de estados e essa mesma posição Y2Y1Y0 = 011 corresponde à célula dupla no mapa de transição. Pela tabela de estados, os estados seguintes de S4 são: S1 para X=0 e S6 para X=1. Desta forma, a célula dupla torna-se:
Y2X Y1Y0 00 01 11 10 00 S1 S2 01 S1 S6 11 S1 S6 10
Dando continuidade nesse processo, pode-se completar o mapa de transição, como indicado a seguir. Deve-se, entretanto ficar atento com as posições de X=0 e X=1 para o lado Y2=1. Y2X Y1Y0 00 01 11 10 00 S1 S2 S2 S5 01 S1 S6 S2 S3 11 S1 S6 - - 10 S1 S4 S2 S5
Mapa de transição, como o próprio nome indica, apresenta as transições da máquina de estado, ou em outras palavras, o mapa de transição indica o estado seguinte do circuito. Entretanto esse mapa de estado seguinte apresenta os nomes dos estados seguintes. Esses nomes devem agora ser substituídos pelos valores binários obtidos do mapa de designação de estados.
Por conveniência são reapresentados abaixo mapa de designação de estados e o mapa de transição. Todas as posições S1 do mapa de transição (marcado em azul) devem
receber o valor de S1 obtido do mapa de designação de estados (também marcado em azul),
que é dado por Y2Y1Y0 = 101. Desta forma, os mapas de estado seguinte devem receber Y2+Y1+Y0+ = 101 para todas as posições S1 do mapa de transição (também marcado em azul).
Y2 Y2X Y1Y0 0 1 Y1Y0 00 01 11 10 00 S0 S3 00 S1 S2 S2 S5 01 S6 S1 01 S1 S6 S2 S3 11 S4 - 11 S1 S6 - - 10 S2 S5 10 S1 S4 S2 S5 Y2X Y2X Y1Y0 00 01 11 10 Y1Y0 00 01 11 10 00 1 0 0 00 0 1 1 01 1 0 01 0 1 11 1 - 11 0 - 10 1 0 10 0 1 Y2+ Y1+ Y2X Y1Y0 00 01 11 10 00 1 0 0 01 1 0 11 1 - 10 1 0 Y0+
Da mesma forma, todas as posições S2 do mapa de transição (marcado em laranja)
devem receber o valor de S2 obtido do mapa de designação de estados (também marcado em
laranja), que é dado por Y2Y1Y0 = 010. Desta forma, os mapas de estado seguinte devem receber Y2+Y1+Y0+ = 010 para todas as posições S2 do mapa de transição (também marcado
em laranja).
Continuando, a posição S3 do mapa de transição (marcado em rosa) deve receber o
valor de S3 obtido do mapa de designação de estados (também marcado em rosa), que é
dado por Y2Y1Y0 = 100. Consequentemente, os mapas de estado seguinte devem receber Y2+Y1+Y0+ = 100 para a posição S3 do mapa de transição (também marcado em rosa).
Dando continuidade nesse procedimento, concluem-se os mapas de transição, como apresentado a seguir.
Y2X Y2X Y1Y0 00 01 11 10 Y1Y0 00 01 11 10 00 1 0 0 1 00 0 1 1 1 01 1 0 0 1 01 0 0 1 0 11 1 0 - - 11 0 0 - - 10 1 0 0 1 10 0 1 1 1 Y2+ Y1+ Y2X Y1Y0 00 01 11 10 00 1 0 0 0 01 1 1 0 0 11 1 1 - - 10 1 1 0 0 Y0+
11.2.6 Passo 6 – Mapas de Excitação dos Flip-flops
Os mapas de excitação dos flip-flops são obtidos da mesma forma que no caso de contadores, e consequentemente será aqui reapresentado de forma resumida. Os mapas de excitação dos flip-flops são obtidos à partir dos mapas de estado seguinte e das tabelas de transição dos flip-flops, reapresentadas na Tabela 11.13.
Tabela 11.13– Tabela de transição de flip-flops.
Atual Segui n te Q Q+ S R J K D T 0 0 0 - 0 - 0 0 0 1 1 0 1 - 1 1 1 0 0 1 - 1 0 1 1 1 - 0 - 0 1 0
A máquina de estado será implementada com flip-flops JK. Considere inicialmente o mapa de estado seguinte Y2+. Tendo em vista que Y2 é a variável de interesse, o mapa deve ser dividido em Y2+=0 e Y2+=1, como indicado a seguir. Lembre-se que o mapa foi preenchido com o estado seguinte da máquina de estados. Desta forma, tem-se e estado atual do lado de fora do mapa, e o estado seguinte dentro do mapa.
Y2=0 Y2=1 Y2X Y1Y0 00 01 11 10 00 1 0 0 1 01 1 0 0 1 11 1 0 - - 10 1 0 0 1 Y2+
Assim, para toda a coluna Y2X = 00 tem-se Y2=0 (estado atual fora do mapa) e Y2+ =1 (estado seguinte dentro do mapa). Com base na Tabela 11.13, para Q=0 (estado atual) e Q+=1 (estado seguinte), tem-se J2=1 e K2=-, como indicado a seguir.
Y2X Y2X Y1Y0 00 01 11 10 Y1Y0 00 01 11 10 00 1 00 - 01 1 01 - 11 1 11 - 10 1 10 - J2 K2
Para a coluna Y2X = 01 tem-se Y2=0 (estado atual) e Y2+ =0 (estado seguinte). Com base na Tabela 11.13, para Q=0 (estado atual) e Q+=0 (estado seguinte), tem-se J2=0 e K2=-, como indicado a seguir.
Y2X Y2X Y1Y0 00 01 11 10 Y1Y0 00 01 11 10 00 1 0 00 - - 01 1 0 01 - - 11 1 0 11 - - 10 1 0 10 - - J2 K2
Para a coluna Y2X = 11 tem-se Y2=1 (estado atual) e Y2+ =0 (estado seguinte). Com base na Tabela 11.13, para Q=1 (estado atual) e Q+=0 (estado seguinte), tem-se J2=- e K2=1, como indicado a seguir.
Y2X Y2X Y1Y0 00 01 11 10 Y1Y0 00 01 11 10 00 1 0 - 00 - - 1 01 1 0 - 01 - - 1 11 1 0 - 11 - - - 10 1 0 - 10 - - 1 J2 K2
Finalmente, para a coluna Y2X = 10 tem-se Y2=1 (estado atual) e Y2+ =1 (estado seguinte). Com base na Tabela 11.13, para Q=1 (estado atual) e Q+=1 (estado seguinte), tem-se J2=- e K2=0, como indicado a seguir, juntamente com as leituras de J2 e K2.
Y2X Y2X Y1Y0 00 01 11 10 Y1Y0 00 01 11 10 00 1 0 - - 00 - - 1 0 01 1 0 - - 01 - - 1 0 11 1 0 - - 11 - - - - 10 1 0 - - 10 - - 1 0 X J2 K2 X
Essa mesma leitura poderia ter sido feita diretamente no mapa de estado seguinte Y2+ utilizando a leitura simplificada. Na leitura simplificada, os mapas de excitação devem ser lidos da seguinte forma:
No lado 0 do mapa, lê-se os 1 para a expressão de J.
No lado 1 do mapa, lê-se os 0 para a expressão de K.
A variável sendo lida não aparece na leitura (deve ser eliminada).
A seguir são reapresentados os mapas Y1+ e Y0+, porém já com as indicações das leituras simplificadas. No lado 0 do mapa Y1+, leem-se os 1, e tem-se
0 1 2 0 1 1 2 1 YYX YY X Y YY
J , mas como Y1 é eliminado, resulta em J1 Y2XY0XY2Y0.
No lado 1 do mapa Y1+, leem-se os 0. Assim, tem-se K1 Y1Y0Y2Y1X , mas como Y1 é eliminado, tem-seK1Y0Y2X.
Da mesma forma, no lado 0 do mapa Y0+, leem-se os 1, e tem-se
0 1 2 0 2 0 Y Y X YYY
J , mas como Y1 é eliminado, resulta em J0 Y2X Y2Y1. Finalmente, no
lado 1 do mapa Y0+, leem-se os 0. Assim, tem-se K0 Y2Y0, mas como Y1 é eliminado, resulta emK0 Y2.
Y2X Y2X Y1Y0 00 01 11 10 Y1Y0 00 01 11 10 Y1=0 00 0 1 1 1 Y0=0 00 1 0 0 0 01 0 0 1 0 Y0=1 01 1 1 0 0 Y1=1 11 0 0 - - 11 1 1 - - 10 0 1 1 1 Y0=0 10 1 1 0 0 Y1+ Y0+
No caso de se utilizarem flip-flops D, a leitura simplificada é feita diretamente nos mapas de transição.
11.2.7 Passo 7 – Mapas de Saída
O passo anterior serviu para estabelecer o circuito combinacional responsável pela realimentação dos flip-flops, que corresponde à parte do Circuito Combinacional da Máquina de Mealy apresentada na Figura 11.2, ou que corresponde integralmente ao Circuito Combinacional da Máquina de Moore apresentada na Figura 11.3. Essa circuitaria serve para fazer a máquina se “deslocar” entre seus estados, em função da excitação.
Agora será apresentado o circuito responsável por apresentar os valores das saídas. Essa circuitaria de saída corresponde ao restante do Circuito Combinacional da Máquina de Mealy apresentada na Figura 11.2, ou que corresponde integralmente ao Circuito Combinacional de Saída da Máquina de Moore apresentada na Figura 11.3.
Essa etapa é feita da mesma forma que a obtenção do mapa de transição apresentado no passo 5, sendo que a única diferença é a utilização da saída ao invés do estado seguinte. Como exemplo, considere a tabela de estados da Tabela 11.12, reapresentada como Tabela 11.14, e o respectivo mapa de designação, apresentado a seguir.
Pode-se observar que é uma Máquina de Mealy e consequentemente a saída depende do valor da entrada X. Portanto o mapa de transição deve incorporar a variável X.
Observe que a célula S0, na designação de estados, ocupa a posição Y2Y1Y0 = 000 (marcado em vermelho). Essa mesma posição Y2Y1Y0 = 000 corresponde à uma célula dupla no mapa de transição (marcado em laranja). Essa célula dupla se divide em X=0 e X=1. Desta forma, nessa célula dupla colocam-se os valores de saída para S0, que estão obtidos da tabela de estados (marcado em violeta). As saídas para S0 são: 0 para X=0 e 0 para X=1 (marcado em laranja).
Tabela 11.14 – Tabela de estados.
Estado Atual Estado Seguinte Saída X=0 X=1 X=0 X=1 S0 S1 S2 0 0 S1 S3 S2 0 1 S2 S1 S4 1 0 S3 S5 S2 1 1 S4 S1 S6 0 1 S5 S5 S2 0 1 S6 S1 S6 0 0 Y2 Y1Y0 0 1 00 S0 S3 01 S6 S1 11 S4 - 10 S2 S5 Y2X Y1Y0 00 01 11 10 00 0 0 01 11 0 1 10 1 0
Agora observe a célula S2, que na designação de estados a seguir, ocupa a posição Y2Y1Y0 = 010 (marcado em azul). Essa mesma posição Y2Y1Y0 = 010 corresponde à célula dupla no mapa de transição (marcado em verde). Pela tabela de estados, as saídas para S6 (marcado em marrom) são: 1 para X=0 e 0 para X=1 (marcado em verde).
Continuando, a célula S4 ocupa a posição Y2Y1Y0 = 011 (marcado em rosa) na designação de estados e essa mesma posição Y2Y1Y0 = 011 corresponde à célula dupla no mapa de transição (também marcado em rosa). Pela tabela de estados, as saídas para S4 são: 0 para X=0 e 1 para X=1 (marcado em rosa).
Dando continuidade nesse processo, pode-se completar o mapa de saída, como indicado a seguir, cuja leitura é Z Y2X Y2Y1Y0 XY1Y0Y2Y1Y0X. Deve-se, entretanto ficar atento com as posições de X=0 e X=1 para o lado Y2=1.
Y2X Y1Y0 00 01 11 10 00 0 0 1 1 01 0 0 1 0 11 0 1 - - 10 1 0 1 0
No caso da Máquina de Moore, o procedimento torna-se mais simples. Como a saída depende exclusivamente do estado, não há a presença das entradas no mapa de saída. Desta forma, o mapa de saída tem o mesmo tamanho da designação de estados.
Como exemplo, considere a tabela de estados apresentado na Tabela 11.15 e a sua respectiva designação de estados.
Tabela 11.15 – Tabela de estados de Máquina de Moore.
Estado Atual Estado Seguinte Saída X=0 X=1 S0 S1 S2 0 S1 S3 S2 0 S2 S1 S4 0 S3 S5 S2 1 S4 S1 S6 1 S5 S5 S2 0 S6 S1 S6 0 Y2 Y1Y0 0 1 00 S0 S4 01 S1 S6 11 S3 - 10 S5 S2
Assim, a posição Y2Y1Y0 = 000 ocupada pela célula S0 na designação de estados, deve receber o valor da saída de S0, que vale 0, no mapa de saída. Essa condição está indicada na cor marrom. Continuando a posição ocupada pela célula S1, deve receber o valor da saída de S1, no mapa de saída, que também vale 1, como indicado em rosa. Esses dois valores estão indicados a seguir.
Y2 Y1Y0 0 1 00 0 01 0 11 10
Dando continuidade nesse processo, pode-se completar o mapa de saída, como indicado a seguir, cuja leitura é Z Y2Y1Y0Y1Y0.
Y2 Y1Y0 0 1 00 0 1 01 0 0 11 1 - 10 0 0 11.2.8 Exemplo Completo
Um exemplo completo permite a visualização de todo o processo de projeto da máquina de estados. Ele também permite integrar os conceitos discretos nos passos.
Exemplo: Projete uma máquina de estados capaz de detectar todas as ocorrências das
sequencias 010 e 1001 de um sinal serial. Implemente com flip-flops D.
Passo 1 - Diagrama de estados: A Figura 11.32 apresenta o diagrama de estados. Uma das
sequencias inicia-se pela esquerda (010) e a outra pela direita (1001). Observe que elas se “entrelaçam” pois todas as ocorrências de ambas devem ser detectadas.
Si S1 S0 S10 S01 S100 0 0 1 0 0 0 1 1 1 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0
Figura 11.32 – Diagrama de estados do exemplo completo.
Passo 2 - Tabela de estados: A Tabela 11.16 apresenta a tabela de estados do exemplo
Tabela 11.16 – Tabela de estados do exemplo completo.
Estado Atual Estado Seguinte Saída X=0 X=1 X=0 X=1 Si S0 S1 0 0 S0 S0 S01 0 0 S01 S10 S1 1 0 S1 S10 S1 0 0 S10 S100 S01 0 0 S100 S0 S01 0 1
Passo 3 – Eliminação de equivalências: A Tabela 11.17 apresenta as equivalências do
exemplo completo. Como se pode observar, não há equivalências.
Tabela 11.17 – Tabela de equivalências do exemplo completo. S0 S1≡S01 S01 S1 S0≡S10 S0≡S10 S01≡S1 S10 S0≡S100 S1≡S01 S0≡S100 S10≡S100 S1≡S01 S100 Si S0 S01 S1 S10
Passo 4 – Designação de estados auxiliares: A Tabela 11.18 apresenta as proximidades
desejadas nessa máquina de estados.
Tabela 11.18 – Tabela de proximidades do exemplo completo.
Proximidades Diretiva i Si – S0 – S100 S01 – S1 Si – S01 – S1 S0 – S10 – S100 Diretiva ii S0 – S1 (S0 – S01)*2 (S1 – S10)*2 S01 – S100 Diretiva iii Si – S0 – S1 – S10 – S100 Si – S0 – S01 – S1 – S10
Y2 Y1Y0 0 1 00 Si S100 01 S01 S0 11 S1 S10 10 - -
Passo 5 – Mapas de transição: Com base na Tabela 11.16 e na designação de estados
anterior, o mapa de estados seguintes é dado por:
Y2X Y1Y0 00 01 11 10 00 S0 S1 S01 S0 01 S10 S1 S01 S0 11 S10 S1 S01 S100 10 - - - -
Novamente com base na designação de estados anterior, os mapas de estado seguinte são apresentados a seguir.
Y2X Y2X Y1Y0 00 01 11 10 Y1Y0 00 01 11 10 00 1 0 0 1 00 0 1 0 0 01 1 0 0 1 01 1 1 0 0 11 1 0 0 1 11 1 1 0 0 10 - - - - 10 - - - - Y2+ Y1+ Y2X Y1Y0 00 01 11 10 00 1 1 1 1 01 1 1 1 1 11 1 1 1 0 10 - - - - Y0+
Passo 6 – Mapas de excitação dos flip-flops: A utilização de flip-flops D permite que a
leitura seja feita diretamente nos mapas de estado seguinte. As leituras são dadas por: X D2 0 2 2 1 Y X YY D X Y Y D0 2 1
Passo 7 – Mapas de saída: Com base na Tabela 11.16 e na designação de estados, o mapa
de saída é dado por:
Y2X Y1Y0 00 01 11 10 00 0 0 1 0 01 1 0 0 0 11 0 0 0 0 10 - - - -
A leitura da saída é dada por Z Y2Y1Y0X Y2Y0X.
A Figura 11.33 apresenta o circuito completo da máquina de estados do exemplo completo. Clk D Q Q 2 X Clk D Q Q Clk D Q Q 1 0 Z Clk
Figura 11.33 – Circuito digital do exemplo completo.
A validação do circuito deve ser feita por simulação ou montagem do circuito. A Figura 11.34 apresenta alguns sinais empregados para validar o circuito. Esses sinais são muito importantes para entender a operação de uma Máquina de Mealy. Para facilitar o entendimento, veja o diagrama de estados da Figura 11.32, reapresentado como Figura 11.35.
Partindo do estado Si, na ocorrência de sinal de clock, com entrada em 1, a máquina vai para o estado S1. Na ocorrência de 0 e com sinal de clock, o circuito muda para o estado S10. Havendo 1, e com pulso de clock, a máquina vai para o estado S01. Como se pode observar pelo diagrama de estados, estando a máquina no estado S01, se X=0, a saída vale 1 (pois ocorreu a sequência 010), e se se X=1, a saída vale 0. Essa mesma condição pode ser vista no instante A do diagrama de tempo da Figura 11.34. Neste caso, observe que a saída
S1 Si S10 S01 S10 S100 S01 S10 S01 S1 X Z Clk A B C
Figura 11.34 – Exemplo de operação da máquina de estados.
Si S1 S0 S10 S01 S100 0 0 1 0 0 0 1 1 1 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0
Figura 11.35 – Reapresentação do diagrama de estados.
Continuando, estando a máquina no estado S01 e havendo 0, a máquina vai para o estado S10 no pulso de clock. Havendo outro 0, e com pulso de clock, a máquina vai para o estado S100. Como se pode observar pelo diagrama de estados, estando a máquina no estado S100, se X=0, a saída vale 0, e se se X=1, a saída vale 1 (pois ocorreu a sequência 1001). Essa mesma condição pode ser vista no instante B do diagrama de tempo da Figura 11.34. Aqui também a saída muda em função da entrada, mesmo que não haja mudança de estado, caracterizando assim uma Máquina de Mealy.
Essa característica da saída alterar, em função da entrada, é novamente apresentada no instante de tempo C, correspondente à sequência 010.
11.3 MÁQUINAS DE ESTADO UTILIZANDO VHDL Máquinas de Estado utilizando VHDL.
11.4 EXERCÍCIOS
1. Obter o digrama de estados de um circuito que detecte todas as ocorrências das sequências 0010 e 100 em um sinal serial. Considere máquina de Moore.
2. Obter o digrama de estados de um circuito que detecte todas as ocorrências da sequência 0101 em um sinal serial. Se ocorrer a sequência 110, a máquina deve travar. Considere uma máquina de Moore.
3. Obter o diagrama de estados de uma máquina com uma entrada e uma saída, em que a saída se torna 1 somente a ocorrência de pelo menos dois 0 consecutivos seguido de pelo menos dois 0 consecutivos. Considere uma máquina de Moore.
4. Uma máquina com uma entrada e uma saída deve examinar grupos de quatro dígitos e gerar uma saída 1 se ocorrerem as sequências 1010 ou 0110. Considere uma máquina de Mealy.
5. Uma máquina de estados tem uma entrada e duas saídas Z0 e Z1. Z0 torna-se 1 toda vez que ocorrer a sequência 100 e Z1 torna-se 1 toda vez que ocorrer a sequência 010 desde que nunca tenha ocorrido a sequência 100. Considere uma máquina de Mealy. 6. Uma máquina de estados tem duas entradas X1 e X0 e uma saída. Se o valor binário do
par de entradas X1X0 crescer a saída torna-se 1, se já não estiver. Se o valor binário do par de entradas X1X0 decrescer a saída torna-se 0, se já não estiver. Se o valor binário se mantiver, o valor da saída se mantém. Considere uma máquina de Moore. 7. Uma máquina de estados tem duas entradas X1 e X0 e uma saída. Se o número de 1 do
par de entradas X1X0 crescer a saída torna-se 1, se já não estiver. Se o número de 1 do par de entradas X1X0 decrescer a saída torna-se 0, se já não estiver. Outras combinações mantém o valor da saída. Considere uma máquina de Moore.
8. Uma máquina com uma entrada e uma saída deve examinar grupos de quatro dígitos e gerar uma saída 1 se ocorrer sequências correspondente à uma número BCD8421 válido.
Considere uma máquina de Mealy.
9. Obtenha o diagrama de estados de uma máquina de Moore cuja saída é 1 se o número de 0 recebidos é par e o número de 1 recebidos é ímpar.
10. Obter o diagrama de estados de uma máquina de Mealy que converta um sinal serial no código BCDXS3 em um código serial no código BCD8421. Para este caso, considere que
nova sequência de pulsos. Considere também que o sinal serial inicia-se pelo bit menos significativo.
11. Obter o diagrama de estados de uma máquina de estados que indique a paridade par de "1" após a ocorrência de pelo menos dois "0" consecutivos em um sinal serial. Considere máquina de Mealy.
12. Uma máquina de estados tem duas entradas X1 e X0 e uma saída. A saída deve sinalizar toda vez que as entradas X1X0 forem iguais quatro períodos de clock. Considere máquina de Moore.
13. Refaça os exercícios anteriores, substituindo Mealy por Moore e vice-versa. Faça as devidas considerações para adaptar as mudanças.
14. Implemente as máquinas anteriores utilizando flip-flops JK. 15. Implemente as máquinas anteriores utilizando flip-flops D. 16. Simule e valide os projetos anteriores.