DE102008029623A1 - Interleaver e.g. intra-row almost rectangular interleaver, for use in e.g. turbo encoder for scrambling information word, has interleaver stage for reading columns, and for arranging digits of row to one another without gap - Google Patents

Interleaver e.g. intra-row almost rectangular interleaver, for use in e.g. turbo encoder for scrambling information word, has interleaver stage for reading columns, and for arranging digits of row to one another without gap Download PDF

Info

Publication number
DE102008029623A1
DE102008029623A1 DE200810029623 DE102008029623A DE102008029623A1 DE 102008029623 A1 DE102008029623 A1 DE 102008029623A1 DE 200810029623 DE200810029623 DE 200810029623 DE 102008029623 A DE102008029623 A DE 102008029623A DE 102008029623 A1 DE102008029623 A1 DE 102008029623A1
Authority
DE
Germany
Prior art keywords
line
index
interleaver
column
columns
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
Application number
DE200810029623
Other languages
German (de)
Inventor
Marco Breiling
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
Original Assignee
Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV filed Critical Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
Priority to DE200810029623 priority Critical patent/DE102008029623A1/en
Priority to EP09008223.1A priority patent/EP2139120B1/en
Publication of DE102008029623A1 publication Critical patent/DE102008029623A1/en
Ceased legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/27Coding, 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/2771Internal interleaver for turbo codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/27Coding, 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/2703Coding, 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/271Row-column interleaver with permutations, e.g. block interleaving with inter-row, inter-column, intra-row or intra-column permutations
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/27Coding, 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/276Interleaving address generation
    • H03M13/2764Circuits therefore
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/29Coding, 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/2957Turbo codes and decoding

Abstract

The interleaver has an interleaver stage for line-by-line arrangement of binary digits of information word in multiple rows and columns. Another interleaver stage scrambles the digits of one of the rows with a gap by interchanging two digits of the row, such that a position of the gap remains unchanged, in order to obtain a scrambled row, and to replace the row by the scrambled row. The former interleaver stage reads columns in a column by column manner, and arranges digits of the row to one another without the gap, to obtain a permuted information word. Independent claims are also included for the following: (1) a method for scrambling an information word (2) an index generator for generating an output index based on an input index of a number of columns (3) a computer program having instructions to perform a method for scrambling an information word.

Description

Die vorliegende Erfindung bezieht sich auf Interleaver, wie sie beispielsweise im Bereich der Informations- und Kodierungstechnik zur Verwürflung von Informationen eingesetzt werden.The The present invention relates to interleavers such as, for example in the field of information and coding technology for scrambling to be used by information.

Im Bereich der konventionellen Technik kommen Interleaver beispielsweise bei der Datenübertragung zum Einsatz. Oftmals werden dort Binärstellen in Form von Sendesymbolen übertragen, die dann bei der Übertragung, z. B. über einen Mobilfunkkanal, gestört werden. Da von einer Störung zumeist mehrere aufeinanderfolgende Symbole betroffen sind, man spricht auch von sog. Bündelfehlern, kommen Verwürfelungstechniken zum Einsatz. Dies bedeutet, dass in einem ursprünglichen Informationswort einzelne Stellen derart verwürfelt werden, dass diese bei der Übertragung nicht mehr aufeinanderfolgend sind. Dies hat zur Folge, dass beim Auftreten von Bündelfehlern, und anschließendem Rückverwürfeln, die Bündelfehler auseinander gerissen werden, und sich so über das Informationswort verteilen. Diese Technologien kommen beispielsweise auch bei der Speicherung von Daten, z. B. bei Audio-CDs zum Einsatz. Idealerweise werden die auftretenden Bündelfehler auseinander gerissen und führen so zu Einzelfehlern, die korrigierbar sind. Zum Verwürfeln, bzw. Rückwürfeln kommen sog. Interleaver zum Einsatz.in the For example, interleavers are used in conventional technology used in data transmission. Often there will be Transmit binary digits in the form of transmit symbols, then the transmission, z. B. over a Mobile channel, to be disturbed. Because of a fault mostly several consecutive symbols are affected, man also speaks of so-called bundle errors, scrambling techniques come to Commitment. This means that in an original information word individual places are scrambled so that this at the transmission are no longer consecutive. This As a result, when burst errors occur, and subsequent reverse scrambling, the bundle errors be torn apart, and so on the information word to distribute. These technologies are also used in the Storage of data, eg. B. in audio CDs used. Ideally the burst errors occurring are torn apart and thus lead to individual errors that are correctable. To scramble, or throw back so-called interleaver used.

In der Nachrichtentechnik werden zum Schutz vor Übertragungsfehlern Fehler korrigierende Kodes eingesetzt. Beispielsweise kommen hier Faltungskodierer, Blockkodierer, usw. zum Einsatz. Turbo Kodes sind dabei eine der leistungsstärksten Kode-Klassen und ihre Fähigkeit Übertragungsfehler zu korrigieren überragt die von Faltungskodes bei weitem, vgl. z. B. Claude Berrou, Alain Glavieux, and Punya Thitimajshima: „Near Shannon-Limit Error-Correcting Coding and Decoding: Turbo Codes”, Intern. Conf. an Communication, pages 1064–1070, 1993 .In communications engineering, error-correcting codes are used to protect against transmission errors. For example, convolutional encoders, block encoders, etc. are used here. Turbo codes are one of the most powerful code classes and their ability to correct transmission errors far exceeds that of convolutional codes, cf. z. B. Claude Berrou, Alain Glavieux, and Punya Thitimajshima: "Near Shannon-Limit Error-Correcting Coding and Decoding: Turbo Codes", Intern. Conf. to Communication, pages 1064-1070, 1993 ,

Turbo Kode Interleaver sind ein integraler Bestandteil von Turbo-Kodierern, sowie der zugehörigen Turbo-Dekodierer. Die 11 illustriert ein prinzipielles Blockschaltbild eines solchen Turbo Kodierers 1100. Der Turbo Kodierer 1100 weist dabei einen 1. Komponentenkodierer 1105, einen Turbo Kode Interleaver 1110, einen 2. Komponentenkodierer 1115 und einen Punktierer 1120 auf. Ein Informationswort, d. h. ein Vektor bestehend aus Informationsbits, die beispielsweise durch einen Indexbereich von 0 bis Infoword_Len-1 spezifiziert werden können, wobei Infoword_Len der Wortlänge entspricht, wird enkodiert, indem eine 1. Kopie unmittelbar dem Punktierer 1120, eine 2. Kopie des Vektors dem 1. Komponentenkodierer 1105 und eine 3. Kopie dem Turbo Kode Interleaver 1110 zugeführt wird. Der Turbo Kode Interleaver 1110 permutiert die Bits dieses Sektors, d. h. er sortiert diese Bits oder Stellen um, ändert deren Reihenfolge und gibt den so permutierten Vektor der gleichen Länge Infoword_Len an den 2. Komponentenkodierer 1115 weiter.Turbo code interleavers are an integral part of turbo encoders, as well as the associated turbo decoder. The 11 illustrates a schematic block diagram of such a turbo coder 1100 , The turbo coder 1100 has a 1st component encoder 1105 , a turbo code interleaver 1110 , a 2nd component encoder 1115 and a puncturer 1120 on. An information word, ie a vector consisting of information bits, which can be specified, for example, by an index range from 0 to Infoword_Len-1, where Infoword_Len corresponds to the word length, is encoded by placing a 1st copy directly to the puncturer 1120 , a 2nd copy of the vector to the 1st component encoder 1105 and a 3rd copy of the Turbo code interleaver 1110 is supplied. The turbo code interleaver 1110 permutes the bits of this sector, ie it rearranges these bits or digits, changes their order and gives the thus permuted vector of the same length Infoword_Len to the 2nd component encoder 1115 further.

Beide Komponentenkodierer 1105 und 1115 sind üblicherweise gleich und stellen einen rekursiven Faltungskodierer dar, der pro Eingangsbit mindestens ein Paritätsbit, ggf. auch mehrere, an seinem Ausgang bzw. seinen Ausgängen zur Verfügung stellt. In der 11 sind jeweils zwei Paritätsbits für die beiden Komponentenkodierer 1105 und 1115 gezeigt.Both component encoders 1105 and 1115 are usually the same and represent a recursive convolutional encoder which provides at least one parity bit per input bit, possibly even several, at its output or its outputs. In the 11 are each two parity bits for the two component encoders 1105 and 1115 shown.

Die 12 zeigt ein Beispiel eines Komponentenkodierers, der beispielsweise als Faltungskodierer realisiert sein kann. Die 12 zeigt ein Beispiel eines rekursiven Faltungskodierers mit 2 Paritätsbits pro Eingangsbit und einer Gedächtnislänge von 3. Die 12 zeigt 3 Flip-Flops 1200, 1205 und 1210, die über Summationsglieder und Kopplungszweige miteinander verknüpft sind. Das in der 12 dargestellte Beispiel zeigt, dass für ein Eingangsbit, das am Eingang 1215 anliegt, jeweils 2 Paritätsbits an den Ausgängen 1220 und 1225 ausgegeben werden. Ferner entsprechen die 3 Flip-Flops 1200, 1205 und 1210 3 Ein-Bit-Speichern, die die Gedächtnislänge von 3 realisieren. Jedes der 3 Flip-Flops 1200, 1205 und 1210 speichert ein Bit, d. h. Binär „0” oder „1”, für eine Zeiteinheit und gibt dieses an dem jeweiligen Ausgang aus. Zu Beginn der nächsten Zeiteinheit wird das am Eingang eines Flip-Flops anliegende Bit gespeichert und dann ausgegeben. Somit kann die Anordnung in der 12 auch als übliches Schieberegister betrachtet werden. Die Plussymbole markieren die Summationsglieder, also diejenigen Knoten, an denen binär addiert wird, wobei die binäre Addition der binären Exklusiv-Oder-Verknüpfung entspricht. Im unteren Teil der 12 lässt sich ein Rückkopplungszweig 1230 erkennen, wodurch der Inhalt des Schieberegisters auf seinen Eingang 1215 zurückgekoppelt wird. Die 12 zeigt somit ein Beispiel eines Faltungskodierers, der in der Darstellung der 11 als Komponentenkodierer zum Einsatz kommen kann.The 12 shows an example of a component encoder that may be implemented as a convolutional encoder, for example. The 12 shows an example of a recursive convolutional encoder with 2 parity bits per input bit and a memory length of 3. The 12 shows 3 flip-flops 1200 . 1205 and 1210 , which are linked together via summation elements and coupling branches. That in the 12 example shown shows that for an input bit, the input 1215 is present, in each case 2 parity bits at the outputs 1220 and 1225 be issued. Furthermore, the 3 flip-flops correspond 1200 . 1205 and 1210 3 one-bit memories that realize the memory length of 3. Each of the 3 flip-flops 1200 . 1205 and 1210 stores one bit, ie binary "0" or "1", for one time unit and outputs it at the respective output. At the beginning of the next time unit, the bit present at the input of a flip-flop is stored and then output. Thus, the arrangement in the 12 be regarded as a conventional shift register. The plus symbols mark the summation elements, ie those nodes to which binary additions are made, the binary addition corresponding to the binary exclusive-OR operation. In the lower part of the 12 can be a feedback branch 1230 recognize, causing the contents of the shift register to its input 1215 is fed back. The 12 FIG. 3 shows an example of a convolutional encoder which is shown in FIG 11 can be used as a component encoder.

Gemäß dem Beispiel der 11 werden die Paritätsbits der Komponentenkodierer 1105 und 1115, die systematischen Bits, die den Informationsbits entsprechen einem Punktierer 1120 zur Verfügung gestellt. Aus der 11 lässt sich erkennen, dass der Punktierer 1120 5 Eingänge und nur einen Ausgang hat. In dem Punktierer 1120 findet eine Parallel-Seriell-Wandlung der 5 Eingänge auf den einen Ausgang statt, wobei aber auch Bits, die an den Eingängen anliegen, einfach verworfen und nicht zum Ausgang weitergegeben werden können. Dies kann beispielsweise über ein Punktierungsmuster gesteuert werden, welches festlegt, welche Bits der 5 Eingänge an den Ausgang weitergereicht werden. Zum Beispiel kann der Punktierer jedes systematische Bit, aber nur jedes 2. Bit der 4 Paritätsbit-Eingänge zum Ausgang weiterleiten. Da für jedes zu übertragende Informationswort an jedem der 5 Eingänge insgesamt Infoword_Len Bits anliegen, können maximal 5 × Infoword_Len Bits ausgegeben werden.According to the example of 11 become the parity bits of the component encoders 1105 and 1115 , the systematic bits that correspond to the information bits a puncturer 1120 made available. From the 11 can be seen that the puncturer 1120 5 inputs and only one output has. In the puncturer 1120 There is a parallel-serial conversion of the 5 inputs to the one output instead, but also bits that are present at the inputs, can simply be discarded and not passed on to the output. This can be controlled, for example, via a puncturing pattern, which determines which bits of the 5 inputs are passed to the output. For example, the puncturer may forward each systematic bit but only every 2nd bit of the 4 parity bit inputs to the output. Since a total of Infoword_Len bits are present at each of the five inputs for each information word to be transmitted, a maximum of 5 × Infoword_Len bits can be output.

Durch ein geeignetes Punktierungsmuster kann erreicht werden, dass eine eingestellte Menge von Codeword_Len Bits vom Punktierer ausgegeben wird, so dass die Länge eines ausgegebenen Kodewortes, das sich aus den Kodebits zusammensetzt, Codeword_Len ist. Das Verhältnis aus Infoword_Len/Codeword_Len ist die Kode-Rate des Turbo Kodes. Für obiges Beispiel kann die Kode-Rate durch den Punktierer zwischen 1/5 und 1 eingestellt werden.By a suitable puncturing pattern can be achieved set amount of Codeword_Len bits output from the puncturer so that the length of an output codeword, the is composed of the code bits, Codeword_Len is. The relationship from Infoword_Len / Codeword_Len is the code rate of the Turbo code. For the example above, the code rate may be through the puncturer be set between 1/5 and 1.

Nach der Übertragung der Kodebits, d. h. des Kodewortes, über einen Übertragungskanal werden beispielsweise im Empfänger gestörte Bits verarbeitet, die dort in Form von Soft-Bits vorliegen können. In anderen Worten können Binärstellen im Empfänger höher aufgelöst dargestellt werden, d. h. für eine gesendete Binärstelle „0” oder „1”, können in einem Empfänger mehrere Binärstellen benutzt werden. Beispielsweise können so Zuverlässigkeitsinformationen der einzelnen Binärstellen mit bei der Dekodierung berücksichtigt werden. Ein Turbo Dekoder hat nun die Aufgabe Übertragungsfehler zu korrigieren.To the transmission of code bits, d. H. of the codeword, about a transmission channel, for example, in the receiver troubled bits processed there in the form of soft bits may be present. In other words, binary digits shown in the receiver higher resolution be, d. H. for a transmitted binary digit "0" or "1", can have multiple binary digits in a receiver to be used. For example, reliability information can be provided the individual binary digits with in the decoding considered become. A turbo decoder now has the task of transmission errors to correct.

Ein dem in der 11 gezeigten Turbo Kodierer angepasster Turbo Dekodierer ist in der 13 gezeigt. Der Turbo Dekodierer umfasst einen Depunktierer 1300, einen 1. Komponentendekodierer 1305, einen 2. Komponenten-Dekodierer 1310, einen Turbo Kode Interleaver 1315 und einen Turbo Kode De-Interleaver 1320. Bereits aus der Struktur des in der 13 gezeigten Turbo Dekodierers lässt sich erkennen, dass der Turbo Kode Interleaver 1315 und der Turbo Kode De-Interleaver 1320 eine zentrale Rolle spielen.A in the 11 shown turbo coder adapted turbo decoder is in the 13 shown. The turbo decoder includes a de-puncturer 1300 , a 1st component decoder 1305 , a 2nd component decoder 1310 , a turbo code interleaver 1315 and a turbo-code de-interleaver 1320 , Already from the structure of in the 13 shown turbo decoder can be seen that the turbo code interleaver 1315 and the turbo code de-interleaver 1320 play a central role.

Ein Turbo Dekoder arbeitet iterativ, d. h. im Gegensatz zu Viterbi-Dekodern für Faltungskodes wird hier jeder Komponentendekoder nicht nur einmal verwendet, sondern einmal pro Iteration, wobei mehrere Iterationen durchgeführt werden können, typischerweise liegt die Anzahl der Iterationen bei 3 bis 8. Der Depunktierer 1300 bestimmt aus den empfangenen Kode-Bits die systematischen Bits, sowie die Pari tätsbits der 1. Komponente und der 2. Komponente. Die Paritätsbits der 1. Komponente werden dem 1. Komponentendekodierer 1305, die Paritätsbits der 2. Komponente dem 2. Komponentendekodierer 1310 zugeführt. In jeder Iteration berechnet der 1. Komponentendekodierer 1305 auf der Basis seiner Eingänge, d. h. auf Basis der Paritätsbits der 1. Komponente, der systematischen Bits, sowie der extrinsischen Information der 2. Komponente ein Ausgangssignal, welches als extrinsische Information der 1. Komponente bezeichnet werden kann.A turbo decoder operates iteratively, ie unlike Viterbi decoder codes for convolutional codes, each component decoder is used not once, but once per iteration, with multiple iterations, typically the number of iterations is 3 to 8. The de-puncturer 1300 determines the systematic bits from the received code bits as well as the parity bits of the first component and the second component. The parity bits of the 1st component become the 1st component decoder 1305 , the parity bits of the 2nd component to the 2nd component decoder 1310 fed. In each iteration, the 1st component decoder calculates 1305 on the basis of its inputs, ie on the basis of the parity bits of the 1st component, the systematic bits, and the extrinsic information of the 2nd component, an output signal which can be referred to as extrinsic information of the 1st component.

Für jedes der Infoword_Len systematischen Bits existiert auch eine extrinsische Information, d. h. dieser Ausgang des 1. Komponentendekodierers 1305 ist ein Vektor von Infoword_Len extrinsischen Informationen. Außerdem liefert der 1. Komponentendekodierer 1305 über einen 2. Ausgang einen Vektor von Infoword_Len dekodierten, d. h. geschätzten Informationsbits. Die beiden Vektoren der systematischen Soft-Bits und der extrinsischen Information der 1. Komponente werden im Turbo Kode Interleaver 1315 permutiert, d. h. jeder Vektor wird getrennt für sich und mit derselben Permutation wie im Turbo-Enkoder verwürfelt, wie beispielsweise in der 11 dargestellt.For each of the Infoword_Len systematic bits there is also extrinsic information, ie this output of the 1st component decoder 1305 is a vector of Infoword_Len extrinsic information. In addition, the 1st component decoder provides 1305 decoded via a second output a vector of Infoword_Len, ie estimated information bits. The two vectors of the systematic soft bits and the extrinsic information of the 1st component are in the turbo code interleaver 1315 permutates, ie each vector is scrambled separately by itself and with the same permutation as in the turbo-encoder, such as in the 11 shown.

Ebenso berechnet der 2. Komponentendekodierer 1310 basierend auf seinen Eingängen als Ausgang einen Vektor der Lange Infoword_Len von extrinsischen Informationen der 2. Komponente. Diese wird über den Turbo Kode De-Interleaver 1320 zurück zum 1. Komponentendekodierer 1305 geführt, so dass dieser die nächste Iteration beginnen kann. Während der Iterationen tauschen der 1. und der 2. Komponentendekodierer 1305; 1310 ihre jeweiligen extrinsischen Informationen über den Turbo Kode Interleaver 1315 bzw. den Turbo Kode De-Interleaver 1320 aus. Der Turbo Kode De-Interleaver 1320 passt dabei derart zu dem Turbo Kode Interleaver 1315, dass ein Vektor der Länge Infoword_Len, der einmal mit dem Turbo Kode Interleaver 1315 permutiert und das Ergebnis hernach mit dem Turbo Kode De-Interleaver 1320 permutiert wurde, wieder identisch zu dem ursprünglichen Vektor ist.Likewise, the 2nd component decoder calculates 1310 based on its inputs as output a vector of Long Infoword_Len of extrinsic information of the 2nd component. This is via the turbo code de-interleaver 1320 back to the 1st component decoder 1305 so that it can start the next iteration. During iterations, the 1st and 2nd component decoders interchange 1305 ; 1310 their respective extrinsic information about the turbo code interleaver 1315 or the turbo code de-interleaver 1320 out. The turbo code de-interleaver 1320 fits in such a way to the turbo code interleaver 1315 that a vector of length Infoword_Len, once with the turbo code interleaver 1315 permutes and the result afterwards with the turbo code de-interleaver 1320 was again identical to the original vector.

Der Turbo Kode Interleaver 1315 hat u. a. die Aufgabe, hohe Distanzen zwischen den permutierten Kodewörtern sicherzustellen. Als Maß kann im Allgemeinen die Hamming-Distanz zwischen Kodewörtern verwendet werden, die der Anzahl von Bits entspricht, in denen sich 2 Kodewörter A und B unterscheiden. Wird Kodewort A übertragen, so wird stattdessen fälschlicherweise das Kodewort B vom Empfänger ausgewählt, wenn diese Bits vom Kanal verfälscht wurden. Tatsächlich reicht es aus, wenn mehr als die Hälfte dieser Bits verfälscht wurden. Naturgemäß wird die Wahrscheinlichkeit, dass ein falsches Kodewort B ausgewählt wird umso geringer, je größer die Hamming-Distanz zwischen A und B ist, vgl. z. B. Todd K. Moon ”Error Correction Coding”, Wiley, 2007, ISBN 978-0-471-64800-0 .The turbo code interleaver 1315 has, among other things, the task of ensuring high distances between the permuted codewords. As a measure, in general, the Hamming distance between codewords may be used, which corresponds to the number of bits in which 2 codewords A and B differ. If code word A is transmitted, the code word B is instead erroneously selected by the receiver if these bits were corrupted by the channel. In fact, it is sufficient if more than half of these bits have been corrupted. Naturally, the probability that a wrong codeword B is selected the smaller, the greater the Hamming distance between A and B, cf. z. B. Todd K. Moon's "Error Correction Coding", Wiley, 2007, ISBN 978-0-471-64800-0 ,

Der Turbo Kode Interleaver 1100 bzw. 1315 soll nun dafür sorgen, dass die Distanzen zwischen jedem möglichen Kodewort A und allen anderen möglichen Kodewörtern B groß werden. Die Lösung dieser Aufgabe lässt sich wie folgt etwas vereinfachen. Die Hamming-Distanz zwischen 2 Kodewörtern A und B lässt sich berechnen als das Hamming-Gewicht des Vektors A plus B, wobei das Gewicht die Anzahl von Einsen des Vektors meint. Hierbei repräsentiert, wie bereits oben erläutert, das Plus-Symbol eine binäre Addition, was einer Ex-Or-Verknüpfung (Exklusiv-Oder-Verknüpfung) zwischen je einem Bit von A und B entspricht, d. h. Bit 0 von A wird mit Bit 0 von B verknüpft, Bit 1 von A wird mit Bit 1 von B verknüpft, Bit 2 von A wird mit Bit 2 von B verknüpft, usw.The turbo code interleaver 1100 respectively. 1315 is now to ensure that the distances between each possible codeword A and all other possible codewords B become large. The solution to this problem can be somewhat simplified as follows. The Hamming distance between 2 codewords A and B can be calculated as the Hamming weight of the vector A plus B, the weight meaning the number of ones of the vector. Here, as explained above, the plus symbol represents a binary addition, which corresponds to an Ex-Or operation (exclusive-OR operation) between one bit each of A and B, ie bit 0 of A becomes bit 0 of B linked, bit 1 of A is linked to bit 1 of B, bit 2 of A is linked to bit 2 of B, etc.

Turbo Kodes sind linear, d. h. sie besitzen die Eigenschaft, dass A plus B ein gültiges Kodewort ist, wenn A und B gültige Kodewörter sind. Daher darf als Kodewort A auch der Null-Vektor als übertragenes Kodewort angenommen werden. Die Distanzen zu allen anderen Kodewörtern B sind dann einfach die Hamming-Gewichte dieser anderen Kodewörter. Auf Grund der Linearitätseigenschaft ist die Distanzverteilung, d. h. das Histogramm der vorkommenden Distanzen zu allen möglichen Kodewörtern B, identisch für jedes Kodewort A, also auch für den Null-Vektor. Wird dieser als Kodewort A angenommen, wird die Distanzverteilung identisch zur Gewichtsverteilung aller möglichen Kodewörter.turbo Codes are linear, d. H. they possess the property that A plus B is a valid codeword if A and B are valid Are codewords. Therefore, the code vector A may also be the zero vector be adopted as a transmitted codeword. The distances to all other codewords B are then simply the Hamming weights these other codewords. Due to the linearity property is the distance distribution, d. H. the histogram of the occurring ones Distances to all possible codewords B, identical for each code word A, including the null vector. If this is assumed to be codeword A, the distance distribution becomes identical for weight distribution of all possible codewords.

Gemäß den obigen Erläuterungen, gibt ein Turbo-Kodierer, wie beispielsweise in der 11 dargestellt, an seinem Ausgang einen Null-Vektor aus, wenn sein Eingang ein 0-Vektor ist. Auf Grund der obigen Überlegungen ist es demnach Ziel des Turbo Kode Interleavers 1110; 1315 dafür zu sorgen, dass am Ausgang ein möglichst großes Gewicht entsteht, wenn am Eingang ein anderer Vektor als der Null-Vektor anliegt.According to the above explanation, there is a turbo-coder, such as in the 11 shown at its output a zero vector when its input is a 0 vector. Based on the above considerations, it is therefore target of the Turbo code interleaver 1110 ; 1315 to make sure that as much weight as possible is produced at the output if there is a vector other than the zero vector at the input.

Insbesondere das minimale Gewicht dmin aller Kodewörter ist wichtig, denn bei einer Übertragung des Nullwortes ist eine Verfälschung zu den Kodewörtern mit dem minimalen Gewicht am wahrscheinlichsten. Analog ist bei der Übertragung eines beliebigen Kodewortes A die Wahrscheinlichkeit einer Verfälschung hin zu einem Kodewort B am größten, welches eine minimale Distanz von dmin zu Kodewort A besitzt.In particular, the minimum weight d min of all codewords is important, because in a transmission of the zero word, a corruption to the codewords with the minimum weight is most likely. Analogously, in the transmission of any code word A, the probability of a falsification towards a code word B which has a minimum distance from d min to codeword A is greatest.

Es ist die Minimaldistanz dmin, die auch die Form der Wortfehlerraten-Kurve maßgeblich bestimmt. In solchen Wortfehlerraten-Kurven werden die Wortfehlerraten WER (WER = Word Error Rate, d. h. das Verhältnis der falsch dekodierten Kodewörter zur Gesamtzahl von übertragenen Kodewörtern) über einem wachsenden Signal-Rausch-Verhältnis (SNR = Signal-To-Noise-Ratio) für einen statischen nichtfrequenz-selektiven Kanal mit Additivem Weissen Gauss'schen Rauschen (AWGN = Additive White Gaussian Noise) dargestellt. In der 10a ist eine solche Kurve durch eine gestrichelte Linie dargestellt. Wird beispielsweise diese Linie betrachtet, so lässt sich erkennen, dass dieser einen Teil zwischen 1,2 und 1,6 dB aufweist, in dem die WER-Kurve steiler abfällt, gefolgt von einem flacheren Kurventeil, der als sog. Error Floor oder Fehlerteppich bezeichnet wird. Die Lage des Error Floors wird hauptsächlich durch die Kodewörter mit Minimaldistanz dmin vom übertragenen Kodewort verursacht.It is the minimum distance d min that also determines the shape of the word error rate curve. In such word error rate curves, the word error rates WER (WER = word error rate, ie the ratio of the incorrectly decoded code words to the total number of transmitted codewords) over a growing signal-to-noise ratio (SNR) for a static non-frequency selective channel with Additive White Gaussian Noise (AWGN = Additive White Gaussian Noise). In the 10a such a curve is represented by a dashed line. If, for example, this line is considered, it can be seen that it has a part between 1.2 and 1.6 dB, in which the WER curve drops steeper, followed by a flatter curve part, referred to as a so-called error floor or error carpet becomes. The position of the error floor is mainly caused by the code words with minimum distance d min from the transmitted codeword.

Für kommerzielle Systeme ist es daher wünschenswert, dass ein solcher Error Floor naturgemäß begrenzt ist, weil eine zu hohe WER die Datenübertragung unzuverlässig macht, d. h. z. B. Signalaussetzer verursacht und auch innerhalb des Error Floors sogar durch Erhöhung des SNR die WER nicht wesentlich gesenkt werden kann.For Therefore, commercial systems, it is desirable that a Such error floor is naturally limited, because too high a WER data transfer unreliable makes, d. H. z. B. signal dropouts and also within of the Error Floors even by increasing the SNR the WER not can be significantly reduced.

Deshalb ist seit dem Aufkommen der Turbo Kodes beträchtliche Forschungsarbeit in die Reduzierung des Error Floors investiert worden, vgl. z. B. Marco Breiling, „Analysis and Design of Turbo Kode Interleavers”, Shaker Verlag, Aachen, 2002 ISBN 3-8322-0302-8 und S. Crozier and P. Guinand: ”High-performance low memory interleaver banks for turbocodes”, in Proc. of the 54th IEEE Veh. Tech. Conf (VTC'01), Atlantic City, pp. 2394–2398, Oct. 2001 .Therefore, since the advent of Turbo Codes, considerable research has been invested in reducing the error floor, cf. z. B. Marco Breiling, "Analysis and Design of Turbo Code Interleavers", Shaker Verlag, Aachen, 2002 ISBN 3-8322-0302-8 and S. Crozier and P. Guinand: "High Performance Low Memory Interleaver Banks for Turbo Codes", in Proc. of the 54th IEEE Veh. Tech. Conf (VTC'01), Atlantic City, pp. 2394-2398, Oct. 2001 ,

Für dieses Ziel wurden vielfältige Ansätze auch zur Optimierung von Turbo Kode Interleavern durchgeführt, beispielsweise gab es bei der UMTS-Standardisierung mehrere Vorschläge (UMTS = Universal Mobile Telecommunication System), vgl. Johan Hokfelt, Ove Edfors, and Torleiv Maseng: „Interleaver design for turbo codes based an the performance of iterative decoding”, Intern. Conf. an Communications, Communications Theory Mini Conference, pages 93–97, 1999 .For this purpose, various approaches have also been carried out for the optimization of Turbo code interleavers, for example, there were several suggestions in UMTS standardization (UMTS = Universal Mobile Telecommunication System), cf. Johan Hokfelt, Ove Edfors, and Torleiv Maseng: "Interleaver design for turbo codes based on the performance of iterative decoding", Intern. Conf. to Communications, Communications Theory Mini Conference, pages 93-97, 1999 ,

An den vorangegangenen Überlegungen lässt sich bereits erkennen, dass die Erzeugung von Gewicht im Turbo Kodierer berücksichtigt werden sollte, um die Methodik hinter dem Design von Turbo Kode Interleavern verständlich zu machen. Ein Kodewort mit dem Gewicht dmin entsteht überhaupt nur dann, wenn das Informationswort ein niedriges Gewicht hat, da ja dieses selbst als systematischer Teil in das Kodewort mit eingeht. Wenn das Informationswort durch einen Vektor mit einer einzigen Eins dargestellt wird: 00...010...0, dann geschieht im 1. Komponentenkodierer 1105 folgendes: Bevor diese Eins in den Komponentenkodierer 1105 eingeht, gibt dieser an seinen Ausgängen nur Nullen aus, weil das interne Schieberegister des Komponentenkodierers 1105 nur Nullen enthält, vgl. 12.From the foregoing considerations, it can already be seen that the generation of weight in the turbo coder should be taken into account to the methodology behind the design of Turbo code Interlea vern to make understandable. A codeword with the weight d min arises at all only if the information word has a low weight, since this enters itself as a systematic part in the codeword with. If the information word is represented by a vector with a single one: 00 ... 010 ... 0, then in the 1st component encoder 1105 following: Before this one in the component encoder 1105 when it is input, it outputs only zeros at its outputs, because the internal shift register of the component encoder 1105 contains only zeros, cf. 12 ,

Nachdem die Eins den Komponentenkodierer erreicht hat, enthält das Schieberegister nicht mehr nur Nullen, und durch den Rückkopplungszweig 1230 werden für den Rest dieses Informationswortes nicht mehr alle Flip-Flops 1200, 1205 und 1210 gleichzeitig Null sein. Das bedeutet, dass der Komponentenkodierer ab dem Zeitpunkt, zu dem eine einzelne Eins eingegeben wird, an seinen Ausgängen 1220; 1225 viele Einsen liefert. Die beiden Ströme von Paritätsbits haben also im Regelfall ein großes Gewicht, und Kodewörter, die von einer einzelnen Eins erzeugt werden, haben dementsprechend auch ein großes Gewicht.After the one has reached the component encoder, the shift register no longer contains only zeros, and through the feedback branch 1230 For the rest of this information word, not all flip-flops will be 1200 . 1205 and 1210 be zero at the same time. This means that the component encoder will be at its outputs from the time a single one is input 1220 ; 1225 delivers many ones. The two streams of parity bits are thus usually of great weight, and codewords generated by a single one are accordingly also of great importance.

Anders kann es aussehen, wenn am Eingang eines Komponentenkodierers ein Vektor anliegt, in dem zwei Einsen stehen, die eine bestimmte Entfernung zueinander haben, Entfernung ist hier im Sinne von Abstand der beiden Positionen innerhalb des Vektors zu verstehen. Der in der 12 gezeigte Komponentenkodierer liefert ein geringes Ausgangsgewicht u. a. für folgende Eingangsvektoren:
00..0100000010..0,
00..01000000000000010..0,
00..010000000000000000000010..0,
d. h. immer dann, wenn die Entfernung der Einsen ein Vielfaches von 7 Positionen ist. Der Teil des Vektors zwischen der einführenden und der abschließenden Eins einschließlich dieser Einsen, soll im Folgenden als Fehlermuster bezeichnet werden. Dieser Begriff rührt daher, dass diese Muster für Kodewörter verantwortlich sind, die bei einer fehlerhaften Übertragung des Null-Kodewortes vom Dekodierer fälschlicherweise ausgegeben werden. Die erste Eins führt jeweils dazu, dass das Schieberegister nicht mehr nur Nullen enthält und deshalb anfängt, Bits ungleich Null auszugeben, während die abschließende Eins dafür sorgt, dass das Schieberegister erneut nur Nullen enthält, es geht in den sog. Nullzustand zurück, und dass deshalb hernach nur noch Nullen ausgegeben werden.
The situation may be different if there is a vector at the input of a component encoder in which there are two ones which have a certain distance from one another, distance is to be understood here as the distance between the two positions within the vector. The Indian 12 shown component encoder provides a low initial weight for the following input vectors:
00..0100000010..0,
00..01000000000000010..0,
00..010000000000000000000010..0,
ie whenever the distance of the ones is a multiple of 7 positions. The part of the vector between the introductory and the terminating one, including these ones, will be referred to below as the error pattern. This term stems from the fact that these patterns are responsible for codewords that are erroneously output by the decoder when the null codeword is transmitted incorrectly. In each case, the first one causes the shift register to no longer contain only zeros and therefore start outputting nonzero bits, while the final one causes the shift register to again contain only zeros, it returns to the so-called zero state, and that therefore afterwards only zeros are spent.

Während 10000001 ein Fehlermuster ist, ist 1000001, d. h. die Entfernung zwischen den Einsen ist nur 6 Positionen, bzw. 100000001, d. h. die Entfernung ist 8 Positionen usw. kein Fehlermuster, d. h. hier geht das Schieberegister mit der 2. Eins nicht in den Nullzustand zurück und gibt deshalb auch anschließend weitere Einsen aus.While 10000001 is an error pattern is 1000001, d. H. the distance between the ones is only 6 positions, or 100000001, d. H. the distance is 8 positions, etc. no error pattern, d. H. here the shift register with the 2nd one does not go to the zero state back and therefore gives more afterwards Ones out.

Zur Erhöhung von dmin sollte demnach ein Turbo Kode Interleaver möglichst viele Fehlermuster am Eingang des 1. Komponentendekodierers 1305, die Paritätsbits eines ggf. nur niedrigen Gewichts erzeugen, derart permutieren, dass diese auf Folgen am Eingang des 2. Komponentendekodierer 1310 abgebildet werden, die keine Fehlermuster sind und deshalb ein hohes Paritätsgewicht erzeugen müssen.Accordingly, to increase d min , a turbo-code interleaver should have as many error patterns as possible at the input of the first component decoder 1305 , which produce parity bits of possibly low weight, permute such that they follow sequences at the input of the second component decoder 1310 which are not error patterns and therefore must generate a high parity weight.

Wie oben bereits erläutert, wirkt sich die Qualität des Turbo Kode Interleavers direkt auf den Error Floor der Wortfehlerraten-Kurve aus. Ein weiterer wichtiger Punkt ist die Implementierbarkeit des Turbo Kode Interleavers. Prinzipiell ist jeder Turbo Kode Interleaver als Adress-Tabelle implementierbar, d. h. für jedes Eingangsbit der 1. bzw. 2. Komponente steht in einer Tabelle sequentiell die Adresse, woher dieses Bit gelesen bzw. wohin es geschrieben werden soll, damit der entsprechend andere Komponentenkodierer es verarbeiten kann. Der Vorgang des Interleavens lässt sich dabei als Umordnung von Informationsbits in Speichern ausdrücken: wenn ein Informationsbit vor dem Interleaven in Adresse i eines ersten Speichers steht, so steht es nach dem Interleaven in Adresse Addr[i] entweder ebenfalls des ersten oder eines zweiten Speichers. Beispielsweise für 10.000 Informationsbits hätte diese Adress-Tabelle 10.000 Einträge mit jeweils 14 Bits, zur Darstellung von Adressen bis 10.000. Diese Adressen können in einem eigenen ROM (ROM = Read Only Memory) oder RAM (RAM = Random Access Memory) abgespeichert sein, was einen nicht unerheblichen Kostenaufwand bei der Implementierung nach sich zieht. Kritischer wird dieses Problem noch, wenn der Turbo Kode mehrere Wortgrößen unterstützen muss, wie es z. B. bei modernen Nachrichtensystemen sehr häufig der Fall ist. In diesem Fall wäre für jede Wortgröße eine eigene Tabelle notwendig, und der RAM- bzw. ROM-Bedarf summiert sich auf.As already explained above, the quality affects of the Turbo code interleaver directly to the error floor of the word error rate curve out. Another important point is the implementability of the Turbo code Interleavers. In principle, every turbo code is interleaver implementable as an address table, d. H. for each input bit the 1st or 2nd component is sequentially represented in a table Address where this bit is read or where it is written from so that the corresponding other component encoder can process it. The process of interleaving can be described as reordering express information bits in memory: if on Information bit before interleaving in address i of a first memory is, it stands after the interleaving in address Addr [i] either also the first or a second memory. For example for 10,000 bits of information would have this address table 10,000 entries, each with 14 bits, to represent Addresses up to 10,000. These addresses can be in their own ROM (ROM = Read Only Memory) or RAM (RAM = Random Access Memory) stored, which is a significant cost implications of the implementation. This problem becomes more critical even if the turbo code support multiple word sizes must, as it is z. B. very common in modern communication systems the case is. In this case would be for every word size a separate table is required, and the RAM or ROM requirement adds up on.

Aus diesem Grund gibt es auch im Bereich der konventionellen Technik bereits Bestrebungen, einen algorithmisch darstellbaren Turbo Kode Interleaver zu wählen. Hier wird die Permutationsadresse für jedes Informationsbit durch eine Vorschrift berechnet, welche sich durch wenige arithmetische Operationen sowie die Verwendung von wenigen Parametern darstellen lässt. Diese Parameter können für jede Wortgröße unterschiedliche Werten annehmen und in kleinen RAM- bzw. ROM-Tabellen abgespeichert werden.For this reason, there are already efforts in the field of conventional technology to select an algorithmically representable Turbo code interleaver. Here, the permutation address for each information bit is calculated by a rule that can be represented by a few arithmetic operations and the use of a few parameters. These parameters can be used for any word size accept different values and stored in small RAM or ROM tables.

In der Anfangszeit von Turbo Kodes wurden als Turbo Kode Interleaver häufig zufällige Permutationen gewählt, wie es beispielsweise in der 14 dargestellt ist. Die 14 zeigt einen zufälligen Turbo Kode Interleaver, der auf einer Interleaver-Länge von 1146 Bits basiert. Die Darstellung in der 14 zeigt die Bitposition der 1. Komponente auf der Ordinate, und die Bitposition der 2. Komponente auf der Abszisse. Die jeweilige Zuordnung ist durch ein Kreuz dargestellt, wobei die Verteilung der Kreuze auf die zufällige Natur des Turbo Kode Interleavers hinweist. Bezüglich Zufallsinterleavern lässt sich zeigen, dass diese mit an Sicherheit grenzender Wahrscheinlichkeit Fehlermuster am Eingang des 1. Komponentendekodierers in Fehlermuster am Eingang des 2. Komponentendekodierers permutieren, so dass ein Kodewort mit niedrigem Gewicht erzeugt wird, vgl. Sergio Benedetto and Guido Montorsi: „Unveiling Turbo Codes: Some Results an Parallel Concatenated Coding Schemes”, IEEE Trans. an Inform. Theory, 42(2):409–428, 1996 .In the early days of turbo codes were often chosen as turbo-code interleaver random permutations, as for example in the 14 is shown. The 14 shows a random turbo code interleaver based on an interleaver length of 1146 bits. The presentation in the 14 shows the bit position of the 1st component on the ordinate, and the bit position of the 2nd component on the abscissa. The respective assignment is represented by a cross, the distribution of the crosses indicating the random nature of the turbo code interleaver. With regard to random interleavers, it can be shown that they almost certainly permute error patterns at the input of the first component decoder into error patterns at the input of the second component decoder, so that a code word of low weight is generated, cf. Sergio Benedetto and Guido Montorsi: "Unveiling Turbo Codes: Some Results to Parallel Concatenated Coding Schemes", IEEE Trans. To Inform. Theory, 42 (2): 409-428, 1996 ,

Die WER eines Zufallsinterleavers ist neben anderen in der 10a gezeigt und dort als gestrichelte Linie mit der Bezeichnung „Zufalls-Interleaver”, bezeichnet. Hier ist der Error Floor deutlich erkennbar. Nachteilig an Zufallsinterleavern ist ferner, dass sie nicht algorithmisch darstellbar sind, so dass sie als Tabelle gespeichert werden müssen.The WER of a random interleaver is among others in the 10a shown and designated there as a dashed line with the name "random interleaver". Here the Error Floor is clearly recognizable. Another disadvantage of random interleavers is that they can not be represented algorithmically, so that they have to be stored as a table.

Im Rahmen der konventionellen Technik sind ferner Linear Congruente Interleaver bekannt. Im Gegensatz zu Zufallsinterleavern sind diese Interleaver mathematisch streng beschreibbar. Die Adresse Addr[i] eines Informationsbits i kann nach der Formel Addr[i] = (C × i)modberechnet werden, wobei mod die modulo-Operation darstellt, K die Informationswortgröße ist und C eine Konstante ist, die relativ prim zu K sein muss und das Inkrement zwischen aufeinanderfolgenden Adressen darstellt. Diese Interleaver besitzen einen hohen Error Floor, so dass sie in der Praxis nur selten zum Einsatz kommen.Linear Congruente Interleaver are also known in the conventional art. In contrast to random interleavers, these interleavers are mathematically strictly describable. The address Addr [i] of an information bit i can according to the formula Addr [i] = (C × i) mod where mod is the modulo operation, K is the information word size, and C is a constant which must be relatively prime to K and represents the increment between successive addresses. These interleavers have a high error floor, so they are rarely used in practice.

In der Anfangszeit der Turbo Kodes wurden in der Forschung statt der Zufallsinterleaver auch Rechteck-Interleaver verwendet. Ein Beispiel eines Rechteck-Interleavers ist in der 15 dargestellt. Die 15 zeigt eine Rechteckdarstellung mit 3 Zeilen und 4 Spalten, wobei in die jeweiligen Felder jeweils der Lese- bzw. Schreibindex eingetragen ist. Wie aus der 15 hervorgeht, muss die Informationswortgröße gleich dem Produkt aus Zeilen- und Spaltenanzahl sein. In diese werden die zu permutierenden Bits zeilenweise geschrieben und spaltenweise gelesen. Die Leistungsfähigkeit dieser Interleaver ist ebenfalls ungenügend.In the early days of the Turbo Codes, Rectangle Interleavers were used instead of random interleavers. An example of a rectangle interleaver is in 15 shown. The 15 shows a rectangular representation with 3 rows and 4 columns, wherein in each case the read or write index is entered. Like from the 15 The information word size must be equal to the product of row and column count. The bits to be permuted are written line by line and read column by column. The performance of these interleavers is also insufficient.

An den Extrembeispielen Zufallsinterleaver auf der einen Seite und Rechteck-Interleaver bzw. linear kongruenter Interleaver auf der anderen Seite lässt sich erkennen, dass sowohl ein zu zufälliger als auch ein zu strukturierter Aufbau eines Turbo Kode Interleavers zu einer schlechten Leistungseffizienz des Kodes führt.At the extreme examples random interleaver on the one hand and Rectangular interleaver or linearly congruent interleaver on the other side can be seen that both too random as well as too structured a structure of a turbo code interleaver leads to poor performance efficiency of the code.

Aus der Literatur sind weiterhin s-Random-Interleaver bekannt, vgl. S. Dolinar and D. Divsalar: „Weight Distributions for Turbo Codes Using Random and Nonrandom Permutations”, Jet Propulsion Lab, TDA Prog. Rep., 42–122: 56–65, 1995 , bei denen die Permutation in gewissem Maß pseudozufällig ist, wobei aber dem Zufall hier ein paar Einschränkungen gesetzt werden bzgl. der Abstände, die die Positionen von 2 beliebigen Bits in der 1. und 2. Komponente haben dürfen. Mit diesen s-Random-Interleavern lässt sich eine recht gute Leistungsfähigkeit des Turbo Kodes erreichen. Der Nachteil ist hier, ähnlich zu den Zufallsinterleavern, dass keine algorithmische Berechnungsformel des Interleavers angegeben werden kann.The literature also discloses s-random interleavers, cf. S. Dolinar and D. Divsalar: "Weight Distributions for Turbo Codes Using Random and Nonrandom Permutations", Jet Propulsion Lab, TDA Prog. Rep., 42-122: 56-65, 1995 , where the permutation is pseudorandom to a certain extent, but here a few restrictions are placed on the randomness with respect to the distances that the positions of 2 arbitrary bits in the 1st and 2nd components may have. With these s-Random interleavers a quite good performance of the turbo code can be achieved. The disadvantage here is, similar to the random interleavers, that no algorithmic calculation formula of the interleaver can be given.

Ein Interleaver, der viele Eigenschaften des s-Random-Interleavers besitzt, der aber dennoch algorithmisch beschreibbar ist, ist der Dithered Relatively Prime-Interleaver, vgl. S. Crozier and P. Guinand: „Highperformance low-memory interleaver banks for turbo-codes”, in Proc. Of the 54th IEEE Veh. Tech. Conf (VTC'01), Atlantic City, pp. 2394–2398, Oct. 2001 . Dieser Interleaver stellt eine Mischung aus Pseudo-Zufall und Struktur, sowie mit vorgeschriebenen Abständen der Bitpositionen dar. Er basiert auf dem Linear Congruenten Interleaver mit einer zusätzlich überlagerten lokalen Permutation, um die starre Struktur des Linear Congruenten Interleavers aufzubrechen.An interleaver, which has many properties of the s-random interleaver, but which is nevertheless algorithmically describable, is the Dithered Relative Prime Interleaver, cf. S. Crozier and P. Guinand: "High Performance Low-Memory Interleaver Banks for Turbo Codes", in Proc. Of the 54th IEEE Veh. Tech. Conf (VTC'01), Atlantic City, pp. 2394-2398, Oct. 2001 , This interleaver is a mixture of pseudorandom and structure, as well as prescribed bit-position spacings. It is based on the Linear Congruent Interleaver with an additional superimposed local permutation to break the rigid structure of the Linear Congruent Interleaver.

Ein weiterer bekannter Interleaver ist der UMTS- bzw. 3GPP-Interleaver (3GPP = Third Generation Partnership Project), siehe W-CDMA 3GPP TS 3rd Generation Partnership Project; Technical Specification Group Radio Access Network; Mul tiplexing and channel coding (FDD), sowie Hirohito Suda and Akira Shibutani: ”Interleaving method, interleaving apparatus, turbo encoding method, and turbo encoder”, European Patent 1 030 455 B1 , 1999. Das Grundprinzip hinter dem Turbo Kode Interleaver, der beim 3GPP-Standard verwendet wird, ist ein Rechteck-Interleaver, der in der Folge als Rahmeninterleaver bezeichnet wird, bei dem zusätzlich Intra- und Inter-Zeilen-Interleaving durchgeführt wird. Das bedeutet, dass zunächst in einem 1. Schritt die Informationsbits zeilenweise in einen Rechteck-Interleaver geschrieben werden. Anschließend wird innerhalb jeder Zeile nochmals permutiert, sogen. Intra-Zeilen-Interleaving, wobei die Permutation in jeder Zeile unterschiedlich ist. Beim 3GPP-Interleaver wird diese Permutation auf der Basis von Zyklen durchgeführt, die in einem Galois-Feld durch Potenzierung eines primitiven Elements erzeugt werden. Das so entstehende Intra-Zeilen-Interleaving kann in etwa mit einer pseudozufälligen Permutation verglichen werden.Another known interleaver is the UMTS or 3GPP interleaver (3GPP = Third Generation Partnership Project), see W-CDMA 3GPP TS 3rd Generation Partnership Project; Technical Specification Group Radio Access Network; Mul tiplexing and channel coding (FDD), and Hirohito Suda and Akira Shibutani: Interleaving method, interleaving apparatus, turbo encoding method, and turbo encoder. European Pa tent 1 030 455 B1 , 1999. The basic principle behind the Turbo Code interleaver, which is used in the 3GPP standard, is a rectangular interleaver, which is referred to as frame interleaver in the following, in which intra- and inter-line interleaving is additionally performed. This means that first in a first step, the information bits are written line by line in a rectangular interleaver. Subsequently, permutation takes place within each line again. Intra-line interleaving, where the permutation is different in each line. In the 3GPP interleaver, this permutation is performed on the basis of cycles generated in a Galois field by exponentiation of a primitive element. The resulting intra-line interleaving can be roughly compared to a pseudorandom permutation.

Anschließend werden in einem 3GPP-Interleaver noch ganze Zeilen miteinander vertauscht, sog. Inter-Zeilen-Interleaving. Nachdem Intra- und Inter-Zeilen-Interleaving durchgeführt worden sind, wird der derart permutierte Rechteck-Rahmen-Interleaver spaltenweise ausgelesen.Subsequently In a 3GPP interleaver, whole lines are interchanged, so-called inter-line interleaving. Having intra and inter-row interleaving are performed, the thus-permuted rectangular-frame interleaver read out column by column.

Beim 3GPP-Interleaver ist zusätzlicher Aufwand erforderlich, um den Interleaver an die Wortgröße anzupassen. Dafür werden vor der Permutation Dummy-Bits an das Informationswort angehängt, so dass das derart ergänzte Wort vollständig einen Rechteck-Interleaver ausfüllt, die Länge des aufgefüllten Eingangswortes ergibt sich dann aus dem Produkt aus Zeilen- und Spaltenzahl. Nach der Permutation müssen diese Dummy-Bits wieder entfernt werden, d. h. es wird ein sog. Pruning durchgeführt. Die Permutation beim 3GPP-Interleaver setzt sich somit aus einer Reihe von Einzeloperationen zusammen.At the 3GPP interleaver requires extra effort to adapt the interleaver to the word size. Instead, before the permutation dummy bits to the information word appended so that the word thus supplemented is complete fills a rectangle interleaver, the length of the filled input word then results from the Product of row and column number. After the permutation must these dummy bits are removed again, d. H. it becomes a so-called Pruning performed. The permutation of the 3GPP interleaver is thus composed of a series of individual operations.

Der Nachteil durch die Behandlung von Dummy-Bits, d. h. deren Einfügen, ihr Anteil an den durchgeführten Permutationen und das Entfernen, ist, dass zusätzliche Prozessierungszeit, Ressourcenverbrauch, beispielsweise zusätzlicher Speicherbedarf, und zusätzlicher Implementierungsaufwand, d. h. Komplexität, benötigt wird.Of the Disadvantage of the treatment of dummy bits, d. H. their insertion, their share of the permutations and the Remove, is that extra processing time, resource consumption, for example additional memory requirements, and additional Implementation effort, d. H. Complexity, needed becomes.

Um sich das tatsächliche Hinzufügen und spätere Entfernen der Dummy-Bits zu den „echten” Informationsbits zu sparen, wäre es nützlich, den Index eines interleaveten Informationsbits, d. h. nach dem vollständigen Interleave-Vorgang und dem Lesen aus dem Interleaverspeicher, unmittelbar berechnen zu können. Es wäre also eine Berechnungsvorschrift wünschenswert, die den Index eines Informationsbits im interleaveten Informationswort direkt angeben kann, wie sie durch den o. a. Vorgang von Dummy-Bit-Hinzufügen, Interleaven und Dummy-Bit-Entfernen resultieren würde, jedoch ohne dass dieses Hinzufügen und Entfernen von Dummy-Bits wirklich durchgeführt werden muss.Around the actual adding and later Removing the dummy bits to the "real" information bits To save, it would be useful to interleave the index Information bits, d. H. after the complete interleave process and reading from the interleaver memory, calculate immediately to be able to. So it would be a calculation rule desirable that the index of an information bit in Interleaveten information word can specify directly as they pass through the o. a. Dummy bit add operation, interleaving and dummy bit removal would result, but without that adding and removing dummy bits really must be performed.

Eine einfache Berechnungsvorschrift kann aber nicht angegeben werden, weil der 3GPP-Interleaver folgenden Nachteil hat: Der Rahmeninterleaver dieses Standards ist immer ein Rechteck-Interleaver, dessen Elementezahl das Produkt aus Zeilen- und Spaltenzahl ist. Da die Blockgröße beliebig wählbar ist, müssen zwangsläufig – wie oben beschrieben – zusätzliche Dummy-Bits eingefügt werden, und nach dem Interleaving wieder entfernt werden. Alle Zeilen des Rahmeninterleavers sind nach dem Einfügen der Dummy-Bits gleich lang, und alle Intra-Zeilen-Interleaver arbeiten deshalb mit der gleichen Zeilenlänge. Die Dummy-Bits werden deshalb durch die Intra- und Inter-Zeilen-Permutationen in der Regel über den ganzen Rahmen-Interleaver verstreut. Außerdem kann die Anzahl von Dummy-Bits in verschiedenen Zeilen unterschiedlich sein. Die unregelmäßige Verteilung der Dummy-Bits über den gesamten Rahmen-Interleaver erlaubt keine einfache direkte Berechnung für den Index des interleaveten Informationsbits (nach Intra- und Inter-Zeilen-Permutation und Auslesen), da diese Unregelmäßigkeiten in der Formel Berücksichtigung finden müssten.A simple calculation rule can not be specified because the 3GPP interleaver has the following disadvantage: the frame interleaver this standard is always a rectangular interleaver whose number of elements the product of row and column number is. Because the block size is arbitrary, inevitably - like described above - additional dummy bits inserted be removed, and removed after interleaving. All lines of the frame interleaver are after inserting the dummy bits the same length, and all intra-line interleavers work with the same line length. The dummy bits are therefore through the intra and inter-row permutations usually over the whole frame interleaver scattered. In addition, can the number of dummy bits in different lines varies be. The irregular distribution of the dummy bits over the entire frame interleaver does not allow a simple direct calculation for the index of the interleaved information bit (after Intra- and inter-row permutation and readout), since these are irregularities would have to be considered in the formula.

Auch beim cdma2000- bzw. 3GPP2-Interleaver (siehe CDMA-2000 3GPP2 C.S0002-C Version 2.0 Physical Layer Standard for cdma2000 Spread Spectrum Systems Revision C, sowie Douglas N. Rowitch and Fuyun Ling: ”Turbo Code Interleaver using Linear Congruential Sequence”, US Patent 6 304 991 B1 , 1998, und Steven J. Halter: ”Random-Access Multi-Directional CDMA2000 Turbo Code Interleaver”, US Patent 6 871 303 B2 , 2001) wird grundsätzlich ein Rahmeninterleaver in Form eines Rechteck-Interleavers verwendet, bei dem ein Intra- und ein Inter-Zeilen-Interleaving durchgeführt wird. Hier basiert das Intra-Zeilen-Interleaving auf einem Linear Congruenten Interleaving, das ebenfalls eine quasizufällige Permutation bewirken soll, während das Inter-Zeilen-Interleaving durch eine stellenmäßige Umkehrung der Bitdarstellung des jeweiligen Zeilenindexes (bit reversal) erreicht wird.Also for the cdma2000 or 3GPP2 interleaver (see CDMA-2000 3GPP2 C.S0002-C Version 2.0 Physical Layer Standard for cdma2000 Spread Spectrum Systems Revision C, as well as Douglas N. Rowitch and Fuyun Ling: "Turbo Code Interleaver using Linear Congruential Sequence " US Pat. No. 6,304,991 B1 , 1998, and Steven J. Halter: "Random-Access Multi-Directional CDMA2000 Turbo Code Interleaver", US Pat. No. 6,871,303 B2 , 2001), a frame interleaver in the form of a rectangular interleaver is used, in which intra- and inter-line interleaving are performed. Here, the intra-line interleaving is based on a linear congruent interleaving, which is also intended to cause a quasi-random permutation, while inter-line interleaving is achieved by a literal reversal of the bit representation of the respective line index (bit reversal).

Beim 3GPP2-Interleaver ist ebenfalls zusätzlicher Aufwand erforderlich, um den Interleaver an die gewählte Wortgröße anzupassen, da das Produkt aus Zeilen- und Spaltenanzahl in der Regel ungleich der Informationswortgröße ist. Es müssen daher stets 2 Kandidaten-Adressen für ein Informationsbit erzeugt werden, die zwischen Null und dem Produkt aus Zeilen- und Spaltenanzahl liegen. Falls die erste Kandidaten-Adresse gültig ist, d. h. zwischen Null und der Informationswortgröße liegt, wird sie verwendet, ansonsten wird sie verworfen und die zweite Kandidaten-Adresse verwendet, die in diesem Fall immer gültig ist (das lässt sich für den verwendeten Algorithmus zeigen).The 3GPP2 interleaver also requires additional effort to match the interleaver to the selected word size because the product of row and column counts is typically unequal to the information word size. It is therefore always necessary to generate 2 candidate addresses for an information bit which are between zero and the product of row and column number. If the first candidate address is valid, ie between zero and the information word size, it is used, otherwise it will be ver uses the second candidate address, which in this case is always valid (this can be shown for the algorithm used).

Während der Rahmen-Interleaver des 3GPP2-Standards immer ein Rechteck-Interleaver ist, kann die Informationswortgröße hier in gewissen Stufen gewählt werden, und für jede Informationswortgröße gibt es eigene Parametersätze für den Interleaver. Die Informationswortgrößen sind in der Regel ungleich der Anzahl von Elementen des Rechteck-Rahmen-Interleavers (Produkt aus Zeilen- und Spaltenanzahl). Obwohl bei dieser Interleaver-Konstruktion kein Auffüllen des Rahmen-Interleavers mit Dummy-Bits nötig ist, ist auch hier eine einfache unmittelbare Berechnung der Adresse eines Informationsbits nicht möglich.While the frame interleaver of the 3GPP2 standard is always a rectangular interleaver is, the information word size here in certain Levels are selected, and for each information word size There are own parameter sets for the interleaver. The information word sizes are usually unequal the number of elements of the rectangle frame interleaver (product from row and column number). Although in this interleaver design no padding of the frame interleaver with dummy bits necessary is, here is a simple immediate calculation of the address an information bit not possible.

Eine Eigenheit des 3GPP2-Interleavers ist nämlich, dass in der Adress-Berechnungsvorschrift ein Counter-Wert vorkommt, der ungleich dem Index des Bits ist, das permutiert werden soll. Ist beispielsweise eine Blockgröße von 378 Bits gewählt, dann geht der Bit-Index von 0–377, während der Counter-Wert alle Werte von 0 bis 511 durchschreitet. Für die Berechnung der Adresse von Bit mit Index Null wird auch der Counter-Wert Null verwendet, aber bereits für das Bit mit Index 3 wird nicht mehr der Counter-Wert 3, sondern 4 verwendet, hingegen wird der Counter-Wert 3 verworfen. Dies liegt am Algorithmus aus dem 3GPP2-Standard, der Kandidaten-Adressen erzeugt, die für manche Indizes ungültig sind. Die Ursache hierfür liegt darin, dass das Inter- und Intra-Zeilen-Interleaving immer davon ausgeht, dass jede Zeile bzw. Spalte vollständig und gleich lang ist.A The peculiarity of the 3GPP2 interleaver is that in the Address calculation rule a counter value occurs, the unequal is the index of the bit to be permuted. Is for example a Block size selected from 378 bits, then the bit index goes from 0-377, while the counter value all values from 0 to 511 are crossed. For the calculation the address of bit with index zero also becomes the counter value zero used, but already for the bit with index 3 will not work more of the counter value 3 but 4 uses, however, the Counter value 3 discarded. This is due to the algorithm of the 3GPP2 standard, the Candidate addresses generated that are invalid for some indexes are. The reason for this is that the inter- and intra-line interleaving always assumes that every line or column is complete and the same length.

Ohne den oben genannten Counter und die Erzeugung von möglicherweise ungültigen Kandidaten-Adressen ist deren Berechnung nicht durchführbar. Nachteilig an diesem Verfahren ist eben gerade das Erzeugen ungültiger Adressen, die verworfen werden müssen, wodurch wiederum mehr Prozessierungszeit bzw. ein höherer Implementierungsaufwand zur parallelen Erzeugung zweier Adressen notwendig ist.Without the above counter and the generation of possibly invalid candidate addresses are not calculated feasible. The disadvantage of this method is just now generating invalid addresses that are discarded which, in turn, require more processing time, respectively higher implementation effort for parallel generation two addresses is necessary.

Es ist die Aufgabe der vorliegenden Erfindung, ein verbessertes Konzept zum Verwürfeln von Informationsworten zu schaffen.It The object of the present invention is an improved concept to scramble information words.

Diese Aufgabe wird gelöst durch einen Interleaver gemäß einem der Ansprüche 1 oder 9, einen Indexgenerator gemäß An spruch 17 und ein Verfahren gemäß einem der Ansprüche 15, 16 oder 22.These Task is solved by an interleaver according to a of claims 1 or 9, an index generator according to claim 17 and a method according to one of the claims 15, 16 or 22.

Die vorliegende Erfindung basiert auf dem Kerngedanken, dass Rechteck-Interleaver, für Informationsworte verwendet werden können, deren Länge nicht dem Produkt aus Zeilen- und Spaltenanzahl des Rechteck-Interleavers entspricht. Ausführungsbeispiele der vorliegenden Erfindung werden im Folgenden auch Fast-Rechteck-Interleaver genannt („fast” im Sinne von „nahezu”). Insbesondere können diese Fast-Rechteck-Interleaver miteinander in einer Art und Weise verschachtelt werden, dass sich eine gute Interleaver-Qualität ergibt, d. h. dass ein Error Floor einer WER einer Turbokodierung entsprechend niedrig ausgestaltet ist. Gleichzeitig lassen sich diese Interleaver auf unterschiedliche Blockgrößen, d. h. Informationswortlängen anwenden, ohne dass sog. Dummy-Bits eingefügt werden, bzw. ohne dass Dummy-Adressen, d. h. ungültige Kandidaten-Adressen erzeugt werden. Ferner bieten die Fast-Rechteck-Interleaver die Möglichkeit, einfache Berechnungsvorschriften zwischen ursprünglichem Index eines Informationsbits (vor dem Interleaven) und der Adresse nach dem Interleaven zu implementieren, so dass vergleichsweise niedrige Anforderungen an Speicher und Prozessierungszeit gestellt werden müssen.The The present invention is based on the core idea that rectangular interleavers, can be used for information words, their length is not the product of row and column count of the rectangle interleaver. embodiments In the following, the present invention will also be described as fast-rectangle interleavers called ("almost" in the sense of "almost"). In particular, these fast-rectangle interleavers can interact with each other be nested in a way that is a good one Interleaver quality results, d. H. that an Error Floor a WER a turbo coding configured correspondingly low is. At the same time, these interleavers can be set to different Block sizes, d. H. Information word lengths without inserting so-called dummy bits, or without dummy addresses, d. H. invalid candidate addresses be generated. Furthermore, the fast-rectangular interleavers provide the Possibility of simple calculation rules between original index of an information bit (before the interleave) and to implement the address after the interleaven, so that comparatively low demands on storage and processing time have to be asked.

Ein weiterer Kerngedanke der vorliegenden Erfindung ist, dass innerhalb eines Fast-Rechteck-Interleavers, dessen Zeilen z. B. über weitere Fast-Rechteck-Interleaver in sich verwürfelt werden können. In anderen Worten, ist es ein Kerngedanke der vorliegenden Erfindung, dass verbesserte Interleaving-Ergebnisse durch Verschachteln von Fast-Rechteck-Interleaver erzeugt werden können, wobei die weiteren Fast-Rechteck-Interleaver ein Intra-Zeilen-Interleaving des 1. Fast-Rechteck-Interleavers vornehmen können. In Ausführungsbeispielen kann ein zusätzlicher Fast-Rechteck-Interleaver zum Einsatz kommen, z. B. um ein Inter-Zeilen-Interleaving durchzuführen. Ausführungsbeispiele der vorliegenden Erfindung bilden somit den Vorteil, dass gute Interleaving-Ergebnisse mit geringem Aufwand und geringen Hardware-Anforderungen erzeugt werden können.One Another core idea of the present invention is that within a fast-rectangle interleaver whose lines z. B. over more fast-rectangle interleavers get scrambled can. In other words, it is a core idea of the present Invention that improved interleaving results by interleaving can be generated by fast-rectangular interleaver, where the other near-rectangle interleavers use an intra-line interleaving of the 1st fast-rectangle interleaver. In Embodiments may include an additional near-square interleaver are used, for. To perform inter-line interleaving. Embodiments of the present invention form thus the advantage that good interleaving results with low Effort and low hardware requirements can be generated.

Im Folgenden werden Ausführungsbeispiele der vorliegenden Erfindung anhand der beiliegenden Figuren näher erläutert.in the Following are embodiments of the present Invention explained in more detail with reference to the accompanying figures.

Es zeigenIt demonstrate

1a ein Ausführungsbeispiel eines Fast-Rechteck-Interleavers; 1a an embodiment of a fast-rectangular interleaver;

1b ein Flussdiagram eines Ausführungsbeispiels eines Verfahrens zum Generieren eines Ausgangsindex; 1b a flowchart of an embodiment of a method for generating an output index;

2 eine Darstellung einer Index-Permutation eines Ausführungsbeispiels eines Fast-Rechteck-Interleavers; 2 a representation of an index permutation of an embodiment of a fast-rectangular interleaver;

3 ein Fehlermuster eines Ausführungsbeispiels eines Fast-Rechteck-Interleavers; 3 an error pattern of an embodiment of a fast-rectangular interleaver;

4 ein weiteres Ausführungsbeispiel eines Fast-Rechteck-Interleavers; 4 another embodiment of a fast-rectangular interleaver;

5 ein Ausführungsbeispiel eines Intra-Zeilen-Fast-Rechteck-Interleavers; 5 an embodiment of an intra-line fast-rectangle interleaver;

6 eine Illustration einer Index-Permutation mit einem Ausführungsbeispiel eines Fast-Rechteck-Interleavers; 6 an illustration of an index permutation with an embodiment of a fast-rectangle interleaver;

7 eine Illustration eines Ausführungsbeispiels eines Inter-Zeilen-Fast-Rechteck-Interleavers; 7 an illustration of an embodiment of an inter-line fast-rectangle interleaver;

8 eine weitere Illustration eines Inter-Zeilen-Fast-Rechteck-Interleavers; 8th another illustration of an inter-line fast-rectangle interleaver;

9 eine Illustration einer Index-Permutation eines Ausführungsbeispiels mit verschachtelten Fast-Rechteck-Interleavern; 9 an illustration of an index permutation of an embodiment with interlaced fast-rectangle interleavers;

10a Simulationsergebnisse unter Verwendung eines Ausführungsbeispiels mit Hilfe von Wortfehlerraten; 10a Simulation results using an embodiment using word error rates;

10b Simulationsergebnisse zum Vergleich eines Ausführungsbeispiels mit einem 3GPP2 Interleaver; 10b Simulation results for comparing an embodiment with a 3GPP2 interleaver;

10c weitere Simulationsergebnisse zum Vergleich eines Ausführungsbeispiels mit einem 3GPP2 Interleaver; 10c further simulation results for comparing an embodiment with a 3GPP2 interleaver;

11 ein Blockschaltbild eines Turbo Kodierers; 11 a block diagram of a turbo encoder;

12 ein Blockschaltbild eines Faltungskodierers; 12 a block diagram of a convolutional encoder;

13 ein Blockschaltbild eines Turbo Dekodierers; 13 a block diagram of a turbo decoder;

14 eine Indexpermutation eines Zufallsinterleavers; 14 an index permutation of a random interleaver;

15 eine Illustration eines Rechteck-Interleavers. 15 an illustration of a rectangle interleaver.

Im Folgenden werden Ausführungsbeispiele der vorliegenden Erfindung im Detail erläutert.in the Following are embodiments of the present Invention explained in detail.

Im Folgenden wird zunächst die Funktion eines Ausführungsbeispiels eines Fast-Rechteck-Interleavers erläutert. Der Fast-Rechteck-Interleaver unterscheidet sich dadurch von einem Rechteck-Interleaver, dass beim Fast-Rechteck-Interleaver die Anzahl von Bits oder Stellen ungleich des Produkts aus Zeilen- und Spaltenanzahl sein kann, wie dies beispielhaft in der 1a dargestellt ist. Die 1a zeigt eine Anordnung aus 3 Zeilen mit den Indizes 0, 1, 2 sowie 4 Spalten 0, 1, 2, 3, in die lediglich 10 Indizes von 0 bis 9 eingetragen sind. Es ist zu erkennen, dass in der 1a die Spalten 2 und 3 nur 2 Stellen enthalten, wohingegen die Spalten 0 und 1 je 3 Stellen aufweisen. In aride ren Worten ausgedrückt, weisen die Zeilen 0 und 1 jeweils 4 Elemente auf, wohingegen die Zeile 2 lediglich 2 Elemente aufweist. In die einzelnen Zellen oder Elemente, sind jeweils zunächst ein Leseindex X und ein Schreibindex Y eingetragen, wobei X und Y durch einen Schrägstrich getrennt sind. Es ist zu erkennen, dass der Fast-Rechteck-Interleaver zunächst zeilenweise beschrieben wird und dann spaltenweise ausgelesen wird.The function of an exemplary embodiment of a fast-rectangular interleaver will first be explained below. The fast-rectangle interleaver differs from a rectangular interleaver in that, in the case of the fast-square interleaver, the number of bits or digits can be different from the product of row and column numbers, as shown by way of example in US Pat 1a is shown. The 1a shows an arrangement of 3 rows with the indices 0, 1, 2 and 4 columns 0, 1, 2, 3, in which only 10 indices are entered from 0 to 9. It can be seen that in the 1a columns 2 and 3 contain only 2 digits, whereas columns 0 and 1 each have 3 digits. In terms of arid ren words, lines 0 and 1 each have 4 elements, whereas the line 2 has only 2 elements. In the individual cells or elements, in each case a reading index X and a writing index Y are first entered, wherein X and Y are separated by a slash. It can be seen that the fast-rectangle interleaver is first described line by line and then read out column by column.

Im Folgenden werden Ausführungsbeispiele solcher Interleaver als Fast-Rechteck-Interleaver bezeichnet. Diese Interleaver werden – wie „normale” Rechteck-Interleaver – zeilenweise geschrieben und spaltenweise gelesen, wobei jedoch die letzte Zeile bzw. die letzten Spalten kürzer als die vorangehenden sein können. Allgemein kann in Ausführungsbeispielen auch spaltenweise geschrieben und zeilenweise gelesen werden. Generell werden die betrachteten Vektoren, d. h. z. B. Komponenten, Elemente oder Stellen eines Informationswortes in eine Matrix-artige Form gebracht, d. h. in Zeilen und Spalten gitterförmig angeordnet, wobei nicht alle Zeilen und Spalten voll besetzt sein müssen. Durch Transponieren können zeilen- und spaltenweise Operationen ineinander überführt werden. Ferner werden im Folgenden die Begriffe Komponenten, Elemente, Stellen äquivalent dazu verwendet, eine Position in einem Vektor bzw. in einer Matrix zu bezeichnen. Komponenten, Elemente und Stellen können eine oder mehrere Binärstellen umfassen, sind jedoch nicht darauf beschränkt.In the following, embodiments of such interleavers are referred to as fast-rectangular interleavers. These interleavers are written line by line and read column by column like "normal" rectangular interleavers, but the last row or columns may be shorter than the previous ones. In general, in embodiments, columns can also be written and read line by line. In general, the considered vectors, ie, for example, components, elements or locations of an In Formation word brought in a matrix-like form, ie grid-shaped arranged in rows and columns, not all rows and columns must be fully occupied. By transposing, line and columnwise operations can be interconverted. Further, in the following, the terms components, elements, locations will be equivalently used to denote a position in a vector or in a matrix. Components, elements, and locations may include, but are not limited to, one or more binary locations.

Im Folgenden sei davon ausgegangen, dass Num_Bits die Anzahl von Informationsbits sei, d. h. die Anzahl der Elemente des Interleavers, und Num_Cols die Spaltenanzahl ist. Es ergibt sich folglich, dass die Anzahl Num_Full_Rows vollständige Zeilen und die Anzahl Num_Rem_Bits von Bits in der unvollständigen, d. h. letzten Zeile, falls eine solche vorhanden ist, wie folgt berechnet werden kann: Num_Full_Rows = Floor(Num_Bits/Num_Cols), Num_Rem_Bits = Num_Bits mod Num_Cols,wobei die Floor-Funktion das Runden zur nächsten ganzen Zahl kleiner oder gleich des Arguments bewirkt. Eine solche Permutationsvorschrift ist ferner in Form eines Index-Diagramms in der 2 gezeigt. Die 2 zeigt eine Zuordnung zwischen den Bitpositionen der 2. Komponente auf der Abszisse und der Bitposition der 1. Komponente auf der Ordinate, wie sie in einem Ausführungsbeispiel erzeugt werden kann. Gemäß dem oben stehenden Beispiel wird von einem Fast-Rechteck-Interleaver mit einer Länge von Num_Bits = 1146 Bits mit Num_Cols = 34 Spalten ausgegangen. Die 2 zeigt, dass die letzte Zeile unvollständig ist, wie im unteren rechten Bereich zu erkennen ist.In the following, assume that Num_bits is the number of information bits, that is, the number of elements of the interleaver, and Num_Cols is the number of columns. It follows, therefore, that the number Num_Full_Rows of complete lines and the number Num_Rem_Bits of bits in the incomplete, ie last line, if any, can be calculated as follows: Num_Full_Rows = Floor (Num_Bits / Num_Cols), Num_Rem_Bits = Num_Bits mod Num_Cols, the Floor function causes the rounding to the nearest integer less than or equal to the argument. Such a permutation rule is also in the form of an index diagram in the 2 shown. The 2 shows an association between the bit positions of the 2nd component on the abscissa and the bit position of the 1st component on the ordinate, as may be generated in one embodiment. According to the above example, a fast-rectangle interleaver with a length of Num_bits = 1146 bits with Num_Cols = 34 columns is assumed. The 2 shows that the last line is incomplete, as can be seen in the lower right area.

Ein Fast-Rechteck-Interleaver geht in einen Rechteck-Interleaver über, wenn die letzte Zahl bzw. die letzten Spalten vollständig sind und somit die Anzahl von Bits gleich dem Produkt aus Zeilen- und Spaltenanzahl ist.One Fast Rectangle Interleaver Transforms into a Rectangle Interleaver if the last number or columns are complete and thus the number of bits equals the product of line and number of columns.

Ausführungsbeispiele von Fast-Rechteck-Interleavern haben den großen Vorteil, dass die oben geschriebenen Fehlermuster gut auseinandergerissen werden können, d. h. wenn die Entfernung der Einsen in der 1. Komponente gering ist, so dass der 1. Komponentenkodierer nur wenige Einsen an seinem Ausgang erzeugt, dann ist die Entfernung dieser Einsen nach der Permutation, also am Eingang des 2. Komponentenkodierers groß, und in der 2. Komponente werden viele Einsen, d. h. ein hohes Gewicht, erzeugt.embodiments Fast Rectangle Interleavers have the big advantage that the error patterns written above are well torn apart can be, d. H. if the distance of the ones in the 1st component is low, so the 1st component encoder only produces a few ones at its output, then the distance of these ones after the permutation, ie at the input of the 2nd component encoder big, and in the 2nd component many ones, i. H. a heavy weight, generated.

In der Simulation erweist sich jedoch ein einzelner Fast-Rechteck-Interleaver in einem Turbo Kode als wenig nützlich. Auch hier tritt ein Error Floor auf, weil die Minimaldistanz dmin zu niedrig ist, wie die strich-punktierte Kurve mit der Bezeichnung „Fast-Rechteck-Interleaver” in der 10a zeigt.In the simulation, however, a single fast-square interleaver in a Turbo code proves to be of little use. Again, an error floor occurs because the minimum distance d min is too low, such as the dash-dotted curve called "fast-rectangle interleaver" in the 10a shows.

Die 3 zeigt eine weitere schematische Darstellung eines Ausführungsbeispiels eines Fast-Rechteck-Interleavers, die die Erhöhung des Error Floors anhand eines Fehlermusters näher erläutern soll. In der 3 lässt sich der Grund für den erhöhten Error Floor erkennen. Im Informationswort befinden sich 4 Einsen, die im Fast-Rechteck-Interleaver an den Ecken eines Rechteckes bzw. eines Quadrates stehen. Wenn das Informationswort nun zeilenweise in die Interleaver-Matrix geschrieben wird, steht in 2 Zeilen das Fehlermuster 10000001. Dieses Fehlermuster wird also auch 2 mal am Eingang des 1. Komponentenkodierers auftreten, so dass dieser eine Folge von Paritätsbits niedrigen Gewichts ausgibt. Aber auch an 2 Spalten erscheint auf diese Art und Weise dieses Fehlermuster, was bedeutet, dass es auch 2 mal am Eingang des 2. Komponentenkodierers auftritt und hier ebenfalls ein niedriges Paritätsgewicht erzeugt. Die 4 Einsen sind demnach also derart im Fast-Rechteck-Interleaver angeordnet, dass ein Kodewort niedrigen Gewichts erzeugt wird.The 3 shows a further schematic representation of an embodiment of a fast-rectangle interleaver, which is intended to explain the increase of the error floor using an error pattern in more detail. In the 3 the reason for the increased error floor can be recognized. The information word contains 4 ones, which stand in the near-rectangle interleaver at the corners of a rectangle or a square. If the information word is now written line by line into the interleaver matrix, the error pattern 10000001 is displayed in 2 lines. This error pattern will therefore also occur twice at the input of the 1st component encoder, so that it outputs a sequence of low-weight parity bits. However, this error pattern also appears on 2 columns in this way, which means that it also occurs twice at the input of the 2nd component encoder and likewise produces a low parity weight here. Accordingly, the 4 ones are arranged in the near-rectangle interleaver such that a code word of low weight is generated.

Diese negative Eigenschaft wirkt sich sogar noch stärker aus, wenn dieses Rechteck, dessen Ecken durch die 4 Einsen gebildet werden, beliebig innerhalb des Fast-Rechteck-Interleavers verschoben wird, da bei jeder Verschiebung eine ungünstige Anordnung mit resultierendem niedrigen Kodewort-Gewicht entsteht. Diese Kombinationen sind für den erhöhten Error Floor verantwortlich. Ein einzelner Fast-Rechteck-Interleaver liefert demnach noch nicht die gewünschte Leistungsfähigkeit für Turbo Kodes und erscheint daher wenig praxistauglich.These Negative property has an even stronger effect if this rectangle, whose corners are formed by the 4 ones, is moved arbitrarily within the near-rectangle interleaver, because with each shift an unfavorable arrangement with resulting in low codeword weight arises. These combinations are responsible for the increased error floor. A single fast-rectangle interleaver does not deliver yet the desired performance for Turbo codes and therefore seems less practicable.

Die Ausführungsbeispiele der vorliegenden Erfindung umfassen einen Interleaver zum Verwürfeln eines Informationswortes, wobei das Informationswort eine Vielzahl von Stellen aufweist, um ein permutiertes Informationswort zu erhalten. Der Interleaver kann dabei eine erste Interleaverstufe (Rahmen-Interleaver) zum zeilenweisen Anordnen der Stellen des Informationswortes in einer Mehrzahl von ersten Zeilen und ersten Spalten aufweisen, wobei die ersten Zeilen mindestens eine erste Zeile mit einer Lücke aufweisen und die ersten Spalten wenigstens eine erste Spalte mit einer Lücke aufweisen. Ferner kann der Interleaver eine zweite Interleaverstufe zum Verwürfeln der Stellen der einen ersten Zeile mit der Lücke durch Vertauschen wenigstens zweier Stellen der einen ersten Zeile umfassen, so dass eine Position der Lücke unverändert bleibt, um eine erste verwürfelte Zeile zu erhalten, und zum Ersetzen der einen der ersten Zeilen mit der ersten verwürfelten Zeile. Die erste Interleaverstufe kann ausgebildet sein, um die ersten Spalten spaltenweise auszulesen und die Stellen der ersten Spalten lückenlos aneinander zu reihen, um das permutierte Informationswort zu erhalten.Embodiments of the present invention include an interleaver for scrambling an information word, the information word having a plurality of locations to obtain a permuted information word. The interleaver can be a first interleaver stage (frame interleaver) for arranging the locations of the information word in a plurality of first rows and first Columns, wherein the first rows have at least a first row with a gap and the first columns have at least a first column with a gap. Further, the interleaver may comprise a second interleaver stage for scrambling the locations of a first row with the gap by interchanging at least two locations of a first row such that a position of the gap remains unchanged to obtain a first scrambled row and replacing the first row one of the first lines with the first scrambled line. The first interleaver stage can be designed to read out the first columns column-by-column and to consecutively line up the locations of the first columns in order to obtain the permuted information word.

In Ausführungsbeispielen kann die zweite Interleaverstufe ausgebildet sein, um die Stellen der einen ersten Zeile durch eine linear congruente Interleaver-Regel zu Verwürfeln, so dass eine Position der Lücke unverändert bleibt, um die erste verwürfelte Zeile zu erhalten, und zum Ersetzen der einen der ersten Zeilen mit der ersten verwürfelten Zeile.In Embodiments may be the second interleaver stage be trained to pass the digits of a first line through a to scramble linear congruente interleaver rule so that a position of the gap remains unchanged to get the first scrambled line and replace it one of the first lines with the first scrambled Row.

Die zweite Interleaverstufe kann ferner ausgebildet sein, um die Stellen der einen ersten Zeile zeilenweise in einer Mehrzahl von zweiten Zeilen und zweiten Spalten anzuordnen, und zum spaltenweisen Auslesen der Stellen, um eine erste verwürfelte Zeile zu erhalten und zum Ersetzen der einen der ersten Zeilen mit der ersten verwürfelten Zeile. Die erste Interleaverstufe kann ferner ausgebildet sein, um die ersten Zeilen spaltenweise und lückenlos auszulesen, um das permutierte Informationswort zu erhalten.The The second interleaver stage can also be designed to cover the locations of a first row by row in a plurality of second Arrange rows and second columns, and column-wise read the places to get a first scrambled line and replacing one of the first lines with the first one scrambled Row. The first interleaver stage can also be designed to read out the first lines in columns and without gaps, to get the permuted information word.

In Ausführungsbeispielen kann der Interleaver ferner eine dritte Interleaverstufe aufweisen, zum zeilenweisen Anordnen von Zeilenindizes der ersten Zeilen in dritten Zeilen und dritten Spalten, und zum spaltenweisen Auslesen der Zeilenindizes, um verwürfelte Zeilenindizes zu erhalten, und zum Vertauschen der ersten Zeilen bzw. ersten verwürfelten Zeilen basierend auf den verwürfelten Zeilenindizes. Die erste Interleaverstufe kann dann ausgebildet sein, um die basierend auf den verwürfelten Zeilenindizes vertauschten ersten Zeilen spaltenweise und lückenlos auszulesen, um das permutierte Informationswort zu erhalten.In In embodiments, the interleaver may further comprise a third interleaver stage, for arranging line by line Row indices of the first rows in third rows and third columns, and for column-wise reading of the row indexes to be scrambled To get line indexes and to swap the first lines or first scrambled lines based on the scrambled ones Row indices. The first interleaver stage can then be formed to be based on the scrambled line indexes exchanged first lines column by column and read out completely, to get the permuted information word.

In Ausführungsbeispielen können die Stellen des Informationswortes Softbits oder Symbole mit mehr als 2 Werten, d. h. eine Mehrzahl von Binärstellen pro Stelle oder Element des Informationswortes umfassen. In anderen Ausführungsbeispielen kann jede Stelle des Informationswortes genau eine Binärstelle umfassen.In Embodiments may be the digits of the information word Softbits or symbols with more than 2 values, d. H. a majority of binary digits per digit or element of the information word include. In other embodiments, each digit of the information word comprise exactly one binary digit.

In weiteren Ausführungsbeispielen kann die erste Interleaverstufe ausgebildet sein, um die Stellen des Informationswortes in einer Anzahl von ersten Zeilen und einer Anzahl von ersten Spalten anzuordnen, wobei das Informationswort eine Anzahl von Stellen aufweist, die kleiner als das Produkt aus der Anzahl von ersten Zeilen und der Anzahl von ersten Spalten ist und die erste Interleaverstufe ferner ausgebildet ist, um beim spaltenweisen Auslesen auftretende Lücken zu überspringen, d. h. lückenlos auszulesen.In Further embodiments, the first Interleaverstufe be formed to the places of the information word in one To arrange number of first rows and a number of first columns, wherein the information word has a number of digits that smaller than the product of the number of first rows and the Number of first columns and the first interleaver stage further is designed to gaps occurring in the column-wise readout to skip, d. H. read out completely.

In Ausführungsbeispielen kann auch die zweite Interleaverstufe ausgebildet sein, um die Stellen der einen der ersten Zeilen in einer Anzahl von zweiten Zeilen und einer Anzahl von zweiten Spalten einzuordnen, wobei die eine der ersten Zeilen eine Anzahl von Stellen aufweist, die kleiner als das Produkt der Anzahl von zweiten Zeilen und der Anzahl von zweiten Spalten ist und die zweite Interleaverstufe ferner ausgebildet ist, um beim spaltenweisen Auslesen auftretende Lücken zu überspringen bzw. lückenlos auszulesen.In Embodiments may also include the second interleaver stage be trained to put the bodies of one of the first lines in a number of second rows and a number of second columns to classify, wherein the one of the first lines a number of digits which is smaller than the product of the number of second lines and the number of second columns and the second interleaver stage is further adapted to occur in the column-wise reading Gaps to skip or gapless read.

In Ausführungsbeispielen kann ferner die dritte Interleaverstufe ausgebildet sein, um die Zeilenindizes in einer Anzahl von dritten Zeilen und einer Anzahl von dritten Spalten anzuordnen, wobei die Anzahl von Zeilenindizes kleiner als das Produkt aus der Anzahl von dritten Zeilen und dritten Spalten ist, und die dritte Interleaverstufe ferner ausgebildet ist, um beim spaltenweisen Auslesen auftretende Lücken zu überspringen bzw. lückenlos auszulesen.In Embodiments may further include the third interleaver stage be formed to the row indexes in a number of third To arrange rows and a number of third columns, the Number of line indices less than the product of the number of third rows and third columns, and the third level of interleaving is further adapted to occur in the column-wise reading Gaps to skip or gapless read.

In Ausführungsbeispielen können die erste, die zweite, oder die dritte Interleaverstufe ausgebildet sein, um als Informationswort einen Vektor von Lese- oder Schreibadressen zu verwürfeln. In anderen Worten können Ausführungsbeispiele auch dazu verwendet werden, entsprechende Lese- und Schreibadressen zu verwürfeln und somit auch Interleaver- bzw. De-Interleaver-Vorschriften zu realisieren. In anderen Worten können anstatt einem Informationswort selbst Leseadressen verwürfelt werden und eine Interleaver-Vorschrift durch verwürfeltes Auslesen realisiert werden. Ein verwürfeltes Informationswort kann rückverwürfelt werden, d. h. in den Ursprungszustand zurückversetzt werden, in dem Schreibadressen gemäß den Indizes des Informationswortes verwürfelt werden, und die Stellen des verwürfelten Informationswortes entsprechend an die verwürfelten Schreibadressen geschrieben werden.In Embodiments, the first, the second, or the third interleaver stage to be designed as an information word to scramble a vector of read or write addresses. In other words, embodiments may also be used to appropriate read and write addresses to scramble and thus also interleaver or de-interleaver rules to realize. In other words, instead of one Information word itself reading addresses are scrambled and an interleaver rule by scrambled readout will be realized. A scrambled information word can be reclaimed, d. H. in the original state in the write addresses according to the Indices of the information word are scrambled, and the Adjusting the scrambled information word accordingly written to the scrambled write addresses.

Ausführungsbeispiele von Interleavern können auch eine erste Interleaverstufe (Rahmeninterleaver) zum zeilenweisen Anordnen der Stellen des Informationswortes in einer Mehrzahl von ersten Zeilen und ersten Spalten umfassen. Ferner können die Interleaver eine zweite Interleaverstufe zum Verwürfeln der Stellen einer der ersten Zeilen durch zeilenweises Anordnen der Stellen der einen ersten Zeile in einer Mehrzahl von zweiten Zeilen und zweiten Spalten aufweisen, wobei die zweiten Zeilen mindestens eine zweite Zeile mit einer Lücke aufweisen und die zweiten Spalten wenigstens eine zweite Spalte mit einer Lücke aufweisen, und wobei die zweite Interleaverstufe ausgebildet sein kann, um die Stellen der zweiten Spalten spaltenweise auszulesen und lückenlos aneinander zu reihen, um eine erste verwürfelte Zeile zu erhalten, und zum Ersetzen der einen der ersten Zeilen mit der ersten verwürfelten Zeile, wobei die erste Interleaverstufe ausgebildet sein kann, um die ersten Spalten spaltenweise auszulesen, um das permutierte Informationswort zu erhalten.Embodiments of interleavers may also include a first interleaver stage (frame interleaver). for arranging the locations of the information word line by line in a plurality of first rows and first columns. Furthermore, the interleavers may comprise a second interleaver stage for scrambling the locations of one of the first rows by arranging the locations of the one row in a plurality of second rows and second columns row by row, the second rows having at least one second row with a gap and the second rows Columns have at least one second column with a gap, and wherein the second Interleaverstufe may be formed to read the locations of the second columns column by column and without gaps to obtain a first scrambled line, and to replace the one of the first lines the first scrambled line, wherein the first interleaver stage may be configured to read the first columns column by column to obtain the permuted information word.

In Ausführungsbeispielen kann die erste Interleaverstufe ausgebildet sein, zum zeilenweisen Anordnen der Stellen des Informationswortes in einer Mehrzahl von ersten Zeilen und ersten Spalten, wobei die ersten Zeilen mindestens eine erste Zeile mit einer Lücke aufweisen und die ersten Spalten wenigstens eine erste Spalte mit einer Lücke aufweisen, wobei die erste Interleaverstufe ausgebildet sein kann, um die ersten Spalten spaltenweise auszulesen und die Stellen der ersten Spalten lückenlos aneinander zu reihen, um das permutierte Informationswort zu erhalten.In Embodiments, the first Interleaverstufe formed be, to line by line arranging the positions of the information word in a plurality of first rows and first columns, wherein the first lines at least a first line with a gap and the first columns having at least one first column have a gap, the first interleaver stage can be designed to read the first columns column by column and the positions of the first columns gapless to rank to get the permuted information word.

Ausführungsbeispiels können ferner eine dritte Interleaverstufe aufweisen, die ausgebildet ist, zum zeilenweisen Anordnen von Zeilenindizes der ersten Zeilen in dritten Zeilen und dritten Spalten, und zum spaltenweisen Auslesen der Zeilenindizes um verwürfelte Zeilenindizes zu erhalten und zum Vertauschen der ersten Zeilen basierend auf den verwürfelten Zeilenindizes, wobei die erste Interleaverstufe ausgebildet ist, um die basierend auf den verwürfelten Zeilenindizes vertauschten ersten Zeilen spaltenweise auszulesen, um das permutierte Informationswort zu erhalten.embodiment may further comprise a third interleaver stage which is designed for row indices of the row indexes first rows in third rows and third columns, and column by column Reading the row indexes around scrambled line indexes and to swap the first lines based on the scrambled line indices, the first interleaver level is designed to be based on the scrambled Line indexes swapped to read first lines column by column to get the permuted information word.

Gemäß obiger Erläuterung können die erste, zweite und/oder dritte Interleaverstufe ausgebildet sein, um ein Informationswort zu verarbeiten, bei dem jede Stelle eine Binärstellen umfasst. Die dritte Interleaverstufe kann ausgebildet sein, um die Zeilenindizes in einer Anzahl von dritten Zeilen und einer Anzahl von dritten Spalten anzuordnen, wobei die Anzahl der Zeilenindizes kleiner ist als das Produkt aus der Anzahl von dritten Zeilen und der Anzahl von dritten Spalten und die dritte Interleaverstufe ferner ausgebildet ist, um beim spaltenweisen Auslesen auftretende Lücken zu überspringen. In anderen Worten können beliebige der ersten, zweiten und dritten Interleaverstufe als Fast-Rechteck-Interleaver ausgeführt sein. Die erste, zweite und/oder dritte Interleaverstufe können ausgebildet sein, um als Informationswort einen Vektor von Lese- oder Schreibadressen zu verwürfeln.According to the above Explanation may be the first, second and / or third interleaver stage be formed to an information word to process, where each digit includes a binary digits. The third level of interleaving may be adapted to the row indices in a number of third rows and a number of third columns to arrange, with the number of row indices is smaller than that Product of the number of third lines and the number of third Columns and the third interleaver stage is further formed, to skip gaps when reading columns by column. In other words, any of the first, second and third interleaver stage as a fast-rectangular interleaver be. The first, second and / or third interleaver stage can be formed in order to use a vector of reading or scrambling write addresses.

Ausführungsbeispiele können einen Indexgenerator zum Generieren eines Ausgangsindex basierend auf einem Eingangsindex, einer Spaltenzahl, einer Elementzahl und einer Information über eine un-vollständige Zeile aufweisen. Der Indexgenerator umfasst eine Einrichtung zum Generieren eines Zeilenindex basierend auf dem Eingangsindex und der Spaltenzahl und eine Einrichtung zum Generieren eines Spaltenindex basierend auf dem Eingangsindex und der Spaltenzahl. Ferner umfasst der Indexgenerator eine Einrichtung zum Generieren einer Vollzeilenzahl basierend auf der Elementzahl und der Spaltenzahl und eine Einrichtung zum Generieren einer Restelementzahl basierend auf der Elementzahl und der Spaltenzahl. Der Indexgenerator kann ferner eine Einrichtung zum Ausgeben des Ausgangsindex umfassen, die ausgebildet ist, um für den Fall, dass der Spaltenindex kleiner als die Restelementzahl ist, den Ausgangsindex als Ausgangsindex = (Vollzeilenzahl +1) Spaltenindex + Zeilenindexauszugeben,
und sonst,
für den Fall, dass die Information über die unvollständige Zeile angibt, dass keine unvollständige Zeile vorhanden ist oder der Zeilenindex kleiner oder gleich einem Index einer unvollständigen Zeile ist,
den Ausgangsindex als Ausgangsindex = (Vollzeilenzahl + 1) Restelementzahl + Vollzeilenzahl(Spaltenindex – Restelementzahl) + Zeilenindexauszugeben,
und sonst
den Ausgangsindex als Ausgangsindex = (Vollzeilenzahl + 1)Restelementzahl + Vollzeilenzahl(Spaltenindex – Restelementzahl) + Zeilenindex – 1auszugeben.
Embodiments may include an index generator for generating an output index based on an input index, a column number, an element number, and an incomplete line information. The index generator includes means for generating a row index based on the input index and the column number, and means for generating a column index based on the input index and the column number. Further, the index generator includes means for generating a full-line number based on the element number and the column number, and means for generating a residual element number based on the element number and the column number. The index generator may further comprise means for outputting the output index, which is arranged to, in the event that the column index is smaller than the remaining element number, the output index as Initial Index = (full number +1) Column Index + Row Index issue,
and otherwise,
in the event that the information about the incomplete line indicates that there is no incomplete line or the line index is less than or equal to an index of an incomplete line,
the starting index as Initial index = (full-line number + 1) Remaining element number + full-line number (column index - remaining element number) + line index issue,
and otherwise
the starting index as Initial Index = (full-line number + 1) Remainder element number + full-line number (column index - residual element number) + line index - 1 issue.

Die Einrichtung zum Generieren des Zeilenindex kann ausgebildet sein, um den Zeilenindex durch Abrunden eines Quotienten aus dem Eingangsindex und der Spaltenzahl zu generieren. Die Einrichtung zum Generieren des Spaltenindex kann ausgebildet sein, um den Spaltenindex durch eine Modulo-Operation des Eingangsindex mit der Spaltenzahl zu generieren. Die Einrichtung zum Generieren der Vollzeilenzahl kann ausgebildet sein, um die Vollzeilenzahl durch Abrunden eines Quotienten aus der Elementzahl und der Spaltenzahl zu generieren. Die Einrichtung zum Generieren der Restelementzahl kann ausgebildet sein, um die Restelementzahl durch eine Moduloperation der Elementzahl mit der Spaltenzahl zu generieren.The Means for generating the row index may be formed around the row index by rounding off a quotient from the input index and to generate the number of columns. The device for generating The column index may be configured to pass through the column index generate a modulo operation of the input index with the number of columns. The means for generating the full-line number may be formed to be the full line number by rounding off a quotient to generate the element number and the number of columns. The device for generating the residual element number may be formed to the Remaining element number by a module operation of the element number with the Generate column number.

1b zeigt ein Flussdiagram eines Ausführungsbeispiels eines Verfahrens zum Generieren eines Ausgangsindex. Das Verfahren generiert den Ausgangsindex basierend auf einem Eingangsindex einer Spaltenzahl, einer Elementzahl und einer Information über eine unvollständige Zeile. Das Verfahren umfasst einen Schritt 110 des Generierens eines Zeilenindex basierend auf dem Eingangsindex und der Spaltenzahl. Beispielsweise kann in einem Ausführungsbeispiel der Zeilenindex als Zeilenindex = floor(Eingangsindex/Spaltenzahl)bestimmt werden, wobei die Funktion floor(.) ein Abrunden auf die nächst geringere ganze Zahl realisiert, dies ist in der 1b durch nach unten offene Klammern angedeutet. 1b shows a flowchart of an embodiment of a method for generating an output index. The method generates the output index based on an input index of a column number, an element number, and an incomplete line information. The method comprises a step 110 generating a row index based on the input index and the column number. For example, in one embodiment, the row index may be Row index = floor (input index / column number) are determined, with the function floor (.) Realizes a rounding down to the next lower integer, this is in the 1b indicated by downwardly open brackets.

Der Schritt 110 umfasst ferner das Generieren eines Spaltenindex basierend auf dem Eingangsindex und der Spaltenzahl. Beispielsweise kann in einem Ausführungsbeispiel der Spaltenindex als Spaltenindex = Eingangsindex modulo Spaltenzahlbestimmt werden.The step 110 further comprises generating a column index based on the input index and the column number. For example, in one embodiment, the column index may be Column index = input index modulo column number be determined.

Das Verfahren umfasst einen Schritt 112 des Generierens einer Vollzeilenzahl basierend auf der Elementzahl und der Spaltenzahl. Beispielsweise kann in einem Ausführungsbeispiel die Vollzeilenzahl als Vollzeilenzahl = floor(Elementzahl/Spaltenzahl)bestimmt werden, wobei die Funktion floor(.) ein Abrunden auf die nächst geringere ganze Zahl realisiert, dies ist in der 1b durch nach unten offene Klammern angedeutet. Der Schritt 112 umfasst ferner das Generieren einer Restelementzahl basierend auf der Elementzahl und der Spaltenzahl. Beispielsweise kann in einem Ausführungsbeispiel die Restelementzahl als Restelementzahl = Elementzahl modulo Spaltenzahlbestimmt werden.The method comprises a step 112 generating a full-line number based on the element number and the column number. For example, in one embodiment, the full-line number may be Full line number = floor (element number / number of columns) are determined, with the function floor (.) Realizes a rounding down to the next lower integer, this is in the 1b indicated by downwardly open brackets. The step 112 further comprises generating a remainder element number based on the element number and the number of columns. For example, in one embodiment, the residual element number may be Remaining element number = element number modulo number of columns be determined.

Das Verfahren umfasst mehrere Möglichkeiten des Ausgebens des Ausgangsindex, für den Fall, dass der Spaltenindex kleiner als die Restelementzahl ist, was in der 1b im Schritt 114 überprüft wird, wird der Ausgangsindex als Ausgangsindex = (Vollzeilenzahl +1) Spaltenindex + Zeilenindexausgegeben, vgl. Schritt 116 in 1b. Ansonsten wird für den Fall, dass die Information über die unvollständige Zeile angibt, dass keine unvollständige Zeile vorhanden ist oder der Zeilenindex kleiner oder gleich einem Index einer unvollständigen Zeile ist, vgl. Schritt 118 in 1b, der Ausgangsindex in Schritt 120 als Ausgangsindex = (Vollzeilenzahl + 1)Restelementzahl + Vollzeilenzahl(Spaltertindex – Restelementzahl) + Zeilenindex,und sonst
als Ausgangsindex = (Vollzeilenzahl + 1)Restelementzahl + Vollzeilenzahl(Spaltenindex – Restelementzahl) + Zeilenindex – 1ausgegeben, vgl. Schritt 122.
The method includes several ways of outputting the output index in the event that the column index is smaller than the residual element number, which is in the 1b in step 114 is checked, the output index is called Initial Index = (full number +1) Column Index + Row Index issued, cf. step 116 in 1b , Otherwise, in case the information about the incomplete line indicates that there is no incomplete line or the line index is less than or equal to an index of an incomplete line, cf. step 118 in 1b , the initial index in step 120 when Starting index = (full line number + 1) remaining element number + full line number (Spaltertindex - remaining element number) + line index, and otherwise
when Initial Index = (full-line number + 1) Remainder element number + full-line number (column index - residual element number) + line index - 1 issued, cf. step 122 ,

Ausführungsbeispiele können ferner in Turbo-Kodierern und Turbo-Dekodierern eingesetzt werden.embodiments can also be found in turbo encoders and turbo decoders be used.

Ausführungsbeispiele können ferner einen Rahmen-Interleaver, d. h. eine erste Interleaverstufe umfassen, die einen Fast-Rechteck-Interleaver mit mehreren Zeilen aufweist, von denen die unterste nicht vollständig ist. Die Intra-Zeilen-Interleaver, d. h. die zweite Interleaverstufe, aller Zeilen sind Linear Congruent, wobei die Lücken der letzten Zeile nicht mit interleavet werden. Die Konstante C jedes Linear Congruent Intra-Zeilen-Interleavers kann dabei einzeln einstellbar sein.embodiments Further, a frame interleaver, i. H. a first Interleaf stage comprising a near-square interleaver has several lines, the lowest of which is not complete is. The intra-line interleavers, d. H. the second interleaver stage, All lines are linear congruent, with the gaps of the last line will not be with interleavet. The constant C every Linear Congruent Intra-Lines Interleavers can be set individually be.

Ein Ausführungsbeispiel eines Turbo-Kode Interleavers wird im Folgenden im Detail erläutert. Das Ausführungsbeispiel basiert auf einer rekursiven Verwendung von Ausführungsbeispielen von Fast-Rechteck-Interleavern. In diesem Ausführungsbeispiel wird ein Fast-Rechteck-Interleaver sowohl als Rahmen-Interleaver als auch auf darunterliegenden Stufen für Intra- und Inter-Zeilenpermutationen verwendet.One Embodiment of a turbo-code interleaver is explained in detail below. The embodiment is based on a recursive use of embodiments of fast-rectangle interleavers. In this embodiment becomes a fast-rectangle interleaver both as a frame interleaver as well as on underlying levels for intra and inter-row permutations used.

Die zu permutierenden Informations-Bits des Informationswortes werden zunächst zeilenweise in einen Rahmen-Interleaver, d. h. in eine erste Interleaverstufe geschrieben. Im Folgenden wird der Vorsatz „Rahmen” auch weggelas sen. Die erste Interleaverstufe ist in diesem Ausführungsbeispiel als ein Fast-Rechteck-Interleaver ausgebildet mit vorgegebener Anzahl Num_Bits von Bits und Spaltenzahl Num_Cols, wobei sich die Anzahl Num_Full_Rows vollständiger Zeilen und die Anzahl Num_Rem_Bits von Bits in der unvollständigen letzten Zeile aus diesen beiden Werten ergibt.The to be permuted information bits of the information word first line by line into a frame interleaver, d. H. written in a first interleaver level. The following is the Intent "frame" also omitted. The first interleaver stage is in this embodiment as a fast-rectangle interleaver formed with a predetermined number Num_bits of bits and number of columns Num_Cols, where the number Num_Full_Rows is more complete Lines and the number Num_Rem_bits of bits in the incomplete last line from these two values.

Beispielsweise könnte
Num_Bits = 22
Num_Cols = 8
→ Num_Full_Rows = 2
→ Num_Rem_Bits = 6.
For example, could
Num_Bits = 22
Num_Cols = 8
→ Num_Full_Rows = 2
→ Num_Rem_Bits = 6.

Die 4 illustriert ein Ausführungsbeispiel mit 22 Stellen, die in den Zeilen 0, 1 und 2, sowie in den Spalten 0–7 angeordnet sind. In der 4 ist zu sehen, dass die letzte Zeile nicht ganz vollständig ist, bzw. dass die Spalten 6 und 7 nur zwei Elemente aufweisen, wohingegen alle übrigen Spalten drei Elemente aufweisen. Die Elemente zeigen dabei die Ursprungspositionen der Stellen in dem Informationswort, d. h. sie können als Indizes bzw. Adressen der eigentlichen Informationswortstellen oder Elemente betrachtet werden. In der 4 ist zu erkennen, dass die erste Interleaverstufe ausgebildet ist, um die Stellen des Informationswortes zeilenweise in einer Mehrzahl von ersten Zeilen und ersten Spalten anzuordnen.The 4 illustrates an embodiment with 22 digits arranged in rows 0, 1 and 2 as well as in columns 0-7. In the 4 It can be seen that the last line is not quite complete, or that columns 6 and 7 have only two elements, whereas all the other columns have three elements. The elements in this case show the original positions of the positions in the information word, ie they can be regarded as indices or addresses of the actual information word locations or elements. In the 4 It can be seen that the first interleaver stage is designed to arrange the locations of the information word line by line in a plurality of first rows and first columns.

Ferner ist in der 4 zu erkennen, dass alle Zeilen Num_Cols_Bits aufweisen, nur die letzte, unvollständige Zeile beinhaltet Num_Rem_Bits, falls dieser Wert überhaupt größer als 0 ist und eine unvollständige Zeile existiert.Furthermore, in the 4 to recognize that all rows have Num_Cols_bits, only the last, incomplete row contains Num_Rem_Bits if this value is ever greater than 0 and an incomplete row exists.

Die nun folgende zweite Interleaverstufe dient zum zeilenweisen Permutieren. Auch hier kommt ein Fast-Rechteck- Interleaver im vorliegenden Ausführungsbeispiel zum Einsatz. Für jede der Zeilen wird sozusagen ein Intra-Zeilen-Interleaver eingesetzt. Im Folgenden bezeichnet der Zusatz „Intra” stets Parameter, die zu einem solchen Intra-Zeilen-Interleaver, d. h. zur zweiten Interleaverstufe gehören. Die Elementzahl Num_Intra_Bits des Intra-Zeilen-Interleavers, d. h. der zweiten Interleaverstufe, ist entweder gleich Num_Cols, falls die Zeile vollständig ist oder Num_Rem_Bits für die letzte Zeile, falls sie unvollständig ist.The The following second interleaver stage is used for permutation per line. Again, there is a fast-rectangle interleaver in the present embodiment for use. For each of the lines becomes, so to speak, an intra-line interleaver used. In the following, the term "Intra" always means Parameters related to such an intra-row interleaver, i. H. belong to the second Interleaverstufe. The element number Num_Intra_Bits of the intra-line interleaver, d. H. the second interleaver stage, is equal to Num_Cols if the line is complete is or Num_Rem_Bits for the last line, in case it is incomplete is.

Die zweite Interleaverstufe ist ausgebildet zum zeilenweisen Anordnen der Elemente einer der ersten Zeilen in einer Mehrzahl von zweiten Zeilen und zweiten Spalten. Die Spaltenanzahl, die im Folgenden auch Num_Intra_Cols des Intra-Zeilen-Interleavers genannt wird, ist frei wählbar. Daraus ergeben sich die Anzahl Num_Full_Intra_Rows vollständiger Zeilen und die Zahl Num_Rem_Intra_Bits von Bits in der unvollständigen letzten Zeile. Für jede Zeile des Rahmen-Interleavers, d. h. der ersten Interleaverstufe, wird folgendes durchgeführt: Der zugehörige Intra-Zeilen-Interleaver, d. h. die zweite Interleaverstufe, wird zeilenweise geschrieben und spaltenweise ausgelesen. So wird eine permutierte Zeile, d. h. eine erste verwürfelte Zeile erhalten, die dann die entsprechende Zeile ersetzt. Um zum vorangehenden Beispiel zurückzukommen, würde beispielsweise in der ersten Zeile:
Num_Intra_Bits = Num_Cols = 8
Num_Intra_Cols = 3
Num_Full_Intra_Rows = 2
Num_Rem_Intra_Bits = 2
The second interleaver stage is arranged to arrange the elements of one of the first rows in a plurality of second rows and second columns in rows. The number of columns, which is also called Num_Intra_Cols of the intra-line interleaver in the following, is freely selectable. This results in the number Num_Full_Intra_Rows of full lines and the number Num_Rem_Intra_Bits of bits in the incomplete last line. The following is carried out for each line of the frame interleaver, ie the first interleaver stage: The associated intra-line interleaver, ie the second interleaver stage, is written line by line and read out column by column. Thus, a permuted line, ie a first scrambled line is obtained, which then replaces the corresponding line. To return to the previous example, for example, in the first line:
Num_Intra_Bits = Num_Cols = 8
Num_Intra_Cols = 3
Num_Full_Intra_Rows = 2
Num_Rem_Intra_Bits = 2

Zweite Zeile:
Num_Intra_Bits = Num_Cols = 8
Num_Intra_Cols = 2
→ Num_Full_Intra_Rows = 4
→ Num_Rem_Intra_Bits = 0
Second line:
Num_Intra_Bits = Num_Cols = 8
Num_Intra_Cols = 2
→ Num_Full_Intra_Rows = 4
→ Num_Rem_Intra_Bits = 0

Dritte Zeile:
Num_Intra_Bits = Num_Rem_Bits = 6
Num_Intra_Cols = 2
→ Num_Full_Intra_Rows = 3
→ Num_Rem_Intra_Bits = 0.
Third line:
Num_Intra_Bits = Num_Rem_Bits = 6
Num_Intra_Cols = 2
→ Num_Full_Intra_Rows = 3
→ Num_Rem_Intra_Bits = 0.

Die 5 illustriert diese Vorgehensweise basierend auf dem Beispiel der 4. Die 5 zeigt die Anordnung der Indizes der ersten Zeile der ersten Interleaverstufe der 4 in zweiten Zeilen und zweiten Spalten. Die 5 zeigt, dass die Indizes der ersten Zeile der 4 nun in zweite Zeilen und zweite Spalten geschrieben wurden, in einem nächsten Schritt werden die Indizes der 5 nun spaltenweise ausgelesen und zurück in die Zeilen der 4 geschrieben. Ein solches Beispiel ist in der 6 dargestellt, die nun die verwürfelten Zeilen der 4 zeigt, die sich aus dem spaltenweisen Auslesen der zweiten Interleaverstufe der 5 ergeben. In der 6 ist gut zu erkennen, dass innerhalb jeder Zeile die Elemente lediglich verwürfelt wurden, die Zeilen untereinander jedoch nicht verwürfelt wurden.The 5 illustrates this approach based on the example of 4 , The 5 shows the arrangement of the indices of the first row of the first interleaver stage 4 in second rows and second columns. The 5 shows that the indices of the first line of the 4 now in second lines and second columns have been written, in a next step, the indexes of 5 now read column by column and back into the lines of 4 written. Such an example is in the 6 which now shows the scrambled lines of the 4 shows that from the column-wise readout of the second Interleaverstufe the 5 result. In the 6 It is easy to see that within each line the elements were only scrambled, but the lines were not scrambled among each other.

Als nächster Schritt wird eine Inter-Zeilen-Permutation durchgeführt, anhand einer dritten Interleaverstufe. Die dritte Interleaverstufe ist ausgebildet, um die Zeilenindizes einer der ersten Zeilen zeilenweise in dritten Zeilen und dritten Spalten anzuordnen und zum spaltenweisen Ausle sen der Zeilenindizes, um verwürfelte Zeilenindizes zu erhalten, und zum Vertauschen der ersten Zeilen basierend auf den verwürfelten Zeilenindizes. In anderen Worten werden hier ganze Zeilen des Rahmen-Interleavers, d. h. der ersten Interleaverstufe, miteinander vertauscht. Die Permutation zwischen diesen Zeilen wird in dem vorliegenden Ausführungsbeispiel erneut durch einen Fast-Rechteck-Interleaver beschrieben, dessen Elementzahl Num_Inter_Elems gleich der Anzahl von Zeilen, vollständig oder unvollständig, des Rahmen-Interleavers, d. h. der ersten Interleaverstufe ist, d. h. entweder Num_Full_Rows oder Num_Full_Rows + 1.When next step, an inter-row permutation is performed based on a third interleaver stage. The third interleaver stage is designed to line by line indices one of the first lines to arrange in third rows and third columns and column by column Reading the row indexes, scrambled row indexes and to swap the first lines based on the scrambled line indexes. In other words here whole lines of the frame interleaver, d. H. the first interleaver level, with each other reversed. The permutation between these lines is in the present Embodiment again by a fast-rectangular interleaver whose number of elements Num_Inter_Elems equals the number of lines, complete or incomplete, of Frame interleavers, d. H. the first interleaver stage, i. H. either Num_Full_Rows or Num_Full_Rows + 1.

Die Spaltenanzahl Num_Inter_Cols des Inter-Zeilen-Interleavers kann jedoch frei gewählt werden, und daraus ergibt sich die Anzahl Num_Full_Inter_Rows vollständiger Zeilen und die Anzahl Num_Rem_Inter_Elems von Elementen der letzten unvollständigen Zeile, soweit vorhanden. Die Elemente des Inter-Zeilen-Interleavers sind nun nicht einzelne Stellen oder Bits, sondern ganze Zeilen, die zeilenweise geschrieben und spaltenweise gelesen werden, beispielsweise repräsentiert durch die jeweiligen Zeilenindizes.The Number of columns Num_Inter_Cols of inter-line interleaver can However, be chosen freely, and this results in the Number of Num_Full_Inter_Rows full lines and the Number Num_Rem_Inter_Elems of elements of the last incomplete Line, if available. The elements of the inter-line interleaver are not single digits or bits, but whole lines, written line by line and read column by column, for example represented by the respective line indices.

Zurückkehrend zum obigen Beispiel würde dies bedeuten:
Num_Inter_Elems = Num_Full_Rows + 1 = 3
(eine unvollständige Zeile)
Num_Inter_Cols = 2
Num_Full_Inter_Rows = 1
Num_Rem_Inter_Elems = 1.
Returning to the above example, this would mean:
Num_Inter_Elems = Num_Full_Rows + 1 = 3
(an incomplete line)
Num_Inter_Cols = 2
Num_Full_Inter_Rows = 1
Num_Rem_Inter_Elems = 1.

Der zugehörige Fast-Rechteck-Interleaver, d. h. die dritte Interleaverstufe des Ausführungsbeispiels, für die Inter-Zeilen-Permutation ist in der 7 dargestellt. Die 7 zeigt die Anordnung der Zeilenindizes in dritten Zeilen und dritten Spalten. In der 7 bezeichnet ein mit den „i” bezeichnetes Element eine ganze Zeile i, wie sie nach der Intra-Zeilen-Permutation, d. h. nach der zweiten Interleaverstufe, im Rahmen-Interleaver, d. h. in der ersten Interleaverstufe, steht. Die dritte Interleaverstufe mit den Zeilenindizes wird nun entsprechend spaltenweise ausgelesen, die Zeilen der ersten Interleaverstufe entsprechend umsortiert. Der Rahmen-Interleaver, d. h. die erste Interleaverstufe, wird während der Inter-Zeilen-Permutation und nach der Intra-Zeilen-Permutation wie in der 8 dargestellt, umgeordnet. Die 8 zeigt nun die erste Interleaverstufe, nach dem Zeilen- Interleaving durch die dritte Interleaverstufe.The associated fast-rectangle interleaver, ie the third interleaver stage of the embodiment, for the inter-row permutation is shown in FIG 7 shown. The 7 shows the arrangement of the row indices in third rows and third columns. In the 7 "i" denotes a whole line i as in the frame interleave after the intra-line permutation, ie after the second interleaver step aver, ie in the first interleaver stage. The third interleaver stage with the row indexes is now read out column by column, and the rows of the first interleaver stage are sorted accordingly. The frame interleaver, ie, the first interleaver stage, becomes during the inter-row permutation and after the intra-row permutation as in FIG 8th displayed, rearranged. The 8th now shows the first interleaver stage, after the line interleaving through the third interleaver stage.

Als letzter Schritt werden durch die erste Interleaverstufe nun basierend auf den gemäß der verwürfelten Zeilenindizes vertauschten ersten Zeilen, diese spaltenweise ausgelesen, um das permutierte Informationswort zu erhalten. In anderen Worten wird der so umgeordnete Rahmen-Interleaver spaltenweise ausgelesen, fehlende Elemente in der unvollständigen Zeile können übersprungen werden.When last step are now based on the first interleaver level on the according to the scrambled line indices exchanged first lines, these columns read out to the to get permuted information word. In other words the thus rearranged frame interleaver is read column by column, missing Elements in the incomplete line can be skipped become.

Die permutierten Informations-Bits werden also in der folgenden Reihenfolge des Original-Index ausgegeben:
0, 16, 8, 3, 18, 10, 6, 20, 12, 1, 17, 14, 4, 19, 9, 7, 21, 11, 2, 13, 5, 15.
The permuted information bits are thus output in the following order of the original index:
0, 16, 8, 3, 18, 10, 6, 20, 12, 1, 17, 14, 4, 19, 9, 7, 21, 11, 2, 13, 5, 15.

An diesem Beispiel lässt sich erkennen, dass Ausführungsbeispiele des Interleavers eine Mischung aus Strukturiertheit und scheinbarer Unordnung, die an Pseudo-Zufall erinnert, darstellt, wie es beispielsweise für Turbo-Kodierer vorteilhaft ist.At In this example, it can be seen that exemplary embodiments the interleaver is a mixture of structure and apparent Disorder, reminiscent of pseudo-coincidence, represents, as it does for example Turbo encoder is advantageous.

Statt die Permutation wie oben beschrieben durchzuführen, in der die Informations-Bits innerhalb eines Interleavers permutiert werden, der die Elemente in einem internen Speicher enthält, kann auch ein Adressgenerator verwendet werden, der für jedes Informations-Bit am Ausgang des Turbo- Kode-Interleavers dessen Adresse bzw. Index im Eingangs-Vektor berechnet, an der dieses Bit vor der Permutation entsprechend der o. g. Vorschrift steht. Dieser Adressgenerator liefert also eine Leseadresse, so dass während des Lesens die o. g. Permutation durchgeführt wird.Instead of perform the permutation as described above, in which permutes the information bits within an interleaver which contains the elements in an internal memory, An address generator can also be used for every bit of information at the turbo-code interleaver's output Address or index calculated in the input vector at which this bit before the permutation according to the o. g. Rule is. This Address generator thus provides a read address, so that during of reading the o. g. Permutation is performed.

Analog dazu kann in Ausführungsbeispielen auch ein Adressgenerator verwendet werden, der für jedes Informationsbit am Eingang des Interleavers, d. h. am Eingang des Ausführungsbeispiels, dessen Adresse bzw. Index im Ausgabe-Vektor berechnet, wo dieses Bit entsprechend der o. g. Vorschrift hin permutiert wird. Ausführungsbeispiele können somit Adressgeneratoren umfassen, die eine Schreibadresse liefern, so dass während des Schreibens die o. g. Permutation durchgeführt wird. Damit umfassen Ausführungsbeispiele ebenfalls entsprechende De-Interleaver.Analogous In addition, in embodiments, an address generator used for each information bit at the input of the interleaver, d. H. at the entrance of the embodiment, whose address or index in the output vector calculates where this Bit corresponding to the o. G. Regulation is permuted. embodiments may thus include address generators having a write address so that while writing the o. g. permutation is carried out. This includes embodiments also corresponding de-interleavers.

Im Folgenden wird ein weiteres Ausführungsbeispiel betrachtet.in the Next, another embodiment will be considered.

Für folgendes Ausführungsbeispiel gilt:
Num_Rem_Bits sei die Anzahl von Elementen in der kürzeren (unvollständigen) Zeile (0 falls nicht vorhanden).
For the following embodiment applies:
Num_Rem_Bits is the number of elements in the shorter (incomplete) line (0 if not present).

Num_Full_Rows sei die Anzahl von vollständigen Zeilen.Num_Full_Rows Let be the number of complete lines.

Short_Row_Idx (gezählt ab 0) sei der Zeilen-Index der kürzeren Zeile nach der Inter-Zeilen-Permutation. Falls keine unvollständige Zeile vorhanden ist, ist Short_Row_Idx = Num_Full_Rows (d. h. ein nicht vorhandener Zeilen-Index).Short_Row_Idx (counted from 0) let the line index be the shorter one Line after the inter-line permutation. If not incomplete Line is Short_Row_Idx = Num_Full_Rows (that is, a non-existent line index).

Es wird ein Element i des Informationswortes am Eingang des Interleavers betrachtet, wobei die Adresse berechnet werden soll, an die es durch den Interleave-Vorgang im Speicher geschrieben werden soll (d. h. in der 1. Komponente war dieses Element in Position i und berechnet wird die Position in der 2. Komponente).It becomes an element i of the information word at the input of the interleaver considering the address to which it is to be calculated write the interleave process in memory (i.e. in the 1st component, this element was in position i and calculated becomes the position in the 2nd component).

Ilvd_Col_Idx (gezählt ab 0) sei der Spalten-Index nach der Intra-Zeilen-Permutation.Ilvd_Col_Idx (counted from 0), let the column index be after the intra-row permutation.

Ilvd_Row_Idx (gezählt ab 0) sei der Zeilen-Index nach der Inter-Zeilen-Permutation.Ilvd_Row_Idx (counted from 0) let the row index be after the inter-row permutation.

Dann lässt sich eine Berechnungsvorschrift der Adresse des interleaveten Elements i angeben:

Figure 00380001
Figure 00390001
Then a calculation rule of the address of the interleaved element i can be specified:
Figure 00380001
Figure 00390001

Mit dem oben aufgeführten Ausführungsbeispiel ist es also möglich, für ein Element mit Index i am Eingang des Interleavers eine Schreibadresse unmittelbar zu berechnen, d. h. ohne Hinzufügen, Verarbeiten und Entfernen von Dummy-Bits und ohne die Erzeugung von ggf. ungültigen Kandidaten-Adressen. Ausser der o. a. Berechnungsvorschrift werden lediglich die Vorschriften zur Berechnung von Ilvd_Col_Idx und Ilvd_Row_Idx aus der Position i benötigt, die unmittelbar aus der Definition von Fast-Rechteck-Interleavern angebbar ist.With The above embodiment is it is thus possible for an element with index i am Input of the interleaver to calculate a write address directly, d. H. without adding, processing and removing dummy bits and without the generation of possibly invalid candidate addresses. Except the o. A. The calculation rule will only be the regulations to calculate Ilvd_Col_Idx and Ilvd_Row_Idx from position i needed directly from the definition of fast-rectangle interleavers is specifiable.

In dem Folgenden Ausführungsbeispiel wird auch die Bestimmung der Zeilen- und Spaltenindizes im Detail erläutert. Das Ausführungsbeispiel umfasst einen Indexgenerator zum Generieren eines Ausgangsindex basieren auf einem Eingangsindex. In dem folgenden Ausführungsbeispiel wird für einen wahlfreien Bit-Index (Eingangsindex) dessen Schreib-Adresse erzeugt (Ausgangsindex). Diese Berechnung wird als Abfolge von Rechen-Schritten angegeben. Außerdem ist eine rekursive Verwendung derselben Funktionen (Fast_Rect_Write_To_2D() und Fast_Rect_Read_From_2D()) sowohl für die Rahmen- als auch die Intra- und Inter-Zeilen-Permutation in weiteren Ausführungsbeispielen denkbar. Zudem wird für jeden gültigen Bit-Index eine gültige Schreibadresse erzeugt, so dass keinerlei Signalisierung über die Gültigkeit der erzeugten Schreibadresse nötig ist.In the following embodiment, the determination of the row and column indices will also be explained in detail. The embodiment includes an index generator for generating an output index based on an input index. In the following embodiment, for an optional bit index (input index), its write address is generated (output index). This calculation is given as a sequence of calculation steps. There is also a recursive use of the same functions (Fast_Rect_Write_To_2D () and Fast_Rect_Read_From_2D ()) for both the frame and intra and Inter-row permutation conceivable in further embodiments. In addition, a valid write address is generated for each valid bit index, so that no signaling on the validity of the generated write address is necessary.

Für den äquivalenten Vorgang, dass der Indexgenerator für einen Bit-Index der zweiten Komponente Lese-Adressen erzeugen soll, so dass während des Lesens eines externen Speichers das Interleaving bzw. die Verwürfelung erfolgt, lässt sich ebenso in Form eines geschlossenen Programmes angeben, bei dem keine ungültigen Lese-Adressen erzeugt werden und kann analog erfolgen.For the equivalent process that the index generator for generate a bit index of the second component read addresses, so while reading an external memory the Interleaving or the scrambling is done leaves also indicate themselves in the form of a closed program No invalid read addresses can and can not be generated carried out analogously.

Ausführungsbeispiel können eine besonders aufwandsgünstige Implementierung aufweisen, wenn die Schreib- oder Lese-Adressen sequentiell erzeugt werden, d. h. wenn die Eingangsvariable, nämlich der Bit-Index der 1. bzw. 2. Komponente, immer in Schritten von 1 erhöht wird. Insbesondere kann in diesen Ausführungsbeispielen die Berechnung des abgerundeten Quotienten und des Restes bei allen Divisionen eingespart werden.embodiment can be a particularly cost-effective implementation when the write or read addresses are generated sequentially be, d. H. if the input variable, namely the bit index 1st or 2nd component, always increased in increments of 1 becomes. In particular, in these embodiments the calculation of the rounded quotient and the remainder at all Divisions are saved.

Im folgenden wird das Ausführungsbeispiel für einen Generator zur Erzeugung von Schreib-Adressen (Ausgangsindex) für einen wahlfreien Index eines Bits (Eingangsindex) vor dem Interleaven angegeben. Ein Schreiben dieses Bits in die erzeugte Adresse ist äquivalent zum Interleaven des Bits für die eingestellten Interleaver-Parameter. Das Ausführungsbeispiel ist in der Notation der Sprache Matlab abgefasst.in the The following will be the embodiment for a Generator for generating write addresses (output index) for an optional index of a bit (input index) before interleaving specified. Writing this bit to the generated address is equivalent for interleaving the bit for the set interleaver parameters. The embodiment is in the notation of language Matlab drafted.

Figure 00400001
Figure 00400001

Figure 00410001
Figure 00410001

Figure 00420001
Figure 00420001

Figure 00430001
Figure 00430001

Figure 00440001
Figure 00440001

In einem weiteren Ausführungsbeispiel, werden die Parameter wie folgt gewählt:
Num_Bits = 1146
Num_Cols = 191
Num_Full_Rows = 6
Num_Rem_Bits = 0(keine unvollständigen Zeilen)
→ für alle 6 Zeilen ist Num_Intra_Bits = 191;
In a further embodiment, the parameters are chosen as follows:
Num_Bits = 1146
Num_Cols = 191
Num_Full_Rows = 6
Num_Rem_Bits = 0 (no incomplete rows)
→ for all 6 lines Num_Intra_Bits = 191;

Die anderen Parameter ergeben sich dann wie in der folgenden Tabelle angegeben, die die Struktur dieses Turbo Kode Interleavers zeigt: Zeilen-Index Num_Intra_Cols Num_Full_Intra_Rows Num_Rem_Intra_Bits 0 17 11 4 1 12 15 11 2 26 7 9 3 37 5 6 4 14 13 9 5 21 9 2 The other parameters are then given as shown in the following table, which shows the structure of this turbo-code interleaver: Row index Num_Intra_Cols Num_Full_Intra_Rows Num_Rem_Intra_Bits 0 17 11 4 1 12 15 11 2 26 7 9 3 37 5 6 4 14 13 9 5 21 9 2

In einem weiteren Ausführungsbeispiel, werden die Parameter wie folgt gewählt:
Num_Bits = 12282
Num_Cols = 2047
Num_Full_Rows = 6
Num_Rem_Bits = 0 (keine unvollständigen Zeilen)
→ für alle 6 Zeilen ist Num_Intra_Bits = 2047;
In a further embodiment, the parameters are chosen as follows:
Num_Bits = 12282
Num_Cols = 2047
Num_Full_Rows = 6
Num_Rem_Bits = 0 (no incomplete rows)
→ for all 6 lines Num_Intra_Bits = 2047;

Die anderen Parameter ergeben sich dann wie in der folgenden Tabelle angegeben, die die Struktur dieses Turbo Kode Interleavers zeigt: Zeilen-Index Num_Intra_Cols Num_Full_Intra_Rows Num_Rem_Intra_Bits 0 39 52 19 1 54 37 49 2 30 68 7 3 47 43 26 4 66 31 1 5 35 58 17 The other parameters are then given as shown in the following table, which shows the structure of this turbo-code interleaver: Row index Num_Intra_Cols Num_Full_Intra_Rows Num_Rem_Intra_Bits 0 39 52 19 1 54 37 49 2 30 68 7 3 47 43 26 4 66 31 1 5 35 58 17

9 zeigt ein Schaubild der Zuordnung der Positionen der ersten und zweiten Komponente für ein Ausführungsbeispiel mit einer Blocklänge von 1146 Bits. Die dort gezeigte Per mutation eines Ausführungsbeispiels entspricht einer rekursiven Verwendung von Fast-Rechteck-Interleavern in den drei Interleaverstufen. 9 FIG. 12 is a diagram showing the assignment of the positions of the first and second components for an embodiment having a block length of 1146 bits. The per mutation of an embodiment shown there corresponds to a recursive use of fast-rectangular interleavers in the three interleaver stages.

Die 10a zeigt Simulationsergebnisse für Wortfehlerraten WER (WER = word error rate) über Eb/N0 in dB, d. h. Bitenergie Eb über Rauschleistungsdichte N0. Die Simulationsergebnisse sind für drei verschiedene Interleaver im Zusammenspiel mit dem oben betrachteten Turbo-Kodierer bzw. Turbo-Dekodierer angegeben für eine Wortlänge von 1146 Bits. Die obere Kurve, die mit der gestrichelten Linie angegeben und mit „Zufalls-Interleaver” bezeichnet ist, wurde mit einem Zufalls-Interleaver erzeugt. Die zweite Kurve, die mit einer strichpunktierten Linie angegeben ist, entspricht einem einzelnen Fast-Rechteck-Interleaver und ist mit „Fast-Rechteck-Interleaver” bezeichnet. Die mit dem oben beschriebenen Ausführungsbeispiel der drei Interleaverstufen erreichte Kurve ist mit einer durchgezogenen Linie angegeben und mit „Ausführungsbeispiel” bezeichnet.The 10a shows simulation results for word error rates WER (WER) over Eb / N0 in dB, ie bit energy Eb over noise power density N0. The simulation results are given for three different interleavers in conjunction with the turbo coder and turbo decoder considered above for a word length of 1146 bits. The upper curve, indicated by the dashed line and labeled "Random Interleaver," was generated with a random interleaver. The second curve, indicated by a dash-and-dot line, corresponds to a single fast-square interleaver and is called a "fast-rectangular interleaver". The curve obtained with the above-described embodiment of the three interleaver stages is indicated by a solid line and designated by "exemplary embodiment".

Die 10a zeigt die Leistungsfähigkeit eines Pseudo-Zufalls-Interleavers und eines einfachen Fast-Rechteck-Interleavers in der Länge 1146 mit 34 Spalten, sowie die WER-Kurve des oben vorgestellten Interleavers. Verwendet wird jeweils ein Turbo-Kode-Interleaver mit einer Koderate von 1/2 mit Komponentenkodes der Gedächtnislänge 3. Wie erkennbar ist, ist die Leistungsfähigkeit des Ausführungsbeispiels deutlich besser als die der beiden anderen Turbo-Kode-Interleaver. Auch ist im Gegensatz zu den anderen beiden Interleavern kein deutlicher Error Floor erkennbar, was den Vorteil des Ausführungsbeispiels gegenüber den herkömmlichen Interleavern deutlich herausstellt.The 10a shows the performance of a pseudo-random interleaver and a simple fast-rectangle interleaver in length 1146 with 34 columns, as well as the WER curve of the interleaver presented above. In each case, a turbo-code interleaver with a code rate of 1/2 with component codes of memory length 3 is used. As can be seen, the performance of the exemplary embodiment is significantly better than that of the two other turbo-code interleavers. Also, in contrast to the other two interleavers no significant Error Floor can be seen, which clearly highlights the advantage of the embodiment over the conventional interleavers.

10b zeigt Simulationsergebnisse zum Vergleich eines Ausführungsbeispiels mit einem 3GPP2 Interleaver anhand deren Wortfehlerraten (WER). Der Kurvenverlauf der WER für das Ausführungsbeispiel ist mit „Ausführungsbeispiel” bezeichnet, der Verlauf der WER des 3GPP2-Interleavers ist mit „3GPP2 ilv.” bezeichnet. Der Vergleich wurde dabei für eine Koderate von 1/4 durchgeführt. In der 10b ist deutlich zu erkennen, dass das Ausführungsbeispiel einen deutlich niedrigeren Error Floor erzeugt. Das Ausführungsbeispiel liefert einen um ca. Faktor 2 niedrigeren Error Floor bzw. liefert 0.2 dB Gewinn in SNR für die gleiche WER. 10c zeigt weitere Simulationsergebnisse zum Vergleich eines Ausführungsbeispiels mit einem 3GPP2 Interleaver in der gleichen Darstellung, wie sie bereits anhand der 10b erläutert wurde. Die 10c zeigt einen Vergleich bei einer Koderate von 2/3. Das Ausführungsbeispiel ist dabei in etwa so gut wie der 3GPP2-Interleaver, im Arbeitspunkt WER = 2·10 – 3 kann er ca. 0.1 dB in SNR gegenüber dem 3GPP2 gewinnen. Es lässt sich demnach erkennen, dass sowohl für sehr niedrige, wie auch für hohe Coderaten, Ausführungsbeispiele mindestens so gut wie der 3GPP2 sind und dessen Leistungsfähigkeit sogar übertreffen. 10b shows simulation results for comparing an embodiment with a 3GPP2 interleaver based on their word error rates (WER). The waveform of the WER for the embodiment is labeled "Embodiment", the course of the WER of the 3GPP2 interleaver is designated "3GPP2 ilv." The comparison was carried out for a code rate of 1/4. In the 10b It can clearly be seen that the embodiment generates a significantly lower error floor. The embodiment provides an error floor that is lower by about a factor of 2, or provides 0.2 dB gain in SNR for the same WER. 10c shows further simulation results for the comparison of an embodiment with a 3GPP2 interleaver in the same representation as already described with reference to FIG 10b was explained. The 10c shows a comparison at a code rate of 2/3. The exemplary embodiment is approximately as good as the 3GPP2 interleaver; at the operating point WER = 2 × 10 -3, it can gain approximately 0.1 dB in SNR compared to 3GPP2. Thus, it can be seen that for both very low and high code rates, embodiments are at least as good as 3GPP2 and even exceed its performance.

Ausführungsbeispiele bieten gegenüber dem 3GP22-Interleaver ferner Vorteile hinsichtlich der flexiblen Konfigurierbarkeit. Die Verwendung einer Linear Congruent Permutation (3GPP2-Interleaver) für das Intra-Zeilen-Interleaving erlaubt nicht beliebige Inkremente (Konstante C bei Linear Congruent-Berechnungsvorschrift), sondern nur diejenigen, die relativ Prim zur Interleaverlänge sind. Ausführungsbeispiele eines Fast-Rechteck-Interleavers erlauben hingegen immer eine freie Wahl der Anzahl von Spalten, so dass auch für die Anzahl von Zeilen eine große Auswahl zur Verfügung steht. Aufgrund der größeren Wahlfreiheit besteht hier ein höheres Potenzial, geeignete Parameter für eine gute Leistungsfähigkeit zu finden.embodiments offer further advantages over the 3GP22 interleaver in terms of flexible configurability. The use of a Linear Congruent Permutation (3GPP2 interleaver) for the Intra-line interleaving does not allow arbitrary increments (constant C in Linear Congruent calculation rule), but only those which are relatively prime to the interleaving length. embodiments a fast-rectangle interleaver, on the other hand, always allow a free one Choice of the number of columns, so also for the number There is a wide choice of lines available. Because of the greater freedom of choice exists here a higher potential, suitable parameters for to find a good performance.

Ausführungsbeispiele bieten ferner den Vorteil, dass sie mit weniger Aufwand implementierbar sind. Beispielsweise beim 3GPP2-Interleaver werden Kandidaten-Adressen erzeugt, die manchmal ungültig sind. Somit erfordern diese Interleaver eine spezielle Strategie, um in jedem Taktzyklus mit Sicherheit eine gültige Adresse zu erhalten, vgl. z. B. Steven J. Halter, ”Random-Access Multi-Directional CDMA2000 Turbo Code Interleaver”, US Patent 6 871 303 B2 , 2001. Hierfür werden in jedem Taktzyklus zwei Kandidaten-Adressen erzeugt. Deshalb ist eine Rückkopplung von einem Teil des Algorithmus, der die Gültigkeit überprüft, zu einem anderen Teil nötig, welcher den Counter erhöht und darauf basierend diese zwei Kandidaten-Adressen erzeugt.Embodiments also offer the advantage that they can be implemented with less effort. For example, the 3GPP2 interleaver generates candidate addresses that are sometimes invalid. Thus, these interleavers require a special strategy to safely obtain a valid address every clock cycle, cf. z. Steven J. Halter, "Random-Access Multi-Directional CDMA2000 Turbo Code Interleaver", US Pat. No. 6,871,303 B2 , 2001. For this purpose, two candidate addresses are generated in each clock cycle. Therefore, feedback from one part of the algorithm checking the validity to another part is needed, which increments the counter and based on these two candidate addresses testifies.

Beim Ausführungsbeispielen von Fast-Rechteck-Interleavern kommen keine ungültigen Kandidaten-Adressen vor, der Algorithmus benötigt keinerlei Feedback und kann optimal gepipelined werden, d. h. er kann sequentiell ausgeführt werden und es sind keine Rückkopplungen erforderlich. Deshalb können Ausführungsbeispiele durch diese Berechnungsvorschrift prinzipiell höhere Taktraten der Schaltung ermöglichen als beispielsweise der 3GPP2-Algorithmus. Ausführungsbeispiele bieten somit den Vorteil, dass gute Leistungsfähigkeit bei geringer Komplexität und geringem Speicherbedarf bereitgestellt werden kann.At the Embodiments of fast-rectangular interleavers come no invalid candidate addresses, the algorithm needs no feedback and can be optimally pipelined be, d. H. it can be executed sequentially and no feedback is required. That's why Embodiments by this calculation rule in principle allow higher clock rates of the circuit as, for example, the 3GPP2 algorithm. embodiments thus offer the advantage of having good performance provided with low complexity and low memory requirements can be.

Insbesondere wird darauf hingewiesen, dass abhängig von den Gegebenheiten das erfindungsgemäße Schema auch in Software implementiert sein kann. Die Implementation kann auf einem digitalen Speichermedium, insbesondere einer Diskette, einem Flash-Speicher, einer CD oder einer DVD mit elektronisch auslesbaren Steuersignalen erfolgen, die so mit einem programmierbaren Computersystem zusammenwirken können, dass das entsprechende Verfahren ausgeführt wird. Allgemein besteht die Erfindung somit auch in einem Computerprogrammprodukt mit auf einem maschinenlesbaren Träger gespeicherten Programmcode zur Durchführung des erfindungsgemäßen Verfahrens, wenn das Computerprogrammprodukt auf einem Rechner abläuft. In anderen Worten ausgedrückt, kann die Erfindung somit als ein Computerprogramm mit einem Programmkode zur Durchführung des Verfahrens realisiert werden, wenn das Computerprogrammprodukt auf einem Computer abläuft.Especially It is noted that depending on the circumstances the inventive scheme also implemented in software can be. The implementation can be done on a digital storage medium, in particular a floppy disk, a flash memory, a CD or a DVD with electronically readable control signals, which can interact with a programmable computer system that the corresponding procedure is carried out. Generally Thus, the invention also exists in a computer program product with program code stored on a machine-readable carrier for carrying out the inventive Procedure when the computer program product runs on a computer. In other words, the invention can thus as a computer program with a program code for execution of the method realized when the computer program product runs on a computer.

11001100
Turbo-KodiererTurbo encoder
11051105
erster Komponenten-Kodiererfirst Component encoder
11101110
Turbo-Kode-InterleaverTurbo code interleaver
11151115
zweiter Komponenten-Kodierersecond Component encoder
11201120
Punktiererpuncturer
12001200
Flip-FlopFlip-flop
12051205
Flip-FlopFlip-flop
12101210
Flip-FlopFlip-flop
12151215
Eingangentrance
12201220
Ausgangoutput
12251225
Ausgangoutput
12301230
RückkoppelzweigFeedback path
13001300
Depunktiererdepuncturing
13051305
erster Komponenten-Dekodiererfirst Component decoder
13101310
zweiter Komponenten-Dekodierersecond Component decoder
13151315
Turbo-Kode-InterleaverTurbo code interleaver
13201320
Turbo-Kode-De-InterleaverTurbo code deinterleaver

ZITATE ENTHALTEN IN DER BESCHREIBUNGQUOTES INCLUDE IN THE DESCRIPTION

Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.This list The documents listed by the applicant have been automated generated and is solely for better information recorded by the reader. The list is not part of the German Patent or utility model application. The DPMA takes over no liability for any errors or omissions.

Zitierte PatentliteraturCited patent literature

  • - EP 1030455 B1 [0037] - EP 1030455 B1 [0037]
  • - US 6304991 B1 [0043] US 6304991 B1 [0043]
  • - US 6871303 B2 [0043, 0143] US 6871303 B2 [0043, 0143]

Zitierte Nicht-PatentliteraturCited non-patent literature

  • - Claude Berrou, Alain Glavieux, and Punya Thitimajshima: „Near Shannon-Limit Error-Correcting Coding and Decoding: Turbo Codes”, Intern. Conf. an Communication, pages 1064–1070, 1993 [0003] - Claude Berrou, Alain Glavieux, and Punya Thitimajshima: "Near Shannon-Limit Error-Correcting Coding and Decoding: Turbo Codes", Intern. Conf. to Communication, pages 1064-1070, 1993 [0003]
  • - Todd K. Moon ”Error Correction Coding”, Wiley, 2007, ISBN 978-0-471-64800-0 [0014] Todd K. Moon "Error Correction Coding", Wiley, 2007, ISBN 978-0-471-64800-0 [0014]
  • - Marco Breiling, „Analysis and Design of Turbo Kode Interleavers”, Shaker Verlag, Aachen, 2002 ISBN 3-8322-0302-8 [0021] Marco Breiling, "Analysis and Design of Turbo Code Interleavers", Shaker Verlag, Aachen, 2002 ISBN 3-8322-0302-8 [0021]
  • - S. Crozier and P. Guinand: ”High-performance low memory interleaver banks for turbocodes”, in Proc. of the 54th IEEE Veh. Tech. Conf (VTC'01), Atlantic City, pp. 2394–2398, Oct. 2001 [0021] - S. Crozier and P. Guinand: "High Performance Low Memory Interleaver Banks for Turbo Codes", in Proc. of the 54th IEEE Veh. Tech. Conf (VTC'01), Atlantic City, pp. 2394-2398, Oct. 2001 [0021]
  • - Johan Hokfelt, Ove Edfors, and Torleiv Maseng: „Interleaver design for turbo codes based an the performance of iterative decoding”, Intern. Conf. an Communications, Communications Theory Mini Conference, pages 93–97, 1999 [0022] - Johan Hokfelt, Ove Edfors, and Torleiv Maseng: "Interleaver design for turbo codes based on the performance of iterative decoding", Intern. Conf. to Communications, Communications Theory Mini Conference, pages 93-97, 1999 [0022]
  • - Sergio Benedetto and Guido Montorsi: „Unveiling Turbo Codes: Some Results an Parallel Concatenated Coding Schemes”, IEEE Trans. an Inform. Theory, 42(2):409–428, 1996 [0030] Sergio Benedetto and Guido Montorsi: "Unveiling Turbo Codes: Some Results to Parallel Concatenated Coding Schemes", IEEE Trans. To Inform. Theory, 42 (2): 409-428, 1996 [0030]
  • - S. Dolinar and D. Divsalar: „Weight Distributions for Turbo Codes Using Random and Nonrandom Permutations”, Jet Propulsion Lab, TDA Prog. Rep., 42–122: 56–65, 1995 [0035] Dolinar and D. Divsalar: "Weight Distributions for Turbo Codes Using Random and Nonrandom Permutations", Jet Propulsion Lab, TDA Prog. Rep., 42-122: 56-65, 1995 [0035]
  • - S. Crozier and P. Guinand: „Highperformance low-memory interleaver banks for turbo-codes”, in Proc. Of the 54th IEEE Veh. Tech. Conf (VTC'01), Atlantic City, pp. 2394–2398, Oct. 2001 [0036] - S. Crozier and P. Guinand: "High-performance low-memory interleaver banks for turbo-codes", in Proc. Of the 54th IEEE Veh. Tech. Conf (VTC'01), Atlantic City, pp. 2394-2398, Oct. 2001 [0036]

Claims (25)

Interleaver zum Verwürfeln eines Informationswortes, wobei das Informationswort eine Vielzahl von Stellen aufweist, um ein permutiertes Informationswort zu erhalten mit folgenden Merkmalen: einer ersten Interleaverstufe zum zeilenweisen Anordnen der Stellen des Informationswortes in einer Mehrzahl von ersten Zeilen und ersten Spalten, wobei die ersten Zeilen mindestens eine erste Zeile mit einer Lücke aufweisen und die ersten Spalten wenigstens eine erste Spalte mit einer Lücke aufweisen; und einer zweiten Interleaverstufe zum Verwürfeln der Stellen der einen ersten Zeile mit der Lücke durch Vertauschen wenigstens zweier Stellen der einen ersten Zeile, so dass eine Position der Lücke unverändert bleibt, um eine erste verwürfelte Zeile zu erhalten, und zum Ersetzen der einen der ersten Zeilen mit der ersten verwürfelten Zeile; wobei die erste Interleaverstufe ausgebildet ist, um die ersten Spalten spaltenweise auszulesen und die Stellen der ersten Spalten lückenlos aneinander zu reihen, um das permutierte Informationswort zu erhalten.Interleaver for scrambling an information word, wherein the information word has a plurality of locations to to obtain a permuted information word with the following features: one first interleaver stage for arranging the locations of the Information word in a plurality of first lines and first Columns, where the first lines have at least a first line with have a gap and the first columns at least have a first column with a gap; and one second interleaver stage for scrambling the digits of the a first line with the gap by swapping at least two places of a first line, so that a position of Gap remains unchanged to a first scrambled Line and replace one of the first lines with the first scrambled line; the first one Interleaver stage is designed to split the first columns read out and the places of the first columns gapless to string together to get the permuted information word. Interleaver gemäß Anspruch 1, bei dem die zweite Interleaverstufe ausgebildet ist, um die Stellen der einen ersten Zeile durch eine linear congruente Interleaver-Regel zu Verwürfeln, so dass eine Position der Lücke unverändert bleibt, um die erste verwürfelte Zeile zu erhalten, und zum Ersetzen der einen der ersten Zeilen mit der ersten verwürfelten Zeile.Interleaver according to claim 1, at the second interleaver stage is formed around the locations a first line through a linearly congruent interleaver rule to scramble, leaving a position of the gap remains unchanged at the first scrambled line and to replace one of the first lines with the first scrambled line. Interleaver gemäß einem der Ansprüche 1 oder 2, bei dem die zweite Interleaverstufe ausgebildet ist, zum zeilenweisen Anordnen der Stellen einer der ersten Zeilen in einer Mehrzahl von zweiten Zeilen und zweiten Spalten, und zum spaltenweisen Auslesen der Stellen um eine erste verwürfelte Zeile zu erhalten, und zum Ersetzen der einen der ersten Zeilen mit der ersten verwürfelten Zeile, wobei die erste Interleaverstufe ausgebildet ist, um die basierend auf der ersten verwürfelten Zeile ersetzte erste Zeile spaltenweise und lückenlos auszulesen, um das permutierte Informationswort zu erhalten.Interleaver according to one of the claims 1 or 2, in which the second interleaver stage is formed, to the line by line Arranging the locations of one of the first rows in a plurality of second rows and second columns, and column-wise readout the places to get a first scrambled line and replacing one of the first lines with the first one scrambled Line, wherein the first Interleaverstufe is adapted to the based on the first scrambled line replaced first Line by column and read out completely to the permuted To get information word. Interleaver gemäß einem der Ansprüche 1 bis 3, der ferner eine dritte Interleaverstufe aufweist, die ausgebildet ist, zum zeilenweisen Anordnen von Zeilenindizes der ersten Zeilen in dritten Zeilen und dritten Spalten, und zum spaltenweisen Auslesen der Zeilenindizes um verwürfelte. Zeilenindizes zu erhalten und zum Vertauschen der ersten Zeilen basierend auf den verwürfelten Zeilenindizes, wobei die erste Interleaverstufe ausgebildet ist, um die basierend auf den verwürfelten Zeilenindizes vertauschten ersten Zeilen spaltenweise und lückenlos auszulesen, um das permutierte Informationswort zu erhalten.Interleaver according to one of the claims 1 to 3, further comprising a third interleaver stage formed is for arranging line indexes of the first lines by line in third rows and third columns, and for column-wise readout scrambled the line indices by. To get row indexes and swapping the first lines based on the scrambled ones Row indices, wherein the first interleaver stage is formed, to swap based on the scrambled line indexes first lines column by column and read out completely, um to get the permuted information word. Interleaver gemäß einem der Ansprüche 1 bis 4, wobei die erste, zweite und/oder dritte Interleaverstufe ausgebildet ist, um ein Informationswort zu verarbeiten, bei dem jede Stelle eine Binärstellen umfasst.Interleaver according to one of the claims 1 to 4, wherein the first, second and / or third interleaver formed is to process an information word in which each digit includes a binary digits. Interleaver gemäß einem der Ansprüche 1 bis 5, wobei die zweite Interleaverstufe ausgebildet ist, um die Stellen der einen ersten Zeile in einer Anzahl von zweiten Zeilen und einer Anzahl von zweiten Spalten anzuordnen, wobei die eine erste Zeile eine Anzahl von Stellen aufweist, die kleiner als das Produkt aus der Anzahl von zweiten Zeilen und der Anzahl von zweiten Spalten ist, und die zweite Interleaverstufe ferner ausgebildet ist, um beim spaltenweisen Auslesen auftretende Lücken zu überspringen.Interleaver according to one of the claims 1 to 5, wherein the second Interleaverstufe is formed to the Make a first line in a number of second lines and a number of second columns, the one first line has a number of digits smaller than that Product of the number of second lines and the number of second Columns, and the second Interleaverstufe further formed is, in the column-wise readings occurring gaps to skip. Interleaver gemäß einem der Ansprüche 4 bis 6, wobei die dritte Interleaverstufe ausgebildet ist, um die Zeilenindizes in einer Anzahl von dritten Zeilen und einer Anzahl von dritten Spalten anzuordnen, wobei die Anzahl der Zeilenindizes kleiner ist als das Produkt aus der Anzahl von dritten Zeilen und der Anzahl von dritten Spalten und die dritte Interleaverstufe ferner ausgebildet ist, um beim spaltenweisen Auslesen auftretende Lücken zu überspringen.Interleaver according to one of the claims 4-6, wherein the third interleaver stage is formed around the row indexes in a number of third rows and a number of third Columns, where the number of row indexes is smaller as the product of the number of third lines and the number of third columns and the third interleaver stage further formed is, in the column-wise readings occurring gaps to skip. Interleaver gemäß einem der Ansprüche 1 bis 7, bei dem die erste, zweite und/oder dritte Interleaverstufe ausgebildet ist, um als Informationswort einen Vektor von Lese- oder Schreibadressen zu verwürfeln.Interleaver according to one of the claims 1 to 7, wherein the first, second and / or third Interleaverstufe is designed to provide as information word a vector of reading or scrambling write addresses. Interleaver zum Verwürfeln eines Informationswortes, wobei das Informationswort eine Vielzahl von Stellen aufweist, um ein permutiertes Informationswort zu erhalten mit folgenden Merkmalen: einer ersten Interleaverstufe zum zeilenweisen Anordnen der Stellen des Informationswortes in einer Mehrzahl von ersten Zeilen und ersten Spalten; und einer zweiten Interleaverstufe zum Verwürfeln der Stellen einer der ersten Zeilen durch zeilenweises Anordnen der Stellen der einen ersten Zeile in einer Mehrzahl von zweiten Zeilen und zweiten Spalten, wobei die zweiten Zeilen mindestens eine zweite Zeile mit einer Lücke aufweisen und die zweiten Spalten wenigstens eine zweite Spalte mit einer Lücke aufweisen, und wobei die zweite Interleaverstufe ausgebildet ist, um die Stellen der zweiten Spalten spaltenweise auszulesen und lückenlos aneinander zu reihen, um eine erste verwürfelte Zeile zu erhalten, und zum Ersetzen der einen der ersten Zeilen mit der ersten verwürfelten Zeile, wobei die erste Interleaverstufe ausgebildet ist, um die ersten Spalten spaltenweise auszulesen, um das permutierte Informationswort zu erhalten.An interleaver for scrambling an information word, the information word having a plurality of locations to obtain a permuted information word, comprising: a first interleaver stage for arranging the locations of the information word in a plurality of first rows and first columns; and a second interleaver stage for scrambling the locations of one of the first rows by arranging the locations of the one row in a plurality of second rows and second columns row by row, the second rows having at least one second row with a gap and the second columns at least one second Have gaps with a gap, and wherein the second Interleaverstufe is formed to read the locations of the second columns column by column and to line up seamlessly to a first scrambled line and for replacing the one of the first lines with the first scrambled line, wherein the first interleaver stage is adapted to read the first columns column by column to obtain the permuted information word. Interleaver gemäß Anspruch 9, bei dem die erste Interleaverstufe ausgebildet ist zum zeilenweisen Anordnen der Stellen des Informationswortes in einer Mehrzahl von ersten Zeilen und ersten Spalten, wobei die ersten Zeilen mindestens eine erste Zeile mit einer Lücke aufweisen und die ersten Spalten wenigstens eine erste Spalte mit einer Lücke aufweisen, wobei die erste Interleaverstufe ausgebildet ist, um die ersten Spalten spaltenweise auszulesen und die Stellen der ersten Spalten lückenlos aneinander zu reihen, um das permutierte Informationswort zu erhalten.Interleaver according to claim 9, in which the first interleaver stage is designed to be line by line Arranging the locations of the information word in a plurality of first rows and first columns, with the first rows at least have a first row with a gap and the first one Columns have at least one first column with a gap, wherein the first interleaver stage is designed to be the first Columns column by column and the digits of the first columns to string together seamlessly to the permuted information word to obtain. Interleaver gemäß einem der Ansprüche 9 oder 10, der ferner eine dritte Interleaverstufe aufweist, die ausgebildet ist, zum zeilenweisen Anordnen von Zeilenindizes der ersten Zeilen in dritten Zeilen und dritten Spalten, und zum spaltenweisen Auslesen der Zeilenindizes um verwürfelte Zeilenindizes zu erhalten und zum Vertauschen der ersten Zeilen basierend auf den verwürfelten Zeilenindizes, wobei die erste Interleaverstufe ausgebildet ist, um die basierend auf den verwürfelten Zeilenindizes vertauschten ersten Zeilen spaltenweise auszulesen, um das permutierte Informationswort zu erhalten.Interleaver according to one of the claims 9 or 10, further comprising a third interleaver stage formed is for arranging line indexes of the first lines by line in third rows and third columns, and for column-wise readout the row indexes to get scrambled line indexes and swapping the first lines based on the scrambled ones Row indices, wherein the first interleaver stage is formed, to swap based on the scrambled line indexes first column by column to read the permuted information word to obtain. Interleaver gemäß einem der Ansprüche 9 bis 11, wobei die erste, zweite und/oder dritte Interleaverstufe ausgebildet ist, um ein Informationswort zu verarbeiten, bei dem jede Stelle eine Binärstellen umfasst.Interleaver according to one of the claims 9 to 11, wherein the first, second and / or third Interleaverstufe is configured to process an information word in which each digit comprises a binary digits. Interleaver gemäß einem der Ansprüche 9 bis 12, wobei die dritte Interleaverstufe ausgebildet ist, um die Zeilenindizes in einer Anzahl von dritten Zeilen und einer Anzahl von dritten Spalten anzuordnen, wobei die Anzahl der Zeilenindizes kleiner ist als das Produkt aus der Anzahl von dritten Zeilen und der Anzahl von dritten Spalten und die dritte Interleaverstufe ferner ausgebildet ist, um beim spaltenweisen Auslesen auftretende Lücken zu überspringen.Interleaver according to one of the claims 9 to 12, wherein the third interleaver stage is adapted to the row indices in a number of third rows and a number of third Columns, where the number of row indexes is smaller as the product of the number of third lines and the number of third columns and the third interleaver stage further formed is, in the column-wise readings occurring gaps to skip. Interleaver gemäß einem der Ansprüche 9 bis 13, bei dem die erste, zweite und/oder dritte Interleaverstufe ausgebildet ist, um als Informationswort einen Vektor von Lese- oder Schreibadressen zu verwürfeln.Interleaver according to one of the claims 9 to 13, wherein the first, second and / or third Interleaverstufe is designed to provide as information word a vector of reading or scrambling write addresses. Verfahren zum Verwürfeln eines Informationswortes, wobei das Informationswort eine Vielzahl von Stellen aufweist, um ein permutiertes Informationswort zu erhalten, mit folgenden Schritten zeilenweises Anordnen der Stellen des Informationswortes in einer Mehrzahl von ersten Zeilen und ersten Spalten, wobei die ersten Zeilen mindestens eine erste Zeile mit einer Lücke aufweisen und die ersten Spalten wenigstens eine erste Spalte mit einer Lücke aufweisen; Verwürfeln der Stellen der einen ersten Zeile mit der Lücke durch Vertauschen wenigstens zweier Stellen der einen ersten Zeile, so dass eine Position der Lücke unverändert bleibt, um eine erste verwürfelte Zeile zu erhalten; Ersetzen der einen der ersten Zeilen mit der ersten verwürfelten Zeile; und spaltenweises Auszulesen und die Stellen der ersten Spalten lückenlos aneinander zu reihen, um das permutierte Informationswort zu erhalten.Method for scrambling an information word, wherein the information word has a plurality of locations to to obtain a permuted information word, with the following steps line by line Arranging the locations of the information word in a plurality of first rows and first columns, with the first rows at least have a first row with a gap and the first one Columns have at least a first column with a gap; scrambling the places of a first line with the gap through Swap at least two digits of the first line, so that a position of the gap remains unchanged, to get a first scrambled line; Replace one of the first lines with the first scrambled Row; and Columnwise read out and the places of the first Rows without gaps to the permuted To get information word. Verfahren zum Verwürfeln eines Informationswortes, wobei das Informationswort eine Vielzahl von Stellen aufweist, um ein permutiertes Informationswort zu erhalten mit folgenden Schritten: zeilenweises Anordnen der Stellen des Informationswortes in einer Mehrzahl von ersten Zeilen und ersten Spalten; Verwürfeln der Stellen einer der ersten Zeilen durch zeilenweises Anordnen der Stellen der einen ersten Zeile in einer Mehrzahl von zweiten Zeilen und zweiten Spalten, wobei die zweiten Zeilen mindestens eine zweite Zeile mit einer Lücke aufweisen und die zweiten Spalten wenigstens eine zweite Spalte mit einer Lücke aufweisen; Spaltenweises Auslesen der Stellen der zweiten Spalten; Lückenloses Aneinanderreihen der Stellen der zweiten Spalten, um eine erste verwürfelte Zeile zu erhalten; Ersetzen der einen der ersten Zeilen mit der ersten verwürfelten Zeile; Spaltenweises Auslesen der ersten Spalten, um das permutierte Informationswort zu erhalten.Method for scrambling an information word, wherein the information word has a plurality of locations to to get a permuted information word with the following steps: line by line Arranging the locations of the information word in a plurality of first rows and first columns; Scrambling the bodies one of the first lines by arranging the positions line by line a first row in a plurality of second rows and second columns, wherein the second rows at least a second row with a gap and the second columns at least have a second column with a gap; column-wise Reading the digits of the second columns; Uninterrupted Line up the digits of the second columns to a first one to get scrambled line; Replace one the first lines with the first scrambled line; column-wise Reading out the first columns, around the permuted information word to obtain. Indexgenerator zum Generieren eines Ausgangsindex basierend auf einem Eingangsindex einer Spaltenzahl, einer Elementzahl und einer Information über eine unvollständige Zeile, mit folgenden Merkmalen: einer Einrichtung zum Generieren eines Zeilenindex basierend auf dem Eingangsindex und der Spaltenzahl; einer Einrichtung zum Generieren eines Spaltenindex basierend auf dem Eingangsindex und der Spaltenzahl; einer Einrichtung zum Generieren einer Vollzeilenzahl basierend auf der Elementzahl und der Spaltenzahl; einer Einrichtung zum Generieren einer Restelementzahl basierend auf der Elementzahl und der Spaltenzahl; einer Einrichtung zum Ausgeben des Ausgangsindex, die ausgebildet ist, um für den Fall, dass der Spaltenindex kleiner als die Restelementzahl ist, den Ausgangsindex als Ausgangsindex = (Vollzeitzahl +1) Spaltenindex + Zeilenindexauszugeben, und sonst, für den Fall, dass die Information über die unvollständige Zeile angibt, dass keine unvollständige Zeile vorhanden ist oder der Zeilenindex kleiner oder gleich einem Index einer unvollständigen Zeile ist, den Ausgangsindex als Ausgangsindex = (Vollzeilenzahl + 1)Restelementzahl + Vollzeilenzahl(Spaltenindex – Restelementzahl) + Zeilenindexauszugeben, und sonst den Ausgangsindex als Ausgangsindex = (Vollzeilenzahl + 1)Restelementzahl + Vollzeilenzahl(Spaltenindex – Restelementzahl) + Zeilenindex-1auszugeben.An index generator for generating an output index based on an input index of a column number, an element number, and an incomplete line information, comprising: means for generating a line index based on the input index and the column number; means for generating a column index based on the input index and the column number; means for generating a full-line number based on the element number and the column number; means for generating a residual element number based on the element number and the column number; means for outputting the output index, which is arranged to, in the case where the column index is smaller than the residual element number, use the output index as Initial Index = (Full Time +1) Column Index + Row Index and otherwise, in the event that the incomplete line information indicates that there is no incomplete line or the line index is less than or equal to an index of an incomplete line, the source index is Initial index = (full-line number + 1) Remaining element number + full-line number (column index - remaining element number) + line index and otherwise the output index as Initial Index = (full-line number + 1) Remaining element number + full-line number (column index - residual element number) + line index-1 issue. Indexgenerator gemäß Anspruch 17, bei die Einrichtung zum Generieren des Zeilenindex ausgebildet ist, um den Zeilenindex durch Abrunden eines Quotienten aus dem Eingangsindex und der Spaltenzahl zu generieren.Index generator according to claim 17, wherein the means for generating the row index is formed, around the row index by rounding off a quotient from the input index and to generate the number of columns. Indexgenerator gemäß einem der Ansprüche 17 oder 18, bei dem die Einrichtung zum Generieren des Spaltenindex ausgebildet ist, um den Spaltenindex durch eine Moduln-Operation des Eingangsindex mit der Spaltenzahl zu generieren.Index generator according to one of Claims 17 or 18, wherein the means for generating of the column index is adapted to the column index by a Modulus operation of the input index with the number of columns to generate. Indexgenerator gemäß einem der Ansprüche 17 bis 19, bei dem die Einrichtung zum Generieren der Vollzeilenzahl ausgebildet ist, um die Vollzeilenzahl durch Abrunden eines Quotienten aus der Elementzahl und der Spaltenzahl zu generieren.Index generator according to one of Claims 17 to 19, wherein the means for generating the full-line number is formed by the full-line number Rounding off a quotient of the number of elements and the number of columns to generate. Indexgenerator gemäß einem der Ansprüche 17 bis 20, bei dem die Einrichtung zum Generieren der Restelementzahl ausgebildet ist, um die Restelementzahl durch eine Moduloperation der Elementzahl mit der Spaltenzahl zu generieren.Index generator according to one of Claims 17 to 20, wherein the means for generating the residual element number is formed by the residual element number by to generate a module operation of the element number with the number of columns. Verfahren zum Generieren eines Ausgangsindex basierend auf einem Eingangsindex einer Spaltenzahl, einer Elementzahl und einer Information über eine unvollständige Zeile, mit folgenden Schritten: Generieren eines Zeilenindex basierend auf dem Eingangsindex und der Spaltenzahl; Generieren eines Spaltenindex basierend auf dem Eingangsindex und der Spaltenzahl; Generieren einer Vollzeilenzahl basierend auf der Elementzahl und der Spaltenzahl; Generieren einer Restelementzahl basierend auf der Elementzahl und der Spaltenzahl; Ausgeben des Ausgangsindex, für den Fall, dass der Spaltenindex kleiner als die Restelementzahl ist, als Ausgangsindex = (Vollzeitzahl + 1)Spaltenindex + Zeilenindexund sonst, für den Fall, dass die Information über die unvollständige Zeile angibt, dass keine unvollständige Zeile vorhanden ist oder der Zeilenindex kleiner oder gleich einem Index einer unvollständigen Zeile ist, als Ausgangsindex = (Vollzeilenzahl + 1)Restelementzahl + Vollzeilenzahl(Spaltenindex – Restelementzahl) + Zeilenindex,und sonst als Ausgangsindex = (Vollzeilenzahl + 1)Restelementzahl + Vollzeilenzahl(Spaltenindex – Restelementzahl) + Zeilenindex – 1. A method of generating an output index based on an input index of a column number, an element number, and an incomplete line information, comprising the steps of: generating a row index based on the input index and the column number; Generating a column index based on the input index and the column number; Generating a full-line number based on the number of elements and the number of columns; Generating a residual element number based on the element number and the column number; Output the output index, in case the column index is smaller than the residual element number, than Initial Index = (Full Time + 1) Column Index + Row Index and otherwise, in case the information about the incomplete line indicates that there is no incomplete line or the line index is less than or equal to an index of an incomplete line, when Starting index = (full number of lines + 1) remaining element number + full line number (column index - remaining element number) + line index, and otherwise than Initial Index = (full-line number + 1) Remainder element number + full-line number (column index - residual element number) + line index - 1. Computerprogramm mit einem Programmkode zur Durchführung eines der Verfahrens gemäß einem der Ansprüche 15, 16, oder 22, wenn der Programmkode auf einem Prozessor ausgeführt wird.Computer program with a program code for execution one of the methods according to one of the claims 15, 16, or 22 if the program code is running on a processor becomes. Turbo-Kodierer mit einem Interleaver gemäß einem der Ansprüche 1 bis 14 oder einem Indexgenerator gemäß einem der Ansprüche 17 bis 21.Turbo coder with an interleaver according to a of claims 1 to 14 or an index generator according to a of claims 17 to 21. Turbo-Dekodierer mit einem Interleaver gemäß einem der Ansprüche 1 bis 14 oder einem Indexgenerator gemäß einem der Ansprüche 17 bis 21.Turbo decoder with an interleaver according to a of claims 1 to 14 or an index generator according to a of claims 17 to 21.
DE200810029623 2008-06-23 2008-06-23 Interleaver e.g. intra-row almost rectangular interleaver, for use in e.g. turbo encoder for scrambling information word, has interleaver stage for reading columns, and for arranging digits of row to one another without gap Ceased DE102008029623A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE200810029623 DE102008029623A1 (en) 2008-06-23 2008-06-23 Interleaver e.g. intra-row almost rectangular interleaver, for use in e.g. turbo encoder for scrambling information word, has interleaver stage for reading columns, and for arranging digits of row to one another without gap
EP09008223.1A EP2139120B1 (en) 2008-06-23 2009-06-23 Interleaver

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE200810029623 DE102008029623A1 (en) 2008-06-23 2008-06-23 Interleaver e.g. intra-row almost rectangular interleaver, for use in e.g. turbo encoder for scrambling information word, has interleaver stage for reading columns, and for arranging digits of row to one another without gap

Publications (1)

Publication Number Publication Date
DE102008029623A1 true DE102008029623A1 (en) 2009-12-24

Family

ID=41335007

Family Applications (1)

Application Number Title Priority Date Filing Date
DE200810029623 Ceased DE102008029623A1 (en) 2008-06-23 2008-06-23 Interleaver e.g. intra-row almost rectangular interleaver, for use in e.g. turbo encoder for scrambling information word, has interleaver stage for reading columns, and for arranging digits of row to one another without gap

Country Status (1)

Country Link
DE (1) DE102008029623A1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6304991B1 (en) 1998-12-04 2001-10-16 Qualcomm Incorporated Turbo code interleaver using linear congruential sequence
WO2004030226A1 (en) * 2002-09-25 2004-04-08 Koninklijke Philips Electronics N.V. Method of calculating an intra-row permutation pattern for an interleaver
EP1030455B1 (en) 1999-02-19 2004-04-21 Ntt Mobile Communications Network Inc. Interleaving method, interleaving apparatus, turbo encoding method, and turbo encoder
US6871303B2 (en) 1998-12-04 2005-03-22 Qualcomm Incorporated Random-access multi-directional CDMA2000 turbo code interleaver
US20050102599A1 (en) * 2003-11-11 2005-05-12 Ping-Chung Yang Address generator for block interleaving

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6304991B1 (en) 1998-12-04 2001-10-16 Qualcomm Incorporated Turbo code interleaver using linear congruential sequence
US6871303B2 (en) 1998-12-04 2005-03-22 Qualcomm Incorporated Random-access multi-directional CDMA2000 turbo code interleaver
EP1030455B1 (en) 1999-02-19 2004-04-21 Ntt Mobile Communications Network Inc. Interleaving method, interleaving apparatus, turbo encoding method, and turbo encoder
WO2004030226A1 (en) * 2002-09-25 2004-04-08 Koninklijke Philips Electronics N.V. Method of calculating an intra-row permutation pattern for an interleaver
US20050102599A1 (en) * 2003-11-11 2005-05-12 Ping-Chung Yang Address generator for block interleaving

Non-Patent Citations (8)

* Cited by examiner, † Cited by third party
Title
Claude Berrou, Alain Glavieux, and Punya Thitimajshima: "Near Shannon-Limit Error-Correcting Coding and Decoding: Turbo Codes", Intern. Conf. an Communication, pages 1064-1070, 1993
Johan Hokfelt, Ove Edfors, and Torleiv Maseng: "Interleaver design for turbo codes based an the performance of iterative decoding", Intern. Conf. an Communications, Communications Theory Mini Conference, pages 93-97, 1999
Marco Breiling, "Analysis and Design of Turbo Kode Interleavers", Shaker Verlag, Aachen, 2002 ISBN 3-8322-0302-8
S. Crozier and P. Guinand: "High-performance low memory interleaver banks for turbocodes", in Proc. of the 54th IEEE Veh. Tech. Conf (VTC'01), Atlantic City, pp. 2394-2398, Oct. 2001
S. Crozier and P. Guinand: "Highperformance low-memory interleaver banks for turbo-codes", in Proc. Of the 54th IEEE Veh. Tech. Conf (VTC'01), Atlantic City, pp. 2394-2398, Oct. 2001
S. Dolinar and D. Divsalar: "Weight Distributions for Turbo Codes Using Random and Nonrandom Permutations", Jet Propulsion Lab, TDA Prog. Rep., 42-122: 56-65, 1995
Sergio Benedetto and Guido Montorsi: "Unveiling Turbo Codes: Some Results an Parallel Concatenated Coding Schemes", IEEE Trans. an Inform. Theory, 42(2):409-428, 1996
Todd K. Moon "Error Correction Coding", Wiley, 2007, ISBN 978-0-471-64800-0

Similar Documents

Publication Publication Date Title
DE60037463T2 (en) Rate adaptation and channel interleaving for a communication system
DE10030407B4 (en) Method for optimal rate adaptation in a mobile communication system
DE69838451T2 (en) PROCESS AND SWITCHING FOR ADAPTIVE CHANNEL CODING
DE69936683T2 (en) Nesting using increments based on the Golden Ratio
US6728927B2 (en) Method and system for high-spread high-distance interleaving for turbo-codes
DE69936626T2 (en) CHANNEL ENCODING AND DECODING FOR A COMMUNICATION SYSTEM
EP4224719B1 (en) Transmitter with an interleaver device
DE60009973T2 (en) Nesting method, interleaver, turbo coding method and turbo encoder
DE60002705T2 (en) INNER ROW PERMUTATIONS FOR TURBOCODE
DE69907011T2 (en) GENERALIZED FOLDING DE-SEALER
DE60112445T2 (en) Modification of an interleaver pattern
DE60316428T2 (en) Method, encoder and communication device for encoding parallel-linked data
DE60016561T2 (en) BLOCK QUARTERING FOR TURBO CODING
DE60111974T2 (en) Abort criterion for a turbo decoder
DE60110083T2 (en) Decorrelation of interference from multiple nested data streams
DE102018218729B3 (en) Interleaving with circular line rotation for transmission with telegram splitting
DE19934646C2 (en) Method and device for iterative decoding of chained codes
EP1323269A2 (en) Segmental deinterlacing
DE60311997T2 (en) First interleaving method for a transmitter with two interleavers
EP2139120B1 (en) Interleaver
DE102008029623A1 (en) Interleaver e.g. intra-row almost rectangular interleaver, for use in e.g. turbo encoder for scrambling information word, has interleaver stage for reading columns, and for arranging digits of row to one another without gap
DE60209196T2 (en) Method and apparatus for optimizing, under power constraints, the size of coded data blocks
DE60032895T2 (en) TURBO CODE TERMINATION
DE60014395T2 (en) PROCESS AND DEVICE FOR CODING WITH AT LEAST TWO PARALLEL CODERS
DE19960269A1 (en) Channel encoding transmission method with effective, modular nesting or interlacing for applying turbo codes, involves using coincidence algorithm.

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final