AULA 1 – CONTADORES E REGISTRADORES

No semestre passado vimos o funcionamento dos FFs, entretanto estes podem ser conectados para funcionarem como contadores e registradores. Os sistemas digitais empregam muitas variações destas conexões dos FFs, na maioria das vezes sob forma de circuitos integrados. Nesta aula iremos verificar como os FFs e as portas lógicas podem ser conectados para produzir diferentes tipos de contadores e registradores.

CONTADORES ASSÍNCRONOS: A figura abaixo mostra um contador binário de 4 bits:

Os pulsos de clock são aplicados apenas na entrada CLK do F A. Assim, o F A comutará ( mudará para o seu estado oposto ) cada vez que ocorrer uma transição negativa no pulso de clock. Observe que J=K=1 para todos os FFs. A saída normal do F A funciona como clock de entrada para o F B, sendo que o F B comuta a cada vez que a saída A muda de 1 para 0. Da mesma forma, o F C comuta quando B muda de 1 para 0 e o F D comuta quando C muda de 1 para 0. As saídas dos FFs D, C, B e A apresentam um número binário de 4 bits sendo D o mais significativo. Vamos considerar todos os oFFs tenham sido resetados para o estado 0 ( as entradas CLEAR não são mostradas ). As formas de onda na figura acima mostram que a contagem binária seqüencial de 0 a 1 ocorre à medida que os pulsos de clock são aplicados continuamente. Após a transição negativa do décimo quinto pulso de clock, os FFs do contador estão na condição 1. Na décima sexta transição negativa do clock, o F A muda de 1 para 0, fazendo com que o F B mude de 1 para 0, o mesmo ocorre com os FFs C e D até que o contador chegue a 0, ou seja o contador realizou um ciclo completo de contagem e se os pulsos de clock continuarem, será iniciado um novo ciclo de contagem. Neste contador, a saída de cada F aciona a entrada de clock do F seguinte, este tipo de configuração de contador é conhecido como contador assíncrono, porque os FFs não mudam de estado exatamente com o mesmo sincronismo com que os pulsos de clock são aplicados. Apenas o F A responde aos pulsos de clock, os demais FFs dependem dos FFs anteriores para mudar de estado.

Usualmente é convencionado representar circuitos, sempre que for possível, com o fluxo indo da esquerda para a direita, iremos tentar fazer a apresentação destes circuitos assim, o F A ( LSB ) à direita e o F D ( MSB ) à esquerda, como podemos verificar na figura acima, é apenas uma convenção que auxilia a compreensão do funcionamento dos contadores.

O contador mostrado além de assíncrono tem módulo 16, ou seja, o contador percorre 16 estados distintos até começar a contar os mesmos estados novamente, naturalmente a quantidade de módulos é igual a onde n é igual ao número de FFs utilizados. n2

Um registrador de deslocamento é um grupo de FFs organizados de modo que os números binários armazenados nos Fs sejam deslocados de um F para o seguinte a cada pulso de clock. Um exemplo típico de registrador de deslocamento é uma calculadora eletrônica, quando digita-se um número os outros que já estavam no display são deslocados para a esquerda.

enquanto todos os outros FFs permanecem em nível BAIXO. Quando ocorrer a segunda borda de descida

Uma forma de conectar FFs J-K para que operem como um registrador de deslocamento de quatro bits está apresentada na figura acima. Veja que os FFs estão conectados de forma que as saídas estão ligadas as entradas dos FFs posteriores, assumiremos que todos os FFs estão resetados inicialmente. As formas de onda mostram como os dados são deslocados da esquerda para direita de F para outro enquanto os pulsos de deslocamento são aplicados. Quando ocorre a primeira borda de descida no instante T1, cada um dos Fs 2, 1, 0 têm em suas entradas a condição J = 0 e K = 1, devido ao estado do F que está a sua esquerda. O F 3 tem J = 1 e K = 0 devido a entrada de dados. Assim no instante T1 somente Q3 vai para o nível ALTO, ( instante T2 ), o F 3 terá J = 0 e K = 1, devido ao sinal de entrada. O F 2 tem J = 1 e K = 0 devido ao nível ALTO de Q3. Os FFs 1 e 0 ainda permanecem com J = 0 e K = 1, portanto no instante T2 apenas Q2 vai para nível ALTO, o FF3 vai para o nível BAIXO e os FFs 1 e 0 permanecem em nível BAIXO. O mesmo raciocínio pode ser utilizado para determinar como as formas de onda mudam nos instante T3 e T4. Observe que a cada borda de descida do pulso de deslocamento, cada saída do F recebe o nível lógico que estava presente na saída do F à sua esquerda antes da borda de descida do pulso de deslocamento.

Na figura abaixo todos os FFs têm suas entradas J e K em nível “1”, para que mude de estado ( comute ) sempre que o sinal em sua entrada de clock for do nível ALTO para o BAIXO. Os pulsos de clock são aplicados apenas na entrada CLK do F 0. A saída de do F 0 está conectada à entrada de clock do F 1 e a saída do F 1 está conectada à entrada de clock do F 2, as formas de onda mostram como os Fs mudam de estado conforme os pulsos aplicados.

O F 0 comuta na transição negativa de cada pulso na entrada de clock. Assim, a forma de onda da saída Q0 tem uma freqüência que é exatamente a metade da freqüência dos pulsos de clock. O F 1 comuta de estado cada vez que a saída Q0 vai do nível ALTO para o nível BAIXO. A forma de onda de Q1 tem freqüência exatamente igual a metade da freqüência de Q0 e, portanto, um quarto da freqüência do sinal de clock. O F 2 comuta de estado cada vez que Q1 tem uma transição negativa. Assim, a forma de onda em Q2 tem a metade da freqüência de Q1 e portanto um oitavo da freqüência de clock. Todas as formas de onda seguem o mesmo ciclo de trabalho do clock ( no caso 50% ).. Como pôde ser visto cada F divide a freqüência por dois, por exemplo se estivesse conectado um quarto F de forma que o sinal Q2 estivesse ligado a entreda CLK deste quarto F a freqüência seria dividida por 16 e assim por diante, logo podemos divide uma freqüência qualquer por qualquer potência de dois. De forma genérica poderíamos dizer que se tivéssemos N Fs a freqüência na saída do último F seria igual a

Muitas vezes podemos ter circuitos que a freqüência confiável é muito elevada e a freqüência desejada é menor, logo utilizamos divisores de freqüência. Outro exemplo segue na figura abaixo, onde temos a freqüência da rede elétrica como base para um relógio digital:

Vale observar que não há potência de 2 que seja igual a 60, mais adiante veremos a solução.

CONTADORES COM MÓDULO MENOR QUE N2:

O contador básico assíncrono que estudamos até aqui está limitado ao módulo , onde N é o número de FFs. N2 Podemos alterar o contador básico para gerar um módulo menor, fazendo com que se pule estados que normalmente fazem parte da contagem, podemos fazer isto utilizando uma lógica adicional, como é mostrado na figura abaixo:

Se for desconsiderada a porta NAND conectada, temos um contador de módulo 8 que conta de 0 a 1, entretanto a presença da porta altera a seqüência. A saída da porta NAND está conectada a entrada assíncrona CLEAR dos 3 FFs, enquanto a saída da porta NAND estiver em nível ALTO, não há efeito sobre o contador, entretanto quando tivermos as duas entradas ( B e C ) em nível ALTO a saída será “0”, resetando todos os FFs, fazendo com que o contador reinicie a contagem em 0, com isso as entradas B e C em “0” o sianl de CLR não está mais ativado. Essa condição ocorre quando tivermos 110 nas saídas CBA, porém a condição 110 dura apenas o tempo do CLR ( alguns nanosegundos ) logo este contador vai somente até 5 na prática, acaba tendo apenas seis estados diferentes, passa então ser um contador de módulo 6. Perceba no mapa de tempos que a saída B contém um SPIKE, causado pela ocorrência momentânea do estado 110 antes do reset. Este SPIKE não permite a visibilidade deste estado em LEDs ou displays, uma vez que é muito rápido.

A figura que segue mostra a transição de estados do contador que vimos, cada círculo representa um dos possíveis estados do contador, as setas indicam como se passa de um estado para o outro em resposta a um pulso de clock na entrada. Se considerarmos a contagem iniciando em 0, o diagrama mostra que os estados contador mudam de forma crescente até 101, quando o próximo pulso de clock ocorre, o contador passa momentaneamente para a contagem 110 antes de ir para a contagem estável 0. As linhas tracejadas indicam o estado temporário 110. A duração deste estado temporário é tão curta que consideramos este contador de 0 a 101 ( linha contínua ). Não há nenhuma linha entrando em 1, porque este estado nunca ocorrerá, ou ainda se ocorrer aleatoriamente na ligação ( instante inicial ) a porta NAND garante o clear, portanto este será apenas um estado temporário. Em geral utilizamos um display ou ainda um LED para indicar os estados do contador.

EXEMPLOS: Se quisermos projetar um contador de módulo 14, basta projetar uma lógica que reinicie a contagem quando tivermos 1110 em DCBA, logo a contagem irá de 0 a 1101 ( 0 a 13 => 14 estados ), utilizamos as saídas DCB nas entradas de uma porta NAND, se conectarmos um sinal de clock com freqüência de 30 KHz teremos na saída 2,14 KHz, veja abaixo:

Podemos também projetar um contador decádico, quando tivermos em DCBA 1010, o contador é reiniciado, basta utilizarmos as saídas D e B, a contagem será de 0 a 1001 ( 0 a 9 => 10 estados ).

Para projetar um contador que inicia com todos os bits em 0 e tem módulo X, basta calcular o menor número de

FFs XN≥2, conecte a saída da porta NAND as entradas CLEAR de todos os FFs, verifique quais serão os FFs que estarão em nível ALTO na contagem = X, conecte estas saídas dos FFs nas entradas da porta NAND.

Existem também circuitos integrados prontos com contadores assíncronos que possuem estes circuitos que estudamos internamente já conectados, um exemplo é o 74LS293, veja figura abaixo:

EXEMPLO: Utilizando o CI 74LS293 projete um contador de módulo 10:

Até agora todos os contadores que estudamos têm contagem crescente, podemos também projetar contadores decrescentes, ou seja, que fazem a contagem regressiva:

Agora as saída negadas é que servem de clock para os FFs posteriores, logo a saída B irá comutar sempre que A tem transição positiva, uma vez que é Aque aciona o clock do F B, o mesmo ocorre com o F C que comutará quando B passa do nível BAIXO para o nível ALTO.

Se considerarmos que cada F tem um atraso de propagação entre o sinal na sua entrada e a saída, podemos imaginar que isso fará com que haja um efeito cumulativo à medida que os sinais forem sendo propagados entre um F e outro. Em resumo os F não mudam de estado simultaneamente em sincronismo com os pulsos de entrada. Essas limitações podem ser corrigidas com a utilização dos contadores síncronos, nos quais todos os FFs são disparados simultaneamente pelos pulsos de clock de entrada.

A medida que o contador tiver a freqüência de clock mais elevada, os atrasos passam a ser mais significativos a ponto de pular alguns estados, veja figura (b).

Em geral os contadores síncronos são circuitos maiores e mais complexos que os contadores assícronos, bem como não são em todos os FFs que as entradas J-K estão em nível ALTO.

A seqüência de contagem mostra que o F A tem que mudar de estado a cada transição negativa do clock, por isso suas entradas são mantidas em “1” O F B deve mudar de estado a cada transição negativa do clock, enquanto A = 1. O F C tem que mudar de estado na borda de descida do clock, quando A = B = 1. Assim como D deverá mudar de estado também na borda de descida do clock quando A, B e C estiverem em nível ALTO. O princípio básico para um contador síncrono é: Cada F deve ter suas entradas J e K conectadas de modo que elas estejam no nível ALTO apenas quando as entradas de todos os FFs de mais baixa ordem estiverem no estado ALTO.

Existem também os circuitos integrados comerciais com contadores como este prontos:

74LS160/162 Contadores síncronos decádicos. 74LS161/162 Contadores síncronos de módulo 16.

Assim como nos contadores assíncronos, podemos também projetar contadores decrescentes, basta utilizarmos

então o contador síncrono passará a contar 15, 14, 13, 12, 1, 103, 2, 1, 0, 15, 14, 13 ....

no contador síncrono que vimos na página anterior ao invés das saídas A, B, C utilizamos as saídas CBA,,, A figura abaixo mostra como implementar um contador crescente/decrescente ( conhecido também como up/down ):

A entrada downup/controla se as entradas J e K dos FFs seguintes serão acionadas pelas saídas normais ou pelas saídas invertidas dos FFs. Quando downup/ for mantida em nível ALTO, as portas AND n° 1 e n° 2 estarão habilitadas enquanto as portas AND n° 3 e n° 4 estarão desabilitadas (verifique a presença do inversor). Isso permite que as saídas A e B passem pelas portas 1 e 2 para as entradas J e K dos FFs B e C. Quando downup/for mantida em nível BAIXO, as portas 1 e 2 estarão desabilitadas enquanto as portas 3 e 4 estarão habilitadas. Isso permite que as saídas A e B passem pelas portas 3 e 4 para as entradas J e K dos FFs B e C. As formas de onda mostradas na figura abaixo ilustram a operação do contador.

Também existem circuitos integrados prontos de contadores síncronos crescentes/decrescentes, perceba que neste CI não temos o círculo nas entradas de clock, o que denota que é sensível a borda de subida, logo se conectarmos o sinal de clock em CPU, a contagem será crescente, se conectarmos o clock em CPD a cada transição positiva teremos um novo módulo com contagem decrescente.

Uma particularidade deste contador é que existe a possibilidade de independente da contagem podermos saltar para um módulo “carregado” a partir das entradas P3, P2, P1, P0, desde que a entrada PLsofra uma transição negativa, esse processo é chamado de carga paralela.

As saídas TCu ( crescente ) e TCd ( decrescente ) são utilizadas quando utiliza-se mais que um contador para obter-se um número maior de estados uma vez que este CI é de módulo 16 (possui somente 16 estados distintos) estes sinais também são conhecidos como “carry”. Então em uma contagem crescente se conecta esta saída TCu na entrada CPu do contador de mais alta ordem, o mesmo ocorre em uma contagem decrescente com os sinais TCd e CPd. Veja figura abaixo:

Comentários