Brevet FR3022651A1 — publié le 20151225

Procédés et dispositifs de codage et de décodage correcteur d'erreurs, et programme d'ordinateur correspondant. 1. Domaine de l'invention Le domaine de l'invention est celui du codage et du décodage de données, mettant en oeuvre un code correcteur d'erreurs. Plus précisément, l'invention propose une nouvelle technique de codage de données source, délivrant des paquets de données codées ou un flux de données codées, destiné(s) à être transmis sur un canal de transmission (par exemple de type hertzien, optique ou électrique), ou stocké(s) dans un support matériel. L'invention concerne également une technique de décodage correspondante, permettant notamment de corriger les erreurs de transmission inhérentes au canal de transmission, et en particulier les erreurs de type effacement. L'invention trouve notamment des applications dans les domaines suivants : la transmission d'information par télécommunications filaires électriques, comme dans les normes ADSL, ou optiques, sur fibres optiques ou en espace libre ; - la transmission d'information dans les communications radios spatiales et terrestres sans fil (« wireless » en anglais), comme dans les systèmes de télévision numérique TNT, de radio numérique DAB, de téléphonie GSM ou UMTS, de réseau radio WiFi, et aussi dans les futurs systèmes de communications, comme les futures normes DVB, 4G, LTE, « Internet du futur », ou dans les communications entre véhicules, objets ou machines communicants ... ; la compression et la décompression de source d'informations ; la génération et la détection de séquences dites d'embrouillage (« scrambling » en anglais) dans les systèmes CDMA ; le stockage d'informations dans des mémoires de masse magnétiques, optiques, mécaniques ou électriques pour constituer des disques durs, ou des mémoires vives d'ordinateurs, ou des clés mémoire à interface de type USB... ; la correction d'informations lors des calculs dans un circuit intégré d'un microprocesseur ou dans un ordinateur ; etc. 2. Art antérieur De nombreuses techniques de codage permettent la correction d'erreurs de transmission (au décodage) en générant des données de redondance à partir de données source. Ainsi, un code correcteur d'erreurs est classiquement défini par : une longueur n, correspondant aux données en sortie du codeur (mot de code de longueur n formé de k données source et de (n - k) données de redondance), 3022651 2 un nombre de bits ou de symboles d'information utiles k, correspondant aux données en entrée du codeur, encore appelées données source, et une distance minimale La distance minimale d'un code dmin correspond au minimum de distance entre deux mots 5 de code. Elle permet de déterminer le nombre maximum d'erreurs que le code peut corriger dans un mot de code. Le rendement du code est quant à lui défini par R = k/n Par exemple, un code de Hamming (8, 4, 4) est un code de longueur n = 8, prenant en entrée k = 4 symboles d'information utiles, de distance minimale dmin = 4, et de rendement 1/2. Dans le brevet européen EP 1 101 288, J.C. Carlach et C. Vervoux ont présenté une 10 technique de construction de codes quasi-optimaux, désignés par l'expression « codes Cortex ». De tels codes sont construits en utilisant plusieurs étages de codage, mettant chacun en oeuvre plusieurs modules de codage de base simples, et des étages de brassage entre deux étages de codage. Une telle technique permet de construire des codes auto-duaux de type-I et de tye-II, selon la parité du nombre d'étages. 15 Un inconvénient d'une telle technique est qu'elle nécessite un grand nombre d'étages de codage pour obtenir des codes de grandes distances minimales dmin par rapport à la longueur n d'un mot de code. De manière générale, la distance minimale dmin n'est donc pas optimale pour ces longueurs n et k, c'est-à-dire que la distance minimale n'est pas la plus proche possible d'une 20 borne pour laquelle le code permet de détecter le nombre maximum d'erreurs (borne de Hamming ou « Sphere-Packing Bound », telle que dmin/n 0,22 pour un code auto-dual de rendement - = 1/2) ou de la borne de Gilbert-Varshamov (telle que dmin/n 0,11 pour un code auto-dual de rendement - = 1/2). Or, plus la distance minimale dmin est grande, meilleur est le code correcteur d'erreurs, 25 puisqu'il permet de détecter (dmin - 1) symboles erronés et d'en corriger 1(dmin - 1)/21 (où l'opérateur L. _I désigne la partie entière). Or les décodeurs de codes Cortex actuels ne fonctionnent pas de façon optimale dès que le nombre d'étages de codage utilisés pour construire le code Cortex dépasse un nombre de trois étages de codage. Ceci est principalement dû au fait que les variables intermédiaires (variables 30 d'état internes) entre les étages de codage ne sont pas transmises et ne possèdent donc pas de valeurs de vraisemblance ou de probabilités a priori avec lesquelles on puisse les initialiser, notamment lors de la mise en oeuvre au décodage d'un algorithme de type propagation des probabilités (en anglais « Belief Propagation » ou BP). Cette difficulté à décoder des codes Cortex construits en utilisant plus de trois étages de 3022651 3 codage rend problématique l'utilisation de codes Cortex plus longs, devant comporter plus d'étages de codage pour obtenir des distances minimales beaucoup plus grandes. Or un nombre supérieur d'étages de codage permet d'obtenir des codes offrant des capacités pratiques importantes de correction d'erreurs. 5 Il existe donc un besoin pour une nouvelle technique de codage correcteur d'erreurs, permettant de générer des mots de code présentant de grandes distances minimales, et pouvant être décodés simplement. 3. Exposé de l'invention L'invention propose une solution nouvelle qui ne présente pas l'ensemble de ces 10 inconvénients de l'art antérieur, sous la forme d'un dispositif de codage correcteur d'erreurs, apte à mettre en oeuvre un code correcteur d'erreurs global associant des données de redondance à des données source, le code correcteur global étant susceptible d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une matrice identité et une matrice de passage des données source aux données de redondance inversible. 15 Selon l'invention, le dispositif de codage comprend : deux étages de permutation de premier niveau, dont : o un premier étage de permutation de premier niveau connecté, en entrée, d'une part à des variables d'entrée associées à un premier ensemble des données source et/ou de redondance, et d'autre part à des variables internes associées à 20 des données d'entrée et des données de sortie d'un premier étage de codage de deuxième niveau, et o un deuxième étage de permutation de premier niveau connecté, en sortie, d'une part à des variables de sortie associées à un deuxième ensemble des données source et/ou de redondance, et d'autre part à des variables internes associées à 25 des données d'entrée et des données de sortie d'un deuxième étage de codage de deuxième niveau, le premier ensemble et le deuxième ensemble formant un mot de code, un étage de codage de premier niveau connecté d'une part aux variables associées aux données de sortie du premier étage de permutation de premier niveau et d'autre part aux 30 variables associées aux données d'entrée du deuxième étage de permutation de premier niveau, chaque étage de codage comprenant au moins deux modules de codage de base mettant chacun en oeuvre un code de base susceptible d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une matrice identité et une matrice de passage de 35 données d'entrée aux données de sortie inversible. 3022651 4 L'invention propose ainsi un nouveau dispositif de codage correcteur d'erreurs, dont la structure particulière permet de construire un code global performant avec une grande distance minimale, même si le nombre d'étage de codage est faible (trois étages de codage par exemple). De ce fait, les mots de code obtenus en utilisant un code global ainsi construit peuvent 5 être décodés en utilisant les décodeurs de codes Cortex actuels, basés sur des décodages itératifs de type « Belief Propagation » performants, ou un décodeur selon l'invention. Selon l'invention, on considère que la matrice de passage des données source aux données de redondance est inversible. Aucune autre contrainte n'est imposée sur le code correcteur d'erreurs, et notamment sur la longueur de ce code ou la longueur des cycles. On peut 10 donc considérer que le code correcteur d'erreurs mis en oeuvre est quasi-aléatoire. En particulier, le codeur proposé permet de construire un code global auto-dual avec une grande distance minimale quelque soit la longueur du code, et notamment pour un code assez court (de l'ordre de n 1000). En revanche, les turbo-codes et les codes LDPC présentent des performances plus faibles pour des codes de plus petite longueur. La solution proposée permet d'obtenir des codes performants mêmes assez courts 10 (n 1. Il est également possible de généraliser la structure en prenant un plus grand nombre de 15 variables internes, et donc de modules de codage de base, au niveau des étages de codage de q- ème niveau, avec a > 2. La figure 3 illustre ainsi un exemple de dispositif de codage mettant en oeuvre : un étage de codage de premier niveau 31, comprenant des modules de codage de base BO, Bl, etc ; 20 deux étages de permutation de premier niveau 321, 322, de part et d'autre de l'étage de codage de premier niveau 31 ; deux étages de codage de deuxième niveau 331, 332, de part et d'autre de l'ensemble de premier niveau formé par l'étage de codage de premier niveau 31 et les deux étages de permutation de premier niveau 321, 322, dont un premier étage comprenant des modules de 25 codage de base AO, Al, etc, et un deuxième étage comprenant des modules de codage de base CO, Cl, etc ; deux étages de permutation de deuxième niveau 341, 342, de part et d'autre de l'ensemble formé par l'ensemble de premier niveau et les deux étages de codage de deuxième niveau 331, 332 ; 30 deux étages de codage de troisième niveau 351, 352 de part et d'autre de l'ensemble de deuxième niveau formé par l'ensemble de premier niveau, les deux étages de codage de deuxième niveau 331, 332, et les deux étages de permutation de deuxième niveau 341, 342, dont un premier étage comprenant des modules de codage de base DO, D1, etc, et un deuxième étage comprenant des modules de codage de base E0, El, etc; 3022651 16 deux étages de permutation de troisième niveau 361, 362, de part et d'autre de l'ensemble formé par l'ensemble de deuxième niveau et les deux étages de codage de troisième niveau 351, 352 ; deux étages de codage de quatrième niveau 371, 372 de part et d'autre de l'ensemble de 5 troisième niveau formé par l'ensemble de deuxième niveau, les deux étages de codage de troisième niveau 351, 352, et les deux étages de permutation de troisième niveau 361, 362. On note toutefois qu'une telle augmentation du nombre de variables internes complexifie la structure et rend moins performant un éventuel décodage itératif par propagation de probabilités. 10 On note par ailleurs, en revenant à la figure 2, que comme les modules de codage de base de l'étage de codage de premier niveau 21 mettent chacun en oeuvre un code de Hamming (8, 4, 4) de poids tous multiples de 4, le code équivalent de l'étage de codage de premier niveau 21 est de poids multiple de 4. Par soustraction, l'ensemble des variables internes do_2k et fo-2k formant aussi un code de poids multiple de 4, chaque mot de code formé par les bits 15 d'information xo_(k_i) et les bits de redondance ro_(k_1) est de poids multiple de 4 et donc le code global obtenu, dit Cortex-Compact, est aussi auto-dual de type-Il. On note finalement que l'existence d'un code global n'est assurée que si l'on peut résoudre le système d'équations liant toutes les variables entre-elles, par l'intermédiaire des codes de base. De façon équivalente, cela signifie que l'on peut déterminer une matrice 20 génératrice du code global dont le déterminant est non nul (par exemple égal à 1 (modulo 2) dans le cas binaire), ou encore que la matrice génératrice comprend, sous sa forme systématique, une matrice identité et une matrice de passage des données source aux données de redondance inversible. A partir de la structure illustrée en figure 2, il est ainsi possible de déterminer un système 25 d'équations. En effet, un tel graphe de Tanner comprend des variables d'entrée, correspondant par exemple aux bits d'information, et des variables de sortie, correspondant par exemple aux bits de redondance, les bits de redondance étant liés aux bits d'information par l'intermédiaire de contraintes et de permutations. Ces contraintes peuvent être de deux types : 30 - les contraintes de type égalité, correspondant à une répétition de la variable connectée à cette contrainte ; - les contraintes de type addition modulo 2, correspondant à une contrainte logique de type « ou-exclusif ». Ces contraintes et permutations permettent de définir des relations algébriques, et de 3022651 17 calculer une matrice génératrice permettant de réaliser le codage. En particulier, le calcul des données de redondance doit se faire par le pré-calcul de la matrice de passage, qui peut être construite à partir du système d'équations. Ainsi, un codeur selon l'invention prend en entrée des données source X, sous la forme de 5 paquets ou d'un flux continu, et délivre en sortie au moins un mot de code, comprenant les données source X et des données de redondance R. Ces mots de code peuvent être véhiculés dans un canal de transmission ou stockées sur un support, puis décodées par un décodeur selon l'invention. En particulier, un tel décodeur peut également utiliser un graphe de Tanner tel qu'illustré 10 en figure 2, pour corriger des erreurs de type effacement notamment. Par exemple, comme illustré en figure 4, le décodeur reçoit en entrée au moins un mot de code, comprenant les données source X et des données de redondance R éventuellement entachées d'erreur, et délivre une estimation des données source X. Un tel procédé de décodage met en oeuvre, de façon symétrique au codage : 15 - une étape 41 de décodage de premier niveau, notée DCN1, recevant en entrée un mot de code formé de données source X et/ou de redondance R, après permutations, et délivrant en sortie une estimation des données source g, après permutations. Une telle étape de décodage de premier niveau met en oeuvre au moins deux modules de décodage de base, connectés d'une part à toutes les variables associées aux données source et aux données 20 de redondance du mot de code, et d'autre part à des variables internes ; une première 421 et une deuxième 422 étapes de décodage de deuxième niveau, notées respectivement DCN2,1 et DCN2,2/ mettant chacune en oeuvre au moins deux modules de décodage de base connectés uniquement aux variables internes de l'étape 41 de décodage de premier niveau DCN1, après permutations ; 25 - une première 431 et une deuxième 432 étapes de permutation de premier niveau, notées respectivement mo et mi. La première étape de permutation 431 mo est mise en oeuvre entre l'étape de décodage de premier niveau 41 DCN1 et la première étape de décodage de deuxième niveau 421 DCN2,1, et reçoit donc, en entrée, d'une part le mot de code formé des données source X et/ou de redondance R et d'autre part les données d'entrée 30 et des données de sortie obtenues à partir de la première étape de décodage de deuxième niveau 421 DCN2,1- La deuxième étape de permutation 432 n est mise en oeuvre entre l'étape de décodage de premier niveau 41 DCN1 et la deuxième étape de décodage de deuxième niveau 422 DCN2,2 et délivre donc, en sortie, d'une part une estimation des données source et d'autre part des données d'entrée et des données de 35 sortie à la deuxième étape de décodage de deuxième niveau 422 DCN2,2- 3022651 18 En particulier, on note que chaque module de décodage met en oeuvre un code de base auto-dual, susceptible d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une matrice identité et une matrice de passage de données d'entrée aux données de sortie inversible. 5 Le fonctionnement de ce décodeur est similaire à celui du codeur décrit ci-dessus. Il n'est donc pas expliqué plus en détails. En particulier, le décodage peut être mis en oeuvre en utilisant un algorithme de type « Belief Propagation », selon lequel les données reçues sont celles du mot de code reçu c = (x,r), éventuellement bruité, sous forme d'un vecteur de probabilités ou de P métriques (par exemple de type logarithme de rapport de vraisemblance ou LLR: Log (H). Les 1-p 10 valeurs de ce vecteur associées aux variables d'entrée et de sorties du graphe de Tanner sont propagées entre les noeuds du graphe, qui sont les codes de base de la structure. 5.2 Construction et mise en oeuvre du code de Golay (24, 12, 8) On présente désormais, en relation avec les figures 5A et 5B, la construction et l'utilisation d'un code de Golay (24, 12, 8) sous forme Cortex-Compact selon l'invention. 15 Le graphe de Tanner représentatif du dispositif de codage illustré en figure 5A comprend : un étage de codage de premier niveau 51, comprenant neuf modules de codage de base notés BO à B8 ; un premier étage de codage de deuxième niveau 521, comprenant trois modules de codage de base notés AO à A2 ; 20 un deuxième étage de codage de deuxième niveau 522, comprenant trois modules de codage de base notés CO à C2 ; un premier étage de permutation de premier niveau 531 ; un deuxième étage de permutation de premier niveau 532. Chaque module de codage de base met en oeuvre un code de Hamming (8,4,4), suivi 25 d'une permutation locale prenant par exemple en entrée un paquet de quatre bits aux positions d'indice {0,1,2,3}, et délivrant en sortie ces mêmes bits aux positions d'indice (0,2,1,3) respectivement. On note qu'une autre permutation locale pourrait être mise en oeuvre, comme la permutation locale prenant en entrée un paquet de quatre bits aux positions d'indice (0,1,2,31 et délivrant en sortie ces mêmes bits aux positions d'indice [0,3,1,2) respectivement. 30 Par ailleurs, les douze bits d'information (source), notés xo à x11, sont associés à des variables d'entrée du graphe de Tanner, et les douze bits de redondance, notés ro à r11 sont associés à des variables de sortie du graphe de Tanner. Les bits d'information entrent par paquets de quatre bits sur le premier étage de permutation de premier niveau 531. Le premier étage de permutation de premier niveau 531 est 3022651 19 donc connecté à des variables d'entrée associées à un premier ensemble des données source et de redondance, ici les bits d'information xo à x11. Le premier étage de permutation de premier niveau 531 est également connecté, en entrée, aux entrées et aux sorties du premier étage de codage de deuxième niveau 521. Plus précisément, chacun des trois modules de codage de base 5 AO, Al, A2 du premier étage de codage de deuxième niveau 521 reçoit en entrée un paquet de quatre bits, notés respectivement do à d3, d4 à d7, et d8 à d11, et délivre en sortie un paquet de quatre bits, notés respectivement fo à f3, f4 à f7, et f8 à f11 conformément au code de base de Hamming (8, 4, 4). Chaque paquet de quatre bits fo à f3, f4 à f7, et f8 à f11, subit une permutation locale [0,1,2,3) [0,2,1,31 comme illustré en figure 5A. Le premier étage de permutation de 10 premier niveau 531 est donc connecté, en entrée, aux 12 bits d'information xo à x11 et à 24 bits internes do à d11 et fo à f11 associés à des variables internes. Selon cet exemple, on dispose donc d'un module de codage de base pour chaque paquet de quatre bits associés à des variables d'entrée. Le premier étage de permutation de premier niveau 531 met en oeuvre une permutation 15 4-cyclique de longueur / = 36, telle que, en notant i la position d'un bit en entrée et mo(i) la position de ce même bit en sortie, on a : i E 0 (mod 4): mo(i) = i - 2(mod I) i E 1 (mod 4): mo(i) = i - 2(mod I) i E 2 (mod 4): mo(i) = i + 2(mod I) i E 3 (mod 4): mo(i) = i + 2(mod I) En variante, d'autres permutations pourraient être mises en oeuvre, comme des permutations affines associant à un bit/symbole d'entrée à la position i, un même bit/symbole à la position a * i + b, avec a un nombre premier avec la longueur (ou l'ordre) / de la permutation 20 mise en oeuvre par le premier ou le deuxième étage de permutation de premier niveau, et b un entier tel que b REVENDICATIONS1. Dispositif de codage correcteur d'erreurs, apte à mettre en oeuvre un code correcteur d'erreurs global associant des données de redondance à des données source, ledit code correcteur global étant susceptible d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une matrice identité et une matrice de passage desdites données source auxdites données de redondance inversible, caractérisé en ce que ledit dispositif de codage comprend : deux étages de permutation de premier niveau, dont : o un premier étage de permutation de premier niveau (231; 321 ; 531 ; 631) connecté, en entrée, d'une part à des variables d'entrée associées à un premier ensemble desdites données source et/ou de redondance, et d'autre part à des variables internes associées à des données d'entrée et des données de sortie d'un premier étage de codage de deuxième niveau (221 ; 331 ; 521 ; 621), et o un deuxième étage de permutation de premier niveau (232 ; 322 ; 532 ; 632) connecté, en sortie, d'une part à des variables de sortie associées à un deuxième ensemble desdites données source et/ou de redondance, et d'autre part à des variables internes associées à des données d'entrée et des données de sortie d'un deuxième étage de codage de deuxième niveau (222 ; 332 ; 522 ; 622), ledit premier ensemble et ledit deuxième ensemble formant un mot de code, et - un étage de codage de premier niveau (21 ; 31 ; 51 ; 61) connecté d'une part aux variables associées aux données de sortie dudit premier étage de permutation de premier niveau et d'autre part aux variables associées aux données d'entrée dudit deuxième étage de permutation de premier niveau, chaque étage de codage comprenant au moins deux modules de codage de base mettant chacun en oeuvre un code de base susceptible d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une matrice identité et une matrice de passage de données d'entrée aux données de sortie inversible. 2. Dispositif de codage correcteur d'erreurs selon la revendication 1, caractérisé en ce qu'il comprend au moins deux étages de permutation de q-ème niveau, avec q un entier supérieur ou égal à 2, dont : un premier étage de permutation de q-ème niveau (341, 361) connecté, en entrée, à des variables internes associées aux données d'entrée et aux données de sortie d'un premier étage de codage de (q+1)- ème niveau (351, 371), et, en sortie, à des variables internes associées aux données d'entrée et aux données de sortie d'un premier étage de codage de q-ème niveau (331, 351); 3022651 25 un deuxième étage de permutation de q-ème niveau connecté (342, 362), en entrée, à des variables internes associées aux données d'entrée et aux données de sortie d'un deuxième étage de codage de q-ème niveau (332, 352) et, en sortie, à des variables internes associées aux données d'entrée et aux données de sortie d'un deuxième étage 5 de codage de (q+1)-ème niveau (352, 372). 3. Dispositif de codage correcteur d'erreurs selon l'une quelconque des revendications 1 et 2, caractérisé en ce que chaque module de codage de base du ou desdits étages de codage de ième niveau comprend c entrées et c sorties, et en ce que chaque étage de permutation de i-ème niveau met en oeuvre une permutation de type c-cyclique, avec i et c des entiers supérieurs ou 10 égaux à 1. 4. Dispositif de codage correcteur d'erreurs selon l'une quelconque des revendications 1 et 2, caractérisé en ce que chaque étage de permutation de i-ème niveau met en oeuvre une permutation affine, avec i un entier supérieur ou égal à 1. 5. Dispositif de codage correcteur d'erreurs selon l'une quelconque des revendications 1 à 4, 15 caractérisé en ce que le ou lesdits étages de codage de i-ème niveau comprennent chacun au moins deux modules de permutation locale, chaque module de permutation locale permutant les variables internes obtenues en sortie d'un module de codage de base, avec i un entier supérieur ou égal à 1. 6. Dispositif de codage correcteur d'erreurs selon l'une quelconque des revendications 1 à 5, 20 caractérisé en ce que ledit dispositif présente une structure symétrique. 7. Dispositif de codage correcteur d'erreurs selon l'une quelconque des revendications 1 à 6, caractérisé en ce que le nombre de variables internes est deux fois supérieur au nombre de variables associées aux données source. 8. Dispositif de codage correcteur d'erreurs selon l'une quelconque des revendications 1 à 7, 25 caractérisé en ce que lesdits codes de base appartiennent au groupe comprenant : un code de Hamming ; un code identité ; un code de Golay ; un code à répétition simple. 30 9. Dispositif de codage correcteur d'erreurs selon l'une quelconque des revendications 1 à 8, caractérisé en ce que tous les modules de codage de base mettent en oeuvre un code de base identique. 10. Dispositif de codage correcteur d'erreurs selon l'une quelconque des revendications 1 à 9, caractérisé en ce que l'ensemble desdits étages de codage et de permutation forme un graphe de 35 Tanner, dont les entrées sont lesdites variables d'entrée associées à un premier ensemble 3022651 26 desdites données source et de redondance, et les sorties sont lesdites variables de sortie associées à un deuxième ensemble desdites données source et de redondance. 11. Procédé de codage correcteur d'erreurs, apte à mettre en oeuvre un code correcteur d'erreurs global associant des données de redondance à des données source, 5 ledit code correcteur global étant susceptible d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une matrice identité et une matrice de passage desdites données source auxdites données de redondance inversible, caractérisé en ce que ledit procédé de codage met en oeuvre : deux étapes de permutation de premier niveau, dont : 10 o une première étape de permutation de premier niveau (131) recevant, en entrée, d'une part un premier ensemble desdites données source et/ou de redondance, et d'autre part des données d'entrée et des données de sortie obtenues à partir d'une première étape de codage de deuxième niveau (121), et o une deuxième étape de permutation de premier niveau (132) délivrant, en sortie, 15 d'une part un deuxième ensemble desdites données source et/ou de redondance, et d'autre part des données d'entrée et des données de sortie obtenues à partir d'une deuxième étape de codage de deuxième niveau (122), ledit premier ensemble et ledit deuxième ensemble formant un mot de code, et une étape de codage de premier niveau (11) recevant les données de sortie de ladite 20 première étape de permutation de premier niveau et délivrant des données d'entrée à ladite deuxième étape de permutation de premier niveau, chaque étape de codage mettant en oeuvre au moins deux modules de codage de base mettant chacun en oeuvre un code de base susceptible d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une matrice identité et une matrice de passage de 25 données d'entrée aux données de sortie inversible. 12. Dispositif de décodage correcteur d'erreurs, apte à retrouver des données source à partir d'un mot de code reçu, lesdites données source ayant été codées par un code correcteur d'erreurs global associant des données de redondance auxdites données source, ledit code correcteur global étant susceptible 30 d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une matrice identité et une matrice de passage desdites données source auxdites données de redondance inversible, caractérisé en ce que ledit dispositif de décodage comprend : deux étages de permutation de premier niveau, dont : 3022651 27 o un premier étage de permutation de premier niveau connecté, en entrée, d'une part à des variables d'entrée associées à un premier ensemble desdites données source et/ou de redondance, et d'autre part à des variables internes associées à des données d'entrée et des données de sortie d'un premier étage de décodage 5 de deuxième niveau, et o un deuxième étage de permutation de premier niveau connecté, en sortie, d'une part à des variables de sortie associées à un deuxième ensemble desdites données source et/ou de redondance, et d'autre part à des variables internes associées à des données d'entrée et des données de sortie d'un deuxième étage 10 de décodage de deuxième niveau, ledit premier ensemble et ledit deuxième ensemble formant ledit mot de code, et un étage de décodage de premier niveau connecté d'une part aux variables associées aux données de sortie dudit premier étage de permutation de premier niveau et d'autre part aux variables associées aux données d'entrée dudit deuxième étage de permutation de 15 premier niveau, chaque étage de décodage comprenant au moins deux modules de décodage de base mettant chacun en oeuvre un code de base susceptible d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une matrice identité et une matrice de passage de données d'entrée aux données de sortie inversible. 20 13. Procédé de décodage correcteur d'erreurs, apte à retrouver des données source à partir d'un mot de code reçu, lesdites données source ayant été codées par un code correcteur d'erreurs global associant des données de redondance auxdites données source, ledit code correcteur global étant susceptible d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une 25 matrice identité et une matrice de passage desdites données source auxdites données de redondance inversible, caractérisé en ce que ledit procédé de décodage met en oeuvre : deux étapes de permutation de premier niveau, dont : o une première étape de permutation de premier niveau (431) recevant, en entrée, 30 d'une part un premier ensemble desdites données source et/ou de redondance, et d'autre part des données d'entrée et des données de sortie obtenues à partir d'une première étape de décodage de deuxième niveau (421), et o une deuxième étape de permutation de premier niveau (432) délivrant, en sortie, d'une part un deuxième ensemble desdites données source et/ou de redondance, 3022651 28 et d'autre part des données d'entrée et des données de sortie obtenues à partir d'une deuxième étape de décodage de deuxième niveau (432), ledit premier ensemble et ledit deuxième ensemble formant ledit mot de code, et une étape de décodage de premier niveau (41) recevant les données de sortie de ladite 5 première étape de permutation de premier niveau et délivrant des données d'entrée à ladite deuxième étape de permutation de premier niveau, chaque étape de décodage mettant en oeuvre au moins deux modules de décodage de base mettant chacun en oeuvre un code de base susceptible d'être représenté par une matrice génératrice comprenant, sous sa forme systématique, une matrice identité et une matrice de 10 passage de données d'entrée aux données de sortie inversible. 14. Programme d'ordinateur comportant des instructions pour la mise en oeuvre d'un procédé de codage selon la revendication 11 ou d'un procédé de décodage selon la revendication 13 lorsque ledit programme est exécuté par un processeur. 15