1. Théorie de l’information
Chap : Codes Cycliques
Rhouma Rhouma
https://sites.google.com/site/rhoouma
École Supérieure d’Économie Électronique
Avril 2015
1 / 29
2. Plan
1 Codage
2 Contrôle de Parité
3 Décodage
4 Matrice génératrice d’un code cyclique
5 Codes cycliques usuels
6 Erreurs en Rafales
2 / 29
3. Codage
Plan
1 Codage
2 Contrôle de Parité
3 Décodage
4 Matrice génératrice d’un code cyclique
5 Codes cycliques usuels
6 Erreurs en Rafales
3 / 29
4. Codage
Propriétés
Les codes cycliques sont des codes linaires : la somme de deux
mots de code est un mot de code.
toute rotation circulaire d’un mot de code est un mot de code
le message binaire m est noté d’une façon polynomiale m(x). Ex :
m= (101) est décrit par m(x) = 1 · x0 + 0 · x1 + 1 · x2 = 1 + x2
de même le mot de code C de longueur k est décrit par C(x) de
degré n-1
Polynôme générateur g(x) de degré n − k factorise tous les mots
de code et est décrit :
g(x) = xn−k
+ gn−k−1 · xn−k−1
+ gn−k−2 · xn−k−2
+ . . . + g1 · x + 1
4 / 29
5. Codage
Codage d’un code cyclique
le mot de code C s’écrit sous forme systématique :
C = [b0b1 . . . bn−k−1m0m1 . . . mk−1]
C est décrit polynomialement par : C(x) =
b0+b1·x+bn−k−1·xn−k−1+m0·xn−k +m1·xn−k+1+. . .+mk−1·xn−1
le polynôme générateur g(x) factorise tous les mots de codes
donc : C(x) = Am(x) · g(x)
On peut écrire xn−k · m(x) = Am(x) · g(x) + b(x) avec
b(x) = b0 + b1 · x + . . . + bn−k−1 · xn−k−1
c’est comme si b(x) était le reste d’une division euclidienne du
polynôme xn−k · m(x) par g(x).
5 / 29
6. Codage
Algorithme de codage
1 multiplier m(x) par xn−k
2 diviser par g(x). il reste b(x)
3 ajouter b(x) à xn−k · m(x) pour trouver C(x)
6 / 29
7. Contrôle de Parité
Plan
1 Codage
2 Contrôle de Parité
3 Décodage
4 Matrice génératrice d’un code cyclique
5 Codes cycliques usuels
6 Erreurs en Rafales
7 / 29
8. Contrôle de Parité
Contrôle de Parité
On définit un polynôme de parité h(x) qui vérifie :
g(x) · h(x) mod (xn
+ 1) = 0
Parmi tous les polynômes h(x) possibles, on choisit celui qui a le
degré minimal :
g(x) · h(x) = xn
+ 1
Puisque le degré de g(x) est n-k, donc le degré de h(x) = k
Choix des polynômes g(x) et h(x) :
1 factorisation : pour un code(n,k), on factorise xn
+ 1 en polynôme
primitifs : xn
+ 1 = P1(x)P2(x) . . .
2 choix de g(x) : on forme le polynôme g(x) de degré n-k
3 le reste des produits des polynômes est h(x) de degré k
8 / 29
9. Contrôle de Parité
Exemple
pour un code ( 7 ,4 ) :
x7 + 1 = (x + 1)(x3 + x2 + 1)(x3 + x + 1)
Nous avons ici deux possibilités de choix de g(x) et donc de h(x) :
1 g(x) = (x3
+x2
+1) =⇒ h(x) = (x+1)(x3
+x+1) = (x4
+x3
+x2
+1)
2 g(x) = (x3
+x +1) =⇒ h(x) = (x +1)(x3
+x2
+1) = (x4
+x2
+x +1)
9 / 29
10. Contrôle de Parité
Syndrome
En cas d’erreur de transmission, nous recevons un mot de code
Y(x) qui ne correspond à aucun message.
Y(x) = C(x) + E(x) où E(x) est le polynôme de l’erreur.
Syndrome :
S(x) = Y(x) · h(x)mod(xn
+ 1) = E(x) · h(x)mod(xn
+ 1)
Une table des erreurs permet de remonter au polynôme d’erreur
de transmission et la correction des erreurs se fait toujours au
sens du maximum de vraisemblance : C∗(x) = Y(x) + E∗(x).
10 / 29
11. Contrôle de Parité
exemple
En poursuivant avec l’exemple déjà utilisé code (7,4) et :
g(x) = 1 + x + x3
h(x) = 1 + x + x2 + x4
et m = [1011] =⇒ m(x) = 1 + x2 + x3 =⇒ C(x) =
1 + x3 + x5 + x6 =⇒ C = [1001011]
vérification :
C(x) · h(x) = (1 + x3 + x5 + x6) · (1 + x + x2 + x4) =
1 + x3 + x5 + x6
+x + x4 + x6 + x7
+x2 + x5 + x7 + x8
+x4 + x7 + x9 + x10 = 0 mod (x7 + 1)
11 / 29
12. Contrôle de Parité
Supposons une erreur de transmission
E = [0001000] =⇒ Y = [1000011] =⇒ Y(x) = 1 + x5 + x6
calcul du syndrome :
Y(x) · h(x) = (1 + x5 + x6).(1 + x + x2 + x4) = 1 + x + x2 + x4
+x5 + x6 + x7 + x9
+x6 + x7 + x8 + x10 = 1 + x3 + x4 + x5 = S(x)
= E(x) · h(x) = x3 · (1 + x + x2 + x4)
on voit bien que le syndrome dépend seulement de l’erreur et non
du message ou mot de code : S(x) = E(x) · h(x) = Y(x) · h(x)
on peut dessiner une table d’erreur/syndrome pour accélérer la
décision du récepteur.
donc même Alg de décodage que les codes de bloc linéaire,
seulement le calcul est polynomial
12 / 29
13. Contrôle de Parité
Remarque à propos du syndrome
Le syndrome est décrit par :
S(x) = Y(x) · h(x)mod(xn
+ 1) = E(x) · h(x)mod(xn
+ 1)
on peut utiliser un autre syndrome équivalent si on divise toute
l’égalité par le polynôme h(x) :
le nouveau syndrome est noté S0(x) :
S0
(x) = Y(x) mod g(x) = E(x) mod g(x)
on peut travailler avec l’une des deux définitions
on définit donc deux algorithmes de décodage : l’un avec S(x) et
l’autre avec S0(x).
13 / 29
14. Décodage
Plan
1 Codage
2 Contrôle de Parité
3 Décodage
4 Matrice génératrice d’un code cyclique
5 Codes cycliques usuels
6 Erreurs en Rafales
14 / 29
15. Décodage
Algorithme de décodage 1
1 Reception d’un mot de code Y(x).
2 calcul du syndrome associe S(x) = Y(x) · h(x)mod(xn + 1).
3 construction d’une table d’erreur/syndrome par
S(x) = E(x) · h(x)mod(xn + 1)
4 avec la table d’erreurs et le syndrome calculée à l’étape 2), calcul
de l’erreur la plus vraisemblable E∗(x).
5 calcul du mot de code le plus vraisemblable :
C∗(x) = Y(x) + E∗(x) et donc sous forme binaire C∗
6 Extraction du message X∗ de C∗.
15 / 29
16. Décodage
Algorithme de décodage 2
1 Reception d’un mot de code Y(x).
2 calcul du syndrome associe S(x) = Y(x) mod g(x).
3 construction d’une table d’erreur/syndrome par
S(x) = E(x) mod g(x)
4 avec la table d’erreurs et le syndrome calculée à l’étape 2), calcul
de l’erreur la plus vraisemblable E∗(x).
5 calcul du mot de code le plus vraisemblable :
C∗(x) = Y(x) + E∗(x) et donc sous forme binaire C∗
6 Extraction du message X∗ de C∗.
16 / 29
17. Décodage
Exemple avec algorithme de décodage 2
1 Reception de Y(x) = 1 + x5 + x6
2 Calcul du syndrome : S0(x) = Y(x) mod g(x) = x + 1
3 table d’erreur :
Position Erreur Syndrome
0 1 1
1 x x
2 x2 x2
3 x3 x + 1
4 x4 x2 + x
5 x5 x2 + x + 1
6 x6 x2 + 1
4 D’après la table d’erreur, S0(x) = x + 1 correspond à E∗(x) = x3
5 Le mot de code correct est C∗(x) = Y(x) + E∗(x) = 1 + x3 + x5 + x6. D’où
C∗ = [1001011]
6 le message est donc les k=4 derniers bits m∗ = 1011
17 / 29
18. Matrice génératrice d’un code cyclique
Plan
1 Codage
2 Contrôle de Parité
3 Décodage
4 Matrice génératrice d’un code cyclique
5 Codes cycliques usuels
6 Erreurs en Rafales
18 / 29
19. Matrice génératrice d’un code cyclique
Matrice génératrice d’un code cyclique
Puisque le décalage circulaire d’un mot de code est un mot de
code, on peut générer une matrice génératrice G∗ d’un polynôme
générateur g(x) :
G∗
=
← g(x) →
← x · g(x) →
← x2 · g(x) →
← x3 · g(x) →
. . .
. . .
comme exemple avec g(x) = 1 + x + x3 :
G∗
=
1 1 0 1 0 0 0
0 1 1 0 1 0 0
0 0 1 1 0 1 0
0 0 0 1 1 0 1
19 / 29
20. Matrice génératrice d’un code cyclique
pour faire apparaître un code systématique, faire une combinaison
linéaire des lignes de G∗ :
Ligne 1 ←− Ligne 1
Ligne 2 ←− Ligne 2
Ligne 3 ←− Ligne 3 + Ligne 1
Ligne 4 ←− Ligne 4 + Ligne 1 + Ligne 2
Ce qui va donner
G =
1 1 0 1 0 0 0
0 1 1 0 1 0 0
1 1 1 0 0 1 0
1 0 1 0 0 0 1
on peut verifier que g(x) et G génèrent le même mot de code
C(x) = 1 + x3 + x5 + x6 ou C = [1001011] du message m=[1011]
ou m(x) = 1 + x2 + x3
20 / 29
21. Codes cycliques usuels
Plan
1 Codage
2 Contrôle de Parité
3 Décodage
4 Matrice génératrice d’un code cyclique
5 Codes cycliques usuels
6 Erreurs en Rafales
21 / 29
22. Codes cycliques usuels
Code de Golay
c’est un code (n,k) = (23,12)
x23
+ 1 = (1 + x)(1 + x + x5
+ x6
+ x7
+ x9
+ x11
)(1 + x + x4
+ x5
+ x6
+ x10
+ x11
)
le polynôme générateur est :
g(x) = 1 + x + x5
+ x6
+ x7
+ x9
+ x11
sa distance minimale dmin = 7
il peut donc détecter et corriger les erreurs triples !
le code de Golay est unique dans son groupe et ne peut être généralisé
22 / 29
23. Codes cycliques usuels
Codes BCH (Bose-Chaudrui-Hocquenqhem)
code avec n = 2m − 1 basé sur le calcule dans le corps de Galois
k est choisi de façon à que k ≥ n − m · t avec t est le nombre des
erreurs détéctables et corrigeables
la distance minimale sera toujours dmin ≥ 2t + 1
Ces codes permettent des longueurs de code très variées et
offrent de nombreuses possibilités d’efficacité de code k/n.
. Les coefficients des polynômes générateurs sont tabulés dans
de nombreux ouvrages, la longueur des polynômes générateur
devenant très grande, ces tables fournissent les jeux de
coefficients en utilisant un format octal par ordre décroissant
Exemple : code (31,26 ), t = 1 , coefficients 45 en octal soit 100
101 donc g(x) = x5 + x2 + 1
utilisé dans les CD, DVD, disque dur, les codes à bare
23 / 29
24. Codes cycliques usuels
Codes RS (Reed-Solomon)
Codes non binaire
n=k+2t et n = 2m − 1. avec m : nombre de bits par symbole et k :
nb de symbole d’information. 2t=nombre de symboles de controle
Reed solomon peut corriger (n-k)/2 erreurs
utilisé dans le stockage de données en CD avec RS(32, 28) et en
DVD avec RS(182,172)
utilisé en transmission par satellite en DVB avec RS( 204,188)
utilisé en ADSL avec RS(204,188)
24 / 29
25. Erreurs en Rafales
Plan
1 Codage
2 Contrôle de Parité
3 Décodage
4 Matrice génératrice d’un code cyclique
5 Codes cycliques usuels
6 Erreurs en Rafales
25 / 29
26. Erreurs en Rafales
Erreurs en Rafales
Les codes de bloc linéaires et cycliques sont efficaces pour
corriger des erreurs simples ou doubles dans un mot de code
et ils peuvent corriger des erreurs multiples dans un mot de code
Mais si pendant la transmission (ou dans un CD erroné ) il peut y
arriver des erreurs en rafale (burst errors), tout le mot de code est
erroné ou effacé : canal sans fils avec évanouissement, cassure
ou brûlure dans un CD. Les corrections des bits simples ou
doubles ne peuvent pas trop aider
26 / 29
27. Erreurs en Rafales
Solution : entrelacement
ne pas transmettre les données dans leur ordre normal
dans la fig à gauche, les bits sont transmis séquentiellement. et
donc des erreurs en rafales (B-its) vont domager tout le mot de
code transmis en continu (B Bits erronés)
dans la fig à droite, le fait d’entrelacer les bits des mots de codes
va séparer les erreurs en rafales en des erreurs simples (1 seule
erreur dans B mot de codes differents chacun) !
27 / 29
28. Erreurs en Rafales
Interleaving : Entrelacement
Autre utilisation de l’entrelacement entre le codage canal et la modulation
le canal mobile présente deux caractéristiques :
présence de Rafale d’erreurs (burst)
le codeur de convolution ne peut gérer les burst d’erreurs (due au
fading multi-trajets, ou disque défectueux ds le cas de CDROM)
entrelacer ou brasser l’ordre des bits encodés après le codeur canal pour rompre les burst
d’erreurs durant la transmission.
28 / 29