Was ist ein Flipflop?

Es scheint eine Reihe unterschiedlicher Definitionen von Flip-Flops und Latches zu geben, von denen einige widersprüchlich sind.

Das Informatik-Lehrbuch für den Kurs, den ich unterrichte, ist wahrscheinlich das verwirrendste (tatsächlich habe ich wenig Vertrauen in das Buch, weil es an mehreren Stellen einfach falsch ist).

Ich bin mit der Funktionsweise von Latches (SR, gated SR, gated D) und dem Unterschied zwischen pegelgetriggerten und flankengetriggerten Geräten vertraut, zumindest in Bezug auf Logikgatter und Zeitdiagramme. Ich suche jedoch immer noch nach einer prägnanten Definition eines Flip-Flops und eines Latches.

Das glaube ich bisher:

„Ein Flip-Flop ist ein flankengetriggertes bistabiles Gerät, das 1 Bit speichern kann“.

„Ein Latch ist ein pegelgetriggertes bistabiles Gerät, das 1 Bit speichern kann.“

Ich habe mir frühere Posts auf dieser Website zu diesem Thema angesehen und suche immer noch nach etwas Definitivem, so aufschlussreich sie auch sind.

Mein aktuelles Verständnis, das ich überprüfen möchte, ist in den folgenden Diagrammen dargestellt…

Nebeneinander sind, was ich verstehe, zwei Implementierungen eines pegelgetriggerten Gate-D-Latch.

Darunter befindet sich ein positiver Flankendetektor, in dem kurzen Moment, in dem das NICHT-Gatter noch nicht auf den Wechseleingang von Low nach High reagiert hat, nämlich die steigende Flanke (Rot ist 1, Blau ist 0).

Im letzten Diagramm wurde der Flankendetektor an einem datierten D-Latch angebracht, und das macht ihn zu einem Flip-Flop.

Geben Sie hier die Bildbeschreibung ein

Ist das letzte Diagramm wirklich ein Flip-Flop oder ist es immer noch nur ein Latch?

Und warum brauchen wir die Master-Slave-Version gegeben, dass dieses Gerät so viel einfacher ist?

@DanielTork, warum nicht eine Antwort geben?
In Australien und Neuseeland sind sie eine Form von offenen Schuhen, die oft am Strand oder bei schönem Wetter getragen werden. ;)
Auch in den USA. Früher nannten wir sie Tangas, aber das bezieht sich jetzt auf etwas anderes ;-)
Jetzt möchte ich einen Schaltplan sehen, der mit den als Flip-Flops bekannten Sandalen gezeichnet wurde ...
@KyranF Nein, das sind Jandalen.
@immibis verschwinde von hier, du fauler Kiwi!

Antworten (6)

Ich habe heute viel über diese Definition nachgedacht.

Wie andere darauf hingewiesen haben, werden die genauen Bedeutungen variieren. Darüber hinaus werden Sie wahrscheinlich sehen, dass mehr Leute dies falsch machen, selbst auf dieser Website, als richtig. Mir egal, was Wikipedia sagt!

Aber im Allgemeinen:

  • Ein Flip-Flop ändert seinen Ausgangszustand höchstens einmal pro Taktzyklus.
  • Ein Latch ändert seinen Zustand so oft wie die Datenübergänge während seines Transparenzfensters.

Zusätzlich,

  • Ein Flip Flop ist sehr sicher. Nahezu narrensicher. Aus diesem Grund verwenden Synthesewerkzeuge normalerweise Flip-Flops. Aber sie sind langsamer als ein Latch (und verbrauchen mehr Strom).
  • Riegel sind schwieriger richtig zu verwenden. Aber sie sind schneller als Flip-Flops (und kleiner). Daher werden kundenspezifische Schaltungsdesigner oft das Flip-Flop über ihren digitalen Block verteilen (ein Latch an beiden Enden mit entgegengesetzter Phase), um einige zusätzliche Pikosekunden aus einem schlechten Timing-Bogen herauszuholen. Dies wird am Ende des Beitrags angezeigt.

Ein Flip-Flop ist am typischsten durch eine Master-Slave-Topologie gekennzeichnet. Dies sind zwei gekoppelte (es kann eine Logik dazwischen geben), entgegengesetzte Phasen-Latches Rücken an Rücken (in der Industrie manchmal L1/L2 genannt).

Dies bedeutet, dass ein Flip-Flop von Natur aus aus zwei Speicherelementen besteht: eines zum Halten während des Low-Zyklus und eines zum Halten während des High-Zyklus.

Ein Latch ist nur ein einzelnes Speicherelement (SR-Latch, D-Latch, JK-Latch). Nur weil Sie einen Clock-to-Gate-Datenfluss in das Speicherelement einführen, ist es meiner Meinung nach kein Flip-Flop (obwohl es sich wie eines verhalten kann: dh mehr ansteigende Flanken werden ausgelöst). Es macht es nur für eine bestimmte Zeit transparent.

Unten ist ein echtes Flip-Flop dargestellt , das aus zwei SR-Latches erstellt wird (beachten Sie entgegengesetzte Phasentakte).

wahr d ff

Und ein weiteres echtes Flip-Flop (dies ist der gebräuchlichste Stil in VLSI) aus zwei D-Latches (Transmission Gate Style). Beachten Sie wieder die entgegengesetzten Phasentakte :

echter Flip-Flop-TG-Stil

Wenn Sie den Takt schnell genug auf ein Latch pulsieren, ähnelt es einem Flip-Flop-Verhalten (Pulse Latch). Dies ist bei Hochgeschwindigkeits-Datenpfaddesigns üblich, aufgrund der geringeren Verzögerung von D->Out und Clk->Out, zusätzlich zu der gewährten besseren Aufbauzeit (Haltezeit muss auch steigen, geringer Preis zu zahlen) durch Transparenz während der Dauer von der Puls. Macht es das zu einem Flip Flop? Nicht wirklich, aber es sieht auf jeden Fall so aus!

Dies ist jedoch viel schwieriger zu garantieren, um zu funktionieren. Sie müssen über alle Prozessecken (fast nmos, slow pmos, high wire cap, low wire r; als Beispiel) und alle Spannungen (niedrige Spannung verursacht Probleme) prüfen, ob der Impuls Ihres Kantendetektors breit genug bleibt, um tatsächlich zu öffnen den Latch und lassen Daten herein.

Für Ihre spezielle Frage, warum es als Impulsspeicher anstelle eines Flip-Flops betrachtet wird, liegt dies daran, dass Sie wirklich nur ein einstufiges empfindliches Bitspeicherelement haben. Obwohl der Puls eng ist, bildet er kein Lock-and-Dam-System, das ein Flip-Flop erzeugt.

Hier ist ein Artikel, der einen Ihrer Anfrage sehr ähnlichen Impulsspeicher beschreibt. Ein passendes Zitat: "Wenn die Wellenform des Impulstakts einen Latch auslöst, wird der Latch ähnlich wie ein flankengesteuertes Flipflop mit dem Takt synchronisiert , da die ansteigenden und abfallenden Flanken des Impulstakts zeitlich fast identisch sind."

BEARBEITEN Zur Verdeutlichung habe ich eine Grafik mit Latch-basiertem Design eingefügt. Es gibt einen L1-Latch und einen L2-Latch mit Logik dazwischen. Dies ist eine Technik, die Verzögerungen reduzieren kann, da ein Latch eine geringere Verzögerung als ein Flip-Flop hat. Das Flipflop wird „auseinandergespreizt“ und die Logik in die Mitte gelegt. Jetzt sparen Sie ein paar Gate-Verzögerungen (im Vergleich zu einem Flip-Flop an beiden Enden)!

Latch-basiertes Design

„Gekennzeichnet durch eine Master-Slave-Topologie“ – das klingt eher nach einem Implementierungsdetail als nach einem prägenden Verhaltensmerkmal. Vom Verhalten her ist ein Flip-Flop (nach Ihrer Definition) ein Einzelbitspeicher, der zufällig flankengetriggert wird. In der Praxis erfordert die zur Annäherung der Flankentriggerung erforderliche Implementierungsmagie ein zweites Speicherelement!
@OliverCharlesworth: Nun, es ist ein Implementierungsdetail. Sowie ein physikalisches, verhaltensbezogenes, strukturelles und topologisches Detail. Sie können ein Latch nicht einfach als Flip-Flop bezeichnen, weil es so aussieht. Sie können damit vielleicht durchkommen, aber um sie in vollem Umfang zu nutzen, müssen Sie den Unterschied kennen. Wenn Sie ein Flip-Flop auseinander spreizen, haben Sie zwei separate Latches mit entgegengesetzter Phase. Sie können Logik in die Mitte stopfen. Das ist schneller als ein Flip-Flop an beiden Enden. Es ermöglicht auch eine "Zeitausleihe" durch eine Zyklusgrenze, was ein sehr wichtiges Konzept für Hochgeschwindigkeitsdesigns ist.
Hier sind einige weitere nützliche Bilder von DFFs, die helfen könnten, siehe das letzte. Das oben gepostete DFF ist verwirrend, da es bei entgegengesetzten Phasen des Takts zwischenspeichert (dh der Master verriegelt bei steigender Flanke, der Slave verriegelt bei fallender Flanke). electronic.stackexchange.com/a/84247/42957
Es wäre schön, hier ein Beispiel für ein echtes einphasiges flankengetriggertes Flip-Flop ("TSPC" DFF) zu sehen.

Viele Leute werden getaktete Geräte als "Flip-Flops" und nicht getaktete Geräte als Latches bezeichnen. Damals, als ich es gelernt habe, waren es "getaktete Flip-Flops" und "Flip-Flops". Beide können flankengetriggert werden.

Es gibt genügend Unklarheiten, dass Sie sich, wenn es wichtig ist, auf Teilenummern, Datenblätter und Zeitdiagramme und nicht auf Wortbeschreibungen verlassen.

Dann ist ein GTO-SCR auch ein Flip-Flop?

Danke an alle, die meine Frage beantwortet haben. Wie erwartet, gibt es einige Meinungsverschiedenheiten. Leider ist Semantik bei Prüfungen oft wichtiger als Verständnis. Wenn ich mit einem Prüfungsausschuss streiten muss, weil ich die Prüfungsarbeit eines A-Level-Studenten in Informatik falsch bewertet habe (und das habe ich in der Vergangenheit getan), möchte ich in einer starken Position sein. Ich dachte, ich zeige Ihnen ein paar Seiten des offiziellen A-Level-Lehrbuchs.

Das erste Diagramm ist ein aktives niedriges SR-Latch. Das Buch nennt es einen Flip-Flop.

Im Text heißt es im Buch: „Durch die Verwendung von zwei Flip-Flops können wir eine Schaltung namens D-Typ-Flip-Flop erstellen, die eine taktgesteuerte Schaltung verwendet, um den Ausgang zu steuern und ihn um einen Taktimpuls zu verzögern. Das D steht für Verzögerung ." Dieser Text scheint sich auf die Master/Slave-Konfiguration zu beziehen. Das zweite Diagramm (Abbildung 14.2) ist als D-Flip-Flop bezeichnet. Es ist tatsächlich ein aktives High-Gated-D-Latch.

Nicht sehr hilfreich!

Ich werde mich auf "Ein Flip-Flop ist am typischsten durch eine Master-Slave-Topologie gekennzeichnet" festlegen. wie jbord39 vorgeschlagen hat, mit der Einschränkung, dass der Begriff Flip-Flop oft verwendet wird, um einen flankengesteuerten Latch und manchmal nur jede Art von Latch zu bezeichnen. Ich denke, das ist, woher das Buch kommt, wenn auch nicht überzeugend.

Nochmals vielen Dank an alle.

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Ja, das Buch ist geradezu irreführend. Außerdem steht D für Data, not delay ... lol Der wichtige Teil ist, zu verstehen, wie sie funktionieren, und sich nicht zu sehr in Semantik zu vertiefen. Ich habe die Semantik so erklärt, wie sie mir in den Unternehmen, in denen ich gearbeitet habe, erklärt wurde. Es kann je nach Bereich und Erfahrungsstufe variieren (insbesondere in Bezug auf die Interna der Logikgatter, an denen ich arbeite).
Ich muss jbord39 zustimmen. Wie ich in meiner Antwort gezeigt habe, ermöglicht diese E-Eingabe nur, dass die Daten die Ausgabe beeinflussen. Und doch haben Sie Lehrbücher, die falsche Informationen enthalten. Eigentlich ziemlich nervig.

Ein Flip-Flop ist anders als ein Latch. Sie sind beide bistabile Schaltungen, aber sie sind tatsächlich zwei verschiedene Dinge.

Der Latch hat einen Aktivierungsstift und lauscht nur dann auf die Dateneingabe/-eingänge, wenn dieser Stift hoch ist. Wenn es niedrig ist, friert der Riegel ein und speichert seinen Zustand. Jetzt, selbst wenn Sie die Eingaben manipulieren, reagiert es nicht.

Das Flip-Flop enthält stattdessen einen Clock-Pin, der nur auf sich ändernde Impulse (Pegelverschiebungen) reagiert. Denken Sie an eine Rechteckwelle. Die Übergangszeit zwischen Aus und Ein; Aus und Ein ist die Zeit, in der die Schaltung auf Eingangssignale reagiert. Nur dann kann er gewechselt werden, nicht wenn der Stift stabil und vollständig auf ist.

Flip-Flop-Reaktionszeit

Beachten Sie, dass die grünen Linien den Zeitraum darstellen, in dem die Eingabe abgehört wird, und die roten Linien den Zeitraum, in dem dies nicht der Fall ist. Der Latch erlaubt nur Eingaben während der Perioden, die durch die obersten roten Linien angezeigt werden.

Die eigenständige SR ist in der Praxis keine realisierbare Schaltung.

Dank an jbord39 für den Hinweis auf den Fehler. Bild von radio-elctronics.com übernommen und bearbeitet.

Ein Flip-Flop ist kein Latch, aber es kann aus zwei gegenphasigen Latches Rücken an Rücken aufgebaut werden.
Ich habe die Antwort @ jbord39 bearbeitet
Danke, @Peter Mortensen. Die habe ich nicht gesehen.

Die Begriffe, wie Sie sie in Ihrer Frage verwenden, stimmen zu 100% mit dem überein, was ich im Zusammenhang mit dem analogen IC-Design gehört habe. Latches haben ein pegelempfindliches Aktivierungssignal, während Flip-Flops flankenempfindliche Aktivierungssignale haben, die als "Takt" bezeichnet werden. Ich habe einige Stellen online oder in einigen Büchern bemerkt, die den Begriff Flip-Flop für beide Typen zu verwenden scheinen, was Sinn machen kann, wenn Sie nur an den Schaltungszustand "Flip-Flop" zwischen zwei stabilen Punkten denken, aber immer dann, wenn Designer darüber sprechen In einer Schaltung, in der ich arbeite, sind Latches pegelempfindlich und Flip-Flops (oder auch allgemein nur "Flops") flankenempfindlich.

Zu Ihrer anderen Frage, ob ein Flip-Flop als Latch mit Flankendetektor oder als Paar Master-Slave-Latches konzipiert werden soll. Beide Wege können funktionieren, vorausgesetzt, Ihr Kantendetektor hat genügend Verzögerung. Latches haben eine gewisse Mindestdauer an Aktivierungszeit. Ich vermute, es ist nur schwieriger, ein Hochgeschwindigkeits-Flip-Flop mit der Kantendetektortechnik herzustellen, und die Setup- / Haltezeit kann je nach Prozess / Spannung / Temperatur stärker variieren.

Ich frage mich, warum ich selten Flops sehe, die mit Master / Slave-Paaren mit nicht überlappenden Logikschwellenwerten implementiert sind (eine Eingangsspannung unter VDD / 4 würde also den Master aktivieren und eine Spannung über VDD / 2 würde den Slave aktivieren. Wenn mehrere kaskadierte Flops sind ein langsam ansteigendes oder verrauschtes Eingangssignal zugeführt wird, wäre das Verhalten zuverlässig, vorausgesetzt, dass keiner von ihnen bei einer ansteigenden Flanke eine Spannung unter VDD/4 sieht, nachdem irgendjemand eine Spannung über VDD/2 gesehen hat.
@supercat Du redest von Hysterese?
@CortAmmon: Nein - etwas Besseres. Wenn zwei Flip-Flops mit unabhängigen Schmidt-Triggern kaskadiert werden, kann es zu einem fehlerhaften Betrieb kommen, wenn das erste Flop die Taktflanke erkennt und den Eingang zum Ausgang durchleitet, bevor das zweite Flop seine Taktflanke erkennt. Wenn die Flip-Flops geteilte Eingangsschwellen verwenden, würde das zweite Flop seinen Eingang erfassen, wenn der Takt über den unteren Schwellenwert steigt, aber der Ausgang des ersten Flops würde sich nicht ändern, bis der Takt den oberen Schwellenwert erreicht.

(Springen Sie zum Ende, wenn Sie wissen möchten, ob die letzte Schaltung des OP ein Flip-Flop oder ein Latch ist.)

Grundsätzlich ist ein Flip-Flop eine Anordnung von Logikgattern (oder Komponenten), die das Zwischenspeichern von 2 Zuständen zusammen mit einem Taktstift ermöglicht, der diese Zustandsänderungen ermöglicht.

Hier ist nun der Unterschied zwischen einem Flip-Flop und einem Latch. Latches sind asynchron, während Flip-Flops synchron sind.

  • Asynchrone Latches benötigen keinen Update-Pin, der üblicherweise als CLKPin (kurz für Uhr) in einem Flip-Flop bezeichnet wird. Sie kümmern sich nur darum, ob sich die Eingänge in einem bestimmten Zustand befinden, entweder HIGHoder LOW. Wenn eine bestimmte Kombination von HIGHs und LOWs in der Eingabe ausgelöst wird, entscheidet die Schaltung, eine Aktion auszuführen, und Ihr gewünschtes Ergebnis wird "sofort" zurückgegeben. Es gibt 4 mögliche Aktionen in einem Latch.

    1. Nichts tun
    2. Stellen Sie QeinHIGH
    3. Stellen Sie QeinLOW
    4. Der ungültige Zustand (angeblich den Wert von invertieren Q)

    Beachten Sie, dass Q'abhängig ist von Q.

Ein Beispiel ist das SR-Latch, das alle 4 möglichen Aktionen zeigt, die ein Latch ausführen kann:RS-Latch

  1. Wenn Sist LOWund Rist LOW, ändert sich nichts.
  2. Wenn Sist HIGHund Rist LOW, Qwird auf gesetzt HIGH.
  3. Wenn Sist LOWund Rist HIGH, Qwird auf gesetzt LOW.
  4. Wann Sist HIGHund Rist HIGH, Qwird mit einer "unvorhersehbar" schnellen Rate umgekehrt. Dieser Zustand ist ungültig.
  • Mit synchronen Flip-Flops können Sie Datenpins einen Wert zuweisen. Das bedeutet, dass es sich nur um den Zustand dieser Pins kümmert. Die Schaltung entscheidet jedoch noch nicht, eine Aktion am Ausgang durchzuführen. Sie haben den CLKPin wie oben erwähnt. Wenn der CLKPin seinen Zustand ändert (entweder von LOWzu HIGH, umgekehrt oder sogar beides), werden die Datenpins „erfasst“ und das Flip-Flop führt eine Aktion aus, die auf der Kombination von HIGHs und LOWs der von den Datenpins erfassten Daten basiert. Es gibt zwei Aktionen für den CLKStift.
  1. Nichts tun
  2. "Erfassen" Sie Daten von den Datenpins und führen Sie eine Aktion am Ausgang aus, basierend auf den Werten der Datenpins zu diesem bestimmten Zeitpunkt.

Auch hier gibt es 4 mögliche Aktionen, die die Schaltung am Ausgang ausführen kann.

  1. Nichts tun
  2. Stellen Sie QeinHIGH
  3. Stellen Sie QeinLOW
  4. Kehre den Wert von um Q(jetzt ist es gültig, weil es nur einmal gemacht wird)

DAS IST KEIN FLIP-FLOP:

Geben Sie hier die Bildbeschreibung ein

Aber warum fragen Sie vielleicht? Dieser EStift ist kein Uhrstift. Taktstifte lassen die Schaltung die Informationen von den Datenstiften EINMAL analysieren, wo diese Informationen als Anweisungen gesendet werden, um bestimmte Aktionen am Ausgang auszuführen. Freigabe-Pins wie dieser lassen die Schaltung jedoch die Informationen von den Daten-Pins analysieren, solange sie hoch gehalten werden, und setzen ständig die Werte des Ausgangs. Es handelt sich also um eine Verriegelung. (Danke an jbord39 für den Hinweis auf meinen Fehler).

Das Flip-Flop ist also wie ein Latch, außer dass Sie einen zusätzlichen "Bestätigungs" -Schritt benötigen, nämlich den CLKStift.

Ist diese letzte Schaltung der OP-Frage also ein Flip-Flop? Versuchen Sie, C auf High zu halten, und sehen Sie, ob sich der Ausgang ändert, wenn Sie den Wert von D ändern. Wenn sich der Ausgang ändert, sollte er stattdessen enable genannt werden und ist ein Latch. Aber wenn sich der Ausgang nicht ändert (wobei das der Fall ist), dann ist es ein Flip-Flop.

Bilder stammen aus Wikipedia.

Nein, viele Riegel haben Uhrenstifte. nxp.com/documents/data_sheet/74HC_HCT373.pdf Tatsächlich ist die Schaltung, die Sie gezeigt haben, ein Latch, kein Flip-Flop ...
@ jbord39 ? Welcher Uhrenstift? Und der Enable-Pin unterscheidet sich von einem Clock-Pin.
@ jbord39 und hoppla, du hast recht. Die unteren beiden Schaltungen sind Latches. Bitte überdenke meine Antwort.
Lassen Sie mich sehen, ob ich es verstehe. Flip-Flops prüfen jeden Eingang und schalten einen Ausgang ein, und ein Latch prüft die Uhr und handelt, wenn sie 1 ist, und gibt den Wert von D aus. Das SR-Latch IST also ein Flip-Flop, da es nicht getaktet ist. aber das D-Latch ist ein echtes Latch.
@DanielTork Die Sache ist, dass Sie mehrere "Uhren" haben und eine Uhr nicht zwischen Pins wechseln und auch als Datenpin dienen kann.
Es ist offensichtlich. Macht das meine Annahmen trotzdem falsch?
Flip-Flops haben Uhren, Latches nicht. Das verstehe ich aus Ihrer Antwort