Wann sollte ich SR-, D-, JK- oder T-Flip-Flops verwenden?

Im Unterricht habe ich etwas über SR-, D-, JK- und T-Flip-Flops gelernt. Soweit ich weiß, können Sie jedes Design erstellen, indem Sie eines davon verwenden. Meine Frage ist also, wenn man ein Design erstellt, wie wählt man aus, welches man verwendet? Welches wird mehr in kommerziellen Schaltungen verwendet und warum?

Antworten (4)

In der diskreten Logik (wie der 74xx-Serie) verwenden Sie die Wahl, mit der Sie Ihre Schaltung mit der geringsten Anzahl von Teilen und ohne Verletzung der Timing-Anforderungen entwerfen können.

Bei FPGAs entwerfen Sie meistens in HDL (VHDL oder Verilog) und das Synthesetool arbeitet für Sie aus, was zu verwenden ist. Aber die zugrunde liegende Technologie stellt im Grunde nur D-Flip-Flops bereit, sodass das Synthesetool herausfindet, wie das implementiert wird, was Sie mit D-Flip-Flops codieren.

Bei ASICs entwirft ein High-Level-Designer wiederum mit HDL. Aber wahrscheinlich (ASICs sind nicht mein Gebiet) bietet die Bibliothek des ASIC-Anbieters andere Optionen als D-Flip-Flops, und das Synthesetool findet heraus, wie der Code mit den verfügbaren Bibliothekskomponenten implementiert werden kann. Es könnte das eine oder das andere auswählen, um entweder die Schaltungsgeschwindigkeit oder die Chipfläche zu optimieren.

Bei einfachen Designs kann ein Typ gegenüber den anderen einen klaren Vorteil haben, je nachdem, was Sie erreichen möchten, und je nach Wahrheitstabelle des Flip-Flops :

D Flip-Flop  T Flip-Flop  J-K Flip-Flop  S-R Flip-Flop
    D Q          T Q         J K Q           S R Q
    0 0          0 Q         0 0 Q           0 0 Q
    1 1          1 Q'        0 1 0           0 1 0
                             1 0 1           1 0 1
                             1 1 Q'          1 1 X

D-Flip-Flop: Wenn die Uhr von 0 auf 1 steigt, wird der vom Flip-Flop gespeicherte Wert zu diesem Zeitpunkt zum Wert des D - Eingangs ( Data ).

T Flip-Flop: Wenn die Uhr von 0 auf 1 steigt, schaltet der vom Flip-Flop gespeicherte Wert entweder um oder bleibt gleich, je nachdem, ob der T -Eingang ( Toggle ) 1 oder 0 ist.

JK-Flip-Flop: Wenn die Uhr von 0 auf 1 steigt, schaltet der vom Flip-Flop gespeicherte Wert um, wenn die J- und K - Eingänge beide 1 sind, bleibt gleich, wenn sie beide 0 sind, und wechselt auf den K -Eingangswert, wenn J und K sind nicht gleich. (Die Namen J und K stehen für nichts.)

RS Flip-Flop: Wenn die Uhr von 0 auf 1 steigt, bleibt der vom Flip-Flop gespeicherte Wert unverändert, wenn R und S beide 0 sind, wird 0, wenn der R -Eingang ( Reset ) 1 ist, und wird 1, wenn S Eingang ( Set ) ist 1. Das Verhalten ist unspezifiziert, wenn beide Eingänge 1 sind. (In Logisim bleibt der Wert im Flip-Flop unverändert.)

Oder vielleicht kann die spezifische Kombination von Gattern für Ihre Schaltung von Vorteil sein:

SR NOR

SR-NAND

SR getaktet

D

JK

T

Das SR-Flip-Flop ist das grundlegende oder grundlegende Flip-Flop. Es ist insofern das einfachste, als es die niedrigste Gate-Anzahl hat. Aber es gibt auch einen Zustand, in dem das Verhalten nicht spezifiziert ist. Was schlecht sein könnte, wenn Sie darum herum entwerfen müssen. Oder es könnte gut sein, wenn Sie dieses nicht spezifizierte Verhalten aus irgendeinem Grund ausnutzen möchten (obwohl mir keins einfällt und die Erwähnung seiner Verwendung in der Anwendung ein "Zitat erforderlich" in Wikipedia hat ).

Wie The Photon jedoch erwähnte, sind FPGA-Slices im Wesentlichen Look-Up-Tables (LUT), Multiplexer, Arithmetic Logic Units (ALU) und D-Flip-Flops. Basierend darauf würde ich sagen, dass das D-Flip-Flop aufgrund seiner Fülle an programmierbarer Logik das am weitesten verbreitete in kommerziellen Schaltungen ist.

FPGA-Slice

Verriegelungsvorrichtungen haben im Allgemeinen drei Arten von Eingängen: synchrone Eingänge, asynchrone Eingänge und Takteingänge. Jedes Gerät, das synchrone Eingänge hat, muss mindestens einen zugeordneten Takteingang haben; Die überwiegende Mehrheit der Geräte mit synchronen Eingängen hat genau einen Takteingang, der allen zugeordnet ist.

Jeder Takteingang ist so spezifiziert, dass er bei einer ansteigenden Flanke, einer abfallenden Flanke oder beidem arbeitet. Wenn ein Takteingang als Betrieb an der steigenden Flanke spezifiziert ist, bedeutet dies, dass das Gerät getriggert wird, wenn der Eingang von Low auf High wechselt. Ein Gerät, das als an der fallenden Flanke arbeitend spezifiziert ist, wird getriggert, wenn der Eingang von High auf Low wechselt. Ein Gerät, das bei beiden Arten von Übergängen auslöst, wird immer dann ausgelöst, wenn der Eingang seinen Zustand ändert.

Der Zustand eines Geräts kann jedes Mal beeinflusst werden, wenn sich seine asynchronen Eingänge ändern, aber die einzige Zeit, in der synchrone Eingänge den Betrieb eines Geräts beeinflussen, ist, wenn der zugehörige Takteingang ausgelöst wird.

Die drei grundlegendsten Arten von Latch-Geräten sind das RS-Latch (manchmal auch als RS-Flip-Flop bezeichnet) , das transparente Latch und das Flip-Flop vom D-Typ.

Ein RS-Latch hat zwei asynchrone Eingänge, R und S: Wenn sich der R-Eingang in seinem aktiven Zustand befindet (einige Latches verwenden Active-High-Eingänge und andere Active-Low), geht der Ausgang auf Low; Wenn der S-Eingang aktiv ist, geht der Ausgang hoch. Wenn keiner der Eingänge aktiv ist, bleibt der Ausgang High oder Low, je nachdem, welcher Eingang zuletzt aktiv war.

Ein transparenter Latch hat zwei asynchrone Eingänge, D und E. Wenn der E-Eingang aktiv ist, spiegelt der Zustand des Ausgangs den Zustand des D-Eingangs wider. Wenn der E-Eingang inaktiv ist, hält der Ausgang den Zustand, den er zuletzt hatte, während E aktiv war.

Ein Flipflop vom D-Typ hat einen Synchroneingang D und einen Takteingang. Wenn die Uhr getriggert wird, speichert das Gerät den Zustand des D-Eingangs und beginnt innerhalb kurzer Zeit mit der Ausgabe des gespeicherten Werts. Der D-Eingang wird zu allen anderen Zeiten ignoriert. Die meisten Flip-Flop-Typen außer dem RS-Flip-Flop (was in vielen Fällen wirklich "RS-Latch" bedeutet) haben synchrone Eingänge, die nach dem Flip-Flop-Typ benannt sind (z. B. hat ein JK-Flip-Flop J- und K-Eingänge). .

Während die ersten beiden oben genannten Geräte vollständig asynchron und das letzte vollständig synchron sind, enthalten viele Flip-Flops ein asynchrones Rücksetzsignal. Jedes Mal, wenn dieses Signal aktiv ist, wird der Ausgang bedingungslos auf Low gesetzt, unabhängig davon, was die anderen Eingänge tun. Einige haben auch eine asynchrone Voreinstellung, die den Ausgang hoch zwingen kann. Solche Geräte werden oft als synchron angesehen, wenn sie so verdrahtet sind, dass (1) die Reset-Signale nur als Reaktion auf einen systemweiten Reset oder ein ähnliches Ereignis ausgelöst werden; (2) das Rücksetzsignal ändert seinen Zustand in der Nähe einer aktiven Taktflanke nicht, es sei denn, eine solche Taktflanke könnte garantiert nicht bewirken, dass das Gerät seinen Zustand ändert, unabhängig davon, ob das Rücksetzsignal aktiv war oder nicht.

j und k stehen eigentlich für die Initialen des Erfinders Jack Kilby

Ich weiß, dass diese Frage eine ältere Frage ist, aber ich denke immer noch, dass sie aktuell und relevant ist, und ich möchte über diesen Teil der Frage des OP nachdenken:

Wie wählt man aus, was man verwendet?

Nach meinem Verständnis ist das grundlegende SR-Latch ohne Takteingang einfach ein Latch. Wenn Sie vorübergehend einen Ausgang von einer Operation verriegeln müssen, die sich nicht ändert und die auch unabhängig von Taktoperationen ist, kann ein SR-Latch nützlich sein. Beim Entwerfen der Schaltung muss jedoch sorgfältig vorgegangen werden, damit nicht beide S&R-Eingänge gleichzeitig hoch werden.

Wenn die Eingänge synchron basierend auf einer Taktflanke verriegelt werden, werden Ihre Gate-SR-Latches und DFFs am häufigsten verwendet. Was ist also mit den JK- und den T-Typen?

Betrachten wir einige verschiedene Arten von Anwendungen innerhalb der Hardware. Wenn Sie ein Cache-Modell für eine CPU entwerfen und es leicht verfügbar und schnell sein muss, möchten Sie wahrscheinlich je nach Design ein Gate-SR-Latch oder DFF.

Nun, wenn es um verschiedene Speichertypen geht, unabhängig von seriellen oder parallelen Typen, aber wie bei ROM und RAM. Der RAM ist normalerweise langsam, wenn er über den Bus kommt, sodass er Zeit hat, bevor der nächste E / A-Befehl für ihn sichtbar ist. Im Fall von RAM könnte also ein JK - Master Slave FF eine praktikable Lösung sein, wie auch immer diese dynamische Art von RAM ist teurer, da jeder JK einen DFF als Master und einen SR-Latch als Slave hat. Für jedes einzelne Bit des Speichers müssen Sie also Latches oder Flip-Flops verwenden, und Sie verdoppeln fast die Anzahl der Gates, aber der Speicher ist robuster und es ist ein geschützter Speicher. Sie könnten SR Gated Latches oder DFFs im RAM verwenden, um Platz zu sparen, aber wenn Sie dies tun, ist der Speicher dann statisch und wird flüchtig und Sie müssen ihn ständig aktualisieren.

Wenn Sie nun ein ROM entwerfen, aus dem die CPU Daten aus diesen Registertypen zum Laden von Befehlssätzen, Speicheradressen und Dateninhalten abruft, werden hier DFFs aufgrund ihrer kompakten Größe und Geschwindigkeit am häufigsten verwendet.

Es gibt eine Art von FF, die übrig bleibt, und das ist das Toggle FF. Wann möchten Sie diese Art von Flip-Flops verwenden?

Mit dieser Art von FF können Sie sie verwenden, wenn Sie eine Steuerlogik erstellen, die Befehlssätze dekodiert. Wenn eine bestimmte Bitsequenz eintrifft und Sie sagen müssen, dass Sie eine Leitung auf „Hi“ setzen müssen, um eine Operation auszuführen, deaktivieren Sie sie nach der Operation, aber vor dem nächsten Zyklus, wenn Sie in der Lage sein müssen, diese Steuerleitung ein- und auszuschalten. In diesem Fall möchten Sie also wahrscheinlich einen T-Typ verwenden, weil Sie sich an den Status erinnern möchten, in dem er sich gerade befindet, aber auch die Möglichkeit haben möchten, ihn zu ändern oder umzuschalten, damit er für die nächste Anweisung bereit ist Kreislauf.

Ich bin Autodidakt und das habe ich in den letzten Monaten gelernt und bitte korrigieren Sie mich, wenn Sie Fehler in meinen Aussagen finden. Auch wenn Sie eine hervorragende Erklärung dieser Art von Schaltungen wünschen, können Sie jederzeit eine Youtube-Suche nach Ben Eater durchführen! Er behandelt die meisten von ihnen, das einzige, auf das er meiner Meinung nach nicht zu viel eingeht, ist der Toggle-Typ, aber wenn er die Zähler baut, bekommt man ein gewisses Verständnis dafür.