WO2003060753A2 - Verfahren und vorrichtung zur berechnung von modulo-operationen - Google Patents

Verfahren und vorrichtung zur berechnung von modulo-operationen Download PDF

Info

Publication number
WO2003060753A2
WO2003060753A2 PCT/DE2002/004714 DE0204714W WO03060753A2 WO 2003060753 A2 WO2003060753 A2 WO 2003060753A2 DE 0204714 W DE0204714 W DE 0204714W WO 03060753 A2 WO03060753 A2 WO 03060753A2
Authority
WO
WIPO (PCT)
Prior art keywords
value
calculating
integer
mod
apprl
Prior art date
Application number
PCT/DE2002/004714
Other languages
English (en)
French (fr)
Other versions
WO2003060753A3 (de
Inventor
Burkhard Becker
Original Assignee
Infineon Technologies Ag
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Infineon Technologies Ag filed Critical Infineon Technologies Ag
Publication of WO2003060753A2 publication Critical patent/WO2003060753A2/de
Priority to US10/884,724 priority Critical patent/US7664809B2/en
Publication of WO2003060753A3 publication Critical patent/WO2003060753A3/de

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods 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/72Methods 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

Definitions

  • the invention relates to methods and devices for calculating modulo operations.
  • a special field of application in which modulo operations are carried out in large numbers relates to the turbo (de) interleaving algorithm when interleaving or deinterleaving a bit stream according to a mobile radio standard, in particular UMTS (universal mobile
  • the data bits to be transmitted are interleaved block-by-block according to a specific interleaving rule, as a result of which the signal to be emitted is robust to short-term interference.
  • the received data bit stream must be deinterleaved in the receiver in order to restore the original order of the bits.
  • the interleaving or deinterleaving specification is represented by a two-dimensional coordinate transformation matrix, which is constructed as a function of the block size of the data stream to be interleaved or deinterleaved.
  • the structure specification for calculating a coordinate of the transformation matrix comprises the execution of several modulo operations.
  • the modulo operations are currently being calculated in a software-controlled manner by means of a signal processor.
  • the disadvantage here is that conventional signal processors require 10 to 20 machine cycles (with a word length of 16 or 32 bits) to calculate a modulo operation, ie a considerable amount of time is required.
  • This method enables the modulo calculation to be implemented in hardware, but requires a large number of memory accesses.
  • the invention has for its object to provide methods which enable the calculation of modulo operations with a short expenditure of time. Furthermore, the invention aims to provide devices for the fast calculation of modulo operations, which in particular should also be realizable in the form of hardware circuits. In particular, the methods and devices for the calculation of modulo operations in interleaving or deinterleaving according to the UMTS standard should be able to be used in a cost-effective manner.
  • An essential aspect of the invention according to the first aspect is therefore not to have to look up all the values stored in the table but only a few of these values.
  • the calculation of the difference expressions a-n * p as well as the comparison of the same with the value 0 also only has to be done for these few (preferably two or three
  • this method can be carried out with a significantly smaller number of machine cycles than is the case with software-controlled calculation of the modulo operation.
  • this method is independent of the word width of the values a and p.
  • a particularly preferred embodiment of the method is characterized in that the calculation of the integer hypothesis n H comprises the steps: calculation of a first approximation for a / p of the form a / 2 x , where x is an integer positive number and is determined in such a way that 2 X ⁇ p ⁇ 2 X + 1 applies; Calculate n H from the first approximation by neglecting the decimal places of the approximation. If p is a power to base 2, the hypothesis n H is already the value n we are looking for. For values of p that are close to a power of two, this method for calculating n H is also sufficient.
  • n H comprises the steps of: calculating a first approximation for a / p of the form a / 2 x , where x is an integer positive number; Calculating a correction value of the form p / 2 x ; Inverting the correction value; Calculating a second approximation as a product of the first approximation and the inverted correction value; and calculating n H from the second approximation by neglecting the decimal places of the second approximation.
  • the least significant bit of the binary representation of the correction value preferably has the significance 2 _t , where t is an integer greater than or equal to 1.
  • t is an integer greater than or equal to 1.
  • a device for calculating modulo operations a mod p according to the first aspect of the invention comprises one
  • Table which contains the values n * p for n 1, 2, ..., a unit for calculating an integer hypothesis n H for the unknown value n, a unit for looking up the value n H * p and at least one neighboring value (n H + l) * p and / or (n H -l) * p in the table, a unit for calculating the expressions at H * p and a- (n H + l) * p and / or a- ( n H -l) * p and comparing them with the value 0, and a unit for outputting the value determined from the comparison to * p.
  • the unit for calculating an integer hypothesis n H preferably comprises a shift register for performing a right shift of the binary representation of the value of a and also preferably has a ROM table with 2 t + 1 entries and t + 1 shift and add stages, wherein t is an integer positive number.
  • the modulo operation is calculated here using a recursion method that inductively uses a result (transfer value n p ) that was obtained in the calculation in the previous recursion step. In this way, the modulo operations can be successively solved for input variables of the form (j * q).
  • Fig. 1 is a schematic representation of a
  • FIG. 2 shows a schematic illustration of a flow chart to explain the mode of operation of the circuit shown in FIG. 1;
  • FIG. 3 shows a schematic illustration of a circuit example according to the second aspect of the invention.
  • Fig. 4 is a flow chart for explaining the operation of the circuit shown in Fig. 3.
  • the block size is between 40 and 5114 bits.
  • the nesting rule (permutation) is specified by a two-dimensional coordinate transformation matrix. This is completely determined by the block size. Depending on the block size, it has a number of 5, 10 or 20 rows and a suitable number of columns.
  • the interleaving procedure consists of an intra-line permutation, an inter-line permutation and a pruning of the output bits of this coordinate transformation matrix.
  • the corresponding steps are in chapters 4.2.3.2.3.1 (definition of the coordinate transformation matrix), 4.2.3.2.3.2 (intra-line permutation, inter-line permutation) and 4.2.3.2.3.3 (cropping) of
  • the modulo operation (1) is used to generate the so-called base sequence s (i) for the intra-line permutation (see chapter 4.2.3.2.3.2, point 2 of the above-mentioned standard), while the modulo operation (2) is the permutation rule for the i-th intra-line permutation (see chapter 4.2.3.2.3.2, point 5 of the above-mentioned standard, i is the line index of the coordinate transformation matrix).
  • P is a prime number between 7 and 257 in the UMTS standard
  • v is the so-called primitive root and is between 2 and 19.
  • qi in the UMTS standard is the sequence of the so-called minimal prime numbers.
  • (1 ') s a mod p the range of values of a being limited; -
  • the Ter (p-1) in the second modulo operation (2) can be replaced by p, provided that it is considered independently of the first modulo operation (1).
  • the circuit comprises a table 1, in which the
  • v int [a max / p] is selected. Int [a max / p] denotes the integer function applied to the quotient a max / p, which causes v to be an integer positive number.
  • An output of table 1 is controlled by an address determiner 3, which generates two addresses ADDR_n H and ADDR_n H + l and reads out the associated products n H * p and (n H + l) * p from table 1 and at two outputs 4 or 5 provides.
  • the outputs 4 and 5 are each connected to a memory 6 or 7 for storing the products n H * p or (n H + l) * p.
  • the number p is fed to a first calculation unit 8 for calculating a position shift x and a second calculation unit 9 for calculating a correction value y.
  • the digit shift x is the power of 2 (ie 2 X ) that the relationship
  • the correction value y is in the second calculation unit 9 according to the expression
  • x) denotes a right shift of the binary representation of the number p by x digits.
  • y e.g. six significant bits (the values 1, 1/2, 1/4, 1/8, 1/16, 1/32) are taken into account.
  • the numbers x and y are fed to an address generator 10 via inputs 10.3 and 10.4, respectively.
  • the address generator 10 has a further input 10.5, via which it receives either the input value a (case (l 1 )) or the product v * s (il) (case (1)).
  • a multiplier 11 for calculating this product is included in the circuit.
  • the address generator 10 comprises two modules 10.1 and 10.2.
  • the first module 10.1 is used to calculate a first approximation apprl, which represents a first approximation for the jump address in Table 1.
  • the first module 10.1 comprises a shift register 10.11, in which the binary representation of the input value a or of the product v * s (il) is stored.
  • the memory cell of the shift register 10.11 containing the most significant bit MSB is shown filled in FIG. 1 and the four following memory cells are shown shaded.
  • a shift to the right by x digits is carried out in the shift register 10.11, ie
  • apprl RV (a
  • x) or apprl RV ((v * s (i-1))
  • a first possibility, not shown, is to use apprl to control the address determiner 3.
  • a sufficiently high accuracy of apprl cannot be guaranteed for all values of p.
  • the first approximation apprl is therefore fed to the second module 10.2, which calculates an improved second approximation appr2, taking into account the value y. This is at an output 11 of the
  • Address generator 10 fed to the address determiner 3.
  • the second module 10.2 calculates the second approximation appr2 according to the relationship
  • appr2 apprl * y _1 .
  • the second module 10.2 can comprise a ROM table 12 and shift and add stages 13.
  • the inverted number y "1 and the first approximate value apprl are then from the shift and add 13 after the multiplied above relationship.
  • the unit 13 is implemented in the case described above from a parallel arrangement consisting of 6 shift and add stages (this is sufficient for the calculation of the modulo operation in the UMTS standard).
  • the structure of the address generator 10 is therefore based on the following mathematical relationship:
  • bits with values of 1, 1/2, ..., 1/32 are taken into account.
  • the inverted number y "1 is then calculated with an accuracy of a maximum of 6 bits word width.
  • bits of a value of less than 2 ° are rejected in its binary representation.
  • the circuit further comprises two subtractors 14 and 15. Both subtractors 14, 15 each accept the number a or the product v * s (i-l) at a first input 14.1 or 15.1.
  • the second input 14.2 connects the subtractor 14 to an output of the memory 6, while the subtractor 15 has its second input 15.2 connected to an output of the memory 7.
  • Multiplexers 18 in connection.
  • the two multiplexer inputs of the multiplexer 18 are with the outputs of the subtractors 14 and 15 connected.
  • the result of the modulo calculation is output at the output 18.1 of the multiplexer 18.
  • Fig. 2 illustrates the operation of the circuit shown in Fig. 1.
  • step S2 these values are entered in table 1.
  • step S3 using the first and second calculation units 8 and 9
  • Digit shift x and the correction value y are calculated. If necessary, the product v * s (i-l) is calculated in step S4.
  • step S5 the second approximation appr2 is determined in the manner already described.
  • step S7 The calculation of the values K 0 and K + carried out in step S7 is carried out by means of the two subtractors 14 and 15.
  • step S8 the sign evaluation unit 16 checks whether K + > 0. If this is the case, the
  • Control line 17 the output of the subtractor 15 to the
  • Steps S6 to S8 can be modified such that the product value (n H -l) * p from the table 1 is read out.
  • the address determiner 3 must also generate the address ADDR_n H -l, and a further memory (corresponding to 6 or 7), a further subtractor (corresponding to 14 or 15) and a multiplexer 18 with 3 inputs must be in the circuit to be available.
  • K + ⁇ 0 the latter must carry out a further check, namely whether K 0 is 0. If this is the case, the value K 0 is applied to the output 18.1, otherwise the value K_ is output.
  • FIG. 3 shows a simplified circuit diagram of a circuit according to the second aspect of the invention.
  • the circuit comprises three multipliers 100, 101 and 102. Furthermore, two subtractors 103 and 104 and a first counter ZI are provided for the running index j.
  • the positive inputs 103.1 and 104.1 of the subtractors 103 and 104 are connected to the output of the first multiplier 100, while the subtraction input 103.2 of the subtractor 103 is connected to the output of the second multiplier 101 and the subtraction input 104.2 of the second subtractor 104 to the output of the third multiplier 102 are connected.
  • the circuit further comprises a comparator 105, the first input 105.1 of which is connected to the output of the first multiplier 100 and the second input 105.2 of which is connected to the output of the second multiplier 101.
  • the comparison result present at an output of the comparator 105 is fed to a multiplexer 107 via a control line 106 and to a second counter Z2 via a control line 108.
  • the multiplexer 107 takes that
  • Output signals of the two subtractors 103 and 104 counter and, depending on the value of the control signal 106, outputs one of these output signals at its output 107.1.
  • the second counter Z2 comprises a multiplexer 109 and an accumulator fed by the output of the multiplexer 109.
  • the accumulator comprises an adder 110, one of whose adder inputs is connected to the output of multiplexer 109, and a memory 111, which feeds back the addition result present at the output of adder 110 to the other input of adder 110.
  • the circuit further comprises a unit 112 for forming a quotient and performing a rounding operation (neglecting the decimal places) on the quotient.
  • the circuit shown in FIG. 3 inductively calculates the sequence of the modulo operations (2). Their mode of operation is explained in more detail below with reference to FIGS. 3 and 4.
  • the unit d is determined from the numbers q and (p-1) using the unit 112.
  • the recursion for calculating the modulo expressions for the running index j is described below.
  • n p + dp + l and p-1 are present at the two multiplier inputs of the second multiplier 101. - At the two multiplier inputs of the third
  • Multipliers 102 have the values n p + dp and p-1.
  • the multiplier inputs of the first multiplier 100 receive the number q and the current running index j, i.e. n + 1st
  • the comparator 105 now compares whether
  • the decision made by the comparator 105 also has an influence on the calculation of the transfer value n p , which is used for the calculation of the next modulo operation.
  • the multiplexer 109 is controlled via the control line 108 in such a way that
  • step S102 the running index j is incremented to the value j + 1 by means of the first counter ZI.
  • step S103 The three products are calculated in step S103.
  • the product calculated by the first multiplier 100 is denoted by W (j)
  • the product calculated by the second multiplier 101 is denoted by W 2 (j)
  • the product calculated by the third multiplier 102 is denoted by W 3 (j).
  • step S104 the comparator 105 compares W ⁇ (j)> W 2 (j).
  • step S105 the value W x (j) -W 2 (j) is calculated as a result of the modulo calculation, and in step S106 the previous transfer value n p is increased by the value dp + 1.
  • step S104 If the relation checked in step S104 is not fulfilled, the process proceeds to steps S107 and S108.
  • step S107 the result of the modulo calculation is the Value W ⁇ (j) -W 3 (j) is calculated and in step S108 the previous transfer value n p is increased by the value dp.
  • the values dp and q depend on the line of the coordinate transformation matrix under consideration, i.e. with a line index i in the form dpi and qi.
  • the two circuits shown in FIGS. 1 and 3 have in common that they can be implemented entirely in hardware.
  • they can be implemented as an external coprocessor.
  • the digital signal processor used for general signal processing is connected to this external coprocessor and is used to process the modulo operations (for the interleaving / deinterleaving applications in UMTS or for other applications in which a modulo calculation must be carried out) towards the coprocessor.
  • the processing of the modulo operations in hardware requires only one cycle, regardless of the bit width of the digital signal processor. Since access to such a coprocessor generally requires two cycles, it can be achieved that the processing time for the modulo operation is determined solely by the access time to the coprocessor.

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

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.

Description

Beschreibung
(>
Verfahren und Vorrichtung zur Berechnung von Modulo-Opera- tionen.
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-Stan- dard 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+l) *p und/oder (nH-l)*p in der Tabelle; Berechnen des Ausdrucks a-n*p sowie mindestens eines der Ausdrücke a- (nH+l) *p und/oder a-(nH-l)*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 Maschi- nenzyklen 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+l) *p und/oder (nH-l)*p in der Tabelle, eine Einheit zum Berechnen der Ausdrücke a-nH*p sowie a-(nH+l)*p und/oder a-(nH-l)*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 (Über- gabewert 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: ( 1) s ( i) = (v*s ( i- l ) ) mod p; i = 0 , 1 , . . , (p-2 ) ; s ( 0 ) = 1
(2 ) (j *q_) mod (p- 1 ) ; j = 0 , 1 , . . , (p-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 Figuren 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 q± 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-l) kann durch eine beliebige Eingabegröße a, die ebenfalls eine ganze positive Zahl ist, ersetzt werden. In diesem Fall lautet die Modulo-Operation (1)
(1 ' ) s = a mod p wobei der Wertebereich von a beschränkt ist; - der Ter (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. (!')•
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+l erzeugt und die zugehörigen Produkte nH*p und (nH+l)*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+l) *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
Figure imgf000011_0001
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 (l1)) oder das Produkt v*s(i-l) (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 apprl, 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-l) 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 apprl wird in dem Schieberegister 10.11 eine Rechtsverschiebung um x Stellen durchgeführt, d.h.
apprl = RV(a|x) bzw. apprl = RV((v*s (i-1) ) |x).
Bei der Rechtsverschiebung können die Nachkommasteilen verworfen werden, was zur Folge hat, dass apprl eine positive ganze Zahl ist.
Eine nicht dargestellte, erste Möglichkeit besteht darin, apprl zur Ansteuerung des Adressenermittlers 3 einzusetzen. Allerdings kann eine ausreichend hohe Genauigkeit von apprl nicht für alle Werte von p garantiert werden.
Gemäß Fig. 1 wird der erste Näherungswert apprl 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 = apprl*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 apprl 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-l))/p = (v*s(j-l))/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 2° 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-l) 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+l) *p bzw. K+ = a- (nH+D *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 Sl 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-l) .
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+l) *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-l)*p aus der Tabelle 1 ausgelesen wird. In diesem Fall muss der Adressenermittler 3 zusätzlich die Adresse ADDR_nH-l 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-l) *p bzw. K. = a-(nH-l)*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 ZI 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 Z2 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 Figuren 3 und 4 näher erläutert .
In einem Anfangsschritt SlOl (siehe Fig. 4) wird mittels der Einheit 112 aus den Zahlen q und (p-1) die Größe dp ermittelt .
dp = int[q/(p-l)]
Dabei bezeichnet int[q/(p-l)] 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+l)*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+l 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+l)*q > (np+dp+l) * (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+l) * (p-1) .
Andernfalls wird der Ausgang des zweiten Subtrahierers 104 an den Ausgang 107.1 des Multiplexers 107 gelegt. Es ergibt sich ((n+l)*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+l) * (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 ZI vorgenommen.
Im Schritt S103 werden die drei Produkte berechnet. Das von dem ersten Multiplizierer 100 berechnete Produkt wird mit W (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 Wι(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 Wx(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 Wι(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-Transformations- matrix sind, d.h. mit einem Zeilenindex i in der Form dpi und qi angegeben werden.
Den beiden in den Figuren 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

Patentansprüche
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:
- Berechnen einer ganzzahligen Hypothese nH für den unbekannten Wert n;
- Nachschlagen des Wertes nH*p sowie mindestens eines benachbarten Wertes (nH+l) *p und/oder (nH-l) *p in der
Tabelle (1) ;
- Berechnen des Ausdrucks a-nH*p sowie mindestens eines der Ausdrücke a- (nH+l) *p und/oder a- (nH-l) *p und Vergleichen zumindest eines dieser Ausdrücke mit dem Wert 0 ; und - Ausgeben des anhand des Vergleichs bestimmten Wertes a-n*p.
2. Verfahren nach Anspruch 1 , d a d u r c h g e k e n n z e i c h n e t, dass die Berechnung der ganzzahligen Hypothese nH die Schritte umfasst :
- Berechnen eines ersten Näherungswertes (apprl) 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 (apprl) durch Vernachlässigung der Nachkommastellen des Näherungswertes (apprl) .
3. Verfahren nach Anspruch 1 , d a d u r c h g e k e n n z e i c h n e t, dass die Berechnung der ganzzahligen Hypothese nH die Schritte umfasst:
- Berechnen eines ersten Näherungswertes (apprl) für a/p der Form a/2x, wobei x eine ganze positive Zahl ist; - Berechnen eines Korrekturwertes (y) der Form p/2x;
- Invertieren des Korrekturwertes; - Berechnen (S5) eines zweiten Näherungswertes (appr2) als Produkt aus dem ersten Näherungswert (apprl) und dem invertierten Korrekturwert; und
- Berechnen von nH aus dem zweiten Näherungswert (appr2) durch Vernachlässigung der Nachkommastellen des zweiten Näherungswertes (appr2) .
4. Verfahren nach Anspruch 3 , d a d u r c h g e k e n n z e i c h n e t, - dass x so bestimmt wird, dass 2X < p < 2X+1 gilt.
5. Verfahren nach einem der Ansprüche 2 bis 4, d a d u r c h g e k e n n z e i c h n e t,
- dass der erste Näherungswert (apprl) durch eine Rechtsverschiebung um x Stellen der Binärdarstellung von a berechnet wird.
6. Verfahren nach einem der Ansprüche 2 bis 5, d a d u r c h g e k e n n z e i c h n e t, - dass das niedrigstwertige Bit der Binärdarstellung des ersten Näherungswertes (apprl) die Wertigkeit 2° hat.
7. Verfahren nach einem der vorhergehenden Ansprüche 3 bis 6, d a d u r c h g e k e n n z e i c h n e t, - dass der Korrekturwert (y) durch eine Rechtsverschiebung um x Stellen der Binärdarstellung von p berechnet wird.
8. Verfahren nach Anspruch 7 , d a d u r c h g e k e n n z e i c h n e t, - dass das niedrigstwertige Bit der Binärdarstellung des
Korrekturwertes (y) die Wertigkeit 2_ hat, wobei t eine ganze Zahl größer oder gleich 1, insbesondere t = 5, ist.
9. Verfahren nach einem der vorhergehenden Ansprüche, d a d u r c h g e k e n n z e i c h n e t,
- dass s(i) = a mod p mit a = v*s(i-l) gilt, wobei p eine Primzahl und v eine ganze Zahl ist.
10. Verfahren nach Anspruch 9, d a d u r c h g e k e n n z e i c h n e t,
- 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. 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+l) *p und/oder
(nH-l) *p in der Tabelle (1) ,
- einer Einheit (14, 15, 16) zum Berechnen der Ausdrücke a-nH*p sowie a- (nH+l) *p und/oder a- (nH-l) *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. Vorrichtung nach Anspruch 11, d a d u r c h g e k e n n z e i c h n e t,
- 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. Vorrichtung nach Anspruch 11 oder 12, d a d u r c h g e k e n n z e i c h n e t, - 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. Vorrichtung nach einem der Ansprüche 11 bis 13, g e k e n n z e i c h n e t d u r c h
- einen Zustandsgenerator (2) zur Berechnung der Werte n*p für die Einträge der Tabelle (1) .
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. Verfahren nach Anspruch 15, d a d u r c h g e k e n n z e i c h n e t, mit dem Anfangsschritt (SlOl) :
- Berechnen eines Wertes dp = int [q/ (p-1) ] , wobei int [•] die Integer-Funktion ist; und
- mit einer die folgenden Schritte umfassenden Rekursion (i) 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+l)*(p-l) größer als (j*q) ist, wobei np eine ganze positive Zahl ist (S106, S108) ; und (ii) für den Wert n+1 des Laufindexes j Berechnen (S103) der Werte (n+1) *q, (np+dp) * (p-1) und (np+dp+l) * (p-1) ; - falls (n+l)*q > (np+dp+l) * (p-1) gilt, Wähle (S105)
((n+l)*q) mod (p-1) = (n+1) *q- (np+dp+l) * (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. 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 (Z2) , welche die Ubergabegröße (np) berechnet .
18. Vorrichtung nach Anspruch 17, g e k e n n z e i c h n e t d u r c h
- einen oder mehrere Multiplizierer (100-102) zur Berechnung der Werte (n+1) *q, (np+dp) * (p-1) und (np+dp+l) * (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+l) * (p-1) oder nicht,
- einen oder mehreren Subtrahierern (103, 104) zur Berechnung von ((n+l)*q) mod (p-1) = (n+1) *q- (np+dp) * (p-1) oder
((n+l)*q) mod (p-1) = (n+1) *q- (np+dp+l) * (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. Vorrichtung nach einem der Ansprüche 17 bis 18, g e k e n n z e i c h n e t d u r c h
- einen ersten Zähler (ZI) zur Erzeugung des Wertes j für den Laufindex.
20. Vorrichtung nach einem der Ansprüche 17 bis 19, g e k e n n z e i c h n e t d u r c h
- einen zweiten Zähler (Z2) zur Berechnung des ganzzahligen übergabewertes np.
PCT/DE2002/004714 2002-01-04 2002-12-23 Verfahren und vorrichtung zur berechnung von modulo-operationen WO2003060753A2 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US10/884,724 US7664809B2 (en) 2002-01-04 2004-07-02 Method and device for calculating modulo operations

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE10200133.2 2002-01-04
DE10200133A DE10200133B4 (de) 2002-01-04 2002-01-04 Verfahren und Vorrichtung zur Berechnung von Modulo-Operationen

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US10/884,724 Continuation US7664809B2 (en) 2002-01-04 2004-07-02 Method and device for calculating modulo operations

Publications (2)

Publication Number Publication Date
WO2003060753A2 true WO2003060753A2 (de) 2003-07-24
WO2003060753A3 WO2003060753A3 (de) 2004-08-26

Family

ID=7711506

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/DE2002/004714 WO2003060753A2 (de) 2002-01-04 2002-12-23 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)

* Cited by examiner, † Cited by third party
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 연산 장치 및 방법
US20110145311A1 (en) * 2009-12-16 2011-06-16 Electronics And Telecommunications Research Institute Method and apparatus for modulo n operation
KR101318992B1 (ko) 2009-12-16 2013-10-16 한국전자통신연구원 모듈로 n 연산방법 및 그 장치
US9993251B2 (en) * 2014-05-02 2018-06-12 W. L. Gore & Associates, Inc. Anastomosis devices
GB2537371B (en) * 2015-04-13 2019-10-02 Imagination Tech Ltd Modulo calculation using polynomials

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0402532A1 (de) * 1988-04-29 1990-12-19 Philips Electronics Uk Limited Residuenarithmetisches Gerät
US5499299A (en) * 1993-07-02 1996-03-12 Fujitsu Limited Modular arithmetic operation system
US5572454A (en) * 1993-12-06 1996-11-05 Korea Telecommunication Authority Modulo reduction method using a precomputed table

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0402532A1 (de) * 1988-04-29 1990-12-19 Philips Electronics Uk Limited Residuenarithmetisches Gerät
US5499299A (en) * 1993-07-02 1996-03-12 Fujitsu Limited Modular arithmetic operation system
US5572454A (en) * 1993-12-06 1996-11-05 Korea Telecommunication Authority Modulo reduction method using a precomputed table

Also Published As

Publication number Publication date
US20050004967A1 (en) 2005-01-06
DE10200133A1 (de) 2003-07-24
DE10200133B4 (de) 2005-12-22
WO2003060753A3 (de) 2004-08-26
US7664809B2 (en) 2010-02-16

Similar Documents

Publication Publication Date Title
DE60314584T2 (de) Maskierung von in einem Restklassensystem zerlegten bzw. faktorisierten Daten
DE69834542T2 (de) Hardwareoptimierter reed-solomon-decoder zur decodierung grosser datenblöcke
DE2628473C3 (de) Digitales Faltungsfilter
DE19758079A1 (de) Verfahren und Vorrichtung zur Galoisfeld-Multiplikation
DE4241903C2 (de) Euklidische wechselseitige Divisionsschaltung
DE4302898A1 (en) Arithmetic logic unit with accumulator function - has two memories and counter with selection to reduce delay in processing
CH622113A5 (de)
WO2003060753A2 (de) Verfahren und vorrichtung zur berechnung von modulo-operationen
EP1370933B1 (de) Verfahren und vorrichtung zum modularen multiplizieren
DE2064606C3 (de) Anordnung zur Echtzeitverarbeitung von elektrischen Signalen durch Anwendung der schnellen Fourier-Transformierten
EP0628183B1 (de) Schaltungsanordnung zum digitalen multiplizieren von integer-zahlen
DE3447634C2 (de)
WO2012065730A1 (de) Verfahren zur langzahldivision oder modulare reduktion
DE2615498A1 (de) Konvolutionsfunktionsgenerator und dessen anwendung in digitalfiltern
DE112018006405T5 (de) Verfahren und Vorrichtung zur Berechnung der Hashfunktion
DE2704641A1 (de) Digitalfilter
DE3702697A1 (de) Paritaetserzeugungsschaltung
EP1495552A1 (de) Verfahren und vorrichtung zur berechnung eines iterierten zustands einer rueckgekoppelten schieberegisteranordnung
DE19960269A1 (de) Übertragungsverfahren mit Kanalcodierung mit wirksamer und modularer Verschachtelung für Turbocodes
DE3416536C2 (de)
DE4022381C2 (de) Verwendung langer Digitalfilter bei Vorkommnis von Abrundungsfehlern
WO2003028239A1 (de) Verfahren und vorrichtung zur bestimmung von initialisierungszuständen bei pseudo-noise-folgen
DE19958599A1 (de) Verfahren zur Verschlüsselung einer numerischen Information und Sendemodul
DE19522500C1 (de) Einrichtung zur zweidimensionalen diskreten Cosinusrücktransformation
DE10163350A1 (de) Verfahren und Vorrichtung zum Erzeugen eines Ausgangssignals als mathematische Funktion eines Eingangssignals

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): CN JP US

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): DE FR GB

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 10884724

Country of ref document: US

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP