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.
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?
Respostas:
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:
Além disso,
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).
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 :
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)!
fonte
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.
fonte
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.
fonte
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.
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.
fonte
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.
fonte
(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
CLK
pino (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, sejaHIGH
ouLOW
. Quando uma certa combinação deHIGH
s eLOW
s é 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.Observe que isso
Q'
dependeQ
.Um exemplo é a trava SR, que demonstra todas as 4 ações possíveis que uma trava pode executar:
CLK
pino como mencionado acima. Quando oCLK
pino muda de estado (deLOW
paraHIGH
, 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 deHIGH
s eLOW
s dos dados capturados nos pinos de dados. Existem duas ações para oCLK
pino.Novamente, existem 4 ações possíveis que o circuito pode executar na saída.
ESTE NÃO É UM FLIP-FLOP:
Mas por que você pode perguntar? Aquele
E
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.
fonte