-
HINTERGRUND
DER ERFINDUNG
-
Die vorliegende Erfindung betrifft
ein Multiplikationssystem für
digitale Signalverarbeitung und insbesondere ein Multiplikationsverfahren
mit einer positiven/negativen symmetrischen Rundungsfunktion zum
Vermindern eines Fehlers, und eine Schaltung hierfür.
-
Multiplikationsschaltungen mit einer
Rundungsfunktion werden üblicherweise
verwendet, um die Genauigkeit des Multiplikationsergebnisses zu verbessern,
wie z. B. in der japanischen Patent-Offenlegungsschrift Nr. 6-053228
und 6-103304 gelehrt. Die herkömmliche
Multiplikationsschaltung hat jedoch die folgenden ungelösten Probleme
(1) bis (3).
-
- (1) Wenn mehrere Produkte akkumuliert werden, wird die erwünschte Genauigkeit
nicht mit der Rundungsfunktion erzielt. Insbesondere, wenn eine
EINS zu einem Bit gerade unterhalb der zu rundenden Zahl addiert
wird, ist der Mittelwert der zu rundenden Zahl keine NULL. Die resultierenden
Fehler werden nacheinander akumuliert.
- (2) Ein Verfahren nach Art einer Fehlerkorrektur ist für einen
Mikroprozessor oder eine ähnliche
Anwendung nicht durchführbar,
die eine Korrektur, zu jedem Operationszeitpunkt durchführt, um
das Operationsergebnis in einer Registerdatei zu speichern. Unter Annahme
einer Multiplikation mit n Bits tritt ein Wert zum Korrigieren eines
Fehlers genauer gesagt lediglich bei einer Zahl auf, die sogar geringer
als das niedrigste Bit eines Produktes mit 2n Bits ist. Daher würde der
Korrekturwert, sofern das Produkt durch Korrektur zu jedem Rechnungszeitpunkt
gerundet werden sollte, abgerundet werden und würde daher keinen Korrektureffekt
im resultierenden Produkt haben.
- (3) Die Schaltung ist nicht praktikabel ohne Vergrößern der
Hardware. Die in der Offenlegungsschrift Nr. 6-103304 vorgeschlagene
Schaltung weist beispielsweise zusätzlich einen Subtrahierer zur
Korrektur des mittleren Fehlers der Rundungsberechnung auf. Dies
vergrößert den
Hardware-Aufwand und damit auch die Verarbeitungszeit.
-
Die Druckschrift EP-A-0 562 513 aus
dem Stand der Technik beschreibt eine Rundungsoperationsschaltung
für ein
arithmetisches Logikmittel eines Signalprozessors, die zum Zählen von
Brüchen über 1/2
als Eins und Verwerfen des Restes für die positiven und negativen
Zahlen vorgesehen ist, die eine Decoderschaltung mit einem (n +
1)-langen Eingang umfaßt,
an den ein erstes über
ein Zweier-Komplement dargestelltes Eingangssignal und ein zweites
n Bit langes Eingangssignal zum Angeben der Rundungsposition des
ersten Signals eingegeben werden, wenn das erste Eingangssignal
positiv ist, wird ein Signal, bei dem das Bit an der Rundungsposition gleich
"1" ist und der Rest gleich "0" ist, ausgegeben, basierend auf dem
zweiten Eingangssignal, und wenn das erste Eingangssignal negativ
ist, wird ein Signal, bei dem die weniger signifikanten Bits als
das Bit bei der Rundungsposition alle gleich "1" sind und der Rest
gleich "0" ist, ausgegeben; ein arithmetische Logikmittel zum Addieren
des Ausgangssignal dieser Decoderschaltung und des ersten Eingangssignals; und
eine Abrundungsschaltung zum Hinzuzählen einer 1 und zum Wegschneiden
von 0, positiv und negativ symmetrisch um irgendeine Rundungsposition, um
eine schnelle und genaue Rundungsoperation zu ermöglichen.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Es ist daher ein Ziel der vorliegenden
Erfindung, ein Multiplikationsverfahren bereitzustellen, das einen
Fehler speziell für
eine Rundung vermindert und dabei die Genauigkeit im Falle einer
Multiplikation und der Akkumulation der Ergebnisse der Multiplikation
verbessert, und eine Schaltung hierfür.
-
Es ist ein weiteres Ziel der vorliegenden
Erfindung, ein Mul-tiplikationsverfahren
bereitzustellen, das eine genaue Be rechnung garantiert, selbst wenn es
beispielsweise bei einem Mikroprozessor angewandt wird, die eine
Multiplikation und ein Runden durch eine einzelne Berechnung abschließt, und
eine Schaltung hierfür.
-
Es ist ein weiteres Ziel der vorliegenden
Erfindung, eine Multiplikationsschaltung bereitzustellen, die ein
Minimum an zusätzlicher
Hardware benötigt
und eine genaue Berechnung sicherstellt.
-
Es ist ein Verfahren zum Runden eines
Multiplikationsproduktes bereitgestellt, wie es in Anspruch 1 definiert
ist.
-
Eine Multiplikationsschaltung, die
das Verfahren durchführt,
ist in Anspruch 2 angegeben.
-
Weitere Ausführungsbeispiele der Erfindung sind
auch in den beigefügten
abhängigen
Ansprüchen
angegeben.
-
KURZE BESCHREIBUNG
DER ZEICHNUNG
-
Die obigen und weitere Ziele, Merkmale
und Vorteile der vorliegenden Erfindung werden aus der nachfolgenden
detaillierten Beschreibung mit Bezug auf die beigefügte Zeichnung
deutlich, in der:
-
1 ein
Blockdiagramm ist, das schematisch eine herkömmliche Multiplikationsschaltung
mit einer Rundungsfunktion zeigt;
-
2 die
Operation der in 1 dargestellten
Schaltung zeigt;
-
3 ein
Blockdiagramm ist, das schematisch ein herkömmliches digitales Berechnungssystem
mit einer Rundungsfunktion zeigt;
-
4 ein
Blockdiagramm ist, das schematisch ein erstes Ausführungsbeispiel
der Multiplikationsschaltung mit einer Rundungsfunktion gemäß der vorliegenden
Erfindung zeigt;
-
5 das
Operationsprinzip des ersten Ausführungsbeispiels zeigt;
-
6A und 6B jeweils eine spezielle
Operation des ersten Ausführungsbeispiels
zeigen;
-
7 ein
schematisches Blockdiagramm ist, das ein zweites Ausführungsbeispiel
der vorliegenden Erfindung zeigt;
-
8 die
allgemeine Konfiguration eines Unterproduktaddierers zeigt, der
im zweiten Ausführungsbeispiel
enthalten ist;
-
9 ein
schematisches Blockdiagramm ist, das ein drittes Ausführungsbeispiel
der vorliegenden Erfindung zeigt.
-
BESCHREIBUNG
DER BEVORZUGTEN AUSFÜHRUNGSBEISPIELE
-
Für
ein besseres Verständnis
der vorliegenden Erfindung wird kurz auf eine herkömmliche
Multiplikationsschaltung mit einer Rundungsfunktion, wie sie in 1 gezeigt ist, Bezug genommen.
Wie gezeigt, ist die Multiplikationsschaltung aus einem Unterproduktgenerator 1,
einem Unterproduktaddierer 2, und einem Addierer 3 aufgebaut.
Ein Multiplikand X und ein Multiplikator Y werden dem Unterproduktgenerator 1 eingegeben.
Der Unterproduktgenerator 1 gibt mehrere Unterproduktterme 24 aus.
Unter der Annahme von acht Bits gibt der Unterproduktgenerator 1 fünf Terme
unter Anwendung der Booth-Methode aus. Wenn die fünf Terme
vom Unterproduktaddierer 2 addiert wer den, bleiben zwei
Terme 25 übrig. Der
Addierer 3 addiert die beiden Terme 25 und gibt dabei
ein Produkt Z aus.
-
Wenn ein Multiplikator und ein Multiplikand mit
jeweils n Bits multipliziert werden, wird ein Produkt mit 2n Bits
erzeugt. Das Produkt mit 2n Bits wird auf n Bits gerundet, da die
nachfolgende Berechnung oftmals lediglich eine Genauigkeit von n
Bits hat. Beispielsweise werden, wenn die oberen n Bits ausgewählt sind,
die unteren n Bits durch Aufrunden, Abrunden oder Runden auf die
nächste
ganze Zahl gerundet. Runden auf die nächste ganze Zahl ist hinsichtlich
der Genauigkeit wünschenswert.
Genauer gesagt, wenn das Bit gerade unterhalb der oberen n Bits
eine EINS ist, wird es aufgerundet; wenn dieses Bit eine NULL ist,
wird es abgerundet . Wenn ein Multiplikator und ein Multiplikand
mit jeweils 8 Bits multipliziert werden, hat das Produkt vor dem
Runden 16 Bits. In diesem Fall wird eine binäre "10000000" zu den unteren
acht Bits des Produkts mit sechzehn Bits für eine Korrektur addiert, und
dann werden die oberen acht Bits erzeugt. Dies kann durchgeführt werden,
falls der Unterproduktaddierer 2 mit einem zusätzlichen
Eingang 21 ausgestattet ist und falls der Korrekturterm
(Rundungskorrekturterm) dem Eingang 21 zugeführt wird.
Die Ausgabe mit den beiden Termen 25 vom Unterproduktaddierer 2 werden
vom Addierer 3 addiert.
-
Wie in 2 gezeigt,
wird die Produktausgabe von der herkömmlichen Schaltung aus 1, sei sie positiv oder
negativ, auf den nächsten
größeren Wert
gerundet, falls ein zu rundender Abschnitt größer als eine binäre "10000000"
ist, oder abgerundet, falls er kleiner als "01111111" ist, wie durch
die Punkte angegeben. Die in 2 gezeigten
Kreise zeigen, daß der
darüberliegende
Abschnitt keinen solchen Wert enthält.
-
Die Signalverarbeitung bezieht oftmals
beispielsweise die Addition mehrerer Produkte mit ein. In dieser
Hinsicht hat der Rundungsvorgang der beschriebenen Art ein Problem,
daß der
Mittelwert der gerundeten Abschnitte keine NULL ist und in Form
eines Fehlers auftritt. Um einen mittleren akkumulativen Fehler
zu vermindern, schlägt
die zuvor erwähnte
japanische Patentoffenlegungsschrift Nr. 6-103304 ein Verfahren
vor, das einen zu rundenden mittleren Fehler vor dem Runden subtrahiert.
Genauer gesagt lehrt diese Druckschrift ein digitales Berechnungssystem,
das mehrere Fehlerkorrekturschaltungen aufweist, von denen jede
einer speziellen Rundungsschaltung vorhergeht, die anders als die
erste Rundungsschaltung ist. Jede Fehlerkorrekturschaltung subtrahiert
einen Fehlerkorrekturwert, um eine Differenz zwischen dem aktuellen
Ergebnis und dem idealen Ergebnis zu vermeiden. Genauer gesagt,
wie in 3 gezeigt, multipliziert
ein Multiplizierer 10 einen Multiplikanden X und einen
Multiplikator Y. Ein Addierer 11 addiert einen Additionsterm.
Ein Subtrahierer 12 subtrahiert einen Korrekturterm zum
Auslöschen eines
mittleren Fehlers von der Ausgabe des Addierers 11. Schließlich rundet
eine Rundungseinheit 13 die Ausgabe des Subtrahierers 12 und
gibt ein Produkt Z aus.
-
Die mit Bezug auf 1-3 beschriebenen herkömmlichen
Technologien haben einige ungelöste
Probleme, wie zuvor diskutiert.
-
Bevorzugte Ausführungsbeispiele der vorliegenden
Erfindung, die frei von den Problemen der herkömmlichen Technologien sind,
werden nachstehend beschrieben.
-
Erstes Ausführungsbeispiel
-
Bezugnehmend auf 4 ist eine Multiplikationsschaltung mit
einer Rundungsfunktion gezeigt, die die vorliegende Erfindung verkörpert. Wie
gezeigt, weist die Schaltung einen Unterproduktgenerator 1,
dem ein Multiplikand X und ein Multiplikator Y eingegeben werden,
einen Unterproduktaddierer 2, einen Addierer 3 und
ein XNOR-Gatter 4 (XNOR = Exklusive NOR) auf, dem die Vorzeichen-Bits
des Multiplikanden X und des Multiplikators Y eingegeben werden.
Ein Rundungskorrekturterm 21 wird dem Unterproduktaddierer 2 eingegeben.
Die Ausgabe des XNOR-Gatters 4 wird dem Addierer 3 als
eine Übertragseingabe 20 zugeführt.
-
Der Unterproduktgenerator 1 erzeugt
mehrere Unterproduktterme 24 aus dem dort eingegebenen Multiplikanden
X und Multiplikator Y. Beispielsweise gibt, wenn der Multiplikator
X und der Multiplikator Y jeweils 8 Bits haben, der Unterproduktgenerator 1 fünf Unterproduktterme 24 unter
Anwendung der Booth-Methode
aus. Die Unterproduktterme 24 werden dem Unterproduktaddierer 2 eingegeben
und dabei addiert. Der Unterproduktaddierer 2 wird beispielsweise
durch einen Carry-Save-Addierer implementiert. Der Rundungskorrekturterm 21 wird
dem Unterproduktaddierer 2 zusammen mit den Unterprodukttermen 24 eingegeben.
Im Korrekturterm 21 ist das höchste Bit der zu rundenden
Zahl eine NULL, während
die niedrigeren Bits als das höchste
Bit EINSen sind. Es wird beispielsweise angenommen, daß der Multiplikand
X und der Multiplikator Y jeweils 8 Bits haben, und daß die oberen
8 Bits als ein Berechnungsergebnis übrig bleiben sollen, während die niedrigeren
8 Bits gerundet werden sollen. Dann ist der Korrekturterm 21 eine
binäre
"01111111". Der Unterproduktaddierer 2, der beispielsweise
durch einen Carry-Save-Addierer implementiert ist, gibt zwei Ergebnisse 25 der
Unterproduktaddition aus. Der Addierer 3 addiert die beiden
Ausgaben 25 des Unterproduktaddierers 2 und erzeugt
ein Produkt Z.
-
Die Vorzeichen-Bits des Multiplikanden
X und des Multiplikators Y werden dem XNOR-Gatter 4 eingegeben.
Das XNOR-Gatter 4 gibt eine EINS aus, falls das Produkt
positiv ist, oder gibt eine NULL aus, falls es negativ ist. Die
Ausgabe des XNOR-Gatters 4 wird
dem Übertragseingang 20 des
Addierers 3 zugeführt.
-
Die Operation des beispielhaften
Ausführungsbeispiel
wird nachstehend beschrieben. Zuerst wird auf die 5 Bezug genommen, um zu beschreiben,
wie das Multiplikationsergebnis gerundet wird. In 5 ist jeder Abschnitt, der sich von einem Kreis
zu einem Punkt erstreckt, der zu rundende Bereich; der Punkt ist
in diesem Bereich enthalten, der Kreis ist jedoch nicht enthalten.
-
Falls das Multiplikationsergebnis
positiv ist, und falls die Zahl gerade unterhalb der zu rundenden Zahl
eine EINS ist, dann wird das Ergebnis aufgerundet, wie im herkömmlichen
System. Falls die Zahl gerade unterhalb der zu rundenden Zahl eine
NULL ist, dann wird das Multiplikationsergebnis abgerundet, wie
im herkömmlichen
System. Dieses Ablaufschema entspricht einem Rundungsvorgang, der
Werte oberhalb 0.5 einschließlich
aufrundet und Werte unterhalb 0.5 abrundet.
-
Es wird angenommen, daß das obige
Multiplikationsergebnis negativ ist, und daß lediglich die Zahl gerade
unterhalb der zu rundenden Zahl eine EINS ist, während die Zahlen darunter NULLen
sind. Dann werden Werte kleiner als der obige Wert abgerundet, während Werte
größer als
derselbe aufgerundet werden. Dies entspricht einem negativen Rundungsvorgang,
der Werte unterhalb 0.5 einschließlich abrundet und Werte oberhalb
0.5 aufrundet.
-
Mit der obigen Berechnung ermöglicht das beispielhafte
Ausführungsbeispiel,
daß die
Ausgabe eines mittleren Fehlers, wenn das Ergebnis positiv ist,
und die Ausgabe eines mittleren Fehlers, wenn es negativ ist, einander
auslöschen.
Folglich ist der Fehler im wesentlichen Null, wenn gleichmäßig verteilte Produkte
akkumuliert werden.
-
6A und 6B demonstrieren das Tatsache, daß das beispielhafte
Ausführungsbeispiel
das in 5 gezeigte Ergebnis
erzeugt. Auch wenn 6A und 6B Multiplikationen mit vier
Bits zeigen, ist das Ausführungsbeispiel
mit einer beliebigen gewünschten
Bitlänge
anwendbar. Wie in 6A gezeigt,
wird angenommen, daß eine
"1000" (= –8)
und eine "1001" (= –7)
ein beispielhafter Multiplikand X bzw. ein beispielhafter Multiplikator
Y sind, was zu einem positiven Produkt führt, und dazu, daß die niedrigeren
vier Bits gleich "1000" sind. Das Produkt dieses Multiplikanden
X und Multiplikators Y ist "00111000" (= 56) mit acht Bits. In diesem
Fall ist der Korrekturterm 21, der dem Unterproduktaddierer 2 einzugeben ist,
gleich "0111". Wenn das Produkt positiv ist, haben das Vorzeichen-Bit
des Multiplikanden X und das des Multiplikators Y den gleichen Wert,
was dazu führt, daß das XNOR-Gatter 4 eine
"1" ausgibt. Da das Produkt (= "00111000"), der Korrekturterm (=
"0111") und die Ausgabe des XNOR-Gatters 4 (= "1") addiert
werden, ist das Ergebnis (korrigiertes Produkt) gleich "01000000".
Wenn dieses Ergebnis gerundet wird, wird eine "0100" erzeugt (siehe
das in 6A gezeigte KORRIGIERTE
PRODUKT). Auf diese Weise wird die "1000" aufgerundet, wenn das
Ergebnis positiv ist.
-
Wie in 6B gezeigt,
wird angenommen, daß eine
"1000" (= –8)
und eine "0001" (= 1) ein beispielhafter Multiplikand X bzw. ein
beispielhafter Multiplikator Y sind, was zu einem negativen Produkt führt, und
dazu, daß die
niedrigeren vier Bits gleich "1000" sind. Das Produkt ist "11111000"
(= –8).
In diesem Fall ist der Korrekturterm 21 gleich "0111".
Wenn das Produkt negativ ist, sind das Vorzeichen-Bit des Multiplikanden
X und das des Multiplikators Y unterschiedlich voneinander, was
dazu führt,
daß das XNOR-Gatter 4 eine
"0" ausgibt. Im Ergebnis ist die Summe des Produktes, Korrekturwertes
und der Ausgabe des XNOR-Gatters 4 gleich "11111111". Dieses
Ergebnis wird auf "1111" gerundet (siehe in 6B gezeigtes KORRIGIERTES PRODUKT). Wenn
das Ergebnis negativ ist, wird "1000" abgerundet.
-
Wie oben ausgeführt, werden, wenn das Produkt
positiv ist, ein Wert mit einer EINS am höchsten Bit der zu rundenden
Bits (viertes Bit) und NULLen an den niedrigen Bits als ein Korrekturwert
("0111" + "1" = "1000") verwendet. Wenn das Produkt negativ ist, wird
ein Wert mit einer NULL am höchsten
Bit der zu rundenden Bits und mit EINSen an den niedrigeren Bits
als ein Korrekturwert (= "0111") verwendet. Dies stimmt mit dem
in 5 gezeigten Ergebnis überein.
-
Zweites Ausführungsbeispiel
-
Bezugnehmend auf 7 wird ein alternatives Ausführungsbeispiel
der vorliegenden Erfindung beschrieben. In 7 werden gleiche oder ähnliche strukturelle
Elemente zu den in 4 gezeigten
Elementen mit den gleichen Bezugszeichen bezeichnet. Wie gezeigt,
werden ein Multiplikand X und ein Mul tiplikator Y dem Unterproduktgenerator 1 eingegeben. Mehrere
Unterproduktterme 24 werden vom Unterproduktaddierer 2 addiert.
Der Rundungskorrekturwert 21 wird dem Unterproduktaddierer 2 zusammen mit
den Unterprodukttermen 24 eingegeben. Der Unterproduktaddierer 2,
der beispielsweise durch einen Carry-Save-Addierer implementiert
ist, gibt zwei Terme 25 aus. Der Addierer 3 addiert
die beiden Terme 25 und gibt ein Produkt Z aus. Das XNOR-Gatter 4 empfängt die
Vorzeichen-Bits des Multiplikanden X und des Multiplikators Y und
gibt eine EINS aus, falls das Produkt positiv ist, oder gibt eine
NULL aus, falls es negativ ist. In dem beispielhaften Ausführungsbeispiel
wird die Ausgabe 22 des XNOR-Gatters 4 auch dem
Unterproduktaddierer 2 zugeführt.
-
In diesem Ausführungsbeispiel hat der Unterproduktaddierer 2 einen
in 8 gezeigten Aufbau.
Wie gezeigt, haben die vom Unterproduktgenerator 1 ausgegebenen
Unterproduktterme Bits, die nacheinander entsprechend der Zahlpositionen
des Multiplikators Y verschoben sind. Genauer gesagt, werden unter
der Annahme einer Multiplikation mit acht Bits und der Booth-Methode fünf Unterproduktterme 24 ausgegeben.
Vier (241 –244 , 8) der fünf Unterproduktterme 24 haben
jeweils neun Bits. Einer (241 )
der vier Terme (241 –244 ) enthält das niedrigste Bit des Produktes.
Drei (242 –244 )
der verbleibenden Terme sind jeweils um zwei Bits zu den oberen
Positionen verschoben. Der letzte Term (245 )
hat sechzehn Bits.
-
Wie in 8 gezeigt,
ist, da die Addition auf einer Bit-Basis durchgeführt wird, die Anzahl an zu addierenden
Termen bei den Bits gering, die nahe dem höchsten Bit und dem niedrigsten
Bit sind, ist jedoch groß im
Zentrum. Die dem UNTERPRODUKTADDIERER 2 zugehörigen Bezugszeichen
in 8 bezeichnen die
Anzahl an Eingaben. Beispielsweise wird unter Annahme einer Multiplikation mit
acht Bits ein einzelner Term am höchsten Bit addiert, drei Terme
einschließlich
des Korrekturterms 21 werden beim niedrigsten Bit addiert,
und sechs Terme werden beim siebten Bit addiert, vom niedrigsten Bit
an gezählt,
im Zentrum. Ein positiv/negativer Korrekturterm 22 wird
dem Eingang des Unterproduktaddierer 2 zugeführt, der
dem niedrigsten Bit zugeordnet ist, und dabei zum niedrigsten Bit
addiert. Als Folge steigt die Anzahl an zu addierenden Termen beim niedrigsten
Bit auf vier. Dies hat jedoch keinen Einfluß auf die gesamte Verarbeitungszeit,
unter Berücksichtigung
der Tatsache, daß die
maximale Anzahl an zu addierenden Bits gleich sechs ist.
-
Drittes Ausführungsbeispiel
-
9 zeigt
ein weiteres alternatives Ausführungsbeispiel
der vorliegenden Erfindung, das für eine Produktsummenberechnung
angewandt wird. In 9 sind
gleiche oder ähnliche
strukturelle Elemente zu den in 4 gezeigten
Elementen mit den gleichen Bezugszeichen bezeichnet. Wie gezeigt,
erzeugt der Unterproduktgenerator 1 mehrere Unterproduktterme 24 aus
einem Multiplikanden X und einem Multiplikator Y. Der Unterproduktaddierer 2 addiert
die Unterproduktterme 24, einen Rundungskorrekturterm 21 und
einen Additionsterm A. Der Unterproduktaddierer 2 gibt
zwei Werte 25 aus. Der Addierer 3 addiert die
beiden vom Unterproduktaddierer 2 ausgegebenen Werte 25.
Die Vorzeichen des Multiplikanden X und des Multiplikators Y werden
dem XNOR-Gatter 4 eingegeben. Das XNOR-Gatter 4 gibt eine EINS aus,
falls das Produkt positiv ist, oder gibt eine NULL aus, falls es
negativ ist. Die Ausgabe des XNOR-Gatters 4 wird dem Übertragseingang 20 des
Addierers 3 zugeführt.
-
Es wird angenommen, daß die in 9 gezeigte Schaltung in
beispielsweise einen Mikroprozessor eingebaut ist. Dann haben der
Multiplikator, Multiplikand und der Additionsterm die gleiche Anzahl
an Bits, n, da sie aus einer Registerdatei erzeugt werden. Während die
resultierenden Produkte 2n Bits haben, werden n Bits durch Runden
erzeugt. Da die Bit-Positionen
des Additionsterms an die zu erzeugenden n Bits angepaßt werden,
werden die Werte der der Rundung zugehörigen Bits aus der Multiplikation
abgeleitet. Daher kann die Rundungsrichtung auf der Basis des Vorzeichens
des Multiplikationsergebnisses bestimmt werden.
-
Das Assoziativgesetz gilt nicht für die Rundungsvorgänge. Daher
würde,
auch wenn der Additionsterm 2n Bits hätte, das Ergebnis von der Reihenfolge
der Berechnung abhängen,
falls keine Rundung mit dem Multiplikationsterm ausgeführt würde. Es folgt,
daß, wenn
eine Rundung zu jedem Berechnungszeitpunkt durchgeführt wird,
es vernünftig
ist, ein Runden lediglich mit dem Produkt durchzuführen.
-
Die gezeigten und beschriebenen ersten
bis dritten Ausführungsbeispiele
können
wie folgt zusammengefaßt
werden. Ein Unterproduktaddierer (2, 4)
addiert Unterproduktterme (24, 4)
und einen Korrekturterm (21, 4),
bei dem das höchste Bit
von zu rundenden Bits eine NULL ist und die niedrigeren Bits EINSen
sind. Wenn das Produkt positiv ist, wie es durch das Vorzeichen-Bit
eines Multiplikanden und desjenigen eines Multiplikators angezeigt
wird, wird eine EINS ausgegeben, während, wenn das Produkt negativ
ist, eine NULL ausgegeben wird. Diese EINS oder NULL wird dem Übertragseingang
(20, 4) eines Addierers (3, 4) oder dem Eingang für das niedrigere Bit (22, 7) des Unterproduktaddierers zugeführt. Als
Folge wird das Produkt auf die nächste
ganze Zahl gerundet, ohne Rücksicht
auf sein Vorzeichen. Genauer gesagt, addieren der Unterproduktaddierer
und Addierer, wenn das Produkt positiv ist, einen Wert mit einer
EINS am höchsten
Bit der zu rundenden Bits und NULLen an den niedrigeren Bits, oder
addieren, wenn das Produkt negativ ist, einen Wert mit einer NULL
am höchsten
Bit der zu rundenden Bits und mit EINSen an den niedrigeren Bits.
-
In den beispielhaften Ausführungsbeispielen tritt,
da der Mittelwert der zu rundenden Abschnitte keine NULL ist, ein
Fehler auf, der den Produktrundungen zuzuschreiben ist, wenn die
Produkte akkumuliert werden. Die Rundung, wenn das Produkt positiv
ist, und die Rundung, wenn es negativ ist, sind jedoch symmetrisch
zueinander, was es ermöglicht, daß ein Fehler
im ersteren Fall und ein Fehler im letzteren Fall einander auslöschen. Als
Folge ist der Fehler zum Akkumulationszeitpunkt im wesentlichen Null,
wodurch eine genaue Berechnung verbessert wird. Da jedoch lediglich
das Produkt auf die nächste ganze
Zahl gerundet wird, wird der Korrektureffekt nicht verschlechtert,
selbst wenn die Rundung zu jedem Berechnungszeitpunkt durchgeführt wird.
Daher können
wünschenswerte
Effekte erzielt werden, selbst wenn die Ausführungsbeispiele an einem Mikroprozessor
von der Art durchgeführt
werden, der das Runden mit dem Ergebnis jeder Berechnung durchführt.
-
Zusammenfassend ist ersichtlich,
daß die vorliegende
Erfindung Multiplikationsschaltungen mit einer Rundungsfunktion
und verschiedenen und noch nie da gewesenen Vorteilen bereitstellt,
wie nachstehend aufgezählt
ist.
-
- (1) Die Schaltung vermindert einen Fehler zum Akkumulationszeitpunkt
der Produkte. Genauer gesagt, sind die Rundung, wenn das Produkt
positiv ist, und die Rundung, wenn es negativ ist, symmetrisch zueinander,
was es ermöglicht,
daß ein
mittlerer akkumulativer Fehler im ersteren Fall und ein mittlerer
akkumulativer Fehler im letzteren Fall einander auslöschen. Als
Folge ist der Fehler zum Akkumulationszeitpunkt im wesentlichen
Null.
- (2) Die Schaltung ist wünschenswerter
Weise sogar für
beispielsweise einen Mikroprozessor anwendbar, der eine Multiplikation
zum Runden durch eine einzelne Berechnung durchführt. Genauer gesagt, führt die
Schaltung einfach ein Runden auf die nächste ganze Zahl durch, im
Unterschied zum Subtrahieren eines Korrekturterms unter Verwendung
von Bits, die die Rechengenauigkeit überschreiten. Als Folge geben
die nach dem Runden übrig
gebliebenen Bits sowohl den Effekt des Rundens als auch den Effekt
der Fehlerauslöschung
wieder.
- (3) Die Schaltung benötigt
ein Minimum an zusätzlicher
Hardware, da lediglich ein XNOR-Gatter zum Bestimmen des Vorzeichen
eines Produktes und eine Anordnung zum Addieren desselben hinzugefügt werden.
Zum Addieren des Vorzeichen eines Produktes kann die Verwendung
von einem Übertragseingang
eines Addierers gemacht werden, oder es kann der Additionsbaum des
niedrigsten Bit eines Unterproduktaddierers von einem Aufbau mit
drei Eingängen
zu einem Aufbau mit vier Eingängen
geändert
werden.