Entendendo os Flip Flops

Entendendo os Flip Flops 4

Os Flip-Flops são componentes que, além de serem responsáveis por inspirar o nome da MakerHero, são extremamente importantes dentro do mundo da eletrônica digital e com toda certeza todo Maker irá esbarrar com um ao longo de seus projetos.

Se você não entende muito bem de eletrônica digital básica e Lógica Booleana, eu recomendo a leitura do artigo Circuitos Lógicos – Lógica Booleana em CI’s, onde eu explico melhor sobre e irá lhe ajudar no entendimento deste artigo.

Os FF’s (Flip-Flops) são normalmente componentes pulsados baseados em um Circuito Sequencial, circuito cujo sinal de saída depende diretamente do estado atual do componente.
Os flip flops são, por sua vez, circuitos lógicos capazes de armazenar um dado de 1 Bit, sendo considerados as formas mais simples de memória dentro da eletrônica. Considerados a base para a montagem de circuitos contadores, somadores, registradores e entre diversas outras lógicas, os flip flops são componentes importantíssimos dentro da eletrônica digital.
Com os flip flops somos capazes de construir circuitos mais complexos como memórias, contadores, registradores de deslocamento e ULA’s (Unidades Lógicas Aritiméticas) entre outros diversos tipos de circuitos, como veremos mais para frente.

Funcionamento do Flip Flop

Agora que entendemos que o flip flop é um componente que armazena 1 Bit de dado, vamos entender como ele faz isso.

O FF é comumente representado por um bloco lógico contendo duas saídas (Q e ~Q) e duas ou três entradas, sendo o mais comum duas entradas de dados e uma de controle chamada Clock.

Funcionamento dos Flip-Flops
Figura 1 – Representação de um Flip Flop

Na Eletrônica Digital a barra acima de uma representação lógica significa que é o seu estado contrário, logo Q e ~Q são obrigatoriamente complementares, quando Q=1 ,~Q=0  e quando Q=0 ,~Q=1.

OBS Importante: Na eletrônica digital, comumente utilizamos a simbologia de um sinal contrário do seu sinal original com uma barra em cima, tal como:

Entretanto, por questões de formatação do texto, vamos utilizar a terminologia do sinal barrado como sendo um til antes do sinal, desta forma:

Flip Flop RS básico

O FF RS é o tipo mais básico e com o funcionamento mais simples de se entender. O seu nome é devido a suas duas entradas, a Set e a Reset, responsáveis por alterar diretamente os estados das saídas.

o circuito lógico de um FF
Figura 2 – Lógica por trás de um Flip Flop

Como podemos observar na Figura 2, o circuito lógico de um flip flop é composto por duas malhas de realimentação, o que permite que a saída anterior influencie diretamente na próxima saída.

Vamos olhar a tabela verdade deste carinha para entender melhor, mas ao invés de tratar a tabela verdade com apenas as entradas, vamos criar uma nova coluna contendo o estado anterior do FF.

tabela verdade
Tabela 1 – Funcionamento do FlipFlop

Na tabela verdade temos todas as 8 possibilidades, sendo Qa a saída anterior e Qf a próxima saída. Se olharmos no circuito, sempre que o Set for 1, temos a saída em 1 e sempre que o Reset estiver em 1 teremos a saída Q em 0, independentemente do estado anterior. Pelo próprio nome dos pinos já podemos deduzir isto, que o pino de Set irá setar a saída para 1 e o pino de Reset irá Resetar a saída para 0.

Entrada Set do FF em nível lógico Alto
Figura 3.1 – Entrada Set do FF em nível lógico Alto

 

Entrada Reset do FF em nível lógico Alto
Figura 3.2 – Entrada Reset do FF em nível lógico Alto

Agora, caso o Set e o Reset estiverem em estado lógico baixo, o Qa  irá definir a saída Q, logo , Qf=Qf, obtendo então a seguinte tabela verdade

Tabela Verdade Flip-Flop
Tabela 2 – Tabela Verdade Flip-Flop

Na figura podemos observar os sinais em vermelho que são os responsáveis por alterar diretamente o estado da saída. Quando ambas as entradas estão em nível lógico baixo, o FF irá se comportar como uma memória, armazenando o último estado que ele se encontra.

Agora, o último caso quando o Set e o Reset assumem nível lógico alto ao mesmo tempo, nós teremos um problema, pois Q=Q , e isso não pode acontecer nos FF e na eletrônica digital, logo será um caso proibido, onde neste modelo de FF RS não conseguimos tratar, mas iremos analisar isto em outros circuitos posteriormente.

Flip Flop RS com entrada de Clock

Agora vamos adicionar mais um pino ao nosso circuito flip flop RS, o pino de Clock, e para isso basta substituir as duas portas NOT por duas portas NAND, das quais serão responsáveis por habilitar os sinais de Set e Reset ao pulsar do sinal de Clock.

Flip-Flop RS com Clock
Figura 4 – Flip-Flop RS com Clock

O sinal de Clock neste caso auxilia a garantir dados confiáveis armazenados no momento certo, auxiliando a evitar o Efeito Bouncing, por exemplo, ou evitando ruídos na leitura de dados na porta de Set e Reset, garantindo o armazenamento do dado correto no tempo correto. O sinal de Clock normalmente é pulsante e representado por uma onda quadrática

Flip Flop JK

O FF JK é um dos mais utilizados na eletrônica, pois diferente do RS ele tem o tratamento para o caso onde S=1 e R=1. No caso do FF JK, as entradas possuem nomes diferentes, onde o pino S será o J e o R será o K.

Além da nomenclatura, o que muda de um para o outro?

Nós falamos que o circuito do flip flop é realimentado, pois a sua saída faz parte dos pinos de entrada na porta NAND. No caso do FF JK, o circuito possui “dupla realimentação”, onde o circuito do JK constitui um circuito de RS realimentado por uma nova porta NAND

Circuito Flip Flop JK
Figura 5 – Circuito Flip Flop JK

Com este circuito realimentado, se simplificarmos ainda mais, veremos o seguinte circuito:

Circuito FF JK Simplificado
Figura 6 – Circuito FF JK Simplificado

Os pinos J e K irão continuar desempenhando o papel como os pinos de Set e Reset, entretanto, com esta modificação teremos um tratamento para o caso onde J = 1 e K = 1 como podemos observar na tabela verdade.

Tabela Verdade FF JK
Tabela 3 – Tabela Verdade FF JK

Agora, quando J = 1 e K = 1 teremos uma inversão da saída anterior

Flip-Flop JK com Preset e Clear
Figura 8 – Lógica de um Flip-Flop JK com Preset e Clear

Flip Flop JK com Preset e Clear

O CI mais comumente encontrado para o FF JK são os com entrada Preset e Clear, que nada mais são do que entradas para setar a saída diretamente para 1 ou 0. A única diferença é a adição de de uma porta de entrada a mais no NAND referente ao circuito FF RS do FF JK, como mostra a imagem.

 

Flip-Flop JK com Preset e Clear

Olhando um único circuito do FF JK não tem diferença entre o os pinos de J e Preset ou K e Clear, visto que eles possuem a mesma funcionalidade, mas em sistemas mais complexos se faz necessário a utilização destes pinos, visto que o Preset e o Clear não são influenciados pelo sinal de clock.

Tabela verdade FF JK com Preset e Clear
Tabela 4 – Tabela verdade FF JK com Preset e Clear

Com a tabela verdade podemos observar mais um caso proibido, que é o caso do Preset e o Clear ativados simultaneamente.

Flip Flops JK Mestre-Escravo

Os FF JK Mestre-Escravo são circuitos mais complexos que eliminam um problema que ainda não falamos neste post: Caso as entradas do circuito mudem durante a duração do pulso de clock as saídas também irão variar de acordo com as entradas, funcionando como um flip flop RS durante o pulso do clock. O JK Mestre-Escravo possui um circuito que impede isso de acontecer, onde o circuito é dividido em 2 partes:

Flip-Flop JK Mestre-Escravo com Preset e Clear
Figura 9 – Flip-Flop JK Mestre-Escravo com Preset e Clear

Este FF possui um circuito JK atuando como mestre e um circuito RS atuando como escravo atuando com o pulso de clock invertido em ambos, logo quando o clock for 1, existe a passagem das entradas J e K para o circuito de entrada do RS, entretanto estas saídas só irão ser registradas no circuito RS quando o Clock for para 0, bloqueando o circuito Mestre e fazendo o circuito de Escravo comutar para as saídas armazenadas no circuito Mestre. Este funcionamento retira a possibilidade de as saídas do FF comutarem diversas vezes com os pulsos na entrada oscilantes, fazendo o FF armazenar somente o último estado das entradas na borda do pulso de Clock.

Flip Flops tipo T

O FF tipo T nada mais é do que um FF JK com uma única entrada interligadas, implicando que J=K:

Circuito FF tipo T representado com um FF JK
Figura 10 – Circuito FF tipo T representado com um FF JK

Como as duas entradas do circuito sempre são iguais, o circuito irá funcionar como um comutador da saída quando a entrada T estiver em nível lógico alto.

Tabela Verdade do FF tipo T
Tabela 5 – Tabela Verdade do FF tipo T

Esses flip flops não são encontrado comercialmente e geralmente é feito a partir de um FF JK quando se faz necessário.

Flip Flops tipo D

Agora vamos falar do último tipo deste post, o FF tipo D. Parecido com o FF tipo T, o circuito do FF tipo D consiste nas duas entradas interligadas, entretanto uma entrada é sempre o sinal negado da outra, logo J ≠ K.

Circuito FF tipo D representado com um FF JK
Figura 11 – Circuito FF tipo D representado com um FF JK

Este circuito é muito importante na eletrônica e é amplamente utilizado na eletrônica para diversos projetos, isso devido ao fato de ele não existir a condição de comutar o estado anterior. Esta característica força o CI a funcionar como uma memória onde o dado sempre será obtido pela entrada D.

Tabela verdade do FF tipo D
Tabela 6 – Tabela verdade do FF tipo D

Contador de Pulsos/Divisor de Clock

Agora que passamos pela parte teórica, vou mostrar um projetinho muito utilizado na eletrônica digital, explicando o seu funcionamento para entendermos os FF de vez!

Com o projeto mais básico, vamos iniciar com um contador de pulsos. O circuito consiste em vários flip flops tipo T interligados em série com as saídas Q conectadas ao pino de Clock do FF seguinte.

 Gif do circuito de um contador de Pulsos
Figura 12 – Gif do circuito de um contador de Pulsos

Neste circuito a entrada do contador de pulsos seria o primeiro Clock, onde ele é responsável por iniciar os pulsos e a cada pulso ele vai somando 1, formando uma saída binária com as saídas de Q1 a Q4.

Este mesmo circuito pode ser considerado como um divisor de clock, onde a saída Q1 tem sempre a metade da frequência do Clock inicial, o Q2 tem um quarto da frequência do Clock inicial, Q3 tem um oitavo e Q4 tem um-dezesseis avos da frequência do Clock inicial. Se olharmos no osciloscópio conseguimos observar claramente essa divisão.

inais de saída do Contador de Pulsos como Divisor de Clock
Figura 13 – Sinais de saída do Contador de Pulsos como Divisor de Clock

Como podemos observar, no sinal de clock Q1 teremos um período 2 vezes maior que o período de entrada, que vamos considerar como sendo 1ms, logo Q1 terá um período de 2ms representado por 1 quadradinho na horizontal do osciloscópio. Q2 irá ter um período de 4ms (2 quadradinhos), Q3 terá um período de 8ms(4 quadradinhos) e Q4 terá um período de 16ms(8 quadradinhos). Como frequência é igual ao inverso do período em segundos, teremos um divisor de frequência.

A teoria pode parecer um pouco complicada, mas você pode replicar este projetinho e analisar com LED’s, vendo o impacto que teria as saídas em cada LED. Para este projeto, utilize um CI 555 para gerar o sinal de Clock e adicione os CI’s FF tipo JK 4027. Caso queira saber um pouco mais sobre o 555, recomendo a leitura do post Entendendo o 555 – O canivete suíço da eletrônica.

Aprofundando um pouco mais

Com este projetinho nós terminamos a teoria de Flip Flops, mas não pense que acabamos por aqui. Os circuitos combinacionais utilizando estes componentes são amplamente utilizados em circuitos eletrônicos, tais como os Registradores de Deslocamento, Conversores de Sinal Série-Paralelo ou Contadores Digitais, mas estes assuntos ficarão para outros posts. Fica como um desafio a pesquisa e o desenvolvimento destes circuitos aos amantes de eletrônica.

 

 

Faça seu comentário

Acesse sua conta e participe

4 Comentários

  1. Olá!

    Muito bom o post, me ajudou a dar uma revisada no funcionamento dos flip-flop. Porém tem um erro na tabelas verdade do flip-flop tipo D. Em ambas está mostrando que a segunda saída é 0, quando deveria ser 1.

    De qualquer forma, ótimo conteúdo. Muito bem explicado. Obrigado!

    1. Olá Thiago,

      Que bom que gostou do conteúdo!

      Agradecemos o aviso, iremos corrigir a tabela.

      Abraços!
      Vinícius – Equipe MakerHero

  2. Oi Rian,

    Muito bom o artigo. Qual o software que usaste para simular o contador de pulsos?

    Obrigado!

    1. Olá Tiago,

      Que bom que gostou do artigo!

      O software utilizado para a simulação foi o Proteus.

      Abraços!
      Vinícius – Equipe MakerHero