Speicher aus Gattern: das SR-Latch
← Alle Artikel

Speicher aus Gattern: das SR-Latch

6 Min

Eine Schleife ist ein Speicher

Ein Gatter hat kein Gedächtnis: Sein Ausgang ist eine Funktion seiner Eingänge im Augenblick. Speicher entsteht, sobald ein Ausgang auf einen Eingang zurückgeführt wird. Nehmen Sie zwei NOR-Gatter und koppeln Sie sie über Kreuz: Q = NOR(R, ~Q) und ~Q = NOR(S, Q). Jeder Ausgang hängt nun vom anderen ab und darüber von seiner eigenen Vergangenheit.

NORNORRSQ~QS=1 Setzen · R=1 Rücksetzen · S=R=0 Halten

Setzen, Halten, Rücksetzen

Ein NOR-Gatter gibt 0 aus, sobald irgendein Eingang 1 ist, egal was am anderen liegt. Diese eine Tatsache trägt das ganze Latch. Setzen Sie S auf 1: Das untere Gatter sieht eine 1, also wird ~Q zu 0. Das obere Gatter sieht jetzt R = 0 und ~Q = 0, also wird Q zu 1. Nehmen Sie S wieder zurück, und nichts bewegt sich: Das untere Gatter sieht S = 0 und Q = 1, also bleibt ~Q 0, und das hält Q auf 1. Das Latch hält eine 1, ohne dass ein Eingang das verlangt.

Rücksetzen ist das Spiegelbild: R auf 1, Q fällt auf 0, dadurch kann ~Q auf 1 steigen und dort bleiben, wenn R losgelassen wird.

  • S = 0, R = 0: Halten des gespeicherten Werts.
  • S = 1, R = 0: Setzen, also Q = 1 und ~Q = 0.
  • S = 0, R = 1: Rücksetzen, also Q = 0 und ~Q = 1.
  • S = 1, R = 1: verboten, beide Ausgänge sind 0.

Was Boolflow beim Einschalten zeigt

Boolflow rechnet mit drei Werten pro Leitung: 0, 1 und unbekannt. Ein Latch, das gerade mit S = R = 0 eingeschaltet wurde, ist tatsächlich in einem unbekannten Zustand, und der Editor zeigt Q und ~Q als ?. Der erste Impuls auf S oder R entscheidet es, denn ein NOR mit einer 1 an einem Eingang ist bestimmt, selbst wenn der andere Eingang noch unbekannt ist. Danach erinnert sich die Schaltung: Jeder Takt beginnt mit den Leitungswerten, die der vorige hinterlassen hat, und genau so hält die Schleife ihr Bit.

Der verbotene Eingang

Halten Sie S = R = 1, und beide Gatter sehen eine 1, also sind beide Ausgänge 0. Das ist kein gespeichertes Bit, denn Q und ~Q sollten Gegenteile sein. Der Ärger beginnt, wenn beide Eingänge zusammen losgelassen werden. Jedes Gatter sieht nun zwei Nullen und will 1 ausgeben; sobald beide das tun, sieht jedes eine 1 und will 0 ausgeben; und so weiter ohne Ende. In echtem Silizium ist ein Gatter immer etwas schneller und gewinnt das Rennen, aber niemand weiß vorher welches, und daraus entsteht die Metastabilität. Boolflow aktualisiert alle Gatter einer Runde gleichzeitig, der Gleichstand löst sich also nie auf: Beide Ausgänge erscheinen als ?, und die Statusleiste meldet, dass die Schaltung nicht stabil wird. Ein korrektes Setzen oder Rücksetzen holt sie danach zurück. Im Editor werden zwei getrennte Schalter nacheinander losgelassen, und das Latch landet dann einfach in einem bestimmten Zustand; um beide im selben Augenblick loszulassen, verbinden Sie einen Schalter mit S und R.

Vom Latch zum Flip-Flop

Tauschen Sie die NOR gegen NAND, und die Eingänge werden low-aktiv: Eine 0 an S setzt, eine 0 an R setzt zurück. Stellen Sie zwei weitere NAND und einen Inverter davor, und Sie haben ein D-Latch mit Enable, das bei E = 1 D folgt und bei E = 0 hält. Verketten Sie zwei davon mit gegenläufigem Enable, und der Ausgang kann sich nur im Moment der steigenden Taktflanke ändern: ein Master-Slave-D-Flip-Flop aus nichts als Gattern. Boolflow hat alle drei als Beispiele: das NOR-Latch, das D-Latch mit Enable und das Flip-Flop aus Gattern.

Probieren Sie es selbst

Öffnen Sie das NOR-Latch, klicken Sie S und lassen Sie wieder los: Q bleibt 1. Klicken Sie R, um es zu löschen. Verbinden Sie dann einen Schalter mit S und R, schalten Sie ihn ein und aus und beobachten Sie die Statusleiste. Probieren Sie schließlich das Flip-Flop: Schalten Sie CLK hoch und runter, während Sie D ändern, und sehen Sie, dass Q nur bei der steigenden Flanke D folgt.

NOR-Latch im Editor öffnen →