Wie werden Q und Q 'beim ersten Mal im JK-Flip-Flop bestimmt?
Mein Hintergrund liegt in der Informatik, und dies ist mein erstes Posting in der Electronics SE. Dies ist ein Schaltplan des JK-Flipflops.

Ich verstehe nicht, wie es am Anfang funktioniert, wenn die Schaltung zum ersten Mal eingeschaltet ist. Nach meinem Verständnis haben Q und Q 'noch keinen Wert. Wie läuft dann die Schaltung ab? Ich habe von dieser Website gelesen . Ich habe drei weitere Websites ausprobiert, aber keine Erklärung gefunden.
Antworten
Der JK-Flop kann in beiden Zuständen hochgefahren werden. Bei perfekt aufeinander abgestimmten Toren wären die Chancen für jeden Staat 50-50. Es ist Sache des restlichen Systems, einen bekannten, gewünschten Zustand zu initialisieren oder sich nicht darum zu kümmern. Gleiches gilt für einen D-Flop.
Es ist dasselbe wie eine nicht initialisierte Variable in einem Programm. Bis die Variable gesetzt ist, sind keine davon abhängigen Werte (einschließlich sich selbst) bekannt.
Die Hardware-Simulation dieses Flops würde als 'X'-Zustand angezeigt, bis eine 0 oder 1 getaktet wurde. Andernfalls bleibt es 'X', wenn sowohl J als auch K 0 (Halten) oder 1 (Umschalten) sind.
In der tatsächlichen Hardware (wie Software) können unbekannte Dinge passieren, abhängig davon, wie die Ausgabe im unbekannten Zustand verwendet wird.
Eine Variante dieses Flops verfügt über direkt gesetzte und gelöschte Eingänge, um einen Anfangszustand mit separaten Signalen zu erzwingen (z. B. Zurücksetzen). In diesem Fall kann ein Startverhalten definiert werden.
MEHR: Das für den JK gezeigte Logikdiagramm ist Mist. Dies ist tatsächlich ein JK-Latch mit Gate , und es besteht die Gefahr, dass sowohl der J- als auch der K-Eingang '1' sind und der Takt hoch ist: Aufgrund des Problems „Race Around“ wird er zu einem Ringoszillator .
Während der verlinkte Artikel dies diskutiert, gibt er leider eine mehlige Antwort auf die Verwendung eines sehr engen Taktimpulses, um das Problem des "Rennens" zu vermeiden. Das ist sehr irreführend. Integrierte schaltungsbasierte JK-Flops verwenden ein Paar von Latches, die als 2 Stufen verdrahtet sind ("Master-Slave" oder "flankengetriggert") und haben kein Race-Around-Problem.
Eine weitere Beschwerde. Das für den 74xx73-Typ JK angegebene Logikdiagramm ist nicht nur unvollständig (zeigt kein Setzen / Zurücksetzen an), es ist auch falsch (74xx73 verwendet das 2-Latch-Design "Master-Slave", kein Gated-Latch). Ich habe eine Notiz für das hinterlassen Seitenautor für sie, um es zu beheben.
In dieser Antwort wird das JK-Gated-Latch-Problem ausführlich erläutert. SR FlipFlop Frage
Und hier: JK Latch, möglicher Ben Eater Fehler?
Wenn die Stromversorgung zum ersten Mal eingeschaltet wird, kann dies nicht als digitale Schaltung verstanden werden. Für die tatsächliche physikalische Schaltung können die Ein- und Ausgänge zwischen 1 und 0 oder sogar darüber liegen . Ein Teil des Entwurfs von Logikprimitiven besteht darin, dies vor dem Entwurf auf höherer Ebene zu verbergen, aber es ist eine "undichte Abstraktion". Betrachten Sie das folgende einfache Beispiel:

simulieren Sie diese Schaltung - Schema erstellt mit CircuitLab
Nun, klar, als digitaler Schaltkreis, wenn es Out1
ist 0
, Out2
ist 1
oder umgekehrt, für immer. Was passiert also beim Einschalten?
Stellen Sie sich vor, dass beim Einschalten beide Out1
und Out2
sind 0
. In diesem Zustand Not1
und Not2
wird ihre Ausgänge in Richtung schwenken 1
. Aber irgendwo dazwischen 0
und 1
sie werden wechseln und zurück in Richtung fahren 0
. Jetzt ist die Schaltung nie in perfekter Balance aufgebaut, und es ist auch thermisches Rauschen vorhanden, das diesen Prozess zufällig beeinflusst. Einer der beiden Wechselrichter schaltet also die Ausgangspolarität vor dem anderen um und gewinnt das Rennen um 1
. Das treibt den anderen auf Null. Die Schaltung kann kurz herumwirbeln und verhält sich nicht wie eine nette Boolesche Logik, aber sie stellt sich schnell in einen genau definierten Logikzustand ein. Bei einer realen Schaltung kommt es im Allgemeinen zu einem voreingenommenen Zufallsverhalten: Ein Zustand wird dem anderen vorgezogen, aber es gibt eine gewisse Zufälligkeit.
Q und Q 'haben noch keinen Wert. Wie läuft die Schaltung ab?
Das ist richtig. Es gibt keine Möglichkeit zu wissen, wie die Schaltung ablaufen würde.
Um dies zu beheben, können wir einen asynchronen oder synchronen RESET- oder PRESET-Eingang verwenden, um den Ausgang in einen bekannten Zustand zu versetzen . Ein asynchroner Eingang hängt nicht von der Uhr ab, ein synchroner Eingang jedoch von der Uhr.
Hier ist eine Referenzschaltung für ein Master-Slave-JK-Flip-Flop mit asynchronem Reset und eingestellten Eingängen.
JK Flip-Flop mit asynchronem RESET- und SET-Eingang

Dies ist die Schaltung eines JK-Flip-Flops mit asynchronem RESET und PRESET. Ein HIGH an einem asynchronen RESET-Eingang setzt Q auf LOW
und Q 'auf HIGH
, und diese Operation ist unabhängig von der Uhr. In ähnlicher Weise setzt ein HIGH
an einem asynchronen PRESET-Eingang Q auf HIGH
und Q 'auf LOW
.
Arbeiten:
Wenn der RESET-Eingang ist HIGH
, ist der Ausgang des NOT-Gatters (U11) LOW
. Der Ausgang des NAND-Gatters (U12) wird, HIGH
da einer der Eingänge ist LOW
. Dadurch wird der Ausgang des NAND-Gatters (U13) Q auf eingestellt LOW
. Ebenso können andere Fälle analysiert werden und werden dem Leser als Übung überlassen.
Hinweis:
Das Verhalten ist für den Fall nicht definiert, dass sowohl PRESET als auch RESET sind HIGH
, da es nicht zulässig (und bedeutungslos) ist.
Weiterführende Literatur
Der Abschnitt 2 dieses Papiers von Clifford Cummings, Don Mills und Steve Golson ist besonders relevant, deshalb zitiere ich ihn hier
Bei einzelnen ASICs besteht der Hauptzweck eines Zurücksetzens darin, das ASIC-Design für die Simulation in einen bekannten Zustand zu versetzen. Sobald der ASIC erstellt ist, wird die Notwendigkeit, dass der ASIC zurückgesetzt wird, vom System, der Anwendung des ASIC und dem Design des ASIC bestimmt. Beispielsweise sind viele Datenpfad-Kommunikations-ASICs so konzipiert, dass sie mit einem Eingabedatenstrom synchronisiert, die Daten verarbeitet und dann ausgegeben werden. Wenn die Synchronisierung jemals verloren geht, durchläuft der ASIC eine Routine, um die Synchronisierung erneut zu erfassen. Wenn dieser ASIC-Typ korrekt ausgelegt ist, sodass alle nicht verwendeten Status auf den Status "Synchronisierung starten" verweisen, kann er in einem System ordnungsgemäß funktionieren, ohne jemals zurückgesetzt zu werden. Ein System-Reset wäre beim Einschalten für einen solchen ASIC erforderlich, wenn die Zustandsautomaten im ASIC während der Synthesephase die Logikreduzierung "egal" ausnutzten.
Wir glauben, dass im Allgemeinen jedes Flip-Flop in einem ASIC zurückgesetzt werden sollte, unabhängig davon, ob es vom System benötigt wird oder nicht. In einigen Fällen, wenn Pipeline-Flip-Flops (Schieberegister-Flip-Flops) in Hochgeschwindigkeitsanwendungen verwendet werden, kann das Zurücksetzen einiger Flip-Flops eliminiert werden, um Designs mit höherer Leistung zu erzielen. Diese Art von Umgebung erfordert eine vorbestimmte Anzahl von Takten während der aktiven Rücksetzperiode, um den ASIC in einen bekannten Zustand zu versetzen.
ASIC: Anwendungsspezifische integrierte Schaltung