Erweitere Flipflops: D-, T-, JK- und JK-MS-Flipflops

https://bildung.social/@oerinformatik/113781503270131724

https://oer-informatik.de/flipflops_d-t-jk

tl/dr; (ca. 10 min Lesezeit): Eine Reihe von Flipflop-Grundschaltungen wiegen die Nachteile von einfachen RS-Flipflops auf und sind geeignet für besondere Aufgaben: D-Flipflops verfügen neben dem Takt über nur einen Dateneingang, und sind deshalb besonders zum Datenspeichern (in Registern) geeignet, T-Flipflops verfügen nur noch über den Takteingang und eignen sich als Freuquenzteiler oder Zähler, und JK-Flipflops sind die Universalisten, mit denen sehr vieles möglich ist. (Zuletzt geändert am 06.01.2025)

Teil der Serie zu Flipflopschaltungen: Grundlagen, Taktsteuerung, D-/T-/JK-Flipflops

Wir haben in den vorigen Artikeln die Grundlagen von Flipflops und deren Taktsteuerung am Beispiel von RS-Flipflops kennengelernt. Häufig werden jedoch nicht RS-Flipflops selbst verwendet, sondern sie werden zu weiteren Flipflop-Schaltungen kombiniert.

D-Flipflop mit Taktzustandssteuerung

Bei einem D-Flipflop wird der Wert am Eingang D beim Taktzustand C=1 den Ausgang durchgeleitet. Beim Taktzustand C=0 wird der zuletzt eingelesene Zustand ausgegeben und kann erst wieder beim nächsten C=1 geändert werden. Der Name D-Flipflop geht gleichermaßen darauf zurück, dass es Daten speichert und diese noch einen halben Takt lang verzögert (Delay) am Ausgang anliegen.

Diese Charakteristik lässt sich mit unterschiedlichen Schaltungen realisieren. Wir machen es uns einmal einfach und nutzen unsere Grundlagen zur Taktsteuerung aus dem vorigen Artikel, denn auf Grundlage eines taktzustandsgesteuerten RS-Flipflops haben D-Flipflops einen sehr einfachen Aufbau: der Reset-Eingang eines RS-Flipflops wird invertiert mit dem Set-Eingang verknüpft, das Taktsignal einfach durchgereicht. Durch diese Schaltung ist auch sichergestellt, das es bei dieser Art Flipflop keinen irregulären Zustand gibt.

Ein D-Flipflop aufgebaut aus einem taktzustandsgesteuerten RS-Flipflop
Ein D-Flipflop aufgebaut aus einem taktzustandsgesteuerten RS-Flipflop

Ohne irregulären Zustand gilt hier also in jedem Fall Q_1 = \lnot \overline{Q_2} (also Q_1 = Q_2), wir können hier also bedenkenlos die beide Ausgänge mit Q nzw. \overline{Q} bezeichnen.

Bei Taktzustandsgesteuerten D-Flipflops wird dem taktabhängigen Eingang wieder die Nummer des zugehörigen Takts voran gestellt (1D gehört zu C1), da es sich um Taktzustandssteuerung handelt, wird am Takteingang kein weiteres Symbol notiert:

Schaltzeichen eines zustandsgesteuerten D-Flipflops
Schaltzeichen eines zustandsgesteuerten D-Flipflops

Die Wertetabelle lässt sich in zwei Sätzen zusammenfassen: Bei einem HIGH-Signal an der Clock entspricht das Ausgangssignal dem Eingangssignal. Bei einem LOW-Signal an der Clock wird der vorige Wert beibehalten.

Wertetabelle eines zustandsgesteuerten D-Flipflops
Dateneingang D
zum Zeitpunkt t
Clock C
Zustand
Ausgang Q_{t}
zum Zeitpunkt t
Erläuterung
0 1 0 Einlesen bei C=1: Q_t = D_t = 0
x 0 D_{t-1} Wenn C=0:
Ausgabe letzter gespeicherter Wert.
Aktueller D unerheblich (“x” = don’t care)
1 1 1 Einlesen bei (C=1): Q_t = D_t = 1

D-Flipflop mit Taktflankensteuerung

D-Flipflops lassen sich auch mit einer Taktflankensteuerung realisieren.

Nehmen wir wieder ein RS-Flipflop aus Grundlage, so ist der Aufbau analog zu dem obigen Aufbau: Das taktzustandsgesteuerte RS-Flipflops wird nur durch ein taktflankengesteuertes RS-Flipflop (siehe voriger Artikel) ersetzt:

Ein D-Flipflop aufgebaut aus einem taktflankengesteuerten RS-Flipflop
Ein D-Flipflop aufgebaut aus einem taktflankengesteuerten RS-Flipflop

Entsprechend ändert sich auch in der Wertetabelle lediglich, dass wir nicht mehr den Zustand der Clock betrachten (also 0 oder 1), sondern unterscheiden, ob an der Clock eine steigende Flanke (\uparrow) auftritt, oder nicht (spricht: 1, fallende Flanke oder 0: \bar{} \downarrow \_).

Wertetabelle eines flankengesteuerten D-Flipflops
Dateneingang D
zum Zeitpunkt t
Clock C
Flanken/Zustand
Ausgang Q_{t}
zum Zeitpunkt t
Erläuterung
0 \uparrow 0 Einlesen bei steigender Flanke: Q_t = D_t = 0
x \bar{} \downarrow \_ D_{t-1} Wenn keine steigende Flanke an Clock:
Ausgabe letzter gespeicherter Wert.
Aktueller Wert D unerheblich (“x” = don’t care)
1 \uparrow 1 Einlesen bei steigender Flanke: Q_t = D_t = 1

Im Schaltzeichen von taktflankengesteuerten D-Flipflops erscheint wieder das “Flankendreieck” am Takteingang:

Schaltzeichen eines flankengesteuerten D-Flipflops
Schaltzeichen eines flankengesteuerten D-Flipflops

In der Praxis werden D-Flipflops vor allem zum Speichern von Daten in Registern verwendet. Hierbei wird genutzt, dass jedes D-Flipflop den aktuellen Wert mit jedem Takt am Ausgang weiterschiebt. Seriell verknüpfte D-Flipflops bauen also Schieberegister auf, die mehrere Bit speichern können - im folgenden Beispiel sind dies vier Bit, die mit vier Taktzyklen hinein (und heraus) geschoben werden. Man erkennt schön, wie jedes Datenbit mit Verzögerung von D-Flipflop zu D-Flipflop geschoben wird:

Aufbau eines einfachen 4-Bit Schieberegisters aus vier flankengesteuerten D-Flipflops
Aufbau eines einfachen 4-Bit Schieberegisters aus vier flankengesteuerten D-Flipflops

T-Flipflop

Eine weitere Flipflop-Schaltung mit ähnlich einfacher Funktion ist das T-Flipflop: dieses Flipflop besitzt lediglich einen Eingang (T) und wechselt den Zustand am Ausgang Q mit jeder steigenden Flanke an diesem Eingang. Dieser Zustandswechsel am wird aus dem Englischen togglen genannt, was dem Flipflop den Namen gibt.

Aufgebaut werden kann diese Funktionalität beispielsweise, indem der negierte Ausgang eines taktgesteuerten D-Flipflops an den Daten-Eingang zurückgeführt wird:

Ein einfaches T-Flipflop aufgebaut aus einem taktflankengesteuerten D-Flipflop
Ein einfaches T-Flipflop aufgebaut aus einem taktflankengesteuerten D-Flipflop

Im Gegensatz zu den anderen Flipflops ergibt es keinen Sinn, ein “toggelndes” Flipflop mit einem zustandsgesteuerten Eingang zu belegen - bei einem HIGH-Signal an T würde es unentwegt oszillieren (den Zustand wechseln). Daher gibt es dieses Flipflop nur in einer flankengesteuerten Variante. Das Schaltzeichen zeigt dies wiederum durch das Dreieck am Eingang T an:

Schaltzeichen eines einflankengesteuerten T-Flipflops
Schaltzeichen eines einflankengesteuerten T-Flipflops

Die Wertetabelle ist noch einfacher aufgebaut, als die des D-Flipflops: Bei einer anliegenden steigende Flanke (\uparrow) wechselt der Zustand am Ausgang von 0 auf 1 bzw. umgekehrt (Q_t = \overline{Q_{t-1}}), bei allen anderen Zuständen und fallenden Flanken (spricht: an T liegt 1, fallende Flanke oder 0 an: \bar{} \downarrow \_) bleibt der Ausgang unverändert (Q_t = Q_{t-1}).

Wertetabelle eines T-Flipflops
Dateneingang T
zum Zeitpunkt t
Ausgang Q_{t}
zum Zeitpunkt t
Erläuterung
\uparrow \overline{Q_{t-1}} Toggeln (Zustandswechsel) bei steigender Flanke:
Q_t = \overline{Q_{t-1}}
\bar{} \downarrow \_ Q_{t-1} Wenn keine steigende Flanke
Ausgabe letzter gespeicherter Wert.

Da T-Flipflops am Ausgang mit halbierter Frequenz zum Eingangssignal den Zustand wechseln, finden sie vor allem in Frequenzteilern oder binären Zählern Verwendung. Hierzu wird der negierte Ausgang des einen mit dem Eingang des folgenden T-Flipflops verbunden:

Ein Frequenzteiler (Binärzähler) aus T-Flipflops
Ein Frequenzteiler (Binärzähler) aus T-Flipflops

Man erkennt deutlich, dass die roten Signale von Flipflop zu Flipflop mit halber Frequenz leuchten. Gut erkennen lässt sich dieses Verhalten auch am Impulsdiagramm eines solchen Frequenzteilers / Binärzählers:

Ein Frequenzteiler (Binärzähler) aus T-Flipflops
Ein Frequenzteiler (Binärzähler) aus T-Flipflops

Auch beim T-Flipflop sind natürlich alle bekannten Erweiterungen denkbar, wie wir sie bereits beim RS-Flipflop kennengelernt haben: Zweiflankensteuerung, taktunabhängige Eingänge. Aufbau und Verhalten gleichen dem des RS-Flipflops und werden beim JK-Flipflop nochmals dargestellt - so dass wir uns Details hierzu sparen. Bei der Zweiflankensteuerung wird wieder das Ausgangssignal des Haupt-Flipflops durch ein zweites RS-Flipflop mit einem invertierten Taktsignal verzögert (fallende Taktflanke) ausgegeben, was man an der angedeuteten Taktflanke am Ausgang erkennen kann:

Schaltzeichen eines zweiflankengesteuerten T-Flipflops
Schaltzeichen eines zweiflankengesteuerten T-Flipflops

Die Flipflop-Königsklasse: das JK-Flipflop

Ein RS-Flipflop mit zwei binären Eingängen könnte auf Viererlei (2^2 = 4) unterschiedliche Arten auf Eingangssignale reagieren. Wir nutzen jedoch lediglich drei Varianten: Setzen, Rücksetzen und Speichern. Die Eingangskombination (R=1, S=1) verhält sich irregulär und sollte gemieden werden: je nach internem Aufbau des RS-Flipflops sind beide Ausgänge (Q, \overline{Q}) HIGH oder LOW - und damit nicht wie eigentlich gewünscht gegensätzlich. Oder aber die interne Schaltung dupliziert durch Dominanz-Schaltung das Verhalten einer anderen Kombination (z.B. bei Setzdominanz:(R=1, $S=19 verhält sich wie (R=0$, S=1) ). Wir verschenken also eine von vier Verhaltensvarianten des Flipflops.

Dieses Problem adressiert das JK-Flipflop: es verhält sich in drei Eingangskombinationen wie ein RS-Flipflop (Setzen, Rücksetzen und Speichern), an Stelle des irregulären Zustands des RS-Flipflops (wenn also beide Eingänge 1 sind) bietet es aber zusätzlich toggelndes Verhalten, wie wir das beim T-Flipflop kennengelernt haben.

Die Wertetabelle eines JK-Flipflops sieht also folgendermaßen aus:

Wertetabelle eines JK-Flipflops
Jump J
(\widehat{=} Set)
zum Zeitpunkt t
Kill K
(\widehat{=} Reset)
zum Zeitpunkt t
Clock C
Flanken/Zustand
Ausgang Q_{t}
zum Zeitpunkt t
Erläuterung
x x \bar{} \downarrow \_ Q_{t-1} Wenn keine steigende Flanke
Ausgabe letzter gespeicherter Wert.
Aktueller Werte J und K unerheblich (“x” = don’t care)
0 0 \uparrow Q_{t-1} Speichern
Q_t = Q_{t-1}
0 1 \uparrow 0 Kill: Rücksetzen bei steigender Flanke:
Q_t = 0
1 0 \uparrow 1 Jump: Setzen bei steigender Flanke:
Q_t = 1
1 1 \uparrow \overline{Q_{t-1}} Toggeln (Zustandswechsel) bei steigender Flanke:
Q_t = \overline{Q_{t-1}}

Erreicht wird dieses toggelnde Verhalten beispielsweise, in dem bei einem RS-Flipflop eine zusätzliche Rückkopplung zum gegengleichen Ausgang ergänzt wird. Es gibt natürlich viele weitere Wege, wie das Flipflop aufgebaut werden kann - dies ist nur eine Variante, die auf von uns besprochenen Grundkomponenten beruht.

Damit es zu keiner Verwechslung mit den Eingängen eines RS-Flipflops kommt, werden die Eingänge mit J (für Jump, entspricht Set) und K (für Kill, entspricht Reset) bezeichnet.

Aufbau eines JK-Flipflops
Aufbau eines JK-Flipflops

Da JK-Flipflops wie auch T-Flipflops über toggelndes Verhalten verfügen, ergibt eine Taktzustandssteuerung auch hier wenig Sinn. Beim Taktzustand C=1 und (R=1, S=1) würde sonst das Flipflop unentwegt toggeln.Die Flipflops verfügen also über eine Flankensteuerung, was mit dem Flankendreieck am Takteingang des Schaltzeichens symbolisiert wird.

Schaltzeichen eines eintaktflankengesteuerten JK-Flipflops
Schaltzeichen eines eintaktflankengesteuerten JK-Flipflops

Übungsaufgabe

JK-Flipflops sind vor allem deshalb beliebt, weil sie sehr flexibel verschaltet werden können. Mit wenigen Grundgattern und HIGH und LOW-Potenzial sind schnell viele Grundschaltungen aufgebaut. Erstelle eine Schaltung, die mit Hilfe von JK-Flipflops:

  • die Funktionalität eines T-Flipflops aufweist,

  • die Funktionalität eines D-Flipflops aufweist,

  • die Funktionalität eines RS-Flipflops mit dominantem Setzen aufweist.

JK-MS-Flipflop

Wie bei RS- und T-Flipflops können auch JK-Flipflops um eine Zweitaktflankensteuerung erweitert werden: das erste Haupt-Flipflop (main / früher: master) nimmt das Signal bei der steigenden Taktflanke entgegen und reicht es an die Eingänge eines zweiten (steward / früher: slave) weiter. Das zweite Flipflop gibt die Signale wiederum bei der sinkenden Tankflanke an den Ausgang weiter. Diese Art Flipflop wird als MS-Flipflop oder zweitaktflankengesteuertes Flipflop bezeichnet.

Aufbau eines JK-MS-Flipflops aus zwei JK-Flipflops
Aufbau eines JK-MS-Flipflops aus zwei JK-Flipflops

Durch dieses Verfahren ist sichergestellt, dass sich während der Signalverarbeitung eines Takts keine Eingangszustände mehr ändern.

Die Ausgabe bei fallender Taktflanke wird wieder durch die symbolisierte fallende Taktflanke am Ausgang symbolisiert:

Schaltzeichen eines JK-MS-Flipflops
Schaltzeichen eines JK-MS-Flipflops

Die beiden Flipflops eines JK-MS-Flipflops schalten immer mit einem halben Takt Verzögerung. Betrachten wir das Impulsdiagramm eines 4-Bit-Synchronzählers, so können wir die Verzögerung gut im Diagramm erkennen. Dieser Zähler ist aus vier JK-MS-Flipflops aufgebaut:

4-Bit-Synchronzähler aus vier JK-MS-Flipflops
4-Bit-Synchronzähler aus vier JK-MS-Flipflops

Im zugehörigen Impulsdiagramm ist jeweils die weitergabe des Zustands der verarbeitenden main-Flipflops (Q_xm) an das ausgebende steward-Flipflop (Q_xs) mit Pfeilen hervorgehoben:

Impulsdiagramm 4-Bit-Synchronzähler aus vier JK-MS-Flipflops
Impulsdiagramm 4-Bit-Synchronzähler aus vier JK-MS-Flipflops

JK-MS-Flipflop mit taktunabhängigen Eingängen (Preset/Clear)

Alle Varianten des JK-Flipflops lassen sich durch taktunabhängige Eingänge erweitern. Wie schon beim RS-Flipflop werden diese häufig als Preset (taktunabhängiges Setzen) und Clear (taktunabhängiges Rücksetzen) bezeichnet.

Um den internen Aufbau nicht zu komplex erscheinen zu lassen, referenziere ich hier direkt auf das taktflankengesteuerte RS-Flipflop mit Preset und Clear: zwei davon werden benötigt, um ein JK-MS-Flipflop mit Preset und Clear zu erstellen.

Aufbau eines JK-MS-Flipflops mit Preset und Clear aus zwei RS-Flipflops
Aufbau eines JK-MS-Flipflops mit Preset und Clear aus zwei RS-Flipflops

In diesem Beispiel wurden sowohl Preset als auch Clear HIGH-aktiv ausgeführt, d.h., um taktunabhängig zurückzusetzen muss ein HIGH an PRE angelegt werden. Ein Schaltzeichen für diese Art Flipflop würde so aussehen:

Schaltzeichen eines JK-MS-Flipflops mit Preset und Clear
Schaltzeichen eines JK-MS-Flipflops mit Preset und Clear

Realisiert werden diese Schaltungen jedoch zumeist LOW-aktiv, d.h. ein Pin mit der Bezeichnung \overline{PRE} wird nach außen geführt, der auf LOW gelegt werden muss, um taktunabhängig zurückzusetzen und im normalen Betrieb gegen HIGH verdrahtet sein sollte.

JK-MS-Flipflops kommen in zahllosen Schaltungen zur Anwendungen, wir werden sie uns im Folgenden u.a. beim Zähleraufbau nochmals genauer ansehen. Neben den Binärzählern, die wir oben bereits kurz gesehen hatten, können beliebige andere Zählcodes mithilfe von Flipflopschaltungen erzeugt werden. Als kleiner Vorgeschmack hier eine synchrone Zählschaltung, die mit dem Graycode von 0 bis 9 zählt:

Synchroner Graycode-Zähler mit JK-MS-Flipflops
Synchroner Graycode-Zähler mit JK-MS-Flipflops

Übungsaufgaben

Das war so ziemlich alles, was man zum Aufbau von einfachen Flipflops wissen muss. Wer halbwegs verstanden hat, welche Funktionen die jeweiligen Flipflops haben, welche Ansteuerungen es gibt, und wie sie sich unterscheiden, der sollte die folgenden beiden Impulsdiagramme problemlos vervollständigen können:

Impulsdiagramm mit verschiedenen Arten von RS-Flipflops
Impulsdiagramm mit verschiedenen Arten von RS-Flipflops
Lösung: Impulsdiagramm mit verschiedenen Arten von RS-Flipflops
Lösung: Impulsdiagramm mit verschiedenen Arten von RS-Flipflops

Hinweis: In den roten Bereichen befindet sich das Flipflop im irregulären Zustand - ohne konkrete Information über den internen Aufbau ist keine Aussage möglich ob die Ausgänge HIGH oder LOW sind.

Impulsdiagramm mit verschiedenen Arten von JK-Flipflops
Impulsdiagramm mit verschiedenen Arten von JK-Flipflops
Lösung: Impulsdiagramm mit verschiedenen Arten von JK-Flipflops
Lösung: Impulsdiagramm mit verschiedenen Arten von JK-Flipflops

Hinweis zur Nachnutzung als Open Educational Resource (OER)

Dieser Artikel und seine Texte, Bilder, Grafiken, Code und sonstiger Inhalt sind - sofern nicht anders angegeben - lizenziert unter CC BY 4.0. Nennung gemäß TULLU-Regel bitte wie folgt: Erweitere Flipflops: D-, T-, JK- und JK-MS-Flipflops” von oer-informatik.de (H. Stein), Lizenz: CC BY 4.0. Der Artikel wurde unter https://oer-informatik.de/flipflops_d-t-jk veröffentlicht, die Quelltexte sind in weiterverarbeitbarer Form verfügbar im Repository unter https://gitlab.com/oer-informatik/digitaltechnik. Stand: 06.01.2025.

[Kommentare zum Artikel lesen, schreiben] / [Artikel teilen] / [gitlab-Issue zum Artikel schreiben]

Kommentare gerne per Mastodon, Verbesserungsvorschläge per gitlab issue (siehe oben). Beitrag teilen: