Ciências da computação dia 67

Criando autômatos mais complexos

Na última aula de sistema digitais, vimos como era possível utilizar flip-flops e alguns outros componentes para criar um circuito que seguia uma certa sequência de valores. Agora, vamos ver um pouco sobre circuito que podem reconhecer padrões em cadeias de bits.

Digamos que você queira reconhecer dentre vários bits, uma sequência de exatamente 3 zeros.

Podemos pensar nesse problema da seguinte forma.

Imagine que a entrada será essa sequência de bits

1110010000000000111111010101010100010001000010001

Com a sequência de entrada em mãos podemos começar a encontrar os padrões e adicionar 1 para se a sequência for a que queremos e 0 se não for

1110010000000000111111010101010100010001000010001

0000000010010010000000000000000000100010001000010

Com essa sequência podemos começar a pensar como o circuito poderá ser montado.

Como vamos utilizar flip-flops, precisamos pensar como vamos armazenar a contagem. Da maneira mais simples que podemos pensar, podemos contar, em decimal mesmo, quantos zeros achamos, resultando em uma sequência semelhante a esta:

1110010000000000111111010101010100010001000010001

0000000010010010000000000000000000100010001000010

0001201231231231000000101010101012301230123101230

Criando esta sequência mais amigável, vamos começar a criação do nosso grafo dirigido.

O grafo dirigido

um grafo com 4 estados (0–3) que reconhecem quando há 3 zeros em sequência
grafo dirigido que reconhece sequencias de 3 zeros

O grafo que está logo acima, possui 4 estados (0--3), cada um deles representa a quantidade de zeros encontrados. Se começarmos com a sequência e o primeiro valor for 1, ocorrerá um enlace e o valor continuará em 0, caso contrário, será contabilizado um valor zero no próximo estado (1). Estando no valor 1, se o próximo valor for 1, ele voltará para o 0, limpando a contagem, caso contrário será contabilizado mais um valor 0 (estado 2). Estando no estado 2, se o próximo valor for um número 1, a contagem será reiniciada, caso contrário mais um valor 0 será contabilizado (estado 3) e a saída será um número 1, já que encontramos uma sequência de 3 zeros. Estando com 3 zeros contabilizados, se o próximo número for um a contagem se reiniciará, se não será contabilizado 1 valor 0 (estado 1).

Quantidade de flip-flops necessários

com o grafo completo, podemos começar a pensar no circuito, mas antes precisamos pensar quantos flip-flops serão necessários para fazê-lo.

Seguindo a regra de 2^x ≥ QE (onde x é a quantidade de flip-flops e QE a quantidade de estados do grafo).

Plugamos os valores

2^x ≥ 4

2^x ≥ 4

o menor valor para x que satisfaz a inequação é 2, sendo assim precisamos de 2 flip-flops.

Montando a tabela de estímulos

Diferente da tabela de estímulos que montamos na aula passada, esta vai ter uma peculiaridade a mais. Desta vez precisamos saber qual a entrada que receberemos.

tabela com todos valores para as entradas dos flip-flops
tabela de estímulos

Mapas de Karnaugh

Para montarmos os mapas de Karnaugh entramos em um dilema, como colocaremos os valores?

Repare que na tabela de estímulos, os valores dos estados atuais forma uma sequencia perfeita de 000 até 111 em binário, sendo assim podemos pegar essas sequencias e dizer que a primeira linha dos estados é referente ao 0, a segunda ao 1, e assim por diante.

Com isso, podemos pegar esses valores referentes a cada linha para achar a localização no mapa de Karnaugh (nesse caso de duas variáveis).

mapa de Karnaugh de J1
mapa de Karnaugh de J1
mapa de Karnaugh de K1
mapa de Karnaugh de K1
mapa de Karnaugh de J0
mapa de Karnaugh de J0
mapa de Karnaugh de K0
mapa de Karnaugh de K0
mapa de Karnaugh da saída
mapa de Karnaugh da saída

Montando o Circuito

Com tudo pronto, podemos começar a montar o circuito, resultando em algo semelhante a isso:

circuito pronto
circuito finalizado

Repare que para a saída usamos um flip-flop do tipo D. De maneira resumida, usamos ele pois além de não possuir aquelas saídas inválidas (já que dentro possui um flip-flop JK) ele ainda deixa a saída igual a sua entrada, além de possuir apenas uma entrada e uma saída que para o nosso propósito faz todo sentido.