Perché non posso creare flip-flop nei simulatori di logica?

Jan 03 2021

Ho giocato con alcuni simulatori di logica e non capisco perché i flip-flop non funzionano. Sto cercando di implementare un flip-flop T con porte NAND:

Tutti i simulatori che ho provato danno lo stesso risultato. O Q o Q 'prende lo stato dell'orologio invece di commutare sul fronte di salita, a seconda della tempistica degli aggiornamenti interni. Data la simmetria del circuito non sono così sorpreso, ma mi chiedo come debba funzionare in pratica.

È anche possibile, o questi imulatori forniscono componenti flip-flop perché non è possibile farlo con parti di base? In caso affermativo, perché e cosa manca?

Simulatori:

  • https://logic.ly/demo
  • https://circuitverse.org/simulator
  • https://academo.org/demos/logic-gate-simulator/
  • https://simulator.io/board

Circuito di gate NAND rispetto a un flip-flop T fornito (circuitverse.org):

Lo stesso in simulator.io (usando AND + NOT perché non c'è NAND):

Risposte

12 TimWescott Jan 03 2021 at 07:43

Perché da questa pagina , lo stile che mostri funziona solo se l'ampiezza dell'impulso di clock è sintonizzata per essere abbastanza lunga da far reagire lo stadio di uscita, ma abbastanza corta da non oscillare. Un simulatore logico che non modella il tempo di propagazione potrebbe non essere in grado di farcela.

Per simulare il tuo circuito, avresti bisogno di un simulatore di circuito che "comprenda" il ritardo di propagazione, oppure avresti bisogno di simulare il tuo circuito a livello di transistor.

La stessa pagina mostra questo circuito per un J-Kflip-flop completamente sincrono (basta collegare J e K insieme per un T ff):

Puoi provarlo nel tuo simulatore, guarda cosa succede.

11 hacktastical Jan 03 2021 at 13:34

Il circuito che mostri è un latch JK gated, non un flip-flop. Soffre di un difetto: con T alto e clock alto, le porte NAND ad accoppiamento incrociato formano un oscillatore ad anello. Questo a volte è chiamato il problema della "corsa all'indietro". L'output non si stabilizza fino a quando l'orologio non viene riportato al livello basso.

Questo circuito è illustrativo di come non fare un flop con clock. Altrimenti è inutile. Un vero flop toggle utilizzerà una coppia di latch in due fasi, con clock su livelli opposti. Questo a volte è chiamato flip-flop "edge-triggered" o "master-slave".

Maggiori informazioni qui: Come vengono determinate le Q e Q 'la prima volta nel flip flop JK?

E qui: JK latch, possibile errore di Ben Eater?

4 MathKeepsMeBusy Jan 03 2021 at 08:11

Per implementare un flip-flop T con trigger sul fronte che non si basa sulla temporizzazione del ritardo del gate, credo che siano necessari un minimo di 6 porte Nand. Il circuito seguente simula bene in CircuitLab.

simula questo circuito - Schema creato utilizzando CircuitLab

Modificare:

Qualcuno ha commentato che questo circuito non è un flip-flop a T perché il circuito dipende solo dal clock e non ha ingressi T e clock separati.

Tuttavia, quando cerco su Google "T flip-flop", il primo vero successo che mi viene in mente è questo che afferma:

Il flip-flop T o "toggle" cambia la sua uscita su ciascun fronte di clock, fornendo un'uscita che è la metà della frequenza del segnale all'ingresso T.

È utile per costruire contatori binari, divisori di frequenza e dispositivi di addizione binaria generici. Può essere realizzato da un flip-flop JK legando entrambi i suoi ingressi in alto.

e che contiene la grafica:

Non sostengo che questa sia necessariamente una confutazione autorevole dell'affermazione che un flip-flop T deve avere ingressi T e clock separati. (C'è sicuramente molta disinformazione sui flip-flop negli interweb. Ad esempio, il circuito OPs, si presenta ovunque etichettato come un flip-flop a T nonostante il fatto che abbia problemi descritti in altre risposte). , Offro le informazioni di cui sopra come punto di vista alternativo a quello del commentatore.

Edit2: un commentatore ha chiesto un diagramma di stato per il circuito. Fornirò queste informazioni, ma non come un diagramma.

Ci sono 4 stati stabili e 12 stati che sono transistionali tra stati stabili durante il normale funzionamento.

Gli stati stabili sono:

Stato: Vin N1 N2 N3 N4 N5 N6

S1: 0 1 1 0 1 1 0

S2: 1 0 1 0 1 0 1

S3: 0 1 1 1 0 0 1

S4: 1 1 0 1 1 1 0

Le transizioni vanno come segue

S1 In \$\uparrow\$N1 \$\downarrow\$N6 \$\uparrow\$N5 \$\downarrow\$ S2

S2 In \$\downarrow\$N1 \$\uparrow\$N4 \$\downarrow\$N3 \$\uparrow\$ S3

S3 In \$\uparrow\$N2 \$\downarrow\$N5 \$\uparrow\$N6 \$\downarrow\$N4 \$\uparrow\$ S4

S4 In \$\downarrow\$N2 \$\uparrow\$N3 \$\downarrow\$ S1

1 ShashankVM Jan 03 2021 at 12:30

Un altro problema che potresti (ma dovresti ) incontrare è questo : come vengono determinati Q e Q 'la prima volta nel flip flop JK? .

Ciò è particolarmente vero per un flip-flop a T.

Per un Flip-Flop T con solo 2 ingressi, T e Clock, non è possibile che l'uscita entri in uno stato noto in una simulazione che supporta "X".

Un buon simulatore mostrerà una "X" su entrambe le uscite, che mostra che il valore è sconosciuto.

Come ho accennato nella mia risposta , è possibile utilizzare input sincroni o asincroni per impostare l'output su uno stato noto.

Per riferimento, ho costruito un Flip-Flop T con ingressi asincroni utilizzando un Flip-Flop JK Master Slave, che puoi simulare nel tuo browser:

simula questo circuito - Schema creato utilizzando MultisimLive