Flip-flop
Origem: Wikipédia, a enciclopédia livre.
Em eletrônica e circuitos digitais, o flip-flop ou multivibrador biestável é um circuito digital 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 clock, 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 do clock 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 carecterística do flip-flop.
De forma geral podemos representar o flip-flop como um bloco onde temos 2 saídas: "Q" e "Q*" (Q linha), entrada para as variáveis e uma entrada de controle (Clock). A saída Q será a principal do bloco. Este dispositivo possui basicamente dois estados de saída. Para o flip-flop assumir um destes estados é necessário que haja uma combinação das variáveis e do pulso de controle (Clock). Após este pulso, o flip-flop permanecerá neste estado até a chegada de um novo pulso de clock e, então, de acordo com as variáveis de entrada, mudará ou não de estado.
Quatro tipos de flip-flops possuem aplicações comuns em sistemas de clock sequencial: estes são chamados o flip-flop T ("toggle"), o flip-flop S-R ("set-reset"), o flip-flop J-K e o flip-flop D ("delay").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, Qnext, em termos dos sinais de entrada e/ou da saída atual, Q.
O primeiro flip-flop eletrônico foi inventado em 1919 por William Eccles e F. W. Jordan (Radio Review Dez 1919 páginas 143 em diante). 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.
Veja Também: multivibrador monoestável, multivibrador astável.
Índice |
[editar] Tipos de flip-flops
[editar] Flip-flop T
Se a entrada T estiver em estado alto "5 volts", o flip-flop T muda ("toggle") o estado da saída sempre que a entrada de clock sofrer uma modificação. Se a entrada T foi baixa, o flip-flop mantém o valor anterior da saída. Seu comportamento é descrito pela seguinte equação característica:
e pela tabela verdade:
T | Q | Q* |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Q* -> Estado seguinte do Q
[editar] Flip-flop S-R Sincrono
Um filp-flop S-R Sincrono depende da habilitação de suas entradas por um sinal de clock para que essas possam alterar o estado do mesmo. Este sinal pode operar de duas forma: 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 clocked e modo triggered, respectivamente.
O flip-flop "set/reset" ativa (set, muda sua saída para o nível logico 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"
S | R | Q | Q* |
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* | DESCRICAO |
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 saida Q), Qfim (Estado em que a saída deve assumir "estado futuro" após a aplicação das entradas), Qfim* (Qfim Linha)
[editar] Flip-flop J-K
O flip-flop J-K aprimora o funcionamento do flip-flop S-R 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; e a combinação J = K = 1 é um comando para inverter o flip-flop, trocando o sinal de saída pelo seu complemento. Fazendo J = K o flip-flop J-K se torna um flip-flop T.
A equação característica do flip-flop J-K é:
e sua tabela verdade é:
J | K | Q | Q* |
0 | 0 | 0 | X |
0 | 1 | 1 | X |
1 | 0 | X | 1 |
1 | 1 | X | 0 |
Q* -> Estado seguinte do Q
O flip-flop J-K recebeu este nome em homenagem 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. "Jump-kill", também é utilizado como analogia a "set-reset".
[editar] Flip-flop D
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.
A equação característica do flip-flop D é:
A sua tabela verdade é:
D | Q | Q* |
0 | X | 0 |
1 | X | 1 |
Q* -> Estado seguinte do Q
[editar] Usos
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 seqüenciador, o valor de um contador, um caractere ASCII em uma memória de um computador ou qualquer outra parte de uma informação.
Um uso é a construção de máquinas de estado finito a partir da lógica eletrônica. O flip-flop lembra os estado anterior de máquina, e a lógica digital utiliza este estado para calcular o próximo estado.
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-flip pode ser ligada à entrade clock de um segundo flip-flop e assim por diante. A saída final do circuito, considerada com o conjunto de todas as saídas dos flip-flops individuais, é 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.
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, é utilizar 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 previsível.
Divisão de frequência: uma "corrente" 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.
[editar] Temporização e metaestabilidade
Um flip-flop em combinação com um Schmitt trigger pode ser utilizado para a implementação de um arbitro 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 ser 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 exemploa 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.
[editar] Circuitos integrados de Flip-Flops
Podem ser encontrados circuitos integrados (ICs) com um ou dois flip-flop na mesma pastilha. Como exemplo temos o 7473 com um Flip-Flop J-K Master-Slave Dual, na série 7400.