Vous êtes sur la page 1sur 29

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
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
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
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 · x 0 + 0 · x 1 + 1 · x 2 = 1 + x 2
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) = x n−k + gn−k −1 · x n−k −1 + gn−k −2 · x n−k −2 + . . . + g1 · x + 1

4 / 29
Codage

Codage d’un code cyclique

le mot de code C s’écrit sous forme systématique :


C = [b0 b1 . . . bn−k −1 m0 m1 . . . mk −1 ]
C est décrit polynomialement par : C(x) =
b0 +b1 ·x +bn−k −1 ·x n−k −1 +m0 ·x n−k +m1 ·x n−k +1 +. . .+mk −1 ·x n−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 x n−k · m(x) = Am (x) · g(x) + b(x) avec
b(x) = b0 + b1 · x + . . . + bn−k −1 · x n−k −1
c’est comme si b(x) était le reste d’une division euclidienne du
polynôme x n−k · m(x) par g(x).

5 / 29
Codage

Algorithme de codage

1 multiplier m(x) par x n−k


2 diviser par g(x). il reste b(x)
3 ajouter b(x) à x n−k · m(x) pour trouver C(x)

6 / 29
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
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 (x n + 1) = 0

Parmi tous les polynômes h(x) possibles, on choisit celui qui a le


degré minimal :
g(x) · h(x) = x n + 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 x n + 1 en polynôme
primitifs : x n + 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
Contrôle de Parité

Exemple

pour un code ( 7 ,4 ) :
x 7 + 1 = (x + 1)(x 3 + x 2 + 1)(x 3 + x + 1)
Nous avons ici deux possibilités de choix de g(x) et donc de h(x) :
1 g(x) = (x 3 +x 2 +1) =⇒ h(x) = (x +1)(x 3 +x +1) = (x 4 +x 3 +x 2 +1)
2 g(x) = (x 3 +x +1) =⇒ h(x) = (x +1)(x 3 +x 2 +1) = (x 4 +x 2 +x +1)

9 / 29
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(x n + 1) = E(x) · h(x)mod(x n + 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
Contrôle de Parité

exemple

En poursuivant avec l’exemple déjà utilisé code (7,4) et :


g(x) = 1 + x + x 3
h(x) = 1 + x + x 2 + x 4
et m = [1011] =⇒ m(x) = 1 + x 2 + x 3 =⇒ C(x) =
1 + x 3 + x 5 + x 6 =⇒ C = [1001011]
vérification :
C(x) · h(x) = (1 + x 3 + x 5 + x 6 ) · (1 + x + x 2 + x 4 ) =
1 + x3 + x5 + x6
+x + x 4 + x 6 + x 7
+x 2 + x 5 + x 7 + x 8
+x + x + x 9 + x 10 = 0 mod (x 7 + 1)
4 7

11 / 29
Contrôle de Parité

Supposons une erreur de transmission

E = [0001000] =⇒ Y = [1000011] =⇒ Y (x) = 1 + x 5 + x 6


calcul du syndrome :

Y (x) · h(x) = (1 + x 5 + x 6 ).(1 + x + x 2 + x 4 ) = 1 + x + x 2 + x 4


+x 5 + x 6 + x 7 + x 9
+x 6 + x 7 + x 8 + x 10 = 1 + x 3 + x 4 + x 5 = S(x)
= E(x) · h(x) = x 3 · (1 + x + x 2 + x 4 )

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
Contrôle de Parité

Remarque à propos du syndrome

Le syndrome est décrit par :

S(x) = Y (x) · h(x)mod(x n + 1) = E(x) · h(x)mod(x n + 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é S 0 (x) :

S 0 (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 S 0 (x).

13 / 29
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
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(x n + 1).
3 construction d’une table d’erreur/syndrome par
S(x) = E(x) · h(x)mod(x n + 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
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
Décodage

Exemple avec algorithme de décodage 2


1 Reception de Y (x) = 1 + x 5 + x 6
2 Calcul du syndrome : S 0 (x) = Y (x) mod g(x) = x + 1

Position Erreur Syndrome


0 1 1
1 x x
2 x2 x2
3 table d’erreur :
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, S 0 (x) = x + 1 correspond à E ∗ (x) = x 3
5 Le mot de code correct est C ∗ (x) = Y (x) + E ∗ (x) = 1 + x 3 + x 5 + x 6 . D’où
C ∗ = [1001011]
6 le message est donc les k=4 derniers bits m∗ = 1011
17 / 29
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
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(x) →
 
 ← x · g(x) → 
 ← x 2 · g(x) → 
 

G = 
3

 ← x · g(x) → 

 ... 
...
comme exemple avec g(x) = 1 + x + x 3 :
 
1 1 0 1 0 0 0
0 1 1 0 1 0 0 
G∗ = 


 0 0 1 1 0 1 0 
0 0 0 1 1 0 1

19 / 29
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
 
1 1 0 1 0 0 0
 0 1 1 0 1 0 0 
G=  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 + x 3 + x 5 + x 6 ou C = [1001011] du message m=[1011]
ou m(x) = 1 + x 2 + x 3

20 / 29
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
Codes cycliques usuels

Code de Golay

c’est un code (n,k) = (23,12)

x 23 + 1 = (1 + x)(1 + x + x 5 + x 6 + x 7 + x 9 + x 11 )(1 + x + x 4 + x 5 + x 6 + x 10 + x 11 )

le polynôme générateur est :

g(x) = 1 + x + x 5 + x 6 + x 7 + x 9 + x 11

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
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) = x 5 + x 2 + 1
utilisé dans les CD, DVD, disque dur, les codes à bare

23 / 29
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
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
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
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
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
Erreurs en Rafales

Demonstration de l’effet de linterleaving sur un burst d’erreurs

29 / 29

Vous aimerez peut-être aussi