You are on page 1of 12

UFR de Sciences Universit de Caen

THEORIE DE LINFORMATION

___

CODAGE DE CANAL

CODES DE BLOCS LINEAIRES

___


G.BINET MdC 61
T_info_b_linaires p.1
UFR de Sciences Universit de Caen
CODAGE DE CANAL
CODES DE BLOCS LINEAIRES

I. DEFINITIONS ET PROPRIETES DES CODES DE BLOC
LINEAIRES
I.1 Code binaire :

I.2 Codes de blocs :

I.3 Poids d'un code :

I.4 Distance de Hamming :

I.5 Code linaire :
Consquence :
Distance minimale d'un code linaire :


II. GENERATION D'UN CODE DE BLOC LINEAIRE SYSTEMATIQUE

II.1 Gnration du mot de code :
Matrice de gnration de code :
Principe de la ralisation du codeur :

II.2 Dtection des erreurs de transmission :
Matrice de contrle de parit :
Syndrme :
Thorme :
Lien avec la distance minimale :
Code tendu :

II.3 Correction des erreurs :
Erreurs dtectables :
Nombre d'erreurs corrigeables :

III CODES DE BLOCS LINEAIRES

III.1 Codes de Hamming :
matrice de contrle :
erreurs corrigeables :

III.2 Codes de Hadamard :
G.BINET MdC 61
T_info_b_linaires p.2
UFR de Sciences Universit de Caen
CODAGE DE CANAL
CODES DE BLOCS LINEAIRES

Pour approcher au mieux la capacit C du canal si, conformment au thorme de Shannon, l'entropie
de la source H(X) < C nous pouvons ajouter de la redondance dans le codage de la source afin de diminuer les
erreurs de transmission. C'est le problme du codage de canal. A ct des premiers codes empiriques (bit de
parit, rptition,) deux grandes catgories de codes ont t dveloppes et sont actuellement utilises en
faisant l'objet permanent de perfectionnements :
Les codes de blocs linaires.
Les codes de convolution.

I. DEFINITIONS ET PROPRIETES DES CODES DE BLOC
LINEAIRES

I.1 Code binaire :

Le codage de canal utilise les symboles d'une source pour construire des objets appels mots de codes.
Pour une source discrte binaire nous utiliserons deux symboles. Pour un alphabet non binaire de q symboles
(source q-ary) si q = 2
b
, un code de longueur N peut se ramener l'tude d'un code binaire de longueur b.N.
Nous pouvons aussi montrer que si q 2
b
il est possible de se rapporter une telle tude. Pour ces raisons,
l'tude des codes binaires est une bonne introduction et nous nous contenterons de ce cas particulier.

I.2 Codes de blocs :

L'information de la source est mise en trames de longueur fixe que nous devons transmettre : c'est le
message. Le codage de canal prend ce message pour en faire un mot de code :
message codage de canal mot de code
Le message est constitu de k caractres soit 2
k
messages possibles. Le mot de code utilis sera lui aussi
de longueur fixe de n caractres soit 2
n
mots de code possibles. Avec n > k il y aura donc n-k caractres du mot
de code qui sont redondants et serviront traiter les erreurs ventuelles. Par ailleurs, 2
n
> 2
k
donc un certain
nombre de mots de code ne correspondent pas un message mais seulement des erreurs de transmission.
On parle ainsi d'un code de bloc ( n , k ) et du rapport du code dfini par R
c
= k/n.
Un cas particulier des codes de blocs est celui des codes o le message apparat explicitement sur ses k
caractres c'est dire "en clair". A ct de ces k caractres seront donc ajouts n-k caractres redondants. Nous
obtenons alors un code dit code systmatique et c'est ce sous ensemble que nous tudierons.

I.3 Poids d'un code :

Le poids d'un mot de code est par dfinition le nombre de caractres non nuls que contient ce mot.
11001000 est de poids 3 10011010 est de poids 4 00000000 est de poids nul
A l'ensemble des mots d'un code on associe l'ensemble des poids qui est la distribution de poids du
code. Un code est dit de poids fixe (ou poids constant) si tous les mots du code ont le mme poids.
G.BINET MdC 61
T_info_b_linaires p.3
UFR de Sciences Universit de Caen
I.4 Distance de Hamming :

La distance de Hamming d
ij
entre deux mots de code est le nombre de bits dont ils diffrent.
11001000
et 10011010 ont une distance de 3.
La distance minimale du code est le minimum de l'ensemble des distances entre codes :
d
min
= min { d
ij
}

I.5 Code linaire :

Un code est linaire s'il rpond au principe de superpostion :

i
C
i
+
j
C
j
= C
k
Pour tout
i
,
j
= {0 , 1 } (en binaire), si C
i
et C
j
sont des mots de code, alors C
k
est aussi un mot de code.

Consquence : Si
i
=
j
= 0 C
k
= "0"
Un code linaire contient le code "0".
Un code de poids fixe ne peut tre un code linaire.

Distance minimale d'un code linaire :
C
i
= C
c
+ C
m

C
j
= C
c
+ C
q
avec : C
c
= code commun constitu des bits "1" identiques de C
i
et C
j
.

C
m
et C
q
n'ont par consquence aucun bit commun.
C
i
= 11001000
C
j
= 10011010 C
c
= 10001000 , C
m
= 01000000 , C
q
= 00010010
En appelant w les poids des codes : d
ij
= w
m
+ w
q
.
Quel est le minimum de d
ij
?
Un code linaire contient le code "0" parmi les { d
ij
} il y a un sous ensemble minimal
correspondant C
j
= "0" soit w
m
= w
i
et d
ij
= w
i
. Ce qui justifie le thorme suivant :

Pour un code linaire, la distance minimale est le plus petit poids du code, mot de code nul exclus.
min { d
ij
} = min { w
k
} pour C
k
"0"
G.BINET MdC 61
T_info_b_linaires p.4
UFR de Sciences Universit de Caen
II. GENERATION D'UN CODE DE BLOC LINEAIRE SYSTEMATIQUE

A partir d'un message X
m
tel que :
] m ... .......... m m [ X
message du caractres k
1 - k 1 0 m
4 4 4 3 4 4 4 2 1
=
nous devons gnrer un mot de code de bloc linaire systmatique qui a la structure suivante :
] m ... .......... m m b . .......... .......... b b [ C
code de mot du caractres n
message du caractres k
1 - k 1 0
contrle de caractres k) - (n
1 - k - n 1 0 m
4 4 4 4 4 4 4 4 3 4 4 4 4 4 4 4 4 2 1
4 4 4 3 4 4 4 2 1 4 4 4 4 3 4 4 4 4 2 1
=


Soit C
m
= [ B
m
X
m
] o B
m
contient les caractres de contrle appels aussi caractres de parit.

II.1 Gnration du mot de code :

Matrice de gnration de code :
Matrice note G, elle sert gnrer le mot de code C
m
partir du message X
m
soit :
C
m
= X
m
.G
Nous nous intressons des codes systmatiques, la matrice G est donc de la forme :
G = [ P I
k
]
G tant une matrice ( k ,n ), P une matrice ( k , n-k ) et I
k
la matrice identit ( k , k ).

Code non systmatique :
Un code non systmatique serait tel que : G = [ P M ] o la matrice M est une matrice qui mlange les bits du
message pour le crypter. Nous pouvons bien sr nous ramener un code systmatique par combinaison des
lignes entre elles pour faire intervenir la matrice I
k
. Tout code de bloc peut ainsi se ramener l'tude d'un code
systmatique quivalent.

La partie essentielle de la matrice G est donc la matrice P appele matrice de parit.

Principe de la ralisation du codeur :
Chaque bit de parit s'exprime donc par :

=
=
k
1 j
ji j i
p m b
En binaire les p
ji
{ 0 ;1 } les b
i
sont
obtenus par une simple addition binaire.
Mot de code
message
b
2
b
1
b
0
m
3
m
2
m
1
m
0
Le principe de la ralisation technique en est
donc simple, il suffit de disposer de deux
registres dcalage et d'un inverseur (switch
lectronique bien sr) ce qui donne le schma ci-
contre.

G.BINET MdC 61
T_info_b_linaires p.5
UFR de Sciences Universit de Caen
Cet exemple est celui d'un code ( 7 , 4 ) tel que :

=
1 0 0 0 1 1 0
0 1 0 0 0 1 1
0 0 1 0 1 1 1
0 0 0 1 1 0 1
G b
0
= m
0
+ m
1
+ m
2
b
1
= m
1
+ m
2
+ m
3
b
2
= m
0
+ m
1
+ m
3


II.2 Dtection des erreurs de transmission :

Matrice de contrle de parit :
Nous dfinissons un espace dual engendr par la matrice H telle que :

H = [ I
n-k
P
T
]
En dcomposant les matrices nous obtenons :
[ ] 0 P P
P
I
I P H . G
k - n
k
T
= + =

=
En effet P est constitu d'lments binaires tels que : + = 0.
D'o la relation fondamentale : G.H
T
= 0
Avec l'exemple prcdent :

=
1 0 1 1 1 0 0
1 1 1 0 0 1 0
0 1 1 1 0 0 1
H

Syndrme :
A partir de la relation prcdente nous pouvons tablir la relation servant de base la dtection d'erreur :

C
m
.H
T
= X
m
.G.H
T
= 0 pour tout mot de code.
Le dtecteur va utiliser cette relation. En effet, si le mot de code reu Y
m
est entach d'erreur nous pouvons
l'exprimer sous la forme :
Code reu = code mis + erreur Y
m
= C
m
+ E
m

En effectuant le contrle Y
m
.H
T
= C
m
.H
T
+ E
m
.H
T
= E
m
.H
T
. S'il n'y a pas eu erreur de transmission E
m
.H
T
= 0.
E
m
.H
T
est par dfinition le

syndrme de l'erreur S
m
.

S
m
= Y
m
.H
T
= E
m
.H
T

Le syndrme ne dpend que de l'erreur de transmission commise et non du mot de code.

Thorme :
Supposons deux syndrmes S
i
= E
i
.H
T
et S
j
= E
j
.H
T
.
Si S
i
= S
j
( E
i
- E
j
).H
T
= 0 ( E
i
- E
j
) est un mot de code.
deux vecteurs d'erreur qui diffrent d'un mot de code ont mme syndrme.
Ce thorme montre qu'il peut y avoir ambigut dans la dtection des erreurs.
G.BINET MdC 61
T_info_b_linaires p.6
UFR de Sciences Universit de Caen
Lien avec la distance minimale :
M = C
m
.H
T

( 1 , n-k) ( 1 , n) ( n ,n-k )
Chaque lment de la matrice M est :

=
i
ji i j
h c m ce qui est une combinaison linaire sur une ligne j de
tous les lments des colonnes M est une combinaison linaire des colonnes de la matrice H et cette
combinaison linaire est nulle.
les colonnes de H sont linairement dpendantes.
Le nombre de colonnes intervenant dans la combinaison est gale au nombre de "1" du code C
m
ce qui
est le poids de Hamming du mot de code.
La distance de Hamming du code tant le poids minimal de ce code La distance minimale de Hamming
d
min
d'un code est gale au nombre minimal de colonnes de la matrice H dont la somme est nulle.
Le nombre de colonnes de H linairement indpendantes est d
min
-1 et le rang maximal de cette matrice
est n-k ce qui tabli la relation :
d
min
n-k+1

Code tendu :
Pour amliorer la dtection des erreurs, on ajoute des bits de parit aux colonnes de H ce qui cr partir d'un
code ( n , k ) un code tendu ( n+1 , k ) tel que :





=
0
H 0
0
1 1 1 1 1
H
e
cela augmente la distance de Hamming d
min
d
min
+ 1

II.3 Correction des erreurs :

Erreurs dtectables :
Le nombre minimal de bits changeant entre chaque code est d
min
la distance minimale du code. Compte tenu du
thorme du chapitre prcdent, e
D
le nombre maximal d'erreurs dtectables est donc :
e
D
= d
min
-1

Nombre d'erreurs corrigeables :
Nous avons au maximum 2
k
messages transmettre donc 2
k
mots de code corrects parmi les 2
n
possibles.
Si X est le mot de code mis, E l'erreur de transmission et Y le mot de code reu :
Y = X + E
S'il y a t erreurs de transmission la distance de Hamming entre Y et X est t.
Nous pouvons faire un schma o un point reprsente un code, une croix un code correspondant un message et
la distance entre deux points, la distance de Hamming.
G.BINET MdC 61
T_info_b_linaires p.7
UFR de Sciences Universit de Caen
S'il y a t erreurs de transmission, tous les mots de codes possibles correspondant cette erreur sont situs dans
une sphre situe autour du code rel transmis.
Soit deux codes X
i
et X
j
et t erreurs de transmission, si nous sommes dans la situation suivante :
t

X
j
X
i
t

Tout code appartenant une sphre peut tre sans ambigut attribu au code le plus proche les erreurs
de transmission sont toutes corrigeables.
Une seconde situation:
Dans ce cas, les codes appartenant l'intersection des sphres ne peuvent tre attribus.
Pour viter toute ambigut nous devrons donc respecter la condition :
2.t d
min
-1
t tant un entier, e
C
le nombre maximum d'erreurs corrigeables sera :

e
C
= Int [ (d
min
-1 ) ]

Le nombre e
DNC
d'erreurs dtectables et non corrigeables est tel que : e
DNC
+ e
C
= e
D
. Compte tenu des relations
prcdentes nous aurons aussi la relation : e
DNC
e
C
.
exemple :
d
min
= 7 erreurs dtectables e
D
= 6.
erreurs corrigeables e
C
= 3.
Erreurs dtectables non corrigeables e
DNC
= 3.
t

X
i
X
j
t


G.BINET MdC 61
T_info_b_linaires p.8
UFR de Sciences Universit de Caen
Correction des erreurs : mthode logicielle.
Il y a deux mthodes de correction des erreurs:
1. dtecter la forme des signaux reus et attribuer le symbole : cela dpend des formes d'ondes et donc de
la mthode de modulation choisie. C'est la mthode matrielle ("hard") de correction des erreurs.
2. interprter la redondance d'un code pour lui attribuer un symbole : c'est la mthode dite logicielle
("soft") qui est celle que nous allons dvelopper.
A la rception d'un mot de code, nous lui associons le message dont le mot de code est le plus proche au sens de
la distance entre mots de code. C'est le maximum de vraisemblance dont l'illustration a t faite dans l'tude des
erreurs corrigeables.
Pour un mot de code reu le syndrme associ est :
S
m
= Y
m
.H
T
= E
m
.H
T

Chaque ligne de H
T
(colonne de H) est le syndrme d'une erreur simple. Pour un code (n , k), il y a n erreurs
simples possibles et avec ( n-k ) bits de contrle nous pouvons coder ( 2
(n-k)
1 ) erreurs ( -1 car "000" n'est
pas un code d'erreur) il reste dtectables ( 2
(n-k)
- 1 - n ) autres erreurs que des erreurs simples (erreurs
doubles, triples, .).

Exemple: Soit le code (5 , 2) dfini par

=
1 0 1 1 0
0 1 1 0 1
G

=
1 1 1 0 0
1 0 0 1 0
0 1 0 0 1
H
5 erreurs simples possibles avec leurs syndrmes associs et ( 2
(n-k)
- 1 n ) = 2 autres syndrmes.
Table des erreurs :
Dans cette table apparaissent les deux syndrmes non
associs une erreur simple.
Syndrmes
possibles S
m

Erreurs
probables E
m

000 00000 Pas d'erreur
001 00100 Erreur bit 2
010 01000 Erreur bit 1
011 00001 Erreur bit 4
100 10000 Erreur bit 0
101 00010 Erreur bit 3
110
111
Prenons le syndrme 110. Il peut tre associ une erreur
double du type ( bit 0 + bit 1 ) soit 11000 mais aussi une
erreur du type ( bit 3 + bit 4 ) soit 00011. Il y a ici
ambigut entre deux erreurs doubles.
Pour le syndrme 001 associ une erreur bit 2 il pourrait
tre associ une erreur type ( bit 1 +bit 4 ) mais ici
l'ambigut est entre une seule erreur simple et d'autres
erreurs doubles, triples,

Dans cet exemple, H a au plus trois colonnes linairement indpendantes d
min
= 3.
Le nombre d'erreurs corrigeables est : e
c
= Int [ (d
min
-1) ] = 1.
Le nombre d'erreurs dtectables est : e
D
= d
min
1 = 2.
En effet, si nous affectons la solution la plus vraisemblable au sens de la distance minimale, toutes les erreurs
simples peuvent tre corriges. En ce qui concerne les erreurs doubles, elles sont dtectables mais nous pouvons
soit les confondre entre elles, soit les confondre avec une erreur simple. Dans le second cas le maximum de
vraisemblance corrige comme une erreur simple ( c'est effectivement ce qui a la plus forte probabilit d'arriver )
et dans le premier elle tranche en faveur de la solution la plus probable qui, pour un code donn est toujours la
G.BINET MdC 61
T_info_b_linaires p.9
UFR de Sciences Universit de Caen
mme. Qu'arrive-t-il pour des erreurs triples ? Au sens du critre, elles sont toujours systmatiquement
confondues soit avec une erreur simple soit une erreur double, elles sont de ce fait non dtectables et par l
mme non corrigeables.

La correction des erreurs:
Les oprations s'ordonnent ainsi :
1. rception d'un mot de code Y
m
.
2. calcul du syndrme associ S
m
.
3. avec une table des erreurs, calcul de l'erreur la plus vraisemblable E
m
*
associe au syndrme.
4. calcul du mot de code le plus vraisemblable : C
m
*
= Y
m
E
m
*
( en binaire, le + est un ou exclusif ).
5. extraction du message X
m
*
de C
m
*
.

Avec l'exemple prcdent :
X
m
= [ 1 0 ] C
m
= X
m
.G = [ 1 0 1 1 0 ]

Erreur sur le bit 3 Y
m
= [ 1 0 1 0 0 ] syndrme S
m
= Y
m
.H
T
= [ 1 0 0 ]
table E
m
*
= [ 0 0 0 1 0 ] C
m
*
= Y
m
E
m
*
= [ 1 0 1 0 0 ] [ 0 0 0 1 0 ] = [ 1 0 1 1 0 ] = C
m
.

Erreur sur les bits 1 et 3 Y
m
= [ 1 1 1 0 1 ] syndrme S
m
= Y
m
.H
T
= [ 0 1 0 ]
table E
m
*
= [ 1 0 0 0 0 ] C
m
*
= Y
m
E
m
*
= [ 1 1 1 1 0 ] [ 1 0 0 0 0 ] = [ 0 1 1 1 0 ] C
m
.


G.BINET MdC 61
T_info_b_linaires p.10
UFR de Sciences Universit de Caen

III CODES DE BLOCS LINEAIRES

III.1 Codes de Hamming :

Les codes de Hamming sont des codes binaires qui ont la proprit :
( n , k ) = ( 2
m
-1 , 2
m
-1-m ) avec m entier.
m = 2 code ( 3 , 1 ) peu d'intrt, k = 1 on ne transmet qu'un bit de message.
m = 3 code ( 7 , 4 )
m = 4 code ( 15 , 11 )
..

matrice de contrle :
Elle est de dimensions ( n-k , n ) = ( m , 2
m
-1 ).
Une colonne est donc constitue de m lments binaires et nous avons 2
m
-1 colonnes c'est--dire toutes les
combinaisons possibles moins une ( la combinaison "000" ). Ceci nous permet pour ces codes de construire
trs rapidement la matrice de contrle H et d'en dduire la matrice de gnration de code G. La procdure est la
suivante :
1. Commencer remplir la matrice H en utilisant les combinaisons linaires de m bits faisant apparatre la
matrice I
n-k
.
2. Complter cette matrice par les combinaisons de m bits non encore utilises code "0" exclu. Il apparat
dans cette opration que la solution n'est pas unique mais cela n'a aucune importance.

Exemple d'un code ( 7 ,4 ) :

=
1 1 1 0
1 1 0 1
1 0 1 1

1 0 0
0 1 0
0 0 1
H
T
k - n P
I
43 42 1 43 42 1

Nous en dduisons G :

=
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1

1 1 1
1 1 0
1 0 1
0 1 1
G
k
I P
4 43 4 42 1 43 42 1

erreurs corrigeables :
Le nombre maximum de colonnes de H linairement indpendantes est (n-k) = m= d
min
.
e
D
= Int [ (m-1) ]
m = 3 e
D
= 1 ; m = 4 e
D
= 1 ; m = 5 e
D
= 2 ;.

G.BINET MdC 61
T_info_b_linaires p.11
UFR de Sciences Universit de Caen
III.2 Codes de Hadamard :

Les codes de Hamming sont trs populaires de par leur simplicit cependant, ils exigent un grand nombre de bits
de contrle pour corriger des erreurs multiples.
Les codes de Hadamard sont constitus par itration partir de matrices telles que :

=
M M
M M
M
n n
n n
n 2
o
n
M dsigne la matrice complmentaire 0 1 et 1 0.
La matrice initiale est :

=
1 0
0 0
M
2

=
0 1 1 0
1 1 0 0
1 0 1 0
0 0 0 0
M
4
Les matrices et
n
M
n
M contiennent comme lignes ou colonnes les 2n mots du code. La structure de la matrice
permet donc de dtecter des erreurs de transmission. Sans dmonstration, on montre que d
min
= n.
G.BINET MdC 61
T_info_b_linaires p.12

You might also like