-
Die
Erfindung betrifft einen Carry-Save Addierer zum Summieren einer
Mehrzahl von Bits derselben Wertigkeit. Ferner betrifft die Erfindung
einen übertragserhaltenden
Addierer zum Summieren einer Mehrzahl von Bit-Sätzen, wobei die in einem Bit-Satz
enthaltenen Bits dieselbe Wertigkeit und Bits unterschiedlicher
Bit-Sätze
unterschiedliche Wertigkeiten aufweisen, und wobei jedem Bit-Satz
ein Bit-Satz-Addierer zugeordnet ist, welcher unter Berücksichtigung
von bei der Summation von Bit-Sätzen
niedrigerer Wertigkeit gewonnenen Überträgen ein Bit der Wertigkeit
des jeweiligen Bit-Satzes berechnet.
-
Carry-Save
(CS) Addierer sind in der Technik bekannt und werden durch logische
Schaltungen realisiert, welche in Form von monolithisch integrierten
Bausteinen erhältlich
sind. Der am häufigsten verwendete
CS Addierer ist der 3-zu-2 Bit Volladdierer, welcher drei gleichwertige
(d.h. vertauschbare) Eingänge
und zwei Ausgänge
in Form eines Summen-Bits und eines Übertrags-Bits aufweist.
-
Für die Addition
von mehreren mehrstelligen Dualzahlen wird ein Addierer benötigt, der
für jede Stelle
mehrere Eingänge
aufweist. Üblicherweise wird
zur Addition der Bits gleicher Wertigkeit (d.h. gleicher Stelle
in der Dualdarstellung) ein Wallace-Tree-(WT-)Addierer eingesetzt.
Ein WT-Addierer ist ein mehrstufiger Addierer, welcher in jeder Stufe
die Anzahl der zu addierenden Bits verkleinert. Die einzelnen Stufen
eines WT-Addierers sind aus parallel zueinander angeordneten 3-zu-2 CS-Volladdierern
aufgebaut. Mit jeder Stufe verringert sich dabei auch die Anzahl
der für
diese Stufe benötigten Volladdierer.
-
In
dem U.S.-Patent 5,504,915 ist ein modifizierter WT-Addierer beschrieben,
welcher zusätzlich zu
den 3-zu-2 CS Vollad dierern 5-zu-3 Addierer enthält. Die 5-zu-3 Addierer weisen
jeweils vier Eingänge
für zu
summierende Bits und einen Eingang für ein Übertrags-Bit sowie zwei Ausgänge für zwei Summen-Bits
und einen Ausgang für
ein Übertrags-Bit auf.
-
Die
Schrift
DE 692 28
961 T2 beschreibt einen 7-zu-3 Zähler, welcher die Summe von
7 Bits gleicher Wertigkeit in Form einer 3-Bit Binärzahl ausgibt.
Das erste und das zweite Übertrags-Bit
werden dabei von einem Volladdierer berechnet, welcher an seinen
drei Eingängen
Zwischenergebnisse von vorgeschalteten Zwischenergebnis-Berechnungsstufen entgegennimmt.
-
Der
Erfindung liegt die Aufgabe zugrunde, einen weiteren vielfältig und
aufwandsgünstig
einsetzbaren Carry-Save Bit-Addierer
zu schaffen. Insbesondere sind dabei kurze Signallaufzeiten und
eine geringe Stromaufnahme angestrebt. Ferner zielt die Erfindung
darauf ab, einen übertragserhaltenden
Addierer zum Summieren einer Mehrzahl von Bit-Sätzen, welche Bits jeweils derselben
Wertigkeit enthalten, anzugeben, welcher für die Summation eines Bit-Satzes
mit möglichst
wenig Stufen auskommt und einen geringen Verdrahtungsaufwand für die Implementierung
erforderlich macht.
-
Die
der Erfindung zugrunde liegende Aufgabenstellung wird durch die
Merkmale der unabhängigen
Ansprüche
gelöst.
-
Dadurch,
dass am Ausgang des erfindungsgemäßen 7-zu-3 Bit CS Addierers
zwei Überträge unterschiedlicher
Wertigkeit ausgegeben werden, wird die volle Darstellungsmöglichkeit
der drei Ausgangssignale für
die gleichzeitige Addition von sieben Eingangs-Bits genutzt. Dies
ist vorteilhaft gegenüber bisherigen
Lösungen
wie z.B. dem 5-zu-3 CS Addierer, welcher nur einen Teil des bei
drei Ausgängen prinzipiell
möglichen
Wertebereichs ausschöpft.
Darüber
hinaus ist durch die gleichzeitige Erzeugung von zwei Überträgen unterschiedlicher
Wertigkeit der Schaltungsaufwand und der interne Verdrahtungs aufwand
geringer als bei mehrstufigen Lösungen
mit herkömmlichen
3-zu-2 CS Addierern.
-
Der
erfindungsgemäße 7-zu-3
CS Addierer kennzeichnet sich dadurch, dass der 7-zu-3 CS Addierer
aus drei parallel zueinander angeordneten, unabhängig voneinander arbeitenden
Addierersubblöcken
aufgebaut ist. Dabei erzeugt ein erster Addierersubblock das Summen-Bit
der Wertigkeit w, ein zweiter Addierersubblock erzeugt das Übertrags-Bit
der Wertigkeit 2w und der dritte Addierersubblock erzeugt das Übertrags-Bit
der Wertigkeit 4w.
-
Nach
einer ersten bevorzugten Ausführungsform
der Erfindung ist wenigstens ein und insbesondere jeder Addierersubblock
aus Logikgattern aufgebaut. Mit dem Begriff "Logiggatter" sind hier die Grundelemente digitaler
Schaltkreise, d.h. AND-Gatter (UND-Gatter),
OR-Gatter (ODER-Gatter), XOR-Gatter (Exklusiv-ODER-Gatter), NAND-Gatter
(invertiertes UND-Gatter) NOR-Gatter (invertiertes ODER-Gatter)
und Inverter bezeichnet.
-
In
diesem Fall ist vorzugsweise der bzw. insbesondere jeder Addierersubblock
aus maximal drei hintereinander geschalteten Logiggatterstufen realisiert,
so dass sämtliche
Ausgabe-Bits bereits nach drei Gatterlaufzeiten zeitgleich zur Verfügung stehen (Inverter
werden bei der Zählung
der Logiggatterstufen nicht berücksichtigt).
-
Eine
zweite bevorzugte Ausführungsform der
Erfindung kennzeichnet sich dadurch, dass ein und insbesondere jeder
Addierersubblock aus einer Mehrtransistorschaltung besteht, welche
nicht in eine Mehrzahl von Logikgattern (gemäß vorstehender Definition)
auflösbar
ist. Mit anderen Worten bildet jeder Addierersubblock ein einzelnes,
eigenständiges "Komplexgatter" ohne interne Logiggatterstruktur, welches
darüber
hinaus unabhängig
von den anderen Addierersubblöcken
ist. Hierdurch können
besonders schnelle sowie platz- und stromsparende Schaltungen realisiert
werden, da die Anzahl der Transistoren solcher Schaltungen kleiner
gehalten werden kann als bei Schaltungen, die auf Logiggatterebene
konzipiert sind.
-
Eine
besonders bevorzugte Ausgestaltung eines solchen übertragserhaltenden
Addierers umfasst eine Aufladeschaltung, die mit der jeweiligen Mehrtransistorschaltung
derart verbunden ist, dass sie über
diese in Abhängigkeit
von den an den Eingängen
des Addierers anliegenden Bits entladen wird. Diese Auslegung des
erfindungsgemäßen Addierers,
welche dem Konzept der dynamischen Schaltungsauslegung folgt, minimiert
den Leistungsbedarf des Addierers.
-
Der
erfindungsgemäße 7-zu-3
CS Addierer kann in vielfältiger
Weise in größeren Addiererstrukturen
eingesetzt werden. In zahlreichen Anwendungsfällen werden übertragserhaltende
Addierer benötigt,
die eine Mehrzahl von Bit-Sätzen
verarbeiten, wobei die in einem Bit-Satz enthaltenen Bits dieselbe
Wertigkeit und Bits unterschiedlicher Bit-Sätze unterschiedliche Wertigkeiten
aufweisen. Ein erfindungsgemäßer übertragserhaltender
Addierer dieser Art kennzeichnet sich dadurch, dass zumindest ein Bit-Satz-Addierer
wenigstens einen 7-zu-3 Carry-Save Addierer mit sieben Eingängen für die Eingabe von
zu summierenden Bits jeweils der Wertigkeit w und einem Ausgang
für ein
Summen-Bit der Wertigkeit w und zwei Ausgängen für zwei Übertrags-Bits der Wertigkeiten
2w und 4w umfasst. Dabei ist der 7-zu-3 Carry-Save Addierer aus
drei parallel zueinander angeordneten, unabhängig voneinander arbeitenden
Addierersubblöcken
aufgebaut, die das Summen-Bit, das Übertrags-Bit der Wertigkeit
w und das Übertrags-Bit
der Wertigkeit 2w erzeugen.
-
Bei
einer besonders bevorzugten Ausgestaltung eines solchen übertragserhaltenden
Addierers sind mehrere Stufen mehrerer benachbarter Bit-Satz-Addierer
aus einem Array aus 7-zu-3 CS Addieren aufgebaut. Dadurch wird ein
geringer Verdrahtungsaufwand verglichen mit einer höher kaskadierenden
Anordnung z.B. bestehend aus 3-zu-2 CS Addierern ermöglicht.
-
Weitere
vorteilhafte Ausgestaltungen der Erfindung sind in den Unteransprüchen angegeben.
-
Die
Erfindung wird nachfolgend anhand von Ausführungsbeispielen unter Bezugnahme
auf die Zeichnung beschrieben; in dieser zeigt:
-
1 einen
WT-Addierer, welcher aus 3-zu-2 Addierern aufgebaut ist, gemäß dem Stand der
Technik;
-
2a eine
schematische Darstellung eines 7-zu-3 CS Addierers;
-
2 eine
schematische Darstellung einer Kaskadierung von 3-zu-2 CS Addierern
zur Realisierung eines 7-zu-3
CS Addierers;
-
3 eine
Wahrheitstabelle für
einen 7-zu-3 Addierer;
-
4 ein
Blockdiagramm eines erfindungsgemäßen 7-zu-3 CS Addierers;
-
5 ein
Blockschaltbild eines ersten Addierersubblocks ADD-S aus 4 gemäß einem
ersten Ausführungsbeispiel
der Erfindung;
-
6 ein
Blockschaltbild eines zweiten Addierersubblocks ADD-C1 aus 4 gemäß dem ersten
Ausführungsbeispiel
der Erfindung;
-
7 ein
Blockschaltbild eines dritten Addierersubblocks ADD-C2 aus 4 gemäß dem ersten
Ausführungsbeispiel
der Erfindung;
-
8 ein
Blockschaltbild eines ersten Addierersubblocks ADD-S aus 4 gemäß einem zweiten
Ausführungsbeispiel
der Erfindung;
-
9 ein
Blockschaltbild eines zweiten Addierersubblocks ADD-C1 aus 4 gemäß dem zweiten
Ausführungsbeispiel
der Erfindung;
-
10 ein
Blockschaltbild eines dritten Addierersubblocks ADD-C2 aus 4 gemäß dem zweiten
Ausführungsbeispiel
der Erfindung;
-
11 einen
Ausschnitt aus einem erfindungsgemäßen übertragserhaltenden Addierer,
der ausschließlich
aus 7-zu-3 CS Addierern aufgebaut ist;
-
12 eine
schematische Darstellung eines 64x64 Bit Multiplizierers;
-
13 ein
Stufendiagramm zur Erläuterung des
Stufenaufbaus eines bekannten WT-Addierers zum Aufaddieren von 33
Bits derselben Wertigkeit mit 3-zu-2 CS Addierern; und
-
14 ein
Stufendiagramm zur Erläuterung des
Stufenaufbaus eines erfindungsgemäßen Bit-Satz-Addierers zum
Aufaddieren von 33 Bits derselben Wertigkeit mit 7-zu-3 CS Addierern.
-
1 zeigt
einen fünf-stufigen
WT-Addierer 1 zur Addition von 13 Eingabe-Bits 2 gleicher
Wertigkeit nach dem Stand der Technik.
-
Der
WT-Addierer 1 umfasst insgesamt 11 3-zu-2 CS Volladdierer 3.
Jeder Volladdierer 3 weist drei Eingänge A, B, Ci und zwei Ausgänge S, Co
auf. Die Eingänge
A und B sind zur Entgegennahme von zwei zu addierenden Bits vorgesehen,
der Eingang Ci (Carry in) ist zum Empfang eines Übertrags-Bits vorgesehen. Die
drei Eingänge
A, B, Ci sind äquivalent.
-
Der
Ausgang S repräsentiert
den Summen-Ausgang des 3-zu-2 CS Volladdieres 3. Der Ausgang
S nimmt den Wert Null an, wenn an sämtlichen Eingängen A,
B, Ci ein Bit des Wertes Null anliegt oder wenn an genau zwei der
Eingänge
A, B, Ci ein Bit des Wertes 1 anliegt. Andernfalls ist S = 1. Der Ausgang
Co für den Übertrag
(Carry out) nimmt nur dann den Wert 1 an, wenn an mindestens zwei
der Eingänge
ein Bit des Wertes 1 anliegt. Im Gegensatz zu den Eingängen A,
B, Ci sind die Ausgänge
S und Co nicht äquivalent,
d.h. nicht vertauschbar.
-
Die
fünf Stufen
1.1, 1.2, 1.3, 1.4, 1.5 des WT-Addierers 1 umfassen 4,
3, 2, 1 bzw. 1 3-zu-2 CS Volladdierer 3. Die 13 Eingänge des
WT-Addierers sind durch die 12 Eingänge 2 der ersten Stufe 1.1 und
einen Eingang 2 der zweiten Stufe 1.2 realisiert.
-
Während die
Ausgänge
S der ersten Stufe 1.1 jeweils Eingängen der 3-zu-2 CS Volladdierer 3 der
zweiten Stufe 1.2 zugeführt
werden, werden die 4 Ausgänge
Co, welche ein Übertrags-Bit
4 bereitstellen, einer zweiten Stufe eines (nicht dargestellten)
WT-Addierers zur Addition eines Bit-Satzes mit einer nächst höheren Wertigkeit
zugeleitet. In analoger Weise empfangen die 3-zu-2 CS Volladdierer 3 der
zweiten Stufe 1.2 jeweils ein oder zwei Übertrags-Bits 5, welche von
einer ersten Stufe eines (ebenfalls nicht dargestellten) WT-Addierers
für einen
Bit-Satz mit nächst
niedrigerer Wertigkeit ausgegeben werden.
-
Dieses
Prinzip setzt sich über
die zweite 1.2 und dritte 1.3, dritte 1.3 und vierte 1.4 und vierte
1.4 und fünfte
1.5 Stufe des WT-Addierers 1 fort. Der Ausgang des WT-Addierers 1 wird
durch ein Summen-Bit 6 und ein partielles Übertrags-Bit 7, welches von
der ausgangsseitigen Stufe des WT-Addierers 1 nächst niedrigerer
Wertigkeit stammt, repräsentiert.
-
2a zeigt
eine schematische Darstellung eines 7-zu-3 CS Addierers. Der Addierer
weist die Eingänge
i0, i1, i2, i3, i4, i5, i6 und die Ausgänge s, c1, c2 auf. Die Addition
von sieben Bits umfasst einen Wertebereich zwischen Null und sieben.
Die drei Ausgänge
des 7-zu-3 CS Addierers repräsentieren die
Summe der an den Eingängen
anliegenden Bits in dualkodierter Form. Der Ausgang s für das Summen-Bit
weist die gleiche Wertigkeit wie der Satz von Eingangs-Bits i0 bis
i6 auf. Bei dem Ausgang c1 handelt es sich um einen Übertrags-Ausgang, welcher eine
um den Faktor 2 höhere
Wertigkeit als der Ausgang s für
das Summen-Bit aufweist. Der Ausgang c2 ist ebenfalls ein Ausgang
für ein Übertrags-Bit
jedoch mit einer nochmals um den Faktor 2 erhöhten Wertigkeit gegenüber dem
Ausgang c1. Mit anderen Worten weisen die Ausgänge s, c1 und c2 die Wertigkeiten 20, 21 und 22 bezogen auf die Wertigkeit des Bit-Satzes
am Eingang des 7-zu-3 Addierers auf.
-
2 zeigt
einen erfindungsgemäßen 7-zu-3
CS Addierer, welcher aus kaskadierten, herkömmlichen 3-zu-2 CS Volladdierern
aufgebaut ist. Der 7-zu-3 CS Addierer weist drei Stufen 1.1, 1.2
und 1.3 auf, die aus zwei, einem bzw. einem 3-zu-2 CS Volladdierer
gebildet sind. Dieselben oder vergleichbare Teile und Funktionsgruppen
wie in 1 sind mit denselben Bezugszeichen bezeichnet.
-
Dem
7-zu-3 CS Addierer werden 7 Bits der gleichen Wertigkeit an Eingängen i0,
i1, ..., i6 zugeführt.
Die ersten sechs Eingänge
i0 bis i5 sind mit den 2 × 3
Eingängen
der beiden 3-zu-2
CS Addierer 3 der ersten Stufe 1.1 verbunden. Der siebte
Eingang i6 ist mit einem Eingang des 3-zu-2 CS Addierers 3 der zweiten
Stufe 1.2 verbunden. Die verbleibenden beiden Eingänge A und
Ci dieses 3-zu-2 CS Addierers 3 werden jeweils von den
Summen-Bit Ausgängen
der beiden 3-zu-2 CS Addierer 3 der ersten Stufe 1.1 gespeist.
-
Der
Summen-Bit Ausgang S des 3-zu-2 CS Addierers 3 der zweiten
Stufe 1.2 bildet den Summen-Bit Ausgangs des 7-zu-3 CS Addierers.
Die drei Übertrags-Bit
Ausgänge
der beiden 3-zu-2 CS Addierer 3 der ersten Stufe 1.1 und
des 3-zu-2 CS Addierers 3 der zweiten Stufe 1.2 werden
den drei Eingängen
des 3-zu-2 CS Addierers 3 der
dritten Stufe 1.3 zugeleitet. Der Summen-Bit Ausgang S des 3-zu-2 CS
Addierers 3 der dritten Stufe 1.3 liefert das Bit für den ersten Übertrags-Ausgang
c1 und der Übertrags-Bit
Ausgang Co dieses 3-zu-2 CS Addierers 3 liefert das Übertrags-Bit
c2 nächsthöherer Wertigkeit des
betrachteten 7-zu-3 CS Addierers.
-
3 gibt
die Wahrheitstabelle eines 7-zu-3 CS Addierers wieder. Es wird deutlich,
dass der 7-zu-3 CS Addierer die Eigenschaft aufweist, dass der Wertebereich
der drei Ausgangs-Bits
vollständig ausgeschöpft wird.
Diese Eigenschaft, die sich unabhängig von der konkreten Implementierung
des 7-zu-3 CS Addierers allein aus dessen Wahrheitstabelle ergibt,
ist ein Grund dafür,
dass sich durch Verwendung eines solchen 7-zu-3 CS Addierers in einem übertragserhaltenden
Addierer zur Addition mehrerer Binärzahlen der Schaltungsaufwand
im Vergleich zu Lösungen
bestehend aus 3-zu-2 CS Addierern deutlich reduzieren läßt.
-
Anhand
der 4 bis 10 werden zwei weitere Ausführungsbeispiele
eines erfindungsgemäßen 7-zu-3
CS Addierers erläutert.
-
Der
7-zu-3 CS Addierer umfasst drei Addierersubblöcke, die in 4 mit
den Bezugszeichen ADD-S, ADD-C1 und ADD-C2 bezeichnet sind. Jeder Addierersubblock
ADD-S, ADD-C1, ADD-C2 weist sieben Eingänge I0, I1, I2, I3, I4, I5
und I6 auf, die jeweils mit den genannten sieben Eingängen i0
bis i6 des 7-zu-3
CS Addierers verbunden sind.
-
Der
Addierersubblock ADD-S gibt an seinem Ausgang S ein Bit der Wertigkeit
20 aus. Die entsprechenden Ausgänge C1 und
C2 der zweiten und dritten Addierersubblöcke ADD-Cl und ADD-C2 geben jeweils
ein Bit der Wertigkeit 21 (Ausgang C1) bzw. ein
Bit der Wertigkeit 22 (Ausgang C2) aus.
Die Ausgänge
S, C1, C2 der Addierersubblöcke
ADD-S, ADD-C1 und ADD-C2 sind die Ausgänge s, c1, c2 des betrachteten
7-zu-3 CS Addierers.
-
In
den 5 bis 7 sind mögliche Realisierungen der Gatterstrukturen
der einzelnen Addierersubblöcke
ADD-S, ADD-C1 und ADD-C2 gemäß einem
ersten Ausführungsbeispiel
gezeigt. Jeder Addierersubblock ADD-S, ADD-Cl und ADD-C2 ist bei diesem
Aus führungsbeispiel
aus einzelnen Logiggattern aufgebaut, welche in mehreren hintereinander angeordneten
Gatterstufen angeordnet sind. Gemäß dem hier verwendeten Sprachgebrauch
enthält
eine Gatterstufe genau ein Logikgatter, wie beispielsweise XOR,
NAND, usw., oder eine Parallelanordnung derartiger Logikgatter.
Inverter bilden keine Gatterstufen, d.h. ihr Vorhandensein beeinflußt die Anzahl
der Gatterstufen nicht.
-
5 verdeutlicht
die Gatterstruktur des Addierersubblocks ADD-S. Die Eingänge I0,
I1, ..., I6 sind paarweise mit den jeweils zwei Eingängen von insgesamt
drei XOR-Gattern 30 der ersten Stufe 10.1 des Addierersubblocks
verbunden. Die (auf Gatterebene) zweite Stufe 10.2 des Addierersubblocks ADD-S
wird durch zwei XOR-Gatter 30 realisiert. Die vier Eingänge der
zweiten Stufe 10.2 werden durch die drei Ausgänge der ersten Stufe 10.1 sowie
den Eingang I6 dargestellt.
-
Eine
dritte und letzte Stufe 10.3 des Addierersubblocks ADD-S wird durch
ein einzelnes XOR-Gatter 30 realisiert, das von den beiden
Ausgängen
der zwei XOR-Gatter 30 der zweiten Stufe 10.2 gespeist
wird. Der Ausgang des XOR-Gatters 30 der dritten Stufe
10.3 ist der Summen-Bit Ausgang des 7-zu-3 CS Addierers.
-
Der
detaillierte Aufbau des Addierersubblocks ADD-C1 ist in 6 dargestellt.
Er besteht ebenfalls lediglich aus drei Stufen 10.1, 10.2, und 10.3
(wobei wie bereits erwähnt
die in der Zeichnung durch Dreieck-Symbole dargestellten Inverter
nicht als Stufen gezählt
werden). Die erste Stufe 10.1 ist aus 42 NRND-Gattern 30' mit jeweils
sechs Eingängen
ausgebildet, die zweite Stufe 10.2 umfasst sechs NAND-Gatter 30'' mit jeweils sieben Eingängen und die
dritte Stufe 10.3 wird durch ein NAND-Gatter 30' mit sechs Eingängen gebildet.
Der Ausgang des NAND-Gatters 30' der dritten Stufe 10.3 realisiert
den Ausgang C1 der Wertigkeit 21 des 7-zu-3
CS Addierers aus 4.
-
Die
Verschaltung der einzelnen NAND-Gatter 30', 30'' der
drei Stufen 10.1-3 des Addierersubblocks ADD-Cl wird durch die in 6 angegebenen
Bezugszeichen erläutert.
Dabei bezeichnen NI0 bis NI6 die invertierten Eingänge I0 bis
I6. Dies ist im unteren linken Teil von 6 symbolisch
dargestellt.
-
7 zeigt
den Aufbau des Addierersubblocks ADD-C2 aus 4 gemäß dem ersten Ausführungsbeispiel
auf Gatterebene. Wiederum sind drei Stufen 10.1, 10.2 und 10.3 vorhanden.
Die erste Stufe 10.1 umfasst 35 NAND-Gatter 30''' mit
jeweils vier Eingängen,
die zweite Stufe 10.2 umfasst fünf
NAND-Gatter 30'' mit jeweils
sieben Eingängen und
die dritte Stufe 10.3 umfasst ein NAND-Gatter 30'''' mit fünf Eingängen. Die
Verschaltung der einzelnen Stufen 10.1, 10.2, 10.3 sowie die Belegung
der jeweils vier Eingänge
der NAND-Gatter 30''' der ersten Stufe 10.1 sind der 7 unter
Zuhilfenahme der Bezugszeichen zu entnehmen.
-
Es
wird deutlich, dass der in den 4 bis 7 erläuterte 7-zu-3 CS Addierer
mit lediglich drei Stufen auf (Logik-)Gatterebene eine Addition
von sieben Bits bewerkstelligen und durch die drei Ausgabebits s,
c1, c2 komplett darstellen kann.
-
Die 8 bis 10 zeigen
den Aufbau der in 4 dargestellten Addierersubblöcke ADD-S, ADD-C1
und ADD-C2 gemäß einem
zweiten erfindungsgemäßen Ausführungsbeispiel.
Dieses Ausführungsbeispiel
der Erfindung unterscheidet sich von dem zuvor beschriebenen Ausführungsbeispiel im
wesentlichen dadurch, dass die einzelnen Addierersubblöcke ADD-S,
ADD-C1 und ADD-C2 jeweils aus einer Mehrtransistorschaltung aufgebaut
sind, die nicht in einzelne Logiggatter zerlegbar ist. Die logischen
Funktionen dieser Mehrtransistorschaltungen werden durch den Schaltungsaufbau
auf Transistorebene bestimmt.
-
Die
Mehrtransistorschaltung des Addierersubblocks ADD-S wird mit MS,
die Mehrtransistorschaltung des Addierersubblocks ADD-C1 wird mit MC1
und die Mehrtransistorschaltung des Addierersubblocks ADD-C2 wird
mit MC2 bezeichnet.
-
Sämtliche
Mehrtransistorschaltungen MS, MC1 und MC2 weisen einen Knoten K1
auf, welcher mit einer Bezugsspannung vss verbunden ist. Ferner ist
ihnen gemeinsam, dass sie über
zwei Knoten K2 und K3 mit einer Treiberschaltung TR verbunden sind.
Der Treiberschaltung TR wird eine Betriebsspannung vdd zugeführt.
-
Eine
weitere Gemeinsamkeit besteht darin, dass sämtliche Mehrtransistorschaltungen
MS, MC1, MC2 zusätzlich
zu ihren jeweiligen Bit-Ausgängen
S bzw. C1 bzw. C2 auch (in 4 nicht
dargestellte) invertierte Bit-Ausgänge NS bzw. NC1 bzw. NC2 aufweisen.
Der Knoten K2 steht mit dem jeweiligen nicht invertierten Bit-Ausgang
S, C1, C2 in Verbindung und der Knoten K3 ist mit dem jeweiligen
invertierten Bit-Ausgang NS, NC1, NC2 verbunden.
-
Nach 8 umfasst
die Mehrtransitorschaltung MS insgesamt 26 N-Kanal-Transistoren,
die über
ihre Basis entweder mit den Eingängen
I0, ..., I6 oder den entsprechenden invertierten Eingängen NI0,
..., NI6 angesteuert werden.
-
Zwei
den Eingängen
I0/NI0 zugeordnete Transistoren N1_1, N1_2 liegen mit ihren Source-Anschlüssen an
der Bezugsspannung vss und speisen mit ihren Drain-Anschlüssen die
restliche Mehrtransistorschaltung MS. Diese weist für jeden
der Eingänge
I1/NI1, ..., I6/NI6 jeweils vier N-Kanal-Transistoren N2_1, ...,
N2_4 bzw. N3_1,..., N3_4 bzw. N4_1, ..., N4_4 bzw. N5_1, ..., N5_4
bzw. N6_1, ..., N6_4 bzw. N7_1, ..., N7_4 auf. Die Drain-Anschlüsse der
Transistoren Ni_1 und Ni_3 sind miteinander verbunden und stehen
mit den Source-Anschlüssen
der Transistoren N(i+1)_1 und N(i+1)_2 in Verbindung, und andererseits
sind die Drain-Anschlüsse
der Transistoren Ni_2 und Ni_4 miteinander verbunden und stehen
mit den Source- Anschlüssen der
Transistoren N(i+1)_3 und N(i+1)_4 in Verbindung, i = 1, ..., 6.
-
Ausgangsseitig
steht der Knoten K2 mit den Drain-Anschlüssen der Transistoren N7_2
und N7_4 in Verbindung und der Knoten K3 steht mit den Drain-Anschlüssen der
Transistoren N7_1 und N7_3 in Verbindung. Dabei werden die Transistoren
Ni_1 und Ni_4 jeweils nicht-invertiert und die Transistoren Ni_2
und Ni_3 jeweils invertiert von dem betreffenden Eingang angesteuert.
-
Nach 9 weist
die Mehrtransistorschaltung MC1 zwei den Eingängen I0/NI0 zugeordnete N-Kanal-Transistoren
N1_1 und N1_2, vier den Eingängen
I1/NI1 zugeordnete N-Kanal-Transistoren N2_1, ..., N2_4, sechs den
Eingängen
I2/NI2 zugeordnete N-Kanal-Transistoren N3_1, ..., N3_6, acht den
Eingängen
I3/NI3 zugeordnete N-Kanal-Transistoren N4_1, ..., N4_8, acht den
Eingängen
I4/NI4 zugeordnete N-Kanal-Transistoren N5_1, ..., N5_8, acht den
Eingängen
I5/NI5 zugeordnete N-Kanal-Transistoren
N6_1, ..., N6_8 und vier den Eingängen I6/NI6 zugeordnete N-Kanal-Transistoren
N7_1, ..., N7_4 auf. Die Transistoren Ni_j mit einem geraden Index
j werden invertiert angesteuert, während Transistoren mit einem
ungeraden Index j nicht-invertiert angesteuert werden.
-
Die
Source-Anschlüsse
der beiden Transistoren N1_1 und N1_2 stehen mit K1 in Verbindung. Die
Source-Anschlüsse
der Transistoren N2_1 und N2_2 sind mit dem Drain-Anschluss des
Transistors N1_1 verbunden, und die Source-Anschlüsse der Transistoren
N2_3 und N2_4 sind mit dem Drain-Anschluss des Transistors N1_2
verbunden. Die Source-Anschlüsse
der Transistor-Paare
N3_1, N3_2 bzw. N3_3, N3_4 bzw. N3_5, N3_6 sind mit den Drain-Anschlüssen der
Transistoren N2_1 bzw. N2_2 und N2_3 bzw. N2_4 verbunden.
-
Die
Source-Anschlüsse
der Transistor-Paare N4_1, N4_2 bzw. N4_3, N4_4 bzw. N4_5, N4_6
bzw. N4_7, N4_8 sind mit den Drain-Anschlüssen der Transistoren N3_1
bzw. N3_2 und N3_3 bzw. N3_4 und N3_5 bzw. N3_6 verbunden. Die Source-Anschlüsse der
Transistor-Paare N5_1, N5_2 bzw. N5_3, N5_4 bzw. N5_5, N5_6 bzw.
N5_7, N5_8 sind mit den Drain-Anschlüssen der Transistoren N4_1 und
N4_8 bzw. N4_2 und N4_3 bzw. N4_4 und N4_5 bzw. N4_6 und N4_7 verbunden.
Die Source-Anschlüsse
der Transistor-Paare N6_1, N6_2 bzw. N6_3, N6_4 bzw. N6_5, N6_6
bzw. N6_7, N6_8 sind mit den Drain-Anschlüssen der Transistoren N5_1 und
N5_8 bzw. N5_2 und N5_3 bzw. N5_4 und N5_5 bzw. N5_6 und N5_7 verbunden.
Die Source-Anschlüsse
der Transistoren N7_1 und N7_2 sind mit den Drain-Anschlüssen der
Transistoren N6_2 und N6_3 und die Source-Anschlüsse der Transistoren N7_3 und
N7_4 sind mit den Drain-Anschlüssen
der Transistoren N6_6 und N6_7 verbunden. Der Knoten K2 steht mit
den Drain-Anschlüssen
der Transistoren N7_2, N6_4 und N7_3 in Verbindung, und der Knoten K3
ist mit den Drain-Anschlüssen
der Transistoren N6_1, N7_1, N7_4 und N6_8 verbunden.
-
Nach 10 sind
bei der Mehrtransistorschaltung MC2 zwei N-Kanal-Transistoren N1_1, N1_2 den Eingängen I0/NI0
zugeordnet, vier N-Kanal-Transistoren N2_1, ..., N2_4 sind den Eingängen I1/NI1
zugeordnet, sechs N-Kanal-Transistoren N3_1, ..., N3_6 sind den
Eingängen
I2/NI2 zugeordnet, acht N-Kanal-Transistoren
N4_1, ..., N4_8 sind den Eingängen
I3/NI3 zugeordnet, sechs N-Kanal-Transistoren N5_1, ..., N5_6 sind
den Eingängen I4/NI4
zugeordnet, vier N-Kanal-Transistoren N6_1, ..., N6_4 sind den Eingängen I5/NI5
zugeordnet, und zwei N-Kanal-Transistoren
N7_1, N7_2 sind den Eingängen
I6/NI6 zugeordnet.
-
Bezüglich der
Transistoren Ni_j mit i = 1, 2, 3, 4 ist die Mehrtransistorschaltung
MC2 identisch mit der Mehrtransistorschaltung MC1.
-
Die
Source-Anschlüsse
der Transistor-Paare N5_1, N5_2 bzw. N5_3, N5_4 bzw. N5_5, N5_6
sind mit den Drain-Anschlüssen
der Transistoren N4_2 und N4_3 bzw. N4_4 und N4_5 bzw. N4_6 und N4_7 verbunden.
Die Source-Anschlüsse
der Transistor-Paare N6_1, N6_2 bzw. N6_3, N6_4 sind mit den Drain-Anschlüssen der
Transistoren N5_2 und N5_3 bzw. N5_4 und N5_5 verbunden. Die Source-Anschlüsse der
Transistoren N7_1 und N7_2 sind mit den Drain-Anschlüssen der
Transistoren N6_2 und N6_3 verbunden. Der Knoten K2 ist mit den Drain-Anschlüssen der
Transistoren N7_2, N6_4, N5_6 und N4_8 verbunden, und der Knoten
K3 steht mit den Drain-Anschlüssen
der Transistoren N4_1, N5_1, N6_1 und N7_1 in Verbindung. Auch hier
gilt, dass die Transistoren Ni_j mit einem geraden Index j invertiert
angesteuert werden, während
Transistoren mit einem ungeraden Index j nichtinvertiert angesteuert
werden.
-
Die
Schaltung gemäß der 4 und 8 bis 10 kann
je nach Ausführung
der Treiberschaltung TR auf zwei unterschiedliche Weisen betrieben
werden. Bei einer ersten Betriebsform, welche mit dem Begriff „dynamische
Schaltungstechnik" umrissen
wird, ist die Treiberschaltung TR als Aufladeschaltung ausgeführt, welche
vor einem Rechenvorgang die beiden Knoten K2 und K3 auf Betriebsspannung
vdd lädt.
Damit werden beide Ausgänge
S, NS bzw C1, NC1 bzw. C2, NC2 auf vdd vorgeladen. In dieser Vorladephase
müssen
die Mehrtransistorschaltungen MS, MC1, MC2 so angesteuert werden, dass
sie hochohmig sind, d.h. die Ausgänge gegen vss isolieren.
-
Nach
dem Aufladen der Knoten K2, K3 wird die Treiberschaltung TR hochohmig
geschaltet, d.h. die Knoten K2 und K3 werden von vdd getrennt.
-
In
einem nächsten
Schritt werden die Transistoren der Mehrtransistorschaltungen MS,
MC1, MC2 über
die Eingänge
I0/NI0, ..., I6/NI6 angesteuert, wodurch entsprechend der Bit-Belegung
der Eingänge
I0/NI0, ..., I6/NI6 partielle bzw. selektive Entladungspfade durch
die Mehrtransistorschaltungen MS, MC1, MC2 ausgebildet werden. Diese
bewirken die Signalerzeugung an dem Summen-Ausgang S und den Übertrags-Ausgängen C1 und
C2 sowie an den entsprechenden invertierten Ausgängen NS, NC1 und NC2 innerhalb
eines Entladezyklus.
-
Die
beschriebene Vorgehensweise gemäß der dynamischen
Schaltungstechnik weist einen minimalen Leistungsbedarf und kurze
Signallaufzeiten auf.
-
Eine
zweite Betriebsform der in den 4 und 8 bis 10 gezeigten
Schaltung besteht darin, einen zeitlich dauerhaften Stromfluss durch
die Schaltung vorzusehen. Die Treiberschaltung TR dient in diesem
Fall als Vorwiderstand, welcher kleiner als der Widerstand der jeweiligen
Mehrtransistorschaltung MS bzw. MC1 bzw. MC2 im sperrenden Zustand
sein muss. Bei dieser Variante können
ebenfalls kurze Signallaufzeiten erreicht werden, es tritt allerdings
eine höhere
Leistungsaufnahme als bei der ersten Variante auf. Vorteilhaft gegenüber der
ersten Variante ist jedoch die Tatsache, dass kurzzeitige Spannungsverluste
an Eingängen
I0/NI0, ..., I6/NI6 während
eines Rechenvorgangs kompensiert werden können, während dies bei der erstgenannten
Variante (dynamischen Schaltungstechnik) aufgrund der dort auftretenden
irreversiblen Entladevorgänge nicht
möglich
ist. Diese bei der zweiten Variante gegebene Möglichkeit der „Berichtigung" eines durch Störungen bzw.
Spannungsabfälle
verfälschten
Berechnungsergebnisses innerhalb eines Rechenzyklus kann einen Vorteil
der zweiten Variante gegenüber
der aufgrund der transienten Entladeströme leistungsaufnahmeärmeren ersten
Variante darstellen.
-
Sofern
eine größere Anzahl
von Bits gleicher Wertigkeit zu addieren sind, kann der 7-zu-3 CS
Addierer in ähnlicher
Weise wie der 3-zu-2 CS Addierer in einem Wallace-Tree (siehe 1)
kaskadiert werden. 11 zeigt einen Ausschnitt eines
Schaltungsbeispiels für
einen übertragserhaltenden
Addierer, welcher aus einem Array aus 7-zu-3 CS Addierern aufgebaut
ist. Der in 11 dargestellte Addiererausschnitt
ermöglicht
die Addition von 15 Dualzahlen Z1, Z2, ..., Z15 mit jeweils fünf Dualstellen
unterschiedlicher Wertigkeit. Die Bits gleicher Wertigkeit der Dualzahlen
Z1, Z2, ..., Z15 sind in den Spalten S0, S1, ..., S4 eingetragen.
Jede Spalte S0, S1, ..., S4 enthält
also einen Bit-Satz bestehend aus 15 Bits derselben Wertigkeit.
-
Unterhalb
jeder Spalte S0 bis S4 sind die zugehörigen Bit-Satz-Addierer dargestellt. Jeder Bit-Satz-Addierer
umfasst in dem dargestellten Addiererausschnitt jeweils drei 7-zu-3
CS Addierer. Die zur Addition des Bit-Satzes der Spalte S0 vorgesehenen
7-zu-3 CS Addierer sind mit B0.1, B0.2, B0.3 bezeichnet, und in
analoger Notation sind die den Spalten S1 bis S4 zugeordneten Addiererblöcke mit
B1.1, B1.2, B1.3; B2.1, B2.2, B2.3; B3.1, B3.2, B3.3 und B4.1, B4.2,
B4.3 bezeichnet.
-
Von
den 15 Bits einer jeden Spalte n, n = 0, 1, ..., 4, werden 7 Bits
den Eingängen
i0, i1, ..., i6 des ersten 7-zu-3 CS Addierers Bn.1 zugeleitet,
weitere vier Bits werden vier Addierer-Eingängen (hier bezeichnet als i7,
i8, i9, i10) des 7-zu-3
CS Addierers Bn.2 der zweiten Stufe zugeleitet, und die letzten
vier Bits eines Bit-Satzes werden jeweils vier Eingängen (hier
mit dem Bezugszeichen i11, i12, i13, i14 bezeichnet) des 7-zu-3
CS Addierers Bn.3 der dritten Stufe zugeführt.
-
Zur
Berücksichtigung
der Überträge sind 7-zu-3
CS Addierer benachbarter Stufen diagonal verschaltet. So ist der Übertrags-Ausgang
c1 des 7-zu-3 CS Addierers B0.1 (welcher der ersten Stufe angehört) mit
einem Eingang des in der zweiten Addiererstufe angeordneten 7-zu-3
CS Addierers B1.2 nächst
höherer
Wertigkeit verschaltet. Der Übertrags-Ausgang
c2 des 7-zu-3 CS Addierers B0.1 ist mit einem Eingang des 7-zu-3
Addiererblocks B2.2 verbunden. Der 7-zu-3 CS Addierer B2.2 gehört ebenfalls
der zweiten Addiererstufe an, ist jedoch der Spalte S2 zugeordnet,
d.h. addiert Bits einer um den Faktor 2 höheren Wertigkeit als der 7-zu-3
CS Addierer B1.2.
-
Dieses
Prinzip der zweifachen Diagonalverschaltung zwischen benachbarten
Stufen unter Berücksichtigung
von zwei Überträgen unterschiedlicher
Wertigkeit spiegelt sich auch bei der Verschaltung der 7-zu-3 CS
Addierer der zweiten und der dritten Stufe wieder. An den Ausgängen s,
c1, c2 der 7-zu-3 CS Addierer Bn.3 der dritten Stufe werden jeweils
das Summen-Bit s und die beiden Übertrags-Bits
c1, c2 unterschiedlicher Wertigkeit ausgegeben. Allgemein ergibt
sich die Regel, dass ein 7-zu-3 CS Addierer Bn.m der n-ten Spalte
und m-ten Stufe des Arrays eingangsseitig mit dem Übertrags-Ausgang
c1 des 7-zu-3 CS Addierers B(n-1).(m-1) und mit dem Übertrags-Ausgang
c2 des 7-zu-3 CS Addierers B(n-2).(m-1) verschaltet ist.
-
Sofern
der übertragserhaltende
Addierer für die
Addition von mehr als 15 Dualzahlen ausgelegt sein soll, kann sich
die in 11 veranschaulichte Stufenstruktur
zu höheren
Stufen hin fortsetzen. Andernfalls können in abschlieflenden 3-Bit-Addierern (nicht
dargestellt) die jeweiligen Spalten-Summen aus dem Summen-Bit s,
dem Übertrags-Bit
c1 der nächst
niedrigeren Wertigkeit und dem Übertrags-Bit c2
der übernächst niedrigeren
Wertigkeit ermittelt und ausgegeben werden.
-
Die
Rechenzeit eines einzelnen 7-zu-3 Addierers ist implementierungsabhängig. Ohne
die konkrete Gatter-Implementierung eines 7-zu-3 CS Addierer betrachten
zu müssen
(hierfür
sind wie durch die Ausführungsbeispiele
angedeutet eine Reihe verschiedener Möglichkeiten vorhanden), ergibt
sich eine Verkürzung
der Gesamt-Rechenzeit bereits aus der Tatsache, dass in jeder Stufe
und jedem 7-zu-3 CS Addierer der Stufe stets zwei Überträge unterschiedlicher
Wertigkeit gleichzeitig erzeugt werden. Dies entspricht einer inhärenten Teil-Parallelisierung des
Rechenablaufs, da eine stufenweise strikt sequentielle Ermittlung
von einzelnen Überträgen durch eine
stufenweise paarweise Übertragsermittlung
ersetzt wird. Im Zusammenhang mit der Tatsache, dass ein 7-zu-3
CS Addierer mit zwei Übertrags-Bits
unterschiedlicher Wertigkeit den Wertebereich seines Ausgangs vollständig ausschöpft, begründet dies die besondere
Eignung des 7-zu-3 CS Addierers als Basiselement in Addierer-Kaskaden
vielfältiger
Bauart.
-
12 zeigt
eine schematische Darstellung eines 64x64 Bit Multiplizierers. Der
Multiplizierer basiert auf der Addition der Partialprodukte, welche
sich bei der Multiplikation eines Multiplikants M1 mit jeweils einer
bestimmten Stelle eines Multiplikators M2 ergeben. Die Partialprodukte
P1, P2, ..., P32 sind in 12 jeweils
um zwei Stellen versetzt zueinander dargestellt. Der Multiplikator
M2 ist dabei nach dem Booth-Algorithmus codiert, bei welchem die
Bits des Multiplikators M2 in Paaren zusammengefaßt sind. Der
Vorteil des Booth-Algorithmus besteht bekanntermaßen darin,
dass sich durch die Codierung des Multiplikators M2 die Anzahl der
benötigten
Addiererstufen zur Addition der Partialsummen halbiert. Die maximale
Anzahl der zu addierenden Bits beträgt 33 Bits. Das 33. Bit ist
ein Korrektur-Bit, das bei der eventuellen Subtraktion einer Dualzahl
im Zweierkomplement hinzuaddiert werden muß (das Zweierkomplement einer
Dualzahl ergibt sich bekanntermaßen durch Negation aller Stellen
und Addition des Korrektur-Bits 1).
-
13 veranschaulicht
in schematischer Weise die Stufenstruktur eines herkömmlichen WT-Addierers
mit 3-zu-2 CS Addierern zur Addition von 33 Bits gleicher Wertigkeit.
In der Darstellung sind die Eingangs-Bits einer jeden Stufe als
Kästchen-Säule dargestellt.
Jedes Kästchen
entspricht einem Eingabe-Bit. Schraffiert dargestellte Eingabe-Bits
werden nicht in der entsprechenden Stufe verarbeitet sondern direkt
der nächsten
Stufe zugeleitet. Da ein WT-Addierer in jeder Stufe Übertrags-Bits
von einem benachbarten (nicht dargestellten) WT-Addierer nächst kleinerer
Wertigkeit entgegennimmt und gleichermaßen Übertrags-Bits für einen
(nicht dargestellten) WT-Addierer nächst höherer Wertigkeit ausgibt, – siehe 1 – ist 13 nicht als
Schaltbild, sondern allein als Stufenbilanz-Darstellung zu verstehen.
-
13 macht
deutlich, dass insgesamt neun Stufen zur Addition der 33 Bits benötigt werden.
Die erste Stufe weist 11 3-zu-2
CS Volladdierer auf und die nachfolgenden 7 Stufen enthalten 7,
5, 3, 2, 1, 1, 1 3-zu-2 CS Volladdierer. Die letzte Stufe enthält einen
3-zu-2 Volladdierer, der als 2-Bit Carry-Ripple (CR) Addierer ausgeführt ist,
das heißt
ein Übertrags-Bit von einem 3-zu-2
CR Addierer der letzten Stufe des benachbarten Bit-Satz-Addierers
(nicht dargestellt) empfängt.
-
Der
in der letzten Stufe des Bit-Satz-Addierers (Addiererbaums) eingesetzte
3-zu-2 CR Addierer unterscheidet sich von den 3-zu-2 CS Addierern des
WT-Addierers dadurch, dass einer seiner drei Eingänge speziell
für das
CR Übertrags-Bit
vorgesehenen und zeitlich optimiert ist. Der Grund hierfür besteht
darin, dass das CR Übertrags-Bit
sequentiell sämtliche
Addierer der Ausgabestufe des Addiererbaums (d.h. durch die CR 3-zu-2 Addierer) hindurch prozessiert
werden muß und
daher die Rechengeschwindigkeit des gesamten Addiererbaums limitiert. Die
logische Funktionalität
von CS und CR Addierern ist indes dieselbe.
-
14 zeigt
ein der 13 entsprechendes Stufendiagramm
eines erfindungsgemäßen Bit-Satz-Addierers
zum Addieren von 33 Bits gleicher Wertigkeit. Im Gegensatz zu 13 weist
der erfindungsgemäße Bit-Satz-Addierer
lediglich 5 Stufen auf. Die ersten drei Stufen umfassen 5, 2 und
1 7-zu-3 CS Addierer. Die 4. Stufe besteht aus einem 3-zu-2 CS Addierer.
Die letzte (5.) Stufe ist wiederum als 3-zu-2 CR Addierer aufgebaut.
-
Aus
den 13 und 14 wird
deutlich, dass durch die Verwendung von 7-zu-3 CS Addierern die
Anzahl der Stufen in einem Bit-Satz-Addierer (d.h. einem Addierer,
der Bits gleicher Wertigkeit summiert) im Vergleich zum herkömmlichen
Aufbau deutlich verringert werden kann.