Vous êtes sur la page 1sur 11

Université de Caen - UFR de Sciences Transmission de l'information

CHAPITRE ➅

CODAGE DE CANAL

CODES CYCLIQUES

G.BINET MdC 61 2007 -2008


Université de Caen - UFR de Sciences Transmission de l'information

CHAPITRE ➅ .........................................................................................................................................1

CODAGE DE CANAL CODES CYCLIQUES..................................................................................1

I. DEFINITIONS ET PROPRIETES DES CODES CYCLIQUES ...................................................1


I.1 PROPRIETES FONDAMENTALES :........................................................................................................1
I.2 POLYNOME GENERATEUR : ...............................................................................................................1
Forme polynomiale d'un code : ........................................................................................................1
Rôle de l'opérateur D :......................................................................................................................1
Polynôme générateur :......................................................................................................................2
II CODAGE ET DECODAGE D'UN CODE CYCLIQUE.................................................................3
II.1 CODAGE : ........................................................................................................................................3
II.2 CONTROLE DE PARITE :....................................................................................................................4
Polynôme de contrôle de parité :......................................................................................................4
Choix des polynômes g(D) et h(D) : .................................................................................................4
Détection des erreurs de transmission : ...........................................................................................4
III. LIEN ENTRE CODES DE HAMMING ET CODES CYCLIQUES ..........................................6
III.1 THEOREME : ...................................................................................................................................6
III.2 CALCUL DE LA MATRICE G A PARTIR DU POLYNOME G(D) :...........................................................6
III.3 CALCUL DE LA MATRICE H A PARTIR DU POLYNOME H(D) :...........................................................7
IV CODES CYCLIQUES USUELS ......................................................................................................8
IV.1 CODES DE HAMMING CYCLIQUES ...................................................................................................8
IV.2 CODE DE GOLAY :..........................................................................................................................8
IV.3 CODES DE LONGUEUR MAXIMALE : ................................................................................................8
IV.4 CODES BCH ( BOSE-CHAUDRUI-HOCQUENQHEM) :......................................................................9
IV.5 CODES REED-SOLOMON ( CODES RS ) :.........................................................................................9

G.BINET MdC 61 2007 -2008


Transmission de l'information Chapitre 6 1

Les codes cycliques constituent un sous-groupe des codes linéaires qui a pris une très grande
importance dans les applications du fait de la simplicité d'implantation des algorithmes de codage et
de décodage.

I. DEFINITIONS ET PROPRIETES DES CODES CYCLIQUES

I.1 Propriétés fondamentales :


Elles sont au nombre de deux :

1. Ce sont des codes linéaires : la somme de deux mots de code est un mot de code

αi Ci + αj Cj = Ck ∀ αi, αj.

2. Ils sont cycliques : Toute permutation circulaire des bits d'un mot de code est
aussi un mot de code.

[ c0 c1 c2 ….cp-1. cp cp+1 ….. cn-2 cn-1 ] est un mot de code ⇒ [ cp cp+1 …..cn-p c0
c1 ….. cp-1 ] est aussi un mot de code ∀ p.

I.2 Polynôme générateur :

Forme polynomiale d'un code :


En utilisant un opérateur D: opérateur décalage (ou opérateur de position), un mot de code Cm
se voit associer un polynôme Cm(D) tel que :
n-1 n-2 n-3 n-k 1
Cm(D) = cn-1 D + cn-2 D + cn-3 D + ….. ck D + ….. c1 D + c0

Rôle de l'opérateur D :
n n-1 n-2 n-p+1 2
D.Cm(D) = cn-1 D + cn-2 D + cn-3 D + ….. ck D + ….. c1 D + c0 D

En rappelant que, en binaire, ck + ck = 0 ∀ k


n n-1 n-2 n-p+1 2
⇒ D.Cm(D) = cn-1 D + cn-2 D + cn-3 D + ….. ck D + ….. c1 D + c0 D + cn-1 + cn-1
n n-1 n-2 n-p+1 2
= cn-1 D + cn-1 + cn-2 D + cn-3 D + ….. ck D + ….. c1 D + c0 D + cn-1
n
= cn-1 ( D + 1 ) + Cm1 (D)

où Cm1 (D) est un mot de code obtenu par décalage des bits de Cm(D) de 1 position

En itérant le procédé nous montrons que :


2 n
D .Cm(D) = ( D cn-1 + cn-2 ) ( D + 1 ) + Cm2 (D), Cm2(D) correspondant à un décalage de deux
positions.
p p-1 p-2 n
D .Cm(D) = ( D cn-1 + D cn-2 +…..+ cn-p ) ( D + 1 ) + Cmp (D)
n
= Qp-1(D) ( D + 1 ) + Cmp (D), Cmp(D) correspondant à un décalage de p positions et
Qp-1(D) est un polynôme de degré p-1.

G.BINET MdC 61 2007 –2008 T_info_c_cycliques


Transmission de l'information Chapitre 6 2

p n
Cmp(D) est ainsi le reste de la division de D .Cm(D) par ( D + 1 ). Cette remarque très
importante nous donne le théorème suivant :
p n
D .Cm(D) mod ( D + 1 ) = Cmp (D)

Un cas particulier de ce théorème :

Dα =D (α∈Z)
n n n .n+p p
D .Cm(D) mod ( D + 1 ) = Cm (D) ⇒ D =1 ⇒

Polynôme générateur :
Quel est le problème ?

Le message est constitué de k bits, nous pouvons lui associer un polynôme m(D) de degré
(k-1). Au mot de code correspondant il est associé un polynôme de degré (n –1) : Cm(D). Nos
recherchons des codes tels que :

Cm(D) = Am(D).g(D)

Am(D) est un polynôme de degré (k-1) lié à m(D) par une relation que nous ne recherchons
pas et g(D) est un polynôme de degré (n-k) qui lui, est caractéristique du codage et par là même
indépendant du message.

Le polynôme générateur de code est un polynôme de degré (n-k) qui factorise tous les
mots de codes d'un même code.
n-k n-k-1 n-k-2
g(D) = D + gn-k-1 D + gn-k-2 D + ….... g1 D + 1

Dans ce polynôme gn-k = 1 et g0 = 1 conditions nécessaires pour que g(D) soit un polynôme de
degré (n-k)

( gn-k ≠ 0 est une condition évidente. Pour g0, nous aurions g(D) = D.h(D) et h(D) serait un
polynôme générateur de degré (n-k-1) ce qui impossible ⇒ g0 = 1 )

Unicité de g(D) :

Cette unicité est montrée par l'absurde. Supposons l'existence d'un autre polynôme
(1)
générateur g (D) :

Cm(D) = Am(D).g(D)
(1) (1) (1) (1)
Cm (D) = Am(D).g (D) ⇒ Cm(D) + Cm (D) = Am(D).( g(D) + g (D) )
(1)
D'après la propriété de linéarité : Cm(D) + Cm (D) serait aussi un mot de code et donc g(D) +
(1) (2)
g (D) serait aussi un polynôme générateur g (D).
(2) n-k n-k-1 n-k (1) n-k-1 (1)
g (D) = ( D + gn-k-1 D + …....+ g1 D + 1 ) + ( D + gn-k-1 D + …....+ g1 D+1)
n-k n-k (1) n-k-1 (1)
=(D +D ) + ( gn-k-1 + gn-k-1 )D + …....+ ( g1 + g1 ) D + (1 + 1 ).
(1) n-k-1 (1)
= ( gn-k-1 + gn-k-1 )D + …....+ ( g1 + g1 )D

G.BINET MdC 61 2007 –2008 T_info_c_cycliques


Transmission de l'information Chapitre 6 3

(2)
⇒ g (D) serait un polynôme générateur de degré (n-k-2) qui ne peut générer un
mot de code de degré n ⇒ g(D) est unique.

II CODAGE ET DECODAGE D'UN CODE CYCLIQUE

II.1 Codage :
Le mot de code a la forme :

Cm = [ b0 b1 …..bn-k-1 m0 m1 .....mk-1 ]

Le polynôme associé est :


(n-k-1) (n-k) (n-k+1) (n-1)
Cm(D) = b0 + b1D ….. + bn-k-1 D + m0 D + m1 D + .... + mk-1 D

Soit en posant :
(n-k-1) 1 (k-1)
b(D) = b0 + b1D ….. + bn-k-1 D et m(D) = m0 + m1 D + .... + mk-1 D
(n-k)
Cm(D) = b(D) + D m(D) = Am(D).g(D)

En se rappelant que, en binaire, b(D) + b(D) = 0 nous obtenons la relation fondamentale du


codage :

(n-k)
D m(D) = Am(D).g(D) + b(D)
(n-k)
⇒ b(D) est le reste de la division de D m(D) par le polynôme générateur g(D).

Le calcul du mot de code est donc de la forme :


n-k
1. multiplier m(D) par D

2. diviser par g(D) → reste b(D)


n-k
3. ajouter b(D) à D .m(D)

Remarque : le polynôme Am(D) n'est pas utile pour exprimer Cm.

exemple: un code ( 7 ,4 ) = ( n , k )
3 n-k 3
g(D) = 1+ D + D (son obtention sera vue plus loin) et D =D
2 3 n-k 3 5 6
message = [ 1 0 1 1 ] ⇒ m(D) = 1 + D + D ⇒ D m(D) = D + D + D

6 5 3 3
D +D +D D +D+1 g(D)
5 4 3 2
D +D D +D +D+1
4 3 2
D +D +D
3
D +D

b(D) 1 Am(D)

G.BINET MdC 61 2007 –2008 T_info_c_cycliques


Transmission de l'information Chapitre 6 4

(n-k) 3 5 6
Cm(D) = b(D) + D m(D) = 1 + D + D + D ⇒ Cm = [ 1 0 0 1 0 1 1 ]

II.2 Contrôle de parité :

Polynôme de contrôle de parité :


Par équivalence avec le cas général, nous définissons un polynôme orthogonal à g(D) soit :
n
g(D).h(D) mod( D + 1 ) = 0

Parmi tous les polynômes h(D) possibles, nous choisissons celui de degré minimal d'où :
n
g(D).h(D) = D + 1

Avec comme conséquence : deg [ g(D) ] = n-k ⇒ deg [ h(D) ] = k

Pour tout mot de code : Cm(D).h(D) = Am(D).g(D).h(D) = 0


n
Cm(D).h(D) mod( D + 1 ) = 0

Choix des polynômes g(D) et h(D) :


La relation d'orthogonalité nous permet d'avoir une méthode de choix des polynômes :
n
1. Factorisation: Soit un code ( n , k ), nous pouvons factoriser au "maximum" D + 1 :
n
décomposition en polynômes dits polynômes primitifs. D + 1 = P1(D).P2(D)…….

2. Choix de g(D) : A partir de certains de ces polynômes primitifs, nous formons un polynôme de
degré (n-k) qui devient g(D).

3. Choix de h(D) : h(D) est constitué par le produit des polynômes primitifs non utilisés dans
g(D), c'est le complémentaire de g(D).

Remarque: la solution n'a aucune raison d'être unique mais deux polynômes générateurs
différents ne génèrent pas le même code.

Exemple: pour un code ( 7 ,4 ).


7 3 2 3
D +1=(D+1)(D +D +1)(D +D+1)

Nous avons ici deux possibilités de choix de g(D) et donc de h(D) :


3 2 3 4 3 2
1. g(D) = ( D + D + 1 ) ⇒ h(D) = ( D + 1 ) ( D + D + 1 ) = ( D + D + D + 1 )
3 3 2 4 2
2. g(D) = ( D + D + 1 ) ⇒ h(D) = ( D + 1 ) ( D + D + 1 ) = ( D + D + D + 1 ).

Détection des erreurs de transmission :


En cas d'erreur de transmission, nous recevons un mot de code Ym qui ne correspond à
aucun message.

Ym(D) = Cm(D) + Em(D) où Em(D) est le polynôme de l'erreur.

n n
Ym(D).h(D) mod( D + 1 ) = Em(D).h(D) mod( D + 1 ) = Sm(D)

G.BINET MdC 61 2007 –2008 T_info_c_cycliques


Transmission de l'information Chapitre 6 5

Ce qui définit un polynôme du syndrôme de l'erreur.

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 : Cm (D) = Ym(D) +
*
Em (D).

Exemple:

En poursuivant avec l'exemple déjà utilisé pour illustrer g(D).


3
g(D) = 1+ D + D
2 4
h(D) = 1 + D + D + D
2 3 3 5 6
message = [ 1 0 1 1 ] ⇒ m(D) = 1 + D + D ⇒ Cm(D) = 1 + D + D + D ⇒ Cm =
[1001011]

Vérification : Cm(D).h(D) :
3 5 6 2 4 3 5 6
( 1 + D + D + D ).( 1 + D + D + D ) = 1 + D + D + D
4 6 7
+D+D +D +D
2 5 7 8
+D +D +D +D

≡0
4 7 9 10
+D +D +D +D

En utilisant en binaire:
i i
D +D =0

D
n+k k
+D =D (D +1)
k n
⇒ D
n+k
+D =0
k
mod( D + 1 )
n

Supposons une erreur de transmission


5 6
Em = [ 0 0 0 1 0 0 0 ] ⇒ Ym = [ 1 0 0 0 0 1 1 ] ⇒ Ym(D) = 1 + D + D
5 6 2 4 2 4
Ym(D).h(D) = ( 1 + D + D ).( 1 + D + D + D ) = 1+D+D +D
5 6 7 9
+D +D +D +D
6 7 8 10 3 4 5
+D +D +D +D =1+D +D +D

= Em(D).h(D) = Sm(D)

G.BINET MdC 61 2007 –2008 T_info_c_cycliques


Transmission de l'information Chapitre 6 6

III. LIEN ENTRE CODES DE HAMMING ET CODES CYCLIQUES

III.1 Théorème :
Un code cyclique ayant comme polynôme générateur un polynôme primitif est un code
de Hamming de distance minimale égale à trois.

Nous n'apporterons pas ici la preuve de ce théorème. Il peut être illustré sur l'exemple déjà
utilisé qui entre dans ce cadre et doit ainsi générer un code de Hamming ( 7 ,4 ).

III.2 Calcul de la matrice G à partir du polynôme g(D) :


Un mot de code de bloc est généré par : Cm = Xm.G . Les lignes de la matrice G sont des mots
de codes particuliers ( pour un code ( 7, 4 ) , la première ligne correspond à Xm = [ 1 0 0 0 ] et ainsi de
suite ).

En revenant à la notation polynomiale, g(D) est un mot de code. Il en est de même pour
2
D.g(D), D .g(D),……
*
Nous pouvons ainsi générer une matrice G dont les lignes sont des mots de code :

← g(D) →
 ← D.g(D) → 

2
*  ← D .g(D) →
G = 3 
 ← D .g(D) →
 . . . 
 
 . . . 

1 1 0 1 0 0 0
0 1 1 0 1 0 0 
avec notre exemple g(D) = 1+ D + D :
3
G* = 
0 0 1 1 0 1 0
 
0 0 0 1 1 0 1

La matrice ainsi constituée n'est pas celle d'un code systématique puisqu'il n'apparaît pas la
matrice identité Ik.

Pour faire apparaître cette propriété, comme toute superposition de mots de code est aussi un
*
mot de code, il suffit d'associer astucieusement les lignes de G . Ici, les lignes 1 et 2 sont correctes,
nous pouvons effectuer :

Ligne3 ← ligne3 + ligne 1

Ligne4 ← ligne4 + ligne 1 + ligne2

G.BINET MdC 61 2007 –2008 T_info_c_cycliques


Transmission de l'information Chapitre 6 7

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

ce qui avec le message déjà pris en exemple : Xm = [ 1 0 1 1 ] nous fournit le mot de code Cm
3 5 6
= [ 1 0 0 1 0 1 1 ] ce qui est conforme au polynôme Cm(D) = 1 + D + D + D établi avec g(D).

III.3 Calcul de la matrice H à partir du polynôme h(D) :


H peut bien sûr être calculée à partir de G mais aussi directement à partir de h(D).

A partir de G nous obtenons :

1 0 0 1 0 1 1
H =  0 1 0 1 1 1 0 
 0 0 1 0 1 1 1 

T T
G.H = 0 exprime le fait que les lignes de H ( colonnes de H ) sont orthogonales à celles de
G. Elles sont constituées de mots d'un code qui est orthogonal au code généré par G.

Quelques rappels sur l'orthogonalité :


n
D + 1 = g(D).h(D) ⇒ -n
D + 1 = g(D ).h(D )
-1 -1

⇒ n -n n
D ( D + 1 ) = D g(D ).h(D ) = D
-1 -1 n-k -1 k
g(D ).D h(D ) = D + 1
-1 n

k -1 n
D h(D ) est un polynôme de degré k qui factorise D + 1 et il génère donc un code ( n , n-k )
qui est orthogonal à celui généré par g(D).
2 k-1 k
h(D) = 1 + h1D + h2D + + hk-1D +D
k
D h(D) = D + h1D
k k-1
+ h2D
k-2
+ + hk-1D + 1 ⇒ k -1
D h(D ) est le polynôme réciproque de
h(D) c'est à dire obtenu par permutation de hi et hk-i.
k -1
D h(D ) est donc un mot de code orthogonal au code généré par g(D), comme ce sont des
k+j -1 *
codes cycliques, il en sera de même de D h(D ). La matrice H dont les lignes sont des mots de
code orthogonaux à tout le code généré par g(D) peut être construite selon le schéma :

 ← Dk.h(D−1) → 
 k +1 −1 
 ← D .h(D ) → 
H* =  . 
 
 . 
 n −1 
 ← D .h(D ) → 

G.BINET MdC 61 2007 –2008 T_info_c_cycliques


Transmission de l'information Chapitre 6 8

Cette matrice ne possède cependant pas la propriété des codes systématiques : ils font
intervenir la matrice identité In-k. Pour retrouver cette propriété, il suffit de refaire des combinaisons
*
linéaires des lignes de H .

Pour le code pris en exemple :


2 4 k -1 4 3 2
h(D) = 1 + D + D + D ⇒ D .h(D ) = D + D + D +1

soit :

1 0 1 1 1 0 0
H =  0 1 0 1 1 1 0 
*

 0 0 1 0 1 1 1 

puis, pour faire intervenir I3, nous effectuons :

ligne1 ← ligne + ligne3

1 0 0 1 0 1 1
H =  0 1 0 1 1 1 0 
 0 0 1 0 1 1 1 

ce qui est bien identique à la matrice obtenue à partir de G.

IV CODES CYCLIQUES USUELS

IV.1 Codes de Hamming cycliques


Largement développés dans le chapitre précédent.

IV.2 Code de Golay :


C'est un code ( n , k ) = ( 23 , 12 ).
23 5 6 7 9 11 4 5 6 10 11
D + 1 = ( 1 + D ) ( 1 + D +D + D + D + D + D )(1+D+D +D +D +D +D )
5 6 7 9 11
Le polynôme générateur est g(D) = 1 + D +D + D + D + D + D

Sa distance minimale de Hamming est : dmin = 7 ⇒ il peut détecter et corriger des erreurs
triples. C'est le seul ayant cette propriété. Malheureusement, il est unique dans son groupe et on ne
peut le généraliser à d'autres combinaisons.

IV.3 Codes de longueur maximale :


m-1
(n,k)=(2 , m ).

Ces codes utilisent donc tous les mots de code possibles. Ils sont générés simplement par
des registres à décalage correctement réalimentés et initialisés. Leur caractéristique est que la
séquence générée ne possède aucune autocorrélation sauf en 0, ils ont donc d'un point de vue signal
les caractéristiques d'un bruit blanc ce sont des pseudo-bruits ou pseudo-noise ⇒ codes PN.

G.BINET MdC 61 2007 –2008 T_info_c_cycliques


Transmission de l'information Chapitre 6 9

Leur utilisation dépasse largement le domaine du traitement de l'information pour celui du


traitement de signal et de l'automatique.

IV.4 Codes BCH ( Bose-Chaudrui-Hocquenqhem) :


– 1, k est choisi tel que k ≥ ( n-m.t ) où t est le nombre d'erreurs
m
Toujours avec n = 2
détectables et corrigeables. La distance minimale obtenue correspond 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. Ils ont fait l'objet de nombreuses études et utilisations. 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 → g(D) = D + D + 1


5 2

IV.5 Codes Reed-Solomon ( codes RS ) :


C'est une généralisation des codes BCH à des codes non binaires. Les données binaires sont
traitées par groupes de m bits formant l'ensemble des symboles.

G.BINET MdC 61 2007 –2008 T_info_c_cycliques