Was ist falsch mit meinem D-Flip-Flop-Kippschalter?

Bis vor ein paar Wochen hatte ich noch nie in meinem Leben einen Schaltplan gezeichnet, also ertrage es mit mir. Ich versuche derzeit (in Logisim) eine Schaltung zu entwerfen, die wie ein Kippschalter funktioniert und nur einfache Logikgatter und keine Uhr verwendet. Grundsätzlich möchte ich, dass sich der LED-Ausgang einschaltet, wenn die SINGLE-Taste gedrückt wird, und aus, wenn sie erneut gedrückt wird, und ich habe mit allen möglichen SR-Latch/D-Latch/anderen Kombinationen vergeblich experimentiert.

Ich versuche es jetzt, indem ich ein D-Flip-Flop von Grund auf neu mache, wobei die Taste als "Uhr" dient und der letzte Q'-Ausgang direkt als D-Eingang im ersten Latch zurückgeschleift wird, wie im Bild gezeigt :

Ich habe mir dieses Flip-Flop sehr genau angesehen und dachte, ich hätte Master und Slave richtig ausgerichtet, mit den Wechselrichtern an den richtigen Stellen usw., aber laut Logisim ist es nicht korrekt und funktioniert nicht . Was fehlt mir hier?

Es ist offensichtlich nichts falsch, also kann das Problem eine Werkzeugkonfiguration oder ein subtiles Verdrahtungsproblem sein. Ich würde die beiden Latches auseinanderbrechen und sie separat testen, wenn es nicht funktioniert, dann brechen Sie es mehr auf nur das Gate usw. auf. Beachten Sie, dass Sie den Inverter an den Eingängen zum UND nicht unbedingt benötigen Gates stehen Ihnen bereits die komplementären Signale (Q & Q') zur Verfügung.
Ich sehe kein Problem mit deiner Schaltung. Sind Sie sicher, dass Ihr Tool eine solche Rückkopplungsschaltung simulieren kann? Ich habe einmal einen einfachen Logiksimulator mit Tiefenausbreitung geschrieben, der zu meiner Überraschung und meinem Entsetzen solche Schaltungen NICHT simulieren konnte.
Um zu wiederholen, was @WoutervanOoijen sagt, ist es vielleicht so einfach, dass Sie die Stromschiene nicht an die Geräte oder den Boden geliefert haben. Da die Stromanschlüsse im Schaltplan versteckt sind, haben Sie vielleicht vergessen oder angenommen, dass sie automatisch angeschlossen werden.

Antworten (3)

Ich habe Ihre Schaltung in Logisim dupliziert (als Gelegenheit, etwas in Logisim zu tun). An deiner Schaltung ist nichts auszusetzen. Irgendwas an Logisim verstehe ich nicht.

Zunächst einmal sind die roten Linien keine Linien in einem hohen Zustand; sie sind Fehler. Man würde diese Art von Fehler erwarten, wenn zwei Ausgänge miteinander verbunden wären. Ich habe eine Reihe von Unterbrechungen des Stromkreises durchgeführt und Leitungen hoch oder niedrig gebunden, und schließlich wurden alle Fehler "ausgespült", und das Wiederanschließen des Stromkreises erzeugte normalerweise das Umschalten, für das es vorgesehen war.

Unterbrechen Sie insbesondere den Draht ganz links, der Q 'mit D verbindet, verbinden Sie dann D mit einer hohen oder niedrigen Quelle ("Pull-Widerstand" funktioniert hier gut) und schalten Sie ihn um, bis alles grün ist. Schließen Sie dann das Feedback wieder an, und alles wird funktionieren. Beachten Sie, dass High und Low durch Grün und Dunkelgrün (?) dargestellt werden.

Durch Drücken von „Simulation zurücksetzen“ werden alle Fehler wiederhergestellt. Meine Vermutung ist, dass es irgendwo in der Logik des Programms einen "undefinierten Zustand" hat. Diese undefinierten Zustände breiten sich in dem Maße durch die Tore aus, dass sie sich nicht so "aussortieren", wie es echte Elektronik tut. Undef AND 0 sollte 0 ergeben, nicht Undef. Gleiches gilt für 1 ODER Undef.

Nur für den Fall, dass dies in einer späteren Version behoben wurde, werde ich darauf hinweisen, dass Logisim 2.7.1 ist


Update: Ich habe das Problem (jedenfalls im Rahmen dieses Simulators) "behoben", indem ich ein NOR-Gatter in den Rückkopplungspfad eingefügt habe. Schließen Sie dann einen Taster an den anderen Eingang an. Ich habe den ursprünglichen Taster durch ein Taktsignal ersetzt (zu finden unter "Verkabelung"). Jetzt wird der Fehler durch Drücken der Taste gelöscht. (Das Zurücksetzen der Logik bringt den Fehler zurück).

Wenn es eine Möglichkeit gibt, Anfangsbedingungen für eine Simulation anzugeben, sollten Sie in der Lage sein, die Fehler zu löschen, ohne die Schaltung während der Simulation bearbeiten zu müssen. Es ist nur natürlich, dass der Simulator anfänglich nicht weiß, in welchem ​​Zustand sich die Ausgabe befindet, wenn Sie es nicht mitteilen. und für einen Umschalter kann er nicht wissen, in welchen Zustand er als nächstes übergeht, ohne zu wissen, in welchem ​​Zustand er zuvor war.
Aber ein echtes Leben hat dieses Problem nicht.
Denn in einem realen Leben wird an jedem Knoten zu jedem Zeitpunkt eine tatsächliche Spannung anliegen. Aber ein Simulator weiß nicht, wie hoch diese Spannung bei t = 0 ist, es sei denn, Sie sagen es ihm. Ein Simulator kann nur so viel über die reale Welt simulieren, wie Sie in Ihrem Modell definieren.
Das Hinzufügen dieser Informationen zu Ihrem Schaltungsmodell sollte einfach sein. In SPICE würden Sie eine „.IC“-Karte verwenden. In Verilog könnten Sie bei einem "Anfangs"-Block. Da ich Logisim nicht kenne, kann ich Ihnen nicht sagen, wie es in diesem Tool geht, aber ich vermute, es gibt einen einfachen Weg.

Basierend auf der Antwort von gbarry klingt es so, als ob LogicSim eine pessimistische "Weiß nicht"-Logikbewertung verwendet, was bedeutet, dass Drähte nur niedrig sind, wenn der Simulator erkennen kann, dass sie angesichts der bisher empfangenen Stimuli definitiv niedrig sein sollten; ebenso sind sie nur dann hoch, wenn der Simulator sagen kann, dass sie definitiv hoch sein sollten. Eine solche pessimistische Logikbewertung schließt oft die Simulation von Geräten aus, die wahrscheinlich in der realen Welt zufriedenstellend funktionieren würden, aber sie stellt tendenziell sicher, dass sich Geräte in der Simulation nur dann wie gewünscht verhalten, wenn sie tatsächlich in der realen Welt funktionieren würden.

Wenn die Schaltung mit realer Logik implementiert würde, würde sich die Schaltung wahrscheinlich stabilisieren, sodass der obere rote Draht entweder hoch oder niedrig ist, aber sein tatsächlicher Pegel wäre willkürlich. Das Drücken des Knopfes sollte bewirken, dass der obere Draht den Zustand annimmt, der dem vor dem Drücken entgegengesetzt ist, aber da dieser Anfangszustand nicht vorhersagbar als hoch oder niedrig definiert werden kann, kann dies auch nicht der Zustand nach dem Drücken sein.

In einigen Fällen kann es nützlicher sein, einen Simulator willkürlich in einem bestimmten Zustand hochfahren zu lassen, als ihn einfach einen ungelösten unbestimmten Zustand anzeigen zu lassen. Eine große Gefahr bei Simulatoren, die dies tun, besteht jedoch darin, dass sie glauben machen können, dass eine Schaltung im wirklichen Leben funktionieren wird, obwohl dies in Wirklichkeit nicht der Fall ist. Wenn dagegen eine pessimistische Simulation anzeigt, dass unbestimmte Zustände aufgelöst werden, werden sie dies mit ziemlicher Sicherheit in der realen Welt tun; Wenn dies nicht der Fall ist, können solche Zustände in der realen Welt gelöst werden oder auch nicht, aber man sollte sich nicht auf ein solches Verhalten verlassen, es sei denn, man hat die zeitlichen Beschränkungen sehr sorgfältig untersucht.

Ich sortiere dieses Problem versehentlich.

Sie müssen nur Ihre AndGates durch IC 74LS08zusammen mit ersetzen NOT. Die Frequenz der Uhr ist 0.5und geben Sie zuerst ein j=0und k=0nach einigen Sekunden beginnt Ihr Flip-Flop zu arbeiten.