Os Flip-Flops são componentes que, além de serem responsáveis por inspirar o nome da FilipeFlop (hoje 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 O que são Portas Lógicas, pois 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.
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.
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.
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.
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
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.
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
Com este circuito realimentado, se simplificarmos ainda mais, veremos o seguinte circuito:
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.
Agora, quando J = 1 e K = 1 teremos uma inversão da saída anterior
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.
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.
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:
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:
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.
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.
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.
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.
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.
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.
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!
Olá Thiago,
Que bom que gostou do conteúdo!
Agradecemos o aviso, iremos corrigir a tabela.
Abraços!
Vinícius – Equipe MakerHero
Oi Rian,
Muito bom o artigo. Qual o software que usaste para simular o contador de pulsos?
Obrigado!
Olá Tiago,
Que bom que gostou do artigo!
O software utilizado para a simulação foi o Proteus.
Abraços!
Vinícius – Equipe MakerHero