Como o Q e o Q 'são determinados pela primeira vez no flip-flop JK?

Dec 01 2020

Minha formação é em Ciência da Computação, e esta é minha primeira vez postando em SE eletrônico. Este é um diagrama de circuito do flip-flop JK.

Não entendo como funciona no início, quando o circuito é iniciado. No meu entendimento, Q e Q 'ainda não têm valor, então como o circuito funciona? Eu estava lendo neste site . Tentei mais três sites, mas não encontrei a explicação.

Respostas

12 hacktastical Dec 01 2020 at 12:41

O flop JK pode aumentar em qualquer estado. Com portões perfeitamente combinados, as chances seriam de 50-50 para cada estado. É responsabilidade do restante do sistema inicializar para um estado conhecido e desejado ou não se importar com isso. O mesmo vale para um flop D.

É o mesmo que ter uma variável não inicializada em um programa. Até que a variável seja definida, quaisquer valores que dependam dela (incluindo ele mesmo) não são conhecidos.

A simulação de hardware deste flop aparecerá como um estado 'X' até que tenha um 0 ou 1 sincronizado nele. Caso contrário, ele permanecerá 'X' se J e K forem 0 (manter) ou 1 (alternar).

No hardware real (como software), coisas desconhecidas podem acontecer dependendo de como a saída de estado desconhecido é usada.

Uma variante desse flop tem entradas diretas e claras para forçar um estado inicial com sinais separados (por exemplo, reset). Nesse caso, um comportamento de inicialização pode ser definido.

MAIS: o diagrama lógico mostrado para o JK é uma porcaria. Esta é na verdade uma trava JK com portão e apresenta um perigo quando as entradas J e K são '1' e o relógio está alto: ela se torna um oscilador de anel devido ao problema de 'corrida ao redor'.

Infelizmente, embora o artigo vinculado discuta isso, ele dá uma resposta hipócrita sobre o uso de um pulso de relógio muito estreito para evitar o problema de 'corrida'. Isso é extremamente enganoso. Os flops JK baseados em circuito integrado usam um par de travas conectadas como 2 estágios ("master-slave" ou "edge-triggered") e não têm o problema de corrida.

Outra reclamação. O diagrama lógico dado para o 74xx73 tipo JK não está apenas incompleto (não mostra set / reset), está errado (74xx73 usa o design "mestre-escravo" de 2 trava, não trava com portão.) Deixei uma nota para o autor da página para eles corrigirem.

Esta resposta discute o problema da trava de bloqueio JK em detalhes. SR FlipFlop Pergunta

E aqui: JK latch, possível erro de Ben Eater?

10 JohnDoty Dec 02 2020 at 00:08

Quando a alimentação é ligada pela primeira vez, isso não pode ser entendido como um circuito digital. Para o circuito físico real, as entradas e saídas podem estar entre 1 e 0, ou até mais . Parte do projeto de primitivas lógicas está escondendo isso do projeto de nível superior, mas é uma "abstração que vaza". Considere o seguinte exemplo simples:

simular este circuito - Esquema criado usando CircuitLab

Agora, claramente, como um circuito digital, se Out1é 0, Out2é 1, ou vice-versa, para sempre. Então, o que acontece na inicialização?

Imagine que ao ligar, ambos Out1e Out2são 0. Nesse estado, Not1e Not2irão direcionar suas saídas para 1. Mas em algum lugar entre 0e 1, eles mudarão, dirigindo de volta para 0. Agora, o circuito nunca é construído em perfeito equilíbrio, e o ruído térmico também está presente, influenciando aleatoriamente neste processo. Então, um dos dois inversores muda a polaridade de saída antes do outro e vence a corrida para 1. Isso leva o outro a zero. O circuito pode se mexer brevemente, não se comportando como uma boa lógica booleana, mas rapidamente se acomoda em um estado lógico bem definido. Com um circuito real, você geralmente obtém um comportamento aleatório tendencioso: um estado é favorecido ao outro, mas há alguma aleatoriedade.

2 ShashankVM Dec 01 2020 at 16:15

Q e Q 'ainda não têm um valor, então como o circuito continua?

Está correto. Não há como saber como o circuito continuaria.

Para corrigir isso, podemos usar uma entrada RESET ou PRESET assíncrona ou síncrona para definir a saída para um estado conhecido . Uma entrada assíncrona não depende do relógio, mas uma entrada síncrona depende do relógio.

Aqui está um circuito de referência para um mestre-escravo JK flip-flop com reset assíncrono e entradas definidas.

Flip-flop JK com RESET assíncrono e entrada SET

simular este circuito - Esquemático criado usando MultisimLive

Este é o circuito de um JK Flip-Flop com um RESET e PRESET assíncronos. Um HIGH em uma entrada RESET assíncrona define Q para LOWe Q 'para HIGH, e esta operação é independente do relógio. Da mesma forma, a HIGHem uma entrada PRESET assíncrona define Q para HIGHe Q 'para LOW.

Trabalhando:

Quando a entrada RESET for HIGH, a saída da porta NOT (U11) será LOW. A saída da porta NAND (U12) tornar-se-á HIGHdesde que uma das entradas seja LOW. Isso fará com que a saída da porta NAND (U13) Q seja definida como LOW. Da mesma forma, outros casos podem ser analisados ​​e são deixados como um exercício para o leitor.

Nota:

O comportamento não é definido para o caso em que PRESET e RESET são HIGH, uma vez que não é permitido (e sem sentido).

Leitura adicional

A seção 2 deste artigo de Clifford Cummings, Don Mills e Steve Golson é particularmente relevante, por isso estou citando-a aqui

Para ASICs individuais, o objetivo principal de uma redefinição é forçar o design do ASIC em um estado conhecido para simulação. Uma vez que o ASIC é construído, a necessidade de o ASIC ter a redefinição aplicada é determinada pelo sistema, a aplicação do ASIC e o design do ASIC. Por exemplo, muitos ASICs de comunicação de caminho de dados são projetados para sincronizar com um fluxo de dados de entrada, processar os dados e, em seguida, gerá-los. Se a sincronização for perdida, o ASIC passa por uma rotina para readquirir a sincronização. Se este tipo de ASIC for projetado corretamente, de forma que todos os estados não usados ​​apontem para o estado “iniciar aquisição de sincronização”, ele pode funcionar corretamente em um sistema sem nunca ser reinicializado. Uma reinicialização do sistema seria necessária na inicialização de tal ASIC se as máquinas de estado no ASIC aproveitassem a redução da lógica “não se preocupe” durante a fase de síntese.

Acreditamos que, em geral, cada flip-flop em um ASIC deve ser redefinido, seja ou não exigido pelo sistema. Em alguns casos, quando flip-flops com pipeline (flip-flops de registro de deslocamento) são usados ​​em aplicações de alta velocidade, a redefinição pode ser eliminada de alguns flip-flops para obter designs de desempenho superior. Este tipo de ambiente requer um número predeterminado de relógios durante o período ativo de reinicialização para colocar o ASIC em um estado conhecido.

ASIC: Circuito Integrado Específico de Aplicação