DE19748547A1 - Modulo-Adresserzeugungsschaltung und -verfahren mit verkleinerter Fläche und verringerter Verzögerungszeit - Google Patents
Modulo-Adresserzeugungsschaltung und -verfahren mit verkleinerter Fläche und verringerter VerzögerungszeitInfo
- Publication number
- DE19748547A1 DE19748547A1 DE19748547A DE19748547A DE19748547A1 DE 19748547 A1 DE19748547 A1 DE 19748547A1 DE 19748547 A DE19748547 A DE 19748547A DE 19748547 A DE19748547 A DE 19748547A DE 19748547 A1 DE19748547 A1 DE 19748547A1
- Authority
- DE
- Germany
- Prior art keywords
- address
- value
- incremented
- adder
- address value
- 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
- 230000000295 complement effect Effects 0.000 claims abstract description 14
- 238000000034 method Methods 0.000 claims description 9
- 238000004422 calculation algorithm Methods 0.000 abstract description 5
- 238000007792 addition Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 101150110971 CIN7 gene Proteins 0.000 description 1
- 101100286980 Daucus carota INV2 gene Proteins 0.000 description 1
- 101150110298 INV1 gene Proteins 0.000 description 1
- 101100397044 Xenopus laevis invs-a gene Proteins 0.000 description 1
- 101100397045 Xenopus laevis invs-b gene Proteins 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/10—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
-
- 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/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
- G06F9/3552—Indexed addressing using wraparound, e.g. modulo or circular addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2205/00—Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F2205/10—Indexing scheme relating to groups G06F5/10 - G06F5/14
- G06F2205/106—Details of pointers, i.e. structure of the address generators
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Software Systems (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Error Detection And Correction (AREA)
- Complex Calculations (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
Die Erfindung betrifft eine Modulo-Adreß
erzeugungsvorrichtung und ein Verfahren, die eine
Ausführungsgeschwindigkeit erreichen, die durch das
Ausführen von Paralleladditionen mittels langsamer Addierer
für digitale Hochgeschwindigkeits-Signalprozessoren mit
verringerter integrierten Schaltungsfläche geeignet sind.
Im allgemeinen wird die Modulo-Adressierung bei digitalen
Signalprozessoren (DSPs) verwendet, um einen DSP-Algo
rithmus effizient auszuführen, wie zum Beispiel eine
digitale Filterung.
Die Modulo-Adressierung ist im wesentlichen ein
Umlaufadressierungsverfahren. Die einfachste Art der
Modulo-Adressierung kehrt zu einer Basisadresse (B) zurück,
wenn durch Inkrementieren einer aktuellen Adresse (A) um
ein vorbestimmtes Adreßinkrement (I) eine festgelegte
maximale Adresse bzw. Maximaladresse (M) erreicht wird. Auf
den gleichen Datenbereich wird daher wiederholt
zugegriffen. Die Modulo-Adressierung kann daher bei einem
DSP-Algorithmus so implementiert werden, daß mit hoher
Geschwindigkeit und mit einem geringen zusätzlichen
Zeitaufwand bei der Adreßerzeugung wiederholt auf Daten
zugegriffen wird, die in einem speziellen Bereich
lokalisiert sind, wie zum Beispiel
Filterkoeffizientendaten. Das Adreßinkrement I kann zur
Inkrementierung der Adresse A entweder positiv oder zur
Dekrementierung der Adresse A negativ sein.
Noch allgemeiner gesprochen kann, wenn man annimmt, daß ein
festgelegter Datenbereich durch die Maximaladresse M und
die Minimaladresse B festgelegt ist, der Modulo-Algorithmus
für die nächste Adresse NEXT_A wie unten beschrieben
dargestellt werden.
Falls als erstes I ≧ 0 und A + I ≦ M, dann kann die nächste
Adresse NEXT_A dargestellt werden durch NEXT A = A + I.
Falls umgekehrt I ≧ 0 und A + I < M, dann kann die nächste
Adresse NEXT_A wie folgt dargestellt werden:
NEXT_A = A + I - (M - B + 1) (1),
wobei M ≧ A ≧ B und I < M - B + 1.
wobei M ≧ A ≧ B und I < M - B + 1.
Ähnlich, wenn I < 0 und A + I ≧ B, dann wird die nächste
Adresse NEXT_A dargestellt durch NEXT A = A + I. Falls
jedoch I < 0 und A + I < B, dann wird die nächste Adresse
NEXT_A wie folgt ausgedrückt:
NEXT_A = A + I + (M - B + 1) (2),
wobei M ≧ A ≧ B und |I| < M - B + 1.
wobei M ≧ A ≧ B und |I| < M - B + 1.
Die Implementierung der obigen Gleichungen (1) und (2)
erfordert jedoch typischerweise eine Schaltung mit in Reihe
geschalteten, mehrstufigen Addieren. Dies hat den Nachteil,
daß die Modulo-Adreßerzeugungsfunktion aufgrund der
Verzögerung, die durch die aufeinanderfolgend arbeitenden,
mehrstufigen Addierer verursacht wird, bei einem digitalen
Signalprozessor mit hoher Geschwindigkeit ein kritischer
Weg werden kann. Um die durch die mehrstufigen Addierer
verursachten Verzögerungen zu vermeiden, wurden Schaltungen
konstruiert, wie die in Fig. 2 dargestellte Modulo-Adreß
schaltung 100, die anstatt von mehrstufigen Addierern
Addierer mit hoher Geschwindigkeit verwenden.
Die Modulo-Adreßschaltung 100 besteht aus einem ersten
Addierer 11, der die aktuelle Adresse a und das
Adreßinkrement I addiert und ein resultierendes
Summensignal a ausgibt. Zwei Multiplexer 12 und 13 (MUXs)
sind eingeschlossen, um in Abhängigkeit vom Vorzeichenbit
sign(I) des Adreßinkrements I entweder die Maximumadresse M
oder die Minimumadresse B auszuwählen und auszugeben. Ein
Invertierer INV1 invertiert den Ausgang vom ersten
Multiplexer 12 und gibt das resultierende Signal b in einen
zweiten Addierer 14 ein, der das Ausgangssignal a des
ersten Addierers, das Ausgangssignal b des Invertierers und
das Vorzeichenbit sign(I) addiert, um ein Ausgangssignal d
zu erzeugen. Ein dritter Addierer 15 addiert das
Ausgangssignal d vom zweiten Addierer, das Ausgangssignal c
vom zweiten Multiplexer 13 und das Vorzeichenbit sign(I),
um ein Ausgangssignal e zu erzeugen. Ein XNOR-Gate 16
(Äquivalenz-Funktions-Gate) führt mit dem Vorzeichenbit
sign(I) und dem Vorzeichen sign(d) des Ausgangssignals d
vom Addierer 14 eine exklusive NOR-Operation durch, um bei
einem Multiplexer 17 die Auswahl entweder des
Ausgangssignals a vom ersten Addierer oder des
Ausgangssignals e vom dritten Addierer zu steuern.
Um die Funktion der Modulo-Adreßschaltung 100 zu verstehen,
sollte beachtet werden, daß wenn I ≧ 0 und A + I < M, die
obige Gleichung (1) wie folgt geschrieben werden kann:
NEXT_A = A + I - (M - B + 1)
= A + I - M + B - 1
= A + I + (inv(M) + 1) + B - 1
= A + I + inv(M) + B (3).
= A + I - M + B - 1
= A + I + (inv(M) + 1) + B - 1
= A + I + inv(M) + B (3).
In Gleichung (3) bezeichnet inv(M) das Einerkomplement von
M und in der Zweierkomplementdarstellung ist - M = inv(M) +
1. Die Beziehung A + I < M kann daher als A + I + inv(M) ≧
0 ausgedrückt werden. Man beachte ebenfalls, daß das
Vorzeichenbit sign(I) = 0 an den Eingängen der Addierer 14
und 15 ist.
Analog, falls I < 0 und A + I < B, dann kann obige
Gleichung (2) wie folgt dargestellt werden.
NEXT_A = A + I + (M - B + 1)
= A + I + M + (inv(B) + 1) + 1 (4)
= A + I + M + (inv(B) + 1) + 1 (4)
In Gleichung (4) bezeichnet inv(B) das Einerkomplement von
B und die Gleichung A + I < B kann als A + I + inv(B) < 0
dargestellt werden.
Der durch die Modulo-Adressierungsschaltung 100
implementierte Algorithmus kann dann wie folgt dargestellt
werden:
a = A + I;
b = inv(M), wenn sign(I) = 0, oder
b = inv(B), wenn sign(I) = 1;
c = B, wenn sign(I) = 0, oder
c = M, wenn sign(I) = 1;
d = a + b + sign(I);
e = d + c + sign(T);
NEXT_A = a, wenn (sign(I) XNOR sign(d)) = 0, oder
NEXT_A = e, wenn (sign(I) XNOR sign(d)) = 1 (5).
b = inv(M), wenn sign(I) = 0, oder
b = inv(B), wenn sign(I) = 1;
c = B, wenn sign(I) = 0, oder
c = M, wenn sign(I) = 1;
d = a + b + sign(I);
e = d + c + sign(T);
NEXT_A = a, wenn (sign(I) XNOR sign(d)) = 0, oder
NEXT_A = e, wenn (sign(I) XNOR sign(d)) = 1 (5).
Unter Verwendung von nur drei Addierern mit hoher
Geschwindigkeit (bzw. schnellen Addierern) und ein wenig
zusätzlicher Schaltungslogik kann die oben beschriebene
Modulo-Adressierungsschaltung 100 implementiert werden. Das
in Fig. 1 dargestellte Verfahren wird beim D 950-Kern von
SGS-Thomson verwendet. Der Nachteil der anhand der Modulo-Adressie
rungsschaltung 100 dargestellten Lösung ist jedoch
die vergrößerte Chipfläche, die zur Konstruktion der drei
Hochgeschwindigkeits-Addierer 11, 14 und 15 erforderlich
ist.
Es ist daher Aufgabe der Erfindung eine Modulo-Adreß
erzeugungsschaltung und ein -Verfahren unter
Verwendung von langsamen Addierern zu implementieren, wobei
die Schaltung und das Verfahren eine verringerte Chipfläche
benötigen und die Modulo-Adressierung ohne erhöhte
Schaltungsverzögerung ausgeführt wird.
Die Aufgabe wird durch den Adreßerzeuger nach Anspruch 1
bzw. das Verfahren nach Anspruch 4 gelöst.
Ein Ausführungsbeispiel eines Modulo-Adreßerzeugers gemäß
der Erfindung schließt einen ersten Addierer, der einen
aktuellen Adreßwert und einen Adreßinkrementwert addiert,
um einen inkrementierten Adreßwert zu erzeugen, einen
Invertierer, der einen komplementären Maximumadreßwert
erzeugt, und einen zweiten Addierer ein, der den
komplementären Maximumadreßwert und einen Minimumadreßwert
eines Datenbereichs addiert, um einen Umlaufkorrekturwert
zu erzeugen. Der Modulo-Adreßerzeuger schließt ebenfalls
eine Addierer-/Subtrahierereinheit ein, die den
inkrementierten Adreßwert und den Umlaufkorrekturwert als
Reaktion auf einen positiven Wert eines Vorzeichenbits des
Adreßinkrements addiert und den Umlaufkorrekturwert vom
inkrementierten Adreßwert als Reaktion auf einen negativen
Wert des Vorzeichenbits subtrahiert, um einen korrigierten
Adreßwert zu erzeugen. Ein Vergleicher stellt fest, ob der
inkrementierte Adreßwert innerhalb eines Adreßbereiches
liegt, der durch die Maximumadresse und Minimumadresse
festgelegt ist, und erzeugt ein Auswahlsignal mit einem
ersten logischen Wert, wenn der inkrementierte Adreßwert
innerhalb des Adreßbereichs liegt, und erzeugt einen
zweiten logischen Wert, wenn der inkrementierte Adreßwert
außerhalb des Adreßbereichs liegt. Das Auswahlsignal
steuert dann einen Multiplexer, der als Reaktion auf den
ersten logischen Wert des Auswahlsignals den
inkrementierten Adreßwert als Ausgangswert für eine nächste
Adresse auswählt und als Reaktion auf den zweiten logischen
Wert des Auswahlsignals den korrigierten Adreßwert als
Ausgangssignal für die nächste Adresse auswählt.
Vorteilhafte Ausgestaltungen des Modulo-Adreßerzeugers sind
Gegenstand von Unteransprüchen.
Ein Ausführungsbeispiel des Verfahrens zur Modulo-Adreß
erzeugung gemäß der Erfindung schließt das Erzeugen
eines inkrementierten Adreßwerts durch Addieren einer
aktuellen Adresse zu einem Adreßinkrement, das Erzeugen
eines Umlaufkorrekturwerts durch Addieren eines Komplements
einer Maximumadresse eines Datenbereichs zu einer
Minimumadresse des Datenbereichs, das Erzeugen eines
korrigierten Adreßwerts durch Subtrahieren des
Umlaufkorrekturwerts von dem inkrementierten Adreßwert,
wenn ein Vorzeichenbit des Adreßinkrements einen ersten
logischen Wert aufweist, und das Addieren des
Umlaufkorrekturwerts zum inkrementierten Adreßwerts, wenn
das Vorzeichenbit einen zweiten logischen Wert aufweist,
das Vergleichen des inkrementierten Adreßwerts mit einem
Adreßbereich, der durch die Maximumadresse und die
Minimumadresse definiert ist, um ein Auswahlsignal zu
erzeugen, und das Auswählen des inkrementierten Adreßwerts
als nächsten Adreßwert, wenn der inkrementierte Adreßwert
innerhalb des Adreßbereichs liegt, und das Auswählen des
korrigierten Adreßwerts als den nächsten Adreßwert ein,
wenn die inkrementierte Adresse außerhalb des Adreßbereichs
liegt.
Die Erfindung wird nachstehen anhand der Fig. näher
erläutert. Es zeigen:
Fig. 1 ein Blockdiagram eines Ausführungsbeispiels eines
Modulo-Adreßerzeugers gemäß der Erfindung und
Fig. 2 ein Blockdiagram eines herkömmlichen Modulo-Adreß
erzeugers.
Ein Ausführungsbeispiel einer Modulo-Adreßschaltung 200 mit
verringerter Verzögerung gemäß der Erfindung ist in Fig. 1
dargestellt. Die Modulo-Adreßschaltung 200 schließt einen
ersten Addierer 21 mit geringer Geschwindigkeit, um einen
inkrementierten Adreßwert Sa durch Addieren der aktuellen
Adresse A und des Adreßinkrements I zu erzeugen, und einen
zweiten Addierer 22 mit geringer Geschwindigkeit ein, um
einen Umlaufkorrekturwert Sb durch Addieren des
Einerkomplements inv(M) einer Maximumadresse M und einer
Basisadresse B zu erzeugen, so daß Sb = B + inv(M). Das
Einerkomplement inv(M) der Maximumadresse M wird hier durch
einen Invertierer INV2 aus M erzeugt. Eine Addierer-/Subtra
hierereinheit 23 führt eine Addition des
Umlaufkorrekturwerts Sb zum inkrementierten Adreßwert Sa
aus, wenn sign(I) = 0, oder führt die Subtraktion des
Umlaufkorrekturwerts Sb vom inkrementierten Adreßwert Sa
aus, wenn sign(I) = 1, um einen korrigierten Adreßwert Sc
zu erzeugen. Ein Vergleicher 24 prüft, ob der durch den
ersten Addierer 21 erzeugte, inkrementierte Adreßwert Sa
innerhalb des Bereichs der Adressen von der Basisadresse B
bis zur Maximumadresse M liegt und erzeugt ein
Auswahlsignal Sd, wobei Sd = 1, wenn der inkrementierte
Adreßwert Sa innerhalb des Bereichs liegt, und Sd = 0, wenn
die inkrementierte Adresse Sa außerhalb des Bereichs liegt.
In Abhängigkeit vom Auswahlsignal Sd vom Vergleicher 24
wählt ein Ausgangsmultiplexer 25 (MUX) entweder die
inkrementierte Adresse Sa vom ersten Addierer 21 oder die
korrigierte Adresse Sc von der Addierer-/Subtra
hierereinheit 23 als Ausgangswert für die nächste
Adresse NEXT_A aus.
Wenn I ≧ 0 und A + I < M, kann die obige Gleichung (1) wie
folgt geschrieben werden:
NEXT_A = A + I - (M - B + 1);
= A + I - M + B - 1;
= A + I + (B + inv(M)) (6).
= A + I - M + B - 1;
= A + I + (B + inv(M)) (6).
Wenn I < 0 und A + I < B, dann kann auf ähnliche Weise die
obige Gleichung (2) wie folgt geschrieben werden:
NEXT_A = A + I + (M - B + 1);
= A + I - B + M + 1;
= A + I - (B + inv(M)) (7).
= A + I - B + M + 1;
= A + I - (B + inv(M)) (7).
Für alle anderen Zustände ist die nächste Adresse NEXT_A:
NEXT_A = A + I.
Die obigen Gleichungen (6) und (7) können in Abhängigkeit
des inkrementierten Adreßwerts Sa vom ersten Addierer 21,
des Umlaufkorrekturwerts Sb vom zweiten Addierer 22, des
korrigierten Adreßwerts Sc von der Addierer-/Subtra
hierereinheit 23 und des Auswahlsignals Sd vom
Vergleicher 24 wie folgt geschrieben:
Sa = A + I;
Sb = B + inv(M);
Sc = Sa + Sb, wenn sign(I) = 0, oder
Sc = Sa - Sb, wenn sign(I) = 1;
Sd = 1, wenn B ≦ Sa ≦ M, oder
Sd = 0, wenn B < Sa und Sa < M;
NEXT_A = Sa, wenn Sd = 1, oder
NEXT A = Sc, wenn Sd = 0 (8).
Sb = B + inv(M);
Sc = Sa + Sb, wenn sign(I) = 0, oder
Sc = Sa - Sb, wenn sign(I) = 1;
Sd = 1, wenn B ≦ Sa ≦ M, oder
Sd = 0, wenn B < Sa und Sa < M;
NEXT_A = Sa, wenn Sd = 1, oder
NEXT A = Sc, wenn Sd = 0 (8).
Aus obigem Gleichungssatz (8) folgt, daß der inkrementierte
Adreßwert Sa durch Addieren der aktuellen Adresse A zum
Adreßinkrement I im ersten Addierer 21 erzeugt wird. Der
Umlaufkorrekturwert Sb wird durch Addieren des Komplements
inv(M) der Maximumadresse M zur Basisadresse B mittels des
zweiten Addierers 22 erzeugt. Die korrigierte Adresse Sc
wird in Abhängigkeit des Vorzeichenbits sign(I) des
Adreßinkrements I, durch Addition oder Subtraktion des
Umlaufkorrekturwerts Sb zum oder vom inkrementierten
Adreßwert Sa erzeugt. Das Auswahlsignal Sd wird durch den
Vergleicher 23 erzeugt, indem geprüft wird, ob die
inkrementierte Adresse Sa im Bereich zwischen der
Maximumadresse M und der Basisadresse B liegt. Falls die
inkrementierte Adresse Sa zwischen der Maximumadresse M und
der Basisadresse B liegt, wird vom Multiplexer 25 die
inkrementierte Adresse Sa als Ausgangswert für NEXT_A
ausgewählt. Falls die inkrementierte Adresse Sa nicht
innerhalb des Bereichs zwischen der Maximumadresse M und
der Basisadresse B liegt, dann wird die korrigierte Adresse
Sc als Ausgangswert für NEXT_A ausgewählt.
Obwohl die Modulo-Adreßschaltung 200 unter Verwendung von
drei Addierern die Gleichung (8) implementiert, ähnlich zu
den drei Addierern, die bei der Modulo-Adreßschaltung 100
erforderlich sind, sind die Addierer der Modulo-Adreß
schaltung 200 nicht in Reihe geschaltet und somit wird
kein kritischer Pfad ausgebildet. Da zur Implementierung
der Gleichung (8) Addierer mit langsamer Geschwindigkeit
für die Addierer 21 und 22 sowie die Addierer-/Subtra
hierereinheit 23 verwendet werden, ist deshalb trotz
der Addition des Vergleichers 24 zum Feststellen, ob die
inkrementierte Adresse Sa im Bereich zwischen der
Basisadresse B und der Maximumadresse M liegt, die Modulo-Adreß
schaltung 200 vorteilhaft bezüglich der zur
Implementierung der Schaltung notwendigen Schaltungsfläche
und erzielt immer noch Ausführungsgeschwindigkeiten, die
für eine Anwendung bei der digitalen Hochgeschwindigkeits-Signal
verarbeitung geeignet sind.
Wie dies oben dargestellt wurde, weisen der Modulo-Adreß
erzeuger und das Verfahren der Erfindung, ohne die
Verwendung von Hochgeschwindigkeits-Addierern, eine
verringerte Verzögerungszeit für die Additionsoperation auf
und können im Vergleich mit Modulo-Adreßschaltungen, die
Hochgeschwindigkeitsaddierer verwenden, eine vorteilhafte
Leistungsfähigkeit bei geringer integrierter Chipfläche
erreichen.
Claims (4)
1. Ein Modulo-Adreßerzeuger, der aufweist:
einen ersten Addierer (21) zum Empfangen eines aktuellen Adreßwerts und eines Adreßinkrementwerts und zum Addieren des aktuellen Adreßwerts und des Adreßinkrementwerts, um einen inkrementierten Adreßwert zu erzeugen;
einen Invertierer zum Empfangen eines Maximumadreßwerts eines Datenbereichs und zum Erzeugen des komplementären Maximumadreßwerts;
einen zweiten Addierer (22) zum Empfangen des komplementären Maximumadreßwerts und des Minimumadreßwerts eines Datenbereichs und zum Addieren des komplementären Maximumadreßwerts und des Minimumadreßwerts, um einen Umlaufkorrekturwert zu erzeugen;
eine Addierer-/Subtrahierereinheit (23) zum Empfangen des inkrementierten Adreßwerts, des Umlaufkorrekturwerts und eines Vorzeichenbits des Adreßinkrementwerts, wobei die Addierer-/Subtrahierereinheit weiterhin als Reaktion auf einen positiven Wert des Vorzeichenbits den inkrementierten Adreßwert und den Umlaufkorrekturwert addiert und als Reaktion auf einen negativen Wert des Vorzeichenbits den Umlaufkorrekturwert vom inkrementierten Adreßwert abzieht, um einen korrigierten Adreßwert zu erzeugen;
einen Vergleicher (24) zum Empfangen des inkrementierten Adreßwerts, zum Feststellen, ob der inkrementierte Adreßwert innerhalb eines Adreßbereichs liegt, der durch die Maximumadresse und die Minimumadresse definiert ist, und zum Erzeugen eines Auswahlsignals, das einen ersten logischen Wert aufweist, wenn der inkrementierte Adreßwert innerhalb des Adreßbereichs liegt, und einen zweiten logischen Wert aufweist, wenn der inkrementierte Adreßwert außerhalb des Adreßbereichs liegt; und
einen Multiplexer (25) zum Empfangen des inkrementierten Adreßwerts, des korrigierten Adreßwerts und des Auswahlsignals, wobei der Multiplexer weiterhin als Reaktion auf den ersten logischen Wert des Auswahlsignals den inkrementierten Adreßwert als Ausgangswert für eine nächste Adresse auswählt und als Reaktion auf den zweiten logischen Wert des Auswahlsignals den korrigierten Adreßwert als Ausgangswert für die nächste Adresse auswählt.
einen ersten Addierer (21) zum Empfangen eines aktuellen Adreßwerts und eines Adreßinkrementwerts und zum Addieren des aktuellen Adreßwerts und des Adreßinkrementwerts, um einen inkrementierten Adreßwert zu erzeugen;
einen Invertierer zum Empfangen eines Maximumadreßwerts eines Datenbereichs und zum Erzeugen des komplementären Maximumadreßwerts;
einen zweiten Addierer (22) zum Empfangen des komplementären Maximumadreßwerts und des Minimumadreßwerts eines Datenbereichs und zum Addieren des komplementären Maximumadreßwerts und des Minimumadreßwerts, um einen Umlaufkorrekturwert zu erzeugen;
eine Addierer-/Subtrahierereinheit (23) zum Empfangen des inkrementierten Adreßwerts, des Umlaufkorrekturwerts und eines Vorzeichenbits des Adreßinkrementwerts, wobei die Addierer-/Subtrahierereinheit weiterhin als Reaktion auf einen positiven Wert des Vorzeichenbits den inkrementierten Adreßwert und den Umlaufkorrekturwert addiert und als Reaktion auf einen negativen Wert des Vorzeichenbits den Umlaufkorrekturwert vom inkrementierten Adreßwert abzieht, um einen korrigierten Adreßwert zu erzeugen;
einen Vergleicher (24) zum Empfangen des inkrementierten Adreßwerts, zum Feststellen, ob der inkrementierte Adreßwert innerhalb eines Adreßbereichs liegt, der durch die Maximumadresse und die Minimumadresse definiert ist, und zum Erzeugen eines Auswahlsignals, das einen ersten logischen Wert aufweist, wenn der inkrementierte Adreßwert innerhalb des Adreßbereichs liegt, und einen zweiten logischen Wert aufweist, wenn der inkrementierte Adreßwert außerhalb des Adreßbereichs liegt; und
einen Multiplexer (25) zum Empfangen des inkrementierten Adreßwerts, des korrigierten Adreßwerts und des Auswahlsignals, wobei der Multiplexer weiterhin als Reaktion auf den ersten logischen Wert des Auswahlsignals den inkrementierten Adreßwert als Ausgangswert für eine nächste Adresse auswählt und als Reaktion auf den zweiten logischen Wert des Auswahlsignals den korrigierten Adreßwert als Ausgangswert für die nächste Adresse auswählt.
2. Modulo-Adreßerzeuger nach Anspruch 1, bei dem der
erste Addierer (21) und der zweite Addierer (22) Addierer
mit niedriger Geschwindigkeit sind.
3. Modulo-Adreßerzeuger nach Anspruch 1, bei dem die
Addierer-/Subtrahierereinheit (23) eine Addierer-/Subtra
hierereinheit mit niedriger Geschwindigkeit ist.
4. Ein Modulo-Adreßerzeugungsverfahren, das die Schritte
aufweist:
Erzeugen eines inkrementierten Adreßwerts durch Addieren einer aktuellen Adresse zu einem Adreßinkrement;
Erzeugen eines Umlaufkorrekturwerts durch Addieren des Komplements einer Maximumadresse eines Datenbereichs zu einer Minimumadresse des Datenbereichs;
Erzeugen eines korrigierten Adreßwerts durch Subtrahieren des Umlaufkorrekturwerts von dem inkrementierten Adreßwert, wenn ein Vorzeichenbit des Adreßinkrements einen ersten logischen Wert aufweist, und
Addieren des Umlaufkorrekturwerts zum inkrementierten Adreßwert, wenn das Vorzeichenbit einen zweiten logischen Wert aufweist;
Vergleichen des inkrementierten Adreßwerts mit einem Adreßbereich, der durch die Maximumadresse und durch die Minimumadresse definiert ist, um ein Auswahlsignal zu erzeugen;
Auswählen des inkrementierten Adreßwerts als nächsten Adreßwert, wenn der inkrementierte Adreßwert innerhalb des Adreßbereichs liegt, und Auswählen des korrigierten Adreßwerts als den nächsten Adreßwert, wenn die inkrementierte Adresse außerhalb des Adreßbereichs liegt.
Erzeugen eines inkrementierten Adreßwerts durch Addieren einer aktuellen Adresse zu einem Adreßinkrement;
Erzeugen eines Umlaufkorrekturwerts durch Addieren des Komplements einer Maximumadresse eines Datenbereichs zu einer Minimumadresse des Datenbereichs;
Erzeugen eines korrigierten Adreßwerts durch Subtrahieren des Umlaufkorrekturwerts von dem inkrementierten Adreßwert, wenn ein Vorzeichenbit des Adreßinkrements einen ersten logischen Wert aufweist, und
Addieren des Umlaufkorrekturwerts zum inkrementierten Adreßwert, wenn das Vorzeichenbit einen zweiten logischen Wert aufweist;
Vergleichen des inkrementierten Adreßwerts mit einem Adreßbereich, der durch die Maximumadresse und durch die Minimumadresse definiert ist, um ein Auswahlsignal zu erzeugen;
Auswählen des inkrementierten Adreßwerts als nächsten Adreßwert, wenn der inkrementierte Adreßwert innerhalb des Adreßbereichs liegt, und Auswählen des korrigierten Adreßwerts als den nächsten Adreßwert, wenn die inkrementierte Adresse außerhalb des Adreßbereichs liegt.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1997-420 | 1997-01-10 | ||
KR1019970000420A KR100236536B1 (ko) | 1997-01-10 | 1997-01-10 | 모듈로 주소발생기 및 그 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE19748547A1 true DE19748547A1 (de) | 1998-07-16 |
DE19748547B4 DE19748547B4 (de) | 2007-11-22 |
Family
ID=19494353
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19748547A Expired - Fee Related DE19748547B4 (de) | 1997-01-10 | 1997-11-03 | Modulo-Adresserzeugungsschaltung und -verfahren |
Country Status (3)
Country | Link |
---|---|
US (1) | US5905665A (de) |
KR (1) | KR100236536B1 (de) |
DE (1) | DE19748547B4 (de) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1039370A1 (de) * | 1999-03-19 | 2000-09-27 | Motorola, Inc. | Moduloadressgenerator und eine Methode für das Einführen des Moduloaddressieren |
US7631164B2 (en) | 2005-07-19 | 2009-12-08 | Emma Mixed Signal C.V. | Modulo arithmetic |
Families Citing this family (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6134572A (en) * | 1997-09-30 | 2000-10-17 | Texas Instruments Incorporated | Galois Field arithmetic apparatus and method |
JP3718046B2 (ja) * | 1998-02-18 | 2005-11-16 | ローム株式会社 | アドレス発生回路 |
US6081820A (en) * | 1998-02-20 | 2000-06-27 | Siemens Energy & Automation | Method and apparatus for filtering a signal using a window value |
US6704864B1 (en) | 1999-08-19 | 2004-03-09 | L.V. Partners, L.P. | Automatic configuration of equipment software |
US6384744B1 (en) | 1998-09-11 | 2002-05-07 | Digital:Convergence Corp. | Method and system for data transmission from an optical reader |
US6845388B1 (en) * | 1998-09-11 | 2005-01-18 | L. V. Partners, L.P. | Web site access manual of a character string into a software interface |
US7440993B1 (en) | 1998-09-11 | 2008-10-21 | Lv Partners, L.P. | Method and apparatus for launching a web browser in response to scanning of product information |
US6636896B1 (en) * | 1998-09-11 | 2003-10-21 | Lv Partners, L.P. | Method and apparatus for utilizing an audibly coded signal to conduct commerce over the internet |
US6629133B1 (en) | 1998-09-11 | 2003-09-30 | Lv Partners, L.P. | Interactive doll |
US7900224B1 (en) | 1998-09-11 | 2011-03-01 | Rpx-Lv Acquisition Llc | Method and apparatus for utilizing an audible signal to induce a user to select an E-commerce function |
US6791588B1 (en) * | 1998-09-11 | 2004-09-14 | L.V. Partners, L.P. | Method for conducting a contest using a network |
US6594705B1 (en) | 1998-09-11 | 2003-07-15 | Lv Partners, L.P. | Method and apparatus for utilizing an audibly coded signal to conduct commerce over the internet |
US6754698B1 (en) | 1998-09-11 | 2004-06-22 | L. V. Partners, L.P. | Method and apparatus for accessing a remote location with an optical reader having a dedicated memory system |
US6701354B1 (en) | 1998-09-11 | 2004-03-02 | L. V. Partners, L.P. | Method for interconnecting two locations over a network in response to using a tool |
US6826592B1 (en) | 1998-09-11 | 2004-11-30 | L.V. Partners, L.P. | Digital ID for selecting web browser and use preferences of a user during use of a web application |
US6877032B1 (en) * | 1998-09-11 | 2005-04-05 | L.V. Partners, L.P. | Launching a web site using a portable scanner |
US7379901B1 (en) | 1998-09-11 | 2008-05-27 | Lv Partners, L.P. | Accessing a vendor web site using personal account information retrieved from a credit card company web site |
US8712835B1 (en) | 1998-09-11 | 2014-04-29 | Rpx Corporation | Method and apparatus for linking a web browser link to a promotional offer |
US6792452B1 (en) | 1998-09-11 | 2004-09-14 | L.V. Partners, L.P. | Method for configuring a piece of equipment with the use of an associated machine resolvable code |
US6868433B1 (en) | 1998-09-11 | 2005-03-15 | L.V. Partners, L.P. | Input device having positional and scanning capabilities |
US6829650B1 (en) | 1998-09-11 | 2004-12-07 | L. V. Partners, L.P. | Method and apparatus for opening and launching a web browser in response to an audible signal |
US6708208B1 (en) | 1998-09-11 | 2004-03-16 | L.V. Partners, L.P. | Unique bar code for indicating a link between a product and a remote location on a web network |
US6697949B1 (en) | 1998-09-11 | 2004-02-24 | L.V. Partner, L.P. | Method and apparatus for controlling a user's pc through an audio-visual broadcast to archive information in the users pc |
US6622165B1 (en) | 1998-09-11 | 2003-09-16 | Lv Partners, L.P. | Method and apparatus for allowing a remote site to interact with an intermediate database to facilitate access to the remote site |
US6701369B1 (en) | 1998-09-11 | 2004-03-02 | L.V. Partners, L.P. | Method and apparatus for accessing a remote location by sensing a machine-resolvable code |
US6823388B1 (en) | 1998-09-11 | 2004-11-23 | L.V. Parners, L.P. | Method and apparatus for accessing a remote location with an optical reader having a programmable memory system |
US6526449B1 (en) | 1998-09-11 | 2003-02-25 | Digital Convergence Corporation | Method and apparatus for controlling a computer from a remote location |
US6688522B1 (en) | 1998-09-11 | 2004-02-10 | L. V. Partners, L.P. | Unique bar code |
US6636892B1 (en) | 1998-09-11 | 2003-10-21 | Lv Partners, L.P. | Method for conducting a contest using a network |
US7930213B1 (en) | 1998-09-11 | 2011-04-19 | Rpx-Lv Acquisition Llc | Method and apparatus for completing, securing and conducting an E-commerce transaction |
US6725260B1 (en) | 1998-09-11 | 2004-04-20 | L.V. Partners, L.P. | Method and apparatus for configuring configurable equipment with configuration information received from a remote location |
US7386600B1 (en) | 1998-09-11 | 2008-06-10 | Lv Partners, L.P. | Launching a web site using a personal device |
US7792696B1 (en) | 1998-09-11 | 2010-09-07 | RPX-LV Acquisition, LLC | Method and apparatus for allowing a broadcast to remotely control a computer |
US6615268B1 (en) | 1998-09-11 | 2003-09-02 | Lv Partners, L.P. | Method for controlling a computer using an embedded unique code in the content of dat media |
US6829646B1 (en) * | 1999-10-13 | 2004-12-07 | L. V. Partners, L.P. | Presentation of web page content based upon computer video resolutions |
US7392945B1 (en) | 1998-09-11 | 2008-07-01 | Lv Partners, L.P. | Portable scanner for enabling automatic commerce transactions |
US7191247B1 (en) | 1998-09-11 | 2007-03-13 | Lv Partners, Lp | Method for connecting a wireless device to a remote location on a network |
US6745234B1 (en) | 1998-09-11 | 2004-06-01 | Digital:Convergence Corporation | Method and apparatus for accessing a remote location by scanning an optical code |
US8028036B1 (en) | 1998-09-11 | 2011-09-27 | Rpx-Lv Acquisition Llc | Launching a web site using a passive transponder |
US6098106A (en) * | 1998-09-11 | 2000-08-01 | Digitalconvergence.Com Inc. | Method for controlling a computer with an audio signal |
US6631404B1 (en) | 1998-09-11 | 2003-10-07 | Lv Partners, L.P. | Method and system for conducting a contest using a network |
US6836799B1 (en) | 1998-09-11 | 2004-12-28 | L.V. Partners, L.P. | Method and apparatus for tracking user profile and habits on a global network |
US7818423B1 (en) | 1998-09-11 | 2010-10-19 | RPX-LV Acquisition, LLC | Retrieving personal account information from a web site by reading a credit card |
US6643692B1 (en) | 1998-09-11 | 2003-11-04 | Lv Partners, L.P. | Method for controlling a computer using an embedded unique code in the content of video tape media |
US6369727B1 (en) * | 1999-12-17 | 2002-04-09 | Rng Research | Analog-to-digital conversion method of random number generation |
JP4042364B2 (ja) * | 2001-07-27 | 2008-02-06 | 日本電気株式会社 | アドレス生成回路、選択判断回路 |
US6970895B2 (en) * | 2001-10-01 | 2005-11-29 | Koninklijke Philips Electronics N.V. | Programmable delay indexed data path register file for array processing |
US7349448B2 (en) * | 2003-08-01 | 2008-03-25 | Hewlett-Packard Development Company, L.P. | Distributed multiplexing circuit with built-in repeater |
US7849125B2 (en) | 2006-07-07 | 2010-12-07 | Via Telecom Co., Ltd | Efficient computation of the modulo operation based on divisor (2n-1) |
US8250440B2 (en) * | 2008-02-25 | 2012-08-21 | International Business Machines Corporation | Address generation checking |
US8145877B2 (en) * | 2008-03-31 | 2012-03-27 | Xilinx, Inc. | Address generation for quadratic permutation polynomial interleaving |
US8219782B2 (en) * | 2008-09-18 | 2012-07-10 | Xilinx, Inc. | Address generation |
US8407276B2 (en) * | 2009-07-27 | 2013-03-26 | Electronics And Telecommunications Research Institute | Apparatus for calculating absolute difference |
US10331840B2 (en) * | 2016-01-15 | 2019-06-25 | International Business Machines Corporation | Resource aware method for optimizing wires for slew, slack, or noise |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4800524A (en) * | 1985-12-20 | 1989-01-24 | Analog Devices, Inc. | Modulo address generator |
US4833602A (en) * | 1987-06-29 | 1989-05-23 | International Business Machines Corporation | Signal generator using modulo means |
NL8901631A (nl) * | 1989-06-28 | 1991-01-16 | Philips Nv | Inrichting voor het bufferen van data voor de duur van cyclisch repeterende buffertijden. |
EP0555382B1 (de) * | 1990-11-02 | 1996-03-27 | Analog Devices, Inc. | Adressengenerator für einen ringpuffer |
US5249148A (en) * | 1990-11-26 | 1993-09-28 | Motorola, Inc. | Method and apparatus for performing restricted modulo arithmetic |
US5511017A (en) * | 1994-06-01 | 1996-04-23 | Exponential Technology, Inc. | Reduced-modulus address generation using sign-extension and correction |
US5659700A (en) * | 1995-02-14 | 1997-08-19 | Winbond Electronis Corporation | Apparatus and method for generating a modulo address |
-
1997
- 1997-01-10 KR KR1019970000420A patent/KR100236536B1/ko not_active IP Right Cessation
- 1997-08-05 US US08/906,273 patent/US5905665A/en not_active Expired - Fee Related
- 1997-11-03 DE DE19748547A patent/DE19748547B4/de not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1039370A1 (de) * | 1999-03-19 | 2000-09-27 | Motorola, Inc. | Moduloadressgenerator und eine Methode für das Einführen des Moduloaddressieren |
US7631164B2 (en) | 2005-07-19 | 2009-12-08 | Emma Mixed Signal C.V. | Modulo arithmetic |
Also Published As
Publication number | Publication date |
---|---|
US5905665A (en) | 1999-05-18 |
KR100236536B1 (ko) | 1999-12-15 |
KR19980065431A (ko) | 1998-10-15 |
DE19748547B4 (de) | 2007-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19748547A1 (de) | Modulo-Adresserzeugungsschaltung und -verfahren mit verkleinerter Fläche und verringerter Verzögerungszeit | |
DE4302898A1 (en) | Arithmetic logic unit with accumulator function - has two memories and counter with selection to reduce delay in processing | |
DE2523860C3 (de) | Vorrichtung zur digitalen, linearen Interpolation einer fabulierten Funktion | |
DE3132225A1 (de) | Einrichtung fuer eine schnelle hadamard-transformation | |
DE69434806T2 (de) | Verfahren, System und Vorrichtung zum automatischen Entwurf einer Multiplikatorschaltung und durch die Durchführung dieses Verfahrens entworfene Multiplikatorschaltung | |
DE10260655B3 (de) | Vorrichtung und Verfahren zum Berechnen einer Multiplikation mit einer Verschiebung des Multiplikanden, insbesondere bei der kryptographischen Berechnung | |
DE19618120B4 (de) | Parallelverarbeitungs-Divisionsschaltung | |
DE19748484A1 (de) | Schaltung und Verfahren zur Überlauferfassung bei einem digitalen Signalprozessor | |
DE3440680A1 (de) | Verfahren und vorrichtung zur dezimaldivision | |
DE3314035A1 (de) | Operationsverarbeitungseinrichtung | |
DE4446988B4 (de) | Schneller Testmustergenerator | |
DE2746355A1 (de) | Einrichtung und verfahren zur wahlweisen multiplikation oder division zweier als binaerzahlen vorliegender operanden | |
DE19746076A1 (de) | Schaltung und Verfahren zur Modulo-Adresserzeugung mit verkleinerter Schaltungsfläche | |
EP0144066B1 (de) | Schaltungsanordnung zur schnellen Ermittlung der betragsmässig grössten Differenz von drei binär dargestellten Zahlenwerten | |
EP0342549B1 (de) | Bildverarbeitungsverfahren | |
DE69927940T2 (de) | Moduloadressgenerator und eine Methode für das Einführen des Moduloadressierens | |
DE60125298T2 (de) | Gerät und Verfahren für Adressenänderung in einer Direktspeicherzugriffssteuerung | |
DE3302013C2 (de) | ||
DE3130380C2 (de) | ||
EP0829803B1 (de) | Digitaler Signalprozessor und Verfahren zur Durchführung einer Multiplikation mit einem digitalen Signalprozessor | |
DE3843638C2 (de) | ||
EP0416153B1 (de) | Verfahren für Datenverarbeitungsanlagen zur Division von, zu Beginn jeweils normalisierten, beliebig langen Operanden und Divisionswerk zur Durchführung des Verfahrens | |
DE19804384B4 (de) | Halbleiterspeichereinrichtung | |
DE10025955C2 (de) | Verfahren und Vorrichtung zum Aktualisieren eines Programmzählers | |
EP0603188B1 (de) | Digitale logikschaltung zur bestimmung des minimums oder des maximums von zwei operanden |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |