Calliope mini - Spaß durch Programmieren

Halb- und Volladdierer

Ziel: Der Calliope mini soll einen Halb- und danach einen Volladdierer realisieren

Halbaddierer

Ein Halbaddierer verknüpft zwei binäre Werte (A und B)und liefert entsprechend der Rechenregeln der binären Addition die Summe (S) und den Übertrag(Ü).

Wie schön zu sehen ist, stellt die Summe S das Ergebnis der XOR-Verknüpfung der Eingänge A und B dar. S ist 1, wenn entweder A oder B 1 sind, ansonsten ist S 0.

Der Übertrag ist die AND-Verknüpfung von A und B: er ist nur dann 1, wenn A und B 1 sind, ansonsten ist er 0.

A B S Ü
0 0 0 0
1 0 1 0
0 1 1 0
1 1 0 1

Zuerst muss eine neue Funktion nand2 erstellt werden. Der Name nand kann nicht verwendet werden, da er selber vom System benutzt wird. Wenn alles richtig funktioniert, leuchtet die LED auf, wenn A oder B gedrückt ist. Auf dem Bildschirm steht nur dann eine 1, wenn A und B gleichzeitig gedrückt sind, ansonsten wird eine 0 angezeigt.

Damit ist der Halbaddierer schon fertig. Damit er zum Volladdierer wird, müssen nicht nur die Eingänge A und B berücksichtigt werden, sondern auch noch der Übertrag von einem Addierer eines niederwertigen Bits.

Der Calliope mini hat aber nur zwei Tasten, so dass die Eingabe eines Übertrages nicht möglich ist. Zum Glück hat der Calliope mini aber mit den Pins noch weitere Eingabemöglichkeiten. Das Programm wird so geändert, dass die Eingabe mit den Pins 0 und 1 erfolgen kann.

Der Calliope mini zeigt mit der grünen LED an, dass die Summe 1 ist und auf dem Bildschirm erscheint der Übertrag. Die oben gezeigte Wahrheitstabelle wird mit dem Programm realisiert.

Volladdierer

Der Volladdierer muss nicht nur die beiden Eingänge A und B berücksichtigen, sondern auch noch den Übertrag aus der Berechnung des vorhergehenden Bits. Die Tabelle zeigt die Wahrheitstabelle für die drei Eingänge.

Die Schaltung für den Volladdierer wird aus zwei Halbaddierern (HA) und einer OR-Schaltung realisiert.

A B Üe   Sa Üa
0 0 0   0 0
1 0 0   1 0
0 1 0   1 0
1 1 0   0 1
0 0 1   1 0
1 0 1   0 1
0 1 1   0 1
1 1 1   1 1

Der Volladdierer besteht aus zwei Halbaddierern. Deswegen wird der Halbaddierer in einer Funktion abgelegt und mit den beiden Werten A und B aufgerufen. ABER: er muss zwei Werte zurückgeben (S und Ü), und das kann eine Funktion nicht.

Deswegen wird der Halbaddierer in einer Funktion abgelegt, die nichts zurückgibt, aber die intern berechneten Ergebnisse in einer globalen Variblenliste hinterlegt. Die Variable halbaddierer wird unter dem Startknopf als Liste logischer Werte mit zwei Einträgen erzeugt. Nach dem Aufruf der Funktion halbaddierer können die beiden Werte im Programm verwendet werden. Aber Achtung: ruft man die Funktion ein zweites Mal auf, werden die Einträge in der Variablen überschrieben. Deshalb müssen Werte, die man später noch mal braucht, in einer anderen Variablen gesichert werden.

Ganz konkret bedeutet dass, das nach dem ersten Aufruf der Funktion halbaddierer der Übertrag in einer Variablen or_1 gespeichert wird, da er nach dem zweiten Aufruf der Funktion halbaddierer mit dessen Übertrag in der OR-Schaltung verknüpft wird.

Der Calliope mini verabeitet die drei Eingänge entsprechend der oben gezeigte Wahrheitstabelle. Fein!

zurück