• Aucun résultat trouvé

Nous presentons ici tres brievement la theorie du codage. Le lecteur est encourage a lire un des ouvrages suivants pour trouver toutes les bases mathematiques des codes correcteurs d'erreurs [54][55][56].

5.2.1 Transmission avec bruit

La theorie du codage a pour but d'assurer l'integrite des donnees lors du transfert d'information. Le medium physique a travers lequel les donnees sont transmises s'appelle le canal. Malheureusement, le bruit dans le canal altere l'information et la theorie du codage doit detecter et corriger de telles corruptions. Le diagramme suivant presente un systeme de transmission d'information. Sur la gure 5.2, l'information, composee d'une chaine de bits, peut ^etre corrompue le long du canal de transmission. Le decodeur localise alors le bit errone et retrouve sa valeur initiale.

L'ensemble de tous les mots valides sont les mots du code. La detection et la correction d'erreurs eventuelles n'est possible que si les mots du code ne couvrent pas tous les mots possibles sans quoi tous les mots recus en sortie de canal sont valides et sont donc consideres avoir ete transmis sans erreur. Les bits dans le canal ont une probabilite d'^etre correctement transmis plus grande que d'^etre alteres, si bien que le mot du code transmis le plus probable est celui qui di ere du mot recu du moins de positions possibles.

Theorie du codage

87 Encodeur Canal Bruit Information 0 1 Décodeur

Figure 5.2: Systeme de transmission d'information.

La distance d'un code C est le plus petit nombre de positions dont peuvent di erer deux mots quelconques du code. Les cercles suivants (ou spheres de decodage) representent tous les mots qui sont a une distance de d,1

2 au plus d'un mot du code. Alors toutes les erreurs de poids d,1 au plus peuvent ^etre detectees parceque le mot corrompu ne peut atteindre un autre mot du code, et toutes les erreurs de poids d,1 2

au plus peuvent ^etre corrigees puisqu'il existe un seul mot du code le plus proche pos-sible du mot recu. La gure 5.3 montre trois positions pospos-sibles d'un mot corrompu dont la valeur initiale est le centre de la sphere hachuree. Le mot corrompu peut ^etre a l'interieur de la sphere, donc il sera correctement corrige. Il peut ^etre contenu dans une autre sphere, donc il sera corrige en un mot qui n'etait pas le message initial. Ou bien il peut se trouver entre deux spheres. Dans ce cas, l'erreur sera detectee mais ne pourra ^etre corrigee.

000 000 111 111 00 11 000 111 000 111 000 000 111 111 0000000000000000000000000000000000000000000000000000000000000000 1111111111111111111111111111111111111111111111111111111111111111 (d-1)/2 d-1 erreur detectée erreur corrigée erreur mal corrigée

Figure 5.3: Distance d'un code.

Pour creer une distance minimale entre les mots du code, plus de bits sont utilises que ceux necessaires a coder l'information. Les bits additionnels sont appeles

redon-dance

. On essaie de concatener la redondance a l'information pour la rendre visible et directement disponible. La qualite d'un code se mesure donc par la distance qu'il procure par rapport au nombre de symboles de redondance qu'il necessite.

Theorie du codage

88

5.2.2 Codes correcteurs d'erreur

La structure algebrique des codes fournit un environnement dans lequel des codes et des algorithmes de codage peuvent ^etre ecacement construits. Lorsque le code C

est un sous-espace vectoriel, c'est-a-dire si v 2 C et w 2 C alors v +w 2 C, le code est dit

lineaire

. A la fois C et C

? (espace dual de C) peuvent ^etre decrit a l'aide de matrices de vecteurs d'une base, si bien qu'encodage et decodage sont e ectues par des produits vectoriels et matriciels. Lorsque C est un sous-espace cyclique, c'est-a-dire si (a1;a2;;an,1;an)2 C alors (an;a1;;an,2;an,1) 2 C, le code est dit

cy-clique

. L'avantage est de pouvoir representer l'information sous forme de polyn^omes et d'e ectuer encodage et decodage par des produits et des divisions polyn^omiales. La representation et les algorithmes de codage sont ainsi plus concis.

Les codes de Reed-Solomon utilisent les elements d'un corps de Galois pour trans-porter l'information au lieu de bits. Un corps de Galois est un groupe abelien pour l'addition et la multiplication (privee de l'element nul) avec une propriete distribu-tive. Les entiers modulo un nombre premiern(Zn) est un corps de Galois. Les classes de congruence des polyn^omes modulo un polyn^ome irreductible sur Zn est aussi un corps de Galois. Dans chaque corps il existe un element primitif dont les puissances successives forment le corps tout entier et pour chaque element non nul d'un corps de Galois ni GF(q) compose de q elements, q,1 = 1. Par exemple, le corps de Galois GF(23) modulo le polyn^ome f(x) = 1 +x+x3 est compose des elements 000, 001( 0), 010( 1), 100( 2), 011( 3), 110( 4), 111( 5), 101( 6), ecrit comme les coecients d'un polyn^ome b2x2+b1x+b0.

Soit un element d'un corps de Galois GF(pq) et une racine primitive nieme de l'unite.

g(x) = (x, 1+a)(x, 2+a)(x, ,1+a) (5.1) (avec   2 et a  0) genere un code lineaire cyclique appele code de Reed-Solomon sur GF(pq) de distance . Puisque le nombre de symboles de redondance est n,k =  ,1, ce code atteint la

limite

theorique

de Singleton

, c'est-a-dire qu'il n'existe pas de code corrigeant plus d'erreurs avec le m^eme nombre de symboles de redondance. Cette propriete en fait un code tres puissant: il peut corriger ,1 2

erreurs, ,1 e acements (erreur dont on connait la position). De plus, les codes de Reed-Solomon sont tres ecaces pour les corrections de rafales d'erreurs puisq'un code corrigeant t erreurs peut aussi corriger une rafale de q(t,1) + 1 bits.

Alors que les codes de Reed-Solomon corrigent tres bien les rafales d'erreurs, ils sont mis en echec lorsque les erreurs sont eparpillees. Par consequent, ils sont souvent entrelaces a l'aide d'un code convolutionnel. Un code convolutionnel sur un corps ni

F est obtenu en convoluant la sequence d'entree par un circuit constant, lineaire, causal et ni. La fonction de transfert T(D) de l'encodeur a des composants qui sont

Codes convolutionnels

89 des fonctions realisables, c'est-a-dire le rapport de polyn^omes h

 avecdeg(h)deg().

Tout encodeur est equivalent a un encodeur basique (sans retroaction dans l'encodeur ou dans son inverse) et minimal (contenant le nombre minimal de points memoires) [57]. Pour un code convolutionnel a une sequence d'entree et n sequences de sortie (1;n), une condition necessaire et susante pour que l'encodeur soit basique et min-imal est que le plus grand commun diviseur (pgcd) des polyn^omes generateurs h soit egal a 1. Le degre du plus grand polyn^ome est la contrainte du code.