Pular para o conteúdo principal

Circuitos sequênciais

1. Para começarmos - De onde vem os elementos sequenciais?

Pessoal vamos analisar agora como podemos utilizar os circuitos eletrônicos de forma sequencial. Como assim sequencia? Vamos lá! Até aqui, podemos avaliar alguns circuitos utilizando as funções combinacionais.

Circuitos Digitais

Retirado de (https://computerengineeringforbabies.com/)

Essas funções lógicas podem ser combinadas para executar comportamentos sequenciais, formando os flip-flops.

Elementos discretos combinacionais e sua composição como flip-flops

Retirado de (https://www.hackatronic.com/)

Para saber mais sobre o funcionamento de Flip-Flops

Pessoal, sugiro fortemente ver esse vídeo para saber mais sobre o funcionamento dos flip-flops e ler esse artigo também.

Legal, agora temos quase tudo que precisamos para iniciar o estudo dos nossos circuitos sequenciais. Precisamos apenas de mais um elemento, o gerador de clock. Por que o clock é importante? Essa é um pergunta muito válida e muito boa!

Os geradores de clock são responsáveis por gerar uma onda quadrada em uma frequência conhecida e pré-determinada. Essa onda quadrada é utilizada para marcar um sinal de sincronização e operação para os dispositivos. Ele pode ser gerado de algumas formas, vamos avaliar algumas delas.

Onda quadrada gerada por um circuito de clock

Um sinal de clock possui algumas características:

  • tcyc: é o intervalo de um período de clock. A frequência de clock é calculada invertendo esse valor (1/tcyc).
  • Falling Edge: é a borda de descida do sinal. Ela caracteriza o instante que o sinal de clock vai do nível alto para o nível baixo. É importante conhecer essa característica do sinal, pois alguns circuitos são sensíveis a ele (respondem a esse comportamento do sistema).
  • Rising Edge: é a borda de subida do clock. Quando o sinal vai de nível baixo para alto.

Mas porque as bordas são importante? Pois elas trazem a informações do momento de transição apenas e não do estado que o sinal se encontra. Pode ser bastante útil quando esta informação pode ser utilizada no sistema.

Mas como podemos gerar este tipo de sinal? É uma ótima pergunta! Vamos verificar um circuito gerador de clock.

Oscilador astável

Este circuito é um dos mais simples para geração do sinal de uma onda quadrada, o oscilador astável. Ele funciona da seguinte maneira: enquanto um dos transistores está conduzindo, o outro está bloqueando. Está configuração permite que o capacitor ligado ao transistor que está bloqueado carregue-se e faça com que o estado dos transistores mude. Então, o outro capacitor começa a se carregar e todo o ciclo se repete.

Uma outra forma de gerar esse o sinal de clock pode ser utilizando uma porta NAND.

Oscilador monoestável

Este circuito tem um funcionamento similar. Quando é iniciado o sistema, todos estão desenergizados. O capacitor começa a se carregar por R. Pessoal, aqui acho que já conseguimos ver como estes circuitos geram nossas ondas quadradas. Agora vamos utilizar elas!

Para conhecer como gerar uma onda quadrada

Pessoal, além do formato que vimos para gerar uma onda quadrada, um circuito bastante comum para sua geração é o CI 555. O vídeo abaixo apresenta o funcionamento do circuito.

2. Sistemas Digitais

Agora vamos falar um pouco dos sistemas digitais. Eles são a junção do funcionamento dos elementos combinacionais (circuitos que tem o valor de sua saída dependente diretamente apenas dos valores das entradas) com elementos de memória.

Murilo como assim elementos de memória?

Quando estamos falando de memória aqui, estamos sinalizando que os nossos circuitos digitais, dependem também do valor de um estado anterior do sistema. Assim, essas informações precisam ficar armazenadas de alguma forma.

Uhhhh, então vamos ter um banco de dados para guardar essas informações?

Vamos guardar elas em um nível mais simples aqui, vamos utilizar elementos que conseguem armazenar 1 bit de informação por vez, os Flip-flops.

Representação de Sistema Digital

Como vimos anteriormente, os Flipflops são implementados utilizando alguns circuitos combinacionais, mas daqui para frente, vamos considerar eles como um elemento de construção no nosso sistema.

Representação de Sistema Digital

Vamos avaliar seu comportamento e depois avançamos com sua utilização. Como estes elementos trazem a capacidade de guardar informação de estado, é importante considerar qual o estado anterior que eles estavam, suas entradas, a presença do sinal do clock e então analisar qual será o valor da saída futura.

No caso do Flip-flop RS, quando suas entradas R e S são mantidas em Zero (0), o valor de suas saídas não se altera. Uma outra característica importante de se observar nas saídas do flip-flop, Qe Q' é que elas são complementares. Portanto quando a saída Q estiver em nível alto (1), a saída Q' estará necessariamente em nível baixo (0). SPOILER: Guardem essa informação, pois ela vai ser importante para compreender um estado deste flip-flop em especial.

Representação de Sistema Digital

Quando a entrada R é colocada em Um (1) e a entrada S é colocada em nível Zero(0), a saída Q é forçada para o nível Zero(0). Aqui é importante levar um comportamento em consideração. Se ela já estiver em nível Zero(0), ela vai manter esse nível. Agora, quando temos o comportamento contrário, a entrada S é colocada em nível Um(1) e a entrada R em nível Um(1), o valor da saída Q vai para Um(1).

Agora chegamos a uma situação complexa: as entrada R e S são colocada em nível Um(1). Neste momento, nosso flip-flop assume um estado indeterminado. O que isso significa? A suas saídas não se estabilizam em um nível lógico, elas ficam trocando de valor enquanto este estado permanecer.

Agora vamos verificar o comportamento do flip-flop JK.

Representação de Sistema Digital

Observando está tabela verdade podemos observar alguns comportamentos semelhantes ao do flip-flop RS. Se as entradas J e K são mantidas em nível Zero(0) as saídas são mantidas em seus estados anteriores, elas não sofrem mudança. Quando a entrada J é acionada e a entrada K não, a saída Q vai para o nível alto. Agora quando temos uma inversão, a entrada J é mantida em nível baixo e a entrada K é mantida em nível alto, a saída Q vai para nível baixo.

Pessoal, temos aqui três (3) operações que nosso elemento de memória já consegue fazer:

  • Latched: mantém o estado atual da informação;
  • Set: coloca a informação em nível alto (1);
  • Reset: coloca a informação em nível baixo (0).

Aqui vem um ponto interessante: o que acontece na situação de indeterminação do flip-flop RS? Qual o comportamento quando ambas as entradas J e K são enviadas para nível alto? Aqui temos a implementação do nossa quarta operação: o Toggle. O estado atual da saída Q é invertido.

Carregamento de Informações

Aqui cabe destacar uma informação interessante. O valor prévio dos flip-flops pode ser definido por um circuito chamado de Preset/Clear. A função destes circuitos é carregar o valor desejado na saída do flip-flop independente do valor do estado anterior. Em geral, eles são sinais ativos em nível baixo, ligado sem Zero.

Circuito de Preset e Reset
Tabela Verdade de Preset e Reset
FlipFlop Tipo D

Existe um tipo especial de flipflop chamado de Tipo D. Este flipflop é muito utilizado por ser capaz de armazenar um bit de informação. Ele pode ser implementado utilizando um flipflop JK, utilizando seu comportamento de Set e Reset.

FlipFlop Tipo D
FlipFlop Tipo D Tabela Verdade

Bom agora temos nossos quatro comportamentos para implementar nossos sistemas digitais.

3. Transferência de Dados

A operação mais comum realizada com os Flipflop, ou também chamados muitas vezes de registradores, é a transferência de dados. Nela, informações são transmitidas de um ou mais flipflops para outros. Desta forma, conseguimos armazenar e deslocar dados em nossos circuitos.

FlipFlop Tipo D Tabela Verdade

Vamos ver como podemos realizar estas operações?

3.1 Transferência Paralela de Dados

A transferência paralela de dados acontece quando os dados são carregados diretamente nos registrados, com uma via dedicada para cada bit de informação. Quando o sinal de clock é enviado, os dados são carregados para os registradores. Este tipo de comunicação é bastante rápida por possuir uma via de comunicação para cada bit de informação e por toda ela ser transmitida de uma única vez. Contudo, este também é o seu maior problema, em situações que precisamos enviar grandes quantidades de dados, utilizar a comunicação paralela pode não ser a melhor opção.

Transferência paralela de dados

3.2 Transferência Serial de Dados: Registradores de Deslocamento

Os registradores de deslocamento são um conjunto de flipflops organizados de mode que os números binários, as informações, armazenadas neles possam ser deslocados de para o próximo flipflop a cada pulso de clock. Essa operação acontece em diversos outros elementos, como quando estamos utilizando um calculadora, ao digitar um novo número, os números anteriores são deslocados para o lado para que ele possa ser inserido no display.

Analisando o circuito abaixo, temos um registrador de dados serial de 4 bits. Cada um dos flipflops do sistema é responsável por armazenar um bit de informação. Este circuito tem uma característica interessante: sua saída pode ser recebida de forma serial (no último registrador - QD), ou de forma paralela, pegando a saída de cada um dos flipflops do sistema. Todos os sinais de clock e clear estão ligados em uma fonte comum, portanto, quando um destes sinais for enviado, ele vai ser percebido por todos os dispositivos do sistema.

Observando a carta de tempos da figura abaixo, temos que todos os flipflops estão em nível zero (0) no instante inicial da análise. Quando o sinal na entrada Serial Data In/ Data Input é colocado para um (1), este é enviado para o primeiro flipflop do conjunto FFA no próximo sinal de clock (momento 1 do sinal de clock). No momento 2 do sinal de clock, este nível um (1) em QA é enviado para o FFB. Como o sinal de entrada está em zero (0), este é enviado para FFA. Os dados são transmitidos sequencialmente a cada pulso de clock no sistema.

Circuito de flipflops para transferência serial de dados
Tabela Verdade do Registrador de Deslocamento Serial

4. Contadores

Os contadores são um tipo de sistema digital que utiliza os elementos que discutimos até aqui para implementar uma contagem. Ele pode ser representado de algumas formas que vamos estudar. Primeiro, é necessário compreender um ponto bastante relevante: até que valor é possível contar. Essa informação é determinada pelo número de flipflops utilizados no sistema. O valor total que pode ser contado é igual a 2 elevado ao número de flipflops no sistema. Portanto, para um sistema como o da figura, onde temos 4 flipflops, conseguimos contar 16 números (0 até 15).

Tabela Verdade do Registrador de Deslocamento Serial

4.1 Contadores Assíncronos

Vamos avaliar este circuito. Ambas as entradas, J e K estão em nível alto, portanto todos estão com o comportamento de Toggle. Um sinal de limpar todos é enviado ao Clear dos flipflops antes de iniciarmos a contagem, assim garantimos que todos eles estão em nível baixo.

Tabela Verdade de Preset e Reset

Como o clock dos flipflops apresenta detecção de borda (esse triangulo de lado), sendo ativado em bordas de decida (quando o sinal vai de um (1) para zero (0), indicado por esse circulo na frente do triangulo), cada vez que o clock muda, em uma borda de descida, o sinal de L1 muda também. O sinal de L1 é também o sinal de clock para o flipflop 2, portanto, quando ele muda com uma borda de decida, o sinal de L2 muda também.

Aqui podemos observar algumas coisas, o sinal L1 tem metade da frequência do sinal do clock. Já o sinal de L2 tem metade da frequência do sinal de L1. Não apenas isso, podemos observar mais um comportamento interessante, quando todos os flipflops estão em nível alto, com mais um sinal de clock, todo o sistema é reiniciado e a contagem é iniciada do valor zero (0) novamente.

Este é um contador assíncrono, os sinais de clock não estão sincronizados, para cima. É possível montar outros tipos de contadores.

Exercício

Como você poderia mudar este contador para contar para baixo (decrescente)?

Os contadores podem ser utilizados em diferentes aplicações, como:

  • Contagem de eventos: contando quantos elementos acionaram um determinado sensor, por exemplo.
  • Medida de tempo: com um sinal de clock conhecido, a contagem pode ser utilizada para gerar intervalos de tempo para o sistema.
  • Conversor Analógico para Digital: uma das formas de realizar está conversão é fazendo aproximações com contadores e comparadores.
  • Divisores de Frequência: como a frequência do sinal de clock é dividida no contador, este comportamento pode ser utilizado parar gerar sinais em diferentes frequências no sistema.

Agora vamos avaliar outro tipo de contador: os síncronos.

4.2 Contadores Síncronos

Os contadores síncronos assim são chamados pois o sinal de clock entre todos os seus elementos está ligado em conjunto. Portanto, eventuais delays que possam surgir da propagação do sinal, mesmo que da ordem de alguns nano ou milissegundos, não serão tão perceptíveis neste tipo de contador.

Tabela Verdade de Preset e Reset

Ao observar o circuito do nosso contador, podemos confirmar algumas coisas: este contador pode contar até o valor 7 (0 até 7), pois possui apenas 3 bits. Agora o que está diferente aqui é o circuito de acionamento dos flipflops. Para compreender este circuito, vamos avaliar a carta de tempo do contador.

Tabela Verdade de Preset e Reset

Ao observar este mapa de tempos, vamos verificar quando cada uma das saídas, Q0, Q1 e Q2 muda de estado, uma delas por vez. Iniciando nossa análise por Q0, podemos ver que ele muda de estado cada vez que o sinal de clock aciona uma nova borda de descida. Portando, podemos deixar suas duas entradas J e K energizadas (ativas em nível alto).

Agora vamos para Q1. Quando observamos os pontos que Q1 muda no mapa, podemos ver que o estado da saída Q0 sempre está em nível alto. Já Q2 varia, sendo considerado tanto em nível alto quanto em nível baixo. O que podemos inferir, utilizando a algebra de Boole, que este sinal pode ser desconsiderado. Assim, o sinal J e K do FF1 podem ser ligados diretamente na saída Q0.

Tabela Verdade de Preset e Reset

Por fim, vamos verificar os pontos que o Q2 muda de estado. Podemos verificar que os sinais Q0 e Q1 precisam estar em nível alto para acionar o FF2. Logo estes sinais são ligados ao J e K deste flipflop.

Tabela Verdade de Preset e Reset

Algo importante que podemos observar é que os contadores síncronos podem ser utilizados para contar qualquer tipo de sequencia. Pessoal, desta forma cobrimos alguns dos elementos de eletrônica digital para estudarmos os dispositivos de comunicação. Verifiquem com calma cada um destes elementos e como eles funcionam. Bons estudos 👓⌨️.