SR- vs. JK-Flipflops: Die Grundlagen der sequentiellen Logik
Das JK-Flipflop ersetzt die verbotene Eingangskombination des SR-Latches durch den Toggle-Betrieb bei J = K = 1. Vergleichen Sie beide Schaltungen, leiten Sie Anregungstabellen her und bauen Sie daraus Zähler auf.
Kurz gesagt: Das SR-Latch ist das einfachste Speicherelement, besitzt jedoch einen verbotenen Zustand, wenn beide Eingänge 1 sind. Das JK-Flipflop löst dies, indem es J=K=1 als Umschalten neu definiert, interne Rückkopplung verwendet (, ) und mit einem Master-Slave-Takt Race-Around-Oszillation verhindert.
Kombinatorische Schaltungen – Addierer, Multiplexer – erzeugen Ausgänge allein aus aktuellen Eingängen. Sequentielle Logik fügt Speicher hinzu: Ein Flipflop hält seinen Zustand über Taktzyklen hinweg. Dieser Leitfaden vergleicht die beiden grundlegenden sequentiellen Komponenten – das SR-Latch und das JK-Flipflop – und zeigt, wie das JK-Design den kritischen Fehler des SR beseitigt.
Kombinatorische vs. sequentielle Logik
Kombinatorische Schaltungen wie Addierer und Multiplexer erzeugen Ausgänge, die nach der Signallaufzeit von ihren aktuellen Eingangswerten bestimmt werden. Physische Eingänge müssen immer auf gültige Pegel getrieben werden; „kein Eingang“ ist keine besondere Operation und ein schwebender Eingang ist elektrisch undefiniert.
Sequentielle Schaltungen fügen eine entscheidende Eigenschaft hinzu: Zustand. Ihre Ausgänge hängen nicht nur von den aktuellen Eingängen ab, sondern auch von deren Vorgeschichte – sie haben Speicher. Ein Flipflop kann im Zustand Q=0 oder Q=1 sein und hält diesen Zustand, bis ihm ausdrücklich mitgeteilt wird, ihn zu ändern. Das macht Berechnung möglich: Ohne Zustand gäbe es keine Register, keine Zähler, keine Programmzähler und keine CPUs.
Das SR-Latch: Wo Speicher beginnt
Das SR-Latch (Set-Reset-Latch) ist das einfachste Speicherelement und wird aus zwei kreuzgekoppelten NOR- (oder NAND-)Gattern aufgebaut. Es hat zwei Eingänge – S (Set) und R (Reset) – und zwei komplementäre Ausgänge: Q und .

Wahrheitstabelle des SR-Latches
| S | R | Q (nächster) | Aktion |
|---|---|---|---|
| 0 | 0 | Q (unverändert) | Halten (Speicher) |
| 0 | 1 | 0 | Reset (Löschen) |
| 1 | 0 | 1 | Set (1 speichern) |
| 1 | 1 | ? | UNGÜLTIG (verboten) |
Charakteristische Gleichung des SR-Latches
Das Verhalten wird formal beschrieben durch:
Die Bedingung ist die grundlegende Schwäche des SR-Latches: Die Gleichung gilt nur, wenn S und R nicht beide „1“ sind. Wird diese Bedingung verletzt, entsteht der verbotene Zustand – beide Ausgänge gehen auf „0“, und der Endzustand beim Loslassen ist eine nichtdeterministische Rennbedingung.

Warum der verbotene Zustand gefährlich ist
Bei S=R=1 werden beide NOR-Gatter gezwungen, „0“ auszugeben, also Q = = 0 – ein logischer Widerspruch. Kehren beide Eingänge gleichzeitig zu „0“ zurück, konkurrieren beide Gatter darum, „1“ auszugeben. Der Gewinner hängt von Unterschieden im Nanosekundenbereich bei Signallaufzeit, Temperatur und Fertigungstoleranzen ab. Das Ergebnis ist unvorhersehbar, und im schlimmsten Fall kann der Ausgang in einen metastabilen Zustand geraten – eine Zwischenspannung, die weder eine gültige „0“ noch eine gültige „1“ ist.
Das JK-Flipflop: Die vollständige Lösung
Das JK-Flipflop stellt sich dem verbotenen Zustand des SR-Latches direkt. Statt die Bedingung undefiniert zu lassen, definiert das JK-Design sie als Toggle neu: Der Ausgang invertiert an jeder Taktflanke. Diese einzelne Neuerung verwandelt ein fehlerhaftes Speicherelement in das vielseitigste Flipflop des Digitalentwurfs.

Wahrheitstabelle des JK-Flipflops
| J | K | Q (nächster) | Aktion |
|---|---|---|---|
| 0 | 0 | Q (unverändert) | Halten |
| 0 | 1 | 0 | Reset |
| 1 | 0 | 1 | Set |
| 1 | 1 | (invertiert) | Toggle |
Charakteristische Gleichung des JK-Flipflops
Die Rückkopplung macht Set- und Reset-Anforderungen für einen gegebenen aktuellen Zustand wechselseitig ausschließend: sperrt den J-Term und den K-Term. Das beseitigt die verbotene SR-Eingangskombination. Rückkopplung allein verhindert nicht Race-Around in einem pegelempfindlichen JK-Entwurf; Master-Slave- oder flankengesteuertes Timing begrenzt das Bauteil auf einen nach außen sichtbaren Übergang pro Abtastereignis.

Die Master-Slave-Architektur
Frühe JK-Entwürfe waren pegelgesteuert und führten die Race-Around-Bedingung ein: War der Taktimpuls lange genug High, konnte der umgeschaltete Ausgang zurückkoppeln und innerhalb desselben Impulses ein weiteres Umschalten verursachen, was zu unkontrollierter Oszillation führte.
Die Lösung ist die Master-Slave-Architektur, die zwei SR-Latches in Reihe verwendet:
- Master-Latch: Erfasst den Eingang, während der Takt HIGH ist. Sein Ausgang ist vom Slave isoliert.
- Slave-Latch: Erfasst den Ausgang des Masters, wenn der Takt auf LOW wechselt. Dann ändert sich der externe Q-Ausgang tatsächlich.
Da Master und Slave niemals gleichzeitig transparent sind, kann sich der Ausgang pro Taktzyklus nur einmal ändern. Moderne Implementierungen erreichen denselben Effekt effizienter durch Flankentriggerung, doch das Master-Slave-Konzept erklärt, warum das JK-Flipflop einen Takt benötigt und warum es gegen das Race-Around-Problem immun ist.
Die Race-Around-Bedingung: Ein tieferer Blick
Die Race-Around-Bedingung verdient besondere Aufmerksamkeit, weil sie zeigt, warum die Taktstrategie so wichtig ist.
In einem einfachen pegelgesteuerten JK-Latch mit J=K=1 (Toggle-Modus) lautet die Folge:
- Der Takt wird HIGH. Der Ausgang schaltet von 0 auf 1.
- Der neue Ausgang (Q=1) wird zu den Eingangsgattern zurückgekoppelt.
- Der Takt ist weiterhin HIGH. Die Gatterlogik sieht den neuen Zustand und schaltet erneut: Q wechselt von 1 auf 0.
- Dieser Zyklus wiederholt sich, solange der Takt HIGH bleibt.
Der Ausgang oszilliert mit der durch die Gatter bestimmten Signallaufzeitfrequenz – er wird im Wesentlichen zu einem Ringoszillator. Der Endzustand beim Abfallen des Takts hängt von der exakten Impulsbreite relativ zur Gatterverzögerung ab und ist damit nichtdeterministisch.
Flankengesteuerte JK-Flipflops (wie sie in digisim.io verwendet werden) beseitigen dies vollständig. Das Flipflop tastet J und K nur im Moment der Taktflanke ab. Bis der Ausgang umschaltet und zurückkoppelt, ist das Abtastfenster bereits geschlossen.
Anregungstabellen: Mit Flipflops entwerfen
Beim Entwurf sequentieller Schaltungen, etwa von Zählern oder Zustandsautomaten, leiten Sie aus den gewünschten Zustandsübergängen rückwärts die erforderlichen Eingänge ab. Hierfür sind Anregungstabellen unverzichtbar.
Anregungstabelle des SR-Latches
| (aktuell) | (gewünscht) | S | R |
|---|---|---|---|
| 0 | 0 | 0 | X |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 |
| 1 | 1 | X | 0 |
(X = Don’t care)
Anregungstabelle des JK-Flipflops
| (aktuell) | (gewünscht) | J | K |
|---|---|---|---|
| 0 | 0 | 0 | X |
| 0 | 1 | 1 | X |
| 1 | 0 | X | 1 |
| 1 | 1 | X | 0 |
Beachten Sie die zahlreichen Don’t-Care-Bedingungen in der JK-Anregungstabelle. Jeder Übergang enthält eine Don’t-Care-Bedingung, während die SR-Tabelle weniger Freiheitsgrade bietet und weiterhin erfüllen muss. Diese zusätzlichen Don’t-Cares ermöglichen eine weitergehende boolesche Vereinfachung der kombinatorischen Ansteuerlogik und können die erforderliche Gatteranzahl reduzieren.
Umfassender Vergleich
| Merkmal | SR-Latch | JK-Flipflop |
|---|---|---|
| Eingänge | S (Set), R (Reset) | J, K, Takt |
| S=R=1 / J=K=1 | Ungültig (Rennbedingung) | Toggle (wohldefiniert) |
| Triggerung | Pegelempfindlich (asynchron) | Flankengesteuert (synchron) |
| Takt erforderlich? | Nein (grundlegendes SR-Latch) | Ja |
| Charakteristische Gleichung | ||
| Verbotener Zustand | Vorhanden (S=R=1) | Beseitigt |
| Don’t-cares in der Anregungstabelle | Weniger | Mehr (bessere Optimierung) |
| Race-Around-Risiko | N/A (kein Takt) | Durch Flankentriggerung beseitigt |
| Implementierungsgröße | Zwei kreuzgekoppelte Gatter für das Kern-Latch | Implementierungsabhängig; Master-Slave- und flankengesteuerte Formen benötigen zusätzlichen Speicher und Gating |
| Primäre Anwendungsfälle | Halten von Steuerzustand, Entprellen von Schaltern | Zähler und Lehre zum Entwurf von Zustandsmaschinen |
| Kann andere Flipflop-Typen bauen? | Eingeschränkt | Ja (universell) |
Flankentriggerung: Die Rolle des Takts
Moderne Flipflops sind flankengesteuert – sie ändern ihren Zustand nur im genauen Moment einer Taktflanke. Das unterscheidet sie grundlegend vom pegelempfindlichen SR-Latch, das jederzeit auf Eingänge reagiert.

Flankentriggerung bietet drei entscheidende Garantien:
- Definiertes Abtastereignis: Eingänge werden an der angegebenen Flanke erfasst, wenn Setup- und Hold-Bedingungen eingehalten sind.
- Zeitliche Filterung: Ein Datenglitch, der das Abtastfenster nicht überlappt, wird nicht erfasst; Taktglitches und Datenänderungen nahe der Flanke bleiben Gefahren.
- Komponierbarkeit: Mehrere Flipflops können einen Takt teilen und sich nach ihren jeweiligen Clock-to-Q-Verzögerungen aktualisieren; das ermöglicht koordinierten Mehrbit-Zustand.
Umwandlung zwischen SR und JK
Da das JK-Flipflop als „universell“ gilt, kann es andere Flipflop-Typen nachbilden. Diese Umwandlungen zu verstehen, vertieft das Verständnis beider Komponenten.
SR-zu-JK-Umwandlung: Fügen Sie UND-Gatter hinzu, die Q und zurückkoppeln:
Die Rückkopplung stellt sicher, dass bei J=K=1 nur S oder R aktiv ist, abhängig vom aktuellen Zustand. So entsteht Toggle-Verhalten, während der verbotene SR-Zustand strukturell verhindert wird.
JK-zu-D-Umwandlung: Verbinden Sie D mit J und mit K.
JK-zu-T-Umwandlung: Verbinden Sie J und K zu einem gemeinsamen T-Eingang.
Zähler bauen: Die charakteristische Anwendung des JK-Flipflops
Bei J = K = 1 wechselt das JK-Flipflop an jeder wirksamen Taktflanke seinen Zustand und eignet sich damit als Baustein für Binärzähler. Schalten Sie vier JK-Flipflops so in Reihe, dass der Q-Ausgang jeder Stufe den Takteingang der Folgestufe ansteuert; daraus entsteht ein asynchroner 4-Bit-Zähler (Ripple Counter), der die Zustände 0000 bis 1111 durchläuft.
Ripple-Zähler (asynchron)
In einem Ripple-Zähler treibt der Q-Ausgang jedes Flipflops den Takteingang des nächsten. Der Zählwert „wogt“ durch die Kette, weil jede Stufe die nächste auslöst:
- FF0 schaltet bei jeder Systemtaktflanke um (Frequenz = ).
- FF1 schaltet bei jedem FF0-Übergang um (Frequenz = ).
- FF2 schaltet bei jedem FF1-Übergang um (Frequenz = ).
- FF3 schaltet bei jedem FF2-Übergang um (Frequenz = ).
Die Ausgänge Q3 Q2 Q1 Q0 bilden eine 4-Bit-Binärzahl, die in jedem Taktzyklus um 1 wächst. Der Nachteil ist, dass jede Stufe eine Signallaufzeit hinzufügt, sodass höherwertige Bits später stabil werden als niederwertige. Für einen kurzen Moment nach jeder Taktflanke kann der Zählerausgang einen vorübergehend falschen Wert anzeigen. In Hochgeschwindigkeitsanwendungen kann diese Ripple-Verzögerung problematisch sein; daher werden synchrone Zähler bevorzugt, bei denen alle Flipflops denselben Takt teilen.
Synchroner Zähler
In einem synchronen Zähler teilen alle Flipflops den Systemtakt. Die J- und K-Eingänge jedes Flipflops werden von kombinatorischer Logik aus dem aktuellen Zustand angesteuert. Für einen synchronen 3-Bit-Aufwärtszähler:
- FF0: J0=K0=1 (schaltet immer um)
- FF1: J1=K1=Q0 (schaltet nur um, wenn Q0=1)
- FF2: J2=K2=Q0 Q1 (schaltet nur um, wenn sowohl Q0 als auch Q1 1 sind)
Alle Stufen tasten dieselbe Taktflanke ab und beseitigen damit die Takt-durch-Stufe-Ripple-Abhängigkeit. Die Ausgänge haben weiterhin Clock-to-Q-Verzögerung, die kombinatorische Freigabelogik hat Verzögerung, und verschiedene Bits müssen sich physisch nicht genau gleichzeitig ändern.



Entwurfsbeispiel: Die Anregungstabelle verwenden
Um den praktischen Wert von Anregungstabellen zu veranschaulichen, betrachten wir den Entwurf eines einfachen 2-Bit-Zählers, der 0, 1, 2, 3, 0, 1, … mit JK-Flipflops zählt.
Schritt 1: Zustandstabelle. Liste für jede Kombination den aktuellen und den gewünschten nächsten Zustand auf.
| Aktuelles Q1 | Aktuelles Q0 | Nächstes Q1 | Nächstes Q0 |
|---|---|---|---|
| 0 | 0 | 0 | 1 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 1 |
| 1 | 1 | 0 | 0 |
Schritt 2: Die Anregungstabelle anwenden. Bestimmen Sie für jedes Flipflop die erforderlichen J- und K-Eingänge.
Für FF0 (Q0) lauten die Übergänge 0->1, 1->0, 0->1, 1->0. Laut JK-Anregungstabelle gilt in allen Fällen J0=1, K0=1. Also J0=K0=1 – FF0 schaltet immer um.
Für FF1 (Q1) lauten die Übergänge 0->0, 0->1, 1->1, 1->0. Laut Anregungstabelle gilt J1=0/K1=X, J1=1/K1=X, J1=X/K1=0, J1=X/K1=1. Aus einer Karnaugh-Map folgt J1=Q0 und K1=Q0.
Ergebnis: Ein synchroner 2-Bit-Zähler benötigt J0=K0=1 und J1=K1=Q0. Über die Flipflops selbst und eine einzelne Leitung von Q0 zu den J- und K-Eingängen von FF1 hinaus sind keine zusätzlichen Gatter erforderlich. Die vielen Don’t-cares machen diese Minimierung einfach – ein unmittelbarer Vorteil von JK gegenüber SR.
Zusammenfassung der Anwendungen
| Anwendung | Komponente | Warum |
|---|---|---|
| Entprellen von Schaltern | SR-Latch | Einfach, kein Takt erforderlich, erster Kontakt setzt den Zustand |
| SRAM-Konzept | Kreuzgekoppelte bistabile Rückkopplung | Dichtes SRAM verwendet üblicherweise kreuzgekoppelte Inverter plus Zugriffstransistoren, kein gekapseltes SR-Latch |
| Binärzähler | JK-Flipflop | Toggle-Modus zählt natürlich |
| Frequenzteiler | JK- oder T-Flipflop | Jede Stufe teilt den Takt durch 2 |
| Zustandsmaschinen (FSMs) | JK-Flipflop | Don’t-care-Bedingungen vereinfachen Logik |
| CPU-Register | D-Flipflop | Einfachste Datenerfassung, kein verbotener Zustand |
| Schieberegister | D-Flipflop | Serielle Datenbewegung zwischen Stufen |
Praktische Übungen
Experimentiere mit diesen Schaltungen auf digisim.io:
- SR-Latch: Bauen Sie es aus zwei NOR-Gattern auf und prüfen Sie alle vier Eingangskombinationen. Beobachten Sie die verbotene Eingangskombination sorgfältig.
- JK-Toggle-Betrieb: Verdrahten Sie J = K = 1 mit einem Taktsignal und beobachten Sie am Oszilloskop, wie Q an jeder wirksamen Flanke umschaltet.
- Asynchroner 3-Bit-Zähler: Schalten Sie drei JK-Flipflops im Toggle-Betrieb in Reihe. Verbinden Sie die Q-Ausgänge mit dem Oszilloskop und beobachten Sie das binäre Zählmuster.
- SR-zu-JK-Umwandlung: Bauen Sie ein JK-Flipflop aus einem SR-Latch, zwei UND-Gattern und einem Taktsignal auf. Bestätigen Sie, dass J = K = 1 einen definierten Zustandswechsel anstelle der verbotenen Eingangskombination bewirkt.
- Übung zur Anregungstabelle: Entwerfen Sie einen Modulo-6-Zähler mit JK-Flipflops. Verwenden Sie die Anregungstabelle, um die J- und K-Eingangslogik für jedes Flipflop herzuleiten.
Lesen Sie Zähler und Zustandsautomaten, um vollständige FSMs aus diesen Grundelementen aufzubauen, oder öffnen Sie die D-Flipflop-Referenz zum synchronen Speicherelement, das üblicherweise in Registern eingesetzt wird.



