projeto de máquinas de estado

7
Projeto de Máquinas de Estado Organizado por Rodrigo Hausen. Original de Thomas L. Floyd. Versão 0: 15 de março de 2013 http://compscinet.org/circuitos Resumo Grande parte deste texto, exemplos e estrutura geral foram retirados da seção 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 máquinas de estados do que a contida no original. 1 Modelo Geral de uma Máquina de Estados Antes de procedemos com qualquer técnica de projeto de contadores, começare- mos com uma definição geral de uma máquina de estados: um circuito sequencial genérico que consiste de uma seção feita a partir de lógica combinacional e uma seção de memória (flip-flops), como demonstrado na Figura 1. Em um circuito sequencial síncrono (que recebe um único sinal de clock ), há uma entrada para o clock na seção de memória como indicado. X 11 Saídas Memória Saída de dados Entrada de dados Ck ... ... Circuito combinacional para o cálculo do próximo estado entrada estado atual saída próx. estado ... ... ... X 10 X m−1 ... ... Entradas Y 0 Y 01 Y 0n−1 Q n−1 Q 01 Q 00 Circuito combinacional para o cálculo das saídas ... Z k−1 Z 01 Z 00 Figura 1: Modelo geral de uma máquina de estados com entrada de clock 1

Upload: phungque

Post on 10-Jan-2017

220 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Projeto de Máquinas de Estado

Projeto de Máquinas de EstadoOrganizado por Rodrigo Hausen. Original de Thomas L. Floyd.

Versão 0: 15 de março de 2013http://compscinet.org/circuitos

ResumoGrande parte deste texto, exemplos e estrutura geral foram retirados

da seção 8-4 do livro Sistemas Digitais (9a. ed.) de Thomas L. Floyd.Este texto foi organizado para apresentar uma abordagem mais simplespara o projeto de máquinas de estados do que a contida no original.

1 Modelo Geral de uma Máquina de EstadosAntes de procedemos com qualquer técnica de projeto de contadores, começare-mos com uma definição geral de uma máquina de estados: um circuito sequencialgenérico que consiste de uma seção feita a partir de lógica combinacional e umaseção de memória (flip-flops), como demonstrado na Figura 1. Em um circuitosequencial síncrono (que recebe um único sinal de clock), há uma entrada parao clock na seção de memória como indicado.

X11

Saídas

MemóriaSaída de dados

Entrada de dados

Ck

...

...

Circuito combinacionalpara o cálculo dopróximo estado

entr

ada e

stado

atu

al

saída próx. estado

...

...

...

X10

Xm−1

...

...

Entradas

Y0

Y01

Y0n−1

Qn−1 Q01 Q00

Circuito combinacionalpara o cálculo das saídas

...Zk−1 Z01 Z00

Figura 1: Modelo geral de uma máquina de estados com entrada de clock

1

Page 2: Projeto de Máquinas de Estado

A informação armazenada na seção de memória, assim como nas entra-das X0, X1, . . . Xm−1 do circuito combinacional, é necessária para a opera-ção adequada do circuito. Em um dado instante, a memória está em um es-tado denominado estado atual, e avançará para o próximo estado, ao detectaruma transição do clock, de acordo com as condições das linhas de ativaçãoY0, Y1, . . . , Yn−1. O estado atual da memória é representado pelas variáveis deestado Q0, Q1, . . . , Qn−1. Estas variáveis de estado determinam as saídas dosistema Z0, Z1, . . . , Zk−1.

Nem todas as máquinas de estado possuem variáveis de entrada e saída comoneste modelo geral recém-discutido. Porém, todos possuem variáveis de ativaçãoe de estado. Contadores são um caso especial de máquina de estado sensíveis àtransição do clock. Nesta seção, um procedimento geral de projeto de máquinasde estado é aplicado aos contadores síncronos em uma série de passos.

2 Exemplo: Implementação de Contador GrayUm código de Gray é um sistema de numeração binário onde dois valores su-cessivos diferem de apenas um bit.

Por exemplo, em um código de Gray de 3 bits, a sequência de numerais querepresenta os números de 0 a 7 é: 000, 001, 011, 010, 110, 111, 101, 100.

2.1 Passo 1: Diagrama de EstadosO primeiro passo no projeto de um contador é a criação de um diagrama deestados. Um diagrama de estados mostra a progressão dos estados através dosquais o contador avança a cada transição do clock.

A figura 2 é o diagrama de estados para um contador de código de Gray de 3bits. Este circuito particular possuirá apenas uma entrada, o clock, e as únicassaídas serão aquelas obtidas dos estados dos flip-flops no contador.

101

110

000

011

111 010

100 001

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

2

Page 3: Projeto de Máquinas de Estado

2.2 Passo 2: Tabela de transiçãoUma vez que o funcionamento da máquina de estados esteja definido por meio deum diagrama de estado, o segundo passo é determinar uma tabela de transiçãopara o próximo estado, que lista cada estado do contador (estado atual), juntocom o próximo estado correspondente. O próximo estado é o estado para ondeo contador vai ao detectar uma transição do clock. A tabela de transição éderivada do diagrama de estados. A Tabela 1 mostra a tabela de transição parao contador de Gray de 3 bits; Q0 é o bit menos significativo.

Tabela 1: Tabela de transição para o contador de Gray de 3 bits.atual próximo

Q2 Q1 Q0 Y2 Y1 Y00 0 0 0 0 10 0 1 0 1 10 1 1 0 1 00 1 0 1 1 01 1 0 1 1 11 1 1 1 0 11 0 1 1 0 01 0 0 0 0 0

2.3 Passo 3: determinação e otimização de expressõesUsaremos uma memória composta por flip-flops do tipo D, onde as linhas deativação Y0, Y1, Y2 determinarão o próximo estado da saída de cada flip-flop.Para calcular o estado de cada linha de ativação, precisamos determinar umaexpressão para cada variável Yi com base em Q2, Q1 e Q0. Usaremos mapasde Karnaugh para obter expressões simplificadas para cada linha de ativação.A Figura 3 mostra os mapas de Karnaugh construídos a partir da tabela detransição.

Q2

Q1Q0

@@ 00 01 11 100 1 1 0 01 0 0 1 1

(a) Mapa para Y0

Q2

Q1Q0

@@ 00 01 11 100 0 1 1 11 0 0 0 1

(b) Mapa para Y1

Q2

Q1Q0

@@ 00 01 11 100 0 0 0 11 0 1 1 1

(c) Mapa para Y2

Figura 3: Mapas de Karnaugh para as linhas de ativação Y0, Y1 e Y2.

3

Page 4: Projeto de Máquinas de Estado

Dos mapas de Karnaugh na figura 3, obtemos as seguintes expressões paraas linhas de ativação:

• Y0 = Q1 Q2 + Q1 Q2 = Q1 ⊕Q2

• Y1 = Q0 Q2 + Q1 Q0

• Y2 = Q0Q2 + Q1Q0

Observe que, como A B + A B = A⊕B, podemos simplificar ainda mais aexpressão para Y0, saindo da forma de soma de produtos.

2.4 Passo 4: ImplementaçãoO passo final é implementar a lógica combinacional a partir das expressões paracada linha de ativação Y0, Y1 e Y2 e conectar os flip-flops para formar o contadorde código de Gray de 3 bits como na Figura 4. Os flip-flops D fazem o papel dememória neste circuito.

Y0 Y1 Y2

Ck

Q01 Q00

D Q D Q D Q

Q02

Figura 4: Contador para código de Gray de 3 bits.

Note que, na Figura 4, desprezamos as saídas Q. Poderíamos usá-las paraeconomizar portas NOT no circuito combinacional do cálculo do próximo 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 máquina deestados.

1. Especifique a sequência de estados do contador e desenhe o diagrama deestados.

2. Obtenha a tabela de transição a partir do diagrama de estados

3. Para cada linha de ativação, obtenha uma expressão a partir do diagramade estados. Para modelos pequenos, como os estudados no nosso curso,isso pode ser feito por meio de mapas de Karnaugh.

4

Page 5: Projeto de Máquinas de Estado

D Q

Q

Y0 Y1 Y2

Ck

Q01 Q00

D Q

Q

Q02

D Q

Q

Figura 5: Aproveitando as saídas Q.

4. Implemente as expressões por meio de lógica combinacional e combine comflip-flops para criar o contador.

Note que o projeto de contadores pode ser feito também com outros flip-flops além daqueles do tipo D. O livro do Floyd (seção 8-4, 9a ed.) mostra comoconstruir o mesmo contador usando flip-flops J-K.

3 Exemplo: Implementação de Contador comSequência Arbitrária

Projete um contador para a sequência irregular de contagem binária mostradano diagrama de estado da Figura 6. Use flip-flops D.

101

001

111 010

Figura 6: Diagrama para um contador com sequência arbitrária

Há duas maneiras de se implementar este contador. Como ele possui apenasquatro estados, uma primeira maneira seria usar um contador de 2 bits e fazerum circuito combinacional para transformar a saída, cuja sequência de estadosseria 00, 01, 10, 11, da seguinte forma: 00 → 001, 01 → 010, 10 → 101 e

5

Page 6: Projeto de Máquinas de Estado

11→ 111. A segunda maneira, a qual demonstraremos a seguir, é implementarum contador síncrono de 3 bits que transita diretamente entre esses quatroestados.

Passo 1: já nos foi dado o diagrama de estados, portanto nada mais há afazer neste passo.

Passo 2: na Tabela 2 temos a tabela de transição desenvolvida a partir dodiagrama de estado.

Tabela 2: Tabela de transição.atual próximo

Q2 Q1 Q0 Y2 Y1 Y00 0 1 0 1 00 1 0 1 0 11 0 1 1 1 11 1 1 0 0 1

Passo 3: determinação e otimização de expressões. Das tabelas-verdadepara Y0, Y1 e Y2 obtemos os mapas de Karnaugh da Figura 7. Note que hávárias células preenchidas com um X, que correspondem os estados para Q2, Q1e Q0 que nunca serão alcançados — neste caso, os estados 000, 011, 100 e 110.Uma célula preenchida com um X (também chamada de don’t care) pode seragrupada junto com um ou mais 1s, desde que ela sirva para simplificar aexpressão.

Q2

Q1Q0

00 01 11 10

0 X 0 X 1

1 X 1 1 X

(a) Mapa para Y0

Q2

Q1Q0

00 01 11 10

0 X 1 X 0

1 X 1 0 X

(a) Mapa para Y1

Q2

Q1Q0

00 01 11 10

0 X 0 X 1

1 X 1 0 X

(a) Mapa para Y2

Figura 7: Mapas de Karnaugh para o próximo estado do contador irregular.

Com os agrupamentos mostrados na Figura 7, obtemos as seguintes expres-sões:

• Y0 = Q1 + Q2

• Y1 = Q1

6

Page 7: Projeto de Máquinas de Estado

• Y2 = Q0 + Q1 Q2

Passo 4: a implementação do contador irregular é mostrada na Figura 8.

Y1

D Q

Q

Y0

Y2

Ck

Q01 Q00

D Q

Q

Q02

D Q

Q

Figura 8: Implementação do contador irregular.

4 ExercíciosFaça os exercícios 14 e 15 do capítulo 8 do livro do Floyd. Nos exercícios 16, 17e 18 use flip-flops D em vez de flip-flops J-K.

Referências[1] FLOYD, Thomas L. Sistemas Digitais: Fundamentos e Aplicações. Editora

Bookman, 9a Edição, 2007.

7