Brevet FR2941829A1 — publié le 20100806

Procédé de codage de données à au moins deux étapes d'encodage à et au moins une étape de permutation, dispositif de codage, programme d'ordinateur et signal correspondants. 1. domaine de l'invention Le domaine de l'invention est celui des codes correcteurs d'erreurs, destinés à coder des données source en vu de leur transmission via des canaux de transmission susceptibles de détériorer le signal transmis. Le codage correcteur d'erreurs permet aux récepteurs de reconstruire le signal source, malgré les détériorations subies pendant la transmission notamment. Il existe de nombreux types de codes correcteurs d'erreurs. L'invention concerne plus précisément les codes connus sous le nom de � codes Cortex �. 2. les codes Cortex Les codes Cortex ont été inventés par J. C. Carlach et C. Vervoux, et ont fait notamment l'objet du brevet FR-2 782 425. Ils sont également décrits dans les documents "A new family of block turbo-codes" (J. Carlach and C. Vervoux, 13th International Symposium on Applied Algebra, Algebraic Algorithms and Error-Correcting Codes, Honolulu, USA, Novembre 1999) et "A new scheme for building good self-dual block codes" (J. Carlach, A. Otmani, and C. Vervoux, Information Theory, 2000. Proceedings. IEEE International Symposium, 25-30 Juin 2000, p. 476). Ces codes Cortex définissent une nouvelle famille de codes correcteurs d'erreurs. Une caractéristique de ces codes est qu'ils sont construits à partir de codes courts élémentaires Pb, ou codes de base. Le processus d'encodage, illustré en figure 1, repose sur la mise en oeuvre de plusieurs étages d'encodage 111 à 11 s, et d'étages de permutation, ou d'entrelacement, 121 à l2s_1 insérés entre deux étages d'encodage successifs. Ainsi, le processus consiste dans un premier temps à distribuer les k bits d'information xi d'un bloc de données source 13 en m sous-blocs. Ensuite, ces m sous-blocs sont encodés séparément en utilisant des codes de base 1211 à 121m. Le résultat yo,o à yk_1,o de ce premier encodage 121 est ré-encodé plusieurs fois à travers s étages d'encodage pour produire les k bits ri de redondance. Le code global obtenu est donc un code systématique de rendement �. Entre deux étages d'encodage successifs 11, et 1l;+i les données yi ,j, appelées variables cachées, sont entrelacées par un entrelaceur II,12i. Le document "A family of self-dual codes which behave in many respects like random linear codes of rate 1/2" (G. Olocco and J. Tillich, Proceedings of the IEEE International Symposium on Information Theory, 24-29 juin 2001, p. 15) montre que, si ces entrelaceurs sont définis aléatoirement, et si leur quantité (s-1) est relativement élevée, alors les codes Cortex se comportent comme des codes linéaires aléatoires. Comme expliqué par G. Battail, dans le document "A conceptual framework for understanding turbo codes," IEEE Journal on Selected Areas in Communications, vol. 16, no. 2, pp. 245-254, février 1998), les poids du code ont ainsi une distribution correspondante à la distribution des codes aléatoires optimaux. Il résulte de cette construction un code global ayant une grande distance minimale. La matrice P d'un étage d'encodage 1l, dans le cas où l'on utilise un seul code de base Pb' peut être représentée par l'équation (1) : -P 0 0 b 1x1 1x1 0 P 0 P= 1x1 b 1x1 (1) 0 0 1x1 1x1 La matrice génératrice G,, du code global ainsi construit est donnée par l'équation (2) : Gn = [IkIP11,Pfl2..11s_,P] (2) 3. inconvénients de l'art antérieur Les matrices P peuvent ne pas être identiques si les codes de base Pb changent selon les étages d'encodage. Ceci, avec des entrelaceurs différents, implique qu'il existe un très grand nombre de possibilités de réalisation d'un même code global. Aucune méthode de construction n'est décrite ni par les inventeurs de ces codes (voir les documents déjà mentionnés), ni dans la littérature s'y rapportant, et notamment : - G. Olocco and J. Tillich, "A family of self-dual codes which behave in many respects like random linear codes of rate 1/2," in Proceedings of the IEEE International Symposium on Information Theory, 24-29 juin 2001, p. 15; - A. Otmani, "Codes cortex et construction de codes auto-duaux optimaux", Thèse de doctorat, Université de Limoges, 2002 ; - E. Cadic, "Construction de turbo codes courts possédant de bonnes propriétés de distance minimale," Thèse de doctorat, Université de Limoges, 2003. Il faut par conséquent faire une recherche exhaustive, c'est à dire tester tous les entrelaceurs possibles. Ils sont au nombre de: Nn = (k!) s-~ (3) La tâche devient rapidement impossible quand k et s augmentent. Par exemple, si le nombre de bits d'information est k = 8 et que le nombre d'étages d'encodage est s = 3, il faut tester 6,5 x 1013 entrelaceurs. Ce nombre peut-être réduit si on impose comme première condition d'utiliser toujours le même entrelacement entre les étages d'encodage, ce qui réduit le nombre d' entrelaceurs à tester à: n = k (4) Ce nombre reste cependant conséquent. Ainsi, en reprenant l'exemple précédent, il reste 40320 combinaisons à tester. Une fois les Nn entrelaceurs définis, il faut s'assurer de la validité de la distance minimale du code construit. En effet, parmi les k! combinaisons possibles, certaines d'entres elles conduisent à des distances minimales trop faibles pour être utilisables. Pour déterminer la distance minimale, il faut générer tous les 2k mots de code (soit 256 dans l'exemple précédent). Et cela doit être effectué pour chacun des k! entrelaceurs. Lorsque k est élevé, on peut utiliser des méthodes d'estimation de distance minimale telle que celle décrite par Leon J. S. dans le document "A probabilistic algorithm for computing minimum weights of large error-correcting codes" (IEEE Transactions on Information Theory, vol. 35, n°5, pp. 1354-1359, Sept. 1988), mais les calculs restent longs et complexes. On ne dispose donc d'aucune solution simple pour construire des codes Cortex efficaces, c'est-à-dire présentant une grande distance minimale, et la seule méthode connue aujourd'hui est de tenter de les identifier, par essais successifs, parmi toutes les combinaisons possibles. 4. objectifs de l'invention L'invention a notamment pour objectif de pallier ces inconvénients de l'art antérieur. Plus précisément, un objectif de l'invention est de fournir une technique permettant d'obtenir, de façon simple et systématique, des codes Cortex garantissant une grande distance minimale. Un autre objectif de l'invention est de fournir une telle technique, qui soit relativement simple à mettre en oeuvre, sur le plan mathématique et/ou sur celui de l'implantation sur une machine. 5. résumé de l'invention Ces objectifs, ainsi que d'autres qui apparaîtront par la suite, sont atteints à l'aide d'un procédé de codage de données destinées à être transmises vers au moins un récepteur, comprenant, selon l'approche des codes Cortex, au moins deux étapes d'encodage identiques et au moins une étape de permutation. Chaque étape d'encodage associe à un bloc de données à coder un bloc de données codées, à l'aide d'au moins deux codes de base, traitant chacun un sous- ensemble dudit bloc de données à coder. Une étape de permutation est intercalée entre deux étapes d'encodage, une étape d'encodage courante et une étape d'encodage précédente, de façon que l'ordre des données d'un bloc de données à coder par ladite étape d'encodage courante soit différent de l'ordre de ces données codées par ladite étape d'encodage précédente. Selon l'invention, ladite étape de permutation met en oeuvre, pour un bloc de données, les sous-étapes suivantes : - rotation appliquée aux données dudit bloc de données ; et - inversion de l'ordre des données dudit bloc de données. Ainsi, les inventeurs ont identifié, parmi les Nn possibilités, une classe d'entrelaceurs garantissant une grande distance minimale, et aisée à définir et à mettre en oeuvre. Dans la pratique, ces opérations seront généralement effectuées simultanément, par exemple à l'aide d'une matrice d'entrelacement. Le code global peut également être mis en oeuvre sous la forme d'une unique matrice génératrice Gn, comme expliqué précédemment. La construction des codes Cortex est grandement facilitée par cette approche systématique de génération des entrelaceurs. Elle permet, en outre, l'obtention de matrices génératrices Gn symétriques. Selon une mise en oeuvre particulière de l'invention, ladite étape de permutation met en oeuvre un des entrelacements primaires suivants : Ill = (k - l,k -2,k - 3,...,l,k) 112 = (1,k,k -1, k - 2,...,2), ou un entrelacement secondaire obtenu par permutations par blocs successives des entrelacements primaires III ou II2, le bloc de données à permuter étant délivré dans un ordre numéroté de 1 à k. On comprend qu'un tel entrelacement est très simple à mettre en oeuvre. Notamment, lesdits entrelacements primaires peuvent mettre en oeuvre les matrices k*k suivantes : -1 0 0 ... 0 0 0- o : ••• 0 0 1 0 0... 0 1 0 0 0 0... 1 0 0 0 0 0 . 0 0 1 ... 0 0 0 010...000 modification de l'efficacité de l'entrelacement, que l'ordre des lignes de codes de base soit permuté, par rapport 0 0 0 ... 0 1 0-0 0 1 00 0 0.. 0 0 0 0 0 1 0 0 0 0 1 0 . . . 100...000 000...001 On peut également prévoir, sans à une première structure de référence mettant un oeuvre l'un desdits entrelacements primaires, et en ce que ladite étape de permutation applique un entrelacement secondaire obtenue à partir dudit entrelacement primaire, en conservant, par rapport à ladite structure de référence : - l'ordre des entrées de l'étape de codage précédent i ; - l'ordre des sorties de l'étape de codage suivant i+l ; - les connexions aux codes de base de l'étape de codage suivant i+l. Dans un mode de réalisation particulier de l'invention, au moins un desdits codes de base est un code de Hadamard (4, 2, 2). Ce code de base est en effet simple à mettre en oeuvre, et permet d'obtenir, en combinaison avec un entrelacement tel que décrit ci-dessus, de bons résultats de codage correcteur d'erreurs. Selon une approche particulière, le procédé de l'invention met en oeuvre une matrice génératrice Gn tel que : Gn =[ I k I PHPH.11P] où Ik est une matrice identité ; P une matrice représentant une desdites étapes d'encodage ; II une desdites matrice d'entrelacement primaire ou secondaires. Le procédé peut comprendre ensuite une étape de transmission vers le ou 20 lesdits récepteurs des données source alimentant la première étape de codage et de données de redondance délivrées par la dernière étape de codage. L'invention concerne également un dispositif de codage de données destinées à être transmises vers au moins un récepteur, mettant en oeuvre le procédé décrit ci-dessus. Un tel dispositif comprend au moins deux étages 25 d'encodage identiques et au moins un étage de permutation, chaque étage d'encodage associant à un bloc de données à coder un bloc de données codées, à l'aide d'au moins deux codeurs de base, traitant chacun un sous-ensemble dudit bloc de données à coder, et un étage de permutation étant intercalé entre deux étages d'encodage, un étage d'encodage courant et un étage d'encodage 30 précédent, de façon que l'ordre des données d'un bloc de données à coder par ledit étage d'encodage courant soit différent de l'ordre de ces données codées par ledit étage d'encodage précédent. Selon l'invention, ledit étage de permutation comprend : - des moyens de rotation des données d'un bloc de données ; et - des moyens d'inversion de l'ordre des données dudit bloc de données. Ces moyens de rotation et d'inversion peuvent être réalisés sous la forme des moyens d'entrelacement primaires suivants : rh = (k -1,k - 2,k - 3,...,l,k) II2 = (1,k,k -1,k - 2,...,2), ou de moyens d'entrelacement secondaires obtenus par permutations par blocs successives des entrelacements primaires Ill ou II2, le bloc de données à permuter étant délivré dans un ordre numéroté de 1 à k. Un tel dispositif peut également comprendre des moyens d'émission vers le ou lesdits récepteurs des données source alimentant le premier étage de codage et de données de redondance délivrées par le dernier étage de codage. L'invention concerne également un signal comprenant des blocs de données émis ou à émettre vers au moins un récepteur et représentatifs de blocs de données source, et codé selon le procédé de codage décrit ci-dessus. L'invention concerne encore un produit programme d'ordinateur téléchargeable depuis un réseau de communication et/ou enregistré sur un support lisible par ordinateur et/ou exécutable par un processeur, caractérisé en ce qu'il comprend des instructions de code de programme pour la mise en oeuvre du procédé de codage décrit ci-dessus. L'invention concerne également les supports de données portant un tel 25 programme d'ordinateur, ou un signal codé par le procédé de l'invention. 6. liste des figures 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 de l'invention, donné à titre de simple exemple illustratif et non limitatif, et des dessins annexés, parmi lesquels : la figure 1 illustre un exemple de code Cortex, connu en soi ; les figures 2A et 2B présentent deux exemples de mise en oeuvre d'entrelaceurs primaires Ili et II2 respectivement ; la figure 3 illustre la mise en oeuvre d'un entrelaceur secondaire obtenu par permutation des lignes d'encodage de l'entrelaceur de la figure 2A ; la figure 4 présente une courbe illustrant l'accroissement de la distance minimale en fonction du nombre d'étages d'encodage s utilisés pour un code de longueur 2k = 244. description d'un mode de réalisation de l'invention L'invention propose donc de nouveaux codes Cortex, construits de façon simple et efficace à partir d'étapes dans les procédés, ou d'étages dans les 15 dispositifs, d'entrelacement, qui peuvent être obtenus en combinant deux opérations, appliqués à un bloc de k données : - une rotation, c'est-à-dire un décalage des données de ce bloc i - i+l, et k - 1, qui peut le cas échéant être répétée plusieurs fois (ou qui peut assurer un décalage d'une valeur supérieure à 1) ; et 20 - une inversion de l'ordre des données, ce qui revient à ré-ordonner les données en les lisant par la fin : k - 1, k-1 - 2,... La rotation peut être effectuée avant ou après l'inversion. Avantageusement, ces deux opérations peuvent être effectuées simultanément, notamment à l'aide de matrices. 25 En particulier, l'invention peut être mise en oeuvre à partir d'un des deux entrelaceurs dits primaires, décrits ci-après. Des entrelaceurs dits secondaires peuvent être déduits aisément à partir de ces entrelaceurs primaires. 7.1 entrelaceurs primaires Les entrelaceurs primaires peuvent être décrits par les matrices k x k 30 suivantes : - - - - 7. (5) 0 0 0 ... 0 1 0-0 0 1 00 0 0.. 0 0 0 0 0 1 0 0 0 0 1 0 100...000 000...001 -1 0 0 ... 0 0 0-o : ••• 0 0 1 0 0... 0 1 0 0 0 0... 1 0 0 0 0 0 . 0 0 1 ... 0 0 0 010...000 (6) Pour II1, la lère sortie de l'étage d'encodage i est connectée à la (k - 1)ème entrée de l'étage d'encodage i+l; la 2ème sortie à la (k - 2)ème entrée et ainsi de suite. Pour II2, la l ère sortie de l'étage d'encodage i est connectée à la l ère entrée de l'étage d'encodage i+l; la 2ème sortie à la en' entrée, et ainsi de suite. Il est également possible de décrire II1 et n2 par les expressions suivantes qui sont parfois plus commodes à utiliser que les notations matricielles : 11=(k-1,k-2,k-3,...,1,k) (7) 112=(1 kk-1 k-2,...,2) (8) Les figures 2A et 2B illustrent deux exemples d'entrelacement, utilisant respectivement les entrelaceurs II1 et n2 pour k = 10. Les étages d'encodage 31; et 31;+1 sont, dans ces exemples, composés de deux codes de base différents Pb' de longueur 4 et Pb2 de longueur 2. 7.2 entrelaceurs secondaires A partir des deux entrelaceurs primaires décrits ci-dessus, il est possible de déterminer tous les entrelaceurs secondaires conduisant à la même distance 15 minimale. Comme illustré par la figure 3, qui illustre un entrelaceur secondaire obtenu par permutation des lignes d'encodage 311 à 313 (correspondant respectivement aux lignes 212, 213 et 211 des lignes d'encodage de la figure 2A), il suffit en effet de : 20 - permuter les m lignes d'encodage (m correspondant au m sous-blocs de bits d'information. m = 3 dans l'exemple de la figure 3), - conserver les connexions aux blocs de l'étage d'encodage i, - conserver l'ordre des entrées de l'étage d'encodage i, - conserver l'ordre des sorties de l'étage d'encodage i+l. 25 En d'autres termes, on peut obtenir un entrelaceur secondaire simplement en modifiant l'ordre des lignes d'encodage (c'est-à-dire l'ordre des codes de base de la même façon dans chacun des étages) sans modifier les connexions entre les sorties des codes de base de l'étage de codage i avec les entrées des codes de base de l'étage de codage i+l (l'ordre des yo,i_I à ym,i_1 et des yo,i+l à i+1 restant bien sûr inchangé). Chaque entrelaceur primaire II1 et I12 permet ainsi d'obtenir m entrelaceurs. Cependant, du fait de la cyclicité des entrelaceurs primaires la moitié des entrelaceurs secondaires obtenus avec II1 sont équivalents à la moitié des entrelaceurs secondaires obtenus avec I12. Tous ces entrelaceurs permettent d'obtenir la même distance minimale. En reprenant l'exemple précédent, avec k = 8 et s = 3, le code de base étant de longueur 2, on obtient 24 entrelaceurs qui permettent la même distance minimale de 5. 7.3 construction d'un code secondaire Un codage primaire (c'est-à-dire utilisant des entrelaceurs primaires, en l'occurrence n1) à n+1 étages de codage P et n étages d'entrelacement Ili intercalés peut s'écrire sous la forme d'une matrice génératrice G suivante : G=Pfl1P On peut alors construire le codage secondaire Cr', à l'aide des matrices de permutation par blocs 1lgv , (dimensionné par une matrice correspondante P constitutive de P, c'est-à-dire que la contrainte est celle d'une permutation par blocs correspondants aux codes élémentaires Pi), sous la forme suivante : G' _ (r1AvPIIAR_)Ih(HAvPIIAR_)Ili...IIj(HAVPHAR) _ (HAVH'ARP')HI([4V1 TARP')IIgiii(HAVH'1 P') _ (HAVH'AIS)P (II1IIAVH'AR)p`(Il1...(HlHA 1T,R)P' ___ (IAVIIr4R)Pr irl pu, 1I`i P' P' est une matrice de codage par sous-blocs comme p. La dernière permutation (IlAvfrAR) n'apporte rien en termes de codage, et peut donc être supprimée, pour donner le code secondaire : G" =P'. Comme déjà mentionné, ce code G" présente les mêmes performances que le code primaire G. Par ailleurs, on peut noter que la construction du code est complètement modulaire, et on peut aisément augmenter la distance minimale du code global en rajoutant des étages d'encodage aux s déjà présents (ajout d'étages d'encodage). 7.4 exemple de construction de codes en utilisant l'invention Le tableau I ci-après donne une liste, non-exhaustive, de codes de rendement 1/2 construits à partir du code de Hadamard (4,2,2) et obtenus selon l'approche décrite ci-dessus. TABLEAU 1 CODES DE RENDEMENT 1/2 CONSTRUITS SELON L'INVENTION Nombre de bits Etages Distance minimale Distance d'information k d' encodage s maximale obtenue minimale (min) maximale théorique 4 3 4 4 8 3 5 5 12 5 6 8 24 10 9 12 48 20 15 16 64 19 16 22 96 40 26 28 102 41 28 28 122 62 34 35 138 61 36 ? 150 61 36 ? La distance minimale maximale a été obtenue soit de manière exhaustive soit estimée (selon la méthode proposée par Léon dans le document déjà mentionné). A titre de comparaison, pour k = 96 un turbo code convolutif de rendement 1/2 tel que celui retenu pour la norme DVB-RCS présente une distance minimale de 13, tandis qu'un code Cortex selon l'invention présente une distance minimale de 26. La modularité de la construction, c'est-à-dire la possibilité d'augmenter de la distance minimale pour une longueur de code fixe en rajoutant des étages d'encodage, est illustrée sur la figure 4 pour 122 bits d'information (soit 244 bits au total). La courbe représente l'augmentation de la distance minimale en fonction du nombre d'étages d'encodage s. REVENDICATIONS1. Procédé de codage de données destinées à être transmises vers au moins un récepteur, comprenant au moins deux étapes d'encodage identiques et au moins une étape de permutation, chaque étape d'encodage associant à un bloc de données à coder un bloc de données codées, à l'aide d'au moins deux codes de base, traitant chacun un sous-ensemble dudit bloc de données à coder, et une étape de permutation étant intercalée entre deux étapes d'encodage, une étape d'encodage courante et une étape d'encodage précédente, de façon que l'ordre des données d'un bloc de données à coder par ladite étape d'encodage courante soit différent de l'ordre de ces données codées par ladite étape d'encodage précédente, caractérisé en ce que ladite étape de permutation met en oeuvre, pour un bloc de données, les sous-étapes suivantes : - rotation appliquée aux données dudit bloc de données ; et - inversion de l'ordre des données dudit bloc de données. 2. Procédé de codage selon la revendication 1, caractérisé en ce que ladite étape de permutation met en oeuvre un des entrelacements primaires suivants : Ill = (k - l,k -2,k - 3,...,l,k) 112 = (1,k,k -1, k - 2,...,2), ou un entrelacement secondaire obtenu par permutations par blocs successives des entrelacements primaires II1 ou II2, le bloc de données à permuter étant délivré dans un ordre numéroté de 1 à k. 3. Procédé de codage selon la revendication 2, caractérisé en ce que lesdits entrelacements primaires mettent en oeuvre les matrices k*k suivantes : 000..010 0 0 1 0 0 00...000 0 0 1... 0 0 0 010100...000 0 0 0 ... 0 0 1 4. Procédé de codage selon l'une quelconque -1 0 0 ... 0 0 0-o : ••. 0 0 1 0 0... 0 1 0 0 0 0... 1 0 0 0 0 0 . 0 0 1 ... 0 0 0 010...000 des revendications 2 et 3, caractérisé en ce que l'ordre des lignes de codes de base est permuté, par rapport àune première structure de référence mettant un oeuvre l'un desdits entrelacements primaires, et en ce que ladite étape de permutation applique un entrelacement secondaire obtenue à partir dudit entrelacement primaire, en conservant, par rapport à ladite structure de référence : - l'ordre des entrées de l'étape de codage précédent i ; - l'ordre des sorties de l'étape de codage suivant i+l ; - les connexions aux codes de base de l'étape de codage suivant i+l. 5. Procédé de codage selon l'une quelconque des revendications 1 à 4, caractérisé en ce qu'au moins un desdits codes de base est un code de Hadamard (4, 2, 2). 6. Procédé de codage selon l'une quelconque des revendications 3 à 5, caractérisé en ce qu'il met en oeuvre une matrice génératrice Gn tel que : G,, = [ I k I Pl lPH..fP où Ik est une matrice identité ; P une matrice représentant une desdites étapes d'encodage ; II une desdites matrice d'entrelacement primaire ou secondaires. 7. Procédé de codage selon l'une quelconque des revendications 1 à 6, caractérisé en ce qu'il comprend une étape de transmission vers le ou lesdits récepteurs des données source alimentant la première étape de codage et de données de redondance délivrées par la dernière étape de codage. 8. Dispositif de codage de données destinées à être transmises vers au moins un récepteur, comprenant au moins deux étages d'encodage identiques et au moins un étage de permutation, chaque étage d'encodage associant à un bloc de données à coder un bloc de données codées, à l'aide d'au moins deux codeurs de base, traitant chacun un sous-ensemble dudit bloc de données à coder, et un étage de permutation étant intercalé entre deux étages d'encodage, un étage d'encodage courant et un étage d'encodage précédent, de façon que l'ordre des données d'un bloc de données à coder par ledit étage d'encodage courant soit différent de l'ordre de ces données codées par ledit étage d'encodage précédent,caractérisé en ce que ledit étage de permutation comprend : - des moyens de rotation des données d'un bloc de données ; et - des moyens d'inversion de l'ordre des données dudit bloc de données. 9. Dispositif de codage selon la revendication 8, caractérisé en ce que ledit étage de permutation met en oeuvre un des entrelacements primaires suivants : Ill = (k -1,k - 2,k - 3,...,l,k) 112 = (1,k,k -1, k - 2,...,2), ou un entrelacement secondaire obtenu par permutations par blocs successives des entrelacements primaires II1 ou IIz, le bloc de données à permuter étant délivré dans un ordre numéroté de 1 à k. 10. Dispositif de codage selon l'une quelconque des revendications 8 et 9, caractérisé en ce qu'il comprend des moyens d'émission vers le ou lesdits récepteurs des données source alimentant le premier étage de codage et de données de redondance délivrées par le dernier étage de codage. 11. Signal codé comprenant des blocs de données émis ou à émettre vers au moins un récepteur et représentatifs de blocs de données source, codé selon le procédé de codage selon l'une quelconque des revendications 1 à 7. 12. Produit programme d'ordinateur téléchargeable depuis un réseau de communication et/ou enregistré sur un support lisible par ordinateur et/ou exécutable par un processeur, caractérisé en ce qu'il comprend des instructions de code de programme pour la mise en oeuvre du procédé de codage selon l'une au moins des revendications 1 à 7, lorsqu'il est exécuté sur un microprocesseur.