Vous êtes sur la page 1sur 67

Support de cours de théorie de l’information

et codage correcteur d’erreurs


Enseignant : Hatem Boujemâa
SUPCOM, Septembre 2005
ii
Table des matières

Table des matières v

Table des figures viii

1 Théorie de l’information 1
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Quantité d’information et entropie d’une source . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Information mutuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3.1 Entropie conditionnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3.2 Information mutuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Théorème de Shannon pour le codage de source . . . . . . . . . . . . . . . . . . . . . . 4
1.4.1 Codage de source sans perte . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4.2 Codage de source avec perte . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5 Théorème de Shannon pour le codage de canal . . . . . . . . . . . . . . . . . . . . . . . 6

2 Le codage de source 9
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2 Caractéristiques des codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2.1 Le théorème de Mac Millan . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.2 Le théorème de Kraft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3 Construction des codes instantanés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4 Construction des codes optimaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4.1 Quelques conditions nécessaires sur les longueurs optimales . . . . . . . . . . . 12
2.4.2 Les longueurs optimales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.4.3 L’algorithme de Huffman . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.5 TD 1 : Codage de source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
iv TABLE DES MATI ÈRES

3 Les codes en bloc linéaires 17


3.1 Généralités sur les codes correcteurs et détecteurs d’erreurs . . . . . . . . . . . . . . . . 17
3.2 Définition des codes en bloc linéaires . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.3 La matrice génératrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.4 Code dual et matrice de contrôle de parité . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.5 Principe de la détection et de la correction d’erreurs . . . . . . . . . . . . . . . . . . . . 21
3.5.1 Détection d’erreurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.5.2 Régle de décodage et de correction d’erreurs . . . . . . . . . . . . . . . . . . . 22
3.5.3 Pouvoir de correction et de détection d’erreurs . . . . . . . . . . . . . . . . . . 23
3.5.4 Détermination de d(C ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.6 Exemple de codes en bloc linéaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.6.1 Le code de parité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.6.2 Le code à répétition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.6.3 Le code de Hamming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.6.4 Le code à longueur maximale . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.7 Performances des codes en bloc linéaires . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.8 TD 2 : Les codes en bloc linéaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4 Les codes cycliques 33


4.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.2 Forme systématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.3 Décodage des codes cycliques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.4 Exemples de codes cycliques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.4.1 Les codes BCH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.4.2 Les codes de Golay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.4.3 Les codes de Reed Solomon . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.5 TD 3 : Les codes cycliques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

5 Les codes convolutifs 39


5.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.2 Représentation des codes convolutifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5.2.1 Le diagramme en arbre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.2.2 Le diagramme d’état . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.2.3 Le diagramme en treillis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.3 Décodage : Algorithme de Viterbi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Table des matières v

5.3.1 Le critère de Maximum de Vraisemblance : . . . . . . . . . . . . . . . . . . . . 42


5.3.2 L’algorithme de Viterbi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.4 Performances théoriques des codes convolutifs . . . . . . . . . . . . . . . . . . . . . . 49
5.4.1 Fonction de transfert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.4.2 Probabilité d’occurrence d’un premier événement d’erreur . . . . . . . . . . . . 50
5.4.3 Probabilité d’erreur binaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.5 TD 4 : Les codes convolutifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

A Corrigé du TD 1 61

B Corrigé du TD 2 65

C Corrigé du TD 3 71

D Corrigé du TD 4 73

Bibliographie 81
vi Table des matières
Table des figures

1.1 Entropie d’une source binaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3


1.2 Illustration graphique de l’information mutuelle. . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Principe du codage de source. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 Illustration graphique du premier théorème de Shannon. . . . . . . . . . . . . . . . . . . 7
1.5 Principe du codage canal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.6 Illustration graphique du deuxième théorème de Shannon. . . . . . . . . . . . . . . . . . 8

2.1 Illustration de la méthode des intervalles. . . . . . . . . . . . . . . . . . . . . . . . . . 11


2.2 Illustration de l’algorithme de Huffman. . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.1 Principe du codage correcteur ou détecteur d’erreurs. . . . . . . . . . . . . . . . . . . . 18


3.2 Schéma principe d’un codeur en bloc à base de portes XOR. . . . . . . . . . . . . . . . 20
3.3 Le Canal Binaire Symétrique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.4 Comparaison des performances d’un système de transmission sans codage canal à celui
utilisant un code de Hamming pour m=3, 4 et 5. . . . . . . . . . . . . . . . . . . . . . . 29

5.1 Principe d’un codeur convolutif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39


5.2 Exemple d’un codeur de rendement Rc = 1 2 et de mémoire = 2. .
= m . . . . . . . . . . 41
5.3 Le diagramme en arbre. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.4 Le diagramme d’état. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.5 Le diagramme en treillis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.6 Première étape de décodage par l’algorithme de Viterbi. . . . . . . . . . . . . . . . . . . 46
5.7 Deuxième étape de décodage par l’algorithme de Viterbi. . . . . . . . . . . . . . . . . . 47
5.8 Troisième étape de décodage par l’algorithme de Viterbi. . . . . . . . . . . . . . . . . . 47
5.9 Dernière étape de décodage par l’algorithme de Viterbi. . . . . . . . . . . . . . . . . . . 48
5.10 Réduction de la fenêtre de mémorisation des survivants. . . . . . . . . . . . . . . . . . . 48
5.11 Détermination de la fonction de transfert d’un codeur convolutif. . . . . . . . . . . . . . 50
viii Table des figures

5.12 Probabilité d’erreur binaire du codeur convolutif de mémoire m = 2, Rc = 1 2, = 5


= g1

et g2 = 7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Chapitre 1

Théorie de l’information

1.1 Introduction

Dans ce chapitre, nous donnons un bref aperçu sur la théorie de l’information dans le but de l’appli-
quer au codage canal (correction des erreurs de transmission) et au codage de source (compression). Pour
cela, on commence par mesurer la quantité d’information qu’apporte l’observation d’une source aléatoire
(Entropie de la source). Ensuite, on détermine l’information qu’apporte l’observation d’une source sur
une autre (Information mutuelle). Après cela, nous établissons le théorème de Shannon pour le codage
de source qui donne la borne inférieure du taux de compression. Enfin, on établit le deuxième théorème
de Shannon qui donne la borne supérieure du taux de codage canal qu’on ne doit pas dépasser si l’on
veut garantir une probabilité d’erreur binaire arbitrairement faible.

1.2 Quantité d’information et entropie d’une source

Il s’agit de caractériser la quantité d’information moyenne apportée par l’observation d’une source
aléatoire. On commence par considérer le cas d’une source discrète X . La source X est modélisée
une variable aléatoire (v.a.) discrète ayant comme alphabet A =f x1 ; x2 ;  ; xM g : On note pi =
P ( = )
X xi : La quantité d’information apportée par la réalisation de X = xi est donnée par

( = ) = log( 1 )
Q X xi
pi
: (1.1)

On vérifie que la quantité d’information apportée par la réalisation de l’événement X = xi est inverse-
ment proportionnelle à sa probabilité de réalisation pi : En outre, si on considère deux sources X et Y

indépendantes alors la quantité d’information apportée par la réalisation de X = xi et Y = yj est la


somme des quantités d’information apportées par la réalisation de X = xi et Y = yj :
2 Théorie de l’information

Q ( =X xi ; Y = ) = log( ( = 1 = ) ) = log( ( = )1 ( = ) )
yj
P X xi ; Y yj P X xi P Y yj

= ( = )+ ( = ) Q X xi Q Y yj : (1.2)

L’entropie d’une source est la quantité d’information moyenne apportée par l’observation de la source :



H X( )=
X
M

pi log 1 : (1.3)
pi
i=1

L’entropie d’une source est grande lorsque son observation apporte beaucoup d’information, on peut
donc dire que l’entropie donne l’incertitude sur la source. Cette dernière définition peut être étendue au
cas de sources à valeurs réelles :

Z  
( )= ( ) log 1
H X
()x
pX x
pX x
dx: (1.4)

Exemple : Entropie d’une source discrète de cardinal =2 M

   
H X ( ) = log 1 + (1
p 2
p
p ) log 1 2
1
p
; (1.5)

où p = P ( = ).
X x1

La figure 1.1 montre l’évolution de H X ( ) en fonction de p . On constate que l’entropie est nulle pour
p = 1 et = 0 c’est à dire lorsque la source est déterministe. L’entropie est maximale pour = 1 2
p p =

c’est à dire lorsque la source est uniforme. En général, on montre que :

0  ( )  log ( )
H X 2 M : (1.6)

L’entropie est bien sûr nulle lorsque la source est déterministe et elle est maximale valant log ( )
2 M

lorsque la source est uniforme.

1.3 Information mutuelle

1.3.1 Entropie conditionnelle

Dans certaines applications, on ne peut observer qu’un traitement de X noté Y . On définit l’entropie
conditionnelle comme étant l’incertitude moyenne qui reste sur X après observation de Y :

Z Z  
( )= () ( ) log 1
H X=Y
y
pY y
x
pX= Y x=y
pX= Y (x=y ) dxdy: (1.7)
1.3 Information mutuelle 3

F IG . 1.1 – Entropie d’une source binaire

1.3.2 Information mutuelle

L’information mutuelle est la quantité d’information moyenne qu’apporte l’observation de Y sur la


connaissance de X :

(
I X; Y )= ( )
H X H (
X= Y ) : (1.8)

En utilisant (1.7) et (1.4), on obtient

  
( ) =
Z
( ) log 1 Z
()
Z
( ) log 1 
I X; Y
x
pX x
() pX x
dx
y
pY y
x
pX= Y x=y
pX= Y ( )
x=y
dxdy(1.9)
  
=
Z
( ) log 1 Z Z
( ) log 1 
x;y
pX;Y x; y
() pX x
dx
x;y x
pX;Y x; y
pX=Y ( )
x=y
dxdy


=
Z
( ) log ( ) pX;Y x; y

x;y
pX;Y x; y
() () pX x pY y
dx:

Ainsi I (X; Y ) = I (Y; X ). En outre, on a

  
( ) =
Z
( ) log 1( )
Z Z
( ) log PY () 
y
I X; Y
x
pX x
pX x
dx
y x
pX;Y x; y
pX;Y ( )
x; y
dxdy (1.10)

= H X ( )+ ( ) ( )
H Y H X; Y ;

où

Z Z  
( )= ( ) log 1
H X; Y
y x
pX;Y x; y
pX;Y ( x; y ) dxdy:
4 Théorie de l’information

On constate donc que l’incertitude sur X plus l’incertitude sur Y est supérieure à l’incertitude sur (X; Y ),
la différence est égale à l’information mutuelle. La figure 1.2 montre une illustration graphique de l’in-
formation mutuelle.
Si X et Y sont indépendants alors (
H X= Y )= ( )H X ; on en déduit que I (X; Y ) = 0 c’est à dire que
la connaissance de Y n’apporte aucune information sur X ce qui était prévisible du moment que X et Y
sont indépendants.
Si X = ( ) alors
f Y X=Y est une variable aléatoire déterministe donc H (X= Y )=0 et I (X; Y ) = H (X ):
On en déduit que H (X; Y ) = ( ). Si
H Y f est bijective, alors H (Y =X ) = 0 d’où ( ) = (
H Y I X; Y )=
H X ( )
En général, on montre que

0 ( I X; Y )  ( ).
H X (1.11)

(
I X; Y ) = 0 sssi X et Y sont indépendants et I (X; Y ) = H (X ) sssi X = ( ).
f Y

F IG . 1.2 – Illustration graphique de l’information mutuelle.

1.4 Théorème de Shannon pour le codage de source

Le codage de source ou encore compression a pour but de réduire le nombre de bits utilisés pour
représenter une source binaire. Cette technique de codage porte aussi le nom de codage entropique car
elle utilise des statistiques de la source ou plus précisemment la probabilité d’occurrence de ces différents
symboles. Nous nous intéressons dans cette section à établir une borne inférieure du taux de compression.
On considère une source U de cardinal M , habituellement chaque symbole Ui de cette source doit
être représenté sur ( ) bits. Le codeur source consiste à associer à chaque symbole de la source
log2 M

Ui une étiquette Ei formée de n bits. Le taux de codage de source est défini comme étant le rapport du
nombre de bits des étiquettes Ei par celui des mots de source Ui :

Rs = n

( )
log2 M
: (1.12)
1.4 Théorème de Shannon pour le codage de source 5

Bien évidemment, plus Rs est faible, plus la compression est forte.


Lorsqu’on s’intéresse à l’étude et optimisation du codage de source, on suppose que le canal est non
bruité c’est à dire que la transmission des données ou leur stockage se fait sans aucune erreur. Ainsi,
le décodeur source a pour entrée la source aléatoire E et on note V sa sortie (voir la figure 1.3). Pour
établir la borne inférieure du taux de compression (1.12), on utilise un théorème fondamental en théorie
de l’information qui stipule que tout traitement détruit l’information mutuelle :

H ( )= (
E I E; E ) ( I U; V ) : (1.13)

Or d’après (1.6),

H ( )  log (2 ) =
E 2
n
n: (1.14)

On en déduit que

Rs  ( ( ))
I U; V

log2 M
: (1.15)

A présent, nous allons établir la borne inférieure du taux de compression en distinguant les cas où le
codeur et le décodeur de source introduisent ou pas de pertes.

F IG . 1.3 – Principe du codage de source.

1.4.1 Codage de source sans perte

Du moment que le codeur et le décodeur de source n’introduisent pas de perte U = V et (1.15) donne

 H ( )
U
Rs
log2 M ( ) : (1.16)

Ainsi l’entropie de la source apparaı̂t comme la borne inférieure du taux de compression. Plus la source
présente des symboles très probables plus son entropie est faible et plus on pourra la comprimer. Le cas
limite est celui d’une source déterministe dont l’entropie est nulle, dans ce cas on peut faire tendre le taux
de compression vers zéro. L’autre cas limite est celui d’une source uniforme dont l’entropie est égale à
log ( ) donc le taux de compression est égal à 1 c’est à dire qu’on ne peut pas la comprimer.
2 M
6 Théorie de l’information

1.4.2 Codage de source avec perte

En présence de pertes, U et V sont différents et l’information mutuelle I ( U; V ) dépend du type


de distorsion et de la quantité de distorsion que l’on mesure par l’Erreur Quadratique Moyenne de
distorsion :

D = log 1( ) k E U V k 2
: (1.17)
2 M

On cherche à déterminer la borne inférieure du taux de compression si l’on s’autorise un niveau de


distorsion D donné. Pour cela, nous fixons bien évidemment la source, p(U ) est fixé, et nous cherchons
le minimum de la borne inférieure de Rs sur toutes les distorsions possibles (
p V =U ) pour un niveau de
distorsion D donné :

Rs  ( )R D ; (1.18)

où

 
( ) = min log( ( )) log 1( ) k
R D
p(V =U )
I U; V
= E U V k 
2
D :
2 M 2 M

Ce dernier résultat porte le nom de premier théorème de Shannon ou encore théorème de Shannon pour
le codage de source. La fonction R(D ) porte le nom de fonction taux distorsion, elle apparaı̂t comme la
borne inférieure du taux de compression. Pour un niveau de distorsion D0 donné, on ne peut comprimer
la source au delà de la limite de Shannon R(D0 ): Si D tend vers zéro alors V tend vers U et R(D ) tend
H (U )
vers log2 (M )
, on retrouve donc le résultat (1.16). Lorsque D augmente, V et U deviennent de plus en
plus indépendants et ( ) tend vers zéro ce qui fait qu’on peut bien comprimer la source du moment
R D

qu’on s’autorise beaucoup de distorsions. Une illustration graphique du théorème de Shannon pour le
codage de source est donnée dans la figure 1.4. La zone en dessous de R D ( ) est interdite. On montre
que le premier théorème de Shannon reste valable même si les étiquettes Ei possèdent des longueurs
variables. Dans ce cas, le taux de compression est le rapport de la longueur (en nombre de bits) moyenne
des étiquettes par la longueur des mots de source

PM
Rs = log ( )  ( )
i=1
pi li
R D : (1.19)
2 M

où pi = ( = ) = ( = ) et
p E Ei p U Ui li est la longueur en nombre de bits de Ei :
1.5 Théorème de Shannon pour le codage de canal

Le codage canal est une opération qu’on effectue après le codage de source. Il consiste à coder
la source en rajoutant de la redondance afin de pouvoir détecter et corriger les éventuelles erreurs de
1.5 Théorème de Shannon pour le codage de canal 7

F IG . 1.4 – Illustration graphique du premier théorème de Shannon.

transmission. Un codeur canal binaire est une application de l’ensemble n


A2 vers Al2 où A2 = f0 1g et
;

l > n . On associe donc à tout mot de source formé de n bits un mot de code formé de l bits. Lorsqu’on
construit un codeur canal, on essaye d’espacer les mots de codes dans le but de détecter et corriger les
éventuelles erreurs de transmission. On définit le rendement d’un code correcteur d’erreurs ou encore
taux de codage canal par le rapport du nombre de bits des mots d’information par celui des mots de
codes :

Rc = n

l
: (1.20)

Rc donne le pourcentage de bits d’information dans les bits émis. Plus Rc est faible plus il y a de la
redondance ce qui fait qu’on arrive à bien corriger les éventuelles erreurs de transmission. Cependant,
plus Rc est faible plus le débit utile diminue. Nous nous proposons donc de maximiser Rc afin de garantir
le débit utile le plus élevé tout en garantissant une transmission aussi fiable que l’on désire. Tel qu’illustré
dans la figure 1.5, on appelle E les mots d’information, X la sortie du codeur canal, Y la sortie du
b la sortie du décodeur canal.
canal et E

F IG . 1.5 – Principe du codage canal.

On utilise le fait que tout traitement détruit l’information

 
I ( X; Y ) I E; Eb : (1.21)

Etant donné qu’on désire avoir une probabilité d’erreur arbitrairement faible, on déduit que
8 Théorie de l’information

 
I E; E b ' ( )=
H E n: (1.22)

En utilisant (1.21), on obtient

Rc  ( I X; Y

l
) : (1.23)

A présent, on cherche à maximiser le membre de droite de l’équation (1.23) pour un canal fixé, p(Y =X )
fixé, et pour une puissance de transmission limitée à P :

Rc  ( )C P ; (1.24)

où C (P ) est la capacité du canal pour une puissance de transmission limitée à P


( )
( ) = max
C P
I ( X; Y ) =
E k k 
X
2
P :
p(X ) l l

Ce résultat porte le nom de théorème de Shannon pour le codage canal ou encore deuxième théorème
de Shannon. La capacité du canal apparaı̂t comme une borne supérieure du taux de codage canal. Pour
une puissance de transmission P0 , on ne peut coder l’information avec un taux supérieur à C (P0 ) si l’on
veut garantir une probabilité d’erreur arbitrairement faible. Si P tends vers zéro, X tend vers zéros donc
X et Y sont de plus en plus indépendants d’où C P ( ) tend vers 0 c’est à dire qu’on doit transmettre
beaucoup de redondance ce qui était prévisible du moment que la puissance de transmission est faible.
Lorsque P augmente ( ) augmente pour converger vers la capacité du canal (1)
C P C : La figure 1.6
montre une illustration graphique du théorème de Shannon pour le codage de canal. On observe que la
zone graphique au dessus de la courbe C (P ) n’est pas autorisée.

F IG . 1.6 – Illustration graphique du deuxième théorème de Shannon.


Chapitre 2

Le codage de source

2.1 Introduction

Le codage de source a pour but de réduire le nombre de bits utilisés pour représenter une source. Pour
cela, on opère en deux étapes. D’abord, on commence par décorréler la source grâce à des transformées
telles que la TKL (Transformée de Karhunen-Loeve), la TCD (Transformée en Cosinus Discrète), la
TF (Transformée de Fourrier) et la transformée en ondelettes. On peut aussi décorréler la source en
utilisant des techniques de prédiction linéaire ou encore en exploitant sa corrélation spatiale ou tempo-
relle (exemples : corrélation des bits adjacents dans une image, corrélation d’une séquence temporelle
d’images). Une fois on a rendu la source sans mémoire, on utilise des techniques de codage de source en-
tropiques. Ces techniques consistent à exploiter la connaissance des statistiques de la source (probabilité
d’occurrence de ses différents symboles). Nous allons nous consacrer dans ce chapitre au codage entro-
pique sans perte. Pour cela, nous commençons par donner les caractéristiques que doit vérifier un codeur
entropique afin de faciliter le décodage. Ensuite, on donne une technique permettant de construire un
codeur entropique instantané dont le décodage n’entraı̂ne pas de retard. Enfin, on décrit l’algorithme de
Huffman qui permet de construire un codeur entropique optimal c’est à dire dont le taux de compression
est le plus proche que possible de la limite de Shannon (1.16).

2.2 Caractéristiques des codes

Tel qu’on l’a expliqué dans le précédent chapitre, le codeur source consiste à associer à chaque
symbole de la source Ui une étiquette Ei de sorte que le taux de compression soit minimal. Etant donné
que les étiquettes peuvent avoir des longueurs variables, on peut avoir une ambiguı̈té lors du décodage
si la concaténation de certaines étiquettes peut être interprétée de différentes façons. Par exemple, si on
utilise les quatre étiquettes suivantes E = f =0
E1 ; E2 = 10 ; E3 = 100; E4 = 101g, on voit que la
10 Le codage de source

concaténation de E2 et E1 donne E3 donc le décodeur source est incapable de faire le décodage. Un


codeur ou encore un code non ambigu est aussi dit uniquement déchiffrable (u.d.).
Définition : Un code est u.d si toute concaténation d’étiquettes ne peut être interprétée que d’une seule
façon :

8 8 8 8
p; k; il ; jm ; Ei1  Ei
k = Ej1  Ej p ) = p k et Ein = Ej n 8 = 1 
n ; ; p: (2.1)

C’est cette classe de codes qu’on doit utiliser. Utiliser un code u.d. peut entraı̂ner un retard lors du
décodage du moment qu’on doit attendre la réception de plusieurs étiquettes avant de décider. Ceci
augmente aussi la complexité du décodeur. Pour cela, on opte pour une sous classe des codes u.d. à
savoir les codes instantanés.
Propriété : Un code est instantané s’il vérifie la condition du préfixe : aucune étiquette ne doit être le
début d’une autre. Un code instantané n’entraı̂ne pas de retards lors du décodage du moment qu’aucune
étiquette n’est le début d’une autre.
Exemple :
-E =f =0 E1 ; E2 = 10 ; E3 = 100 ; E4 = 100g est ambigu.
-E = f = 10
E1 ; E2 = 00 ; E3 = 11 ; E4 = 110g est u.d.
-E =f =0 E1 ; E2 = 10 ; E3 = 110 ; E4 = 111g est instantané.

2.2.1 Le théorème de Mac Millan

Ce théorème donne une condition nécessaire que doivent vérifier les longueurs li des étiquettes Ei

pour que le codeur soit u.d.


PM
Théorème 2.1 : Un code est u.d. alors i=1
2 i  1 où
l
M est le cardinal de la source.

2.2.2 Le théorème de Kraft


PM
Théorème 2.2 : Si i=1
2 li  1 alors on peut construire un code instantané dont les étiquettes ont
pour longueur fli gi .

2.3 Construction des codes instantanés

On peut utiliser la méthode des intervalles pour construire des codes instantanés. On note Eij le j -ème
bit de l’étiquette Ei :

Ei = 1
Ei Ei
2
 E
i
i:
l
(2.2)
2.3 Construction des codes instantanés 11

On associe à Ei le réel suivant

Ei = 1
Ei 2 + 2 + 
1 2
Ei
2
E
i
l i2 i:l
(2.3)

Les réels associés aux étiquettes qui commencent par Ei appartiennent à l’intervalle débutant par Ei et
se terminant à

+1
X
Ei + 2 = j
Ei +2 l i: (2.4)
j =l i +1

Ainsi, un codeur est instantané sssi les intervalles suivants ne se recouvrent pas :

Ii =[ Ei Ei + 2 i[ 8 = 1   
l
i ; ; M: (2.5)

La construction d’un codeur instantané n’est possible que si les longueur li vérifient le théorème de Kraft.
Ensuite, il suffit de suivre les étapes suivantes :
1) On place d’abord E1 =0 :

2) i=1.
3) On construit le i-ème intervalle : Ii (2.5).
4) On déduit Ei+1 = Ei +2 l i.
5) i = i + 1 puis revenir à 3) tant que i < M .
Bien évidemment, on déduit facilement les étiquettes Ei à partir des Ei puisqu’on connaı̂t les li :
La figure 2.1 montre une application de la méthode des intervalles pour les longueurs suivantes l =
PM
f1 2 3 3g
; ; ; : Ces longueurs vérifient bien le théorème de Kraft : 2 i = 1. Suite à l’utilisation de la
i=1
l

méthode des intervalles, les étiquettes obtenues sont E = f = 0 = 10 = 110 = 111g.


E1 ; E2 ; E3 ; E4

Pour passer d’une étiquette à la suivante, il suffit de rajouter 1 en dernière position puis de compléter
éventuellement par des zéros afin d’avoir la bonne longueur.
Exercice : Construire un code instantané ayant pour longueur l = f1; 3; 5; 5; 5; 6; 7; 7; 7g :

F IG . 2.1 – Illustration de la méthode des intervalles.


12 Le codage de source

2.4 Construction des codes optimaux

2.4.1 Quelques conditions nécessaires sur les longueurs optimales

On cherche à construire un codeur source optimal c’est à dire dont les étiquettes possèdent des
longueurs minimisant le taux de compression :

PM
Rs = log ( ) i=1
pi li
: (2.6)
2 M

où pi = ( = ) = ( = ) et
p E Ei p U Ui li est la longueur en nombre de bits de Ei :
Bien évidemment, il faut que le codeur soit instantané pour faciliter le décodage. Ainsi, les li doivent
aussi vérifier le théorème de Kraft :

X
M

2 i 1
l
: (2.7)
i=1

Puisqu’on s’intéresse à la construction de codeurs entropiques sans pertes, la borne inférieure du taux de
compression est donnée par

PM  
PM log
= log ( )  log (( ) ) =
1
i=1
pi li H U i=1
pi 2 p i
Rs
2 M 2 M log ( ) 2 M
: (2.8)

Pour minimiser le taux de compression, il suffit d’associer aux symboles de source les plus probables les
plus courtes étiquettes.
Proposition 2.1 : A l’optimum, le codeur vérifie la propriété suivante : si pi < pj alors li  lj .
Preuve : On démontre ce résultat par l’absurde. Si pi < pj et li < lj alors il suffit d’intervertir les
étiquettes associées aux symboles i et j de la source pour trouver un taux de compression inférieur :

pi lj + pj li < pi li + pj lj ;

car

(
pi lj li )+ ( pj li lj )=( pi pj )( lj li ) 0
< :

PM
Proposition 2.2 : A l’optimum, i=1
2 i = 1.
l

PM
Preuve : On démontre ce résultat par l’absurde. Si i=1
2 li < 1 alors P 2 M
i=1
i
l
1 2 lmax
où
lmax = max f g =
i
li limax : Donc

X
2 i +2
l (lmax 1)
1 :

6
i=imax
2.4 Construction des codes optimaux 13

On peut donc réduire lmax de 1 pour obtenir un taux de compression plus faible tout en vérifiant le
PM
théorème de Kraft ainsi le jeux de longueurs initial n’est pas optimal et i=1
2 i =1
l
:

Proposition 2.3 : A l’optimum, on a nécessairement un nombre pair d’étiquettes de longueur maximales.


PM
Preuve : Ce résultat découle de la proposition précédente. En effet, pour que i=1
2 i = 1 il faut avoir
l

un nombre pair d’étiquettes de longueurs maximales.

2.4.2 Les longueurs optimales

D’après (2.8), si pi est l’inverse d’une puissance de 2; on pourra atteindre la limite de Shannon en
 
prenant li = log 2
1
p i . On déduit ensuite les étiquettes grâce à la méthode des intervalles.
Exemple : On considère une source de cardinal 4 ayant pour distribution de probabilité p =f =1 2
p
1 = ;

p2 =14= ; p3 = p4 = 1 8g = : On en déduit les longueurs optimales l = f1 2 3 3g


; ; ; : Puis grâce à la
méthode des intervalles les étiquettes E = f0 10 110 111g ; ; ; : Dans ce cas, on vérifie qu’on a bien atteint
la limite de Shannon : Rs = H= 2=7 8 = :

Lorsque pi n’est pas l’inverse d’une puissance de 2; on peut songer à choisir li comme étant l’entier
  l  m
immédiatement supérieur à log 2 p
1
i :l i = log 2
1
pi : Le jeux de longueurs qu’on trouve peut ne
pas être l’optimal.
Exemple : On considère une source de cardinal 5 ayant pour distribution de probabilité p=l f = 1 m
p
1 4 = ;

p2 =14= ; p3 = 0 2 = 0 15 = 0 15g Les longueurs déduites de la relation


: ; p4 : ; p5 : : li = log i2
1
p

sont égales à = f2 2 3 3 3g Le taux de compression vaut alors


l ; ; ; ; : = 2 5 log (5) Or, la limite de Rs : = 2 :

Shannon vaut log ( ) = 2 2855 log (5). On constate que le jeux de longueurs n’est pas optimal.
H= 2 M : = 2

En effet, le meilleur choix est = f2 2 2 3 3g dont le taux de compression est le plus proche de la
l ; ; ; ;

borne de shannon : = 2 3 log (5)


Rs : = 2 :

Proposition 2.4 : A l’optimum, le taux de compression est borné par

( ) H U ( ) + 1
H U

log ( ) 2 M
Rs <
log ( ) log ( )
2 M 2 M
(2.9)

Preuve : L’inégalité de gauche est bien sûr celle du théorème de Shannon pour le codage de source.
l  m
L’inégalité de droite provient du fait que li = log 2
1
pi donne un taux de compression qui vérifie
bien le théorème de Shannon. Or


log 1 li < log

1+1 ;
2 2
pi pi

d’où

( ) ( ) 1
log ( )  log ( ) + log ( )
H U H U
Rs < :
2 M 2 M 2 M
14 Le codage de source

2.4.3 L’algorithme de Huffman

L’algorithme de Huffman a été inventé en 1952, il permet la construction d’un codeur source optimal
et instantané. Il est basé sur la réduction de Huffman qui permet de passer d’un problème P d’ordre M
dont les probabilités sont classées par ordre décroissant : p1  p2    pM au problème P 0 d’ordre
M 1 suivant

p1
0 = p1 ; p2
0 = p2 ;  ; pM
0 = pM
0
2 ; pM = pM 1 + pM : (2.10)
2 1

Proposition 2.5 : Les étiquettes E0 sont optimales pour le problème P 0 , Les étiquettes E suivantes

Ei = 0 8 = 1
Ei ; i M 2 ; EM 1 =[ 0 EM 1 0] et EM =[ 0EM 1 1]
sont optimales pour le problème P:
Preuve : Nous allons rechercher une relation entre les taux de compression des problèmes P et P0 :

X
M
X2
M

Rs log ( ) = = 0 0 +p +
2 M pi li pi li M 1 lM 1 pM lM

i=1 i=1

X2
M

= 0 0 + l0
pi li +1 ( pM 1 + pM )
M 1
i=1

X2
M

= 0 0 + l0
pi li +1 0 pM
M 1 1
i=1

= Rs
0 log ( 1) + 0
2 M pM 1:

Ainsi, les étiquettes E0 minimisent Rs0 sssi les étiquettes E minimisent Rs .


L’algorithme de Huffman comporte les étapes suivantes :
1) Classez les probabilités par ordre décroissant : p1    
p2 pM

2) Faire plusieurs réductions de Huffman jusqu’au problème d’ordre 2. Après chaque réduction, il faut
classer de nouveau les probabilités par ordre décroissant.
3) Quand on arrive au problème d’ordre 2, on attribue par exemple les étiquettes 0 et 1 respectivement au
symbole le plus probable et au symbole le moins probable. Ensuite, on déduit les étiquettes du problème
d’ordre 3 grâce à la proposition 2.5 et ainsi de suite jusqu’à aboutir au problème initial : si 0
E est
M 1
   
l’étiquette du symbole de probabilité p0M 1
= pM 1 + pM alors EM 1 = 0 E
M 1
0 et EM = 0 E
M 1
1
sont respectivement les étiquettes des symboles de probabilité pM 1 et pM : Dans les deux cas, le bit
rajouté est en dernière position. Les étiquettes des symboles qui n’ont pas été scindés restent bien sûr les
mêmes.
2.4 Construction des codes optimaux 15

Exemple : On considère une source de cardinal 5 ayant pour distribution de probabilité p =f =1 4


p
1 = ;

p2 =1 4
= ; p3 =02
: ; p4 = 0 15
: ; p5= 0 15g En utilisant l’algorithme de Huffman (voir la figure 2.2),
: :

on obtient les étiquettes suivantes E= f10 01 11 000 001g On vérifie aisément que ce codeur est
; ; ; ; :

instantané et qu’il est optimal :Rs = 2 3 log (5)


: = 2 :

Exercice : = f0.35, 0.2, 0.2, 0.15, 0.05, 0.025, 0.025g


p :

F IG . 2.2 – Illustration de l’algorithme de Huffman.


16 Le codage de source

2.5 TD 1 : Codage de source

Exercice I :

Pour enregistrer efficacement les patients d’un hôpital, on envisage deux solutions pour sauvegarder leurs
groupes sanguins. Pour cela, l’hôpital dispose des statistiques illustrées dans le tableau ci-dessous.

Première solution : coder le groupe sanguin entier


1) Donner la longueur moyenne des codes (étiquettes) obtenus en codant de façon optimale le groupe
sanguin entier (groupe sanguin + rhésus).
2) En déduire le taux de compression.
3) Quel est l’entropie de la source ainsi considérée et vérifier le premier théorème de Shannon.
Deuxième solution : coder le groupe sanguin et le Rhésus séparément
4) Donner la longueur moyenne des codes (étiquettes) obtenus en codant de façon optimale le groupe
sanguin et le rhésus séparément.
5) Déterminer le taux de compression de cette deuxième solution et déduire la solution à retenir.

Exercice II :

Soit = ( ) une source d’alphabet = f


S A; P A g et de distribution de probabilité
A1 ; A2 ; A3 ; A4 ; A5

( = ) = 0 3 ( = ) = 0 2 ( = ) = 0 2 ( = ) = 0 2 et ( = ) = 0 1.
P S A1 : ; P S A2 : ; P S A3 : ; P S A4 : P S A5 :

Construire un code instantané ayant la distribution de longueurs suivantes f =1, =2, =3, =3, =4g
l1 l2 l3 l4 l5

et f =2, =3, =3, =3, =4g.


l1 l2 l3 l4 l5

Les codes obtenus sont-ils optimaux ?


Chapitre 3

Les codes en bloc linéaires

3.1 Généralités sur les codes correcteurs et détecteurs d’erreurs


k
Un code correcteur ou détecteur d’erreurs C est une application d’un ensemble A vers un sous
ensemble de A où A est ensemble de cardinal fini jAj et n > k . Il est noté C (k; n) où k est la dimension
n

du code c’est le nombre d’éléments d’information par mot de code. Une grande classe des codes utilisés
dans les systèmes de transmission est binaire, dans ce cas l’ensemble A est noté A2 = f0 1g. Un
;

code correcteur ou détecteur d’erreurs consiste donc à associer à des mots d’information, formés de k

éléments de l’ensemble A, des mots de codes formés de n éléments de A. Cette application est bien sûr
bijective, ce qui fait que le nombre de mots de codes est inférieur au cardinal de An . n k est le nombre
d’éléments de redondance rajoutés par le code. Le rapport k=n porte le nom de rendement du code, il est
souvent noté Rc . Il donne le pourcentage de bits d’information dans les bits émis. La figure 3.1 montre
le principe du codage correcteur ou détecteur d’erreurs.
Lorsqu’on construit un code correcteur ou détecteur d’erreurs, on cherche à espacer les mots de codes
ceci permet d’augmenter la capacité de correction et de détection d’erreurs. On montrera un peu plus loin
que cette capacité est liée à la distance minimale du code :

( ) = x y2minet x6 y f (x y)g
d C
; C =
d ; ; (3.1)

où

X
n

d (x y) =
; d ( xi ; yi ) ; (3.2)
i=1

xi et yi sont respectivement le i-ème élément de x et y. Dans le cas binaire, la distance utilisée est la
distance de Hamming définie par :
18 Les codes en bloc linéaires

dH ( xi ; yi )= X OR (
xi ; yi )=:
< 1 si xi 6= yi
: (3.3)
0 si xi = yi

Exemple : On considère un codeur binaire dont les mots de codes sont composés de n = 4 bits. On donne

= f0000 0011 1111 1100 0101 0110 1010 1001g


C ; ; ; ; ; ; ; :

On déduit k =log (j j) = 3 d’où


2 C = 3 4 et ( ) = 2.
Rc = d C

F IG . 3.1 – Principe du codage correcteur ou détecteur d’erreurs.

3.2 Définition des codes en bloc linéaires

Un code linéaire ( ) est une application linéaire de


C k; n A
k
vers A
n
. Une combinaison linéaire de
mots de codes est donc un mot de code. Pour les codes binaires, on utilise les opérations d’addition et de
multiplication modulo deux illustrées dans le tableau 3.1.

a b ab a + b

0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0

TAB . 3.1 – Addition et multiplication dans A2 .

On note g l’application permettant de définir les mots de code, m est le mot d’information et c est le mot
de code associé :

A
k
! A
n
(3.4)

m ! c = g(m)
3.3 La matrice génératrice 19

Nous allons nous consacrer dans ce chapitre à l’étude des codes binaires.

3.3 La matrice génératrice

Soit e = (e1 ; e2 ;    ; ek ) une base de Ak2 . Le mot d’information peut donc s’écrire

X
k

m= mi e: i (3.5)
i=1

Etant donné que le code est linéaire alors

X
k

c = g(m) = mi g (e ) i : (3.6)
i=1

On exprime ensuite g (ei ) dans une base e0 = (e01 ; e02 ;    ; e0n ) de An2 :

X
n

g (e ) =
i gij e0 :j
(3.7)
j =1

On en déduit

X
n

c = g(m) = cj e0 ;
j
(3.8)
j =1

où

X
k

cj = mi gij :

i=1

Sous forme matricielle, le mot de code c = (c1 ; c2 ;    ; cn ) associé au mot d’information m = ( m1 ; m2 ;  ; mk )
est donné par

c = mG; (3.9)

où G est une matrice k  n; G(i; j ) = gij . G est une matrice génératrice du code, elle est donnée par
2 3 2 3
6
g (e ) 1
7 6
g11 g12  g1n
7
6
6 (e ) 7
7
6
6  7
7
G= =
g 2 g21 g22 g2n
6 7 6 7: (3.10)
6 .. 7 6 .. .. .. .. 7
6 . 7 6 . . . . 7
4 5 4 5
g (e ) k gk 1 gk 2  gkn

D’après (3.6), les lignes de G sont des mots de codes qui constituent une base de l’ensemble des mots
de code C . On en déduit que rang (G) = k . Il est à noter que G n’est pas unique puisqu’elle dépend du
20 Les codes en bloc linéaires

choix des bases e et e0 . En effet, permuter deux vecteurs de la base e (resp. e0 ), entraı̂ne la permutation
de deux lignes (resp. deux colonnes) de G. De même, si on remplace el par une combinaison linéaire
de el et ej , ceci aura comme conséquence de remplacer la l-ème ligne de G par la combinaison linéaire
des l-ème et j -ème lignes. Il est à noter enfin que remplacer e0l par une combinaison linéaire de e0l et e0j
n’aura pas comme conséquence de remplacer la l-ème colonne de G par la combinaison linéaire des
colonnes correspondantes.
Exemple : code de parité C (2; 3); e1 = 10 ; e2 = 01; e01 = 100; e02 = 010 et e03 = 001:
2 3 2 3
(e ) = e0 + e0 1 0 1
G =4 5=4
g 1 1 3
5:
g (e ) = e0 + e0
2 2 3 0 1 1
La figure 3.2 montre le schéma principe de ce codeur à base de portes XOR.

F IG . 3.2 – Schéma principe d’un codeur en bloc à base de portes XOR.

En faisant des permutations dans les bases e et e0 ainsi que des combinaisons linéaires dans la base e, on
peut toujours mettre G sous forme systématique

G = [I P] =) c = [m mP] ;
k (3.11)

où P est une matrice k  (n )


k : Le code est alors dit sous forme systématique car les bits d’information
apparaissent au début du mot de code.

3.4 Code dual et matrice de contrôle de parité


Pn
Rappelons d’abord que deux vecteurs x et y sont orthogonaux sssi i=1
x i yi =0 : A tout code en
bloc linéaire C , on peut associer un code en bloc linéaire dual noté C
?. Tout mot de code de C? est
orthogonal à tous les mots de codes de C . On montre que C? est composé de 2n k
mots de codes. La
matrice génératrice de C? est appelée matrice de contrôle de parité de C (k; n), elle est souvent notée H.
Cette matrice permet de vérifier si y 2 An2 est un mot de code :
3.5 Principe de la détection et de la correction d’erreurs 21

y 2 C , yc T
= 0 8c 2 ? ; C : (3.12)

Or c = mH, donc

y 2 C , yH T
=0 : (3.13)

On utilise donc H pour détecter les erreurs de transmission.


Remarque : C et C ? ne sont pas forcément complémentaire.
Proposition : La matrice de contrôle de parité d’un code C de matrice génératrice G = [Ik P] est donnée
par
 
H= P I
T
n k 2 Mn k;n ; (3.14)

cH? = 0; 8c 2C , GH = 0 T
;

On en déduit que

 
H= P I T
n k :

Pour les codes binaires

 
H= P I T
n k :

3.5 Principe de la détection et de la correction d’erreurs

3.5.1 Détection d’erreurs

Le canal de transmission est modélisé par un Canal Binaire Symétrique (CBS). Le mot reçu r suite à
la transmission de c est alors donné par

r = c + e; (3.15)

où e(i) = 1 s’il y a eu une erreur de transmission en i -ème position de c. Le CBS est représenté dans la
figure 3.3 où p est la probabilité d’erreur.
La détection d’erreur se fait en calculant le syndrome s obtenu grâce à la matrice de contrôle de parité :

s = rH T
= (c + e) H = eH T T
: (3.16)
22 Les codes en bloc linéaires

F IG . 3.3 – Le Canal Binaire Symétrique.

Le syndrome est donc une ligne à n k composantes. Si s = 0 alors r 2 C et le décodeur canal décide
c= r où bc est le mot de code estimé par le décodeur.
qu’il n’y a pas eu d’erreur de transmission : b
Remarque : Si le syndrome est nul ceci ne veut pas dire qu’il n’y a pas eu des erreurs de transmission car
il existe des erreurs indétectables : s = 0 , e 2 C.

3.5.2 Régle de décodage et de correction d’erreurs

En présence d’erreurs de transmission détectées par le décodeur (s 6= 0), la règle de décodage


c le plus proche de r :
consiste à rechercher le mot de code b

c
b = arg min f (r c)g
dH ; : (3.17)
c

Ceci nécessite de comparer la distance entre le mot reçu et les 2 k


mots de codes. Si k est grand, cette
recherche devient très complexe. Pour cela, on préfère utiliser le syndrome dont le nombre de configu-
ration 2n k
est généralement inférieur à 2k . Or le nombre de configurations non nulles de e; 2n 1, est
supérieur au nombre de configuration non nulles de s. Ainsi, il existe des erreurs qui génèrent le même
syndrome. La règle de décodage (3.17), nous dit qu’il faut prendre l’erreur de poids minimal. Il suffit
c = r + e.
ensuite de faire la correction : b
Exemple : On considère le code C (6; 3) de matrice génératrice

2 3
1 0 0 0 1 1
6 7
G = 64 0 1 0 1 0 1 7:
5
0 0 1 1 1 0
On en déduit

2 3
0 1 1 1 0 0
6 7
H =4 1 0 1 0 1 0
6 7:
5
1 1 0 0 0 1
3.5 Principe de la détection et de la correction d’erreurs 23

s e

000 000000
001 000001
010 000010
100 000100
110 001000
101 010000
011 100000
111 001001
TAB . 3.2 – Tableau de décodage.

Il y a 2
= 8 configurations possibles du syndrome. On a dressé dans le tableau 3.2 les erreurs de
n k

poids minimales permettant de générer les divers syndrome s = eH . On peut bien sûr trouver plusieurs
T

erreurs de poids minimal auquel cas on en choisit une arbitrairement.


Ainsi, pour cet exemple, le décodeur corrige toute erreur de poids 1 se produisant lors de la transmission.
Cependant, il ne peut pas corriger les erreurs de poids supérieur ou égal à 2.

3.5.3 Pouvoir de correction et de détection d’erreurs

Proposition : Un code C (k; n) de distance minimale d(C ) peut détecter d(C ) 1 erreurs et en corriger
 
E
d(C )
2
1
où E (x) est la partie entière de x.
Preuve : Soit ci le mot de code émis et soit cj son plus proche voisin, alors on a

(
dH ci ; cj )= ( )
d C :

En appelant r le mot reçu, nous avons

( )=
d C (
dH ci ; cj ) (
dH ci ; r )+ (
dH cj ; r : ) (3.18)

Ainsi toutes les erreurs pourront être détectées si dH (cj ; r )  1 c’est à dire si dH (ci ; r )  d(C ) 1:

Supposant maintenant que d(C ) = 2 +1t : Si le nombre d’erreurs est inférieur à t alors dH (ci ; r ) t;

on en déduit d’après (3.18) que

(
dH cj ; r ) ( ) d C (
dH ci ; r )  +1
t :

Ainsi ci est le plus proche voisin de r et l’erreur de transmission est corrigée. Dans le cas où d C ( )=
2 +2
t ; on montre de la même façon qu’on peut corriger t erreurs. S’il y a eu t + 1 erreurs, le mot reçu se
24 Les codes en bloc linéaires

trouve au milieu de deux mots de codes et la décision est faite de façon arbitraire. On ne peut pas donc
considérer que les erreurs de transmission ont été corrigées.

3.5.4 Détermination de d(C )

Nous avons vu dans la section 3.5.2 que le décodage des codes en bloc peut se faire en recherchant
le mot de code le plus proche du mot reçu. La capacité de correction et de détection d’erreurs d’un code
en bloc est liée à sa distance minimale, il est donc important de la déterminer. Le calcul de d C ( ) n’est
pas simple à faire en général sauf si le nombre de mots de codes est suffisamment petit. Etant donné la
linéarité du codeur, il suffit de prendre le mot de code non nul de poids minimal :

( ) = x2 min
d C
et x6 0
C
f (x 0)g
=
d ; : (3.19)

Si le nombre de mots de codes devient très grand, on peut utiliser la matrice de contrôle de parité pour
calculer d(C ).

Proposition : ( ) est le plus petit nombre de colonnes linéairement dépendantes de la matrice de


d C

contrôle de parité.

Preuve : On sait que d(C ) est le poids minimal des mots de codes non nuls. En tenant compte du fait que
cH T
= 0 pour le mot de code de poids minimal. On en déduit que la somme de ( ) colonnes de H est
d C

égale à zéro. Ceci montre que le nombre minimal de colonnes linéairement dépendantes est inférieur à
( ). S’il y a moins de ( ) colonnes dépendantes de H ceci implique qu’on a un mot de code de poids
d C d C

inférieur strictement à ( ) ce qui est bien sûr absurde. Ainsi, ( ) est le plus petit nombre de colonnes
d C d C

linéairement dépendantes de H.

Si le calcul de ( ) à partir de H s’avère aussi difficile, on peut se contenter de déterminer une borne
d C

supérieure de d ( ). Dans l’écriture sous forme systématique de H :


C

 
H= P I T
n k ;

n’importe quelle colonne de P est dépendante de toutes les colonnes de In k , ainsi on a n k +1


colonnes dépendantes de H d’où

( )
d C n k +1 : (3.20)
3.6 Exemple de codes en bloc linéaires 25

3.6 Exemple de codes en bloc linéaires

3.6.1 Le code de parité

Ce code rajoute un seul élément de redondance (n = k + 1) déterminé de façon à annuler la somme


des éléments binaires de chaque mot de code :

c = [m1 ; m2 ;  ; mk ; ck +1 ; ] (3.21)

où

X
k

ck +1 = mi :

i=1

Ainsi, le mot de code non nul de poids minimal est 110    0 d’où d(C ) = 2. Le code de parité ne permet
de corriger aucune erreur mais seulement à détecter les erreurs de poids impair. La matrice génératrice
de ce code est donc donnée par

2 3
6
1 7
G=6 . 7
6I .. 7 : k (3.22)
4 5
1
On en déduit que

H = [1    1] :

Le syndrome est donc la somme des bits du mot reçu.

3.6.2 Le code à répétition

Il consiste à répéter un nombre impair de fois l’élément binaire à transmettre (k = 1 et = 2 +1) :


n M

c = [m1 ; m1 ;  ]
; m1 : (3.23)

Ainsi

G = [1    1] : (3.24)

On en déduit que
26 Les codes en bloc linéaires

2 3
6
1 7
H=6 . 7
6 .. I2 7 : M
4 5
1
La distance minimale est égale à 2M + 1. Le pouvoir de détection vaut 2 M et le pouvoir de correction
vaut M .

3.6.3 Le code de Hamming

Pour un code de Hamming, les colonnes de la matrice H sont composées de toutes les combinaisons
possibles de n k bits sauf la combinaison toute à zéro. Ainsi le nombre de colonnes de H, n, est égal
à 2n k
1. Si on pose = m n k , alors

n =2 m
1 et =
k n m = 2m m 1: (3.25)

Proposition : La distance minimale d’un code de Hamming est égale à 3 quelque soit k et n.
Preuve : d(C) est le plus petit nombre de colonnes linéairement dépendantes de H. Les colonnes de H
d’un code de Hamming sont toutes différentes donc ( ) 2
d C > : Les colonnes de H étant composées de
toutes les combinaison possibles de n k bits sauf la combinaison nulle, on en déduit que la somme de
deux colonnes de H est égale à une autre colonne d’où d(C ) = 3.
Un code de Hamming permet donc de corriger une erreur et d’en détecter deux. Le décodage est très
simple à faire car le syndrome est égal à une colonne de H. Le décodeur décide alors que l’erreur s’est
produite en la position de la colonne de H trouvée :

0 1
B
H(:; 1) C T

X
n

s = rH T
= eH = (    ) B
T
B
@
e1 en
..
.
C
C
A
= ei H(:; j )
T
= H(: ); j0
T
;

H(:; n)
j =1
T

j0 étant le numéro de la colonne trouvée. Ainsi, le décodeur estime que l’erreur s’est produite sur le bit
numéro j0 .
Exemple : m = 3 donc k = 4 et = 7n

2 3
1 1 1 0 1 0 0
6 7
H=4 1 1 0 1 0 1 0
6 7:
5
1 0 1 1 0 0 1
On en déduit
3.7 Performances des codes en bloc linéaires 27

2 3
1 0 0 0 1 1 1
6 7
6 0 1 0 0 1 1 0 7
6 7
G=6 7 :
6 0 0 1 0 1 0 1 7
4 5
0 0 0 1 0 1 1
Si le récepteur reçoit r = (1001011) alors s = (111) et le récepteur décide que l’erreur est en première
c = (0001011)
position : b :

3.6.4 Le code à longueur maximale

Les colonnes de la matrice génératrice d’un code à longueur maximale sont composées de toutes les
combinaisons possibles de k bits sauf la combinaison nulle. Ceci implique que n = 2m 1 avec = . k m

On montre que d(C ) = 2m 1


et que c’est le code dual du code de Hamming de paramètres = 2 1 n
m

et k =2 m
m 1. La matrice génératrice du code à longueur maximale est la matrice de contrôle de
parité du code de Hamming.

3.7 Performances des codes en bloc linéaires

Il s’agit de déterminer la probabilité d’erreur binaire après décodage canal. Le canal de transmission
est modélisé par un Canal Binaire Symétrique (CBS) de probabilité d’erreur p. p est la probabilité d’er-
reur binaire avant décodage canal. Pour un système de transmission utilisant une modulation MDA-2
(Modulation à Déplacement d’Amplitude à 2 états) et en présence d’un canal gaussien, on a

r !
p = Q
2 E
; (3.26)
N0

où E est l’énergie moyenne des bits émis et N0 est la variance du bruit.
 
Si lors de la transmission se produisent moins de t = E d(C )
2
1
erreurs, elles sont corrigées. Sinon, le
décodeur va rajouter au maximum t erreurs en tentant de corriger. On en déduit une borne supérieure de
la probabilité d’erreur binaire après décodage :

Peb 
X
n
i + t
Cn p
i i
(1 p )
n i
: (3.27)
n
i=t+1

Les erreurs étant indépendantes, le terme Cn p


i i
(1 p) n i
correspond à la probabilité d’avoir i erreurs
i+t
dans un paquet formé de n bits. Le terme n
est le pourcentage d’erreur après décodage.
A fort RSB (Rapport Signal à Bruit) p << 1 et la probabilité d’erreur après décodage peut être ap-
proximée par
28 Les codes en bloc linéaires

Peb  2 +1 t

n
Cn
t+1
p
t+1
: (3.28)

Ainsi cette dernière expression donne le comportement asymptotique ( à fort RSB) de la probabilité
d’erreur binaire après décodage canal. Lorsqu’on compare les performances de systèmes de transmission
avec et sans codage canal, on doit le faire pour une même énergie moyenne dépensée par bit d’informa-
tion utile souvent notée Eb . Or pour transmettre k bits d’information, le système avec codage canal émet
n bits d’où

Eb = nE

k
= E

Rc
: (3.29)

Ainsi la redondance transmise entraı̂ne une perte de 10 log ( ). Par exemple, pour un codeur en bloc
10 Rc

de rendement Rc = 1 2, on a une perte de 3


= dB à cause de la redondance transmise. En utilisant (3.26),
on obtient

r !
p = Q
2Eb Rc
: (3.30)
N0

La figure 3.4 compare les performances d’un système de transmission sans codage canal à celui utilisant
un code de Hamming pour m = 3; 4 et 5: Les performances du système avec codage ont été tracée grâce
à (3.27) et (3.30). Ces différents codes possèdent la même capacité de correction puisque ( )=3
d C

quelque soit m: Cependant, ils possèdent des rendements différents. En effet, pour m = 3, = 4 7,
Rc =

pour m = 4, Rc = 11 15 et pour
= m = 5, Rc = 26 31. Quand
= m augmente le rendement du code
augmente ce qui veut dire qu’on transmet moins de redondance d’où une moindre perte en dB. Ceci est
vérifié dans la figure 3.4 où les performances du code de Hamming s’améliorent quand m augmente. A
faible RSB, on constate que le gain apporté par le codage est inférieur à la perte due à la redondance
transmise ainsi la probabilité d’erreur du schéma avec codage est supérieure à celle du schéma sans
codage. Cependant à fort RSB, on constate que le codage canal permet de réduire la probabilité d’erreur
binaire.
3.8 TD 2 : Les codes en bloc linéaires 29

0
10
Sans codage
Code de Hamming : m=2
−1
Code de Hamming : m=3
10 Code de Hamming : m=4

−2
10

−3
10

eb
−4
10

P
−5
10

−6
10

−7
10

−8
10
0 1 2 3 4 5 6 7 8 9 10
Eb/N0 (dB)

F IG . 3.4 – Comparaison des performances d’un système de transmission sans codage canal à celui utili-
sant un code de Hamming pour m=3, 4 et 5.

3.8 TD 2 : Les codes en bloc linéaires

Exercice I :

On considère le code en bloc binaire linéaire qui aux bits informations (u0 ; u1 ; u2 ; u3 ) associe le mot de
code suivant (u0 ; u1 ; u2 ; u3 ; v0 ; v1 ; v2 ) où

8
>
>
<
v0 = u0 + + u2 u3

>
v1 = u0 + + u1 u2 :
>
:
v2 = u1 + + u2 u3

1. Donner la longueur n et la dimension du code k .


2. Donner sa matrice génératrice sous forme systématique.
3. En déduire sa matrice de contrôle de parité sous forme systématique.
4. Déterminer la distance minimale de ce code. En déduire son pouvoir de détection et de correction
d’erreurs.
5. Définir le syndrome d’un mot reçu r. Quelle relation existe-t-il entre le syndrome et la configuration
d’erreur entachant le mot reçu r ?
6. Remplir le tableau de décodage qui donne la configuration d’erreur de poids de Hamming minimal
pour chaque syndrome possible.
30 Les codes en bloc linéaires

7. Pour chacun des mots reçus suivants r = (0110001), r = (1011000) et r = (1011111), dire si le mot
reçu est erroné ou non, quel est le mot de code et le mot information les plus vraisemblables. Justifier
vos réponses.

Exercice II :

On considère un code binaire de Hamming C (7; 4).


1. Montrer que u = (1111111) est un mot de code de C
2. En déduire le nombre de mots de codes de poids pair et de poids impair. On rappelle que le poids d’un
mot de code est le somme de ces bits.
Indication : Comment peut-on associer un mot de code de poids pair à un mot de code de poids impair.
3. Donner la matrice de contrôle de parité H0 du code C 0 obtenu à partir de C en ne gardant que les mots
de codes de poids pairs.
4. En déduire la distance minimale, d0min , de C 0 .

Exercice III :

On considère un code en bloc linéaire C dont la matrice génératrice est donnée par

0 1
1 1 0 0 1 1
B C
G=B
@ 0 1 1 1 1 0 C;
A
0 1 1 0 0 1
exprimée dans les bases canoniques de Ak2 et An2 où A2 = f0 1g
;

1. Donner la longueur n, la dimension k et le rendement Rc de ce code.


2. Donner deux nouvelles bases de Ak2 et An2 qui permettent d’écrire G sous une forme systématique.
3. Expliquer l’intérêt de mettre G sous une forme systématique.
4. Calculer la matrice de contrôle de parité H de ce code.
5. Quel est la distance minimale d(C ) de ce code ? Interpréter ce dernier résultat.
6. Déterminer la table de décodage de ce code qui permet de déterminer l’erreur de poids minimal pour
les différents syndromes.
7. Le récepteur a reçu r = (111011), exprimé dans la nouvelle base, quelle est sa décision ?
8. Le récepteur a reçu r = (111011), exprimé dans l’ancienne base, quelle est sa décision ?
3.8 TD 2 : Les codes en bloc linéaires 31

Exercice IV :

On modifie le code de Hamming C (k; n) en ajoutant à chaque mot de code un élément binaire de parité.
Les mots de code du code de Hamming modifié C0 sont alors donnés par

c0 = (c c n+1 ) ;

où c = (c1 ; c2 ;  ; cn ) est un mot de code de C et

X
n

cn+1 = ci :

i=1

1. Exprimer la matrice de contrôle de parité H0 du code C 0 en fonction de celle du code C .


2. En déduire la distance minimale, d
0 , du code de Hamming modifié et en déduire son pouvoir de
min

correction et de détection d’erreurs.


3. En considérant une redondance de n k = 3 bits, donner une matrice de contrôle de parité du code
C
0.
c le plus proche de r = (11111110).
4. Déterminer le mot de code b
32 Les codes en bloc linéaires
Chapitre 4

Les codes cycliques

4.1 Définition

C’est la classe la plus utilisée des codes en bloc linéaires grâce à la simplicité de sa mise en oeuvre
qui nécessite uniquement des portes XOR et des registres à décalage.
Un code en bloc linéaire (
C k; n ) est dit cyclique si les mots de codes sont stables par permutation
circulaire à gauche :

c = (c1 c2  ) 2cn C )c =(1 c2 c3  cn c1 )2 C: (4.1)

Pour les codes cycliques, on préfère utiliser une représentation polynômiale des mots de codes. Le po-
lynôme associé à c est alors donné par

( )= +
c x c1 c2 x +  + cn x
n 1
: (4.2)

On en déduit que

x
1
( )= ( )+
c x c1 x c1 x
1
+ n
c1 x
1
; (4.3)

où c1 (x) est le polynôme associé au mot de code c1 .


On en déduit que

x
1
( ) = ( ) modulo (1 + )
c x c1 x x
n
: (4.4)

De même, on a

x
i
( ) = ( ) modulo (1 + )
c x ci x x
n
; (4.5)
34 Les codes cycliques

où ci (x) est le polynôme obtenu en permutant i fois à gauche le mot de code c.
Considérons à présent un polynôme g (x) de degré n k et diviseur de xn + 1 :

( )= +
g x g1 g2 x +  + gn k +1 x
n k
: (4.6)

On apelle h(x) le quotient de xn + 1 par g (x) :

x
n
+1= ( ) ( ) h x g x : (4.7)

Le degré de h(x) est égal à k .


Nous allons à présent montrer que tous les mots de codes d’un code cyclique peuvent être obtenus à
partir du produit d’un polynôme d’information par g (x). D’après (4.5), on a

ci x( )= x
i
( )+ ( ) ( ) ( )
c x qi x h x g x : (4.8)

Ainsi, si c(x) est un multiple de g (x) alors ci (x) est aussi un multiple de g (x) :

ci x( )= ( ) ( ) mi x g x ; (4.9)

où mi (x) est un polynôme d’information de degré k 1.


Ainsi chaque mot de code du code cyclique peut être obtenu en multipliant un polynôme d’information
mi x ( ) par ( ). Par analogie avec les codes en bloc, le polynôme ( ) est appelé polynôme générateur
g x g x

et h ( ) est le polynôme de contrôle de parité. A partir de ( ), on déduit aisément la matrice de contrôle


x g x

de parité dont on rappelle que les lignes sont des mots de codes formant une base de C :
0 1
B
()
g x
C
B C
B () C
=
xg x
B C: (4.10)
G
B .. C
B . C
@ A
x
k 1
()
g x

Les lignes de G sont bien sûr des mots de codes car multiple de g (x) et elles sont indépendantes car le
degré du polynôme xi g (x) croit avec i.
Exemple : C (7; 4)
( ) est de degré
g x n k = 3 et il divise + 1 :
x
7

1+ x
7
= (1 + + )(1 + + )(1 + ).
x x
3
x
2
x
3
x

Il y a donc deux choix possibles : g1 (x) = 1 + x + x3 et g2 (x) = 1 + x2 + x3 : Les matrices génératrices


associées sont données par :
4.2 Forme systématique 35

0 1
1 1 0 1 0 0 0
B C
B
B 0 1 1 0 1 0 0 C
C
G1 = B C;
B
@ 0 0 1 1 0 1 0 C
A
0 0 0 1 1 0 1
0 1
1 0 1 1 0 0 0
B C
B
B 0 1 0 1 1 0 0 C
C
G2 = B C:
B
@ 0 0 1 0 1 1 0 C
A
0 0 0 1 0 1 1

4.2 Forme systématique

Contrairement aux codes en bloc, on place le mot d’information en dernière position. Le polynôme
associé au mot de code est alors donné par :

( )= ( )+c x ( )= ( ) ( )
v x x
n k
m x (4.11)
k x g x ;

( ) est le mot d’information et ( ) est un polynôme de degré inférieur à


m x v x 1 n k :

Ainsi ( ) est le reste modulo 1 +


v x
n
de la division euclidienne de
x ( ) par ( ). Cette division x
n k
m x g x

peut être réalisée grâce à des registres à décalage et des portes XOR.
Exemple : C (7; 4), g (x) = 1 + x + x3 et m(x) = 1 + x2 + x3 :
Le calcul du reste de la division euclidienne de x3 m(x) par g (x) vaut un, d’où c(x) = 1 + x3 + x5 + x6 :

4.3 Décodage des codes cycliques

On rappelle que pour les codes en bloc linéaires, la détection et la correction d’erreurs est basée sur le
calcul du syndrome. Pour les codes cycliques, on détermine d’abord la version polynômiale du syndrome
( ). Puis on suit la même procédure que celle de décodage des codes en bloc. Pour les codes cycliques,
s x

( ) est obtenu à partir du rapport du polynôme associé au mot reçu par ( ) :


s x g x

( )= ( ) ( )+ ( ) r x q x g x (4.12)
s x :

Exemple : (7 4) ( ) = 1 + + et ( ) = 1 + +
C ; ; g x x x
3
m x x
2
Le mot de code sous forme systématique 3
x :

associé à ( ) vaut donc ( ) = 1 + + +


m x c x x
3 5
x x :
6
S’il se produit une erreur en 5-ème position alors
( ) = ( ) + Le calcul du reste de la division de ( ) par ( ) donne : ( ) = +
r x c x x :
4
r x g x s x x
2
x :

Pour conclure cette section, on donne le principe du décodeur de MEGGIT qui permet de localiser une
erreur de poids un : e(x) = xj où 0  j  n 1 : On a
36 Les codes cycliques

( )= ( ) ( )+ ( )
r x m x g x e x :

En utilisant (4.12), on déduit que

e x ( )= ( )+ ( ) ( )
s x g x f x :

D’où

i
x s x ( )= x
i+j
+ () () g x f x :

Ainsi, si i + j = n alors le reste de la division euclidienne de xi s(x) par g (x) est égal à 1 ce qui permet
de localiser la position de l’erreur.
Exemple : si on reprend l’exemple précédent, on constate que le reste de la division euclidienne de x3 s(x)
par g (x) vaut 1 donc e(x) = xn 3
= 4
x :

4.4 Exemples de codes cycliques

4.4.1 Les codes BCH

Les codes de Bose, CHaudhuri et Hocquenghem (BCH) sont la famille la plus importante des codes
cycliques. Pour tous entiers m et t, on peut construire un code BCH de paramètres : n = 2m 1 2
;k
m

1 mt et d(C )  2t + 1: Le calcul du polynôme générateur d’un code BCH nécessite d’introduire des
notions d’algèbre sur les corps de Galois. Nous n’allons pas aborder le calcul du polynôme générateur,
on donne juste quelques exemples de codes cycliques :
- n = 7, k = 4, = 1 et ( ) = 1 + +
t g x x x :
3

-n = 15, = 11 , = 1 et ( ) = 1 + +
k ; t g x x
3
x
4

4.4.2 Les codes de Golay

Le code de Golay est un code cyclique de paramètres n = 23 ; k = 12, de distance minimale


d C ( ) = 7. Il y a deux polynômes qui permettent d’engendrer un code de Golay :

g1 x ( )=1+ + + + + + x
5
x x
6
x
7
x
9
x
11
;

( )=1+ + + + +
g2 x x
2
x
4
x
5
x
6
x
10
+ x
11
:

L’intérêt de ce code c’est qu’il peut corriger 3 erreurs tout en ayant un rendement élevé. On l’utilise
souvent avec l’ajout d’un bit de parité ce qui donne un rendement égal à 1/2.
4.4 Exemples de codes cycliques 37

4.4.3 Les codes de Reed Solomon

Les codes de Reed Solomon sont des codes à éléments non binaires. Ils sont constitués d’éléments
q aires où q =2 m
: Chaque élément du code peut donc être représenté par un -uplet binaire. Les
m

paramètres de ce codes sont donnés par : n = q 1 ; k = n 2t et ( ) = 2 + 1. Ce code permet


d C t

donc de corriger t éléments q aires . En nombre d’éléments binaires, son pouvoir de correction est
inférieur à mt. En effet, prenant l’exemple d’un code de Reed Solomon de paramètres C (15; 11) dont le
pouvoir de correction est t = 2 éléments quaternaires : Ce code ne pourra corriger 8 éléments binaires
que s’ils sont sur deux éléments quaternaires successifs. Les codes de Reed Solomon sont bien adaptés
à la correction d’erreurs par paquets (burst). La détermination du polynôme générateur de ce code fait
aussi appel à des notions d’algèbre sur les corps de Galois.
38 Les codes cycliques

4.5 TD 3 : Les codes cycliques

Exercice I :
1. Donner un polynôme générateur du code cyclique C (7; 3). On donne

x
7
+ 1 = (1 + )(1 + + )(1 + + )
x x x
3
x
2
x
3
:

2. En déduire le polynôme de contrôle de parité.


3. Donner une matrice génératrice du code cyclique C (7; 3).
4. Coder de manière systématique le mot d’information suivant : m(x) = 1 + x.
5. Le récepteur reçoit r (x) = x3 + x4 + x5 , calculer le syndrome par division euclidienne.
6. Déterminer la décision du récepteur en utilisant le décodeur de Meggit.
Chapitre 5

Les codes convolutifs

5.1 Principe

Pour les codes convolutifs, chaque mot de code, composé de n bits, dépend non seulement du mot
d’information à l’entrée du récepteur mais aussi des m mots d’informations précédents. Les codes convo-
lutifs introduisent donc un effet de mémoire d’ordre m . m s’appelle mémoire du codeur et m + 1 est
la longueur de contrainte du code. Le principe du codeur convolutif est illustré dans la figure 5.1. Il est
constitué d’un registre à décalage à (m + 1)k étages mémorisant les m + 1 derniers mots d’informations
et de n portes XOR qui calculent les n bits des mots de codes à partir de certains étages du registre à
décalage. Un codeur convolutif est donc défini par la donnée de :
- Le nombre de bits qui rentrent à chaque fois dans le registre : k:
- La mémoire m:
- Le nombre de bits des mots de codes : n:
- Les connexions entre les portes XOR et les différents étages du registre.

F IG . 5.1 – Principe d’un codeur convolutif


40 Les codes convolutifs

Le qualificatif convolutif provient du fait que la sortie du codeur est le produit de convolution entre la
séquence binaire à coder et la réponse du codeur définie par ses séquences génératrices. Elles sont au
nombre de n et sont définies comme suit

 
g i
= i
g0 ;  ; g
i
(m+1)k 1
; (5.1)

où
8
< 1 si la -ème porte XOR est connectée au -ème étage du registre
=:
i j
i
gj :
0 sinon
Ainsi le l-ème mot de code en sortie du codeur vl est la convolution de l’entrée ul avec les séquences
génératrices :

(m+1)k 1
X
vl
i
= i
gj ul j; (5.2)
j =0

où vli est le i-ème bit de vl . La somme est faite modulo 2.


Etant donné que la sortie du codeur est une combinaison linéaire de son entrée, le codeur convolutif est
linéaire. La figure 5.2 montre l’exemple d’un codeur convolutif de rendement = 1 2 et de mémoire Rc =

m = 3. Son entrée est composée de mots d’information composés d’un seul bit = 1 et les mots k

de codes en sortie sont composés de =2 bits. Pour ce codeur les deux séquences génératrices valent
n

g = (1 1 1) = 7 en octal et = (1 0 1) = 5. On peut également donner les séquences génératrices


1
; ;
2
g ; ;

sous forme polynômiale :

(m+1)k 1
X
g
i
( )=
D
i
gj D :
j
(5.3)
j =0

Pour l’exemple de la figure 5.2, les polynômes générateurs sont : g1 (D ) = 1+D +D 2 et g2 (D ) = 1+D 2 .
Exemple : = 1 3, = 1, = 3, = 3, = (1 0 1 1) = 13 en octal, = (1 1 0 1) = 15
Rc = k n m g
1
; ; ; g
2
; ; ;

et = (1 0 1 0) = 12. La conversion en octal se fait donc de droite vers la gauche et le bit le moins
g
3
; ; ;

significatif est à droite. Pour cet exemple, les polynômes générateurs sont : ( ) = 1 + + , g
1
D D
2
D
3

g ( ) = 1 + + et ( ) = 1 + .
2
D D D
3
g
3
D D
2

5.2 Représentation des codes convolutifs

Les représentations les plus utilisées sont le diagramme d’état, l’arbre et le treillis. Tel que nous
l’avions souligné dans l’introduction, la sortie d’un codeur convolutif dépend non seulement de l’entrée
courante mais aussi des m précédentes entrées qu’on appelle état du codeur convolutif. Ainsi, l’état d’un
5.2 Représentation des codes convolutifs 41

F IG . 5.2 – Exemple d’un codeur de rendement Rc = 1 2 et de mémoire = 2.


= m

codeur convolutif peut prendre 2mk valeurs. En général, le registre à décalage est initialisé à zéro ce qui
fait que l’état de départ est l’état tout à zéro. Ensuite, lors du codage des différents mots d’information,
l’état du codeur va évoluer au cours du temps. Les différents diagrammes permettant l’étude du fonction-
nement d’un codeur convolutif diffèrent au niveau de la représentation de l’évolution des états au cours
du temps. Nous allons les décrire pour l’exemple de la figure 5.2.

5.2.1 Le diagramme en arbre

Pour l’exemple de la figure 5.2, nous avons 4 états possibles : a = 00, = 01, = 10 et = 11.
b c d

Le diagramme en arbre associé est illustré dans la figure 5.3. Dans ce diagramme, le temps s’écoule
de la gauche vers la droite. Etant donné que l’entrée du codeur est constituée d’un seul bit (k = 1),
de chaque état partent deux branches. Lorsque l’entrée est égale à 0 (resp. 1) la branche est montante
(resp. descendante). Le mot de code obtenu est noté entre parenthèses au niveau de l’état suivant. Ce
diagramme est surtout utilisé lors du décodage par l’algorithme de Fano.

5.2.2 Le diagramme d’état

Le diagramme d’état est une représentation du fonctionnement du codeur convolutif ne faisant pas
apparaı̂tre l’évolution du temps. Le diagramme d’état du codeur convolutif de la figure 5.2 est illustré
dans la figure 5.4. Lorsque le bit d’information à l’entrée du codeur est égal à 1 (resp. 0) la flèche
de transition est en trait fort (resp. trait pointillé). Cette représentation est utilisée pour déterminer la
fonction de transfert du codeur (voir la section 5.4.1). La fonction de transfert permet de déduire les
performances théoriques des codes convolutifs.
42 Les codes convolutifs

F IG . 5.3 – Le diagramme en arbre.

5.2.3 Le diagramme en treillis

Dans ce diagramme, on représente les différents états du codeur, la façon avec laquelle ils évoluent
au cours du temps et les mots de codes obtenus. Le diagramme en treillis du codeur de la figure 5.2
est illustré dans la figure 5.5. De même que le diagramme d’état, le trait de transition est en trait fort
(resp. trait pointillé) lors que le bit d’information est égal à 1 (resp. 0). Ce diagramme est utilisé par
l’algorithme de Viterbi pour le décodage des codes convolutifs.

5.3 Décodage : Algorithme de Viterbi

5.3.1 Le critère de Maximum de Vraisemblance :

Contrairement aux codes en blocs, il faut considérer l’ensemble des mots reçus pour estimer les mots
de codes émis et en déduire les mots d’information correspondants. En effet, tous les mots de codes
dépendent non seulement du mot d’information correspondant mais aussi des m mots d’informations
précédents. Donc, le mot reçu ne suffit pas pour décoder le mot d’information émis.
Nous allons maintenant présenter le critère de Maximum de Vraisemblance (MV) utilisé lors du
décodage. On appelle u la séquence de N mots d’informations à émettre

u = (u1    u N ) ; (5.4)

où ui =(ui1    uik ) est le i-ème mot d’information.


5.3 Décodage : Algorithme de Viterbi 43

F IG . 5.4 – Le diagramme d’état.

F IG . 5.5 – Le diagramme en treillis.

La séquence de mots de codes correspondante est notée

v = (v1    v N ) ; (5.5)

où vi =(vi1    vin ) est le i-ème mot de code.


En supposant que le canal est gaussien, le mot reçu est donné par
44 Les codes convolutifs

y = v + b;

où b = (b11 b12  bN n ) sont des réalisations d’un Bruit Blanc Additif et Gaussien (BBAG) de variance
N0 .
Ayant reçu y le décodeur cherche la séquence émise v
b qui maximise la probabilité de décision correcte
Pdc :

Z
Pdc = (vb = v) =
P P (vb = v = Y = y) P (Y = y) dy; (5.6)

Cette probabilité de décision correcte est une moyenne sur toutes les réalisations possibles de Y . Or
P (Y = y)  0, vb maximisant Pdc est donc obtenu en maximisant la probabilité à postériorie suivante :

b = arg max fP (v=Y = y)g ;


v (5.7)
v
Le critère ainsi obtenu porte le nom de critère de Maximum A Postériori (MAP). Il suffit donc de calculer
ce critère pour les différentes valeurs de v pour déduire le mot de code émis. Le calcul du critère se fait
comme suit

(v Y = y) =
P (Y = y v) (v)
= p
P =
p (Y = y) :

Ainsi, le critère MAP s’écrit encore

b = arg max fP (Y = y=v ) p(v)g :


v (5.8)
v
Dans le cas où les mots d’information sont équiprobables, p(v) est constant etv
b est obtenu en recherchant
la séquence qui explique le mieux l’observation r. C’est le critère de Maximum de Vraisemblance (MV) :

vb = arg max fp(Y = y=v)g : (5.9)


v
Pour un canal gaussien, on a

 
(Y = y v) =
Y
N
Y
n

p21 exp ( yij vij ) 2


p =

i=1 j =1
N0 2 N0
:

On constate donc que le critère de MV consiste tout simplement à rechercher le mot de code le plus
proche de y au sens de la distance euclidienne :
8 9
<XN
X
n =
vb = arg min (yij vij );
2
: (5.10)
v :
i=1 j =1
5.3 Décodage : Algorithme de Viterbi 45

La métrique qu’on vient d’établir est valable dans le cas d’un décodeur à entrée souple (“Soft decision
decoding”). L’appellation entrée souple veut dire qu’on n’effectue pas de prise de décision sur le mot reçu
à l’entrée du décodeur canal. On peut aussi utiliser un décodeur à entrée dure (“Hard decision decoding”)
c’est à dire en effectuant une prise de décision sur les composantes du mot reçu. Bien évidemment, le
décodage souple donne de meilleures performances puisqu’il vaut mieux ne pas prendre de décision sur
les mots reçu proches du seuil de décision. En effet, la prise de décision entraı̂ne une perte d’information
sur la fiabilité des mots reçus.
Nous allons à présent montrer que la distance de Hamming dH (nombre de bits différents) est celle
qu’on doit utiliser lors du décodage à entrée dure. Dans ce cas, l’ensemble canal et prise de décision peut
être modélisé par un Canal Binaire Symétrique (CBS) de probabilité d’erreur p: On appelle r la sortie du
comparateur à seuil. Le probabilité d’observer r sachant que v a été émis vaut

 dH (r;v)
P (R = r v ) =
=
d
p
H (r v) (1
;
p) Nn H (r v) =
d ;

1
p

p
(1 p ) Nn
: (5.11)

Etant donné que p < 1 2 alors


=
1
p
p
< 1. Ainsi pour maximiser (R = r v) , il suffit de rechercher la
P =

séquence v la plus proche de r selon la distance de Hamming :

b = arg min fd (r; v)g :


v H (5.12)
v

5.3.2 L’algorithme de Viterbi

La recherche de la séquence de mots de codes la plus proche de la séquence reçue est très com-
plexe car le nombre de séquences possibles est très élevé. L’algorithme de Viterbi permet d’effectuer le
décodage avec une complexité raisonnable. Il consiste à rechercher dans le treillis la suite d’états la plus
vraisemblable c’est à dire dont les mots de codes associés sont les plus proches de la séquence reçue.
Nous montrons dans les figure 5.6 à 5.9 les différentes étapes de l’algorithme de Viterbi à entrée dure
pour une séquence reçue r = 11001111. Initialement, le décodeur part du même état duquel est parti le
codeur c’est à dire de l’état . L’état est le plus vraisemblable à = 0 sa métrique est initialisée à
a a t ;

zéro (voir la figure 5.6) alors que les métriques des autres états sont initialisés à +1. La métrique d’un
état donne la distance entre le chemin du treillis arrivant en cet état et la séquence reçue. Cette métrique
est appelée métrique cumulée, elle est notée en dessous de chaque état. L’algorithme calcule ensuite la
distance séparant les mots de codes obtenus lors des deux transitions (vers a et c) et le mot reçu. Ces
métriques sont appelées métriques de branche, elles sont notées au-dessus des traits de transition. Elles
permettent de mettre à jour les métriques cumulées. L’algorithme de décodage se poursuit ainsi dans la
figure 5.7. A partir de la figure 5.8, on constate que dans chaque état convergent deux chemins, de ces
deux chemins on garde celui qui est le plus proche c’est à dire dont la métrique cumulée est la plus petite.
46 Les codes convolutifs

F IG . 5.6 – Première étape de décodage par l’algorithme de Viterbi.

Ce chemin est appelé chemin survivant. L’algorithme de décodage se poursuit ainsi jusqu’à la fin de la
séquence (figure 5.9). A ce niveau, on observe que la séquence de mots de codes 11101111 se trouvant à
une distance de Hamming égale à 1 est la plus proche r. La séquence de bits d’informations décodée est
donc 1001. Ainsi, l’algorithme de Viterbi nécessite de mémoriser les chemins survivants depuis t = 0.
En observant le déroulement de cet algorithme, on constate que les chemins survivant à l’instant t pro-
viennent très souvent d’un même état au niveau t 6( + 1) du trellis. Tel qu’illustré dans la figure
m

5.10, il suffit de mémoriser les chemins sur une fenêtre temporelle de taille 6( + 1).
m
5.3 Décodage : Algorithme de Viterbi 47

F IG . 5.7 – Deuxième étape de décodage par l’algorithme de Viterbi.

F IG . 5.8 – Troisième étape de décodage par l’algorithme de Viterbi.


48 Les codes convolutifs

F IG . 5.9 – Dernière étape de décodage par l’algorithme de Viterbi.

F IG . 5.10 – Réduction de la fenêtre de mémorisation des survivants.


5.4 Performances théoriques des codes convolutifs 49

5.4 Performances théoriques des codes convolutifs

L’erreur la plus probable que peut commettre le décodeur qu’on vient de décrire se produit lorsqu’il
décide que la séquence binaire codée est fan g alors que celle émise est fbn g et que ces deux séquences
sont les deux séquences les plus proches dans le treillis. La distance libre est la plus petite distance
entre deux séquences codées du trellis qui divergent puis convergent. Elle est souvent notée d
f (free
distance). Les codes convolutifs étant linéaires, df est aussi le poids minimal des chemins qui divergent
puis convergent avec le chemin nul (la succession d’états nuls). La détermination des performances des
codes convolutifs se fait en déterminant le poids de tous les chemins du treillis. On note a
d le nombre
de chemins distants de d  df du chemin nul. Pour évaluer la probabilité d’erreur binaire, on doit aussi
déterminer le nombre cd de bits d’information égaux à 1 sur ces chemins, c’est à dire le nombre de bits
décodés faux. ad et cd sont appelées spectre de distances (distance spectra). Elles peuvent être déduites
de la fonction de transfert du codeur convolutif.

5.4.1 Fonction de transfert

La fonction de transfert du codeur convolutif est obtenue à partir du diagramme d’état en scindant
l’état nul a en deux états ae et as où les indices e et s font référence respectivement à l’état d’entrée
j i
et de sortie. Ensuite, on porte sur chaque branche D N où i le poids de Hamming du k uplet à mettre
en entrée du codeur pour parcourir la branche considérée et j est le poids du mot de code associé. Les
quantités D et N sont des variables formelles. La figure 5.11 montre le diagramme d’état obtenu en
scindant l’état a en deux états ae et as pour le codeur de la figure 5.2. La fonction de transfert du codeur
est définie par

(
T D; N )= as

ae
: (5.13)

En utilisant la figure 5.11, on obtient les relations suivantes

8
>
>
> c = 2
D N ae + N b
>
>
< b = D c + D d
:
>
>
>
>
d = DN c + DN d
>
:
as = D b
2

On en déduit
50 Les codes convolutifs

5
(
T D; N ) = 1 2 D N

DN
(5.14)
X1 +

= 2 k
D
k +5
N
k +1
:

k =0

On montre que les exposants de D sont égaux aux poids des différents chemins alors que l’exposant de
N donne le poids de la séquence de mots d’informations associée. Le coefficient multiplicatif 2k donne
le nombre de chemins se trouvant à la distance spécifiée par l’exposant de D . Pour le codeur étudié,
on constate donc qu’il y a 2 chemins de poids + 5 et qu’ils correspondent à une séquence de mots
k
k

d’informations de poids k + 1. On déduit que la distance libre vaut = 5. En général, la fonction de


df

transfert s’exprime comme suit en fonction des distances spectrales :

+1
X
(
T D; N )= ad D N
d cd: (5.15)
d=d f
Il est à noter enfin que dans le cas de codeurs convolutifs à grand nombre d’états, la méthode qu’on
vient d’utiliser devient trop complexe et on utilise plutôt des algorithmes pour déterminer les distances
spectrales.
Le choix des connexions se fait en maximisant la distance libre du codeur. Les tableaux 5.1 et 5.2 donnent
les distances libres des meilleurs codeurs convolutifs de rendement Rc = 1 2 et
= Rc = 1 3.
=

F IG . 5.11 – Détermination de la fonction de transfert d’un codeur convolutif.

5.4.2 Probabilité d’occurrence d’un premier événement d’erreur

On dit qu’un premier événement d’erreur s’est produit, si à un niveau donné du treillis le chemin
correct n’est pas un survivant. Etant donné la linéarité du codeur, on peut étudier les performances du
5.4 Performances théoriques des codes convolutifs 51

1 2
m g g df ree

2 5 7 5
3 15 17 6
4 23 35 7
5 53 75 8
6 133 171 10
7 247 371 10
8 561 753 12
9 1167 1545 12

TAB . 5.1 – Distance libre de codeurs convolutifs de rendement Rc = 1 2.


=

1 2 3
m g g g df ree

2 5 7 7 8
3 13 15 17 10
4 25 33 37 12
5 47 53 75 13
6 133 145 175 15
7 225 331 367 16
8 557 663 711 18
9 1117 1365 1633 20

TAB . 5.2 – Distance libre de codeurs convolutifs de rendement Rc = 1 3.


=
52 Les codes convolutifs

décodeur en supposant que le chemin correct est le chemin nul. Un événement d’erreur se produit s’il
existe un chemin incorrecte plus proche de la séquence reçue que le chemin nul. Pour un décodeur à
entrée dure, un chemin distant de d du chemin correct est sélectionné si plus de d=2 erreurs se produisent
lors de la transmission. La probabilité qu’un tel chemin soit sélectionné vaut
8
< Pd i i
(1 ) d i
si d est impair
=:
C p p
i=(d+1)=2 d
Pd P ; (5.16)
1
C
2 d
d=2
p
d=2
(1 p ) +
d=2 d
i=d=2+1
C
i
d
p
i
(1 )
p
d i
si d est pair

p étant la probabilité d’erreur binaire à l’entrée du décodeur canal. Pour un système de transmission
utilisant une MDA-2 sur un canal gaussien, on a

r !
p = Q
2Eb Rc
: (5.17)
N0

Pour un système de transmission utilisant une MDA-2 sur un canal gaussien, la probabilité qu’un chemin
distant de d du chemin optimal soit sélectionné lors d’un décodage à entrée souple vaut [1]

r !
Pd = Q
2 Eb Rc d
: (5.18)
N0

Pour déterminer la probabilité d’occurrence p(E ) d’un premier événement d’erreur, il faut comptabiliser
les événements d’erreur dûs aux différents chemins. Soit Ed une v.a. modélisant les événements d’erreur
dû à un chemin distant de d du chemin optimal. La probabilité d’avoir un événement d’erreur à un niveau
donné du treillis vaut
!
[
P E ( )= P Ed : (5.19)
d

On ne peut pas déterminer l’expression exacte de P (E ) car les événements Ed ne sont pas indépendants.
S
En utilisant le fait que p(A B ) ( )+ ( )
P A P B ; on peut majorer P (E ) comme suit

+1
X
( )
p E ad pd : (5.20)
d=d f
Cette majoration porte le nom de borne de l’union. On montre que

pd  2 [ (1
d
p p )]d=2
: (5.21)

On en déduit une borne supérieure de p(E ) exprimée à l’aide de la fonction de transfert du codeur

p
p E ( )  (2 T p (1 ) 1)
p ; : (5.22)
5.4 Performances théoriques des codes convolutifs 53

5.4.3 Probabilité d’erreur binaire

On veut déterminer l’expression analytique de la probabilité d’erreur binaire sur les éléments binaires
d’information en sortie du décodeur canal. Etant donné que cd donne le poids des mots d’information
des chemins incorrects, on déduit que

1 1
X +

peb  k
ad cd pd : (5.23)
d=d f
Le coefficient 1=k est dû au fait que si le poids du mot d’information d’un chemin incorrecte vaut 1 alors
il y a un seul bit erroné sur k . En utilisant (5.21), on déduit que

p
peb 1 @T (2 p (1 ) )
p ;N
: (5.24)
k @N
N =1

La figure 5.14 montre les performances théoriques du codeur convolutif de mémoire m = 2, de ren-
dement Rc = 1 2 et de polynômes générateurs
= g1 = 5 et g2 = 7. On constate qu’à faible RSB, les
performances du codeur convolutif sont moins bonnes que celles d’un système de transmission sans co-
dage canal. Ceci est dû à la perte engendrée par la redondance émise. A fort RSB, le système avec codage
offre de meilleures performances que le système sans codage. Le décodage à entrée souple offre 2 dB de
gain par rapport au décodage à entrée dure. Enfin, à très faible RSB, on constate que la probabilité d’er-
reur théorique du décodage à entrée dure dépasse 1 ceci est dû au fait que les performances théoriques
donnent une borne supérieure de la probabilité d’erreur binaire. Si on superpose les courbes théoriques à
des résultats de simulations, on pourra constater qu’ils ne convergent qu’à fort RSB c’est à dire lorsque
la borne de l’union est fine.
54 Les codes convolutifs

1
10
Sans codage
Codage convolutif et décodage dure
0
Codage convolutif et décodage souple
10

−1
10

−2
10

eb
−3
10

P
−4
10

−5
10

−6
10

−7
10
0 1 2 3 4 5 6 7
Eb/N0 (dB)

F IG . 5.12 – Probabilité d’erreur binaire du codeur convolutif de mémoire m = 2, Rc = 1 2,


= g1 = 5 et
g2 = 7.

5.5 TD 4 : Les codes convolutifs

Exercice I :

Soit le codeur convolutif illustré dans la figure ci-dessous. Un seul bit rentre dans le codeur afin de
calculer le mot de code correspondant.
1) Donner la contrainte K , le rendement Rc et le nombre d’états de ce codeur.
2) Exprimer les séquences génératrices en octal (le bit à gauche étant le bit de moins significatif).
3) Représenter le diagramme d’état de ce codeur.
4) Représenter le diagramme d’état scindé de ce codeur puis déduire sa fonction de transfert et sa distance
libre.
5) Donner une borne supérieure de la probabilité d’erreur par élément binaire à la sortie du décodeur de
Viterbi à entrée dure et souple.
6) Représenter le diagramme en treillis de ce codeur.
7) Effectuer le décodage par l’algorithme de Viterbi de la séquence r = (111; 001; 100; 011; 011) : On de-
mande de représenter le treillis au fur et à mesure de l’avancement du temps. On indiquera les métriques
de branche, les métriques cumulées et les survivants des états en cours. Déterminer la séquence codée et
la séquence d’information les plus vraisemblables.
N.B. : Dans le cas où deux chemins qui convergent possèdent la même métrique cumulée, le chemin
5.5 TD 4 : Les codes convolutifs 55

survivant sera choisi arbitrairement.


56 Les codes convolutifs

Problème I : Métrique de Hamming, codes convolutifs et algorithme de Vi-


terbi

A. Métrique optimale pour le canal binaire symétrique

Il s’agit d’établir la métrique optimale pour une transmission sur un canal binaire symétrique. La séquence
binaire reçue correspondant à une séquence binaire codée émise de longueur N est notée comme suit

r = r0 r1    r N 1:

1) Donner l’expression de la probabilité conditionnelle P (r c) d’avoir reçu la séquence r sachant la


=

transmission hypothétique d’une séquence codée c = c0 c1  en fonction de , de


cN 1 p N et de la
distance de Hamming dH (r; c) entre r et c.
2) Mettre cette probabilité conditionnelle sous la forme :

 dH (r;c)
P (r c) = (
= f p; N ) 1 p

p
;

où f (p; N ) est une fonction qui dépend uniquement de p et de N (et donc ne dépend pas de r et de c).
3) On suppose que p est inférieur ou égal à 1/2. Pour effectuer un décodage au maximum de vraisem-
blance de la séquence codée émise, le récepteur doit déterminer la séquence hypothétique qui explique
le mieux la réception de la séquence r. En d’autres termes, il doit trouver la séquence hypothétique c qui
maximise la probabilité conditionnelle P (r c). En utilisant le résultat du 2) et le fait que 0   1 2,
= p =

montrer que le décodage au maximum de vraisemblance revient à chercher la séquence hypothétique c


la plus proche, en distance de Hamming, de la séquence reçue r.

B. Codes convolutifs

On considère le code convolutif de rendement Rc = k=n = 1 2 de la figure ci-dessous.


=

1) Dessiner le diagramme d’état de ce code.


2) a) Représenter le diagramme d’état scindé du codeur étudié. On attribuera à chaque branche de ce
diagramme une étiquette de la forme Ni D j , où i et j dénotent respectivement les poids de Hamming de
l’entrée et de la sortie associées à cette branche.
b) Déterminer la fonction de transfert, T (D; N ), de ce code.
c) Déterminer la distance libre, df ree , de ce code.
5.5 TD 4 : Les codes convolutifs 57

C. Algorithme de Viterbi

On suppose que le code convolutif précédent a été retenu dans un système de transmission communiquant
à travers un canal binaire symétrique. On fait l’hypothèse d’un décodage au maximum de vraisemblance
(et donc utilisant la métrique de Hamming) par le récepteur.
1) En supposant que l’émetteur désire transmettre la séquence d’information 011(0) (le zéro entre pa-
renthèses est utilisé par l’émetteur pour remettre l’état du codeur de nouveau à 0), déterminer la séquence
binaire codée de longueur 8.
2) Transmise sur un canal binaire symétrique, la séquence binaire codée du 1) subit la séquence d’erreurs
binaires e = 11000000.
a) Déterminer la séquence binaire reçue r.
b) Effectuer le décodage par l’algorithme de Viterbi de la séquence r: On demande de représenter le
treillis au fur et à mesure de l’avancement du temps. On indiquera les métriques de branche, les métriques
cumulées et les survivants des états en cours.
N.B. : Dans le cas où deux chemins qui convergent possèdent la même métrique cumulée, le chemin
survivant sera choisi de façon arbitraire.
c) En utilisant le résultat du 2)b), donner la séquence codée et la séquence d’information décodées les plus
vraisemblables. En déduire le nombre d’erreurs résiduelles (non corrigées ou rajoutées par le décodeur)
touchant ces deux séquences.
58 Les codes convolutifs

Problème II : Codage convolutif, Algorithme de Viterbi, Décodage Ferme,


Décodage Souple

On considère le code convolutif, à entrées et sorties binaires, illustré dans la figure ci-dessus.
1) Quels sont le rendement Rc , la mémoire m, la longueur de contrainte K et le nombre d’états du
diagramme en treillis de ce code ?
2) Représenter 3 sections du diagramme en treillis de ce code. On supposera, dans toute la suite, que
1 2
le codeur part de l’état tout à zéro. On utilisera l’étiquetage binaire c c
k k
des branches du treillis pour
préciser les sorties du codeur. On représentera une branche du treillis correspondant à l’entrée 0 (respec-
tivement, 1) par un trait en pointillés (respectivement, fort).
3) On supposera également qu’une séquence de 0, de plus courte longueur, garantissant le retour systématique
du codeur à l’état tout à zéro, est rajoutée au préalable, avant codage, à la fin de la séquence binaire d’in-
formation.
a) Déterminer la séquence binaire codée correspondant à la séquence binaire d’information d0 d1 = 11.
b) Représenter, en utilisant une autre couleur, le chemin correspondant à cette séquence codée sur le
diagramme en treillis du 2).
4) On désire transmettre la séquence binaire codée obtenue en 3) sur un canal gaussien, en utilisant une
modulation MDP2, dont les états sont 1 et 1. On supposera dans toute la suite que le modulateur utilise
la convention d’association

0 ! 1
1 ! 1
entre éléments binaires de la séquence d’information et éléments bipolaires de la séquence modulée.
Déterminer la séquence binaire effectivement émise sur le canal gaussien.
5) On supposera également que le canal gaussien rajoute la séquence de bruit additif -0.5, +0.5, -1.5,
+1.5, 0.0, +1.0 Déterminer la séquence réelle reçue avant toute prise éventuelle de décisions au niveau
5.5 TD 4 : Les codes convolutifs 59

du récepteur.

6) On suppose dans un premier temps que le décodeur utilise l’algorithme de Viterbi pour effectuer un
décodage au maximum de vraisemblance, en se servant des décisions fermes de la séquence reçue en 4)
(hard-decision decoding).
a) Déterminer la séquence binaire, en sortie de l’organe de décision, alimentant l’entrée du décodeur.
b) Préciser la métrique optimale pour effectuer, en toute simplicité, le décodage.
c) Représenter, sur autant de niveaux du diagramme en treillis du code qu’il le faudra, toutes les étapes
de l’algorithme de Viterbi, en précisant les métriques de branches, les métriques cumulées et les chemins
survivants en les différents états. En déduire, pour un décodage avec décisions fermes, la séquence binaire
décodée la plus vraisemblable et la séquence d’information correspondante.
d) Préciser le nombre d’erreurs éventuellement commises par le décodeur au niveau de la séquence codée
et de la séquence d’information.

7) On suppose dans un second temps que le décodeur désire utiliser l’algorithme de Viterbi pour effectuer
un décodage au maximum de vraisemblance plus élaboré, utilisant des décisions souples de la séquence
reçue en 4) (soft-decision decoding).
a) Préciser la métrique optimale, pour effectuer en toute simplicité, le décodage.
b) Représenter 3 sections du diagramme en treillis du code avec un étiquetage bipolaire des branches,
compatible avec la nouvelle métrique optimale, en remplacement de l’étiquetage binaire utilisé en 2). On
utilisera pour cela la convention de conversion binaire-bipolaire du 4).
c) Représenter, sur la nouvelle version du diagramme en treillis du code, toutes les étapes de l’algorithme
de Viterbi, en précisant les nouvelles métriques de branches, les nouvelles métriques cumulées et les
survivants des états. En déduire, pour un décodage avec décisions souples, la séquence binaire décodée
la plus vraisemblable.
d) Préciser le nombre d’erreurs éventuellement commises par le décodeur au niveau de la séquence codée
et de la séquence d’information. Conclure en comparant avec le 6) d).