PatentDe  


Dokumentenidentifikation DE10200133A1 24.07.2003
Titel Verfahren und Vorrichtung zur Berechnung von Modulo-Operationen
Anmelder Infineon Technologies AG, 81669 München, DE
Erfinder Becker, Burkhard, 85737 Ismaning, DE
Vertreter Patentanwälte Dr. Graf Lambsdorff & Dr. Lange, 81673 München
DE-Anmeldedatum 04.01.2002
DE-Aktenzeichen 10200133
Offenlegungstag 24.07.2003
Veröffentlichungstag im Patentblatt 24.07.2003
IPC-Hauptklasse G06F 7/49
IPC-Nebenklasse G06F 17/10   
Zusammenfassung Bei einem Verfahren zur Berechnung einer Modulo-Operation a mod p wird eine Tabelle (1) eingesetzt, welche die Werte n · p für n = 1, 2, ... enthält. Dabei sind a und p ganze positive Zahlen mit a mod p = a - n · p. Es wird eine ganzzahlige Hypothese nH für den unbekannten Wert n berechnet. Anschließend werden die Werte nH · p sowie mindestens ein benachbarter Wert (nH + 1) · p und/oder (nH - 1) · p in der Tabelle (1) nachgeschlagen. Es werden die Ausdrücke a - nH · p sowie a - (nH - 1) · p und/oder a - (nH - 1) · p berechnet und zumindest einer dieser Ausdrücke wird mit dem Wert 0 verglichen. Daraufhin wird n bestimmt.

Beschreibung[de]

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.


Anspruch[de]
  1. 1. Verfahren zur Berechnung einer Modulo-Operation a mod p unter Verwendung einer Tabelle (1), 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, mit den Schritten:
    1. - Berechnen einer ganzzahligen Hypothese nH für den unbekannten Wert n;
    2. - Nachschlagen des Wertes nH.p sowie mindestens eines benachbarten Wertes (nH + 1).p und/oder (nH - 1).p in der Tabelle (1);
    3. - 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
    4. - Ausgeben des anhand des Vergleichs bestimmten Wertes a - n.p.
  2. 2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass die Berechnung der ganzzahligen Hypothese nH die Schritte umfasst:
    1. - Berechnen eines ersten Näherungswertes (appr1) 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;
    2. - Berechnen von nH aus dem ersten Näherungswert (appr1) durch Vernachlässigung der Nachkommastellen des Näherungswertes (appr1).
  3. 3. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass die Berechnung der ganzzahligen Hypothese nH die Schritte umfasst:
    1. - Berechnen eines ersten Näherungswertes (appr1) für a/p der Form a/2x, wobei x eine ganze positive Zahl ist;
    2. - Berechnen eines Korrekturwertes (y) der Form p/2x;
    3. - Invertieren des Korrekturwertes;
    4. - Berechnen (S5) eines zweiten Näherungswertes (appr2) als Produkt aus dem ersten Näherungswert (appr1) und dem invertierten Korrekturwert; und
    5. - Berechnen von nH aus dem zweiten Näherungswert (appr2) durch Vernachlässigung der Nachkommastellen des zweiten Näherungswertes (appr2).
  4. 4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, dass x so bestimmt wird, dass 2x ≤ p < 2x+1 gilt.
  5. 5. Verfahren nach einem der Ansprüche 2 bis 4, dadurch gekennzeichnet, dass der erste Näherungswert (appr1) durch eine Rechtsverschiebung um x Stellen der Binärdarstellung von a berechnet wird.
  6. 6. Verfahren nach einem der Ansprüche 2 bis 5, dadurch gekennzeichnet, dass das niedrigstwertige Bit der Binärdarstellung des ersten Näherungswertes (appr1) die Wertigkeit 20 hat.
  7. 7. Verfahren nach einem der vorhergehenden Ansprüche 3 bis 6, dadurch gekennzeichnet, dass der Korrekturwert (y) durch eine Rechtsverschiebung um x Stellen der Binärdarstellung von p berechnet wird.
  8. 8. Verfahren nach Anspruch 7, dadurch gekennzeichnet, dass das niedrigstwertige Bit der Binärdarstellung des Korrekturwertes (y) die Wertigkeit 2-t hat, wobei t eine ganze Zahl größer oder gleich 1, insbesondere t = 5, ist.
  9. 9. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass s(i) = a mod p mit a = v.s(i - 1) gilt, wobei p eine Primzahl und v eine ganze Zahl ist.
  10. 10. Verfahren nach Anspruch 9, dadurch gekennzeichnet, dass das Verfahren zur Berechnung der Intra-Zeilen Permutation bei der Ver- und/oder Entschachtelung nach der im UMTS-Standard 3GPP TS 25.212 angegebenen Vorschrift eingesetzt wird.
  11. 11. Vorrichtung zur Berechnung einer Modulo-Operation a mod p, wobei a und p ganze positive Zahlen sind und

    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.
  12. 12. Vorrichtung nach Anspruch 11, dadurch gekennzeichnet, dass die Einheit (10) zum Berechnen einer ganzzahligen Hypothese nH ein Schieberegister (10.11) enthält, welches eine Rechtsverschiebung der Binärdarstellung des Wertes von a um x Stellen durchführt, wobei x eine ganze positive Zahl ist und so bestimmt wird, dass 2x ≤ p < 2x+1 gilt.
  13. 13. Vorrichtung nach Anspruch 11 oder 12, dadurch gekennzeichnet, dass die Einheit (10) zum Berechnen einer ganzzahligen Hypothese nH ferner eine ROM-Tabelle (12) mit 2t+1 Einträgen und t + 1 Schiebe- und Addierstufen umfasst, wobei t eine ganze positive Zahl ist, insbesondere t = 5.
  14. 14. Vorrichtung nach einem der Ansprüche 11 bis 13, gekennzeichnet durch einen Zustandsgenerator (2) zur Berechnung der Werte n.p für die Einträge der Tabelle (1).
  15. 15. Verfahren zur Berechnung einer Sequenz von Modulo- Operationen (j.q) mod (p - 1) für den Laufindex j = 0, 1, 2, . . ., wobei q und p ganze positive Zahlen sind, mittels einer Rekursion, bei welcher für die Berechnung der Modulo-Operation zum Laufindex j = n + 1 auf eine Übergabegröße (np) zurückgegriffen wird, welche bei der bereits erfolgten Berechnung der Modulo-Operation zum Laufindex j = n berechnet wurde.
  16. 16. Verfahren nach Anspruch 15, dadurch gekennzeichnet, mit dem Anfangsschritt (S101)
    1. - Berechnen eines Wertes dp = int[q/(p - 1)], wobei int[.] die Integer-Funktion ist; und
    2. - mit einer die folgenden Schritte umfassenden Rekursion
      1. a) für einen Wert n des Laufindex j Berechnen der Übergabegröße np, derart, dass np.(p - 1) kleiner als (j.q) ist und (np + 1).(p - 1) größer als (j.q) ist, wobei np eine ganze positive Zahl ist (S106, S108); und
      2. b) für den Wert n + 1 des Laufindexes j Berechnen (S103) der Werte (n + 1).q, (np + dp).(p - 1) und (np + dp + 1).(p - 1);

        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.
  17. 17. Vorrichtung zur Berechnung einer Sequenz von Modulo- Operationen (j.q) mod (p - 1) für den Laufindex j = 0, 1, 2, . . wobei q und p ganze positive Zahlen sind, mit

    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.
  18. 18. Vorrichtung nach Anspruch 17, gekennzeichnet durch

    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.
  19. 19. Vorrichtung nach einem der Ansprüche 17 bis 18, gekennzeichnet durch einen ersten Zähler (Z1) zur Erzeugung des Wertes j für den Laufindex.
  20. 20. Vorrichtung nach einem der Ansprüche 17 bis 19, gekennzeichnet durch einen zweiten Zähler (Z2) zur Berechnung des ganzzahligen übergabewertes np.






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

  Patente PDF

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com