Warum kann ich in Logiksimulatoren keine Flip-Flops erstellen?

Jan 03 2021

Ich habe mit ein paar Logiksimulatoren gespielt und verstehe nicht, warum Flip-Flops nicht funktionieren. Ich versuche ein T-Flip-Flop mit NAND-Gattern zu implementieren:

Alle Simulatoren, die ich ausprobiert habe, liefern das gleiche Ergebnis. Abhängig vom Zeitpunkt der internen Aktualisierungen nimmt entweder Q oder Q 'den Status der Uhr an, anstatt an der ansteigenden Flanke umzuschalten. Angesichts der Symmetrie der Schaltung bin ich nicht so überrascht, aber ich frage mich, wie es in der Praxis funktionieren soll.

Ist das überhaupt möglich oder bieten diese Imulatoren Flip-Flop-Komponenten, weil es nicht möglich ist, mit Basisteilen zu arbeiten? Wenn ja, warum und was fehlt?

Simulatoren:

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

NAND-Gate-Schaltung im Vergleich zu einem bereitgestellten T-Flip-Flop (Circuitverse.org):

Das gleiche in simulator.io (mit AND + NOT, da es kein NAND gibt):

Antworten

12 TimWescott Jan 03 2021 at 07:43

Denn auf dieser Seite funktioniert der angezeigte Stil nur, wenn die Breite des Taktimpulses so eingestellt ist, dass die Ausgangsstufe reagiert, aber kurz genug, damit das Objekt nicht schwingt. Ein Logiksimulator, der die Laufzeit nicht modelliert, ist möglicherweise nicht in der Lage, damit umzugehen.

Um Ihre Schaltung zu simulieren, benötigen Sie einen Schaltungssimulator, der die Ausbreitungsverzögerung "versteht", oder Sie müssen Ihre Schaltung auf Transistorebene simulieren.

Dieselbe Seite zeigt diese Schaltung für ein vollständig synchrones J-Kflip-Flop (verbinden Sie J & K einfach für ein T ff miteinander):

Vielleicht möchten Sie das in Ihrem Simulator versuchen, um zu sehen, was passiert.

11 hacktastical Jan 03 2021 at 13:34

Die Schaltung, die Sie zeigen, ist ein JK-Latch mit Gate, kein Flip-Flop. Es weist einen Fehler auf: Mit T hoch und Takt hoch bilden die kreuzgekoppelten NAND-Gatter einen Ringoszillator. Dies wird manchmal als "Race-Around" -Problem bezeichnet. Der Ausgang wird erst dann eingestellt, wenn der Takt wieder auf niedrig gestellt ist.

Diese Schaltung zeigt, wie man keinen getakteten Flop macht. Sonst ist es nutzlos. Ein tatsächlicher Toggle-Flop verwendet ein Paar Latches in zwei Stufen, die auf entgegengesetzten Ebenen getaktet sind. Dies wird manchmal als "flankengetriggertes" oder "Master-Slave" -Flipflop bezeichnet.

Mehr hier: Wie werden Q und Q 'beim ersten Mal im JK-Flip-Flop bestimmt?

Und hier: JK-Verriegelung, möglicher Ben Eater-Fehler?

4 MathKeepsMeBusy Jan 03 2021 at 08:11

Um ein flankengetriggertes T-Flip-Flop zu implementieren, das nicht auf dem Gate-Delay-Timing beruht, sind meines Erachtens mindestens 6 Nand-Gates erforderlich. Die folgende Schaltung simuliert gut in CircuitLab.

simulieren Sie diese Schaltung - Schema erstellt mit CircuitLab

Bearbeiten:

Jemand hat kommentiert, dass diese Schaltung kein T-Flip-Flop ist, da die Schaltung nur vom Takt abhängt und keine separaten T- und Takteingänge hat.

Allerdings, wenn ich „T - Flip-Flop“ google, der erste Treffer, der für mich kommt ist dies in dem es heißt:

Das T- oder "Toggle" -Flipflop ändert seinen Ausgang bei jeder Taktflanke und gibt dem T-Eingang einen Ausgang, der der halben Frequenz des Signals entspricht.

Es ist nützlich, um Binärzähler, Frequenzteiler und allgemeine binäre Additionsvorrichtungen zu konstruieren. Es kann aus einem JK-Flipflop hergestellt werden, indem beide Eingänge hoch gebunden werden.

und welches die Grafik enthält:

Ich behaupte nicht, dass dies notwendigerweise eine maßgebliche Widerlegung der Behauptung ist, dass ein T-Flip-Flop separate T- und Takteingänge haben muss. (Es gibt sicherlich viele Fehlinformationen über Flip-Flops in den Interwebs. Beispielsweise wird die OPs-Schaltung überall als T-Flip-Flop bezeichnet, obwohl sie in anderen Antworten beschriebene Probleme aufweist.) Ich biete die oben genannten Informationen als alternative Sichtweise zu der des Kommentators an.

Edit2: Ein Kommentator hat nach einem Zustandsdiagramm für die Schaltung gefragt. Ich werde diese Informationen bereitstellen, jedoch nicht als Diagramm.

Es gibt 4 stabile Zustände und 12 Zustände, die im normalen Betrieb zwischen stabilen Zuständen transistional sind.

Die stabilen Zustände sind:

Zustand: 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

Die Übergänge verlaufen wie folgt

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

Ein weiteres Problem, auf das Sie stoßen könnten (aber sollten ), ist das folgende : Wie werden Q und Q 'beim ersten Mal im JK-Flip-Flop bestimmt? .

Dies gilt insbesondere für ein T-Flip-Flop.

Bei einem T-Flip-Flop mit nur 2 Eingängen, T und Clock, kann der Ausgang in einer Simulation, die 'X' unterstützt, nicht in einen bekannten Zustand versetzt werden.

Ein guter Simulator zeigt an beiden Ausgängen ein 'X' an, was zeigt, dass der Wert unbekannt ist.

Wie ich in meiner Antwort erwähnt habe , kann man synchrone oder asynchrone Eingänge verwenden, um den Ausgang in einen bekannten Zustand zu versetzen.

Als Referenz habe ich ein T-Flip-Flop mit asynchronen Eingängen unter Verwendung eines Master-Slave-JK-Flip-Flops erstellt, das Sie in Ihrem Browser simulieren können:

simulieren Sie diese Schaltung - Schema erstellt mit MultisimLive