O que é um flip flop?

25

Parece haver várias definições diferentes de chinelos e fechos por aí, algumas das quais são contraditórias.

O livro de texto de Ciência da Computação do curso que eu ensino é provavelmente o mais confuso (na verdade, tenho pouca fé no livro, porque está errado em vários lugares).

Sinto-me à vontade com o funcionamento das travas (SR, gated SR, gated D) e a diferença entre dispositivos de nível acionado e acionado por borda, pelo menos em termos de portas lógicas e diagramas de tempo. No entanto, ainda estou procurando uma definição concisa de um flip-flop e de uma trava.

É nisso que acredito até agora:

“Um flip flop é um dispositivo biestável acionado por borda que pode armazenar 1 bit”.

"Uma trava é um dispositivo biestável acionado por nível que pode armazenar 1 bit."

Eu já dei uma olhada nas postagens anteriores neste site sobre isso e, por mais esclarecedoras que sejam, ainda estou procurando algo definitivo.

Meu entendimento atual, que quero verificar, está nos diagramas abaixo…

Lado a lado são o que eu entendo são duas implementações de uma trava D bloqueada por nível.

Abaixo disso, há um detector de borda positivo, naquele breve momento em que a porta NOT ainda não respondeu à entrada de mudança de baixa para alta, a saber, a borda ascendente (vermelho é 1 azul e 0).

No último diagrama, o detector de borda foi instalado em uma trava D datada e é isso que o torna um flip-flop.

insira a descrição da imagem aqui

O último diagrama é realmente um flip flop ou ainda é apenas uma trava?

E por que precisamos da versão master slave, de que este dispositivo é muito mais simples?

Drummy
fonte
11
@DanielTork, por que não fazer disso uma resposta?
Icy
10
Na Austrália e na Nova Zelândia, eles são uma forma de sapatos com a parte de cima aberta, geralmente usados ​​na praia ou no clima agradável. ;)
KyranF
3
Nos EUA também. Mas costumávamos chamá-los de tangas, mas isso se refere a algo diferente agora ;-)
Pausado até novo aviso.
11
Agora eu quero ver um diagrama de circuito desenhado com as sandálias conhecidas como flip-flops ...
keshlam
11
@immibis sai daqui ya kiwi podre!
KyranF

Respostas:

11

Hoje tenho pensado muito nessa definição.

Como outros apontaram, os significados exatos variam. Além disso, você provavelmente verá mais pessoas errando, mesmo neste site, do que certo. Eu não ligo para o que a wikipedia diz!

Mas em geral:

  • Um flip-flop mudará seu estado de saída no máximo uma vez por ciclo de clock.
  • Uma trava mudará de estado quantas vezes os dados forem transferidos durante sua janela de transparência.

Além disso,

  • Um flip-flop é muito seguro. Quase à prova de idiotas. Por esse motivo, as ferramentas de síntese geralmente usam chinelos. Porém, eles são mais lentos que uma trava (e consomem mais energia).
  • As travas são mais difíceis de usar corretamente. Mas eles são mais rápidos que chinelos (e menores). Assim, os projetistas de circuitos personalizados geralmente "espalham o flip flop" pelo bloco digital (uma trava em cada extremidade com a fase oposta) para extrair alguns picossegundos extras de um arco de tempo ruim. Isso é mostrado na parte inferior da postagem.

Um flip-flop é tipicamente caracterizado por uma topologia mestre-escravo. Trata-se de dois acoplamentos (pode haver lógica entre), travas de fase opostas consecutivas (às vezes no setor chamado L1 / L2).

Isso significa que um flip-flop consiste inerentemente em dois elementos de memória: um para segurar durante o ciclo baixo e outro para segurar durante o ciclo alto.

Uma trava é apenas um único elemento de memória (trava SR, trava D, trava JK). Só porque você introduz um relógio para bloquear o fluxo de dados no elemento de memória não o torna um flip flop, na minha opinião (embora possa fazê-lo agir como um: ou seja, mais borda ascendente acionada). Apenas o torna transparente por um período específico de tempo.

Abaixo, é mostrado um verdadeiro flip-flop criado a partir de duas travas SR (observe os relógios de fase opostos).

verdadeiro d ff

E outro verdadeiro flip-flop (esse é o estilo mais comum no VLSI) de duas travas D (estilo do portão de transmissão). Observe novamente os relógios da fase oposta :

verdadeiro estilo flip flop tg

Se você pressionar o relógio com uma trava com rapidez suficiente, ele se parecerá com um comportamento de flip-flop (trava de pulso). Isso é comum no design de caminhos de dados de alta velocidade devido ao menor atraso de D-> Out e Clk-> Out, além do melhor tempo de configuração concedido (o tempo de espera também deve aumentar, pequeno preço a pagar) pela transparência durante a duração de o pulso. Isso faz com que seja um flip flop? Na verdade não, mas com certeza parece que funciona como um!

No entanto, é muito mais difícil garantir o trabalho. Você deve verificar em todos os cantos do processo (Nmos rápidos, Pmos lentos, tampa de fio alto, fio baixo r; como exemplo de um) e todas as tensões (baixa tensão causa problemas) se o pulso do seu detector de borda permanece amplo o suficiente para realmente abrir trava e permitir a entrada de dados.

Para sua pergunta específica, por que razão é considerada uma trava de pulso em vez de um flip-flop, é porque você realmente possui apenas um elemento de armazenamento de bits sensível a um único nível. Embora o pulso seja estreito, ele não forma um sistema de bloqueio e represa que cria um flip flop.

Aqui está um artigo que descreve uma trava de pulso muito semelhante à sua pergunta. Uma citação pertinente: "Se a forma de onda do relógio de pulso acionar uma trava, a trava é sincronizada com o relógio de maneira semelhante ao flip-flop acionado por borda, porque as bordas ascendentes e descendentes do relógio de pulso são quase idênticas em termos de tempo".

EDIT Para maior clareza, incluí um gráfico do design baseado em trava. Há uma trava L1 e trava L2 com lógica entre elas. Esta é uma técnica que pode reduzir atrasos, uma vez que uma trava tem um atraso menor que um flip-flop. O flip-flop é "separado" e a lógica é colocada no meio. Agora, você economiza alguns atrasos no gate (comparado a um flip flop em cada extremidade)!

design baseado em trava

jbord39
fonte
"Caracterizado por uma topologia mestre-escravo" - parece mais um detalhe de implementação, em vez de uma característica comportamental definidora. Comportamentalmente, um flip-flop (por sua definição) é uma memória de bit único que é acionada por borda. Na prática, a mágica de implementação necessária para aproximar o disparo de borda requer um segundo elemento de armazenamento!
Oliver Charlesworth
11
@ Oliveriverles: Bem, é um detalhe de implementação. Além de detalhes físicos, comportamentais, estruturais e topológicos. Você não pode simplesmente chamar uma trava de flip-flop porque parece uma. Você pode se safar, mas para usá-los ao máximo, você precisa saber a diferença. Se você separar um flip-flop, terá duas travas separadas da fase oposta. Você pode encher a lógica no meio. Isso é mais rápido do que ter um flip flop em cada extremidade. Ele também permite "empréstimo de tempo" através de um limite de ciclo, que é um conceito muito importante para projetos de alta velocidade.
precisa saber é o seguinte
Aqui estão algumas fotos mais úteis dos DFF que podem ajudar, veja a última. O DFF publicado acima é confuso devido ao travamento em fases opostas do relógio (ou seja, travas mestres na borda ascendente, travas escravas na queda). electronics.stackexchange.com/a/84247/42957
mrbean
Seria bom ver um exemplo de um verdadeiro flip-flop de fase monofásica ("TSPC" DFF) aqui.
mrbean
Aqui está um ótimo powerpoint: bwrcs.eecs.berkeley.edu/Classes/icdesign/ee241_s07/Lectures/…
mrbean
1

Muitas pessoas se referem a dispositivos com relógio como "chinelos" e dispositivos sem relógio como trincos. Quando eu aprendi, eram "chinelos com relógio" e "chinelos". Qualquer um pode ser acionado pela borda.

Há ambiguidade suficiente que, quando importante, depende de números de peça, folhas de dados, diagramas de tempo e não descrições de palavras.

Scott Seidman
fonte
Então um GTO-SCR também é um flip-flop?
precisa saber é o seguinte
1

Obrigado a todos que responderam à minha pergunta. Como esperado, há alguma discordância. Infelizmente, a semântica geralmente é mais importante do que a compreensão quando se trata de exames. Se eu precisar argumentar com uma banca de exame por marcar incorretamente o trabalho de um estudante de Ciência da Computação da A Level (e já fiz isso no passado), quero estar em uma posição forte. Pensei em compartilhar com você algumas páginas do livro oficial do curso A Level.

O primeiro diagrama é uma trava baixa do SR ativa. O livro chama isso de flip-flop.

No texto, o livro diz "Ao usar dois flip-flops, podemos criar um circuito chamado flip-flop do tipo D, que usa um circuito controlado por relógio para controlar a saída, atrasando-a em um pulso de relógio. OD representa atraso . " Este texto parece estar se referindo à configuração mestre / escravo. O segundo diagrama (figura 14.2) é rotulado como um flip-flop do tipo D. Na verdade, é uma trava D ativa alta.

Não é muito útil!

Vou concluir: "Um flip-flop é tipicamente caracterizado por uma topologia mestre-escravo". como jbord39 sugeriu, com a ressalva de que o termo flip-flop é frequentemente usado para significar uma trava acionada por arestas e, às vezes, qualquer tipo de trava. Eu acho que é daí que vem o livro, embora não chegue lá de forma convincente.

Mais uma vez obrigado a todos.

insira a descrição da imagem aqui insira a descrição da imagem aqui

Drummy
fonte
2
Sim, esse livro é totalmente enganador. Além disso, D significa Data, não demora ... lol A parte importante é entender como eles funcionam e não se envolver demais na semântica. Expliquei a semântica como me foram explicadas nas empresas em que trabalhei. Pode variar de acordo com a área e o nível de experiência (especialmente em relação às partes internas dos portões lógicos, que é nisso que trabalho).
precisa saber é o seguinte
Eu tenho que concordar com jbord39. Como mostrei na minha resposta, essa entrada E somente permite que os dados afetem a saída. No entanto, você tem livros que consistem em informações incorretas. Muito chato, na verdade.
precisa saber é o seguinte
1

Um flip-flop é diferente de uma trava. Ambos são circuitos biestáveis, mas na verdade são duas coisas diferentes.

A trava tem um pino de habilitação e escuta as entradas / entradas de dados somente quando esse pino está alto. Quando está baixo, a trava congela e memoriza seu estado. Agora, mesmo que você manipule as entradas, elas não reagirão.

O flip-flop contém um pino de relógio, que reage apenas na mudança de pulsos (mudanças de nível). Pense em uma onda quadrada. O tempo transitório entre desligar e ligar; desligar e ligar é o tempo em que o circuito reage aos sinais de entrada. Só então é possível mudar, não quando o pino estiver estável e totalmente ligado.

Tempo de reação do flip-flop

Observe que as linhas verdes representam o período em que são ouvidas e as linhas vermelhas o período em que não são. A trava permite a entrada apenas durante os períodos mostrados pelas linhas vermelhas mais altas.

O SR autônomo não é um circuito viável na prática.

Créditos ao jbord39 por apontar o erro. Imagem retirada de radio-elctronics.com e editada.

Daniel Tork
fonte
Um flip-flop não é uma trava, mas pode ser construído a partir de duas travas da fase oposta, uma da outra.
precisa saber é o seguinte
Eu editei a resposta @ jbord39
Daniel Tork
Obrigado, @ Peter Mortensen.I não os vi.
Daniel Tork
0

Os termos em que você os usa na sua pergunta estão 100% alinhados com o que ouvi usado no contexto do design de CI analógico. As travas têm um sinal de ativação sensível ao nível, enquanto os chinelos têm sinais de ativação sensíveis à borda chamados de 'relógio'. Eu notei alguns lugares online ou em alguns livros que parecem usar o termo flip flop para ambos os tipos, o que pode fazer sentido se você pensar no estado do circuito "flip flopping" entre dois pontos estáveis, mas sempre que os designers estão falando sobre Nos circuitos em que trabalho, as travas são sensíveis ao nível e os flip-flops (ou também apenas "flops") são sensíveis às arestas.

Sobre sua outra questão de projetar um flip-flop como uma trava com um detector de borda versus um par de trincas mestre-escravo. De qualquer maneira, pode funcionar, desde que haja atraso suficiente no seu detector de borda. As travas terão uma quantidade mínima de tempo de ativação. Eu suspeito que seja apenas mais difícil fazer um flip-flop de alta velocidade usando a técnica do detector de borda, e o tempo de configuração / espera pode variar mais com o processo / tensão / temperatura.

Restabelecer Monica
fonte
Eu me pergunto por que raramente vejo flops implementados com par mestre / escravo com limites lógicos que não se sobrepõem (para que uma tensão de entrada abaixo de VDD / 4 habilite o mestre e uma tensão acima de VDD / 2 habilite o escravo. Se vários flops em cascata forem alimentado um lentamente-subindo ou sinal de entrada ruidoso, o comportamento seria fiável fornecido apenas que, em um flanco ascendente, nenhum deles ver uma tensão abaixo de VDD / 4 após ter visto qualquer uma voltagem acima de VDD / 2.
supercat
@supercat Você está falando de histerese?
Cort Ammon - Restabelece Monica
@ CortAmmon: Não - algo melhor. Se dois flip-flops com gatilhos Schmidt independentes estiverem em cascata, poderá ocorrer uma operação incorreta se o primeiro flop reconhecer a borda do relógio e propagar a entrada até a saída antes que o segundo flop reconheça sua borda do relógio. Se os flip-flops usarem limites de entrada divididos, o segundo flop capturaria sua entrada quando o relógio subir acima do limite inferior, mas a saída do primeiro flop não mudará até que o relógio atinja o limite superior.
Supercat
0

(Pule para o final se quiser saber se o último circuito do OP é flip-flop ou trava.)

Em termos básicos, um flip-flop é um arranjo de portas lógicas (ou componentes) que permite o travamento de 2 estados junto com um pino de relógio que permite essas alterações de estados.

Agora, aqui está a diferença entre um flip-flop e uma trava. As travas são assíncronas enquanto os flip-flops são síncronos.

  • Travas assíncronas não exigem um pino de atualização, que seria chamado de CLKpino (abreviação de relógio) em um flip-flop. Tudo o que eles se importam é se as entradas estão em um estado específico, seja HIGHou LOW. Quando uma certa combinação de HIGHs e LOWs é instigada na entrada, é quando o circuito decide executar uma ação e o resultado desejado é retornado "imediatamente". Existem 4 ações possíveis em uma trava.

    1. Fazer nada
    2. Defina QcomoHIGH
    3. Defina QcomoLOW
    4. O estado inválido (supostamente inverte o valor de Q)

    Observe que isso Q'depende Q.

Um exemplo é a trava SR, que demonstra todas as 4 ações possíveis que uma trava pode executar: Trava RS

  1. Quando S é LOWe Ré LOW, nada muda.
  2. Quando Sé HIGHeR é LOW, Qestá definido como HIGH.
  3. Quando Sé LOWeR é HIGH, Qestá definido como LOW.
  4. Quando Sé HIGHe Ré HIGH,Q é invertido, a um ritmo "imprevisível". Este estado é inválido.
  • Os flip-flops síncronos permitem definir um valor para pinos de dados. Isso significa que ele se preocupa apenas com o estado desses pinos. No entanto, o circuito ainda não decidiu executar nenhuma ação na saída. Você tem o CLKpino como mencionado acima. Quando o CLKpino muda de estado (de LOWpara HIGH, vice-versa ou até ambos), os pinos de dados são "capturados" e o flip-flop executa uma ação com base na combinação de HIGHs e LOWs dos dados capturados nos pinos de dados. Existem duas ações para oCLK pino.
  1. Fazer nada
  2. "Capture" dados dos pinos de dados e execute uma ação na saída com base nos valores dos pinos de dados naquele momento específico.

Novamente, existem 4 ações possíveis que o circuito pode executar na saída.

  1. Fazer nada
  2. Defina QcomoHIGH
  3. Defina QcomoLOW
  4. Inverta o valor de Q(agora é válido porque só faz uma vez)

ESTE NÃO É UM FLIP-FLOP:

insira a descrição da imagem aqui

Mas por que você pode perguntar? AqueleE pino não é um pino de relógio. Os pinos do relógio permitem que o circuito analise as informações dos pinos de dados UMA vez que essas informações são enviadas como instruções para executar ações específicas na saída. No entanto, ativar pinos como este permite que o circuito analise as informações dos pinos de dados, desde que sejam mantidos altos e estejam constantemente configurando os valores da saída. Assim, é uma trava. (Agradecemos a jbord39 por apontar meu erro).

Portanto, o flip-flop é como uma trava, exceto que você precisa de uma etapa extra de "confirmação", que é a CLK alfinete.

Então, esse último circuito da pergunta do OP é um flip-flop? Tente manter o C alto e veja se a saída muda quando você altera o valor de D. Se a saída mudar, ela deve ser chamada de ativar e é uma trava. Mas se a saída não mudar (nesse caso), é um flip-flop.

As imagens são provenientes da Wikipedia.

Bradman175
fonte
Não, muitas travas têm pinos de relógio. nxp.com/documents/data_sheet/74HC_HCT373.pdf de fato o circuito que você mostrou é um não trava um flip flop ...
jbord39
@ jbord39? Que pino do relógio? E ativar o pino é diferente de um pino do relógio.
precisa saber é o seguinte
@ jbord39 e whoops você está certo. Os dois circuitos inferiores são trincos. Por favor, reconsidere minha resposta.
precisa saber é o seguinte
Deixe-me ver se eu entendo. Flops flops verificam cada entrada e ligam uma saída e uma trava verifica o relógio e age se for 1, produzindo o valor de D. mas a trava D é uma trava verdadeira.
precisa
@DanielTork O problema é que você tem vários "relógios" e um relógio não pode alternar entre pinos e também serve como um pino de dados.
precisa saber é o seguinte