Calliope mini - Spaß durch Programmieren

Entwicklungsumgebungen

RS-Flip-Flop

Ziel: Mit Hilfe von zwei NOR-Verknüpfungen wird ein RS-Flip-Flop realisiert. Daraus wird ein 1-Bit-Speicher geschaltet.

Rückkopplung

Mit einer NAND-Funktion wird ein Negator programmiert. Die Funktion heißt not. Der Ausgang des Negators wird auf den Eingang rückgekoppelt. Die Verzögerung bei diesem Programm entsteht nur durch die Zeit, die der Calliope mini für das Ausführen des Programmes und den Wechsel der LED-Farbe benötigt. Die LED flackert jetzt in Gelb!

Die Rückkoppelschaltung kann später als Taktgeber verwendet werden.

Wurzel ziehen

Ein Bit speichern

Was braucht man, um ein Bit zu speichern? Einen Topf mit einem Deckel, den man zu einem bestimmten Zeitpunkt füllt oder leert. Danach wird der Deckel zugemacht und der Zustand des Topfes ändert sich nicht mehr, der Zustand ist gespeichert. Zu einem späteren Zeitpunkt schaut man, ob der Topf voll oder leer ist.

Konkret heißt dass, man benötigt eine Schaltung, die man über einen Eingang auf 0 oder 1 setzen kann (Dateneingang). Das darf aber nur passieren, wenn ein anderer Eingang einen vorher festgelegten Wert (0 oder 1) hat (Takt). Über den Datenausgang kann man lesen, was im Speicher enthalten ist.

 

Wurzel ziehen

Rückkopplung über zwei NOR-Funktionen

In einem neuen Projekt müssen die Funktionen nand und nor sowie die Ausgaben- und die beiden Eingabefunktioen vorhanden sein. Daraus wird eine Schaltung realisiert, die man FlipFlop nennt. Was kann diese Schaltung?

Dazu ist es gut, die Wahrheitstabelle einer NOR-Schaltung vor Augen zu haben:

A B Q
0 0 1
1 0 0
0 1 0
1 1 0

Die Schaltung liefert nur dann eine 1, wenn beide Eingänge auf 0 liegen.

Nach dem Start des Programms kann entweder der obere oder der untere Zustand eintreten. Fest sind zu Beginn nur die Eingänge A und B, die auf 0 liegen. Der Ausgang Y ist unbestimmt.

Wird der Eingang A auf 1 gesetzt, ist die Situation eindeutig. Der Ausgang des linken NOR ist 0 und der Ausgang des rechten NOR ist 1.

Setzt man nun den Ausgang A auf 0 zurück, ändert sich am Ausgang Y nichts. Egal, wie A geschaltet ist, bleibt der Ausgang auf 1. Man kann sagen, die Schaltung hat sich die 1 am Eingang A gemerkt. Die Schaltung wurde mit A auf 1 gesetzt.

Setzt man den Eingang A wieder auf 0 und Eingang B auf 1, geht der Ausgang auf 0 zurück. Daran ändert sich auch nichts, wenn B zwischen 0 und 1 wechselt.

Die Schaltung merkt sich den Zustand 0, sie wurde mit B zurückgesetzt.

Die Rückkopllungsschaltung aus zwei NOR-Schaltungen lässt sich auch noch anders zeichnen. Das ist die übliche Darstellung eines R-S-Flip-Flops.

Da mit B die Schaltung zurückgesetzt wurde, erhält der Eingang B die Bezeichnung R. Aus A wird dann ein S als Setzeingang. Der Ausgang am unteren NOR stellt immer das Gegenteil des oberen Ausgangs dar. Deshalb heißt er Q

Da die beiden Ausgänge laut Definition immer entgegengesetzte Signal enthalten, ist eine 1 an R und an S nicht erlaubt, also verboten. Falls man es doch macht, wird man nicht bestraft, aber es ist eben nicht sinnvoll.

Ein richtiger Speicher wie oben beschrieben ist das R-S-Flip-Flop aber noch nicht. Ein Speicher soll ja einen Eingang für die Daten haben und eine Sperre, die eine weitere Änderung des Speicherinhalts untersagt.

Zuerst soll eine Sperre eingefügt werden, die die beiden Eingänge R und S blockiert. Dazu eignen sich vor jedem Eingang eine AND-Schaltung. Bei der liegt am Ausgang nur dann eine 1 an, wenn beide Eingänge 1 sind. R und S sind für jede AND-Schaltung der eine Eingang und C (Clock) stellt für beide AND-Schaltungen den anderen Eingang dar. Falls C 0 ist, sind die beiden Ausgänge der AND-Schaltungen auch konstant 0 und R und S sind völlig wirkungslos. Erst wenn C aus 1 liegt, können R und S das R-S-Flip-Flop in einen anderen Zustand bringen.

Die Sperre ist also gefunden.

Jetzt braucht man noch einen Dateneingang. Liegt an ihm eine 1 an, soll im Flip-Flop die 1 gespeichert werden. Das Flip-Flop soll also gesetzt werden. Bei einer 0 soll diese im Flip-Flop gespeichert werden, es soll rückgesetzt werden.

Das heißt aber, dass beim Speichern einer 1 S=1 und R=0 sein sollen. Wird eine 0 gespeichert, muss S=0 und R=1 sein. Die beiden Eingänge sind immer entgegengesetzt.

Das erreicht man, indem man die Datenleitung direkt an S und die negierte Datenleitung an R legt.

Jetzt kann an D der zu speichernde Bit-Wert angelegt werden. C wird kurzzeitig von 0 auf 1 und dann wieder zurückgeschaltet und schon ist die 0 oder 1 solange im Kasten, bis ein neuer Wert gespeichert wird. An Q kann der Wert im Flip-Flop abgerufen werden.

In Make Code lässt sich der Speicher recht elegant umsetzten.

Dazu muss zuerst die flip_flop-Funktion geändert werden. Ihr werden jetzt beim Aufruf zwei boolsche Variable übergeben, die R und S genannt werden.

Überprüfe danach die richtige Funktion des Flip Flop.

A ist der Dateneingang D und B realisiert Clock.

Der Speicher ist fertig. Wenn B (Clock) auf 0 liegt, kann mit A (Dateneingang) der Speicher nicht beschrieben werden. Wird B auf 1 gelegt, wird der Zustand von A auf den Ausgang gelegt, er wechselt direkt mit dem Zustand von A. Ist das Bit im Speicher, sperrt B den Speicher wieder.

zurück