Wie man den SR Latch versteht


14

Ich kann mich nicht darum kümmern, wie der SR Latch funktioniert. Anscheinend steckt man eine Eingangsleitung von R und eine andere von S und soll Ergebnisse in Q und Q 'erhalten.

Sowohl R als auch S erfordern jedoch eine Eingabe von der Ausgabe des anderen, und die Ausgabe des anderen erfordert eine Eingabe von der Ausgabe des anderen. Was kommt zuerst das Huhn oder das Ei?

Wie fängt es an, wenn Sie diese Schaltung zum ersten Mal anschließen?

SR Latch


1
Schließlich fand ich eine wirklich fantastische Antwort in dem Buch aber wie es kennt . Sie können ihn unter der Link auf Seite 24.
CodyBugstein

Zum besseren Verständnis von SR Latch und dessen Verhalten für die verschiedenen Eingänge wie 00, 01, 10 und 11 sehen Sie sich dieses Video an. www.youtube.com/watch?v=VtVIDgilwlA

Antworten:


5

Eine einfühlsame Frage. Wenn Sie dieses Latch in einem Simulationsprogramm erstellen, wird es Ihnen in der Tat zeigen, dass es nicht vorhersagen kann, in welchem ​​Zustand es starten wird:

RS-Latch mit NOR-Gates, die meisten Signale sind für "unbekannt" ROT gefärbt

Wenn Sie jedoch einen der Eingänge auf "High" setzen (das sind die Drucktasten auf der linken Seite), breitet sich das Signal aus (denken Sie daran, dass 1 ODER [alles] gleich 1 ist), und die Schaltung speichert diesen Zustand zwischen:

Gleicher Riegel;  ein Eingang ist hoch;  Die Linien werden alle hell oder dunkelgrün

Dies sind NOR-Gatter, so dass der invertierte Ausgang niedrig wird, wenn einer der Eingänge hoch ist. Das von mir verwendete Programm ist Logisim. Es ist klein und ich empfehle es für den Anfang. Logik-Compiler (FPGA und alles andere) beklagen sich gerne über nicht initialisierte Zustände. Dies war ein großartiges erstes Beispiel.

Jetzt weiß ich, dass die Schaltung im wirklichen Leben zufällig in den einen oder anderen Zustand einrastet. Viele andere haben darauf hingewiesen. Aber manchmal ist es wichtig, dass es zuverlässig in dem einen oder anderen Zustand startet, und darum geht es in allen Warnungen.


Vielen Dank für die großartige Erklärung. Wenn ich richtig verstanden habe, startet die Schaltung beim Anschließen in einem zufälligen Zustand?
CodyBugstein

@Imray Ich würde nicht den Ausdruck "zufälliger Zustand" verwenden, sondern "undefinierter Zustand". Es könnte zufällig ausgewählt werden, es könnte jedes Mal das Gleiche sein, das Wichtigste ist, dass Sie es nicht wissen und sich nicht darum kümmern. Sie müssen lediglich feststellen, dass Sie den Latch initialisieren müssen (indem Sie kurz R oder S hochpulsieren), bevor Sie sich auf den Ausgang verlassen können.
Scott Chamberlain

Ich habe gerade Ihre Antwort noch einmal gelesen und Dinge verstanden, die ich zuvor verpasst habe. Tolle Erklärung!
CodyBugstein

5

Ein Flip-Flop ist als bistabiler Multivibrator implementiert; daher ist garantiert, dass Q und Q 'für alle Eingaben umgekehrt sind, mit Ausnahme von S = 1, R = 1, was nicht zulässig ist. Die Erregertabelle für das SR-Flip-Flop ist hilfreich, um zu verstehen, was passiert, wenn Signale an die Eingänge angelegt werden.

S R  Q(t) Q(t+1)   
----------------
0 x   0     0       
1 0   0     1   
0 1   1     0   
x 0   1     1   

Die Ausgänge Q und Q 'ändern schnell ihren Zustand und kommen in einem stationären Zustand zum Stillstand, nachdem Signale an S und R angelegt wurden.

Example 1: Q(t) = 0, Q'(t) = 1, S = 0, R = 0. 

State 1: Q(t+1 state 1)  = NOT(R OR Q'(t)) = NOT(0 OR 1) = 0
         Q'(t+1 state 1) = NOT(S OR Q(t)) =  NOT(0 OR 0) = 1

State 2: Q(t+1 state 1)  = NOT(R OR Q'(t+1 state 1)) = NOT(0 OR 1) = 0
         Q'(t+1 state 2) = NOT(S OR Q(t+1 state 1))  =  NOT(0 OR 0) = 1     

Since the outputs did not change, we have reached a steady state; therefore, Q(t+1) = 0, Q'(t+1) = 1.


Example 2: Q(t) = 0, Q'(t) = 1, S = 0, R = 1

State 1: Q(t+1 state 1)  = NOT(R OR Q'(t)) = NOT(1 OR 1) = 0
         Q'(t+1 state 1) = NOT(S OR Q(t))  = NOT(0 OR 0) = 1


State 2: Q(t+1 state 2)  = NOT(R OR Q'(t+1 state 1)) = NOT(1 OR 1) = 0
         Q'(t+1 state 2) = NOT(S OR Q(t+1 state 1))  =  NOT(0 OR 0) = 1     


We have reached a steady state; therefore, Q(t+1) = 0, Q'(t+1) = 1.


Example 3: Q(t) = 0, Q'(t) = 1, S = 1, R = 0

State 1: Q(t+1 state 1)  = NOT(R OR Q'(t)) = NOT(0 OR 1) = 0
         Q'(t+1 state 1) = NOT(S OR Q(t)) =  NOT(1 OR 0) = 0

State 2: Q(t+1 state 2)  = NOT(R OR Q'(t+1 state 1)) = NOT(0 OR 0) = 1
         Q'(t+1 state 2) = NOT(S OR Q(t+1 state 1))  = NOT(1 OR 0) = 0     

State 3: Q(t+1 state 3)  = NOT(R OR Q'(t+1 state 2)) = NOT(0 OR 0) = 1
         Q'(t+1 state 3) = NOT(S OR Q(t+1 state 2))  = NOT(1 OR 1) = 0     

We have reached a steady state; therefore, Q(t+1) = 1, Q'(t+1) = 0.


Example 4: Q(t) = 1, Q'(t) = 0, S = 1, R = 0

State 1: Q(t+1 state 1)  = NOT(R OR Q'(t)) = NOT(0 OR 0) = 1
         Q'(t+1 state 1) = NOT(S OR Q(t)) =  NOT(1 OR 1) = 0

State 2: Q(t+1 state 2)  = NOT(R OR Q'(t+1 state 1)) = NOT(0 OR 0) = 1
         Q'(t+1 state 2) = NOT(S OR Q(t+1 state 1))  = NOT(1 OR 1) = 0     

We have reached a steady state; therefore, Q(t+1) = 1, Q'(t+1) = 0.


Example 5: Q(t) = 1, Q'(t) = 0, S = 0, R = 0

State 1: Q(t+1 state 1)  = NOT(R OR Q'(t)) = NOT(0 OR 0) = 1
         Q'(t+1 state 1) = NOT(S OR Q(t)) =  NOT(0 OR 1) = 0

State 2: Q(t+1 state 2)  = NOT(R OR Q'(t+1 state 1)) = NOT(0 OR 0) = 1
         Q'(t+1 state 2) = NOT(S OR Q(t+1 state 1))  = NOT(0 OR 1) = 0     

We have reached a steady; state therefore, Q(t+1) = 1, Q'(t+1) = 0.


With Q=0, Q'=0, S=0, and R=0, an SR flip-flop will oscillate until one of the inputs is set to 1.

    Example 6: Q(t) = 0, Q'(t) = 0, S = 0, R = 0

    State 1: Q(t+1 state 1)  = NOT(R OR Q'(t)) = NOT(0 OR 0) = 1
             Q'(t+1 state 1) = NOT(S OR Q(t)) =  NOT(0 OR 0) = 1

    State 2: Q(t+1 state 2)  = NOT(R OR Q'(t+1 state 1)) = NOT(0 OR 1) = 0
             Q'(t+1 state 2) = NOT(S OR Q(t+1 state 1))  = NOT(0 OR 1) = 0     

    State 3: Q(t+1 state 3)  = NOT(R OR Q'(t+1 state 2)) = NOT(0 OR 0) = 1
             Q'(t+1 state 3) = NOT(S OR Q(t+1 state 2)) =  NOT(0 OR 0) = 1

    State 4: Q(t+1 state 4)  = NOT(R OR Q'(t+1 state 3)) = NOT(0 OR 1) = 0
             Q'(t+1 state 4) = NOT(S OR Q(t+1 state 3))  = NOT(0 OR 1) = 0     
    ...


As one can see, a steady state is not possible until one of the inputs is set to 1 (which is usually handled by power-on reset circuitry).

Wenn wir die einfachste Implementierung eines SR-Flip-Flops untersuchen (siehe http://en.wikipedia.org/wiki/File:Transistor_Bistable_interactive_animated_EN.svg) ), stellen wir fest, dass es aus zwei Bipolar Junction-Transistoren (BJTs) und vier besteht Widerstände (ersetzen Sie die SPST-Kippschalter gegen Masse durch SPDT-Schalter, mit denen die Setz- und Rücksetzleitungen zwischen Massepotential und V + geschaltet werden können). Die BJTs sind als Common Emitter Inverter konfiguriert. Der Kollektor (Ausgang) jedes Transistors wird in die Basis (Eingang) des gegenüberliegenden Transistors zurückgeführt. Der Eingang S ist mit dem Ausgang des BJT verdrahtet, dessen Kollektoranschluss als Ausgang Q dient (Verbindungsstelle von R1 / R3). Der Eingang R ist mit dem Ausgang BJT verdrahtet, dessen Kollektoranschluss als Ausgang Q '(Verbindungsstelle von R2 / R4) dient.

Wenn die Schaltung zum ersten Mal eingeschaltet wird, wird keiner der Transistoren für einen winzigen Bruchteil einer Sekunde in den Sättigungsbereich vorgespannt, was bedeutet, dass sowohl Q als auch Q 'auf dem logischen Pegel 1 liegen. Die an jedem Kollektor verfügbare Spannung wird der Basis zugeführt des gegenüberliegenden Transistors, was bewirkt, dass er in den Sättigungsbereich vorgespannt wird. Der Transistor, der zuerst in Vorwärtsrichtung vorgespannt wird, beginnt zuerst Strom zu leiten, was wiederum einen Spannungsabfall an seinem Kollektorwiderstand verursacht und seinen Ausgang auf den logischen Pegel 0 setzt. Dieser Abfall der Kollektorspannung verhindert, dass der gegenüberliegende Transistor abfällt voreingenommen sein; daher Einstellen des Anfangszustands des Flip-Flops. Dies ist im Grunde eine Hardware-Race-Bedingung, die zu einem unvorhersehbaren Ergebnis führt.


Können Sie die Schaltungsanimation unter dem angegebenen Link, aber in einfacheren Worten? Ich nehme einen Anfänger under Kurs
CodyBugstein

3

Wie Sie sagten, ist es undefiniert. In der Praxis gibt es Transienten oder Macken, die die Verriegelung in einen bestimmten Zustand versetzen sollten, es gibt jedoch keine Garantie dafür, in welchem ​​Zustand sie sich befinden wird. Dies wird durch eine Fehlanpassung in den beiden Gattern verursacht, die einen gegebenen Anfangszustand definieren (im Grunde genommen tut dies die Schaltung nicht) verhält sich nicht wie ein echtes digitales SR-Latch, sondern ist eine komplexe analoge Schaltung wie im echten Leben. Die anfängliche Ausgabe erfolgt entweder Q=1 and ~Q=0oder mehr oder weniger zufällig Q=0 and ~Q=1.

Wenn in einem Datenblatt nicht ausdrücklich darauf hingewiesen wird, dass ein Zustand vor dem anderen gewählt wird, kann sich der tatsächliche Anfangszustand zwischen verschiedenen Teilen der Charge, der Platzierung auf einer Platine, den Umweltfaktoren (Temperatur / Luftfeuchtigkeit / usw.) und der Alterung ändern (Auf keinen Fall eine vollständige Liste der Faktoren).

Der beste Weg, einen Zustand zu definieren, besteht darin, nach dem Start entweder das Setzen oder Zurücksetzen zu bestätigen, um den SR-Latch in einen bekannten Zustand zu versetzen.

Als Randnotiz: Im Allgemeinen führen SR-Latches, die gleichzeitig S und R aktivieren, auch zu undefiniertem Verhalten, und Sie verlassen sich auf einen ähnlichen Voodoo, um die Ausgänge zu setzen (eine echte Implementierung kann beide Ausgänge ausschalten, die beiden zufällig umschalten, beide Ausgänge einschalten usw.). Wie Supercat kommentierte, kann der SR-Zwischenspeicher in einen bekannten Zustand versetzt werden, wenn ein Pin vor dem anderen nicht belegt ist, da nur ein Pin belegt wird. Andere Arten von Latches / Flip-Flops können ein anderes Verhalten definieren, beispielsweise definieren JK-Flip-Flops das Aktivieren beider Pins zum Umschalten der Ausgänge (Q = ~ Qprev, ~ Q = Qprev).


Aber meine Frage ist, wie kann es jemals auf irgendetwas eingestellt werden, wenn beide Eingaben auf Eingaben beruhen, die noch nicht existieren? Es ist wie ein Fall von "Sie heben mich in die Luft, dann werde ich Sie heben und wir werden beide in der Luft schweben"
CodyBugstein

2
@Imray - eine Seite des Flip-Flops schlägt immer die andere, wenn es frisch mit Strom versorgt wird. Aufgrund geringfügiger Timing-Unstimmigkeiten wird das Gerät normalerweise immer auf die gleiche Weise hochgefahren, es gibt jedoch keine Garantie für diesen Gerätetyp.
Andy aka

1
Genau. Es hängt von einem Phänomen der Nichtübereinstimmung ab. Sie müssen sich nicht vorstellen, dass beide Seiten genau gleich sind. Sie sind nicht. Einer von ihnen ist langsamer, der andere schneller. Dadurch wird einer von ihnen zunächst eingeschaltet.
Gustavo Litovsky

Ja, ich würde mich auf dieses Fehlanpassungsverhalten verlassen, um sicherzustellen, dass der Anfangszustand "gültig" ist (wir erhalten nicht Q = ~ Q), aber ich würde mich nicht auf dieses Verhalten verlassen, um sicherzustellen, dass Q beim Start immer einen bestimmten Zustand aufweist kann zwischen Teilen einer Charge variieren oder sich im Verlauf der Temperatur / Zeit sogar für das gleiche Teil ändern. Natürlich kann das Datenblatt etwas anderes aussagen, aber im Allgemeinen würde ich mich nicht anders darauf verlassen.
helloworld922

Es ist ziemlich üblich, dass das Verhalten eines Latch definiert wird, wenn sich beide Eingänge im "aktiven" Zustand befinden [hoch für einen NOR-Latch; low für ein NAND-Latch], vorausgesetzt , der eine Eingang geht merklich vor dem anderen inaktiv.
Supercat

2

Denken Sie daran, dass sich die Tore umkehren. Dies liefert eine positive Rückkopplungsschleife. Unter der Annahme, dass sowohl S als auch R Null sind und ein Ausgang Eins ist, wird dieser in das andere Gate zurückgeführt, um den anderen Ausgang auf Null zu zwingen. Auf diese Weise befinden sich die Tore in einem von zwei stabilen Zuständen.

Sobald Sie eines von S oder R auf eins setzen, wird das entsprechende Gate dazu gezwungen, Null auszugeben, was wiederum dazu führt, dass das andere Gate Null ausgibt. Wieder stabil.

Beispiel: Anfangszustand: S = 0, R = 0, Q = 0, Q # = 1. Sie setzen jetzt S = 1. Dadurch wird der untere Gate-Ausgang (Q #) auf 0 gesetzt. Diese 0 wird in den oberen eingespeist Gate, wodurch dieser Ausgang (Q) auf 1 gesetzt wird. Diese 1 führt zum unteren Gate zurück. Wenn Sie S auf 0 zurücksetzen, empfängt das untere Tor immer noch die 1 vom anderen Tor. Dadurch bleibt der Q # -Ausgang auf 0.

Wenn Q bereits 1 ist und Sie S auf 1 setzen, sind beide Eingänge des unteren Gates 1 und es gibt keine Änderung.


Ich verstehe nicht, wie Q 'jemals eins sein kann, wenn es keine Eingaben gibt, die jemals tatsächlich ausgeführt werden können.
CodyBugstein

Wiederum ist der stabile Zustand nur dann, wenn EINS VON Q und Q # eins ist. Wenn nicht (z. B. beim Einschalten), nehmen die Tore schnell einen der beiden stabilen Zustände an, abhängig von der tatsächlichen Geschwindigkeit der beiden Tore und dergleichen. Sobald die Gates stabil sind, können Sie mit den beiden Eingängen zwischen den stabilen Zuständen wechseln.
DoxyLover

1

Ich denke, der wichtige Punkt, nach dem Sie fragen, hat mit der Tatsache zu tun, dass die Verriegelung in einem unbekannten Zustand hochfährt. Wie können wir sie also jemals in einen bekannten Zustand versetzen? Sie müssen sich daran erinnern, dass, wenn einer der Eingänge eines NOR-Gatters eine 1 ist, der Ausgang eine 0 sein muss, unabhängig vom Status des anderen Eingangs. Das Anwenden der SET- oder RESET-Eingangskombinationen zwingt den Latch immer in den Set- oder Reset-Zustand, unabhängig vom vorherigen Zustand des Latch.


Ja, du verstehst meine Frage! Ich fühle mich jedoch immer noch nicht mit dem beantwortet, was Sie geschrieben haben. Angenommen, der Riegel wurde noch nie eingesteckt, und plötzlich werden x und y zum ersten Mal eingesteckt. Wie können sie sich auf Q auswirken, wenn sie möglicherweise nicht über die ersten Tore hinauskommen?
CodyBugstein

Ich gehe davon aus, dass Sie bedeuten , dass die R- und S - Eingänge erhalten einige Werte X und Y. Wenn entweder X oder Y eine Eins ist, dann wird der Ausgang dieses NOR - Gatter muss ein 0 ... sein , das ist , wie NOR - Gatter arbeiten. Damit wird 0 zum anderen NOR-Gatter zurückgeführt, das vermutlich eine 0 für seinen Eingang hat (wenn X 1 ist, ist Y 0 oder umgekehrt). Das zweite NOR-Gatter hat also zwei Eingänge, die 0 sind, und sein Ausgang muss 1 sein. Die einzige Situation, in der wir nicht sagen können, was mit Q und Q 'geschehen wird, ist, wenn sowohl X als auch Y (dh sowohl S als auch R) sind gleich nach dem Einschalten auf 0 setzen. Wie andere angemerkt haben, ist dies ein instabiler Zustand.
Joe Hass
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.