DE10200133A1 - Verfahren und Vorrichtung zur Berechnung von Modulo-Operationen - Google Patents
Verfahren und Vorrichtung zur Berechnung von Modulo-OperationenInfo
- Publication number
- DE10200133A1 DE10200133A1 DE10200133A DE10200133A DE10200133A1 DE 10200133 A1 DE10200133 A1 DE 10200133A1 DE 10200133 A DE10200133 A DE 10200133A DE 10200133 A DE10200133 A DE 10200133A DE 10200133 A1 DE10200133 A1 DE 10200133A1
- Authority
- DE
- Germany
- Prior art keywords
- value
- calculating
- integer
- mod
- calculation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/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
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Error Detection And Correction (AREA)
- Complex Calculations (AREA)
Abstract
Description
- Die Erfindung betrifft Verfahren und Vorrichtungen zur Berechnung von Modulo-Operationen.
- In den verschiedensten Bereichen der Informations- und Kommunikationstechnologie spielt die Berechnung eines Rests r, der bei der Division einer ganzen Zahl a durch eine ganze Zahl p entsteht, eine wichtige Rolle. Die Operation zur Bestimmung des Rests r wird als Modulo-Operation bezeichnet und durch den mathematischen Ausdruck r = a mod p angegeben.
- Ein spezielles Anwendungsgebiet, in welchem Modulo-Operationen in großer Zahl ausgeführt werden, betrifft den Turbo- (De-)Interleaving Algorithmus bei der Ver- bzw. Entschachtelung eines Bitstroms gemäß einem Mobilfunkstandard, insbesondere UMTS (Universal Mobil Telecommunication System). In der Mobilfunktechnik werden die auszusendenden Datenbits blockweise nach einer bestimmten Verschachtelungsvorschrift verschachtelt, wodurch eine gewisse Robustheit des auszusendenden Signals gegenüber kurzzeitigen Störungen erreicht wird. Im Empfänger muss der empfangene Datenbitstrom wieder entschachtelt werden, um die ursprüngliche Reihenfolge der Bits wieder herzustellen.
- Die Ver- bzw. Entschachtelungsvorschrift wird im UMTS-Standard durch eine zweidimensionale Koordinaten-Transformationsmatrix, die in Abhängigkeit von der Blockgröße des zu ver- bzw. entschachtelnden Datenstroms aufgebaut ist, dargestellt. Die Aufbauvorschrift zur Berechnung einer Koordinate der Transformationsmatrix umfasst die Durchführung mehrerer Modulo-Operationen.
- Gegenwärtig werden die Modulo-Operationen mittels eines Signalprozessors Software-gesteuert berechnet. Nachteilig ist dabei, dass herkömmliche Signalprozessoren für die Berechnung einer Modulo-Operation in der Größenordnung von 10 bis 20 Maschinenzyklen (bei einer Wortbreite von 16 oder 32 Bit) benötigen, d. h. ein erheblicher Zeitaufwand anfällt.
- Sofern der Wertebereich der Eingabegröße a beschränkt ist, würde eine einfache Möglichkeit zur Berechnung der Modulo- Operation a mod p darin bestehen, sämtliche Werte n.p für n = 1, 2, . . . in einem Speicher abzulegen und anschließend in Richtung steigender Werte (d. h. ansteigendem n) auszulesen. Sobald derjenige Wert n.p erreicht ist, für den a - n.p ≥ 0 und a - (n + 1).p < 0 gilt, ergibt sich der gesuchte Rest r zu r = a - n.p.
- Dieses Verfahren ermöglicht eine Realisierung der Modulo- Berechnung in Hardware, erfordert jedoch eine hohe Anzahl von Speicherzugriffen.
- Der Erfindung liegt die Aufgabe zugrunde, Verfahren zu schaffen, welche die Berechnung von Modulo-Operationen mit einem geringen Zeitaufwand ermöglichen. Ferner zielt die Erfindung darauf ab, Vorrichtungen zur schnellen Berechnung von Modulo- Operationen anzugeben, welche insbesondere auch in Form von Hardware-Schaltungen realisierbar sein sollen. Insbesondere sollen die Verfahren bzw. Vorrichtungen für die Berechnung von Modulo-Operationen beim Interleaving bzw. Deinterleaving gemäß dem UMTS-Standard in aufwandsgünstiger Weise einsetzbar sein.
- Die der Erfindung zugrundeliegende Aufgabenstellung wird durch die Merkmale der Ansprüche 1, 11, 15 und 17 gelöst. Vorteilhafte Weiterbildungen der Erfindung sind in den Unteransprüchen angegeben.
- Gemäß einem ersten Aspekt der Erfindung wird bei einem Verfahren zur Berechnung von Modulo-Operationen a mod p eine Tabelle verwendet, welche die Werte n.p für n = 1, 2, . . . enthält, wobei a und p ganze positive Zahlen sind und a mod p = a - n.p ist, und es werden die folgenden Schritte durchgeführt: Berechnen einer ganzzahligen Hypothese nH für den unbekannten Wert n; Nachschlagen des Wertes nH.p sowie mindestens eines benachbarten Wertes (nH + 1).p und/oder (nH - 1).p in der Tabelle; Berechnen des Ausdrucks a - nH.p sowie mindestens eines der Ausdrücke a - (nH + 1).p und/oder a - (nH - 1).p und Vergleichen zumindest eines dieser Ausdrücke mit dem Wert 0; und Ausgeben des anhand des Vergleichs bestimmten Wertes a - n.p.
- Ein wesentlicher Gesichtspunkt der Erfindung gemäß dem ersten Aspekt besteht somit darin, nicht sämtliche in der Tabelle abgespeicherten Werte sondern nur einige wenige dieser Werte nachschlagen zu müssen. Die Berechnung der Differenzausdrücke a - n.p sowie der Vergleich derselben mit dem Wert 0 muss ebenfalls nur für diese wenigen (vorzugsweise zwei oder drei Stück) anhand der Hypothese nH gebildeten Werte vorgenommen werden. Als Folge davon ergibt sich ein schneller Algorithmus. In Hardware implementiert läßt sich dieses Verfahren mit einer wesentlich geringeren Anzahl an Maschinenzyklen durchführen als dies bei einer Software-gesteuerten Berechnung der Modulo-Operation der Fall ist. Zudem ist dieses Verfahren unabhängig von der Wortbreite der Werte a und p.
- Eine besonders bevorzugte Ausgestaltung des Verfahrens kennzeichnet sich dadurch, dass die Berechnung der ganzzahligen Hypothese nH die Schritte umfasst: Berechnen eines ersten Näherungswertes für a/p der Form a/2x, wobei x eine ganze positive Zahl ist und so bestimmt wird, dass 2x ≤ p < 2x+1 gilt; Berechnen von nH aus dem ersten Näherungswert durch Vernachlässigung der Nachkommastellen des Näherungswertes.
- Falls p eine Potenz zur Basis 2 ist, ist die Hypothese nH bereits der gesuchte Wert n. Für Werte von p, die in der Nähe einer Zweierpotenz liegen, ist dieses Verfahren zur Berechnung von nH ebenfalls ausreichend.
- Ein alternatives Berechnungsverfahren kennzeichnet sich dadurch, dass die Berechnung der ganzzahligen Hypothese nH die Schritte umfasst: Berechnen eines ersten Näherungswertes für a/p der Form a/2x, wobei x eine ganze positive Zahl ist; Berechnen eines Korrekturwertes der Form p/2x; Invertieren des Korrekturwertes; Berechnen eines zweiten Näherungswertes als Produkt aus dem ersten Näherungswert und dem invertierten Korrekturwert; und Berechnen von nH aus dem zweiten Näherungswert durch Vernachlässigung der Nachkommastellen des zweiten Näherungswertes.
- Durch die Berechnung des Korrekturwertes wird erreicht, dass auch bei Werten von p, die nicht in der Nähe einer Zweierpotenz liegen, das Nachschlagen von zwei oder maximal drei Werten aus der Tabelle stets ausreichend ist, um die Modulo- Operation zu lösen.
- Aufgrund der Tatsache, dass sich sowohl der erste Näherungswert als auch der Korrekturwert durch eine einfache Rechtsverschiebung um x Stellen der entsprechenden Binärdarstellung (von a bzw. p) berechnen lassen, ergeben sich einfache Hardware-Realisierungen zur Durchführung dieser Rechenschritte.
- Vorzugsweise hat das niedrigstwertige Bit der Binärdarstellung des Korrekturwertes die Wertigkeit 2-t, wobei t eine ganze Zahl größer oder gleich 1 ist. Durch die Wahl von t kann die Genauigkeit der Berechnung des Korrekturwertes und damit die Genauigkeit der Berechnung des zweiten Näherungswertes eingestellt werden. In vielen Fällen (z. B. beim UMTS- Interleaving bzw. -Deinterleaving) ist t ≤ 5 ausreichend.
- Eine Vorrichtung zur Berechnung von Modulo-Operationen a mod p nach dem ersten Aspekt der Erfindung umfasst eine Tabelle, welche die Werte n.p für n = 1, 2, . . . enthält, eine Einheit zum Berechnen einer ganzzahligen Hypothese nH für den unbekannten Wert n, eine Einheit zum Nachschlagen des Wertes nH.p sowie mindestens eines benachbarten Wertes (nH + 1).p und/oder (nH - 1).p in der Tabelle, eine Einheit zum Berechnen der Ausdrücke a - nH.p sowie a - (nH + 1).p und/oder a - (nH - 1).p und Vergleichen derselben mit dem Wert 0, und eine Einheit zum Ausgeben des anhand des Vergleichs bestimmten Wertes a - n.p.
- Die Einheit zum Berechnen einer ganzzahligen Hypothese nH umfasst vorzugsweise ein Schieberegister zur Durchführung einer Rechtsverschiebung der Binärdarstellung des Wertes von a und weist ferner in bevorzugter Weise eine ROM-Tabelle mit 2t+1 Einträgen und t + 1 Schiebe- und Addierstufen auf, wobei t eine ganze positive Zahl ist.
- Nach einem zweiten Aspekt der Erfindung wird die der Erfindung zugrundeliegende Aufgabenstellung durch ein Verfahren bzw. eine Vorrichtung zur Berechnung von Sequenzen von Modulo-Operationen (j.q) mod (p - 1) mit j = 0, 1, 2, . . . gemäß den Merkmalen der Ansprüche 15 und 17 gelöst.
- Die Berechnung der Modulo-Operation erfolgt hier durch ein Rekursionsverfahren, das induktiv auf ein Ergebnis (Übergabewert np) zurückgreift, das bei der Berechnung im vorhergehenden Rekursionsschritt gewonnen wurde. Auf diese Weise können die Modulo-Operationen sukzessive für Eingabegrößen der Form (j.q) gelöst werden.
- Die Erfindung wird nachfolgend anhand von Beispielen unter Bezugnahme auf die Zeichnung beschrieben; in dieser zeigt:
- Fig. 1 eine schematische Darstellung eines Schaltungsbeispiels gemäß dem ersten Aspekt der Erfindung;
- Fig. 2 eine schematische Darstellung eines Ablaufdiagramms zur Erläuterung der Arbeitsweise der in Fig. 1 gezeigten Schaltung;
- Fig. 3 eine schematische Darstellung eines Schaltungsbeispiels gemäß dem zweiten Aspekt der Erfindung; und
- Fig. 4 ein Ablaufdiagramm zur Erläuterung der Funktionsweise der in Fig. 3 gezeigten Schaltung.
- Beim UMTS-Standard beträgt die Blockgröße zwischen 40 und 5114 Bits. Die Verschachtelungsvorschrift (Permutation) wird durch eine zweidimensionale Koordinaten-Transformationsmatrix angegeben. Diese ist durch die Blockgröße vollständig determiniert. Sie weist in Abhängigkeit von der Blockgröße eine Anzahl von 5, 10 oder 20 Zeilen und eine geeignete Anzahl von Spalten auf.
- Die Verschachtelungsprozedur besteht in einer Intra-Zeilen Permutation, einer Inter-Zeilen Permutation und in einem Beschneiden (Pruning) der Ausgabebits dieser Koordinaten- Transformationsmatrix. Die entsprechenden Schritte sind in den Kapiteln 4.2.3.2.3.1 (Definition der Koordinaten-Transformationsmatrix), 4.2.3.2.3.2 (Intra-Zeilen Permutation, Inter-Zeilen Permutation) und 4.2.3.2.3.3 (Beschneiden) der Technischen Spezifikationen 3GPP TS 25.212 V3.5.0 (2000-12) angegeben und werden durch Bezugnahme dem Inhalt dieser Schrift hinzugefügt.
- Bei der Intra-Zeilen Permutation müssen zwei Modulo-Operationen ausgeführt werden:
s(i) = (v.s(i - 1)) mod p; i = 0, 1, . ., (p - 2); s(0) = 1 (1)
(j.qi) mod (p - 1); j = 0, 1, . ., (p - 2) (2)
- Die Modulo-Operation (1) dient der Erzeugung der sogenannten Basissequenz s(i) für die Intra-Zeilen Permutation (siehe Kapitel 4.2.3.2.3.2, Punkt 2 des oben genannten Standards), während die Modulo-Operation (2) die Permutationsvorschrift für die i-te Intra-Zeilen Permutation (siehe Kapitel 4.2.3.2.3.2, Punkt 5 des obengenannten Standards, i ist der Zeilenindex der Koordinaten-Transformtionsmatrix) angibt. Mit p wird im UMTS-Standard eine Primzahl zwischen 7 und 257 bezeichnet, v ist die sogenannte primitive Wurzel und beträgt zwischen 2 und 19. Mit qi wird im UMTS-Standard die Folge der sog. minimalen Primzahlen bezeichnet.
- Eine detaillierte Beschreibung der Verwendung der Modulo-Operationen (1) und (2) im UMTS-Standard ist für das Verständnis der Erfindung nicht erforderlich und wird daher hier nicht vorgenommen.
- Die im Folgenden anhand der Fig. 1-4 erläuterten Schaltungsbeispiele zur Berechnung der beiden Modulo-Operationen (1) und (2) werden unter Verwendung der vorstehend zum UMTS- Standard eingeführten mathematischen Notation erklärt, jedoch wird die Größe qi im Folgenden einfach als q angegeben. Die Schaltungen sowie das Verfahren sind jedoch nicht nur auf die Berechnung von Modulo-Operationen im UMTS-Standard anwendbar. Insofern sind folgende Verallgemeinerungen von der Erfindung umfasst:
- - p und q müssen keine Primzahlen sein, sondern können allgemein ganze positive Zahlen darstellen;
- - das Produkt v.s(i - 1) kann durch eine beliebige Eingabegröße
a, die ebenfalls eine ganze positive Zahl ist, ersetzt
werden. In diesem Fall lautet die Modulo-Operation (1)
s = a mod p (1')
wobei der Wertebereich von a beschränkt ist; - - der Term (p - 1) bei der zweiten Modulo-Operation (2) kann durch p ersetzt werden, sofern sie unabhängig von der ersten Modulo-Operation (1) betrachtet wird.
- Fig. 1 zeigt eine Schaltung zur Berechnung der Modulo- Operation (1) bzw. (1').
- Die Schaltung umfasst eine Tabelle 1, in welcher die Vielfachen der Zahl p, d. h. p.n, mit n = 0, 1, 2, . . ., v, abgelegt sind. Die dem Vielfachen n.p zugeordnete Adresse ist mit ADDR_n bezeichnet. Wird im allgemeinen Fall ein maximaler Eingabewert amax betrachtet, wird v = int[amax/P] gewählt. Dabei bezeichnet int[amax/P] die auf den Quotienten amax/p angewendete Integer-Funktion, welche bewirkt, dass v eine ganze positive Zahl ist.
- Eingangsseitig steht die Tabelle 1 über eine Datenverbindung 2.1 mit einem Zustandsgenerator 2 in Verbindung, welcher die Produkte n.p, n = 0, 1, 2, . . ., v, liefert.
- Ein Ausgang der Tabelle 1 wird von einem Adressenermittler 3 angesteuert, welcher zwei Adressen ADDR_nH und ADDR_nH + 1 erzeugt und die zugehörigen Produkte nH.p und (nH + 1).p aus der Tabelle 1 ausliest und an zwei Ausgängen 4 bzw. 5 bereitstellt.
- Die Ausgänge 4 und 5 sind jeweils mit einem Speicher 6 bzw. 7 zur Abspeicherung der Produkte nH.p bzw. (nH + 1).p verbunden.
- Neben dem Zustandsgenerator 2 wird die Zahl p einer ersten Berechnungseinheit 8 zur Berechnung einer Stellenverschiebung x und einer zweiten Berechnungseinheit 9 zur Berechnung eines Korrekturwertes y zugeführt.
- Die Stellenverschiebung x ist diejenige Potenz von 2 (d. h. 2x), die die Beziehung
2x ≤ p < 2x+1
erfüllt. - Der Korrekturwert y wird in der zweiten Berechnungseinheit 9 gemäß dem Ausdruck
y = RV(p|x)
berechnet. Dabei bezeichnet RV(p|x) eine Rechtsverschiebung der Binärdarstellung der Zahl p um x Stellen. Für y können dabei z. B. sechs signifikante Bits (der Wertigkeiten 1, 1/2, 1/4, 1/8, 1/16, 1/32) berücksichtigt werden. - Die Zahlen x und y werden einem Adressengenerator 10 über die Eingänge 10.3 bzw. 10.4 zugeleitet. Der Adressengenerator 10 weist einen weiteren Eingang 10.5 auf, über welchen er entweder den Eingabewert a (Fall (1')) oder das Produkt v.s(i - 1) (Fall (1)) erhält. Im zweiten Fall ist ein Multiplizierer 11 zur Berechnung dieses Produktes in der Schaltung enthalten.
- Der Adressengenerator 10 umfasst zwei Module 10.1 und 10.2. Das erste Modul 10.1 dient zur Berechnung eines ersten Näherungswertes appr1, welcher eine erste Näherung für die gesuchte Sprungadresse der Tabelle 1 darstellt.
- Das erste Modul 10.1 umfasst zu diesem Zweck ein Schieberegister 10.11, in welchem die Binärdarstellung des Eingabewertes a bzw. des Produktes v.s(i - 1) abgespeichert ist. Die das höchstwertige Bit MSB enthaltende Speicherzelle des Schieberegisters 10.11 ist in Fig. 1 gefüllt dargestellt und die vier folgenden Speicherzellen sind schattiert dargestellt.
- Zur Berechnung des ersten Näherungswertes appr1 wird in dem Schieberegister 10.11 eine Rechtsverschiebung um x Stellen durchgeführt, d. h.
appr1 = RV(a|x) bzw. appr1 = RV((v.s(i - 1))|x).
- Bei der Rechtsverschiebung können die Nachkommastellen verworfen werden, was zur Folge hat, dass appr1 eine positive ganze Zahl ist.
- Eine nicht dargestellte, erste Möglichkeit besteht darin, appr1 zur Ansteuerung des Adressenermittlers 3 einzusetzen. Allerdings kann eine ausreichend hohe Genauigkeit von appr1 nicht für alle Werte von p garantiert werden.
- Gemäß Fig. 1 wird der erste Näherungswert appr1 daher dem zweiten Modul 10.2 zugeleitet, welches unter Berücksichtigung des Wertes y einen verbesserten zweiten Näherungswert appr2 berechnet. Dieser wird an einem Ausgang 11 des Adressengenerators 10 dem Adressenermittler 3 zugeleitet.
- Das zweite Modul 10.2 berechnet den zweiten Näherungswert appr2 gemäß der Beziehung
appr2 = appr1.y-1.
- Zu diesem Zweck kann das zweite Modul 10.2 eine ROM-Tabelle 12 und Schiebe- und Addierstufen 13 umfassen.
- Die Invertierung des Wertes y in den Wert y-1 erfolgt mittels der ROM-Tabelle 12. Unter der Voraussetzung, dass y eine Bitbreite von 6 aufweist, muss die ROM-Tabelle 26 = 64 Einträge aufweisen.
- Die invertierte Zahl y-1 sowie der erste Nährungswert appr1 werden dann von den Schiebe- und Addierstufen 13 nach der oben angegebenen Beziehung multipliziert. Die Einheit 13 ist zu diesem Zweck im vorstehend beschriebenen Fall aus einer Parallelanordnung bestehend aus 6 Schiebe- und Addierstufen (dies ist für die Berechnung der Modulo-Operation beim UMTS- Standard ausreichend) realisiert.
- Dem Aufbau des Adressengenerators 10 liegt somit die folgende mathematische Beziehung zugrunde:
(v.s(j - 1))/p = (v.s(j - 1))/2x.(p/2x)-1 bzw.
a/p = a/2x.(p/2x)-1.
- Dabei wird (v.s(j - 1))/2x bzw. a/2x durch den Ausdruck RV((v.s(i - 1))|x) bzw. RV (a|x) approximiert und (p/2x) wird durch den Ausdruck RV(p|x) approximiert, wobei im zweiten Fall Bits der Wertigkeiten 1, 1/2, . . ., 1/32 berücksichtigt werden. Die invertierte Zahl y-1 wird dann, wie bereits erwähnt, mit einer Genauigkeit von maximal 6 Bit Wortbreite berechnet. Damit der zweite Näherungswert appr2 eine ganze Zahl ist, werden in seiner Binärdarstellung Bits einer kleineren Wertigkeit als 20 verworfen.
- Die Schaltung umfasst ferner zwei Subtrahierer 14 und 15. Beide Subtrahierer 14, 15 nehmen jeweils an einem ersten Eingang 14.1 bzw. 15.1 die Zahl a oder das Produkt v.s(i - 1) entgegen. Mit seinem zweiten Eingang 14.2 steht der Subtrahierer 14 mit einem Ausgang des Speichers 6 in Verbindung, während der Subtrahierer 15 mit seinem zweiten Eingang 15.2 mit einem Ausgang des Speichers 7 verbunden ist.
- Die Ergebniswerte des Subtrahierers 14 (K0 = v.s(i - 1) - nH.p bzw. K0 = a - nH.p) und des Subtrahierers 15 (K+ = v.s(i - 1) - (nH + 1).p bzw. K+ = a - (nH + 1).p) werden einer Einheit zur Vorzeichenbewertung 16 zugeleitet. Diese steht über eine Steuerleitung 17 mit dem Steuereingang eines Multiplexers 18 in Verbindung. Die zwei Multiplexereingänge des Multiplexers 18 sind mit den Ausgängen der Subtrahierer 14 und 15 verbunden. Am Ausgang 18.1 des Multiplexers 18 wird das Ergebnis der Modulo-Berechnung ausgegeben.
- Fig. 2 verdeutlicht die Funktionsweise der in Fig. 1 gezeigten Schaltung.
- In einem ersten Schritt S1 werden mittels des Zustandsgenerators 2 die Produkte n.p, n = 0, 1, 2, . . ., v, berechnet.
- Im Schritt S2 werden diese Werte in die Tabelle 1 eingetragen.
- Anschließend werden in dem Schritt S3 unter Verwendung der ersten und zweiten Berechnungseinheiten 8 und 9 die Stellenverschiebung x und der Korrekturwert y berechnet. Gegebenenfalls erfolgt im Schritt S4 eine Berechnung des Produktes v.s(i - 1).
- Im Schritt S5 wird in der bereits beschriebenen Weise der zweite Näherungswert appr2 ermittelt.
- Gemäß der Beziehung nH = appr2 werden die zwei Produkte nH.p und (nH + 1).p aus der Tabelle 1 ausgelesen, siehe Schritt S6.
- Die im Schritt S7 durchgeführte Berechnung der Werte K0 und K+ wird mittels der beiden Subtrahierer 14 und 15 ausgeführt.
- Im Schritt S8 überprüft die Einheit zur Vorzeichenbewertung 16, ob K+ ≥ 0 ist. Sofern dies der Fall ist, wird über die Steuerleitung 17 der Ausgang des Subtrahierers 15 an den Ausgang 18.1 des Multiplexers 18 gelegt. Andernfalls (K+ < 0) wird der Ausgang des Subtrahierers 14 an den Ausgang 18.1 des Multiplexers 18 gelegt.
- Die Schritte S6 bis S8 können in der Weise modifiziert werden, dass ferner der Produktwert (nH - 1).p aus der Tabelle 1 ausgelesen wird. In diesem Fall muss der Adressenermittler 3 zusätzlich die Adresse ADDR_nH- 1 erzeugen, und es müssen in der Schaltung ein weiterer Speicher (entsprechend 6 bzw. 7), ein weiterer Subtrahierer (entsprechend 14 bzw. 15) und ein Multiplexer 18 mit 3 Eingängen vorhanden sein. Ferner wird in diesem Fall im Schritt S7 zusätzlich der Wert K- = v.s(i - 1) - (nH - 1).p bzw. K- = a - (nH - 1).p berechnet und der Einheit 16 zur Vorzeichenbewertung zugeleitet. Letztere muss im Fall K+ < 0 eine weitere Überprüfung durchführen, nämlich ob K0 ≥ 0 ist. Sofern dies der Fall ist, wird der Wert K0 an den Ausgang 18.1 gelegt, andernfalls wird der Wert K- ausgegeben.
- Fig. 3 zeigt ein vereinfacht dargestelltes Schaltungsbild einer Schaltung gemäß dem zweiten Aspekt der Erfindung.
- Die Schaltung umfasst drei Multiplizierer 100, 101 und 102. Ferner sind zwei Subtrahierer 103 und 104 und ein erster Zähler 21 für den Laufindex j vorgesehen. Die positiven Eingänge 103.1 und 104.1 der Subtrahierer 103 bzw. 104 sind mit dem Ausgang des ersten Multiplizierers 100 verbunden, während der Subtraktionseingang 103.2 des Subtrahierers 103 mit dem Ausgang des zweiten Multiplizierers 101 und der Subtraktionseingang 104.2 des zweiten Subtrahierers 104 mit dem Ausgang des dritten Multiplizierers 102 verbunden sind.
- Die Schaltung umfasst ferner einen Vergleicher 105, dessen erster Eingang 105.1 mit dem Ausgang des ersten Multiplizierers 100 und dessen zweiter Eingang 105.2 mit dem Ausgang des zweiten Multiplizierers 101 verbunden sind.
- Das an einem Ausgang des Vergleichers 105 anliegende Vergleichsergebnis wird über eine Steuerleitung 106 einem Multiplexer 107 und über eine Steuerleitung 108 einem zweiten Zähler 22 zugeleitet. Der Multiplexer 107 nimmt die Ausgangssignale der beiden Subtrahierer 103 und 104 entgegen und gibt in Abhängigkeit von dem Wert des Steuersignals 106 eines dieser Ausgangssignale an seinem Ausgang 107.1 aus.
- Der zweite Zähler Z2 umfasst einen Multiplexer 109 sowie einen von dem Ausgang des Multiplexers 109 gespeisten Akkumulator. Der Akkumulator umfasst einen Addierer 110, dessen einer Addiereingang mit dem Ausgang des Multiplexers 109 verbunden ist sowie einen Speicher 111, welcher das am Ausgang des Addierers 110 anliegende Additionsergebnis an den anderen Eingang des Addierers 110 zurückkoppelt.
- Ferner umfasst die Schaltung eine Einheit 112 zur Bildung eines Quotienten und Durchführung einer Rundungsoperation (Vernachlässigung der Nachkommastellen) an dem Quotienten.
- Die in Fig. 3 dargestellte Schaltung berechnet induktiv die Sequenz der Modulo-Operationen (2). Ihre Funktionsweise wird im Folgenden anhand der Fig. 3 und 4 näher erläutert.
- In einem Anfangsschritt S101 (siehe Fig. 4) wird mittels der Einheit 112 aus den Zahlen q und (p - 1) die Größe dp ermittelt.
dp = int[q/(p - 1)]
- Dabei bezeichnet int[q/(p - 1)] die auf den Quotienten q/(p - 1) angewendete Integer-Funktion, welche bewirkt, dass dp eine ganze positive Zahl ist.
- Im Folgenden wird die Rekursion zur Berechnung der Modulo- Ausdrücke für den Laufindex j beschrieben. Die in Fig. 3 dargestellten Größenangaben beziehen sich auf eine Momentaufnahme zum Zeitpunkt j = n + 1, d. h. am Ausgang 107.1 des Multiplexers 107 soll das Ergebnis ((n + 1).q) mod (p - 1) ausgegeben werden.
- Zu diesem Zeitpunkt (j = n + 1) liegt eine Übergabegröße np bereits vor, die im vorhergehenden Rekursionsschritt j = n berechnet und am Ausgang des zweiten Zählers Z2 ausgegeben wurde. Diese Übergabegröße np (zu j = n) sowie die Größe dp werden in der folgenden Weise als Eingangswerte für die Einheiten 101, 102 und 109 eingesetzt:
- - An den beiden Multiplikatoreingängen des zweiten Multiplizierers 101 liegen die Werte np + dp + 1 und p - 1 an.
- - An den beiden Multiplikatoreingängen des dritten Multiplizierers 102 liegen die Werte np + dp und p - 1 an.
- - An den Multiplexereingängen des Multiplexers 109 liegen die Werte dp + 1 und dp an.
- Die Multiplikatoreingänge des ersten Multiplizierers 100 empfangen die Zahl q und den aktuellen Laufindex j, d. h. n + 1.
- Der Vergleicher 105 vergleicht nun, ob (n + 1).q ≥ (np + dp + 1).(p - 1) ist. Falls dies der Fall ist, wird der Multiplexer 107 über die Steuerleitung 106 so angesteuert, dass der Ausgang des ersten Subtrahierers 103 an den Ausgang des Multiplexers 107.1 gelegt wird. Es ergibt sich ((n + 1).q) mod (p - 1) = (n + 1).q - (np + dp + 1).(p - 1).
- Andernfalls wird der Ausgang des zweiten Subtrahierers 104 an den Ausgang 107.1 des Multiplexers 107 gelegt. Es ergibt sich ((n + 1).q) mod (p - 1) = (n + 1).q - (np + dp).(p - 1).
- Die von dem Vergleicher 105 getroffene Entscheidung hat ferner einen Einfluss auf die Berechnung des Übergabewertes np, welcher für die Berechnung der nächsten Modulo-Operation verwendet wird. Zu diesem Zweck wird der Multiplexer 109 über die Steuerleitung 108 so angesteuert, dass
- - im Fall (n + 1).q ≥ (np + dp + 1).(p - 1) der mit dem Wert dp + 1 versorgte Eingang des Multiplexers 109 an den Eingang des Addierers 110 gelegt wird;
- - andernfalls der mit dem Wert dp versorgte Eingang des Multiplexers 109 an den Eingang des Addierers 110 gelegt wird.
- Der daraufhin am Ausgang des zweiten Zählers Z2 ausgegebene Wert np ist zum Laufindex j = n + 1 berechnet. Es wird nochmals darauf hingewiesen, dass er nicht mit dem als Eingabewert für die zweiten und dritten Multiplizierer 101, 102 in Fig. 3 angegebenen Wert np, welcher bereits im vorhergehenden Schritt j = n vom zweiten Zähler Z2 berechnet wurde, übereinstimmt.
- Die Rekursion wird anhand der in Fig. 4 dargestellten Schritte S102-S108 nochmals kurz erläutert.
- Im Schritt S102 wird die Inkrementierung des Laufindex j auf den Wert j+1 mittels des ersten Zählers Z1 vorgenommen.
- Im Schritt S103 werden die drei Produkte berechnet. Das von dem ersten Multiplizierer 100 berechnete Produkt wird mit W1(j), das von dem zweiten Multiplizierer 101 berechnete Produkt wird mit W2(j) und das von dem dritten Multiplizierer 102 berechnete Produkt wird mit W3(j) bezeichnet.
- Im Schritt S104 wird von dem Vergleicher 105 der Vergleich W1(j) ≥ W2(j) vorgenommen.
- Sofern diese Relation erfüllt ist, geht der Ablauf in die Schritte S105 und S106 über. Im Schritt S105 wird als Ergebnis der Modulo-Berechnung der Wert W1(j) - W2(j) berechnet und im Schritt S106 wird der bisherige Übergabewert np um den Wert dp + 1 erhöht.
- Sofern die in Schritt S104 überprüfte Relation nicht erfüllt ist, geht der Ablauf in die Schritte S107 und S108 über. In dem Schritt S107 wird als Ergebnis der Modulo-Berechnung der Wert W1(j) - W3(j) berechnet und im Schritt S108 wird der bisherige Übergabewert np um den Wert dp erhöht.
- Abschließend wird noch darauf hingewiesen, dass im Falle der Intra-Zeilen-Permutation bei UMTS die Werte dp und q abhängig von der betrachteten Zeile der Koordinaten-Transformationsmatrix sind, d. h. mit einem Zeilenindex i in der Form dpi und qi angegeben werden.
- Den beiden in den Fig. 1 und 3 dargestellten Schaltungen ist gemeinsam, dass sie vollständig in Hardware ausgeführt sein können. Beispielsweise können sie als externer Coprozessor realisiert sein. Der für die allgemeine Signalverarbeitung verwendete digitale Signalprozessor steht mit diesem externen Coprozessor in Verbindung und greift für die Abarbeitung der Modulo-Operationen (für die Interleaving/Deinterleaving-Applikationen in UMTS oder auch für weitere Applikationen, bei denen eine Modulo-Berechnung durchgeführt werden muß) auf den Coprozessor zu. Die Abarbeitung der Modulo- Operationen in Hardware benötigt dabei, unabhängig von der Bitbreite des digitalen Signalprozessors, nur einen Zyklus. Da der Zugriff auf einen solchen Coprozessor in der Regel zwei Zyklen benötigt, kann erreicht werden, dass die Abarbeitungszeit für die Modulo-Operation allein durch die Zugriffszeit auf den Coprozessor bestimmt wird.
Claims (20)
a mod p = a - n.p, mit
einer Tabelle (1), welche die Werte n.p für n = 1, 2, . . enthält,
einer Einheit (10) zum Berechnen einer ganzzahligen Hypothese nH für den unbekannten Wert n,
einer Einheit (3) zum Nachschlagen des Wertes nH.p sowie mindestens eines benachbarten Wertes (nH + 1).p und/oder (nH - 1).p in der Tabelle (1),
einer Einheit (14, 15, 16) zum Berechnen der Ausdrücke a - nH.p sowie a - (nH + 1).p und/oder a - (nH - 1).p und Vergleichen zumindest eines dieser Ausdrücke mit dem Wert 0, und
einer Einheit (18) zum Ausgeben des anhand des Vergleichs bestimmten Wertes a - n.p.
falls (n + 1).q ≥ (np + dp + 1).(p - 1) gilt, Wähle (S105) ((n + 1).q) mod (p - 1) = (n + 1).q - (np + dp + 1).(p - 1) und Erhöhe (S106)np um dp + 1;
sonst
Wähle (S107) ((n + 1).q) mod (p - 1) = (n + 1).q - (np + dp).(p - 1) und Erhöhe (S108) np um dp.
einer ersten Berechnungsstufe (100-107) zur Berechnung der Modulo-Operationen zum Laufindex j in Abhängigkeit von einer zum Laufindex j - 1 berechneten Übergabegröße (np), und
einer zweiten Berechnungsstufe (22), welche die Übergabegröße (np) berechnet.
einen oder mehrere Multiplizierer (100-102) zur Berechnung der Werte (n + 1).q, (np + dp).(p - 1) und (np + dp + 1).(p - 1), wobei j = n + 1 der aktuelle Laufindex ist, np eine ganze positive Zahl ist, und dp = int[q/(p - 1)], wobei int[.] die Integer- Funktion ist,
einen Vergleicher (105), welcher feststellt, ob (n + 1).q ≥ (np + dp + 1).(p - 1) oder nicht,
einen oder mehreren Subtrahierern (103, 104) zur Berechnung von ((n + 1).q) mod (p - 1) = (n + 1).q - (np + dp).(p - 1) oder ((n + 1).q) mod (p - 1) = (n + 1).q - (np + dp + 1).(p - 1) in Abhängigkeit von dem Vergleichsergebnis, und
einen Addierer (110), welcher in Abhängigkeit von dem Vergleichsergebnis np um dp oder dp + 1 erhöht.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE10200133A DE10200133B4 (de) | 2002-01-04 | 2002-01-04 | Verfahren und Vorrichtung zur Berechnung von Modulo-Operationen |
PCT/DE2002/004714 WO2003060753A2 (de) | 2002-01-04 | 2002-12-23 | Verfahren und vorrichtung zur berechnung von modulo-operationen |
US10/884,724 US7664809B2 (en) | 2002-01-04 | 2004-07-02 | Method and device for calculating modulo operations |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE10200133A DE10200133B4 (de) | 2002-01-04 | 2002-01-04 | Verfahren und Vorrichtung zur Berechnung von Modulo-Operationen |
Publications (2)
Publication Number | Publication Date |
---|---|
DE10200133A1 true DE10200133A1 (de) | 2003-07-24 |
DE10200133B4 DE10200133B4 (de) | 2005-12-22 |
Family
ID=7711506
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE10200133A Expired - Fee Related DE10200133B4 (de) | 2002-01-04 | 2002-01-04 | Verfahren und Vorrichtung zur Berechnung von Modulo-Operationen |
Country Status (3)
Country | Link |
---|---|
US (1) | US7664809B2 (de) |
DE (1) | DE10200133B4 (de) |
WO (1) | WO2003060753A2 (de) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8425539B2 (en) * | 2004-04-12 | 2013-04-23 | Xlumena, Inc. | Luminal structure anchoring devices and methods |
US7849125B2 (en) | 2006-07-07 | 2010-12-07 | Via Telecom Co., Ltd | Efficient computation of the modulo operation based on divisor (2n-1) |
KR100901280B1 (ko) * | 2006-12-07 | 2009-06-09 | 한국전자통신연구원 | 모듈러 3 연산 장치 및 방법 |
KR101318992B1 (ko) | 2009-12-16 | 2013-10-16 | 한국전자통신연구원 | 모듈로 n 연산방법 및 그 장치 |
US20110145311A1 (en) * | 2009-12-16 | 2011-06-16 | Electronics And Telecommunications Research Institute | Method and apparatus for modulo n operation |
US10004509B2 (en) * | 2014-05-02 | 2018-06-26 | W. L. Gore & Associates, Inc. | Anastomosis devices |
GB2537371B (en) * | 2015-04-13 | 2019-10-02 | Imagination Tech Ltd | Modulo calculation using polynomials |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5499299A (en) * | 1993-07-02 | 1996-03-12 | Fujitsu Limited | Modular arithmetic operation system |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2217882B (en) * | 1988-04-29 | 1992-06-10 | Philips Electronic Associated | Arithmetic apparatus |
KR950015177B1 (ko) * | 1993-12-06 | 1995-12-23 | 한국전기통신공사 | 사전 계산 테이블을 이용한 모듈로 리덕션 방법 |
-
2002
- 2002-01-04 DE DE10200133A patent/DE10200133B4/de not_active Expired - Fee Related
- 2002-12-23 WO PCT/DE2002/004714 patent/WO2003060753A2/de not_active Application Discontinuation
-
2004
- 2004-07-02 US US10/884,724 patent/US7664809B2/en not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5499299A (en) * | 1993-07-02 | 1996-03-12 | Fujitsu Limited | Modular arithmetic operation system |
Also Published As
Publication number | Publication date |
---|---|
WO2003060753A2 (de) | 2003-07-24 |
US20050004967A1 (en) | 2005-01-06 |
WO2003060753A3 (de) | 2004-08-26 |
DE10200133B4 (de) | 2005-12-22 |
US7664809B2 (en) | 2010-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19839627B4 (de) | Digitaler Signalprozessor | |
DE4302898C2 (de) | Arithmetische Recheneinheit mit Akkumulierfunktion | |
DE19758079A1 (de) | Verfahren und Vorrichtung zur Galoisfeld-Multiplikation | |
DE4241903C2 (de) | Euklidische wechselseitige Divisionsschaltung | |
DE3520014A1 (de) | Datenkorrelationsanordnung und verfahren zur bestimmung von anpassungen durch pseudokorrelationswerte | |
DE69934956T2 (de) | Logarithmus- / Antilogarithmusrechner | |
DE4101004A1 (de) | Paralleler multiplizierer mit sprungfeld und modifiziertem wallac-baum | |
DE10013068C2 (de) | Potenzierungsoperationsvorrichtung | |
DE10357661B4 (de) | Modularer Montgomery-Multiplizierer und zugehöriges Multiplikationsverfahren | |
CH622113A5 (de) | ||
DE10219158B4 (de) | Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation | |
EP1370933B1 (de) | Verfahren und vorrichtung zum modularen multiplizieren | |
DE10200133B4 (de) | Verfahren und Vorrichtung zur Berechnung von Modulo-Operationen | |
DE3447634C2 (de) | ||
EP0628183B1 (de) | Schaltungsanordnung zum digitalen multiplizieren von integer-zahlen | |
EP2641241A1 (de) | Verfahren zur langzahldivision oder modulare reduktion | |
DE2615498A1 (de) | Konvolutionsfunktionsgenerator und dessen anwendung in digitalfiltern | |
DE112018006405T5 (de) | Verfahren und Vorrichtung zur Berechnung der Hashfunktion | |
DE102013212840B4 (de) | Modellberechnungseinheit und Steuergerät zur Berechnung eines datenbasierten Funktionsmodells mit Daten in verschiedenen Zahlenformaten | |
DE3416536C2 (de) | ||
DE2704641A1 (de) | Digitalfilter | |
WO2003021424A2 (de) | Verfahren und vorrichtung zum modularen multiplizieren | |
EP0757811B1 (de) | Verfahren zur fuzzifizierung von an eingängen eines fuzzy-prozessors anliegenden eingangssignalen unter verwendung von eingangszugehörigkeitsfunktionen | |
DE3700740A1 (de) | Linearapproximationsumformschaltung | |
DE19958599A1 (de) | Verfahren zur Verschlüsselung einer numerischen Information und Sendemodul |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8364 | No opposition during term of opposition | ||
R081 | Change of applicant/patentee |
Owner name: INTEL MOBILE COMMUNICATIONS GMBH, DE Free format text: FORMER OWNER: INTEL MOBILE COMMUNICATIONS TECHNOLOGY GMBH, 85579 NEUBIBERG, DE Effective date: 20130326 Owner name: INTEL MOBILE COMMUNICATIONS GMBH, DE Free format text: FORMER OWNER: INFINEON TECHNOLOGIES AG, 85579 NEUBIBERG, DE Effective date: 20130315 Owner name: INTEL MOBILE COMMUNICATIONS GMBH, DE Free format text: FORMER OWNER: INTEL MOBILE COMMUNICATIONS GMBH, 85579 NEUBIBERG, DE Effective date: 20130315 Owner name: INTEL MOBILE COMMUNICATIONS GMBH, DE Free format text: FORMER OWNER: INFINEON TECHNOLOGIES AG, 81669 MUENCHEN, DE Effective date: 20130314 Owner name: INTEL DEUTSCHLAND GMBH, DE Free format text: FORMER OWNER: INFINEON TECHNOLOGIES AG, 81669 MUENCHEN, DE Effective date: 20130314 Owner name: INTEL DEUTSCHLAND GMBH, DE Free format text: FORMER OWNER: INTEL MOBILE COMMUNICATIONS TECHNOLOGY GMBH, 85579 NEUBIBERG, DE Effective date: 20130326 Owner name: INTEL DEUTSCHLAND GMBH, DE Free format text: FORMER OWNER: INFINEON TECHNOLOGIES AG, 85579 NEUBIBERG, DE Effective date: 20130315 Owner name: INTEL DEUTSCHLAND GMBH, DE Free format text: FORMER OWNER: INTEL MOBILE COMMUNICATIONS GMBH, 85579 NEUBIBERG, DE Effective date: 20130315 |
|
R081 | Change of applicant/patentee |
Owner name: INTEL DEUTSCHLAND GMBH, DE Free format text: FORMER OWNER: INTEL MOBILE COMMUNICATIONS GMBH, 85579 NEUBIBERG, DE |
|
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |