Ich versuche zu verstehen, wie PRESET und CLEAR bei einem durch eine positive Flanke ausgelösten D-Flip-Flop funktionieren, aber ich vermisse möglicherweise etwas, von dem ich hoffe, dass jemand es bitte klären kann.
Abbildung 1 unten zeigt das betreffende Flip-Flop. Ich benutze rot für hoch und blau für niedrig. Die positive Flankenerkennungsvorrichtung ist ein UND-Gatter mit einem NICHT-Gatter. Der Ausgang des Flankendetektors in diesem Diagramm ist niedrig, sodass der Zustand des Flipflops nicht durch eine Änderung von D geändert werden kann.
Abbildung 2 unten zeigt einen kurzen Moment, in dem die Taktflanke ansteigt. Der Ausgang des Flankendetektors ist hoch, also ändert sich Q, um mit D übereinzustimmen.
Und Abbildung 3 unten ist ein weiterer Moment, in dem die Taktflanke ansteigt, also tastet Q wieder D ab und ändert sich entsprechend.
Solange PRE und CLR beide hoch sind, verhält sich das Flip-Flop genau so, wie ich es erwarten würde. Ein NAND-Gatter mit drei Eingängen gibt nur dann eine 0 aus, wenn alle drei seiner Eingänge hoch sind.
Aber hier ist meine Anfrage. In Abbildung 4 unten geht der aktive Low-CLR-Eingang auf Low, während eine steigende Flanke vorhanden ist, sodass das Flip-Flop aktiviert ist. Die Umkehrung von Q ist jetzt hoch, aber Q ist nicht wie erwartet auf 0 gesetzt. Es gibt immer noch einen niedrigen Eingang zum oberen rechten NAND-Gatter, also ist Q immer noch hoch.
In Abbildung 5 unten wurde der aktive Low-PRE-Eingang auf Low gesetzt. Dies geschieht wieder an der steigenden Flanke, während D niedrig ist. Es wird Q so hoch machen, wie es sollte, aber die Umkehrung von Q ist auch hoch.
Die meiste Zeit gibt es keine steigende Flanke, und PRE und CLEAR verhalten sich korrekt, wie in Abbildung 6 und Abbildung 7. Ich mache mir Sorgen, weil viel Literatur (Websites usw.) sagt, dass die PRE- und CLR-Eingänge asynchron und völlig unabhängig vom Eingang an D und vom Takt sind. Kann mir das bitte jemand erklären?
Sie sind asynchron PRESET und CLEAR (aktiv niedrig). Bei diesem Aufbau gibt es die Einschränkung, dass PRE und CLR nicht beide gleichzeitig aktiv (niedrig) sein können (andernfalls sind sowohl Q als auch Q' 1). Sie könnten einer Priorität geben, wenn Sie wollten, indem Sie die Topologie ein wenig ändern.
Wenn außerdem entweder PRE oder CLR an der steigenden Taktflanke aktiv (niedrig) sind, werden die Ausgangszustände nicht unbedingt invertiert (wie Sie darauf hingewiesen haben). Da der Flankendetektorimpuls jedoch schmal ist, breiten sich PRE oder CLR schnell durch Q und Q' aus, nachdem der Flankendetektorimpuls endet, vorausgesetzt, sie werden über die Länge des Impulses gehalten .
Im Wesentlichen gewinnt, was länger hält: Entweder werden die Daten durchgelassen, wenn der Flankendetektorimpuls länger aktiv bleibt als die PRE/CLR-Signale aktiv (niedrig) bleiben, oder die PRE/CLR-Signale bleiben länger aktiv als die Flanke Detektorimpuls und überschreiben, was auch immer D dort eingegeben hat.
In der Praxis würden diese Beschränkungen durch die Charakterisierungsdateien der Bibliothek dargestellt. Es würde einen Setup-and-Hold-Bogen geben, der das Timing zwischen dem Takt, d, PRE und CLR definiert, um unerwünschte Zustände zu verhindern.
Oder, wenn die Schaltung auf eine kundenspezifischere Weise verwendet würde, müssten ihre Designer sicherstellen, dass sie die Funktionsweise des Impulsspeichers (nicht wirklich ein Flip-Flop, imo) verstehen und wie man ihn richtig aktiviert oder zurücksetzt.
Sie können leicht erkennen, dass PRE und CLR asynchron sind, indem Sie sich den Signalfluss ansehen. PRESET und CLR werden ohne Gating durch das CLK-Signal (was sie synchron machen würde) zum Ausgang geleitet.
Um sich das selbst zu beweisen, gehen Sie davon aus, dass die Uhr nicht umschaltet und sowohl PRESET als auch CLEAR '1' (inaktiv) sind. Außerdem kann diese Schaltung nicht gleichzeitig sowohl PRE als auch CLR niedrig haben.
Nehmen Sie auch die Anfangszustände für Q und Q' an:
PRE = 1, CLEAR = 1
Q = 1, Q' = 0
Solange Sie nichts berühren, bleibt alles so wie es ist (gerastet).
Ziehen Sie jetzt CLR auf '0' herunter, ohne die Uhr oder die Daten umzuschalten.
Wie in der Abbildung oben gezeigt, wird dadurch Q von „1“ auf „0“ gelöscht. Und die Uhr wurde nicht umgeschaltet. Dies bedeutet, dass die Schaltung asynchron ist. Von hier aus kann das CLR-Signal deaktiviert (auf High zurückgeführt) werden und die Schaltung behält weiterhin ihren Zustand.
Gut zu erkennen ist das Gating des Taktgebers relativ zu den Clear/Enable/Reset-Signalen.
jbord39