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

7

Bis vor ein paar Wochen hatte ich noch nie in meinem Leben einen Schaltplan gezeichnet. Ich versuche derzeit (in Logisim) eine Schaltung zu entwerfen, die wie ein Kippschalter wirkt und nur grundlegende Logikgatter und keine Uhr verwendet. Grundsätzlich möchte ich, dass der LED-Ausgang beim Drücken der SINGLE-Taste eingeschaltet und beim erneuten Drücken ausgeschaltet wird, und ich habe erfolglos mit allen Arten von SR-Latch / D-Latch / anderen Kombinationen experimentiert.

Ich versuche es jetzt, indem ich ein D-Flip-Flop von Grund auf neu mache, wobei der Knopf als "Takt" dient und der endgültige Q'-Ausgang direkt als D-Eingang im ersten Latch zurückläuft, wie in der Abbildung gezeigt ::

Ich habe mir dieses Flip-Flop sehr genau angesehen und dachte, ich hätte den Master und den 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?

Nicole
quelle
2
Es ist offensichtlich nichts falsch, daher kann das Problem eine Werkzeugkonfiguration oder ein subtiles Verdrahtungsproblem sein. Ich würde die beiden Latches auseinander brechen und sie separat testen, wenn es nicht funktioniert, dann mehr auf das Gate usw. herunterbrechen. Eine Sache zu beachten, Sie brauchen den Wechselrichter nicht unbedingt an den Eingängen zum UND Gates haben Sie bereits die komplementären Signale (Q & Q ') zur Verfügung.
Platzhalter
2
Ich sehe kein Problem mit Ihrer 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.
Wouter van Ooijen
1
Um zu wiederholen, was @WoutervanOoijen sagt, ist es vielleicht so einfach, als hätten Sie die Stromschiene nicht an die Geräte oder den Boden geliefert. Da die Stromanschlüsse im Schaltplan verborgen sind, haben Sie möglicherweise vergessen oder angenommen, dass sie automatisch angeschlossen werden.
Platzhalter

Antworten:

8

Ich habe Ihre Schaltung in Logisim dupliziert (als Gelegenheit, etwas in Logisim zu tun). Es ist nichts falsch mit Ihrer Schaltung. Es gibt etwas an Logisim, das ich nicht verstehe.

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 ein paar Mal die Schaltung unterbrochen und die Leitungen hoch oder niedrig gebunden, und schließlich wurden alle Fehler "ausgespült", und das erneute Anschließen der Schaltung führte normalerweise zu dem Umschalten, für das sie entwickelt wurde.

Brechen Sie insbesondere den Draht ganz oben links, der Q 'mit D verbindet, und 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 hoch und niedrig durch Grün und Dunkelgrün (?) Dargestellt werden.

Durch Drücken von "Simulation zurücksetzen" werden alle Fehler zurückgebracht. Ich vermute, dass es irgendwo in der Logik des Programms einen "undefinierten Zustand" hat. Diese undefinierten Zustände breiten sich so weit durch die Tore aus, dass sie sich nicht wie echte Elektronik "selbst aussortieren". 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 feststellen, dass Logisim 2.7.1 ist


Update: Ich habe das Problem "behoben" (jedenfalls im Rahmen dieses Simulators), indem ich ein NOR-Gatter in den Rückkopplungspfad eingefügt habe. Verbinden Sie dann einen Druckknopf mit dem anderen Eingang. Ich habe die Originaltaste durch ein Taktsignal ersetzt (unter "Verkabelung"). Durch Drücken der Taste wird nun der Fehler behoben. (Das Zurücksetzen der Logik bringt den Fehler zurück).

gbarry
quelle
Wenn es eine Möglichkeit gibt, Anfangsbedingungen für eine Simulation anzugeben, sollten Sie in der Lage sein, die Fehler zu beheben, ohne die Schaltung während der Simulation bearbeiten zu müssen. Es ist nur natürlich, dass der Simulator nicht weiß, in welchem ​​Zustand sich die Ausgabe anfangs befindet, wenn Sie es nicht sagen. und für einen Togler kann er nicht wissen, in welchen Zustand er als nächstes geht, ohne zu wissen, in welchem ​​Zustand er sich zuvor befand.
Das Photon
Aber im wirklichen Leben hat man dieses Problem nicht.
Gbarry
2
Denn in einem realen Knoten gibt es zu jedem Zeitpunkt eine tatsächliche Spannung an jedem Knoten. Ein Simulator weiß jedoch nicht, wie hoch diese Spannung bei t = 0 ist, es sei denn, Sie sagen es. Ein Simulator kann nur so viel über die reale Welt simulieren, wie Sie in Ihrem Modell definieren.
Das Photon
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 "anfänglichen" Block. Da ich Logisim nicht kenne, kann ich Ihnen nicht sagen, wie es in diesem Tool geht, aber ich vermute, dass es einen einfachen Weg gibt.
Das Photon
2

Basierend auf der Antwort von gbarry klingt es so, als ob LogicSim eine pessimistische "Weiß nicht" -Logikbewertung verwendet, was bedeutet, dass die Drähte nur dann 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 erkennen kann, dass sie definitiv hoch sein sollten. Eine solche pessimistische Logikbewertung schließt häufig die Simulation von Geräten aus, die in der realen Welt wahrscheinlich zufriedenstellend funktionieren würden, stellt jedoch 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, so dass der obere rote Draht entweder hoch oder niedrig wäre, aber sein tatsächlicher Pegel wäre willkürlich. Durch Drücken der Taste sollte das obere Kabel den Zustand annehmen, der dem vor dem Drücken entgegengesetzt ist. Da dieser Anfangszustand jedoch nicht vorhersehbar als hoch oder niedrig definiert werden kann, kann der Zustand nach dem Drücken auch nicht als hoch oder niedrig definiert werden.

In einigen Fällen kann es nützlicher sein, einen Simulator in einem bestimmten Zustand willkürlich einschalten zu lassen, als einfach einen ungelösten unbestimmten Zustand anzuzeigen. Eine große Gefahr bei Simulatoren, die dies tun, besteht jedoch darin, dass sie glauben machen, dass eine Schaltung im wirklichen Leben funktioniert, obwohl dies tatsächlich 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 Einschränkungen sehr sorgfältig untersucht.

Superkatze
quelle
0

Ich sortiere dieses Problem versehentlich.

Sie müssen nur Ihre AndTore durch IC 74LS08zusammen mit ersetzen NOT. Die Taktfrequenz ist 0.5und wird zuerst eingegeben j=0und k=0nach einigen Sekunden beginnt Ihr Flip-Flop zu arbeiten.

Ammar ALi
quelle