Você está na página 1de 7

Projeto de Mquinas de Estado

Organizado por Rodrigo Hausen. Original de Thomas L. Floyd. Verso 0: 15 de maro de 2013
http://compscinet.org/circuitos
Resumo Grande parte deste texto, exemplos e estrutura geral foram retirados da seo 8-4 do livro Sistemas Digitais (9a. ed.) de Thomas L. Floyd. Este texto foi organizado para apresentar uma abordagem mais simples para o projeto de mquinas de estados do que a contida no original.

Modelo Geral de uma Mquina de Estados

Antes de procedemos com qualquer tcnica de projeto de contadores, comearemos com uma denio geral de uma mquina de estados : um circuito sequencial genrico que consiste de uma seo feita a partir de lgica combinacional e uma seo de memria (ip-ops), como demonstrado na Figura 1. Em um circuito sequencial sncrono (que recebe um nico sinal de clock ), h uma entrada para o clock na seo de memria como indicado.
Y 0n1

... Ck
Entrada de dados

...

Y 01 Y0

Memria

...
entrada estado atual sada prx. estado

Sada de dados

Qn1 ... Q 01 Q 00

Circuito combinacional para o clculo do prximo estado

...

Circuito combinacional para o clculo das sadas

Zk1 ... Z 01 Z 00

Sadas
Figura 1: Modelo geral de uma mquina de estados com entrada de clock

... ...

X 10 X 11 X m1

Entradas

A informao armazenada na seo de memria, assim como nas entradas X0 , X1 , . . . Xm1 do circuito combinacional, necessria para a operao adequada do circuito. Em um dado instante, a memria est em um estado denominado estado atual, e avanar para o prximo estado, ao detectar uma transio do clock, de acordo com as condies das linhas de ativao Y0 , Y1 , . . . , Yn1 . O estado atual da memria representado pelas variveis de estado Q0 , Q1 , . . . , Qn1 . Estas variveis de estado determinam as sadas do sistema Z0 , Z1 , . . . , Zk1 . Nem todas as mquinas de estado possuem variveis de entrada e sada como neste modelo geral recm-discutido. Porm, todos possuem variveis de ativao e de estado. Contadores so um caso especial de mquina de estado sensveis transio do clock. Nesta seo, um procedimento geral de projeto de mquinas de estado aplicado aos contadores sncronos em uma srie de passos.

Exemplo: Implementao de Contador Gray

Um cdigo de Gray um sistema de numerao binrio onde dois valores sucessivos diferem de apenas um bit. Por exemplo, em um cdigo de Gray de 3 bits, a sequncia de numerais que representa os nmeros de 0 a 7 : 000, 001, 011, 010, 110, 111, 101, 100.

2.1

Passo 1: Diagrama de Estados

O primeiro passo no projeto de um contador a criao de um diagrama de estados. Um diagrama de estados mostra a progresso dos estados atravs dos quais o contador avana a cada transio do clock. A gura 2 o diagrama de estados para um contador de cdigo de Gray de 3 bits. Este circuito particular possuir apenas uma entrada, o clock, e as nicas sadas sero aquelas obtidas dos estados dos ip-ops no contador.

000 100 001

101

011

111 110

010

Figura 2: Diagrama de estados para um contador de Gray de 3 bits.

2.2

Passo 2: Tabela de transio

Uma vez que o funcionamento da mquina de estados esteja denido por meio de um diagrama de estado, o segundo passo determinar uma tabela de transio para o prximo estado, que lista cada estado do contador (estado atual), junto com o prximo estado correspondente. O prximo estado o estado para onde o contador vai ao detectar uma transio do clock. A tabela de transio derivada do diagrama de estados. A Tabela 1 mostra a tabela de transio para o contador de Gray de 3 bits; Q0 o bit menos signicativo. Tabela 1: Tabela de transio para o contador de Gray de 3 bits. atual prximo Q2 Q1 Q0 Y2 Y1 Y0 0 0 0 0 0 1 0 0 1 0 1 1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 1 1 1 1 1 1 1 0 1 1 0 1 1 0 0 1 0 0 0 0 0

2.3

Passo 3: determinao e otimizao de expresses

Usaremos uma memria composta por ip-ops do tipo D, onde as linhas de ativao Y0 , Y1 , Y2 determinaro o prximo estado da sada de cada ip-op. Para calcular o estado de cada linha de ativao, precisamos determinar uma expresso para cada varivel Yi com base em Q2 , Q1 e Q0 . Usaremos mapas de Karnaugh para obter expresses simplicadas para cada linha de ativao. A Figura 3 mostra os mapas de Karnaugh construdos a partir da tabela de transio.
Q1 Q0 Q2 Q1 Q0

@ @ 00 0 1 1 0

01 1 0

11 0 1

10 0 1

Q2

@ 00 0 0 1 0

01 1 0

11 1 0

10 1 1

(a) Mapa para Y0


Q1 Q0 Q2

(b) Mapa para Y1 @ 00 @ 0 0 1 0 01 0 1 11 0 1 10 1 1

(c) Mapa para Y2 Figura 3: Mapas de Karnaugh para as linhas de ativao Y0 , Y1 e Y2 .

Dos mapas de Karnaugh na gura 3, obtemos as seguintes expresses para as linhas de ativao: Y0 = Q1 Q2 + Q1 Q2 = Q1 Q2 Y1 = Q0 Q2 + Q1 Q0 Y2 = Q0 Q2 + Q1 Q0 Observe que, como A B + A B = A B , podemos simplicar ainda mais a expresso para Y0 , saindo da forma de soma de produtos.

2.4

Passo 4: Implementao

O passo nal implementar a lgica combinacional a partir das expresses para cada linha de ativao Y0 , Y1 e Y2 e conectar os ip-ops para formar o contador de cdigo de Gray de 3 bits como na Figura 4. Os ip-ops D fazem o papel de memria neste circuito.

D Q

D Q

D Q

Y0

Y1

Y2

Ck

Q 02

Q 01

Q 00

Figura 4: Contador para cdigo de Gray de 3 bits. Note que, na Figura 4, desprezamos as sadas Q. Poderamos us-las para economizar portas NOT no circuito combinacional do clculo do prximo estado. A Figura 5 mostra como isso feito. A seguir temos um resumo dos passos usados no projeto deste contador. Em geral, esses passos podem ser aplicados ao projeto de qualquer mquina de estados. 1. Especique a sequncia de estados do contador e desenhe o diagrama de estados. 2. Obtenha a tabela de transio a partir do diagrama de estados 3. Para cada linha de ativao, obtenha uma expresso a partir do diagrama de estados. Para modelos pequenos, como os estudados no nosso curso, isso pode ser feito por meio de mapas de Karnaugh. 4

D Q Q

D Q Q

D Q Q

Y0

Y1

Y2

Ck

Q 02

Q 01

Q 00

Figura 5: Aproveitando as sadas Q.

4. Implemente as expresses por meio de lgica combinacional e combine com ip-ops para criar o contador. Note que o projeto de contadores pode ser feito tambm com outros ipops alm daqueles do tipo D. O livro do Floyd (seo 8-4, 9a ed.) mostra como construir o mesmo contador usando ip-ops J-K.

Exemplo: Implementao de Contador com Sequncia Arbitrria

Projete um contador para a sequncia irregular de contagem binria mostrada no diagrama de estado da Figura 6. Use ip-ops D.

001 010

111 101

Figura 6: Diagrama para um contador com sequncia arbitrria H duas maneiras de se implementar este contador. Como ele possui apenas quatro estados, uma primeira maneira seria usar um contador de 2 bits e fazer um circuito combinacional para transformar a sada, cuja sequncia de estados seria 00, 01, 10, 11, da seguinte forma: 00 001, 01 010, 10 101 e 5

11 111. A segunda maneira, a qual demonstraremos a seguir, implementar um contador sncrono de 3 bits que transita diretamente entre esses quatro estados. Passo 1: j nos foi dado o diagrama de estados, portanto nada mais h a fazer neste passo. Passo 2: na Tabela 2 temos a tabela de transio desenvolvida a partir do diagrama de estado. Tabela 2: Tabela de transio. atual prximo Q2 Q1 Q0 Y2 Y1 Y0 0 0 1 0 1 0 0 1 0 1 0 1 1 0 1 1 1 1 1 1 1 0 0 1 Passo 3: determinao e otimizao de expresses. Das tabelas-verdade para Y0 , Y1 e Y2 obtemos os mapas de Karnaugh da Figura 7. Note que h vrias clulas preenchidas com um X, que correspondem os estados para Q2 , Q1 e Q0 que nunca sero alcanados neste caso, os estados 000, 011, 100 e 110. Uma clula preenchida com um X (tambm chamada de dont care ) pode ser agrupada junto com um ou mais 1s, desde que ela sirva para simplicar a expresso.
Q1 Q0 Q2

00 X X

01 0 1

11 X 1

10 1 X

Q1 Q0 Q2

00 X X

01 1 1

11 X 0

10 0 X

0 1

0 1

(a) Mapa para Y0


Q1 Q0 Q2

(a) Mapa para Y1 00 X X 01 0 1 11 X 0 10 1 X 0 1

(a) Mapa para Y2 Figura 7: Mapas de Karnaugh para o prximo estado do contador irregular. Com os agrupamentos mostrados na Figura 7, obtemos as seguintes expresses: Y0 = Q1 + Q2 Y1 = Q1

Y2 = Q0 + Q1 Q2 Passo 4: a implementao do contador irregular mostrada na Figura 8.

Y1
D Q Q D Q Q

Y0
D Q Q

Y2

Ck

Q 02

Q 01

Q 00

Figura 8: Implementao do contador irregular.

Exerccios

Faa os exerccios 14 e 15 do captulo 8 do livro do Floyd. Nos exerccios 16, 17 e 18 use ip-ops D em vez de ip-ops J-K.

Referncias
[1] FLOYD, Thomas L. Sistemas Digitais: Fundamentos e Aplicaes. Editora Bookman, 9a Edio, 2007.