FR 3037457 A1 20161216 FR 1555302 A 20150611 1 Procédés et dispositifs de codage et de décodage basés sur un ensemble de treillis construits avec des sections auto-complémentaires à 4 états et programme d'ordinateur correspondants. Domaine de l'invention Le domaine de l'invention est celui du codage et du décodage de symboles, mettant en oeuvre un code correcteur d'erreurs linéaire. L'invention se rapporte plus particulièrement aux techniques de codage de symboles source, délivrant des paquets de symboles codés ou un flux de symboles codés comprenant les symboles source et des symboles de redondance, destiné(s) à être transmis sur un canal de transmission (par exemple aérien ou filaire de type hertzien, optique ou électrique), ou stocké(s) dans un support matériel. L'invention se rapporte également aux techniques de décodage correspondantes, permettant notamment de corriger les erreurs de transmission inhérentes au canal de transmission. 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 télécommunications, comme les futures normes pour des applications de télévision, de diffusion radio, de voix, de vidéo et de données (DVB, LTE, 4G, 5G, etc), ou entre véhicules, l'Internet des objets ou machines communicants « IOT : Internet Of Things », ... ; la compression et la décompression de source d'informations par exemple de type vidéo ; - 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 ; la reconnaissance de formes : images, sons, etc ; la robotique commandée par une intelligence artificielle à base de réseaux de neurone. Art antérieur De nombreuses techniques de codage permettent la correction d'erreurs de transmission au décodage en générant des symboles de redondance à partir de symboles source. Ainsi, un code correcteur d'erreur est classiquement défini par : 3037457 2 une longueur n, correspondant à la séquence en sortie du codeur (ou mot de code de longueur n formé de k symboles source et de (n - k) symboles de redondance), un nombre de bits ou de symboles d'information utiles k, correspondant aux symboles en entrée du codeur, encore appelées symboles source, et 5 une distance minimale &in. La distance minimale d'un code dmin correspond au nombre minimum de symboles différents (ou distance) entre deux mots de code. Elle permet de déterminer le nombre maximum d'erreurs que le code peut détecter et éventuellement corriger dans un mot de code. Ainsi, plus la distance minimale di, n est grande, meilleur est le code correcteur d'erreurs, 10 puisqu'il permet de détecter (dmin - 1) symboles erronés et d'en corriger [(dnain - 1)/2] (où l'opérateur L.] désigne la partie entière). La première méthode de décodage rigoureusement optimale connue consiste à trouver de façon exhaustive parmi tous les mots c, appartenant au code C, celui qui est le plus proche du mot reçu. Cette méthode donne en sortie des valeurs discrètes de symboles après décision, 0 ou 1 si 15 l'alphabet est binaire, elle est dite à décision "dure" (hard). Cette méthode de décodage exhaustive est de complexité exponentielle en 2k, où k est la dimension du code, et donc très coûteuse et difficile à réaliser. Elle ne permet pas de décoder actuellement en temps réel les codes de dimensions supérieures à environ k>24. Calderbank-Forney-Vardyll] ont décrit la construction de treillis élémentaires. Les treillis 20 élémentaires sont construits à l'aide des lignes soit d'une matrice G génératrice, soit d'une matrice H de contrôle de parité d'un code en bloc. Un code en bloc C(n,k) est défini par une matrice G génératrice de dimensions k x n composée de k lignes et de n colonnes telle que pour tout bloc d'information ou séquence de k échantillons x = (x0,x1,...,xk_1), le mot de code c = (c0,c1,...,cri_1) est obtenu par codage de x. 25 C'est-à-dire que c est le produit vecteur-matrice de x et de G: c = x. G (mod 2), modulo 2 dans l'exemple binaire. La matrice G est telle que : g0,0 g0,1 - - - 90,n-1 g1,0 g1,1 --- Yin-1 G= 9k-1- g k-1,0g k-1,1---g k-1,n-1- Un treillis élémentaire Ti construit à partir de la matrice G génératrice du code représente la ième ligne de cette matrice. Chaque treillis élémentaire est constitué par une suite de sections «section 0» et «section 1» selon les valeurs des bits d'une ligne ou générateur gi de la matrice G. De manière 30 classique les treillis Ti sont des treillis élémentaires à deux états construits à partir des sections de type « section 0 » et « section 1 » illustrées par les figures la et lb. go - 91 3037457 3 Les treillis élémentaires peuvent tout aussi bien être construits à partir de la matrice H de contrôle de parité du code. Une matrice H de contrôle de parité d'un code en bloc C(n,k) est une matrice de taille (n - k) x n. H est définie telle que pour tout mot de code c de C, elle vérifie : cHtr = 0 (mod 2), où « tr » est l'opérateur transposition matriciel. La matrice H est telle que : H= hn_k_i_ hn-k-1,Ohn-k-1,1"'hn-k-1,n-1- 5 A chaque ligne de H est associé un treillis élémentaire à deux états Ti. Dans le cas d'une matrice H de contrôle du code, la construction d'un ensemble de treillis élémentaires est décrit à partir de l'exemple du code de Hamming (n= 8, k=4, dmin = 4) dont une matrice de contrôle H4x8 est donnée par : /1 0 0 0 0 1 1 1 \ 0 1 0 0 1 0 1 1 0 0 1 0 1 1 0 1 0 0 1 1 1 1 Oi Un des treillis élémentaire Ti représente la ième ligne de la matrice de contrôle H du code. 10 Chaque treillis élémentaire est constitué par une suite des sections «section 0» et «section 1» selon les valeurs de bits d'une ligne ou générateur de la matrice H. Les figures la et lb représentent respectivement les sections associées aux deux valeurs de bit (bit= 0 et bit =1) d'une ligne de la matrice de contrôle H du code. Pour l'exemple du code de Hamming (8,4,4) précédent, les deux treillis élémentaires associés aux deux premières lignes de sa matrice de contrôle sont représentés 15 respectivement par les figures 2a et 2b. La figure 2a représente le treillis élémentaire To correspondant au générateur 10000111. La figure 2b représente le treillis élémentaire T1 correspondant au générateur 01001011. Parmi les méthodes de décodage des codes correcteurs linéaires utilisant des informations douces, il est connu l'algorithme de Viterbi [2]. Cet algorithme est utilisé pour le décodage en 20 temps réel des codes convolutifs et plus généralement pour le décodage de tous les codes décrits par un treillis. L'algorithme de Viterbi consiste à chercher le plus court chemin dans un arbre élaboré à partir d'un ensemble de treillis du codeur. Ce chemin correspond donc à la séquence la plus probable c'est-à-dire qui est à la distance minimale de la séquence reçue. Cette séquence reçue qui correspond au mot reçu à décoder, est par exemple une séquence de n données binaires (i.e. 25 décision dure sur les échantillons détectés). La séquence reçue peut être différente de la séquence codée issue du codeur compte tenu d'erreurs introduites lors de la transmission entre le codeur utilisé à l'émission et le décodeur utilisé à la réception. L'arbre utilisé au décodage dans le cas d'un codeur convolutif a une dimension « verticale » égale au nombre d'états possibles du codeur, soit 2', m étant la longueur de contrainte ho h0,0 h0,1 hO,n-1 h1 h1,0 h1,1 h1,n-1 H4x8 = 3037457 4 du code, c'est-à-dire le nombre d'éléments mémoires utilisés lors du codage, et une dimension « horizontale » appelée profondeur. A chaque nouvelle entrée d'un groupe de données binaires de la séquence reçue, l'algorithme construit selon une phase dite avant (« forward ») une nouvelle section de l'arbre à partir de chaque noeud d'arrivée de la section précédente pris comme noeud de 5 départ et jusqu'aux noeuds d'arrivée de la nouvelle section. Pour chaque noeud courant pris parmi les noeuds de départ de la nouvelle section de l'arbre, un algorithme de décodage à maximum de vraisemblance tel que celui de Viterbi examine toutes les branches possibles du treillis et pour chaque branche il détermine une métrique de transition qui est la distance entre l'étiquette de la branche et le groupe de données binaires reçu par le décodeur. A chaque noeud d'arrivée, s'il y a 10 plusieurs branches qui y arrivent, l'algorithme ne garde que la branche qui donne la distance minimum ; l'algorithme ne garde systématiquement qu'un seul chemin parmi les chemins possibles atteignant chaque noeud d'arrivée. L'algorithme attribue au noeud d'arrivée, à l'extrémité du chemin constitué d'une succession de branches, une métrique cumulée égale à la somme de la métrique cumulée précédente et de la métrique de transition de la branche retenue. Quand la 15 séquence de n données binaires reçue a été parcourue entièrement, l'algorithme ne retient que le noeud d'arrivée auquel est attribuée la métrique cumulée la plus faible. En remontant l'arbre à partir de ce noeud au cours d'une phase de remontée dite «des survivants», l'algorithme détermine le meilleur chemin en effectuant une lecture à rebours des décisions prises. Le principe de base de l'algorithme de Viterbi est en effet de ne considérer en chaque noeud de l'arbre que le chemin le 20 plus probable de façon à permettre de remonter aisément le treillis et donc de déterminer a posteriori une estimation de la valeur reçue plusieurs instants de réception auparavant. Toutes les décisions intermédiaires de décodage concernant un même symbole sont combinées selon la règle de décision majoritaire comme le souligne [3] éventuellement adaptée si l'on dispose de valeurs de décodage intermédiaires quantifiées sur suffisamment de niveaux en 25 faisant la somme des valeurs de décodage intermédiaires concernant le même symbole, comme dans le décodage des codes de Reed-Müller. L'algorithme de Viterbi utilise en entrée des informations dures (i.e des symboles) ou des informations souples (i.e. les valeurs quantifiées sur plusieurs niveaux, i.e. entre -N et +N, ... du signal reçu) mais ne délivre en sortie que des informations dures (i.e. des symboles) : on dit que 30 c'est un algorithme de décodage "Soft-In-Hard-Out". Dans le cas d'un codeur convolutif binaire, le treillis est formé de noeuds reliés par des branches. Les noeuds représentent les différents états possibles du codeur ; il y a 2' états si le vecteur d'état, c'est-à-dire la longueur de la mémoire du codeur, est de dimension m. Les branches représentent les différentes transitions possibles d'un noeud à un autre (c'est-à-dire d'un état du 35 codeur à l'état suivant du codeur) lors de l'arrivée d'un bit d'entrée. De chaque noeud, il part deux branches associées respectivement à l'arrivée d'un « 0 » ou d'un « 1 » en entrée du codeur. L'état 3037457 5 du codeur à l'instant t est représenté par le vecteur d'état (1,4-, 1)). A chaque arrivée d'un élément binaire xt en entrée du codeur, le codeur génère en sortie un mot de code (ci, ce', ,cr 1)), l'étiquette affectée à la branche se compose de l'élément binaire d'entrée xt et du mot de code (c2, 1)). Juste après le codeur passe dans l'état suivant représenté par le 5 vecteur d'état (.1+1, sî+1, st(+mi 1)). Sur un treillis du codeur, seuls sont indiqués les états pour l'état initial et l'état final, les valeurs des entrées xt et des sorties codées sont notées en étiquettes sur les branches transitant entre deux états. Ainsi, chaque mot de code est représenté par un chemin différent dans le treillis. La composition du mot de code est la concaténation des étiquettes des branches qui constituent le 10 chemin trouvé, c'est-à-dire le plus court chemin Une variante de cet algorithme de Viterbi a été publiée en 1974, elle est dite "BCJR" [4] (acronyme du nom de ses inventeurs: Bahl, Cocke, Jelinek et Raviv). Cette variante utilise en entrée des informations douces (probabilités a priori) mais délivre en sortie des informations douces ou probabilités a posteriori pour chacun des bits : on dit que c'est un algorithme de 15 décodage "Soft-In-Soft-Out" ou "SISO". Dans ce cas, il y a deux phases de parcours du treillis : une phase « forward » (respectivement une phase « backward ») qui accumulent les probabilités des états dans le sens des indices croissants t=0,1,..., n-1 des sections (respectivement dans le sens des indices décroissants t=n-1,n-2'..., 1,0) et une phase finale qui fusionne les probabilités d'état des phases forward et backward avec la probabilité a priori de chaque bit pour calculer la 20 probabilité a posteriori de chaque bit. Les algorithmes de Viterbi et BCJR présentent une complexité trop grande due à la trop grande complexité de l'ensemble des treillis et notamment de leurs trop grands nombres d'états et ce, même pour des codes ayant de modestes capacités de correction d'erreurs. Par exemple, un code (n=96,k=48,dmin=16) aurait un treillis tail-biting minimal de 212=4096 états. Dans 25 l'algorithme BCJR les probabilités d'état « forward » sont notées at(m) et calculées telles que ci- dessous, et les probabilités a priori de branche notées yt (m, m') pour une transition de l'état m vers l'état m' dans la section d'indice t : at(m) = Erni at_i(mpyt(m, m'). De même les probabilités d'état « backward » sont notées flt(m) et calculées telles que : flt(m) = mi fit+1 (TrnYt(m, m'). Finalement, les probabilités a posteriori des bits sont calculées telles que : Prapp (hitt = 1)) = I(m,m'ibit=v)at (m)Yt (nt, (rn') 30 Parmi les techniques de décodage connues à décision douce permettant la correction d'erreurs de transmission, on distingue celle de Claude Berrou et Alain Glavieux de 1991 qui est une méthode de décodage itératif à décision douce des "Turbo codes" [5] dite SOYA et celle associée au décodage des codes LDPC. La base du décodage à décision douce des Turbo codes et des codes LDPC est l'algorithme à propagation de probabilités ou "BP" (Belief Propagation) [6] 3037457 6 inventé par Robert Gallager en 1961. Cet algorithme BP propage des probabilités le long des branches d'un graphe du code et les agrège sur les noeuds de ce même graphe. Ce graphe associé au code est appelé graphe de Tanner du code, il représente toutes les contraintes algébriques que doivent satisfaire les symboles d'un mot de code. 5 Les turbo-codes et les codes LDPC (en anglais « Low-Density Parity Check ») présentent de très bonnes performances en termes de correction d'erreurs pour des codes de grande longueur n, avec n de l'ordre de quelques milliers de bits au moins (n > 1000). En revanche, les turbo-codes et les codes LDPC présentent des performances plus faibles pour des codes de plus petite longueur n (n 24. 5 Les figures 28a et 29b représentent schématiquement les structures simplifiées d'un codeur COD et d'un décodeur DEC selon un mode de réalisation de l'invention. Le codeur comprend une mémoire 10 comprenant une mémoire tampon, une unité de traitement 11, équipée par exemple d'un microprocesseur 1.1.P, et pilotée par le programme d'ordinateur 12, mettant en oeuvre le procédé de codage selon un mode de réalisation de 10 l'invention. A l'initialisation, les instructions de code du programme d'ordinateur 12 sont par exemple chargées dans une mémoire RAM avant d'être exécutées par le processeur de l'unité de traitement 11. L'unité de traitement 11 reçoit en entrée des données source x et délivre des données codées c comprenant les données source et de données de redondance. Le microprocesseur de l'unité de 15 traitement 11 met en oeuvre les étapes du procédé de codage décrit précédemment, selon les instructions du programme d'ordinateur 12, pour coder les données source. Pour cela, le codeur comprend, outre la mémoire tampon 10, un module de codage pour déterminer les données de redondance avec un rendement k/n en multipliant un vecteur de symboles source x appartenant à un alphabet binaire avec une matrice de contrôle de taille (n-k,n) telle qu'une des lignes de la 20 matrice est le complément à deux de la somme des autres lignes de la matrice. Ce module est piloté par le microprocesseur de l'unité de traitement 11. Le décodeur DEC comprend une mémoire 20 comprenant une mémoire tampon, une unité de traitement 21, équipée par exemple d'un microprocesseur IJP, et pilotée par le programme d'ordinateur 22, mettant en oeuvre le procédé de décodage selon un mode de réalisation de 25 l'invention. A l'initialisation, les instructions de code du programme d'ordinateur 22 sont par exemple chargées dans une mémoire RAM avant d'être exécutées par le processeur de l'unité de traitement 21. L'unité de traitement 21 reçoit en entrée des données codées y comprenant des données source et des données de redondance, et délivre une estimation .î des données source. Le microprocesseur 30 de l'unité de traitement 21 met en oeuvre les étapes du procédé de décodage décrit précédemment, selon les instructions du programme d'ordinateur 22, pour décoder les données codées. Pour cela, le décodeur comprend, outre la mémoire tampon 20, un décodeur à maximum de vraisemblance avec décisions intermédiaires pour déterminer une liste de mots de code décodés à partir de la séquence y reçue, un détecteur d'erreur sur les bits des mots décodés et un organe de prise de 35 décision sur la valeur des bits en utilisant une règle de l'unanimité entre les mots de code décodés de la liste. Le décodeur à maximum de vraisemblance, le détecteur d'erreur et l'organe de prise de décision sont pilotés par le microprocesseur de l'unité de traitement 21. 3037457 23 Annexe A Dikruple d'un algorithme de décodage selon l'invention en pseudo langage de programmation ** Do es d'el.' 'ecteur valeurs recuÉ ur j=0,1'. **** *** et description des treillis pour i=0,1, .,(nTreillis-1). **** (sm..ms*st******,,,,*********************e******ser. ***********************************++ (**** le je de Decc ._:es de Viterbi sur chacun des treillis T(i) ****) Pour i = aTreil] -1) , increment de 1 faire ListeCandidats(i) a-g Min( Ily-cII mc le code sur T FinBouclePour; Fin de la b( les treil (**** Debut de --uction -s treillis T2(i) elagues intermediair( Pour = 0 a (I. ...ncreme--, de 1 faire Si .isteCai 0,j) - ListeCandidats -eCandidat: Alo. **** Ul sur la position j y2 (j Pour ,ATrei11is-1) par inrre,:ert 1 faire T2(i,j)=ElagageSectionTreilli: ListeCandidats FinBouclePour; Sinon (**- Ion-unanimite r la positior y2(j, n(* EFFACEME. DE LA POSITIL.. OU VARL... ) ; FinBouclePour; Fin de la construction des treillis T2(i) elagues inter iai] **** 2eme serie de flcodacyps terbi sur chacun des trei_ ,ur i = 0 a (nTreil] -1) in ment de 1 faire ListeCandidats2(i: Ily2-c11 avec c mot de sur T2, nBouclePour; Fin de la boucL iur treillis T2, #*****##,-###*#####*****4,4,*****************#,t Do.. de sortie: liste de mots candidats LisceCandida Table 1 Table 2 5 10 3037457 24 Références : [1] A.R. Calderbank and G.D. Jr. Forney and A. Vardy, "Minimal Tailbiting Trellises: the Golay Code and More", IEEE Transactions on Information Theory, Vol. IT.45, no.5, pp.1435-1455, July 1999. 5 [2] G.D. Forney, "The Viterbi Algorithm", Proceedings of the IEEE, Vol.61, no.3,pp.268- 278,March 1973. [3] J.L. Massey, "Advances in Threshold Decoding", in Advances In Communications Systems, Vol.3, pp.91-115, Academie Press Inc., (New-York), 1968. [4] L.R. Bahl and J. Cocke and F. Jelinek and R. Raviv, "Optimal Decoding of Linear Codes for 10 Minimizing Symbol Error Rate", IEEE Transactions on Information Theory, Vol. IT-20, pp.284- 287, March 1974. [5] C. Berrou, A. Glavieux, and P. Thitimajshima, "Near Shannon Limit Error-Correcting Coding and Decoding: Turbo-Codes", in Proceedings of the IEEE Int. Conf. on Communications (ICC'93), Geneva, Switzerland, pp.1064-1070, May 1993. 15 [6] R.G. Gallager, "Low-Density Parity-Check Codes", IEEE Transactions on Information Theory, Vol.8, pp. 21-28, January 1962. [7] « Minimum-distance bounds by graph analysis » de R.M. Tanner, « IEEE Transactions on information theory », vol. 47, NO.2, février 2001. [8] T. KlOve and S. Yari, "Proper Self-Complementary Codes", ISITA'2010, Taichung (Taiwan), 20 pp.118-122, 17-20 October 2010. [9] P. Adde, D. Gomez Toro and C. Jégo, "Design of an Efficient Maximum Likelihood Soft Decoder for Systematic Short Block Codes", IEEE Transactions on Signal Processing, Vol.60, no.7, July 2012, pp.3914-3919. [10] Linear Algebra/Row Reduction and Echelon Forms Source: 25 http://e n. wikibooks.org/wiki/Linear%20Algebra/Row%20Reduction%20and%20Echelon%20Form s?oldid=2762122, extrait du 18/02/2015 REVENDICATIONS1. Procédé (1) de décodage d'une séquence y d'échantillons reçus par un décodeur correspondant, après transmission, à une séquence c codée de symboles ci, j = - - (n -1) , obtenue en appliquant au codage un code correcteur d'erreurs linéaires à des symboles source (x) appartenant à un alphabet binaire, caractérisé en ce qu'il comprend : - une procédure (2) de décodage à maximum de vraisemblance avec décisions intermédiaires à partir de la séquence y reçue pour déterminer une liste de mots de code décodés et - une procédure (3) de détection d'erreur sur les bits des mots décodés et de prise de décision sur la valeur des bits en utilisant une règle de l'unanimité entre les mots de code décodés de la liste. 2. Procédé (1) de décodage selon la revendication 1 comprenant en outre : - une modification des échantillons de la séquence y correspondant aux bits pour lesquels la règle de l'unanimité entre les mots de code décodés de la liste n'est pas vérifiée et au moins une itération : - d'une procédure (2) de décodage à maximum de vraisemblance avec décisions intermédiaires à partir de la séquence y modifiée pour déterminer une nouvelle liste de mots de code décodés prise ultérieurement comme liste de mots de code décodés et d'une procédure (3) de détection d'erreur sur les bits des mots de code décodés et de prise de décision sur la valeur des bits en utilisant une règle de l'unanimité entre les mots de code décodés de la liste. 3. Procédé (1) de décodage selon la revendication 2 dans lequel, après un nombre donné d'itérations, le procédé de décodage conduit à un constat d'échec s'il reste encore au moins un bit pour lequel la règle de l'unanimité n'est pas respectée. 4. Procédé (1) de décodage selon la revendication 1 comprenant en outre : - une modification des échantillons de la séquence y correspondant aux bits pour lesquels la règle de l'unanimité entre les mots de code décodés de la liste n'est pas vérifiée, le mot de code décodé correspondant à la séquence y reçue modifiée. 5. Procédé (1) de décodage selon l'une des revendications 1 à 4 dans lequel la procédure (2) de décodage à maximum de vraisemblance avec décisions intermédiaires utilise en entrée un ensemble de Ntreillis treillis construit chacun comme une succession de sections de treillis prises parmi deux sections de treillis auto complémentaires à quatre états, Ntreillis étant un entier naturel. 6. Décodeur (DEC) d'une séquence d'échantillons reçus y correspondant, après transmission, à une séquence c codée de symboles 9, j =0,1,- - (n -1) , obtenue en appliquant au codage un code correcteur d'erreurs linéaires à des symboles source (x) appartenant à un alphabet 3037457 26 binaire, caractérisé en ce que le décodeur comprend : - un décodeur à maximum de vraisemblance avec décisions intermédiaires à partir de la séquence y reçue pour déterminer une liste de mots de code décodés et - un détecteur d'erreur sur les bits des mots décodés et un organe de prise de décision sur 5 la valeur des bits en utilisant une règle de l'unanimité entre les mots de code décodés de la liste. 7. Décodeur selon la revendication précédente dans lequel le décodeur, le détecteur et l'organe de décision sont de type itératif, le décodeur comprenant en outre un dispositif modifiant les échantillons de la séquence y correspondant aux bits pour lesquels la règle de l'unanimité 10 entre les mots de code décodés de la liste n'est pas vérifiée. 8. Procédé de codage en appliquant à des symboles source (x) appartenant à un alphabet binaire un code correcteur d'erreurs linéaires dont la matrice de contrôle de taille (n-k,n) est telle qu'une des lignes de la matrice est le complément à deux de la somme des autres lignes de la matrice pour obtenir une séquence c codée de symboles ci, j=0,1,---,(n-l)avec un 15 rendement k/n. 9. Codeur (COD) correcteur d'erreurs linéaires comportant un moyen de calcul adapté pour déterminer une séquence c codée de symboles ci, j = 0,1, - - (n-1) avec un rendement (k)/n en multipliant un vecteur de symboles source (x) appartenant à un alphabet binaire avec une matrice de contrôle de taille (n-k,n) telle qu'une des lignes de la matrice est le 20 complément à deux de la somme des autres lignes de la matrice. 10. Utilisation d'un code correcteur d'erreurs linéaires de rendement k/n dont la matrice de contrôle de taille (n-k,n) est telle qu'une des lignes de la matrice est le complément à deux de la somme des autres lignes de la matrice lors du codage de symboles.