Foto do dia 01/05/2022 unsplash.com

Exercícios com Registradores de Deslocamento

 

  1. Projete um contador em Anel de 8 estados com base no CI 74HC194 (registrador de deslocamento universal; 4 x FF's). Supondo ainda que uma variável externa M controla o sentido do deslocamento de seus bits, ou seja, este contador deve ser bidirecional, de tal forma que: com: M=0 seja realizado deslocamento para direita e com M=1 seja realizado deslocamento para esquerda.

Solução:

UM contador em anel exige um carregamento inicial de seus FF's. Não se pode simplesmente iniciar seu circuito com todos os seus FF's. resetados. Um "Master Reset" não no auxilia neste caso. Isto significa que devemos realizar a carga inicial com algum padrão diferente de '0' em todos os FF's (FF's resetados), ou seja, significa que necessitamos realizar um "Parallel Load" logo no início do funcionamento deste circuito.

No caso do 74HC194, o "Paralled Load" é síncrono e ocorre quando S1=1 e S0=1. Então necessitamos que um sinal de "INIT" seja usado para criar esta condição inicial. Este sinal "INIT" será criado usando um simples circuito RC.

Notamos também que:

Por inspeção notamos que:

Já o sinal S0 acaba sendo sempre o inverso de M.

Então podemos concluir que:

S1=INIT+M

S0=INIT+M

Lembrando que um circuito RC demora certo tempo carregar, o que implica que durante um curto período de tempo inicial, o nível lógico na saída do Capacitor estará BAIXO, ou seja, um circuito RC sozinho gera um sinal do inicialização do tipo INIT. Como no nosso casso necessitamos que nosso INIT seja ativo ALTO, basta acrescentar uma porta inversora na saída do Capacitor. E neste caso, já é melhor usar uma porta inversora Schmidt-trigger (CI 74HC14).

Circuito final: cont_anel_8_estados_bi_reg_74194.DSN :

cont_anel_8_estados_bi_reg_74194

Note no diagrama os cascateamentos de sinais necessários entre as 2 pastilhas 74HC194:

Note ainda que se preferiu realizar a carga paralela de dados com mais de 1 bit setado. No caso, as entradas foram ajustadas das seguinte forma:

P0D0(U1)=1P1D1(U1)=1P2D2(U1)=0P3D3(U1)=0P4D0(U2)=0P5D1(U2)=0P6D2(U2)=0P7D3(U2)=0

Circuito simulado:

cont_anel_8_estados_bi_reg_74194

Algumas formas de onda:

cont_anel_8_estados_bi_reg_74194_formas_onda

Detalhe: repare no valor do Capacitor C1. Ele não pode ser um valor muito baixo, senão não será realizado o Parallel Load síncrono, necessário neste circuito. Note que para que o Parallel Load seja gerado é necessário que S1=1 e S0=1 ao mesmo tempo em que ocorre um borda ativa do sinal de Clock na pastilha 74HC194 (no caso: Clock=↑). Se o capacitor for pequeno demais, a constante de tempo RC é reduzida de tal forma que o sinal INIT vai para nível lógico BAIXO antes de ocorrer a borda de subida do sinal de Clock. Por exemplo, veja o que (não) sucede quando C1=1 μF:

cont_anel_8_estados_bi_reg_74194_cap_1uf_falha_formas_onda

Perceba na figura anterior, que a primeira borda de subida do sinal de CLOCK já ocorre com INIT=0 (S1=1 e S0=0). O desejável (e necessário) seria o sinal INIT=1 enquanto CLOCK=↑, o que não aconteceu, e portanto, não foi possivel gerar os níveis lógicos S1S0=11(2) "Parallel Load". Neste caso, a estrutura para o contador em Anel é funcional, mas o usuário não é capaz de perceber seu funcionamento uma vez que os 8 FF's. da estrutura estão todos deslocando bits resetados.

 


 

  1. Projete um contador em Jonhson de 16 estados com base no CI 74HC194 (registrador de deslocamento universal; 4 x FF's). Supondo ainda que uma variável externa M controla o sentido do deslocamento de seus bits, ou seja, este contador deve ser bidirecional, de tal forma que: com: M=0 seja realizado deslocamento para direita e com M=1 seja realizado deslocamento para esquerda.

Solução:

Para criar este contador, necessitamos:

No. FF’s=No. Estados2=162=8 FF's (ou seja, 2 x 74HC194)

Este circuito é mais fácil de desenvolver que o contador em Anel. Por inspeção notamos:

Este tipo de contador não exige nenhuma inicialização em particular, podendo seus FF's iniciarem resetados. Então podemos usar um sinal de "INIT" (a partir de um circuito RC) para gerar um sinal de "Master Reset". Apenas perceber que para a pastiulha 74HC194, o "Master Reset" deve ser ativo baixo.

Uma leve modificação no circuito anterior, e temos o novo circuito mostrado abaixo: cont_johnson_16_estados_bi_reg_74194.DSN

cont_johnson_16_estados_bi_reg_74194

Notar que este contador é formado usando a saída invertida (complementar) de seu último FF. Motivo pelo qual, temos as portas invasoras nas saídas Q0 de U1 e Q3 de U2.

Simulação:

cont_johnson_16_estados_bi_reg_74194_formas_onda

Segue figura com as formas de onda geradas por este tipo de circuito:

cont_johnson_16_estados_bi_reg_74194_formas_onda

Note que neste caso, o sinal M foi gerado usando o "gerador" DPULSE do Proteus, configurado para gerar nível lógico alto depois de 8 segundos.

Perceba que neste caso foi usado um capacitor menor que no caso anterior. Neste caso, basta que a constante de tempo RC seja aproximadamente igual à uns 20 ns, o tempo necessário para o Master Reset ser efetivado pela pastilha 74HC194 (parâmetro AC: TW(L)).

 


Fernando Passold, em 31/05/2022.