|
|
- Die Frage wie man mit digitalen
elektrischen Signalen addieren kann, lässt sich klären,
wenn man akzeptiert, dass die logischen Signalbeschreibungen 0
und 1 für Spannungen 0V bzw. 5V 1)
stehen und dass man in einem Zahlensystem mit zwei Ziffern,
genauso rechnen kann, wie im dezimalen Zahlensystem.
-
Das Binäre- Duale-oder
Zweier-Zahlensystem besitzt zwei Ziffern und man zählt ..
-
0
=> 00
-
1
=> 01
-
2
=> 10
-
3
=> 11 .. usw.
-
Bei der Addition zweier einstelliger
Binärzahlen müssen sich dieser Zählweise
entsprechend folgende Ergebnisse einstellen ..
-
0
+ 0 = 0
-
0
+ 1 = 1
-
1
+ 0 = 1
-
1
+ 1 = 0 Übertrag 1
-
Der Übertrag wird wie im dezimalen
Zahlensystem bei der nächst höheren Stelle
berücksichtigt. So ergibt 01+01 = 10 .. oder untereinander
geschrieben ..
-
01
1
-
+01 +1
-
+1
Übertrag
-
---- --
-
=10 =2
-
Das Ergebnis von 1+1 = 2 oder binär
01 + 01 = 10 wird also bei Beachtung des Übertrags
erreicht.
|
|
|
|
Die nachfolgende
Schaltung, die Halbaddierer genannt wird, liefert in ihren beiden
Ausgängen, S für Summe und C für Carry (Übertrag),
genau die Signale, die als Summe zweier einstelliger Binärzahlen
benötigt werden.
|
|
|
|
|
|
|
|
Das
Halbaddierwerk
|
|
|
|

|
|
|
|
- Die
Wahrheitstabelle der Schaltung verdeutlicht dies ..
-
-
Wird
auf ihre Eingänge E1 und E2 ein 0-Signal gegeben, so ergibt
sich für den Ausgangs S eine 0 und der Ausgang C ist
ebenfalls 0. Bei E1=0 und E2=1 ergeben sich S=1 und C=0,
gleiches gilt bei E1=1 und E2=0. Erst bei E1=1 und E2=1 ändert
sich das Bild, für die Summe beider Zahlen wird S=0 und der
Ausgang C zeigt mit C=1 einen Übertrag an. Übertrag
und Summe ergeben 10, was der erwarteten 2 entspricht.
|
|
|
|
|
|
|
|
Der
Volladdierer
|
|
|
|
- Nun sollen in
einem Prozessor aber nicht nur einstellige Zahlen addiert
werden, sondern solche aus 4, 8 oder 16 Stellen und mehr. Dazu
benötigt man zunächst ein Addierwerk, dass auch den
Übertrag bei der Addition berücksichtigt. Eine solches
Addierwerk nennt man Volladdierer. Es besitzt einen zusätzlichen
Eingang für den Übertrag C der vorhergehenden
Additionsschaltung. Dadurch wird seine Wahrheitstabelle doppelt
so lang ..
-
-
Im
oberen Teil findet sich wieder die Wahrheitstabelle des
Halbaddierers, wenn man von dem Eingang Ci=0 mal absieht, dann
folgt der Tabellenteil, bei dem der Übertrag der vorherigen
Stufe Ci=1 wurde. -
Dieser unterscheidet sich vom
Halbaddierwerk insofern, als bei der Addition immer eine 1
auftritt. Andererseits setzt sich die Logik des Addierens fort,
denn 1+0= 1, Übertrag 1, 1+1= 0, Übertrag 1 .. nur bei
1+1+1=1, Übertrag 1 muss noch einmal nachgedacht werden.
Dezimal wäre das Ergebnis von 1+1+1=3 diese Zahl wird binär
als 11 dargestellt, was das Addierwerk ja auch tatsächlich
mit Übertrag und Summe anzeigt. Diese lauten C=1 und S=1.
|
|
|
|
|
|
|
|
- Wer mit
Boolscher Algebra umgehen kann, findet schnell eine
Digitalschaltung, welche diese Wahrheitstabelle erfüllt.
Sie könnte wie nachfolgend gezeigt aussehen.
-
-
(Die Zahlen der obersten
Zeile im Bild beziehen sich auf die Zeilen der Wahrheitstabelle,
bei denen für S oder C eine 1 herauskommen muss. Durch
Invertierung der 0-Signale wird dies erreicht)
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
Benutzt
man anstelle der obigen Schaltung das unten gleich vier mal
auftretende Symbol, und verschaltet dieses wie gezeigt, ergibt
sich ein Addierwerk für vier Bits. Diese Schaltung kann
beliebig zu einem 8, 16, 32 ..Bit Addierwerk erweitert werden, um
dann Teil der ALU eines Prozessors zu werden.
|
|
|
|
|
|
|
|
Volladdierwerk
für 4 Bit mit Carry-Flag
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
- Im obigen Bild steht die Abkürzung
Ac für Akkumulatur. Das ist das Hauptrechenregister2)
einer CPU. Hr steht für Hilfsregister3).
Das Ergebnis einer numerischen Berechnung wird bei CPUs in der
Regel wieder im Akkumulator abgelegt, wodurch dessen ehemaliger
Inhalt überschrieben wird. Tritt so wie es oben gezeigt
ist, im höchsten Bit ein Übertrag auf, so kann der
nicht mehr im Akkumulator aufgehoben werden. Die ALU legt ihn im
Carry-Flag (der Übertragsflagge) ab.
-
Im niederwertigen Bit wird bei einer
Addition normalerweise der Übertragswert 0 erwartet. Oben
im Bild wurde deswegen der Übertragseingang auf
Bezugspotential gelegt. In einem Prozessor stammt dieses Bit aus
dem Carry-Flag, das vor einer Addition sinnvollerweise auf 0
gesetzt werden sollte.
|
|
|
|
|
|
|
|
1)
Diese Angabe betrifft TTL-Logik. Anstelle von 0V und 5V sollten
besser Spannungsbereiche verwendet werden 0 => 0V-0,7V .. 1 =>
2,0V-5V
|
|
|
|
2)
Register sind Speicherzellen innerhalb der CPU. Anders als die
Speicherzellen im Arbeitsspeicher besitzen sie einen Namen, mit
dem ein Programmierer sie ansprechen kann.
|
|
|
|
3)
Das Hilfsregister kann ein Register der CPU sein, es kann aber
auch eine Speicherzelle des Arbeitsspeichers sein.
|
|
|
|
|
|
|
|
|
|
|
|
- Interpretation
der Rechnung (Zahlen ohne Vorzeichen)
-
Würde ein Programmierer die Zahlen in
Akkumulator Ac=11 und Hifsregister Hr=7 als solche ohne
Vorzeichen deuten, dann wären die auf vier Bit begrenzten
Zahlen 11 und 7 addiert worden. Das Ergebnis 18 passt nicht mehr
in den Akkumulator, denn die höchste mit vier Bit
darstellbare Zahl ist 15. Der tatsächliche Inhalt des
Akkumulators, die Zahl 2 stellt also nicht das Ergebnis dar.
Tatsächlich fand ja auch ein Übertrag statt, so dass
die Carry-Flagge auf C=1 gesetzt wurde. Interpretiert man die
Carry-Flagge als höchstes Bit des Ergebnisses so ergibt
sich endlich das Ergebnis 18.
-
Für einen Programmierer ist es also
notwendig, die Carry-Flagge nach einer Addition zu betrachten.
Ist die Carry-Flagge C=0 so steht das komplette Ergebnis im
Akkumulator. Ist C=1, so ist das Ergebnis im Akkumulator falsch,
denn ein Bit von ihm ist in die Carry-Flagge übertragen
worden. Der Programmierer kann nun das Ergebnis im Akkumulator
verwerfen, oder er muss für die Ablage des Ergebnisses
einen Speicher benutzen, der mehr Bits umfasst als vier.
|
|
|
|
|
|
|
|
- Interpretation
der Rechnung (Zahlen mit Vorzeichen)
-
Würde ein Programmierer die Zahlen in
Akkumulator Ac= -5 und Hifsregister Hr= +7 als solche mit
Vorzeichen deuten, dann wären die auf vier Bit begrenzten
Zahlen -5 und +7 addiert worden. Das Ergebnis +2 stünde
richtig im Akkumulator und die Aussage des Carry-Flags wäre
falsch. Tatsächlich haben sich zwei Überträge
abgespielt, was die vorzeichenbehaftete Addition zu einer
richtigen Addition macht. Dies spiegelt die Overflow- oder
Überlaufflagge wieder, welche die Überträge aus
dem 6. ins 7. Bit und dem 7.ins 8.Bit durch ein exklusives ODER
zusammenfasst. Diese Flagge ist 0, was bedeutet, dass der
Akkumulator ein richtiges Ergebnis enthält, wenn man die
beiden Zahlen als vorzeichenbehaftete Zahlen interpretiert. Das
folgende Bild zeigt einen Volladdierer mit Carry- (C) und
Overflowflagge (OV).
|
|
|
|
|
|
|
|
Volladdierwerk für 4Bit mit Carry- und Overflowflag
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
- Zusammenfassung
-
Zur Addition und zur Subtraktion ganzer
Zahlen in der Computertechnik genügt eine digitale
Schaltung, die sich Volladdierer nennt und die durch eine
Kaskadierung zu einem Addierwerk von 4,8,16,32 und mehr Bit
erweitert werden kann.
-
Diese Schaltung verfügt im Ausgang
über ein Ergebnisregister, den Akkumulator und zwei Flaggen
die sich Übertrags- und Überlaufflagge nennen. Je nach
Interpretation der im Eingang der Schaltung anliegenden
Dualzahlen als Zahlen mit oder ohne Vorzeichen, geben diese
Flaggen darüber Auskunft, ob das Ergebnis im Akkumulator
als richtig oder falsch zu bewerten ist.
-
Bei Zahlen ohne Vorzeichen ist das
Ergebnis richtig, wenn die Übertragsflagge C=0 ist. Die
Überlaufflagge OV ist unerheblich.
Bei Zahlen
mit Vorzeichen ist das Ergebnis richtig, wenn die Überlaufflagge
OV=0 ist. In diesem Fall ist die Übertragsflagge C
unerheblich.
|
|
|
|
|
|