-
Die
vorliegende Erfindung bezieht sich auf Rechenwerke und insbesondere
auf sichere und schnelle Rechenwerke, wie sie in Kryptographie-Prozessoren
und insbesondere in Addiererschaltungen für Kryptographieprozessoren
einsetzbar sind.
-
Die
DE 3631992 C2 offenbart
einen Kryptographieprozessor zum Durchführen des RSA-Public-Key-Kryptosystems.
Hierbei wird eine modulare Exponentiation mit einer Basis, einem
Exponenten und einem Modul in eine Vielzahl von Drei-Operanden-Additionen zerlegt.
Die drei Operanden umfassen einen Moduloperanden N, einen Multiplikanden-Operanden
C und einen Zwischenergebnis-Operanden Z. Durch entsprechende Verschiebung/Gewichtung
der drei Operanden vor der Addition kann eine durch einen Multiplikations-Look-Ahead-Algorithmus
und einen Reduktions-Look-Ahead-Algorithmus beschleunigte Multiplikation/Reduktion
durchgeführt
werden.
-
7 zeigt
einen Ausschnitt aus dem Addierwerk, das gewissermaßen das
Herz des Kryptographieprozessors darstellt, der in der
DE 3631992 C2 dargestellt
ist. Im einzelnen zeigt
7 zwei aufeinanderfolgende Bit-Slices,
um die zwei Summenbits i-1 und i zu berechnen, und zwar aus den
drei Eingangsoperandenbits C
i, N
i, Z
i bzw. C
i-1, N
i-1, Z
i-1 bzw. aus C
i-2,
N
i-2 und Z
i-2.
-
Die
Drei-Operanden-Addition von C, N, Z wird, auf Bitebene betrachtet,
in eine zweistufige Operation zerlegt. Zur Ausführung der ersten Stufe der
Operation ist ein Drei-Bit-Halbaddierer 80 vorgesehen,
wobei jedem Drei-Bit-Halbaddierer 80 ein Zwei-Bit-Volladdierer 81 nachgeschaltet
ist. Der Drei-Bit-Halbaddierer
liefert zwei Ausgangsbits xi, yi, wobei
die Ausgangsbits xi, yi in
die nachgeschalteten Zwei-Bit-Volladdierer
so eingespeist werden, wie es in 7 darge stellt
ist. Im einzelnen wird in jedem Zwei-Bit-Volladdierer eines Bit-Slices
das niederwertige Bit yi am Ausgang des
Drei-Bit-Halbaddierers mit dem hochwertigen Bit der um eine Ordnung
niedrigeren Drei-Bit-Halbaddiererstufe (xi-1)
in dem Zwei-Bit-Volladdierer 81 kombiniert, um ein Summenbit 82 sowie
ein Übertragbit 83 zu
berechnen. Die Drei-Operanden-Addition
wird also in zwei Abschnitte unterteilt. Im ersten Abschnitt wird
an jeder binären
Stelle eine Summe der drei Bits der Operanden gebildet. Die Summe
kann die Werte von 0 bis 3 (in Dezimaldarstellung) annehmen. Die
Summe ist also binär
mit den zwei Bits x, y darstellbar. Da die Summe an jeder Stelle
gebildet wird, können
aus den zwei Summenbits zwei neue Zahlen zusammengestellt werden.
-
Im
zweiten Abschnitt werden die beiden Zahlen auf übliche Art und Weise durch
den Zwei-Bit-Volladdierer 81 addiert. Die Verschaltung, derart,
dass ein Zwei-Bit-Volladdierer immer zwei Ausgangsbits von zwei
unterschiedlichen Drei-Bit-Halbaddierern
als Eingabe erhält,
führt zu
einer Verlängerung
des Rechenwerks um ein Bit.
-
Der
in 7 gezeigte Drei-Operanden-Addierer ist dahingehend
problematisch, dass weder eine Sicherung der Eingangsoperanden C,
N, Z noch eine Sicherung der "Zwischenoperanden" x, y vorgesehen
ist. Dies ist dahingehend problematisch, dass besonders in dem normalen
Fall, in dem alle Schaltungen in CMOS-Logik ausgeführt sind,
das Umschalten eines Bits von 0 auf 1 bzw. von 1 auf 0 zu einem
Stromimpuls führt,
der beginnt, wenn ein Bit-Zustand umgeschaltet wird. Bekanntlich
verbrauchen CMOS-Schaltungen im statischen Zustand keinen Strom.
Im Umschaltzustand haben sie jedoch einen Stromverbrauch. Dieser
Stromverbrauch ist durch eine Leistungsanalyse eruierbar. Damit
ist es grundsätzlich
möglich,
Informationen über
C, N, Z abzuleiten, um beispielsweise auf den geheimen Schlüssel Rückschlüsse zu ziehen,
der in einer RSA-Operation verwendet
wird.
-
Ein
Angreifer könnte
beispielsweise durch Aufnahme des Stromprofils ermitteln, ob eine
Umschaltung von 0 auf 1 oder von 1 auf 0 stattgefunden hat. Bei
einer ungesicherten Schaltung würde
immer dann eine Umschaltung eines Bits auftreten, wenn im Stromprofil
eine Stromspitze erkennbar ist. Ein Angreifer kann daher das gesamte
Umschaltverhalten eines Rechenwerks anhand des Stromprofils nachvollziehen.
Der Angreifer bräuchte
dann lediglich noch ein einziges Bit in einer ganzen Sequenz, um daraus
rekonstruieren zu können,
ob die Umschaltung von einer "1" auf eine "0" oder umgekehrt stattgefunden hat.
-
Bestimmte
CMOS-Schaltungen haben ferner die Eigenschaft, dass die Umschaltung
von 0 auf 1 einen anderen Stromverbrauch mit sich zieht als die Umschaltung
von 1 auf 0. In diesem Fall sieht ein Angreifer durch einen Vergleich
von zwei unterschiedlichen Stromspitzen unmittelbar, welche Bits
im Rechenwerk verarbeitet worden sind.
-
Als
Abwehrmaßnahme
gegen solche Leistungsanalyseangriffe wurde vorgeschlagen, eine
sogenannte Dual-Rail-Technik einzusetzen. Bei der Dual-Rail-Technik
wird prinzipiell betrachtet jeder Signalweg doppelt ausgeführt. Auf
dem ersten Signalweg wird beispielsweise ein Signal x normal verarbeitet.
Auf dem zweiten, in demselben Chip integrierten, Signalweg wird
nicht das Signal x verarbeitet, sondern das komplementäre Signal x. Dies führt dazu, dass immer dann,
wenn in der Signalleitung ein Übergang
von beispielsweise 0 auf 1 stattfindet, in der anderen Leitung,
also der zweiten "Rail", ein komplementärer Übergang
stattfindet. Für
jeden Bitübergang
finden daher auf beiden Leitungen immer beide Übergänge statt. Dies führt dazu,
dass für
Schaltungen, bei denen Übergänge von
0 auf 1 und 1 auf 0 unterschiedlich viel Strom brauchen, nicht mehr
eruierbar ist, ob ein Übergang
von 0 auf 1 oder von 1 auf 0 stattgefunden hat. Dies liegt daran,
dass das Stromprofil für
jeden Schaltungsübergang
eine Spitze enthält,
die die Überlagerung
des Stromverbrauchs der beiden Rails ist. Die Dual-Rail-Technik
liefert eine hohe Sicherheit, jedoch mit dem Nachteil, dass alle Schaltungen
normalerweise doppelt ausgeführt
werden müssen
und dass der Leistungsverbrauch der gesamten Schaltung ebenfalls
doppelt so hoch ist. Dafür
ist die Schaltung jedoch bereits in gewissem Umfang gegenüber Leistungsanalyseattacken
immun.
-
Wird
lediglich eine Dual-Rail-Technik eingesetzt, so ist anhand des Stromprofils
immer noch zu erkennen, ob ein bestimmtes Bit von 0 auf 1 bzw. von 1
auf 0 übergegangen
ist oder im Vergleich zum vorigen Taktzyklus gleichgeblieben ist.
Im Falle eines Bitübergangs
ist nämlich
eine Leistungsspitze ersichtlich. Die Leistungsspitze ist jedoch
nicht ersichtlich, wenn ein Bit von einem Zyklus zum nächsten beispielsweise
auf 1 oder auf 0 geblieben ist, sich also nicht verändert hat.
Zur Abwehr von Angriffen, die auf diesem Effekt basieren, wurde
vorgeschlagen, die Dual-Rail-Technik um einen Precharge/Predischarge-Modus
zu ergänzen.
Die Schaltung wird abwechselnd in einem Datenmodus und einem Vorbereitungsmodus
(Precharge/Predischarge) betrieben. Jedem Datenzyklus geht ein Vorbereitungszyklus
voraus, in dem im Falle von Precharge beide Rails, also beispielsweise
x und x auf "1" vorgeladen werden, um dann, in dem
Datenmodus, zu verarbeitende komplementäre Eingangssignale in die beiden
Rails zu speisen. Dies führt
dazu, dass immer, von einem Datenzyklus zu einem Vorbereitungszyklus
oder von einem Vorbereitungszyklus zu einem Datenzyklus, genau die
gleiche Anzahl von Obergängen
stattfindet. Ist der Vorbereitungsmodus als Predischarge-Modus ausgeführt, so
werden im Vorbereitungsmodus alle Eingangsdaten nicht, wie im Precharge, auf
1 initialisiert, sondern auf 0 "vorentladen". Dann findet ebenfalls
von einem Vorbereitungszyklus zu einem Datenzyklus und umgekehrt
genau dieselbe Anzahl von Übergängen statt.
-
Wie
es bereits ausgeführt
worden ist, wird für die
Ausführung
von modularen Operationen, wie z. B. Addition oder Multiplikation,
beispielsweise im Rahmen kryptographischer Algorithmen, wie RSA
oder elliptische Kurven, ein Drei-Operanden- Addierer benötigt. Diese Operationen müssen aus
den verschiedenen Gründen
vom Addierwerk sicher gegenüber Power-Attacken
ausgeführt
werden. Da kryptographische Berechnungen äußerst rechenaufwendig sind,
muss das Addierwerk eine hohe Leistung haben. Da insbesondere in
der Kryptographie lange Operanden verarbeitet werden müssen, wobei
die Operandenlänge
bei elliptischen Kurven im Bereich zwischen 100 und 200 Bits liegt
und im Bereich von RSA zwischen 1.024 und 2.048 Bits liegt, hat
das Rechenwerk selbst eine große
Bitlänge,
um die an das Rechenwerk gestellten Anforderungen nach Schnelligkeit
zu erreichen.
-
Um
das in 7 gezeigte Rechenwerk, das ausschnittweise zwei
Bit-Slices eines größeren Rechenwerks
mit beispielsweise 2300 Bit-Slices zeigt, gegenüber kryptographischen Attacken
sicherer zu machen, ist es zunächst
erforderlich, die Eingangsoperanden C, N, Z in Dual-Rail-Technik
den 3-Bit-Halbaddierern 80 zuzuführen.
-
Eine
noch bessere Sicherheit besteht darin, nicht nur eine Dual-Rail-Technik
anzuwenden, sondern eine Dual-Rail-Technik mit Precharge bzw. Pre-Discharge
zu verwenden. Hierbei wechselt immer ein Datentakt mit einem sogenannten
Vorbereitungstakt ab. In einem Datentakt ist beispielsweise das
Bit Ci gleich 0 oder 1, während das
komplementäre
Bit, das auf der "zweiten
Rail" zugeführt wird, und
mit C i bezeichnet
wird, komplementär
zu dem Bit Ci ist. In einem dem Datentakt
nachgeordneten Vorbereitungstakt wird im Falle eines Precharge als
Vorbereitungsmodus eine Aufladung beider Leitungen auf z. B. Vdd
durchgeführt,
was beispielsweise dem logischen Zustand "1" entsprechen
könnte.
Beide Dual-Rail-Leitungen haben im Vorbereitungsmodus somit den
gleichen Wert. Im Falle eines Discharge könnten beide Leitungen Ci und C i auf das Potential Vss gebracht werden,
das typischerweise das Erdungspotential ist, wobei das Erdungspotential
bei dem vorliegenden Beispiel einer logischen "0" entspricht.
Selbstverständlich
kann Vss auch einer logischen "1" entsprechen. Dann
würde Vdd
einer logischen "0" entsprechen.
-
Konsequenterweise
müssten
dann die Bits xi und yi bzw.
xi-1 und yi-1 ebenfalls
in Dual-Rail-Technik mit Precharge zu den entsprechenden nachgeschalteten
2-Bit-Volladdierern 81 zugeführt werden, wobei wieder immer
ein Datentakt einem Vorbereitungstakt folgt. Ausgangsseitig würden dann
die Übertragbits
C 83 und die Summenbits 82 ebenfalls in Dual-Rail-Technik mit Precharge/Pre-Discharge
aus dem 2-Bit-Volladdierer
herausgeführt
werden.
-
So
genügt
es jedoch für
eine optimale Sicherheit nicht nur, dass die Eingangsleitungen in
die Elemente 80 und 81 und die Ausgangsleitungen
aus den Elementen 80 und 81 in Dual-Rail-Technik ausgeführt sind.
Statt dessen ist es ferner wichtig, dass auch die Schaltungen 80, 81 selbst
als Dual-Rail-Schaltungen
ausgeführt
sind. Dies kann dadurch erreicht werden, dass der 3-Bit-Halbaddierer 80 und
jeder 2-Bit-Volladdierer 81 doppelt
vorhanden ist und so ausgebildet ist, dass der erste 3-Bit-Halbaddierer 80 beispielsweise
mit den nicht-invertierten Operandenbits Ci,
Ni und Zi rechnet, um
xi und yi zu erhalten.
Der zweite 3-Bit-Halbaddierer 80 für denselben Bit-Slice würde dann
mit den invertierten Bits C i, N i und Z i arbeiten, um z. B. die invertierten Ausgangsbits x i und y i zu
erhalten. Selbstverständlich
sind jegliche Kreuzkombinationen denkbar, so dass der erste 3-Bit-Halbaddierer
so ausgebildet ist, um aus den nicht-invertierten Eingangsbits die invertierten
Ausgangsbits zu berechnen und umgekehrt.
-
Dasselbe
müsste
für den
2-Bit-Volladdierer 81 durchgeführt werden, um eine optimal
sichere Schaltung in einem Bit-Slice eines Langzahlrechenwerks für eine RSA-Berechnung
mit Modullängen von
1024 Bits, 2048 Bits etc. zu erreichen. Solche Rechenwerke werden
zur Ausführung
von modularen Operationen, wie z. B. Addition und Multiplikation, beispielsweise
im Rah men kryptographischer Algorithmen wie RSA oder elliptische
Kurven benötigt. Eine
3-Operanden-Addition, die der 3-Operanden-Addierer,
der in 7 ausschnittweise gezeigt ist, ausführt, besteht
darin, einen ersten Summand C zu einem zweiten Summand Z hinzu zu
addieren, und schließlich
den Modul N je nach Look-Ahead-Vorschrift zu addieren oder zu subtrahieren.
Diese Operationen müssen,
wie es ausgeführt
worden ist, vom Addierwerk sicher gegenüber Power-Attacken ausgeführt werden.
-
Es
ist unmittelbar einsichtig, dass kryptographische Berechnungen äußerst rechenaufwendig sind.
Daher besteht neben der Sicherheit auch die Anforderung an das Rechenwerk,
dass es eine hohe Leistung hat, dahingehend, dass es möglichst
wenig Rechenzeit benötigt
bzw. im Falle von begrenzten Ressourcen, wie beispielsweise auf
einer Chipkarte, noch mit einer erträglichen Rechenzeit hochsichere Operationen
ausführen
kann.
-
Da
die Arithmetik kryptographischer Operationen eine Langzahlarithmetik
ist, hat, wie es ausgeführt
worden ist, das Rechenwerk selbst eine große Bitlänge, um überhaupt eine geforderte Leistung
zu erreichen. So wird davon ausgegangen, dass jeder Bit-Slice einer
Stelle eines Moduls entspricht, dahingehend, dass alle Stellen in
entsprechende Hardware-Bit-Slices "abgebildet" sind. Lediglich
diese maximal parallele Ausführung
garantiert in den meisten Fällen
eine ausreichende Performance.
-
Im
Hinblick auf die geforderte maximale Parallelität und andererseits im Hinblick
auf die Kosten für
den Chip, der ein solches Rechenwerk umfasst, und auch im Hinblick
auf andere an die Chipfläche angelegten
Begrenzungen ist es zwingend notwendig, das Rechenwerk sehr flächensparend
zu entwerfen. Es wird also prinzipiell ein Rechenwerk benötigt, das
eine hohe Leistung hat, das außerdem
sicher ist, und das eine minimale Fläche benötigt.
-
Das
deutsche Patent
DE
10307942 B3 offenbart einen Halbaddierer zum Addieren von
Bits von wenigstens zwei Eingangsoperanden, um wenigstens zwei Ausgabebits
zu erhalten. Der Halbaddierer umfasst neben einer Eingangsstufe
eine Mehrzahl von Schaltstufen, und jeder Schaltstufe nachgeordnet
eine Ausgangsstufe. In einem Datenmodus sind die Schaltstufen betreibbar,
um entweder ein Bit oder ein invertiertes Bit an einem Ausgang zu
der Ausgangsstufe zu liefern, die einer entsprechenden Schaltstufe
nachgeordnet ist. Die Ausgangsstufe ändert dann auf der Basis des
von der entsprechenden Schaltstufe erhaltenen Bits ein Ausgabebit
gegenüber
einem vorausgehenden Vorbereitungsmodus und ergänzt das komplementäre Bit aus
dem vorausgehenden Vorbereitungsmodus. Diese Halbaddiererschaltung
ist bereits flächeneffizient,
da sie ohne eine komplette Dual-Rail-Logik auskommt und dennoch sicher
gegenüber
kryptographischen Attacken ist. Insbesondere sind die Eingangsstufe
und die Ausgangsstufen in kompletter Dual-Rail-Schaltungstechnik mit Precharge oder
Pre-Discharge ausgebildet, während
die Schaltstufen für
die einzelnen Bits derart ausgebildet sind, dass sie gemäß einer
Halbaddierervorschrift für
das Ausgabebit abhängig
von den Bits der Eingangsoperanden ein Rechenpotential an den Ausgang
der Schaltstufe durchschalten, wobei das Rechenpotential an dem
Ausgang das Ausgabebit oder eine invertierte Version des Ausgabebits
darstellt. Diese Schaltstufe ist nicht in Dual-Rail-Technik ausgebildet,
sondern arbeitet gemäß einer „One-Hot"-Realisierung.
-
Obgleich
diese Schaltung bereits flächeneffizient
ist, da die Schaltstufen nicht in kompletter Dual-Rail-Logik implementiert
ist, und obgleich diese Schaltung dahingehend energieeffizient ist,
dass die Schaltstufe jeweils nur entweder das invertierte Bit oder
das Bit selbst berechnet, also keinen Stromverbrauch für beide
Bits hat, hat sich dennoch herausgestellt, dass es Probleme beim Übergang
von einem Vorbereitungsmodus auf einen Datenmodus geben kann.
-
So
schaltet die Schaltstufe je nach Belegung ihrer Eingänge zwei
VDD-Pfade auf das Bit oder das invertierte Bit BitQ ihrer beiden
Ausgänge
durch, sodass sich eine logisch gültige Zahl als Resultat ergibt. Allerdings
hat die Schaltstufe aufgrund ihrer speziellen One-Not-Realisierung
interne Knoten, die im Vorbereitungsmodus, also wenn eingangsseitig
und ausgangsseitig ein Precharge-Betrieb oder ein Pre-Discharge-Betrieb vorliegt,
abgekoppelt sind, also gewissermaßen floaten. War ein solcher
interner Knoten im vorausgehenden Datenmodus auf einem hohen Potential,
also aufgeladen, so wird er seine Ladung aufgrund der Tatsache,
dass er im Vorbereitungsmodus floatend ist, nicht automatisch und
sofort verlieren. Dadurch kann es passieren, dass z. B. auf die
Bitleitung eines der Ergebnisbits ein VDD-Pfad geschaltet wird und
auf das invertierte Bit desselben Ergebnisbits eine interne Restladung,
die der floatende Knoten hat, geschaltet wird.
-
Dadurch
kommt es zu einer Situation, in der das getriebene Bit zunächst gegen
die Restladung auf BitQ ankämpfen
muss. Hier fließt
ein Querstrom, und die Schaltung wird langsamer als notwendig.
-
Ferner
hat sich herausgestellt, dass durch unvermeidliche Koppelkapazitäten dieser
Effekt sogar erheblich verstärkt
werden kann, sodass unter besonders ungünstigen Bedingungen nicht das
getriebene Bit, sondern die Restladung gewissermaßen gewinnt
und das getriebene Bit „umdreht". Dies führt sogar
dazu, dass das berechnete Resultat falsch ist.
-
Die
DE 10 215 785 A1 offenbart
ein Rechenwerk und ein Verfahren zum Addieren, wobei das Rechenwerk
mehrere Addiererblöcke
mit Einzeladdierern, einen Taktgenerator und eine Steuereinrichtung aufweist.
Jeder Addiererblock hat ferner eine Übertrag-Durchlaufeinrichtung,
die bestimmt, ob ein Übertrag
einen entsprechenden Addiererblock vollständig durchläuft oder nicht. Das Rechenwerk
kann entweder mit einem normalen Takt laufen oder wird dann, wenn
ein Panik-Signal
erzeugt wird, das darauf hinweist, dass ein Übertrag einen Addiererblock
vollständig
durchlaufen wird, verlangsamt, wobei im Falle von Panik-Signalen
zweier benachbarter Addiererblöcke
das Rechenwerk noch stärker
verlangsamt wird.
-
Die
DE 32 280 180 C2 offenbart
ein Schlüsselsystem
für die
RSA-Kryptographie, das zum Ermitteln einer verschlüsselten
oder entschlüsselten Nachricht
aus einer unverschlüsselten
bzw. einer verschlüsselten
Nachricht vorgesehen ist. Hierzu ist eine Hauptaddiereinheit, eine
Quotientenberechnungseinheit, ein Vorverarbeitungsabschnitt mit
einem Festspeicher und ein Nachverarbeitungsabschnitt mit einem
Multiplizierer, einem Addierer und einem weiteren Multiplizierer
und eine Zuordnungseinrichtung vorgesehen.
-
Die
Aufgabe der vorliegenden Erfindung besteht darin, ein schnelles
und sicheres Rechenwerk zu schaffen.
-
Diese
Aufgabe wird durch ein Rechenwerk gemäß Patentanspruch 1 gelöst.
-
Der
vorliegenden Erfindung liegt die Erkenntnis zugrunde, dass solche
internen Knoten, die im Vorbereitungsmodus weder mit einem Potential
von der Eingangsstufe noch mit einem Potential von der Ausgangsstufe
gekoppelt sind, im Vorbereitungsmodus nicht in ihrem floatenden
Zustand gelassen werden dürfen,
sondern kontrolliert werden müssen.
Erfindungsgemäß wird daher
eine Knotenpotentialschaltung vorgesehen, die ausgebildet ist, um
im Vorbereitungsmodus die internen Knoten mit einem Bezugspotential
zu koppeln.
-
Bei
einem bevorzugten Ausführungsbeispiel ist
das Bezugspotential das Massepotential bzw. Vss, so dass die internen
Knoten innerhalb der Schaltstufe statt in ihrem bisherigen floatenden
Zustand nunmehr definiert entladen werden. Dies führt dazu,
dass sie ihre Ladung definiert abgeben und damit für den nächsten Datenmodus
optimal vorbereitet sind. Wenn nämlich
im Datenmodus ein Bit getrieben wird, so muss es nicht gegen eine
auf dem komplementären
Bit vorhandene Restladung ankämpfen, sondern
hat freie Bahn.
-
Damit
wird zum einen der Querstrom vermieden. Zum anderen kann eine solche
Schaltung schneller getaktet werden, da beim Takten der Schaltung
nicht mehr auf Zeiten Rücksicht
genommen werden muss, die ansonsten benötigt wurden, dass sich ein
stabiler Zustand einstellt, dass also das getriebene Bit gegen die
Restladungen erfolgreich vorgegangen ist. Ferner wird auf jeden
Fall sicher gestellt, dass nicht aufgrund des beschriebenen Koppelkapazitäteneffekts
ein falsches Ergebnis erhalten wird.
-
Das
erfindungsgemäße Konzept
führt somit zu
einem Rechenwerk, das keine reduzierte Performance-Einbuße, keinen
Querstrom und keine mangelnde Betriebssicherheit mehr hat. Das erfindungsgemäße definierte
Behandeln der internen Bits hat ferner einen weiteren wesentlichen
Sicherheitsvorteil. So wird erfindungsgemäß durch das Koppeln der inneren
Knoten mit einem Bezugspotential sichergestellt, dass der innere
Zustand der Schaltstufe in jedem Zyklus gleich eingestellt wird.
Dies führt
zu einer völligen
Unabhängigkeit
des Stromprofils von den Eingangsdaten.
-
Bei
einem bevorzugten Ausführungsbeispiel wird
eine Entladung der internen Knoten der Schaltstufe vorgenommen,
die gemäß einer
Halbaddierervorschrift arbeitet, sodass ein erfindungsgemäßer Halbaddierer
halten wird.
-
Der
erfindungsgemäße Halbaddierer
ist dahingehend flächensparend,
dass die Schaltstufe lediglich ein Ausgabebit berechnen muss, wobei
es von der Implementierung abhängt,
ob die Schaltstufe das Ausgabebit selbst oder die invertierte Version des
Ausgabebits liefert. Es ist einsichtig, dass die geforderte Information
sowohl im Ausgabebit als auch im invertierten Ausgabebit enthalten
ist.
-
Das
entsprechende von der Schaltstufe nicht berechnete komplementäre Bit wird
dann in der Ausgangsstufe erzeugt, und zwar bereits im Vorbereitungsmodus,
also im Precharge- bzw. Pre-Discharge-Modus. Je nach Implementierung
wird dann im Datenmodus lediglich ein Ausgabebit der Ausgangsstufe,
nämlich
entweder das Ausgabebit selbst oder die invertierte Version des
Ausgabebits gegenüber dem
Precharge-Zustand umgeladen, so dass in dem Datenmodus der Halbaddierer
ein Bit ausgibt, das durch die Schaltstufe berechnet worden ist
und gegenüber
dem Precharge-Modus umgeladen worden ist, während das andere Bit im Datenmodus
denselben Wert hat wie im Vorbereitungsmodus und bereits in dem
dem Datentakt vorhergehenden Vorbereitungstakt erzeugt worden ist.
-
Die
erfindungsgemäße Schaltung
ist dahingehend flächensparend,
dass die Schaltstufe das invertierte Bit oder das nicht-invertierte
Bit je nach Implementierung berechnet, und nicht beide Bits berechnen
muss. Das zweite Bit wird dann in der Dual-Rail-Precharge/Pre-Discharge-Ausgangsstufe
erzeugt.
-
Die
erfindungsgemäße Schaltung
ist ferner dahingehend vorteilhaft, dass sie transistorarm implementiert
werden kann. Dies ist dann der Fall, wenn die Schaltstufe derart
ausgebildet wird, dass durch sie das Rechenpotential abhängig von
den drei Eingangsoperanden an einen Ausgang auf einem von verschiedenen
Pfaden durchschaltet. Für
jede Pfad-Verzweigung wird es bevorzugt, dieselbe Anzahl von Transistoren
zu nehmen, so dass jeder durch die Schaltstufe implementierbare
Pfad von dem Rechenpotential zu einem Ausgang eine gleiche Anzahl
von Transistorumschaltungen mit sich bringt, so dass von außen anhand
des Leistungsprofils nicht ersichtlich ist, welchen Pfad die Schaltstufe
genommen hat. Es ist daher anhand des Stromverbrauchs nicht ersichtlich,
welche Eingangsoperanden im aktuellen Rechenzyklus anliegend waren.
-
Die
erfindungsgemäße Schaltung
ist ferner dahingehend vorteilhaft, dass sie eine hohe Flexibilität ermöglicht.
So wird für
jedes Ausgabebit eine eigene Schaltstufe vorgesehen. Eine Stromsicherheit ist
bereits dann erreicht, wenn die Anzahl von Transistoren in einem
Pfad in einer Schaltstufe gleich der Anzahl von Transistoren von
anderen Pfaden in derselben Schaltstufe ist. Es muss jedoch keine
Gleichheit der Transistoren von einer Schaltstufe zur nächsten Schaltstufe
vorhanden sein. Daher können
beliebige Halbaddierer-Vorschriften für einzelne Bits implementiert
werden, ohne dass ein Transistor-Overhead dahingehend vorhanden
ist, dass z. B. alle Schaltstufen dieselbe Anzahl von Transistoren
haben müssen.
-
Durch
Implementation beliebiger Halbaddierer-Vorschriften im Hinblick
auf die ausgangsseitige Codierung des Halbaddierer-Ergebnisses (binäre Gewichtung,
Gray-Code, Dezimalgewichtung etc.) kann daher immer eine optimal
transistorarm entworfene Schaltstufe gefunden werden.
-
Darüber hinaus
ist die erfindungsgemäße Schaltung
querstromarm und im idealen Fall sogar querstromfrei, da immer nur
Umladungen von einem einzigen Ausgangsknoten der Ausgangsstufe erforderlich
sind. So wird bereits immer ein Ausgabebit im Vorbereitungsmodus
gewissermaßen
auf Verdacht berechnet, während
im Datenmodus nur ein einziges Bit der zwei Ausgabebit s einer Ausgangsstufe
umgeladen werden muss. Diese Umladung findet ohne Querstrom vom
hohen Potential (z. B. Vdd) zum niedrigen Potential (Vss) statt
und hat zudem einen geringen Stromverbrauch im Vergleich zu dem
Fall, bei dem immer zwei Ausgabebits umgeladen werden müssen. Die
erfindungsgemäße Schaltung
ist somit nicht nur querstromarm sondern auch in ihrem insgesamten
Stromverbrauch günstig,
was insbesondere für
Anwendungen von Vorteil ist, bei denen beispielsweise eine Chipkarte
keine autarke Spannungsversorgung in Form einer Batterie hat, wie
z. B. Kontaktlosanwendungen.
-
Die
erfindungsgemäße Schaltung
ist ferner günstig
implementierbar, da die einzelnen Stufen nicht in vollständiger CMOS-Technik implementiert werden
müssen.
Es reichen statt dessen für
die einzelnen Stufen entweder ausschließlich NMOS-Transistoren oder PMOS-Transistoren.
Es werden jedoch nicht unbedingt in allen Stufen beide Transistorsorten benötigt, wie
es dagegen bei einem vollständigen CMOS-Design
der Fall ist, bei dem einem PMOS-Transistor immer ein entsprechender
Komplementärtransistor
(NMOS-Transistor) zugeordnet ist.
-
Die
erfindungsgemäße Schaltung
ist ferner dahingehend flexibel, dass das Rechenpotential, das durch
die Schaltstufe gemäß den Eingangsoperanden
an einen Ausgang durchgeschaltet wird, das hohe Potential Vdd oder
das niedrige Potential Vss sein kann. Wird für das Rechenpotential das hohe Potential
Vdd gewählt,
so muss für
das Vorbereitungspotential in der Ausgangsstufe das andere Potential,
also im vorliegenden Fall das niedrige Potential Vss verwendet werden.
Wird dagegen in der Schaltstufe als Rechenpotential das niedrige
Potential Vss verwendet, so muss in der Ausgangsstufe ein Vorbereitungspotential
verwendet werden, das sich von dem Rechenpotential unterscheidet.
Im letzteren Fall wäre
dies das hohe Potential Vdd.
-
Der
erfindungsgemäße Halbaddierer
trägt somit
zu einem sicheren, leistungskräftigen
und flächenminimalen
3-Operanden-Addierer
bei. Die Operanden, die an dem 3-Operanden-Rechenwerk anliegen, sind typischerweise
in Speicherelementen, wie z. B. SRAM-Zellen gespeichert und werden
in Dual-Rail-Ausführung zu
dem Rechenwerk geführt,
um eine Sicherheit gegenüber
Power-Attacken zu erreichen. Da der Volladdierer, der sich an den
Halbaddierer anschließt,
kompakt in Dual-Rail-Precharge-Logik ausgeführt werden
kann, können
auch die Verbindungen zwischen dem Halb- und Volladdierer ihrerseits
in Dual-Rail-Logik mit Precharge/Pre-Discharge-Technik ausgeführt sein.
Der flächenminimale
und sichere erfindungsgemäße Halbaddierer
basiert auf der "One-Hot"-Realisierung. Für jedes
anliegende Bitpattern wird in jeder Schaltstufe genau ein Pfad geschaltet.
Im Falle von zwei Ausgabebits wird daher für jedes Bitpattern der drei
anliegenden Operanden zwei Pfade geschaltet. Diese zwei Pfade sind
notwendig, um für
die Ausgangsstufe jeweils ein Bit zu berechnen, während das
andere Bit durch die Ausgangsstufe selbst gewissermaßen erzeugt
wird, d. h. aus dem vorausgehenden Vorbereitungsmodus "übernommen" wird. Für jedes beliebige anliegende Bitpattern
am Eingang ist die insgesamte Summe der umzuladenden Kapazitäten gleich.
Damit lässt
sich das anliegende Bitpattern während
der Schaltvorgänge
im Halbaddierer nicht von außen
erkennen.
-
Erfindungsgemäß wird es
bevorzugt, zur Erreichung einer möglichst hohen Leistung die
zu schaltenden Pfade mit möglichst
wenig Transistoren auszustatten. Dies kann individuell für jede Schaltstufe
je nach Halbaddierervorschrift beliebig durchgeführt werden, so dass nicht eine
Schaltstufe, die eine komplexere Halbaddierervorschrift hat, die
Transistorzahl für
eine andere Schaltstufe, die eine weniger komplexe Halbaddierervorschrift
hat, gewissermaßen "diktiert".
-
Der
erfindungsgemäße Halbaddierer
wird in seiner bevorzugten Form als 3-Operanden-Addierer mit drei
Eingangsoperanden ver wendet, um zwei Ausgabebits in binärer Gewichtung
zu erzeugen. Durch Hintereinanderschalten von mehreren solchen 3-Operanden-Addierern
können
beliebige N-Operanden-Addierer beispielsweise zur Ausführung eines nicht
nur dreifachen sondern eines N-fachen ZDN-Algorithmus eingesetzt
werden. Mit einem solchen N-Operanden-Addierer, der aus mehreren
hintereinander geschalteten erfindungsgemäßen 3-Operanden-Addierern aufgebaut
ist, lässt
sich die Performance pro Chipfläche
noch einmal steigern, und zwar mit einem Flächen-Overhead, der unterproportional
zum Performance-Gewinn ist.
-
Der
erfindungsgemäße Halbaddierer
hat jedoch auch das Potential, als direkter N-Operanden-Addierer
ohne Verwendung von hintereinander geschalteten 3-Operanden-Addiererelementen
eingesetzt zu werden, indem andere Halbaddierer-Vorschriften für z. B.
mehr als zwei Ausgabebits z. B. gemäß entsprechender Wahrheitstabellen
für einen
beispielsweise 7-Operanden-Addierer
eingesetzt werden. Ein 7-Operanden-Addierer beispielsweise hat maximal
sieben Einsen, wenn alle sieben Eingangsoperandenbits gleich 1 sind.
Die dezimale Zahl 7 ist durch insgesamt drei Ausgabebits in binärer Gewichtung
darstellbar. Ein 7-Operanden-Halbaddierer würde daher bereits mit drei
Ausgabebits auskommen.
-
Bevorzugte
Ausführungsbeispiele
der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf
die beiliegenden Zeichnungen detailliert erläutert. Es zeigen:
-
1 ein
Blockschaltbild eines Halbaddierers mit einer beliebigen Anzahl
von Eingangsoperanden und einer entsprechenden Anzahl von Ausgabebits;
-
2 eine
Tabelle zu möglichen
Kombinationen des Rechenpotentials, des Vorbereitungspotentials
und einer entsprechenden Transistortechnologie;
-
3 eine
Wahrheitstabelle für
einen 3-Operanden-Halbaddierer
mit zwei Ausgabebits SUM1 und SUM0;
-
4 eine
schematische Darstellung von Schaltstufen mit unterschiedlichen
Rechenpotentialen;
-
5a ein
Beispiel für
Pfade durch die Schaltstufen für
ein bestimmtes Operanden-Bitmuster;
-
5b eine
beispielhafte Darstellung verschiedener Pfade durch Schaltstufen
für ein
alternatives Operanden-Bitmuster;
-
6A und 6B ein
Blockschaltbild auf Transistorebene für einen bevorzugten Halbaddierer gemäß der vorliegenden
Erfindung mit Dual-Rail-Eingangsstufe, zwei Schaltstufen und zwei
Dual-Rail-Ausgangsstufen;
-
6C eine
bevorzugte Form einer Knotenpotentialschaltung zum Koppeln eines
internen Knoten mit dem Bezugspotential im Vorbereitungsmodus; und
-
7 ein
bekannter Drei-Operanden-Addierer mit entsprechend verschalteten
Drei-Bit-Halbaddierern und Zwei-Bit-Volladdierern für Bit-Slices
eines Langzahlrechenwerks.
-
Nachfolgend
wird anhand der 1 bis 6C das
erfindungsgemäße Konzept
anhand eines Halbaddierers dargestellt. Es sei jedoch darauf hingewiesen,
dass die vorliegende Erfindung auf jegliche Rechenwerke angewendet
werden kann, die zur Berechnung auf der Basis einer nicht in Voll-Dual-Rail-ausgeführten Schaltstufe
arbeiten, die gemäß einer
Addierervorschrift nur ein einziges Ausgangsbit berechnet, indem
je nach Rechenvorschrift das Ausgangsbit oder das invertierte Ausgangsbit
mit dem Rechenpotential verbunden wird, während das dazu komplementäre Bit dann
in einer entsprechenden Ausgangsstufe er gänzt wird, und zwar aus dem
vorherigen Vorbereitungstakt gewissermaßen übernommen und gegebenenfalls
entsprechend stabilisiert wird. Insbesondere ist die vorliegende
Erfindung in jedem Rechenwerk mit einer solchen Schaltstufe anwendbar,
wenn die Schaltstufe wenigstens einen internen Knoten aufweist,
der im Vorbereitungsmodus weder mit einem Potential der Eingangsstufe
noch einem Potential der Ausgangsstufe gekoppelt ist.
-
1 zeigt
ein schematisches Blockschaltbild eines erfindungsgemäßen Halbaddierers
zum Addieren von Bits von mehreren Eingangsoperanden, die in 1 derart
dargestellt sind, dass sie einer Eingangsstufe 10 zugeführt werden.
Die M Eingangsoperanden sind in 1 mit A1,
A2, A3, ..., AM bezeichnet. In 6A und 6B werden
dann beispielhaft nur drei Eingangsoperanden betrachtet, die dort
mit C, N, Z bezeichnet werden. Eine beliebige Anzahl von Eingangsoperanden
kann der Eingangsstufe 10 zugeführt werden. Ferner ist die
Eingangsstufe als Dual-Rail-Eingangsstufe ausgebildet, empfängt also
zu jedem Eingangsoperanden noch die komplementäre Version desselben.
-
Die
Eingangsstufe ist primär
wirksam, um die Eingangsoperanden und die komplementären Eingangsoperanden
an in 1 gezeigte n Schaltstufen 12a, 12b, 12c zu
verteilen. Für
jede Schaltstufe hat die Eingangsstufe also Ausgänge, wobei die Anzahl von Ausgängen gleich
doppelt so groß ist
wie die Anzahl der Eingangsoperanden. Für die Schaltstufe für bit n
in 1 hat die Eingangsstufe also einen ersten Ausgang 11a, über den
der Operand A1 läuft,
und einen zweiten Ausgang 11b, über den der zu A1 komplementäre Operand
läuft. Über einen
dritten Ausgang 11c läuft
A2 und über
einen vierten Ausgang 11d läuft der zu A2 komplementäre Operand
etc.
-
Ferner
sei darauf hingewiesen, dass M und n unterschiedlich sind. Ist M
gleich 1, so wird n = 1 sein. Ist M 2 oder 3, so wird n = 2 sein.
Ist M zwischen 4 und 7, so wird n = 3 sein. Ist M zwischen 8 und
15, so wird n = 4 sein.
-
Die
Schaltstufe 12a ist dem Ausgangsbit 0 zugeordnet, das auch
als Bit SUM0 bezeichnet wird. Das dazu komplementäre Bit SUM0 ist in 1 ebenfalls
ausgangsseitig dargestellt. Die Schaltstufe 12b ist dem
Ausgangsbit 1 zugeordnet, das auch als Bit SUM1 bezeichnet wird.
Das dazu komplementäre Bit SUM1 ist in 1 ebenfalls
ausgangsseitig dargestellt. Die Schaltstufe 12c ist für das Ausgangsbit
n vorgesehen. Dies wird auch als Bit SUMn bezeichnet. Das hierzu
komplementäre
Bit SUMn ist in 1 ebenfalls
ausgangsseitig dargestellt. Jeder Schaltstufe 12a, 12b, 12c ist
eine Ausgangsstufe 14c zugeordnet, wie es aus 1 ersichtlich
ist. Insbesondere ist die Ausgangsstufe 14a der Schaltstufe 12a für das Bit
0 nachgeordnet. Die Ausgangsstufe 14b ist der Schaltstufe 12b für das Bit
1 nachgeordnet. Die Ausgangsstufe 14c ist der Schaltstufe 12c für das Bit
n nachgeordnet.
-
Wie
es aus 1 ersichtlich ist, ist ferner jeder Schaltstufe
ein Rechenpotential für
diese Schaltstufe zuführbar,
wie es durch die Rechenpotentialanschlüsse 16a, 16b und 16c dargestellt
ist. Prinzipiell ist jeder Schaltstufe ein eigenes Rechenpotential
zuführbar,
das bei einem bevorzugten Ausführungsbeispiel
entweder ein hohes Potential Vdd oder ein niedriges Potential Vss
ist. Aus Gründen
der Schaltungsimplementierung wird es jedoch bevorzugt, jeder Schaltstufe
dasselbe Rechenpotential 16c, 16b, 16a zuzuführen, das
entweder Vss oder Vdd ist. Existiert die Möglichkeit, dass die implementierte
Schaltung mehr als zwei Potentiale hat, so können auch von Vss bzw. Vdd
abweichende Rechenpotentiale den Schaltstufen 12a, 12b, 12c zugeführt werden.
-
Die
Schaltstufen 12a, 12b, 12c sind wirksam, das
ihnen zugeführte
Rechenpotential 16a, 16b, 16c an einen
Ausgang 18a, 18b, 18c zuzuführen, wobei das
zu dem Ausgang 18a, 18b, 18c zugeführte Spannungspotential
das Ausgabebit oder eine invertierte Version des Ausgabebits darstellt.
-
An
dieser Stelle sei darauf hingewiesen, dass das Ausgabebit als logisches
Bit aufgefasst wird, also als logische "0" oder
als logische "1". Wird dem Ausgang 18a der
Schaltstufe 12a das Rechenpotential 16a aufgrund
einer durch die Schaltstufe 12a gebildeten leitfähigen Verbindung
von dem Eingang 16a zu dem Ausgang 18a zugeführt, so
kann der an dem Ausgang 18a anliegende Spannungswert entweder
das logische Ausgabebit SUM0 der nachgeschalteten Ausgangsstufe 14a darstellen
oder das invertierte Bit SUM0 darstellen,
je nach gewählter
Implementierung.
-
Die
Ausgangsstufe 14a empfängt
als Eingangssignal das Signal auf dem Ausgang 18a der Schaltstufe
sowie als weiteres Eingangssignal ein Vorbereitungspotential an
einem Anschluß 20a.
Entsprechend ist die Situation für
die Ausgangsstufen 14b und 14c, die ihre Vorbereitungspotentiale über Eingänge 20b bzw. 20c empfangen.
Jede Ausgangsstufe umfasst zwei Ausgänge 22a, 22b.
Entsprechend umfasst die Ausgangsstufe 14b für das Bit
1 ebenfalls zwei Ausgänge 24a, 24b.
Analogerweise umfasst auch die Ausgangsstufe 14c für das Bit
n ebenfalls zwei Ausgänge 26a, 26b.
Der Ausgang 22a der Ausgangsstufe 14a für das Bit
0 liefert das invertierte Ausgabebit SUM0.
Entsprechend liefert der Ausgang 22b der Ausgangsstufe 14a das
nichtinvertierte Ausgabebit SUM0.
-
Der
in 1 gezeigte Halbaddierer umfasst ferner eine Steuereinrichtung 28 zum
Einstellen eines Datenmodus und eines Vorbereitungsmodus, wobei
im Vorbereitungsmodus entweder ein Precharge-Modus oder ein Pre-Discharge-Modus
gefahren werden kann. Das Vorhandensein eines Datenmodus bzw. eines
Vorbereitungsmodus wird durch Steuerleitungen 28a, 28b, 28c den
Ausgangsstufen 14a, 14b bzw. 14c signalisiert.
Optionalerweise ist die Eingangsstufe 10 ebenfalls im Datenmodus
bzw. Vorbereitungsmodus betreibbar. Dies signalisiert die Steuerein richtung 28 der
Eingangsstufe über
eine weitere Steuerleitung 28d.
-
Im
Datenmodus liegt an einem Ausgang einer Ausgangsstufe das Ausgabebit
in nicht-invertierter Form an, also SUM0, SUM1 bzw. SUMn. An dem anderen
Ausgang liegt im Datenmodus eine invertierte Version des Ausgabebits
an, also SUM0, SUM1 bzw. SUMn.
-
Die
Ausgangsstufen sind ferner wirksam, um in einem Vorbereitungsmodus
an einem Ausgang und an dem anderen Ausgang dasselbe Vorbereitungspotential,
das der Ausgangsstufe über
den entsprechenden Eingang 20a, 20b bzw. 20c zugeführt wird,
anzulegen, wobei sich erfindungsgemäß das Vorbereitungspotential,
das einer Ausgangsstufe beispielsweise über den Eingang 20a zugeführt wird, von
dem Rechenpotential unterscheidet, das der Schaltstufe, die der
betrachteten Ausgangsstufe vorgeschaltet ist, z. B. über den
Eingang 16a zugeführt wird.
Der Vorbereitungsmodus wird bei dem in 1 gezeigten
Ausführungsbeispiel
den einzelnen Ausgangsstufen von der Steuereinrichtung 28 über die Steuerleitungen 28a, 28b bzw. 28c signalisiert.
-
In
den Schaltstufen 12C, 12B, 12A ist ferner schematisch
ein interner Knoten eingezeichnet, der im Vorbereitungsmodus sowohl
eingangsseitig als auch ausgangsseitig mit keinem Potential gekoppelt ist
und daher im Vorbereitungsmodus floatet. Die erfindungsgemäße Knotenpotentialschaltung
ist ausgebildet, um jeden dieser internen Knoten im Vorbereitungsmodus
mit einem Bezugspotential zu verbinden, das vorzugsweise das Massepotential
ist. Hierzu umfasst die Steuereinrichtung 28 eine weitere Steuerleitung 28E,
die mit jeder Schaltstufe und insbesondere mit jedem Entladungsschalter
für jeden internen
Knoten in den entsprechenden Schaltstufen gekoppelt ist. Der Steuerleitung 28E wird
ein Signal geliefert, das zu den Signalen auf den Steuerleitungen 28A bis 28D synchron
ist, wobei je nach Implementierung der Schalter und des Vorbereitungsmo dus
in der Eingangsstufe und der entsprechenden Ausgangsstufe vorzugsweise
dasselbe Signal verwendet wird. Je nach Implementierung der Schalter der
Knotenpotentialschaltungen können
jedoch auch zueinander komplementäre Signale z. B. auf der Leitung 28E und
der Leitung 28D eingesetzt werden.
-
Im
nachfolgenden wird anhand von 2 auf bevorzugte
Kombinationen von Rechenpotential, Vorbereitungspotential und Transistortechnologie eingegangen.
Wird als Rechenpotential einer Schaltstufe (Eingang 16a)
das hohe Potential Vdd einer Schaltung zugeführt, so ist das der nachgeschalteten Ausgangsstufe
unterschiedliche Vorbereitungspotential das niedrige Potential Vss.
Das Zuführen
des niedrigen Potentials Vss als Vorbereitungspotential führt zu einem
Pre-Discharge in der Ausgangsstufe (z. B. 14a), so dass
im Vorbereitungsmodus beide Bits SUM0, SUM0 einen
niedrigen Spannungszustand haben und damit bei dem hier dargestellten Beispiel
eine logische "0" darstellen.
-
Im
Datenmodus wird von der Schaltstufe 12a dann das hohe Rechenpotential
Vdd der Ausgangsstufe 14a als Bit SUM0 oder Bit SUM0 zugeführt, und zwar
je nach Bitmuster der drei Eingangsoperandenbits, so dass dann,
im Datenmodus, lediglich ein Ausgangsbit SUM0 bzw. SUM0 umladen wird, d. h. von dem logischen
Zustand "0" in den logischen
Zustand "1" umgeändert wird.
-
In
dem Fall, in dem als Rechenpotential Vdd genommen wird, und als
Vorbereitungspotential Vss genommen wird, wird als Transistortechnologie
die PMOS-Technologie bevorzugt, da die PMOS-Transistoren günstiger
ein hohes Rechenpotential durchschalten.
-
Wird
dagegen im anderen Fall als Rechenpotential das niedrige Potential
Vss genommen, und wird dann konsequenterweise als Vorbereitungspotential
das hohe Potential Vdd genommen, so findet in der Ausgangsstufe
ein Precharge-Modus statt, dahin gehend, dass die beiden Ausgabebits
SUM0, SUM0 der Ausgangsstufe 14a,
beispielsweise eine logische "1" darstellen. Durch
die Schaltstufe wird das niedrige Potential Vss entweder als Bit
oder Bit der Ausgangsstufe 14a zugeführt, die
dann lediglich eines der beiden Ausgangsbits SUM0 oder SUM0 in den niedrigen Zustand umlädt, also
von einer logischen "1" in eine logische "0" verändert.
In diesem Fall wird in der Schaltstufe als Transistortechnologie die
NMOS-Technologie bevorzugt, da diese am besten dafür geeignet
ist, niedrige Spannungspotentiale durchzuschalten.
-
3 zeigt
in Tabellenform eine bevorzugte Halbaddierervorschrift für einen
3-Operanden-Addierer, um für
jedes Bitmuster der Eingangsoperanden Ci,
Ni und Zi entsprechende
Ausgangsbits SUM1, SUM0 zu berechnen. Die Halbaddierervorschrift
in 3 ist als "Einsen-Zähler" ausgebildet, wobei
die Anzahl von Einsen durch die Bits SUM0, SUM1 in binärer Gewichtung
dargestellt werden. Die beiden Ausgangsbits SUM1 und SUM0 stellen
somit eine binäre
Zahl dar, wobei das Bit SUM1 das MSB dieser binären Zahl ist, und wobei das
Bit SUM0 das LSB dieser Zahl ist. Die beiden Ausgangsbits SUM1 und SUM0
stellen daher in binärer
Codierung die Anzahl von Einsen eines jeden Bit-Patterns der Eingangsoperanden
dar. Lediglich in dem Fall, in dem alle drei Eingangsoperanden eine
logische "1" haben, sind beide
Bits SUM1 und SUM0 gesetzt, was der binären Zahl "11" entspricht,
die in dezimaler Darstellung gleich der Zahl 3 ist.
-
Für Fachleute
ist es offensichtlich, dass anhand der Systematik von 3 beliebige
N-Operanden-Halbaddierer aufgebaut werden können. Wird beispielsweise ein
7-Operanden-Halbaddierer
aufgebaut, so wird zur Darstellung des maximalen Falls, in dem alle
sieben Operanden eine logische "1" haben, eine Anzahl
von drei Ausgabebits benötigt,
da die binäre
Zahl "111" der dezimalen Zahl "7" entspricht.
-
Für Halbaddierer
mit einer größeren Anzahl von
sieben Operanden werden daher entsprechend mehr Ausgabebits benötigt, wenn
die normale binäre Gewichtung
eingesetzt wird.
-
Aus
der Systematik von 3 ist ferner ersichtlich, dass
auch eine andere Codierung eingesetzt werden kann, wenn es für einen
speziellen Fall günstig
ist. So kann die Bedeutung der Bits SUM1, SUM0 beliebig eingestellt
werden, dahingehend, dass eine Bitkombination von SUM0 und SUM1
als "11" z. B. darauf hindeutet,
dass die Anzahl von Nullen in den Eingabebits C, N, Z gleich 3 ist,
was gleichbedeutend damit ist, dass die Anzahl von Einsen in C,
N, Z bei der bestimmten betrachteten Bitkombination gleich 0 ist.
-
Die
Linien 41, 42 und 43 stellen potenzielle Knotenebenen
dar deren Verzweigungen durch entsprechende Transistoren in der
Schaltstufe realisierbar sind. Diese Transistoren führen zu
internen Knoten, die im Vorbereitungsmodus sowohl vom Eingang als
auch vom Ausgang abgekoppelt sind und erfindungsgemäß im Vorbereitungsmodus
durch eine zusätzliche
Knotenpotentialschaltung mit dem Bezugspotential verbunden werden,
wobei das Bezugspotential vorzugsweise das Massepotential ist.
-
Das
Bezugspotential muss jedoch nicht unbedingt das Massepotential sein.
Je nach Vorbereitungsmodus, also ob ein Precharge-Betrieb oder ein Pre-Discharge-Betrieb
eingesetzt wird, und je nach Schaltungsimplementierung, also ob
das Bit selbst oder das invertierte Bit getrieben wird, kann das
Bezugspotential auch das hohe Potential, also Vdd sein.
-
Nachfolgend
werden anhand der 5a und 5b zwei
jeweils verschiedene Pfade durch die einzelnen Schaltstufen für unterschiedliche
Bitmuster dargestellt.
-
In 5a ist
beispielhaft der Fall gezeigt, bei dem der erste Operand gleich
1, der zweite Operand gleich 0 ist, und der dritte Operand gleich
1 ist. Für
die Schaltstufe 14a be deutet dies, dass ein erster Schaltknoten 50a dahingehend
durchlaufen wird, dass eine 45°-Abzweigung
genommen wird, da der erste Operand gleich 1 ist. Ein zweiter Schaltknoten 50b wird dahingehend
verarbeitet, dass der Pfad waagrecht fortgeführt wird, da der zweite Operand
gleich 0 ist. Ein dritter Schaltknoten 50c wird dahingehend
durchlaufen, dass wieder eine 45°-Abzweigung
genommen wird, da der dritte Operand gleich 1 ist. Dies führt dazu,
dass das Rechenpotential Vss ausgangsseitig das nicht-invertierte
Bit der Schaltstufe bestimmt. Im Datenmodus führt ein Spannungszustand Vss
für das
nicht-invertierte Bit dazu, dass die der Schaltstufe 14a nachgeschaltete
Ausgangsstufe 14b, die beide Ausgängen 22a, 22b in
einem Zustand "1" hatte, das nicht-invertierte
Bit SUM0 (22b) in den niedrigen Zustand entlädt, während das
invertierte Bit SUM0 22a im hohen Zustand bleibt.
-
Die
Schaltstufe 14b hat als Rechenpotential das hohe Potential
Vdd. In einem ersten Verzweigungsknoten 52a wird eine 45°-Abzweigung genommen.
In einem zweiten Verzweigungsknoten 52b, die dem zweiten
Operanden entspricht, wird eine waagrechte Abzweigung genommen.
In einem dritten Verzweigungsknoten 52c, die dem dritten
Operanden entspricht, wird eine 45°-Abzweigung genommen, so dass schließlich am
Ausgang 18b, der dem nicht-invertierten Bit entspricht,
das hohe Spannungspotential Vdd anliegt. Das hohe Spannungspotential
am Ausgang 18b führt
dazu, dass in der Ausgangsstufe 14b von 1 das
nicht-invertierte Bit SUM1 24b von seinem niedrigen Zustand,
den es im Vorbereitungsmodus hatte, auf den logisch hohen Zustand gesetzt
wird, während
das invertierte Bit SUM1 in
seinem bereits aus dem Vorbereitungsmodus heraus bestehenden Zustand,
also dem niedrigen Zustand "0" gelassen wird.
-
Aus
der vorstehenden Beschreibung ist ersichtlich, dass die Schaltstufe
lediglich ein Bit, also das invertierte bzw. das nicht-invertierte
Bit berechnen muss, während
das zweite Bit dann durch die Ausgangsstufe aus dem vorausgehenden
Vorbereitungsmodus übernommen
wird.
-
Ferner
ist ersichtlich, dass z. B. in der Schaltstufe 14a in 5a acht
verschiedene Pfade gemäß den acht
verschiedenen Kombinationen der drei Eingangsoperanden gewählt werden
können.
Wie es jedoch aus der Schaltstufe 14b von 5a ersichtlich ist,
führt in
dem Fall, in dem bereits der erste Eingangsoperand und der zweite
Eingangsoperand gleich 0 waren, in dem also an einem Verzweigungsknoten 52d der
Pfad waagrecht fortgesetzt wird, dazu, dass dem dritten Operanden
kein eigener Verzweigungspunkt mehr zugeordnet ist. Dies ist ohne weiteres
daraus ersichtlich, dass in dem Fall, in dem bereits der erste und
der zweite Operand gleich 0 waren, höchstens noch eine einzige 1
unter den drei Operanden, nämlich
die 1 des dritten Operanden herauskommen kann, was auf jeden Fall
dazu führt, dass
das Bit SUM1, wie es aus der Wahrheitstabelle ersichtlich ist, gleich
0 ist. Das hohe Potential Vdd bestimmt daher den Zustand des invertierten
Bits Bit zu einer logischen "1", derart, dass im Datenmodus das nicht-invertierte
Bit gleich 0 ist, wie es durch die Wahrheitstabelle von 3 gefordert
wird.
-
In 5b ist
eine alternative Bitkombination der drei Operanden dargestellt,
und zwar der Fall, bei dem alle drei Operanden gleich 1 sind. In
der Schaltstufe 14a wird der in 5b eingezeichnete
Pfad genommen, der lediglich 45°-Abzweigungen umfasst. Der
Pfad endet schließlich
dahingehend, dass das niedrige Potential Vss, das eine logische "0" darstellt, am invertierten Bit Bit anliegt. In der Schaltstufe 14b ist
bereits anhand der ersten beiden Operanden klar, dass das Bit gesetzt
werden muss, so dass das Ergebnis, nämlich Vdd am nicht-invertierten
Ausgang 18b der Schaltstufe, nicht mehr vom dritten Operanden
abhängt,
so dass dem dritten Operanden kein eigener Verzweigungspunkt mehr
zugeordnet zu werden braucht.
-
Aus
den 5a und 5b ist
ferner ersichtlich, dass die Anzahl der Verzweigungspunkte, nämlich vier
bei der Schaltstufe 14b und fünf bei der Schaltstufe 14a nicht
für jede
Schaltstufe identisch zu sein braucht. Vielmehr wird eine Schaltstufe
mit möglichst
wenig Abzweigungspunkten angestrebt, da die Anzahl der Abzweigungspunkte
letztendlich die Anzahl der Transistoren in der Schaltstufe und
damit die wertvolle Chipfläche
bestimmt. Eine Sicherheit gegenüber
Leistungsattacken wird jedoch bereits dadurch erreicht, dass jeder
Pfad durch eine Schaltstufe dieselbe Anzahl von Verzweigungspunkten
umfasst, wobei jedoch die Anzahl von Verzweigungspunkten von Schaltstufe
zu Schaltstufe nicht zwingend gleich zu sein braucht. Eine solche
Ungleichheit liefert dem Angreifer lediglich die Information, dass
in zwei Schaltstufen geschaltet worden ist. Diese Information nützt dem
Angreifer jedoch nichts, da dieser Sachverhalt ohnehin klar ist.
Ein Angreifer kann jedoch nicht erkennen, welcher Pfad in einer
Schaltstufe durchgeschaltet worden ist, um daraus unter Umständen auf
die Werte der drei Eingangsoperanden schließen zu können.
-
Der Übersichtlichkeit
halber ist in den 5a und 5b rechts
noch der zugeordnete Vorbereitungsmodus dargestellt, der durch das
einer Ausgangsstufe zugeordnete Vorbereitungspotential bestimmt
wird, das sich erfindungsgemäß von dem
Rechenpotential unterscheidet. So hat die Schaltstufe 14b aufgrund
des hohen Rechenpotentials Vdd die Konsequenz zur Folge, dass die
zugeordnete Ausgangsstufe ein anderes Vorbereitungspotential hat, nämlich das
niedrige Potential Vss, wenn die Schaltung lediglich zwei verschiedene
Potentiale zur Verfügung
stellt.
-
Analog
hierzu hat die Schaltstufe 14a aufgrund des niedrigen Rechenpotentials
Vss ein hohes Vorbereitungspotential zur Folge.
-
Nachfolgend
wird anhand von 6 auf ein bevorzugtes
Ausführungsbeispiel
der vorliegenden Erfindung auf Transistorebene Bezug genommen.
-
In 5A und 5B sind
wieder Verzweigungsknoten 52A bis 52D bzw. 50A bis 50C eingezeichnet,
die wiederum zu internen Knoten führen werden, die durch die
erfindungsgemäße Knotenpotentialschaltung
auf einen definierten Bezugspotential-Zustand gebracht werden.
-
6A und
6B zeigen
zusammen und in modulartiger Darstellung bevorzugte Transistorimplementierungen
einer Dual-Rail-Eingangsstufe (Block
10 von
1), von Schaltstufen (Blöcke 12a, 12b von
1)
und Ausgangsstufen (Blöcke
14a, 14b von
1), wobei hier das erfindungsgemäße Konzept
anhand einer Halbaddiererimplementierung, wie sie in dem deutschen
Patent
DE 10307942
B3 dargestellt ist, beschrieben ist. Es sei jedoch darauf hingewiesen,
dass statt einer Halbaddierervorschrift, wie sie durch die Schaltstufen
in
6A und
6B realisiert
werden, auch eine andere Rechenvorschrift implementiert sein kann,
wie beispielsweise eine Volladdierer-Rechenvorschrift, eine Invertierer-Rechenvorschrift,
oder eine beliebige andere logische und/oder arithmetische Rechenvorschrift.
Ferner sei darauf hingewiesen, dass die vorliegende Erfindung nicht
auf drei Eingangsoperanden begrenzt ist, sondern auf eine beliebige
Anzahl von Eingangsoperanden anwendbar ist, also auch auf nur einen
einzigen Eingangsoperanden. Im letzteren Fall wäre die Rechenvorschrift z.
B. eine Invertierervorschrift, die im Hinblick auf die entsprechende
Schaltstufe derart implementiert ist, dass wenigstens ein interner
Knoten existiert, der im Vorbereitungsmodus sowohl eingangsseitig
als auch ausgangsseitig abgekoppelt ist und daher floatet, also
Restladungen haben kann, die im ungünstigen Fall, also ohne die
erfindungsgemäßen Prinzipien,
zu einer Schaltungsverlangsamung, zu Querströmen und sogar zu einer Ergebnisverfälschung
führen
kann.
-
Nachfolgend
wird auf die Implementierung der Dual-Rail-Eingangsstufe (Block 10 in 1)
eingegangen. Die Dual-Rail-Eingangsstufe
in 6 umfasst zunächst sechs Eingänge für die drei
Operanden Z, N und C als nicht-invertierte Bits und invertierte
Bits. Die Bits werden so der Dual-Rail-Eingangsstufe zugeführt, wie es in 6 ersichtlich
ist. Die Eingangsstufe enthält
ferner, wie es in 1 durch die Leitung 28d angedeutet
ist, ein Precharge-Signal Vss, um die Eingangsstufe in dem Vorbereitungsmodus
in einen Precharge-Zustand
zu fahren, bei dem alle sechs Eingänge auf dasselbe Potential
gebracht werden. Dieses Potential ist, wie es anhand der Spannungsversorgungssituation
in 6 ersichtlich ist, das hohe Potential,
da die Dual-Rail-Eingangsstufe mit dem hohen Potential Vdd an verschiedenen Punkten
versorgt wird.
-
Zur
Auslösung
des Precharge-Zustands, also im Vorbereitungsmodus, werden die in 6 als PMOS-Transistoren ausgeführten Transistoren
an ihrem Gate mit dem niedrigen Potential Vss versehen, damit sie
durchschalten, wie es aus 6 ersichtlich ist,
um alle Operanden-Bit-Knoten und alle Knoten für invertierte Operandenbits
auf das Potential Vdd zu legen.
-
Im
einzelnen umfasst jede Dual-Rail-Eingangsstufe vier Transistoren 600, 601, 602 und 603, wobei
nachfolgend lediglich beispielhaft und repräsentativ für den zweiten und den dritten
Operand die dem ersten Operand zugeordnete Eingangsstufe dargelegt
wird. Die beiden Transistoren 601, 600 dienen
dazu, im Vorbereitungsmodus, in dem das Precharge-Signal aktiv ist,
in dem also Vss auf der Leitung 28d anliegt, die auf der
einen Seite der beiden Transistoren anliegende hohe Spannung Vdd auf
die Ausgangsknoten 604, 605 für das invertierte erste Operandenbit
und das nicht-invertierte erste Operandenbit zu legen. Damit werden
unmittelbar die beiden Transistoren 603, 602 gesperrt,
da sie das hohe Potential Vdd an ihrem jeweiligen Gate-Anschluß haben.
-
Im
Datenmodus ist dagegen die Leitung 28d auf dem hohen Potential
Vdd, was dazu führt,
dass die beiden Transistoren 601 und 600 wirkungslos sind.
Die beiden Transistoren 602, 603 dienen zur Stabilisierung
der Verhältnisse
im Datenmodus. Ist beispielsweise das Operandenbit Ni hoch,
so ist der Transistor 602 gesperrt, so dass das Potential
Vdd auf der einen Seite des Transistors 602 nicht an den Knoten 604 kommen
kann. Der Knoten 604 ist nämlich, da er das invertierte
Bit N i des
ersten Operanden darstellt, auf einem niedrigen Potential. Dieses
niedrige Potential führt
dazu, dass der Transistor 603 geöffnet wird. Es fließt jedoch
im Idealzustand kein Strom, da der Knoten 605 ebenfalls
auf Vdd ist. Der Transistor 603 dient jedoch dazu, das
hohe Potential auf dem Knoten 605 zu stabilisieren und
gegebenenfalls nachzuladen, falls an irgendeiner Stelle Leckströme auftreten.
-
Die
Dual-Rail-Eingangsstufe dient somit dazu, im Vorbereitungsmodus
gleiche Potentiale auf den Bitleitungen zu erzeugen, und im Datenmodus die
Zustände
auf den Bitleitungen zu stabilisieren. Darüber hinaus dient die Dual-Rail-Eingangsstufe dazu,
die Operandenbits über
Verteilungsschienen 611, 612 und 613 an
die Schaltstufen zu verteilen. Für
jeden Operanden bzw. komplementären
Operanden hat die Dual-Rail-Eingangsstufe
einen ersten Ausgang 11a bzw. einen zweiten Ausgang 11b.
-
Wie
es in 6A und 6B gezeigt
ist, sind die beiden Schaltstufen derart ausgebildet, dass sie als
Rechenpotential das hohe Potential Vdd zugeführt bekommen, wie es durch
die Spannungszuführungen 16a für die erste
Schaltstufe und 16b für
die zweite Schaltstufe gezeigt ist. So besteht die Schaltstufe für das Bit
0, bzw. für
das Bit zur Erzeugung des Bits 0 (SUM0 22b oder SUM0 22a) aus insgesamt zehn
Transistoren 620–629,
wobei immer zwei Transistoren zusammen einen Verzweigungspunkt der
in 5a und 5b gezeigten
Verzweigungspunkte bilden. Analog hierzu besteht die Schaltstufe
für das Bit
1 (SUM1 24b bzw. SUM1 24a)
aus lediglich acht Transistoren 630–637, wobei ebenfalls
paarweise angeordnete Transistoren immer einen Verzweigungspunkt
definieren.
-
Ferner
sei darauf hingewiesen, dass die Situation des Rechenpotentials 16a, 16b gleich
dem hohen Potential Vdd der Situation entspricht, die die Schaltstufe 12b in
den 4, 5a und 5b hat.
Im einzelnen entsprechen die Transistoren 630 und 631 dem
Verzweigungspunkt 52a. Die Transistoren 632, 633 entsprechen
dem Verzweigungspunkt 52b von 5a. Die
beiden Transistoren 634 und 635 entsprechen dem
Verzweigungspunkt 52d in 5a. Schließlich entsprechen
die Transistoren 636 und 637 dem Verzweigungspunkt 52c.
-
Analog
hierzu entsprechen in der Schaltstufe für das Bit 0 die beiden Transistoren 620 und 621 dem
Verzweigungspunkt 50a von 5a. Die
Transistoren 622, 623 entsprechen dem Verzweigungspunkt 50b von 5a.
Die Transistor 626 und 627 entsprechen dem Verzweigungspunkt 50c von 5a.
-
Die
Schaltstufen umfassen ferner eine in 6 bei 639 gezeigte
Ausgangsschiene, die gleichzeitig die Eingangsschiene für die nachgeschalteten Ausgangsstufen
darstellt. Die beiden rechten Leitungen der Ausgangsschiene 639 sind
der oberen Ausgangsstufe 14b zugeordnet, während die
beiden linken Leitungen der Ausgabeschiene 639 der unteren Ausgangsstufe 40a zugeordnet
sind. Es sei darauf hingewiesen, dass die Transistoren in den Schaltstufen
wirksam sind, um lediglich einen Pfad vom Anschluß 16b bzw. 16b zu
einer der Leitungen der Ausgabeschiene 40 durchzuschalten.
Es ist ferner ersichtlich, dass jeder Pfad dieselbe Anzahl von Transistoren
umfasst, unabhängig
davon, welcher Pfad durch eine Schaltstufe abhängig von dem Bitmuster eingestellt
wird.
-
Aus 6 ist ferner ersichtlich, dass bei dem gezeigten
Ausführungsbeispiel
ein Verzweigungspunkt durch Verwendung eines komplementären Operandenbits
zusätzlich
zu dem nichtinvertierten Operandenbit implementiert wird. Dies ermöglicht eine
einfache Implementierung dahingehend, dass lediglich zwei Transistoren
verwendet werden, und dass keine Untersuchung des Bits dahingehend
erforderlich ist, ob das Bit eine 0 oder eine 1 hat. Alternativ
könnte
jedoch auch, obgleich es im Hinblick auf die Implementation und
mögliche
Sicherheitseinbußen
nicht bevorzugt wird, eine Implementierung eingesetzt werden, bei
der lediglich Single-Rail-Operanden den Schaltstufen zugeführt werden.
In diesem Fall würde
jeder Verzweigungspunkt eine zusätzliche Einrichtung
dahingehend umfassen, um zu untersuchen, ob das zugeführte Bit
eine 1 oder eine 0 ist, um einen entsprechenden Pfad durchzuschalten.
In diesem Fall könnte
der erfindungsgemäße Halbaddierer auch
zur Single-Rail-Dual-Rail-Konversion verwendet werden, um eingangsseitig
vorliegende Single-Rail-Daten in ausgangsseitige Dual-Rail-Daten
zu konvertieren, wobei die ausgangsseitigen Dual-Rail-Daten ferner
gemäß der Halbaddierervorschrift
von den eingangsseitigen Single-Rail-Daten abgeleitet worden sind.
-
Die
Funktionalität
der beiden als Schalter fungierenden Transistoren beispielsweise 620 und 621,
die den Verzweigungspunkt 50a in 5a darstellen,
ist ersichtlich, wenn davon ausgegangen wird, dass im Datenmodus
immer nur ein Transistor durchschaltet, während der andere Transistor
sperrt, so dass immer nur ein Pfad entweder nach oben oder nach
unten genommen wird, jedoch nie zwei Pfade gleichzeitig. Nachdem
im Datenmodus die beiden Knoten 605 und 604, also
die beiden Bits, die im Datenmodus den ersten Operanden darstellen,
auf Vdd liegen, sind die Transistoren 620 und 621 im
Vorbereitungsmodus beide gesperrt, so dass keine Querströme fließen können. Die
Schaltstufe wird somit aufgrund der Tatsache, dass in der Eingangsstufe
ein Precharge verwendet wird und in der Schaltstufe PMOS-Transistoren
verwendet werden, im Vorbereitungsmodus automatisch dahingehend
deaktiviert, dass keine Querströme
von dem Knoten 16a bzw. 16b abfließen können. Würde die
Dual-Rail-Eingangsstufe einer Discharge-Operation unterzogen werden,
würde es
bevorzugt, die Transistoren der Schaltstufen in NMOS-Technik mit
entsprechendem Rechenpotential (Vss in diesem Fall) auszuführen.
-
Nachfolgend
wird beispielhaft die transistormäßige Implementierung der Ausgangsstufe 14a erörtert, die
insgesamt vier Transistoren 640, 641, 642 und 643 aufweist.
Da als Rechenpotential 16a, 16b das hohe Potential
Vdd genommen wird, wird in 6 als Vorbereitungspotential
das niedrige Potential Vss 20a verwendet. Entsprechend
wird auch bei der zweiten Ausgangsstufe 14b als Vorbereitungspotential
das niedrige Potential Vss verwendet, also ein Potential, das sich
von dem Rechenpotential Vdd unterscheidet.
-
Die
Ausgangsstufen 14a, 14b werden im Vorbereitungsmodus
mit einem Pre-Discharge-Signal beaufschlagt, das aufgrund der Ausführung der Transistoren 640–643 in
NMOS-Technik ein hohes Spannungssignal Vdd ist. Im Datenmodus liegt
auf der Leitung 28a, 28b dagegen das niedrige
Potential Vss an, um die Discharge-Transistoren 641, 640 zu sperren.
-
Wird
die Ausgangsstufe 14a (genauso wie die Ausgangsstufe 14b)
dagegen im Vorbereitungsmodus betrieben, so liegt Vdd auf den Leitungen 28a, 28b (die
in der tatsächlichen
Implementierung als gemeinsame Leitung ausgeführt sind, an. Dies führt dazu,
dass die beiden Knoten 22a, 22b auf Vss gelegt werden,
da die beiden Transistoren 640, 641, die in NMOS-Technik ausgeführt sind,
durchgeschaltet werden. Dies führt
unmittelbar dazu, dass der Transistor 643 ebenso gesperrt
ist wie der Transistor 642. Die Transistoren 643, 642 haben
daher im Vorbereitungsmodus keine Wirkung. Im Datenmodus sind dagegen,
wie es ausgeführt
worden ist, die Discharge-Transistoren 640 und 641 gesperrt.
Im Datenmodus wird einer der Knoten 22a, 22b aufgrund
der Tatsache, dass die Schaltstufe das Potential Vdd 16a entweder
auf den Knoten 22a oder auf den Knoten 22b durchgeschaltet
hat, hoch. Zur Erläuterung
der Funktionsweise der Transistoren 642 und 643 wird davon
ausgegangen, dass der Knoten 22b hoch ist. Dies führt dazu,
dass der Transistor 642 durchgeschaltet wird, um den Knoten 22a sicher
auf das niedrige Potential Vss zu legen. Damit wird gleichzeitig
sichergestellt, dass der Transistor 643 gesperrt ist, was wiederum
bewirkt, dass das Potential Vss, das auf der einen Seite des Transistors 643 anliegt,
nicht an dem Knoten 22b anliegen kann, dahingehend, dass der
Knoten 22b hoch bleibt, während der Knoten 22a sicher
niedrig bleibt, so dass ein eindeutiges Ergebnis erhalten wird,
nämlich
dass das Bit SUM0 hoch ist, während
das komplementäre
Bit SUM0 niedrig ist.
-
Die
Ausgangsstufe hat daher neben der Funktionalität des gewissermaßen Lieferns
des nicht durch die Schaltstufe bestimmten Bits im Datenmodus (aufgrund
des vorausgehenden Vorbereitungsmodus) auch die Funktionalität, im Datenmodus
beide Bits und insbesondere das nicht durch die Schaltstufe gelieferte
Bit gegenüber
Ladungslecks zu stabilisieren.
-
Ferner
hat die erfindungsgemäß bevorzugte Implementierung
der Ausgangsstufen gemäß 6 den Vorteil, dass keine Querströme fließen, so
dass die erfindungsgemäße Halbaddiererschaltung
neben ihrer Eigenschaft der Flächeneffizienz
und der Eigenschaft der hohen Performance auch einen niedrigen Stromverbrauch
hat.
-
In
den 6A und 6B sind
ferner interne Knoten 700–706 eingezeichnet,
die alle innerhalb der Schaltstufe angeordnet sind und im Vorbereitungsmodus
sowohl eingangsseitig als auch ausgangsseitig nicht mit irgendeinem
definierten Potential gekoppelt sind. Vorzugsweise wird für jeden
internen Knoten eine Knotenpotentialschaltung vorgesehen, um den
Knoten im Vorbereitungsmodus mit dem Bezugspotential zu verbinden.
Allerdings wird auch je nach Implementierung bereits das Behandeln
wenigstens einiger der internen Knoten zu einer Verbesserung gegenüber einer
Schaltung mit komplett floatenden internen Knoten führen, sodass
bereits die Querströme
erheblich reduziert sind. Ferner dürfte es in bestimmten Fällen auch
genügen,
nur die internen Knoten extra im Vorbereitungsmodus zu behandeln, die
besonders anfällig
für Restladungen
und insbesondere auch besonders anfällig für Koppelkapazitäten sind.
Damit kann auch in Schaltstufen mit einer hohen Anzahl von internen
Knoten zumindest eine Erhöhung
der Betriebssicherheit erreicht werden, ohne dass die Transistoranzahl
der Schaltstufe durch eine übergroße Anzahl
von Knotenpotentialschaltungen erheblich vergrößert wird.
-
6C zeigt
eine erfindungsgemäße bevorzugte
Knotenpotentialschaltung 710 für einen internen Knoten. Die
Knotenpotentialschaltung ist als Schalter ausgeführt, wobei ein Anschluss des
Schalters mit dem internen Knoten verbunden ist, während der
andere Anschluss des Schalters mit dem Bezugspotential verbunden
ist. An den Steueranschluss des Schalters wird das Steuersignal
angelegt. Bei dem bevorzugten Ausführungsbeispiel der vorliegenden
Erfindung ist der Schalter als NMOS- oder PMOS-Transistor ausgeführt. Abhängig von
der Transistorausführung
des Schalters wird das Steuersignal dann, wenn es im Vorbereitungsmodus
aktiv ist, einen logisch hohen oder logisch niedrigen Zustand haben.
Dieser Zustand muss so gewählt
sein, dass der Transistor in seiner entsprechend gewählten Ausführung als
PMOS- oder NMOS-Transistor im Vorbereitungsmodus zwischen Source
und Drain leitend wird, so dass die Knoten-Bezugspotential-Verbindung
erhalten wird. Dagegen muss das Steuersignal derart gewählt sein,
dass der Schalter-Transistor
im Datenmodus geöffnet
ist, dass also der interne Knoten vom Bezugspotential nichts merkt
und gemäß der Rechenvorschrift
des Rechenwerks und des bzw. der anliegenden Eingangsoperanden mit
einem hohen oder niedrigen Potential verbunden wird.