DE10138566A1 - Method and device for performing interleaving and deinterleaving in turbo decoding - Google Patents
Method and device for performing interleaving and deinterleaving in turbo decodingInfo
- Publication number
- DE10138566A1 DE10138566A1 DE2001138566 DE10138566A DE10138566A1 DE 10138566 A1 DE10138566 A1 DE 10138566A1 DE 2001138566 DE2001138566 DE 2001138566 DE 10138566 A DE10138566 A DE 10138566A DE 10138566 A1 DE10138566 A1 DE 10138566A1
- Authority
- DE
- Germany
- Prior art keywords
- deinterleaving
- data
- interleaving
- hardware circuit
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6569—Implementation on processors, e.g. DSPs, or software implementations
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/27—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
- H03M13/2703—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques the interleaver involving at least two directions
- H03M13/271—Row-column interleaver with permutations, e.g. block interleaving with inter-row, inter-column, intra-row or intra-column permutations
- H03M13/2714—Turbo interleaver for 3rd generation partnership project [3GPP] universal mobile telecommunications systems [UMTS], e.g. as defined in technical specification TS 25.212
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/27—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
- H03M13/276—Interleaving address generation
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2957—Turbo codes and decoding
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Description
Die Erfindung betrifft ein Verfahren und eine Vorrichtung zur Durchführung der Ver- und Entschachtelung bei einer Turbo- Dekodierung. The invention relates to a method and an apparatus for Execution of interleaving and deinterleaving in a turbo Decoding.
Durch die Verwendung von Turbo-Kodes lässt sich insbesondere beim Übertragen von großen Datenblöcken ein erheblich besserer Fehlerschutzgrad als mit üblichen Faltungskodes erzielen. Für Mobilfunksysteme der dritten Generation wie beispielsweise UMTS (Universal Mobile Telecommunication System) ist die Verwendung von Turbo-Kodes für die Fehlerschutzkodierung daher von großem Interesse. By using turbo codes you can in particular when transferring large data blocks a considerable achieve a better level of error protection than with conventional convolutional codes. For third generation mobile radio systems such as for example UMTS (Universal Mobile Telecommunication System) is the Use of turbo codes for error protection coding therefore of great interest.
Eine Besonderheit der Turbo-Kodierung besteht darin, dass sie eine Verschachtelungsprozedur beinhaltet. Das heisst, dass bei der Turbo-Kodierung den ursprünglichen Daten einerseits (wie bei jeder Kanalkodierung) Redundanz hinzugefügt wird, und dass andererseits eine blockweise Permutation der Daten vorgenommen wird. Die Verschachtelung bewirkt, dass Turbo- Kodes sehr unanfällig gegen Bündelfehler (d. h. in Gruppen auftretende Detektionsfehler) sind. A peculiarity of turbo coding is that it includes a nesting procedure. It means that with turbo coding the original data on the one hand (as with any channel coding) redundancy is added, and that on the other hand a block-wise permutation of the data is made. The nesting causes turbo Codes very insensitive to bundle errors (i.e. in groups detection errors that occur).
Die im Empfänger durchzuführende Dekodierung eines Turbo- Kodes ist allerdings relativ rechenaufwändig. Der hohe Rechenaufwand wird zum einen dadurch bewirkt, dass ein iteratives Dekodierverfahren zur Anwendung kommt, bei welchem die einzelnen Datensymbole infolge des mehrfachen Durchlaufens der Rekursionsschleife mehrfach dekodiert werden. Hinzu kommt, dass infolge der eine Verschachtelungsprozedur umfassenden Erzeugung eines Turbo-Kodes in jeder Iterationsschleife jeweils eine Verschachtelungs- und eine Entschachtelungsprozedur durchzuführen sind. The decoding of a turbo However, codes are relatively complex. The height Computational effort is caused on the one hand by a iterative decoding method is used, in which the individual data symbols as a result of multiple iterations the recursion loop can be decoded several times. in addition that comes as a result of a nesting procedure comprehensive generation of a turbo code in each Iteration loop one nesting and one Deinterleaving procedure.
Bei Mobilfunkanwendungen ist der Leistungsverbrauch des Empfängers eines der wesentlichsten Kriterien für dessen Marktfähigkeit. Es wird deshalb generell angestrebt, sämtliche im Empfänger auszuführenden Verarbeitungsschritte so energiesparend wie nur möglich zu gestalten. Gerade bei Verwendung eines Turbo-Kodes gilt dies in besonderem Maße auch für die Kanaldekodierung In mobile applications, the power consumption of the Recipient one of the most important criteria for its Marketability. It is therefore generally sought to all in Processing steps to be performed by the recipient energy-saving as possible. Especially when used of a turbo code, this applies particularly to the channel decoding
Eine erste Möglichkeit besteht darin, die MAP-(Maximum A- Posteriori-)Dekodierung bei der Dekodierung des Turbo-Kodes mittels erhältlicher Co-Prozessoren zumindest teilweise in Hardware durchzuführen und die Verschachtelungs- und Entschachtelungsprozeduren innerhalb der Iterationsschleifen von einem Prozessor durchführen zu lassen. Dieser Ansatz ermöglicht eine hohe Fleibilität in Bezug auf die zugrundeliegende Verschachtelungsvorschrift, weist jedoch den Nachteil auf, dass ein relativ leistungsstarker Prozessor mit einer entsprechend hohen Leistungsaufnahme benötigt wird. A first possibility is to use the MAP- (Maximum A- Posteriori) decoding when decoding the turbo code by means of available co-processors at least partially in Perform hardware and the nesting and Deinterleaving procedures within the iteration loops of to have a processor run. This approach allows a high degree of flexibility in relation to the underlying Nesting rule, but has the disadvantage that a relatively powerful processor with a correspondingly high power consumption is required.
Ein zweiter Ansatz besteht darin, den MAP-Dekoder und die Turbo-Verschachteler und Turbo-Entschachteler komplett in Hardware ohne Programmierbarkeit zu realisieren. Diese Lösung bietet den Vorteil eines geringen Leistungsverbrauchs, ist jedoch für viele Anwendungen, so auch für UMTS, zu unflexibel. A second approach is to use the MAP decoder and the Turbo interleaver and turbo deinterleaver completely in Realize hardware without programmability. This solution offers the advantage of low power consumption however, for many applications, including UMTS inflexible.
Im UMTS-Standard ist ein Datenblocklänge zwischen 40 und 5114 Bits erlaubt. Für jede Datenblocklänge K ist eine bestimmte, von der Blocklänge abhängige Verschachtelungs- bzw. Entschachtelungsvorschrift vorgegeben. Es wird daher ein flexibles, Blocklängen-adaptives Verfahren zur Durchführung der Ver- bzw. Entschachtelungsprozeduren im Rahmen der Dekodierung benötigt. In the UMTS standard, a data block length is between 40 and 5114 Bits allowed. A specific, Depending on the block length, nesting or Deinterleaving specification specified. It therefore becomes a flexible, block-length-adaptive procedure for performing the Nesting and deinterleaving procedures within the framework of the Decoding needed.
In dem U.S.-Patent 5,659,580 ist ein vollständig in Hardware ausgeführter Verschachteler für den IS95 Mobilfunkstandard beschrieben. Der Verschachteler umfasst einen Adressgenerator, welcher aus einem 3-Bit Modulo-6 Zähler und einem 6-Bit Modulo-64 Zähler aufgebaut ist und die Verschachtelungsadressen erzeugt. Auf diese Weise können die 384 Verschachtelungsadressen des IS95-Standards ohne Prozessor- bzw. Firmware- Unterstützung allein in Hardware berechnet werden. In U.S. Patent 5,659,580, one is entirely in hardware Executed interleaver for the IS95 mobile radio standard described. The interleaver includes one Address generator, which consists of a 3-bit modulo-6 counter and a 6-bit Modulo-64 counter is built and the Nesting addresses generated. In this way, the 384 Nesting addresses of the IS95 standard without processor or firmware Support can be calculated in hardware alone.
Der Erfindung liegt die Aufgabe zugrunde, ein Verfahren zur Durchführung der Ver- und/oder Entschachtelungsprozeduren bei einer Turbo-Dekodierung anzugeben, welches einerseits günstige Voraussetzungen für eine leistungsarme Implementierung in einer Turbo-Dekodiererstruktur aufweist und andererseits die für eine Ausführung unterschiedlicher Ver- bzw. Entschachtelungsvorschriften benötigte Flexibilität garantiert. Ferner zielt die Erfindung darauf ab, eine Vorrichtung zur Durchführung einer Ver- und/oder Entschachtelungsprozedur bei einer Turbo-Dekodierung mit den genannten Eigenschaften zu schaffen. The invention has for its object a method for Implementation of the nesting and / or deinterleaving procedures at a turbo decoding to indicate which one favorable conditions for a low-performance implementation in a turbo decoder structure and on the other hand the for executing different connections or The deinterleaving rules guarantee the flexibility required. Further The invention aims to provide a device for Execution of a nesting and / or deinterleaving procedure at a Turbo decoding with the properties mentioned create.
Die Aufgabenstellung wird durch die Merkmale der unabhängigen Ansprüche gelöst. The task is characterized by the characteristics of the independent Claims resolved.
Demnach wird bei dem erfindungsgemäßen Verfahren in einem ersten Schritt Ver- und/oder Entschachtelungsinformation in dem Prozessor berechnet, in einem zweiten Schritt diese berechnete Ver- und/oder Entschachtelungsinformation zur Programmierung eines Hardware-Schaltkreises verwendet, und in einem dritten Schritt die (eigentliche) Ver- und/oder Entschachtelungsprozedur im Hardware-Schaltkreis ausgeführt. Accordingly, in the method according to the invention in one first step interleaving and / or deinterleaving information in the Processor calculates this in a second step calculated interleaving and / or deinterleaving information for Programming a hardware circuit used, and in one third step the (actual) Ver and / or De-interleaving procedure carried out in the hardware circuit.
Durch das Zusammenwirken zwischen dem Prozessor und dem Hardware-Schaltkreis kann durch Auslagern der rechenaufwändigen Algorithmen bzw. Arbeitsschritte aus dem Prozessor in die Hardware eine Entlastung des Prozessors und damit eine Verminderung des Stromverbrauchs durch den Prozessor erreicht werden. Gleichzeitig garantiert die Programmierbarkeit des Hardware-Schaltkreises mit der im Prozessor berechneten Ver- und/oder Entschachtelungsinformation die Flexibilität des erfindungsgemäßen Verfahrens in bezug auf die Verwendung unterschiedlicher Ver- bzw. Entschachtelungsvorschriften, wie sie beispielsweise bei UMTS benötigt werden. By the interaction between the processor and the Hardware circuitry can be done by outsourcing the computationally Algorithms or work steps from the processor into the Hardware relieves the processor and thus one Reduction in power consumption achieved by the processor become. At the same time, the programmability of the Hardware circuit with the computation calculated in the processor and / or deinterleaving information the flexibility of the inventive method in relation to the use different nesting or deinterleaving rules, such as for example with UMTS.
Eine erste bevorzugte Verfahrensvariante kennzeichnet sich dadurch, dass es sich bei der Ver- und/oder Entschachtelungsinformation um Adressen eines im Hardware-Schaltkreis angeordneten Datenspeichers handelt, und dass die vorstehend angegebenen Verfahrensschritte für jede im Prozessor berechnete Adresse sequentiell durchgeführt werden. Diese Ausgestaltung des erfindungsgemäßen Verfahrens ermöglicht es, den Hardware- Schaltkreis ohne einen Speicher für die Ver- und/oder Entschachtelungsinformation auszuführen, da die von dem Prozessor gelieferten Adressen unmittelbar zur Adressansteuerung des im Hardware-Schaltkreis angeordneten Datenspeichers und damit zur Ausführung der Ver- und/oder Entschachtelungsprozedur im Hardware-Schaltkreis eingesetzt werden. Ein Nachteil bei dieser Lösung besteht allerdings darin, dass ein relativ hoher Datentransfer zwischen dem Prozessor und dem Hardware- Schaltkreis unterstützt werden muss. Darüber hinaus bleibt trotz der Unterstützung durch den Hardware-Schaltkreis ein für manche Anwendungen zu hoher Rechenaufwand für den Prozessor bestehen, da dieser ständig, d. h. Bit für Bit und Datenblock für Datenblock, mit der Berechnung der Ver- und/oder Entschachtelungsadressen beschäftigt ist. A first preferred method variant is characterized in that it is the Ver and / or Deinterleaving information around addresses in the hardware circuit arranged data storage, and that the above specified process steps for each calculated in the processor Address can be performed sequentially. This configuration of the method according to the invention enables the hardware Circuit without a memory for the supply and / or Execute deinterleaving information, since that of the Processor delivered addresses directly for address control of the data memory arranged in the hardware circuit and thus to carry out the Ver and / or The deinterleaving procedure can be used in the hardware circuit. A disadvantage with this solution, however, is a relative high data transfer between the processor and the hardware Circuit must be supported. Beyond that remains despite the support from the hardware circuit For some applications, too much computing effort for the Processor exist because this constantly, i. H. Bit by bit and Data block for data block, with the calculation of the Ver and / or Deinterleaving addresses is busy.
Gemäß einer weiteren bevorzugten Ausführungsvariante des erfindungsgemäßen Verfahrens, bei welchem die Ver- und/oder Entschachtelungsinformation ebenfalls die Adressen eines im Hardware-Schaltkreis angeordneten Datenspeichers sind, werden beim Berechnungsschritt in dem Prozessor mehrere, insbesondere sämtliche der für die Ver- oder Entschachtelung eines Datenblockes benötigten Adressen berechnet. Die berechneten mehreren Adressen werden dann in einem im Hardware- Schaltkreis angeordneten Adressenspeicher abgelegt. Die Ausführung der Ver- und/oder Entschachtelungsprozedur im Hardware-Schaltkreis wird dann ohne Beteiligung des Prozessors für diese mehreren Adressen durchgeführt. Der Vorteil dieser Ausführungsvariante besteht in einer geringeren Rechenbeanspruchung des Prozessors, da die Ver- bzw. Entschachtelungsadressen nur ein einziges Mal von dem Prozessor berechnet werden müssen. Eine Neuberechnung ist erst dann erforderlich, wenn die Ver- bzw. Entschachtelungsvorschrift geändert wird, d. h. zum Beispiel bei einer Veränderung der Datenblockgröße K. According to a further preferred embodiment variant of the inventive method, in which the Ver and / or Deinterleaving information also the addresses of an im Hardware circuitry are arranged data storage in the calculation step in the processor several, in particular all those for the interleaving or deinterleaving of a Addresses required data block calculated. The calculated multiple addresses are then Circuit arranged address memory filed. The Execution of the interleaving and / or deinterleaving procedure in Hardware circuitry is then removed without the involvement of the processor done for these multiple addresses. The advantage of this Design variant consists in a smaller one Computational stress on the processor because the Deinterleaving addresses calculated only once by the processor Need to become. A recalculation is only necessary if the nesting or deinterleaving rule is changed, d. H. for example when the data block size changes K.
Eine noch stärkere Entlastung des Prozessors wird gemäß einer weiteren bevorzugten Ausführungsvariante des erfindungsgemäßen Verfahrens erreicht, welche sich dadurch kennzeichnet, dass es sich bei der Ver- und/oder Entschachtelungsinformation um Parameter handelt, welche für die auszuführende Ver- und/oder Entschachtelungsvorschrift charakteristisch sind, und dass vor der Ausführung der Ent- bzw. Verschachtelungsprozedur eine Berechnung von Adressen für die Ver- und/oder Entschachtelung in Abhängigkeit von den Parametern im Hardware-Schaltkreis durchgeführt wird. Die Programmierung des Hardware-Schaltkreises erfolgt hier also durch die vom Prozessor berechneten und ausgegebenen Parameter, wodurch im Vergleich zu der vorstehend beschriebenen Lösungen (Transfer von Ver- bzw. Entschachtelungsadressen) die benötigte Datenübertragungskapazität zwischen dem Prozessor und dem Hardware-Schaltkreis nochmals reduziert werden kann. An even greater relief of the processor is according to one another preferred embodiment of the achieved method according to the invention, which is characterized by that the ver and / or De-interleaving information is parameters which are relevant for the to be executed Characteristic of interleaving and / or deinterleaving and that before executing the removal or Nesting procedure a calculation of addresses for the nesting and / or deinterleaving depending on the parameters is performed in the hardware circuit. The programming of the hardware circuit is done here by the Processor calculated and output parameters, which in the Comparison to the solutions described above (transfer of nesting or deinterleaving addresses) the required Data transfer capacity between the processor and the Hardware circuit can be reduced again.
Diese Verfahrensvariante eignet sich insbesondere für die Durchführung der Ver- und/oder Entschachtelung nach der im UMTS-Standard 3GPP TD 25.212 angegebenen Vorschrift. In diesem Fall kann es sich bei den zur Programmierung verwendeten Parametern um die Anzahl (K) der zu ver- bzw. entschachtelnden Daten (d. h. die Blockgröße) und/oder die Anzahl der Spalten und Zeilen der Matrix-Darstellung der Verschachtelungsvorschrift gemäß dem genannten Standard und/oder die Primzahl zur Auswahl der Spalten- und Zeilenanzahl und/oder die Anzahl der Dummy-Bits, die vor der Entschachtelung angefügt und nach der Entschachtelung abgeschnitten werden müssen, handeln. Die Adressenerzeugung erfolgt dabei innerhalb des Hardware- Schaltkreises mittels einer entsprechend ausgelegten Hardware-Arithmetikschaltung. This process variant is particularly suitable for Execution of the interleaving and / or deinterleaving according to the in UMTS standard 3GPP TD 25.212 specified regulation. In In this case it can be used for the programming Parameters to change the number (K) of deinterleaving data (i.e. the block size) and / or the number of Columns and rows of the matrix representation of the Nesting rule according to the standard mentioned and / or the prime number to select the number of columns and rows and / or the number of the dummy bits added before and after the deinterleaving of the deinterleaving must act. The Address generation takes place within the hardware Circuit by means of an appropriately designed Hardware arithmetic circuit.
Die Vorrichtung zur Durchführung der Ver- und/oder Entschachtelungsprozedur bei einer Turbo-Dekodierung umfasst einen Prozessor zur Berechnung von Ver- und/oder Entschachtelungsinformation und einen Hardware-Schaltkreis. Der letztere enthält einen ersten Datenspeicher zur Speicherung von zu ver- und/oder entschachtelnden Daten und einen zweiten Datenspeicher zur Speicherung der ver- und/oder entschachtelten Daten. Dabei werden die im ersten Datenspeicher abgelegten Daten in Abhängigkeit von der Ver- und/oder Entschachtelungsinformation auf Speicherplätze in dem zweiten Datenspeicher umgespeichert. The device for carrying out the supply and / or The deinterleaving procedure in turbo decoding involves one Processor for calculating supply and / or Deinterleaving information and a hardware circuit. The latter contains a first data storage for storing and / or deinterleaving data and a second Data storage for storing the nested and / or deinterleaved data. The data stored in the first data memory are stored in Dependence on the supply and / or De-interleaving information on storage locations in the second data memory re-stored.
Die Ausführung des Hardware-Schaltkreises kann entsprechend der gewünschten Programmierbarkeit desselben (z. B. durch Ver- bzw. Entschachtelungsadressen oder durch Parameter, welche für die Ver- bzw. Entschachtelungsvorschrift charakteristisch sind) unterschiedlich gewählt werden. The execution of the hardware circuit can accordingly the desired programmability of the same (e.g. by or deinterleaving addresses or by parameters which characteristic of the interleaving or deinterleaving specification are selected differently.
Weitere vorteilhafte Ausgestaltungen der Erfindung sind in den Unteransprüchen angegeben. Further advantageous embodiments of the invention are in specified in the subclaims.
Die Erfindung wird im folgenden in beispielhafter Weise anhand von Ausführungsvarianten unter Bezugnahme auf die Zeichnung erläutert; in dieser zeigt: The invention is illustrated below by way of example based on design variants with reference to the Drawing explained; in this shows:
Fig. 1 ein Blockschaltbild eines bekannten Turbo-Kodierers zur Erzeugung eines Turbo-Kodes; Fig. 1 is a block diagram of a conventional turbo encoder for generating a turbo code;
Fig. 2 ein Blockschaltbild eines bekannten Turbo-Dekodierers zur Dekodierung eines Turbo-kodierten Empfangssignals; Fig. 2 is a block diagram of a conventional turbo decoder for decoding a turbo coded received signal;
Fig. 3 eine schematische Darstellung der Architektur eines Turbo-Dekodierers mit einer erfindungsgemäßen Vorrichtung zur Durchführung der Ver- und/oder Entschachtelungsprozeduren; Figure 3 is a schematic representation of the architecture of a turbo decoder with an inventive device for carrying out the encryption and / or Entschachtelungsprozeduren.
Fig. 4 eine erste Ausführungsvariante eines Hardware-Schaltkreises der in Fig. 3 dargestellten Vorrichtung; FIG. 4 shows a first embodiment variant of a hardware circuit of the device shown in FIG. 3;
Fig. 5 eine zweite Ausführungsvariante des in Fig. 3 dargestellten Hardware-Schaltkreises; FIG. 5 shows a second embodiment variant of the hardware circuit shown in FIG. 3;
Fig. 6 eine dritte Ausführungvariante des in Fig. 3 dargestellten Hardware-Schaltkreises; FIG. 6 shows a third embodiment variant of the hardware circuit shown in FIG. 3;
Fig. 7 eine Darstellung zur Erläuterung der Turbo-Verschachtelung bei der dritten Ausführungsvariante; Fig. 7 is a diagram for explaining the turbo-interleaving in the third embodiment;
Fig. 8 eine Darstellung zur Erläuterung der Turbo-Entschachtelung bei der dritten Ausführungsvariante; und Fig. 8 is a diagram for explaining the turbo-interleaving in the third embodiment; and
Fig. 9 eine Ausführungsvariante des in Fig. 3 dargestellten Hardware-Schaltkreises. FIG. 9 shows an embodiment variant of the hardware circuit shown in FIG. 3.
Fig. 1 zeigt beispielhaft das Blockschaltbild eines Turbo- Kodierers TCOD, wie er in einem Mobilfunksender zur Erzeugung eines Turbo-kodierten Datensignals D eingesetzt werden kann. Die Erläuterung des Turbo-Kodierers TCOD dient lediglich dem besseren Verständnis der Erfindung. Im Rahmen der Erfindung können auch andere Turbo-Kodierer verwendet werden. Fig. 1 is a block diagram showing an example of a turbo encoder TCOD, as it can be used in a mobile radio transmitter for generating a turbo-encoded data signal D. The explanation of the turbo encoder TCOD is only for a better understanding of the invention. Other turbo encoders can also be used within the scope of the invention.
Der Turbo-Kodierer TCOD weist einen Turbo-Verschachteler IL, zwei identische, rekursive, systematische Faltungskodierer RSC1 und RSC2 (z. B. 8-Zustands-Faltungskodierer), zwei optionale Punktierer PKT1 und PKT2 und einen Multiplexer MUX auf. The turbo encoder TCOD has a turbo interleaver IL, two identical, recursive, systematic convolutional encoders RSC1 and RSC2 (e.g. 8-state convolutional encoder), two optional puncturers PKT1 and PKT2 and a multiplexer MUX.
Die Aufgabe des Turbo-Kodierers TCOD besteht darin, einem digitalen Eingabesignal X zur Fehlerschutzkodierung Redundanz hinzuzufügen. Das Eingabesignal besteht aus einer Folge von Datensymbolen, z. B. Bits. The task of the TCOD turbo encoder is to: digital input signal X for error protection coding redundancy add. The input signal consists of a sequence of Data symbols, e.g. B. bits.
Der Turbo-Kodierer TCOD erzeugt ein digitales Ausgabesignal D, das durch Multiplexen des Eingabesignals X (sogenanntes systematisches Signal), eines von RSC1 kodierten und ggf. von PKT1 punktierten Signals Y1 und eines von IL verschachtelten, von RSC2 kodierten und ggf. von PKT2 punktierten Signals Y2 erzeugt wird. The turbo encoder TCOD generates a digital output signal D, which is obtained by multiplexing the input signal X (so-called systematic signal), one encoded by RSC1 and possibly by PKT1 punctured signal Y1 and one interleaved by IL, signal Y2 coded by RSC2 and possibly punctured by PKT2 is produced.
Der Turbo-Verschachteler IL führt eine blockweise Verschachtelung des Eingabesignals X durch. Das heisst, dass der Turbo-Verschachteler IL in ständiger Wiederholung jeweils K Datensymbole (K ist eine ganze, positive Zahl und bezeichnet die Datenblocklänge) entgegennimmt, umsortiert und in geänderter Reihenfolge wieder ausgibt. Das Umsortieren (Permutieren) der Datensymbole erfolgt nach einer bestimmten Vorschrift, die z. B. beim UMTS-Standard für eine konstante Datenblocklänge K immer gleich ist. The turbo interleaver IL performs one block Nesting of the input signal X by. That means that Turbo interleaver IL in constant repetition each K Data symbols (K is an integer, positive number and labeled the data block length), sorted and in changed order again. Sorting (Permute) the data symbols takes place after a certain one Regulation that z. B. in the UMTS standard for a constant Data block length K is always the same.
Im UMTS-Standard ist die Blocklänge K variabel und liegt zwischen 40 und 5114 Bits. Wie später noch näher erläutert wird, ist für jede Datenblocklänge im Standard eine spezielle Verschachtelungsvorschrift vorgeschrieben. In the UMTS standard, the block length K is variable and lies between 40 and 5114 bits. As will be explained in more detail later, is a special for each data block length in the standard Nesting requirement prescribed.
Das fehlerschutzkodierte Datensignals D wird dann in geeigneter Weise auf einen Träger moduliert und über einen Übertragungskanal (z. B. Mobilfunkkanal) übertragen. The error protection coded data signal D is then in suitably modulated on a carrier and over a Transmission channel (e.g. mobile radio channel) transmitted.
Die Dekodierung eines Turbo-kodierten Empfangssignals in einem Empfänger wird nachfolgend unter Bezugnahme auf die in Fig. 2 gezeigte, bekannte Struktur eines Turbo-Dekodierers TDEC erläutert. Auch andere Bauweisen von Turbo-Dekodierern sind möglich und können zur Durchführung des erfindungsgemäßen Verfahrens eingesetzt werden. The decoding of a turbo-coded received signal in a receiver is explained below with reference to the known structure of a turbo decoder TDEC shown in FIG. 2. Other designs of turbo decoders are also possible and can be used to carry out the method according to the invention.
Der Turbo-Dekodierer TDEC umfaßt einen ersten und einen zweiten Demultiplexer DMUX1 und DMUX2, einen Speicher MEM, einen ersten und zweiten Faltungsdekodierer DEC1 und DEC2, einen Turbo-Verschachteler IL1, einen ersten und einen zweiten Turbo-Entschachteler DIL1 und DIL2 sowie eine Entscheidungslogik (Schwellenwertentscheider) TL. The turbo decoder TDEC includes first and one second demultiplexer DMUX1 and DMUX2, a memory MEM, one first and second convolutional decoders DEC1 and DEC2, one Turbo interleaver IL1, a first and a second Turbo deinterleaver DIL1 and DIL2 as well as a decision logic (Threshold decision maker) TL.
Von einem Demodulator (nicht dargestellt) des Empfängers wird eine entzerrte Datenfolge ≙ bereitgestellt, die die im Empfänger rekonstruierte kodierte Datenfolge D ist. From a demodulator (not shown) of the receiver an equalized data sequence ≙ provided that the in Reconstructed coded data sequence D is.
Die Funktionsweise des in Fig. 2 gezeigten Turbo-Dekodierers TDEC wird im folgenden kurz erläutert. The operation of the turbo decoder TDEC shown in Fig. 2 is briefly explained below.
Der erste Demultiplexer DMUX1 spaltet das entzerrte Datensignal ≙ in das entzerrte systematische Datensignal ≙ (rekonstruierte Version des Eingabesignals X) und ein entzerrtes Redundanzsignal ≙ auf. Letzteres wird von dem zweiten Demultiplexer DMUX2 in die beiden entzerrten Redundanz-Teilsignale ≙1 und ≙2 (rekonstruierte Versionen der Redundanz-Teilsignale Y1 und Y2) aufgespalten. The first demultiplexer DMUX1 splits the equalized Data signal ≙ into the equalized systematic data signal ≙ (reconstructed version of the input signal X) and an equalized Redundancy signal ≙ on. The latter is from the second Demultiplexer DMUX2 in the two equalized partial redundancy signals ≙1 and ≙2 (reconstructed versions of the Redundancy partial signals Y1 and Y2) split.
Die beiden Faltungsdekodierer DEC1 und DEC2 sind z. B. MAP- Symbolschätzer. Der erste Faltungsdekodierer DEC1 berechnet ausgehend von den Datensignalen ≙ und ≙1 und einem Rückkoppelsignal Z logarithmische Zuverlässigkeitsdaten Λ1 in Form von LLRs (Log-Likelihood Ratios). The two convolutional decoders DEC1 and DEC2 are e.g. B. MAP- Symbol estimator. The first convolutional decoder DEC1 calculates based on the data signals ≙ and ≙1 and one Feedback signal Z logarithmic reliability data Λ1 in the form from LLRs (Log-Likelihood Ratios).
Die Zuverlässigkeitsdaten Λ1 werden von dem Turbo-Verschachteler IL1 verschachtelt und die verschachtelten Zuverlässigkeitsdaten Λ1I werden dem zweiten Faltungsdekodierer DEC2 zugeführt. Die Arbeitsweisen der Turbo-Verschachteler IL und IL1 sind identisch. Der zweite Faltungsdekodierer DEC2 berechnet aus den verschachtelten Zuverlässigkeitsdaten Λ1I und aus den rekonstruierten Redundanz-Teilsignaldaten ≙2, die in dem Speicher MEM bereitgehalten werden, ein verschachteltes Rückkoppelsignal ZI und verschachtelte zweite logarithmische Zuverlässigkeitsdaten Λ2I, ebenfalls in Form von LLR's. The reliability data Λ1 are interleaved by the turbo interleaver IL1 and the interleaved reliability data Λ1 I are supplied to the second convolutional decoder DEC2. The Turbo Nesting IL and IL1 work in the same way. The second convolutional decoder DEC2 calculates an interleaved feedback signal Z I and interleaved second logarithmic reliability data Λ2 I , likewise in the form of LLR's, from the interleaved reliability data Λ1 I and from the reconstructed redundancy partial signal data ≙2, which are kept in the memory MEM.
Das verschachtelte Rückkoppelsignal ZI wird von dem ersten Turbo-Entschachteler DIL1 entschachtelt und ergibt das Rückkoppelsignal Z. The interleaved feedback signal Z I is deinterleaved by the first turbo deinterleaver DIL1 and results in the feedback signal Z.
Die dargestellte Rekursionsschleife wird mehrmals (z. B. 6 Mal) pro Datenblock durchlaufen. Jedem Durchlauf liegen die Daten desselben Datenblocks zugrunde. Die beim letzten Durchlauf erhaltenen verschachtelten zweiten Zuverlässigkeitsdaten Λ2I werden von dem zweiten Entschachteler DIL2 entschachtelt und als entschachtelte Zuverlässigkeitsdaten Λ2 der Entscheidungslogik TL zugeführt. Diese bestimmt daraufhin ein Datensignal E(X), welches eine Folge von Schätzwerten für die Datensymbole des Eingabesignals X ist. The recursion loop shown is run through several times (e.g. 6 times) per data block. Each run is based on the data of the same data block. The interleaved second reliability data Λ2 I obtained during the last run are deinterleaved by the second deinterleaver DIL2 and supplied to the decision logic TL as deinterleaved reliability data Λ2. This then determines a data signal E (X), which is a sequence of estimated values for the data symbols of the input signal X.
Nach der Turbo-Dekodierung eines Datenblocks und Ausgabe der entsprechenden Folge von Schätzwerten E(X) wird der nächste Datenblock Turbo-dekodiert. After the turbo decoding of a data block and output of the corresponding sequence of estimates E (X) becomes the next Turbo decoded data block.
Eine detaillierte Beschreibung der Arbeitsweise eines Turbo- Dekodierers ist in dem Kapitel E.3.3 "Rekursive MAP-Symbolschätzung" des Buchs "Analyse und Entwurf digitaler Mobilfunksysteme", von P. Jung, Stuttgart, B. G. Teubner-Verlag, 1997, Anhang E, Seiten 353-361, angegeben, die hiermit durch Bezugnahme zum Inhalt dieser Schrift wird. A detailed description of how a turbo works Decoder is in chapter E.3.3 "Recursive "Book" analysis and design digital MAP symbol estimation Mobilfunksysteme ", by P. Jung, Stuttgart, B.G. Teubner-Verlag, 1997, Appendix E, pages 353-361, hereby indicated by Reference to the content of this document becomes.
Wie beispielhaft an dem in Fig. 2 dargestellten Turbo-Dekodierer TDEC ersichtlich, umfaßt eine Turbo-Dekodierung bei jedem Schleifendurchlauf eine Turbo-Verschachtelungsprozedur (IL1) und eine Turbo-Entschachtelungsprozedur (DIL1) sowie eine (einzige) abschließende Turbo-Entschachtelungsprozedur (DIL2). Die beiden Turbo-Entschachtelungsprozeduren sind identisch. As can be seen, for example, from the turbo decoder TDEC shown in FIG. 2, turbo decoding comprises a turbo interleaving procedure (IL1) and a turbo deinterleaving procedure (DIL1) as well as a (single) final turbo deinterleaving procedure (DIL2) for each loop pass. , The two turbo deinterleaving procedures are identical.
Die Verschachtelungsvorschrift kann mathematisch durch eine Permutation beschrieben werden. Die Permutation ordnet jeder Ausgangs- oder Quellenadresse eindeutig eine Zieladresse für die Umsortierung der Datensymbole eines Datenblocks zu. Quellenadresse ist die ursprüngliche Stelle des Datensymbols im Datenblock und die Zieladressen ist die Stelle des umsortierten Datensymbols im verschachtelten Datenblock. The nesting rule can be mathematically defined by a Permutation can be described. Everyone arranges the permutation Source or source address clearly a destination address for the reordering of the data symbols of a data block. Source address is the original position of the data symbol in the Data block and the destination addresses is the place of the resorted data symbol in the nested data block.
Fig. 3 zeigt eine Architektur der erfindungsgemäßen Vorrichtung zur Durchführung der Ver- und/oder Entschachtelungsprozedur eines Turbo-Dekodierers. Die Vorrichtung umfasst einen Prozessor 1, der über eine Eingabe/Ausgabe-(I/O-)Schnittstelle 1.1 mit zwei Hardware-Schaltkreisen in Datenaustauschverbindung steht. Der erste Hardware-Schaltkreis 2 ist ein Datenpfad zur Durchführung einer MAP-Faltungsdekodierung. Der zweite Hardware-Schaltkreis 3 dient zur Durchführung der Ent- und Verschachtelungsprozeduren bei der Turbo- Dekodierung. Er enthält zu diesem Zweck einen ersten Datenspeicher 3.1, welchem über eine erste Datenverbindung DV1 zu ent- oder verschachtelnde Daten zugeleitet werden, und einen zweiten Datenspeicher 3.2, welcher als Zielspeicher für die ent- bzw. verschachtelten Daten vorgesehen ist. Der zweite Datenspeicher 3.2 kann über eine zweite Datenverbindung DV2 die ent- bzw. verschachtelten Daten dem ersten Hardware- Schaltkreis 2 zuführen und kann ferner über eine dritte Datenverbindung DV3 von dem Prozessor 1 ausgelesen werden. Fig. 3 shows an architecture of the inventive device for carrying out the encryption and / or interleaving procedure of a turbo decoder. The device comprises a processor 1 , which is connected to two hardware circuits via an input / output (I / O) interface 1.1 . The first hardware circuit 2 is a data path for performing MAP convolution decoding. The second hardware circuit 3 is used to carry out the deinterleaving and interleaving procedures in the turbo-decoding. For this purpose, it contains a first data memory 3.1 , to which data to be de-interleaved or interleaved is fed via a first data connection DV1, and a second data memory 3.2 , which is provided as a target memory for the de-interleaved or interleaved data. The second data memory 3.2 can supply the deinterleaved or nested data to the first hardware circuit 2 via a second data connection DV2 and can also be read out by the processor 1 via a third data connection DV3.
Der Datenaustausch zwischen dem Prozessor 1 und den Hardware- Schaltkreisen 2, 3 erfolgt über einen Datenbus DB, auf welchen der Prozessor 1 über eine bidirektionale Adress- und Datenverbindung ADV zugreifen kann. Der Datenbus DB steht über eine vierte Datenverbindung DV4 mit dem ersten Hardware- Schaltkreis 2 in Verbindung. Eine Programmierdatenverbindung PV erstreckt sich zwischen dem Datenbus DB und dem zweiten Hardware-Schaltkreis 3 und ermöglicht die Übermittlung von Ver- und/oder Entschachtelungsinformation von dem Prozessor 1 an den zweiten Hardware-Schaltkreis 3. Dieser ist zu diesem Zweck mit einem Programmierdaten-Verarbeitungsschaltkreis 3.3 ausgestattet, welcher Adressendekoder AD1 und AD2 der beiden Datenspeicher 3.1 und 3.2 ansteuert. The data exchange between the processor 1 and the hardware circuits 2 , 3 takes place via a data bus DB, which the processor 1 can access via a bidirectional address and data connection ADV. The data bus DB is connected to the first hardware circuit 2 via a fourth data connection DV4. A programming data connection PV extends between the data bus DB and the second hardware circuit 3 and enables the transmission of interleaving and / or deinterleaving information from the processor 1 to the second hardware circuit 3 . For this purpose, the latter is equipped with a programming data processing circuit 3.3 , which controls address decoders AD1 and AD2 of the two data memories 3.1 and 3.2 .
Die Wirkungsweise der in Fig. 3 dargestellten Vorrichtung ist
wie folgt:
Der Prozessor 1 führt die zu dekodierenden Daten eines
Datenblocks (z. B. in Form der entzerrten Datenfolge ≙ oder die
bereits demultiplexierten Daten in Form der Signale ≙, ≙1
und ≙2) dem ersten Hardware-Schaltkreis 2 über die Adress-
und Datenverbindung ADV, den Datenbus DB und die vierte
Datenverbindung DV4 zu. Zum Abspeichern der zugeführten Daten
umfasst die erste Hardware-Schaltung 2 einen (nicht
dargestellten) Datenspeicher. Ferner umfasst sie einen ebenfalls
nicht dargestellten MAP-Datenpfad, welcher eine
Faltungsdekodierung der erhaltenen Daten durchführt und damit den in Fig.
2 dargestellten Faltungsdekodierern DEC1 und DEC2 entspricht.
The operation of the device shown in Fig. 3 is as follows:
The processor 1 passes the data to be decoded of a data block (e.g. in the form of the equalized data sequence ≙ or the already demultiplexed data in the form of the signals ≙, ≙1 and ≙2) to the first hardware circuit 2 via the address and data connection ADV, the data bus DB and the fourth data connection DV4. For storing the supplied data, the first hardware circuit 2 comprises a data memory (not shown). Furthermore, it comprises a MAP data path, also not shown, which carries out a convolutional decoding of the data obtained and thus corresponds to the convolutional decoders DEC1 and DEC2 shown in FIG. 2.
Betrachtet wird zunächst die erste Iterationsschleife. Gemäß Fig. 2 arbeitet der MAP-Datenpfad zunächst als Faltungsdekodierer DEC1 und erzeugt die Zuverlässigkeitsdaten Λ1. Die Zuverlässigkeitsdaten Λ1 (der ersten Iterationsschleife) werden über die erste Datenverbindung DV1 dem zweiten Hardware-Schaltkreis 3 zugeleitet und dort im ersten Datenspeicher 3.1 abgespeichert. The first iteration loop is considered. According to Fig. 2 of the MAP data path initially operates as a convolutional decoder DEC1 and produces the reliability data Λ1. The reliability data Λ1 (of the first iteration loop) are fed to the second hardware circuit 3 via the first data connection DV1 and stored there in the first data memory 3.1 .
Der zweite Hardware-Schaltkreis 3 nimmt nun die Aufgabe des ersten Verschachtelers IL1 (siehe Fig. 2) wahr und verschachtelt die im ersten Datenspeicher 3.1 abgelegten Daten nach einer vorgegebenen Verschachtelungsvorschrift. Die verschachtelten Daten (Bits) entsprechen den verschachtelten Zuverlässigkeitsdaten Λ1I und werden in dem zweiten Datenspeicher 3.2 gesammelt. Über die zweite Datenverbindung DV2 erfolgt die Rückleitung dieser verschachtelten Zuverlässigkeitsdaten zu dem ersten Hardware-Schaltkreis 2. The second hardware circuit 3 now performs the task of the first interleaver IL1 (see FIG. 2) and interleaves the data stored in the first data memory 3.1 according to a predetermined interleaving rule. The nested data (bits) correspond to the nested reliability data Λ1 I and are collected in the second data memory 3.2 . This nested reliability data is fed back to the first hardware circuit 2 via the second data connection DV2.
Die von dem zweiten Hardware-Schaltkreis 3 übermittelten verschachtelten ersten Zuverlässigkeitsdaten Λ1I werden in dem MAP-Datenpfad des ersten Hardware-Schaltkreises 2 einer weiteren Faltungsdekodierung unterzogen. Der MAP-Datenpfad arbeitet in dieser Abarbeitungsphase als zweiter Faltungsdekodierer DEC2, siehe Fig. 2. Das dabei erzeugte verschachtelte Rückkoppelsignal ZI (es handelt sich hier ebenfalls um verschachtelte Zuverlässigkeitsdaten) wird nun über die erste Datenverbindung DV1 wieder dem zweiten Hardware-Schaltkreis 3 zugeleitet. Dieser nimmt gemäß Fig. 2 eine Entschachtelung des verschachtelten Rückkoppelsignals ZI vor und erzeugt das entschachtelte Rückkoppelsignal Z. Bei der Entschachtelung dient der ersten Datenspeicher 3.1 zur Abspeicherung der zugeführten verschachtelten Daten und aus dem zweiten Datenspeicher 3.2 sind die entschachtelten Daten abrufbar. Diese werden über die zweite Datenverbindung DV2 dem ersten Hardware-Schaltkreis 2 zurückgegeben und werden dort als rückgekoppelte extrinsische Information Z für den zweiten Schleifendurchlauf bei der Turbo-Dekodierung verwendet. The interleaved first reliability data Λ1 I transmitted by the second hardware circuit 3 are subjected to a further convolution decoding in the MAP data path of the first hardware circuit 2 . In this processing phase, the MAP data path works as a second convolution decoder DEC2, see FIG. 2. The interleaved feedback signal Z I generated in this way (these are also interleaved reliability data) is now fed back to the second hardware circuit 3 via the first data connection DV1 , This takes in FIG. 2, deinterleaving the interleaved feedback signal Z I and generates the interleaved feedback signal Z. In the deinterleaving 3.1 is used for the first data memory for storing the input interlaced data and from the second data memory 3.2, the deinterleaved data is available. These are returned to the first hardware circuit 2 via the second data connection DV2 and are used there as feedback extrinsic information Z for the second loop pass in the turbo decoding.
Der zweite und die weiteren Schleifendurchläufe erfolgen in analoger Weise unter ständigem Datenaustausch zwischen den beiden Hardware-Schaltkreisen 2 und 3. The second and the further loop runs take place in an analog manner with constant data exchange between the two hardware circuits 2 and 3 .
Nach dem letzten (z. B. 6-ten) Schleifendurchlauf arbeitet der zweite Hardware-Schaltkreis 3 abschließend noch als zweiter Entschachteler DIL2. Die entschachtelten zweiten logarithmischen Zuverlässigkeitsdaten Λ2, welche schließlich im zweiten Datenspeicher 3.2 vorliegen, werden über die dritte Datenverbindung DV3, den Datenbus DB und die Adress- und Datenverbindung ADV dem Prozessor 1 zugeleitet. Der Datenblock ist damit dekodiert. After the last (e.g. 6th) loop pass, the second hardware circuit 3 finally works as a second deinterleaver DIL2. The deinterleaved second logarithmic reliability data Λ2, which are finally available in the second data memory 3.2 , are fed to the processor 1 via the third data connection DV3, the data bus DB and the address and data connection ADV. The data block is thus decoded.
Anschließend wird der beschriebene Dekodiervorgang für den nächsten Datenblock durchgeführt. Then the described decoding process for the next block of data.
Ein wesentlicher Aspekt der Erfindung besteht darin, dass der zweite Hardware-Schaltkreis 3 durch den Prozessor 1 programmierbar ist. Wie im folgenden noch näher erläutert wird, kann die Programmierung vor Ausführung der Ver- und/oder Entschachtelungsprozedur oder zeitgleich während der Ausführung dieser Prozeduren erfolgen. In beiden Fällen berechnet der Prozessor 1 Ver- und/oder Entschachtelungsinformation und übermittelt diese über die Adress- und Datenverbindung ADV, den Datenbus DB und die Programmierdatenverbindung PV an den Programmierdaten-Verarbeitungsschaltkreis 3.3 innerhalb des zweiten Hardware-Schaltkreises 3. Der Programmierdaten-Verarbeitungsschaltkreis 3.3 steuert daraufhin die Umspeicherung der zu ver- und/oder entschachtelnden Daten von dem ersten Datenspeicher 3.1 in den zweiten Datenspeicher 3.2. An essential aspect of the invention is that the second hardware circuit 3 is programmable by the processor 1 . As will be explained in more detail below, programming can take place before the interleaving and / or deinterleaving procedure is carried out or at the same time during the execution of these procedures. In both cases, the processor 1 calculates interleaving and / or deinterleaving information and transmits this via the address and data connection ADV, the data bus DB and the programming data connection PV to the programming data processing circuit 3.3 within the second hardware circuit 3 . The programming data processing circuit 3.3 then controls the transfer of the data to be interleaved and / or deinterleaved from the first data store 3.1 into the second data store 3.2 .
Fig. 4 zeigt eine erste Ausführungsvariante einer erfindungsgemäßen Vorrichtung. Der Programmierdaten-Verarbeitungsschaltkreis 3.3 umfasst bei dieser Variante lediglich einen Zähler Z, dessen Ausgang mit dem Adressendekoder AD1 des ersten Datenspeichers 3.1 in Verbindung steht. Die Zieladressen für die Ver- bzw. Entschachtelung werden in dem Prozessor 1 berechnet und dem Adressendekoder AD2 des zweiten Datenspeichers 3.2 über die Programmierdatenverbindung PV zugeleitet. Fig. 4 shows a first embodiment of an inventive device. In this variant, the programming data processing circuit 3.3 only comprises a counter Z, the output of which is connected to the address decoder AD1 of the first data memory 3.1 . The target addresses for the interleaving or deinterleaving are calculated in the processor 1 and fed to the address decoder AD2 of the second data memory 3.2 via the programming data connection PV.
Der Zähler Z bewirkt, dass die in dem ersten Datenspeicher 3.1 abgespeicherten Datensymbole (Bits) in der Reihenfolge der Speicheradressen ausgelesen werden. Jedem Lesezyklus des ersten Datenspeichers 3.1 ist ein Schreibzyklus des zweiten Datenspeichers 3.2 zugeordnet, wobei das ausgelesene Datum in den durch die Zieladresse vorgegebenen Speicherplatz geschrieben wird. Die Sequenz der von dem Prozessor 1 über die Programmierdatenverbindung PV mitgeteilten Zieladressen bestimmt die Ver- bzw. Entschachtelungsvorschrift. The counter Z causes the data symbols (bits) stored in the first data memory 3.1 to be read out in the order of the memory addresses. Each read cycle of the first data memory 3.1 is assigned a write cycle of the second data memory 3.2 , the data read out being written into the memory location specified by the target address. The sequence of the destination addresses communicated by the processor 1 via the programming data connection PV determines the interleaving or deinterleaving rule.
Nachdem die Ver- bzw. Entschachtelung für einen Datenblock durchgeführt wurde, erfolgt ein Auslesen der in dem zweiten Datenspeicher "umsortiert" abgelegten Daten. Das Auslesen der Daten erfolgt wiederum durch ein Zählen der Zieladressen, entweder mittels eines (nicht dargestellten) intern im zweiten Hardware-Schaltkreis 3 vorgesehenen Zählers oder durch den Prozessor 1. After the interleaving or deinterleaving has been carried out for a data block, the data "sorted" in the second data memory is read out. The data is again read out by counting the target addresses, either by means of a counter (not shown) provided internally in the second hardware circuit 3 or by the processor 1 .
Fig. 5 zeigt eine zweite Ausführungsvariante, welche gegenüber der ersten Ausführungsvariante (Fig. 4) den Vorteil aufweist, dass ein ständiger Transfer von Programmierdaten zwischen dem Prozessor 1 und dem zweiten Hardware-Schaltkreis 3 nicht erforderlich ist. FIG. 5 shows a second embodiment variant, which has the advantage over the first embodiment variant ( FIG. 4) that a constant transfer of programming data between the processor 1 and the second hardware circuit 3 is not necessary.
Hier umfasst der Programmierdaten-Verarbeitungsschaltkreis 3.3 den Zähler Z, einen Multiplexer MUXE, einen ersten Adressenspeicher Vad und einen zweiten Adressenspeicher Ead. Vor einem Ver- und/oder Entschachtelungslauf werden von dem Prozessor 1 die Zieladressen (d. h. die Adressen für den zweiten Datenspeicher 3.2) berechnet und in den Adressenspeicher für die Verschachtelungsadressen VAd und den Adressenspeicher für die Entschachtelungsadressen EAd geschrieben. Die Berechnung der Adressen in dem Prozessor 1 muss maximal 1 Mal für jeden Datenblock, jedoch nicht für jede Iterationsschleife, durchgeführt werden. Damit reduziert sich im Vergleich zu der ersten Ausführungsvariante die Programmierdaten-Übertragungsrate mindestens um einen Faktor, welcher der Anzahl der Iterationsschleifen entspricht, die bei der Turbo-Dekodierung pro Datenblock durchlaufen werden (z. B. Faktor 6). Here, the programming data processing circuit 3.3 comprises the counter Z, a multiplexer MUXE, a first address memory Vad and a second address memory Ead. Before an interleaving and / or deinterleaving run, the processor 1 calculates the target addresses (ie the addresses for the second data memory 3.2 ) and writes them in the address memory for the interleaving addresses VAd and the address memory for the deinterleaving addresses EAd. The calculation of the addresses in the processor 1 must be carried out a maximum of 1 time for each data block, but not for each iteration loop. In comparison to the first embodiment variant, the programming data transmission rate is reduced by at least a factor which corresponds to the number of iteration loops that are processed per data block during turbo decoding (e.g. factor 6).
Die Arbeitsweise der in Fig. 5 dargestellten Ausführungsvariante entspricht ansonsten der ersten Ausführungsvariante (siehe Fig. 4), wobei jedoch im Unterschied zu dieser der Multiplexer MUXE bestimmt, ob eine Ver- oder Entschachtelung durchgeführt werden soll. Er wird zu diesem Zweck - z. B. in nicht dargestellter Weise ebenfalls von dem Prozessor 1 - geeignet angesteuert. The method of operation of the embodiment variant shown in FIG. 5 otherwise corresponds to the first embodiment variant (see FIG. 4), but in contrast to this the multiplexer MUXE determines whether interleaving or deinterleaving is to be carried out. For this purpose - e.g. B. in a manner not shown, also appropriately controlled by the processor 1 .
Eine dritte Ausführungsvariante der Erfindung ist in Fig. 6 dargestellt. Diese Ausführungsvariante unterscheidet sich von den beiden vorbeschriebenen Varianten dadurch, dass in dem Prozessor 1 keine Zieladressen berechnet werden, sondern dass die Berechnung der Zieladressen ausschließlich in dem zweiten Hardware-Schaltkreis 3 erfolgt. Dies geschieht in der Weise, dass von dem Prozessor 1 über die Programmierdatenverbindung PV Parameter mitgeteilt werden, welche mittels eines in Hardware ausgeführten Adressengenerators ADG zur Berechnung der Zieladressen (für die Ver- und Entschachtelung) verwendet werden. Der Adressengenerator ADG beeinflußt auch den Zähler Z, was durch eine entsprechende Verbindung in der Zeichnung dargestellt ist. Die Berechnung der Zieladressen in dem Adressengenerator ADG sowie die hierfür verwendeten Parameterdaten werden im folgenden für das Beispiel des UMTS- Standards erläutert. A third embodiment variant of the invention is shown in FIG. 6. This embodiment variant differs from the two variants described above in that no destination addresses are calculated in the processor 1 , but rather that the destination addresses are calculated exclusively in the second hardware circuit 3 . This is done in such a way that the processor 1 communicates PV parameters via the programming data connection, which parameters are used by means of an address generator ADG implemented in hardware to calculate the target addresses (for interleaving and deinterleaving). The address generator ADG also influences the counter Z, which is shown by a corresponding connection in the drawing. The calculation of the target addresses in the address generator ADG and the parameter data used for this are explained below for the example of the UMTS standard.
Beim UMTS-Standard beträgt die Blockgröße 40 ≤ K ≤ 5114 Bits. Die Entschachtelungsvorschrift (Permutation) ist durch eine zweidimensionale Koordinaten-Transformationsmatrix angegeben. 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, die 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 TS 25.212 V3.5.0 (2000-12) angegeben sind, werden nachfolgend beschrieben. With the UMTS standard, the block size is 40 ≤ K ≤ 5114 bits. The deinterleaving rule (permutation) is specified by a two-dimensional coordinate transformation matrix. The nesting 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 described 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 technical specifications TS 25.212 V3.5.0 (2000-12) are described below.
Es werden in Übereinstimmung mit der oben genannten
Spezifikation im folgenden die nachstehenden Definitionen verwendet:
K Anzahl der Bits eines Blocks
R Anzahl der Zeilen der Transformationsmatrix
C Anzahl der Spalten der Transformationsmatrix
p Primzahl
v Primitive Wurzel
〈s(j)〉j ∈ {0,1, . . ., p-2} Basissequenz für die Intra-Zeilen Permutation
qi Minimale Primzahlen
ri Permutierte Primzahlen
〈T(i)〉i ∈ {0,1, . . ., R-1} Inter-Zeilen Permutationsmuster
〈Ui(j)〉j ∈ {0,1, . . ., C-1} Intra-Zeilen Permutationsmuster der i-ten
Zeile
i Zeilenindex der Transformationsmatrix
j Spaltenindex der Transformationsmatrix
k Index der Bitsequenz
The following definitions are used in accordance with the above specification:
K Number of bits in a block
R Number of rows in the transformation matrix
C Number of columns in the transformation matrix
p prime number
v Primitive root
〈S (j)〉 j ∈ {0.1 ,. , ., p-2} Base sequence for the intra-line permutation
q i Minimum prime numbers
r i Permuted prime numbers
〈T (i)〉 i ∈ {0.1 ,. , ., R-1} Inter-line permutation pattern
〈U i (j)〉 j ∈ {0.1 ,. , ., C-1} Intra-lines permutation pattern of the i-th line
i Row index of the transformation matrix
j Column index of the transformation matrix
k bit sequence index
Die dem Turbo-Entschachteler zugeführte Bitsequenz wird allgemein mit x1, x2, x3, . . ., xK bezeichnet und in die Transformationsmatrix geschrieben. Diese ist folgendermaßen definiert: The bit sequence supplied to the turbo deinterleaver is generally denoted by x 1 , x 2 , x 3 ,. , ., x denotes K and is written in the transformation matrix. This is defined as follows:
-
1. Definition der Anzahl R der Zeilen:
R = 5, falls K = 40 bis 159 Bits
R = 10, falls K = 160 bis 200 Bits oder K = 481 bis 530 Bits
R = 20, andernfalls
Die Zeilen werden von oben nach unten beginnend mit 0 und endend mit R - 1 durchgezählt. 1. Definition of the number R of lines:
R = 5 if K = 40 to 159 bits
R = 10 if K = 160 to 200 bits or K = 481 to 530 bits
R = 20, otherwise
The lines are counted from top to bottom starting with 0 and ending with R - 1. -
2. Definition der Anzahl C der Spalten:
Für K = 481 bis 530 Bits: p = 53 und C = p
sonst:- a) Suche der minimalen Primzahl p aus Tabelle 1, so dass K ≤ R × (p + 1)
- b) Bestimme C:
C = p - 1, falls K ≤ R × (p - 1)
C = p, falls R × (p - 1) < K ≤ R × p
C = p + 1, falls R × p < K
For K = 481 to 530 bits: p = 53 and C = p
otherwise:- a) Search for the minimum prime number p from Table 1, so that K ≤ R × (p + 1)
- b) Determine C:
C = p - 1 if K ≤ R × (p - 1)
C = p if R × (p - 1) <K ≤ R × p
C = p + 1 if R × p <K
Die Bitsequenz x1, x2, x3, . . ., xK wird Zeile für Zeile in die
R × C Transformationsmatrix geschrieben. Das erste Bit ist y1
und wird in die 0-te Spalte der 0-ten Zeile geschrieben:
The bit sequence x 1 , x 2 , x 3 ,. , ., x K is written line by line in the R × C transformation matrix. The first bit is y 1 and is written in the 0th column of the 0th row:
Dabei ist yk = xk für k = 1, 2, . . ., K. Falls R × C > K, werden
Dummy-Bits in der Weise hinzugefügt, dass yk = 0 oder 1 für
k = K + 1, K + 2, . . ., R × C. Diese Dummy-Bits werden später beim
Auslesen der R × C Transformationsmatrix nach Ausführung der
Intra-Zeilen und Inter-Zeilen Permutationen wieder entfernt.
Tabelle 1
Here y k = x k for k = 1, 2,. , ., K. If R × C> K, dummy bits are added such that y k = 0 or 1 for k = K + 1, K + 2,. , ., R × C. These dummy bits are later removed when the R × C transformation matrix is read out after execution of the intra-line and inter-line permutations. Table 1
Nach dem "Füllen" der R × C Transformationsmatrix werden die
Intra-Zeilen und Inter-Zeilen Permutationen durch Ausführen
des folgenden Algorithmus durchgeführt:
- 1. Wähle die rechts neben der Primzahl p angegebene primitive Wurzel v aus der Tabelle 1.
- 2. Konstruiere die Basissequenz 〈s(j)〉j ∈ {0,1, . . ., p-2} für die
Intra-Zeilen Permutation gemäß:
s(j) = (v × s(j - 1))mod p, j = 1, 2, . . ., (p - 2), und s (0) = 1. - 3. Bestimme die erste Primzahl der Sequenz 〈qi〉i ∈ {0,1, . . ., R-1} zu q0 = 1, und bestimme die Primzahlen qi in der Sequenz 〈pi〉i ∈ {0,1, . . ., R-1} derart, dass sie "letzte" Primzahlen sind, d. h. dass g. g. T. (qi, p - 1) = 1, qi > 6, und qi > q(i-1) für jedes i = 1, 2, . . ., R - 1. Mit g. g. T. wird der größte gemeinsame Teiler bezeichnet.
- 4. Permutiere die Sequenz 〈qi〉i ∈ {0,1, . . ., R-1}, um die Sequenz
〈ri〉i ∈ {0,1, . . ., R-1} zu erzeugen, derart, dass
rT(i) = qi, i = 0, 1, . . ., R - 1,
wobei 〈T(i)〉i ∈ {0,1, . . ., R-1} dasjenige von vier Inter-Zeilen Permutationsmustern ist, welches in Abhängigkeit von der Blockgröße K gemäß Tabelle 2 heranzuziehen ist.
- 1. Führe die i-te (i = 0, 1, . . ., R - 1) Intra-Zeilen
Permutation folgendermaßen durch:
Falls (C = p), dann
Ui(j) = s((j × ri)mod(p - 1)), j = 0, 1, . . ., (p - 2), und Ui(p - 1) = 0, wobei Ui(j) die ursprüngliche Bit-Position des j-ten permutierten Bits der i-ten Zeile ist.
Falls (C = p + 1), dann
Ui(j) = s((j × ri)mod(p - 1)), j = 0, 1, . . ., (p - 2), Ui (p - 1) = 0 und Ui(p) = p, wobei Ui(j) die ursprüngliche Bit-Position des j-ten permutierten Bits der i-ten Zeile ist und, sofern K = R × C, UR-1(p) mit UR-1(0) vertauscht wird.
Falls (C = p - 1), dann
Ui(j) = s((j × ri)mod(p - 1)) - 1, j = 0, 1, . . ., (p - 2), wobei Ui(j) die ursprüngliche Bit-Position des j-ten permutierten Bits der i-ten Zeile ist. - 2. Führe die Inter-Zeilen Permutation for die Transformationsmatrix mit dem Muster 〈T(i)〉i ∈ {0,1, . . ., R-1} durch, wobei T(i) die ursprüngliche Zeilenposition der i-ten permutierten Zeile ist.
- 1.Choose the primitive root v given to the right of the prime number p from table 1.
- 2. Construct the base sequence 〈s (j)〉 j ∈ {0,1 ,. , ., p-2} for the intra-line permutation according to:
s (j) = (v × s (j - 1)) mod p, j = 1, 2,. , ., (p - 2), and s (0) = 1. - 3. Determine the first prime number of the sequence 〈q i 〉 i ∈ {0,1 ,. , ., R-1} to q 0 = 1, and determine the prime numbers q i in the sequence 〈p i 〉 i ∈ {0,1 ,. , ., R-1} such that they are "last" prime numbers, ie that gg T. (q i , p - 1) = 1, q i > 6, and q i > q (i-1) for each i = 1, 2,. , ., R - 1. The largest common divisor is denoted by gg T.
- 4. Permute the sequence 〈q i 〉 i ∈ {0,1 ,. , ., R-1} to the sequence 〈r i 〉 i ∈ {0,1 ,. , ., R-1} , such that r T (i) = q i , i = 0, 1,. , ., R - 1,
where 〈T (i)〉 i ∈ {0.1 ,. , ., R-1} is that of four inter-line permutation patterns which is to be used as a function of the block size K according to Table 2.
- 1.Carry out the i-th (i = 0, 1,..., R - 1) intra-line permutation as follows:
If (C = p) then
U i (j) = s ((j × r i ) mod (p - 1)), j = 0, 1,. , ., (p - 2), and U i (p - 1) = 0, where U i (j) is the original bit position of the j-th permuted bit of the i-th row.
If (C = p + 1) then
U i (j) = s ((j × r i ) mod (p - 1)), j = 0, 1,. , ., (p - 2), U i (p - 1) = 0 and U i (p) = p, where U i (j) is the original bit position of the j-th permuted bit of the i-th row and , provided that K = R × C, U R-1 (p) is exchanged with U R-1 (0).
If (C = p - 1) then
U i (j) = s ((j × r i ) mod (p - 1)) - 1, j = 0, 1,. , ., (p - 2), where U i (j) is the original bit position of the j-th permuted bit of the i-th row. - 2. Perform the inter-line permutation for the transformation matrix with the pattern 〈T (i)〉 i ∈ {0,1 ,. , ., R-1} , where T (i) is the original row position of the i-th permuted row.
Nach Durchführung der Intra-Zeilen und Inter-Zeilen
Permutationen werden die Bits der permutierten Transformationsmatrix
mit y'k bezeichnet:
After the intra-line and inter-line permutations have been carried out, the bits of the permuted transformation matrix are denoted by y ' k :
Die Ausgabesequenz des Entschachtelers ist die Spalte für Spalte aus der Inter-Zeilen- und Intra-Zeilen-permutierten R × C Transformationsmatrix ausgelesene Bitsequenz, wobei mit dem Bit y'1 in Zeile 0 der Spalte 0 begonnen und mit dem Bit Y'C × R in der Zeile R-1 der Spalte C-1 aufgehört wird. The output sequence of the deinterleaver is the bit sequence read out column by column from the inter-row and intra-row permuted R × C transformation matrix, starting with bit y ' 1 in row 0 of column 0 and with bit Y' C × R in row R-1 of column C-1 is stopped.
Die Ausgabesequenz wird durch Streichen der Dummy-Bits, welche der Eingabesequenz vor den Intra-Zeilen und Inter-Zeilen Permutationen hinzugefügt wurden, beschnitten, d. h. diejenigen Bits y'k, die den Bits yk mit k > K entsprechen, werden aus der Ausgabesequenz entfernt. The output sequence is trimmed by deleting the dummy bits which were added to the input sequence before the intra-line and inter-line permutations, ie those bits y ' k which correspond to the bits y k with k> K are removed from the output sequence away.
Die von dem Entschachteler ausgegebenen Bits werden mit x'1, x'2, . . ., x'K bezeichnet, wobei x'1 dem Bit y'k mit dem kleinsten Index k nach dem Beschneiden entspricht, x'2 dem Bit y'k mit dem nächst kleinsten Index k nach dem Beschneiden entspricht, und so weiter. Die Anzahl der von dem Entschachteler ausgegebenen Bits ist K und die Anzahl der beim Beschneiden entfernten Bits ist R × C - K. The bits output by the deinterleaver are marked with x ' 1 , x' 2 ,. , ., x ' K denotes, where x' 1 corresponds to the bit y ' k with the smallest index k after trimming, x' 2 corresponds to the bit y ' k with the next smallest index k after trimming, and so on. The number of bits output by the deinterleaver is K and the number of bits removed during trimming is R × C - K.
Beim dritten Ausführungsbeispiel, dargestellt in Fig. 6,
programmiert der Prozessor 1 den zweiten Hardware-Schaltkreis 3
z. B. mit folgenden Parametern:
K, R, C, p, R × C - K
In the third embodiment, shown in Fig. 6, the processor 1 programs the second hardware circuit 3 z. B. with the following parameters:
K, R, C, p, R × C - K
Ferner werden die folgenden Arrays vom Prozessor 1 oder einer
weiteren dedizierten Hardware-Schaltung dem
Hardware-Schaltkreis 3 zur Verfügung gestellt:
Für die Verschachtelung: S, T, Q, PRU_TOT
Für die Entschachtelung: S-1, T-1, Q, PRU, PRU_TOT,
wobei folgende Abkürzungen benutzt werden:
S = 〈s(j)〉j ∈ {0,1, . . ., p-2}
T = 〈T(i)〉i ∈ {0,1, . . ., R-1}
Q = 〈qi〉i ∈ {0,1, . . ., R-1}
PRU = 〈pruj〉j ∈ {0,1, . . ., C-1}
PRU_TOT = 〈pru_totj〉j ∈ {0,1, . . ., C-1}
Furthermore, the following arrays are made available by the processor 1 or another dedicated hardware circuit to the hardware circuit 3 :
For nesting: S, T, Q, PRU_TOT
For deinterleaving: S -1 , T -1 , Q, PRU, PRU_TOT,
the following abbreviations are used:
S = 〈s (j)〉 j ∈ {0.1 ,. , ., p-2}
T = 〈T (i)〉 i ∈ {0.1 ,. , ., R-1}
Q = 〈q i 〉 i ∈ {0.1 ,. , ., R-1}
PRU = 〈pru j 〉 j ∈ {0.1 ,. , ., C-1}
PRU_TOT = 〈pru_tot j 〉 j ∈ {0.1 ,. , ., C-1}
Das Array PRU gibt die Spaltenadressen der R × C - K zu entfernenden verschachtelten Bits an. Der Inhalt eines Elements pruj dieses Arrays wird auf 1 gesetzt, wenn die Array-Adresse eine gültige Spalten-Adresse eines zu entfernenden, verschachtelten Bits ist. Um dieses Array zu erzeugen, muss der Prozessor 1 oder eine weitere dedizierte Hardware-Schaltung den vorstehend erläuterten Verschachtelungs-Algorithmus ausführen, allerdings nur für die verschachtelte 0-te Zeile (bzw. für die letzte nicht verschachtelte Zeile). Alle zu entfernenden verschachtelten Bits befinden sich in der 0-ten Zeile. The array PRU specifies the column addresses of the R × C-K nested bits to be removed. The content of an element pru j of this array is set to 1 if the array address is a valid column address of a nested bit to be removed. In order to generate this array, the processor 1 or another dedicated hardware circuit must execute the interleaving algorithm explained above, but only for the interleaved 0th line (or for the last non-interleaved line). All nested bits to be removed are on the 0th line.
Das Array PRU_TOT enthält die akkumulierten Werte des Arrays
PRU, d. h.
The array PRU_TOT contains the accumulated values of the array PRU, ie
Sämtliche Arrays müssen im Prozessor 1 oder in einer weiteren dedizierten Hardware-Schaltung nur bei einer Änderung der Datenblocklänge - d. h. maximal lediglich einmal pro Datenblock - neu berechnet werden. All arrays need to be recalculated in processor 1 or in another dedicated hardware circuit only when the data block length changes - that is, only once per data block.
Im folgenden wird die Durchführung der Turbo-Verschachtelung anhand Fig. 7 beschrieben. The implementation of turbo interleaving is described below with reference to FIG. 7.
Die (eindimensionalen) Adressen n des ersten Datenspeichers 3.1 werden Zeile für Zeile auf die zweidimensionalen Koordinaten (i, j') der Transformationsmatrix abgebildet. The (one-dimensional) addresses n of the first data memory 3.1 are mapped line by line to the two-dimensional coordinates (i, j ') of the transformation matrix.
Der Zeilenparameter i wählt eine der Primzahlen - nämlich qi - aus dem Array Q aus. Der vorläufige Spaltenparameter j' wird entsprechend der vorstehend erläuterten Ausnahmen für C = p, C = p + 1 und C = p - 1 auf den Wert j abgebildet. The row parameter i selects one of the prime numbers - namely q i - from the array Q. The provisional column parameter j 'is mapped to the value j in accordance with the above-mentioned exceptions for C = p, C = p + 1 and C = p - 1.
Mit qi und j wird der Ausdruck (j × qi)mod(p - 1) berechnet, der als Adresse zur Anwahl von Ui(j) = s((j × qi)mod(p - 1)) des Arrays S dient. Ui(j) ist der Spaltenindex des verschachtelten Bits. With q i and j the expression (j × q i ) mod (p - 1) is calculated, which as the address for the selection of U i (j) = s ((j × q i ) mod (p - 1)) des Arrays S serves. U i (j) is the column index of the nested bit.
Die Zeilennummer des verschachtelten Bits wird aus den Inhalten T(i) des Arrays T bestimmt. The line number of the nested bit is derived from the Contents T (i) of the array T are determined.
Die (eindimensionale) Adresse des verschachtelten Bits in dem Datenspeicher 3.2 wird durch die folgende Beziehung m' = (Ui(j) - 1) × R + T(i) berechnet. Ausnahmen für C = p, C = p + 1 und C = p - 1 werden wie bereits erläutert als 0 oder 1 berücksichtigt, siehe Fig. 7. The (one-dimensional) address of the interleaved bit in the data memory 3.2 is calculated by the following relationship m '= (U i (j) -1) × R + T (i). Exceptions for C = p, C = p + 1 and C = p - 1 are considered as 0 or 1, as already explained, see Fig. 7.
Die Adresse m' muss um die zu entfernenden Bits ("pruned bits") korrigiert werden. Zu diesem Zweck wird für jeden Spaltenindex Ui(j) die Anzahl der zu entfernenden Bits der Zeile 0 unter Heranziehung von PRU_TOT berechnet. Dieser Wert pru_no wird von der Adresse m' subtrahiert, um die Endadresse m der verschachtelten Bits im Datenspeicher 3.2 zu bestimmen. The address m 'must be corrected for the bits to be removed ("pruned bits"). For this purpose, the number of bits of row 0 to be removed is calculated for each column index U i (j) using PRU_TOT. This value pru_no is subtracted from the address m 'in order to determine the end address m of the nested bits in the data memory 3.2 .
Der Turbo-Entschachtelungsvorgang ist in Fig. 8 veranschaulicht. The turbo deinterleaving process is illustrated in FIG. 8.
Zunächst wird der zuvor spaltenweise über DV1 aufgefüllte erste Datenspeicher 3.1 ausgelesen und gleichzeitig die während der Verschachtelung entfernten R × C - K Dummy-Bits wieder eingefügt. Für jede Koordinate (i, j') der Transformationsmatrix muss anhand pruj' überprüft werden, ob die Koordinate der Transformationsmatrix einem Bit entspricht, das zuvor bei der Verschachtelungsprozedur entfernt wurde. Ein entsprechendes Datenbit wird mit dem Wert 0 erzeugt und in der 0-ten Zeile hinzugefügt. Die Adressen der nicht entfernten Bits im ersten Datenspeicher 3.1 müssen mit der Anzahl pru_totj' der entfernten Bits, deren Spaltenindex kleiner als der aktuelle Zeilenindex j' ist, korrigiert werden. First, the first data memory 3.1 , which was previously filled in columns via DV1, is read out and, at the same time, the R × C - K dummy bits removed during the interleaving are inserted again. For each coordinate (i, j ') of the transformation matrix, pru j' must be used to check whether the coordinate of the transformation matrix corresponds to a bit that was previously removed during the interleaving procedure. A corresponding data bit is generated with the value 0 and added in the 0th line. The addresses of the non-removed bits in the first data memory 3.1 must be corrected with the number pru_tot j 'of the removed bits, the column index of which is smaller than the current row index j'.
Der erste Datenspeicher 3.1 wird ausgelesen. Wichtig ist, dass dies Zeile für Zeile nach Hinzufügen der Dummy-Bits erfolgt, da nur in diesem Fall die durch die inverse innere Intra-Zeilen-Permutation bestimmten Arrays row_di und row-1_di nur einmal pro Zeile berechnet werden müssen. Um genau eine Zeile in aufsteigender Spalten-Reihenfolge aus dem Datenspeicher 3.1 auszulesen (i = Zeilenindex = fest; j' = Spaltenindex = 0, . . ., C - 1) muss die Information aus den Arrays PRU, PRU_TOT (Wiedereinfügen der Dummy-Bits) in einer Koordinatentransformation auf die Koordinaten des Datenspeichers 3.1 ohne Dummy- Bits (α, β) berücksichtigt werden; dabei werden mit (i, j') die Koordinaten der Transformationmsmatrix nach dem Wiedereinfügen der Dummy-Bits und mit (α, β) die Koordinaten der Transformationmsmatrix ohne Dummy-Bits bezeichnet. The first data store 3.1 is read out. It is important that this is done line by line after adding the dummy bits, since only in this case the arrays row_d i and row -1 _d i determined by the inverse inner intra-line permutation need only be calculated once per line. In order to read exactly one row in ascending column order from data memory 3.1 (i = row index = fixed; j '= column index = 0,..., C - 1), the information from the arrays PRU, PRU_TOT (reinserting the dummy Bits) are taken into account in a coordinate transformation to the coordinates of the data memory 3.1 without dummy bits (α, β); (i, j ') denote the coordinates of the transformation matrix after the dummy bits have been reinserted and (α, β) the coordinates of the transformation matrix without dummy bits.
Die Ausnahmen für C = p, C = p + 1 und C = p - 1 werden durch ein Abbilden der Koordinate j' auf die Koordinaten j und g berücksichtigt. The exceptions for C = p, C = p + 1 and C = p - 1 are indicated by a Mapping the coordinate j 'to the coordinates j and g considered.
Basierend auf der Zeilenkoordinate i der Transformationsmatrix einschließlich aller wieder hinzugefügter Bits wird die Inter-Zeilen Permutation entsprechend dem Array T-1 rückgängig gemacht. Die Zeilenkoordinate der Inter-Zeilen-permutierten Daten ist deshalb di = T-1 (i). Based on the row coordinate i of the transformation matrix, including all bits added again, the inter-row permutation is undone in accordance with the array T -1 . The line coordinate of the inter-line permuted data is therefore d i = T -1 (i).
Basierend auf der so berechneten entschachtelten Zeilenkoordinate wird die entsprechende Primzahl qdi aus dem Array Q ausgelesen. Based on the deinterleaved row coordinate calculated in this way, the corresponding prime number q di is read from the array Q.
Nun wird der folgende Ausdruck nach dj gelöst:
j = s ((dj × qdi)(mod(p-1)), wobei j der Spaltenindex der
verschachtelten Transformationsmatrix einschließlich aller
wieder hinzugefügter Bits ist. Mit dj wird der Spaltenindex der
entschachtelten Transformationsmatrix bezeichnet.
Now the following expression is solved after d j :
j = s ((d j × q di ) (mod (p-1)), where j is the column index of the nested transformation matrix including all bits added again. With d j is the column index of the deinterleaved transformation matrix.
Hierfür wird zunächst die äußere Intra-Zeilen Verschachtelung rückgängig gemacht, indem s-1(j) = (dj × qdi)(mod(p - 1)) berechnet wird, wobei das Array S-1 durch j adressiert wird. For this purpose, the outer intra-line nesting is first undone by calculating s -1 (j) = (d j × q di ) (mod (p - 1)), the array S -1 being addressed by j.
Um s-1(j) = (dj × qdi)(mod(p - 1)) für dj zu lösen, ist es erforderlich, das Array row_di = (h × qdi)(mod(p - 1)) und das inverse Array row-1_di aufzubauen, wobei h = 0,1, . . ., p - 2. To solve s -1 (j) = (d j × q di ) (mod (p - 1)) for d j , the array row_d i = (h × q di ) (mod (p - 1 )) and the inverse array row -1 _d i , where h = 0.1,. , ., p - 2.
Der berechnete Wert s-1(j) wird als eine Adresse für das Array row-1 di benutzt, das den Spaltenindex dj des entschachtelten Bits enthält. The calculated value s -1 (j) is used as an address for the row -1 d i array, which contains the column index d j of the deinterleaved bit.
Da der Inhalt des zweiten Datenspeichers 3.2 zeilenweise in Bezug auf die entschachtelte Transformationsmatrix ausgerichtet ist, lautet die Adresse m des entschachtelten Bits im zweiten Datenspeicher 3.2 somit m = (di - 1) × C + dj. Since the content of the second data memory 3.2 is aligned line by line with respect to the deinterleaved transformation matrix, the address m of the deinterleaved bit in the second data memory 3.2 is therefore m = (d i − 1) × C + d j .
Es wird darauf hingewiesen, dass in Hinblick auf den Ablauf der Turbo-Ver- und Entschachtelungsprozeduren keine vollständige Analogie besteht: Bei der Verschachtelung müssen die über die erste Datenverbindung DV1 vom ersten Hardware- Schaltkreis übermittelten Daten nicht notwendigerweise abgespeichert werden, sondern es ist möglich, diese Daten durch eine entsprechende zeitsynchrone Adressenansteuerung des zweiten Datenspeichers 3.2 gemäß der vorhergehenden Beschreibung ohne Zwischenspeicherung, d. h. "on-the-fly", zu verschachteln. Dadurch wird es möglich, den Eingabespeicher 3.1 als weiteren Ausgabespeicher einzusetzen. Dies wird anhand Fig. 9 erläutert. Vergleichbare Bau- oder Funktionselemente wie in den vorangegangenen Figuren sind mit denselben Bezugszeichen gekennzeichnet. Der erste Datenspeicher 3.1 kann durch einen entsprechend angeordneten ersten Wechselschalter WS1 sowie eine fünfte Datenverbindung DV5 überbrückt werden. Dadurch kann der erste Datenspeicher 3.1 dem zweiten Datenspeicher 3.2 durch Öffnen eines Schalters SW parallel geschaltet werden und wechselweise - während jedes zweiten Verschachtelungsvorgangs (jeder zweiten Iteration) - dessen Aufgabe übernehmen. Die zweite Datenverbindung DV2 muss in diesem Fall über einen zweiten Wechselschalter WS2 und eine sechste Datenverbindung DV6 auch an den Datenausgang des ersten Datenspeichers 3.1 anlegbar sein. Mit VR ist ein virtuelles RAM zur Zwischenspeicherung der einlaufenden Daten bezeichnet. Der Vorteil dieses (nur beim Verschachtelungsvorgang möglichen) Abarbeitungsablaufs besteht darin, dass das Verschachteln zeitgleich mit dem Dekodieren in den Faltungsdekodierern DEC1, DEC2 erfolgen kann, da einer der Datenspeicher 3.1 bzw. 3.2 als Eingabespeicher für einen Faltungsdekodierer DEC1, DEC2 dient, während der andere Datenspeicher 3.2 bzw. 3.1 zeitgleich in der bereits beschriebenen Weise als Speicher für die verschachtelten Daten dient. It is pointed out that there is no complete analogy with regard to the course of the turbo interleaving and deinterleaving procedures: With the interleaving, the data transmitted by the first hardware circuit via the first data connection DV1 does not necessarily have to be stored, but it is possible to to nest these data by a corresponding time-synchronous address control of the second data store 3.2 according to the preceding description without intermediate storage, ie "on-the-fly". This makes it possible to use the input memory 3.1 as a further output memory. This is explained with reference to FIG. 9. Components or functional elements comparable to those in the previous figures are identified by the same reference numerals. The first data memory 3.1 can be bridged by a correspondingly arranged first changeover switch WS1 and a fifth data connection DV5. As a result, the first data store 3.1 can be connected in parallel to the second data store 3.2 by opening a switch SW and can alternately take over its task - during every second nesting process (every second iteration). In this case, the second data connection DV2 must also be able to be connected to the data output of the first data memory 3.1 via a second changeover switch WS2 and a sixth data connection DV6. VR is a virtual RAM for the temporary storage of incoming data. The advantage of this processing sequence (which is only possible in the interleaving process) is that the interleaving can take place simultaneously with the decoding in the convolution decoders DEC1, DEC2, since one of the data memories 3.1 and 3.2 serves as input memory for a convolution decoder DEC1, DEC2, while the other Data storage 3.2 or 3.1 simultaneously serves as storage for the nested data in the manner already described.
Bei der Turbo-Entschachtelung müssen demgegenüber sämtliche zu entschachtelnden Daten im ersten Datenspeicher 3.1 gespeichert sein. Erst wenn diese vollständig im ersten Datenspeicher 3.1 abgelegt sind, kann der Entschachtelungsvorgang mit dem zeilenweisen Auslesen dieses Speichers 3.1 gestartet werden. Für die in Fig. 9 dargestellte Ausführungsvariante bedeutet dies, dass der erste Wechselschalter WS1 ausgangsseitig den ersten Datenspeicher 3.1 anwählt, der zweite Wechselschalter WS2 eingangsseitig den zweiten Datenspeicher 3.2 anwählt und der Schalter SW geschlossen ist, siehe auch die entsprechende Darstellung in Fig. 5. With turbo deinterleaving, on the other hand, all the data to be deinterleaved must be stored in the first data memory 3.1 . Only when these are completely stored in the first data memory 3.1 can the deinterleaving process be started by reading out this memory 3.1 line by line. For the embodiment variant shown in FIG. 9, this means that the first changeover switch WS1 selects the first data memory 3.1 on the output side, the second changeover switch WS2 selects the second data memory 3.2 on the input side and the switch SW is closed, see also the corresponding illustration in FIG. 5.
Die in Fig. 9 dargestellte Schaltbarkeit des ersten Datenspeichers 3.1 in bezug auf seine Funktion (Eingabedatenspeicher/Ausgabedatenspeicher) ist ebenfalls in den anderen Ausführungsvarianten implementierbar. The switchability of the first data memory 3.1 shown in FIG. 9 with regard to its function (input data memory / output data memory) can also be implemented in the other embodiment variants.
Claims (11)
dass es sich bei der Ver- und/oder Entschachtelungsinformation um Adressen eines im Hardware-Schaltkreis angeordneten Datenspeichers (3.2) handelt, und
dass die Schritte (a) bis (c) für jede im Prozessor (1) berechnete Adresse sequentiell durchgeführt werden. 2. The method according to claim 1, characterized in that
that the interleaving and / or deinterleaving information is the address of a data memory ( 3.2 ) arranged in the hardware circuit, and
that steps (a) to (c) are carried out sequentially for each address calculated in processor ( 1 ).
dass es sich bei der Ver- und/oder Entschachtelungsinformation um Adressen eines im Hardware-Schaltkreis angeordneten Datenspeichers (3.2) handelt,
dass in Schritt (a) mehrere, insbesondere sämtliche der für die Ver- oder Entschachtelung eines Datenblockes benötigten Adressen berechnet werden,
dass die in Schritt (a) berechneten mehreren Adressen in Schritt (b) in einem im Hardware-Schaltkreis (3) angeordneten Adressenspeicher (EAd, VAd) abgelegt werden, und
dass nachfolgend Schritt (c) für diese mehreren Adressen ohne Beteiligung des Prozessors (1) durchgeführt wird. 3. The method according to claim 1, characterized in
that the interleaving and / or deinterleaving information are addresses of a data memory ( 3.2 ) arranged in the hardware circuit,
that in step (a) several, in particular all, the addresses required for interleaving or deinterleaving a data block are calculated,
that the multiple addresses calculated in step (a) are stored in step (b) in an address memory (EAd, VAd) arranged in the hardware circuit ( 3 ), and
that step (c) is subsequently carried out for these multiple addresses without the involvement of the processor ( 1 ).
dass es sich bei der Ver- und/oder Entschachtelungsinformation um Parameter handelt, welche für die auszuführende Ver- und/oder Entschachtelungsvorschrift charakteristisch sind, und
dass vor Schritt (c) eine Berechnung von Adressen für die Ver- und/oder Entschachtelung in Abhängigkeit von den Parametern im Hardware-Schaltkreis (3) durchgeführt wird. 4. The method according to claim 1, characterized in
that the interleaving and / or deinterleaving information is parameters which are characteristic of the interleaving and / or deinterleaving specification to be carried out, and
that before step (c) a calculation of addresses for the interleaving and / or deinterleaving is carried out depending on the parameters in the hardware circuit ( 3 ).
die Anzahl (K) der zu ver- bzw. entschachtelnden Daten; und/oder
die Anzahl der Spalten (C) und Zeilen (R) einer Matrix- Darstellung der Verschachtelungsvorschrift; und/oder
die Primzahl (p) zur Auswahl der Spalten- und Zeilenanzahl; und/oder
die Anzahl der Dummy-Bits, die vor der Entschachtelung angefügt und nach der Entschachtelung abgeschnitten werden; und/oder
den Vektor (Q) der minimalen Primzahlen, die für die Berechnung der Inter-Zeilen-Permutation benötigt werden. 6. The method according to claim 4 and 5, characterized in that the parameters supplied by the processor ( 1 ) include:
the number (K) of the data to be interleaved or deinterleaved; and or
the number of columns (C) and rows (R) of a matrix representation of the nesting rule; and or
the prime number (p) to select the number of columns and rows; and or
the number of dummy bits added before deinterleaving and truncated after deinterleaving; and or
the vector (Q) of the minimum prime numbers required for the calculation of the inter-line permutation.
einem Prozessor (1) zur Berechnung von Ver- und/oder Entschachtelungsinformation, und
einem Hardware-Schaltkreis (3), welcher umfasst:
einen ersten Datenspeicher (3.1) zur Speicherung von zu ver- und/oder entschachtelnden Daten,
einen zweiten Datenspeicher (3.2) zur Speicherung der ver- und/oder entschachtelten Daten, und
wobei die im ersten Datenspeicher abgelegten Daten in Abhängigkeit von der Ver- und/oder Entschachtelungsinformation auf Speicherplätze in dem zweiten Datenspeicher (3.2) gespeichert werden. 7. Device for performing the interleaving and / or deinterleaving procedure in a turbo decoding, with
a processor ( 1 ) for calculating interleaving and / or deinterleaving information, and
a hardware circuit ( 3 ) which comprises:
a first data memory ( 3.1 ) for storing data to be interleaved and / or deinterleaved,
a second data memory ( 3.2 ) for storing the nested and / or deinterleaved data, and
the data stored in the first data memory depending on the interleaving and / or deinterleaving information being stored in memory locations in the second data memory ( 3.2 ).
dass es sich bei der Ver- und/oder Entschachtelungsinformation um Parameter handelt, welche für die auszuführende Ver- und/oder Entschachtelungsvorschrift charakteristisch sind, und
dass der Hardware-Schaltkreis (3)
wenigstens einen Parameterspeicher, in welchem die vom Prozessor berechneten Parameter abgelegt werden, und
einen Hardware-Adressengeneratorschaltkreis (ADG), welcher aus den Parametern Adressen für die Ver- bzw. Entschachtelung berechnet,
umfasst. 10. The device according to claim 7, characterized in
that the interleaving and / or deinterleaving information is parameters which are characteristic of the interleaving and / or deinterleaving specification to be carried out, and
that the hardware circuit ( 3 )
at least one parameter memory in which the parameters calculated by the processor are stored, and
a hardware address generator circuit (ADG) which calculates addresses for interleaving or deinterleaving from the parameters,
includes.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE2001138566 DE10138566A1 (en) | 2001-08-06 | 2001-08-06 | Method and device for performing interleaving and deinterleaving in turbo decoding |
PCT/DE2002/002357 WO2003017498A2 (en) | 2001-08-06 | 2002-06-27 | Method and device for interlacing and deinterlacing in a turbo decoding process |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE2001138566 DE10138566A1 (en) | 2001-08-06 | 2001-08-06 | Method and device for performing interleaving and deinterleaving in turbo decoding |
Publications (1)
Publication Number | Publication Date |
---|---|
DE10138566A1 true DE10138566A1 (en) | 2003-03-06 |
Family
ID=7694561
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE2001138566 Ceased DE10138566A1 (en) | 2001-08-06 | 2001-08-06 | Method and device for performing interleaving and deinterleaving in turbo decoding |
Country Status (2)
Country | Link |
---|---|
DE (1) | DE10138566A1 (en) |
WO (1) | WO2003017498A2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10306302A1 (en) * | 2003-02-14 | 2004-08-26 | Infineon Technologies Ag | Calculating interleaving or de-interleaving addresses for symbol memory in mobile communication system, by using corrected and transformed coordinate pair from square matrix |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5659580A (en) * | 1994-11-29 | 1997-08-19 | Lucent Technologies Inc. | Data interleaver for use with mobile communication systems and having a contiguous counter and an address twister |
EP1160988A1 (en) * | 1999-02-26 | 2001-12-05 | Fujitsu Limited | Turbo decoder and interleave / de-interleave apparatus |
-
2001
- 2001-08-06 DE DE2001138566 patent/DE10138566A1/en not_active Ceased
-
2002
- 2002-06-27 WO PCT/DE2002/002357 patent/WO2003017498A2/en not_active Application Discontinuation
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5659580A (en) * | 1994-11-29 | 1997-08-19 | Lucent Technologies Inc. | Data interleaver for use with mobile communication systems and having a contiguous counter and an address twister |
EP1160988A1 (en) * | 1999-02-26 | 2001-12-05 | Fujitsu Limited | Turbo decoder and interleave / de-interleave apparatus |
Non-Patent Citations (2)
Title |
---|
3GPP Spezifikation: TS 25.212 V4.1.0: "Multiplex- ing and channel coding (FDD)", Juni 2001, S. 15-20[rech. am 07.01.2002] im Internet: <ULR:www.3gpp. org> * |
Shibutani A. et al: "Complexity Reduction of TurboDecoding", IN: IEEE Vehicular Technology Conferen-ce, 1999, Vol. 3, S. 1570-1574 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10306302A1 (en) * | 2003-02-14 | 2004-08-26 | Infineon Technologies Ag | Calculating interleaving or de-interleaving addresses for symbol memory in mobile communication system, by using corrected and transformed coordinate pair from square matrix |
Also Published As
Publication number | Publication date |
---|---|
WO2003017498A2 (en) | 2003-02-27 |
WO2003017498A3 (en) | 2003-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE60032441T2 (en) | DEVICE AND METHOD FOR TURBO CHANNELING | |
DE69513720T2 (en) | Coding device for punctured convolutional code | |
DE3910739C2 (en) | ||
DE69936683T2 (en) | Nesting using increments based on the Golden Ratio | |
DE10206727A1 (en) | Combined encryption and decryption circuit and turbo-decoder with such circuit | |
DE112004002008B4 (en) | Unified Viterbi / Turbo decoder for mobile telecommunication systems | |
DE69905987T2 (en) | Method and device for coding and signal transmission using a sub-code of a product code | |
DE69837077T2 (en) | Interleaver for turbo coder | |
DE112010003449T9 (en) | Iterative decoding of signals received over a noisy channel using forward and backward recursions with startup initialization | |
DE10196688B3 (en) | A decoder for trellis-based channel coding | |
DE60009531T2 (en) | Parallel turbo coder implementation | |
DE60111974T2 (en) | Abort criterion for a turbo decoder | |
WO2002030073A2 (en) | Segmental deinterlacing | |
DE69908629T2 (en) | HYBRID NESTLER FOR TURBO ENCODERS | |
DE10010238C2 (en) | Method for storing path metrics in a Viterbi decoder | |
DE19934646C2 (en) | Method and device for iterative decoding of chained codes | |
EP1269633A2 (en) | Optimized turbo decoder | |
DE10138566A1 (en) | Method and device for performing interleaving and deinterleaving in turbo decoding | |
DE60118716T2 (en) | Log-MAP decoding | |
DE60032895T2 (en) | TURBO CODE TERMINATION | |
EP1593201B1 (en) | Method and circuit for generating addresses of pseudo-random interleavers or deinterleavers | |
DE19520987A1 (en) | Terminating trellis in recursive systematic convolutional code for data security applications | |
DE102013109494A1 (en) | Method and apparatus for collision resolution in a turbo decoder memory | |
DE60224862T2 (en) | Assembly and de-nesting apparatus and method | |
DE19725275A1 (en) | Block and convolutional codes decoding method for digital communication |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8131 | Rejection |