13.3.2 Halb-/ und Volladdierer


Auf dem Weg zum Ziel, einem Computer das Rechnen beizubringen, sollen in einem ersten Schritt zwei Bits addiert werden.


Schritt 1: Nachdenken

Wenn wir mit Bits rechnen, dann entspricht das einem Zahlensystem mit zwei Ziffern: 0 und 1.

Fangen wir an, damit zu zählen:

  • wenn wir kein Objekt haben, dann zählen wir das mit dem Symbol 0,
  • wenn wir ein Objekt haben, dann zählen wir das mit dem Symbol 1,
  • wenn wir zwei Objekte haben, dann gibt es kein extra Symbol dafür, also müssen wir die vorhandenen Symbole kombinieren: 10,
  • wenn wir drei Objekte haben, dann ist das Symbol dafür 11, usw.

Zählen wir von Null bis Zwanzig: 0; 1; 10; 11; 100; 101; 110; 111; 1000; 1001; 1010; 1011; 1100; 1101; 1110; 1111; 10000; 10001; 10010; 10011; 10100

Nachdem wir mit zwei Symbolen zählen können, ist es einfach damit zu rechnen. Damit klar ist, dass wir im Binärsystem mit zwei Zeichen rechnen, kommt an eine Zahl aus dem Binärsystem ein Index "2" und an eine Zahl aus dem Dezimalsystem ein Index "10".

Fangen wir mit den einfachsten Rechnungen an:

  • Der Rechnung \(0_\rm{10} + 1_\rm{10} = 1_\rm{10}\) entspricht die Rechnung \(0_\rm{2} + 1_\rm{2} = 1_\rm{2}\)
  • Der Rechnung \(1_\rm{10} + 1_\rm{10} = 2_\rm{10}\) entspricht die Rechnung \(1_\rm{2} + 1_\rm{2} = 10_\rm{2}\)

Sobald wir im Binärsystem \(1_\rm{2}\) und \(1_\rm{2}\) addieren, benötigen wir bereits zwei Bits um das Ergebnis \(10_\rm{2}\) aufschreiben zu können.


Schritt 2: Schalttabelle anlegen

Die Addition zweier Bits soll in einer Schalttabelle aufgeschrieben werden. Für jedes Bit gibt es ein Eingabebit E1 und E2, für das Ergebnis brauchen wir zwei Ergebnisbits: eines für das Summenbit S und eines für das Übertragsbit US (Sie erinnern sich hoffentlich noch an das schriftliche Addieren).

E1 E2 US S
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0

Schritt 3: Schaltung entwickeln

Zu dieser Schalttabelle soll jetzt eine Schaltung entwickelt werden. Dazu schreiben wir die Schalttabelle als logischen Ausdruck. Da es zwei Ausgabebits gibt, schreiben wir für jedes Ausgabebit einen eigenen logischen Ausdruck auf.

Sie erinnern sich: \(\neg\) = NOT-Gatter; \(\land\) = AND-Gatter; \(\lor\) = OR-Gatter

Anleitung für die Entwicklung des logischen Ausdrucks auf Basis der Schalttabelle:

  • Suchen Sie alle Zeilen in der Schalttabelle in welchen das Ausgabebit den Zustand 1 hat.
  • Negieren Sie für jede gefundene Zeile die Zustände, die Null sind.
  • kombinieren Sie die Zustände jeder Zeile mit AND und schreiben Sie diese in eine Klammer.
  • kombinieren Sie die Klammern mit OR.

Logischer Ausdruck für das Summenbit S (2. und 3. Zeile):

\((\neg \, \rm{E1} \land \rm{E2}) \lor (\rm{E1} \land \neg \, \rm{E2}) = \rm{S}\)

Logischer Ausdruck für das Übertragsbit US (4. Zeile):

\((\rm{E1} \land \rm{E2}) = \rm{US}\)

Die logischen Ausdrück werden jetzt in einer Schaltung umgesetzt. Öffnen Sie folgenden Online-Schaltungseditor: CircuitVerse.

Anleitung für die Entwicklung der logischen Schaltung auf Basis des logischen Ausdrucks:

  • Fügen Sie jeden Eingabezustand E1 und E2 und jeden Ausgabezustand S und US ein.
  • Fügen Sie für jede Klammer des logischen Ausdrucks ein AND-Gatter mit zwei Eingängen ein.
  • Setzen Sie für ein NOT in jeder Klammer ein NOT-Gatter von oben nach unten vor den Eingang des AND-Gatters.
  • Wenn zu einem Ausgabebit mehrere AND-Gatter führen, fügen Sie ein OR-Gatter mit Eingängen für jedes AND-Gatter hinter den AND-Gattern ein.
  • Verbinden Sie E1 jeweils mit den oberen Eingängen der AND-Gatter und E2 mit den unteren Eingängen und verbinden Sie - falls vorhanden - zuerst das NOT-Gatter mit den Eingängen und dem entsprechenden AND-Gatter.
  • Verbinden Sie für jedes Ausgabebit die AND-Gatter, OR-Gatter und das entsprechende Ausgangsbit.

Mögliche Lösung:

Testen Sie die Schaltung, indem Sie die beiden Eingabebits für alle möglichen Zuständ addieren und vergleichen jeweils Sie die Ausgabebits mit der Schalttabelle.

Die ersten beiden Bits können mit unserem Halbaddierer addiert werden. Wenn wir die zweite Stelle addieren wollen, kann es sein, dass wir einen Übertrag aus der Addition der ersten Stelle bekommen.

Beispiel: Die beiden Binärzahlen \(11_\rm{2}\) und \(1_\rm{2}\) sollen addiert werden.

Die Addition der Einer liefert \(0_\rm{2}\) mit dem Übertrag \(1_\rm{2}\). Damit muss für die Zweier \(1_\rm{2}\) und \(1_\rm{2}\) addiert werden. Das Ergebnis ist insgesamt \(11_\rm{2} + 1_\rm{2} = 100_\rm{2}\).

Im folgenden soll eine Schaltung entwickelt werden, die einen Übertrag entgegennehmen kann und diesen bei der Rechnung berücksichtigt.


Schritt 1: Schalttabelle anlegen

Die Addition zweier Bits mit Übertragsbit soll in einer Schalttabelle aufgeschrieben werden. Neben den beiden Eingabebits E1 und E2, dem Summenbit S dem Übertragsbit US haben wir jetzt ein drittes Eingabebit UB, das den Übertrag der letzten Stelle liefert.

UB E1 E2 UE E
0 0 0 0 0
1 0 0 0 1
0 1 0 0 1
1 1 0 1 0
0 0 1 0 1
1 0 1 1 0
0 1 1 1 0
1 1 1 1 1

Schritt 2: Schaltung entwickeln

Wir schreiben die Schalttabelle als logischen Ausdruck. Da es zwei Ergebnisbits gibt, schreiben wir für jedes Ergebnisbit einen eigenen logischen Ausdruck auf.

Logischer Ausdruck für das Einerbit E (2., 3., 5. und 8. Zeile):

\((\rm{UB} \land \neg \, \rm{E1} \land \neg \, \rm{E2}) \lor (\neg \, \rm{UB} \land \rm{E1} \land \neg \, \rm{E2}) \lor (\neg \, \rm{UB} \land \neg \, \rm{E1} \land \rm{E2}) \lor (\rm{UB} \land \rm{E1} \land \rm{E2}) = \rm{E}\)

Logischer Ausdruck für das Übertragsbit UE (4., 6., 7. und 8. Zeile):

\((\rm{UB} \land \rm{E1} \land \neg \, \rm{E2}) \lor (\rm{UB} \land \neg \, \rm{E1} \land \rm{E2}) \lor (\neg \, \rm{UB} \land \rm{E1} \land \rm{E2}) \lor (\rm{UB} \land \rm{E1} \land \rm{E2}) = \rm{UE}\)

Testen Sie die Schaltung, indem Sie die beiden Eingabebits und das Übertragsbit für alle möglichen Zuständ addieren und jeweils Sie die Ausgabebits mit der Schalttabelle vergleichen.

Die Volladdierer-Schaltung kann zu einem Bauteil zusammengefasst werden:

Das Bauteil finden Sie in CircuitVerse im Menü links unter "Misc." und "Adder".