Pourquoi ne puis-je pas faire de bascules dans les simulateurs logiques?
J'ai joué avec quelques simulateurs logiques et je ne comprends pas pourquoi les bascules ne fonctionnent pas. J'essaye d'implémenter une bascule T avec des portes NAND:

Tous les simulateurs que j'ai essayés donnent le même résultat. Soit Q, soit Q 'prend l'état de l'horloge plutôt que de basculer sur le front montant, en fonction de la synchronisation des mises à jour internes. Compte tenu de la symétrie du circuit, je ne suis pas très surpris, mais je me demande comment cela fonctionne dans la pratique.
Est-ce même possible, ou est-ce que ces imulateurs fournissent des composants à bascule parce qu'il n'est pas possible de faire avec des pièces de base? Si oui, pourquoi et que manque-t-il?
Simulateurs:
- https://logic.ly/demo
- https://circuitverse.org/simulator
- https://academo.org/demos/logic-gate-simulator/
- https://simulator.io/board
Circuit de porte NAND comparé à une bascule T fournie (circuitverse.org):

La même chose dans simulator.io (en utilisant AND + NOT car il n'y a pas de NAND):

Réponses
Parce qu'à partir de cette page , le style que vous affichez ne fonctionne que si la largeur de l'impulsion d'horloge est réglée pour être suffisamment longue pour que l'étage de sortie réagisse, mais suffisamment courte pour que la chose n'oscille pas. Un simulateur logique qui ne modélise pas le temps de propagation peut ne pas être en mesure de faire face.
Pour simuler votre circuit, vous avez besoin d'un simulateur de circuit qui «comprend» le délai de propagation, ou vous devez simuler votre circuit au niveau du transistor.
Cette même page montre ce circuit pour une bascule J-K entièrement synchrone (connectez simplement J & K ensemble pour un T ff):

Vous voudrez peut-être essayer cela dans votre simulateur, voyez ce qui se passe.
Le circuit que vous montrez est un verrou JK fermé, pas une bascule. Il souffre d'un défaut: avec T haut et horloge haut, les portes NAND à couplage croisé forment un oscillateur en anneau. C'est ce qu'on appelle parfois le problème de la «course autour». La sortie ne se stabilise jamais tant que l'horloge n'est pas ramenée à un niveau bas.
Ce circuit illustre comment ne pas faire un flop cadencé. Sinon, c'est inutile. Un flop à bascule réel utilisera une paire de verrous en deux étapes, cadencés à des niveaux opposés. Ceci est parfois appelé une bascule «déclenchée par front» ou «maître-esclave».
Plus ici: Comment le Q et le Q 'sont-ils déterminés la première fois dans la bascule JK?
Et ici: verrou JK, erreur possible de Ben Eater?
Pour implémenter une bascule T déclenchée par front qui ne repose pas sur le temps de retard de porte, il faut, je crois, un minimum de 6 portes Nand. Le circuit ci-dessous simule bien dans CircuitLab.

simuler ce circuit - Schéma créé à l'aide de CircuitLab
Éditer:
Quelqu'un a fait remarquer que ce circuit n'est pas une bascule T parce que le circuit dépend de l'horloge seule et n'a pas d'entrées T et d'horloge séparées.
Cependant, lorsque je recherche sur Google "T flip-flop", le tout premier hit qui me vient est celui- ci:
La bascule T ou "bascule" change sa sortie sur chaque front d'horloge, donnant une sortie qui est la moitié de la fréquence du signal à l'entrée T.
Il est utile pour construire des compteurs binaires, des diviseurs de fréquence et des dispositifs d'addition binaire généraux. Il peut être fabriqué à partir d'une bascule JK en liant ses deux entrées à un niveau élevé.
et qui contient le graphique:

Je ne prétends pas que ce soit nécessairement une réfutation faisant autorité de l'affirmation selon laquelle une bascule T doit avoir des entrées T et d'horloge séparées. (Il y a certainement beaucoup de désinformation sur les bascules sur les interwebs. Par exemple, le circuit des OP apparaît partout étiqueté comme une bascule T malgré le fait qu'il a des problèmes décrits dans d'autres réponses.) Cependant , J'offre les informations ci-dessus comme un point de vue alternatif à celui du commentateur.
Edit2: Un commentateur a demandé un diagramme d'état pour le circuit. Je vais fournir ces informations, mais pas sous forme de diagramme.
Il existe 4 états stables et 12 états transistionnels entre des états stables en fonctionnement normal.
Les états stables sont:
État: 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
Les transitions se déroulent comme suit
S1 Dans \$\uparrow\$N1 \$\downarrow\$N6 \$\uparrow\$N5 \$\downarrow\$ S2
S2 Dans \$\downarrow\$N1 \$\uparrow\$N4 \$\downarrow\$N3 \$\uparrow\$ S3
S3 Dans \$\uparrow\$N2 \$\downarrow\$N5 \$\uparrow\$N6 \$\downarrow\$N4 \$\uparrow\$ S4
S4 Dans \$\downarrow\$N2 \$\uparrow\$N3 \$\downarrow\$ S1
Un autre problème que vous pourriez (mais devriez ) rencontrer est celui-ci : comment le Q et le Q 'sont-ils déterminés la première fois dans la bascule JK? .
Cela est particulièrement vrai pour une T Flip-Flop.
Pour une bascule T avec seulement 2 entrées, T et Clock, il n'y a aucun moyen pour la sortie d'entrer dans un état connu dans une simulation qui prend en charge «X».
Un bon simulateur affichera un «X» sur les deux sorties, ce qui montre que la valeur est inconnue.
Comme je l'ai mentionné dans ma réponse , on peut utiliser des entrées synchrones ou asynchrones pour définir la sortie dans un état connu.
Pour référence, j'ai construit une bascule T avec des entrées asynchrones en utilisant une bascule JK maître esclave, que vous pouvez simuler dans votre navigateur:
