FR2838581A1 - Method for coding and/or decoding of the error-correction codes, corresponding devices and signal representative of coded data block - Google Patents
Method for coding and/or decoding of the error-correction codes, corresponding devices and signal representative of coded data block Download PDFInfo
- Publication number
- FR2838581A1 FR2838581A1 FR0204764A FR0204764A FR2838581A1 FR 2838581 A1 FR2838581 A1 FR 2838581A1 FR 0204764 A FR0204764 A FR 0204764A FR 0204764 A FR0204764 A FR 0204764A FR 2838581 A1 FR2838581 A1 FR 2838581A1
- Authority
- FR
- France
- Prior art keywords
- data
- codes
- code
- sub
- matrix
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1131—Scheduling of bit node or check node processing
- H03M13/1137—Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/27—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
- H03M13/2771—Internal interleaver for turbo codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2957—Turbo codes and decoding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6566—Implementations concerning memory access contentions
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B2020/10935—Digital recording or reproducing wherein a time constraint must be met
- G11B2020/10944—Real-time recording or reproducing, e.g. for ensuring seamless playback of AV data
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
Abstract
Description
<Desc/Clms Page number 1> <Desc / Clms Page number 1>
Procédé de codage et/ou de décodage de codes correcteurs d'erreurs, dispositifs et signalcorrespondants. Method for coding and / or decoding error correcting codes, devices and corresponding signals
La présente invention se rapporte au domaine du codage de données numériques destinées à être transmises et/ou mémorisées sur un canal bruité puis décodées de manière à corriger les erreurs de transmission et/ou de lecture. The present invention relates to the field of encoding digital data intended to be transmitted and / or stored on a noisy channel and then decoded so as to correct the transmission and / or reading errors.
Plus précisément, l'invention concerne le codage correcteur d'erreurs reposant sur la concaténation parallèle de plusieurs codes, et une méthode de décodage permettant des débits élevés. More precisely, the invention relates to error correction coding based on the parallel concatenation of several codes, and a decoding method allowing high data rates.
Encore plus précisément, l'invention concerne une amélioration du procédé de codage communément appelé turbo-codes , ainsi que le procédé de décodage associé. Even more specifically, the invention relates to an improvement of the coding method commonly called turbo-codes, as well as the associated decoding method.
Le principe général des turbo-codes (marque déposée) est présenté dans le brevet français n FR-91 05280, ayant pour titre Procédé de codage correcteur d'erreur à au moins deux codages convolutifs systématiques parallèles, procédé de décodage itératif, module de décodage et décodeur correspondant . The general principle of turbo-codes (registered trademark) is presented in French patent FR-91 05280, entitled Error correction coding method to at least two systematic parallel convolutional encodings, iterative decoding method, decoding module and corresponding decoder.
Ce document décrit un premier type de turbo-codes reposant sur l'utilisation de codes convolutifs récursifs systématiques. This document describes a first type of turbo-codes based on the use of systematic recursive convolutional codes.
Les turbo-codes possèdent les avantages de la simplicité, de la régularité et de la souplesse du choix du rendement pour des performances élevées. Turbo codes have the advantages of simplicity, consistency and flexibility of choice of performance for high performance.
L'utilisation des turbo-codes nécessite un décodage itératif dont les performances croissent au cours des itérations. Pour atteindre les performances quasi-optimales, il est nécessaire d'effectuer de l'ordre d'une dizaine d'itérations ce qui pénalise grandement la rapidité de décodage. Ainsi, un inconvénient des turbo-codes de l'art antérieur est qu'ils présentent une latence importante au décodage, due à leur nature. The use of turbo-codes requires iterative decoding whose performance increases during the iterations. To achieve near-optimal performance, it is necessary to perform the order of a dozen iterations which greatly penalizes the speed of decoding. Thus, a disadvantage of turbo codes of the prior art is that they have a high latency decoding, due to their nature.
Un autre inconvénient des turbo-codes décrits précédemment est qu'ils ne sont pas adaptés à une architecture parallèle de décodage. Another disadvantage of the turbo codes described above is that they are not suitable for a parallel decoding architecture.
On connaît également des codes de parités, notamment : Parity codes are also known, including:
<Desc/Clms Page number 2><Desc / Clms Page number 2>
- des codes LDPC décrits par R.G. Gallager dans le document Low- density parity-check codes (ou en français Codes de parité à faible densité ) et paru aux éditions MIT Press en 1963. - LDPC codes described by R.G. Gallager in the document Low-density parity-check codes and published by MIT Press in 1963.
- des codes à faible densité généralisé (GLD) décrits par R.M. Tanner dans un article intitulé A recursive approach to low complexity codes (ou, en français, une approche récursive des codes à faibles complexité ), paru dans la revue IEEE Transaction On Information
Theory, Vol. IT-27 en septembre 1981. - generalized low density (GLD) codes described by RM Tanner in an article entitled A Recursive Approach to Low Complexity Codes (or, in French, a recursive approach to low complexity codes), published in IEEE Transaction On Information
Theory, Vol. IT-27 in September 1981.
Ces codes présentent les mêmes inconvénients que les turbo-codes précédemment décrits. En particulier, ils présentent une forte latence au décodage car ils nécessitent un nombre d'itération très grand. En outre, ils ne sont pas adaptés à un décodage en parallèle de codes élémentaires les constituants car ils sont irréguliers. These codes have the same disadvantages as the turbo codes described above. In particular, they have a high decoding latency because they require a very large number of iterations. In addition, they are not suitable for parallel decoding of elementary codes constituents because they are irregular.
Ainsi, pour des applications de type temps réel telles que la voix et la vidéo, des trames courtes sont nécessaires afin de diminuer la latence de décodage. La diminution de la taille des trames entraîne une dégradation de la fiabilité des données décodées. En effet, celle-ci croît avec le nombre de symboles pris en compte dans une trame. De plus, les algorithmes utilisés pour décoder une trame sont basés sur un algorithme de type SISO (de l'anglais Soft Input Soft Output ou à Entrées souples et Sorties Souples en français) (par exemple un algorithme MAP (ou Maximum A Posteriori )) dont le degré de parallélisme est réduit et qui, par conséquent, limite le débit maximum possible. Thus, for real-time applications such as voice and video, short frames are needed to decrease decoding latency. The decrease in the size of the frames causes a deterioration of the reliability of the decoded data. Indeed, it grows with the number of symbols taken into account in a frame. In addition, the algorithms used to decode a frame are based on a SISO type algorithm (from the English Soft Input Soft Output or Flexible Inputs and Flexible Outputs in French) (for example a MAP algorithm (or Maximum A Posteriori)) whose degree of parallelism is reduced and which therefore limits the maximum possible flow.
On connaît également des turbo-codes produits constitués de plusieurs codes concaténés en bloc suivant au moins deux dimensions d'un tableau représentatif d'un turbo-code produit correspondant. Des turbo-codes produits sont présentés notamment dans le document Near Optimum decoding of product codes (ou Décodage proche de l'optimum des codes produits ) en français) écrit par R. Pyndiah, A. Glavieux, A. Picard et S. Jacq et publié dans le compterendu du colloque Globecom'94 de San Francisco (Etats Unis) en 1994. Ils permettent un degré de parallélisme plus important au décodage que les turbo- Product turbo-codes consisting of several block concatenated codes according to at least two dimensions of a representative table of a corresponding product turbo-code are also known. Turbo-codes produced are presented in particular in the document Near Optimum Decoding of Product Codes (or Decoding close to the optimum of product codes) in French) written by R. Pyndiah, A. Glavieux, A. Picard and S. Jacq and published in the 1994 Globecom'94 colloquium in San Francisco (USA). They allow a greater degree of parallelism to decoding than
<Desc/Clms Page number 3><Desc / Clms Page number 3>
codes de premier type décrits ci-dessus, plusieurs codes constituants pouvant être décodés en parallèle. Les codes constituants utilisés sont des codes linéaires algébriques. Néanmoins, le choix d'un entrelaceur régulier n'est pas optimal en termes de performances. codes of the first type described above, several component codes can be decoded in parallel. Constituent codes used are linear algebraic codes. Nevertheless, the choice of a regular interleaver is not optimal in terms of performance.
On connaît, en outre, des codes permettant d'améliorer la latence au décodage et décrits dans l'article Decoder-first code design (ou élaboration de code d'abord construit sur base d'un décodeur ) écrit par E. Boutillon, J. Castura et F. Kschischang et paru dans le compte-rendu proceedings of the 2nd international Symposium on turbo codes and related topics , pages 459 à 462 (Brest, France) en septembre 2000. Furthermore, codes are known that make it possible to improve latency during decoding and described in the article Decoder-first code design (or code development first built on the basis of a decoder) written by E. Boutillon, J. Castura and F. Kschischang and published in Proceedings Proceedings of the 2nd International Symposium on Turbo Codes and Other Topics, pages 459 to 462 (Brest, France) in September 2000.
Dans cet article, on décrit une structure de décodeur adapté à décoder des codes de parité à faible densité (LDPC). Selon la structure décrite, différents bancs mémoires contenant des données à décoder alimentent en parallèle des décodeurs associés chacun à un code de parité. L'ensemble des données correspondant à un mot de code de parité entrent simultanément dans un décodeur élémentaire. En outre, les décodages élémentaires se font en parallèle. Ainsi, on obtient une faible latence de décodage. In this paper, a decoder structure adapted to decode low density parity codes (LDPC) is described. According to the structure described, different memory banks containing data to be decoded supply in parallel decoders each associated with a parity code. The set of data corresponding to a parity codeword simultaneously enter into a basic decoder. In addition, elementary decoding is done in parallel. Thus, a low latency of decoding is obtained.
Néanmoins, cette technique de l'art antérieur présente l'inconvénient d'être relativement complexe à mettre en oeuvre. Nevertheless, this technique of the prior art has the disadvantage of being relatively complex to implement.
En outre, elle nécessite de nombreux bancs mémoires, le nombre de bancs mémoires étant égal au nombre de données entrant simultanément dans les décodeurs élémentaires, soit le produit du nombre de décodeurs par la taille d'un mot de code élémentaire. Aussi, cette technique n'est pas adaptée aux codes LDPC de grande taille. In addition, it requires many memory banks, the number of memory banks being equal to the number of data entering simultaneously in the elementary decoders, the product of the number of decoders by the size of a basic code word. Also, this technique is not suitable for large LDPC codes.
Cette technique présente également l'inconvénient de ne pas offrir une qualité de code suffisante pour de nombreuses applications. This technique also has the disadvantage of not providing sufficient code quality for many applications.
L'invention selon ses différents aspects a notamment pour objectif de pallier ces inconvénients de l'art antérieur. The invention in its various aspects is intended to overcome these disadvantages of the prior art.
Plus précisément, un objectif de l'invention est de fournir un code sous forme de signal et un procédé de codage et/ou de décodage associé ainsi que les More precisely, an object of the invention is to provide a code in the form of a signal and an associated coding and / or decoding method as well as the
<Desc/Clms Page number 4><Desc / Clms Page number 4>
dispositifs correspondant, qui combinent les avantages d'un bon taux d'erreur binaire avec une latence de décodage faible et/ou un débit important. corresponding devices, which combine the advantages of a good bit error rate with low decoding latency and / or high throughput.
Plus précisément, un objectif de l'invention est de fournir un code sous forme de signal et un procédé de codage et/ou de décodage associé ainsi que les dispositifs correspondant, qui combinent les avantages d'un bon taux d'erreur binaire avec une latence de décodage faible et/ou un débit important. More specifically, an object of the invention is to provide a signal code and an associated coding and / or decoding method and the corresponding devices, which combine the advantages of a good bit error rate with a low decoding latency and / or high throughput.
Un autre objectif de l'invention est de fournir un code qui possède une distance libre élevée pour une longueur de code, donnée et donc une grande capacité de correction d'erreurs. Another object of the invention is to provide a code which has a high free distance for a given code length and therefore a large error correction capability.
Encore un autre objectif de l'invention est de fournir un code et un procédé de codage et/ou de décodage associé ainsi que les dispositifs correspondant, qui soient relativement simples à mettre en #uvre. Yet another object of the invention is to provide a code and a method of coding and / or decoding associated and the corresponding devices, which are relatively simple to implement.
Dans ce but, l'invention propose un procédé de décodage de code correcteur d'erreurs, du type associant un bloc de données décodé à des données codées selon un code global comprenant au moins deux sous-codes constituants, un graphe bipartite irrégulier étant associé au code global, le procédé de décodage étant itératif et produisant à chaque itération un bloc de données extrinsèques, chacune des données extrinsèques se rapportant à une des données codées, le procédé mettant en #uvre une étape de mémorisation d'un bloc de données à décoder comprenant lesdites données codées et les données extrinsèques, le bloc de données à décoder étant réparti dans une pluralité de bancs mémoires disjoints, adressables indépendamment, le procédé étant remarquable en ce : - qu'à chaque itération, il comprend, en outre, une étape d'alimentation en parallèle d'au moins deux décodeurs parmi une pluralité de décodeurs, correspondant chacun respectivement à au moins un desdits sous-codes, par des données à décoder correspondantes du bloc de données à décoder, For this purpose, the invention proposes an error correction code decoding method of the type associating a decoded data block with data encoded according to a global code comprising at least two constituent sub-codes, an irregular bipartite graph being associated to the global code, the decoding method being iterative and producing at each iteration a block of extrinsic data, each of the extrinsic data relating to one of the coded data, the method implementing a step of storing a block of data to decoding comprising said coded data and extrinsic data, the data block to be decoded being distributed in a plurality of disjoint memory banks, addressable independently, the method being remarkable in that: - at each iteration, it comprises, in addition, a step of feeding in parallel of at least two decoders among a plurality of decoders, each corresponding respectively to t to at least one of said sub-codes, with corresponding data to be decoded from the data block to be decoded,
<Desc/Clms Page number 5><Desc / Clms Page number 5>
des données à décoder étant extraites en parallèle d'au moins deux desdits bancs mémoires pour alimenter autant de décodeurs, et chacun des décodeurs étant alimenté séquentiellement par les données à décoder lui correspondant. data to be decoded being extracted in parallel from at least two of said memory banks to supply as many decoders, and each of the decoders being fed sequentially by the data to be decoded corresponding thereto.
Selon une caractéristique particulière, le procédé est remarquable en ce qu'au moins un des sous-codes est un code récursif convolutif circulaire. According to one particular characteristic, the method is remarkable in that at least one of the subcodes is a circular convolutional recursive code.
Selon une caractéristique particulière, le procédé est remarquable en en ce qu'au moins un des sous-codes est un code systématique. According to one particular characteristic, the method is remarkable in that at least one of the sub-codes is a systematic code.
Ainsi, l'invention permet une utilisation de codes courts et donc une diminution de la latence de codage. Thus, the invention allows a use of short codes and thus a decrease in coding latency.
En outre, le procédé de codage permet une amélioration des codes GLD utilisant plusieurs sous-codes constituants. In addition, the coding method allows improvement of the GLD codes using several constituent sub-codes.
Selon une caractéristique particulière, le procédé est remarquable en ce qu'au moins deux des sous-codes sont des codes m-binaires, m étant un entier supérieur ou égal à 2 et en ce qu'une permutation intra-symboles est appliquée entre au moins deux des sous-codes m-binaires. According to a particular characteristic, the method is remarkable in that at least two of the sub-codes are m-binary codes, m being an integer greater than or equal to 2 and in that an intra-symbol permutation is applied between minus two of the m-binary sub-codes.
Ainsi, l'invention s'applique non seulement aux sous-codes constituants binaires, mais également aux sous-codes constituants duo-binaires ou plus généralement aux sous-codes constituants m-binaires. Thus, the invention applies not only to the binary component sub-codes, but also to the duo-binary component sub-codes or more generally to the m-binary component sub-codes.
Selon une caractéristique particulière, le procédé est remarquable en en ce qu'il comprend, en outre, une étape d'aiguillage de chacune des données à décoder vers un des décodeurs, lesdites données étant aiguillées en parallèle et simultanément de sorte que chacune d'entre elles alimente un décodeur lui correspondant en propre. According to one particular characteristic, the method is remarkable in that it further comprises a step of switching each of the data to be decoded to one of the decoders, said data being switched in parallel and simultaneously so that each of between them feeds a decoder corresponding to him own.
Selon une caractéristique particulière, le procédé est remarquable en ce que ladite étape d'aiguillage comprend elle-même une étape de permutation circulaire d'un ensemble comprenant au moins une partie des données à décoder. According to a particular characteristic, the method is remarkable in that said routing step itself comprises a step of circular permutation of a set comprising at least a part of the data to be decoded.
<Desc/Clms Page number 6> <Desc / Clms Page number 6>
Ainsi, l'invention permet d'améliorer l'entrelacement tout en utilisant le maximum de parallélisme liés au décodage en parallèle de plusieurs codes constituants du code global. Thus, the invention makes it possible to improve the interleaving while using the maximum of parallelism related to the decoding in parallel of several component codes of the global code.
Selon une caractéristique particulière, le procédé est remarquable en ce que la permutation circulaire est une rotation qui possède un pas déterminé en fonction du rang de lecture des données lues dans les bancs mémoires. According to one particular characteristic, the method is remarkable in that the circular permutation is a rotation which has a determined pitch as a function of the read rank of the data read in the memory banks.
Ainsi, l'entrelaceur est mis en #uvre simplement et efficacement. Thus, the interleaver is implemented simply and efficiently.
Selon une caractéristique particulière, le procédé est remarquable en ce que l'étape d'aiguillage met en #uvre une étape d'adressage de chacun des bancs mémoires de sorte que des données puissent être lues dans le banc mémoire dans un ordre prédéterminé distinct de l'ordre d'écriture desdites données dans le banc mémoire. According to a particular characteristic, the method is remarkable in that the switching step implements a step of addressing each of the memory banks so that data can be read in the memory bank in a predetermined order distinct from the writing order of said data in the memory bank.
Ainsi, on a une grande variété de choix d'entrelaceurs et donc des possibilités d'optimisation du code obtenu, tout en tenant compte au maximum du parallélisme des différentes opérations. Ceci permet d'obtenir un code global ayant de très bonnes performances. Thus, we have a wide variety of choices of interleavers and thus opportunities for optimization of the code obtained, while taking into account the maximum parallelism of different operations. This makes it possible to obtain a global code having very good performances.
Selon une caractéristique particulière, le procédé est remarquable en en ce que - chaque ligne d'une première matrice de données représentatives des données codées selon le code global est représentative de données codées par un sous-code constituant du code global appartenant à un premier groupe de sous-codes ; - chaque ligne d'au moins une deuxième matrice de données représentatives des données codées selon le code global est représentative de données codées par un sous-code constituant du code global appartenant à au moins un deuxième groupe de sous-codes ; - chaque matrice parmi les deuxièmes matrices de données étant obtenue à partir d'une transformation de ladite première matrice, la transformation comprenant une permutation d'au moins une partie des colonnes de la première matrice. According to one particular characteristic, the method is remarkable in that - each line of a first data matrix representative of the data coded according to the global code is representative of data coded by a subcode constituting global code belonging to a first group subcodes; each line of at least one second matrix of data representative of the data coded according to the global code is representative of data encoded by a subcode constituting global code belonging to at least a second group of sub-codes; each matrix of the second data matrices being obtained from a transformation of said first matrix, the transformation comprising a permutation of at least a portion of the columns of the first matrix.
<Desc/Clms Page number 7> <Desc / Clms Page number 7>
La notion de matrice est relativement théorique et l'homme du métier met en oeuvre une matrice, en pratique, sous différentes formes et notamment en distinguant des sous-blocs dans un bloc de données, chaque sous-bloc correspondant à une ligne de matrice étant codé selon un sous-code du code global. The notion of matrix is relatively theoretical and the person skilled in the art uses a matrix, in practice, in various forms and in particular by distinguishing sub-blocks in a data block, each sub-block corresponding to a matrix line being coded according to a subcode of the global code.
Selon une caractéristique particulière, le procédé est remarquable en ce que la transformation comprend, en outre, une permutation d'au moins une partie des lignes de la première matrice. According to a particular characteristic, the method is remarkable in that the transformation further comprises a permutation of at least a portion of the lines of the first matrix.
Ainsi, l'invention permet un grand choix d'entrelaceurs (c'est-à-dire de permutations) tout en conservant une mise en #uvre relativement simple. Thus, the invention allows a large choice of interleavers (i.e., permutations) while maintaining a relatively simple implementation.
Selon une caractéristique particulière, le procédé est remarquable en ce que chaque ligne d'une première matrice de données représentatives des données codées selon le code global est représentative de données codées par un sous-code constituant du code global appartenant à un premier groupe de sous-codes, une partie des données de la première matrice, dites données non significatives, n'étant pas significative ; - chaque ligne d'un premier sous-ensemble de lignes d'au moins une deuxième matrice de données représentatives des données codées selon le code global est représentative de données codées par un sous-code constituant du code global appartenant à au moins un deuxième groupe de sous-codes ; - un deuxième sous-ensemble lignes de la deuxième matrice de données contenant les données non significatives ; - chaque matrice parmi les au moins une deuxième matrice de données étant obtenue à partir d'une transformation de la première matrice, la transformation comprenant une permutation d'au moins une partie des colonnes de la première matrice. According to one particular characteristic, the method is remarkable in that each line of a first matrix of data representative of the data coded according to the global code is representative of data coded by a subcode constituting global code belonging to a first group of sub-codes. -codes, some of the data of the first matrix, called non-significant data, not being significant; each line of a first subset of lines of at least one second matrix of data representative of the data coded according to the global code is representative of data coded by a subcode constituting global code belonging to at least a second group subcodes; a second subset of the rows of the second data matrix containing the insignificant data; each matrix of at least one second data matrix being obtained from a transformation of the first matrix, the transformation comprising a permutation of at least a portion of the columns of the first matrix.
Selon une caractéristique particulière, le procédé est remarquable en ce qu'il comprend une étape de test de décodage mettant en #uvre au moins un critère d'arrêt de façon à ce que lorsque le au moins un critère d'arrêt est vérifié According to one particular characteristic, the method is remarkable in that it comprises a decoding test step implementing at least one stopping criterion so that when the at least one stopping criterion is verified
<Desc/Clms Page number 8><Desc / Clms Page number 8>
pour au moins un des sous-codes, au moins un des décodeurs associés au ou aux sous-codes s'arrête de décoder le ou les sous-codes pour lesquels le ou les critères d'arrêt sont vérifiés. for at least one of the sub-codes, at least one of the decoders associated with the sub-code or codes stops decoding the sub-code or codes for which the stop criterion or criteria are checked.
De cette manière, la définition du code global permet l'application d'un critère d'arrêt sur les codes constituants afin de réduire au fil des itérations le nombre de codes constituants traités. Ce critère d'arrêt est, par exemple, basé sur le seuillage des décisions pondérées. Ainsi, l'invention permet d'économiser du temps de calcul du dispositif de décodage et donc de l'énergie, ce qui est particulièrement utile lorsque le procédé de décodage est mis en #uvre au sein de terminaux fonctionnant sur batterie. In this way, the definition of the global code allows the application of a stop criterion on the component codes in order to reduce over the iterations the number of component codes processed. This stopping criterion is, for example, based on the thresholding of the weighted decisions. Thus, the invention makes it possible to save calculating time of the decoding device and therefore of the energy, which is particularly useful when the decoding method is implemented within terminals operating on a battery.
Selon une caractéristique particulière, le procédé est remarquable en ce qu'il met en #uvre une étape de lecture des données codées à partir d'un support optique et/ou magnétique et/ou de transmission desdites données codées sur un canal à interférences. According to one particular characteristic, the method is remarkable in that it implements a step of reading coded data from an optical and / or magnetic medium and / or of transmitting said encoded data over an interference channel.
Selon une caractéristique particulière, le procédé est remarquable en ce qu'au moins un des sous-codes correspond à des interférences entre des symboles représentatifs du bloc de données décodé lorsque le bloc est stocké sur le support optique et/ou magnétique et/ou lorsque le bloc est transmis dans un canal à interférences. According to one particular characteristic, the method is remarkable in that at least one of the sub-codes corresponds to interference between symbols representative of the decoded data block when the block is stored on the optical and / or magnetic medium and / or when the block is transmitted in an interference channel.
Ainsi, l'invention est particulièrement bien adaptée aux applications de stockage sur un support optique et/ou magnétique, le canal de stockage permettant lui même de coder des données stockées selon un sous-code mettant en #uvre des interférences entre des symboles correspondant aux données stockées et/ou transmises. Un ou plusieurs autres sous-codes peuvent alors être mis en #uvre selon des techniques de codes utilisant, par exemple, des codes récursifs systématiques circulaires. Thus, the invention is particularly well suited to storage applications on an optical and / or magnetic medium, the storage channel itself being able to encode data stored according to a sub-code implementing interferences between symbols corresponding to the stored and / or transmitted data. One or more other sub-codes can then be implemented according to code techniques using, for example, circular recursive systematic codes.
Selon une caractéristique particulière, le procédé est remarquable en ce qu'il met en #uvre une étape de réception des données codées en provenance d'un émetteur. According to one particular characteristic, the method is remarkable in that it implements a step of receiving the coded data coming from a transmitter.
<Desc/Clms Page number 9> <Desc / Clms Page number 9>
Ainsi, l'invention peut avantageusement être mise en #uvre pour des applications de type transmission sur un canal bruité (par exemple, canal sans fil radio, infra-rouge et/ou acoustique)
Selon une caractéristique particulière, le procédé est remarquable en ce que les ensembles de données codées avec chacun des sous-codes sont tous différents deux à deux. Thus, the invention can advantageously be implemented for transmission-type applications on a noisy channel (for example, wireless radio channel, infra-red and / or acoustic)
According to a particular characteristic, the method is remarkable in that the data sets coded with each of the sub-codes are all different two by two.
Ainsi, le graphe bipartite associé au code global est irrégulier notamment parce que les sous-codes du code global sont tous différents deux à deux. Thus, the bipartite graph associated with the global code is irregular, in particular because the sub-codes of the global code are all different two by two.
Selon une caractéristique particulière, le procédé est remarquable en ce qu'au moins deux des sous-codes comprennent au moins deux des données à décoder en commun. According to one particular characteristic, the method is remarkable in that at least two of the subcodes comprise at least two of the data to be decoded in common.
Ainsi, le graphe bipartite associé au code global est irrégulier notamment parce que deux sous-codes du code global ont au moins deux données en commun. Thus, the bipartite graph associated with the global code is irregular notably because two sub-codes of the global code have at least two data in common.
Selon une caractéristique particulière, le procédé est remarquable en ce que le code global est de type code produit avec un entrelaceur non uniforme. According to one particular characteristic, the method is remarkable in that the global code is of code type produced with a non-uniform interleaver.
Ainsi, le graphe bipartite associé au code global de type code produit est irrégulier notamment parce que l'entrelaceur associé n'est pas uniforme, c'est-àdire que, si le code global est symbolisé par une matrice à deux dimensions, les sous-codes ne correspondent pas uniquement aux lignes et aux colonnes de la matrice. Thus, the bipartite graph associated with the global code of the product code type is irregular, in particular because the associated interleaver is not uniform, that is, if the global code is symbolized by a two-dimensional matrix, the subnotes -codes do not just match the rows and columns of the matrix.
Selon une caractéristique particulière, le procédé est remarquable en ce qu'il comprend, en outre, une étape de démultiplexage du bloc de données décodé de façon à alimenter au moins deux destinataires distincts par des données appartenant au bloc de données décodé démultiplexé. According to one particular characteristic, the method is remarkable in that it further comprises a step of demultiplexing the decoded data block so as to supply at least two distinct recipients with data belonging to the demodulated data block.
Ainsi, l'invention peut prend en compte des données en provenance de sources différentes (par exemple, de type multimédia). Ces données sont regroupées pour être codées selon un code de taille plus grande que si les données issues de sources distinctes étaient codées séparément. Elles bénéficient donc d'un pouvoir de correction plus élevé, chaque bloc d'information correspondant à une Thus, the invention can take into account data from different sources (for example, multimedia type). These data are grouped together to be coded to a larger size code than if the data from separate sources were coded separately. They thus benefit from a higher power of correction, each block of information corresponding to a
<Desc/Clms Page number 10><Desc / Clms Page number 10>
fraction ou un sous-ensemble des roulettes du code global. Le code global de taille plus grande est donc plus efficace et ses propriétés peuvent donc avantageusement être exploitées par le procédé de décodage. fraction or a subset of the rollers of the overall code. The larger size global code is therefore more efficient and its properties can therefore advantageously be exploited by the decoding method.
Selon une caractéristique particulière, le procédé est remarquable en ce que le degré des symboles d'information du bloc de données décodé, dans le code global n'est pas uniforme. According to a particular characteristic, the method is remarkable in that the degree of the information symbols of the decoded data block in the global code is not uniform.
Le degré d'un symbole d'information dans un code global est, ici, par définition le nombre d'arcs qui sont connectés à ce symbole dans une représentation du code sous forme de graphe bipartite. The degree of an information symbol in a global code is, here, by definition the number of arcs that are connected to this symbol in a representation of the code as a bipartite graph.
Ainsi, plus des bits d'information nécessitent un niveau de protection élevé, plus leur degré dans le code global sera élevé. La protection d'un symbole peut, en outre, être améliorée en diminuant le rendement des sous-codes constituants auquel le symbole est associé. Thus, the more information bits require a high level of protection, the higher their degree in the overall code will be. The protection of a symbol may, in addition, be improved by decreasing the yield of the constituent sub-codes to which the symbol is associated.
L' invention concerne également un procédé de codage de code correcteur d'erreurs, du type associant un bloc de données source à des données codées selon un code global comprenant au moins deux sous-codes constituants, un graphe bipartite irrégulier étant associé audit code global, le bloc de données codées étant destiné à être transmis vers au moins un récepteur et/ou stocké sur un support de données, remarquable en ce que le bloc de données codées est destiné à être décodé par le procédé de décodage itératif. The invention also relates to an error correction code coding method, of the type associating a source data block with data coded according to a global code comprising at least two component sub-codes, an irregular bipartite graph being associated with said global code. , the coded data block being intended to be transmitted to at least one receiver and / or stored on a data medium, remarkable in that the coded data block is intended to be decoded by the iterative decoding method.
L' invention concerne, en outre, un procédé de codage de code correcteur d'erreurs, du type associant un bloc de données source à des données codées selon un code global comprenant au moins deux sous-codes constituants, un graphe bipartite irrégulier étant associé audit code global, le bloc de données codées étant destiné à être transmis vers au moins un récepteur et/ou stocké sur un support de données, le bloc de données codées étant destiné à être décodé par un procédé de décodage itératif, remarquable en ce que le procédé comprend, en outre, une étape d' alimentation en parallèle d'au moins deux codeurs parmi une pluralité de codeurs, correspondant chacun respectivement à au moins un des sous-codes, par des données à coder correspondantes dudit bloc de données à coder, des données à The invention further relates to an error correction code encoding method of the type associating a source data block with data encoded according to a global code comprising at least two constituent sub-codes, an irregular bipartite graph being associated global code, the coded data block being intended to be transmitted to at least one receiver and / or stored on a data medium, the coded data block being intended to be decoded by an iterative decoding method, remarkable in that the method further comprises a step of supplying in parallel at least two coders among a plurality of coders, each corresponding respectively to at least one of the sub-codes, with data to be coded corresponding to said block of data to be coded , data to
<Desc/Clms Page number 11><Desc / Clms Page number 11>
coder étant extraites en parallèle d'au moins deux bancs mémoires pour alimenter autant de codeurs. code being extracted in parallel from at least two memory banks to supply as many encoders.
Selon une caractéristique particulière, le procédé est remarquable en ce que chacun des codeurs est alimenté séquentiellement par les données à coder lui correspondant. According to one particular characteristic, the method is remarkable in that each of the coders is fed sequentially by the data to be encoded corresponding to it.
Selon une caractéristique particulière, le procédé est remarquable en en ce qu'au moins un desdits sous-codes est un code récursif convolutif circulaire. According to one particular characteristic, the method is remarkable in that at least one of said subcodes is a circular convolutional recursive code.
Selon une caractéristique particulière, le procédé est remarquable en ce qu'au moins un des sous-codes est un code systématique. According to one particular characteristic, the method is remarkable in that at least one of the sub-codes is a systematic code.
Selon une caractéristique particulière, le procédé est remarquable en ce qu'au moins deux des sous-codes sont des codes m-binaires, m étant un entier supérieur ou égal à 2 et en ce qu'une permutation intra-symboles est appliquée entre au moins deux des sous-codes m-binaires. According to a particular characteristic, the method is remarkable in that at least two of the sub-codes are m-binary codes, m being an integer greater than or equal to 2 and in that an intra-symbol permutation is applied between minus two of the m-binary sub-codes.
Selon une caractéristique particulière, le procédé est remarquable en ce qu'il comprend, en outre, une étape d'aiguillage de chacune des données à coder vers un des codeurs, les données étant aiguillées en parallèle et simultanément de sorte que chacune d'entre elles alimente un codeur lui correspondant en propre. According to a particular characteristic, the method is remarkable in that it further comprises a step of switching each of the data to be coded to one of the coders, the data being switched in parallel and simultaneously so that each of they feed an encoder corresponding to him own.
Selon une caractéristique particulière, le procédé est remarquable en ce que l'étape d'aiguillage comprend elle-même une étape de permutation circulaire d'un ensemble comprenant au moins une partie des données à coder. According to a particular characteristic, the method is remarkable in that the routing step itself comprises a circular permutation step of a set comprising at least a part of the data to be coded.
Selon une caractéristique particulière, le procédé est remarquable en ce que la permutation circulaire est une rotation qui possède un pas déterminé en fonction du rang de lecture des données lues dans les bancs mémoires. According to one particular characteristic, the method is remarkable in that the circular permutation is a rotation which has a determined pitch as a function of the read rank of the data read in the memory banks.
Selon une caractéristique particulière, le procédé est remarquable en ce que l'étape d'aiguillage met en #uvre une étape d'adressage de chacun des bancs mémoires de sorte que des données puissent être lues dans le banc mémoire dans un ordre prédéterminé distinct de l'ordre d'écriture des données dans le banc mémoire. According to a particular characteristic, the method is remarkable in that the switching step implements a step of addressing each of the memory banks so that data can be read in the memory bank in a predetermined order distinct from the writing order of the data in the memory bank.
Selon une caractéristique particulière, le procédé est remarquable en ce que chaque ligne d'une première matrice de données représentatives desdites données According to one particular characteristic, the method is remarkable in that each line of a first matrix of data representative of said data
<Desc/Clms Page number 12><Desc / Clms Page number 12>
codées selon le code global est représentative de données codées par un sous-code constituant du code global appartenant à un premier groupe de sous-codes ; chaque ligne d'au moins une deuxième matrice de données représentatives desdites données codées selon le code global est représentative de données codées par un sous-code constituant du code global appartenant à au moins un deuxième groupe de sous-codes ; chaque matrice parmi la ou les deuxièmes matrices de données étant obtenue à partir d'une transformation de la première matrice, la transformation comprenant une permutation d'au moins une partie des colonnes de la première matrice. encoded according to the global code is representative of data encoded by a subcode constituting global code belonging to a first group of subcodes; each line of at least a second data matrix representative of said global code-encoded data is representative of data encoded by a global code sub-code belonging to at least a second group of sub-codes; each matrix of one or both data matrices being obtained from a transformation of the first matrix, the transformation comprising a permutation of at least a portion of the columns of the first matrix.
Selon une caractéristique particulière, le procédé est remarquable en ce que la transformation comprend, en outre, une permutation d'au moins une partie des lignes de la première matrice. According to a particular characteristic, the method is remarkable in that the transformation further comprises a permutation of at least a portion of the lines of the first matrix.
Selon une caractéristique particulière, le procédé est remarquable en ce que chaque ligne d'une première matrice de données représentatives des données codées selon le code global est représentative de données codées par un sous-code constituant du code global appartenant à un premier groupe de sous-codes, une partie des données de la première matrice, dites données non significatives, n'étant pas significative ; chaque ligne d'un premier sous-ensemble de lignes d'au moins une deuxième matrice de données représentatives des données codées selon le code global est représentative de données codées par un sous-code constituant du code global appartenant à au moins un deuxième groupe de sous-codes ; un deuxième sous-ensemble lignes de la deuxième matrice de données contenant les données non significatives ; et chaque matrice parmi la ou les deuxièmes matrices de données étant obtenue à partir d'une transformation de la première matrice, la transformation comprenant une permutation d'au moins une partie des colonnes de la première matrice. According to one particular characteristic, the method is remarkable in that each line of a first matrix of data representative of the data coded according to the global code is representative of data coded by a subcode constituting global code belonging to a first group of sub-codes. -codes, some of the data of the first matrix, called non-significant data, not being significant; each line of a first subset of lines of at least one second data matrix representative of the global code encoded data is representative of data encoded by a subcode constituting global code belonging to at least a second group of subcodes; a second subset of the rows of the second data matrix containing the insignificant data; and each matrix of one or both of the data matrices being obtained from a transformation of the first matrix, the transformation comprising a permutation of at least a portion of the columns of the first matrix.
Selon une caractéristique particulière, le procédé est remarquable en ce qu'il met en #uvre une étape d'écriture desdites données codées sur un support According to one particular characteristic, the method is remarkable in that it implements a step of writing said coded data on a medium
<Desc/Clms Page number 13><Desc / Clms Page number 13>
optique et/ou magnétique et/ou de transmission des données codées sur un canal à interférences. optical and / or magnetic and / or data transmission coded on an interference channel.
Selon une caractéristique particulière, le procédé est remarquable en qu'au moins un des sous-codes correspond à des interférences entre des symboles représentatifs du bloc de données décodé lorsque le bloc est stocké sur le support optique et/ou magnétique et/ou lorsque le bloc est transmis dans un canal à interférences. According to one particular characteristic, the method is remarkable in that at least one of the sub-codes corresponds to interference between symbols representative of the decoded data block when the block is stored on the optical and / or magnetic medium and / or when the block is transmitted in an interference channel.
Selon une caractéristique particulière, le procédé est remarquable en ce qu'il met en #uvre une étape de réception des données codées en provenance d'un émetteur. According to one particular characteristic, the method is remarkable in that it implements a step of receiving the coded data coming from a transmitter.
Selon une caractéristique particulière, le procédé est remarquable en ce que les ensembles de données codées avec chacun des sous-codes sont tous différents deux à deux. According to a particular characteristic, the method is remarkable in that the data sets coded with each of the sub-codes are all different two by two.
Selon une caractéristique particulière, le procédé est remarquable en ce qu'au moins deux des sous-codes comprennent au moins deux données codées en commun. According to one particular characteristic, the method is remarkable in that at least two of the sub-codes comprise at least two data coded in common.
Selon une caractéristique particulière, le procédé est remarquable en ce que le code global est de type code produit avec un entrelaceur non uniforme. According to one particular characteristic, the method is remarkable in that the global code is of code type produced with a non-uniform interleaver.
Selon une caractéristique particulière, le procédé est remarquable en ce qu'il comprend, en outre, une étape de multiplexage d'au moins deux blocs de données en provenance chacun de deux sources distinctes de façon à former le bloc de données source. According to one particular characteristic, the method is remarkable in that it further comprises a step of multiplexing at least two data blocks each coming from two different sources so as to form the source data block.
Selon une caractéristique particulière, le procédé est remarquable en ce que le degré des symboles d'information dudit bloc de données décodé, dans le code global n'est pas uniforme. According to one particular characteristic, the method is remarkable in that the degree of the information symbols of said decoded data block in the global code is not uniform.
L'invention concerne aussi un signal représentatif d'un bloc de données codées selon un code global comprenant au moins deux sous-codes constituants, un graphe bipartite irrégulier étant associé au code global, le bloc de données codées étant destiné à être décodé par le procédé de décodage itératif. The invention also relates to a signal representative of a block of data coded according to a global code comprising at least two constituent sub-codes, an irregular bipartite graph being associated with the global code, the coded data block being intended to be decoded by the iterative decoding method.
<Desc/Clms Page number 14> <Desc / Clms Page number 14>
L'invention concerne, en outre, un dispositif de décodage de code correcteur d'erreurs, du type associant un bloc de données décodé à des données codées selon un code global comprenant au moins deux sous-codes constituants, un graphe bipartite irrégulier étant associé audit code global, le procédé de décodage associé étant itératif et produisant à chaque itération un bloc de données extrinsèques, chacune des données extrinsèques se rapportant à une des données codées, le dispositif mettant en #uvre des moyens de mémorisation d'un bloc de données à décoder comprenant lesdites données codées et lesdites données extrinsèques, le bloc de données à décoder étant réparti dans une pluralité de bancs mémoires disjoints, adressables indépendamment, le dispositif étant remarquable en ce qu'à chaque itération, il comprend, en outre, des moyens d'alimentation en parallèle d'au moins deux décodeurs parmi une pluralité de décodeurs, correspondant chacun respectivement à au moins un des sous-codes, par des données à décoder correspondantes du bloc de données à décoder, des données à décoder étant extraites en parallèle d'au moins deux desdits bancs mémoires pour alimenter autant de décodeurs, et chacun des décodeurs étant alimenté séquentiellement par les données à décoder lui correspondant. The invention also relates to an error correction code decoding device, of the type associating a decoded data block with data coded according to a global code comprising at least two constituent sub-codes, an irregular bipartite graph being associated global code audit, the associated decoding method being iterative and producing at each iteration a block of extrinsic data, each of the extrinsic data relating to one of the coded data, the device implementing storage means of a data block to decode comprising said coded data and said extrinsic data, the data block to be decoded being distributed in a plurality of disjoint memory banks, independently addressable, the device being remarkable in that at each iteration, it further comprises means supplying in parallel at least two decoders among a plurality of decoders, corresponding to each n respectively to at least one of the sub-codes, by corresponding data to be decoded from the data block to be decoded, data to be decoded being extracted in parallel from at least two of said memory banks to supply as many decoders, and each of the decoders being fed sequentially by the data to be decoded corresponding to it.
De plus, l'invention concerne un dispositif de codage de code correcteur d'erreurs, du type associant un bloc de données source à des données codées selon un code global comprenant au moins deux sous-codes constituants, un graphe bipartite irrégulier étant associé au code global, le bloc de données codées étant destiné à être transmis vers au moins un récepteur et/ou stocké sur un support de données, le bloc de données codées étant destiné à être décodé par un dispositif de décodage itératif, le dispositif étant en ce que le dispositif comprend, en outre, des moyens d'alimentation en parallèle d'au moins deux codeurs parmi une pluralité de codeurs, correspondant chacun respectivement à au moins un des sous-codes, par des données à coder correspondantes du bloc de données à coder, In addition, the invention relates to an error correction code encoding device, of the type associating a source data block with data coded according to a global code comprising at least two constituent sub-codes, an irregular bipartite graph being associated with the global code, the coded data block being intended to be transmitted to at least one receiver and / or stored on a data medium, the coded data block being intended to be decoded by an iterative decoding device, the device being in this the device further comprises means for supplying in parallel at least two coders among a plurality of coders, each corresponding respectively to at least one of the sub-codes, with corresponding data to be coded from the data block to encode,
<Desc/Clms Page number 15><Desc / Clms Page number 15>
des données à coder étant extraites en parallèle d'au moins deux des bancs mémoires pour alimenter autant de codeurs. data to be coded being extracted in parallel from at least two of the memory banks to supply as many encoders.
Les avantages des procédés de codage, du signal, du dispositif de codage et du dispositif de décodage sont les mêmes que ceux du procédé de décodage. Ils ne sont donc pas détaillés plus amplement. The advantages of the coding methods, the signal, the coding device and the decoding device are the same as those of the decoding method. They are not detailed further.
D'autres caractéristiques et avantages de l'invention apparaîtront plus clairement à la lecture de la description suivante d'un mode de réalisation préférentiel, donné à titre de simple exemple illustratif et non limitatif, et des dessins annexés, parmi lesquels : - la figure 1 présente un mode particulier de réalisation de l'opération de codage de l'invention qui consiste à utiliser quatre roulettes permettant de former un code (12,8) selon l'invention ; - les figures 2 et 3 illustrent deux modes particuliers de réalisation de l'opération de codage, selon l'invention ; - la figure 4 présente un mode de réalisation d'un codeur permettant de construire des codes irréguliers, conforme à l'invention ; - la figure 5 décrit un codeur dont l'architecture permet de mettre en oeuvre les codes selon les figures 1 à 4 ; - la figure 6 illustre un décodeur adapté à décoder des codes à roulettes décrits en regard des figures 1 à 4 ; et - la figure 7 illustre une application de l'invention aux stockage de données. Other features and advantages of the invention will appear more clearly on reading the following description of a preferred embodiment, given as a simple illustrative and nonlimiting example, and the appended drawings, among which: FIG. 1 shows a particular embodiment of the coding operation of the invention which consists in using four wheels making it possible to form a code (12, 8) according to the invention; FIGS. 2 and 3 illustrate two particular embodiments of the coding operation, according to the invention; FIG. 4 shows an embodiment of an encoder making it possible to construct irregular codes, according to the invention; FIG. 5 describes an encoder whose architecture makes it possible to implement the codes according to FIGS. 1 to 4; FIG. 6 illustrates a decoder adapted to decode roulette codes described with reference to FIGS. 1 to 4; and FIG. 7 illustrates an application of the invention to data storage.
Le principe général de l'invention repose sur des codes permettant des décodages modulaires associés à différents niveaux de qualité et à différents débits suivant le nombre de modules implémentés dans un décodeur. The general principle of the invention relies on codes allowing modular decodings associated with different levels of quality and different rates according to the number of modules implemented in a decoder.
L' invention s'applique dans tous les cas où il est nécessaire de transmettre et/ou de mémoriser une information numérique avec un certain niveau de fiabilité. The invention applies in all cases where it is necessary to transmit and / or store digital information with a certain level of reliability.
Un champ préférentiel d'application de l'invention est celui de la transmission numérique sur un canal bruité. Par exemple, l'invention peut être utilisée pour la transmission et réception de données dont la fiabilité et le débit on une importance A preferred field of application of the invention is that of digital transmission over a noisy channel. For example, the invention can be used for transmitting and receiving data whose reliability and throughput is important.
<Desc/Clms Page number 16><Desc / Clms Page number 16>
vitale telles que les transmissions par satellite, sur fibre optique, sur un canal radiofréquence, sur un câble ou pour le stockage d'information sur un support physique. such as satellite, fiber optic, radiofrequency channel, cable or physical media information
L'invention s'applique également pour des applications de stockage de données sur des supports par exemple optiques et/ou magnétiques. The invention is also applicable for applications for storing data on optical and / or magnetic media, for example.
L'invention permet, en outre, de coder et décoder n'importe quel signal notamment un signal sonore, vidéo, de donnée ou la concaténation de plusieurs signaux hétérogènes. The invention also makes it possible to code and decode any signal, in particular a sound, video or data signal or the concatenation of several heterogeneous signals.
Plus précisément, le principe général de l'invention repose sur un codage d'une séquence de K symboles d'informations, utilisant R codes constituants permettant d'obtenir un mot de code de longueur N supérieure strictement au nombre K. More specifically, the general principle of the invention is based on a coding of a sequence of K information symbols, using R component codes making it possible to obtain a code word of length N strictly greater than the number K.
Le code global comprend donc des codes constituants appelés, ici, roulettes par analogie à une réalisation possible utilisant des codes convolutifs récursifs systématiques et circulaires. The global code therefore comprises constituent codes called, here, casters by analogy to a possible embodiment using systematic and circular recursive convolutional codes.
Pour chaque valeur d'un entier i variant de 1 à R, la ième roulette R, d'un code global est définie, dans le cas général, par l'ensemble ordonné M, des symboles du mot du code constituant (sous-code du code global) considéré. Par définition, m, représente le cardinal de Mi. L'ordre des symboles de M, est donné par la nature du code constituant et/ou par l'ordre induit par l'algorithme de décodage. For each value of an integer i varying from 1 to R, the ith roulette R, of a global code is defined, in the general case, by the ordered set M, of the symbols of the constituent code word (subcode of the global code) considered. By definition, m, represents the cardinality of Mi. The order of the symbols of M, is given by the nature of the constituent code and / or by the order induced by the decoding algorithm.
Le code global est constitué à partir des roulettes par un graphe bipartite. The global code is made from the wheels by a bipartite graph.
Ce graphe comprend : - une ligne comprenant les N symboles du mot de code global ; - une ligne contenant les R roulettes ; et - un ensemble de M arcs reliant les R roulettes avec les N symboles du mot de code. This graph comprises: a line comprising the N symbols of the global code word; - a line containing the R wheels; and a set of M arcs connecting the R rollers with the N symbols of the code word.
Selon l'invention, chaque roulette possède mi connexions. Elle est donc connectée à m, symboles du mot de code. Le nombre d'arcs M est donc égal à la somme des mi pouri variant de 1 à R. According to the invention, each wheel has mi connections. It is therefore connected to m, symbols of the code word. The number of arcs M is therefore equal to the sum of the mi peri ranging from 1 to R.
<Desc/Clms Page number 17> <Desc / Clms Page number 17>
On rappelle que de nombreux codes peuvent être décrits par un graphe bipartite général et appelés codes de Tanner qui consistent à décrire un code à l'aide d'un graphe bipartite qui associe des contraintes à un groupe de symboles d'information. Lorsque la contrainte est un simple code de parité, on obtient les LDPC décrits par R.G. Gallager dans le document Low-density parity-check codes (ou en français Codes de parité à faible densité ) et paru aux éditions MIT Press en 1963. Si la contrainte est un code en bloc (n, k), alors on obtient un code à faible densité généralisé (GLD) décrits par R.M. Tanner dans un article intitulé A recursive approach to low complexity codes (ou, en français, une approche récursive des codes à faibles complexité ), paru dans la revue IEEE Transaction On Information Theory, Vol. IT-27 en septembre 1981. It is recalled that many codes can be described by a general bipartite graph and called Tanner codes which consist of describing a code using a bipartite graph that associates constraints to a group of information symbols. When the constraint is a simple parity code, the LDPCs described by RG Gallager are obtained in the document Low-density parity-check codes and published by MIT Press in 1963. If constraint is a block code (n, k), so we obtain a generalized low density code (GLD) described by RM Tanner in an article entitled A recursive approach to low complexity codes (or, in French, a recursive approach to codes low complexity), published in IEEE Transaction On Information Theory, Vol. IT-27 in September 1981.
Un turbo-code (avec deux codes constituants) est généralement décrit par un graphe bipartite qui contient deux contraintes, respectivement associées à un codeur non entrelacé et à un codeur entrelacé. A turbo-code (with two component codes) is generally described by a bipartite graph that contains two constraints, respectively associated with a non-interlaced encoder and an interleaved encoder.
On notera #i(Mi) l'ensemble ordonné des symboles du mot de code global relié à la roulette R,. On notera aussi, par souci de simplicité #i(K), le numéro du symbole du mot de code qui est connecté avec la kième entrée de la roulette Ri. Lors du décodage de la roulette i, #i(k) sera donc le kième symbole utilisé par le décodeur. L'ensemble {#i(k)} représente l'ensemble non ordonné des symboles du mot de code global relié à la roulette Ri. Note #i (Mi) the ordered set of symbols of the global code word connected to the wheel R ,. Note also, for the sake of simplicity #i (K), the number of the symbol of the codeword which is connected with the kth input of the wheel Ri. When decoding the wheel i, #i (k) will be the kth symbol used by the decoder. The set {#i (k)} represents the unordered set of symbols of the global code word connected to the wheel Ri.
Selon l'invention, le graphe bipartite vérifie les conditions suivantes : - les ensembles #i(Mi) vérifient une contrainte particulière, afin de permettre le décodage des codes constituants avec un degré
P de parallélisme ; et - le graphe bipartite est irrégulier. According to the invention, the bipartite graph satisfies the following conditions: the sets #i (Mi) satisfy a particular constraint, in order to allow the decoding of the component codes with a degree
P parallelism; and - the bipartite graph is irregular.
Afin de satisfaire la première des conditions énoncées ci-dessus, les ensembles #i(Mi) sont choisis de façon à permettre d'effectuer une itération de décodage (le traitement des R roulettes) en une ou plusieurs étapes (le nombre d'étapes étant noté T) et les roulettes de chaque étape t (t variant de 1 à T) étant In order to satisfy the first of the above conditions, sets #i (Mi) are chosen to allow decoding iteration (processing of the R rollers) in one or more steps (the number of steps). being denoted T) and the rollers of each step t (t varying from 1 to T) being
<Desc/Clms Page number 18><Desc / Clms Page number 18>
décodées par au moins deux décodeurs en parallèle (le nombre de décodeurs étant noté P, avec P étant égal au rapport R sur 1). decoded by at least two decoders in parallel (the number of decoders being denoted by P, with P being equal to the ratio R on 1).
La première étape de chaque itération comprend un décodage des P premières roulettes R1, R2 ... RP par P décodeurs en parallèle, chacune des P premières roulettes étant associées à un des P décodeurs. La deuxième étape de chaque itération comprend un décodage des P roulettes suivantes RP+1, ... , R2P. D'une manière générale, la iième étape de chaque itération (pour t variant de 1 à
T-1 ) comprend un décodage des roulettes Rt~l jp+1, ... , Rt,p chacune des P roulettes R(t-DP+n ### RtP. étant associées à un des P décodeurs. L'étape T comprend un décodage des dernières roulettes (RR-P+1, ... , RR). The first step of each iteration comprises a decoding of the first P rollers R1, R2 ... RP by P decoders in parallel, each of the first P casters being associated with one of the P decoders. The second step of each iteration includes a decoding of the following P rollers RP + 1, ..., R2P. In a general way, the ith step of each iteration (for t varying from 1 to
T-1) comprises a decoding of the rollers Rt ~ l jp + 1, ..., Rt, p each of the P rollers R (t-DP + n ### RtP) being associated with one of the P decoders. T includes a decoding of the last wheels (RR-P + 1, ..., RR).
Pour chaque étape t des T étapes de chaque itération, on utilise donc P décodeurs en parallèle, associés chacun à un banc mémoire BM1, BM2,.., BMP. For each step t of the T steps of each iteration, P decoders are used in parallel, each associated with a memory bank BM1, BM2, .., BMP.
Chacun des P bancs mémoires contient les données nécessaires à l'exécution d'un des P décodeurs ainsi que les données produites par un des P décodeurs. A chaque
cycle symbole k de l'étape t, les P décodeurs traitant les P symboles (t~l,pT1(k) , (t-1).P+2lk)> ID,.p(k réalisent des accès mémoires en parallèle et indépendants dans P bancs distincts. Each of the P memory banks contains the data necessary for the execution of one of the P decoders as well as the data produced by one of the P decoders. Every
symbol cycle k of the step t, the P decoders processing the P symbols (t-1, pT1 (k), (t-1) .P + 2lk)> ID, .p (k realize memory accesses in parallel and independent in P separate benches.
La contrainte sur les ensembles #i(Mi) est donc la suivante : à chaque cycle symbole k : soit il existe une bijection qui associe, pour toutes les valeurs de t allant de 1 à T et pour toutes les valeurs de k allant de 1 à M,
les P symboles (t,.p+1(k) , (t I).P2(k)" <'PtAk)) aux P bancs (BM,, BM2,..., BMp) ; c'est-à-dire que l'on peut trouver une répartition des symboles dans les P bancs mémoires, compatible avec les ensembles #(Mi) et garantissant des accès mémoires en parallèle ; - soit, dans le cas contraire, si les symboles #i(k) et #j(k) correspondent au même banc mémoire BMx, alors ils sont égaux
D(k) = <'Pik)) ; la donnée lue dans un banc est alors unique et elle est dupliquée avant d'être transmise aux roulettes R, et Rj. The constraint on sets #i (Mi) is thus the following: at each symbol cycle k: either there exists a bijection which associates, for all the values of t ranging from 1 to T and for all the values of k ranging from 1 at M,
the P symbols (t, .p + 1 (k), (t I) .P2 (k) "<'PtAk)) at P banks (BM ,, BM2, ..., BMp); that is to say that we can find a distribution of symbols in P banks memory compatible with sets # (Mi) and guaranteeing access memories in parallel - or, if not, if the symbols #i (k) and #j (k) correspond to the same BMx memory bank, so they are equal
D (k) = (Pik)); the data read in a bank is then unique and it is duplicated before being transmitted to the wheels R, and Rj.
<Desc/Clms Page number 19> <Desc / Clms Page number 19>
Ainsi, lorsque l'on utilise P décodeurs en parallèle, on multiplie par un facteur égal à P la surface du circuit dédiée au calcul (partie calculatoire) par rapport à un seul décodeur. En revanche, le temps d'une itération est divisé par P. Thus, when using P decoders in parallel, one multiplies by a factor equal to P the surface of the circuit dedicated to the computation (computational part) with respect to a single decoder. On the other hand, the time of an iteration is divided by P.
La latence de décodage est donc divisée par P. Le débit est donc multiplié dans les mêmes proportions. En résumé, pour un accroissement linéaire de la surface, on obtient un accroissement linéaire du débit. The decoding latency is therefore divided by P. The bit rate is therefore multiplied in the same proportions. In summary, for a linear increase of the surface, one obtains a linear increase of the flow.
Par ailleurs, selon l'invention, le graphe bi-partite est irrégulier. Cette irrégularité permet de générer un code pseudo aléatoire et donc d'obtenir de bonnes performances. Elle se caractérise par les deux propriétés suivantes : - les ensembles {#i(Mi)} sont tous différents deux à deux (soit
{t(Mz) {<t>i)} pour tout i différent de j, i et j variants de 1 à R) (alors que cette propriété n'est pas vérifiée pour les turbo-codes classiques tels que décrits dans le brevet français n FR-91 05280) ; et
- soit il existe deux ensembles {<t>,(M,)} et {<t>i)} pour deux valeurs i et j distinctes dont l'intersection contient au moins deux éléments (sous forme mathématique : il existe i différent
dey tels que c({<P,(M,)} rl {<t>i)}) 2, où card représente la fonction cardinal d'un ensemble) ; - soit le code vérifie la propriété : soitr l'ensemble des couples d'indice de roulette (i,j,k) vérifiant : - {#i(Mi)} n {#j(Mj)} = 0 (où 0 représente l'ensemble vide);
- card( { <t>,(M)} fil {èJ?iMk)}) = 1 ; et - c({0/M,)} n {<t>k(Mk)}) = 1 ; alors : - si {#i(Mi)} # {#k(Mk)} = {#i(h)} (où #i(h) représente un point unique d'indice h pour la roulette Ri; et Moreover, according to the invention, the bi-partite graph is irregular. This irregularity makes it possible to generate a pseudo-random code and thus to obtain good performances. It is characterized by the following two properties: - the sets {#i (Mi)} are all different two by two (either
{t (Mz) {<t> i)} for all i different from j, i and j variants from 1 to R) (while this property is not verified for conventional turbo-codes as described in the patent French FR-91 05280); and
- or there are two sets {<t>, (M,)} and {<t> i)} for two distinct values i and j whose intersection contains at least two elements (in mathematical form: there are i different
dey such that c ({<P, (M,)} rl {<t> i)}) 2, where card represents the cardinal function of a set); either the code checks the property: let all the pairs of roulette index (i, j, k) satisfying: - {#i (Mi)} n {#j (Mj)} = 0 (where 0 represents the empty set);
- card ({<t>, (M)} wire {èJ? iMk)}) = 1; and - c ({0 / M,)} n {<t> k (Mk)}) = 1; then: - if {#i (Mi)} # {#k (Mk)} = {#i (h)} (where #i (h) represents a single point of index h for the wheel Ri, and
<Desc/Clms Page number 20> <Desc / Clms Page number 20>
- si {<)}n{<(MJ} = 1 IDJ(h')l (où <Pih') représente un point unique d'indice h' pour la roulette Ri); il existe au moins un triplet (i,j,k) dans l'ensemble # tel que h est différent de h'.) (dans ce cas, on peut obtenir des codes ayant de meilleures performances que les codes à concaténation parallèles qui utilise un entrelaceur uniforme, connus en soi, pour lesquels cette dernière condition n'est pas vérifiée et qui sont notamment décrits dans l'article Code construction and decoding of Parallel concatenated tail-biting codes (ou en français construction de code et décodage de codes circulaires à concaténation parallèle ) écrit par C. Weiss, C.
Bettstetter et S. Riedel et paru dans la revue IEEE transaction on information theory , Vol. 47, N 1 de janvier 2001)
Selon un autre aspect de l' invention, pour la mise en #uvre du décodage, afin de limiter la latence de décodage, on applique un critère d'arrêt tel que décrit dans le document Stopping rules for turbo decoders (ou critère d'arrêt pour des turbo-décodeurs en français ) écrit par A. Matache, S. Dolinar et F ; dans le rapport TMO progress Report 42-142 en août 2000 et édité par le JPL (Jet Propulsion Laboratory). Néanmoins, selon des techniques connues, le critère d'arrêt est appliqué à partir d'un découpage d'une trame à décoder en fenêtres de taille égale. Le critère d'arrêt est alors appliqué sur les fenêtres de façon à arrêter le traitement des fenêtres ayant convergé et ainsi, diminuer le nombre de fenêtres traitées lors des itérations suivantes. Un tel dispositif présente deux inconvénients :
if {<)} n {<(MJ} = 1 IDJ (h ') 1 (where <Pih') represents a single point of index h 'for the wheel Ri); there is at least one triplet (i, j, k) in the set # such that h is different from h '.) (in this case, codes with better performance can be obtained than parallel concatenation codes that use a uniform interleaver, known per se, for which the latter condition is not verified and which are described in particular in the article Code construction and decoding of Parallel concatenated tail-biting codes (or in French code construction and decoding of circular codes parallel concatenation) written by C. Weiss, C.
Bettstetter and S. Riedel and published in the journal IEEE transaction on information theory, Vol. 47, No. 1 of January 2001)
According to another aspect of the invention, for the implementation of the decoding, in order to limit the decoding latency, a stopping criterion is applied as described in the document Stopping rules for turbo decoders (or stopping criterion for turbo-decoders in French) written by A. Matache, S. Dolinar and F; in report TMO Progress Report 42-142 in August 2000 and published by the JPL (Jet Propulsion Laboratory). Nevertheless, according to known techniques, the stopping criterion is applied from a division of a frame to be decoded into windows of equal size. The stop criterion is then applied to the windows so as to stop the processing of the converged windows and thus reduce the number of windows processed during the following iterations. Such a device has two disadvantages:
<Desc/Clms Page number 21><Desc / Clms Page number 21>
le découpage en fenêtre est arbitraire et n'est en général, pas adapté à la configuration des erreurs résiduelles dans le processus de décodage ; et le découpage d'un trame continue en fenêtre nécessite une gestion complexe et sous-optimale des effets de bords. the window division is arbitrary and is not generally adapted to the configuration of the residual errors in the decoding process; and splitting a continuous window frame requires complex and suboptimal management of edge effects.
Selon l'invention, le code, par construction, permet de pallier ces inconvénients de l'art antérieur en améliorant l' utilisation du critère d'arrêt à seuillage des décisions pondérées qui est appliqué pour chacune des R roulettes. According to the invention, the code, by construction, makes it possible to overcome these disadvantages of the prior art by improving the use of the weighted decision thresholding stop criterion which is applied for each of the R wheels.
En effet, selon l'invention, la fenêtre sur laquelle est appliqué le critère d'arrêt n'est pas choisie de manière arbitraire mais, au contraire, cette fenêtre correspond exactement à un code constituant. Indeed, according to the invention, the window on which the stop criterion is applied is not chosen arbitrarily, but on the contrary, this window corresponds exactly to a constituent code.
Ce critère d'arrêt peut être utilisé pour des applications à bas débits où l'on n'utilise pas le maximum de parallélisme permis par le code. On note que l'utilisation telle que décrite ci-après n'est pas limitée aux codes mettant en oeuvre un procédé de décodage selon l'invention mais s'applique à tout code comprenant au moins un sous-code de type roulette et un entrelacement des des symboles d'informations qui peut être quelconque. Ainsi, par exemple, on peut choisir d'implémenter un seul décodeur qui décode successivement les R roulettes. Ainsi, au cours du décodage d'une roulette, on applique un critère d'arrêt tel que décrit dans le rapport cité plus haut à chaque roulette (et non pas selon l'état de l'art seulement au code global). Si le critère est vérifié pour au moins une roulette, cette roulette ne sera plus décodée lors de l'itération suivante, permettant ainsi d'économiser de la consommation d'énergie et des ressources. This stopping criterion can be used for low bit rate applications where the maximum of parallelism allowed by the code is not used. Note that the use as described below is not limited to the codes implementing a decoding method according to the invention but applies to any code comprising at least one type of subcode wheel and interlace information symbols that can be any. Thus, for example, one can choose to implement a single decoder that successively decodes the R rollers. Thus, during the decoding of a roulette wheel, a stop criterion is applied as described in the report cited above to each wheel (and not according to the state of the art only to the global code). If the criterion is checked for at least one roulette, this roulette will not be decoded during the next iteration, thus saving energy consumption and resources.
De même, si tous les décodeurs utilisés en parallèle ont convergé, on peut passer directement à l'étape de décodage suivante, ce qui permet un gain de latence de décodage et de consommation. Par ailleurs, si le critère est vérifié pour au moins une roulette, un décodeur associé pourra être utilisé pour décoder un bloc de données et, notamment, pour une autre roulette pour lequel un bloc de données est en attente de décodage. Ainsi, les ressources de décodage peuvent être réparties pour une optimisation en fonction des besoins. Similarly, if all the decoders used in parallel converged, we can go directly to the next decoding step, which allows a decoding latency and consumption gain. Moreover, if the criterion is verified for at least one roulette, an associated decoder can be used to decode a data block and, in particular, for another roulette for which a data block is waiting for decoding. Thus, the decoding resources can be distributed for optimization according to the needs.
<Desc/Clms Page number 22> <Desc / Clms Page number 22>
Le procédé ainsi défini a donc trois propriétés avantageuses : - le graphe est irrégulier ce qui permet d'émuler efficacement un code aléatoire, et donc d'obtenir de bonnes performances ; une mise en oeuvre simple du procédé de décodage à haut-débit est permise par le décodage simultané de plusieurs roulettes, les données étant prises en compte séquentiellement par chacun des décodeurs associés à une roulette ; et - le procédé permet une utilisation efficace de critère d'arrêt basé sur la structure du code et non sur un découpage arbitraire de la trame en paquets de taille égale. The method thus defined therefore has three advantageous properties: the graph is irregular, which makes it possible to effectively emulate a random code, and thus to obtain good performances; a simple implementation of the high-speed decoding method is allowed by the simultaneous decoding of several wheels, the data being taken into account sequentially by each of the decoders associated with a wheel; and the method allows efficient use of stopping criteria based on the structure of the code and not on an arbitrary division of the frame into packets of equal size.
Par ailleurs, les procédés de codage et de décodage possèdent plusieurs variantes, notamment : - sur le graphe bipartite ; et/ou - sur les roulettes. Moreover, the coding and decoding methods have several variants, in particular: on the bipartite graph; and / or - on the wheels.
Selon différentes variantes sur le graphe bipartite, le code peut être : systématique ; ou - non systématique (dans ce cas, lorsque les codes constituants sont des codes de parités, on obtient des codes de type code de parité à faible densité (ou LDPC)). According to different variants on the bipartite graph, the code can be: systematic; or - unsystematic (in this case, when the constituent codes are parity codes, low density parity code (or LDPC) codes are obtained).
Si le code est systématique, les roulettes Ri du code (pour i variant de 1 à R) sont alors définies par les paramètres suivants : - l'ensemble ordonné C, des symboles d'information systématique de la roulette ; par ailleurs, c, représente le nombre de symboles d'information systématique de la roulette R, (ou c, = card(Ci)). Ce nombre est appelé circonférence de la roulette R, ; - l'ensemble ordonné E, des symboles de redondance de la roulette ; le nombre de symbole de redondance de la roulette Ri est noté e, (ou e, = card(E,)); et - la quantité mi égale à la somme de la circonférence c, et du nombre e, définit la taille de la roulette R, (ou m, = c, + e,). If the code is systematic, the rollers Ri of the code (for i varying from 1 to R) are then defined by the following parameters: the ordered set C, systematic information symbols of the roulette wheel; Moreover, c, represents the number of systematic information symbols of the roulette R, (or c, = card (Ci)). This number is called the circumference of the roulette R; the ordered set E, redundancy symbols of the roulette wheel; the number of redundancy symbol of the wheel Ri is denoted e, (or e, = card (E,)); and the quantity mi equal to the sum of the circumference c, and the number e, defines the size of the roulette R, (or m, = c, + e,).
<Desc/Clms Page number 23> <Desc / Clms Page number 23>
Ainsi, un ensemble ordonné M, constitué de la réunion ordonnée des ensembles Ç et E, ( ou M, =(Ci, Ei)) de m, ( égal à la somme de ci et de e,) symboles est un mot du code /?, si le passage, dans l' ordre, des c, symboles C, dans le codeur associé à la roulette R, génère bien les e, symboles de redondance E,. Thus, an ordered set M, consisting of the ordered union of the sets Ç and E, (or M, = (Ci, Ei)) of m, (equal to the sum of ci and e,) symbols is a code word / ?, if the passage, in the order of c, C symbols, in the encoder associated with the wheel R, generates the e, redundancy symbols E ,.
On notera deg(s) le degré du symbole numéro s du mot de code, c' est-à- dire, le nombre d'arcs qui sont connectés à ce symbole. Note deg (s) the degree of the symbol number s of the codeword, that is, the number of arcs that are connected to this symbol.
On appelle dimension du code global, le maximum des degrés des symboles du mot de code. Préférentiellement, le nombre d'étapes est supérieur ou égal à la dimension du code global. The global code dimension is the maximum of the degrees of the symbols of the code word. Preferably, the number of steps is greater than or equal to the size of the global code.
On notera #i(Ci) l'ensemble ordonné des symboles du mot de code relié à l'information de la roulette Ri. Ainsi, #i(k) représente le numéro du symbole du mot de code qui est connecté à la kième entrée de la roulette Ri. L'ensemble {#i(k)} représente l'ensemble non ordonné des symboles du mot de code relié à l'information de la roulette Ri. Note #i (Ci) the ordered set of symbols of the code word connected to the information of the wheel Ri. Thus, #i (k) represents the symbol number of the codeword which is connected to the kth input of the wheel Ri. The set {#i (k)} represents the unordered set of symbols of the codeword connected to the information of the wheel Ri.
Selon des variantes de l'invention appliquées aux roulettes : - les roulettes peuvent correspondre à des codes en bloc quelconques, par exemple, de type BCH ou Reed-Solomon ; les codes constituants peuvent être des codes convolutifs et notamment récursifs systématiques circulaires qui résolvent le problème de la fermeture du treillis associé au décodeur correspondant sans dégradation de l'efficacité spectrale du codage ; dans ce cas, on peut associer à chaque roulette : - les polynômes générateurs du code convolutif récursif systématique associé à Ri; et - un motif de poinçonnage associé à la roulette Ri permettant d'obtenir le rendement ri.; - les codes utilisés peuvent être à base de symboles binaires, duo- binaires ou des n-uplets ; - les codes (m1, ci) peuvent être identiques pour chacune des roulettes R, ; et/ou According to variants of the invention applied to the rollers: the rollers may correspond to any block codes, for example of the BCH or Reed-Solomon type; the constituent codes may be convolutional and particularly circular recursive codes that solve the problem of closing the trellis associated with the corresponding decoder without deterioration of the spectral efficiency of the coding; in this case, we can associate with each wheel: the generating polynomials of the systematic recursive convolutional code associated with Ri; and a punching pattern associated with the wheel Ri making it possible to obtain the efficiency ri; the codes used may be based on binary, dumbinary or n-tuplets symbols; the codes (m1, ci) may be identical for each of the rollers R,; and or
<Desc/Clms Page number 24><Desc / Clms Page number 24>
les poinçonnages peuvent être identiques pour toutes les roulettes R, et donc permettre un rendement ri uniforme. punching may be identical for all rollers R, and thus allow a uniform yield ri.
Des variantes de mise en #uvre du graphe bipartite sont également possibles : - le nombre de roulettes traitées au cours d'une étape de décodage peut être différent pour chaque étape : pour une architecture donnée, on peut notamment gérer les effets de bords dus à l'utilisation de mots de longueur variable (par exemple, le nombre de roulettes n'est pas nécessairement un multiple de P) ; - selon les contraintes de la technologie, du type de réalisation de roulette (insertion de pipe-line, type de réalisation de l'algorithme du décodeur à entrée souple - sortie souple), et des contraintes de débits de l'application, le nombre P' de bancs mémoires et le nombre P de roulettes réalisées en parallèle peut-être différent ; le code doit être construit pour des valeurs de P' et P supérieures ou égales à 2. Alternative implementations of the bipartite graph are also possible: the number of rollers processed during a decoding step may be different for each step: for a given architecture, it is possible in particular to manage the effects of edges due to the use of words of variable length (for example, the number of wheels is not necessarily a multiple of P); - according to the constraints of the technology, the type of realization of roulette (insertion of pipe-line, type of realization of the algorithm of the decoder with soft input - flexible exit), and constraints of flows of the application, the number P 'of memory banks and the number P of wheels made in parallel may be different; the code must be constructed for values of P 'and P greater than or equal to 2.
Selon l'invention, le code peut être à deux dimensions. Ainsi, au code générique décrit précédemment, on ajoute les spécifications suivantes : - le nombre de roulettes R est pair ; - toutes les roulettes ont une circonférence égale à C ; - le degré deg(k) de chacun des K symboles d' informations vaut deux et chaque symbole d'information est connecté à deux roulettes distinctes. According to the invention, the code can be two-dimensional. Thus, to the generic code described above, the following specifications are added: the number of rollers R is even; - all the rollers have a circumference equal to C; the degree deg (k) of each of the K information symbols is two and each information symbol is connected to two separate wheels.
Les roulettes peuvent alors êtres séparées en deux groupes tels que dans chaque groupe, les degrés deg(k) des Ksymboles d'informations valent 1. The rollers can then be separated into two groups such that in each group, the degrees deg (k) of the information symbols are 1.
Selon une variante particulière réalisant une concaténation parallèle, les mots de code et les ensembles IIi(Ci) sont alors définis de la façon suivante : - les K symboles du mot de code sont écrits ligne par ligne dans une matrice possédant R/2 lignes et C colonnes ; - les lignes définissent les ensembles IIi(Ci) (i variant de 1 à R/2) du premier groupe. Elles sont des éléments des codes constituants correspondants ; According to a particular variant producing a parallel concatenation, the code words and sets IIi (Ci) are then defined as follows: the K symbols of the code word are written line by line in a matrix having R / 2 lines and C columns; the lines define the sets IIi (Ci) (i varying from 1 to R / 2) of the first group. They are elements of the corresponding constituent codes;
<Desc/Clms Page number 25><Desc / Clms Page number 25>
on effectue ensuite pour chacune des lignes une permutation quelconque entre les symboles de ladite ligne ; - on effectue une permutation quelconque sur chacune des colonnes. En particulier, la permutation sur chacune des colonnes peut être une rotation circulaire ; - les lignes obtenues définissent les ensembles IIi(Ci) (i variant de R/2 à
R) du second groupe. Elles sont codées par les codes constituants correspondants. then, for each of the lines, any permutation between the symbols of said line is carried out; - Any permutation is performed on each of the columns. In particular, the permutation on each of the columns may be a circular rotation; the lines obtained define the sets IIi (Ci) (i varying from R / 2 to
R) of the second group. They are coded by the corresponding constituent codes.
Ce code à deux dimensions nécessite P égal à R/2 bancs mémoires chacun étant rempli par une ligne de la matrice non-permutée. Lorsque les codes constituants sont systématiques récursifs circulaires, on peut utiliser l'organisation de la mémoire suivante : à chaque adresse de la mémoire, sont mémorisées les données relatives au symbole systématique (symbole d'information en provenance du canal, informations extrinsèques produites par les décodeurs) ainsi que les symboles de redondance en provenance du canal correspondant. Chaque groupe peut alors être décodé simultanément par P décodeurs en parallèle en T (valant 2) étapes. Le procédé de permutation de la matrice assure lors du décodage du deuxième groupe de roulettes que les accès mémoires sont effectués sur des bancs mémoires distincts. Les permutations effectuées sur les lignes correspondent à un entrelacement temporel des données (c'est-à-dire, les permutations sur les lignes sont réalisées selon l'ordre de décodage par la lecture des symboles de chaque mémoire). Les permutations associées aux colonnes correspondent à un entrelacement spatial des données. Cet entrelacement est réalisé physiquement par un réseau de permutation entre les P bancs mémoires et les P décodeurs. This two-dimensional code requires P equal to R / 2 memory banks each being filled by a line of the non-permuted matrix. When the component codes are circular recursively systematic, one can use the organization of the following memory: at each address of the memory, the data relating to the systematic symbol (information symbol coming from the channel, extrinsic information produced by the decoders) as well as the redundancy symbols from the corresponding channel. Each group can then be decoded simultaneously by P decoders in parallel to T (equal to 2) steps. The method of permutation of the matrix ensures during the decoding of the second group of wheels that the memory accesses are performed on separate memory banks. The permutations performed on the lines correspond to a temporal interleaving of the data (that is to say, the permutations on the lines are carried out according to the decoding order by reading the symbols of each memory). The permutations associated with the columns correspond to a spatial interleaving of the data. This interleaving is performed physically by a permutation network between the P banks and the P decoders.
Selon l'invention, à partir du code décrit précédemment, on peut construire un code irrégulier. Les 2P codes constituants utilisés ont chacun une circonférence égale à la somme C+D. According to the invention, from the code described above, it is possible to construct an irregular code. The 2P component codes used each have a circumference equal to the sum C + D.
Les ensembles IIi(Ci) définissant les codes constituant sont obtenus à partir des lignes des matrices non-permutées et des lignes permutées définies précédemment : chaque code constituant est associé à la séquence des symboles The sets IIi (Ci) defining the constituent codes are obtained from the rows of the non-permuted matrices and the permuted lines defined above: each constituent code is associated with the sequence of the symbols
<Desc/Clms Page number 26><Desc / Clms Page number 26>
d'information d'une ligne à laquelle on ajoute les D premiers symboles d'information de la ligne suivante ; pour la dernière ligne, on ajoute les D symboles d'information de la première ligne. information of a line to which the first D information symbols of the next line are added; for the last line, we add the D information symbols of the first line.
Le code irrégulier ainsi construit possède des symboles de degré égal à trois qui sont situés aux extrémités des roulettes. Les autres symboles sont tous de degré égal à deux. Ce schéma de codage rend le code plus robuste aux erreurs de transmission et permet une convergence plus rapide du décodeur. The irregular code thus constructed has symbols of degree equal to three which are located at the ends of the rollers. The other symbols are all of degree equal to two. This coding scheme makes the code more robust to transmission errors and allows a faster convergence of the decoder.
Selon encore une variante de l'invention mettant en oeuvre un code à deux dimensions par une concaténation série, avec un nombre de roulettes différent pour la première dimension et la deuxième dimension, on ajoute les spécifications suivantes : - le nombre de roulettes vaut R qui est égal à la somme de Pl et de P2 avec un produit de Pl et de P2 valant N et P1 étant supérieur ou égal à
P2; il y a donc Pl roulettes de circonférence égale à P2 et P2 roulettes de circonférence égale à P1; - tous les degrés deg(k) des N symboles d'information valent 2 et donc chaque symbole d'information est connecté à deux roulettes distinctes. According to another variant of the invention implementing a two-dimensional code by serial concatenation, with a different number of rollers for the first dimension and the second dimension, the following specifications are added: the number of rollers worth R which is equal to the sum of P1 and P2 with a product of P1 and P2 equal to N and P1 being greater than or equal to
P2; there are therefore PI wheels of circumference equal to P2 and P2 rollers of circumference equal to P1; all degrees deg (k) of the N information symbols are equal to 2 and therefore each information symbol is connected to two separate wheels.
Les roulettes sont séparées en deux groupes de respectivement Pl et P2 roulettes. The casters are separated into two groups of respectively Pl and P2 casters.
Le procédé de codage et les ensembles #i(Mi) du graphe bipartite sont alors définis de la façon suivante : - les N symboles du mot de code sont écrits ligne par ligne dans une matrice possédant P, lignes et P2 colonnes; à cette matrice, on ajoute un nombre de colonnes vides égal à la différence de P1 et P2 (soit
P1- P2 sous forme condensée) ; - les lignes définissent les ensembles #i(Mi) (pour i allant de 1 à P) du premier groupe ; elles sont alors codées par les codes constituants correspondants de longueur égale à P2. The coding method and the sets #i (Mi) of the bipartite graph are then defined as follows: the N symbols of the code word are written line by line in a matrix having P, lines and P2 columns; to this matrix, we add a number of empty columns equal to the difference of P1 and P2 (either
P1-P2 in condensed form); the lines define the sets #i (Mi) (for i ranging from 1 to P) of the first group; they are then coded by the corresponding constituent codes of length equal to P2.
- on effectue ensuite pour chacune des lignes une permutation quelconque entre les symboles de ladite ligne ; ces permutations ne for each of the lines, then, any permutation between the symbols of said line is carried out; these permutations do not
<Desc/Clms Page number 27><Desc / Clms Page number 27>
sont pas toutes identiques (selon une variante, ces permutations sont identiques et peuvent être avantageusement supprimées) ; ces permutations répartissent uniformément sur les colonnes, les symboles des colonnes vides de la matrice précédente ; - on effectue une permutation Oj sur chacune des P1 colonnes de la matrice résultante, en respectant la contrainte suivante : après permutation, les symboles vides de la matrice précédente se répartissent sur les P1-P2 lignes ; - les lignes non vides obtenues définissent les ensembles #i(Mi) (pour i allant de P à P1+P2) du second groupe ; elles sont codées par des codes constituants. are not all identical (alternatively, these permutations are identical and can be advantageously removed); these permutations distribute uniformly over the columns, the symbols of the empty columns of the preceding matrix; a permutation Oj is performed on each of the P1 columns of the resulting matrix, respecting the following constraint: after permutation, the empty symbols of the preceding matrix are distributed over the P1-P2 lines; the non-empty lines obtained define the sets #i (Mi) (for i ranging from P to P1 + P2) of the second group; they are coded by constituent codes.
La permutation intra-ligne présentée dans les exemples précédents (code de dimension 2, codes irréguliers et codes produits) peut dans un mode préférentiel de réalisation être choisie parmi les permutations suivantes (la taille de la mémoire la ligne étant C): - le symbole k (k variant de 0 à C) de la roulette correspond au symbole situé à l'adresse l égale au produit ak modulo C (l= ak mod C) de la mémoire où a et C sont premiers entre eux. Préférentiellement, dans ce cas, a est voisin de la racine carrée de C ; - le symbole k (k variant de 0 à C) de la roulette correspond au symbole situé à l'adresse l égale à la somme du produit ak et de ss modulo C (l = ak + ss mod C) de la mémoire où a et C étant premiers entre eux. The intra-line permutation presented in the preceding examples (dimension code 2, irregular codes and product codes) may in a preferred embodiment be chosen from the following permutations (the size of the memory, the line being C): the symbol k (k varying from 0 to C) of the wheel corresponds to the symbol located at the address l equal to the product ak modulo C (l = ak mod C) of the memory where a and C are prime between them. Preferably, in this case, a is close to the square root of C; the symbol k (k varying from 0 to C) of the wheel corresponds to the symbol located at the address l equal to the sum of the product ak and ss modulo C (l = ak + ss mod C) of the memory where a and C being prime between them.
Préférentiellement, dans ce cas, a est voisin de la racine carrée de C. Preferably, in this case, a is close to the square root of C.
L'invention concerne également les dispositifs de codage, décodage, d'entrelacement définissant les ensembles #i(Mi) ou Il,(Ç). The invention also relates to the coding, decoding and interleaving devices defining the sets #i (Mi) or Il, (Ç).
Ces dispositifs sont présentés en regard des figures 5,6 et 7. These devices are presented with reference to FIGS. 5, 6 and 7.
On présente, en relation avec la figure 1, le principe général du code selon un mode particulier de réalisation de l'invention. In relation to FIG. 1, the general principle of the code according to a particular embodiment of the invention is presented.
Le code est composé de quatre codes constituants 14,15, 16 et 17 dont deux codes peuvent être codés et/ou décodés simultanément selon l'invention. The code is composed of four constituent codes 14, 15, 16 and 17, two codes of which can be coded and / or decoded simultaneously according to the invention.
<Desc/Clms Page number 28> <Desc / Clms Page number 28>
Chacun de ces codes constituants est un code convolutif récursif systématique circulaire : - de circonférence égale à trois ; - de taille égale à quatre ; et - définissant un code global de taille K égale à huit et de longueur N égale à douze. Each of these constituent codes is a circular systematic recursive convolutional code: - of circumference equal to three; - of size equal to four; and - defining a global code of size K equal to eight and length N equal to twelve.
Chaque code constituant est représenté par une roulette, qui a : - trois entrées ordonnées el, e2 et e3 associées chacune à un symbole d'information ;et - une sorties associée à un symbole de redondance. Each constituent code is represented by a wheel, which has: - three ordered inputs el, e2 and e3 each associated with an information symbol, and - an output associated with a redundancy symbol.
Le degré de chacun des symboles n'est pas uniforme : - le degré des symboles de redondance (symboles 9 à 12) est égal à un ; et - le degré des symboles d'information est égal à un (pour les symboles
2, 3, 7 et 8) ou deux (pour les symboles 1, 4, 5 et 6). The degree of each of the symbols is not uniform: the degree of the redundancy symbols (symbols 9 to 12) is equal to one; and - the degree of information symbols is equal to one (for symbols
2, 3, 7 and 8) or two (for symbols 1, 4, 5 and 6).
L'ensemble des symboles 1 à 12 du code 13 est mémorisé dans deux bancs mémoires BM, et BM2 qui contiennent respectivement les symboles suivants : - 1, 2, 3, 4, 9 et 10 (banc mémoire BM,) ; et - 5, 6, 7,8, 11et 12 (banc mémoire BM2). The set of symbols 1 to 12 of the code 13 is stored in two memory banks BM, and BM2 which respectively contain the following symbols: - 1, 2, 3, 4, 9 and 10 (memory bank BM,); and - 5, 6, 7, 8, 11 and 12 (BM2 memory bank).
Lors de l'opération de codage et/ou de décodage, on code et/ou décode les roulettes avec un degré de parallélisme égal à deux. En effet, pour chacun des quatre symboles utilisés dans le code constituant, les accès mémoires suivants sont effectués: - pour un premier groupe constitué des roulettes 14 et 15 : - à partir du symbole el, on accède aux symboles 1 ou 6 ; - à partir du symbole e2, on accède aux symboles 5 ou 4 ; - à partir du symbole e3, on accède aux symboles 3 ou 8 ; - à partir du symbole s, on accède aux symboles 9 ou 11 ; - pour un deuxième groupe constitué des roulettes 16 et 17: - à partir du symbole el, on accède aux symboles 5 ou 2 ; During the coding and / or decoding operation, the wheels are coded and / or decoded with a degree of parallelism equal to two. Indeed, for each of the four symbols used in the constituent code, the following memory accesses are made: - for a first group consisting of the wheels 14 and 15: - from the symbol el, we access the symbols 1 or 6; from symbol e2, symbols 5 or 4 are accessed; from symbol e3, symbols 3 or 8 are accessed; from symbol s, symbols 9 or 11 are accessed; - For a second group consisting of casters 16 and 17: - from the symbol el, we access the symbols 5 or 2;
<Desc/Clms Page number 29><Desc / Clms Page number 29>
à partir du symbole e2, on accède aux symboles 6 ou 1 ; à partir du symbole e3, on accède aux symboles 4 ou 7 ; - à partir du symbole s, on accède aux symboles 10 ou 12 ;
A chaque cycle symbole, on accède à des bancs mémoires distincts et ainsi, on utilise un degré de parallélisme égal à deux. from the symbol e2, symbols 6 or 1 are accessed; from symbol e3, symbols 4 or 7 are accessed; from the symbol s, symbols 10 or 12 are accessed;
At each symbol cycle, separate memory banks are accessed and thus a degree of parallelism equal to two is used.
Selon une variante de réalisation de l'invention décrite à la figure 2, l'opération de codage global est basée sur deux groupes distincts comprenant chacun P roulettes Ri appliquées globalement aux mêmes données. According to an alternative embodiment of the invention described in FIG. 2, the overall coding operation is based on two distinct groups each comprising P rollers Ri applied globally to the same data.
La circonférence de chacune des roulettes Ri est égale à C. Les K symboles d'information à coder sont écrits ligne par ligne dans une matrice 20 à P lignes et C colonnes (K est égal au produit PxC). The circumference of each of the rollers Ri is equal to C. The K information symbols to be encoded are written line by line in a matrix 20 with P rows and C columns (K is equal to the product PxC).
Chaque ligne est codée par un code constituant 21, par exemple du type code convolutif récursif systématique circulaire. La ième ligne de la matrice 20 comprend les N symboles données d'un mot de code 21 (information systématique et redondance) correspondant à une roulettes R1. Selon une variante, la ième ligne de la matrice 20 comprend les K symboles d'information systématique d'un mot de code 21 correspondant à une roulette Ri (les symboles de redondance n'étant pas représentés). Each line is coded by a constituent code 21, for example of the circular systematic recursive convolutional code type. The ith line of the matrix 20 comprises the N given symbols of a codeword 21 (systematic information and redundancy) corresponding to a rollers R1. According to one variant, the ith line of the matrix 20 comprises the K systematic information symbols of a codeword 21 corresponding to a wheel Ri (the redundancy symbols not being represented).
Puis, on effectue une permutation des symboles de chacune des lignes par un entrelaceur (D 22. Cet entrelaceur est identique pour chacune des lignes. Selon une variante de l'invention, cet entrelaceur est différent pour chaque ligne. Then, a permutation of the symbols of each of the lines is performed by an interleaver (D 22. This interleaver is identical for each of the lines, According to a variant of the invention, this interleaver is different for each line.
Selon une variante non représentée, l'entrelaceur # est égal à l'identité pour tous les lignes et peut donc être supprimé. According to a variant not shown, the interleaver # is equal to the identity for all the lines and can therefore be deleted.
Sur chacune des colonnes de la matrice 23 est effectuée une permutation Oi 24 de sorte que après permutation les C symboles de chacune des lignes de la matrice 25 proviennent de lignes différentes de la matrice 23 (avant permutation). On each of the columns of the matrix 23 is performed a permutation Oi 24 so that after permutation the C symbols of each row of the matrix 25 come from different lines of the matrix 23 (before permutation).
La permutation Oi 24 est circulaire, selon le mode préféré de réalisation, ou non circulaire selon une variante de réalisation. The permutation Oi 24 is circular, according to the preferred embodiment, or non-circular according to an alternative embodiment.
Les lignes de la matrice 25 résultante sont codées par P codes constituants 26 qui peuvent être des codes convolutifs récursifs systématiques circulaires. La The lines of the resulting matrix are encoded by P component codes 26 which may be circular recursive convolutional codes. The
<Desc/Clms Page number 30><Desc / Clms Page number 30>
ième ligne de la matrice 25 comprend les C symboles d'informations systématiques correspondant à une roulette Ri+5. The second row of the matrix 25 comprises the C systematic information symbols corresponding to a wheel Ri + 5.
Ainsi, si la première (respectivement deuxième) ligne de la matrice 20 comprend une séquence qui commence par les bits a, b et c (respectivement d, e, f) comme illustré sur la figure 2, ces bits seront entrelacés par la permutation # 22. Ainsi, par exemple, les bits a, b et c seront respectivement placés à la quatrième, septième et deuxième position de la première ligne de la matrice 23. Thus, if the first (respectively second) line of the matrix 20 comprises a sequence that begins with the bits a, b and c (respectively d, e, f) as illustrated in FIG. 2, these bits will be interleaved by the permutation # 22. Thus, for example, the bits a, b and c will respectively be placed at the fourth, seventh and second positions of the first line of the matrix 23.
De même, les bits d, e et f seront respectivement placés à la quatrième, septième et deuxième position de la deuxième ligne de la matrice 23. Les données des quatrième, septième et deuxième colonnes de la matrice 23 seront ensuite respectivement entrelacées par les permutations 24 O4, O7 et O8. Similarly, the bits d, e and f will respectively be placed at the fourth, seventh and second positions of the second row of the matrix 23. The data of the fourth, seventh and second columns of the matrix 23 will then be respectively interlaced by the permutations. O4, O7 and O8.
On obtient ainsi, la matrice 25 dans laquelle, par exemple : - la donnée d est située en quatrième position de la première ligne ; - les données cet e sont respectivement situées en deuxième et septième position de la deuxième ligne ; - les données f et a sont respectivement situées en deuxième et quatrième position de la quatrième ligne ; et - la donnée b est située en septième position de la dernière ligne. Thus, the matrix 25 is obtained in which, for example: the datum d is located at the fourth position of the first line; - The data e are respectively located in second and seventh position of the second line; - The data f and a are respectively located in second and fourth position of the fourth line; and the datum b is located in the seventh position of the last line.
Ainsi, les données a, b et c (respectivement d, e et/) qui sont placées dans une même ligne des matrices 20 et 23 sont, après les permutations Oi, situées dans des lignes distinctes de la matrice 25. De cette manière, alors qu'avant permutation, elles sont codées avec une même roulette R, (respectivement R2), après permutation, les données a, b et c (respectivement d, e et/) sont donc codées avec des roulettes distinctes. Thus, the data a, b and c (respectively d, e and /) which are placed in the same row of the matrices 20 and 23 are, after the permutations Oi, located in distinct lines of the matrix 25. In this way, while before permutation, they are coded with the same wheel R, (respectively R2), after permutation, the data a, b and c (respectively d, e and /) are coded with separate wheels.
L'association des K symboles d'information et des symboles de redondance produits par les 2P codes constituants forme le mot de code de longueur N. The association of the K information symbols and the redundancy symbols produced by the 2P constituent codes forms the code word of length N.
Selon une autre variante de réalisation de l'invention décrite à la figure 3, le graphe bipartite est séparé en deux groupes. Le premier groupe contient P1 According to another variant embodiment of the invention described in FIG. 3, the bipartite graph is separated into two groups. The first group contains P1
<Desc/Clms Page number 31><Desc / Clms Page number 31>
roulettes de circonférence P2 et le deuxième groupe comprend P2 roulettes de circonférences Pl, avec P1 supérieur ou égal à Pz et le produit Pl par P2 égal à N. roulettes of circumference P2 and the second group comprises P2 wheels circumferences Pl, with P1 greater than or equal to Pz and the product Pl by P2 equal to N.
Les N symboles d'information du mot de code global sont écrits ligne par ligne dans une matrice carrée 30 de coté Pl dont seules les P2 premières colonnes sont remplies. Les P1- P2 dernières colonnes restent vides avec une valeur symbolisée par V. The N information symbols of the global codeword are written line by line in a square matrix 30 on the side Pl of which only the first P2 columns are filled. The last P1- P2 columns remain empty with a value symbolized by V.
Chacune des P1 lignes est codée par un code constituant 31, la ième ligne de la matrice 30 correspondant à une roulette R1 de longueur P2. Chacun des codes 31 est, par exemple, un code convolutif récursif systématique circulaire (CRSC). Each of the P1 lines is coded by a constituent code 31, the ith line of the matrix 30 corresponding to a roulette R1 of length P2. Each of the codes 31 is, for example, a circular systematic recursive convolutional code (CRSC).
Puis, on effectue une permutation des symboles de chacune des lignes par un entrelaceur #i 32. Chacun des Pl entrelaceurs possède la propriété suivante : après permutation, les symboles V de la matrice 30 se répartissent uniformément sur toutes les colonnes de la matrice 33. Ainsi, on obtient le même nombre de symboles V sur chacune des colonnes de la matrice 33. Then, a permutation of the symbols of each of the lines is performed by an interleaver #i 32. Each of the P1 interleavers has the following property: after permutation, the symbols V of the matrix 30 are distributed uniformly over all the columns of the matrix 33. Thus, the same number of symbols V is obtained on each of the columns of the matrix 33.
On effectue une permutation Oj sur chacune des Pl colonne de la matrice 33. Ces rotations possèdent la propriété suivante : après rotation, les symboles V de la matrice 33 se retrouvent dans les Pl-PZ dernières lignes de la matrice 33. We perform a permutation Oj on each of the Pl column of the matrix 33. These rotations have the following property: after rotation, the symbols V of the matrix 33 are found in the Pl-PZ last rows of the matrix 33.
Les P2 lignes non vides de la matrice résultante 35 sont alors codées par P2 codes constituants 36 de longueur P1. The P2 non-empty lines of the resulting matrix 35 are then encoded by P2 constituent codes 36 of length P1.
Les Pl+ P2 codes constituants définissent les N symboles du mot de code global. The P1 + P2 component codes define the N symbols of the global code word.
Ce code nécessite P égal à Pl bancs mémoires, chacun étant rempli par une ligne de la matrice non permutée. Le premier (respectivement deuxième) groupe peut alors être décodé simultanément par P1 (respectivement P2 décodeurs en parallèle. Le procédé de permutation de la matrice assure lors du décodage du deuxième groupe de roulettes que les accès mémoires sont effectués sur des bancs mémoires distincts. This code requires P equal to Pl memory banks, each being filled by a line of the non-permuted matrix. The first (respectively second) group can then be decoded simultaneously by P1 (respectively P2 decoders in parallel) The method of permutation of the matrix ensures during the decoding of the second group of wheels that the memory accesses are performed on separate memory banks.
Selon une autre variante de réalisation de l'invention décrite à la figure 4, l'opération de codage permet de construire un code irrégulier à partir de K (égal à 24) symboles d'informations. Ce code est constitué de huit codes constituants Ri (i According to another variant embodiment of the invention described in FIG. 4, the coding operation makes it possible to construct an irregular code from K (equal to 24) information symbols. This code consists of eight component codes Ri (i
<Desc/Clms Page number 32><Desc / Clms Page number 32>
étant compris entre 1 et 8) 411, 412,413, 414, 441, 442, 443 et 444 de rendement r. Chaque code constituant est de circonférence égale à huit. being between 1 and 8) 411, 412, 413, 414, 441, 442, 443 and 444 of yield r. Each constituent code is of circumference equal to eight.
Les symboles d'informations sont mémorisés dans quatre bancs mémoires 401 à 404. The information symbols are stored in four memory banks 401 to 404.
L'entrelacement 420 est défini de manière similaire à celui présenté en regard de la figure 2. Interleaving 420 is defined in a manner similar to that presented with reference to FIG.
Le code est alors défini de la façon suivante : - des symboles d'informations sont écrits ligne par ligne dans une matrice Mà quatre lignes et six colonnes ; - les lignes de la matrice M sont mises bout à bout pour former une trame circulaire 400, qui va être codée par les quatre roulettes R1 411,
R2 412, R3 413 et R4 414. Les huit symboles d'informations de la roulette R1 411 (respectivement R2 412, R3 413 et R4 414) sont constitués des symboles de la ligne 401 (respectivement 402,403 et
404) de la matrice M et des deux premiers symboles de la roulette R2
412 (respectivement R3 413, R4 414 et R1411) ; - On effectue une permutation 420 des quatre lignes puis une permutation des six colonnes de la matrice M pour obtenir une matrice permutée M'; - Les lignes de la matrice M' obtenue sont mises bout à bout pour former une trame circulaire 430, qui va être codée par les quatre roulettes Rs
441, R6 442, R7 443 et R8 444. Les huit symboles d'informations de la roulette R5 415 (respectivement R6 416, R7 417 et Rs 418) sont constitués des symboles de la ligne 431 (respectivement 432,433 et
434) de la matrice permutée M et des deux premiers symboles de la roulette R6 416 (respectivement R7 417, R8 418 et R5 415). The code is then defined as follows: information symbols are written line by line in an M matrix with four rows and six columns; the lines of the matrix M are put end to end to form a circular frame 400, which will be coded by the four rollers R1 411,
R2 412, R3 413 and R4 414. The eight information symbols of the wheel R1 411 (respectively R2 412, R3 413 and R4 414) consist of the symbols of the line 401 (respectively 402, 403 and
404) of the matrix M and the first two symbols of the roulette R2
412 (respectively R3 413, R4 414 and R1411); - We perform a permutation 420 of the four lines and a permutation of the six columns of the matrix M to obtain a permuted matrix M '; - The lines of the matrix M 'obtained are put end to end to form a circular frame 430, which will be coded by the four wheels Rs
441, R6 442, R7 443 and R8 444. The eight information symbols of the wheel R5 415 (respectively R6 416, R7 417 and Rs 418) consist of the symbols of the line 431 (respectively 432.433 and
434) of the permuted matrix M and the first two symbols of the wheel R6 416 (respectively R7 417, R8 418 and R5 415).
La permutation agissant sur les colonnes de la matrice M est choisie de telle sorte que lors du décodage des roulettes 441 à 444, les accès mémoires puissent être effectués simultanément sur des bancs mémoires distincts. Cette permutation sur les colonnes est par exemple l'identité, une rotation sur les The permutation acting on the columns of the matrix M is chosen such that during the decoding of the rollers 441 to 444, the memory accesses can be performed simultaneously on separate memory banks. This permutation on the columns is for example the identity, a rotation on the
<Desc/Clms Page number 33><Desc / Clms Page number 33>
colonnes ou, plus généralement, une permutation quelconque respectant la propriété liées aux accès mémoire énoncée précédemment. columns or, more generally, any permutation respecting the property related to memory access previously stated.
Après codage, les vingt-quatre symboles d' information et les symboles de redondance sont transmis sur le canal. After coding, the twenty-four information symbols and the redundancy symbols are transmitted on the channel.
La figure 5 présente un mode de réalisation d'un codeur global 500 utilisant P codeurs convolutifs systématiques récursifs circulaires en parallèle (CRSCx) 571,572, 57i, ..., 57P et dont l'architecture permet de générer les codes qui sont notamment décrits en regard des figures 1, 2 et 4. FIG. 5 presents an embodiment of a global encoder 500 using P recurrent circular recursive systematic convolutional encoders (CRSCx) 571, 572, 57i,..., 57P and whose architecture makes it possible to generate the codes which are notably described in FIG. FIGS. 1, 2 and 4.
Le codeur global 500 accepte sur une entrée 550 des blocs de K symboles d'information qui sont également présentés sur une sortie 553 (le code global est systématique) et fournit, en outre, sur une sortie 590 des blocs de symboles de redondance issus du codage des blocs d' information. The global coder 500 accepts on an input 550 blocks of K information symbols which are also presented on an output 553 (the overall code is systematic) and supplies, in addition, on an output 590 blocks of redundancy symbols from the coding blocks of information.
Le codeur global 500 comprend : - l'entrée 550 et la sortie 553 de symboles d' information ; - la sortie 590 de symboles de redondance ; - une unité de commande 504 ;
P bancs mémoires (notés BMJ 561 à 56P ; - les codeurs élémentaires de type Convolutifs Récursifs
Systématiques Circulaires (ou CRSC) 571 à 57P ; - un module de permutation PILk 510 ; - un module de rotation circulaire RC(OJ 530 ; - un module de commande Ok 520 du module 530 ; - un module de perforation 540. The global encoder 500 comprises: the input 550 and the output 553 of information symbols; the output 590 of redundancy symbols; a control unit 504;
P memory banks (denoted BMJ 561 to 56P) - elementary encoders of the Recursive Convolution type
Circular Systematics (or CRSC) 571 to 57P; a PILk 510 permutation module; a circular rotation module RC (OJ 530; a control module Ok 520 of the module 530; a perforation module 540.
L'unité de commande 504 gère le fonctionnement de l'ensemble du dispositif 500. Cette unité de commande produit les signaux de contrôle suivants : - une commande 501 de mise à zéro des codeurs convolutifs récursifs circulaires 571 à 57p ; code convolutif récursif circulaire est obtenu par un premier pré-codage, avec un état initial du codeur nul, qui permet de définir l'état initial du codeur lors de l'opération de codage (on trouvera une description des codes convolutifs circulaires dans The control unit 504 manages the operation of the entire device 500. This control unit produces the following control signals: a command 501 for zeroing the circular recursive convolutional encoders 571 to 57p; circular recursive convolutional code is obtained by a first pre-coding, with an initial state of the null encoder, which makes it possible to define the initial state of the coder during the coding operation (a description of the circular convolutional codes in FIG.
<Desc/Clms Page number 34><Desc / Clms Page number 34>
l'article écrit par C. Berrou, C. Douillard et M. Jézéquel, intitulé Multiple parallel concatenation of circular recursive systematic codes , et paru dans la revue Annales des Télécommunications, tome
54, n 3-4, pp 166-172,1999) ; - une commande d'accès mémoire 502 définissant l'adresse du symbole destiné à être traité et destiné aux modules 510 et 520 ; - une commande 503 de contrôle des bancs mémoires 561 à 56P en lecture et en écriture. the article written by C. Berrou, C. Douillard and M. Jézéquel, entitled Multiple Parallel Concatenation of Circular Recursive Systems, and published in the journal Annales des Télécommunications, Vol.
54, No. 3-4, pp 166-172, 1999); a memory access control 502 defining the address of the symbol to be processed and intended for the modules 510 and 520; a command 503 for controlling the memory banks 561 to 56P for reading and writing.
L'unité de commande 504 peut être mise en oeuvre sous forme câblée et/ou sous forme de programme informatique s'exécutant sur un processeur. The control unit 504 can be implemented in hard-wired form and / or in the form of a computer program running on a processor.
Les adresses des accès aux bancs mémoires 561 à 56P sont produites par le module 510, commandé via le signal 502 par l'unité de commande 504. Le module 510 pilote une permutation des données sur chaque banc si nécessaire par l'intermédiaire d'un signal d'adressage 505. The access addresses to the memory banks 561 to 56P are produced by the module 510, controlled via the signal 502 by the control unit 504. The module 510 controls a permutation of the data on each bank if necessary via a addressing signal 505.
Les données à coder 550 sont écrites dans les bancs mémoires 561,562, ..., 56i, ..., 56P à travers des bus 551, 552, ..., 55i, 55P avec la partition suivante pour un bloc de K symboles d'information : - le banc mémoire 561 mémorise les symboles d'indice 0 à C-l ; - le banc mémoire 562 mémorise les symboles d'indice C à 2C-1 ; - le banc mémoire 56i mémorise les symboles d'indice (i-l)C à iC-1 ; et - le banc mémoire 56P mémorise les symboles d'indice (P-1)C à K-1. The data to be coded 550 are written in the memory banks 561, 562, ..., 56i,..., 56P through buses 551, 552,... 55i, 55P with the following partition for a block of K symbols. information: the memory bank 561 memorizes the symbols of index 0 to Cl; the memory bank 562 stores the symbols of index C at 2C-1; the memory bank 56i memorizes the index symbols (i-1) C to iC-1; and the memory bank 56P stores the index symbols (P-1) C to K-1.
Selon une variante, les données à coder comprennent non seulement les symboles d'informations mais également des symboles de redondances issues d'un code constituant du code global. L'architecture de cette variante étant similaire à celle du codeur 500, elle ne sera pas détaillée plus amplement. According to one variant, the data to be encoded comprise not only the information symbols but also redundancy symbols originating from a code constituting global code. The architecture of this variant being similar to that of the encoder 500, it will not be further detailed.
L'unité de commande 504 gère les accès en écriture des symboles 550 ou en lecture des symboles qui sont transférés sur la sortie 553 lorsque ces derniers ne sont pas directement lus lors de leur présentation sur l'entrée 550, via le signal 503 pour les commandes d'écriture et de lecture et via le module 510 pour la détermination des adresses d'accès. The control unit 504 manages the write accesses of the symbols 550 or read symbols that are transferred to the output 553 when they are not read directly when they are presented on the input 550, via the signal 503 for the write and read commands and via the module 510 for the determination of the access addresses.
<Desc/Clms Page number 35> <Desc / Clms Page number 35>
Chacun des blocs mémoires respectivement 561 à 56P est relié au module 530 par une liaison respectivement 531 à 53P permettant la lecture des données par le module 530 dans le bloc mémoire correspondant, cette lecture étant également pilotée par le signal 503 et le module 510. Une lecture simultanée d'un symbole dans chacun des blocs mémoires, par le module 530 est donc possible. Each of the memory blocks respectively 561 to 56P is connected to the module 530 by a link respectively 531 to 53P enabling the data to be read by the module 530 in the corresponding memory block, this reading being also controlled by the signal 503 and the module 510. simultaneous reading of a symbol in each of the memory blocks, by the module 530 is possible.
Les blocs mémoires 561 à 56P sont de type RAM à simple port ou double ports en fonction de la bande passante nécessaire. The memory blocks 561 to 56P are single-port or dual-port RAM types depending on the bandwidth required.
En fonction du signal 502 émis par l'unité de commande 504, le bloc 520 définit la rotation circulaire Ok devant être appliquée à l'ensemble des symboles présentés aux entrées 531 à 53P et transmet le signal 506 au module 530 pour lui indiquer la rotation circulaire Ok à effectuer entre les entrées et les sorties du module 530. Based on the signal 502 from the control unit 504, the block 520 defines the circular rotation Ok to be applied to all the symbols presented at the inputs 531 to 53P and transmits the signal 506 to the module 530 to indicate the rotation Circular Ok to be made between the inputs and outputs of the 530 module.
Chacun des codeurs CRSC respectivement 571 à 57P est relié au module 530 par une liaison respectivement 541 à 54P permettant la lecture d'un symbole donné en sortie du module 530 par le codeur CRSC correspondant. Un symbole lu par le module 530 est présenté pratiquement simultanément à une sortie du module 530 qui aiguille ce symbole sur la sortie adéquate en fonction du signal 506. Une lecture simultanée d'un symbole par chacun des codeurs CRSC dans le module 530 est donc possible. Each of the CRSC coders respectively 571 to 57P is connected to the module 530 by a link respectively 541 to 54P allowing the reading of a given symbol at the output of the module 530 by the corresponding CRSC coder. A symbol read by the module 530 is presented almost simultaneously to an output of the module 530 which switches this symbol to the appropriate output as a function of the signal 506. A simultaneous reading of a symbol by each of the CRSC coders in the module 530 is therefore possible. .
Chacun des codeurs convolutifs récursifs circulaires respectivement 571 à 57P permet : d'effectuer le pré-codage de chaque séquence d'information permettant de déterminer l'état initial du codeur tel que son état final après codage de la séquence considérée sera identique à cet état initial ; et - d'effectuer le codage convolutif récursif de chaque séquence de symboles présentés sur son entrée respectivement 541 à 54P par multiplication par un polynôme multiplicatif respectivement/, à fp et par division par un polynôme diviseur respectivement g 1 à gp, permettant de produire les bits de redondance (respectivement Etp+1 à Each of the circular recursive convolutional coders 571 to 57P respectively makes it possible to perform the pre-coding of each information sequence making it possible to determine the initial state of the coder such that its final state after coding of the sequence in question will be identical to that state. initial; and performing the recursive convolutional coding of each sequence of symbols presented on its input respectively 541 to 54P by multiplication by a multiplicative polynomial respectively /, at fp and by division by a divisive polynomial respectively g 1 to gp, making it possible to produce the redundancy bits (respectively Etp + 1 to
<Desc/Clms Page number 36> <Desc / Clms Page number 36>
EtP+P respectivement transmis sur des sorties 581 à 58P vers le module de perforation 540. EtP + P respectively transmitted on outputs 581 to 58P to the perforation module 540.
Pour simplifier la réalisation, les polynômes générateurs des codes CRSC seront choisis identiques pour les P codeurs. To simplify the realization, the generating polynomials of the CRSC codes will be chosen identical for the P coders.
Selon une variante, pour une adaptation à un code global quelconque, les polynômes générateurs des codes CRSC ne seront pas tous identiques. According to one variant, for an adaptation to any global code, the generating polynomials of the CRSC codes will not all be identical.
Les bits de redondance produits par les codeurs CRSC 571 à 57P sont poinçonnés par le module 540 pour fournir les symboles de redondance 590 associés aux symboles d' information 550. The redundancy bits produced by the CRSCs 571-57P are punched by the module 540 to provide the redundancy symbols 590 associated with the information symbols 550.
En résumé, à chaque accès en lecture commandé par les signaux 502 et 503, les bancs mémoires 561 à 56P fournissent des symboles (dans un ordre éventuellement différents de l'ordre d'entrée, ce qui correspond à un premier entrelacement) sur lesquels le module 530 applique une rotation circulaire de Ok symboles. Les symboles obtenus sont alors utilisés par les codeurs convolutifs récursifs circulaires 571 à 57P. In summary, at each read access controlled by the signals 502 and 503, the memory banks 561 to 56P provide symbols (in an order possibly different from the input order, which corresponds to a first interleaving) on which the Module 530 applies a circular rotation of Ok symbols. The symbols obtained are then used by circular recursive convolutional encoders 571 to 57P.
Dans une mise en oeuvre du codeur 500 correspondant au code illustré en regard de la figure 1, - les permutations de données sont effectuées par l'unité de commande 504 et par le module 510 ; - deux bancs mémoires sont utilisés ; - le module 510 fournit, dans ce mode de réalisation, deux adresses mémoires pour les deux bancs mémoires par l'intermédiaire du signal 505 ; - la permutation spatiale entre les bancs mémoires est réalisée par l'unité de commande 504 et par les modules 520 et 530 ; et - les roulettes 14 et 15 (respectivement 16 et 17) sont codées simultanément à l'aide des codeurs 571 et 572 à la première étape avec T valant 1 (respectivement deuxième étape avec T valant 2), P valant alors 2. In an implementation of the encoder 500 corresponding to the code illustrated with reference to FIG. 1, the data permutations are carried out by the control unit 504 and by the module 510; - two memory banks are used; the module 510 provides, in this embodiment, two memory addresses for the two memory banks via the signal 505; the spatial permutation between the memory banks is carried out by the control unit 504 and by the modules 520 and 530; and - the rollers 14 and 15 (respectively 16 and 17) are coded simultaneously using the coders 571 and 572 in the first step with T equal to 1 (respectively second step with T equal to 2), P being then equal to 2.
<Desc/Clms Page number 37> <Desc / Clms Page number 37>
Dans une mise en oeuvre du codeur 500 correspondant au code illustré en regard de la figure 2 (respectivement 3), - la permutation 22 (respectivement #i 32) est effectuée par l'unité de commande 504 et par le module 510 ; - la rotation 24 (respectivement 34) est réalisée par l'unité de commande 504 et par les modules 520 et 530 ;et - le premier groupe de roulettes 21 R1 à R5 (respectivement 31 R1 à R5) et le deuxième groupe de roulettes 26 R6 à R10 (respectivement 36 R6 à R9) sont successivement codées à l'aide des codeurs 571 à 576, P valant alors 5 et les roulettes étant codées simultanément à l'intérieur de chaque groupe. In an implementation of the encoder 500 corresponding to the code illustrated with reference to FIG. 2 (respectively 3), the permutation 22 (respectively #i 32) is carried out by the control unit 504 and by the module 510; the rotation 24 (respectively 34) is carried out by the control unit 504 and by the modules 520 and 530 and the first group of rollers 21 R1 to R5 (respectively 31 R1 to R5) and the second group of rollers 26 R6 to R10 (respectively R6 to R9) are successively coded using encoders 571 to 576, P being then 5 and the rollers being coded simultaneously within each group.
De même, dans une réalisation du codeur 500 correspondant au code illustré en regard de la figure 4, - l'entrelaceur 420 est mis en oeuvre par l'unité de commande
504 et par les modules 510,520 et 530 ; - le premier groupe de roulettes 411 R1 à 414 R4 et le deuxième groupe de roulettes 441 R5 à 444 R8 sont successivement codées à l'aide des codeurs 571 à 574, P valant alors 4 et les roulettes étant codées simultanément à l'intérieur de chaque groupe. Similarly, in an embodiment of the encoder 500 corresponding to the code illustrated with reference to FIG. 4, the interleaver 420 is implemented by the control unit
504 and modules 510,520 and 530; the first group of rollers 411 R1 to 414 R4 and the second group of rollers 441 R5 to 444 R8 are successively coded using the coders 571 to 574, P being then equal to 4 and the rollers being coded simultaneously within each group.
L'opération de codage d'une trame de K symboles d'information par T.P roulettes comporte donc les étapes suivantes : - une écriture des symboles d'information 550 reçus dans les bancs mémoires 561 à 56P ;
T étapes de codage (T valant 2 dans les exemples précédents illustrés en regard des figures 1, 2 et 4) par P roulettes permettant de fournir les symboles de redondance correspondant ; - un poinçonnage (facultatif) des symboles de redondance (produit par les P roulettes) par le module 540 permettant d'obtenir le rendement désiré ;et The operation of encoding a frame of K information symbols by TP roulettes thus comprises the following steps: a writing of the information symbols 550 received in the memory banks 561 to 56P;
T coding steps (T is 2 in the previous examples illustrated with reference to Figures 1, 2 and 4) by P rollers for providing the corresponding redundancy symbols; punching (optional) the redundancy symbols (produced by the P rollers) by the module 540 making it possible to obtain the desired output, and
<Desc/Clms Page number 38><Desc / Clms Page number 38>
transmission sur un canal des K symboles systématiques (si le code est systématique) et des N-K symboles de redondance, le cas échéant poinçonnés. transmission on a channel of K systematic symbols (if the code is systematic) and N-K symbols of redundancy, if necessary punched.
L'organisation de la mémoire est, selon le mode de réalisation décrit, la suivante : à chaque adresse-mémoire d'un banc mémoire, sont mémorisées les données relatives à un symbole systématique (symbole d'information en provenance du canal et/ou informations extrinsèques produites par les décodeurs) ainsi que les symboles de redondance en provenance du canal correspondant. The organization of the memory is, according to the embodiment described, the following: at each memory address of a memory bank, are stored the data relating to a systematic symbol (information symbol from the channel and / or extrinsic information produced by the decoders) as well as the redundancy symbols from the corresponding channel.
Pour chacune des T étapes de codage par les P roulettes, les opérations successives suivantes sont effectuées: - initialisation des codeurs convolutifs à l'état nul par l'intermédiaire du signal 501 ; - première lecture des C symboles d'information des P roulettes considérées et pré-codage de chacune des roulettes ; - détermination des états initiaux des codeurs ; - deuxième lecture des C symboles d'information par les P roulettes considérées et codage de chacune des roulettes afin de produire les symboles de redondance correspondant. For each of the T encoding steps by the P rollers, the following successive operations are performed: initialization of the convolutive encoders in the null state via the signal 501; first reading of the C information symbols of the P rollers considered and pre-coding of each of the rollers; determination of the initial states of the coders; second reading of the C information symbols by the P rollers considered and coding of each of the rollers in order to produce the corresponding redundancy symbols.
Selon une variante du codeur 500 non représentée, un codeur similaire au codeur 500 met en #uvre des codes constituants non convolutifs systématiques récursifs circulaires. According to a variant of the encoder 500 not shown, an encoder similar to the encoder 500 implements non-convolutional systematic circular recursive constitutive codes.
De même, selon une autre variante, un codeur adapté au codage du code illustré en regard de la figure 3 est mis en #uvre sur base du codeur 500 avec les modifications suivantes : - la perforation du code n'est pas nécessaire ; - l'organisation de la mémoire est adaptée au code ; et - si un code constituant n'est pas systématique, les sorties 58i concernent tous les symboles du mot de code constituant. Likewise, according to another variant, an encoder adapted to the coding of the code illustrated with reference to FIG. 3 is implemented on the basis of the encoder 500 with the following modifications: the perforation of the code is not necessary; - the organization of the memory is adapted to the code; and if a constituent code is not systematic, the outputs 58i relate to all the symbols of the constituent code word.
La figure 6 présente d'un décodeur 600 adapté à décoder un code global produit par le codeur 500 illustré en regard de la figure 5. Le décodeur 600 utilise FIG. 6 shows a decoder 600 adapted to decode a global code produced by the encoder 500 illustrated with reference to FIG. 5. The decoder 600 uses
<Desc/Clms Page number 39><Desc / Clms Page number 39>
P décodeurs SISO en parallèle 671, 672, ..., 67i, ..., 67P correspondant chacun aux codeurs 571, 572, ..., 57i, ..., 57P. Parallel SISO P decoders 671, 672, ..., 67i, ..., 67P each corresponding to the encoders 571, 572, ..., 57i, ..., 57P.
Le décodeur 600 accepte sur une entrée 650 des blocs de N symboles d'informations souples (symboles en provenance du canal et éventuellement informations a priori) et fournit sur une sortie 680 des symboles décodés. Les données entrantes et/ou mémorisées dans le décodeur 600 sont des symboles d'information et de redondance en provenance du canal et des informations pondérées produites par les décodeurs. The decoder 600 accepts on an input 650 blocks of N soft information symbols (symbols from the channel and possibly prior information) and provides on an output 680 decoded symbols. The incoming and / or stored data in the decoder 600 are information and redundancy symbols from the channel and weighted information produced by the decoders.
Le décodeur global 600 comprend : - l'entrée 650 de symboles d'information douce ; - la sortie 680 de symboles décodés; - une unité de commande 604 ; - P bancs mémoires (notés BMx) 661 à 66P ; - les décodeurs élémentaires de type SISO 671 à 67P ; - un module de permutation intra-ligne, PILk 610, qui est identique pour les P bancs mémoires; - un module de rotation circulaire RC(Ok) 630 ; - une module de commande Ok 620 du module 630 ; - un module de décision 690. The global decoder 600 comprises: the input 650 of soft information symbols; the output 680 of decoded symbols; a control unit 604; - memory banks (BMx rated) 661 to 66P; elementary decoders of SISO type 671 to 67P; an intra-line permutation module, PILk 610, which is identical for the P memory banks; - a circular rotation module RC (Ok) 630; an OK 620 control module of the module 630; a decision module 690.
L'unité de commande 604 gère le fonctionnement de l'ensemble du dispositif 600. Cette unité de commande produit les signaux de contrôle suivants : - une commande d'accès mémoire 602 définissant l'adresse du symbole destiné à être traité et destiné aux modules 610 et 620 ; - une commande 603 de contrôle des bancs mémoires 661 à 66P en lecture et en écriture, les bancs mémoires pouvant être adressés simultanément et indépendamment les uns des autres. The control unit 604 manages the operation of the entire device 600. This control unit produces the following control signals: a memory access control 602 defining the address of the symbol to be processed and intended for the modules 610 and 620; a control 603 for controlling the memory banks 661 to 66P in reading and writing, the memory banks being able to be addressed simultaneously and independently of one another.
L'unité de commande 604 échange également un signal de contrôle 601 avec chacun des décodeurs SISO ; signal permet notamment de mettre en #uvre le critère d'arrêt en définissant quels sont les décodeurs effectivement utilisés au cours d'une itération ; The control unit 604 also exchanges a control signal 601 with each of the SISO decoders; signal makes it possible in particular to implement the stopping criterion by defining which decoders are actually used during an iteration;
<Desc/Clms Page number 40> <Desc / Clms Page number 40>
Les adresses des accès aux bancs mémoires 661 à 66P sont produites par le module 610 commandé via le signal 602 par l'unité de commande 604. Le module 610 pilote une permutation des données sur chaque banc si nécessaire par l'intermédiaire d'un signal d'adressage 605. The access addresses to the memory banks 661 to 66P are produced by the module 610 controlled via the signal 602 by the control unit 604. The module 610 controls a permutation of the data on each bank if necessary by means of a signal addressing 605.
Les données à décoder 650 sont écrites ou lues dans les bancs mémoires 661, 662, ..., 66i, ..., 66P à travers des bus bidirectionnels 651,652, ..., 65i, 65P avec la partition suivante pour un bloc de K symboles d'information dans le cas où les codes constituants sont des codes convolutifs récursifs systématiques circulaires (pour ces codes les symboles de redondance et les symboles systématiques associés sont stockés à la même adresse mémoire) : - le banc mémoire 661 mémorise les données relatives aux symboles d'indice 0 à C-1 ; - le banc mémoire 662 mémorise les données relatives aux symboles d'indice C à 2C-1 ; - le banc mémoire 66i mémorise les données relatives aux symboles d'indice (i-l)C à iC-l ;et - le banc mémoire 66P mémorise les données relatives aux symboles d'indice (P-l)C à K-1. The data to be decoded 650 is written or read in the memory banks 661, 662,..., 66i,..., 66P through bidirectional buses 651, 652,..., 65i, 65P with the following partition for a block of data. K information symbols in the case where the constituent codes are circular recursive convolutional codes (for these codes the redundancy symbols and the associated systematic symbols are stored at the same memory address): the memory bank 661 stores the relative data symbols of index 0 to C-1; the memory bank 662 stores the data relating to the symbols of index C to 2C-1; the memory bank 66i stores the data relating to the index symbols (i-1) C to iC-1, and the memory bank 66P stores the data relating to the index symbols (P-1) C to K-1.
Dans le cas général d'un code constituant qui n'est pas convolutif récursif systématique circulaire, l'organisation mémoire est adaptée au code. In the general case of a constituting code that is not circular recursive convolutional circular, the memory organization is adapted to the code.
L'unité de commande 604 gère les accès en écriture des symboles 650 ou en lecture des symboles qui sont transférés sur la sortie 680, via le signal 603 pour les commandes d'écriture et de lecture et via le module 610 pour la détermination des adresses d'accès. The control unit 604 manages the write accesses of the symbols 650 or read symbols which are transferred to the output 680, via the signal 603 for the write and read commands and via the module 610 for the determination of the addresses access.
Chacun des blocs mémoires respectivement 661 à 66P est relié au module 630 par une liaison respectivement 631à 63P permettant la lecture des données par le module 630 dans le bloc mémoire correspondant, cette lecture étant également pilotée par le signal 603 et le module 610. Le module 630 peut donc lire ou écrire simultanément et en parallèle plusieurs symboles, un symbole étant lu ou écrit dans chacun des blocs mémoires. Les blocs mémoires 661 à 66P sont Each of the memory blocks 661 to 66P respectively is connected to the module 630 via a link 631 to 63P, respectively, enabling the data to be read by the module 630 in the corresponding memory block, this reading being also controlled by the signal 603 and the module 610. The module 630 can therefore read or write simultaneously and in parallel several symbols, a symbol being read or written in each of the memory blocks. The memory blocks 661 to 66P are
<Desc/Clms Page number 41><Desc / Clms Page number 41>
de type RAM à simple port ou double ports en fonction de la bande passante nécessaire. Single-port or dual-port RAM type depending on the bandwidth required.
Chacun des décodeurs SISO respectivement 671 à 67P est relié au module 630 par une liaison bidirectionnelle respectivement 641 à 64P permettant la lecture ou l'écriture d'un symbole donné en sortie du module 630 par le décodeur SISO correspondant. Ainsi, plusieurs symboles sont lus en parallèle dans les bancs mémoires correspondant et alimentent autant de décodeurs SISO. Each of the SISO decoders 671 to 67P, respectively, is connected to the module 630 by a bidirectional link respectively 641 to 64P allowing the reading or writing of a given symbol at the output of the module 630 by the corresponding SISO decoder. Thus, several symbols are read in parallel in the corresponding memory banks and feed as many SISO decoders.
En fonction du signal 602 émis par l'unité de commande 604, le bloc 620 applique, dans ce mode de réalisation, la rotation circulaire Ok à l'ensemble des symboles présentés aux entrées/sorties 631 à 63P ou 641 à 641P et transmet le signal 606 au module 630 pour lui indiquer la rotation circulaire Ok à effectuer entre les entrées et les sorties du module 630. As a function of the signal 602 emitted by the control unit 604, the block 620 applies, in this embodiment, the circular rotation Ok to all the symbols presented at the inputs / outputs 631 to 63P or 641 to 641P and transmits the signal 606 to module 630 to indicate the circular rotation Ok to be made between the inputs and outputs of module 630.
Un symbole lu ou écrit par le module 630 est présenté ensemble à une sortie du module 630 qui aiguille ce symbole sur la sortie adéquate en fonction du signal 606. Une lecture ou une écriture simultanée d'un symbole par chacun des décodeurs SISO dans le module 630 est donc possible. A symbol read or written by the module 630 is presented together with an output of the module 630 which sets this symbol to the appropriate output as a function of the signal 606. A simultaneous reading or writing of a symbol by each of the SISO decoders in the module 630 is therefore possible.
Chacun des décodeurs SISO 671 à 67P utilise un algorithme à entrée souple et à sortie souple, qui produit des informations pondérées lors de la première (respectivement deuxième) étape, T valant 1 (respectivement 2) et P valant alors 2. Les décodeurs SISO contiennent également les modules permettant de mettre en oeuvre le critère d'arrêt. Chacun des modules renvoie des informations notamment sur la convergence du décodage associé au décodeur correspondant, à l'unité de commande par l'intermédiaire du signal 601. L'unité de commande prend en charge la mise en oeuvre de l'application des critères d'arrêts. Each of the SISO decoders 671 to 67P uses a flexible input and flexible output algorithm, which produces weighted information in the first (respectively second) step, where T is 1 (respectively 2) and P is then 2. SISO decoders contain also modules allowing to implement the stopping criterion. Each of the modules returns information in particular on the convergence of the decoding associated with the corresponding decoder, the control unit via the signal 601. The control unit supports the implementation of the application of the criteria of 'stops.
Les informations pondérées sont alors écrites en mémoire de manière symétrique à l'opération de lecture précédente. The weighted information is then written to memory symmetrically with the previous read operation.
En résumé, à chaque accès en lecture commandé par les signaux 602 et 603, les bancs mémoires 661 à 66P fournissent des symboles (dans un ordre éventuellement différents de l'ordre d'entrée, ce qui correspond à un premier In summary, at each read access controlled by the signals 602 and 603, the memory banks 661 to 66P provide symbols (in an order possibly different from the input order, which corresponds to a first
<Desc/Clms Page number 42><Desc / Clms Page number 42>
entrelacement) sur lesquels le module 630 applique une rotation circulaire de Ok symboles. Les symboles obtenus sont alors utilisés par les décodeurs SISO 671 à 67P. Après décodage, une opération symétrique est mise en oeuvre, les données étant transmises de chacun des décodeurs SISO à un banc mémoire après un passage dans le module 630. interleaving) on which the module 630 applies a circular rotation of Ok symbols. The symbols obtained are then used by the SISO decoders 671 to 67P. After decoding, a symmetrical operation is carried out, the data being transmitted from each of the SISO decoders to a memory bank after a passage in the module 630.
A la fin du décodage itératif, le module 690 détermine les décisions dures, résultat du décodage à partir des données présentes dans les bancs mémoire 661 à 66p. Les décisions dures peuvent alors être lues sur une sortie 691 du décodeur 600. At the end of the iterative decoding, the module 690 determines the hard decisions, result of the decoding from the data present in the memory banks 661 to 66p. The hard decisions can then be read on an output 691 of the decoder 600.
Dans une mise en oeuvre du décodeur 600 correspondant au code illustré en regard de la figure 1, - deux bancs mémoires sont utilisés; - les permutations de données sont effectuées par l'unité de commande 604 et par le module 610 qui fournit deux adresses mémoires différentes pour les deux bancs mémoires utilisés par l'intermédiaire du signal 605 ; - la permutation spatiale entre les bancs mémoires est réalisée par l'unité de commande 604 et par les modules 620 et 630 ; et - les roulettes 14 et 15 (respectivement 16 et 17) sont décodées simultanément à l'aide des décodeurs 671 et 672, à la première étape avec T valant 1 (respectivement deuxième étape avec T valant 2), P valant alors 2. In an implementation of the decoder 600 corresponding to the code illustrated with reference to FIG. 1, two memory banks are used; the data permutations are carried out by the control unit 604 and by the module 610 which provides two different memory addresses for the two memory banks used via the signal 605; the spatial permutation between the memory banks is carried out by the control unit 604 and by the modules 620 and 630; and - the rollers 14 and 15 (respectively 16 and 17) are decoded simultaneously using the decoders 671 and 672, in the first step with T equal to 1 (respectively second step with T equal to 2), P being then equal to 2.
Dans une mise en oeuvre du décodeur 600 correspondant au code illustré en regard de la figure 2 (respectivement 3), - la permutation 22 (respectivement #1 32) est effectuée par l'unité de commande 604 et par le module 610 ; - la rotation 24 (respectivement 34) est réalisée par l'unité de commande 604 et par les modules 620 et 630 ;et - le premier groupe de roulettes 21 RI à R5 (respectivement 31R1 à R5) et le deuxième groupe de roulettes 26 R6 à R10 In an implementation of the decoder 600 corresponding to the code illustrated with reference to FIG. 2 (respectively 3), the permutation 22 (respectively # 1 32) is carried out by the control unit 604 and by the module 610; the rotation 24 (respectively 34) is carried out by the control unit 604 and by the modules 620 and 630 and the first group of rollers 21 R1 to R5 (respectively 31R1 to R5) and the second group of rollers 26 R6 at R10
<Desc/Clms Page number 43><Desc / Clms Page number 43>
(respectivement 36 R6 à R9) sont successivement décodées à l'aide des décodeurs 671 à 675, P valant alors 5 et les roulettes à l'intérieur de chaque groupe étant décodées simultanément en parallèle. (respectively 36 R6 to R9) are successively decoded using the decoders 671 to 675, P being then 5 and the rollers within each group being decoded simultaneously in parallel.
De même, dans une réalisation du codeur 600 correspondant au code illustré en regard de la figure 4, - l'entrelaceur 420 est mis en oeuvre par l'unité de commande
604 et par les modules 610,620 et 630 ; - le premier groupe de roulettes 411 R1 à 414 R4 et le deuxième groupe de roulettes 441 Rs à 444 R8 sont successivement décodées à l'aide des décodeurs 671 à 674, P valant alors 4 et les roulettes à l'intérieur de chaque groupe étant décodées simultanément en parallèle. Similarly, in an embodiment of the encoder 600 corresponding to the code illustrated with reference to FIG. 4, the interleaver 420 is implemented by the control unit
604 and modules 610, 620 and 630; the first group of rollers 411 R1 to 414 R4 and the second group of rollers 441 Rs to 444 R8 are successively decoded using the decoders 671 to 674, P being then 4 and the rollers inside each group being decoded simultaneously in parallel.
L'opération de décodage itérative d'une trame de K symboles d'information par T. P roulettes comporte donc les étapes suivantes : - une écriture des données relatives aux symboles d'information 650 reçues dans les bancs mémoires 661 à 66P (décisions souples en sortie du canal des symboles d'information systématique et des symboles de redondance); - plusieurs itérations de décodage, chacune étant constituée de T étapes de décodage (T valant, par exemple, 2 pour les codes illustrés précédemment en regard des figures 1 à 4) de P roulettes mettant en oeuvre un algorithme de type SISO qui nécessite la lecture des C symboles d'informations systématiques de la roulette considérée et l'écriture des C symboles d'information pondérés produits dans les bancs mémoires correspondant ; et - lecture, dans les bancs mémoires 661 à 66P, des données relatives aux
K symboles d'informations pour effectuer la décision dure sur les symboles et produire la trame décodée qui sera transmise sur la sortie
680. The iterative decoding operation of a frame of K information symbols by T. P rollers thus comprises the following steps: a writing of the data relating to the information symbols 650 received in the memory banks 661 to 66P (soft decisions at the output of the channel of systematic information symbols and redundancy symbols); a plurality of decoding iterations, each consisting of T decoding steps (T being, for example, 2 for the codes illustrated above with reference to FIGS. 1 to 4) of P rollers implementing a SISO type algorithm that requires reading; C systematic information symbols of the roulette considered and writing C weighted information symbols produced in the corresponding memory banks; and reading, in the memory banks 661 to 66P, data relating to
K information symbols to make the decision lasts on the symbols and produce the decoded frame that will be transmitted on the output
680.
<Desc/Clms Page number 44> <Desc / Clms Page number 44>
Le décodage itératif est contrôlé par l'unité de commande 600 définissant l'algorithme de décodage itératif à utiliser et notamment l'utilisation du critère d'arrêt. Iterative decoding is controlled by the control unit 600 defining the iterative decoding algorithm to be used and in particular the use of the stopping criterion.
Pour réduire le temps de décodage d'une trame, on applique un critère d'arrêt sur des fenêtres de données. Chacune des fenêtres est déterminée de façon à correspondre exactement à un code constituant. To reduce the decoding time of a frame, a stop criterion is applied to data windows. Each of the windows is determined to exactly match a constituent code.
Ainsi, on détermine les blocs de données sur lesquels le critère d'arrêt est vérifié au cours de l'itération courante et on n'effectue plus les calculs correspondants au cours de l' itération suivante. Cette méthode offre la possibilité de réduire la taille globale des données à décoder au fur et à mesure des itérations au prix d'une dégradation limitée des performances car les fenêtres correspondent à des codes constituants. Thus, the blocks of data on which the stopping criterion is checked during the current iteration are determined and the corresponding calculations are not carried out during the next iteration. This method offers the possibility of reducing the overall size of the data to be decoded as the iterations proceed at the cost of a limited performance degradation because the windows correspond to component codes.
Ainsi, on utilise le critère d'arrêt de plusieurs façons, notamment : - si au moins un des P décodeurs utilisés en parallèle a convergé (indication par chaque signal 601 correspondant), l'unité de commande
600 gèle ce ou ces décodeurs ; et/ou - si tous les P décodeurs utilisés en parallèle ont convergé (indication par les signaux 601 correspondants), l'unité de commande 600 saute l'étape de décodage t correspondant et passe directement à l'étape de décodage suivante t+1, ce qui permet un gain de latence de décodage et de consommation. Thus, the stopping criterion is used in several ways, in particular: if at least one of the P decoders used in parallel has converged (indication by each corresponding signal 601), the control unit
600 freezes this or these decoders; and / or if all the P decoders used in parallel have converged (indicated by the corresponding signals 601), the control unit 600 skips the corresponding decoding step t and goes directly to the next decoding step t + 1 , which allows a latency gain of decoding and consumption.
* Pour de plus amples détails sur les algorithmes de décodage utilisés pour les décodeurs SISO, on se référera aux articles (décrivant respectivement un algorithme de type BJCR et Viterbi): Optimal decoding of linear codes for minimizing symbol error rate , (ou en français décodage optimal des codes linéaires pour minimiser le taux d'erreur symbole ) écrit par L. R Bahl, J. Cocke, F. Jelinek, J. * For further details on the decoding algorithms used for SISO decoders, refer to the articles (describing respectively an algorithm of type BJCR and Viterbi): Optimal decoding of linear codes for minimizing symbol error rate, (or in French decoding optimal linear codes to minimize the symbol error rate) written by R. R Bahl, J. Cocke, F. Jelinek, J.
Raviv, et paru dans la revue IEEE Transactions on Information Theory, pp. 284-287, mars 1974. Raviv, and published in the journal IEEE Transactions on Information Theory, pp. 284-287, March 1974.
<Desc/Clms Page number 45> <Desc / Clms Page number 45>
A Viterbi algorithm with soft decision outputs and ils applications (ou en français un algorithme de Viterbi avec des sorties à décisions souples et ses applications ) écrit par J. Hagenauer et P. Hoeher et paru dans le compte-rendu de la conférence IEEE Globecom, pp. 1680-
1686, novembre 1989. A Viterbi algorithm with soft decision outputs and their applications (or in French a Viterbi algorithm with flexible decision outputs and its applications) written by J. Hagenauer and P. Hoeher and appeared in the report of the IEEE Globecom conference, pp. 1680-
1686, November 1989.
Selon une variante du décodeur non représentée, un décodeur similaire au décodeur 600 met en #uvre des codes constituants non convolutifs systématiques récursifs circulaires. According to a variant of the decoder not shown, a decoder similar to the decoder 600 implements non-convolutional systematic circular recursive constitutive codes.
De même, selon une autre variante, un décodeur adapté au codage du code illustré en regard de la figure 3 est mis en #uvre sur base du décodeur 600 avec une organisation de la mémoire est adaptée au code. En particulier, chaque symbole du mot de code est repéré par une adresse mémoire spécifique (alors que pour le décodeur 600, les mêmes adresses peuvent être utilisées pour un symbole systématique et un symbole de redondance correspondant). Likewise, according to another variant, a decoder adapted to the coding of the code illustrated with reference to FIG. 3 is implemented on the basis of the decoder 600 with an organization of the memory adapted to the code. In particular, each symbol of the code word is identified by a specific memory address (whereas for the decoder 600, the same addresses can be used for a systematic symbol and a corresponding redundancy symbol).
La figure 7 illustre une application du procédé de codage et de décodage selon l' invention aux stockage de données sur support magnétique et/ou optique. FIG. 7 illustrates an application of the coding and decoding method according to the invention to data storage on magnetic and / or optical media.
Le document Application des techniques de décodage itératif à la correction de l'interférence entre symboles écrit par P. Didier, A. Picard, C. The document Application of iterative decoding techniques to the correction of inter-symbol interference written by P. Didier, A. Picard, C.
Douillard et M. Jezequel et présenté lors du 15ème colloque GRETSI (France) du 18 au 21 septembre 1995 propose un mécanisme dans lequel on considère un canal à interférence entre symboles comme étant un des codes constituants d'un code convolutif concaténé en série. De même, M. Oberg et P. H. Siegel propose dans un article intitulé performance analysis of turbo-equalised partial response channels (ou en français analyse des performances des canaux à réponse partielle turbo-égalisés ) (paru dans la revue IEEE Transactions on communications, vol. 49, N 3, mars 2001, pages 436-444) une utilisation d'un turbo-décodage itératif dans le cas spécifique d'un canal magnétique avec interférences entre symboles. Douillard and M. Jezequel, presented at the 15th GRETSI (France) symposium from 18 to 21 September 1995, proposes a mechanism in which an intersymbol interference channel is considered to be one of the constituent codes of a convolutional code concatenated in series. Similarly, M. Oberg and PH Siegel propose in an article titled performance analysis of turbo-equalised partial response channels (or in French performance analysis of turbo-equalized partial response channels) (published in the journal IEEE Transactions on Communications, Flight 49, No. 3, March 2001, pages 436-444) a use of an iterative turbo-decoding in the specific case of a magnetic channel with intersymbol interference.
<Desc/Clms Page number 46> <Desc / Clms Page number 46>
Ces techniques présentent les inconvénients des mécanismes de codage de l'état de la technique, présentés précédemment. Ils ne sont donc pas détaillés plus avant. These techniques have the drawbacks of the prior art coding mechanisms presented above. They are not detailed further.
Néanmoins, l' invention permet également de pallier ces inconvénients. Nevertheless, the invention also makes it possible to overcome these disadvantages.
Ainsi, on peut considérer que le canal 700 est un canal magnétique avec interférences entre symboles qui correspond à un code convolutif et permet de coder les données selon un code à roulette. Thus, it can be considered that the channel 700 is a magnetic channel with intersymbol interference which corresponds to a convolutional code and makes it possible to code the data according to a roulette code.
De part sa nature, le canal 700 est continu. Son découpage en roulettes (par essence de taille finie) nécessite donc un traitement particulier. Due to its nature, the channel 700 is continuous. Its cutting into wheels (in essence finite size) therefore requires special treatment.
Selon le mode de réalisation illustré en regard de la figure 7, des symboles particuliers sont insérés dans la trame de façon à obtenir un retour périodique à un état prédéfini (par exemple, l'état 0). Le nombre des symboles ajoutés est supérieur ou égal à la mémoire du canal 700. Le découpage des roulettes se fait alors entre deux passages forcés à l'état prédéfini. According to the embodiment illustrated with reference to FIG. 7, particular symbols are inserted in the frame so as to obtain a periodic return to a predefined state (for example, the state 0). The number of added symbols is greater than or equal to the memory of the channel 700. The cutting of the rollers is then between two forced passages to the predefined state.
Ainsi, selon l'exemple illustré en regard de la figure 7, quatre blocs comprenant chacun trois symboles d'informations sont codés respectivement par quatre roulettes 721,731, 741 et 751 pour former quatre mots de codes 720,730, 740 et 750. Les données ainsi codées sont ensuite entrelacées (selon un entrelacement 770) et enregistrées sur un support magnétique correspondant au canal 700 (données 701 à 716). Si la mémoire du canal 700 est égale, par exemple, à trois, on ajoute trois bits 717 à 719 égaux à 0 à la suite des symboles 701 à 716 enregistrés, ce qui permet de forcer le passage d'une roulette 760 correspondant au codage sur le canal 700 des symboles enregistrés 701 à 719 à l'état prédéfini égal à 0. Thus, according to the example illustrated with reference to FIG. 7, four blocks each comprising three information symbols are respectively coded by four wheels 721, 731, 741 and 751 to form four codewords 720, 730, 740 and 750. The data thus encoded are then interleaved (according to an interlacing 770) and recorded on a magnetic medium corresponding to the channel 700 (data 701 to 716). If the memory of the channel 700 is equal, for example, to three, three bits 717 to 719 equal to 0 are added after the symbols 701 to 716 recorded, which makes it possible to force the passage of a wheel 760 corresponding to the coding on the channel 700 of the registered symbols 701 to 719 in the predefined state equal to 0.
Selon une variante de réalisation, on créée des roulettes par duplication des derniers bits des roulettes de façon à reboucler l'information (par exemple, un message Il 12 13 14 sera transmis dans le canal 700 par un message complété par les deux derniers symboles 13 14 placés en tête d'un message complété 13 14 Il 12 13 14 si la mémoire du canal 700 est égale à 2, avec seuls les quatre symboles finaux du message complété qui participe à une roulette). According to an alternative embodiment, wheels are created by duplicating the last bits of the rollers so as to loop the information (for example, a message Il 12 13 14 will be transmitted in the channel 700 by a message completed by the last two symbols 13 14 placed at the head of a completed message 13 14 11 12 13 14 if the memory of the channel 700 is equal to 2, with only the four final symbols of the completed message which participates in a roulette).
<Desc/Clms Page number 47> <Desc / Clms Page number 47>
Selon une autre variante, on gère les effets de bord par recouvrement des roulettes comme illustré en regard de la figure 4, différents blocs correspondant à une roulette codée par le canal étant traités indépendamment, en prenant un contexte qui permet d'assurer la convergence des algorithmes de décodage, de façon à ce que le code ainsi obtenu ne soit pas sous-optimal. According to another variant, the overlapping edge effects of the rollers are managed as illustrated with reference to FIG. 4, different blocks corresponding to a roulette encoded by the channel being treated independently, taking a context which makes it possible to ensure the convergence of the decoding algorithms, so that the code thus obtained is not suboptimal.
Selon encore une autre variante, un message à coder est découpé en blocs et des effets de bord sont gérés, au décodage, par un mécanisme de transmission d'information (par exemple, de l'état des noeuds du treillis utilisé par un algorithme de type SISO) d'un bloc à l'autre. According to yet another variant, a message to be coded is divided into blocks and edge effects are managed, on decoding, by an information transmission mechanism (for example, the state of the nodes of the trellis used by a trunk algorithm). type SISO) from one block to another.
L'opération de décodage est effectuée par un décodeur tout à fait similaire à celui illustré en regard de la figure 6, avec des décodeurs élémentaires correspondant aux sous-codes 700,721, 731,741 et 751, les codes 721,731, 741 et 751 pouvant être décodés en parallèle par des décodeurs distincts. De même, plusieurs blocs codés selon le code 700 pouvant eux-même être décodés en parallèle par des décodeurs distincts Elle ne sera donc pas détaillée plus amplement. The decoding operation is carried out by a decoder entirely similar to that illustrated with reference to FIG. 6, with elementary decoders corresponding to sub-codes 700, 721, 731, 741 and 751, the codes 721, 731, 741 and 751 being decodable in FIG. parallel by separate decoders. Similarly, several blocks coded according to the code 700 may themselves be decoded in parallel by separate decoders It will therefore not be further detailed.
Bien entendu, l'invention n'est pas limitée aux exemples de réalisation mentionnés ci-dessus. Of course, the invention is not limited to the embodiments mentioned above.
En particulier, l'homme du métier pourra apporter toute variante dans le type des roulettes utilisées, ainsi que leur nombre dans un dispositif de codage et/ou décodage de code global. In particular, those skilled in the art can make any variant in the type of rollers used, as well as their number in a coding device and / or global code decoding.
L'homme du métier pourra également mettre en #uvre un nombre de codeurs et/ou de décodeurs ainsi que de bancs mémoires adapté aux besoins des opérations de codage et/ou décodage en fonction notamment de la latence de codage et/ou décodage souhaitée et/ou de la complexité du codeur et/ou décodeur de code global. Ainsi, dans certaines applications visant à optimiser la latence, le nombre de bancs-mémoires et/ou de codeurs/décodeurs sera proche de, voire égal au nombre de sous-codes. Afin d'améliorer encore la vitesse de décodage, des modules de décodage mettant en oeuvre une itération de décodage pourront être mis en cascade. Pour des applications visant à optimiser la complexité tout en Those skilled in the art may also implement a number of coders and / or decoders as well as memory banks adapted to the needs of the coding and / or decoding operations depending in particular on the desired coding and / or decoding latency and / or the complexity of the coder and / or global code decoder. Thus, in certain applications aimed at optimizing latency, the number of memory banks and / or coders / decoders will be close to or even equal to the number of subcodes. In order to further improve the decoding speed, decoding modules implementing a decoding iteration can be cascaded. For applications aimed at optimizing complexity while
<Desc/Clms Page number 48><Desc / Clms Page number 48>
gardant une vitesse de codage/décodage élevée, le nombre de bancs mémoires ainsi que de codeurs/décodeurs de sous-code pourra être réduit (pour par exemple correspondre à une fraction du nombre de sous-codes appartenant au code global). keeping a high coding / decoding speed, the number of memory banks as well as subcode encoders / decoders can be reduced (for example corresponding to a fraction of the number of subcodes belonging to the global code).
L'invention ne se limite pas au cas où le nombre d'étapes T vaut 2 mais s'étend également aux cas où T est supérieur à 2, notamment lorsque le code global peut être modélisé sous forme d'une première matrice et de deuxièmes matrices, chaque deuxième matrice étant obtenu par entrelacement des colonnes et éventuellement des lignes de la première matrice, et chaque ligne des première et deuxièmes matrices correspondant à un mot de sous-code du code global. Dans ce cas, T peut clairement prendre une valeur quelconque (par exemple, 3,4, 5, ...). The invention is not limited to the case where the number of steps T is equal to 2 but also extends to the cases where T is greater than 2, especially when the overall code can be modeled as a first matrix and second matrices, each second matrix being obtained by interleaving the columns and possibly rows of the first matrix, and each row of the first and second matrices corresponding to a subcode word of the global code. In this case, T can clearly take any value (for example, 3,4, 5, ...).
L'invention ne se limite pas non plus au cas où la dimension du code vaut 2 mais s'étend également aux cas où elle est supérieure à 2. The invention is also not limited to the case where the dimension of the code is 2 but also extends to cases where it is greater than 2.
On note que l'invention ne se limite pas au codage ou au décodage de données destinées ou en provenance d'un canal de transmission mais s'étend à toute application des codes correcteurs d'erreurs et, notamment au stockage de données sur des supports magnétiques et/ou optiques. Note that the invention is not limited to the coding or decoding of data intended for or coming from a transmission channel but extends to any application of the error-correcting codes and, in particular to the storage of data on media. magnetic and / or optical.
L'invention concerne, en outre, les dispositifs comprenant un ou plusieurs codeurs ou décodeurs selon l'invention, et notamment les mobiles ou équipement d'infrastructure de radio-communication ainsi que les équipements de transmission et/ou de réception de données, notamment sans fil (par exemple radio, optique et/ou acoustique) et à haut débit. The invention furthermore relates to devices comprising one or more encoders or decoders according to the invention, and in particular mobiles or radio communication infrastructure equipment as well as data transmission and / or reception equipment, in particular wireless (eg radio, optical and / or acoustic) and broadband.
L'invention concerne également les codes générés par les codeurs décrits précédemment et les signaux d'informations codées avec de tels codeurs. The invention also relates to the codes generated by the encoders described above and the information signals encoded with such encoders.
L'invention n'est pas limitée au code permettant une protection uniforme des symboles d'information mais s'étend également au cas où un niveau de protection en fonction des symboles d'information eux-même (par exemple, issus de sources différentes ou d'importance inégale selon un codage de source ou selon leur signification (symboles de données ou de contrôle)). Ainsi, les codes constituant d'un code global selon l' invention pourront être de rendement différents en fonction du niveau de protection souhaité. En outre, les symboles The invention is not limited to the code allowing a uniform protection of the information symbols but also extends to the case where a protection level according to the information symbols themselves (for example, from different sources or of unequal importance according to a source coding or according to their meaning (data or control symbols)). Thus, the constituent codes of a global code according to the invention may be different in yield depending on the desired level of protection. In addition, the symbols
<Desc/Clms Page number 49><Desc / Clms Page number 49>
d'information pourront avoir des degrés différents et être répartis sur un ou plusieurs codes constituants. information may have different degrees and be distributed over one or more constituent codes.
On notera que l'invention ne se limite pas à une implantation purement matérielle mais qu'elle peut aussi être mise en #uvre sous la forme d'une séquence d' instructions d'un programme informatique ou toute forme mixant une partie matérielle et une partie logicielle. Dans le cas où l'invention est implantée partiellement ou totalement sous forme logicielle, la séquence d'instructions correspondante pourra être stockée dans un moyen de stockage amovible (tel que par exemple une disquette, un CD-ROM ou un DVD-ROM) ou non, ce moyen de stockage étant lisible partiellement ou totalement par un ordinateur ou un microprocesseur. It will be noted that the invention is not limited to a purely hardware implementation but that it can also be implemented in the form of a sequence of instructions of a computer program or any form mixing a hardware part and a software part. In the case where the invention is partially or totally implemented in software form, the corresponding instruction sequence can be stored in a removable storage means (such as for example a floppy disk, a CD-ROM or a DVD-ROM) or no, this storage means being partially or completely readable by a computer or a microprocessor.
Claims (44)
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0204764A FR2838581B1 (en) | 2002-04-16 | 2002-04-16 | METHOD FOR ENCODING AND / OR DECODING CORRECTIVE ERROR CODES, DEVICES AND SIGNAL THEREOF |
AU2003246832A AU2003246832A1 (en) | 2002-04-16 | 2003-04-14 | Method for coding and/or decoding error correcting codes, and corresponding devices and signal |
PCT/FR2003/001188 WO2003088504A1 (en) | 2002-04-16 | 2003-04-14 | Method for coding and/or decoding error correcting codes, and corresponding devices and signal |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0204764A FR2838581B1 (en) | 2002-04-16 | 2002-04-16 | METHOD FOR ENCODING AND / OR DECODING CORRECTIVE ERROR CODES, DEVICES AND SIGNAL THEREOF |
Publications (2)
Publication Number | Publication Date |
---|---|
FR2838581A1 true FR2838581A1 (en) | 2003-10-17 |
FR2838581B1 FR2838581B1 (en) | 2005-07-08 |
Family
ID=28459899
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR0204764A Expired - Fee Related FR2838581B1 (en) | 2002-04-16 | 2002-04-16 | METHOD FOR ENCODING AND / OR DECODING CORRECTIVE ERROR CODES, DEVICES AND SIGNAL THEREOF |
Country Status (3)
Country | Link |
---|---|
AU (1) | AU2003246832A1 (en) |
FR (1) | FR2838581B1 (en) |
WO (1) | WO2003088504A1 (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2883121A1 (en) * | 2005-03-11 | 2006-09-15 | France Telecom | METHOD AND DEVICE FOR DECODING WHEEL CODES |
EP1850486A1 (en) * | 2005-02-03 | 2007-10-31 | Matsushita Electric Industrial Co., Ltd. | Parallel interleaver, parallel deinterleaver, and interleave method |
FR2915641A1 (en) * | 2007-04-30 | 2008-10-31 | St Microelectronics Sa | Digital data interlacing method for implementing e.g. turbo-code, involves elaborating data assignment matrix in manner to shunt data in memory for taking matrix in identical manner on set of simultaneously parallel shunting data |
WO2013124449A1 (en) | 2012-02-23 | 2013-08-29 | Universite De Bretagne Sud | Self-configurable device for interleaving/deinterleaving data frames |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7577207B2 (en) | 2002-07-03 | 2009-08-18 | Dtvg Licensing, Inc. | Bit labeling for amplitude phase shift constellation used with low density parity check (LDPC) codes |
AU2003249708A1 (en) | 2002-07-03 | 2004-01-23 | Hughes Electronics Corporation | Method and system for memory management in low density parity check (ldpc) decoders |
US7020829B2 (en) | 2002-07-03 | 2006-03-28 | Hughes Electronics Corporation | Method and system for decoding low density parity check (LDPC) codes |
US20040019845A1 (en) | 2002-07-26 | 2004-01-29 | Hughes Electronics | Method and system for generating low density parity check codes |
US7864869B2 (en) | 2002-07-26 | 2011-01-04 | Dtvg Licensing, Inc. | Satellite communication system utilizing low density parity check codes |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4547882A (en) * | 1983-03-01 | 1985-10-15 | The Board Of Trustees Of The Leland Stanford Jr. University | Error detecting and correcting memories |
EP0282298A2 (en) * | 1987-03-13 | 1988-09-14 | Space Systems / Loral, Inc. | Method and apparatus for combining encoding and modulation |
US5157671A (en) * | 1990-05-29 | 1992-10-20 | Space Systems/Loral, Inc. | Semi-systolic architecture for decoding error-correcting codes |
EP0511141A1 (en) * | 1991-04-23 | 1992-10-28 | France Telecom | Error correction encoding method comprising at least two parallel systematic convolutional encoding, iterative decoding method, decoding module and decoder therefor |
-
2002
- 2002-04-16 FR FR0204764A patent/FR2838581B1/en not_active Expired - Fee Related
-
2003
- 2003-04-14 AU AU2003246832A patent/AU2003246832A1/en not_active Abandoned
- 2003-04-14 WO PCT/FR2003/001188 patent/WO2003088504A1/en not_active Application Discontinuation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4547882A (en) * | 1983-03-01 | 1985-10-15 | The Board Of Trustees Of The Leland Stanford Jr. University | Error detecting and correcting memories |
EP0282298A2 (en) * | 1987-03-13 | 1988-09-14 | Space Systems / Loral, Inc. | Method and apparatus for combining encoding and modulation |
US5157671A (en) * | 1990-05-29 | 1992-10-20 | Space Systems/Loral, Inc. | Semi-systolic architecture for decoding error-correcting codes |
EP0511141A1 (en) * | 1991-04-23 | 1992-10-28 | France Telecom | Error correction encoding method comprising at least two parallel systematic convolutional encoding, iterative decoding method, decoding module and decoder therefor |
Non-Patent Citations (7)
Title |
---|
A. MATACHE S. DOLINAR F. POLLARA: "Stopping rules for turbo decoders", INTERNET ARTICLE: TMO PROGRESS REPORT EDITED BY JPL (JET PROPULSION LABORATORY), no. 42-142, - August 2000 (2000-08-01), XP002225478, Retrieved from the Internet <URL:http://tmo.jpl.nasa.gov/tmo/progress_report/42-142/title.htm> [retrieved on 20021217] * |
BAHL L R ET AL: "OPTIMAL DECODING OF LINEAR CODES FOR MINIMIZING SYMBOL ERROR RATE", IEEE TRANSACTIONS ON INFORMATION THEORY, IEEE INC. NEW YORK, US, vol. IT-20, no. 2, March 1974 (1974-03-01), pages 284 - 287, XP000760833, ISSN: 0018-9448 * |
BERROU C ET AL: "MULTIPLE PARALLEL CONCATENATION OF CIRCULAR RECURSIVE SYSTEMATIC CONVOLUTIONAL (CRSC) CODES", ANNALES DES TELECOMMUNICATIONS - ANNALS OF TELECOMMUNICATIONS, PRESSES POLYTECHNIQUES ET UNIVERSITAIRES ROMANDES, LAUSANNE, CH, vol. 54, no. 3/4, March 1999 (1999-03-01), pages 166 - 172, XP000834638, ISSN: 0003-4347 * |
GALLAGER R G: "LOW-DENSITY PARITY-CHECK CODES", IRE TRANSACTIONS ON INFORMATION THEORY, IEEE INC. NEW YORK, US, January 1962 (1962-01-01), pages 21 - 28, XP000992693 * |
HAGENAUER J ET AL: "A VITERBI ALGORITHM WITH SOFT-DECISION OUTPUTS AND ITS APPLICATIONS", COMMUNICATIONS TECHNOLOGY FOR THE 1990'S AND BEYOND. DALLAS, NOV. 27 - 30, 1989, PROCEEDINGS OF THE GLOBAL TELECOMMUNICATIONS CONFERENCE AND EXHIBITION(GLOBECOM), NEW YORK, IEEE, US, vol. 3, 27 November 1989 (1989-11-27), pages 1680 - 1686, XP000091258 * |
RAMESH PYNDIAH ET AL: "NEAR OPTIMUM DECODING OF PRODUCT CODES", PROCEEDINGS OF THE GLOBAL TELECOMMUNICATIONS CONFERENCE (GLOBECOM). SAN FRANCISCO, NOV. 28 - DEC. 2, 1994, NEW YORK, IEEE, US, vol. 1, 28 November 1994 (1994-11-28), pages 339 - 343, XP000488569, ISBN: 0-7803-1821-8 * |
TANNER R M: "A RECURSIVE APPROACH TO LOW COMPLEXITY CODES", IEEE TRANSACTIONS ON INFORMATION THEORY, IEEE INC. NEW YORK, US, vol. IT-27, no. 5, September 1981 (1981-09-01), pages 533 - 547, XP001002287, ISSN: 0018-9448 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1850486A1 (en) * | 2005-02-03 | 2007-10-31 | Matsushita Electric Industrial Co., Ltd. | Parallel interleaver, parallel deinterleaver, and interleave method |
EP1850486A4 (en) * | 2005-02-03 | 2008-05-07 | Matsushita Electric Ind Co Ltd | Parallel interleaver, parallel deinterleaver, and interleave method |
FR2883121A1 (en) * | 2005-03-11 | 2006-09-15 | France Telecom | METHOD AND DEVICE FOR DECODING WHEEL CODES |
FR2915641A1 (en) * | 2007-04-30 | 2008-10-31 | St Microelectronics Sa | Digital data interlacing method for implementing e.g. turbo-code, involves elaborating data assignment matrix in manner to shunt data in memory for taking matrix in identical manner on set of simultaneously parallel shunting data |
US8327033B2 (en) | 2007-04-30 | 2012-12-04 | Stmicroelectronics Sa | Method and device for interleaving data |
WO2013124449A1 (en) | 2012-02-23 | 2013-08-29 | Universite De Bretagne Sud | Self-configurable device for interleaving/deinterleaving data frames |
US9971684B2 (en) | 2012-02-23 | 2018-05-15 | Universite De Bretagne Sud | Self-configurable device for interleaving/deinterleaving data frames |
Also Published As
Publication number | Publication date |
---|---|
WO2003088504A1 (en) | 2003-10-23 |
AU2003246832A1 (en) | 2003-10-27 |
FR2838581B1 (en) | 2005-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6678843B2 (en) | Method and apparatus for interleaving, deinterleaving and combined interleaving-deinterleaving | |
FR2815199A1 (en) | Cyclic turbo coding scheme improves minimum Hamming distance | |
EP0848501A1 (en) | Digital transmission system and method comprising a product code combined with multidimensional modulation | |
EP1332557B1 (en) | High-speed module, device and method for decoding a concatenated code | |
WO1997038495A1 (en) | Data block convolutional coding device and method, and corresponding decoding method and device | |
FR2804260A1 (en) | DIGITAL CORRECTIVE ERROR-TYPE CODING TRANSMITTING METHOD | |
EP0848524A1 (en) | Punctured, trellis coded QAM, with interative decoding | |
EP1101288B1 (en) | Method and device for error correction coding and corresponding decoding method and device | |
FR2900294A1 (en) | Low density parity check decoder`s input/channel memory loading method for set top box, involves carrying out memory accesses in page mode for writing binary word streams in respective zones of input/channel memory by controlling module | |
FR2896359A1 (en) | RAPID ENCODING AND DECODING METHOD AND ASSOCIATED DEVICES. | |
FR2838581A1 (en) | Method for coding and/or decoding of the error-correction codes, corresponding devices and signal representative of coded data block | |
EP1128589B1 (en) | Interruption criterion for a turbo decoder | |
EP2330745A1 (en) | Method and device for decoding a series of blocks encoded with an error-correction code, correlated by a transmission channel | |
FR2807895A1 (en) | Methods and devices for coding and decoding and systems implementing them, for use in protected wireless communications | |
EP3311495B1 (en) | Interleaver design for turbo codes in dependence on the puncturing pattern | |
FR2805418A1 (en) | DIGITAL CORRECTIVE ERROR-TYPE CODING TRANSMITTING METHOD | |
FR2806177A1 (en) | DIGITAL CORRECTIVE ERROR-TYPE CODING TRANSMITTING METHOD | |
EP1205032B1 (en) | Coding method and device with at least two parallel coding steps and improved permutation, and corresponding decoding method and device | |
FR2888062A1 (en) | CODEUR AND TURBO PRODUCT CODE DECODER | |
Balaji et al. | Evaluation of decoding trade-offs of concatenated RS convolutional codes and turbo codes via trellis | |
FR3022651A1 (en) | METHODS AND DEVICES FOR ENCODING AND DECODING ERROR CORRECTING, AND CORRESPONDING COMPUTER PROGRAM. | |
Zhdanov | IRA codes derived from Gruenbaum graph | |
FR2804806A1 (en) | Interleaving process coding/decoding mechanism with symbol sequence written line/line separating positions and forming intra column permutations and preserving divisibility/obtaining interleaved sequences. | |
FR2967320A1 (en) | METHOD AND DEVICE FOR DECODING DATA RECEIVED IN FRAMES | |
FR2782423A1 (en) | Error correction coding procedure for data transmission includes combined transmission of source and processed data following several stages of processing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PLFP | Fee payment |
Year of fee payment: 15 |
|
PLFP | Fee payment |
Year of fee payment: 16 |
|
PLFP | Fee payment |
Year of fee payment: 17 |
|
PLFP | Fee payment |
Year of fee payment: 18 |
|
ST | Notification of lapse |
Effective date: 20201205 |