-
Digitaler Multiplizierer.
-
Die vorliegende Erfindung bezieht sich auf einen digitalen Multiplizierer
zum Multiplizieren von Zahlen im binären Code mit hoher Geschwindigkeit in Anordnungen
zur Informationsverarbeitung, Informationsumwandlung und ähnlichen.
-
Zur Multiplikation von Zahlen in binären Codes wird üblicherweise
eine Einheit verwendet, wie sie in Fig. 1 gezeigt ist.
-
Dort wird ein Multiplikand, der über die Eingangsleitungen 1 zugeführt
wird, in das Register 2 gesetzt und ein Multiplikator, der über die Eingangsleitungen
12 zugeführt wird in das Register 11 gesetzt und dabei das Register 8 gelöscht.
-
Nur im Falle, daß der Multiplizierer 13 des Registers II, der dem
niedrigstwertigen Bit zugeordnet ist und auch als LSD-Ausgang bezeichnet wird zu
logisch ll1fl wird, öffnet das Gatter 6 und der Inhalt des Addierers 4, der in diesem
Falle mit dem Inhalt des Registers 2 übereinstimmt, wird in das Register 8 geschrieben.
Danach wird der Inhalt der Register 8.
-
und 11 jeweils um ein Bit nach rechts verschoben. Das Register 8 gibt
dabei das niedrigstwertige Bit ab, das über die Leitung 10 an die Stelle für das
höchstwertige Bit, die auch als MSD bezeichnet wird, des Registers 11 übertragen
wird und das zweite Bit des Multiplikators wird der Stelle für das niedrigstwertige
Bit des Registers 11 zugeführt. Ist nun der logische Zustand gleich "1", wird über
die Leitungen 5 das Additionsergebnis des über die Leitungen 5 zugeführten Multiplikanden
und Qes ausgegebenen Wertes des Registers 8 über die Leitungen 9 in das Register
8 eingeschrieben. Älischließend
wird der Inhalt der Register 8 und
11 um jeweils ein Bit nach rechts verschoben. Da die obige Operation entsprechend
der Bitzahl des Multiplikators wiederholt wird, wird das Ergebnis der Multiplikation
in den Registern 8 und 11 gespeichert. In dieser Anordnung ergibt sich die Notwendigkeit
zur Wiederholung der Addition und Verschiebung entsprechend der Bitzahl des Multiplikators,
so daß sich sehr lange Operationszeiten ergeben.
-
Aufgabe der Erfindung ist die Entwicklung eines Multiplizierers mit
gegenüber diesem Stand der Technik beträchtlich verkürzten Operationszeiten bei
kleinem Speicheraufwand.
-
Erfindungsgemäß wird die Aufgabe dadurch gelöst, daß ein Addierer,
ein Inverter und Gatterschaltungen zum Erhalten der halben Werte der Summe und der
Differenz von Multiplikator und Multiplikand vorgesehen sind, daß ein Festwertspeicher
als Quadratumwandlungstabelle zur Speicherung der Quadratwerte und zur Abgabe der
Quadratwerte der obenangeführten halben Werte der Summe und der Differenz und weiterhin
eine Schaltung vorgesehen ist, die einen Pufferspeicher, einen Inverter und einen
Addierer enthält, um die Differenz zwischen dem obenangegebenen Quadratwert der
Summe und dem# Quadratwert der Differenz zu erhalten.
-
Die vorliegende Erfindung geht von der folgenden Formel aus, in der
der Multiplikand mit x und der Multiplikator mit y bezeichnet wird:
Statt einer direkten Multiplikation werden zunächst die halben Werte der Summe und
der Differenz von x beziehungsweise
y gebildet, unter Anwendung
einer Umwandlungstabelle für A in A2 die quadratischen Werte der halben Werte der
Summe und der Differenz erzeugt. Abschließend erhält man durch Bilden der Differenz
der quadrierten Werte das Multiplikationsergebnis, ohne daß eine wirkliche Multiplikation
durchgeführt wurde. Eine besonders vorteilhafte Variante der Erfindung ergibt sich
dadurch. daß jeweils ein einziger Eingang für den Multiplikator x und den Multiplikand
y vorgesehen ist, daß der Eingang für den Multiplikator mit dem einen Eingang eines
Addierers direkt verbunden ist, daß der Eingang des Multiplikanden mit dem ersten
Eingang eines ersten UND-Gatters direkt und mit dem ersten Eingang eines zweiten
UND-Gatters über einen Inverter verbunden ist, daß jeweils die zweiten Eingänge
der beiden UND-Gatter mit Zuleitungen für Steuersignale verbunden sind, daß der
Ausgang des ersten UND-Gatters mit dem Eingang und der Ausgang des zweiten UND-Gatters
mit dem zweiten Eingang eines' ODER-Gatters verbunden ist, daß der Ausgang des ODER-Gatters
mit dem zweiten Eingang des Addierers verbunden ist, daß der Ausgang des Addierers
über die Verbindungsleitung mit einem Codeumwandler verbunden ist, daß der Ausgang
des Codeumwandlers über die Verbindungsleitung mit dem Eingang einer aus einem Festwertspeicher
bestehenden Quadratumwandlungstabelle verbunden ist, daß der Ausgang der Quadratumwandlungstabelle
über einen Pufferspeicher mit dem einen Eingang eines Addierers und über einen Inverter
mit dem anderen Eingang des Addierers verbunden ist und daß am Ausgang des Addierers
das Produkt entnehmbar ist.
-
Die Erfindung wird im folgenden anhand der Zeichnungen näher beschrieben.
Dabei zeigt: Fig. 1 das Blockschaltbild eines Multiplizierers nach dem Stande der
Technik,
Fig. 2 das Blockschaltbild einer Anordnung nach der Erfindung
und Fig. 3 ein Diagramm zur Erläuterung eines Beispiels für die Quadratumwandlungstabelle.
-
Fig. 1 wurde bei der Betrachtung des Standes der Technik näher erläutert.
-
Fig. 2 zeigt die Ausführungsform eines Multiplizierers nach der Erfindung.
-
Die Anordnung umfaßt die Anschlüsse 21 und 22 für die miteinander
zu multiplizierenden Zahlen x und y, die Inverter 24, 40, die UND-Gatter 23, 26,
das ODER-Gatter 29, die Addierer 33, 43, den Codeumwandler 35, die Quadratumwandlungstabelle
37 und den Pufferspeicher 39.
-
Für die Durchführung der Multiplikation wird zuerst das Gatter 23
durch ein Signal 31 geöffnet und ein eingegebener Wert x (Komplement) vom Anschluß
21 und ein eingegebener Wert y (Komplement) vom Anschluß 22 im Addierer 33 addiert,
so daß man an dessen Ausgang 34 den Wert x + y (Komplement) erhält. Der Codeumwandler
35 wandelt den ausgegebenen Komplementwert in den gefalteten binären Code 36 um
und gibt die sen an den Eingang der Quadratumwandlungstabelle 37. Durch eine Verschiebeoperation
nach rechts um ein Bit wahlweise im Addierer 33 oder im Code-Umwandler 35 wird der
ausgegebene Wert halbiert. Der ausgegebene Wert 38 der Quadratsumwandlungstabelle
37 ist also
und wird im Pufferspeicher 39 gespeichert. Danach wird das Gatter 26 durch das Gattersteuersignal
32 geöffnet und der Eingabewert y im Inverter 24 in -y invertiert; x und -y (Komplement)
werden anschließend im Addierer 33 addiert, so daß sich der Ausgabewert x - y
(Komplement)
ergibt. Der ausgegebene Wert 36 des Codeumwandlers 35 erscheint in einem gefalteten
binären Code und wird dem Eingang der Quadratumwandlungstabelle 37 zugeführt. Am
Ausgang 38 dieser Quadratumwandlungs-
im Addierer 43 addiert wird. Der ausgegebene Wert 44 des Addierers 43 ist dann ment).
(Komple-Da es sich bei allen diesen Prozessen um Vorwärtsprozesse handelt, ist die
zeitlich geteilte Eingabe von x + y und x - y möglich. Die Breite' der Pulse der
Steuersignale 31 und 32 für die Operationen x + y und x - y sind als größer angenommen,
als die Operationszeiten der Elemente der logischen Schaltung. Entsprechend kann
x - y dem Eingang mit einer Verzögerung um diese Pulsbreite gegenüber x + y zugeführt
werden. Da die gesamte Operationszeit die Summe der Verzögerungszeiten der einzelnen
Gatter, des Addierers 33, der -Codeumwandlerschaltung 35, der Quadratumwandlungstabelle
37 und des Addierers 43 sowie der Pulsbreite von x + y sind, kann man für die Operationszeit
leicht einen sehr kleinen Wert durch Anwendung von TTL-Schaltungen oder ähnlicher
Schaltungen für die Elemente der logischen Schaltung erreichen.
-
So ist zum Beispiel mit dem System nach dem Stande der Technik, das
in Fig. 1 beschrieben ist, unter Anwendung eines ~Addierers und eines Binärakkumulators,
falls der eingebene Wert 10 Bits und der ausgegebene Wert mehr als 10 Bits umfaßt,
die Zahl der Einzeladditionszeiten gleich 10 und die gesamte Operationszeit etwa
2 /us. Für die Verkürzung
der Operationszeit kann ein Multiplikationsverfahren
angewendet werden, das als Blockteilungsmethode bezeichnet wird, und auf der Teilung
von x ~ y in (2n x, X1 + X2) (2n ~ y1 + Y2) und der Anwendung eines Auch als Festwertspeicher
bekannten ROM für das Produkt x1 yl usw. beruht. Auch bei diesem System ist beispielsweise
die Zahl der Einzeladditionszeiten gleich 2, so daß etwa 200 ns als Operationszeit
erforderlich sind, wobei aber in diesem Fall etwa 40 KByte an Speicherzellen erforderlich
sind. Demgegenüber ergibt sich bei dem System nach der vorliegenden Erfindung durch
Anwendung der Quadratumwandlungstabelle und durch zusätzliche, später beschriebene
Maßnahmen bei 2 Einzeladditionszeiten eine Operationszeit von etwa 450 ns und eine
notwendige Speicherzellenzahl von 4 KByte oder bei 5 Additionszeiten eine Operationszeit
von 520 ns und eine Speicherzellenzahl von 18 KByte.
-
Bei der Verwendung des ROM für die Quadratumwandlungstabelle 37 ergibt
sich die beschriebe starke Verringerung der Zahl der Speicherzellen des ROM. Sind
die Zahlen x bzw. y durch n Bits ausgedrückt, dann ergeben sich für die Summe x
+ y und die Differenz x - y insgesamt n + 1 Bits als Maximum, damit sind für den
Ausgabewert 2 (n + 1) Bits erforderlich, der ROM ist für eine Kapazität von 2n+1
2 (n + 1) Bits vorzusehen. Wird die Zahl n hier um ein Bit vergrößert, dann verdoppelt
sich die erforderliche Speicherkapazität; werden die Bitzahlen von x und y weiter
vergrößert, so ist schließlich ein riesiger Speicher erforderlich.
-
Durch Teilung von-x + y und x - y in verschiedene Blöcke und anschließendem
Quadrieren wird der Speicherumfang erheblich verringert. Man kann in einem Beispiel
annehmen, daß x und y jeweils 10 Bits umfassen und in drei Blöcke geteilt
sind.
Unter der Annahme, daß x + y oder x - y = Z ist und Z = 27 Z1 + 23 . Z2 + Z3 ist,
dann ergibt sich
dann wird Z2 durch dreimalige Addition erhalten. Die Kapazität des ROM ist in diesem
Falle 1792 Bits.
-
In der Fig. 3 ist die obige Bitanordnung gezeigt. Es ist erkennbar,
daß die quadrierten Unterblöcke sich in drei Blöcke zusammenfassen lassen, falls
die Blöcke, die sich nicht gegenseitig überlagern, zusammengefaßt werden und Z2
durch doppelte Addition erhalten wird. In diesem Fall ist die Kapazität des ROM
gleich 4144 Bits, das ist 1/10 des vor der Unterteilung erforderlichen. Jedoch ergibt
sich bei dieser Verringerung der Speicherkapazität auf 1/10 eine Vergrößerung der
Anzahl der Additionen auf 2.
-
Wird dagegen die bereits erwähnte Zahl Z in 4 Blöcke unterteilt, beispielsweise
in Z = 28Z1 + 25Z + 22Z + Z4 Z 2) 1 2 3 4' z2= 216Z1 + 210Z2 + 24Z + Z2 3 4 +- 214Z1Z2
+ 24Z1Z4 + 211Z1Z3 + 26Z2Z4 + 28Z2Z3 + 23Z3Z4
Allgemein ausgedrückt
vergrößert'die Unterteilung in n Blöcke die Zahl der Addierer um (n - 1) und die
Operationszeit um die Verzögerungszeit. Die Zahl der unterteilten Blöcke kann wahlweise
im Hinblick auf die erforderliche Multiplikationszeit, die notwendige Kapazität
des ROM, die Kosten oder andere Faktoren bestimmt werden.
-
Da diedie Addierüngspperation in den Addierern 33 und 43 sowohl in
diesem Beispiel als auch im vorhergehenden Beispiel angewandt wurde, ergibt sich
die Zahl der Additionszeiten in diesem Beispiel insgesamt zu 5 und im vorhergehenden
Beispiel zu 4.
-
Falls dieses System im Zeitteilungsbetrieb angewendet wird, ist die
wesentliche Operationszeit nur die Summe der entsprechenden Pulsbreiten von x +
y und x - y mit der hier außer Frage stehenden Verzögerungszeit der Elemente der
logischen Schaltungen, so daß das System hier besonders günstig anzuwenden ist.
Entsprechend ergeben sich die meisten Vorteile des erfindungsgemäßen Multiplizierers
bei der Anwendung mit Zeitteilung.
-
2 Patentansprüche 3 Figuren