Flip-flop
Em eletrônica e circuitos digitais, um flip-flop, multivibrador biestável, ou simplesmente biestável, é um circuito digital que pulsado é capaz de servir como uma memória de um bit. Um flip-flop tipicamente inclui zero, um ou dois sinais de entrada, um sinal de relógio, e um sinal de saída, apesar de muitos flip-flops comerciais proverem adicionalmente o complemento do sinal de saída. Alguns flip-flops também incluem um sinal da entrada clear, que limpa a saída atual. Como os flip-flops são implementados na forma de circuitos integrados, eles também necessitam de conexões de alimentação. A pulsação ou mudança no sinal de relógio faz com que o flip-flop mude ou retenha seu sinal de saída, baseado nos valores dos sinais de entrada e na equação característica do flip-flop.[1]
De forma simplificada a representar de um circuito flip-flop como um bloco obtendo 2 saídas: Q1 e Q2, entrada para as variáveis e uma entrada de controle (Clock). A saída Q1 será a principal do bloco. Este sistema é composto por basicamente dois estados de saída. Podendo assumir um destes estados sendo necessário que haja uma combinação das variáveis e do pulso de controle (Clock). Alternando seu valor por pulsos de clock, permanece neste estado até a chegada de um novo pulso de clock e, então, de acordo com as variáveis de entrada, alternará ou não de estado anterior.[1]
Quatro tipos de flip-flops possuem 8 aplicações comuns em sistemas de clock não-sequencial: flip-flop T ("toggle"), flip-flop S-R ("set-reset"), flip-flop J-K e o flip-flop D ("data").O comportamento de um flip-flop é descrito por sua equação característica, que prevê a "próxima" (após o próximo pulso de clock) saída, , em termos dos sinais de entrada e/ou da saída atual, .[1]
O primeiro flip-flop eletrônico foi inventado em 1919 por William Eccles e Frank Wilfred Jordan. Ele foi inicialmente chamado de circuito de disparo Eccles-Jordan. O nome flip-flop posterior descreve o som que é produzido em um alto-falante conectado a uma saída de um amplificador durante o processo de chaveamento do circuito.[1]
Tipos de flip-flops
[editar | editar código-fonte]Flip-flop Tipo T
[editar | editar código-fonte]Se T estiver em estado alto, o flip-flop T (toggle) muda o estado sempre que a entrada de clock sofrer uma modificação. Se a entrada T for baixa, o flip-flop mantém o valor do seu estado. Seu comportamento é descrito pela seguinte equação característica:[1]
- (expandindo o operador XOR)
e pela tabela verdade[2]:
T | Q | Q* |
0 | 0 | 0 |
1 | 1 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
Q* → Estado seguinte do Q
Flip-flop SR Síncrono
[editar | editar código-fonte]Um flip-flop S-R Sincrono depende da habilitação de suas entradas por um sinal de clock para que essas possam alterar o estado dele. Este sinal pode operar de duas formas: mantendo as entradas ativas durante todo o período do pulso ou apenas no instante da mudança de estado do sinal de clock. Essas duas formas de operação podem ser denominadas como modo clock e modo trigger, respectivamente.[1]
O flip-flop "set/reset" ativa (set, muda sua saída para o nível lógico 1, ou retém se este já estiver em 1) se a entrada S ("set") estiver em 1 e a entrada R ("reset") estiver em 0 quando o clock for mudado. O flip-flop desativa (reset, muda sua saída para o nível lógico 0, ou a mantém se esta já estiver em 0) se a entrada R ("reset") estiver em 1 e a entrada S ("set") estiver em 0 quando o clock estiver habilitado. Se ambas as entradas estiverem em 0 quando o clock for mudado, a saída não se modifica. Se, entretanto, ambas as entradas estiverem em 1 quando o clock estiver habilitado, nenhum comportamento particular é garantido. Isto é comumente escrito na forma de uma tabela verdade:[1]
Q | Q* | S | R |
0 | 0 | 0 | X |
0 | 1 | 1 | 0 |
1 | 0 | 0 | 1 |
1 | 1 | X | 0 |
Q* → Estado seguinte do Q
Exemplo com a tabela verdade mostrando o estado anterior:
S | R | Qant | Qfim | Qfim* | Descrição |
0 | 0 | 0 | 0 | 1 | Fixa Qfim = Qant |
0 | 0 | 1 | 1 | 0 | Fixa Qfim = Qant |
0 | 1 | 0 | 0 | 1 | Fixa Qfim = 0 |
0 | 1 | 1 | 0 | 1 | Fixa Qfim = 0 |
1 | 0 | 0 | 1 | 0 | Fixa Qfim = 1 |
1 | 0 | 1 | 1 | 0 | Fixa Qfim = 1 |
1 | 1 | 0 | 1 | 1 | Não Permitido |
1 | 1 | 1 | 1 | 1 | Não Permitido |
Legenda: S (Set), R (Reset), Qant (Estado anterior da saída Q), Qfim (Estado em que a saída deve assumir "estado futuro" após a aplicação das entradas), Qfim* (Qfim Linha)
Flip-flop J-K
[editar | editar código-fonte]O flip-flop J-K tem a prioridade de aprimorar o funcionamento circuito flip-flop R-S interpretando a condição S = R = 1 como um comando de inversão. Especificamente, a combinação J = 1, K = 0 é um comando para ativar (set) a saída do flip-flop; a combinação J = 0, K = 1 é um comando para desativar (reset) a saída do flip-flop alternando a condição inicial; e a combinação J = K = 1 é um comando para inverter o flip-flop, trocando o sinal de saída pelo seu atualizado. Fazendo J = K o flip-flop J-K se torna um flip-flop T(Toggle).[1]
A equação característica do flip-flop J-K é:
e sua tabela verdade é:
Operação do Flip Flop JK | ||||||||
---|---|---|---|---|---|---|---|---|
Tabela Verdade | ||||||||
J | K | Qpróx | Comentário | |||||
0 | 0 | Qanterior | mantém (hold) | |||||
0 | 1 | 0 | reestabelece (reset) | |||||
1 | 0 | 1 | estabelece (set) | |||||
1 | 1 | Qanterior | alterna (Toggle) |
Q* → Estado anterior do Q
O nome J-K é muitas vezes atribuída a Jack Kilby, o homem que inventou o circuito integrado, em 1958, pelo qual ele recebeu o prêmio Nobel em Física no ano 2000, embora a veracidade desta afirmação seja discutida.[3] Jump-kill também é utilizado como analogia a set-reset.[4]
Flip-flop D (Data)
[editar | editar código-fonte]O flip-flop D ("Data" ou dado, pois armazena o bit de entrada) possui uma entrada, que é ligada diretamente à saída quando o clock é mudado. Independentemente do valor atual da saída, ele irá assumir o valor 1 se D = 1 quando o clock for mudado ou o valor 0 se D = 0 quando o clock for mudado. Este flip-flop pode ser interpretado como uma linha de atraso primitiva ou um hold de ordem zero, visto que a informação é colocada na saída um ciclo depois de ela ter chegado na entrada.[1]
A equação característica do flip-flop D é:
A sua tabela verdade é:
D | Q | Q* |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 1 |
1 | 1 | 1 |
Q* → Estado posterior do
O flip-flop pode ser utilizado para armazenar um bit, ou um digito binário de informação. A informação armazenada em um conjunto de flip-flops pode representar o estado de um sequenciador, o valor de um contador, um caractere ASCII em uma memória de um computador ou qualquer outra parte de uma informação.[1]
Um uso é a construção de máquinas de estado finito a partir da lógica eletrônica. O flip-flop lembra o estado anterior de máquina, e a lógica digital utiliza este estado para calcular o próximo estado.[1]
Flip-flop T (toggle)
[editar | editar código-fonte]O flip-flop "T" é útil para contagens. Sinais repetidos à entrada de clock farão com que o flip-flop mude seu estado a cada transição de nível alto-para-baixo da entrada de clock. Se sua entrada T for "1", a saída de um flip-flop pode ser ligada à entrada clock de um segundo flip-flop e assim por diante até a saída final do circuito, considerada com o conjunto de todas as saídas dos flip-flops individuais. A esta montagem formada, caracterizamos como uma contagem, em sistema binário, do número de ciclos da primeira entrada de clock, até um limite máximo de 2n-1, onde n é o número de flip-flops utilizados no circuito.[1]
Um dos problemas com este tipo de contador (chamado de contador de ripple ou contador de pulsos) é que a saída é brevemente inválida conforme ocorre a mudança de pulso através da lógica. Existem duas soluções para este problema. A primeira é retirar uma amostra da saída apenas quando a mesma for válida. A segunda, mais utilizada, é montar um tipo diferente de contador, chamado de contador síncrono. Este utiliza uma lógica mais complexa para garantir que as saídas do contador mudem todas a um mesmo período de tempo.[1]
Divisão de frequência: um conjunto de flip-flops "T" utilizados da maneira descrita acima irá funcionar de modo a dividir a frequência da entrada por 2n na saída do último flip-flop, aonde n é o número de flip-flops utilizados entre a entrada e a saída.
Os registradores podem ser utilizados para armazenar dados nos computadores. Um flip-flop "D" pode representar um dígito de um número binário. A unidade de controle do computador envia o sinal de clock no momento certo para poder capturar estes dados.
Pela família CMOS o flip-flop D é representado pelo integrado 4013 na série 4000 e pelos integrados versão HC da série 74XX.[5]
Temporização e metaestabilidade
[editar | editar código-fonte]Um flip-flop em combinação com um Schmitt Trigger pode ser utilizado para a implementação de um árbitro em circuitos assíncronos.
Os flip-flop com clock estão predispotos a um problema chamado de metaestabilidade, que ocorre quando um dado ou uma entrada de controle está mudando no momento do pulso de clock. O resultado é que a saída pode se comportar imprevisivelmente, levando muito tempo mais que o seu normal para se estabilizar no seu estado correto, ou mesmo oscilando uma série de vezes antes de se estabilizar. Gerando por exemplo a queima de um equipamento dentro de um sistema de um computador, isto pode levar a uma corrupção dos dados ou travamento.
Em muitos casos, a metaestabilidade nos flip-flops pode ser evitada garantindo-se que as entradas de dados e controle sejam mantidas constantes para períodos especificados antes e após o pulso de clock, este períodos são chamados de tempo de setup (tsu) e tempo de hold (th) respectivamente. Estes tempos são especificados na documentação (data sheet) do dispositivos, e são tipicamente entre alguns nanosegundos e algumas centenas de picosegundos nos dispositivos modernos.
Infelizmente, não é sempre possível atingir os critérios de setup e hold, pois o flip-flop pode estar conectado a um sinal em tempo real que pode mudar a qualquer momento, fora do controle do projetista. Neste caso, o melhor que se pode fazer e reduzir a probabilidade de erro a um certo nível, dependendo da fidelidade requerida do circuito. Uma técnica para reduzir a metaestabilidade é conectar-se dois ou mais flip-flops em uma corrente, de modo que a saída de um alimenta a entrada de dados do outro, e todos os dispositivos compartilham um clock comum. Com este método, a probabilidade de um evento metaestável pode ser reduzida a um valor desprezível, mas nunca a zero.
Existem flip-flop com metaestabilidade reduzida, os quais trabalham reduzindo os tempos de setup e hold o máximo possível, porém mesmo estes não podem eliminar o problema completamente. Isto ocorre porque a metaestabilidade é mais que uma consequência do projeto do circuito. Quando as transições no clock e nos dados estão em um intervalo de tempo próximo, o flip-flop é forçado a escolher qual dos eventos ocorrerá primeiro. Entretanto devido às altas velocidades de processamento, existe sempre a possibilidade de que os eventos da entrada estejam tão próximos que ele não possa detectar qual ocorreu primeiro. Desta forma é logicamente impossível construir um flip-flop totalmente livre de metaestabilidade.
Outro valor importante para um flip-flop é o atraso de clock-a-saída (clock-to-output delay, o símbolo comum é tCO) ou atraso de propagação (tP), que é o tempo que o flip-flop leva para mudar a sua saída após o sinal de clock. O tempo de uma transição de alto-para-baixo (high-to-low transition tPHL) é algumas vezes diferente do tempo de uma transição de baixo-para-alto (low-to-high transition tPLH).
Quando se conectam flip-flop em uma corrente, é importante se assegurar que o tCO do primeiro flip-flop é maior que o tempo de hold (hold time tH) do segundo flip-flop, caso contrário o segundo flip-flop não irá receber os dados confiavelmente. A relação entre tCO e tH é normalmente garantida se ambos os flip-flops são do mesmo tipo.
Circuitos integrados de Flip-Flops
[editar | editar código-fonte]Podem ser encontrados circuitos integrados (CIs) com um ou dois flip-flops na mesma pastilha. Como exemplo, temos o 7476, internamente com dois Flip-Flops J-K Master-Slave, na série 7400 (TTL).[5]
- ↑ a b c d e f g h i j k l m Braga, Newton C. «Eletrônica Digital - Os Elementos Biestáveis». Instituto NCB
- ↑ Mano, M. Morris; Kime, Charles R. (2004). Logic and Computer Design Fundamentals, 3rd Edition. Upper Saddle River, NJ, USA: Pearson Education International. pp. pg283. ISBN 0-13-1911651
- ↑ «Flip-flops JK». Electricity - Magnetism
- ↑ «Compreender como funciona o flip-flop JK e as suas variações». Filenemo
- ↑ a b Braga, Newton C. «Eletrônica Digital - Flip-Flops e Funções Integradas em CIs». Instituto NCB