Académique Documents
Professionnel Documents
Culture Documents
Didier Le Ruyet
Mylène Pischella
Une chaîne de communication est constituée d’une source et
d’un destinataire, séparés par un canal de transmission qui peut
être une portion de câble, une fibre optique, un canal radiomobile
ou encore un lien satellitaire. Quel que soit le canal, les blocs de
traitement mis en œuvre dans la chaîne de communication ont Bases de communications
les mêmes fondements.
Les auteurs
Didier Le Ruyet est professeur des Universités au Conservatoire
national des arts et métiers et directeur adjoint du laboratoire
CEDRIC à Paris.
Ingénieur et docteur de Télécom ParisTech, Mylène Pischella est
maître de conférences au Conservatoire national des arts et
métiers.
Z(7ib7i4-AFAJDB(
editions editions
editions
Bases de communications numériques 1
Apart from any fair dealing for the purposes of research or private study, or criticism or review,
as permitted under the Copyright, Designs and Patents Act 1988, this publication may only be
reproduced, stored or transmitted, in any form or by any means, with the prior permission in
writing of the publishers, or in the case of reprographic reproduction in accordance with the
terms and licenses issued by the CLA. Enquiries concerning reproduction outside these terms
should be sent to the publishers at the undermentioned address:
Printed and bound in Great Britain by CPI Group (UK) Ltd., Croydon, Surrey CR0 4YY, September 2015
Didier Le Ruyet
Mylène Pischella
editions
Avant-propos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 1. Introduction à la théorie de l’information . . . . . . . . . . 17
1.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.2. Rappels de probabilités . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.2.1. Variables aléatoires discrètes . . . . . . . . . . . . . . . . . . . . . 18
1.2.2. Variables aléatoires continues . . . . . . . . . . . . . . . . . . . . . 20
1.2.3. Inégalité de Jensen . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.2.4. Signaux aléatoires . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.3. Entropie et information mutuelle . . . . . . . . . . . . . . . . . . . . . . 23
1.3.1. Remarque sur la notion d’information . . . . . . . . . . . . . . . . 23
1.3.2. Une mesure logarithmique de l’information . . . . . . . . . . . . . 23
1.3.3. Information mutuelle . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.3.4. Entropie et information mutuelle moyenne . . . . . . . . . . . . . 26
1.3.5. Divergence de Kullback-Leibler . . . . . . . . . . . . . . . . . . . 30
1.3.6. Entropie différentielle . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.3.7. Séquences typiques et conjointement typiques . . . . . . . . . . . 31
1.4. Théorèmes pour le codage de source sans perte . . . . . . . . . . . . . 35
1.4.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
1.4.2. Entropie et redondance d’une source . . . . . . . . . . . . . . . . . 35
1.4.3. Théorème fondamental du codage de source . . . . . . . . . . . . 36
1.4.4. Codage de source sans perte . . . . . . . . . . . . . . . . . . . . . 37
1.5. Théorème pour le codage de source avec perte . . . . . . . . . . . . . . 43
1.5.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
1.5.2. Dénitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
1.5.3. Théorème du codage de source avec perte . . . . . . . . . . . . . 45
1.6. Modèles de canaux de transmission . . . . . . . . . . . . . . . . . . . . 47
1.6.1. Canal binaire symétrique . . . . . . . . . . . . . . . . . . . . . . . 47
1.6.2. Canaux discrets sans mémoire . . . . . . . . . . . . . . . . . . . . 50
Glossaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
Notations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
Sommaire du volume 22
2 .2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
L’être humain a toujours utilisé des systèmes de communications : hier, les nuages
de fumée des Indiens d’Amérique puis le télégraphe de Chappe, le système Morse et
le téléphone d’Edisson qui a profondément modié notre mode de vie, aujourd’hui les
smartphones qui permettent de téléphoner mais aussi de visionner des vidéo ou com-
muniquer sur les réseaux sociaux et demain, l’homme connecté et la généralisation
des objets communicants. Dans tous les systèmes de communications actuels et fu-
turs nous trouvons une chaîne de communication numérique constituée d’une source
et d’un destinataire séparés par un canal de transmission qui peut être une portion de
câble, une bre optique, un canal radiomobile, ou encore un lien satellitaire. Quel que
soit le canal, les blocs de traitement mis en œuvre dans la chaîne de communication
ont les mêmes fondements. Cet ouvrage a pour objectif de les détailler. Il est composé
de deux volumes :
– le premier volume traite du codage de source et du codage de canal. Après avoir
présenté les résultats fondamentaux de la théorie de l’information, les techniques de
codage de source sans et avec perte sont étudiées. Ensuite, les codes correcteurs d’er-
reurs en blocs, convolutifs et concaténés sont traités d’un point de vue théorique et de
leurs applications ;
– le second volume concerne les blocs suivants le codage de canal dans la chaîne
de communication. Il présente tout d’abord les modulations numériques en bande de
base et en bande transposée. Puis les étapes nécessaires au récepteur pour effectuer
la détection, à savoir la synchronisation et l’estimation de canal, sont étudiées. Des
variantes de ces blocs qui sont utilisées dans les systèmes actuels et à venir, les modu-
lations multiporteuses et les modulations codées, sont nalement détaillées.
Cet ouvrage est le fruit de la longue expérience de leurs auteurs dans l’industrie
et dans le monde académique. Les auteurs sont responsables de formation et de plu-
sieurs modules d’enseignement supérieur au Conservatoire national des arts et métiers
Les notions présentées ont une vocation pédagogique. Les auteurs ont essayé de
rendre accessibles et didactiques les notions fondamentales de communications nu-
mériques. Cependant, des techniques plus avancées qui sont actuellement plus du do-
maine de la recherche que de l’implémentation pratique sont aussi développées.
Didier Le Ruyet souhaite remercier ses parents ainsi que son épouse Christine pour
son soutien, sa patience et ses encouragements durant la rédaction de cet ouvrage.
Mylène Pischella souhaite remercier sa lle Charlotte et son époux Benjamin pour
leur présence, leur affection et leur soutien.
Le problème qui se pose est que le canal est bruité et peut aussi éventuellement
introduire des distorsions sur le signal émis. En conséquence, des techniques avancées
doivent être mises en place an de réduire au maximum l’inuence du bruit et des
distorsions, pour que le signal reçu par le destinataire soit le plus similaire possible au
signal émis par la source.
Le message généré par la source peut être analogique (par exemple dans le cas
de la parole ou du son) ou numérique (dans le cas des données). Dans un système de
communications numériques, le message analogique devra être converti en numérique
avant tout traitement.
0 1−p 0
p
X Y
p
1 1
1−p
Sur la gure I.2, nous présentons un exemple d’image émise puis reçue par le des-
tinataire en sortie d’un canal binaire symétrique lorsque p = 0, 1. Dans un système de
communication, il faut protéger les bits d’information contre les erreurs de transmis-
sion, tout en limitant le nombre de bits transmis dans le canal de transmission, dont la
capacité est limitée.
0 1-p 0
p
X Y
p
1 1
1-p
L’objectif de cet ouvrage composé de deux volumes est de traiter des différentes
étapes de la chaîne de communication, qui est représentée par la gure I.3. Bien que
les deux ouvrages puissent se lire séparément, nous nous référerons parfois à certaines
notions du second volume.
Introduction
à la théorie de l’information
1.1. Introduction
La théorie de l’information a été développée par Claude Shannon dans les années
1940 [SHA 48, SHA 59b]. Il s’agit d’une théorie mathématique qui introduit le codage
de source et le codage de canal, concepts fondamentaux des systèmes de communi-
cation. Cette théorie permet de déterminer, en fonction des propriétés des sources, les
limites théoriques du codage de source sans perte (exacte reconstruction du message
de la source) ou avec perte (reconstruction du message de la source sous un critère de
délité). Elle donne aussi les débits atteignables pour un canal de transmission donné
grâce au codage de canal.
La théorie des probabilités est une branche des mathématiques qui décrit et modé-
lise des processus aléatoires. Dans ce paragraphe, nous ne présenterons qu’un résumé
de cette théorie. Nous recommandons aux lecteurs les livres de B. Candelpergher en
français [CAN 13] ou de Papoulis et Pillai [PAP 02] et R. Durrett [DUR 10] pour un
développement plus complet.
Une variable aléatoire discrète X prend ses valeurs dans un ensemble discret ap-
pelé alphabet AX . Cet alphabet peut être inni (par exemple si A X = N) ou ni de
taille n si AX = {x1 , x2 , . . . , xn }. Nous associons à chaque réalisation une probabi-
lité d’apparition P X = {p1 , p2 , . . . , pn } :
!
P r(X = xi ) = pi pi ≥ 0 et pi = 1 [1.1]
xi ∈AX
Dans le cas d’une variable aléatoire discrète, la densité de probabilité f X (x) est
dénie par :
!
fX (x) = δ(x − xi )pi [1.2]
xi ∈A
! !
P r(X = xi , Y = yj ) = 1 [1.3]
xi ∈Ax yj ∈Ay
!
P r(X = xi ) = P r(X = xi , Y = yj ) [1.4]
yj ∈Ay
P r(X = xi , Y = yj )
P r(Y = yj |X = xi ) = [1.6]
P r(X = xi )
P r(X = xi |Y = yj )P r(Y = yj )
P r(Y = yj |X = xi ) =
P r(X = xi )
P r(X = xi |Y = yj )P r(Y = yj )
= "
yk ∈Ay P r(X = xi , Y = yk )
P r(X = xi |Y = yj )P r(Y = yj )
= "
yk ∈Ay P r(X = xi |Y = yk )P r(Y = yk )
L’équation [1.30] est appelée loi de Bayes. A partir de cette équation, nous pouvons
voir que P r(X = xi |Y = yj ) est la probabilité a posteriori, tandis que P r(Y = y i )
est la probabilité a priori.
1.2.1.4. Indépendance
L’indépendance de deux variables aléatoires discrètes X et Y implique :
et :
# x
dFX (x)
fX (x) = ⇔ FX (x) = fX (u)du [1.10]
dx −∞
# ∞
$ %
mX = E X = xfX (x)dx [1.11]
−∞
# ∞
$ %
E XN = xN fX (x)dx [1.12]
−∞
Rappelons tout d’abord qu’une fonction f (x) est convexe si, pour tout x, y et
0 < λ < 1, la relation suivante est vériée :
& n ' n
! !
f pi xi ≤ pi f (xi ) [1.14]
i=1 i=1
L’inégalité de Jensen est obtenue en interprétant les termes p i comme des proba-
bilités : si f (x) est convexe pour toute variable aléatoire réelle discrète X, alors :
Un processus aléatoire est déni par sa densité de probabilité et ses moments sta-
tistiques. La densité de probabilité est égale à :
P r (x ≤ X(t) ≤ x + ∆x)
fX (x, t) = lim∆x→0 [1.16]
∆x
Le processus aléatoire est dit stationnaire si sa densité de probabilité est indépen-
dante du temps : f X (x, t) = fX (x) ∀t. En conséquence, toutes ses propriétés statis-
tiques seront indépendantes de t. Alors, sa densité de probabilité peut être obtenue à
partir de l’équation[(1.10] de la façon suivante :
Nous notons mx (t) la moyenne d’un signal aléatoire x(t) qui suit un processus
aléatoire X :
$ %
mx (t) = E x(t) [1.18]
$ %
Rxx (t1 , t2 ) = E x(t1 )x∗ (t2 ) [1.19]
Le processus aléatoire X est stationnaire au second ordre ou au sens large si, pour
tout signal aléatoire x(t) :
1) sa moyenne m x (t) ne dépend pas de t ;
2) sa fonction d’autocorrélation satisfait R xx (t1 , t2 ) = Rxx (t1 + t, t2 + t) ∀t.
$ %
Rxx (τ ) = E x(t)x∗ (t − τ ) [1.20]
γxx (f ) = T F [Rxx ] (f )
# +∞
= Rxx (τ )e−j2πf τ dτ [1.21]
−∞
Rxx (τ ) = T F −1 [γxx ] (τ )
# +∞
= γxx (f )e+j2πf τ df [1.22]
−∞
Si le signal est discret (par exemple suite à échantillonnage d’un signal continu
aléatoire x(t) à la fréquence T1e , = xn = x(nTe )), la fonction d’autocorrélation
γxx (f ) = T F [Rxx ] (f )
+∞
!
= Rxx (nTe )e−j2πf nTe [1.23]
n=−∞
1
h(xi ) = log2 = − log2 P r(X = xi ) = − log2 pi [1.24]
P r(X = xi )
E XEMPLE.– Soit une source discrète produisant des bits (0 ou 1) avec P r(X = 0) =
P r(X = 1) = 12 . La quantité d’information associée à la réalisation de l’évènement
X = 0 ou X = 1 est égale à :
1
h(0) = h(1) = − log2 = 1 Sh [1.25]
2
1
h(séquence de n bits) = − log 2 = n Sh [1.26]
2n
1
h(xi , yj ) = log2 = − log2 P r(X = xi , Y = yj ) [1.27]
P r(X = xi , Y = yj )
1
h(xi |yj ) = log2 = − log2 P r(X = xi |Y = yj ) [1.28]
P r(X = xi |Y = yj )
1. log2 x = lnx/ln2.
ou encore :
E XEMPLE.– Nous tirons une carte au hasard dans un jeu de 32 cartes (quatre couleurs :
cœur, pique, carreau et trèe - huit valeurs : 7, 8, 9, 10 valet dame roi as). Soit x
l’évènement « la carte tirée est un as de trèe » et y l’évènement « la carte tirée est un
trèe ». Calculons h(x), h(y) et h(x|y). Comme :
1 1
P r(X = x) = et P r(Y = y) = [1.31]
32 4
Nous obtenons :
1 1
h(x) = − log2 = 5 Sh et h(y) = − log2 = 2 Sh [1.32]
32 4
P r(X = x, Y = y) 1/32 1
P r(X = x|Y = y) = = = [1.33]
P r(Y = y) 1/4 8
1
h(x|y) = − log2 P r(X = x|Y = y) = − log2 = 3 Sh [1.34]
8
Nous verrons dans le section 1.7 que l’information mutuelle est importante pour
les communications en particulier lorsque l’on identie X à l’entrée d’un canal de
transmission et Y au signal correspondant à la sortie du canal de transmission.
Après s’être intéressé aux évènements individuels, nous allons maintenant dé-
terminer l’entropie d’une source décrite par la variable aléatoire X ayant pour es-
pace de réalisation A X = {x1 , x2 , . . . , xn } avec les probabilités respectives P X =
{p1 , p2 , . . . , pn }. n est la taille de l’alphabet. La quantité d’information moyenne ou
H(X) ≥ 0 [1.40]
H(X) ≤ log2 n [1.41]
1
H(X) = HMAX (X) = log2 n si pi = ∀i [1.42]
n
L’entropie est donc maximale lorsque toutes les probabilités p i sont égales.
0.9
0.8
0.7
0.6
H(X)
0.5
0.4
0.3
0.2
0.1
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
probabilité p
H(X, Y )
H(X)
H(Y )
n
! pi
DKL (P||Q) = pi log2 [1.49]
i=1
qi
Même si nous la considérons souvent comme une mesure de distance entre deux
distributions de probabilité, la divergence de Kullback-Leibner n’est pas une distance
au sens strict. Par exemple, en général D KL (P||Q) *= DKL (Q||P).
# ∞
p(x)
DKL (P ||Q) = p(x) ln dx [1.50]
−∞ q(x)
# +∞
HD (X) = − p(x) log2 p(x)dx [1.51]
−∞
# +∞ ) *
1 −x2
( exp =1
2πσx2 −∞ 2σx2
Nous pouvons extraire le premier membre sous l’intégrale. Nous obtenons alors :
-( . # +∞ 2 ) 2*
1 x −x
HD (X) = log2 2πσx2 + ( 2
log 2 e exp dx [1.54]
2
2πσx −∞ 2σ x 2σx2
Par dénition :
# +∞ ) *
2 1 2 −x2
E[X ] = ( x exp dx = σx2 [1.55]
2πσx2 −∞ 2σx2
log2 e -( .
HD (X) = + log2 2πσx2
2
1
= log2 2πeσx2 [1.56]
2
Comme les variables X i sont indépendantes, les termes log 2 (P r(Xi )) le sont aussi
et nous avons la relation suivante :
N
1 1 !
− log2 P r(X = x) = − log2 P r(Xi = xi ) [1.57]
N N i=1
Cette relation tend vers H(X) lorsque N est sufsamment grand. Cette propriété
est appelée le principe d’équirépartition asymptotique AEP (Asymptotic Equipartition
Principle). Parmis l’ensemble des séquences possibles A N X , nous dénissons les sé-
quences typiques dont la probabilité d’apparition est proche de 2 −N (H(X) . L’ensemble
des séquences typiques T $ est décrit comme suit :
/ 0 0 1
01 0
0 0
T$ = x∈ AN
X : 0 log2 P r(X = x) − H(X)0 < ' [1.58]
0N 0
A partir des relations [1.57] et [1.58], nous pouvons démontrer facilement les pro-
priétés suivantes :
– la probabilité qu’une séquence x soit typique tend vers 1 quand N → ∞ ;
– le nombre de séquences typiques |T $ | est borné par :
Nous pouvons illustrer les séquences typiques avec un exemple simple. Considé-
rons une variable aléatoire X binaire sans mémoire dont les probabilités de réalisation
sont p1 = 23 et p2 = 13 . L’entropie de X est égale à 0,9183 Sh/symb. Pour un vecteur
n
de longueur N , nous avons C N séquences composées de n symboles x 1 et N −n sym-
−n
boles x2 dont la probabilité d’apparition est égale à P r(x) = p n1 pN
2 . Sur la gure
1.3, nous présentons la distribution des probabilités des séquences pour N = 100 (en
trait continu) ainsi que celle de l’ensemble théorique des séquences typiques (en trait
pointillé). Nous pouvons observer que même pour N = 100, la distribution des pro-
babilités est déja assez proche de celle de l’ensemble composé de 4, 4 10 27 séquences
typiques.
ï27
x 10
2.5
1.5
Probabilité
0.5
0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Index x 10
27
N
2
P r(X = x, Y = y) = P r(Xi = xi , Yi = yi ) [1.61]
i=1
Les deux premières propriétés sont obtenues à partir des relations [1.57] et [1.60].
La démonstration de la troisième propriété est la suivante :
!
P r((x& , y& ) ∈ J$ ) = P r(X = x)P r(Y = y)
(x,y)∈J!
2N (H(X,Y ))
= 2−N (I(X;Y )) [1.64]
2N (H(X)) 2N (H(Y ))
1.4.1. Introduction
Soit une source discrète et stationnaire dont les symboles de sortie sont des sym-
boles Q-aires (la taille de l’alphabet est égale à Q). La sortie de cette source est décrite
par la variable aléatoire X. Ainsi, l’entropie H(X) est la quantité d’information par
symbole moyenne sortant de cette source.
Une source discrète est dite source sans mémoire si les symboles en sortie de cette
source sont décorrélés. Dans le cas contraire, nous dirons que cette source est avec
mémoire.
Si la source est sans mémoire, H(X) s’obtient comme nous l’avons déjà vu par :
Q
!
H(X) = − pi log2 pi en Sh/symbole [1.65]
i=1
L’entropie H(X) est maximale si les symboles sont équiprobables. Pour des sym-
boles Q-aires, l’entropie maximale est égale à H MAX = log2 Q.
Si la source est à mémoire, alors son entropie par symbole H(X) s’obtient comme
suit :
1
H(X) = lim HJ (X) [1.66]
J→∞ J
H(X)
Rred = 1 − [1.67]
HMAX (X)
La redondance R red est comprise entre 0 (les symboles de la source sont indépen-
dants et équiprobables) et 1 (l’entropie de la source est nulle).
T HÉORÈME.– Soit ' > 0, pour toute source stationnaire d’entropie par symbole
H(X), il existe un procédé de codage de source binaire qui associe à chaque mes-
sage x de longueur N un mot binaire de longueur moyenne N R moy tel que :
Ainsi, nous pouvons coder chaque message x avec N H(X) bits en moyenne.
Pour distinguer ces deux ensembles, nous pouvons ajouter un préxe « 0 » pour
les séquences typiques et « 1 » pour les séquences non typiques. Ainsi, les séquences
typiques peuvent être encodées avec N (H(X) + ') + 2 bits (le bit supplémentaire
prend en compte le fait que N (H(X) + ') n’est pas toujours un entier). Les séquences
non typiques peuvent être encodées avec au plus N log 2 |AX | + 2 bits.
Nous pouvons alors borner le taux ou nombre de bits moyen par réalisation R moy :
+,
1
Rmoy =E l(X)
N
1 !
= l(x)P r(X = x)
N x
1 ! 1 !
= l(x)P r(X = x) + l(x)P r(X = x)
N N c
x∈T! x∈T!
1 !
≤ (N (H(X) + ') + 2)P r(X = x)
N
x∈T!
1 !
+ (N log2 |AX | + 2)P r(X = x)
N cx∈T!
2
≤ H(X) + ' + ' log2 |AX | +
N
= H(X) + '& [1.69]
2
avec '& = ' log2 |AX | + N qui peut être aussi faible que souhaité en choisissant N
élevé.
1.4.4.1. Introduction
D’un point de vue général, l’opération de codage de source consiste à associer à
chaque message issu de la source un mot composé d’un ou plusieurs symboles q-aires
en cherchant à réduire au maximum le nombre moyen de ces symboles.
Nous nous restreindrons au cas où les symboles de sortie du codeur de source sont
des bits (q = 2). Cependant la généralisation aux autres alphabets ne présente pas de
difcultés particulières.
Un code est dit instantané si aucun mot code n’est le début d’un autre. Cette condi-
tion appelée condition du préxe est très importante en pratique pour faciliter le déco-
dage.
Un mot est associé à chaque message comme décrit dans le tableau 1.1.
Message Mot
a1 1
a2 00
a3 01
a4 10
Nous pouvons vérier que ce codage de source satisfait le critère de codage unique
mais ne permet pas un décodage unique. En effet, par exemple, il n’est pas possible
de décoder le message a 1 , a2 , a1 , . . . encodé par la suite 1001. Nous ne pouvons pas
savoir si le message émis était a1 , a2 , a1 ou a4 , a3 . Ce code est donc inutisable.
E XEMPLE.– Un mot est associé à chaque message comme décrit dans le tableau 1.2.
Message Mot
a1 00
a2 10
a3 11
a4 110
E XEMPLE.– Un mot est associé à chaque message comme décrit dans le tableau 1.3.
Message Mot
a1 0
a2 10
a3 110
a4 111
a1 a2 a3
0 0 0
1 1 1
a4
Q
!
2−ni ≤ 1 [1.70]
i=1
1 0
C1
1 0
C2
1 0
C4 C3
Q
!
2nQ −ni ≤ 2nQ
i=1
en divisant les deux termes par 2 nQ , nous obtenons bien l’inégalité de Kraft.
avec :
Q
!
Rmoy = pi ni [1.72]
i=1
Vérions qu’un tel code est instantané, c’est-à-dire qu’il satisfait l’inégalité de
Kraft :
Q
! Q
! Q
! Q
!
2−ni = 2−'− log2 pi ( ≤ 2log2 pi = pi = 1 [1.74]
i=1 i=1 i=1 i=1
Q
! Q
! Q
!
Rmoy = pi ni = pi -− log2 pi . < pi (− log2 pi + 1) = H(X) + 1 [1.75]
i=1 i=1 i=1
T HÉORÈME.– Pour toute source stationnaire d’entropie par symbole H(X), il existe
un procédé de codage de source binaire dont la longueur moyenne R moy des mots
est aussi voisine que l’on veut de H(X) :
Considérons une source sans mémoire d’entropie par symbole H(X). En grou-
pant les symboles de cette source par message de J symboles, nous obtenons une
nouvelle source. Il est encore possible d’encoder cette source avec un code instantané.
La longueur moyenne des mots de ce code R Jmoy satisfait l’inégalité suivante :
1
H(X) ≤ Rmoy < H(X) + [1.78]
J
&
Le débit binaire en sortie du codeur D B est le produit du débit symbole D S par le
nombre de bits moyens par symbole R moy :
&
DB = DS .Rmoy en bit/s [1.81]
En sortie du codeur de source binaire, nous dénissons H & (X) l’entropie par bit
avec :
H(X)
H & (X) = en Sh/bit [1.82]
Rmoy
Comme nous pouvions nous y attendre, le débit d’entropie n’est pas modié par
l’opération de codage de source. D’après le théorème du codage de source, nous
avons :
&
DB ≥ DS .H(X) = DI [1.85]
1.5.1. Introduction
que l’erreur quadratique moyenne ou la qualité subjective sous une contrainte de dé-
bit binaire, ou de minimiser le débit binaire pour un critère de délité donné. Même
si l’erreur quadratique moyenne n’est pas toujours le critère le mieux adapté, il reste
le plus utilisé et c’est celui que nous considérons ici. Nous verrons dans le prochain
chapitre que de nombreuses solutions peuvent être mises en œuvre, comme la quan-
tication scalaire avec ou sans prédiction, la quantication vectorielle, le codage par
transformée, etc.
1.5.2. Définitions
Comme dans le cas du codage de source sans perte, nous supposerons que la sortie
du codeur de source est directement reliée à l’entrée du décodeur de source avec perte.
Le codeur de source avec perte associe à chaque séquence possible x ∈ X un mot
binaire de longueur R bits et le décodeur associe à chacun des 2 R mots binaires une
séquence x̃ ∈ X̃ N . La séquence x̃ est appelée séquence quantiée ou estimée de x̃.
mot binaire
x (NR bits) x
CODEUR DECODEUR
1
||x − x̃||2 [1.86]
N
#
1
DN = ||x − x̃||2 f (x)dx [1.87]
N x
D ÉFINITION.– Une paire (R, D) est dite atteignable s’il existe un ensemble codeur-
décodeur tel que :
lim DN ≤ D [1.88]
N →∞
Dans son article de 1959 [SHA 59b], Shannon a introduit la fonction taux-
distorsion qui permet d’exprimer le taux maximum théorique qu’il est possible de
transmettre pour une contrainte sur la distorsion donnée.
D ÉFINITION.– Pour une source sans mémoire, la fonction taux-distorsion R(D) (Rate
Distortion Function) est définie comme suit :
Lorsque la source est gaussienne, nous pouvons démontrer que la relation [1.91]
est toujours vraie :
/ 2
1 σx
2 log2 D 0 ≤ D ≤ σx2
R(D) = [1.91]
0 D > σ2
Sur la gure 1.10, nous avons tracé la fonction distorsion-taux donnée par relation
[1.92] pour σ x2 = 1.
0.9
0.8
0.7
0.6
D(R)
0.5
0.4
0.3
0.2
0.1
0
0 0.5 1 1.5 2 2.5 3 3.5 4
R(bits)
Sur la gure 1.11, nous présentons les valeurs optimales y i avec une quantication
uniforme (identiées par des *) et non uniforme (identiées par des o) pour L = 8
dans le cas d’une source gaussienne.
ici plus de 2 dB. Pour atteindre la limite théorique, il faudra utiliser une quantication
vectorielle qui consiste à grouper plusieurs échantillons. Ces différentes techniques
seront développées dans le chapitre 2.
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
ï3 ï2 ï1 0 1 2 3
Comme présenté sur la gure gure 1.12, ce canal est représenté par un graphe sur
lequel nous faisons apparaître le valeurs possibles de l’entrée et de la sortie. Les labels
sur les branches correspondent aux probabilité conditionnelles P r(Y = y|X = x).
0 1−p 0
p
X Y
p
1 1
1−p
Pe = P r(X = 0, Y = 1) + P r(X = 1, Y = 0)
= P r(X = 0)P r(Y = 1|X = 0) + P r(X = 1)P r(Y = 0|X = 1)
= qp + (1 − q)p = p [1.94]
Sur la gure 1.13, nous présentons les courbes H(X|Y ) = f (q) pour un canal
binaire symétrique avec p = 0,1 0,2 et 0,5.
P r(X, Y ) Y =0 Y =1 P r(Y )
X=0 q(1 − p) qp Y =0 q(1 − p)+(1 − q)p
X=1 (1 − q)p (1 − q)(1 − p) Y =1 qp + (1 − q)(1 − p)
P r(X|Y ) Y =0 Y =1
q(1−p) qp
X=0 q(1−p)+(1−q)p qp+(1−q)(1−p)
(1−q)p (1−q)(1−p)
X=1 q(1−p)+(1−q)p qp+(1−q)(1−p)
H(X|Y)
1 p=0,5
0.9
0.8
p=0,2
0.7
0.6
0.5 p=0,1
0.4
0.3
0.2
0.1
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
probabilité q
A partir des probabilités P r(Y |X), nous pouvons calculer l’entropie condition-
nelle H(Y |X). Nous obtenons :
Le canal binaire symétrique est un cas particulier de la famille des canaux discrets
sans mémoire. Les symboles en entrée de ce canal sont M -aires et les symboles en
sortie sont L-aires. Il est décrit par un ensemble de LM probabilités conditionnelles
de la forme P r(Y = y j |X = xi ) = pij et P r(X = xi ) = qi . Comme dans le cas bi-
naire, nous pouvons facilement montrer que les probabilités conditionnelles satisfont
la relation suivante :
L
!
P r(Y = yj |X = xi ) = 1 pour i = 1, 2, . . . , M [1.96]
j=1
p11
x1 y1
x2 y2
X Y
xi
yj
xM
pML yL
M
! L
!
= P r(X = xi ) P r(Y = yj |X = xi )
i=1 j=1
j!=i
M
!
= P r(X = xi )(1 − pii ) [1.97]
i=1
Le canal binaire à effacement, introduit par Elias en 1955 [ELI 55], est un canal
dans lequel des bits peuvent être perdus ou effacés. Par rapport au canal binaire sy-
métrique, nous ajoutons un évènement Y = ' pour signier que le bit transmis a été
effacé. Ce canal est donc caractérisé par les probabilités conditionnelles suivantes :
X Y
1-p
0 0
p
e
p
1 1
1-p
P r(Y )
P r(X, Y ) Y = 0 Y =" Y =1
Y =0 q(1 − p)
X = 0 q(1 − p) qp 0
Y =" p
X=1 0 (1 − q)p (1 − q)(1 − p)
Y = 1 qp + (1 − q)(1 − p)
P r(X|Y ) Y =0 Y =" Y =1
X=0 1 q 0
X=1 0 1−q 1
Le canal à bruit blanc additif gaussien est le canal de transmission le plus impor-
tant. Il permet de modéliser les canaux dont le bruit prédominant est le bruit thermique.
Nous considérerons que la bande occupée par le signal en entrée du canal est en bande
de base limitée à B et que le bruit additif est stationnaire, blanc, gaussien et de densité
spectrale de puissance unilatérale N 0 . La puissance du bruit N est égale à :
N = N0 B [1.99]
yi = xi + ni [1.100]
ni est l’échantillon réel de bruit blanc centré dont la densité de probabilité est
gaussienne :
) *
1 n2
p(ni ) = √ exp − i [1.101]
πN0 N0
N N0
σn2 = =
2B 2
1.7.1. Introduction
En présence de bruit, nous avons C < H MAX (X). Pour calculer la capacité du
canal de transmission, il faut déterminer la quantité d’information moyenne perdue
dans celui-ci. Nous avons vu précédemment que H(X|Y ) mesure l’incertitude rési-
duelle sur X connaissant Y . Pour une bonne communication, il est souhaitable que
cette quantité soit nulle ou négligeable.
Lorsque le canal est tellement bruyant que X et Y sont indépendants, nous avons
H(X|Y ) = H(X). Dans ce cas particulier la capacité du canal de transmission est
nulle, C = 0. Ces deux cas sont illustrés par les gures 1.16 et 1.17.
H(X, Y )
H(X)
H(X) + I(X; Y )
H(Y )
- H(X|Y ) = 0
I(X; Y )
H(X, Y )
H(X) + I(X; Y ) = 0
H(X)
- H(X|Y ) = H(X)
H(Y )
Lorsque l’entropie de la source est égale à H MAX (X), H(X|Y ) ne dépend plus
que du canal de transmission utilisé. Si H(X|Y ) est non négligeable (cas du canal
bruyant), il ne sera pas possible d’effectuer une communication sans erreur en reliant
directement la source au canal de transmission. Il faut donc placer un élément appelé
Ainsi, la capacité d’un canal de transmission telle qu’elle est a été dénie dans
[1.103] est égale au plus grand nombre de bits d’information qui peuvent être transmis
sur le canal avec un taux d’erreurs aussi faible que souhaité.
En multipliant les deux termes de cette inégalité par D s le débit de la source nous
obtenons l’inégalité entre le débit maximum d’information binaire D b et la capacité
par unité de temps :
mots de code associés aux mots d’information sont générés aléatoirement parmi un
ensemble de 2 N R mots de code. Le décodage proposé consiste à vérier qu’il existe
un mot de code unique conjointement typique avec le mot reçu. Si c’est le cas, le
décodage est réussi. Dans le cas contraire (aucun mot ou plusieurs mots satisfaisant
au critère), le décodage est un échec. Puisque la probabilité qu’un autre mot de code
soit conjointement typique avec le mot reçu est égale à 2 −N (I(X;Y )) , si nous limitons
le nombre de mot de code à 2 N (I(X;Y )) , nous pouvons garantir avec une grande pro-
babilité de ne pas confondre le mot de code transmis avec les autres mots de code
possibles.
Nous verrons plus tard que le décodage optimal consiste à choisir le mot de code
le plus proche du mot reçu au sens de la distance euclidienne. Cependant, cette classe
de décodeurs présente des difcultés pour la démonstration du théorème.
Les travaux de Shannon ne donnent pas de solution pratique (c’est-à-dire avec une
complexité raisonnable) pour réaliser un codeur et un décodeur. A partir de 1948, les
chercheurs ont proposé des codes correcteurs d’erreurs et des algorithmes de déco-
dage permettant de s’approcher de cette limite théorique. Ce n’est qu’en 1993 avec
la découverte des Turbo codes [BER 93] et en 1995 avec la redécouverte des codes
LDPC [MAC 99] qu’il a enn été possible de s’approcher à moins de 1 dB de cette
limite.
Nous avons vu que le canal binaire symétrique est simplement décrit par la proba-
bilité d’inversion ou d’erreur p. Comme H(Y |X) = H 2 (p), l’information mutuelle
moyenne I(X; Y ) du canal binaire symétrique est donnée par :
Sur la gure 1.19 nous présentons les courbes I(X; Y ) = f (q) pour un canal
binaire symétrique différentes valeurs de p. Nous pouvons voir sur cette gure que
l’information mutuelle moyenne est maximisée lorsque P r(X = 0) = P r(X = 1) =
q = 1/2.
I(X,Y)
1
p=0
0.9
0.8
0.7
0.6
p=0,1
0.5
0.4
p=0,2
0.3
0.2
0.1
p=0,5
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
probabilité q
Sur la gure 1.20 nous présentons la courbe C = f (p) pour un canal binaire
symétrique obtenue avec q = 0, 5 Comme attendu, la capacité est maximale lorsque
p = 0 et nulle lorsque p = 0, 5.
I(X,Y) 1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
probabilité p
Nous avons vu que l’entropie conditionnelle H(X|Y ) est égale à pH 2 (q) et l’in-
formation mutuelle moyenne I(X; Y ) du canal binaire à effacement est la suivante :
C =1−p [1.111]
Pour déterminer la capacité d’un canal à bruit blanc additif gaussien, nous allons
tout d’abord calculer l’information mutuelle moyenne I(X; Y ). Nous avons introduit
dans la section 1.6.4 la relation y i = xi +ni entre les échantillons y i du signal en sortie
du canal additif à bruit blanc additif gaussien et les échantillons du signal d’entrée x i
et des échantillons de bruits n i . Les échantillons xi , yi et ni peuvent être vus comme
des réalisations des trois variables aléatoires X, Y et Z. Ainsi, l’information mutuelle
moyenne peut s’exprimer alors comme suit :
# #
p(y|x)
I(X; Y ) = p(x, y) log2 dxdy [1.112]
p(y)
= HD (Y ) − HD (Y |X)
= HD (Y ) − HD (X + Z|X)
= HD (Y ) − HD (Z|X)
= HD (Y ) − HD (Z) [1.113]
Calculons la variance de Y :
C = max I(X; Y )
( (
= log2 π(2σx2 + N0 ) − log2 πN0
) *
1 2σx2
= log2 1 + en Shannon/symbole [1.116]
2 N0
Il faut préciser que la capacité du canal additif à bruit blanc gaussien a été calculée
ici avec une contrainte sur la puissance moyenne disponible à l’émission. D’autres
contraintes comme la puissance crête donneraient une capacité différente. Lorque le
bruit n’est pas blanc sur toute la bande, la capacité du canal sera obtenue en appliquant
la technique du waterfilling qui généralise la relation [1.116].
= 2Bσx2 [1.117]
La capacité C est une capacité par symbole réel, c’est-à-dire par échantillon du
signal. Certains auteurs, parlent de capacité par dimension souvent exprimée en Shan-
non/dimension.
Capacité=f(SNR)
6
4
Capacité (Sh/symb)
0
ï10 0 10 20 30 40
SNR (dB)
) *
P &
C = Blog2 1 + en Shannon/sec [1.119]
N
Lorsque le rapport signal à bruit est grand, nous pouvons approximer la capacité
du canal additif à bruit blanc gaussien comme suit :
) *
P log (P/N ) B
&
C = Blog2 1 + ≈ B 10 ≈ (P/N )dB
N log10 2 3
y = x+n [1.120]
Pour D tendant vers l’inni, nous avons montré dans l’annexe 1 que(le vecteur de
bruit2 est concentré à la surface de la sphère à D dimensions de rayon Dσn2 .
Le vecteur émis x est généré aléatoirement avec une variance σ x2 par dimension et
une distribution gaussienne an de maximiser la capacité :
!"
D
2. Norme du vecteur de bruit = i=1 n2i .
Nous souhaitons réaliser une transmission sans erreur d’une quantité d’informa-
1
tion moyenne H(U ) = D log2 M , où M = 2DH(U) est le nombre de signaux émis
possibles. Pour ce faire, il faut que les sphères de bruit soient disjointes. Ainsi le
volume
( des M sphères de bruit doit être inférieur au volume de la sphère de rayon
D(σx2 + σn2 ). Rappelons que le volume d’une sphère à D dimensions et de rayon r
est donné par :
π D/2
V (r, D) = rD [1.123]
Γ(D/2 + 1)
(
V ( D(σx2 + σn2 ), D)
nombre de signaux distinguables = M ≤ ( [1.124]
V ( D.σn2 , D)
Cette idée est illustrée sur la gure 1.22. L’expression se simplie comme suit :
& 'D/2
σx2 + σn2
M≤ [1.126]
σn2
Ds n
2
D (s x + s n )
2 2
Finalement, comme la capacité C est la plus grande valeur que peut prendre la
quantité d’information moyenne H(U ), nous retrouvons la formule de la capacité du
canal additif à bruit blanc gaussien :
& '
1 σ2
C = log2 1 + x2 Sh/dim [1.128]
2 σn
Lorsque la bande passante est limitée, la dimension D est égale à D = 2BT avec
B bande passante du système et T la durée de la transmission. La puissance du bruit
est égale à N = N0 B = 2Bσn2 et la puissance moyenne du signal X est égale à
P = 2Bσx2 . Alors la capacité C & par unité de temps est :
& '
& P
C = B log2 1+ [1.129]
N
& '
P
= B log2 1+ en Sh/sec
N0 B
Soit Eb l’énergie moyenne par bit d’information et E s l’énergie moyenne par sym-
bole. Nous avons :
Es Eb
P = = [1.130]
Ts Tb
Nous avons la relation suivante entre le rapport signal à bruit P/N et le rapport
Eb /N0 :
P Es Eb Eb
= = =η [1.131]
N N0 BTs N0 BTb N0
Db 1
η= avec Db = débit binaire d’information [1.132]
B Tb
L’efcacité spectrale η est maximale lorsque la bande passante est minimale, soit
Bmin = 1/Ts , nous avons :
1 Ts
ηmax = = [1.133]
Tb Bmin Tb
) *
C& Eb
ηmax = = log2 1 + ηmax en bits/sec/Hz [1.134]
B N0
Eb 2ηmax − 1
= [1.135]
N0 ηmax
6
ηmax
QPSK
2
BPSK
1
Turbo Codes CC (133,171)
CC+RS
0
ï2 0 2 4 6 8 10
Eb /N0 (dB)
La gure 1.24 présente les courbes d’efcacité spectrale maximale pour différentes
modulations numériques. Compte tenu du nombre d’états possible M de ces modu-
lations, l’efcacité spectrale est limitée à log 2 (M ) quel que soit le rapport E b /N0 .
Ces courbes peuvent être obtenues numériquement à partir de l’expression mathéma-
tique de l’information mutuelle moyenne donnée dans l’équation [1.112] en prenant
en compte la distribution de y qui n’est plus une distribution gaussienne mais qui est
fonction de la modulation considérée.
ité
ac
borne 256QAM
ap
ec
ed
b
ur
borne 128QAM
co
(bits/sec/Hz)
borne 64QAM
borne 32QAM
efficacité h
borne 16QAM
borne 8PSK
borne QPSK
borne BPSK
E /N (dB)
1.8. Exercices
Une source X émet les trois symboles a 1 ,a2 et a3 avec les probabilités suivantes
Pr(X = a1 ) = 0, 25 Pr(X = a2 ) = 0, 5 et Pr(X = a3 ) = 0, 25.
Nous tirons quatre cartes au hasard dans un jeu de 32 cartes (quatre couleurs :
cœur, pique, carreau et trèe - huit valeurs : 7,8, 9, 10, valet, dame, roi et as).
Déterminer la capacité d’un canal à bruit blanc additif gaussien dont la puissance
du signal est de 10 W, la bande passante est de 1 MHz et la densité spectrale du bruit
bilatérale 12 N0 est égale à 10−9 W/Hz.
/
0, 5 si j = i ± 1mod5
P r(Y = yj |X = xi ) =
0 sinon
Codage de source
2.1. Introduction
Nous avons vu dans les sections 1.4 et 1.5 qu’il existe deux grandes classes de
codage de source : le codage de source sans perte et le codage de source avec perte.
L’objectif du codeur de source sans perte est de décrire la séquence numérique is-
sue de la source par une suite de symboles, en général binaires, la plus courte possible
tout en garantissant que celle-là puisse être reconstruite parfaitement au récepteur par
le décodeur de source. Dans le codage de source avec perte, l’objectif est de minimi-
ser un critère de délité comme l’erreur quadratique moyenne ou la qualité subjective
sous une contrainte d’un débit binaire.
Dans ce chapitre, nous commencerons dans la section 2.2 par passer en revue les
différentes solutions qui peuvent être mise en œuvre comme l’algorithme d’Huffman,
le codage arithmétique et le codage Lempel-Ziv pour le codage de source sans perte.
La suite de ce chapitre sera consacrée au codage avec perte. Dans la section 2.3, nous
étudierons la quantication scalaire et la quantication vectorielle ainsi que leurs per-
formances théoriques. Les techniques de codage pour les sources à mémoire comme
la prédiction linéaire, la quantication scalaire avec prédiction et le codage par trans-
formée et par sous-bande seront ensuite détaillées dans la section. Finalement nous
présenterons quelques exemples d’applications comme la compression d’image xe
et audio ainsi que le codage de la parole.
Le codage par plage (RLC) (Run Length Coding) est un algorithme simple per-
mettant de prendre en compte la redondance entre symboles. Il est efcace quand la
séquence à coder est composée de suites de symboles identiques. Au lieu de coder in-
dépendamment chaque symbole, nous déterminons des couples (plage ou nombre de
symboles identiques consécutifs, symbole). Prenons l’exemple de la suite de données
codés sur 8 bits suivante :
10, 10, 10, 15, 15, 35, 50, 27, 25, 12, 12, 12, 12, 6
→ 3, 10, 2, 15, 1, 35, 1, 50, 1, 27, 1, 25, 4, 12, 1, 6 [2.1]
Une solution plus efcace consiste à n’ajouter un préxe indiquant le nombre de
symboles identiques successifs que lorsque celui-ci est supérieur à 1 :
10, 10, 10, 15, 15, 35, 50, 27, 25, 12, 12, 12, 12, 6
→ 3, 10, 2, 15, 35, 50, 27, 25, 4, 12, 6 [2.2]
Dans ce cas, il est nécessaire d’ajouter un symbole supplémentaire qui indiquera
la position des symboles répétés. Par exemple, nous pouvons ajouter un octet tous les
huit symboles pour indiquer la présence d’un préxe. Pour l’exemple précédent, les
symboles répétés étant le premier, le second et le septième symbole, nous aurons :
10, 10, 10, 15, 15, 35, 50, 27, 25, 12, 12, 12, 12, 6
→ (11000010)bin, 3, 10, 2, 15, 35, 50, 27, 25, 4, 12, 6 [2.3]
Cet algorithme est particulièrement efcace dans le cas d’une image composée de
pixels noirs et blancs comme le télécopieur.
Nous commençons par classer la liste des messages de haut en bas par ordre de
probabilité décroissante (chaque message correspond à un nœud).
1) Choix des deux nœuds de probabilités moindres.
2) Ces deux nœuds sont reliées avec la branche supérieure. labelisée à 0 et la
branche inférieure labelisée à 1.
3) La somme de ces deux probabilités est alors associée au nouveau nœud.
4) Suppression des deux nœuds précédemment choisis puis retour à la phase 1.
Nous répètons cette procédure jusqu’à ce qu’il ne reste plus aucun message. L’arbre
ainsi obtenu décrit graphiquement l’ensemble du code. Les mots sont nalement lus
en parcourant chaque chemin de la droite vers la gauche.
!
!
!
!
!
!
!
!
La table de codage est présentée dans le tableau 2.1. Le nombre de bits moyen par
mot est égal à 2,8.
Message Mot ni
a5 00 2
a1 010 3
a2 011 3
a7 100 3
a8 101 3
a6 110 3
a4 1110 4
a3 1111 4
Pour évaluer l’entropie d’un texte écrit, nous réduisons la taille de l’alphabet aux
26 lettres de l’alphabet plus la virgule, le point, le guillemet et espace soit une taille
de l’alphabet égale à 30. Les probabilités d’apparition des caractères dans un texte
littéraire français sont donnés dans le tableau 2.2.
ai pi ai pi
a 0.0734 p 0.0171
b 0.0094 q 0.0059
c 0.0248 r 0.0510
d 0.0325 s 0.0703
e 0.1263 t 0.0533
f 0.0097 u 0.0043
g 0.0091 v 0.0120
h 0.0080 w 0
i 0.0617 x 0.0043
j 0.0035 y 0.0018
k 0.0005 z 0.0005
l 0.0513 0.1717
m 0.0205 ’ 0.0096
n 0.0504 , 0.0180
o 0.0387 . 0.0086
des doublets. Nous pouvons voir que le doublet {qu} a une forte probabilité d’appari-
tion alors que tous les autres doublets commençant par la lettre q ont une probabilité
d’apparition nulle.
a b c d e f g h i j k l m n o p q r s t u v w x y z ’ , .
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
’
,
.
En groupant les caractères deux par deux, nous obtenons une entropie par caractère
de 3,6 Shannon/caractère qui est sensiblement inférieure à l’entropie par caractère
précédente. Différentes études ont montré que pour un texte littéraire, l’entropie est
encore bien plus faible : de l’ordre de 1 Shannon/caractère.
Il est à noter que dans beaucoup de cas, les candidats déterminent la lettre suivante
dès la première tentative. Excepté au début des mots et des syllabes, les autres lettres
sont obtenues très aisément. Nous pouvons imaginer un codage de source très efcace
utilisant ces propriétés : si au lieu de coder successivement les symboles, nous codons
le nombre de tentatives, nous voyons bien qu’il sera possible de réduire fortement le
nombre de bits nécessaires pour transmettre cette phrase. Ceci implique qu’au déco-
dage nous effectuerons la procédure inverse en utilisant des tables de décodage très
complexes. Ce système, bien que peu réaliste, nous permet d’illustrer les principes
utilisés par le codage arithmétique [BAT 97, COV 91, MAC 03, RIS 76] et par l’al-
gorithme de Lempel-Ziv [ZIV 78]. Nous allons maintenant présenter ces deux classes
d’algorithmes.
Introduit par Rissanen [RIS 76] et Pasco [PAS 76], le codage arithmétique permet
de coder une source (avec ou sans mémoire) sans connaissance a priori de ses statis-
tiques. Comme pour le codage de Huffman adaptatif, la distribution des probabilités
est estimée au l de l’eau. Un des principes du codage arithmétique consiste à asso-
cier à chaque séquence binaire un intervalle sur le segment [0, 1[ comme indiqué sur la
gure 2.3. Par exemple, la séquence 0111 correspond à l’intervalle [0, 0111; 0, 1000[
en binaire soit [0, 4375; 0, 5[ en décimal. Plus la séquence binaire est longue, plus
l’intervalle associé est petit. Contrairement à l’algorithme de Huffman étudié préce-
demment, il sera possible d’associer un nombre de bits moyen non entier à un symbole
d’entrée en fonction de sa probabilité d’apparition.
Prenons un exemple pour mieux illustrer ce principe. Supposons une source dis-
crète à deux symboles a et b avec les probabilités d’apparition P r(a) = 23 et P r(b) =
1
3 . Nous souhaitons coder la séquence aaba. Nous commencons par partitionner le seg-
ment [0; 1[ en deux intervalles S a = [0; 23 [ et Sb = [ 23 ; 1[ respectivement de longueur
2 1
3 et 3 . Comme le premier symbole de la séquence est a, l’intervalle S a est ensuite
divisé en deux intervalles S aa = [0; 49 [ et Sab = [ 49 ; 23 [ respectivement de longueur 49
et 29 car P r(aa) = P r(a)P r(a | a) = 23 × 23 = 49 et P r(ab) = P r(a)P r(b | a) =
2 1 2 8 8 4
3 × 3 = 9 . Saa est alors divisé en deux intervalles S aaa = [0; 27 [ et Saab = [ 27 ; 9 [
8 32
puis nalement l’intervalle S aab est divisée en deux intervalles S aaba = [ 27 ; 81 [ et
Saabb = [ 32 4
81 ; 9 [.
La séquence aaba associée à l’intervalle S aaba = [0, 297; 0, 395[ sera donc en-
codée par le mot 0101 qui correspond à l’intervalle [0, 0111; 0, 1000[ en binaire soit
[0, 3125; 0, 375[ en décimal. En effet, il s’agit du mot de plus petite longueur dont
l’intervalle est inclu dans l’intervalle S aaba .
Le décodeur réalise les mêmes opérations que le codeur pour retrouver la séquence
des symboles émis par la source. En pratique, il n’est pas nécessaire de connaître les
probabilités conditionnelles des Q symboles de la source et celles-ci seront estimées
au fur et à mesure des symboles émis. Par exemple, dans le cas de la source binaire
précédente, nous pourrons utiliser la loi de succession de Laplace pour estimer cette
probabilité comme suit :
c+1
P r(a |symboles précédents) ≈ [2.4]
s+2
Cet algorithme, proposé en 1978 par Lempel et Ziv est indépendant des propriétés
statistiques de la source. Il utilise un dictionnaire qui est complété au fur et à mesure
de l’apparition des symboles à coder. Chaque élément du dictionnaire est composé
d’une paire comprenant un pointeur sur un élément précédent du dictionnaire et un
symbole. Ainsi chaque élément du dictionnaire correspondra à une suite de symboles.
00100000110001001000001011000100000100001100010101000010000011000
00101100000011
Nous commençons par déterminer la suite la plus courte que nous n’avons pas
encore rencontrée en commençant par la gauche :
0,01000001100010010000010110001000001000011
0,01,000001100010010000010110001000001000011
0,01,00,0001100010010000010110001000001000011
0, 01, 00, 000, 1, 10, 001, 0010, 0000, 101, 100, 010, 00001, 000011
L’encodage se fait au l de l’eau. Les suites sont décrites à partir des suites précé-
demment rencontrées. Le résultat est présenté dans le tableau 2.3.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
∅ 0 01 00 000 1 10 001 0010 0000 101 100 010 00001 000011
0–0 1–1 1–0 3–0 0–1 5–0 3–1 7–0 4–0 6–1 6–0 2–0 9–1 13–1
0-0 , 1-1 , 1-0 , 3-0 , 0-1 , 5-0 , 3-1 , 7-0 , 4-0 , 6-1 , 6-0 , 2-0 , 9-1 , 13-1
L’arbre des suites stockées dans le dictionnaire est présenté sur la gure 2.5.
Chaque nœud correspond à une suite obtenue à partir d’une suite précédente et l’ajout
d’un symbole 0 ou 1 (label indiqué sur la branche). Cette représentation graphique fa-
cilite la construction du dictionnaire ainsi que le codage et le décodage de la séquence.
9
0 1 13
4 1 14
3 0
8
0 1 7 0
1
1 12
0 2 0
0
11
1 6 0
0 1 10
5
0-0 , 1-1 , 01-0 , 11-0 , 000-1 , 101-0 , 011-1 , 111-0 , 0100-0 , 0110-1 , 0110-0 ,
0010-0 , 1001-1 , 1101-1
Cet algorithme peut aussi être utilisé avec des sources ayant des alphabets non binaires
comme par exemple des caractères ASCII [SAL 07].
Proposé en 1984 par Terry Welch, cet algorithme est une variante populaire de
l’algorithme LZ78. Comme pour l’algorithme LZ78, la séquence de sortie de la source
est décomposée en petites suites de longueurs variables. Les suites qui sont stockées
dans un dictionnaire initialement vide sont appelées les suites prototypes. Une suite
nouvelle est ajoutée dans le dictionnaire chaque fois qu’elle est différente des suites
prototypes déjà stockées. De plus, cette suite à laquelle nous ajoutons un bit 0 ou 1 ne
doit pas être déjà présente dans le dictionnaire.
0, 01, 00, 000, 1, 10, 001, 0010, 0000, 101, 100, 010, 00001, 000011, 0001, 0101,
000010, 0000110, 0000101, 1000, 00011
Les suites prototypes en gras correspondent aux seize suites prototypes qui seront
stockées dans le dictionnaire. A titre d’exemple, la suite 00001 a été retirée du dic-
tionnaire car les suites 000010 et 000011 sont présentes dans celui-ci. Le tableau 2.4
donne la liste des seize suites prototypes dans cet exemple. Chaque suite prototype est
ici codée avec un mot de quatre bits.
L’arbre des suites prototypes stockées est présenté sur la gure 2.6.
1 0 1
0
1 0
0 1
1
1
0 0
1
1
0
0
0
1
1
0
Finalement, la séquence binaire issue d’une source est décomposée en utilisant les
suites prototypes stockées dans le dictionnaire :
0010, 0000110, 0010, 010, 0000101, 1000, 1000, 0010, 00011, 0001, 0101, 000010,
0000110, 0000101, 1000, 00011
1000 1111 1000 0011 1110 1010 1010 1000 1011 0111 1001 1101 1111 1110
1010 1011
séquence, l’algorithme apporte déjà une sensible réduction du nombre de bits. En pra-
tique, le contenu du dictionnaire est adapté dynamiquement en fonction de l’évolution
des caractéristiques de la source. Il existe d’autres algorithmes comme le code Tunstall
qui associent à chaque message de longueur variable un mot composé d’un nombre
xe de symboles q-aire. L’algorithme Lempel-Ziv et ses variantes sont utilisés pour la
compression des chiers informatiques. Il permet de s’approcher asymptotiquement
de H(X).
2.3.1. Introduction
Soit le signal x(t) à bande limitée B issu d’une source analogique. En utilisant le
théorème de l’échantillonnage rappelé dans le chapitre 2, nous montrons que ce signal
peut être représenté à partir de la suite x(kT ) comme suit :
+∞
! -π .
x(t) = x(kT )sinc (t − kT ) [2.5]
T
k=∞
sin(x) 1
avec sinc(x) = x et T = 2B .
k
La suite x(kT ) représente les échantillons du signal x(t) aux instants kT = 2B .
Cette suite est donc obtenue par échantillonnage de x(t) à la fréquence de 2B échan-
tillons par seconde.
x̃ = yi pour x ∈ Si [2.7]
Chaque intervalle ou cellule S i est bornée par deux seuils notés a i−1 et ai . Ainsi,
la largeur de S i est égale à ai − ai−1 . La quantication est dite uniforme si tous les
intervalles ont la même largeur, notée ∆.
y1 y2 y3 y4 y5 y6 y7 y8 x
a1 a2 a3 a4 a5 a6 a7
7D
= y8
2
5D
= y7
2
3D y
= 6
2
D y
= 5
2 D = a5
2 D = a6 x
- 3D = a1 - 2 D = a2 - D = a3 3D = a7
D
- = y4
2
3D
- = y3
2
5D y
- = 2
2
7D
- = y1
2
Un exemple de quantication non uniforme est donné sur les gures 2.10 et 2.11
pour L = 8.
y1 y2 y3 y4 y5 y6 y7 y8 x
a1 a2 a3 a4 a5 a6 a7
~
x
y8
y7
y6
y5
a1 a2 a3 y4 a5 a6 a7 x
y3
y2
y1
La qualité d’un quanticateur peut être mesurée par l’erreur quadratique |x − x̃| 2
entre le signal quantié et le signal d’origine.
x̃ = x + q [2.9]
∆
Pour la quantication uniforme, l’erreur de quantication q est comprise entre − 2
et + ∆
2.
Nous pouvons noter qu’un bit supplémentaire améliore le rapport signal à bruit de
6 dB. C’est ce que l’on appelle « la règle des 6dB par bit » !
Si nous supposons que le signal x est une sinusoïde d’amplitude crête à crête A
2
(soit une amplitude crête de A/2) alors σ x2 = A8 et à partir de l’expression [2.12],
nous obtenons :
3
SN R = 10 log10 + 6, 05R
2
= 1, 76 + 6, 05R dB [2.13]
SN R = 6, 05R dB [2.15]
1. Le mot « modulation » utilisé ici doit être pris avec précaution. En effet, historiquement, les
techniques de codage pour les sources analogiques comprenaient trois éléments : la quantica-
tion, le codage et la modulation. Cependant, aujourd’hui seules les deux premières fonctions
composent les techniques de codage.
Quantification
x˜n = xn + qn [2.16]
ln(1 + µ(x))
y = (signe de x) avec µ = 255 et |x| ≤ 1 [2.19]
ln(1 + µ)
Sur la gure 2.13, nous présentons les caractéristiques de transfert relative à la loi
A et à la loi µ (les courbes sont pratiquement superposées !).
0.8
0.6
0.4
0.2
ï0.2
ï0.4
ï0.6
ï0.8
ï1
ï1 ï0.8 ï0.6 ï0.4 ï0.2 0 0.2 0.4 0.6 0.8 1
La quantication non uniforme peut être réalisée à partir d’une quantication uni-
forme sur douze bits. Nous modélisons la loi par treize segments. La table d’encodage
est présentée dans le tableau 2.5.
Si = {x : (x − yi )2 ≤ (x − yj )2 ∀j *= i} [2.21]
Dans le cas où le nombre de cellules L est grand, la largeur des cellules est petite
et nous pouvons faire l’hypothèse que la distribution de x est constante dans chaque
cellule f (x) ≈ f (yi ) x ∈ Si . Soit ∆i = ai − ai−1 , la longueur de l’intervalle S i .
Nous avons :
# ai
P r(X ∈ Si ) = f (x)dx ≈ ∆i yi [2.23]
ai−1
Et donc :
L
! # ai
D(R) = f (yi ) (x − yi )2 dx [2.24]
i=1 ai−1
L
1!
D(R) = f (yi )((ai − yi )3 − (ai−1 − yi )3 ) [2.25]
3 i=1
An de minimiser la distorsion, nous allons chercher à rendre égaux les termes
(ai − yi )3 et (ai−1 − yi )3 . Nous en déduisons que le représentant y i doit être choisi
au centre de la cellule y i ≈ (ai−1 + ai )/2.
L L
1 ! 1 !
D(R) ≈ P r(X ∈ Si )∆2i = f (yi )∆3i [2.26]
12 i=1 12 i=1
L
&& L
' 13 & L
' 23 '3
1 ! 1 ! !
−1
D(R) = f (yi )∆3i = f (yi )∆3i L [2.27]
12 i=1 12 i=1 i=1
1 1
En utilisant l’inégalité de Hölders p + q = 1 nous avons :
& n
' p1 & n
' q1 n
! ! !
xpi yiq ≥ xi yi [2.28]
i=1 i=1 i=a
L
! # +∞
(1/3)
f (yi ) ∆i ≈ f (1/3) (x)dx [2.30]
i=1 −∞
&# '3
+∞
1
D(R) ≈ f (1/3) (x)dx 2−2R [2.31]
12 −∞
Cette formule est dite de Panter et Dite. Nous retrouvons bien la relation [2.14]
dans le cas d’une source distribuée uniformément. En utilisant cette formule, nous
pouvons montrer après calcul que pour une source gaussienne centrée de variance σ x2 ,
nous avons :
√
3 2 −2R
D(R) = πσx 2 = 2.72σx2 2−2R [2.32]
2
En présence d’une source avec mémoire, les échantillons x ne sont pas indépen-
dants et il est possible d’appliquer un codage entropique après la quantication sca-
laire an que le taux de codage R soit égal à l’entropie de la source constituée des
échantillons de sortie du quanticateur scalaire :
L
!
R = H(X̃) = − P r(X ∈ Si ) log2 (P r(X ∈ Si ))
i=1
L
!
=− f (yi )∆i log2 (f (yi )∆i )
i=1
L
! L
!
=− f (yi )∆i log2 f (yi ) − f (yi )∆i log2 ∆i
i=1 i=1
# +∞ L
!
=− f (x) log2 f (x)dx − f (yi )∆i log2 ∆i
−∞ i=1
L
1!
= HD (X) − f (yi )∆i log2 ∆2i [2.33]
2 i=1
1
= HD (X) − log2 (12D) [2.34]
2
La fonction distorsion-taux effective asymptotique pour un quanticateur scalaire
associé à un codage entropique s’écrit alors :
1
D(R) = πeσx2 2−2R = 1, 42σx2 2−2R [2.36]
6
Ainsi, dans le cas d’une source gaussienne, le√gain apporté par le codage entro-
pique après une quantication scalaire est égal à 3 3/e = 1, 91 soit 2,8 dB.
L = 2N R [2.37]
x̃ = yi pour x ∈ Si [2.38]
Les deux critères pour l’optimalité (règle du plus proche voisin et condition du
centroïde) se généralisent directement à partir du cas scalaire.
1 !
yi = xk [2.41]
|Si |
xk ∈Si
Nous n’avons pas la garantie que le quanticateur ainsi obtenu soit optimal (au
sens de la minimisation de l’erreur quadratique moyenne) même si l’algorithme
converge toujours. L’algorithme de Lloyd est aussi appelé algorithme des k-moyennes
(K-means) qui est un algorithme classique pour le partitionnement de données en fonc-
tion de leurs statistiques.
vecteurs sont plutôt concentrés le long d’une droite. Ainsi, contrairement à la quan-
tication scalaire, la quantication vectorielle va pouvoir exploiter cette propriété de
corrélation.
0.5
x(n)
ï0.5
ï1
0 10 20 30 40 50 60 70 80 90 100
n
1.5
0.5
x(n+1)
ï0.5
ï1
ï1.5
ï2
ï2 ï1.5 ï1 ï0.5 0 0.5 1 1.5 2
x(n)
Sur les gures 2.16 et 2.17, nous présentons les vecteurs et les cellules obtenues
aprés quantication scalaire et vectorielle. Dans les deux cas, les représentants ont été
obtenus en utilisant l’algorithme de Lloyd. Pour le quanticateur scalaire, le nombre
de représentants L est égal à 4 alors que pour le quanticateur vectoriel L = 16 car
nous avons choisi un nombre de dimensions N = 2. Les deux quanticateurs utilisent
donc 2 bits en moyenne par échantillon. L’erreur quadratique moyenne par dimension
est égale à 0,0267 et 0,015 respectivement pour le quanticateur scalaire et vectoriel.
2
1.5
0.5
ï0.5
ï1
ï1.5
ï2
ï2 ï1.5 ï1 ï0.5 0 0.5 1 1.5 2
1.5
0.5
ï0.5
ï1
ï1.5
ï2
ï2 ï1.5 ï1 ï0.5 0 0.5 1 1.5 2
#
1 1
M (Si , yi ) = ||x − yi ||2 dx [2.42]
N vol(Si )1+2/N Si
Lorsque le nombre de cellules L est grand, Gersho [GER 92] a montré qu’il était
raisonnable de faire l’hypothèse que le moment d’inertie normalisé est constant quelle
que soit la cellule M (Si , yi ) ≈ MN . Il a alors approximé la distorsion D N en fonction
de la distribution de l’entrée x comme suit :
avec :
√
le cas N = 1 (quantication scalaire), M 1 = 1/12 et β1 = 6 3π soit
Dans √
M1 β1 = 3π/2. Nous retrouvons bien la formule de Panter et Dite [2.31].
Zamir et Feder [ZAM 96] ont montré que lorsque N tend vers l’inni, M ∞ =
1/2πe. Comparons le gain obtenu en augmentant le nombre de dimensions dans le cas
d’une source i.i.d. gaussienne. Pour N → ∞, nous avons β ∞ = 2πe et M∞ = 1/2πe
soit M1 β1 = 1, ce qui correspond à la fonction distorsion-taux de Shannon donnée
par la relation [1.92]. Ainsi, le gain asymptotique est égal à :
√
M 1 β1 3
= π = 2, 72 soit 4, 35 dB [2.45]
M ∞ β∞ 2
2.4.1. Introduction
Dans la section précédente, nous avons vu qu’il était possible pour les sources i.i.d.
d’atteindre pratiquement la fonction distorsion-taux en utilisant soit une quantication
scalaire associée à un codage entropique soit une quantication vectorielle. Dans la
plupart des applications, les échantillons à la sortie de la source sont corrélés et nous
parlons alors de source avec mémoire. Dans ce cas, il est important d’exploiter cette
corrélation pour améliorer encore l’efcacité du codeur de source.
Il existe trois grandes familles de techniques pour exploiter cette propriété de cor-
rélation an de réduire le nombre de bits nécessaire pour transmettre ces échantillons :
– les techniques de codage direct basées sur une forme d’onde temporelle comme
la modulation Delta, PCM, DPCM, ADPCM ;
– les techniques basées sur des modèles de source comme le codage linéaire pré-
dictif (LPC, RPE-LTP) ou la quantication vectorielle (VSELP, CELP, ACELP) utili-
sés pour le codage de la parole à bas débit ;
– les techniques de codage par transformée (cosinus discret, ondelettes, banc de
ltres, etc.).
Supposons que le signal x n puisse être modélisé par un processus aléatoire sta-
tionnaire dont la fonction d’autocorrélation est R xx (m) = E[xn xn−m ]. Nous allons
chercher à estimer x̂ n à partir des P observations passées du signal {x n−1 , xn−2 , . . .
xn−P }. Le synoptique d’un prédicteur d’ordre P est présenté sur la gure 2.18.
L’objectif d’un prédicteur linéaire est de rechercher le vecteur a qui minimise l’er-
reur quadratique moyenne E[e 2n ] = E[(xn − x̂n )2 ].
xˆ n
+
a1 a2 aP
x x x
Soit :
a1 xn−1
a2 xn−2
a= . et xn−1 = . [2.46]
.. ..
aP xn−P
P
!
x̂n = ai xn−i
i=1
= xTn−1 a [2.47]
avec :
Rxx (1) Rxx (1) . . . Rxx (P − 1)
Rxx (0)
Rxx (2) Rxx (0) . . . Rxx (P − 2)
Rxx (1)
r= .. et R = .... .. ..
. . . . .
Rxx (P ) Rxx (P − 1) . . . . . . Rxx (0)
∂E[e2n ]
= −2r + 2Ra [2.49]
∂a
a = R−1 r [2.50]
P
!
ai Rxx (i − j) = Rxx (j) pour j = 1, 2, . . . , P [2.52]
i=1
Pour j = 2, . . . , P :
& '
1
"j−1
kj = 2 (j−1)
σE
Rxx (j) − i=1 ai (j − 1)Rxx (j − i)
∂rT a ∂aT Ra
2. Nous rappellons les formules de dérivations vectorielles suivantes : ∂a
= r et ∂a
=
2Ra si R est une matrice symétrique.
aj (j) = kj
2 2
σE (j) = σE (j − 1)(1 − kj2 )
P
2
2 2
σE = σE (P ) = Rxx (0) (1 − ki2 ) [2.53]
i=1
N
!
1
Rxx (m) = xn xn−m pour m = 0, . . . , P [2.54]
N n=1+m
Le gain de prédiction est déni comme le rapport des puissances des erreurs avec
et sans prédiction. En utilisant les relations [2.51] et [2.53], nous avons :
en = xn − x̂n [2.56]
x(t ) Quantification
e = ±D
~
1 bit
Acc
Acc
qn = ẽn − en [2.58]
Ainsi l’échantillon estimé x̂n est égal à l’échantillon précédent x n−1 entaché de
l’erreur de quantication q n−1 . Un exemple de fonctionnement est donné sur la
gure 2.21.
x(t)
x(t)
Nous pouvons observer deux types d’erreurs : l’erreur de poursuite est liée à la
pente de x̂n limitée à ∆/Tech . Pour diminuer l’erreur de poursuite, la fréquence
d’échantillonnage doit être égale à 4 à 5 fois la fréquence minimum d’échantillon-
nage. L’autre solution consiste à augmenter la valeur de ∆. Le second type d’erreurs
appelé aussi bruit granulaire se produit même si le signal x(t) est constant. En effet,
les échantillons estimés x̂n oscillent alors entre deux pas (bruit crête à crête de ∆).
Une solution consiste alors à diminuer ∆. Le choix de ∆ est un compromis entre les
deux types d’erreurs. Une autre solution efcace consiste à adapter le pas ∆ en fonc-
tion des variations du signal. C’est le principe utilisé dans la modulation Delta à pente
continuellement variable CVSD (Continuously Variable Slope Delta Modulation).
~
en ~
xn en Quantification xn
xˆn
Quantification
Prédiction
P
!
x̂n = ai x̃n−i [2.60]
i=1
Nous pouvons vérier que l’erreur de quantication q n = ẽn − en est aussi égale
à la différence x̃n − xn :
qn = ẽn − en
= ((x̃n − x̂n ) − xn − x̂n )
= x̃n − xn [2.61]
Prédiction
Avec cette structure, les échantillons à quantier sont décorrélés et de très faible
amplitude et nécessitent donc un nombre de bits limités. Il faut noter que la modulation
Delta est une version simpliée de la modulation DPCM. En effet, pour la modulation
Delta, la quantication est uniquement réalisée sur un bit et le prédicteur est rem-
placé par un simple ltre xe de fonction de transfert z −1 . Il existe des structures plus
complexes de modulateur DPCM utilisant deux ltres de prédiction. Il est également
possible d’adapter le pas de quantication en fonction de la variance des échantillons
de la source. Nous parlons alors de modulateur DPCM adaptatif (ADPCM). La mo-
dulation DPCM est utilisée pour le codage de la parole dans les standards ITU G.721,
G.722, G.723 et G.726 [ITU 90].
y = Ax [2.62]
le vecteur x̂ = [x̂0 , x̂1 , . . . , x̂N −1 ] est calculé par transformation linéaire inverse du
vecteur ŷ = [ŷ0 , ŷ1 , . . . , ŷN −1 ] :
x̂ = Bŷ [2.63]
y0 i0 i0 ŷ0
a0 b0
y1 i1 i1 ŷ1
x a1 b1 x̂
g
-1
A g B
yN -1 iN -1 iN -1 yˆ N -1
a N -1 b N -1
codeur décodeur
En raison de leur facilité de mise en œuvre, nous utilisons des transformées ortho-
gonales. Dans ce cas, nous avons :
B = A−1 = AT [2.64]
Rai = λi ai [2.65]
+ ) * ,
π 1
akn = wk cos n+ k avec n = 0, . . . , N − 1 et k = 0, . . . , N − 1 [2.66]
N 2
et :
B
1 si k=0
N
wk = B
2 si k>0
N
N −1 N −1
1 ! 1 !
D(R) = Di (Ri ) sous la contrainte Ri = R [2.67]
N i=0 N i=0
D’après l’équation [2.43], nous avons dans le cas scalaire D i (Ri ) ≈ ci σx2 2−2Ri . Il
est possible de montrer [SEG 76] que le taux de codage R i qui minimise la distorsion
D est le suivant :
1 ci 1 σ2
Ri = R + log2 >N 1
+ log2 >N i 1
[2.68]
2 ( i=1 ci ) N 2 ( i=1 σi2 ) N
Cette solution théorique présente l’inconvénient majeur que les taux de codage
déterminés ne sont pas des entiers. Il existe des algorithmes heuristiques qui allouent
les taux de codage par incrément en ajoutant 1 bit à chaque itération.
1.5
0.5
ï0.5
ï1
ï1.5
ï2
ï2 ï1.5 ï1 ï0.5 0 0.5 1 1.5 2
Sur la gure 2.26 nous présentons les vecteurs et les cellules obtenues aprés trans-
formée Karhunen-Loève et quantication scalaire obtenus avec le même exemple que
dans la section 2.3.5. Nous pouvons observer qu’après transformée, l’énergie est prin-
cipalement concentrée sur l’axe horizontal. Ainsi, nous pouvons allouer 3 bits pour
cette dimension et seulement 1 bit pour l’autre dimension, soit 2 bits en moyenne par
échantillon. L’erreur quadratique moyenne est égale à 0,0136 sur la première dimen-
sion et à 0,0199 pour la seconde dimension soit une erreur quadratique moyenne par
dimension de 0,0168, très proche de celle de la quantication vectorielle.
G0 ( z ) ØN ≠N F0 ( z )
xˆk
G1 ( z ) ØN ≠N F1 ( z )
xk
GN -1 ( z ) ØN ≠N FN -1 ( z )
) * ) *
2i + 1 2i + 1
Gi (f ) = G f − +G f + [2.70]
4N 4N
16 11 10 16 24 40 51 61
12 12 14 19 26 58 60 55
14 13 16 24 40 57 69 56
14 17 22 29 51 87 80 62
18 22 37 56 68 109 103 77
24 35 55 64 81 104 113 92
49 64 78 87 103 121 120 101
72 92 95 98 112 100 103 99
Le signal de parole peut être divisé principalement en deux familles de sons pro-
duits :
– les sons voisés comme par exemple les voyelles, les consonnes liquides « l » ou
nasales « m » : ces sons sont produits à partir de l’air issu des poumons qui fait vi-
brer les cordes vocales. Le signal émis est une suite d’impulsions périodique ou quasi
périodique caractérisée par une fréquence fondamentale f 1 ou pitch qui donne l’in-
tonation (80 à 150 Hz pour les hommes et 120 à 300 Hz pour les femmes) et des
fréquences secondaires f 2 , f3 , ... Ces quelques fréquences principales sont appelées
les formants. Les propriétés du conduit vocal caractérise le son qui est émis. La fré-
quence est controlée principalement par la langue et les lèvres alors que l’intensité est
ajustée en faisant varier la quantité d’air envoyé par les poumons ;
– les sons non voisés comme les consonnes fricatives « f », « s » ou « ch » : ils sont
produits par le passage d’un ux d’air sortant de la bouche ou du nez sans vibration
des cordes vocales. Ces sons ne possèdent pas de périodicité particulière et peuvent
être modélisés à partir d’une source de bruit blanc et gaussien.
Il faut souligner qu’il existe quelques sons qui combinent les deux modes de géné-
ration comme les consonnes fricatives voisées (par exemple « v », « z » et « j »).
Le conduit vocal peut être modélisé par un ltre linéaire attaqué par des impulsions
périodiques ou un bruit blanc gaussien. Les caractéristiques du ltre seront adaptées
en fonction des sons. Différentes techniques ont été mises en œuvre pour coder la
parole. Nous pouvons classer ces techniques en quatre catégories principales :
– le codage direct (PCM, DPCM, ADPCM) ;
– la prédiction linéaire (APC, LPC) ;
– la quantication vectorielle (VSELP, CELP, ACELP) ;
– la transformée en sous-bande (MELP).
Les paramètres importants pour évaluer un codeur de parole sont les suivants :
– le débit binaire de 1,2 kb/s à 64 kb/s ;
– la qualité, l’intelligibilité et la robustesse au bruit de fond. Pour l’évaluation de
la qualité subjective, la note MOS (Mean Opinion Score) variant de 1 (mauvais) à 5
(excellent) est couramment utilisée pour les tests en normalisation ;
– la complexité du codeur (pouvant varier de 2 à 30 millions d’instructions par
seconde (MIPS) selon la technique) et du décodeur ;
– le temps de latence de l’ensemble codeur/décodeur. Celui-ci est en général lié à
la durée de la trame (de 0,125 ms à 30 ms).
0.2
0.15
0.1
0.05
amplitude
ï0.05
ï0.1
ï0.15
ï0.2
0 0.2 0.4 0.6 0.8 1
temps (s)
Dans le cas des sons non voisés, nous supposons que le signal sonore peut être mo-
délisé par un processus aléatoire autorégressif d’ordre P 0 et par conséquent, il existe
un ltre de fonction de transfert A(z) d’ordre P ≥ P 0 blanchisseur. Par conséquent,
dans ce cas, nous déterminerons le tre H(z) = 1/A(z) qui à partir d’un signal d’ex-
citation e blanc et aléatoire de densité spectrale de puissance γ EE (f ) = σ 2 permet de
reconstruire au mieux la séquence d’entrée x. Nous avons :
1 1
H(z) = = "P [2.73]
A(z) 1 − i=1 ai z −i
σ2
γX̂ X̂ (f ) = = γXX (f ) [2.74]
|A(f )|2
Si P est pair, chacun des deux polynômes possède P/2 racines conjuguées sur le
cercle unité, ce qui nous permet d’écrire les polynômes sous la forme d’un produit
comme suit :
P/2
2
−1
P (z) = (1 − z ) (1 − 2 cos(w2i )z −1 + z −2 ) [2.76]
i=1
P/2
2
−1
Q(z) = (1 + z ) (1 − 2 cos(w2i−1 )z −1 + z −2 ) [2.77]
i=1
A partir des P coefcients a i , nous pouvons calculer les coefcients w i qui pos-
sèdent la propriété suivante :
Nous allons brièvement décrire les paramètres retenus pour le codeur LPC10 à dix
coefcients introduit par le département de la défense américaine (Federal Standard
1015) [CAM 86]. Comme la durée de la trame est de 22,5 ms et que la fréquence
2.5.2.4. Codeur par prédiction linéaire avec excitation par séquences codées
CELP
Le codeur par prédiction linéaire avec excitation par séquences codées CELP
(Code Excited Linear Predictive) ou une de ses variantes MPE (Multi-Pulse Excita-
tion) , RPE (Regular-Pulse Excitation) et VSELP (Vector Sum Excited Linear Predic-
tion) est utilisé dans pratiquement tous les codeurs de parole pour les débits binaires
allant jusqu’à 16 kbit/s. Contrairement au codeur LPC qui cherche à rendre la den-
sité spectrale de puissance γ XX (f ) ≈ γX̂ X̂ (f ), le codeur CELP cherche à obtenir
x̂ ≈ x [SCH 85]. Cette approche est appelée modélisation par la synthèse ou encore
analyse par la synthèse (AbS). La gure 2.31 présente le synoptique de ce codeur de
parole. Un schéma équivalent au précédent est présenté sur la gure 2.32. Un codeur
CELP comprend deux ltres prédictifs qui décorrèlent la séquence d’entrée x et four-
nissent une erreur de prédiction résiduelle. Le premier ltre prédicteur à long terme
LTP (Long Term Predictor) prend en compte la périodicité des sons voisés (fréquence
fondamentale). Le second ltre prédicteur à court terme STP (Short Term Predictor)
traite plus particulièrement les sons non voisés. Une quantication vectorielle de type
forme-gain est appliquée pour coder cette erreur résiduelle. Ainsi, l’objectif du codeur
sera de déterminer les coefcients des ltres prédictifs mais aussi l’indice du vecteur
d’excitation choisi dans un dictionnaire, ainsi que le gain.
x
m'
arg min x - xˆ lm
l'
m ,l
1 1 xˆ lm
B (Z ) A(Z )
eˆ 0 gˆ 0
eˆ1 gˆ1
m'
x e Règle du plus proche voisin
B(z) A(z) l'
arg min e - g mel
m ,l
eˆ 0 gˆ 0
eˆ1 gˆ1
que la valeur 1 ou –1 et sont à des positions régulières [SAL 98]. La répartition des
débits est la suivante : coefcients du ltre STP d’ordre 10(1,8kbit/s), coefcients du
ltre LTP (2 kbit/s) et les indices des vecteurs d’excitation et gain (4,2 kbit/s) ;
– norme ETSI 6.20 GSM HR demi-débit (en Europe) et norme TIA IS-54 (au
Japon et en Amérique du Nord) VSELP (Vector Sum Excited Linear Prediction)
(6,3kbit/s) : le dictionnaire des vecteurs d’excitation est fortement structuré ;
– norme ETSI GSM FR full rate (13 kbit/s) qui utilise un codeur RPE-LTP (Re-
gular Pulse Excitation with Long Term Prediction) : la séquence d’excitation est une
concaténation de séquences composées d’impulsions régulièrement espacées. La ré-
partition des débits est la suivante : coefcients du ltre STP d’ordre 8 (1,8kbit/s),
coefcients du ltre LTP (1,8 kbit/s) et les indices des vecteurs d’excitation et gain
(9,4 kbit/s) ;
– norme ETSI GSM EFR enhanced full rate (12,2kbit/s) utilisant l’algorithme
ACELP ;
– norme TIA IS-96 utilisée pour les communications cellulaires de troisième gé-
nération CDMA QSCELP (1,2 à 9,6 kbit/s) pas de ltre LTP ;
– norme FS 1016-CELP (4,8kbit/s) : développée par le département américain de
la défense (DoD) pour la troisième génération de téléphones sécurisés STU-III (secure
telephone unit).
Alors que les techniques de codage de la parole que nous avons présentées précé-
demment exploitent les caractéristiques des signaux sonores générés par l’être humain,
la compression audio prend en compte les propriétés psychoacoustiques du système
auditif humain.
Zwicker [ZWI 61] a permis de décrire le comportement de l’oreille. Ces études ont
mis en évidence les valeurs limites du niveau acoustique comme indiqué sur la gure
2.33. La sensibilité est maximale entre 2 kHz et 5 kHz.
60
50
40
Niveau de seuil (dB)
30
20
10
ï10
ï20
2 3 4
10 10 10
Fréquence (Hz)
Une autre propriété importante pour la compression audio est l’existence du phé-
nomène de masquage ou seuil d’audition masqué. En effet, lorsque deux sons sont
présents à l’entrée du système auditif, le son le plus puissant peut masquer l’autre
son si leurs fréquences respectives sont proches. Ceci s’explique par la structure de
la membrane basilaire qui peut être divisée en différents segments traitant chacun une
bande de fréquence. Ces bandes de fréquence sont appelées bandes critiques et le sys-
tème auditif humain peut donc être modélisé par un banc de ltre composé de 24
bandes de fréquence. La liste couramment admise de ces bandes critiques en utilisant
l’échelle de Bark3 est donnée dans le tableau 2.8.
3. Le nom Bark a été donné en hommage au physicien allemand Heinrich Georg Barkhausen
(1881-1956) qui a réalisé les premières mesures subjectives du son.
Indice Bande (Hz) Largeur (Hz) Indice Bande (Hz) Largeur (Hz)
1 20–100 80 13 1720–2000 280
2 100–200 100 14 2000–2320 320
3 200–300 100 15 2320–2700 380
4 300–400 100 16 2700–3150 450
5 400–510 110 17 3150–3700 550
6 510–630 120 18 3700–4400 700
7 630–770 140 19 4400–5300 900
8 770–920 150 20 5300–6400 1100
9 920–1080 160 21 6400–7700 1300
10 1080–1270 190 22 7700–9500 1800
11 1270–1480 210 23 9500–12000 2500
12 1480–1720 240 24 12000–15500 3500
100
80
Niveau de masquage (dB)
60
40
20
ï20
2 3 4
10 10 10
Fréquence (Hz)
Le synoptique général d’un codeur audio MPEG est présenté sur la gure 2.35.
511
!
st [i] = x[t − n]Hi [n] i = 0, . . . , 31 [2.79]
n=0
) *
(2i + 1) × (n − 16) × π
Hi [n] = h[n] cos [2.80]
64
avec h[n] = −C[n] si 4n/645 est impair et h[n] = C[n] sinon. C[n] sont les coef-
cients de la fenêtre de ltrage dénie dans la norme. La réponse impulsionnelle du
ltre prototype h[n] est présentée sur la gure 2.36.
En pratique, ce banc de ltre est mis en œuvre par un réseau polyphasé en cascade
avec une transformation en cosinus modiée. Les 32 signaux à la sortie du banc de
ltre sont alors calculés comme suit :
63 !
! 7
st [i] = M [i][k](C[k + 64j] × x[k + 64j]) [2.81]
k=0 j=0
où i est l’index de la bande de fréquence allant de 0 à 31. s t [i] est la sortie du ltre
pour la bande i à l’instant t où t est un entier multiple de 32. x[n] est le signal d’entrée
composé de 512 échantillons d’entrée qui sont stockés dans un tampon circulaire dont
les valeurs sont renouvelées par blocs de 32. M [i][k] sont les coefcients de la matrice
d’analyse donnés par :
) *
(2i + 1) × (k − 16) × π
M [i][k] = cos [2.82]
64
0.035
0.03
0.025
0.02
0.015
amplitude
0.01
0.005
ï0.005
ï0.01
ï0.015
0 50 100 150 200 250 300 350 400 450 500
time index
ï20
Réponse en fréquence (dB)
ï40
ï60
ï80
ï100
2.6. Exercices
Soit une source délivrant des échantillons réels. La densité de probabilité des
échantillons p(x) est donnée sur la gure 2.38.
p(x)
1/8
x
-8 +8
1) Nous quantions les échantillons sur huit niveaux en utilisant un pas égal à 2 et
les seuils de décisions suivants : –6, –4, –2, 0, +2, +4 et +6. Ainsi, l’échantillon quan-
tié x̃ peut prendre les valeurs suivantes : –7, –5, –3, –1, +1, +3, +5 et +7. Déterminer
les probabilités des échantillons quantiés x̃.
2) Calculer l’entropie de la source après quantication.
Soit une source délivrant des échantillons réels. Nous quantions ces échantillons
sur quatre niveaux en utilisant un pas de quantication égal à 1 et les seuils de dé-
cisions suivants : –1, 0, +1. Ainsi, l’échantillon quantié x̃ peut prendre les valeurs
suivantes : –1,5 –0,5 +0,5 +1,5.
1) Tracer la fonction de transfert du quanticateur.
2) Quantier la séquence suivante puis calculer l’erreur quadratique pour chaque
échantillon : 0,1 1,8 –0,3 –0,9 0,5.
3) La densité de probabilité des échantillons est donnée dans la gure 2.39. Nous
réalisons la même opération de quantication que précédemment. Tracer la fonction
d = f (x) avec d = (x − x̃)2 .
p(x)
1/2
x
-2 +2
x (t ) xn en Quantification
e~n
Prédiction
xˆn Prédiction
xn en Quantification e~n
Prédiction
qn
Prédiction
2) Exprimer E(z) en fonction de X(z) et Q(z). Nous pouvons montrer que dans
ce cas, le signal d’entrée comme l’erreur de quantication q(n) sont ltrées par le
même ltre de fonction de transfert 1 − W (z).
Soit le codeur DPCM de la gure 2.23.
3) Montrer que l’erreur de quantication q n = ẽn − en est égale à x̃n − xn .
4) Montrer que le codeur DPCM est équivalent au schéma précédent.
La structure du décodeur DPCM est donnée dans la gure 2.24.
5) Justier l’architecture codeur/décodeur.
3.1. Introduction
Dans ce chapitre, nous étudierons les aspects principaux des codes correcteurs et
détecteurs d’erreurs en blocs. Après avoir introduit quelques notions fondamentales
sur les corps dans la section 3.2, nous étudierons les codes en blocs linéaires, leurs
structures, leurs propriétés et leurs représentations matricielles dans la section 3.3.
Dans la section 3.4 nous développerons les algorithmes de décodage à entrées dures
et pondérées de ces codes. Dans la section 3.5 nous étudierons leurs performances
théoriques, puis nalement nous présenterons la classe des codes cycliques et leurs
propriétés dans la section 3.6.
Un corps F est un ensemble non vide muni de deux lois de composition internes,
l’addition et la multiplication, et satisfaisant les axiomes suivants :
– F est un groupe commutatif par rapport à l’addition. Il possède les propriétés
d’associativité, d’élément neutre noté 0, de symétrie et de commutativité ;
– la multiplication est associative : si a, b, c ∈ F , alors a(bc) = (ab)c ;
– la multiplication est commutative : si a, b ∈ F , alors ab = ba ;
– la multiplication est distributive à droite et à gauche par rapport à l’addition : si
a, b, c ∈ F , alors a(b + c) = ab + ac et (a + b)c = ac + bc ;
– le corps contient un élément neutre noté 1 pour la multiplication ;
– tout élément de F non nul est inversible ; si a ∈ F (a *= 0), a −1 est son inverse
avec aa−1 = 1.
Un corps ni possédant q éléments est noté GF (q) (Galois Field) ou F q en hom-
mage à Evariste Galois1. Il est possible de construire un corps ni à condition que q
soit un nombre premier ou soit de la forme q = p m avec p nombre premier. Lorsque
q est un nombre premier, l’addition et la multiplication dans le corps ni GF (q) cor-
respondent à l’addition et la multiplication modulo q. Tout corps ni doit contenir
au moins les éléments neutres 0 et 1. Ainsi, le corps ni le plus simple est le corps
GF (2). Pour les communications numériques, nous utilisons essentiellement les corps
nis GF (2) et GF (2m ) car nous ne considérons que des éléments binaires. Dans ce
chapitre, nous nous restreindrons donc à ces deux corps nis.
Soit un polynôme f (p) dont les coefcients sont des éléments de GF (2), f (p) =
f0 + f1 x + f2 p2 + · · · + fm pm avec fi ∈ GF (2). Le degré du polynôme est la plus
grande puissance non nulle de p. Si f m *= 0 alors le polynôme f (p) est de degré m.
D ÉFINITION.– Un polynôme est irréductible dans GF (2) s’il ne peut pas être écrit
sous la forme d’un produit de polynômes b(p)c(p) avec b(p) et c(p) de degré supérieur
ou égal à 1.
1. Evariste Galois (1811-1832) mathématicien français mort en duel à l’âge de vingt ans.
m
−1
T HÉORÈME.– Tout polynôme irréductible dans GF (2) de degré m divise p 2 − 1.
m = 2 p3 − 1 = (1 + p)(1 + p + p2 )
m = 3 p7 − 1 = (1 + p)(1 + p + p3 )(1 + p2 + p3 )
(1 + p + p3 + p4 + p5 )(1 + p + p2 + p4 + p5 )(1 + p + p2 + p3 + p5 )
m Polynôme m Polynôme
3 1 + p + p3 10 1 + p3 + p10
4 1 + p + p4 11 1 + p2 + p11
5 1 + p2 + p 5 12 1 + p + p4 + p6 + p12
6 1 + p + p6 13 1 + p + p3 + p4 + p13
7 1 + p3 + p 7 14 1 + p + p6 + p10 + p14
8 1 + p2 + p 3 + p 4 + p 8 15 1 + p + p15
9 1 + p4 + p 9 16 1 + p + p3 + p12 + p16
Un corps ni GF (2m ) est isomorphe au corps des polynômes à coefcients dans
GF (2) modulo un polynôme irreductible f (p) dans GF (2) et de degré m. GF (2) est
appelé corps de base. Soit α une racine de ce polynôme (f (α) = 0). Nous pouvons
montrer que les puissances successives de α engendrent les 2 m − 1 éléments non nuls
du corps GF (2 m ).
+ 0 1 α α2 × 0 1 α α2
0 0 1 α α2 0 0 0 0 0
2
1 1 0 α α 1 0 1 α α2
α α α2 0 1 α 0 α α2 1
α2 α2 α 1 0 α2 0 α2 1 α
D ÉFINITION.– Le polynôme minimal m i (p) est le polynôme de plus faible degré dont
αi est racine.
Pour l’exemple précédent les quinze polynômes minimaux sont les suivants :
La démonstration de ce théorème est donnée dans [LIN 83]. Nous pouvons vérier
que les cinq polynômes précédents sont irréductibles et facteurs de p 15 − 1. Nous
verrons dans la suite de ce chapitre que les polynômes irréductibles de cette table sont
les principaux polynômes utilisés pour la construction de codes cycliques.
3.3.1. Introduction
un mot de code composé de N symboles q-aire. Un code en blocs est linéaire si les N
symboles du mot code sont obtenus par combinaison linéaire des K symboles du mot
d’information. Cette propriété permet en particulier de décrire l’opération de codage
sous une forme matricielle.
Dans cette section, nous nous intéresserons uniquement aux codes en blocs li-
néaires binaires pour lesquels nous avons q = 2.
Il est pratique de représenter les mots d’information et les mots de code par des
vecteurs. Soit u = [u0 , u1 , . . . , uK−1 ] un mot d’information composé de K éléments
d’information u k ∈ GF (q) et c = [c0 , c1 , . . . , cN −1 ] le mot de code associé composé
de N éléments cn ∈ GF (q). Nous avons la relation matricielle suivante entre le mot
d’information u et le mot de code associé c :
c = uG [3.2]
Chaque mot de code est une combinaison linéaire des vecteurs g i de G composé
d’éléments gi,j ∈ GF (q). Ainsi donc, un code en blocs linéaire peut être déni comme
un sous-espace vectoriel à K < N dimensions construit suivant [3.3].
Il est toujours possible en combinant les lignes entre elles de mettre la matrice
génératrice G sous la forme systématique dénie de la façon suivante :
1 00 ...
0 p0,0 p0,1 . . . p0,N −K−1
0 10 ...
0 p1,0 p1,1 . . . p1,N −K−1
G = [IK P] = . .. .. ..
.. .. .. .. .. [3.4]
.. . . .. . . . .
0 0 0 . . . 1 pK−1,0 pK−1,1 . . . pK−1,N −K−1
c0 = u 0 , c1 = u 0 et c2 = u0
c2 = u 0 + u 1
Chaque mot de code a un nombre pair de 1. Les mots de code du code C 2 sont 000,
011, 110, 101. La gure 3.1 donne une représentation graphique de ce code dans un
espace à trois dimensions.
u1
c2
011
110
101
u0
000
obtenir la ligne 2 et les lignes 3 et 4 pour obtenir la ligne 3. La dernière ligne reste
inchangée. Cette technique de combinaison de lignes permet de convertir une matrice
génératrice quelconque en une matrice génératrice systématique.
100 01 10
0 1 0 00 1 1
G=
0 0 1
[3.8]
01 1 1
000 11 01
c4 = u 0 + u 2 + u 3
c5 = u 0 + u 1 + u 2
c6 = u 1 + u 2 + u 3
Les 24 mots de code associés à ce code sont donnés dans le tableau 3.8.
0000000 0001101 0010111 0011010
0100011 0101110 0110100 0111001
1000110 1001011 1010001 1011100
1100101 1101000 1110010 1111111
K
R= [3.9]
N
D ÉFINITION.– Le poids de Hamming w(c) d’un mot de code binaire c est égal au
nombre d’éléments non nuls de ce mot de code.
Lorsque le code est linéaire, la distance minimale d min est égale au poids de Ham-
ming minimal du code C (en excluant le mot de code nul c 0 ) :
Jusqu’à récemment, la distance minimale était l’unique critère pour évaluer les
performances d’un code correcteur d’erreurs. Ce critère a été partiellement remis en
cause suite à l’avènement de familles de codes très performants imitant le codage
aléatoire [BER 93, BAT 97].
Il existe un code linéaire en blocs dual (N, N −K) associé à chaque code C linéaire
en blocs (N, K). Soit H la matrice génératrice de ce code dual. Chacun des mots de
code c du code C est orthogonal à tous les mots de code du code dual :
cHT = 0 [3.12]
Puisque cette relation est valide pour tous les mots de code du code C, nous avons
la relation entre la matrice génératrice G du code C et H :
GHT = 0 [3.13]
Nous retrouvons bien les équations de parité calculées dans l’exemple précédent.
N
!
A(D) = Ad Dd [3.17]
d=0
−K
K N!
!
A(W, Z) = Aw,z W w Z z [3.18]
w=0 z=0
Aw,z est le nombre de mots de code de longueur N dont le poids de la séquence des
bits d’information est égal à w et dont le poids de la séquence des bits de redondance
est égal à z.
K
!
A(W, Z) = A(w, Z)W w [3.19]
w=0
avec :
−K
N!
A(w, Z) = Aw,z Z z [3.20]
z=0
K !
! N
B(W, D) = Bw,d W w Dd [3.21]
d=0 w=0
Les poids des différents mots de code sont détaillés dans le tableau 3.9. Les fonc-
tions d’énumération WEF, IRWEF et IOWEF pour le code de parité (3,2) sont les
suivantes :
A(D) = 1 + 3D2
A(W, Z) = 1 + 2W Z + W 2
B(W, D) = 1 + 2W D2 + W 2 D2
u c w z d
00 00 0 0 0 0
01 01 1 1 1 2
10 10 1 1 1 2
11 11 0 2 0 2
A partir de la liste des mots de code, les fonctions d’énumération WEF, IRWEF et
IOWEF pour le code C 3 (7, 4) sont les suivantes :
Lors d’une transmission sur canal binaire symétrique, le nombre d’erreurs e qu’est
capable de corriger un code correcteur d’erreurs dépend de la distance minimale du
code.
Les 2K mots de code du code peuvent être vus comme les centres de sphères de
Hamming de rayon e. Pour garantir que les 2 K sphères ne se chevauchent pas, nous
devons garantir :
F G
dmin − 1
e= [3.22]
2
Si le mot reçu est à l’intérieur de la sphère de Hamming du mot de code émis alors
le décodeur pourra retrouver le mot de code émis. Ceci n’est possible que si la distance
entre le mot de code émis et le mot reçu est inférieure ou égale à e. En conclusion,
un code en blocs linéaire (N, K) de distance minimale d min est capable de corriger e
erreurs suivant la relation [3.22].
Par ailleurs, ce même code peut aussi être utilisé pour détecter jusqu’à d min − 1
erreurs :
ed = dmin − 1 [3.23]
dmin
Ainsi, un code sera utilisé soit pour corriger jusqu’à e erreurs (fonction correction
d’erreurs) soit pour détecter jusqu’à e d erreurs (fonction détecteur d’erreurs). Il ne
pourra pas remplir les deux fonctions simultanément.
ef = dmin − 1 [3.24]
E XEMPLE.– Les codes C 1 (3,1) et C3 (7,4) dont la distance minimale est égale à 3
permettent soit de corriger une erreur soit d’en détecter deux.
e
!
qN ≥ qK i
CN (q − 1)i [3.25]
i=0
e
!
q N −K ≥ i
CN (q − 1)i [3.26]
i=0
2. Cnp = n!
p!(n−p)!
est le nombre de combinaisons sans répétition de n éléments pris p à p.
e
!
0 1 2
CN + CN (q − 1) + CN (q − 1)2 + · · · + CN
e
(q − 1)e = i
CN (q − 1)i [3.27]
i=0
Le nombre total des mots contenus dans les q K sphères de Hamming ne peut
excéder q N pour éviter le chevauchement de ces sphères. Par conséquent, un code
corrigeant e erreurs doit satisfaire l’inégalité [3.25].
e
!
2N −K ≥ i
CN [3.28]
i=0
D ÉFINITION.– Un code est dit parfait si il possède la propriété que tous les q N mots
possibles sont inclus dans les q K sphères de Hamming de rayon e. L’inégalité [3.28]
se transforme en égalité.
Nous allons donner dans cette section les principales bornes inférieures et su-
périeures sur la distance minimale des codes linéaires en blocs en fonction du taux
R = K/N .
dmin ≤ N − K + 1 [3.29]
Les codes réalisant l’égalité dans [3.29] sont appelés codes séparables à distance
maximale MDS (Maximum Distance Separable).
dmin 1 K
≤1−R+ avec R = [3.30]
N N N
dmin
R≤1− + o(1) [3.31]
N
Une seconde borne supérieure est la borne de Plotkin qui s’obtient lorsque N →
+∞ :
q dmin
R≤1− + o(1) [3.32]
q−1 N
Une borne supérieure plus ne est la borne de Elias-Bassalygo [BAS 65] :
H
) * dmin /R
1 q
R ≤ 1 − Hq 1 − 1 − 1 − + o(1) [3.33]
q q−1
B
1− 1 − 2 dmin
R
R ≤ 1 − H2 + o(1) [3.34]
2
) *
dmin
R ≤ 1 − Hq [3.35]
2N
) *
dmin
R ≥ 1 − Hq ∀N [3.36]
N
) *
dmin
R ≥ 1 − H2 ∀N [3.37]
N
Sur la gure 3.3 nous présentons les courbes R = f (d min /N ) relatives aux bornes
inférieures de Gilbert-Varshamov et aux bornes supérieures de Plotkin, Hamming et
Elias-Bassalygo dans le cas binaire. Tous les points de coordonnés (d min /N, R) sous
la borne de Gilbert-Varshamov sont atteignables et tous les points au-dessus de la
borne de Elias-Bassalygo ne sont pas atteignables. Nous pouvons observer que la
borne supérieure de Hamming est meilleure que la borne de Plotkin lorsque d min /N <
0, 3.
1
borne sup Bassalygo
borne inf GilbertïVarshamov
0.9
borne sup Plotkin
borne sup Hamming
0.8
0.7
0.6
R
0.5
0.4
0.3
0.2
0.1
0
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5
dmin/N
Sur la gure 3.4 nous présentons les courbes R = f (d min /N ) relatives aux
bornes inférieures de Gilbert-Varshamov et supérieures de Plotkin, Hamming et Elias-
Bassalygo dans le cas non binaire. q = 2 8 . Nous pouvons voir que les résultats sont
assez différents du cas binaire. La borne de Plotkin (équivalente ici à la borne de Sin-
gleton) est meilleure que la borne supérieure de Elias-Bassalygo lorsque q ≥ 16.
1
borne sup Bassalygo
borne inf GilbertïVarshamov
0.9
borne sup Plotkin
borne sup Hamming
0.8
0.7
0.6
R
0.5
0.4
0.3
0.2
0.1
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
dmin/N
Dans le cas non binaire, il existe des codes séparables à distance maximale comme
les codes de Reed-Solomon contrairement au cas binaire (hormis les codes triviaux
comme le code de parité (N, N − 1)).
pas innie. Cette probabilité décroît exponentiellement avec la longueur N des mots
Pe ≈ exp(−N E(R)) où E(R) est une fonction du taux R appelée exposant d’erreur
(error exponent) comme indiqué sur la gure 3.5. E(R) est une fonction positive pour
toutes les valeurs de R inférieures à la capacité.
E(R)
) * I ) *
ln 8 M ln N 8 e ln 8
E(R) = ESP R− − + ln √ + [3.39]
N N N Pmin N
avec :
et :
+M ,1+ρ
L
! !
E0 (ρ) = max − ln qi P (Y = yj |X = xi )1/(1+ρ) [3.41]
q
j=1 i=1
Le maximum dans l’équation [3.41] est calculé sur l’ensemble des vecteurs de
probabilité a priori q = [q 1 , . . . , qM ].
Pour le canal BSC, une borne supérieure plus ne basée sur le codage aléatoire
a été proposée par Poltyrev [POL 94] puis plus récemment par Polyanskiy et al.
[POL 10]. Les auteurs ont montré que pour un canal BSC de probabilité de transition
p, il existe un code linéaire (N, K) qui permet de garantir une probabilité d’erreur par
mot Pe . Nous avons :
N
& l
'
! !
l N −l l K−N s
Pe ≤ p (1 − p) CN min 1, 2 CN [3.42]
l=0 s=0
Sur la gure [3.3.7], nous présentons les courbes taux en fonction de N obtenues
avec la borne de Poltyrev pour différentes valeurs de la probabilité d’erreur par mots
Pe .
0.5
0.45
0.4
0.35
0.3
R
0.25
0.2
0.15
Pe=10ï2
ï3
0.1 Pe=10
Pe=10ï4
0.05 Pe=10ï5
ï6
Pe=10
0
0 100 200 300 400 500 600 700 800 900 1000
N
Pour le canal additif à bruit blanc gaussien, Shannon [SHA 59a] a déterminé la
borne par empilement de sphères de la forme :
Pe ≥ q(Θs , A) [3.43]
B 2 √
σx
avec A = 2
σn = SN R. Cette borne inférieure est calculée en faisant l’hypothèse
que les 2K vecteurs associés ( aux mots de code sont distribués sur la surface d’une
hypersphère centrée de rayon N σx2 . Ainsi q(Θs , A) est la probabilité que le vecteur
reçu soit hors du cône correspondant au mot de code transmis. Cette probabilité peut
s’écrire comme suit :
# π #
(N − 1)(sin φ)N −2 ∞ N −1
q(Θs , A) = √ C
N/2 πΓ N +1
D s
Θs 2 2 0
) 2 √ *
s + N A2 − 2s πA cos φ
× exp − dsdφ [3.44]
2
où le demi angle Θ s du cône élémentaire est déterminé an que la fraction entre la
surface de la calotte sphérique de ce cône et la surface de l’hypersphère associée soit
égal à :
1
Ω(Θs ) = [3.45]
2K
avec :
#
N − 1 Γ( N2 + 1) Θs
Ω(Θs ) = (sin φ)N −2 dΘ [3.46]
N Γ( N2+1 ) 0
Sur la gure [3.7], nous présentons les rapports E b /N0 en fonction de N pour
R = 1/2 et R = 1/3 obtenus en utilisant la borne par empilement de sphères.
Dans cette section nous présentons quelques codes en blocs importants. D’autres
classes de codes seront développées dans la section 3.6 sur les codes cycliques. Nous
commencerons par décrire les codes en blocs parfaits qui ont été introduits dans la
section 3.3.5.1. Il n’existe que deux familles de codes en blocs parfaits : les codes de
Hamming et les codes de Golay. Finalement, nous introduirons la classe des codes de
Reed-Muller couvrant une large gamme de dimension et de distance minimale.
3
Eb/N0
2.5
1.5
0.5
ï0.5
ï1 2 3 4 5
10 10 10 10
N
La distance minimale de ces codes est égale à 3 et ils peuvent donc corriger une
erreur. Nous verrons dans la section 3.6 que les codes de Hamming appartiennent à
la classe des codes cycliques et peuvent aussi être construits à partir d’un polynôme
générateur.
1 2 3
1 + C23 + C23 + C23 = 211
Les codes de Golay sont aussi des codes cycliques. La matrice génératrice systé-
matique du code de Golay (23,12) est la suivante :
1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 1 0
0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 1
0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1 0
0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1
0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 1 0 0 1 1 0 0
G=
0
[3.47]
0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 1 0 0 1 1 0
0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 1 0 0 1 1
0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 1 0 0 0 1 1
0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 1
0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 1 0 1
Le code de Golay ternaire 3 est un code linéaire ternaire (11,6) dont la distance
minimale est égale à 5. La matrice génératrice non systématique du code de Golay
ternaire (11,6) est la suivante :
10 00 00 111 11
0 1
00 00 112 2 0
0 0 10 00 121 0 2
G= [3.51]
0 0
01 00 210 1 2
0 0 00 10 201 2 1
00 00 01 022 11
1 2
1 + 2C11 + 4C11 = 35
r
!
N = 2m K= i
Cm dmin = 2m−r [3.52]
i=0
La matrice génératrice d’un code de Reed Muller d’ordre r est construite par la
concaténation de r + 1 matrices comme suit :
G0
G1
G= . [3.53]
..
Gr
3. Le code de Golay ternaire a été publié en 1947 par Juhani Virtakallio dans un magazine
de paris nois sur le football. L’auteur a montré qu’en faisant 729 paris lors d’un tournoi de
onze matchs nous pouvons être certains qu’un des paris a neuf résultats corrects (c’est-à-dire
seulement deux erreurs au maximum).
Nous avons G0 = [1 1 1 1 1 1 1 1] et :
00001111 g1
G1 = 0 0 1 1 0 0 1 1 = g2 [3.54]
01010101 g3
00000011 g1 g2
G2 = 0 0 0 0 0 1 0 1 = g1 g3 [3.56]
00010001 g2 g3
Dans le tableau 3.10, nous donnons la liste des codes de Reed-Muller que nous
pouvons construire pour m = 3, 4 et 5.
u 0 + u 2 + u 3 + c4 = 0 nœud de parité T 0
u 0 + u 1 + u 2 + c5 = 0 nœud de parité T 1 [3.57]
u 1 + u 2 + u 3 + c6 = 0 nœud de parité T 2
Le graphe de Tanner associé à ces équations de parité est donné sur la gure 3.8.
Dans la version (b), les nœuds de variable sont placés côté gauche et les nœuds de
contrôle ou de parité sont placés côté droit.
ci est choisi sous la contrainte que les vecteurs associés aux chemins du diagramme
en treillis construit jusqu’à la position i + 1 soient des mots de code partiels. Si l’état
d’arrivée est s i+1 et l’état de départ s i alors une branche reliera ces deux états dans le
diagramme en treillis. Dans le cas binaire, par convention une branche en trait pointillé
correspondra à c i = 0 alors qu’une branche en trait continu correspondra à c i = 1
comme montré dans la gure 3.9 .
u0 c0
c4 u1 c1
T0 u2 c2 T0
u0 u3 u3 c3 T1
u2 c4 T2
T1 T2
c5
c5 u1 c6 c6
(a) (b)
ci = 0
si+1
si
Figure 3.9. Branche d’une section du treillis
"""
""!
"!"
"!!
!""
!"!
!!"
!!!
100 01 10 1 11 111 0
0 1 0 00 1 1 0 11 111 1
G=
0 0 1
E= [3.59]
01 1 1 0 01 111 1
000 11 01 0 00 111 1
110 10 00 1 11 100 0
0 1 1 01 0 0 0 11 110 0
G= E= [3.60]
0 0 1 10 1 0 0 01 111 0
000 11 01 0 00 111 1
3.4.1. Introduction
u c x y r û
n
û
avec :
# +∞
2
erfc(a) = 1 − erf(a) = √ exp(−z 2 )dz [3.62]
π a
Dans [3.61], l’énergie par bit E b du cas non codé est remplacée par RE b pour
prendre en compte la rendement R du codeur de canal. Dans ce cas le décodeur à
entrées dures calcule des distances de Hamming. La relation entre le mot reçu r et le
mot de code c s’exprime comme suit :
r=c+e [3.63]
y = x+n [3.64]
Dans cette section, nous étudierons également le décodage des codes en blocs sur
canal à effacement.
Dans cette section, nous allons considérer deux critères de décodage : le critère
du maximum a posteriori (MAP) et le critère du maximum de vraisemblance. Un
décodeur MAP cherche parmi toutes les séquences possibles x, la séquence estimée x̂
pour laquelle la probabilité conditionnelle P r(x|y) est la plus grande :
p(y|x)P r(x)
P r(x|y) = [3.66]
p(y)
Faisons l’hypothèse que la probabilité d’apparition de chacun des mots de code est
identique P r(x) = 1/2 K . Avec cette hypothèse et puisque de plus le dénominateur
p(y) est commun à toutes les séquences, la séquence estimée x̂ est la séquence pour
laquelle la densité de probabilité conditionnelle p(y|x) est la plus grande :
En considérant que le canal est sans mémoire, les signaux émis sont perturbés
indépendamment les uns des autres, la densité de probabilité conditionnelle est égale
au produit des densités de probabilités conditionnelles p(y i |xi ) :
N
2 −1
p(y|x) = p(yi |xi ) [3.68]
i=0
) *dH (r,c)
dH (r,c) N −dH (r,c) N p
P r(r|c) = p (1 − p) = (1 − p) [3.69]
1−p
yi = xi + ni [3.71]
N
! −1
x̂ = arg min |yi − xi | [3.76]
x
i=0
En effet, comme y i2 , et x2i = Es sont communs à toutes les séquences nous pou-
vons simplier les calculs sans aucune dégradation des performances.
Le mot reçu r est la somme modulo 2 du mot de code émis c et d’un vecteur
d’erreurs e :
r= c+e [3.78]
Une première approche pour le décodage consiste à comparer le mot reçu r avec
l’ensemble des 2 K mots de code du code C. Pour minimiser la probabilité d’erreur
par mot, le décodeur choisit alors comme mot de code estimé ĉ le mot de code le
plus proche du mot reçu r au sens de la distance de Hamming. Cette approche est
cependant très complexe à mettre en œuvre et présente un intérêt pratique très limité.
K
c0 c1 c2 ... c2 −1
K
c0 + e1 c1 + e1 c2 + e1 ... c2 −1 + e1
K
c0 + e2 c1 + e2 c2 + e2 ... c2 −1 + e2
.. .. .. .. ..
. . . . .
N −K N −K N −K K N −K
−1 −1 −1
c0 + e2 c1 + e2 c2 + e2 . . . c2 −1 + e2 −1
ê s
ê0 s0
ê1 s1
ê2 s2
.. ..
. .
N −K N −K
−1
ê2 s2 −1
ĉ = r + ê [3.80]
Cette méthode, bien que moins complexe que la méthode du tableau standard, n’est
cependant applicable que pour des codes relativement simples (codes sachant corriger
quelques erreurs au maximum). Il faut, en effet effectuer le produit matriciel rH T et
mémoriser 2N −K vecteurs d’erreurs. Par exemple, la table pour le décodage d’un code
de Golay (23,12) nécessite une mémoire de 2 048 mots de 23 bits.
) *
10101
G= [3.81]
01011
10100
H = 0 1 0 1 0 [3.82]
11001
Il faut souligner qu’il existe plusieurs choix pour les deux dernières lignes du ta-
bleau.
ê s
00000 000
00001 001
00010 010
00100 100
01000 011
10000 101
11000 110
10010 111
Pour les codes de Hamming (2 J −1, 2J −1−J), la table de décodage par syndrome
contient 2J − 1 syndrômes non nuls qui sont associés aux 2 J − 1 vecteurs d’erreurs
simples.
Pour décrire l’algorithme de Viterbi, nous allons considérer l’exemple d’une trans-
mission point à point sur un canal additif à bruit blanc gaussien. Nous utiliserons le
code C3 de Hamming (7,4) déni par la matrice génératrice systématique donnée dans
[3.8] et son treillis associé. Soit le mot d’information u = [1110]. Le mot de code
est c = [1110010]. Après seuillage, nous recevons le mot r = [1010010]. Une erreur
s’est produite pendant la transmission du deuxième bit du mot de code.
A chaque étape l’algorithme de Viterbi calcule pour chaque section les métriques
de branche puis les métriques cumulées. A l’instant 0, la métrique cumulée est initia-
lisée à 0. Après avoir calculé les métriques cumulés sur le diagramme en treillis, nous
obtenons le mot de code estimé suivant : ĉ = [1110010] qui correspond au chemin en
rouge sur le diagramme en treillis de la gure 3.17. Nous avons bien retrouvé le mot
de code initial car nous n’avions qu’une seule erreur.
(1)
(0)
(0)
(1)
(1)
(1) (1)
(0)
(0)
(0)
(0)
(1)
(1) (1)
(0)
(0) (0)
(1)
(0) (1) (0)
(0) (0) (0)
(1) (1)
(0)
(1) (1) (0) (1) (1)
séquence 1 0 1 0 0 1 0
reçue
Considérons à nouveau une transmission point à point sur un canal additif à bruit
blanc gaussien. Nous utiliserons le même code C 3 de Hamming (7,4) que précedem-
ment. Soit le mot d’information u = [1110]. Le mot de code est c = Gu = [1110010]
et le mot émis x = [+1 + 1 + 1 − 1 − 1 + 1 − 1]. Le vecteur reçu après ltrage et
échantillonnage est y = [−0, 2 + 0, 91, 1 − 1, 3 + 0, 4 + 2, 5 − 0, 7]. L’ensemble des
métriques de branches pour ce vecteur reçu est donné dans le tableau 3.15.
(1)
(0)
(0)
(1)
(1)
(1) (1)
(0)
(0)
(0)
(0)
(1)
(1) (1)
(0)
(0) (0)
(1)
(0) (1) (0)
(0) (0) (0)
(1) (1)
(0)
(0)(1) (1) (0) (1) (1)
séquence 1 0 1 0 0 1 0
reçue
Après avoir calculé les métriques cumulées sur le diagramme en treillis, nous ob-
tenons le mot transmis estimé suivant : x̂ = [+1 + 1 + 1 − 1 − 1 + 1 − 1] et le mot
de code associé : ĉ = [1110010] qui correspond au chemin en gras sur le diagramme
en treillis de la gure 3.21. Nous avons bien retrouvé le mot de code initial. Nous
pouvons vérier que ||y − x̂|| 2 = 5,85.
(0)
(0)
(3) (1)
(1)
(1)
(1) (1) (1) (1)
(0)
(0)
(0)
(0) (1) (1)
(1)
(1) (1)
(0)
(0)
(0) (0) (0) (0)
(1)
(0) (1) (0)
(2) (1)
(0)(2) (0) (0)
(1) (1)
(0)
(0)(1) (1) (1) (2) (0) (2) (1) (1)
séquence 1 0 1 0 0 1 0
reçue
3.4.5. Décodage des codes en blocs linéaires binaires sur le canal à ef-
facement
Nous avons vu dans la section 1.6.3 que le canal à effacement est un modèle simple
qui simule en pratique la perte de paquets. Dans un canal à effacement, une partie des
symboles transmis ne sont pas reçus côté récepteur. Ces symboles sont dits effacés et
notés X.
Plusieurs approches sont possibles pour retrouver les symboles effacés. Une pre-
mière méthode consiste à tester l’ensemble des mots possibles en remplaçant les sym-
boles effacés par des 0 et des 1. Si un seul de ces mots est un mot de code, nous avons
la certitude qu’il s’agit bien du mot de code transmis. Si plusieurs mots possibles sont
des mots de code, alors le décodage est un échec.
reçu est r = [1XX1111]. L’ensemble des mots possibles est {1001111; 1011111;
1101111; 1111111} et leurs syndromes respectifs {100; 011; 111; 000}. Un seul mot
possible est un mot de code. Le mot de code décodé est donc ĉ = [1111111].
(0)
(0)
(3) (1)
(1)
(1)
(1) (1) (1) (1)
(0)
(0)
(0)
(0) (1) (1)
(1)
(1) (1)
(0)
(0)
(0) (0) (0) (0) (2)
(1)
(0) (1) (0)
(2) (1) (1)
(0)(2) (0) (0)
(1) (1)
(0) (1)
(0)(1) (1) (1) (2) (0) (2) (1) (0) (1)
séquence 1 0 1 0 0 1 0
reçue
E XEMPLE.– A partir des trois équations de parité du code [3.57], nous avons :
1 + c2 + 1 + 1 = 0
c2 = 1
1 + c 1 + c2 + 1 = 0 ⇒ c1 + c2 = 0 [3.83]
c1 + c2 + 1 + 1 = 0 c1 + c2 = 0
(0)
(0)
(3) (1)
(1)
(1)
(1) (1) (1) (1)
(0)
(0)
(0)
(0) (1) (1)
(1)
(1) (1)
(0)
(0)
(0) (0) (0) (0) (2)
(1)
(0) (1) (0)
(2) (1) (1)
(0)(2) (0) (0)
(1) (1)
(0) (1)
(0)(1) (1) (1) (2) (0) (2) (1) (0) (1)
séquence 1 1 1 0 0 1 0
décodée
/
c2 = 1
[3.84]
c1 = 1
/
1 , si la position i est effacée
ei = [3.85]
0 , sinon
(5.29)
(0.09)
(0.09)
(5.29)
(4.41)
(5.29) (0.36)
(1.96)
(0.09)
(0.01) (0.09)
(5.29)
(0.36)
(4.41)
(1.96)
(0.01) (0.09)
(5.29)
(3.61) (5.29) (1.96)
N
!
T (x) = Ti xi [3.86]
i=0
(9.46) (5.15)
(5.29)
(0.09)
(0.09)
(5.06) (9.55)
(5.29)
(4.41)
(1.46) (5.29)(4.35)
(0.36)
(1.96)
(0.09)
(0.01) (0.09)
(4.26) (1.55)
(5.29)
(0.36)
(4.41)
(1.96)
(5.05)
(0.01)(5.06) (0.09) (5.15)
(5.29)
(3.61) (5.29) (1.96)
(0.65) (0.66) (0.09) (0.75) 2.25
(0.01)
N
!
T EM = Ti pi (1 − p)N −i [3.87]
i=0
(9.46) (5.15)
(5.29)
(0.09)
(0.09)
(5.06) (9.55)
(5.29)
(4.41)
(1.46) (5.29)(4.35)
(0.36)
(1.96)
(0.09)
(0.01) (0.09)
(4.26) (1.55)
(5.29)
(0.36)
(4.41)
(1.96)
(5.05) (4.71)
(0.01)(5.06) (0.09) (5.15)
(5.29)
(3.61) (5.29) (1.96)
(0.65) (0.66) (0.09) (0.75) (3.51) 2.25
(0.01)
Ainsi, le décodeur corrige tous les motif composés d’un ou deux effacements. sept
des C37 = 35 motifs composés de trois effacements ne sont pas corrigés ainsi que tous
les motifs de 4, 5 ... 7 effacements.
Comme précédemment, le décodeur corrige tous les motifs composés d’un ou deux
effacements. Cependant 10 des C 73 = 35 motifs composés de trois effacements ne sont
pas corrigés. Schwartz et Vardy [SCH 06] ont montré qu’en ajoutant quelques équa-
tions de parité supplémentaires dans le graphe de Tanner, il est possible de corriger
des motifs supplémentaires et donc de se rapprocher des performances de la solution
optimale. Ces équations sont obtenues par combinaison linéaire des équations de pa-
rité de la matrice H. Une autre méthode est d’appliquer un algorithme de Viterbi.
(9.46) (5.15)
(5.29)
(0.09)
(0.09)
(5.06) (9.55)
(5.29)
(4.41)
(1.46) (5.29)(4.35)
(0.36)
(1.96)
(0.09)
(0.01) (0.09)
(4.26) (1.55)
(5.29)
(0.36)
(4.41)
(1.96)
(5.05) (4.71)
(0.01)(5.06) (0.09) (5.15)
(5.29)
(3.61) (5.29) (1.96)
(0.65) (0.66) (0.09) (0.75) (3.51) 2.25
(0.01)
séquence 1 1 1 0 0 1 0
décodée
1 1 1
X X 1
X 1 1 0 1 0
1 2 1 1 1 0
1 2 1 1 1 0
1 1 1
1 1 1
) *dH (r,c)
p
P r(r|c) = pdH (r,c) (1 − p)N −dH (r,c) = (1 − p)N [3.90]
1−p
PN i = CN p (1 − p)N −i
i i
[3.91]
Ainsi donc, pour un code en blocs linéaire sachant corriger jusqu’à e erreurs dans le
mot reçu de longueur N nous pouvons donner une borne supérieure sur la probabilité
d’erreur par mot après décodage en sommant les probabilités P N i correspondant aux
cas où le nombre d’erreurs en sortie du canal est supérieur à la capacité de correction
du code. Nous avons :
N
! N
!
T EM ≤ PN i = CN p (1 − p)N −i
i i
[3.92]
i=e+1 i=e+1
L’inégalité se transforme en une égalité uniquement lorsqu’un code parfait est uti-
lisé.
avec Λi zone de décision associée au mot de code x i et Λij zone de décision associée
au mot de code x i en faisant abstraction de tous les autres mots de code excepté x j .
La probabilité P r(y ∈ Λ ij |xi ) que y soit plus près de x j que de xi est appelée la
probabilité d’erreur par paire. Nous la notons P r(x i → xj ) :
def
P r(xi → xj ) = P r(y ∈ Λij |xi ) [3.95]
Sachant que x i a été transmis, la probabilité que y ne soit pas dans la zone de
décision Λi est inférieure ou égale à la somme des probabilités d’erreur par paire
P r(xi → xj ) pour tout j *= i.
! !
T EM ≤ P r(xi ) P r(xi → xj ) [3.97]
i j)=i
D’une manière générale, la borne par réunion donnée par la relation [3.97] est
un outil très utile pour évaluer les performances des systèmes de transmission avec
codage même si elle n’est précise que pour les rapports signal à bruit élevés.
x3 x1
L3 L1
L4 L2
x4 x2
Nous pouvons par exemple borner supérieurement la probabilité d’erreur par mot
sachant que le mot de code x 1 a été transmis comme suit :
Nous considérons le cas d’une modulation bipodale sur un canal additif à bruit
blanc gaussien. Puisque nous
√ avons E s √= REb , les échantillons codés émis peuvent
prendre les amplitudes + REb ou − REb (avec Eb énergie par bit et R = K N
rendement ou taux du code). A la sortie du ltre adapté, nous avons :
yi = xi + ni
L1
x3 x1
L1
x4 x2
L 13
x1 x3 x1 x1
L 21 L 31 L 41
L12
x2
L 14
Pour un canal additif à bruit blanc gaussien la probabilité d’erreur par paire
P r(xi → xj ) est donnée par :
& '
i j
1 d(x , x )
P r(xi → xj ) = erfc √ [3.98]
2 2 N0
La distance de Hamming entre les deux mots de code est égale à 2 et le rendement
du code est R = 2/3, ainsi, nous avons :
&I '
0 1
1 4 Eb
P r(x → x ) = erfc [3.101]
2 3 N0
Nous allons maintenant utiliser la borne par réunion pour exprimer une borne supé-
rieure sur le taux d’erreur par mot et le taux d’erreur binaire du décodeur à maximum
de vraisemblance sur un canal additif à bruit blanc gaussien associé à un code en blocs
linéaire (N, K). La borne par réunion ramène la comparaison d’un ensemble de mots
de code à un certain nombre de comparaisons de mots de code deux à deux. En suppo-
sant que tous les mots de code sont équiprobables, le taux d’erreur par mot est borné
par :
N
&I '
1 ! Eb
T EM ≤ Ad erfc dR [3.102]
2 N0
d=dmin
En utilisant l’inégalité :
1 √ 1
erfc( x) ≤ e−x [3.103]
2 2
0
W ∂A(W, Z) 00
T EB ≤ 0 [3.104]
K ∂W 0
W =Z=e−REb /N0
0
!N 0
0
= Bd H d 0 [3.105]
0 −RE /N
d=dmin H=e b 0
avec :
! w
Bd = Aw,z [3.106]
K
d:d=w+z
!K
w
Bd = Bw,d [3.107]
w=1
K
Une borne plus ne sur le taux d’erreur par bit [BEN 99] peut être obtenue à partir
de [3.100] en utilisant l’inégalité suivante :
√ √
erfc( x + y) ≤ erfc( x)e−y
Finalement, cette borne supérieure sur le taux d’erreur par bit s’exprime comme
suit :
&I ' 0
W Eb dmin R N Eb ∂A(W, Z) 0
0
T EB ≤ erfc dmin R e 0 0
2K N0 ∂W 0 E
−R b
N0
W =Z=e
&I ' 0
1 Eb dmin R N
N
! 0
Eb
d 0
= erfc dmin R e 0 Bd H 0 [3.108]
2 N0 0 E
−R b
d=dmin H=e N0
En ne gardant que les premiers termes, nous utiliserons la borne supérieure sui-
vante :
N
&I '
1 ! Eb
T EB ≤ Bd erfc dR [3.109]
2 N0
d=dmin
Cette borne peut se déduire en calculant la borne de l’union sur l’ensemble des
mots d’information en prenant en compte la contribution du poids w i de chaque mot
d’information :
2K
&I '
1 ! wi Eb
T EB ≤ erfc di R [3.110]
2 i=1 K N0
En regroupant les mots d’information générant des mots de code de même poids,
nous retrouvons bien la borne supérieure [3.109].
E XEMPLE.– Pour le code de parité (3,2), à partir des fonctions d’énumération de poids
A(W, Z) ou B(W, D) nous obtenons :
1 2
B2 = 2+ 1=2
2 2
&I '
3 4 Eb
T EM ≤ erfc [3.111]
2 3 N0
et :
&I '
4 Eb
T EB ≈ erfc [3.112]
3 N0
E XEMPLE.– Pour le code de Hamming (7,4), à partir des fonctions à partir des fonc-
tions d’énumération de poids A(W, Z) ou B(W, D) nous obtenons :
Dans le chapitre 1, nous avons vu que pour un canal additif à bruit blanc gaussien,
il est théoriquement possible de réaliser une transmission sans erreur à un rapport
Eb /N0 = 0dB en utilisant un code de rendement 1/2. La différence entre une chaîne
de transmission utilisant une modulation bipodale sans codage et cette limite de ca-
pacité théorique est de 9.6 dB (à un taux d’erreur par mot de 10 −5 ). L’ajout d’un
code correcteur d’erreurs doit permettre de s’approcher de la limite théorique de cette
chaîne de transmission.
D ÉFINITION.– Pour un taux d’erreur fixé (par mot, bit ou symbole), nous définissons
le gain de codage d’un code correcteur d’erreurs comme étant la différence de rapport
Eb /N0 entre la chaîne sans codage et la chaîne utilisant ce code.
Sur la gure 3.25, nous avons présenté les courbes de performances théoriques
T EM = f (Eb /N0 ) (obtenues en utilisant l’équation [3.102]) de trois chaînes de
transmission utilisant un code correcteur d’erreurs et un décodeur à entrées pondérées
ainsi que la courbe obtenue sans codage (modulation bipodale). Pour un taux d’erreur
par mot de 10 −5 , les gains de codage du code de parité (3,2), du code de Hamming
(7,4) et du code de Golay (23,12) sont respectivement de 1,3 dB, 2,3 dB et 3,8 dB.
ï1
10
sans codage
code de parité (3,2)
ï2
10 code de Hamming (7,4)
code de Golay (23,12)
ï3
10
TEM
ï4
10
Gain de codage
ï5
10 = 3,8 dB
ï6
10
ï7
10
0 1 2 3 4 5 6 7 8 9 10 11
Eb/N0 (dB)
Dans la section précédente, nous avons déterminé une borne supérieure du taux
d’erreur par mot :
N
&I '
1 ! Eb
T EM ≤ Ad erfc dR [3.114]
2 N0
d=dmin
Une approximation raisonnable pour les taux d’erreur élevés consiste à ne prendre
en compte que la contribution des mots de code dont le poids est égal à la distance
minimale. Nous avons alors l’approximation suivante :
&I '
1 Eb
T EM ≈ Admin erfc dminR [3.115]
2 N0
Au lieu du TEM, il est également possible d’utiliser le taux d’erreur par mot et par
bit d’information (TEMB) pour dénir le gain de codage :
&I '
T EM 1 Admin Eb
T EM B = ≈ erfc dminR [3.118]
K 2 K N0
Admin
GCT EMB ≈ 10 log10 (dmin R) − 0.2 log2 ( ) en dB [3.119]
K
Pour l’exemple considéré ci-dessus, le gain de codage serait alors égal à 4,75 dB.
Dans le tableau 3.16 nous présentons les gains de codage pour différents codes
correcteurs d’erreurs en blocs binaires.
Code (N, K) R dmin Admin GCasympt GCT EM B
Hamming (7, 4) 0, 57 3 7 2,3 dB 2,2 dB
Reed-Muller (8, 4) 0, 5 4 14 3 2,6
Hamming (15, 11) 0, 733 3 15 3,4 3,3
Reed-Muller (16, 5) 0, 31 8 30 4 3,5
Golay (23, 12) 0, 52 7 253 5,6 4,7
Golay (24, 12) 0, 5 8 759 6 4,8
Une autre approche consiste à utiliser le TEB mais elle implique alors de calculer
Bdmin .
ï1
10
code de Hamming dur
code de Hamming pondéré
code de Golay dur
ï2 code de Golay pondéré
10
ï3
10
ï4
10
TEM
ï5
10
ï6
10
ï7
10
3 4 5 6 7 8 9 10 11
E /N
b o
Les codes cycliques forment un sous-ensemble des codes linéaires en blocs. Alors
que pour un code en blocs linéaire, K mots de code sont nécessaires pour déterminer
l’ensemble des 2 K mots de code, dans le cas des codes cycliques, un seul mot de code
suft.
Les codes cycliques contiennent les familles de codes les plus importantes comme
les codes de Hamming, de Golay, les codes BCH et Reed Solomon. Leurs propriétés
permettent un codage et un décodage relativement aisés.
Dans cette section, nous présenterons les codes cycliques dans le corps ni GF (2),
bien que ces codes se généralisent dans GF (q).
Pour décrire un code cyclique (N, K), il est pratique d’associer à chaque mot de
code c = [c0 c1 . . . cN −2 cN −1 ] un polynôme c(p) de degré inférieur ou égal à
N −1:
c(p) = c0 + c1 p + · · · + cN −2 pN −2 + cN −1 pN −1
Nous allons montrer que les propriétés des codes cycliques s’obtiennent simple-
ment en utilisant l’algèbre des polynômes modulo p N − 1.
pc(p) = c0 p + c1 p2 + · · · + cN −2 pN −1 + cN −1 pN
Aucun mot de code n’est associé à ce polynôme puisque le degré de celui-ci est
supérieur à N − 1.
pc(p) = cN −1 + c0 p + c1 p2 + · · · + cN −2 pN −1 + cN −1 (pN − 1)
c& (p) = cN −1 + c0 p + · · · + cN −2 pN −1
Cette relation montre qu’à partir d’un polynôme c(p), il est possible de retrouver
l’ensemble des 2 K mots de code du code cyclique.
g(p) est le polynôme de degré minimal parmi les 2 K mots de code du code cy-
clique.
Les codes cycliques (7,4) ainsi obtenus sont des codes de Hamming étudiés précé-
demment.
Tableau 3.17. Liste des mots de code du code de Hamming (7,4) avec
g(p) =1 + p + p 3
110 10 00
0 1 1 01 0 0
G=
0 0 1
[3.122]
10 1 0
000 11 01
La matrice génératrice ainsi obtenue n’est pas sous la forme systématique. En pra-
tique, il est souhaitable que la matrice génératrice soit sous une forme systématique.
Soit le mot d’information u = [u 0 u1 . . . uK−2 uK−1 ] et u(p) = u0 + u1 p + · · · +
uK−2 pK−2 + uK−1 pK−1 son polynôme associé. Multiplions u(p) par p N −K :
s’écrit :
En résumé, pour obtenir le mot de code sous forme systématique c(p) = q(p)g(p)
il suft donc :
– de multiplier le polynôme u(p) par p N −K ;
– de diviser pN −K u(p) par g(p) pour obtenir le reste t(p) ;
– d’ajouter le reste t(p) à p N −K u(p) :
p3 u(p) = p3 + p4 + p5
3
5
p +p + p
4 3 p + p +1
5 3 2
p + p + p
2
4 2 p +p
p +p
4 2
p +p +p
p
c(p) = p + p3 + p4 + p5
c = [0 1 0 1 1 1 0]
c0 c1 c2 u0 u1 u2 u3
c0 c1 c2 c3 c4 c5 c6
contrôle information
Pour détecter la présence d’erreurs dans un mot reçu, la majorité des protocoles
utilisent une technique appelée Cyclic Redundancy Check (CRC). Cette technique
consiste à utiliser un code cyclique (N, K).
Soit g(p) le polynôme générateur du CRC. A partir d’un mot d’information u(p),
le mot de code c(p) est construit sous forme systématique comme précédemment.
Nous obtenons donc le mot de code systématique c(p) sous la forme suivante :
A la réception, nous divisons le mot reçu par g(p). Si le reste de la division est
nul, alors le mot reçu est un mot de code. Nous ferons alors l’hypothèse qu’il s’agit
bien du mot de code émis. Si le reste de la division n’est pas nul, cela signie qu’il y
a une ou plusieurs erreurs dans le mot reçu. Cette technique ne permet pas de corriger
les erreurs. Le récepteur envoie un message ACK en cas de bonne réception. En cas
d’échec, le récepteur envoie un message NACK et le mot de code est retransmis.
Le tableau 3.18 donne quelques polynômes utilisés pour la transmission des trames.
Les deux protocoles classiques dans les systèmes ARQ sont les protocoles stop-
and-wait et go-back-N.
Le protocole stop-and-wait est le plus simple mais peu efcace. Le récepteur en-
voie un symbole ACK après chaque trame et l’émetteur attend d’avoir reçu un symbole
ACK ou NACK pour respectivement transmettre une nouvelle trame ou retransmettre
la trame précédente. Le protocole stop-and-wait est illustré sur la gure 3.27a.
1 1
2
temps d’aller-retour 1 temps d’aller-retour 3 1
ACK 4 2
ACK
5 3 erreur
ACK
2 6 4
NACK
7 5 éliminés
erreur ACK
2 3 6
NACK ACK
4 7
ACK
5 3
ACK
2 6 4
ACK
7 5
ACK
2 8 6
ACK
9 7
(a) (b)
Figure 3.27. (a) Protocole Stop and Wait (b) Protocole go-back-N ARQ
avec Nf = 4
An d’améliorer la qualité des systèmes ARQ, les approches classiques peuvent
être couplées avec des codes correcteurs d’erreurs. Ces schémas sont appelés ARQ
hybrides ou encore HARQ (Hybrid ARQ).
M
!
Rav = Rk P r(S̄1 , S̄2 , . . . , Sk ) [3.125]
k=1
où Sk est l’évènement « données décodées correctement » lors du k ième slot. S̄k est le
complément de S k .
La complexité du protocole IR est plus grande que les autres systèmes ARQ mais
les performances sont signicativement meilleures.
Il faut souligner que la mise en œuvre des systèmes ARQ n’est pas toujours pos-
sible en particulier dans les systèmes de diffusion (par satellite, émetteur de télévision,
etc.). Un autre inconvénient majeur des systèmes ARQ est le délai dû aux retransmis-
sions.
Dans cette section nous allons étudier l’architecture nécessaire pour le codage des
codes cycliques. Nous verrons que ces opérations utilisent de simples additionneurs
modulo 2 et des registres à décalage.
6 5 4 3 2 2
1p + 0 p + 0 p + 0 p +1p + 0 p +1 1p +1p +1
6 5 4
1p +1p +1p
4 3 2
6 5 4
0 p +1p +1p + 0 p
3 1 p +1 p + 0 p + 1p + 0
5 4 3
1 p +1 p +1 p
5 4 3 2
0 p + 0 p +1p +1 p
4 3 2
0p +0p +0p
4 3 2
0 p +1 p +1 p + 0 p
3 2
1p +1p +1p
3 2
0 p + 0 p +1p +1
En analysant les étapes du calcul de cette division, nous pouvons faire les re-
marques suivantes :
– au cours de la division, le degré du dividende décroît : les modications du divi-
dende sont réalisées de la gauche vers la droite (des poids forts vers les poids faibles) ;
Fort de ces remarques, il est possible de déduire une structure matérielle pour réali-
ser cette division. Cette structure comporte autant de registres à décalage que le degré
du diviseur. Elle est présentée sur la gure 3.28 pour l’exemple traité précédemment.
Il est important de préciser que les bits entrent dans le diviseur poids fort (MSB) en
tête. A chaque coup d’horloge, un nouveau coefcient du polynôme a(p) entre dans
le circuit. Après d coups d’horloge, le premier coefcient non nul du quotient sort du
dernier registre à décalage. Ce coefcient est multiplié par g(p) puis soustrait comme
dans une division classique.
2
1 1p 1p
1 1
a( p) s1 s2 quotient
D D
5
0p 1p6 1p2 1p3 0p
4
1 D D 4
D D
4
0p 0 p5 1p6 0p 1p2 1p3
2
D D 5 D D
1p
4
1p
5 1p 1p2
0p 4 5 0p 1p 2 1p 3
0p
D D D D
0 p3 1p 4
1 1p 0 p2
3
1p 5 6
D D D D
3 4
1p 1p
0 p3 1p4 1 1p
D D 7
D D
La structure du codeur est donnée gure 3.30. Comme précédemment, les bits sont
introduits dans le codeur MSB en tête.
2 3
1 1p 0p 1p
3
p u ( p) s1 s2 s3
D D D
2 3
1 1p 0p 1p
s1 s2 s3
D D D
3
p u ( p)
D D D
Ces structures matérielles de codeurs sont à comparer à celles utilisant des addi-
tionneurs modulo 2 dénies à partir du graphe de Tanner.
"""
""!
"!"
"!!
!""
!"!
!!"
!!!
Le calcul du syndrome s’obtient en réalisant la division du mot reçu r(p) par g(p) :
Sur la gure 3.34 nous présentons la structure d’un décodeur relatif au code de
Hamming (7,4) déni par le polynôme g(p) = 1 + p + p 3 .
1 1p 0 p2 1p 3
y( p) s1 s2 s3
D D D
eˆ( p )
Logique de décodage
cˆ( p )
mémoire tampon 7 bits
Sur la gure 3.34 nous présentons cette structure de décodage pour le code de
Hamming (7,4) déni par le polynôme g(p) = 1 + p + p 3 .
1 1p 0 p2 1p 3
y( p) s1 s2 s3
D D D
ET
eˆ( p )
cˆ( p )
mémoire tampon 7 bits
Pour cet exemple, nous donnons le tableau de correspondance 3.22 entre les vec-
teurs d’erreurs et les syndromes s(p).
s(p)pN −j = pj pN −j = pN = 1 [3.130]
L’évolution du contenu des registres du décodeur est donné dans le tableau 3.23.
Comme attendu, nous avons pu corriger l’erreur 3 coups d’horloge après avoir calculé
le reste.
Entrée Coup d’horloge s1 s2 s3
0 0 0 0
MSB 1 1 1 0 0
1 2 1 1 0
0 3 0 1 1
1 4 0 1 1
1 5 0 1 1
1 6 0 1 1
LSB 1 7 0 1 1 → s(p) = p + p2
8 1 1 1 → s(p)p
9 1 0 1 → s(p)p2
10 1 0 0 → s(p)p3 = 1
nous avons donc j = 7 − 3 = 4
3.6.6.1. Définition
Les codes BCH sont des codes cycliques binaires. Ils ont été découverts par Hoc-
quenghem 4 [HOC 59] puis indépendamment par Bose et Ray-Chaudhuri [BOS 60].
Ils permettent de construire des codes avec les paramètres suivants :
N = 2m − 1
N − K ≤ me
dmin ≥ 2e + 1 [3.132]
Comme tous les codes cycliques, un code BCH est déni par son polynôme géné-
rateur g(p). Le polynôme générateur g(p) possède parmi ses racines les 2e puissances
consécutives de α. Ainsi, le polynôme générateur g(p) est le produit des polynômes
minimaux associés à α, α2 , α3 , . . . , α2e sans qu’aucun des polynômes ne soit répété :
5 6
g(p) = PPCM m1 (p), m2 (p), m3 (p), . . . , m2e (p) [3.133]
où PPCM est le plus petit commun multiple. Comme dans GF (2 m ), αi et α2i sont
racines du même polynôme minimal, pour la détermination de g(p), il suft de ne
considérer que les puissances impaires de α :
5 6
g(p) = PPCM m1 (p), m3 (p), . . . , m2e−1 (p) [3.134]
g(p) = (1 + p + p4 )(1 + p + p2 + p3 + p4 ) = 1 + p4 + p6 + p7 + p8
Comme le degré de g(p) est N − K = 8, le code BCH ainsi généré sera un code
(15,7). Sa distance minimale est exactement égale à 5.
Le tableau 3.24 présente les polynômes générateurs des codes BCH corrigeant
jusqu’à 3 erreurs avec N ≤ 63.
N K e g(p)
GF (2 ) 7 4 1 p3 + p + 1
3
GF (24 ) 15 11 1 p4 + p + 1
7 2 p8 + p7 + p6 + p4 + 1
5 3 p10 + p8 + p5 + p4 + p2 + p + 1
GF (25 ) 31 26 1 p5 + p2 + 1
21 2 p10 + p9 + p8 + p6 + p5 + p3 + 1
16 3 p15 + p11 + p10 + p9 + p8 + p7 + p5 + p3 + p2 + p + 1
GF (26 ) 63 57 1 p6 + p + 1
51 2 p12 + p10 + p8 + p5 + p4 + p3 + 1
45 3 p18 + p17 + p16 + p15 + p9 + p7 + p6 + p3 + p2 + p + 1
Nous savons que le polynôme générateur g(p) d’un code BCH possède α, α 2 , . . . ,
α comme racines. Ainsi, tout mot de code aura aussi α, α 2 , α3 , . . . , α2e comme
2e
racines.
1 1 ... 1
α α2 ... α2e
(c0 c1 . . . cN −1 ) .. .. .. .. =0 [3.136]
. . . .
αN −1 α2(N −1) . . . α2e(N −1)
1 α . . . αN −1
1 α2 . . . α2(N −1)
H = . .. . . .. [3.137]
.. . . .
2e 2e(N −1)
1 α ... α
) *
1 α α2 α3 α4 α5 α6 α7 α8 α9 α10 α11 α12 α13 α14
H= [3.138]
1 α3 α6 α9 α12 1 α3 α6 α9 α12 1 α3 α6 α9 α12
Pour obtenir la matrice H sous sa forme binaire, nous remplaçons chaque puis-
sance de α par sa représentation binaire comme indiqué dans la section 3.2.4. Nous
obtenons :
100 01 00 110 10 111
0 1 0
01 10 101 11 1 0 0
0 0 1
00 11 010 11 1 1 0
0 0 0 10 01 101 01 1 1 1
H= [3.139]
1 0 0
01 10 001 10 0 0 1
0 0 0
11 00 011 00 0 1 1
0 0 1 01 00 101 00 1 0 1
011 11 01 111 01 111
Il faut noter que s’il n’y a pas d’erreurs (e(p) = 0), les 2e composantes du syn-
drome sont nulles.
avec 0 ≤ j1 ≤ j2 · · · ≤ jv ≤ N − 1.
= σ0 + σ1 p + σ2 p2 + . . . σv pv [3.146]
Ce polynôme est appelé polynôme localisateur d’erreurs car les inverses des ra-
cines de σ(p) sont égales à β k = αjk et permettent de localiser la position des erreurs
jk .
Dans le cas binaire, le système de Newton [3.148] peut s’écrire sous la forme
matricielle suivante :
1 0 0 0 0 ... 0 σ1 s1
s2 s1 1 0 0 ... 0 σ2 s3
s4 s3 s2 s1 1 ... 0 σ3 s5
.. .. .. .. .. .. .. = .. .. [3.149]
. . . . .
. . . .
s2v−4 s2v−5 . . . . . . . . . . . . sv−3 σv−1 s2v−3
s2v−2 s2v−3 . . . . . . . . . . . . sv−1 σv s2v−1
) *) * ) *
1 0 σ1 s
= 1 [3.150]
s2 s 1 σ2 s3
s3
σ1 = s1 et σ2 = + s2
s1
La procédure par approche matricielle peut être résumée ainsi. Tout d’abord nous
faisons l’hypothèse que v = e et nous essayons de résoudre le système de Newton
[3.149] en remplaçant v par e. Si v est égal à e ou e − 1, la solution unique sera
trouvée. Si v < e − 1, alors le système n’aura pas de solution. Dans ce cas, nous
devons faire l’hypothèse que v = e − 2 et essayer de résoudre le système de Newton
[3.149] en remplaçant cette fois-ci v par e − 2. Nous répètons cette technique jusqu’à
ce que nous trouvions une solution.
Nous allons maintenant voir un algorithme dont la portée est beaucoup plus géné-
rale : l’algorithme de Berlekamp-Massey.
Si dµ = 0, alors σ (µ+1) (p) = σ (µ) (p). Sinon, nous remontons à l’itération ρ telle
que dρ *= 0 et ρ−lρ soit maximal (avec l ρ degré du polynôme σ (ρ) (p)). Nous obtenons
alors :
E XEMPLE.– Considérons à nouveau le code BCH (15,7) déni par le polynôme géné-
rateur g(p) = 1 + p4 + p6 + p7 + p8 qui peut corriger jusqu’à deux erreurs.
Supposons que le mot de code tout à zéro c(p) = 0 a été transmis et que le mot
reçu est égal à r(p) = p4 + p9 .
s1 = r(α) = α4 + α9 = 1 + α3 = α14
s2 = r(α2 ) = α8 + α18 = 1 + α2 + α3 = α13
s3 = r(α3 ) = α12 + α27 = 0
s4 = r(α4 ) = α16 + α36 = α + α2 + α3 = α11 [3.151]
d0 = s1 = α14
Comme d0 est non nul, nous devons ajouter un terme correctif à σ (0) (p) pour
obtenir σ (1) (p) :
σ (1) (p) = σ (0) (p) + dµ d−1
ρ p
µ−ρ (ρ)
σ (p) avec ρ = −1
= 1 + α14 p [3.153]
µ σ (µ) (p) dµ lµ µ − lµ
–1 1 1 0 –1
0 1 α14 0 0
1 1 + α14 p 0 1 0
2 1 + α14 p α12 1 1
Comme d2 est non nul, nous devons ajouter un terme correctif à σ (2) (p) pour
obtenir σ (3) (p) :
µ σ (µ) (p) dµ lµ µ − lµ
–1 1 1 0 –1
0 1 α14 0 0
1 1 + α14 p 0 1 0
2 1 + α14 p α12 1 1
3 1 + α14 p + α13 p2 0 2 1
Comme d3 est nul, nous avons σ (4) (p) = σ (3) (p) et nous obtenons nalement le
polynôme localisateur d’erreurs σ(p) suivant :
Si le degré de σ(p) est égal à 1 ou 2, les racines peuvent être déterminées directe-
ment. Lorsque le degré de σ(p) est supérieur à 2, nous pouvons faire le test de chaque
puissance de α pour voir si c’est une racine de σ(p). Une autre solution plus simple
consiste à appliquer la méthode de Chien [CHI 64] :
– initialisation :
Qk = σk avec k = 1, . . . , v
– pour i = 1, . . . , N :
Qk → Qk αk avec k = 1, . . . , v
v
!
Si Qk = 1 alors il y a une erreur en position N − i
k=1
"v
la dernière ligne s’explique par la relation k=1 Qk = σ(αi ) + 1.
Les racines de σ(p) sont égales à α 11 et α6 . Les inverses de ces racines sont β 1 =
15−11
α = α4 et β2 = α15−6 = α9 . Nous en déduisons donc bien que les erreurs sont
aux positions j1 = 4 et j2 = 9.
Nous retrouvons bien que les deux erreurs sont aux positions j 1 = 4 et j2 = 9.
"
i Q1 Q2 k Qk
0 α14 α13 α2
1 1 1 0
2 α α2 α5
3 α2 α4 α10
4 α3 α6 α2
4 8
5 α α α5
6 α5 α10 1 → j1 = 15 − 6 = 9
6 12 4
7 α α α
8 α7 α14 α
8
9 α α α10
9 3
10 α α α
10 5
11 α α 1 → j2 = 15 − 11 = 4
Les codes Reed Solomon (RS) sont construits sur le corps ni GF (2 m ) où m est
un entier. Les 2 m − 1 éléments non nuls du corps GF (2 m ) sont les puissances suc-
m
cessives de l’élément primitif α racine de α 2 −1 − 1 = 0. Chaque polynôme minimal
associé à un élément non nul α i (i = 0, 1, . . . , 2m − 2) est de la forme mi (p) = p− αi .
Comme pour les autres codes cycliques, le degré de g(p) est N − K. La distance
minimale de Hamming d min de ces codes est égale à N − K + 1. Ces codes atteignent
donc la borne de Singleton.
Par rapport aux codes binaires, la capacité de correction des codes RS est donc
de e = N −K2 symboles de m bits soit au maximum me bits. Par exemple, un code
RS (255, 239, 17) dans GF (28 ) peut corriger jusqu’à 8 octets indépendamment du
nombre de bits erronés par octet. Il pourra corriger au maximum 64 bits que ces bits
erronés sont localisés dans seulement 8 octets. Le polynôme générateur de ce code
N
!
T EM = i
CN (T ESE )i (1 − T ESE )N −i [3.161]
i=e+1
où T ESE est le taux d’erreur par symbole en entrée. Par conséquent, le taux d’erreur
par symbole T ES S en sortie d’un décodeur de Reed-Solomon à entrées dures est le
suivant :
N
1 !
T ESS = iC i (T ESE )i (1 − T ESE )N −i [3.162]
N i=e+1 N
D’un point de vue décodage, ces codes sont décodés comme les codes BCH. Nous
devons seulement ajouter une opération qui consiste à évaluer l’amplitude des erreurs.
Cette évaluation permet de déterminer la position des bits erronés à l’intérieur d’un
symbole erroné.
3.7. Applications
Une des premières applications des codes en blocs fut les communications spa-
tiales. Les codes en blocs de Reed-Muller (32,6,16) avec décodeur à entrées pondérées
furent utilisés entre 1969 et 1977 pour les missions Mariner Viking (Mars).
Parmi les autres applications des codes en blocs, nous pouvons citer le code de
Hamming étendu (8,4) qui était utilisé pour le télétexte et le code cyclique difference
set (273,191), décodage à logique majoritaire (entrées dures ou pondérées) utilisé par
le Digital Audio Broadcast (DAB).
ï1
10
ï2
10
ï3
10
ï4
10
TESS
ï5
10
ï6
10
ï7
10
ï8
10
ï3 ï2 ï1
10 10 10
TES
E
Pour le CD-ROM, un code produit (1170,1032) est utilisé pour corriger les erreurs.
Celui-ci est composé de codes lignes RS(26,24) et de codes colonnes RS(45,43) dans
GF (28 ). Nous reviendrons plus en détail sur ces codes dans le chapitre 5.
3.8. Exercices
Nous considérons une source binaire équiprobable et un canal BSC où le taux d’er-
reurs p est égal à 10−3 . Pour limiter l’effet de bruit, on utilise un codage à répétition :
un « 0 » est encodé par le mot de code 000 et un « 1 » est encodé par le mot de code
111.
1) Calculer les probabilités que se produisent 1, 2 ou 3 erreurs lors de la transmis-
sion d’un mot de code.
2) Le décodage s’effectue par vote majoritaire. Un mot reçu est décodé correc-
tement si deux des trois bits qui le composent sont sans erreur. Calculer la nouvelle
probabilité d’erreur.
Nous généralisons ce principe :
« 0 » est codé par 2m + 1 « 0 »
« 1 » est codé par 2m + 1 « 1 »
3) Quelle est la distance de Hamming entre les 2 mots de codes lorsque m = 2
puis lorsque m est quelconque ?
4) Comme précédemment, le décodage s’effectue par vote majoritaire (le bit dé-
codé est le bit le plus présent dans le mot reçu), déduire le nombre maximum d’erreurs
que nous pouvons corriger.
5) Quelle est la probabilité d’erreur P e après décodage ? On exprimera ce résultat
en fonction de m. Nous pourrons montrer que lorsque p << 1 la probabilité d’erreur
est approximée par P e ≈ αpj . Nous préciserons les valeurs de α et de j en fonction
de m. Faire l’application numérique pour m = 1 ; m = 2 ; m = 3.
6) Nous désirons une probabilité d’erreur après décodage et correction P e =
5.10−7 . Quelle est la valeur minimale de m qui permet d’obtenir ce résultat ?
3) Nous utilisons un code de Golay (23,12) sachant corriger jusqu’à trois erreurs
de transmission, déterminer la probabilité d’erreur par mot après décodage.
4) Interpréter les résultats obtenus vis-à-vis de la capacité du canal binaire symé-
trique.
110101
G = 0 1 1 1 1 0
001101
11 01 00 0
0 1 10 10 0
G=
0 0
11 01 0
00 01 10 1
0001101
1) Mettre ce code sous la forme systématique puis calculer la matrice de parité H.
Nous avons ajouté un bit de redondance supplémentaire c 7 satisfaisant l’équation de
parité suivante : c7 = c0 + c1 + c2 + c3 + c4 + c5 + c6 . Le nouveau code ainsi construit
est un code de Reed-Muller du premier ordre (8,4) ou code de Hamming étendu.
2) Exprimer sa matrice génératrice G & sous forme systématique.
3) Montrer que ce code est autodual (G & = H& ).
4) Déterminer la fonction d’énumération A(D) du code (8,4) et en déduire la dis-
tance minimale.
5) Pouvons-nous relier ce code au treillis suivant ?
0001101
10 00 11 0
0 1 00 01 1
G=
0 0
10 11 1
00 01 10 1
Nous considérons le code linéaire systématique en blocs binaire (3,2) déni par
l’équation de parité u 0 + u1 + c2 = 0 et la chaîne de transmission discrète équivalente
(canal additif à bruit blanc gaussien de variance σ 2 = N0 /2).
1) Donner la matrice génératrice systématique, la liste des mots de code c et la
fonction d’énumération de poids. En déduire la distance minimale de ce code et sa
capacité de correction et de détection.
2) Représenter les différents mots x = [x 0 , x1 , x2 ] dans un espace à trois dimen-
sions. En déduire la distance euclidienne entre deux mots x.
Nous rappelons que la probabilité d’erreur par paire en fonction de la distance
euclidienne s’exprime comme suit :
1 d(x, x& )
p(x → x& ) = erf c √
2 2 N0
3) En déduire le taux d’erreur par mot pour ce code avec décodage à entrées pon-
dérées en utilisant la borne de l’union.
Soit le treillis suivant associé à ce code :
11000011
G = 1 1 1 1 0 0 0 0
11001100
n = [+1, 2 + 1, 3 − 0, 4 − 0, 5 0 + 0, 2 + 1, 1 − 1, 1] .
Soit la matrice génératrice G suivante d’un code correcteur d’erreurs dont la dis-
tance minimale est égale à quatre :
1110010
G = 1 0 1 1 1 0 0
0111001
1) Déterminer K la longueur des mots d’information et N la longueur des mots
de code.
2) Mettre G sous forme systématique et déterminer H la matrice de contrôle.
3) Quel est le lien de ce code avec le code de Hamming (7,4) ?
4) Quelle est la capacité de correction et de détection de ce code ?
5) Soit le mot d’information u = [101], calculer le mot de code sous forme systé-
matique associé et vérier que le syndrome associé à ce mot de code est nul.
Soit le code cyclique déni par le polynôme générateur g(p) = (1+p)(1+p+p 3).
Les polynômes 1 + p et 1 + p + p 3 sont des facteurs irréductibles de 1 + p 7 .
6) Déterminer K et N .
7) Soit le mot d’information u = [001] (MSB à droite), calculer le mot de code
systématique associé.
8) Dessiner la structure électronique du codeur, à partir de portes « ou exclusif »
et de cellules de retard élémentaires.
9) Nous recevons au récepteur le mot suivant : 0101111 (MSB à droite). Ce mot
est-il un mot de code ?
Pour ce code particulier, chaque polynôme associé à un mot de code doit être
divisible par les deux polynômes 1 + p + p 3 et 1 + p (et par g(p) par conséquence).
10) Indiquer dans le tableau le nombre d’erreurs correspondant à chaque situation.
Soit un code de Reed Solomon (255,191) déni dans GF (2 8 ) (les symboles sont
donc ici des octets). Ce code est utilisé dans la norme DVB-H.
1) Rappeler la relation entre la capacité de correction d’un code correcteur d’er-
reurs et sa distance minimale. Sachant que ce code est à distance minimale maximale
(dmin = N − K + 1) en déduire sa capacité de correction.
2) Combien de bits ce code est-il capable de corriger ?
3) Exprimer la relation entre le taux d’erreur par mot en sortie du décodeur et le
taux d’erreur par symbole en entrée du décodeur.
4) En déduire la relation entre le taux d’erreur par symbole en sortie du décodeur
et le taux d’erreur par symbole en entrée du décodeur.
5) A. N. Le taux d’erreur par symbole en entrée est T ES E = 2.10−2 , calculer
le taux d’erreur par symbole en sortie (on limitera le calcul au premier terme de la
9
somme. Nous pourrons utiliser les relations suivantes : C 255 = 1, 089.1016; C255
17
=
26 33 41
1, 32.10 ; C255 = 3, 44.10 .
Codes convolutifs
4.1. Introduction
Dans ce chapitre, nous présenterons les codes convolutifs binaires et leurs codeurs.
Puis, nous introduirons l’algorithme de Viterbi utilisé pour le décodage de ces codes.
Pour plus d’informations sur les codes convolutifs nous renvoyons le lecteur aux
livres de Piret [PIR 88] et de Johannesson et Zigangirov [JOH 99]. Nous nous limite-
rons ici au cas des codes convolutifs binaires.
4.2.1. Définitions
Un code convolutif est un code qui transforme une séquence semi-innie de mots
d’information en une autre séquence semi-innie de mots de code.
1. Ces codes sont aussi appelés codes convolutionnels qui est une traduction facile du terme
anglais convolutional codes.
u 2 u1 u 0 c2 c1 c0
1 1 1 1 1 1
" u2 u1 u0 " c2 c1 c0
2 2
" u22 u12 u02 " c2 c1 c02
! ! ! ! ! !
u2k u1k u0k c2n c1n c0n
u codeur c
convolutif
R=k/n
Il est souvent plus simple d’utiliser l’opérateur de délai D pour décrire ces sé-
quences. Nous avons alors :
c(D) = [c1 (D), c2 (D), ..., cn (D)] et u(D) = [u1 (D), u2 (D), ..., uk (D)] [4.1]
avec :
∞
! ∞
!
uj (D) = uji Di et cj (D) = cji Di avec uji , cji ∈ F2 [4.2]
i=0 i=0
où F2 est le corps de Galois à deux éléments. L’ensemble des séries de Laurent cau-
sales de la forme :
∞
!
a(D) = ai D i avec a i ∈ F2
i=0
constitue un idéal 2 noté F2 [[D]], sous ensemble du corps des séries de Laurent
F2 ((D)). Il faut noter que certains auteurs préfèrent considérer les séquences u(D) et
c(D) comme des séries de Laurent.
avec :
G(D) est la matrice génératrice utilisée par le codeur. G(D) est de dimension
k × n et de rang k :
g1,1 (D) g1,2 (D) · · · g1,n (D)
g2,1 (D) g2,2 (D) · · · g2,n (D)
G(D) =
. . . . . . . . . . . . . . . . . . . . . . . . . . . [4.4]
gk,1 (D) gk,2 (D) · · · gk,n (D)
Les éléments gi,j (D) de la matrice génératrice G(D) sont des polynômes de D
ou des fonctions rationnelles de polynômes de D.
Pour une matrice génératrice xée, plusieurs architectures de codeurs sont pos-
sibles. Il existe deux familles de codeurs : les codeurs non récursifs et les codeurs
récursifs.
Dans le cas d’un codeur non récursif, les n bits de sortie dépendent des k bits
d’entrée courants et d’un nombre ni de bits d’entrée précédents. Ce codeur peut être
vu comme un système à réponse impulsionnelle nie (RIF) sur le corps de Galois F 2 .
Tous les éléments gi,j (D) de la matrice génératrice sont alors des polynômes dans D.
D ÉFINITION.– Deux matrices génératrices G(D) et G & (D) sont équivalentes si elles
engendrent le même code. Deux codeurs convolutifs sont équivalents si leurs matrices
génératrices sont équivalentes.
"k
Le nombre total de cellules mémoires est égal à M = i=1 Mi . M détermine la
complexité du codeur.
u
D D
g1 = [111]bin = 7oct
g2 = [101]bin = 5oct
u(D) = u0 + u1 D + u2 D2 + . . .
c 1i
ci2
Pour le codeur récursif, les n bits de sortie peuvent dépendre d’un nombre inni de
bits d’entrée précédents. C’est pourquoi le codeur récursif est un système à réponse
impulsionnelle innie (RII) sur F 2 . Les éléments gi,j (D) de la matrice génératrice
sont alors des rapports de polynômes.
S
c i
1 2
ui si si
D D
P
c i
ui + ui−1 + ui−2 + cP P
i + ci−2 = 0 [4.8]
Les codeurs convolutifs récursifs ont été peu utilisés car ceux-ci produisent les
mêmes codes convolutifs que les codeurs convolutifs non récursifs. Cependant, les
travaux de Battail [BAT 93] ont montré qu’un codeur convolutif récursif imitait le
codeur aléatoire si le polynôme dénominateur était primitif. Ceci justie leur utilisa-
tion dans les codes convolutifs concaténés en parallèle comme nous le verrons dans le
chapitre 5.
Par rapport au codeur en blocs, un codeur convolutif contient des cellules mé-
moires internes stockant un vecteur d’états composé de M bits. Ainsi, le mot de code
ci est une fonction linéaire du mot d’information u i mais aussi de l’état interne du
codeur à l’instant i, s i .
/
si+1 = si A + ui B
[4.9]
ci = si C + ui D
Alors qu’un codeur en blocs linéaire binaire (N, K) est déni par une seule ma-
trice G de dimension K × N , un codeur convolutif de rendement k/n est déni par
les quatre matrices A, B, C et D dont les dimensions sont les suivantes :
A:M ×M
B :k×M
C :M ×n
D :k×n [4.10]
s1i+1 = ui [4.11]
s2i+1 = s1i [4.12]
c1i = ui + s1i + s2i [4.13]
c2i = ui + s2i [4.14]
A partir des équations d’état et de sortie [4.9], nous avons les relations suivantes
en utilisant l’opérateur de délai unité D :
/
s(D)D−1 = s(D)A + u(D)B
[4.17]
c(D) = s(D)C + u(D)D
∞
!
s(D) = [s1 (D), s2 (D), ..., sM (D)] avec sj (D) = sji Di
i=0
Nous obtenons alors la relation classique entre la matrice génératrice G(D) et les
matrices de la réalisation A,B,C et D :
c = uG [4.19]
où G est une matrice génératrice semi-innie dont les éléments sont binaires.
Nous ne décrirons la matrice G que dans le cas des codeurs convolutifs avec k = 1
(rendement 1/n) de la gure 4.5. Le cas général se déduit sans aucune difculté.
avec gi = [gi1 gi2 . . . gin ]. Les espaces blancs correspondent à des zéros.
ui s1i si2 s iM
D D D
g10 g11 g 1M
c1i
g 02 g12 g2M
ci2
g0n g1n g nM
cin
11101
1110 1
G= 1 1 1 0 1 [4.21]
..
.
Comme pour les codes en blocs, nous pouvons introduire la matrice de parité H
semi-innie suivante :
GHT = 0 [4.22]
cHT = 0 [4.23]
11
0 1 1 1
1 1 0 1 1 1
H= 110111 [4.24]
11011 1
..
.
10
d
01 [11] 01
c 10
b
[10 ]
00 [ 01]
11 11
[ 00 ]
a
00
a 00 00 00
00
11 11
11
b 11 11
11
00 00
10 10 10
c
01
01 01 01 01
d
10 10
Sur chaque branche nous notons la valeur des deux bits de sortie c 1i et c2i . Dans
ce diagramme en treillis, les traits gras correspondent à u i = 1 alors que les traits
pointillés correspondent à u i = 0. Nous pouvons constater sur ce diagramme qu’après
une période transitoire, le diagramme en treillis est bien la concaténation de treillis
élémentaires.
Les graphes TWL (Tanner, Wiberg et Loeliger) [WIB 95] sont utilisés pour dé-
crire à la fois le codage et le décodage des codes convolutifs et des codes convolutifs
concaténés.
En plus des nœuds de variable binaire et des nœuds de contrôle de parité, nous
utiliserons une troisième famille de nœuds appelés nœuds de variable d’état ou nœuds
de variable binaire cachée. Nous représenterons les nœuds de variable cachée par un
double cercle. De plus, les nœuds de contrôle de parité peuvent être remplacés par des
nœuds de contrôle plus généraux appelés fonctions locales. Ces fonctions locales sont
symbolisées par des carrés noirs dans ces graphes.
Le graphe TWL d’un codeur convolutif systématique de rendement 1/2 est donné
gure 4.9.
La fonction locale T i (si , cP i , ui , si+1 ) à la position i est dénie à partir des équa-
tions d’état et de sortie [4.9] du codeur convolutif. Nous avons :
/
P 1 si les équations [4.9] sont valides
Ti (si , ci , ui , si+1 ) = [4.25]
0 sinon
u0 u1 u2 u3
s0 s1 s2 s3 s4
T0 T1 T2 T3
cP
0 cP
1 cP
2 cP
3
La distance libre d’un code convolutif est la distance minimale entre deux sé-
quences de sortie associées à deux chemins qui divergent d’un même point puis conver-
gent à nouveau. La détermination de la distance minimale d’un code convolutif peut
s’obtenir à partir du diagramme en treillis. Pour déterminer la distance libre nous
prendrons comme chemin de référence le chemin associé à la séquence d’entrée nulle
u = [0, 0, . . . ]. Ce chemin est représenté en gras sur le diagramme en treillis de la
gure 4.10. Sur chaque branche, nous avons noté le poids de Hamming des deux bits
de sortie c1i et c2i .
2 2
b
2
0
1 1
c
d 1
D e
a D 2W c b D2
W
DW d D
DW
W D5
T (W, D) =
1 − 2W D
= W D5 + 2W 2 D6 + 4W 3 D7 + . . .
∞
! ∞
!
! Bw,d W w Dd [4.26]
w=1 d=dlibre
où Bw,d est le nombre de chemins qui divergent de l’état 0 et reconvergent vers celui-
ci et qui correspondent à des séquences d’information de poids w et des séquences de
sortie de poids d. En posant L = 1 et W = 1 nous obtenons la fonction de transfert
T (D) :
D5
T (D) =
1 − 2D
= D5 + 2D6 + 4D7 + 8D8 + 16D9 + . . .
∞
!
! Ad Dd [4.27]
d=dlibre
∞
!
T EB ≤ A&d Pr (c0 → cd ) [4.28]
d=dlibre
où :
!∞
w
A&d = Bw,d [4.29]
w=1
k
3. Cette fonction peut être également obtenue en utilisant la règle de Mason [BOU 06].
et :
&I '
0 d1 Eb
P r(c → c ) = erfc dR [4.30]
2 N0
qui est la probabilité d’erreur par paire obtenue à partir des relations [3.95] et [3.100].
L’ensemble des paires (A &d , d) forment le spectre de distance bit du code convolutif.
En remplaçant [4.30] dans [4.28], nous obtenons nalement la borne supérieure :
∞
&I '
1 ! Eb
T EB ≤ A&d erfc dR [4.31]
2 N0
d=dlibre
Dans l’exemple traité ci-dessus, nous pouvons montrer que A &d = (d − 4)2d−5
pour d ≥ 5.
Dans le tableau 4.2 nous présentons les meilleurs codes convolutifs de rendement
1/2 [LIN 83].
La première méthode utilisée pour le décodage des codes convolutifs était le déco-
dage séquentiel [JEL 69, JOH 99]. Cependant, à partir des années 1970, le décodage
séquentiel a été supplanté par le décodage au sens du maximum de vraisemblance
utilisant l’algorithme de Viterbi [VIT 67, FOR 73]. En effet, la structure régulière du
Ensuite pour chaque nœud, nous ne conservons qu’un seul chemin appelé chemin
survivant : le chemin survivant étant le chemin qui est à la distance de Hamming
minimale de la séquence reçue.
i=1
c
i=2
c
i=3
c
i=4
c
La séquence la plus vraisemblablement émise par le codeur est donc celle qui
correspond au chemin survivant qui converge vers l’état c à i = 4 soit le chemin
(a, c, b, a, c). Ce chemin correspond à l’émission par le codeur de la séquence de mots
de code 11101111, ce qui correspond à la séquence d’information 1001 : le décodeur
de Viterbi a donc corrigé l’erreur survenue dans la transmission.
En pratique, il n’est pas nécessaire d’attendre que l’ensemble des symboles émis
par le codeur soit reçu pour commencer le décodage : en effet, nous observons qu’à
partir d’un certain temps (cinq fois M environ), tous les chemins survivants tendent à
converger vers le même chemin. Nous pouvons donc à l’instant i estimer le symbole
émis à l’instant i − 5M .
Il est possible à partir d’un code convolutif de rendement k/n de réaliser des codes
convolutifs de rendement supérieur en supprimant certains symboles en sortie du co-
deur [YAS 84, CAI 79]. Cette technique permet de modier le rendement du code
convolutif sans ajouter de complexité au décodeur. Pour comprendre le principe du
poinçonnage, nous allons considérer l’exemple d’un codeur de rendement 2/3 obtenu
à partir du codeur de rendement 1/2 de l’exemple précédent.
a 0X 00 0X
00
11 1X
1X
b 11 1X
11
00 0X
1X 10 1X
c
0X
01 0X 0X
01
d
10 1X
4.7. Applications
Les codes convolutifs ont été appliqués pour les communications spatiales dès
1969. Les missions Pionner 9 en 1969 (Soleil), Pionner 10 en 1972 (Jupiter), Pion-
ner 11 en 1973 et Pionner 12 (Vénus) utilisèrent un code convolutif rendement 1/2
de longueur M = 31 avec un décodage séquentiel à entrées pondérées. A partir de
1977, le décodeur séquentiel fut remplacé un décodeur de Viterbi et le code convolu-
tif (163,171) de rendement 1/2 qui est devenu le standard de facto. A partir de 1987,
le standard CCSDS a été beaucoup utilisé pour les communications spatiales. Le co-
dage de canal déni dans ce standard comprend un code de Reed-Solomon (255,223)
comme code externe, un entrelaceur et un code convolutif (163,171) de rendement 1/2
et M = 6. Ce schéma a été en particulier utilisé pour les missions Voyager 1 et 2 en
1979 (Jupiter et Saturne). En 1990, pour la mission Galileo (Jupiter) Jet Propulsion
Laboratory (JPL) a développé un code convolutif rendement 1/4, M = 14 (8 192 états
internes) dont la distance libre était égale à 35 et son décodeur de Viterbi associé (Big
Viterbi Decoder, BVD).
Dans les systèmes de diffusion par satellite (DVB-S) et terrestre (DVB-T) le schéma
de codage utilisé est proche du standard CCSDS. Il comprend un code de Reed-
Solomon (204,188,17), un entrelaceur convolutif et un code convolutif (163,171) de
rendement 1/2, M = 6, avec perforations 3/4,4/5, 5/6 et 7/8. Le Digital Audio Broad-
cast (DAB) pour le système audio DVB et MPEG utilise aussi un code convolutif
récursif de rendement 1/2 M = 4, perforé avec un grand choix de rendements pour
permettre une dégradation progressive des performances.
Les codes convolutifs sont aussi utilisés dans les structures concaténées comme
nous allons le voir dans le prochain chapitre.
4.8. Exercices
Soit le codeur convolutif non récursif de rendement R = 1/2 déni par la matrice
génératrice G(D) = (1 ; 1 + D).
1) Dessiner la structure matérielle du codeur.
2) Représenter le diagramme en treillis associé.
3) Déterminer la distance libre de ce code.
4) Nous transmettons la séquence u = [1111]. Déterminer la séquence émise.
Soit la séquence reçue 11 01 10 10. En supposant que l’état initial des registres est
l’état zéro, appliquer l’algorithme de Viterbi à entrées dures pour estimer la séquence
d’information.
5) Le signal est converti en un signal bipodal avant émission bit 0 ⇒ –1 et bit
1⇒ +1. Soit la séquence reçue : +2,0 +1,3 –0,3 +0,2 +1,6 –1,0 +0,5 –2,0 Appliquer
l’algorithme de Viterbi à entrées pondérées pour estimer la séquence d’information
(pour le calcul des métriques on pourra utiliser la distance euclidienne ou la valeur
absolue).
Codes concaténés
et décodage itératif
5.1. Introduction
Dans les années qui ont suivi les travaux de Shannon en 1948 [SHA 48], les cher-
cheurs ont proposé des codes correcteurs d’erreurs de complexité raisonnable tout
en ayant de bonnes distances minimales. L’idée de combiner plusieurs codes simples
pour obtenir un code plus performant a été proposée en 1954 avec les codes produits
par Elias [ELI 54]. Dans sa thèse en 1963, Gallager a introduit les codes LDPC (Low
Density Parity Check codes) qui ont ensuite été oubliés pendant plusieurs décennies.
Nous verrons que cette idée permet d’obtenir des codes ayant des caractéristiques très
proches de celles des codes aléatoires malgré une structure de codage simple. En 1966,
Forney [FOR 66] a introduit la concaténation série d’un code convolutif et d’un code
en blocs. Cette structure a été un standard dans les télécommunications pendant plu-
sieurs décennies. Cependant, dans toutes ces structures, les algorithmes de décodage
délivraient des décisions binaires.
Battail, dans plusieurs articles pionniers [BAT 87, BAT 89] montra l’importance
du décodage à entrées et sorties pondérées et de l’utilisation du codage aléatoire
comme critère pour la construction des codes. En 1993, Berrou, Glavieux et Thiti-
majshima [BER 93] ont proposé une nouvelle famille de codes correcteurs d’erreurs
appelée turbo codes ou codes convolutifs concaténés en parallèle. Bien que la conca-
ténation de codes, le décodage à sorties pondérées et le décodage itératif aient été déjà
utilisés par le passé, cette découverte a permis de progresser considérablement dans
la recherche de codes s’approchant des codes aléatoires. Cette découverte ainsi que la
redécouverte des codes LDPC a enn permis de se rapprocher nettement de la limite
de capacité (quelques dizièmes de dB pour des trames de plusieurs milliers de bits sur
un canal additif à bruit blanc gaussien).
5.2.1. Introduction
Dans cette section, nous allons nous intéresser au décodage à entrées et sorties pon-
dérées. Ce décodeur calcule pour chaque bit, la probabilité conditionnelle a posteriori
AP P (xi = a) suivante :
Si nous supposons que les probabilités conditionnelles p(y j |xj ) et les probabilités
a priori P r{xj } sont indépendantes, alors nous pouvons écrire :
! 2
AP P (xi = a) ∝ p(yj |xj )P r(xj ) [5.2]
x:xi =a j
! 2
EXT R(xi = a) = p(yj |xj )P r(xj ) [5.4]
x:xi =a j)=i
Il est important de noter que le calcul de EXT R(x i = a) utilise toutes les in-
formations disponibles P r{x j } et p(yj |xj ) exceptées P r{xi = a} et p(yi |xi ). Nous
verrons que cette propriété est fondamentale pour le décodage itératif des codes conca-
ténés.
1. L’extension aux cas des modulations quelconques a été traitée par Le Goff et al. dans
[LEG 94].
avec :
AP P (xi = +1)
LAP P (xi ) = ln
AP P (xi = −1)
P r(xi = +1)
LAP RI (xi ) = ln
P r(xi = −1)
LAP RI (xi ), LIN T (xi ), LEXT R (xi ) et LAP P (xi ) sont respectivement les loga-
rithmes du rapport de vraisemblance a priori, intrinsèque ou issu du canal de trans-
mission, extrinsèque et a posteriori.
Finalement, nous pouvons aussi exprimer p(y i |xi = +1) et p(yi |xi = −1) en
fonction de L IN T (xi ). A partir de la dénition de L IN T (xi ), nous avons :
exp(LIN T (xi ))
p(yi |xi = +1) = (p(yi |xi = −1) + p(yi |xi = +1)) [5.8]
1 + exp(LIN T (xi ))
1
p(yi |xi = −1) = (p(yi |xi = −1) + p(yi |xi = +1)) [5.9]
1 + exp(LIN T (xi ))
exp(LIN T (xi ))
p(yi |xi = +1) ∝ [5.10]
1 + exp(LIN T (xi ))
1
p(yi |xi = −1) ∝ [5.11]
1 + exp(LIN T (xi ))
yi = xi + ni [5.12]
2yi
= [5.14]
σ2
Ainsi, pour le canal additif à bruit blanc gaussien, le signal reçu y i est propor-
tionnel à l’information intrinsèque L IN T (xi ). Cette propriété permet de comprendre
pourquoi nous utilisons généralement les logarithmes de rapport de vraisemblance
pour le décodage à entrées et sorties pondérées.
p ( y0 x0 )
u0
c0 c2
p ( y2 x2 )
u1
c1
p ( y1 x1 )
avec :
! 2
EXT R(x0 = +1) = p(yj |xj )P r(xj )
x:xi =1 j)=0
2. Par rapport aux graphes de Tanner introduits dans le chapitre 3 nous avons ajouté sur les
graphes factorisés des nœuds spéciques correspondant aux messages reçus à la sortie du canal
de transmission. Ces graphes sont appelés graphes factorisés car ils permettent de factoriser la
probabilité conjointe a posteriori P r(x; y) pour une séquence en entrée du canal x et l’obser-
vation y.
! 2
EXT R(x0 = −1) = p(yj |xj )P r(xj )
x:xi =−1 j)=0
p ( y0 x0 ) p ( y1 x1 ) p ( y2 x2 )
u0
c0 c1 c2
5.2.2.1. Introduction
L’algorithme Somme-Produit permet un calcul efcace de toutes les probabilités
a posteriori AP P (xi = a). Différents algorithmes issus du traitement du signal et des
communications numériques peuvent être décrits avec ce simple algorithme. Cet algo-
rithme est aussi connu sous le nom d’algorithme de propagation de croyance BP (Be-
lief Propagation) dans le domaine de l’intelligence articielle. L’algorithme Somme-
Produit est appliqué sur le graphe factorisé du code. Les messages qui transitent sur
les branches sont des probabilités ou des logarithmes de rapport de vraisemblance.
ca cb
Ta Tb
T
c
(a) (b)
Figure 5.3. Flot de message pour les calculs de µ c→T (c) et µT→c (c)
Soit µTi →c (c) le message du nœud de contrôle T i vers le nœud de variable binaire
c. Ce message est la densité de probabilité de la variable binaire c conditionnée par les
informations issues du nœud T a . Le message µTi →c (c) est un vecteur (p i0 , pi1 ) avec
pi0 + pi1 = 1. A partir du calcul de l’information extrinsèque du code de répétition
(3,1) nous pouvons calculer le message µ c→T (c). La première règle est la suivante :
& '
pa0 pb0 pa1 pb1
µc→T (c) = , [5.22]
pa1 pb1 + pa0 pb0 pa1 pb1 + pa0 pb0
Nous considérons un nœud de contrôle T de degré 3 comme sur la gure 5.3b. Soit
µci →T (ci ) = (pi0 , pi1 ) le message du nœud de variable c i vers le nœud de contrôle T .
A partir du calcul de l’information extrinsèque du code de parité (3,2) nous pouvons
calculer µT →c (c). Nous obtenons la seconde règle de calcul suivante :
µT →c (c) = (pa0 pb0 + pa1 pb1 , pa1 pb0 + pa0 pb1 ) [5.23]
Nous pouvons aussi utiliser les logarithmes du rapport de vraisemblance pour dé-
crire les messages µc→T (c) et µT →c (c). Soit :
& '
pi1
Λi = ln [5.24]
pi0
!
µc→T (c) = µTi →c (c) [5.27]
n(c)\T
où n(c) est l’ensemble des nœuds de contrôle reliés au nœud de variable c et n(c)\T
signie l’ensemble n(c) excepté le nœud de contrôle T :
2 ) *
µci →T (ci )
µT →c (c) = −2 tanh−1 tanh [5.28]
2
n(T )\c
où n(T ) est l’ensemble des nœuds de variable reliés au nœud de parité T et n(T )\c
signie l’ensemble n(T ) excepté le nœud de variable c.
et :
Nous utiliserons l’opérateur " pour simplier l’écriture dans la suite du livre.
Sur la gure 5.4 nous avons comparé les courbes de contour des messages µ T →c (c)
calculés en utilisant l’algorithme Somme-Produit (a) et Minimum-Somme (b) dans le
cas de nœuds de contrôle de degré 3. Ces courbes sont tracées pour µ T →c (c) = 0,5 1
1,5 2 2,5 et 3. Pour les fortes valeurs de µ ci →T (ci ), les deux algorithmes donnent les
mêmes résultats.
E XEMPLE.– Considérons le code linéaire en blocs (7,4) déni par la matrice de parité
suivante :
110010 0
H = 1 0 1 0 0 1 0 [5.33]
100100 1
3.5
2.5
1.5
0.5
0
0 0.5 1 1.5 2 2.5 3 3.5 4
(a)
4
3.5
2.5
1.5
0.5
0
0 0.5 1 1.5 2 2.5 3 3.5 4
(b)
u 0 + u 1 + c4 = 0 T0
u 0 + u 2 + c5 = 0 T1
u 0 + u 3 + c6 = 0 T2
c3
c5 u3
c2
u2 c6
T1 T2
c0
u0
c4 T0
c1
u1
Par rapport au code de Hamming (7,4), la distance minimale de ce code n’est que
de 2.
Les différentes étapes sont présentées sur la gure 5.6. Nous commençons par pro-
pager les probabilités conditionnelles vers les nœuds de parité T 0 , T1 et T2 (a). Puis
en utilisant la seconde règle, nous calculons les messages vers le nœud de variable
c0 (b). Ensuite, nous propageons les messages vers les nœuds de parité en utilisant la
première règle (c). Finalement, en utilisant la seconde règle, nous obtenons les proba-
bilités extrinsèques EXT R(xi = a) associées aux nœuds de variable c 1 , c2 , c3 , c4 , c5
et c6 (d).
Par exemple, pour le bit c 1 , nous avons EXT R(x1 = +1) = 0, 46 et EXT R
(x1 = −1) = 0, 54. Les probabilités a posteriori se calculent alors en utilisant la
relation [5.3] :
Nous avons :
Les LLR a posteriori LAP P (xi ) peuvent alors être calculés en utilisant la relation
LAP P (xi ) = LAP RI (xi ) + LIN T (xi ) + LEXT R (xi ). Finalement, nous obtenons :
(0,73 ; 0,27)
(0,88 ; 0,12)
c5 c3
c0
(0,05 ; 0,95)
(0,73 ; 0,27)
c4 T0 (0,88 ; 0,12)
c5 c3
(0,05 ; 0,95)
(0,88 ; 0,12) (0,73 ; 0,27)
c0
(0,29 ; 0,71) (0,05 ; 0,95)
c4 T0
(0,73 ; 0,27)
c1
(b)
(0,73 ; 0,27)
(0,73 ; 0,27)
(0,88 ; 0,12)
c5 c3
(0,88 ; 0,12) (0,73 ; 0,27)
(0,46 ; 0,54) c5 c3
c4
(0,88 ; 0,12) (0,06 ; 0,94) (0,73 ; 0,27)
(0,05 ; 0,95) (0,05 ; 0,95) (0,73 ; 0,27)
(0,98 ; 0,02) c2 (0,98 ; 0,02) (0,98 ; 0,02) (0,98 ; 0,02)
(0
(0,73 ; 0,27) ,8 8)
7 ,2
(0,16 ; 0,84)
;0 ;0 (0,32 ; 0,68) c6
,1
c1 3) 0,72
( (0,12 ; 0,88)
(c) (0,05 ; 0,95)
(0,73 ; 0,27) c0
(0,29 ; 0,71) (0,05 ; 0,95)
c4 (0,46 ; 0,54)
(0,48 ; 0,52)
c1
(d)
(0,73 ; 0,27)
(-2) (-1)
c5 c3
(-4) c2 (-4)
c6
c0
(+3)
(-2) (-1)
c4
c5 c3
(+3) (-2) (-1)
c2 (-4) (-4) (-4)
c1 (-2 )
) (-1 c6
(-4)
(-1)
c0
(a) (+1) (+3)
c4
(+3) (+3)
(-1)
c1
(-2) 3
(-1)
(-1) (b)
c5 c
(-2) (-1)
(-2 )
) (-1 c6
(+3) (+2)
(-2) (-1)
c0
(+1) (+3) c3
c5
(0)
c4 (-2) (+3)
(-1)
(+2)
(-4) c2 (-4) (-4) (-4)
(+3) (+3)
(-1) (-2 )
(+2) ) (-1 (+1) c6
(+3) (+2)
c1
c0
(-1) (+3)
(+1)
(0)
c4 (0)
(c)
(+3) (+3)
(-1) (0)
c1
(-1)
(d)
x̂ = [+1 − 1 − 1 + 1 + 1 + 1 − 1]
Un codeur convolutif binaire de rendement k/n peut être vu comme une source
markovienne de mémoire 1 et avec S = 2 M états internes, où M est le nombre de
cellules mémoires du codeur.
3. BCJR correspond aux initiales des quatres auteurs de l’article [BAH 74] : Bahl, Cocke, Jeli-
nek et Raviv.
avec :
n
2
P r(yt |xt ) = p(ytj /xjt ) [5.43]
j=1
/
& 1 si xt (m& , m) = x
P r{xt = x|st = m , st+1 = m} = [5.44]
0 sinon
b t +1 (m)
a t (m' )
Figure 5.8. Quantités α t (m), γt (m$ ,m) et βt+1 (m) sur le treillis
d’un code convolutif
S−1
!
αt (m) = αt−1 (m& )γt−1 (m& , m) [5.45]
m# =0
S−1
!
βt (m) = βt+1 (m& )γt (m& , m) [5.46]
m# =0
!
AP P (xit = a) ∝ αt (m& )P r{st+1 = m|st = m& }
m# ,m/xit =a
n
2
× p(ytj /xjt (m& , m))βt+1 (m) [5.48]
j=1
α0 (0) = 1 et α0 (m) = 0 ∀m *= 0
βT (0) = 1 et βT (m) = 0 ∀m *= 0
– calcul des γ et Procédure aller : les γ sont calculés pour toutes les branches en
utilisant la relation [5.42] et simultanément les probabilités α t (m) sont calculées à
partir de [5.45] ;
– procédure retour : lorsque la séquence y 0T −1 est reçue, les probabilités β t (m)
sont calculées en utilisant la relation [5.46] ;
– calcul des probabilités a posteriori : nalement les probabilités a posteriori sont
calculées en utilisant la relation [5.38].
n
2
P r{st+1 = m|st = m& } = AP RI(xit = xit (m& , m)) [5.49]
i=1
n
2
× p(ytj | xjt (m& , m))βt+1 (m)
j=1
! n
2 # #
AP P (xit = a) ∝ αt (m& ) AP RI(xit = xit (m& , m))
m# ,m/xit =a i# =1
n
2 # #
× p(yti | xit (m& , m))βt+1 (m)
i# =1
&
× AP RI(xP P
t = xt (m , m))
&
× p(ytP | xP
t (m , m)) × βt+1 (m) [5.55]
!
EXT R(xSt = a) = αt (m& )×p(ytP | xP &
t (m , m))×βt+1 (m)[5.56]
m# ,m/xS
t =a
5.2.3.4. Exemple
) Considérons
* un codeur convolutif récursif systématique de rendement 1/2 G(D) =
1
1 , 1+D . Le treillis associé est présenté sur la gure 5.9.
Soient le mot d’information, le mot de code associé et le mot reçu donnés dans le
tableau 5.1.
i 0 1 2 3 4 5
ui 1 0 0 1 1 1
xSi +1 –1 –1 +1 +1 +1
xPi +1 +1 +1 –1 +1 –1
yiS +0,605 –0,5 –1,43 +2,42 +0,45 +2,935
yiP +0,545 –0,535 +1,745 +0,36 +0,385 –0,565
# $
1
Figure 5.9. Treillis du codeur 1, 1+D
2
Le passage de la seconde à la troisième ligne utilise la relation L IN T (xt ) = σ 2 yt .
La dernière ligne permet de simplier les calculs.
LINT (xS
i ) +1,21 –1,00 –2,86 +4,84 +0,90 +5,87
LINT (xP
i ) +1,09 –1,07 +3,49 +0,72 +0,77 –1,13
Pour simplier les calculs des métriques de branche γ tpq , nous pouvons utiliser
l’équation [5.61]. Les métriques ainsi obtenues sont données dans le tableau 5.4. Nous
pouvons voir qu’à un coefcient de normalisation près les tableaux 5.3 et 5.4 sont
identiques.
γi00 1 1 1 1 1 1
γi10 3,35 0,36 0,05 126,46 2,45 354,24
γi01 2,97 0,34 32,78 2,05 2,16 0,32
γi11 9,97 0,12 1,87 259,81 5,31 114,42
α0 (0) = 1
α0 (1) = 0
i=1:
α1 (0) ∝ α0 (0)γ000 = 1
α1 (1) ∝ α0 (0)γ011 = 9, 97
i=2:
..
.
Etat 0
Etat 1
β6 (0) = 0, 5
i=5:
..
.
Etat 0
Etat 1
i=0:
i=1:
..
.
Finalement après calcul, nous obtenons les informations a posteriori données dans
le tableau 5.5.
i 0 1 2 3 4 5
LAP P (xS
i ) +2,85 –2,04 –2,61 +4,77 +2,31 +6,54
ln γi00 = 0
ln γi10 = LIN T (xSi )
ln γi01 = LIN T (xP
i )
ln γi00 0 0 0 0 0 0
ln γi10 +1,21 –1,00 –2,86 +4,84 +0,90 +5,87
ln γi01 +1,09 –1,07 +3,49 +0,72 +0,77 –1,13
ln γi11 +2,30 –2,07 +0,63 +5,56 +1,67 +4,74
ln α0 (1) = −∞
i=1:
i=2:
..
.
Etat 0
Etat 1
ln β6 (0) = 0
i=5:
ln β5 (0) = max(ln β6 (0) + ln γ500 ; ln β6 (1) + ln γ511 = max(0; +4, 74) = +4, 74
ln β5 (1) = max(ln β6 (0) + ln γ510 ; ln β6 (1) + ln γ501 ) = max(+5, 87; −1, 13) =
+5, 87
..
.
Etat
1
+0,00 +14,8 +15,87 +12,38 +6,64 +5,87 +0,0
i=0:
LAP P (xS0 ) =(ln α0 (0) + ln γ011 + ln β1 (1)) − (ln α0 (0) + ln γ000 + ln β1 (0))
= (0 + 2, 3 + 14, 8) − (0 + 0 + 13, 8) = 3, 3
i=1:
Finalement après calcul, nous obtenons les informations a posteriori données dans
le tableau 5.7.
Ainsi, le décodeur max log MAP donne des valeurs sensiblement différentes par
rapport au décodeur MAP. Ces différences proviennent de l’approximation max. En
pratique nous préfèrons cependant utiliser le décodeur max log MAP car il est plus
facile à mettre en œuvre.
LAP P (xS
i ) +3,3 –2,79 –2,79 +5,02 +2,8 +7
(AP P (xit = −1) et AP P (xit = +1)), il faut donc 2 × ((2 M−1 × 2k ) − 1) addi-
tions élémentaires et 2 × 2 M × 2k multiplications pour le calcul des AP P .
u = cs ys
u
xs
AP P (xSi = a) = P r(xSi = a | y)
!
∝ P r(x)p{y|x} [5.64]
xS :xS
i
=a
/
1 si les équations de parité sont valides
Ti (si , cP S
i , ci , si+1 ) = [5.65]
0 sinon
Une séquence particulière x implique que le produit des K fonctions locales rela-
tives à cette séquence est égal à 1. Nous avons donc :
K−1
1 2
P r(x) = Ti (si , cP S
i , ci , si+1 ) [5.66]
2K i=0
Un exemple de graphe factorisé pour un codeur RSC de rendement 1/2 est donné
en gure 5.15.
cP
0 cP
1 cP
K−2 cP
K−1
p(y0P | xP
0) p(y1P | xP
1)
P
p(yK−2 | xP
K−2 )
P
p(yK−1 | xP
K−1 )
Comme le graphe factorisé du codeur convolutif est sans cycle, nous pouvons ap-
pliquer l’algorithme Somme-Produit pour calculer les APP.
Nous allons utiliser l’exemple de la gure 5.15 pour mettre en évidence que l’ap-
plication de l’algorithme Somme-Produit sur ce graphe permet de retrouver exacte-
ment l’algorithme Aller-Retour :
– initialisation et calcul des γ : comme pour tout graphe factorisé sans cycle, l’al-
gorithme Somme-Produit commence aux extrémités du graphe. Chaque nœud de fac-
teur p(yiP |xP S S
i ) et p(yi |xi ) envoie un message vers le nœud de variable correspon-
P S
dant ci et ci . Comme ces nœuds de variable sont de degré 2, le message est directe-
ment transmis vers le nœud de contrôle correspondant. Ces messages µ cPi →Ti (cP i ) et
µcSi →Ti (cSi ) correspondent respectivement à γ(c P i ) et γ(c S
i ) dans l’algorithme Aller-
Retour. Les nœuds de variable d’état s 0 et sK aux extrémités du graphe envoient
respectivement au nœud de contrôle T 0 et TK−1 des messages triviaux µ s0 →T0 (s0 )
et µsK →TK−1 (sK ). Ces messages sont notés α(s0 ) et β(sK ) dans l’algorithme Aller-
Retour ;
– procédure aller : le nœud de contrôle T 0 ayant reçu les messages de trois de ses
quatre branches, il transmet alors le message α(s 1 ) vers le nœud de variable d’état
voisin s1 . Ce message est transmis au nœud de contrôle suivant T 1 . Cette procédure
est répétée jusqu’à ce que le dernier nœud de variable s K ait reçu le message α(sK ).
Le calcul de α(si+1 ) est le suivant :
!!!
α(si+1 ) = Ti (si , cSi , cP P S
i , si+1 )α(si )γ(ci )γ(ci ) [5.68]
si cP cS
i i
– procédure retour : la même procédure est effectuée dans le sens retour. Le calcul
de β(si ) est le suivant :
! !!
β(si ) = Ti (si , cSi , cP P S
i , si+1 )β(si+1 )γ(ci )γ(ci ) [5.69]
si +1 cP cS
i i
Les messages α(si ) et β(si ) ont une interprétation en termes de probabilité. Pour
chaque valeur de s i ∈ Si , α(si ) est proportionnel à la probabilité conditionnelle
que la séquence émise passe par l’état s i conditionnellement à l’observation passée
y0 , . . . , yi−1 :
K−1
β(si+1 ) ∝ P r(si+1 = Si+1 |yi+1 ) [5.73]
cSi
EXT R(cSi ) γ(cSi )
β(si ) β(si+1 )
si si+1
α(si ) α(si+1 )
γ(cP
i )
cP
i
Les codes LPDC (Low Density Parity Check) ont été introduits par Gallager en
1963 [GAL 63] mais c’est seulement en 1996 suite aux travaux de MacKay et Neal
[MAC 99] que la communauté scientique a pris conscience que ces codes pouvaient
permettre d’atteindre la limite de Shannon et avaient un intérêt pratique compte tenu
de leur bon compromis performance-complexité.
5.3.1. Définition
Un code LDPC (N, dc , dT ) est un code linéaire binaire 4 déni par sa matrice de
parité H de dimension M × N . Cette matrice est de faible densité ou creuse, c’est-
à-dire que le nombre de « 1 » sur chacune de ses lignes est petit devant la taille du
bloc de bits informations. Chaque ligne de la matrice H contient d T « 1 » et chaque
colonne contient d c « 1 » et des « 0 » partout ailleurs. La matrice de parité décrit les
M équations de parité du code. Nous avons :
dc
M =N
dT
Le graphe de Tanner associé à ce code est biparti. Ce graphe est dit régulier si les
nœuds de variable ont tous le même degré d c et si les nœuds de contrôle ont aussi tous
le même degré d T . Le graphe de Tanner d’un code LDPC est donné sur la gure 5.17.
4. Il existe des codes LPDC non binaires en remplacant les équations de parité dans GF(2) par
des équations dans GF (2q ). Nous renvoyons le lecteur aux nombreux articles traitant de cette
classe de code comme par exemple [DEC 07].
c1 T1
dT
dc
TM
cN dT
dc
entrelaceur
K
Le rendement R = N du code LDPC est :
dc
R≥1− [5.74]
dT
L’inégalité [5.74] se transforme en une égalité lorsque toutes les lignes de la ma-
trice H sont indépendantes. Dans ce cas, la taille du mot d’information est alors égale
à K = N (1 − ddTc ).
E XEMPLE.– Soit le code LDPC (12,3,4) dont le graphe de Tanner est donné sur la
gure 5.18.
Différents travaux de recherche ont montré que les codes LDPC irréguliers per-
mettent de s’approcher de la limite de Shannon pour une longueur de mot de code
très grande [LUB 98]. Pour les codes LDPC irréguliers, les nœuds de variable et de
contrôle sont de différents degrés et sont dénis par des distributions de degrés.
"dv "dc
Soit λ(x) = i=2 λi xi−1 et ρ(x) = i=2 ρi xi−1 respectivement les fonctions
de distribution des nœuds de variable et de contrôle. λ i (ρi ) correspond au pourcentage
de nœuds de variable (contrôle) de degré i. Le rendement R du code LDPC irrégulier
est alors donné par :
71
ρ(x)
R = 1 − 701 [5.76]
0
λ(x)
71
ρ(x)
M = N 7 01 [5.77]
0 λ(x)
Les fonctions λ(x) et ρ(x) sont obtenues en utilisant des méthodes d’optimisation
comme la programmation linéaire ou en utilisant les algorithmes génétiques. Au dé-
codage, les nœuds de variables de degré élevé et donc les mieux protégés aident les
autres nœuds de variable.
Une des propriétés importantes des LDPC est la maille ou périmètre (girth). La
maille est la longueur du cycle le plus court dans le graphe biparti. Elle a un impact
majeur sur la distance minimale du code. De plus, lorsque le graphe contient des cycles
courts, l’algorithme de décodage sur le graphe mis en œuvre devient sous optimal.
Nous devons donc éviter les cycles courts et donc maximiser la maille du graphe. Un
exemple de graphe de maille de longueur 4 est donné sur la gure 5.19.
Concevoir une matrice de parité avec la maille la plus grande possible est un pro-
blème combinatoire difcile. Il existe deux approches différentes qui conduisent à
deux grandes familles de matrice de parité H pour les codes LDPC : les matrices non
structurées et les matrices structurées.
avec un décalage cyclique soit une matrice nulle. En notant I 0 la matrice identité de
dimension Z × Z, la matrice I j subissant j décalage cyclique à droite peut s’exprimer
comme suit :
j
010 ... 0
0 0 1 ... 0
..
Ij = I0 ... ..
. . [5.78]
0 1
100 ... 0
La matrice de parité H d’un code QC-LDPC peut être scindée en deux matrices
H = (H1 H2 ). La matrice H1 de dimension M × N − M est composée de sous-
matrices circulaires nulles ou non nulles. La matrice H 2 de dimension M × M a
une forme doublement diagonale et triangulaire inférieure. Un exemple de matrice
de parité H du code QC-LDPC de taille N = 648 et M = 324 soit un rendement
R = 1/2 et Z = 27 utilisé dans le standard IEEE 802.11n et 802.11ac est donné sur
la gure 5.20. Les sous-matrices nulles sont représentées par le symbole « - ».
H1 H2
I0 I0 I0 I0 I 0 I1 I 0
I 22 I 0 I17 I 0 I 0 I12 I0 I0
I6 I0 I10 I 24 I 0 I0 I0
I2 I 0 I 20 I 25 I 0 I0 I0
M I 23 I3 I0 I 9 I11 I0 I0
I 24 I 23 I1 I17 I 3 I10 I0 I0
I 25 I8 I 7 I18 I0 I0 I0
I13 I 24 I0 I8 I6 I0 I0
I 7 I 20 I16 I 22 I10 I 23 I0 I0
I11 I19 I13 I 3 I17 I0 I0
I 25 I 8 I 23 I18 I14 I 9 I0 I0
I3 I16 I 2 I 25 I 5 I1 I0
N -M M
Parmis les autres méthodes pour construire des codes LDPC nous pouvons citer les
codes LDPC utilisant des codes convolutifs variant dans le temps (LDPC-CC LDPC
convolutional code) [JIM 99], les codes spatialement couplés (SC-LDPC spatially-
coupled) [COS 14] et les codes construits à partir de protographes [THO 03].
Nous allons voir que la faible densité de la matrice de parité des codes LDPC per-
met la mise en œuvre d’algorithmes de décodage très efcaces. Cependant, lorsque la
matrice de parité H n’a pas de structure particulière, la complexité de l’opération d’en-
codage sera proportionnelle à M K (complexité en O(M K). Il est donc souhaitable
de modier la matrice génératrice an que la complexité de l’encodage soit linéaire
avec la longueur du mot de code (complexité en O(N )). La méthode proposée par
Richardson et Urbanke est généralement utilisée en pratique [RIC 01b]. L’objectif de
cette méthode est dans un premier temps de modier la matrice de parité H pour
obtenir la structure présentée sur la gure 5.21.
N -M g M -g
1
1
11
1
1
0 M -g
M A B 1
11
T 1
11
11
g
C D E
Figure 5.21. Matrice de parité H dans sa forme triangulaire inférieure
nous obtiendrons :
) *
A B T
[5.81]
C − ET−1 A D − ET−1 B 0
Nous savons que pour un code linéaire, nous avons la relation cH T = 0 pour
tout mot de code qui peut aussi s’écrire Hc T = 0. Si nous supposons que le code est
systématique, nous pouvons exprimer le mot de code c sous la forme c = [u p 1 p2 ]
où u est le mot d’information et [p 1 p2 ] est la séquence composée des M bits de
redondance avec p 1 et p2 de longueur respectivement g et M − g. A partir de la
relation HcT = 0 et de la matrice de parité modiée dans [5.81] nous obtenons les
deux équations suivantes :
Dans [RIC 01b], les auteurs ont montré qu’une fois la phase de prétraitement ef-
fectuée, la complexité de l’encodage mettant en œuvre les relations [5.84] et [5.85] est
proportionnelle à la longueur du mot de code N (complexité en O(N )).
Une autre solution consiste à déterminer itérativement les bits de redondance en ré-
solvant le système d’équations Hc T = 0 à partir du graphe biparti du code [HAL 02].
Cette approche est similaire au décodage sur canal à effacement présentée dans le
chapitre 3.
Pour les codes QC-LDPC, l’encodage est plus direct puisqu’en exprimant le mot
de code c sous la forme c = [u p] où u est le mot d’information et p est la séquence
composée des M bits de redondance et en utilisant la relation Hc T = 0 nous obtenons
la relation suivant :
H 1 uT + H 2 pT = 0 ⇒ pT = H−1
2 H1 u
T
[5.86]
Dans les deux phases, chaque message est calculé à partir de tous les messages
entrant à l’exception du message issu de la branche considérée.
Ces deux phases sont répétées jusqu’à convergence. Celle-ci se produit si tous
les symboles effacés ont été déterminés ou si les messages restent inchangés après
une itération. Dans ce second cas, l’algorithme de décodage itératif a échoué car les
erreurs sont connées dans des sous-ensembles de nœuds variables appelés ensembles
d’arrêt (stopping set). Un ensemble d’arrêt est un ensemble de nœuds de variables
dans le graphe, pour lesquel le sous-graphe correspondant ne contient pas de nœuds
de contrôle de degré 1. Nous renvoyons le lecteur vers l’ouvrage de Richardson et
Urbanke [RIC 08] pour une étude détaillée des ensembles d’arrêt.
0,2617 0,2438 0,2266, 0,2093. La gure 5.22 donne l’évolution de la probabilité d’ef-
facement pour le code LDPC régulier avec d c = 6, dT = 3. Nous avons tracé la
(l) (l−1)
fonction p c = f (pc ) pour ' = 0, 4. La courbe en zigzag donne les valeurs de
(l)
pc pour l = 1, 2, . . . . Nous retrouvons les valeurs calculées précédemment et pou-
vons vérier que la probabilité tend vers 0 (après environ 15 itérations). La valeur
(l) (l−1)
limite de ' correspond au cas où la fonction p c = f (pc tangente la ligne droite.
Pour ce code nous pouvons montrer que ' lim = 0, 4294 comme l’illustre la courbe en
pointillés sur la gure 5.22.
Dans le cas d’un code LDPC irrégulier déni par les fonctions λ(x) et ρ(x), la
relation [5.88] devient :
p(l) (l−1)
c = 'λ(1 − ρ(1 − pc ) [5.89]
Par exemple, pour le code LDPC irrégulier déni par λ(x) = 0, 409x+ 0, 202x 2 +
0, 0768x3 +0, 1971x6 +0, 1151x7 et ρ(x) = x5 de rendement R ≈ 0, 5 nous obtenons
'lim = 0, 481 ce qui est très proche de la limite de Shannon (C = 0, 5). La gure 5.23
donne l’évolution de la probabilité d’effacement pour ce code avec ' = 0, 46.
5.3.3.2. Décodage itératif des codes LDPC sur canal binaire symétrique
Nous allons présenter l’algorithme itératif A proposé par Gallager [GAL 63].
Nous considèrons la transmission d’un mot de code LDPC sur un canal binaire
symétrique. Soit rn le bit reçu (0 ou 1) associé au nœud de variable c n .
Les bits µlcn →Tm (cn ) sont des estimations du bit c n à l’itération l. Dans l’algo-
rithme A, pour avoir µ lcn →Tm (cn ) = b, il est nécessaire que tous les bits µl−1
Tm# →cn (cn )
soient égaux à b. Gallager a proposé une deuxième version appelée l’algorithme B
dans lequel cette contrainte est relaxée : si le nombre de bits µ l−1Tm# →cn (cn ) = b est
supérieur à un seuil S, alors µ lcn →Tm (cn ) = b. Le seuil S est choisi an de minimiser
la probabilité d’erreur binaire.
5.3.3.3. Décodage itératif des codes LDPC sur canal additif à bruit blanc
gaussien
Soit une modulation bipodale et un canal à bruit blanc additif gaussien (y = x + n)
avec xi = ±1 et ni échantillon de bruit blanc additif gaussien centré de variance σ 2 .
Nous supposerons que la taille des mots de code est très grande et nous nous res-
treindrons au cas des codes LDPC réguliers (d c , dT ). En optimisant la construction de
l’entrelaceur, les cycles dans le graphe de Tanner seront alors très grands et donc sans
inuence sur le passage de l’information extrinsèque pendant le décodage itératif.
Nous allons utiliser le graphe factorisé du code LPDC présenté sur la gure 5.24
pour décrire l’algorithme de décodage itératif. Ce graphe factorisé se déduit du graphe
de Tanner du code LDPC.
Sur la gure 5.25, nous présentons un exemple d’arbre local pour un code LDPC
(dc , dT ). Sur cet arbre, nous pouvons observer que chaque nœud de contrôle est déni
par un simple code de parité (d T , dT − 1).
c1 T1
dT
p(y1 /x1 ) dc
TM
cN dT
p(yN /vN ) dc
entrelaceur
En utilisant les deux règles de calcul présentées précédemment lorsque les mes-
sages sont des logarithmes de rapport de vraisemblance, nous obtenons les relations
(l) (l)
suivantes pour le calcul des messages µ c→T (c) et µT →c (c) :
(l)
– calcul des messages nœud de variable vers nœud de contrôle µ c→T (c) :
T −1
d!
(l) (l−1)
µc→T (c) = µTi →c (c) + µ0 (c) [5.90]
i=1
p(y/x = +1) 2
µ0 (c) = ln = 2y
p(y/x = −1) σ
(l)
– calcul des messages nœud de contrôle vers nœud de variable µ T →c (c) :
&d −1 & (l)
''
(l) −1
2
c
µci →T (ci )
µT →c (c) = −2 tanh tanh [5.91]
i=1
2
dT − 1
Tj itération l
(l)
µTj →ck (ck )
ck
dc
! (l)
AP P (x) = µTi →c (c) + µ0 (c) [5.92]
i=1
T1 T2 Tdc −1 p(y/x)
dc − 1
(l−1)
µT1 →c (c) µ0 (c)
c
(l)
µc→T (c)
T
(a)
c1 c2 vdT −1
(l) dT − 1
µc1 →T (c1 )
T
(l)
µT →c (c)
(b)
( l) ( l)
Figure 5.26. Flot de message pour les calculs de µ c→T (c) et µT→c (c)
Lorsque la taille de la trame tend vers l’inni, nous pouvons déterminer préci-
sément le rapport E b /N0 minimum, c’est-à-dire le rapport E b /N0 à partir duquel
l’algorithme de décodage itératif converge vers une probabilité d’erreur nulle. Nous
pouvons montrer que les densités de probabilité des messages calculés par l’algo-
rithme Somme-Produit sont proches de densités de loi gaussienne. Sous l’hypothèse
gaussienne, les densités des messages sont complètement dénies avec leur moyenne
et leur variance. De plus, nous avons vu que l’utilisation de logarithmes de rapport de
vraisemblance permet de simplier encore l’étude des performances asymptotiques
des codes LDPC en ne s’intéressant qu’à l’évolution de la moyenne de la densité de
probabilité car la relation de symétrie implique que la variance est égale à deux fois la
moyenne. A partir de l’équation [5.90] nous obtenons :
m(l) (l)
v = (dv − 1)mc + m0 [5.93]
(l)
mc peut être calculée à partir de l’espérance sur chacun des termes de [5.91] :
1itération
ï2
10 5itérations
10 itérations
ï3
10
TEB
20 itérations
ï4
10
ï5
40 itérations
10
ï6
10
1 1.5 2 2.5 3 3.5
Eb/No
/ 7 +∞ 2
√1
4πx −∞ tanh( u2 ) exp(− (u−x)
4x )du si x>0
φ(x) = [5.95]
1 si x=0
φ(x) est la moyenne de tanh( u2 ) où u est une variable aléatoire gaussienne de moyenne
x et de variance 2x.
)N Odc −1 *
−1
m(l)
c =φ (l)
φ(mv ) [5.96]
25
20
var_de
15
var_ga
10
mean_de
mean_ga
5
0
0 20 40 60 80 100 120
itération
Nous pouvons observer que les courbes obtenues avec ces deux approches sont
très proches. L’approximation gaussienne donne des résultats très sensiblement pessi-
mistes.
5.3.4. Applications
En 2003, un code LDPC a été retenu pour le standard pour la transmission par
satellite de la télévision numérique DVB-S2 mais aussi pour le DVB-T2 et DVB-C2.
Pour le standard DVB-S2, les mots de code sont de longueur N = 64800 bits (trame
normale) avec onze rendements variant de 1/4 à 9/10 ou de longueur N = 16200 bits
(trame courte) avec 10 rendements différents de 1/4 à 8/9. Le code LDPC est irrégulier
et peut être vue comme un code de répétition-accumulation irrégulier (IRA) que nous
étudierons dans la section 5.5.
5.4.1. Introduction
u
u
Codeur 1
R=k/n c1
Entrelaceur E
v Codeur 2 c2
R=k/n
Le turbo code ainsi construit est un code en blocs linéaire binaire (N, K) avec
N = (2 n−kk + 1)K en négligeant les éventuels bits de terminaison. Le rendement
global du code est donc égal à :
1
RT =
2 n−k
k +1
! !
aij = 1 et aij = 1
j i
La structure initialement proposée par Berrou et al. comporte deux codeurs RSC
de rendement R = 1/2. Le rendement global est alors égal à R T = 1/3. Le graphe
TWL de ce turbo codeur de rendement R T = 1/3 est donné gure 5.30.
codeur 1 s0 s1 s2 s3 s4
T0 T1 T2 T3
u0 u1 u2 u3
entrelaceur
codeur 2 s0 s1 s2 s3 s4
T0 T1 T2 T3
c20 c21 c22 c23
Comme pour les codes convolutifs, il est possible d’effectuer une perforation en
sortie an d’augmenter le rendement global.
Le rôle de la terminaison est d’éviter les mots de code de faible poids en ajoutant
en n de séquence M bits an de ramener l’état interne du codeur convolutif à l’état
zéro où M est le nombre de cellules mémoires du codeur convolutif. Les principales
techniques de terminaison pour les turbo codes sont les suivantes :
– terminaison uniquement du premier codeur. Par l’ajout de M bits, le premier
codeur est terminé. Les K + M bits sont entrelacés. L’entrelaceur doit éviter les effets
de bord dus à l’absence de terminaison du second codeur ;
– terminaison des deux codeurs séparemment [HOK 99a]. Avec cette méthode, les
deux codeurs sont terminés chacun indépendamment. Les bits de terminaison ainsi
que les bits de redondance associés sont transmis sur le canal. C’est cette solution qui
a été retenue pour le standard UMTS ;
– terminaison des deux codeurs conjointement. Pour un entrelaceur donné, il est
possible en ajoutant un nombre de bits compris entre M et 2M de ramener les treillis
des 2 codeurs simultanément à l’état zéro [VAN 00] ;
– mise en œuvre d’un codeur circulaire consistant à chaîner les codeurs convolutifs
an de n’avoir à terminer que le dernier des codeurs [BER 99] ;
– une autre approche consiste à ramener l’état du codeur dans l’état initial. La n
du treillis du code est alors rebouclée sur son début. Cette technique est appelée tail-
biting. Elle permet d’éviter la diminution du rendement du code due à l’ajout des bits
de terminaison.
Dans cette section, nous allons montrer que les matrices de parité des turbo codes
sont de faibles densités comme les codes LDPC.
Puisque le turbo code est un code linéaire en blocs, nous avons la relation suivante
entre le mot d’information u de longueur K bits et le mot de code x de longueur N
bits :
x = uG = (u x1 x2 ) [5.97]
Dans le chapitre 4 sur les codes convolutifs, nous avons introduit la matrice de
parité d’un code convolutif de rendement R = 1/2. La seconde forme obtenue à partir
de l’équation de parité [4.8] s’écrit comme suit :
) T*
1 H2
(u x ) =0 [5.99]
H1 T
) T*
2 H2
(uΠx ) =0 [5.100]
H1 T
) *
H2 H1 0
H= [5.101]
ΠT H2 0 H1
K noeuds
K noeuds
Sous réserve que K soit très supérieur au nombre de cellules mémoires M des
codeurs convolutifs, cette matrice est de faible densité et irrégulière. Nous pouvons
donc voir les turbo codes comme des codes LDPC irréguliers.
Les performances théoriques des turbo codes, qui peuvent être vus comme des
codes en blocs peuvent être déterminées à partir de la fonction IOWEF ou IRWEF
du code. Ces fonctions permettent de déterminer les coefcients B d de la borne supé-
rieure [3.109]. A fort et moyen rapport signal sur bruit, seul le premier terme inuence
le taux d’erreur et nous avons :
&I '
1 Eb
T EB ≈ Bdmin erfc dmin R [5.102]
2 N0
où dmin est la distance minimale du turbo code. Les turbo codes ayant une distance
minimale relativement petite, nous pouvons observer un effet de palier à fort et moyen
rapport signal sur bruit comme nous pouvons le voir sur la gure 5.38.
n−k
K
! k K
! K
!
C
A (W, Z) = AC w z
w,z W Z = W w AC (w, Z)
w=wmin z=zmin w=wmin
n−k
k K
!
C
avec A (w, Z) = AC
w,z Z
z
z=zmin
Dans le cas des codeurs RSC terminés, nous avons w min = 2. Nous avons alors la
relation suivante entre d libre la distance libre ou minimale du codeur RSC et z min :
L’utilisation de la borne par réunion permet alors d’obtenir une borne supérieure
sur le taux d’erreur binaire du décodeur à maximum de vraisemblance sur un canal à
bruit blanc additif gaussien.
Benedetto et Montorsi [BEN 96a] ont montré que pour les codes convolutifs conca-
ténés en parallèle, l’utilisation de codes convolutifs récursifs systématiques permet
d’obtenir en moyenne un gain d’entrelacement égal à 1/K. En ne prenant en compte
que les séquences d’entrée de poids w = w min = 2, à partir de la relation [3.105], le
taux d’erreur binaire peut être borné par :
.K/2/ 0
1 ! 2i i (H 2+2zmin )i 00
T EB ≤ C [5.105]
2 i=1 K 2i (1 − H zmin −2 )2i 0H = e−REb /N0
Dans le cas des codeurs convolutifs non récursifs, comme w min = 1, il n’y a
aucun gain d’entrelacement. An de maximiser z min et donc dlibre,ef f , il faut choisir
un polynôme primitif au dénominateur. Pour un nombre de cellules M et un rendement
R xés, il reste alors à déterminer le ou les polynômes numérateurs. Dans [BEN 98],
une recherche exhaustive des meilleurs codes constituants RSC pour les turbo codes
basée sur le critère de la distance libre effective a été effectuée.
Sur la gure 5.32, nous présentons les performances moyennes P e = f (Eb /N0 )
d’un codeur convolutif concaténé en parallèle de rendement total R t = 1/3 composé
de deux codeurs convolutifs récursifs systématiques RSC(7,5) et RSC(15,17) et pour
deux tailles d’entrelaceurs uniformes (100 et 1 000 bits) en utilisant la borne par union.
Nous pouvons en particulier vérier le gain d’entrelacement égal ici à 1/K.
Nous savons que les mots codes de faible poids sont principalement générés par
des séquences d’entrée de faible poids. Sur les gures 5.33 et 5.34, nous avons com-
paré l’inuence de ces séquences sur les performances moyennes de turbo codes com-
posés de deux codeurs RSC(15,17) et d’un entrelaceur uniforme de taille K = 100
et 1 000. Le rendement total est égal à R t = 1/3. Seules les séquences d’entrée de
poids w < 4 inuent sur les performances à moyen et fort rapport signal à bruit. Pour
le codeur RSC(15,17), ce sont les séquences d’entrée de poids w = 2, w = 3, puis
w = 4. Il faut également noter que lorsque la taille de l’entrelaceur augmente, les
séquences de poids w = 2 sont de plus en plus importantes.
ï1
10
T EB
ï2
10
ï3
10
ï4 K = 100
10
ï5
10
ï6 K = 1000
10
ï7
10
ï8
10
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
EB /N0
0.9
fraction du T EB
0.8
w=4
w=3
0.7
0.6
0.5
0.4
0.3
w>4
0.2
0.1 w=2
0
2 3 4 5 6 7 8 9 10
EB /N0
Le décodage initialement proposé par Berrou et al. dans [BER 93] consiste à dé-
coder alternativement les codes constituants du codeur concaténé. Pour chaque code
élémentaire, nous effectuons un décodage à entrées et sorties pondérées.
Sur cette gure, les différents étages de retard ne sont pas représentés mais doivent
être implantés lors d’une réalisation matérielle pour tenir compte des retards des dif-
férents éléments du décodeur itératif (décodeur, entrelaceur).
0.9
fraction du T EB
w=3
0.8
0.7
0.6
0.5
0.4
w=2
0.3
0.2 w=4
0.1
0
2 3 4 5 6 7 8 9 10
EB /N0
xS yS
x1 y1 CANAL APP CANAL APP
DEC 1 DEC 2
x2 y2
APRI EXTR π APRI EXTR
π −1
code 1 s0 s1 s2 s3 s4
T0 T1 T2 T3
u0 u1 u2 u3
p(y0S | xS0 ) p(y1S | xS1 ) p(y2S | xS2 ) p(y3S | xS3 )
entrelaceur
code 2 s0 s1 s2 s3 s4
T0 T1 T2 T3
c20 c21 c22 c23
! K−1
2
EXT R1(l) (xSi = a) = AP RI 1(l) (xSj )p(yjS | xSj )
xS :xS
i
=a j=0
j)=i
N −K−1
2
× p(yj1# | x1j # ) [5.107]
j # =0
! K−1
2
EXT R2(l) (xSi = a) = AP RI 2(l) (xSj )p(yjS | xSj )
xS :xS
i
=a j=0
j)=i
N −K−1
2
× p(yj2# | x2j # ) [5.108]
j # =0
! K−1
2 N −K−1
2
AP P (lT ) (xSi = a) ∝ AP RI 2(lT ) (xSj )p(yjS | xSj ) p(yj2# | x2j # )
xS :xS
i =a
j=0 j # =0
[5.109]
∝ p(yiS | xSi ) × AP RI 2(lT ) (xSi = a) × EXT R2(lT ) (xSi = a)
[5.110]
Comme pour les codes LDPC, au lieu de calculer les probabilités EXT R(x Si = a)
et AP P (xSi = a), nous pouvons calculer les logarithmes des rapports de vraisem-
blance LLR. Ainsi, le logarithme du rapport de vraisemblance L AP P (xSi ) sera égal
à:
avec :
p(yjS | xSj = 1) 2
LIN T (xSi ) = ln S S
= 2 yjS
p(yj | xj = 0) σ
Pour illustrer les performances remarquables des turbo codes, nous présentons
sur la gure 5.37 les courbes T EB = f (E B /N0 ) d’un turbo code de rendement
1+D 2
RT = 1/2 composé de deux codes convolutifs RSC (1, 1+D+D 2 ) et d’un entrelaceur
65 536. Ce code est le turbo code initialement proposé par Berrou et al. en 1993
[BER 93]. Nous pouvons voir qu’après 18 itérations, pour un TEB de 10 −5 , nous
avons EB /N0 = 0, 7 dB. Nous sommes donc seulement à 0,7 dB de la limite de
Shannon. Il faut cependant noter l’effet de palier (changement de pente de la courbe)
qui apparaît ici pour un TEB de l’ordre de 10 −6 . Cet effet de palier est caractéristique
ï3
10
TEB
ï4
10
ï5
10
ï6
10
ï7
10
1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3
E /N
B 0
Un outil couramment utilisé pour étudier le comportement des turbo codes mais
aussi de tout schéma mettant en œuvre un décodage itératif est la courbe EXIT (EX-
trinsic Information Transfert) introduite par ten Brink [BRI 99, HAG 04]. Le principe
de base est d’assimiler un décodeur à entrées et sorties pondérées à un opérateur non
linéaire dont l’entrée est L AP RI (x) et la sortie LEXT R (x) pour un rapport signal à
bruit donné. Il existe d’autres approches comme la mesure de la variance pour caracté-
riser les performances des codes concaténés mais la mesure de l’information mutuelle
I(x; LAP RI (x)) et I(x; LEXT R (x)) est plus universelle.
sans codage
itération 1
TEB
itération 3
itération
18 itération 3
itération
6
effet de palier
EB/N0
2
où x ∈ {−1; +1}, µA = σA /2 et nA est un terme de bruit de distribution gaussienne
2
centrée et de variance σ A . A partir de la dénition de l’information mutuelle donnée
par la relation [1.112], nous obtenons :
# & '
1 ! +∞ 2pA (z|x)
= pA (z|x) log2 dz
2 x=±1 −∞ pA (z|x = +1) + pA (z|x = −1)
# & C σ2 D2 '
+∞ C D
1 z − 2A
= ( exp − 2 1 − log2 (1 + exp(−z)) dz
2
2πσA −∞ 2σA
[5.113]
Sur la gure 5.39 nous présentons les courbes EXIT obtenues pour le code convo-
lutif récursif systématique (13,15) de rendement R = 1/2, une modulation BPSK et
pour différentes valeurs de rapport E b /N0 .
Dans un décodeur itératif, l’information extrinsèque est échangée entre les déco-
deurs élémentaires. A partir de la courbe EXIT et en partant du point (0,0), nous pou-
vons prédire l’évolution de l’information mutuelle en fonction des itérations. Il suft
de tracer sur une même gure la courbe EXIT de chacun des décodeurs élémentaires.
Lorsque les codes constituants sont identiques, il suft d’ajouter à la courbe EXIT
initiale, une seconde courbe correspondant au second décodeur obtenue par symétrie
avec la diagonale. Sur la gure 5.40, nous présentons un exemple d’évolution des in-
formations mutuelles en fonction des itérations pour un turbo code composés de deux
codes convolutifs systématiques (13,15) de rendement R = 1/2 et pour un rapport
Eb /N0 = 0, 5 dB. D’une manière générale, si les deux courbes ne se croisent pas, les
courbes EXIT permettent de prédire que le décodeur itératif convergera et que le taux
d’erreur binaire sera très faible. Les courbes EXIT permettent également de prédire la
valeur du rapport signal à bruit limite pour un schéma de codage donné qui correspond
à la fermeture du tunnel entre les deux courbes.
Les entrelaceurs ont souvent été utilisés par le passé dans les systèmes de commu-
nications numériques, en particulier lorsque le canal de transmission est caractérisé par
un bruit impulsionnel ou des multitrajets. Nous utilisons également les entrelaceurs
dans les structures de codage concaténé composées d’un codeur convolutif comme
codeur interne et d’un codeur en blocs comme codeur externe. Dans ces structures,
l’unique objectif de cet entrelaceur est de disperser, dans la mesure du possible, les
erreurs en paquet en sortie du décodeur de Viterbi. Pour les codes convolutifs conca-
ténés en parallèle, l’entrelaceur est un élément majeur du turbo codeur. Dans cette
section, nous allons présenter les critères de construction des entrelaceurs relatifs à la
fois au codage et au décodage des turbo codes.
5.4.6.1. Définitions
Un entrelaceur E est un composant déni par une fonction de permutation. Un
entrelaceur associe une séquence d’entrée u = [u 0 , u1 , . . . , uK−1 ] à une séquence de
sortie v = [v0 , v1 , . . . , vK−1 ]. La fonction de permutation peut alors être dénie à
partir du vecteur de permutation p de longueur K :
ui = vp(i) [5.117]
! !
aij = 1 et aij = 1
j i
p(i) = j ⇔ aij = 1
Si aij =1 alors le bit ui est associé au bit vj . Nous avons alors la relation suivante
entre la séquence entrée u et la sortie v de l’entrelaceur :
v = uΠ [5.119]
Pour chaque paire de position (i, j), nous appellons cycle primaire, le cycle com-
posé des deux branches de l’entrelaceur (i, p(i)) et (j, p(j)) en utilisant la représen-
tation TWL des turbo codes. Un exemple de cycle primaire est donné sur la gure
5.41.
y1
x ! "
entrelaceur
p( j ) p (i )
y2
Ainsi deux bits séparés par moins de S − 1 bits en entrée seront séparés par au
moins S − 1 bits en sortie. Ce facteur est utilisé pour la construction de l’entrelaceur
S-random.
Soit ρLe1 ,yS# la corrélation entre Le 1k et ykS# . Il a été montré dans [HOK 99b] que
k k
cette fonction est exponentiellement décroissante. La corrélation en sortie du second
décodeur peut être approximée comme suit :
1
ρ̂Le2 ,yS = ρ̂ 1 S Π(I + ρ̂Le1 ,yS ) [5.123]
2 Le ,y
ρ̂Le2 ,yS est la matrice de corrélation entre Le 2 et yS , et ρ̂Le2 ,yS# est l’un de ses
k k
éléments.
K−1
!
1
Vk = (ρ̂Le2 ,yS# − ρ̂Le2 ,yS# ) [5.124]
K −1 # k k k k
k =0
avec :
K−1
1 !
ρ̂Le2 ,yS# = ρ̂Le2 ,yS# [5.125]
k k K # k k
k =0
&K−1 K−1
'
1 ! !
IDS = Vk + Vk& [5.126]
2K
k=0 k=0
Une faible valeur de IDS indique que Le 2 est uniformément corrélé à la séquence
d’entrée y S . En pratique, le critère IDS est proche du critère de dispersion L.
Un entrelaceur est dit sans conit d’accès pour une fenêtre de longueur W , s’il
satisfait ainsi que son desentrelaceur la relation suivante :
P Q P Q
p(u1 W + v) p(u2 W + v)
*= [5.127]
W W
5.4.6.2. Critères
Les deux principaux critères de construction de l’entrelaceur sont les suivants :
– le premier critère de construction de l’entrelaceur est relatif à la distribution de
poids des codes convolutifs concaténés en parallèle : l’entrelaceur doit être construit de
manière à éviter les permutations qui entraînent des mots codes de faible poids. Il doit
permettre d’améliorer la distribution de poids des codes concaténés et d’augmenter
leurs distances minimales. La structure parallèle des turbo codes implique que le poids
de Hamming du mot de code est égal à la somme des poids de Hamming des séquences
u, c1 et c2 . Ainsi l’entrelaceur doit entrelacer les séquences d’entrée u qui génèrent
des séquences c1 de poids faible, avec les séquences v qui génèrent des séquences c 2
de poids fort ;
– le second critère de construction est relatif au décodage itératif. L’entrelaceur
doit garantir le meilleur passage de l’information extrinsèque d’un décodeur à l’autre.
Autrement dit, l’entrelaceur doit permettre à chaque itération que l’information a
priori soit la moins corrélée possible avec l’information issue du canal de transmis-
sion. L’objectif de ce critère est d’assurer que les performances du décodeur itératif
soient aussi proches que possible de celles d’un décodeur à maximum de vraisem-
blance. Ce critère est satisfait sous réserve que le graphe TWL du code concaténé soit
sans cycle. Comme les cycles sont toujours présents, le second critère de construction
doit garantir que ces cycles soient sufsamment grands.
Pour terminer cette section, nous allons succinctement présenter les entrelaceurs
QPP (Quadratic Polynomial Permutation) les plus souvent retenus dans les standards.
et QPP ont souvent été proposés lors de la dénition des standards récents. Sur la -
gure 5.42, nous présentons un exemple d’entrelaceur L-random de taille K = 320 bits
et l’entrelaceur QPP de taille K = 280 avec f 1 = 103 et f2 = 210 (entrelaceur du
standard LTE). Même si l’entrelaceur QPP semble proche de l’entrelaceur L-random,
il est beaucoup plus structuré, ce qui facilite sa mise en œuvre et la parallélisation des
opérations.
5.4.7. Applications
Le standard CCSDS pour les communications spatiales fut l’un des premiers à
inclure les turbo codes. Les codes constituants sont des codes convolutifs à seize états
et la longueur des trames d’information varie de 1 784 à 8 920 bits (avec une extension
possible jusqu’à 16 384 bits). Les rendements supportés sont 1/2, 1/3, 1/4 et 1/6.
Le groupe 3GPP a proposé les standards UMTS, HSPA et plus récemment le stan-
dard LTE (Long Term Evolution) pour répondre au besoin de la quatrième génération
de réseaux mobiles. Ces standards privilégient une correction d’erreurs par turbo code
binaire. Dans le standard UMTS, les codes constituants sont des codes convolutifs à
huit états (1, 15/13) et la longueur des trames d’information vaut 40 ≤ K ≤ 5 114
bits. Les codes constituants du standard CDMA2000 sont des codes convolutifs (1,
15/13, 17/13) à huit états et de rendement 1/3. La longueur des trames d’information
varie de 378 à 20 730 bits et les rendements supportés sont 1/2, 1/3, 1/4 et 1/5.
Pour le standard LTE, les codes constituants sont des codes convolutifs (1, 15/13) à
huit états. Le standard spécie 188 entrelaceurs QPP différents permettant de suppor-
ter des longueurs de trames d’information allant de 40 à 6 144 bits. Ces entrelaceurs
autorisent un parallèlisme de p = 8 pour K < 2 048 et de p = 64 pour K ≥ 2 048.
Dans le standard DVB-RCS, les codes constituants sont des codes convolutifs duo-
binaires (deux bits par symbole) à huit états. La longueur des trames peut varier de 16
à 256 octets et le rendement est variable choisi parmi 1/3, 2/5, 1/2, 2/3, 3/4, 4/5 ou 6/7.
300
250
200
150
100
50
0
0 50 100 150 200 250 300
(a)
250
200
150
100
50
0
0 50 100 150 200 250
(b)
5.5.1.1. Structure
La structure des codes linéaires en blocs concaténés en parallèle PCBC ( Parallel
Concatenated Block Codes en anglais) est donnée sur la gure 5.43.
kH nH - k H
kV u ch
nV - kV cv
Les symboles d’information sont disposés sous la forme d’un tableau de dimension
kV kH . A ce tableau, nous avons ajouté deux tableaux de dimension k V (nH − kH ) et
(nV − kV )kH . Le code PCBC ainsi obtenu est un code linéaire en blocs systématique
(N, K) avec N = kV nH + nV kH − kV kH et K = kV kH . Le rendement global du
code PCBC est donc égal à :
kV kH
RT =
kV nH + nV kH − kV kH
Le graphe TWL des codes PCBC est présenté sur la gure 5.44.
cH
code C H 1 code C H 2 code C H k V
Entrelaceur
en bloc
cV
Dans ce chapitre nous limiterons notre étude aux codes PCBC binaires. Ces codes
peuvent être décodés simplement de façon itérative.
Les codes constituants sont principalement des codes de parité, des codes de Ham-
ming ou des codes BCH.
LAP RI (xi ) = LH
EXT R (xi )
Le code SCC ainsi construit est un code en blocs (N, K) avec N = ( nk21 nk21 )K en
négligeant les éventuels bits de terminaison. Le rendement global du code est donc
égal à :
k1 k2
RT =
n1 n2
Les codes produits ont été introduits en 1954 par Elias [ELI 54].
kH colonnes nH - k H colonnes
k V lignes u ch
nV - kV lignes cv chv
Le code ainsi obtenu est un code linéaire en blocs systématique (N, K) avec N =
nV nH et K = kV kH .
kV kH
RT =
nV nH
Comme pour les codes PCBC, les codes constituants sont principalement des
codes de parité, de codes de Hamming ou des codes BCH.
Historiquement, les codes produits ont surtout été utilisés pour la protection des
données des CD audio et des CD-ROM. Pour ces applications, les codes constituants
sont des codes Reed-Solomon construits sur GF (2 q ) et le décodage est à décision
dure et sans itération. Cependant, pour s’approcher des performances du décodeur
à maximum de vraisemblance, il est nécessaire de réaliser un décodage itératif. Ces
codes ont été récemment choisis pour la norme de réseau sans l large bande IEEE
802.16. Les codes constituants sont des codes de parité (8,7), (16,15) et (32,31) ainsi
que des codes de Hamming étendus (16,11), (32,26) et (64,57).
5.6. Exercices
S P
c1S c1P c2S c2P c3 c3
Nous considérons le code linéaire systématique en blocs binaire (4,3) dénit par
l’équation de parité suivante : u 1 + u2 + u3 + c4 = 0.
Nous utilisons ce code pour une communication sur un canal additif à bruit blanc
gaussien de variance σ 2 . Avant émission sur le canal les bits sont convertis en un
signal bipodal bit 0 ⇒ –1 et bit 1⇒ +1.
c1 c5 c3
c2 c4
La variable c5 dans le graphe de Tanner est une variable cachée (sans information
intrinsèque) utilisée pour avoir deux nœuds de parité de degré 3.
Démonstration de la capacité
d’un canal BBAG
Dans cette annexe, nous allons démontrer quelques résultats utiles pour la démons-
tration géométrique de la capacité d’un canal à bruit blanc additif gaussien.
) *
1 n2
p(ni ) = √ exp − i2 [A.1]
2πσ 2 2σ
B"
D 2 2 2
Soit r = i=1 ni la norme de n. Comme la variance de n i est E(ni ) = σ , la
2
moyenne de r est donnée par :
Et la variance de n 2i est :
00 1 0 WZ 0
00 W Z 0 1 0
C(W, Z) = [B.1]
10 0 W 0 Z
11 0 Z 0 W
1
0
A(W, Z) = (1 0 0 0)C K (W, Z)
0
[B.2]
0
A00 (W, Z, i) 1 0 WZ 0 A00 (W, Z, i − 1)
A01 (W, Z, i) WZ 0 1 0 A01 (W, Z, i − 1)
10 =
A (W, Z, i) 0 W 0 Z
A10 (W, Z, i − 1)
A11 (W, Z, i) 0 Z 0 W A11 (W, Z, i − 1)
et :
(00) (00) (10)
Aw,z (i) = Aw,z (i − 1) + Aw−1,z−1 (i − 1)
A(01) (i) = A(00) (10)
w,z w−1,z−1 (i − 1) + Aw,z (i − 1)
[B.3]
A(10)
(01) (11)
w,z (i) = Aw−1,z (i − 1) + Aw,z−1 (i − 1)
A (i) = A
(11) (01) (11)
w,z w,z−1 (i − 1) + Aw−1,z (i − 1)
(00) (s)
avec les conditions initiales suivantes : A 0,0 (0) = 1, et Aw,z (0) = 0 sinon. Il suft
donc d’appliquer les équations [B.3] pour i = 1, . . . , K.
CELP : prédiction linéaire avec excitation par séquences codées, Code Excited Linear
Predictive
LDPC : code à matrice de parité de faible densité, Low Density Parity Check
NRSC : codeur convolutif systématique non récursif, Non Recursive Systematic Convo-
lutional
A : matrice de transformation
B : bande passante
c : mot de code
C : capacité en Sh/dimension
DB : débit binaire
DS : débit symbole
e : capacité de correction
e : vecteur d’erreurs
ed : capacité de détection
G : ltre prototype
G : matrice génératrice
H : matrice de parité
H(X) : entropie de X
P : puissance du signal
Q : taille de l’alphabet
s : syndrome d’erreur
T : durée symbole
u : mot d’information
[BAH 74] BAHL L.R., C OCKE J., J ELINEK F., R AVIV J., « Optimal decoding of linear codes
for minimizing symbol error rate », IEEE Trans. Inform. Theory, vol. 20, p. 284-287, 1974.
[BAR 95] BARBULESCU A.S., P IETROBON S.S., « Terminating the trellis of turbo-codes in
the same state », Electronics Letters, vol. 31, n° 1, p. 22-23, IET, 1995.
[BAS 65] BASSALYGO L.A., « New upper boundes for error-correcting codes », Problems of
Information Transmission, vol. 1, n° 1, p. 32-35, 1965.
[BAT 79] BATTAIL G., D ECOUVELAERE M.C., G ODLEWSKI P., « Replication decoding »,
IEEE Trans. Inform. Theory, vol. 25, n° 2, p. 332-345, 1979.
[BAT 87] BATTAIL G., « Le décodage pondéré en tant que procédé de réévaluation d’une dis-
tribution de probabilité », Annales des Télécommunications, vol. 42, p. 499-509, 1987.
[BAT 89] BATTAIL G., « Construction explicite de bons codes longs », Annales des Télécom-
munications, vol. 44, p. 392-404, 1989.
[BAT 93] BATTAIL G., B ERROU C., G LAVIEUX A., « Pseudo-random recursive convolutional
coding for near-capacity performance », Proc. of GLOBECOM, Houston, Texas, Etats-Unis,
1993.
[BAT 97] BATTAIL G., Théorie de l’information, Masson, Paris, 1997.
[BEN 96a] B ENEDETTO S., M ONTORSI G., « Design of parallel concatenated convolutional
codes », IEEE Trans. on Comm., vol. 44, n° 5, p. 591-600, 1996.
[BEN 96b] B ENEDETTO S., M ONTORSI G., « Unveiling Turbo codes : Some results on paral-
lel concatenated coding schemes », IEEE Trans. Inform. Theory, vol. 42, n° 2, p. 409-428,
1996.
[BEN 98] B ENEDETTO S., G ARELLO R., M ONTORSI G., « A search for good convolutional
codes to be used in the construction of Turbo codes », IEEE Trans. on Comm., vol. 46, n° 9,
p. 1101-1105, 1998.
[BEN 99] B ENEDETTO S., B IGLIERI E., Principles of digital transmission : with wireless
applications, Springer, Berlin, 1999.
[COS 14] C OSTELLO J R D.J., D OLECEK L., F UJA T.E., K LIEWER J., M ITCHELL D.G.,
S MARANDACHE R., « Spatially coupled sparse codes on graphs : theory and practice »,
Communications Magazine, vol. 52, n° 7, p. 168-176, 2014.
[COV 91] C OVER T.M., T HOMAS J.A., Elements of information theory, John Wiley, New
York, 1991.
[CRO 05] C ROZIER S., G UINAND P., « Distance upper bounds and true minimum distance re-
sults for turbo-codes designed with DRP interleavers », Proc. 2003 Int. Symp. Turbo Codes,
vol. 60, p. 10-28, 2005.
[DEC 07] D ECLERCQ D., F OSSORIER M., « Decoding algorithms for nonbinary LDPC codes
over GF », IEEE Transactions on Communications, vol. 55, n° 4, p. 633-643, 2007.
[DOL 95] D OLINAR S., D IVSALAR D., « Weight distributions for turbo codes using random
and nonrandom permutations », TDA Progress Report 42-122, Jet Propulsion Lab., 1995.
[DUR 10] D URRETT R., Probability : Theory and examples, 4e édition, Cambridge University
Press, 2010.
[ELI 54] E LIAS P., « Error-free coding », IRE Trans. Inform. Theory, p. 29-37, 1954.
[ELI 55] E LIAS P., « Coding for two noisy channels », Proc. of 3rd London Symp. Information
Theory, Londres, Royaume-Uni, p. 61-76, 1955.
[FOR 66] F ORNEY G.D., Concatenated codes, MIT Press, Cambridge, 1966.
[FOR 73] F ORNEY G.D., « The Viterbi algorithm », Proceedings of the IEEE, vol. 61, n° 3,
p. 268-278, 1973.
[FOR 88] F ORNEY G.D., « Coset codes-Part 11 : Binary lattices and related codes », IEEE
Trans. Inform. Theory, vol. 34, p. 1152-1187, 1988.
[FOR 98] F ORNEY J R G.D., U NGERBOECK G., « Modulation and coding for linear Gaussian
channels », IEEE Transactions on Information Theory, vol. 44, n° 6, p. 2384-2415, 1998.
[FOS 04] F OSSORIER M.P., « Quasicyclic low-density parity-check codes from circulant per-
mutation matrices », IEEE Transactions on Information Theory, vol. 50, n° 8, p. 1788-1793,
2004.
[GAL 63] G ALLAGER R.G., Low density parity-check codes, MIT Press, Cambridge, 1963.
[GER 92] G ERSHO A., G RAY R.M., Vector Quantization and Signal Compression, Kluwer
Academic Publishers, Boston, 1992.
[GIB 88] G IBSON J.D., S AYOOD K., « Lattice quantization », Advances in Electronics and
Electron Physics, vol. 72, p. 259-332, 1988.
[GOY 01] G OYAL V.K., « Theoretical foundations of transform coding », IEEE Signal Pro-
cessing Magazine, vol. 18, n° 5, p. 9-21, 2001.
[GRA 82] G RAY R.M., A BUT H., « Full search and tree searched vector quantization of
speech waveforms », IEEE International Conference on Acoustics, Speech and Signal Pro-
cessing, ICASSP ’82, p. 593-596, juin 1982.
[GRA 98] G RAY R.M., N EUHOFF D.L., « Quantization », IEEE Transactions on Information
Theory, vol. 44, n° 6, p. 2325-2383, 1998.
[HAG 96] H AGENAUER J., O FFER E., PAPKE L., « Iterative decoding of binary block and
convolutional codes », IEEE Trans. Inform. Theory, vol. 42, n° 2, p. 429-445, 1996.
[HAG 04] H AGENAUER J., « The EXIT Chart-Introduction to Extrinsic Information Trans-
fer », Proc. 12th Europ. Signal Proc. Conf in Iterative Processing (EUSIPCO), p. 1541-
1548, 2004.
[HAL 02] H ALEY D., G RANT A., B UETEFUER J., « Iterative encoding of low-density parity-
check codes », Global Telecommunications Conference, GLOBECOM’02, vol. 2, p. 1289-
1293, 2002.
[HOC 59] H OCQUENGHEM A., « Codes correcteurs d’erreurs », Chiffres, vol. 2, p. 147-156,
1959.
[HOK 99a] H OKFELT J., E DFORS O., M ASENG T., « A survey on trellis termination alterna-
tives for Turbo codes », Proc. of Vehicular Technology Conference, Houston, Etats-Unis,
mai 1999.
[HOK 99b] H OKFELT J., E DFORS O., M ASENG T., « Turbo codes : Correlated extrinsic in-
formation and its impact on iterative decoding performance », Vehicular Technology Confe-
rence, vol. 3, p. 1871-1875, 1999.
[HU 05] H U X.-Y., E LEFTHERIOU E., A RNOLD D.-M., « Regular and irregular progressive
edge-growth tanner graphs », IEEE Transactions on Information Theory, vol. 51, n° 1,
p. 386-398, 2005.
[HUF 52] H UFFMAN D.A., « A method for the construction of minimum redundancy codes »,
Proc. IRE, vol. 40, p. 1098-1101, 1952.
[ITU 89] CCITT Recommendation G.711 ; Pulse Code Modulation (PCM) of Voice Frequen-
cies, ITU-T, 1989.
[ITU 90] CCITT Recommendation G.726 (12/90) ; 40, 32, 24, 16 kbit/s Adaptive Differential
Pulse Code Modulation (ADPCM), ITU-T, 1990.
[JEL 69] J ELINEK F., « An upper bound on moments of sequential decoding effort », IEEE
Trans. Inform. Theory, vol. 15, n° 2, p. 464-468, 1969.
[JIM 99] J IMENEZ F ELSTROM A., Z IGANGIROV K.S., « Time-varying periodic convolutional
codes with low-density parity-check matrix », IEEE Transactions on Information Theory,
vol. 45, n° 6, p. 2181-2191, 1999.
[JOH 99] J OHANNESSON R., Z IGANGIROV K.S., Fundamentals of convolutionnal coding,
IEEE Press, Piscataway, 1999.
[JOH 01] J OHNSON S.J., W ELLER S.R., « Construction of low-density parity-check codes
from Kirkman triple systems », Global Telecommunications Conference, GLOBECOM’01,
vol. 2, p. 970-974, 2001.
[JPE 90] ITU-T Recommendation T.81 ISO/IEC IS 10918-1, ITU-T, 1990.
[JUA 82] J UANG B.H., G RAY A.H., « Multiple stage vector quantization for speech co-
ding », Proc. IEEE International Conference on Acoustics, Speech and Signal Processing
(ICASSP), Paris, France, juin 1982.
[KOU 01] KOU Y., L IN S., F OSSORIER M.P., « Low-density parity-check codes based on -
nite geometries : a rediscovery and new results », IEEE Transactions on Information Theory,
vol. 47, n° 7, p. 2711-2736, 2001.
[KSC 01] K SCHISCHANG F.R., F REY B.J., L OELIGER H. A., « Factor graphs and the sum-
product algorithm », IEEE Trans. Inform. Theory, vol. 47, n° 2, p. 498-519, 2001.
[KSH 95] K SHISCHANG F., S OROKINE V., « On the trellis structure of block codes », IEEE
Trans. Inform. Theory, vol. 41, p. 1924-1937, 1995.
[LEG 94] L E G OFF S., G LAVIEUX A., B ERROU C., « Turbo-codes and high spectral
efciency modulation », SUPERCOMM/ICC’94, Conference Record,’Serving Humanity
Through Communications, p. 645-649, 1994.
[LER 00] L E RUYET D., T HIEN H.V., « Design of cycle optimized interleavers for turbo
codes », Proceedings of International Symposium on Turbo Codes, p. 335-338, 2000.
[LIN 80] L INDE Y., B UZO A., G RAY R.M., « An algorithm for vector quantizer design »,
IEEE Transactions on Communications, vol. 28, n° 1, p. 84-95, 1980.
[LIN 83] L IN S., C OSTELLO D., Error control coding : fundamentals and applications,
Prentice-Hall, Englewood Cliffs, 1983.
[LLO 82] L LOYD S., « Least squares quantization in PCM », IEEE Transactions on Informa-
tion Theory, vol. 28, n° 2, p. 129-137, 1982.
[LUB 98] L UBY M., M ITZENMACHER M., S HOKROLLAHI A., S PIELMAN D., « Improved
low density parity codes using irregular graphs and belief propagation », Proc. of the 1998
Int. Symp. on Info. Theory, Boston, Etats-Unis, septembre 1998.
[MAC 99] M AC K AY D.J.C., « Good error-correcting codes based on very sparse matrices »,
IEEE Trans. Inform. Theory, vol. 45, p. 399-431, 1999.
[MAC 03] M AC K AY D.J., Information Theory, Inference, and Learning Algorithms, Cam-
bridge University Press, Cambridge, 2003.
[MAK 75] M AKHOUL J., « Linear prediction : A tutorial review », Proceedings of the IEEE,
vol. 63, n° 4, p. 561-580, 1975.
[MAN 74] M ANDELBAUM D.M., « An adaptive-feedback coding scheme using incremental
redundancy (corresp.) », IEEE Transactions on Information Theory, vol. 20, n° 3, p. 388-
389, 1974.
[MAS 69] M ASSEY J., « Shift-register synthesis and BCH decoding », IEEE Transactions on
Information Theory, vol. 15, n° 1, p. 122-127, 1969.
[MAS 78] M ASSEY J.L., « Foundations and methods of channel coding », Proc. Int. Conf. on
Information Theory and Systems, vol. 65, p. 148-157, septembre 1978.
[MCE 96] M C E LIECE R.J., « On the BCJR trellis for linear block codes », IEEE Trans. In-
form. Theory, vol. 42, n° 4, 1996.
[MCE 98] M C E LIECE R.J., M AC K AY D.J., C HENG J.F., « Turbo decoding as an instance of
Pearl’s belief propagation algorithm », IEEE Journal on Selected Areas in Communications,
vol. 16, p. 140-152, 1998.
[MOH 93] M OHER M., « Decoding via cross entropy minimization », Proc. of GLOBECOM,
Houston, Etats-Unis, novembre 1993.
[PAN 95] PAN D., « A tutorial on MPEG/audio compression », IEEE multimedia, vol. 2, n° 2,
p. 60-74, IEEE Computer Society, 1995.
[PAP 02] PAPOULIS A., P ILLAI . S., Probability, random variables and stochastic processes,
International edition, 2002.
[PAS 76] PASCO R.C., Source Coding Algorithms for Fast Data Compression, PhD thesis,
Dept. of Electrical Engineering, Stanford University, 1976.
[PIR 88] P IRET P., Convolutional codes : an algebraic approach, MIT Press, Cambridge,
1988.
[POL 94] P OLTYREV G., « Bounds on the decoding error probability of binary linear codes
via their spectra », IEEE Transactions on Information Theory, vol. 40, n° 4, p. 1284-1292,
1994.
[POL 10] P OLYANSKIY Y., P OOR H.V., V ERDÚ S., « Channel coding rate in the nite blo-
cklength regime », IEEE Transactions on Information Theory, vol. 56, n° 5, p. 2307-2359,
2010.
[PYN 94] P YNDIAH R., G LAVIEUX A., P ICART A., JACQ S., « Near optimum product
codes », Proc. of GLOBECOM 1994, San Francisco, Etats-Unis, 1994.
[RIC 01a] R ICHARDSON T., U RBANKE R., « The capacity of low density parity check codes
under message passing algorithm », IEEE Trans. Inform. Theory, vol. 47, n° 2, p. 599-617,
2001.
[RIC 01b] R ICHARDSON T.J., U RBANKE R.L., « Efcient encoding of low-density parity-
check codes », IEEE Transactions on Information Theory, vol. 47, n° 2, p. 638-656, 2001.
[RIC 08] R ICHARDSON T., U RBANKE R., Modern coding theory, Cambridge University
Press, Cambridge, 2008.
[RIS 76] R ISSANEN J.J., « Generalized Kraft inequality and arithmetic coding », IBM Journal
Research and Dev., vol. 20, n° 3, p. 198-203, 1976.
[SAB 84] S ABIN M.J., G RAY R.M., « Product code vector quantizers for speech and wave-
form coding », IEEE Transactions on Acoustics, Speech and Signal Processing, vol. 32,
p. 474-488, 1984.
[SAD 01] S ADJADPOUR H.R., S LOANE N.J., S ALEHI M., N EBE G., « Interleaver design for
turbo codes », IEEE Journal on Selected Areas in Communications, vol. 19, n° 5, p. 831-
837, 2001.
[SAL 98] S ALAMI R., L AFLAMME C., A DOUL J., K ATAOKA A., H AYASHI S., L AMBLIN
C., M ASSALOUX D., P ROUST S., K ROON P., S HOHAM Y., « Design and description of
CS-ACELP : a toll quality 8 kb/s speech coder », IEEE Transactions on Speech and Audio
Processing, vol. 6, n° 2, p. 116-130, 1998.
[SAL 07] S ALOMON D., Data compression, 4e édition, Springer, Londres, 2007.
[SCH 85] S CHROEDER M., ATAL B., « Code-excited linear prediction (CELP) : high-quality
speech at very low bit rates », Proc. IEEE International Conference on Acoustics, Speech
and Signal Processing (ICASSP), p. 937-940, juin 1985.
[SCH 06] S CHWARTZ M., VARDY A., « On the stopping distance and the stopping redundancy
of codes », IEEE Transactions on Information Theory, vol. 52, n° 3, p. 922-932, 2006.
[SEG 76] S EGALL A., « Bit allocation and encoding for vector sources », IEEE Trans. Inform.
Theory, vol. 22, n° 2, p. 162-169, 1976.
[SHA 48] S HANNON C.E., « A mathematical theory of communication », Bell Syst. Tech. J.,
vol. 27, p. 623-659, 1948.
[SHA 59a] S HANNON C.E., « Probability of error for optimal codes in a Gaussian channel »,
Bell System Technical Journal, vol. 38, n° 3, p. 611-656, Wiley Online Library, 1959.
[SHA 59b] S HANNON C.E., « Coding theorems for a discrete source with a delity criterion »,
IRE Conv. Rec., vol. 7, p. 142-163, 1959.
[SHA 67] S HANNON C.E., G ALLAGER R.G., B ERLEKAMP E.R., « Lower bounds to er-
ror probability for coding on discrete memoryless channels. I », Information and Control,
vol. 10, n° 1, p. 65-103, Elsevier, 1967.
[SUL 12] S ULLIVAN G.J., O HM J., H AN W.-J., W IEGAND T., « Overview of the high ef-
ciency video coding (HEVC) standard », IEEE Transactions on Circuits and Systems for
Video Technology, vol. 22, n° 12, p. 1649-1668, 2012.
[SUN 05] S UN J., TAKESHITA O.Y., « Interleavers for turbo codes using permutation polyno-
mials over integer rings », IEEE Transactions on Information Theory, vol. 51, n° 1, p. 101-
119, 2005.
[TAK 98] TAKESHITA O.Y., C OSTELLO D.J., « New classes of algebraic interleavers for
turbo-codes », IEEE International Symposium on Information Theory, Citeseer, p. 419-419,
1998.
[TAU 02] TAUBMAN D.S., M ARCELLIN M.W., JPEG 2000, Image Compression Fundamen-
tals, Standards and Practice, Kluwer Academic, Norwell, 2002.
[THO 03] T HORPE J., « Low-density parity-check (LDPC) codes constructed from proto-
graphs », JPN progress report, vol. 42, n° 154, p. 42-154, 2003.
[VAI 93] VAIDYANATHAN P., Multirate Systems and Filter Banks, Prentice-Hall, Englewood
Cliffs, 1993.
[VAI 08] VAIDYANATHAN P., The Theory of Linear Prediction, Morgan and Claypool Publi-
shers, San Raphael, 2008.
[VAN 00] VAN D IJK M., E GNER S., M OTWANI R., KOPPELAER A., « Simultaneous zero-
tailing of parallel convolutional codes », Proc. of IEEE Int. Symp. Infor. Theory (ISIT),
Sorrento, Italie, juin 2000.
[VIT 67] V ITERBI A.J., « Error bounds for convolutional codes and an asymptotically opti-
mum decoding algorithm », IEEE Trans. Inform. Theory, vol. 13, p. 260-269, 1967.
[VIT 97] V ITERBI A., V ITERBI A., N ICOLAS J., S INDHUSHAYANA N., « Perspectives on
interleaved concatenated codes with iterative soft-output decoding », Proceedings of Inter-
national Symposium on Turbo Codes, 1997.
[WIB 95] W IBERG N., L OELIGER H.A., KOTTER R., « Codes and iterative decoding on ge-
neral graphs », European Trans. on Telecomm., vol. 6, n° 5, p. 513-526, 1995.
[WIC 99] W ICKER S.B., B HARGAVA V.K., Reed-Solomon codes and their applications, John
Wiley & Sons, New York, 1999.
[WOL 78] W OLF J.K., « Efcient maximum likelihood decoding of linear block codes », IEEE
Trans. Inform. Theory, vol. 24, p. 76-80, 1978.
[XIA 04] X IAO H., BANIHASHEMI A.H., « Improved progressive-edge-growth(PEG)
construction of irregular LDPC codes », IEEE Communications Letters, vol. 8, n° 12,
p. 715-717, 2004.
[YAS 84] YASUDA Y., K ASHIKI K., H IRATA H., « High rate punctured convolutionnal codes
for soft-decision Viterbi decoding », IEEE trans. on Communications, vol. 32, p. 315-319,
1984.
[ZAM 96] Z AMIR R., F EDER M., « On lattice quantization noise », IEEE Trans. Inform.
Theory, vol. 42, p. 1152-1159, 1996.
[ZIV 78] Z IV J., L EMPEL A., « Compression of individual sequences via variable rate co-
ding », Proc. IEEE Trans. on Info. theory, vol. 24, n° 5, p. 530-536, 1978.
[ZWI 61] Z WICKER E., « Subdivision of the audible frequency range into critical bands (Fre-
quenzgruppen) », The Journal of the Acoustical Society of America, vol. 33, n° 2, p. 248-
248, Acoustical Society of America, 1961.
A de correction, 139
algorithme de détection, 139
Aller-Retour, 263, 278 codage
Berlekamp-Massey, 208 arithmétique, 74
Huffman, 70 audio MPEG, 119
Levinson-Durbin, 99 CELP, 115
Lloyd, 93 par mot de longueur variable, 38
LZ78, 76 par plage, 70
LZW, 78 par sous-bande, 109
Minimum-Somme, 258 par transformée, 105
Somme-Produit, 256, 258, 278, 305 parole, 111
Viterbi, 165, 242 code(s)
BCH, 203
B concaténés, 249, 298
convolutif, 227
borne
Elias-Bassalygo, 142 cyclique, 185
empilement de sphères, 146 en blocs linéaire, 132
Gilbert-Varshamov, 142, 284 Golay, 149
Hamming, 140 Hamming, 134, 148
Plotkin, 142 LDPC, 281, 286, 288
réunion, 176 parfait, 140
PCBC, 322
produit, 325
C
QC-LDPC, 285
canal Reed Solomon, 213
à bruit blanc additif gaussien, 52, 292 Reed-Muller, 150
à effacement, 169, 288 répétition, 133
binaire à effacement, 50 Tunstall, 80
binaire symétrique, 46, 291 turbo, 298
discret sans mémoire, 49
codeur
capacité non récursif, 229
d’un canal, 53, 56, 58 récursif, 231
Avant-propos
Introduction
Chapitre 1. Rappels
1.1. Introduction
1.2. Les opérations et fonctions usuelles
1.2.1. Produit de convolution
1.2.2. Produit scalaire
1.2.3. Fonction de Dirac, impulsion de Dirac et symbole de Kronecker
1.2.4. Fonction échelon
1.2.5. Fonction porte
1.3. Les transformées usuelles
1.3.1. La transformée de Fourier
1.3.2. La transformée en z
1.4. Rappels de probabilités
1.4.1. Variables aléatoires discrètes
1.4.2. Variables aléatoires continues
1.4.3. Inégalité de Jensen
1.4.4. Signaux aléatoires
1.5. Rappels de traitement numérique du signal
1.5.1. Echantillonnage : théorème
1.5.2. Systèmes discrets, linéaires et invariants dans le temps
1.5.3. Filtres à réponse impulsionnelle finie
1.5.4. Filtres à réponse impulsionnelle infinie
1
351
1
Glossaire
Notations
Bibliographie
Index