DE4019646A1 - Vorrichtung fuer echtzeitmultiplikation in 2er-komplement-darstellung in einem digitalen signalprozessorsystem und ein verfahren dafuer - Google Patents
Vorrichtung fuer echtzeitmultiplikation in 2er-komplement-darstellung in einem digitalen signalprozessorsystem und ein verfahren dafuerInfo
- Publication number
- DE4019646A1 DE4019646A1 DE4019646A DE4019646A DE4019646A1 DE 4019646 A1 DE4019646 A1 DE 4019646A1 DE 4019646 A DE4019646 A DE 4019646A DE 4019646 A DE4019646 A DE 4019646A DE 4019646 A1 DE4019646 A1 DE 4019646A1
- Authority
- DE
- Germany
- Prior art keywords
- multiplier
- msb
- complement
- partial sum
- output
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/53—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
- G06F7/5306—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel with row wise addition of partial products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/386—Special constructional features
- G06F2207/3884—Pipelining
Description
Die vorliegende Erfindung bezieht sich auf einen
Echtzeitmultiplizierer
(Hochgeschwindigkeitsmultiplizierer) zur Verwendung in
einem digitalen Signalprozessorsystem und insbesondere auf
einen Echtzeitmultiplizierer für die Multiplikation von im
2er-Komplement dargestellten Zahlen anstelle einer
Multiplikation von nicht komplementär dargestellten Daten.
Im allgemeinen arbeitet ein digitales
Signalprozessorsystem nicht immer mit positiven Werten.
Zum Beispiel wenn man den Fall betrachtet, daß ein
A/D-Konverter (Analog/Digital-Konverter) analoge
Eingangsdaten in ein digitales Signal umwandelt, um durch
Subtrahieren des so umgewandelten digitalen Signals, falls
eine A-B-Subtraktion vorgesehen ist, einen neuen Wert zu
erhalten, wobei falls der Wert von A größer ist als der
Wert von B das Ergebnis ein positiver Wert sein wird,
wodurch die Ausgangsdaten sicherlich gültig sein werden.
Ist jedoch der Wert von A kleiner als der Wert von B, so
werden die Ausgangsdaten einen negativen Wert darstellen,
was unerwünschtermaßen ein ungültiges Ergebnis bedeutet.
Daher ist es verständlich, daß der digitale Code nicht nur
in der Lage sein muß, mit positiven Werten (Zahlen) zu
rechnen, sondern auch mit negativen. Praktisch wird dies
dadurch erreicht, daß übliche digitale
Signalprozessorsysteme eine Anzahl von Codierschemata
beherrschen.
Die erste Möglichkeit besteht darin, einen
Vorzeichen-Betrags-Code zu verwenden, welcher zusätzlich
ein Extrabit an der ersten Stelle des Codes aufweist, um
anzeigen zu können, ob der Wert des Codes positiv oder
negativ ist. Dieses Codierschema teilt sich in einen Teil,
welcher den absoluten Wert der codierten Zahl und einen
anderen Teil, welcher das Vorzeichen davon anzeigt, auf.
Die zweite Möglichkeit ist ein Codierschema mit
2er-Komplement-Darstellung. Das zugrunde liegende Prinzip
des Codes mit 2er-Komplement-Darstellung liegt in dem
Konzept der Verwendung von komplementären Zahlen. Da
dieses Codierschema ohne Änderung für Addition und
Subtraktion verwendet werden kann, ist es in üblichen
digitalen Signalprozessorsystemen weit verbreitet.
In einem üblichen digitalen Signalprozessorsystem läßt
sich dasselbe Ergebnis unabhängig von dem verwendeten
Codierschema erhalten. Wird jedoch mit einer hohen
Frequenz (beispielsweise einige zehn MHz) getaktet, so
werden mehrere charakteristische Größen, insbesondere die
Geschwindigkeit, des digitalen Signalprozessorsystems,
stark von dem verwendeten Codierungsschema abhängen. Die
Bauweise des vorliegenden digitalen Signalprozessorsystems
kann als Kombination eines Addierers, eines Subtrahierers,
eines Multiplizierers und eines Dividierers betrachtet
werden, welche zusammen die codierten Eingangsdaten (z. B.
im normalen Binärcode, d. h. im nicht komplementär
dargestellten Code, im Vorzeichen-Absolut-Code
oder im 2er-Komplementcode) verarbeiten.
Unter den Operationen von Addierer, Subtrahierer,
Multiplizierer und Dividierer benötigen die Operationen
von dem Multiplizierer und dem Dividierer relativ viel
Zeit. Daher hängt die Systemgeschwindigkeit in hohem Maße
von der Bauweise des Multiplizierers und des Dividierers
ab.
Es ist allgemein bekannt, daß Codierschemata mit
2er-Komplement-Darstellung dadurch vorteilhaft sind, daß
negative Zahlen in einfacher Weise dargestellt und
verarbeitet werden können, wodurch die Übereinstimmung für
Addition und Subtraktion in günstiger Weise für die
Verarbeitung der Zahlen verwendet werden kann.
Bezugnehmend auf Fig. 1A und 1B läßt sich die Addition
(X+Y) mittels des Schaltkreises von Fig. 1A ausführen,
während die Subtraktion (X-Y) durch die Schaltung von
Fig. 1B ausgeführt werden kann. Dementsprechend sei
erwähnt, daß der Unterschied zwischen den beiden oben
angesprochenen Schaltungen in dem Zustand des
"Carry"-Eingangs cin und in dem Invertierer 108, welcher
nur in der Schaltung von Fig. 1B enthalten ist, liegt. Das
bedeutet, falls das "Carry"-Eingangssignal 0 ist, führt
die Schaltung von Fig. 1A die Addition aus, wenn jedoch
das "Carry"-Eingangssignal 1 ist, führt die Schaltung von
Fig. 1B die Subtraktion aus.
Entsprechend der allgemeinen Theorie der Binäroperationen
werden alle Bits einer Binärzahl zu den entsprechenden
Bits einer zu addierenden Binärzahl addiert, um dadurch
die Addition auszuführen. Bei der Subtraktion zweier
Binärzahlen werden jedoch auf die Bits der Binärzahl die
entsprechenden Bits einer im 2er-Komplement vorliegenden
Binärzahl aufaddiert. Es ist darauf hinzuweisen, daß eine
Zahl im 2er-Komplement dadurch erhalten wird, daß auf das
1er-Komplement eine 1 addiert wird. Diese Beziehung läßt
sich wie folgt ausdrücken:
A - B = A + (-B) = A + + 1 (1)
Die Formel (1) kann durch einen Addierer/Subtrahierer, wie
in Fig. 2 dargestellt, realisiert werden.
Für den Fall, daß Zahlen im 2er-Komplement multipliziert
werden, werden die Zahlen im 2er-Komplement in Vorzeichen
und Absolutwert aufgeteilt und der Absolutwert wird zuerst
multipliziert, und danach das Vorzeichen getrennt
korrigiert.
Betrachtet man nur den Absolutwert des Codes, so kann die
Multiplikation durch wiederholte Anwendung der
2er-Komplement-Addition erreicht werden. Bestehen jedoch
Multiplikator und Multiplikant aus Codes von großen
Zahlen, so muß das System erweitert werden, um die Addition
ausführen zu können. Um diesem Problem zu begegnen, wird
im allgemeinen eine bekannte Vorrichtung zur Vereinfachung
der Hardware des Systems verwendet, welche die Teilsummen
durch Addieren der beiden Codes berechnet. Dann werden die
Teilsummen nochmals zueinander addiert, um das Ergebnis
der Multiplikation zu erhalten. Bei Verwendung einer
solchen Vorrichtung stellt die beträchtlich reduzierte
Rechengeschwindigkeit den größten Nachteil dar.
Eine andere bekannte Vorrichtung zur Erhöhung der
Rechengeschwindigkeit ist ein Multiplizierer, der eine
Pipelinestruktur aufweist. Fig. 3 beschreibt einen
herkömmlichen Betrags-Multiplizierer mit Pipelinestruktur.
Alle in der Zeichnung dargestellten Zwischenspeicher
(latches) sind mit dem Systemtakt synchronisiert. Der
Zwischenspeicher 301 speichert den n-bit-Eingangswert X
und die entsprechenden Addierer 310, 313, 317, 323 sind
alle mit einem logischen "low" Carry-Signal cin
beaufschlagt.
Danach, wenn der n-bit-Eingangswert Y in dem Speicher 302
gespeichert ist, führen die logischen Verknüpfungsgatter
(gates) 303 und 304 eine UND-Verknüpfung zwischen dem Wert
Y mit den beiden LSB-Bits (least significant bits) X₀, X₁,
durch. Gleichzeitig speichert Zwischenspeicher 306 den
Eingangswert Y. Danach wird der Ausgangswert des Addierers
310 im Zwischenspeicher 311 gespeichert, um mit dem
Ausgangswert des UND-Gatters 308, in dem Addierer 313
addiert zu werden. Damit wird der Ausgang des Speichers
311 Sn zu
Sn = X₀ · Y + X₁ · Y · 2
Weiterhin ist die Teilsumme Ps in diesem Fall
Ps = X₀ · Y + X₁ · Y · 2 + X₂ · Y · 2²
Auf diese Weise werden die Teilsummen an jedem Addierer
erhalten und das Ergebnis wird zu einer nächsten Stufe
weitergegeben, um mit dem Multiplikanten addiert zu
werden.
Ein derartiger Betragsmultiplizierer mit Pipelinestruktur
hat in der Tat großen Einfluß auf die Erhöhung der
Rechengeschwindigkeit. Bei diesem Betragsmultiplizierer
ist es jedoch weiterhin nachteilig, daß er nicht mit
Zahlen im 2er-Komplement arbeiten kann.
Ein Ziel der Erfindung ist es daher, einen
Betragsmultiplizierer anzugeben, der in der Lage ist, die
Rechengeschwindigkeit zu erhöhen, indem er Gebrauch von
dem Prinzip der 2er-Komplement-Darstellung macht.
Ein weiteres Ziel der vorliegenden Erfindung ist es, einen
Betragsmultiplizierer zur direkten Verarbeitung von Codes
im 2er-Komplement anzugeben, der ohne Umwandlung des
Multiplikanten in das 2er-Komplement auskommt.
Ein weiteres Ziel der vorliegenden Erfindung ist es, einen
verbesserten Betragsmultiplizierer anzugeben, welcher eine
Pipelinestruktur für die Multiplikation von Codes mit
2er-Komplement aufweist.
Ein weiteres Ziel der vorliegenden Erfindung ist es, einen
Multiplizierer anzugeben, der eine direkte
2er-Komplement-Multiplikation, ohne getrenntes Berechnen
von Vorzeichen und Betrag des Multiplikanten, ausführt.
Ein weiteres Ziel der vorliegenden Erfindung ist es, ein
Verfahren und eine Schaltung anzugeben, welche nicht nur
die Multiplikation von Codes im 2er-Komplement richtigt
ausführen, sondern die es darüber hinaus für die
Pipelinestruktur möglich machen, eine Berechnung mit sehr
hoher Geschwindigkeit auszuführen.
Um die obengenannten Ziele und Merkmale der vorliegenden
Erfindung zu erreichen, enthält ein Betragsmultiplizierer
mit Pipelinestruktur die folgenden Komponenten: einen
Teilsummenkorrigierer zum Aufnehmen eines ersten
vorbestimmten Bits des Multiplikators und eines zweiten
vorbestimmten Bits des Multiplikanten, welcher den
Multiplikator nacheinander, entsprechend oft der Anzahl
der zweiten vorherbestimmten Bits und angefangen bei dem
LSB (least significant bit) multipliziert und das MSB
(most significant bit) der vorhergehenden Teilsumme mit
dem MSB der momentanen Teilsumme logisch ODER-verknüpft,
um die Teilsummen zu korrigieren; und einen
2er-Komplement-Korrigierer zum Subtrahieren des
Ergebnisses der letzten Partialsumme von einem Wert,
welcher durch NAND-Verknüpfen des Multiplikators mit dem
MSB (most significant bit) des zweiten vorbestimmten Bits
des Multiplikanten erhalten wird.
Für ein besseres Verständnis der Erfindung, und um zu
zeigen, wie diese ausgeführt werden kann, wird im
folgenden auf das Beispiel der Zeichnungen
eingegangen, welche im einzelnen darstellen:
Fig. 1A und 1B stellen jeweils einen Addierer und einen
Subtrahierer für die Verarbeitung von Codes mit
2er-Komplement dar,
Fig. 2 einen herkömmlichen
Addierer/Subtrahierer zur allgemeinen Verwendung,
Fig. 3 einen herkömmlichen Multiplizierer
mit Pipelinestruktur,
Fig. 4 eine Schaltung eines Multiplizierers
mit Pipelinestruktur entsprechend der vorliegenden
Erfindung und
Fig. 5 die Multiplikation von 5×12
entsprechend der vorliegenden Erfindung.
In Fig. 4 wird ein Betragsmultiplizierer der Erfindung
gezeigt, bei dem alle Zwischenspeicher (latches),
UND-Gatter und Addierer dieselben sind, wie in Fig. 3. Der
einzige Unterschied in der Zeichnung gegenüber dem
herkömmlichen Betragsmultiplizierer ist der, daß die
MSB-Bits (most significant bits) der Ausgangswerte der
UND-Gatter 303, 304 einem ODER-Gatter 401 zugeführt
werden, der Ausgang des ODER-Gatters 401 einem
Zwischenspeicher 311 zugeführt wird, und daß das MSB-Bit
(most significant bit) des Ausgangs des UND-Gatters 308
und das MSB-Bit (most significant bit) des Ausgangs des
Zwischenspeichers 311 einem ODER-Gatter 402 zugeführt
werden, um darin eine Teilsumme zu korrigieren. In
gleicher Weise werden die MSB-Bits des Ausgangs des
Zwischenspeichers 318 und das MSB-Bit des Ausgangs des
Zwischenspeichers 319 einem NAND-Gatter 323 zugeführt, der
Ausgang des NAND-Gatters 323 wird an den einen Eingang des
Addierers 321 angeschlossen, dessen zweiter Eingang mit
dem Ausgang des Zwischenspeichers 320 verbunden ist, um
damit die Codes im 2er-Komplement zu korrigieren. Auf
diese Weise wird eine Subtraktion für die Ausgänge des
NAND-Gatters 323 und des Zwischenspeichers 320 ausgeführt.
Darüber hinaus kann eine Mehrzahl von Abschnitten gleich
dem Abschnitt 40a, welcher aus den Zwischenspeichern 305,
306, 311, 312, dem UND-Gatter 308, dem ODER-Gatter 402 und
dem Addierer 313 besteht, nacheinander an die
entsprechenden Anschlüsse des Abschnitts 40b angeschlossen
werden.
Fig. 5 zeigt ein besonders beschriftetes
Ausführungsbeispiel der Erfindung, bei dem ein
Multiplikant X 12 ist und ein Multiplikator Y 5 ist.
Dieses Ausführungsbeispiel zeigt eine Multiplikation der
zwei Werte X und Y.
Für das einfache Verständnis der Erfindung wird im
folgenden die Theorie der Umwandlung von einem Code in
Normaldarstellung (normale Binärcode) in einen Code mit
2er-Komplement-Darstellung kurz beschrieben. Wenn
angenommen wird, daß der Multiplikant F mit einem
Multiplikator R multipliziert wird und die beiden Werte
der Codes in 2er-Komplement-Darstellung vorliegen, lassen
sich die entsprechenden Werte wie folgt anschreiben
|F = Fn-1, Fn-2, . . ., F₂, F₁, F₀ (2)
(zum Beispiel F = 1010001)
(zum Beispiel F = 1010001)
|R = Gn-1, Gn-2, . . ., G₂, G₁, G₀ (3)
(zum Beispiel R = 011001)
(zum Beispiel R = 011001)
Die Beträge der oben dargestellten Codes in
2er-Komplement-Darstellung sind
In den obengenannten Formeln ist der Code in
2er-Komplement-Darstellung positiv, wenn das MSB-Bit (most
significant bit) 0 ist, während der Code in
2er-Komplement-Darstellung negativ ist, wenn das MSB-Bit
(most significant bit) 1 ist. Daher können die Werte der
Codes in 2er-Komplement-Darstellung wie folgt berechnet
werden
Fv = -2⁵ + 2³ + 1 = -23 (Negative) (6)
Rv = 2⁴ + 2³ + 1 = 25 (Positive) (7)
Ähnlich wie bei der Berechnung in Fig. 4 führt der
Multiplizierer mit Pipelinestruktur in Fig. 5 wiederholt
die oben beschriebene Addition aus, um damit die gewünschte
Multiplikation zu erreichen. Wenn der Multiplikant F und
der Multiplikator R in Codes mit
2er-Komplement-Darstellung umgewandelt werden, so werden
die Werte wie folgt berechnet
worin Ri 0 oder 1 ist. Es wird daher, um die
Multiplikation von zwei Codes in
2er-Komplement-Darstellung auszuführen, der Multiplikant F
wiederholt auf sich selbst addiert, nachdem er
entsprechend des Wertes von Ri bei jeder Addition
weitergeschoben wird. Soweit es diese Berechnung betrifft,
so ist es dieselbe wie bei der Addition von Codes in
normaler Darstellung. Entsprechend der besonderen
Charakteristik der Codes in 2er-Komplement-Darstellung
unterscheidet sich die Multiplikation der Codes in
2er-Komplement-Darstellung von der mit
Codes in normaler Darstellung dann, wenn das MSB-Bit (most
significant bit) berechnet wird. Genauer gesagt, falls der
Wert des MSB-Bit (most significant bit), Rn-1 0 ist,
tauchen keine Schwierigkeiten bei der Ausführung der
Multiplikation im 2er-Komplement gegenüber der Berechnung
mit Codes in normaler Darstellung auf. Falls jedoch der
Wert des MSB-Bit (most significant bit) 1 ist, wird es
notwendig, daß der Multiplizierer das MSB-Bit, welches in
diesem Fall 1 ist, von der Teilsumme, die bis dahin
aufaddiert wurde, subtrahiert.
Entsprechend der allgemeinen Theorie für Codes in
2er-Komplement-Darstellung werden, um ein Codewort in
2er-Komplement-Darstellung zu erhalten, zuerst alle Bits
des Codeworts invertiert (was der
1er-Komplement-Darstellung entspricht), und anschließend
wird auf das invertierte Ergebnis eine binäre 1 addiert.
Wie in Fig. 1B gezeigt, wird daher die Subtraktion
ausgeführt, indem alle Bits eines Multiplikanten
invertiert werden und durch Zuführung eines Carry-Signals
vom logischen Pegel 1 zu dem Carry-Eingang cin.
Aufbauend auf diesem Prinzip, kann die Korrektur der Codes
in 2er-Komplement-Darstellung durchgeführt werden, wie
dies in Fig. 4 gezeigt ist, wobei die Ausgänge der
Zwischenspeicher 318, 319 mittels des NAND-Gatters 322
verknüpft werden und der Ausgang des NAND-Gatters 322 zu
dem Ausgang des Zwischenspeichers 320 addiert wird.
Im folgenden wird zum Verständnis der von den ODER-Gattern
401, 402 und 403 produzierten Teilsummen ein Beispiel mit
einem 4-Bit langen Code in 2er-Komplement-Darstellung
gegeben. Sind die Codes im 2er-Komplement gegeben zu
F=1100 und R=1011,
Fv = -2³ + 2² = -4 (12)
Rv = -2³ + 2¹ + 2⁰ = -5 (13)
Bei dieser Operation werden der Multiplikator und der
Multiplikant entsprechend logisch mittels der UND-Gatter
303, 304 multipliziert, die entsprechenden Ausgänge der
obigen Gatter werden dem Addierer 310 zugeführt, so daß
der Ausgang einem Zwischenspeicher 311 zugeführt werden
kann.
Es kann daher durch Verwendung der speziellen
Charakteristik der Codes in 2er-Komplement-Darstellung die
Multiplikation dadurch ausgeführt werden, daß die zwei
Codes addiert werden. Gleichzeitig wird eine
Vorzeichenerweiterung ausgeführt, die in der obigen Formel
mit F bezeichnet ist. Die Vorzeichenerweiterung kann
wiederum ausgedrückt werden zu
Das Ergebnis obiger Berechnung wird mit dem Addierer 313
mit dem Multiplikanten, welcher mit dem Bit 2 des
Multiplikators logisch UND-verknüpft ist, addiert. Danach
werden die MSB-Bits (most significant bits) des
Zwischenspeichers 311 und des UND-Gatters 308 mittels des
ODER-Gatters 402 logisch ODER-verknüpft und der Ausgang
des ODER-Gatters 402 wird dem Zwischenspeicher 316
zugeführt, wobei dessen Ausgang sich ergibt zu
Es wird festgestellt, daß bei der obigen beispielhaften
Berechnung ein Übertrag (overflow) produziert wird, falls
eine Vorzeichenerweiterung gemacht wurde. Da jedoch der
Übertrag so wie bei der nächsten Stufe verwendet wird und
die Vorzeichenerweiterung selbstverständlich gemacht wird,
ist es nicht notwendig, die Codes zu korrigieren.
In dieser Weise werden, wenn der n-bit-Multiplikator und
-Multiplikant jeweils den Zwischenspeichern 301 und 302
zugeführt ist und das LSB₀ (least significant bit) und
LSB₁ des Multiplikators jeweils den UND-Gattern 303, 304
zugeführt ist, um mit dem n-bit-Multiplikant logisch
UND-verknüpft (multipliziert) werden, die Ausgänge der
UND-Gatter mit dem Addierer 310 miteinander addiert. In
diesem Ausführungsbeispiel wird das ODER-Gatter 401 zur
Korrektur der Teilsumme verwendet, welche durch Addition
der Ausgänge der UND-Gatter 303, 304 erzeugt wurde. Die
Ausgänge des Addierers 310 und des ODER-Gatters 401 werden
in dem Zwischenspeicher 311 gespeichert. Die gleiche
Berechnung wird entsprechend ausgeführt, bis das MSB (most
significant bit) des Multiplikators verarbeitet wurde.
Schließlich werden das MSB von dem Zwischenspeicher 318
und der n-bit-Multiplikant, welcher durch den
Zwischenspeicher 319 geführt wird, mittels des
NAND-Gatters 322 verknüpft.
Als nächstes wird die Subtraktion zwischen dem Ausgang des
NAND-Gatters 322 und dem Ausgang des Zwischenspeichers 320
durch die Addition der obengenannten Ausgänge mittels des
Addierers 323 addiert, wobei der Carry-Eingang cin in
entgegengesetzter Weise zu den Carry-Eingängen cin der
Addierer 310, 313, 317 eine logische 1 erhält. Als Folge
der obengenannten Operationen wird eine erfolgreiche
Multiplikation von F×R ausgeführt.
Gegenüber dem obengenannten Fall, wo keine Korrektur des
2er-Komplements notwendig war, wird ein anderes Beispiel,
welches eine Korrektur des 2er-Komplements benötigt,
vorgestellt. Wenn z. B. eine Teilsumme aus einer binären
11XXXX (wobei X eine "don't care"-Stelle darstellt)
besteht, können zwei Fälle auftreten. Der eine ist, es
liegt eine logische 1 vor, was eine Multiplikation
notwendig macht. Der andere, es liegt eine logische 0 vor,
was eine Multiplikation unnötig macht. Praktisch bedeutet
das, liegt eine 0 vor, gibt es keine Schwierigkeiten beim
Multiplizieren der Codes. Liegt jedoch eine logische 1
vor, so wird die Operation "Teilsumme + zu
multiplizierender Wert" wie folgt ausgedrückt, entsprechend
der Charakteristik des Multiplizierers.
Aus der obigen Operation ist verständlich, daß das
Resultat der Partialsummenoperationen das Vorzeichen des
Codes von einer negativen Zahl zu einer positiven Zahl
umgekehrt hat. Um diese Fehlberechnung zu korrigieren,
werden die ODER-Gatter 401, 402, 403 benützt. Weiterhin,
falls das Ergebnis der Teilsummenoperation das Vorzeichen
von positiv nach negativ invertiert, produzieren die
ODER-Gatter 401, 402, 403 erneut das MSB-Bit (most
significant bit), wodurch die Multiplikation geleistet
werden kann.
In Fig. 5 wird ein anderes Beispiel gezeigt, bei dem der
Multiplikant 12 und der Multiplikator 5 ist. Um nämlich,
um es kurz zu machen, einen Code in
2er-Komplement-Darstellung zu verarbeiten, zieht der
erfinderische Multiplizierer den Ausgang des NAND-Gatters
322 der letzten Stufe, welche das MSB-Bit (most
significant bit) des Codes im 2er-Komplement berechnet,
von dem Ausgang des Zwischenspeichers 320 ab, wobei der
Carry-Eingang mit einem gegebenen logischen Signal
versorgt wird, um dem Addierer die Subtraktion zu
ermöglichen. Bei der Berechnung der Teilsumme wird, um
einen Überlauf zu korrigieren, das MSB-Bit (most
significant bit) der Teilsumme logisch zu dem MSB-Bit des
Multiplikanten addiert, welche durch die UND-Gatter 304,
308, 315 entsprechend den jeweiligen Bits des
Multiplikators, bereitgestellt wird. Dadurch kann die
Multiplikation durch das Konvertieren des MSB-Bits (most
significant bit) ausgeführt werden.
Obwohl die Berechnungen in konkreter Weise mit
2er-Komplementen ausgeführt wurden, können die Ziele der
vorliegenden Erfindung leicht von auf diesem Gebiet
arbeitenden Fachleuten auch dann erreicht werden, wenn das
NAND-Gatter 322 in Fig. 4 zu einem UND-Gatter wird und das
Carry-Signal cin des Addierers 323 auf 0 gesetzt wird,
wenn der eine ein Code in 2er-Komplement-Darstellung und
der andere ein Code in Normaldarstellung anstelle von
einer Multiplikation mit zwei 2er-Komplementen, bei dem
das MSB (most significant bit) in dem digitalen
Signalprozessor korrigiert wird, ist.
Die vorliegende Erfindung ist daher insoweit vorteilhaft,
als sie eine korrekte Berechnung eines Codes in
2er-Komplement-Darstellung durchführt und eine hohe
Rechengeschwindigkeit zuläßt, die ein Verdienst der
Pipelinestruktur ist, sie macht es möglich, durch
Korrigieren des MSB-Bits (most significant bit) der
Partialsumme und des MSB-Bits der zu multiplizierenden
Zahl, 2er-Komplemente zu berechnen, was in dem
Betragsmultiplizierer mit Pipelinestruktur unmöglich ist.
Obwohl die Erfindung insbesondere anhand von einem
bevorzugten Ausführungsbeispiel gezeigt und beschrieben
wurde, wird es für Fachleute verständlich sein, daß
Veränderungen im Detail gemacht werden können, ohne damit
von der Idee und der Reichweite der Erfindung abzuweichen.
Claims (5)
1. Vorrichtung zur Multiplikation von Codes in 2er-
Komplement-Darstellung in einem Multiplizierer mit
Pipelinestruktur mit einer Vielzahl von
Zwischenspeichern (301, 302, 305, 306, 311, 312, 303,
307, 316, 314, 318, 319, 320, 321, 324, 325) und einer
Vielzahl von Addierern (310, 313, 317, 323)
gekennzeichnet durch
eine Einrichtung zur Korrektur von Teilsummen (401, 402, 403, 311, 316, 320), welche ein erstes vorherbestimmtes Bit eines Multiplikators und ein zweites vorherbestimmtes Bit eines Multiplikanten aufnimmt, einen Multiplikator nacheinander, angefangen bei dem LSB entsprechend oft der Zahl der zweiten vorherbestimmten Bit multipliziert, und ein MSB von einer vorhergehenden Teilsumme logisch ODER-verknüpft mit einem MSB von einer momentanen Teilsumme, um auf diese Weise die Teilsumme zu korrigieren, und
eine Einrichtung zur Korrektur von 2er-Komplementen 323, 322) zur Subtraktion des Ausgangs einer letzten Teilsumme von einem Wert, welcher durch NAND-Verknüpfen des Multiplikators und dem MSB des zweiten vorherbestimmten Bits des Multiplikanten erhalten wird.
eine Einrichtung zur Korrektur von Teilsummen (401, 402, 403, 311, 316, 320), welche ein erstes vorherbestimmtes Bit eines Multiplikators und ein zweites vorherbestimmtes Bit eines Multiplikanten aufnimmt, einen Multiplikator nacheinander, angefangen bei dem LSB entsprechend oft der Zahl der zweiten vorherbestimmten Bit multipliziert, und ein MSB von einer vorhergehenden Teilsumme logisch ODER-verknüpft mit einem MSB von einer momentanen Teilsumme, um auf diese Weise die Teilsumme zu korrigieren, und
eine Einrichtung zur Korrektur von 2er-Komplementen 323, 322) zur Subtraktion des Ausgangs einer letzten Teilsumme von einem Wert, welcher durch NAND-Verknüpfen des Multiplikators und dem MSB des zweiten vorherbestimmten Bits des Multiplikanten erhalten wird.
2. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet,
daß die Einrichtung zur Korrektur der Teilsummen
umfaßt:
Einrichtungen (401, 402, 403), welche wirkungsmäßig mit den entsprechenden MSB einer vorhergehenden Teilsumme und dem Multiplikator verbunden sind, um die entsprechenden MSB logisch ODER zu verknüpfen, und
Einrichtungen (311, 316, 320), welche wirkungsmäßig mit dem Ausgang der genannten Einrichtungen zur ODER-Verknüpfung und dem Ausgang einer entsprechenden Teilsumme verbunden sind, zum Erstellen der korrigierten Teilsumme.
Einrichtungen (401, 402, 403), welche wirkungsmäßig mit den entsprechenden MSB einer vorhergehenden Teilsumme und dem Multiplikator verbunden sind, um die entsprechenden MSB logisch ODER zu verknüpfen, und
Einrichtungen (311, 316, 320), welche wirkungsmäßig mit dem Ausgang der genannten Einrichtungen zur ODER-Verknüpfung und dem Ausgang einer entsprechenden Teilsumme verbunden sind, zum Erstellen der korrigierten Teilsumme.
3. Vorrichtung nach Anspruch 2, dadurch gekennzeichnet,
daß die Einrichtung zur Korrektur der 2er-Komplemente
umfaßt:
Einrichtung (322), wirkungsmäßig verbunden mit dem Multiplikator und dem Multiplikanten, zum selektiven Übertragen des Multiplikators aufgrund des MSB des Multiplikanten, und
mit der Einrichtung zum Übertragen verbundene Einrichtung (323) zur Subtraktion der letzten Teilsumme von dem Ausgang der Übertragungseinrichtung.
Einrichtung (322), wirkungsmäßig verbunden mit dem Multiplikator und dem Multiplikanten, zum selektiven Übertragen des Multiplikators aufgrund des MSB des Multiplikanten, und
mit der Einrichtung zum Übertragen verbundene Einrichtung (323) zur Subtraktion der letzten Teilsumme von dem Ausgang der Übertragungseinrichtung.
4. Eine Vorrichtung nach Anspruch 2, dadurch
gekennzeichnet, daß die Anzahl der Einrichtungen (401,
402, 403) zur ODER-Verknüpfung um 2 kleiner ist als
die Anzahl der zweiten vorherbestimmten Bits des
Multiplikanten.
5. Verfahren zur Multiplikation von Codes in 2er-Kom
plement-Darstellung in einen Multiplizierer mit Pipelinestruktur,
gekennzeichnet durch
Empfangen eines ersten vorherbestimmten Bits eines Multiplikators und eines zweiten vorherbestimmten Bits eines Multiplikanten,
Erstellen eines Multiplikators, der entsprechend oft der Zahl der zweiten vorherbestimmten Bits multipliziert wird, angefangen bei dem LSB,
logische ODER-Verknüpfung eines MSB der vorhergehenden Teilsumme mit einem MSB der momentanen Teilsumme zur Korrektur der Teilsummen, und
Subtrahieren des Ausgangs der letzten Teilsumme von einem Wert, der durch logische NAND-Verknüpfung des Multiplikators mit dem MSB des zweiten vorherbestimmten Bits des Multiplikanten erhalten wird.
Empfangen eines ersten vorherbestimmten Bits eines Multiplikators und eines zweiten vorherbestimmten Bits eines Multiplikanten,
Erstellen eines Multiplikators, der entsprechend oft der Zahl der zweiten vorherbestimmten Bits multipliziert wird, angefangen bei dem LSB,
logische ODER-Verknüpfung eines MSB der vorhergehenden Teilsumme mit einem MSB der momentanen Teilsumme zur Korrektur der Teilsummen, und
Subtrahieren des Ausgangs der letzten Teilsumme von einem Wert, der durch logische NAND-Verknüpfung des Multiplikators mit dem MSB des zweiten vorherbestimmten Bits des Multiplikanten erhalten wird.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019890008480A KR920003494B1 (ko) | 1989-06-20 | 1989-06-20 | 디지탈 신호처리 시스템에서의 실시간 2's 콤플리멘트코드 숫자의 승산방법 및 회로 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE4019646A1 true DE4019646A1 (de) | 1991-01-10 |
DE4019646C2 DE4019646C2 (de) | 1995-01-19 |
Family
ID=19287253
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE4019646A Expired - Fee Related DE4019646C2 (de) | 1989-06-20 | 1990-06-20 | Vorrichtung und Verfahren zum Multiplizieren von Datenwörtern in Zweier-Komplement-Darstellung |
Country Status (6)
Country | Link |
---|---|
US (1) | US5181184A (de) |
JP (1) | JP2608165B2 (de) |
KR (1) | KR920003494B1 (de) |
DE (1) | DE4019646C2 (de) |
FR (1) | FR2648585B1 (de) |
GB (1) | GB2234374B (de) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69329260T2 (de) * | 1992-06-25 | 2001-02-22 | Canon Kk | Gerät zum Multiplizieren von Ganzzahlen mit vielen Ziffern |
US5404323A (en) * | 1993-11-09 | 1995-04-04 | United Microelectronics Corp. | Pipelined multiplier for signed multiplication |
US5734601A (en) | 1995-01-30 | 1998-03-31 | Cirrus Logic, Inc. | Booth multiplier with low power, high performance input circuitry |
US6347326B1 (en) * | 1999-03-02 | 2002-02-12 | Philips Electronics North America Corporation | N bit by M bit multiplication of twos complement numbers using N/2+1 X M/2+1 bit multipliers |
US6584483B1 (en) * | 1999-12-30 | 2003-06-24 | Intel Corporation | System and method for efficient hardware implementation of a perfect precision blending function |
US7124237B2 (en) * | 2002-10-03 | 2006-10-17 | Seagate Technology Llc | Virtual machine emulation in the memory space of a programmable processor |
KR101005718B1 (ko) * | 2003-05-09 | 2011-01-10 | 샌드브리지 테크놀로지스, 인코포레이티드 | 포화와 함께 또는 포화 없이 다중 오퍼랜드들의 누산을 위한 프로세서 감소 유닛 |
US8074051B2 (en) * | 2004-04-07 | 2011-12-06 | Aspen Acquisition Corporation | Multithreaded processor with multiple concurrent pipelines per thread |
DE102007056104A1 (de) * | 2007-11-15 | 2009-05-20 | Texas Instruments Deutschland Gmbh | Verfahren und Vorrichtung zur Multiplikation von Binäroperanden |
CN112749796A (zh) * | 2019-10-31 | 2021-05-04 | 爱思开海力士有限公司 | 用于神经网络的计算设备 |
US11915125B2 (en) | 2019-10-31 | 2024-02-27 | SK Hynix Inc. | Arithmetic devices for neural network |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3956622A (en) * | 1974-12-20 | 1976-05-11 | Bell Telephone Laboratories, Incorporated | Two's complement pipeline multiplier |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR1149028A (fr) * | 1956-04-16 | 1957-12-19 | Electronique & Automatisme Sa | Multiplieur numérique perfectionné |
US4761756A (en) * | 1983-08-24 | 1988-08-02 | Amdahl Corporation | Signed multiplier with three port adder and automatic adjustment for signed operands |
US4736335A (en) * | 1984-11-13 | 1988-04-05 | Zoran Corporation | Multiplier-accumulator circuit using latched sums and carries |
-
1989
- 1989-06-20 KR KR1019890008480A patent/KR920003494B1/ko not_active IP Right Cessation
-
1990
- 1990-06-18 FR FR9007569A patent/FR2648585B1/fr not_active Expired - Fee Related
- 1990-06-18 GB GB9013572A patent/GB2234374B/en not_active Expired - Fee Related
- 1990-06-20 DE DE4019646A patent/DE4019646C2/de not_active Expired - Fee Related
- 1990-06-20 US US07/540,686 patent/US5181184A/en not_active Expired - Lifetime
- 1990-06-20 JP JP2162540A patent/JP2608165B2/ja not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3956622A (en) * | 1974-12-20 | 1976-05-11 | Bell Telephone Laboratories, Incorporated | Two's complement pipeline multiplier |
Also Published As
Publication number | Publication date |
---|---|
JPH0331930A (ja) | 1991-02-12 |
GB2234374B (en) | 1993-08-18 |
GB9013572D0 (en) | 1990-08-08 |
FR2648585A1 (fr) | 1990-12-21 |
KR920003494B1 (ko) | 1992-05-01 |
JP2608165B2 (ja) | 1997-05-07 |
FR2648585B1 (fr) | 1997-01-31 |
US5181184A (en) | 1993-01-19 |
GB2234374A (en) | 1991-01-30 |
DE4019646C2 (de) | 1995-01-19 |
KR910001535A (ko) | 1991-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE4302898C2 (de) | Arithmetische Recheneinheit mit Akkumulierfunktion | |
DE2246968A1 (de) | Einrichtung zur kombination, insbesondere multiplikation, zweier gleitkommazahlen | |
DE1549476B2 (de) | Anordnung zur ausfuehrung von divisionen | |
DE1162111B (de) | Gleitkomma-Recheneinrichtung | |
DE4019646C2 (de) | Vorrichtung und Verfahren zum Multiplizieren von Datenwörtern in Zweier-Komplement-Darstellung | |
DE1549477B1 (de) | Einrichtung zur schnellen akkumulation einer anzahl mehr stelliger binaerer operanden | |
DE2623986A1 (de) | Parallelrechenwerk | |
DE3609250C2 (de) | ||
DE69434806T2 (de) | Verfahren, System und Vorrichtung zum automatischen Entwurf einer Multiplikatorschaltung und durch die Durchführung dieses Verfahrens entworfene Multiplikatorschaltung | |
DE2758130C2 (de) | Binärer und dezimaler Hochgeschwindigkeitsaddierer | |
DE19618120B4 (de) | Parallelverarbeitungs-Divisionsschaltung | |
DE10013068C2 (de) | Potenzierungsoperationsvorrichtung | |
DE3701599A1 (de) | Vielfunktions-arithmetisch-logische-schaltung | |
EP0628183B1 (de) | Schaltungsanordnung zum digitalen multiplizieren von integer-zahlen | |
DE3434777C2 (de) | ||
DE3440680C2 (de) | ||
EP0139207A2 (de) | Schaltung zur CSD-Codierung einer im Zweierkomplement dargestellten, binären Zahl | |
DE3340362A1 (de) | Verfahren und vorrichtung zur division von bcd-zahlen | |
DE4010735A1 (de) | Digitale wortserielle multiplizierschaltung | |
DE3931545A1 (de) | Gleitkommaprozessor | |
DE2727051A1 (de) | Einrichtung zur binaeren multiplikation einer zahl mit einer summe aus zwei zahlen | |
DE3132611C2 (de) | ||
DE19644688A1 (de) | Schaltungsanordnung einer digitalen Multiplizierer-Baugruppe, zur Verarbeitung von Binärzahlen sowie Elementen aus GF(2 APPROX ) | |
EP0416153B1 (de) | Verfahren für Datenverarbeitungsanlagen zur Division von, zu Beginn jeweils normalisierten, beliebig langen Operanden und Divisionswerk zur Durchführung des Verfahrens | |
DE3700740A1 (de) | Linearapproximationsumformschaltung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |