DE19746076A1 - Schaltung und Verfahren zur Modulo-Adresserzeugung mit verkleinerter Schaltungsfläche - Google Patents
Schaltung und Verfahren zur Modulo-Adresserzeugung mit verkleinerter SchaltungsflächeInfo
- Publication number
- DE19746076A1 DE19746076A1 DE19746076A DE19746076A DE19746076A1 DE 19746076 A1 DE19746076 A1 DE 19746076A1 DE 19746076 A DE19746076 A DE 19746076A DE 19746076 A DE19746076 A DE 19746076A DE 19746076 A1 DE19746076 A1 DE 19746076A1
- Authority
- DE
- Germany
- Prior art keywords
- value
- address
- address value
- incremented
- sign bit
- 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.)
- Ceased
Links
- 238000000034 method Methods 0.000 claims description 11
- 230000000295 complement effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000010276 construction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000033764 rhythmic process Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Error Detection And Correction (AREA)
- Complex Calculations (AREA)
Description
Die Erfindung betrifft eine Schaltung und ein Verfahren zur
Modulo-Adreßerzeugung, die bei der Adreßerzeugung eine
geringere Verzögerung aufweist und die weniger Fläche zur
Implementierung auf einem integrierten Halbleiterchip
benötigt.
Im allgemeinen wird die Modulo-Adressierung bei digitalen
Signalprozessoren (DSPs) verwendet, um einen DSP-Algo
rhithmus 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.
Ä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 |1| < M - B + 1.
Die Implementierung der obigen Gleichungen (1) und (2)
erfordert jedoch typischerweise eine Schaltung mit in Reihe
verschalteten, 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 Maximaladresse M
oder die Minimaladresse B auszuwählen und auszugeben. Ein
Invertierer INV 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 des Ausgangssignals d vom
Addierer 14 (sign(d)) 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(I);
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(I);
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 und ein wenig zusätzlicher Schaltungslogik
kann die oben beschriebene Modulo-Adressierungsschaltung
100 implementiert werden. Der Nachteil der anhand der
Modulo-Adressierungsschaltung 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 einen Modulo-Adreß
erzeuger und ein Verfahren vorzusehen, die bei ihrer
Implementierung weniger Chipfläche benötigen und eine
geringere Schaltungsverzögerung hervorrufen.
Die vorstehende Aufgabe wird durch den Modulo-Adreßerzeuger
Vorrichtung nach Anspruch 1 beziehungsweise das Verfahren
nach Anspruch 4 gelöst.
Ein Ausführungsbeispiel des Modulo-Adreßerzeugers der
Erfindung schließt einen Addierer ein, der einen aktuellen
Adreßwert und einen Adreßinkrementwert empfängt und diese
addiert, um einen inkrementierten Adreßwert zu erzeugen.
Der Erzeuger schließt ebenfalls eine Addierer-/Subtra
hierer-Schaltung ein, die den inkrementierten
Adreßwert, einen Datenbereichgrößenwert, der einem zu
adressierenden Datenbereich entspricht, und ein
Vorzeichenbit des Adreßinkrementwerts empfängt, wobei die
Addierer-/Subtrahierer-Schaltung den Datenbereichgrößenwert
zum inkrementierten Adreßwert hinzuaddiert, wenn das
Vorzeichenbit ein negativer Wert ist (d. h., einen
negativen Wert anzeigt), und den Datenbereichgrößenwert vom
inkrementierten Adreßwert subtrahiert, wenn das
Vorzeichenbit ein positiver Wert ist (d. h., einen
positiven Wert anzeigt), um einen überarbeiteten Adreßwert
zu erzeugen. Eine Ausgangsauswahlschaltung empfängt dann
den inkrementierten Adreßwert, den Datenbereichgrößenwert
und das Vorzeichenbit und wählt für einen nächsten
Adreßwert den inkrementierten Adreßwert aus, falls das
Vorzeichenbit positiv und der überarbeitete Adreßwert
kleiner als ein Minimaladreßwert des Datenbereichs ist,
wählt für den nächsten Adreßwert den überarbeiteten
Adreßwert aus, wenn das Vorzeichenbit positiv und der
überarbeitete Adreßwert größer oder gleich dem
Minimaladreßwert des Datenbereichs ist, wählt für den
nächsten Adreßwert den überarbeiteten Adreßwert aus, wenn
das Vorzeichenbit negativ und der inkrementierte Adreßwert
kleiner als der Minimaladreßwert des Datenbereichs ist, und
wählt für den nächsten Adreßwert den inkrementierten
Adreßwert aus, wenn das Vorzeichenbit negativ und der
inkrementierte Adreßwert größer oder gleich dem
Minimaladreßwert des Datenbereichs ist.
Ein Ausführungsbeispiel eines Verfahrens für eine Modulo-Adreß
erzeugung gemäß der Erfindung schließt das Addieren
eines Adreßinkrementwerts und eines aktuellen Adreßwerts
ein, um einen inkrementierten Adreßwert zu erzeugen. Das
Verfahren schließt ebenfalls in Abhängigkeit eines
Datenbereichs das Addieren eines Datenbereichgrößenwerts
zum inkrementierten Adreßwert, um einen überarbeiteten
Adreßwert zu erzeugen, wenn ein Vorzeichenbit des
Adreßinkrementwerts ein negativer Wert ist, und das
Subtrahieren des Datenbereichgrößenwerts vom
inkrementierten Adreßwert ein, um einen überarbeiteten
Adreßwert zu erhalten, wenn das Vorzeichenbit des
Adreßinkrementwerts ein positiver Wert ist. Das Verfahren
schließt weiterhin das Auswählen des inkrementierten
Adreßwerts als Vergleichswert, wenn das Vorzeichenbit ein
negativer Wert ist, und das Auswählen des überarbeiteten
Adreßwerts als Vergleichswert ein, wenn das Vorzeichenbit
ein positiver Wert ist. Daran schließt das Verfahren das
Vergleichen des Vergleichswert mit einem Minimaladreßwert
des Datenbereichs ein, um einen Vergleichsergebniswert zu
erzeugen. Dann werden der Vergleichsergebniswert und das
Vorzeichenbit miteinander kombiniert, um einen Auswahlwert
zu erzeugen, und in Abhängigkeit vom Auswahlwert wird
entweder der inkrementierte Adreßwert oder der
überarbeitete Adreßwert für einen nächsten Adreßwert
ausgewählt.
Vorteilhafte Ausgestaltungen sind Gegenstand der
Unteransprüche.
Die Erfindung wird nachstehend anhand der Fig. näher
erläutert. Es zeigen:
Fig. 1 ein Blockdiagramm eines Modulo-Adreßerzeugers
gemäß der Erfindung und
Fig. 2 ein Blockdiagramm eines herkömmlichen
Modulo-Adreßerzeugers.
Fig. 1 ist ein Blockschaltbild einer Modulo-Adreß
erzeugerschaltung 200 gemäß der Erfindung. Wie dies in
der Figur dargestellt ist, schließt der Modulo-Adreß
erzeuger 200 einen Addierer 21 ein, der eine aktuelle
Adresse A und ein Adreßinkrement I empfängt, A und I
addiert und ein Ausgangssignal a erzeugt. Eine Addierer-/Subtra
hierer-Schaltung 22 wird vorgesehen, um unter der
Steuerung eines Vorzeichenbitwerts sign(I) des
Adreßinkrements I einen Wert D zum Ausgangswert a vom
Addierer 21 zu addieren oder davon zu subtrahieren, um ein
Ausgangssignal b zu erzeugen, wobei D = M - B + 1 und die
Größe des adressierten Datenbereichs darstellt. Eine
Ausgangsauswahlschaltung 30 wählt entweder das
Ausgangssignal a vom Addierer 21 oder das Ausgangssignal b
von der Addierer-/Subtrahierer-Schaltung 22 aus. Falls das
Vorzeichenbit sign(I) = 0 und der Wert des Ausgangssignals
b von der Addierer-/Subtrahierer-Schaltung 22 größer oder
gleich dem Minimaladreßwert B des Datenbereichs (A + I - D
≧ B) ist, dann wird das Ausgangssignal b von der Addierer-/Subtra
hierer-Schaltung 22 als der nächste Adreßwert NEXT_A
ausgewählt. Andernfalls wird das Ausgangssignal a als
Ausgang für NEXT_A ausgewählt. Falls das Vorzeichenbit
sign(I) = 1 und der Wert des Ausgangssignals a vom Addierer
21 kleiner als der Minimaladreßwert B ist (A + I < B), dann
wird das Ausgangssignal b von der Addierer-/Subtra
hierer-Schaltung 22 als Ausgangswert für NEXT_A ausgewählt.
Andernfalls wird das Ausgangssignal b als der nächste
Adreßwert NEXT_A ausgewählt.
Die Ausgangsauswahlschaltung 30 weist einen ersten
Multiplexer 23 (MUX) auf, der unter der Steuerung des
Vorzeichenbits sign(I) entweder den Ausgangswert a vom
Addierer 21 oder den Ausgangswert b von der Addierer-/Subtra
hierer-Schaltung 22 als Eingangssignal an einen
Vergleicher 24 zum Vergleichen mit dem Minimaladreßwert B
auswählt. Das Ausgangssignal d vom Vergleicher 24 wird in
ein Äquivalenz-Funktions-Gate 25 (XNOR-Gate) eingegeben,
wobei der Wert des Ausgangssignals d mit dem Vorzeichenwert
sign(I) kombiniert wird, um ein Auswahlsignal e zu
erzeugen, welches in einen Multiplexer 26 eingeben wird, um
als Ausgangswert für den nächsten Adreßwert NEXT_A entweder
das Ausgangssignal a vom Addierer 21 oder das
Ausgangssignal b von der Addierer-/Subtrahierer-Schaltung
22 auszuwählen.
Wenn I ≧ 0 und A + I - D < B, dann ist NEXT_A = A + I = a.
Wenn I ≧ 0 und A + I - D ≧ B dann kann jedoch für die
Verwendung bei der Modulo-Adreßerzeugerschaltung 200 (oben)
die obige Gleichung (1) wie folgt ausgedrückt werden:
NEXT_A = A + I - D, wobei D = M - B + 1. (6)
Auf analoge Weise, falls I < 0 und A + I ≧ B, dann ist
NEXT_A = A + I = a. Falls I < 0 und A + I < B, dann kann
jedoch die obige Gleichung wie folgt ausgedrückt werden:
NEXT_A = A + I + D. (7)
Die obigen Gleichungen können bezüglich des Ausgangswerts a
vom Addierer 21, des Ausgangswerts b von der Addierer-/Subtra
hierer-Schaltung 22, des Ausgangswerts c vom
Multiplexer 23, des Ausgangswerts d vom Vergleicher 24 und
des Ausgangswerts vom XNOR-Gate 25 wie folgt dargestellt
werden:
a = A + I;
b = a - D = A + I - (M - B + 1), wenn sign(I) =0; oder
b = a + D = A + I + (M - B + 1), wenn sign(I) = 1;
c = b = A + I - D, wenn sign(I) = 0; oder
c = a = A + I, wenn sign(I) = 1;
d = 1, wenn B ≦ c, wobei
c = A + I - D, wenn sign(I) = 0, und
c = A + I, wenn sign(I) = 1; oder
d = 0, wenn B < c; und
NEXT_A = a, wenn e = 1;
NEXT_A = b, wenn e = 0. (8)
b = a - D = A + I - (M - B + 1), wenn sign(I) =0; oder
b = a + D = A + I + (M - B + 1), wenn sign(I) = 1;
c = b = A + I - D, wenn sign(I) = 0; oder
c = a = A + I, wenn sign(I) = 1;
d = 1, wenn B ≦ c, wobei
c = A + I - D, wenn sign(I) = 0, und
c = A + I, wenn sign(I) = 1; oder
d = 0, wenn B < c; und
NEXT_A = a, wenn e = 1;
NEXT_A = b, wenn e = 0. (8)
Wie oben beschrieben kann ein Modulo-Adreßerzeuger gemäß
der Erfindung unter Verwendung von zwei
Hochgeschwindigkeits-Addierern und eines Komparators
konstruiert werden, wodurch die zur Implementierung der
Erfindung in einer integrierten Schaltung notwendige
Chipfläche verringert wird. Zusätzlich verringern der
Modulo-Adreßerzeuger und das Modulo-Adreßverfahren gemäß
der Erfindung durch Verringerung der Anzahl der
Additionsoperationen die Verzögerungszeit für die Modulo-Adreß
erzeugungsoperation. Folglich ist die Erfindung für
Anwendungen bei digitalen Hochgeschwindigkeits-Signal
prozessoren besonders geeignet.
Claims (5)
1. Modulo-Adreßerzeuger, der aufweist:
einen Addierer (21), der einen aktuellen Adreßwert und einen Adreßinkrementwert empfängt und den Adreßinkrementwert zum aktuellen Adreßwert hinzuaddiert, um einen inkrementierten Adreßwert zu erzeugen;
eine Addierer-/Subtrahierer-Schaltung (22), die den inkrementierten Adreßwert, einen Datenbereichgrößenwert, der einem Datenbereich entspricht, und ein Vorzeichenbit des Adreßinkrementwerts empfängt, wobei die Addierer-/Subtra hierer-Schaltung (22) als Reaktion auf einen negativen Wert des Vorzeichenbits den Datenbereichgrößenwert dem inkrementierten Adreßwert hinzuaddiert, und die als Reaktion auf einen positiven Wert des Vorzeichenbits den Datenbereichgrößenwert vom inkrementierten Adreßwert subtrahiert, um einen überarbeiteten Adreßwert zu erzeugen, und
eine Ausgangsauswahlschaltung (30), die den inkrementierten Adreßwert, den Datenbereichgrößenwert und das Vorzeichenbit empfängt, wobei die Ausgangsauswahlschaltung
den inkrementierten Adreßwert für einen nächsten Adreßwert auswählt, wenn das Vorzeichenbit einen positiven Wert aufweist und der überarbeitete Adreßwert kleiner als ein Minimaladreßwert des Datenbereichs ist,
den überarbeiteten Adreßwert für den nächsten Adreßwert auswählt, wenn das Vorzeichenbit einen positiven Wert aufweist und der überarbeitete Adreßwert größer oder gleich dem Minimaladreßwert des Datenbereichs ist,
den überarbeiteten Adreßwert für den nächsten Adreßwert auswählt, wenn das Vorzeichenbit einen negativen Wert aufweist und der inkrementierte Adreßwert kleiner als der Minimaladreßwert des Datenbereichs ist, und
den inkrementierten Adreßwert als den nächsten Adreßwert auswählt, wenn das Vorzeichenbit einen negativen Wert aufweist und der inkrementierte Adreßwert größer oder gleich dem Minimaladreßwert des Datenbereichs ist.
einen Addierer (21), der einen aktuellen Adreßwert und einen Adreßinkrementwert empfängt und den Adreßinkrementwert zum aktuellen Adreßwert hinzuaddiert, um einen inkrementierten Adreßwert zu erzeugen;
eine Addierer-/Subtrahierer-Schaltung (22), die den inkrementierten Adreßwert, einen Datenbereichgrößenwert, der einem Datenbereich entspricht, und ein Vorzeichenbit des Adreßinkrementwerts empfängt, wobei die Addierer-/Subtra hierer-Schaltung (22) als Reaktion auf einen negativen Wert des Vorzeichenbits den Datenbereichgrößenwert dem inkrementierten Adreßwert hinzuaddiert, und die als Reaktion auf einen positiven Wert des Vorzeichenbits den Datenbereichgrößenwert vom inkrementierten Adreßwert subtrahiert, um einen überarbeiteten Adreßwert zu erzeugen, und
eine Ausgangsauswahlschaltung (30), die den inkrementierten Adreßwert, den Datenbereichgrößenwert und das Vorzeichenbit empfängt, wobei die Ausgangsauswahlschaltung
den inkrementierten Adreßwert für einen nächsten Adreßwert auswählt, wenn das Vorzeichenbit einen positiven Wert aufweist und der überarbeitete Adreßwert kleiner als ein Minimaladreßwert des Datenbereichs ist,
den überarbeiteten Adreßwert für den nächsten Adreßwert auswählt, wenn das Vorzeichenbit einen positiven Wert aufweist und der überarbeitete Adreßwert größer oder gleich dem Minimaladreßwert des Datenbereichs ist,
den überarbeiteten Adreßwert für den nächsten Adreßwert auswählt, wenn das Vorzeichenbit einen negativen Wert aufweist und der inkrementierte Adreßwert kleiner als der Minimaladreßwert des Datenbereichs ist, und
den inkrementierten Adreßwert als den nächsten Adreßwert auswählt, wenn das Vorzeichenbit einen negativen Wert aufweist und der inkrementierte Adreßwert größer oder gleich dem Minimaladreßwert des Datenbereichs ist.
2. Modulo-Adreßerzeuger nach Anspruch 1, bei dem die
Ausgangsauswahlschaltung (30) weiterhin aufweist:
einen ersten Multiplexer (23), der
den inkrementierten Adreßwert und den überarbeiteten Adreßwert empfängt,
den inkrementierten Adreßwert als einen Vergleichswert auswählt, wenn das Vorzeichenbit einen negativen Wert aufweist, und
den überarbeiteten Adreßwert als den Vergleichswert auswählt, wenn das Vorzeichenbit einen positiven Wert aufweist;
einen Vergleicher (24), der den Vergleichswert empfängt und den Vergleichswert mit dem Minimaladreßwert vergleicht, um einen Vergleichsergebniswert zu erzeugen, wobei der Vergleichsergebniswert ein negativer Wert ist, wenn der Vergleichswert größer oder gleich dem Minimaladreßwert ist, und der Vergleichsergebniswert ein positiver Wert ist, wenn der Vergleichswert kleiner als der Minimaladreßwert ist;
eine Äquivalenz-Funktions-Schaltung (25), die den Vergleichsergebniswert und das Vorzeichenbit empfängt und miteinander kombiniert, um ein Auswahlsignal zu erzeugen; und
einen zweiten Multiplexer (26), der den inkrementierten Adreßwert, den überarbeiteten Adreßwert und das Auswahlsignal empfängt und den inkrementierten Adreßwert als den nächsten Adreßwert auswählt, wenn das Auswahlsignal einen positiven Wert aufweist, und den überarbeiteten Adreßwert als den nächsten Adreßwert auswählt, wenn das Auswahlsignal einen negativen Wert aufweist.
einen ersten Multiplexer (23), der
den inkrementierten Adreßwert und den überarbeiteten Adreßwert empfängt,
den inkrementierten Adreßwert als einen Vergleichswert auswählt, wenn das Vorzeichenbit einen negativen Wert aufweist, und
den überarbeiteten Adreßwert als den Vergleichswert auswählt, wenn das Vorzeichenbit einen positiven Wert aufweist;
einen Vergleicher (24), der den Vergleichswert empfängt und den Vergleichswert mit dem Minimaladreßwert vergleicht, um einen Vergleichsergebniswert zu erzeugen, wobei der Vergleichsergebniswert ein negativer Wert ist, wenn der Vergleichswert größer oder gleich dem Minimaladreßwert ist, und der Vergleichsergebniswert ein positiver Wert ist, wenn der Vergleichswert kleiner als der Minimaladreßwert ist;
eine Äquivalenz-Funktions-Schaltung (25), die den Vergleichsergebniswert und das Vorzeichenbit empfängt und miteinander kombiniert, um ein Auswahlsignal zu erzeugen; und
einen zweiten Multiplexer (26), der den inkrementierten Adreßwert, den überarbeiteten Adreßwert und das Auswahlsignal empfängt und den inkrementierten Adreßwert als den nächsten Adreßwert auswählt, wenn das Auswahlsignal einen positiven Wert aufweist, und den überarbeiteten Adreßwert als den nächsten Adreßwert auswählt, wenn das Auswahlsignal einen negativen Wert aufweist.
3. Modulo-Adreßerzeuger nach Anspruch 2, bei dem der
Addierer (21) weiterhin einen Hochgeschwindigkeits-Addierer
aufweist und bei dem die Addierer-/Subtrahierer-Schaltung
(22) weiterhin einen Hochgeschwindig
keits-Addierer/Subtrahierer aufweist.
4. Modulo-Adreßerzeugungsverfahren, das die Schritte
aufweist:
Addieren eines Adreßinkrementwerts und eines aktuellen Adreßwerts, um einen inkrementierten Adreßwert zu erzeugen;
Addieren eines Datenbereichgrößenwerts, der einem Datenbereich entspricht, zu dem inkrementierten Adreßwert hinzu, um einen überarbeiteten Adreßwert zu erzeugen, wenn das Vorzeichenbit des inkrementierten Adreßwerts einen negativen Wert aufweist;
Subtrahieren des Datenbereichgrößenwerts vom inkrementierten Adreßwert, um den überarbeiteten Adreßwert zu überzeugen, wenn das Vorzeichenbit des Adreßinkrementwerts einen positiven Wert aufweist;
Auswählen des inkrementierten Adreßwerts als Vergleichswert, wenn das Vorzeichenbit einen negativen Wert aufweist;
Auswählen des überarbeiteten Adreßwerts als Vergleichswert, wenn das Vorzeichenbit einen positiven Wert aufweist;
Vergleichen des Vergleichswerts mit einem Minimaladreßwert des Datenbereichs, um einen Vergleichsergebniswert zu erzeugen;
Kombinieren des Vergleichsergebniswerts und des Vorzeichenbits, um einen Auswahlwert zu erzeugen; und
Auswählen entweder des inkrementierten Adreßwerts oder des überarbeiteten Adreßwerts als nächsten Adreßwert in Abhängigkeit des Auswahlwerts.
Addieren eines Adreßinkrementwerts und eines aktuellen Adreßwerts, um einen inkrementierten Adreßwert zu erzeugen;
Addieren eines Datenbereichgrößenwerts, der einem Datenbereich entspricht, zu dem inkrementierten Adreßwert hinzu, um einen überarbeiteten Adreßwert zu erzeugen, wenn das Vorzeichenbit des inkrementierten Adreßwerts einen negativen Wert aufweist;
Subtrahieren des Datenbereichgrößenwerts vom inkrementierten Adreßwert, um den überarbeiteten Adreßwert zu überzeugen, wenn das Vorzeichenbit des Adreßinkrementwerts einen positiven Wert aufweist;
Auswählen des inkrementierten Adreßwerts als Vergleichswert, wenn das Vorzeichenbit einen negativen Wert aufweist;
Auswählen des überarbeiteten Adreßwerts als Vergleichswert, wenn das Vorzeichenbit einen positiven Wert aufweist;
Vergleichen des Vergleichswerts mit einem Minimaladreßwert des Datenbereichs, um einen Vergleichsergebniswert zu erzeugen;
Kombinieren des Vergleichsergebniswerts und des Vorzeichenbits, um einen Auswahlwert zu erzeugen; und
Auswählen entweder des inkrementierten Adreßwerts oder des überarbeiteten Adreßwerts als nächsten Adreßwert in Abhängigkeit des Auswahlwerts.
5. Verfahren nach Anspruch 4, bei dem:
der Schritt des Vergleichens des Vergleichswerts mit einem Minimaladreßwert weiterhin einschließt:
Einstellen des Vergleichsergebniswerts auf einen negativen Wert, wenn der Vergleichswert größer oder gleich dem Minimaladreßwert ist, und
Einstellen des Vergleichsergebniswerts auf einen positiven Wert, wenn der Vergleichswert kleiner als der Minimaladreßwert ist;
der Schritt des Kombinierens des Vergleichsergebniswerts und des Vorzeichenbits weiterhin einschließt:
Kombinieren des Vergleichsergebniswerts mit dem Vorzeichenbit mittels einer Äquivalenz-Funktion, um den Auswahlwert zu erzeugen; und
der Schritt des Auswählens entweder des inkrementierten Adreßwerts oder des überarbeiteten Adreßwerts weiterhin einschließt:
Auswählen des inkrementierten Adreßwerts als nächsten Adreßwert, wenn der Auswahlwert einen negativen Wert aufweist, und
Auswählen des überarbeiteten Adreßwerts als den nächsten Adreßwert, wenn der Auswahlwert einen positiven Wert aufweist.
der Schritt des Vergleichens des Vergleichswerts mit einem Minimaladreßwert weiterhin einschließt:
Einstellen des Vergleichsergebniswerts auf einen negativen Wert, wenn der Vergleichswert größer oder gleich dem Minimaladreßwert ist, und
Einstellen des Vergleichsergebniswerts auf einen positiven Wert, wenn der Vergleichswert kleiner als der Minimaladreßwert ist;
der Schritt des Kombinierens des Vergleichsergebniswerts und des Vorzeichenbits weiterhin einschließt:
Kombinieren des Vergleichsergebniswerts mit dem Vorzeichenbit mittels einer Äquivalenz-Funktion, um den Auswahlwert zu erzeugen; und
der Schritt des Auswählens entweder des inkrementierten Adreßwerts oder des überarbeiteten Adreßwerts weiterhin einschließt:
Auswählen des inkrementierten Adreßwerts als nächsten Adreßwert, wenn der Auswahlwert einen negativen Wert aufweist, und
Auswählen des überarbeiteten Adreßwerts als den nächsten Adreßwert, wenn der Auswahlwert einen positiven Wert aufweist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019960071766A KR19980052741A (ko) | 1996-12-24 | 1996-12-24 | 모듈로(Modulo) 주소발생기 및 그 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
DE19746076A1 true DE19746076A1 (de) | 1998-06-25 |
Family
ID=19490819
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19746076A Ceased DE19746076A1 (de) | 1996-12-24 | 1997-10-17 | Schaltung und Verfahren zur Modulo-Adresserzeugung mit verkleinerter Schaltungsfläche |
Country Status (4)
Country | Link |
---|---|
US (1) | US6052768A (de) |
KR (1) | KR19980052741A (de) |
DE (1) | DE19746076A1 (de) |
TW (1) | TW337562B (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10318451A1 (de) * | 2003-04-23 | 2004-11-11 | Endress + Hauser Conducta Gesellschaft für Mess- und Regeltechnik mbH + Co.KG | Verfahren zum Adressieren von Modulen eines Bussystems |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1746496B1 (de) * | 2005-07-19 | 2010-05-05 | Emma Mixed Signal C.V. | Arithmetisches Modul |
US7849125B2 (en) | 2006-07-07 | 2010-12-07 | Via Telecom Co., Ltd | Efficient computation of the modulo operation based on divisor (2n-1) |
US10180829B2 (en) * | 2015-12-15 | 2019-01-15 | Nxp Usa, Inc. | System and method for modulo addressing vectorization with invariant code motion |
Family Cites Families (4)
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 |
US5790443A (en) * | 1994-06-01 | 1998-08-04 | S3 Incorporated | Mixed-modulo address generation using shadow segment registers |
US5659700A (en) * | 1995-02-14 | 1997-08-19 | Winbond Electronis Corporation | Apparatus and method for generating a modulo address |
-
1996
- 1996-12-24 KR KR1019960071766A patent/KR19980052741A/ko not_active Application Discontinuation
-
1997
- 1997-08-29 US US08/921,295 patent/US6052768A/en not_active Expired - Fee Related
- 1997-09-09 TW TW086113032A patent/TW337562B/zh not_active IP Right Cessation
- 1997-10-17 DE DE19746076A patent/DE19746076A1/de not_active Ceased
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10318451A1 (de) * | 2003-04-23 | 2004-11-11 | Endress + Hauser Conducta Gesellschaft für Mess- und Regeltechnik mbH + Co.KG | Verfahren zum Adressieren von Modulen eines Bussystems |
Also Published As
Publication number | Publication date |
---|---|
US6052768A (en) | 2000-04-18 |
KR19980052741A (ko) | 1998-09-25 |
TW337562B (en) | 1998-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19748547B4 (de) | Modulo-Adresserzeugungsschaltung und -verfahren | |
DE4302898C2 (de) | Arithmetische Recheneinheit mit Akkumulierfunktion | |
DE68927121T2 (de) | Absolutwertberechnende Schaltung mit einem einzigen Addierer | |
DE3485792T2 (de) | Digitale signalverarbeitungseinrichtungen. | |
DE69126804T2 (de) | Kompressionssystem von bewegten Bilddaten | |
DE69130448T2 (de) | Adressenerzeugungsschaltung | |
DE69324730T2 (de) | Multiplizier-Akkumulator | |
DE2229149A1 (de) | Verfahren zur Übertragung von Sprache | |
DE69130640T2 (de) | Arithmetische Operationseinheit mit Bit-Invertierungsfunktion | |
DE3625612A1 (de) | Einrichtung zur digitalen signalueberlaufkorrektur | |
DE2946846A1 (de) | Rundungs-korrekturlogik fuer multiplizierer fuer modifizierten booth-algorithmus | |
DE3888230T2 (de) | Einrichtung und Verfahren zur Durchführung einer Schiebeoperation mit einer Multipliziererschaltung. | |
DE69423240T2 (de) | Verfahren und vorrichtung für quadratische interpolation | |
DE68927652T2 (de) | Dividierschaltung für ganze Zahlen, versehen mit einer Überlaufdetektionsschaltung | |
DE3586366T2 (de) | Verfahren und schaltung zur erzeugung eines zeitvariablen signals. | |
DE19618120B4 (de) | Parallelverarbeitungs-Divisionsschaltung | |
DE69808362T2 (de) | Multiplizierverfahren und Multiplizierschaltung | |
DE3852048T2 (de) | Digital-Analogwandler. | |
DE4019646C2 (de) | Vorrichtung und Verfahren zum Multiplizieren von Datenwörtern in Zweier-Komplement-Darstellung | |
DE19748484A1 (de) | Schaltung und Verfahren zur Überlauferfassung bei einem digitalen Signalprozessor | |
DE4408768C1 (de) | Verfahren zur Filterung einer digitalen Wertefolge mit verbessertem Rauschverhalten und Schaltungsanordnung zur Durchführung des Verfahrens | |
DE69032358T2 (de) | Datenverarbeitungssystem für Audiosignale | |
DE19746076A1 (de) | Schaltung und Verfahren zur Modulo-Adresserzeugung mit verkleinerter Schaltungsfläche | |
DE69320147T2 (de) | Vorrichtung zur Bildkodierung | |
DE3334541A1 (de) | Digitalsignal-filtereinrichtung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
8125 | Change of the main classification |
Ipc: G06F 1200 |
|
8131 | Rejection |