Vous êtes sur la page 1sur 357

Le Ruyet.

qxp_Layout 1 29/07/2015 09:00 Page 1

COLLECTION RÉSEAUX ET TÉLÉCOMMUNICATIONS

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.

Bases de communications numériques 1 traite du codage de


source et du codage de canal. Pédagogique et didactique, il
numériques 1
rappelle les principales notions fondamentales de
communications numériques et développe également certaines
codage de source et codage de canal

Bases de communications numériques 1


techniques plus avancées actuellement encore au stade de
recherche.

Après avoir présenté la théorie de l’information, il décrit les


techniques de codage de source sans et avec perte et analyse les
codes correcteurs d’erreurs en blocs convolutifs ou concaténés
utilisées dans les systèmes récents. Didier Le Ruyet et Mylène Pischella

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

Licence limitée accordée à doc-ist-Onera


First published 2015 in Great Britain by ISTE Editions Ltd.

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:

ISTE Editions Ltd


27-37 St George’s Road
London SW19 4EU
UK

© ISTE Editions Ltd 2015


The rights of the authors of this work have been asserted by them in accordance with the
Copyright, Designs and Patents Act 1988.

British Library Cataloguing-in-Publication Data


A CIP record for this book is available from the British Library
ISBN: 978-1-78405-093-1 (print)
ISBN: 978-1-78406-093-0 (e-book)

Printed and bound in Great Britain by CPI Group (UK) Ltd., Croydon, Surrey CR0 4YY, September 2015

Licence limitée accordée à doc-ist-Onera


Bases de communications
numériques 1
codage de source et codage de canal

Didier Le Ruyet
Mylène Pischella

editions

Licence limitée accordée à doc-ist-Onera


Ouvrage publié sous la direction de
Pierre-Noël Favennec

Licence limitée accordée à doc-ist-Onera


Table des matières

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

Licence limitée accordée à doc-ist-Onera


6 Bases de communications numériques 1

1.6.3. Canal binaire à effacement . . . . . . . . . . . . . . . . . . . . . . 51


1.6.4. Canal à bruit blanc additif gaussien . . . . . . . . . . . . . . . . . 52
1.7. Capacité d’’un canal de transmission . . . . . . . . . . . . . . . . . . . . 53
1.7.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
1.7.2. Capacité d’’un canal de transmission . . . . . . . . . . . . . . . . . 53
1.7.3. Théorème fondamental du codage de canal . . . . . . . . . . . . . 55
1.7.4. Capacité d’’un canal binaire symétrique . . . . . . . . . . . . . . . 56
1.7.5. Capacité d’’un canal binaire à effacement . . . . . . . . . . . . . . 58
1.7.6. Capacité d’’un canal à bruit blanc additif gaussien . . . . . . . . . 58
1.7.7. Représentation géométrique . . . . . . . . . . . . . . . . . . . . . . 61
1.8. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
1.8.1. Exercice 1 : calcul d’’entropies pour canal à entrées
et sorties discrètes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
1.8.2. Exercice 2 : calcul d’’information mutuelle . . . . . . . . . . . . . 67
1.8.3. Exercice 3 : capacité d’’un canal à bruit blanc additif gaussien . . 67
1.8.4. Exercice 4 : canal binaire symétrique . . . . . . . . . . . . . . . . 67
1.8.5. Exercice 5 : canal Z . . . . . . . . . . . . . . . . . . . . . . . . . . 67
1.8.6. Exercice 6 : canal à entrées et sorties discrètes . . . . . . . . . . . 68

Chapitre 2. Codage de source . . . . . . . . . . . . . . . . . . . . . . . . . 69


2.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
2.2. Algorithmes pour le codage de source sans perte . . . . . . . . . . . . . 69
2.2.1. Codage par plage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
2.2.2. Algorithme de Huffman . . . . . . . . . . . . . . . . . . . . . . . . 70
2.2.3. Evaluation de l’’entropie d’’un texte écrit . . . . . . . . . . . . . . . 72
2.2.4. Codage arithmétique . . . . . . . . . . . . . . . . . . . . . . . . . . 74
2.2.5. Algorithme LZ78 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
2.2.6. Algorithme de Lempel-Ziv-Welch (LZW) . . . . . . . . . . . . . . 78
2.3. Echantillonnage et quantication . . . . . . . . . . . . . . . . . . . . . . 80
2.3.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
2.3.2. Rappel sur le théorème de l’’échantillonnage . . . . . . . . . . . . 80
2.3.3. Quantication scalaire . . . . . . . . . . . . . . . . . . . . . . . . . 80
2.3.4. Quantication scalaire optimale . . . . . . . . . . . . . . . . . . . 88
2.3.5. Quantication vectorielle . . . . . . . . . . . . . . . . . . . . . . . 92
2.3.6. Quantication vectorielle optimale . . . . . . . . . . . . . . . . . . 96
2.4. Techniques de codage pour les sources analogiques à mémoire . . . . . 97
2.4.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
2.4.2. Prédiction linéaire . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
2.4.3. Quantication scalaire prédictive . . . . . . . . . . . . . . . . . . 100
2.4.4. Codage par transformée . . . . . . . . . . . . . . . . . . . . . . . . 105
2.4.5. Codage par sous-bande . . . . . . . . . . . . . . . . . . . . . . . . 108
2.5. Application à la compression des images et du son . . . . . . . . . . . 109
2.5.1. Application à la compression d’’image xe . . . . . . . . . . . . . 109

Licence limitée accordée à doc-ist-Onera


Table des matières 7

2.5.2. Application au codage de la parole . . . . . . . . . . . . . . . . . . 111


2.5.3. Application à la compression audio . . . . . . . . . . . . . . . . . 117
2.6. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
2.6.1. Exercice 1 : entropie et codage d’’Huffman . . . . . . . . . . . . . 123
2.6.2. Exercice 2 : entropie et codage d’’Huffman d’’une source
corrélée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
2.6.3. Exercice 3 : codage LZ78 . . . . . . . . . . . . . . . . . . . . . . . 124
2.6.4. Exercice 4 : quantication scalaire et codage d’’Huffman . . . . . 124
2.6.5. Exercice 5 : quantication scalaire et distorsion . . . . . . . . . . 125
2.6.6. Exercice 6 : codage DPCM . . . . . . . . . . . . . . . . . . . . . . 125

Chapitre 3. Codes correcteurs d’erreurs en blocs . . . . . . . . . . . . 127


3.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
3.2. Les corps nis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
3.2.1. Rappel sur les corps . . . . . . . . . . . . . . . . . . . . . . . . . . 128
3.2.2. Les corps nis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
3.2.3. Polynômes irréductibles et primitifs . . . . . . . . . . . . . . . . . 129
3.2.4. Corps nis à 2 m éléments . . . . . . . . . . . . . . . . . . . . . . . 130
3.3. Codes en blocs linéaires . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
3.3.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
3.3.2. Distance minimale d’’un code . . . . . . . . . . . . . . . . . . . . . 135
3.3.3. Matrice de contrôle . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
3.3.4. Fonctions d’’énumération de poids . . . . . . . . . . . . . . . . . . 137
3.3.5. Capacité de correction et de détections d’’erreurs
d’’un code linéaire en blocs . . . . . . . . . . . . . . . . . . . . . . . . . . 139
3.3.6. Bornes sur la distance minimale des codes linéaires en blocs . . . 141
3.3.7. Bornes sur le taux en régime non asymptotique . . . . . . . . . . . 144
3.3.8. Principaux codes en blocs . . . . . . . . . . . . . . . . . . . . . . . 147
3.3.9. Représentations graphiques des codes en blocs
linéaires binaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
3.4. Décodage des codes en blocs linéaires binaires . . . . . . . . . . . . . . 157
3.4.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
3.4.2. Décodage optimal . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
3.4.3. Décodage à entrées dures des codes en blocs
linéaires binaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
3.4.4. Décodage à entrées pondérées des codes en blocs
linéaires binaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
3.4.5. Décodage des codes en blocs linéaires binaires sur le canal
à effacement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
3.5. Performances des codes linéaires en blocs . . . . . . . . . . . . . . . . 175
3.5.1. Performances des codes linéaires en blocs avec décodage
à entrées dures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
3.5.2. Bornes par réunion . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

Licence limitée accordée à doc-ist-Onera


8 Bases de communications numériques 1

3.5.3. Performances des codes linéaires en blocs avec décodage


à entrées souples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
3.5.4. Gain de codage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
3.5.5. Comparaison des performances des décodeurs à entrées dures
et pondérées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
3.6. Codes cycliques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
3.6.1. Dénition et propriétés . . . . . . . . . . . . . . . . . . . . . . . . 184
3.6.2. Propriétés des codes cycliques . . . . . . . . . . . . . . . . . . . . 187
3.6.3. Détection d’’erreurs par CRC et requête automatique
de répétition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
3.6.4. Codage des codes cycliques . . . . . . . . . . . . . . . . . . . . . . 194
3.6.5. Décodage des codes cycliques . . . . . . . . . . . . . . . . . . . . 200
3.6.6. Les codes BCH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
3.6.7. Les codes Reed Solomon . . . . . . . . . . . . . . . . . . . . . . . 213
3.7. Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
3.8. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
3.8.1. Exercice 1 : code de répétition . . . . . . . . . . . . . . . . . . . . 216
3.8.2. Exercice 2 : probabilité d’’erreur sur canal binaire
symétrique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
3.8.3. Exercice 3 : stratégie de réémission . . . . . . . . . . . . . . . . . 217
3.8.4. Exercice 4 : code simplexe (7,3) . . . . . . . . . . . . . . . . . . . 217
3.8.5. Exercice 5 : code linéaire en blocs (6,3) . . . . . . . . . . . . . . . 218
3.8.6. Exercice 6 : code de Hamming (7,4) . . . . . . . . . . . . . . . . . 218
3.8.7. Exercice 7 : code de Reed-Muller (8,4) . . . . . . . . . . . . . . . 219
3.8.8. Exercice 8 : décodage à entrées dures d’’un code en blocs
sur le treillis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
3.8.9. Exercice 9 : décodage à entrées pondérées d’’un code
en blocs sur le treillis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
3.8.10. Exercice 10 : décodage à entrées pondérées . . . . . . . . . . . . 221
3.8.11. Exercice 11 : comparaison du décodage à entrées dures
et pondérées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
3.8.12. Exercice 12 : code de Hamming . . . . . . . . . . . . . . . . . . . 222
3.8.13. Exercice 13 : code cyclique . . . . . . . . . . . . . . . . . . . . . 223
3.8.14. Exercice 14 : code de Hamming . . . . . . . . . . . . . . . . . . . 224
3.8.15. Exercice 15 : performance des codes de Reed Solomon . . . . . 224
3.8.16. Exercice 16 : CRC . . . . . . . . . . . . . . . . . . . . . . . . . . 225
3.8.17. Exercice 17 : code de Reed Solomon . . . . . . . . . . . . . . . 225

Chapitre 4. Codes convolutifs . . . . . . . . . . . . . . . . . . . . . . . . . 227


4.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
4.2. Représentations mathématiques et structures matérielles . . . . . . . . . 227
4.2.1. Dénitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
4.2.2. Représentation matricielle des codes convolutifs . . . . . . . . . . 233

Licence limitée accordée à doc-ist-Onera


Table des matières 9

4.3. Représentations graphiques des codes convolutifs . . . . . . . . . . . . 236


4.3.1. Diagramme de transitions d’’état . . . . . . . . . . . . . . . . . . . 236
4.3.2. Diagramme en treillis . . . . . . . . . . . . . . . . . . . . . . . . . 237
4.3.3. Graphes TWL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
4.4. Distance libre et fonction de transfert des codes convolutifs . . . . . . . 239
4.5. Algorithme de Viterbi pour le décodage des codes convolutifs . . . . . 242
4.5.1. Complexité du décodeur de Viterbi . . . . . . . . . . . . . . . . . . 245
4.6. Poinçonnage des codes convolutifs . . . . . . . . . . . . . . . . . . . . . 245
4.7. Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
4.8. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
4.8.1. Exercice 1 : code convolutif récursif systèmatique . . . . . . . . . 247
4.8.2. Exercice 2 : code non récursif et décodage de Viterbi . . . . . . . 247

Chapitre 5. Codes concaténés et décodage itératif . . . . . . . . . . . 249


5.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
5.2. Décodage à entrées et sorties pondérées . . . . . . . . . . . . . . . . . . 250
5.2.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
5.2.2. Algorithme Somme-Produit . . . . . . . . . . . . . . . . . . . . . . 256
5.2.3. Algorithme Aller-Retour . . . . . . . . . . . . . . . . . . . . . . . 264
5.3. Codes LDPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
5.3.1. Dénition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
5.3.2. Encodage des codes LDPC . . . . . . . . . . . . . . . . . . . . . . 286
5.3.3. Décodage itératif des codes LDPC . . . . . . . . . . . . . . . . . . 288
5.3.4. Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
5.4. Codes convolutifs concaténés en parallèle ou turbo codes . . . . . . . . 298
5.4.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
5.4.2. Structure du codeur . . . . . . . . . . . . . . . . . . . . . . . . . . 299
5.4.3. Etude des performances des turbo codes . . . . . . . . . . . . . . 302
5.4.4. Décodeur itératif des turbo codes . . . . . . . . . . . . . . . . . . . 305
5.4.5. Courbes EXIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
5.4.6. Critères et méthodes de construction des entrelaceurs . . . . . . . 314
5.4.7. Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
5.5. Autres classes de codes concaténés . . . . . . . . . . . . . . . . . . . . 322
5.5.1. Codes PCBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
5.5.2. Codes convolutifs concaténés en série . . . . . . . . . . . . . . . . 324
5.5.3. Codes répétition-accumulation . . . . . . . . . . . . . . . . . . . . 325
5.5.4. Codes produits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
5.6. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
5.6.1. Exercice 1 : décodage à entrées et sorties pondérées d’’un code
convolutif à deux états . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
5.6.2. Exercice 2 : décodage à entrées et sorties pondérées d’’un code
en blocs (4,3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328

Licence limitée accordée à doc-ist-Onera


10 Bases de communications numériques 1

Annexe A. Démonstration de la capacité d’un canal BBAG . . . . . . 329

Annexe B. Calcul de la fonction IRWEF d’un code RSC . . . . . . . . 331

Glossaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333

Notations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337

Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
Sommaire du volume 22
2 .2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351

Licence limitée accordée à doc-ist-Onera


Avant-propos

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

Licence limitée accordée à doc-ist-Onera


12 Bases de communications numériques 1

(CNAM) concernant les communications numériques, la théorie de l’’information et


les radiocommunications.

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.

Bases de communications numériques s’’adresse aux étudiants des grandes écoles


et des universités en électronique, télécommunications, traitement du signal, etc., ainsi
qu’’aux ingénieurs ou cadres travaillant dans ces mêmes domaines et souhaitant mettre
à jour ou compléter leurs connaissances.

Les auteurs souhaitent remercier leurs collègues du CNAM et plus particulière-


ment du département EASY.

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.

Licence limitée accordée à doc-ist-Onera


Introduction

L’’objectif fondamental d’’un système de communication est de reproduire en un


point de la chaîne de communication, soit exactement soit approximativement, un
message sélectionné en un autre point. Il a été théorisé en 1948 par Claude Shannon
[SHA 48].

La chaîne de communication est constituée d’’une source (aussi appelée émetteur)


et d’’un destinataire (aussi appelé récepteur). Ils sont séparés par un canal de transmis-
sion, qui peut être, par exemple, une portion de câble pour une transmission en ADSL,
une bre optique, un canal radiomobile entre une station de base et un terminal mobile
ou entre un satellite et un récepteur satellitaire, un disque dur, etc. Le dernier exemple
montre que le mot point dans la phrase d’’introduction peut signier lieu ou temps.

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 an de réduire au maximum l’’inuence 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.

La qualité d’’un système de transmission est évaluée en calculant ou en mesurant


le taux d’’erreur binaire d’’information au récepteur. Les autres paramètres importants
d’’un système de communication sont sa complexité, son occupation spectrale, sa puis-
sance consommée et émise, et le débit utile qu’’il permet de transmettre. La bande
passante de nombreux systèmes de communications est limitée ; il importe alors de
maximiser l’’efcacité spectrale, c’’est-à-dire le rapport entre le débit binaire et la bande
passante utilisée. Néanmoins, ceci doit se faire sans augmenter le taux d’’erreur binaire.

Licence limitée accordée à doc-ist-Onera


14 Bases de communications numériques 1

E XEMPLE.–– Le système de communication très simple suivant consiste à transmettre


une image à un destinataire à travers un canal binaire symétrique. Le canal binaire
symétrique est décrit par le modèle de la gure I.1. Il est déni par sa probabilité de
transition p = P (Y = 0|X = 1) = P (Y = 1|X = 0).

0 1−p 0
p
X Y
p
1 1
1−p

Figure I.1. Canal binaire symétrique

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

Figure I.2. Image en entrée et en sortie du canal binaire symétrique

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.

Le second ouvrage Bases de communications numériques : codage de source et


codage de canal traite des modulations numériques en bande de base et en bande
transposée ainsi que des étapes nécessaires au récepteur pour effectuer la détection, à

Licence limitée accordée à doc-ist-Onera


Introduction 15

savoir la synchronisation et l’’estimation de canal. Les modulations multiporteuses et


les modulations codée, sont nalement détaillées. Ce 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’’erreurs en blocs, convolutifs et concaténés
sont traités d’’un point de vue théorique et de leurs applications.

Le chapitre 1 présente les bases de la théorie de l’’information telle qu’’elle a été


fondée par Shannon. Les notions d’’entropie et d’’information mutuelle moyenne y
sont détaillées. Le théorème du codage de source indique que la longueur minimale
des mots après codage de source sans perte est égale à l’’entropie de la source. Le
théorème du codage de source avec perte est aussi introduit. La capacité du canal est
dénie comme le maximum de l’’information mutuelle entre la source et la destination.
Le théorème fondamental du codage de canal quantie le débit maximal atteignable
avec un taux d’’erreur aussi faible que souhaité, en utilisant un codage de canal. Enn,
la capacité des canaux de transmission les plus utiles (comme le canal discret sans
mémoire et canal à bruit blanc additif gaussien) est évaluée.

Figure I.3. Synoptique d’une chaîne de communication

L’’objectif du codeur de source est de représenter le message avec le moins de bits


possibles. Pour ce faire, il cherche à éliminer toute la redondance contenue dans le
message de la source. Le codage de source peut être sans perte ou avec perte. Le
chapitre 2 détaille les techniques de codage de source numériques sans perte (algo-
rithme de Huffman, codage arithmétique, algorithmes LZ78 et LZW) et avec perte
(norme JPEG). Il s’’intéresse aussi au codage des sources analogiques : il est pour cela
nécessaire de dénir les différentes méthodes de quantication. Les applications aux
méthodes de codage de la parole et de compression audio sont détaillées.

Licence limitée accordée à doc-ist-Onera


16 Bases de communications numériques 1

Le rôle du codage de canal est de protéger le message des perturbations du canal de


transmission en ajoutant de la redondance au message compressé. Les codes de canal,
aussi appelés codes correcteurs d’’erreurs, sont caractérisés par leur redondance et leur
capacité de correction. Trois types de codes correcteurs d’’erreurs existent : les codes
en blocs, les codes convolutifs ainsi que les codes concaténés (turbo codes et codes
LDPC). Ils font l’’objet des chapitres 3, 4 et 5, respectivement. Pour chaque type de
code, les techniques efcaces de détection et de décodage des erreurs sont détaillées.
Les codes linéaires en blocs (étudiés dans le chapitre 3) séparent le message à trans-
mettre en blocs de K bits qui sont ensuite codés sur N bits selon un ensemble de mots
de codes nis. Leur linéarité permet d’’utiliser des techniques de décodage simples.
Parmi les codes en blocs, on distingue la sous-famille des codes cycliques qui sont uti-
lisés dans de très nombreux systèmes en pratique. Contrairement aux codes en blocs,
les codes convolutifs (chapitre 4) associent des messages binaires de longueur innie
à des mots de codes de longueur innie. Ils sont décodés avec le célèbre algorithme
de Viterbi. Les codes concaténés offrent les meilleures performances grâce à un dé-
codage itératif utilisant des décodeurs à entrées et sorties pondérées. Ces techniques
modernes de codage, devenues incontournables dans les systèmes depuis 1993 et la
découverte des turbo codes [BER 93], sont détaillées dans le chapitre 5.

La plupart des chapitres détaillent les notions fondamentales des communications


numériques et sont donc nécessaires à la bonne compréhension de la chaîne de com-
munication. Ils présentent différents degrés de lecture en permettant une introduction
à ces techniques, tout en fournissant des éléments plus détaillés. Ils sont, de plus, illus-
trés par des exemples de mise en application dans les systèmes actuels. Des exercices
sont proposés à la n de chaque chapitre pour permettre au lecteur de s’’approprier les
notions présentées. Notons néanmoins que le chapitre 5 propose des ouvertures vers
les techniques avancées de codage. Il peut être lu en complément an de renforcer les
connaissances.

Licence limitée accordée à doc-ist-Onera


1

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.

Dans ce chapitre, après avoir rappelé quelques notions de probabilités discrètes et


continues dans la section 1.2, nous commencerons par introduire les notions fonda-
mentales de la théorie de l’’information comme l’’entropie et l’’information mutuelle
moyenne dans la section 1.3. Ensuite, nous présenterons les théorèmes fondamentaux
de la théorie de l’’information pour les systèmes de communication. Nous énoncerons
les théorèmes pour le codage de source sans et avec perte respectivement dans les
sections 1.4 et 1.5. Puis nous déterminerons les limites de communication sans erreur
dans un canal bruité. Dans la section 1.6, nous introduirons différents modèles de ca-
naux de transmission puis, nous nous intéresserons nalement dans la section 1.7 à la
capacité de ces différents canaux de transmission et au théorème du codage de canal.

1.2. Rappels de probabilités

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

Licence limitée accordée à doc-ist-Onera


18 Bases de communications numériques 1

français [CAN 13] ou de Papoulis et Pillai [PAP 02] et R. Durrett [DUR 10] pour un
développement plus complet.

Considérons une observation ou expérience X qui peut être répétée un grand


nombre de fois dans des circonstances similaires. A chaque répétition, nous appellons
le résultat de cette observation l’’évènement x qui peut prendre plusieurs réalisations
possibles. L’’espace de réalisation de cet évènement est noté A X .

Le résultat X = x de cette observation n’’est pas connu exactement avant sa réa-


lisation. Nous disons alors que X est une variable aléatoire. Nous modélisons cette
variable aléatoire par la fréquence d’’apparition de ses réalisations.

Nous distinguerons deux classes de variables aléatoires :


–– les variables aléatoires discrètes lorsque l’’espace des réalisations est un ensemble
discret ;
–– les variables aléatoires continues lorsque leurs fonctions de répartition sont
continues.

1.2.1. Variables aléatoires discrètes

Une variable aléatoire discrète X prend ses valeurs dans un ensemble discret ap-
pelé alphabet AX . Cet alphabet peut être inni (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

où δ(u) est la fonction de Dirac.

Licence limitée accordée à doc-ist-Onera


Introduction à la théorie de l’information 19

1.2.1.1. Probabilité conjointe


Soit deux variables aléatoires discrètes X et Y ayant pour espace de réalisation
respectif AX = {x1 , x2 , . . . , xn } et AY = {y1 , y2 , . . . , ym }.

On appelle P r(X = xi , Y = yj ) la probabilité conjointe des évènements X = x i


et Y = yj . La propriété suivante est bien sûr vériée :

! !
P r(X = xi , Y = yj ) = 1 [1.3]
xi ∈Ax yj ∈Ay

1.2.1.2. Probabilité marginale


Il est possible d’’obtenir la probabilité P r(X = x i ) à partir de la probabilité
conjointe P r(X = xi , Y = yj ) :

!
P r(X = xi ) = P r(X = xi , Y = yj ) [1.4]
yj ∈Ay

1.2.1.3. Probabilité conditionnelle


P r(X = xi , Y = yj )
P r(X = xi |Y = yj ) = [1.5]
P r(Y = yj )

De la même manière, nous avons :

P r(X = xi , Y = yj )
P r(Y = yj |X = xi ) = [1.6]
P r(X = xi )

En conséquence, la relation suivante est vériée :

P r(Y = yj , X = xi ) = P r(X = xi |Y = yj )P r(Y = yj )


= P r(Y = yj |X = xi )P r(X = xi ) [1.7]

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 )

Licence limitée accordée à doc-ist-Onera


20 Bases de communications numériques 1

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 :

P r(X, Y ) = P r(X)P (Y ) [1.8]

et :

P r(X|Y ) = P r(X) [1.9]

1.2.2. Variables aléatoires continues

La variable aléatoire X est continue si sa fonction de répartition F X (x) est conti-


nue. FX (x) est liée à la densité de probabilité de la façon suivante :

# x
dFX (x)
fX (x) = ⇔ FX (x) = fX (u)du [1.10]
dx −∞

La moyenne de la variable aléatoire X est dénie de la façon suivante :

# ∞
$ %
mX = E X = xfX (x)dx [1.11]
−∞

Le moment d’’ordre N est égal à :

# ∞
$ %
E XN = xN fX (x)dx [1.12]
−∞

1.2.3. Inégalité de Jensen

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 :

λf (x) + (1 − λ)f (y) ≥ f (λx + (1 − λ)y) [1.13]

Licence limitée accordée à doc-ist-Onera


Introduction à la théorie de l’information 21

Soient f une fonction convexe, (x 1 , . . . , xn ) un n-uplet de réels appartenant à


l’’intervalle
" de dénition de f et (p 1 , . . . , pn ) un n-uplet de réels positifs tels que tel
que ni=1 pi = 1, alors :

& 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 :

f (E[X]) ≤ E [f (X)] [1.15]

1.2.4. Signaux aléatoires

Les signaux utilisés en communications numériques sont des variables du temps t.

Un signal x(t) est déterministe si la fonction t %→ x(t) est parfaitement connue.


Si, au contraire, les valeurs prises par x(t) ne sont pas déterminées, le signal suit
un processus aléatoire. On note X(t) la variable aléatoire et x(t) la réalisation de
cette variable à l’’instant t. L’’ensemble des valeurs du signal x(t), pour tout t dans le
domaine de dénition, est une réalisation particulière du processus aléatoire X.

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 :

FX+∆X (x) − FX (x)


fX (x) = lim∆X→0 [1.17]
∆X

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]

Licence limitée accordée à doc-ist-Onera


22 Bases de communications numériques 1

La fonction d’’autocorrélation R xx (τ ) de x(t) est :

$ %
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.

Elle est alors notée simplement :

$ %
Rxx (τ ) = E x(t)x∗ (t − τ ) [1.20]

Dans ce cas, la densité spectrale de puissance γ xx (f ) s’’obtient en appliquant la


transformée de Fourier sur la fonction d’’autocorrélation :

γxx (f ) = T F [Rxx ] (f )
# +∞
= Rxx (τ )e−j2πf τ dτ [1.21]
−∞

Réciproquement, la fonction d’’autocorrélation R xx (τ ) se détermine à partir de la


densité spectrale de puissance comme suit :

Rxx (τ ) = T F −1 [γxx ] (τ )
# +∞
= γxx (f )e+j2πf τ df [1.22]
−∞

De façon générale, la moyenne et la fonction d’’autocorrélation d’’un signal station-


naire sont estimées à partir d’’un ensemble de réalisations du signal X(t). Lorsque la
moyenne temporelle tend vers cette moyenne, on dit que le signal aléatoire est ergo-
dique. Une seule réalisation du processus aléatoire X suft pour estimer la moyenne et
la fonction d’’autocorrélation. Les signaux aléatoires que nous sommes amenés à ren-
contrer dans les communications numériques sont en général stationnaires au second
ordre et ergodiques.

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

Licence limitée accordée à doc-ist-Onera


Introduction à la théorie de l’information 23

Rxx (τ ) n’’est dénie qu’’aux instants discrets τ = nT e et la densité spectrale de puis-


sance devient :

γxx (f ) = T F [Rxx ] (f )
+∞
!
= Rxx (nTe )e−j2πf nTe [1.23]
n=−∞

1.3. Entropie et information mutuelle

1.3.1. Remarque sur la notion d’information

La notion quantitative d’’information associée à un message échangé entre un émet-


teur et un destinataire dans le language usuel est liée par exemple à la véracité du
message, la connaissance a priori du message par le destinataire ou la compréhension
du destinataire (où peut se poser un problème de langue, etc.).

Toutes ces considérations relèvent de la sémantique et ne sont pas prises en compte


dans la théorie de l’’information. Dans la théorie de l’’information, nous ne retiendrons
qu’’une partie du concept général d’’information : la mesure quantitative d’’information
est une mesure de l’’incertitude associée à un évènement. Cette notion de quantité
d’’information est fondamentale dans l’’étude des systèmes de communication.

1.3.2. Une mesure logarithmique de l’information

Une mesure de l’’information associée à l’’évènement X = x i notée h(xi ) doit


satisfaire les propriétés suivantes [SHA 48] :
–– h(xi ) doit être continue pour p(X = x i ) compris entre 0 et 1 ;
–– h(xi ) = ∞ si P r(X = xi ) = 0 ;
–– h(xi ) = 0 si P r(X = xi ) = 1 : un évènement certain n’’apporte pas d’’informa-
tion ;
–– h(xi ) > h(yj ) si P r(Y = yj ) > P r(X = xi ) : plus un évènement est incertain,
plus il apporte d’’information ;
–– h(xi ) + h(yj ) = h(xi , yj ) si les évènemements Y = yj et X = xi sont in-
dépendants : la réalisation de deux évènements indépendants apporte une quantité
d’’information égale à la somme des quantités d’’information de ces deux évènements
h(xi ) et h(yj ).

Pour satisfaire ces propriétés, la quantité d’’information h(x i ) associée à la réalisa-


tion de l’’évènement X = x i doit être égale au logarithme de l’’inverse de la probabilité

Licence limitée accordée à doc-ist-Onera


24 Bases de communications numériques 1

P r(X = xi ). Avec cette dénition, un évènement très probable transportera moins


d’’information qu’’un évènement peu probable. Lorsque le logarithme base 2 est uti-
lisé1, l’’unité de h(xi ) est le Shannon (Sh). Lorsque le logarithme népérien est utilisé,
l’’unité est le Nat (natural unit). Dans ce livre, nous utiliserons la base 2. Nous aurons
donc la relation suivante :

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

Si cette source génère une séquence de n bits indépendants, il y a 2 n séquences


différentes. Chacune de ces séquences se produit avec la probabilité 21n . La quantité
d’’information apportée par la réalisation d’’une séquence particulière est égale à :

1
h(séquence de n bits) = − log 2 = n Sh [1.26]
2n

Considérons maintenant la réalisation de deux évènements X = x i et Y = xj . La


quantité d’’information associée est :

1
h(xi , yj ) = log2 = − log2 P r(X = xi , Y = yj ) [1.27]
P r(X = xi , Y = yj )

où P r(X = xi , Y = yj ) est la probabilité conjointe des deux évènements.

La quantité d’’information associée à la réalisation de l’’événément X = x i condi-


tionnellement à l’’évènement Y = y j est la suivante :

1
h(xi |yj ) = log2 = − log2 P r(X = xi |Y = yj ) [1.28]
P r(X = xi |Y = yj )

A partir de la relation [1.7], nous en déduisons :

h(xi , yj ) = h(xi |yj ) + h(yj ) = h(yj |xi ) + h(xi ) [1.29]

1. log2 x = lnx/ln2.

Licence limitée accordée à doc-ist-Onera


Introduction à la théorie de l’information 25

ou encore :

h(xi , yj ) = h(xi |yj ) + h(yj ) = h(yj |xi ) + h(xi ) [1.30]

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

1.3.3. Information mutuelle

Nous dénissons l’’information mutuelle comme la quantité d’’information que la


réalisation de l’’évènement Y = y j apporte sur l’’évènement X = x i . Plus exacte-
ment, c’’est la différence entre la quantité d’’information associée à la réalisation de
l’’évènement X = xi et la quantité d’’information associée à la réalisation de l’’évène-
ment X = xi conditionnellement à l’’évènement Y = y j . Cette quantité d’’information
s’’obtient comme suit :

i(xi ; yj ) = h(xi ) − h(xi |yj )


P r(X = xi |Y = yj )
= log2 [1.35]
P r(X = xi )

Si les deux évènements sont indépendants, alors P r(X = x i |Y = yj ) = P r(X =


xi ) et donc i(xi ; yj ) = 0. A l’’opposé, si l’’événement X = x i est équivalent à l’’évè-
nement Y = yj , alors P r(X = xi |Y = yj ) = 1 et i(xi ; yj ) = h(xi ).

Licence limitée accordée à doc-ist-Onera


26 Bases de communications numériques 1

Comme nous avons la relation :

P r(X = xi |Y = yj ) P r(X = xi , Y = yj ) P r(Y = yj |X = xi )


= = [1.36]
P r(X = xi ) P r(X = xi )P r(Y = yj ) P r(Y = yj )

La quantité d’’information que la réalisation de l’’évènement Y = y j apporte sur


l’’évènement X = xi est identique à la quantité d’’information que la réalisation de
l’’évènement X = xi apporte sur l’’évènement Y = y j :

i(xi ; yj ) = i(yj ; xi ) [1.37]

Nous avons également les relations suivantes :

i(xi ; yj ) = h(xi ) − h(xi |yj )


= h(xi ) + h(yj ) − h(xi , yj )
= h(yj ) − h(yj |xi )

Contrairement à h(xi ), l’’information mutuelle i(x i ; yj ) peut être négative.

E XEMPLE.–– (Suite) Calculons i(x; y) :

i(x; y) = h(x) − h(x|y)


= 5 Sh − 3 Sh = 2 Sh [1.38]

La quantité d’’information que la réalisation de l’’évènement « la carte tirée est un


trèe » apporte sur l’’évènement « la carte tirée est un as de trèe » est égale à 2 Sh.

Nous verrons dans le section 1.7 que l’’information mutuelle est importante pour
les communications en particulier lorsque l’’on identie X à l’’entrée d’’un canal de
transmission et Y au signal correspondant à la sortie du canal de transmission.

1.3.4. Entropie et information mutuelle moyenne

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

Licence limitée accordée à doc-ist-Onera


Introduction à la théorie de l’information 27

entropie de la source est la moyenne des informations relatives à chaque réalisation de


l’’évènement X = xi :
n
!
H(X) = pi h(xi )
i=1
n
! 1
= pi log2
i=1
pi
n
!
=− pi log2 pi en Sh/symbole [1.39]
i=1

H(X) mesure l’’incertitude sur X.

L’’entropie H(X) a les propriétés suivantes :

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.

E XEMPLE.–– Soit une source à deux états x 0 et x1 avec p0 = p et p1 = 1−p. L’’entropie


de cette source est la suivante :

H(X) = −p log2 p − (1 − p) log2 (1 − p)


≡ H2 (p) [1.43]

La fonction H 2 (p) dénie précédemment sera souvent utilisée dans ce chapitre


pour simplier les notations. Elle est représentée sur la gure 1.1.

Ainsi, l’’entropie de la source binaire est maximale (1 Sh/bit) lorsque p = 0, 5.

Considérons deux variables aléatoires X et Y ayant respectivement pour espace de


réalisations AX = {x1 , x2 , . . . , xn } et AY = {y1 , y2 , . . . , ym }. L’’entropie conjointe
H(X, Y ) est dénie comme suit :
n !
! m
H(X, Y ) = P r(X = xi , Y = yj )h(xi , yj )
i=1 j=1
n !
! m
=− P r(X = xi , Y = yj ) log2 P r(X = xi , Y = yj ) [1.44]
i=1 j=1

Licence limitée accordée à doc-ist-Onera


28 Bases de communications numériques 1

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

Figure 1.1. Entropie d’une source binaire

Si les variables aléatoires X et Y sont indépendantes, l’’entropie conjointe est égale


à la somme des entropies H(X) et H(Y ).

Nous pouvons aussi déterminer l’’entropie conditionnelle H(X/Y ) qui détermine


l’’information sur X sachant l’’observation Y à partir de h(x i |yj ) :
n !
! m
H(X|Y ) = P r(X = xi , Y = yj )h(xi |yj )
i=1 j=1
n !
! m
=− P r(X = xi , Y = yj ) log2 P r(X = xi |Y = yj ) [1.45]
i=1 j=1

Les relations [1.7] ou [1.30] permettent d’’exprimer l’’entropie conjointe en fonction


de l’’entropie et l’’entropie conditionnelle :

H(X, Y ) = H(X) + H(Y |X) = H(Y ) + H(X|Y ) [1.46]

L’’incertitude sur X et Y est égale à la somme de l’’incertitude sur X et de l’’incer-


titude sur Y sachant X.

Licence limitée accordée à doc-ist-Onera


Introduction à la théorie de l’information 29

L’’information mutuelle associée à la réalisation d’’un évènement peut également


être étendue aux variables aléatoires X et Y . L’’information mutuelle moyenne entre
les variables aléatoires X et Y s’’exprime comme suit :
n !
! m
I(X; Y ) = P r(X = xi , Y = yj )i(xi ; yj )
i=1 j=1
n !
! m
P r(X = xi |Y = yj )
= P r(X = xi , Y = yj ) log2
i=1 j=1
P r(X = xi )
n !
! m
P r(X = xi , Y = yj )
= P r(X = xi , Y = yj ) log2 [1.47]
i=1 j=1
P r(X = xi )P r(Y = yj )

Ainsi, nous avons les relations suivantes :

I(X; Y ) = H(X) + H(Y ) − H(X, Y )


= H(X) − H(X|Y ) = H(Y ) − H(Y |X) [1.48]

L’’information mutuelle moyenne I(X; Y ) mesure la quantité moyenne d’’infor-


mation sur X (ou réduction d’’incertitude moyenne) qui résulte de la connaissance de
Y . La gure 1.2 montre graphiquement les relations entre les différentes entropies et
l’’information mutuelle moyenne.

H(X, Y )

H(X)

H(Y )

H(X|Y ) I(X,Y) H(Y |X)

Figure 1.2. Relations entre entropie et information mutuelle moyenne

Alors que i(xi ; yj ) peut être négatif, nous avons I(X; Y ) ≥ 0.

Licence limitée accordée à doc-ist-Onera


30 Bases de communications numériques 1

1.3.5. Divergence de Kullback-Leibler

Soit deux variables aléatoires X et Y ayant respectivement pour espace de réa-


lisations AX = {x1 , x2 , . . . , xn } et AY = {y1 , y2 , . . . , yn } avec les probabilités
respectives P = {p1 , p2 , . . . , pn } et Q = {q1 , q2 , . . . , qn }.

Nous dénissons l’’entropie relative ou divergence de Kullback-Leibler comme


suit :

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).

Nous pouvons montrer que D KL (P||Q) ≥ 0 et que DKL (P||Q) = 0 si et seule-


ment si pi = qi ∀i = 1 . . . n.

Pour des variables aléatoires continues P et Q dont les densités de probibilité


son respectivement p(x) et q(x), la divergence de de Kullback-Leibner est déni par
l’’intégrale :

# ∞
p(x)
DKL (P ||Q) = p(x) ln dx [1.50]
−∞ q(x)

1.3.6. Entropie différentielle

L’’entropie différentielle est la généralisation de l’’entropie d’’une variable aléatoire


au cas continu. Soit une variable aléatoire X dénie par une densité de probabilité
p(x). L’’entropie différentielle H D (X) de X est égale à :

# +∞
HD (X) = − p(x) log2 p(x)dx [1.51]
−∞

L’’entropie différentielle caractérise la quantité d’’information associée à la variable


aléatoire continue X.

Licence limitée accordée à doc-ist-Onera


Introduction à la théorie de l’information 31

Calculons l’’entropie différentielle H D (X) lorsque la variable aléatoire X suit une


distribution gaussienne centrée de variance σ x2 . On a :
# * + ) ) 2 *,
+∞
1 −x2 1 −x
HD (X) = − ( exp 2
log2 ( exp dx [1.52]
2
2πσx −∞ 2σx 2πσx 2 2σx2
# +∞ ) 2*+ & ' ,
1 −x 1 x2
= −( exp log2 ( − 2 log2 e dx [1.53]
2πσx2 −∞ 2σx2 2πσx2 2σx
) *
Puisque log2 √1 2 ne dépend pas de x et que :
2πσx

# +∞ ) *
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

Finalement, nous obtenons donc :

log2 e -( .
HD (X) = + log2 2πσx2
2
1
= log2 2πeσx2 [1.56]
2

1.3.7. Séquences typiques et conjointement typiques

1.3.7.1. Séquences typiques


L’’ensemble des séquences de variables aléatoires est divisé en deux ensembles dis-
joints : l’’ensemble des séquences typiques et l’’ensemble des séquences non typiques.
Les séquences typiques sont un outil très important pour la démonstration des théo-
rèmes fondamentaux de la théorie de l’’information.

Licence limitée accordée à doc-ist-Onera


32 Bases de communications numériques 1

Soit une suite de variables aléatoires X = (X 1 , X2 , . . . , XN ) indépendantes et


identiquement distribuées (i.i.d) et ayant pour espace de réalisation l’’alphabet A X et
x est une réalisation.

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 sufsamment 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 :

|T$ | ≤ 2N (H(X)+$) [1.59]

En résumé, pour une suite de variables aléatoires X avec N sufsamment grand,


les réalisations x appartiennent presque certainement à l’’ensemble T $ composé
d’’environ 2 N (H(X)) séquences ayant chacune une probabilité d’’apparition proche
2−N (H(X)) .

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.

Licence limitée accordée à doc-ist-Onera


Introduction à la théorie de l’information 33

ï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

Figure 1.3. Distribution des probabilités et ensemble


de séquences typiques

1.3.7.2. Séquences conjointement typiques


La notion de séquences typiques peut être étendue au cas d’’une séquence de couple
de variables aléatoires. L’’ensemble des séquences conjointement typiques J $ est décrit
comme suit :
/ 0 0
01 0
N 0 0
J$ = x ∈ AX : 0 log2 P r(X = x) − H(X)0 < '
0N 0
0 0
01 0
0 0
0 log2 P r(Y = y) − H(Y )0 < '
0N 0
0 0 1
01 0
0 0
0 log2 P r((X, Y) = (x, y)) − H(X, Y )0 < ' [1.60]
0N 0

Licence limitée accordée à doc-ist-Onera


34 Bases de communications numériques 1

Soit la séquence de couple (x, y) i. i. d. suivant la probabilité conjointe :

N
2
P r(X = x, Y = y) = P r(Xi = xi , Yi = yi ) [1.61]
i=1

Nous pouvons démontrer facilement les propriétés suivantes :


–– la probabilité qu’’une séquence de couples (x, y) soit conjointement typique tend
vers 1 quand N → ∞ ;
–– le nombre de séquences de couples conjointement typiques |J $ | est borné par :

|J$ | ≤ 2N (H(X,Y )+$)

–– soit x et y deux réalisations indépendantes de X et Y respectivement, la proba-


bilité que (x& , y& ) appartienne à l’’ensemble des séquences de couples conjointement
typiques est :

P r((x& , y& ) ∈ J$ ) ≤ 2−N (I(X;Y )−3$) [1.62]

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 (H(X)+$) 2−N (H(Y )+$)


= 2−N (I(X;Y )−3$) [1.63]

Comme nous avons environ 2 N (H(X)) séquences typiques x, 2 N (H(Y )) séquences


typiques y et seulement 2 N (H(X,Y )) séquences de couples conjointement typiques,
la probabilité de choisir une séquence de couples conjointement typiques parmi l’’en-
semble des couples de séquences typiques tirées indépendamment est approximative-
ment égale à :

2N (H(X,Y ))
= 2−N (I(X;Y )) [1.64]
2N (H(X)) 2N (H(Y ))

Licence limitée accordée à doc-ist-Onera


Introduction à la théorie de l’information 35

1.4. Théorèmes pour le codage de source sans perte

1.4.1. Introduction

Nous pouvons distinguer deux 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
aussi appelé codeur entropique est de décrire la séquence numérique (alphabet de
la source de dimension nie) issue de la source par une suite de symboles la plus
courte possible tout en garantissant que celle-là puisse être reconstruite parfaitement
au récepteur par le décodeur de source.

Comme dans tous les ouvrages classiques de communications numériques, dans


ce chapitre nous étudierons les techniques de codage de source en ignorant l’’effet du
canal de transmission et en nous appuyant sur le paradigme de Shannon qui permet de
séparer les rôles du codage de source et du codage de canal. Ainsi, nous supposerons
que la sortie du codeur de source est directement reliée à l’’entrée du décodeur de
source comme représenté sur la gure 1.4.
Données Données Données
source CODAGE DE codées reconstituées
DECODAGE
SOURCE DESTINATAIRE
SOURCE DE SOURCE

Figure 1.4. Synoptique de la chaîne étudiée pour le codage de source

1.4.2. Entropie et redondance d’une source

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.

Licence limitée accordée à doc-ist-Onera


36 Bases de communications numériques 1

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

où HJ (X) est l’’entropie par groupe de J symboles.

La redondance d’’une source caractérise la différence qu’’il existe entre la quantité


d’’information que transporte cette source et la quantité d’’information que cette source
transporterait si tous ses symboles étaient équiprobables et indépendants. On a :

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).

1.4.3. Théorème fondamental du codage de source

Le théorème fondamental du codage de source énoncé par Shannon [SHA 48]


s’’exprime ainsi.

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 :

H(X) ≤ Rmoy < H(X) + ' [1.68]

Ainsi, nous pouvons coder chaque message x avec N H(X) bits en moyenne.

D ÉMONSTRATION.–– Nous avons vu précédemment que les séquences typiques per-


mettent de diviser l’’ensemble des séquences de variables aléatoires en deux ensembles
disjoints. L’’ensemble total des |A X |N séquences x peut être divisé en deux ensembles :
l’’ensemble T$ des séquences typiques avec | ≤ |T $ 2N (H(X)+$) et l’’ensemble T$c des
séquences non typiques.

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.

Licence limitée accordée à doc-ist-Onera


Introduction à la théorie de l’information 37

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. Codage de source sans perte

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.

Un message signiera selon le contexte, soit un symbole Q-aire issu de la source,


soit un ensemble de J symboles Q-aires.

messages composés mots composés


de symboles Q-aire CODAGE DE de symboles q-aire
SOURCE

Figure 1.5. Codage de source

Licence limitée accordée à doc-ist-Onera


38 Bases de communications numériques 1

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
difcultés particulières.

Le codage de source doit satisfaire les deux critères suivants :


–– codage unique : chaque message devra être codé par un mot différent ;
–– décodage unique ou déchiffrabilité : chaque mot devra pouvoir être dissocié sans
ambiguïté. Ce critère s’’obtient par :
- codage par mot de longueur xe ;
- codage avec un symbole de séparation distinguable (cas du système Morse
par exemple) ;
- codage par mot de longueur variable.

Le codage avec symbole de séparation étant une solution sous-optimale et obso-


lète, nous nous intéresserons au codage par mot de longueur variable et xe dans la
suite de ce chapitre.

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.

1.4.4.2. Codage par mot de longueur variable


E XEMPLE.–– Soit une source discrète délivrant les quatre messages a 1 , a2 , a3 et a4
avec les probabilités respectives P (a 1 ) = 12 , P (a2 ) = 14 et P (a3 ) = P (a4 ) = 18 .

Un mot est associé à chaque message comme décrit dans le tableau 1.1.

Message Mot
a1 1
a2 00
a3 01
a4 10

Tableau 1.1. Code à longueur variable de cet exemple

Nous pouvons vérier 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.

Licence limitée accordée à doc-ist-Onera


Introduction à la théorie de l’information 39

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

Tableau 1.2. Code à longueur variable de cet exemple

Ce code de source satisfait le critère de codage unique et permet aussi un décodage


unique. Cependant, il ne permet pas un décodage instantané car le message a 3 est le
début du message a 4 . Après une suite 11, il faut déterminer la parité du nombre de
zéros pour être capable de décoder la suite de message transmis. Celui implique donc
une plus grande complexité de décodage.

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

Tableau 1.3. Code à longueur variable de cet exemple

Ce code de source satisfait le critère de codage et de décodage unique. Il est ins-


tantané, comme nous pouvons le vérier sur la gure 1.6 qui présente l’’arbre associé
à ce codage de source.

a1 a2 a3

0 0 0

1 1 1
a4

Figure 1.6. Arbre associé au code de cet exemple

Licence limitée accordée à doc-ist-Onera


40 Bases de communications numériques 1

1.4.4.3. Inégalité de Kraft


T HÉORÈME.–– Un code instantané composé de Q mots binaires de longueur respective
{n1 , n2 , . . . , nQ } avec n1 ≤ n2 ≤ · · · ≤ nQ doit satisfaire l’inégalité suivante :

Q
!
2−ni ≤ 1 [1.70]
i=1

D ÉMONSTRATION.–– Un code instantané peut être représenté graphiquement à partir


d’’un arbre binaire complet de profondeur n Q . Chaque feuille de l’’arbre nal est as-
sociée à un des messages de la source. Le mot de code est la séquence de labels du
chemin allant de la racine de l’’arbre à la feuille.

1 0

C1

1 0

C2
1 0

C4 C3

Figure 1.7. Inégalité de Kraft

Un arbre complet contient 2 nQ feuilles. Choisissons un nœœud de degré n 1 comme


feuille associée au premier mot C 1 ; ce choix élimine 2 nQ −n1 feuilles. Parmi les nœœuds
restants, nous choisissons un nœœud de degré n 2 comme feuille associée au second
mot C2 . Ce choix élimine 2 nQ −n2 feuilles. Nous continuons cette procédure jusqu’’au
dernier mot. La condition pour obtenir un codage instantané devient donc :

Q
!
2nQ −ni ≤ 2nQ
i=1

en divisant les deux termes par 2 nQ , nous obtenons bien l’’inégalité de Kraft.

Licence limitée accordée à doc-ist-Onera


Introduction à la théorie de l’information 41

1.4.4.4. Théorème fondamental du codage de source


Considérons tout d’’abord une source sans mémoire d’’entropie par symbole H(X).

T HÉORÈME.–– Il est possible de construire un code instantané dont la longueur


moyenne des mots Rmoy satisfait l’inégalité suivante :

H(X) ≤ Rmoy < H(X) + 1 [1.71]

avec :

Q
!
Rmoy = pi ni [1.72]
i=1

D ÉMONSTRATION.–– Nous choisissons n i longueur du mot associé au i ième message


comme suit :

ni = -h(xi ). = -− log2 pi . [1.73]

-x. signie entier supérieur ou égal à x.

Vérions 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

car -− log2 pi . ≥ − log2 pi .

Ainsi nous avons donc :

Q
! Q
! Q
!
Rmoy = pi ni = pi -− log2 pi . < pi (− log2 pi + 1) = H(X) + 1 [1.75]
i=1 i=1 i=1

Le théorème fondamental du codage de source s’’exprime ainsi.

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) :

H(X) ≤ Rmoy < H(X) + ' [1.76]

Licence limitée accordée à doc-ist-Onera


42 Bases de communications numériques 1

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 :

JH(X) ≤ RJmoy < JH(X) + 1 [1.77]

En divisant les différents termes par J nous obtenons :

1
H(X) ≤ Rmoy < H(X) + [1.78]
J

avec Rmoy le nombre de bits moyens relatifs à un symbole de la source R moy =


RJmoy
J . En augmentant J, R moy peut s’’approcher asymptotiquement de H(X) :

H(X) ≤ Rmoy < H(X) + ' [1.79]

Ce résultat se généralise immédiatement au cas des sources avec mémoire.

1.4.4.5. Débit d’entropie


Soit une source discrète et stationnaire X d’’entropie H(X) Sh/symbole délivrant
DS symboles par seconde. Nous dénissons le débit d’’entropie ou débit information-
nel moyen D I comme suit :

DI = H(X)DS en Sh/sec [1.80]

&
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

Licence limitée accordée à doc-ist-Onera


Introduction à la théorie de l’information 43

Le débit d’’entropie D I& en sortie du codeur s’’obtient alors comme précédemment :

DI& = H & (X).DB


&
= DI en Sh/s [1.83]

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 :

Rmoy ≥ H(X) [1.84]

En multipliant les deux termes par D S , nous obtenons :

&
DB ≥ DS .H(X) = DI [1.85]

Ainsi, DI le débit d’’entropie de la source est la limite inférieure du débit binaire


obtenu après codage de source. En cas d’’égalité, nous retrouvons bien qu’’un élément
binaire est porteur d’’une quantité d’’information égale à 1 Shannon. Si la redondance
de la séquence en sortie du codeur de source n’’est pas nulle, alors un élément binaire
sera porteur d’’une quantité d’’information inférieure à 1 Shannon.

Symboles Q-aire Symboles binaire


CODAGE DE
SOURCE

DS symb/s D ' B = DS .Rmoy bit/s


H (X ) sh/symb H ' ( X ) = H ( X ) / Rmoy sh/bit
DI = H ( X ).DS sh/s D ' I = H ' ( X ).D 'B = DI sh/s

Figure 1.8. Débit d’entropie

1.5. Théorème pour le codage de source avec perte

1.5.1. Introduction

Nous allons maintenant considérer le codage de source avec perte. Lorsque la


source délivre un signal réel et continu, après échantillonnage, nous avons des échan-
tillons réels. Ainsi, l’’alphabet de la source est de dimension inni. Il n’’est plus possible
de décrire parfaitement cette source, sauf à utiliser un nombre de bits inni. L’’objec-
tif du codage de source avec perte est alors de minimiser un critère de délité, tel

Licence limitée accordée à doc-ist-Onera


44 Bases de communications numériques 1

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-
tication scalaire avec ou sans prédiction, la quantication vectorielle, le codage par
transformée, etc.

Dans ce paragraphe, nous introduirons la notion de distorsion, puis la fonction


distorsion-taux avant d’’énoncer le théorème fondamental pour le codage de source
avec perte.

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

Figure 1.9. Synoptique de l’ensemble codeur-décodeur

D ÉFINITION.–– La distorsion par dimension entre les séquences x et x̃ de dimension


N est définie par :

1
||x − x̃||2 [1.86]
N

D ÉFINITION.–– La distorsion moyenne par dimension de l’ensemble codeur-décodeur


est définie par :

#
1
DN = ||x − x̃||2 f (x)dx [1.87]
N x

où f (x) est la densité de probabilité de x.

Licence limitée accordée à doc-ist-Onera


Introduction à la théorie de l’information 45

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 :

R(D) = min {I(X; X̃)|E((X − X̃)2 ) ≤ D} [1.89]


p(x̃|x)

1.5.3. Théorème du codage de source avec perte

Le théorème du codage de source avec perte s’’énonce comme suit.

T HÉORÈME.–– Le nombre de bits par dimension minimum R permettant de représenter


une suite d’échantillons avec une distorsion moyenne donnée D doit être supérieur ou
égal à R(D) :

R ≥ R(D) en bits [1.90]

La démonstration de ce théorème [COV 91] utilise les séquences conjointement


typiques.

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

où σx2 est la variance de la source. En introduisant la fonction distorsion-taux D(R)


(Distortion Rate Function), l’’expression [1.91] peut aussi s’’écrire :

D(R) = σx2 2−2R [1.92]

Licence limitée accordée à doc-ist-Onera


46 Bases de communications numériques 1

Il s’’agit cependant d’’une limite théorique qu’’une simple quantication uniforme


ne permet pas d’’atteindre. En effet, le théorème énoncé précédemment fait l’’hypothèse
que le nombre de dimensions N du vecteur à coder x tend vers l’’inni. La fonction
taux-distorsion se généralise au cas des sources avec mémoire.

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)

Figure 1.10. Fonction distorsion-taux de Shannon pour une source


gaussienne de variance unitaire

Sur la gure 1.11, nous présentons les valeurs optimales y i avec une quantication
uniforme (identiées par des *) et non uniforme (identiées par des o) pour L = 8
dans le cas d’’une source gaussienne.

Dans ce cas simple (R = 3 bits/echantillon et σ x = 1), les distorsions moyennes


des quantications uniforme et non uniforme mesurées sont ici respectivement égales
à ––14,27 dB et ––14,62 dB. La fonction distorsion-taux de Shannon donne dans ce cas
10 log10 2−6 = −18, 06 dB. Comme les probabilités de chaque intervalle ne sont pas
identiques, nous pouvons appliquer un codage entropique après l’’opération de quan-
tication pour réduire encore le taux binaire. Ce codage entropique permet de gagner

Licence limitée accordée à doc-ist-Onera


Introduction à la théorie de l’information 47

ici plus de 2 dB. Pour atteindre la limite théorique, il faudra utiliser une quantication
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

Figure 1.11. Quantification uniforme et non uniforme L = 8 pour une


source gaussienne de variance σ x = 1

1.6. Modèles de canaux de transmission

1.6.1. Le canal binaire symétrique

Le canal binaire symétrique est un modèle de canal de transmission très simple


puisque l’’entrée et la sortie du canal sont binaires, et qu’’il est déni par un seul para-
mètre.

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).

Ce canal est caractérisé par les quatre probabilités conditionnelles suivantes :

P r(Y = 0|X = 1) = P r(Y = 1|X = 0) = p


P r(Y = 0|X = 0) = P r(Y = 1|X = 1) = 1 − p [1.93]

Licence limitée accordée à doc-ist-Onera


48 Bases de communications numériques 1

p est appelé la probabilité d’’inversion. Nous dénissons également les probabilités


sur les bits d’’entrée ou probabilités a priori P r(X = 0) = q et P r(X = 1) = 1 − q.

0 1−p 0
p
X Y
p
1 1
1−p

Figure 1.12. Canal binaire symétrique

La probabilité d’’erreur pour ce canal peut s’’obtenir très facilement :

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]

Le canal binaire symétrique est sans mémoire : soit x et y respectivement les


séquences d’’entrée et de sortie du canal composées de n bits : x = [x 0 , x1 , . . . , xn−1 ],
et y = [y0 , y1 , . . . , yn−1 ]. La relation suivante justie l’’absence de mémoire dans le
canal :

P r(Y0 = y0 , . . . , Yn−1 = yn−1 |X0 = x0 , . . . , Xn−1 = xn−1 )


n−1
2
= P r(Y = yi |X = xi )
i=0

La probilité conditionnelle jointe est le produit des n probabilités conditionnelles


P r(Y = yi |X = xi ).

En utilisant la loi de Bayes, nous pouvons calculer les probabilités P r(X, Y ),


P r(Y ) et P r(X|Y ) à partir de P r(Y |X) et P r(X) comme présentées dans le ta-
bleau 1.4.

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.

Licence limitée accordée à doc-ist-Onera


Introduction à la théorie de l’information 49

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)

Tableau 1.4. Probabilités Pr(X,Y), Pr(Y) et Pr(X |Y) pour le canal


binaire symétrique

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

Figure 1.13. Entropie conditionnelle H(X |Y) en fonction de q et p

A partir des probabilités P r(Y |X), nous pouvons calculer l’’entropie condition-
nelle H(Y |X). Nous obtenons :

H(Y |X) = −p log2 (p) − (1 − p) log2 (1 − p)


= H2 (p) [1.95]

Si q = 0, 5 nous avons aussi H(X|Y ) = H2 (p).

Licence limitée accordée à doc-ist-Onera


50 Bases de communications numériques 1

1.6.2. Canaux discrets sans mémoire

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

Ce canal est décrit par le graphe de la gure 1.14.

p11
x1 y1

x2 y2

X Y

xi
yj

xM

pML yL

Figure 1.14. Canal discret sans mémoire

Licence limitée accordée à doc-ist-Onera


Introduction à la théorie de l’information 51

La probabilité d’’erreurs par symbole P e dans ce canal est donnée par :


M !
! L
Pe = P r(X = xi , Y = yj )
i=1 j=1
j!=i

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

1.6.3. Canal binaire à effacement

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 signier que le bit transmis a été
effacé. Ce canal est donc caractérisé par les probabilités conditionnelles suivantes :

P r(Y = 0|X = 0) = P r(Y = 1|X = 1) = 1 − p


P r(Y = '|X = 0) = P r(Y = '|X = 1) = p
P r(Y = 0|X = 1) = P r(Y = 1|X = 0) = 0 [1.98]

p est appelé la probabilité d’’effacement. Ce canal de transmission est particulière-


ment utilisé pour la modélisation de la perte de paquets dans les protocoles de com-
munication de haut niveau. Ce canal est décrit par le diagramme de la gure 1.15.

X Y
1-p
0 0
p
e
p
1 1
1-p

Figure 1.15. Canal à effacement

En utilisant la loi de Bayes, nous pouvons calculer P r(X, Y ), P r(Y ) et P r(X|Y )


à partir de P r(Y |X) et P r(X) comme présentées dans le tableau 1.5.

L’’entropie conditionnelle H(X|Y ) est égale à pH 2 (q).

Licence limitée accordée à doc-ist-Onera


52 Bases de communications numériques 1

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

Tableau 1.5. Probabilités Pr(X,Y), Pr(Y) et Pr(X |Y)


pour le canal à effacement

1.6.4. Canal à bruit blanc additif gaussien

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]

Le théorème de l’’échantillonnage implique que 2BT échantillons sufsent pour


représenter un signal à bande limitée pendant une durée T avec ici f max = B. Nous
montrerons dans le volume 2 de cet ouvrage que le démodulateur optimal à la ré-
ception comprend un ltre adapté limitant la bande de bruit. Aprés ltrage adapté et
échantillonnage, la relation entre le symbole d’’entrée s i appartenant à un alphabet dis-
cret et la sortie yi à l’’instant i peut s’’écrire pour le cas du canal à bruit blanc additif
gaussien comme suit :

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

La variance σn2 de l’’échantillon de bruit n i est égale à :

N N0
σn2 = =
2B 2

Licence limitée accordée à doc-ist-Onera


Introduction à la théorie de l’information 53

Ainsi la densité de probabilité de y i conditionnellement à x i est :


3 4
1 (yi − xi )2
p(yi |xi ) = √ exp − [1.102]
πN0 N0

1.7. Capacité d’un canal de transmission

1.7.1. Introduction

Nous cherchons à résoudre le problème suivant : supposons que nous transmettions


des bits équiprobables P r(X = 0) = P r(X = 1) = 12 avec un débit de 1 000 bits
par seconde dans un canal binaire symétrique de paramètre p = 0, 1. Quel est le débit
d’’information maximum qu’’il est possible de transmettre ? Nous pourrions penser que
ce débit est égal à 900 Sh/s en soustrayant le nombre d’’erreurs moyen par seconde.
Cependant, cette vue simpliste est erronée, car nous ne connaissons pas la position de
ces erreurs. Par exemple, dans le cas extrême où p = 0, 5, nous avons en moyenne 500
erreurs par seconde et aucune information n’’est transmise ! Nous allons dans la suite
de cette section répondre à cette question.

1.7.2. Capacité d’un canal de transmission

Nous noterons X et Y les variables aléatoires associées respectivement à l’’entrée


et à la sortie du canal.

D ÉFINITION.–– Nous définissons la capacité d’un canal de transmission par :

C = max I(X; Y ) [1.103]

La capacité d’’un canal de transmission est le maximum de l’’information mutuelle


moyenne. La maximisation est réalisée sur l’’ensemble de toutes les sources possibles.
Si le canal est sans mémoire, la maximisation est effectuée sur l’’ensemble des distri-
butions possibles p(x) des symboles d’’entrée x.

Considérons tout d’’abord le cas où le canal de transmission est dépourvu de bruit.


Dans ce cas, sa capacité est la quantité d’’information moyenne maximale que peut
transporter chacun des symboles en entrée du canal.

La capacité C s’’exprime en Shannon/symbole. Il est également possible de l’’ex-


primer en Shannon/seconde (on parle alors de capacité par unité de temps). Pour la
distinguer de la capacité par symbole, nous noterons cette dernière C & . Nous avons :

C & = C × Ds avec Ds débit symbole de la source [1.104]

Licence limitée accordée à doc-ist-Onera


54 Bases de communications numériques 1

En absence de bruit, la capacité C du canal est égale à log 2 Q. En effet, la quantité


d’’information moyenne maximale s’’obtient lorsque l’’entropie de la source est maxi-
male, c’’est-à-dire lorsque les symboles Q-aires de la source sont équiprobables. Nous
avons alors :

C = HMAX (X) = log2 Q [1.105]

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.

H(X|Y ) correspond à la quantité d’’information moyenne perdue dans le canal.


Lorsque le canal est sans bruit, nous avons H(X|Y ) = H(X|X) = 0 et donc C =
HMAX (X). Nous retrouvons la relation [1.105].

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 )

Figure 1.16. Cas C = H MAX (X)

H(X, Y )
H(X) + I(X; Y ) = 0
H(X)
- H(X|Y ) = H(X)
H(Y )

Figure 1.17. Cas C = 0

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é

Licence limitée accordée à doc-ist-Onera


Introduction à la théorie de l’information 55

codeur de canal entre la source et le canal de transmission. La gure 1.18 présente le


nouveau système de communication comprenant un codeur de canal, le canal bruité et
un décodeur de canal.
U X Y V
CODEUR CANAL DECODEUR
H(U ) H(X) I(X; Y ) I(U ; V )

Figure 1.18. Système de communication avec codage de canal

Pour ce nouveau système, nous pouvons dénir l’’information mutuelle moyenne


I(U ; V ) = H(U ) − H(U |V ). Le rôle du codage de canal est de rendre la quantité
d’’information moyenne H(U |V ) aussi faible que souhaité. Il est alors possible de
transmettre au travers de ce canal bruité une quantité d’’information moyenne H(U )
avec le critère de qualité souhaité. Bien entendu, nous avons H(U ) < H(X) à cause
de la redondance apportée par le codage de canal.

Nous allons maintenant énoncer le théorème fondamental du codage de canal.

1.7.3. Théorème fondamental du codage de canal

Il existe un codage de canal permettant de garantir une communication avec un


taux d’’erreurs aussi faible que souhaité à la condition que la quantité d’’information
moyenne entrant dans l’’ensemble codeur-canal-décodeur soit inférieure à la capacité
C du canal [SHA 48] :

H(U ) < C [1.106]

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 :

Db < C & [1.107]

La démonstration du théorème fondamental du codage de canal est basée sur le


principe du codage aléatoire et les propriétés des séquences de couples conjointe-
ment typiques. L’’ensemble codage décodage proposé par Shannon est le suivant : les

Licence limitée accordée à doc-ist-Onera


56 Bases de communications numériques 1

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érier 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 difculté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 enn été possible de s’’approcher à moins de 1 dB de cette
limite.

1.7.4. Capacité d’un canal binaire symétrique

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 :

I(X; Y ) = H(Y ) − H(Y |X)


= H(Y ) − H2 (p) [1.108]

Comme H2 (p) ne dépend pas de q, an de maximiser I(X; Y ), il est nécessaire de


maximiser H(Y ). Nous avons vu dans l’’équation [1.42] que pour maximiser H(Y ),
il faut avoir P (Y = 0) = P (Y = 1) = 1/2, c’’est-à-dire ici P (X = 0) = P (X =
1) = q = 1/2. Nous avons alors :

C = 1 − H2 (p) = 1 + p log2 (p) + (1 − p) log2 (1 − p) [1.109]

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.

Licence limitée accordée à doc-ist-Onera


Introduction à la théorie de l’information 57

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

Figure 1.19. Information mutuelle moyenne I(X ;Y)


en fonction de q et p

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

Figure 1.20. Capacité du canal binaire symétrique en fonction de p

Licence limitée accordée à doc-ist-Onera


58 Bases de communications numériques 1

1.7.5. Capacité d’un canal binaire à effacement

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 :

I(X; Y ) = H(X) − H(X|Y )


= H2 (q) − pH2 (q)
= (1 − p)H2 (q) [1.110]

L’’information mutuelle moyenne est maximisée pour q = 0, 5 soit H 2 (q) = 1.


Ainsi, la capacité de ce canal est égale à :

C =1−p [1.111]

1.7.6. Capacité d’un canal à bruit blanc additif gaussien

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]

car Z la variable aléatoire associée au bruit est indépendante de X.

Dans la section 1.3.6, nous avons calculé l’’entropie différentielle H D (X) de X,


une variable aléatoire gaussienne centrée de variance σ x2 . A partir de l’’équation [1.56],
nous avons :
1
HD (X) = log2 2πeσx2
2
1 -√ .
= + log2 2πσx [1.114]
2 ln 2

Licence limitée accordée à doc-ist-Onera


Introduction à la théorie de l’information 59

Nous pouvons démontrer que le maximum de I(X; Y ) s’’obtient lorsque la densité


de probabilité de X est gaussienne, centrée et de variance σ x2 . La variance du bruit Z
est égale à σn2 = N20 .

Calculons la variance de Y :

E(Y 2 ) = E(X + Z)2 = E(X)2 + 2E(XZ) + E(Z)2


N0
= E(X)2 + E(Z)2 = σx2 + [1.115]
2
A partir de [1.112], nous dérivons la capacité du canal additif à bruit blanc gaus-
sien :

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].

Introduisons P la puissance moyenne du signal x(t). En considérant une fréquence


d’’échantillonage égale à 2B, nous avons 2BT échantillons pendant une durée T . Nous
avons alors :
#
1 T
P = E[x2 (t)]dt
T 0
2BT
1 !
= E(x2i )
T i=1
2BT
1 ! 2
= σ
T i=1 x

= 2Bσx2 [1.117]

Nous obtenons nalement à partir de [1.116] l’’expression classique de la capacité


d’’un canal additif à bruit blanc gaussien :
) *
1 P
C= log2 1 + en Shannon/symb [1.118]
2 N

Licence limitée accordée à doc-ist-Onera


60 Bases de communications numériques 1

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.

La gure 1.21 présente la courbe de la capacité C du canal additif à bruit blanc


P
gaussien en fonction du rapport signal à bruit SN R = N . Nous pouvons observer
que pour SN R > 5 dB, la capacité C est bien approximée par la fonction linéaire
C ≈ 12 log2 (SN R).

Capacité=f(SNR)
6

4
Capacité (Sh/symb)

0
ï10 0 10 20 30 40
SNR (dB)

Figure 1.21. Capacité d’un canal à bruit blanc additif gaussien

En multipliant [1.118] par la fréquence d’’échantillonage 2B, nous obtenons na-


lement l’’expression de la capacité par unité de temps :

) *
P &
C = Blog2 1 + en Shannon/sec [1.119]
N

avec N = BN0 puissance du bruit.

Licence limitée accordée à doc-ist-Onera


Introduction à la théorie de l’information 61

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

1.7.7. Représentation géométrique

Il est également possible de démontrer géométriquement que pour garantir une


transmission sans erreur,
- la quantité
. d’’information moyenne H(U ) ne peut pas être
2
1 2σx
supérieure à 2 log2 1 + σ2 .
n

Nous rappelons la relation vectorielle entre le vecteur émis x et le vecteur reçu y


de dimension D :

y = x+n [1.120]

n = (n1 , n2 , . . . , nD ) est le vecteur bruit composé de D composantes indépendantes


gaussiennes de variance σ n2 = N20 . La densité de probabilité du vecteur n s’’exprime
comme suit :
& " '
D 2
1 n
p(n) = exp − i=12 i [1.121]
(2πσn2 )D/2 2σn

Pour D tendant vers l’’inni, 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 an de maximiser la capacité :

& " '


D 2
1 i=1 xi
p(x) = exp − [1.122]
(2πσx2 )D/2 2σx2

Pour la même raison que précédemment,l’’extrémité


( du vecteur x est concentré
à la surface de la sphère de rayon D.σx2 . Comme la puissance du signal reçu est
égale à la somme σx2 + σn2 , l’’extrémité du vecteur correspondant au signal reçu, quel

!"
D
2. Norme du vecteur de bruit = i=1 n2i .

Licence limitée accordée à doc-ist-Onera


62 Bases de communications numériques 1

que soit le signal émis, se trouve à la surface de la sphère à D dimensions de rayon


(
D(σx2 + σn2 ).

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)

où Γ(.) est la fonction factorielle d’’Euler 3.

Ainsi, nous devons avoir :

(
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 simplie comme suit :

(D(σx2 + σn2 ))D/2


M≤ [1.125]
(D.σn2 )D/2

Nous obtenons l’’inégalité suivante :

& 'D/2
σx2 + σn2
M≤ [1.126]
σn2

Cette inégalité s’’écrit alors :


& '
1 σ2
H(U ) ≤ log2 1 + x2 [1.127]
2 σn

3. La fonction factorielle d’’Euler Γ(.) est dénie comme suit :


Γ(n) = (n − 1)! avec n ∈ N∗

Γ(n + 1/2) = 2(2n)!
2n .n! . π avec n ∈ N∗

Γ(1/2) = π

Licence limitée accordée à doc-ist-Onera


Introduction à la théorie de l’information 63

Ds n
2

D (s x + s n )
2 2

Figure 1.22. Répartition des sphères de bruit

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

Ts et Tb sont respectivement la durée de transmission d’’un symbole et d’’un bit


d’’information (en considérant le cas d’’une modulation M-aire M = 2 g et un code de
rendement R nous avons T s = gRTb ).

Licence limitée accordée à doc-ist-Onera


64 Bases de communications numériques 1

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

η est l’’efcacité spectrale en bits/sec/Hz :

Db 1
η= avec Db = débit binaire d’’information [1.132]
B Tb

L’’efcacité spectrale η est maximale lorsque la bande passante est minimale, soit
Bmin = 1/Ts , nous avons :

1 Ts
ηmax = = [1.133]
Tb Bmin Tb

En considérant que le débit binaire est égal à la capacité du canal (D b = C & ),


l’’efcacité spectrale ηmax s’’écrit aussi :

) *
C& Eb
ηmax = = log2 1 + ηmax en bits/sec/Hz [1.134]
B N0

Cette équation peut s’’écrire encore :

Eb 2ηmax − 1
= [1.135]
N0 ηmax

La valeur minimale de E b /N0 pour une communication sans erreur s’’obtient


lorsque l’’efcacité spectrale maximale tend vers zéro (la bande passante tend vers
l’’inni). Nous obtenons alors :
0
Eb Eb 00
lim = ln 2 soit = −1,59 dB [1.136]
ηmax →0 N0 N0 0dB

La gure 1.23 présente la courbe de l’’efcacité spectrale maximale en fonction du


rapport Eb /N0 . Comme exemple, nous avons également donné les rapports E b /N0
pour un taux d’’erreur binaire de 10 −5 des systèmes utilisant une modulation de phase
à deux et quatre états (BPSK et QPSK) sans codage. Ces modulations sont étudiées

Licence limitée accordée à doc-ist-Onera


Introduction à la théorie de l’information 65

dans le volume 2 de cet ouvrage. Les performances de ces systèmes de communication


sont respectivement à 9,5 dB et 7,75 dB de la limite de Shannon. L’’ajout d’’un code
convolutif (133,171) de rendement R = 1/2 à un système utilisant une modulation
BPSK apporte un gain de 5,1 dB par rapport au système sans codage. La concaténa-
tion de ce code convolutif avec un code Reed-Solomon (255,223) proposée par Forney
[FOR 66] permet de s’’approcher à 2,5 dB de la limite de Shannon. Le dernier point
correspond aux performances obtenues en utilisant les codes convolutifs concaténés
en parallèle ou Turbo codes introduits en 1993 par Berrou et al. [BER 93]. Nous étu-
dierons en détail ces codes correcteurs d’’erreurs dans les chapitres 3, 4 et 5.

6
ηmax

QPSK
2

BPSK
1
Turbo Codes CC (133,171)
CC+RS

0
ï2 0 2 4 6 8 10
Eb /N0 (dB)

Figure 1.23. Efficacité spectrale maximale d’un canal à bruit blanc


additif gaussien

La gure 1.24 présente les courbes d’’efcacité spectrale maximale pour différentes
modulations numériques. Compte tenu du nombre d’’états possible M de ces modu-
lations, l’’efcacité 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.

Licence limitée accordée à doc-ist-Onera


66 Bases de communications numériques 1

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)

Figure 1.24. Efficacité spectrale en fonction du rapport E b /N0

1.8. Exercices

1.8.1. Exercice 1 : calcul d’entropies pour canal à entrées et sorties dis-


crètes

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.

Cette source est connectée à un canal de transmission à entrées et sorties discrètes


dont les probabilités conditionnelles sont dénies comme suit :

pij = Pr(Y = aj |X = ai ) = 0, 05 ∀i, j ∈ {1, 2, 3} avec i *= j

pii = Pr(Y = ai |X = ai ) = 0, 9 ∀i ∈ {1, 2, 3}

pij est la probabilité de recevoir a j lorsque l’’on émet a i .


1) Représenter graphiquement ce canal de transmission.
2) Calculer les probabilités Pr(Y = a j ) pour j ∈ {1, 2, 3} et les probabilités
conditionelles Pr(X = ai |Y = aj ) .

Licence limitée accordée à doc-ist-Onera


Introduction à la théorie de l’information 67

3) Calculer les entropies H(X) et H(Y ), l’’entropie conjointe H(X, Y ) et l’’entro-


pie conditionnelle H(Y |X).
4) Vérier que H(X, Y ) = H(Y |X) + H(X) = H(X|Y ) + H(Y ).

1.8.2. Exercice 2 : calcul d’information mutuelle [BAT 97]

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).

Soit les évènements :


–– E1 : l’’évènement « la main ne contient aucun 7, 8, 9 et 10 » ;
–– E2 : l’’évènement « la main ne contient aucun roi, dame, valet » ;
–– E3 : l’’évènement « la main contient quatre cartes de la même valeur ».
1) Calculer l’’information h(E1), h(E2) et h(E3).
2) Calculer l’’information mutuelle i(E1; E2), i(E1; E3).

1.8.3. Exercice 3 : capacité d’un canal à bruit blanc additif gaussien

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.

1.8.4. Exercice 4 : canal binaire symétrique

Soit un canal binaire symétrique déni par sa probabilité de transition p. La source


X émet des bits équiprobables p(X = 0) = p(X = 1) = 0, 5.

Déterminer H(Y ), H(X|Y ) et I(X; Y ) en fonction de p. Application numérique


pour p = 0,11.

1.8.5. Exercice 5 : canal Z

Soit le canal Z suivant :

Licence limitée accordée à doc-ist-Onera


68 Bases de communications numériques 1

La source X émet des bits équiprobables p(X = 0) = p(X = 1) = 0, 5.


1) Déterminer p(Y = y i ), p(X = xi , Y = yj ), p(X = xi |Y = yj ) en fonction de
p.
2) Déterminer H(X|Y ) et I(X; Y ) en fonction de p. Application numérique pour
p = 0, 5.

1.8.6. Exercice 6 : canal à entrées et sorties discrètes

Soit un canal à entrées X et sorties Y discrètes avec un alphabet A = {0, 1, 2, 3, 4}


et dont les probabilités de transition sont :

/
0, 5 si j = i ± 1mod5
P r(Y = yj |X = xi ) =
0 sinon

1) Représenter le canal graphiquement.


2) Calculer H(X|Y ) puis I(X; Y ) en supposant les entrées équiprobables.
3) Montrer qu’’il est possible de transmettre 1 bit/symb avec une probabilité d’’er-
reur nulle.
4) Peut-on faire mieux en groupant les symboles deux à deux ?

Licence limitée accordée à doc-ist-Onera


2

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 quantication scalaire et la quantication vectorielle ainsi que leurs per-
formances théoriques. Les techniques de codage pour les sources à mémoire comme
la prédiction linéaire, la quantication 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.

2.2. Algorithmes pour le codage de source sans perte

2.2.1. codage par plage

Le codage par plage (RLC) (Run Length Coding) est un algorithme simple per-
mettant de prendre en compte la redondance entre symboles. Il est efcace quand la

Licence limitée accordée à doc-ist-Onera


70 Bases de communications numériques 1

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 efcace 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 efcace dans le cas d’’une image composée de
pixels noirs et blancs comme le télécopieur.

2.2.2. Algorithme de Huffman

Huffman en 1952 [HUF 52] a proposé un algorithme de codage à longueur variable


d’’une source à L messages. Cet algorithme permet d’’obtenir le nombre moyen de bits
par mot minimum tout en garantissant un code uniquement décodable et instantané.

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.

Licence limitée accordée à doc-ist-Onera


Codage de source 71

E XEMPLE.–– Soit une source discrète à huit messages a 1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 avec


les probabilités d’’apparition respectives {0, 16; 0, 15; 0, 01; 0, 05; 0, 26; 0, 11; 0, 14;
0, 12} d’’entropie H(X)= 2,7358.

Le codage de Huffman de cette source est donné sur la gure 2.1.

!
!
!
!
!
!
!
!

Figure 2.1. Exemple de codage de Huffman

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

Tableau 2.1. Table de codage de Huffman

Pour les sources sans mémoire l’’algorithme de Huffman fournit un codage de


source optimal sous réserve que les probabilités d’’apparition des symboles soient des
puissances négatives de 2 (1/2, 1/4, etc.). Cependant, lorsque les symboles successifs
sont corrélés, il est nécessaire de grouper plusieurs symboles pour constituer un mes-
sage. La complexité du codage de source utilisant l’’algorithme de Huffman devient
alors très grande (le nombre de messages est égal à Q J si les messages sont composés
de J symboles Q-aire).

Licence limitée accordée à doc-ist-Onera


72 Bases de communications numériques 1

L’’algorithme de Huffman est beaucoup utilisé dans les algorithmes de compres-


sion d’’image ou de son en complément d’’un algorithme de compression avec perte
(JPEG, MP3, etc.). En pratique, la méthode de construction de l’’arbre peut être semi-
adaptative ou adaptative. La méthode semi-adaptative consiste à effectuer deux passes
de traitement sur la séquence d’’entrée à coder : lors de la première passe les probabi-
lités d’’apparition des symboles sont calculées et l’’arbre est construit puis la seconde
passe réalise l’’encodage. Dans la méthode adaptative, l’’arbre de Huffman est construit
dynamiquement et simultanément par le codeur et le décodeur. Ces méthodes sont dé-
taillées dans l’’ouvrage de Salomon [SAL 07].

2.2.3. Evaluation de l’entropie d’un texte écrit

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

Tableau 2.2. Probabilité d’apparition des caractères

Si la probabilité d’’apparition de chacun des caractères était égale, l’’entropie par


caractère serait égale à log 2 (30) = 4, 9 Sh/caractère.

L’’application de [1.65] donne une entropie égale à 4,09 Sh/caractère. Ce calcul


ne tient pas compte de la corrélation entre les caractères successifs. Pour montrer un
aperçu de la dépendance entre les caractères successifs, sur un texte littéraire en langue
française, nous avons groupé les caractères par doublet et représenté sur la gure 2.2
la probabilité d’’apparition de chacun de ces doublets. Les caractères associés aux co-
lonnes et aux lignes correspondent respectivement au premier et au dernier caractère

Licence limitée accordée à doc-ist-Onera


Codage de source 73

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

’’
,
.

Figure 2.2. Probabilité d’apparition des doublets

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.

Pour mettre encore en évidence la redondance de la langue française faisons l’’ex-


périence suivante [COV 91, MAC 03] : l’’objectif est pour le candidat de déterminer
lettre après lettre une phrase qu’’il ignore. Après avoir déterminé correctement une
lettre, nous notons le nombre de tentatives qui ont été nécessaires pour déterminer
celle-ci. Le candidat passe ensuite à la lettre suivante. Voici deux résultats obtenus
avec la phrase suivante :

LES VACANCES SONT TERMINEES


candidat 1 : 1 1 2 1 18 2 1 2 1 1 1 1 1 2 1 1 1 1 3 1 1 1 1 1 1 1 1
candidat 2 : 1 1 1 1 13 4 4 5 1 1 1 1 1 4 1 1 1 1 9 1 1 1 1 1 1 1 1

Licence limitée accordée à doc-ist-Onera


74 Bases de communications numériques 1

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 efcace
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.

2.2.4. Codage arithmétique

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.

Figure 2.3. Exemple de partitionnement

Supposons que la distribution des probabilités des Q symboles de la source soit


connue. Nous pouvons partitionner le segment [0; 1[ en Q intervalles ou partitions S i
de longueur P r(x i ). Nous pouvons ensuite poursuivre le partionnement en divisant
chaque partition S i en sous-partition S ij de longueur P r(x i , xj ) = P r(xi )P r(xj |xi )

Licence limitée accordée à doc-ist-Onera


Codage de source 75

et ainsi de suite. Le principe du codage arithmétique consiste à associer à chaque sé-


quence de symboles issus de la source un intervalle qui sera lui-même associé ensuite
à un mot binaire.

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 .

Ces différentes opérations sont illustrées sur la gure 2.4.

Figure 2.4. Exemple de codage arithmétique

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

Licence limitée accordée à doc-ist-Onera


76 Bases de communications numériques 1

où c est le nombre de réalisations passées du symbole a et s est le nombre total de


réalisations passées. Une version adaptative du codage arithmétique (codage arithmé-
tique binaire adaptatif selon le contexte CABAC) est utilisée dans le standard vidéo
H264/AVC.

2.2.5. Algorithme LZ78

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.

E XEMPLE.–– Considérons une séquence binaire issue d’’une source :

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

La seconde suite différente de 0 est 01 :

0,01,000001100010010000010110001000001000011

La troisième suite différente de 0 et 01 est 00 :

0,01,00,0001100010010000010110001000001000011

Finalement, cette séquence est décomposée en suite comme suit :

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

Tableau 2.3. Dictionnaire des suites

Licence limitée accordée à doc-ist-Onera


Codage de source 77

La première ligne du tableau correspond à l’’index des suites dans le dictionnaire,


la seconde aux suites et la troisième à la paire index-symbole utilisée pour l’’encodage
de ces suites. Par exemple, la suite 0010 est encodée par 7-0 car elle est construite à
partir de la suite 001 (index 7 dans le dictionnaire) à laquelle nous ajoutons le sym-
bole 0. Pour permettre de commencer la procédure de construction du dictionnaire, sa
première entrée (index 0) correspondra à une suite ensemble vide.

Dans cet exemple, la séquence encodée est donc :

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

Figure 2.5. Arbre représentant les suites stockées dans le dictionnaire

Finalement, la séquence encodée en binaire devient :

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

Il faut préciser que les caractères séparateurs « , » et « - » servent uniquement à


la compréhension de l’’algorithme et ne sont donc pas nécessaire en pratique. An de
permettre le décodage, le nombre de bits utilisés pour encoder l’’index est toujours
croissant : 2 suites dont l’’index est de longueur 1, puis 2 suites dont l’’index est de
longueur 2, puis 2 2 suites de longueur 3, 2 3 suites de longueur 4, etc.

Le décodeur utilisera donc le même algorithme pour reconstruire la séquence ini-


tiale. Le principal inconvénient de cet algorithme est que la taille du dictionnaire aug-
mente sans limite. Une des solutions classiques consiste à xer une taille maximale.

Licence limitée accordée à doc-ist-Onera


78 Bases de communications numériques 1

Cet algorithme peut aussi être utilisé avec des sources ayant des alphabets non binaires
comme par exemple des caractères ASCII [SAL 07].

2.2.6. Algorithme de Lempel-Ziv-Welch (LZW)

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.

E XEMPLE.–– Reprenons la séquence binaire issue d’’une source utilisée précédem-


ment. Cette séquence est décomposée en suites comme dans l’’algorithme LZ78. Nous
avons :

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.

Position Suite prototype Mot de code


1 1 0000
2 01 0001
3 001 0010
4 010 0011
5 100 0100
6 101 0101
7 0000 0110
8 0001 0111
9 0010 1000
10 0101 1001
11 1000 1010
12 00011 1011
13 000010 1100
14 000011 1101
15 0000101 1110
16 0000110 1111

Tableau 2.4. Liste des suites prototypes

Licence limitée accordée à doc-ist-Onera


Codage de source 79

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

Figure 2.6. Arbre représentant les suites prototypes

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

La sortie du codeur de source est la suivante :

1000 1111 1000 0011 1110 1010 1010 1000 1011 0111 1001 1101 1111 1110
1010 1011

Le décodeur de source utilisant le même algorithme pourra reconstruire le diction-


naire utilisé au codage et donc reconstituer instantanément la séquence émise par la
source.

Il est à noter que le codage Lempel-Ziv-Welch encode les 79 bits de la séquence


de la source en 16 mots de 4 bits soit 64 bits au total. Malgré la courte longueur de la

Licence limitée accordée à doc-ist-Onera


80 Bases de communications numériques 1

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. Echantillonnage et quantification

2.3.1. Introduction

2.3.2. Rappel sur le théorème de l’échantillonnage

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.

Ainsi, la sortie de la source analogique peut être convertie en un signal à temps


discret équivalent sans perte d’’information. Pour vraiment disposer d’’un signal nu-
mérique, il reste à quantier l’’amplitude des échantillons sur un nombre de niveaux
nis.

2.3.3. Quantification scalaire

La quantication scalaire consiste à quantier l’’amplitude possible des échan-


tillons sur L valeurs. Lorsque les L valeurs sont régulièrement espacées, nous disons
que la quantication est uniforme. Dans le cas contraire, la quantication est non uni-
forme.

Licence limitée accordée à doc-ist-Onera


Codage de source 81

Figure 2.7. Echantillonnage et reconstruction

La valeur x̃ choisie est la plus proche au sens de la distance euclidienne de l’’ampli-


tude x de l’’échantillon. Si L est une puissance de 2 (L = 2 R ), alors chaque échantillon
quantié x̃ pourra être représenté par un mot binaire de R bits (opération de codage) :

R = log2 L bits/échantillon [2.6]

D ÉFINITION.–– Soit un ensemble d’intervalles ou cellules S = {S 1 , S2 , . . . , SL } et un


ensemble de valeurs ou représentants Y = {y 1 , y2 , . . . , yL }. L’opération de quantifi-
cation est définie mathématiquement par la relation suivante :

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 quantication est dite uniforme si tous les
intervalles ont la même largeur, notée ∆.

Licence limitée accordée à doc-ist-Onera


82 Bases de communications numériques 1

Un exemple de quantication uniforme est donné sur la gure 2.8 pour L = 8.

y1 y2 y3 y4 y5 y6 y7 y8 x
a1 a2 a3 a4 a5 a6 a7

Figure 2.8. Quantification uniforme L = 8

La relation entre l’’amplitude de l’’échantillon x et l’’amplitude de l’’échantillon


après quantication uniforme x̃ est présentée sur la gure 2.9 pour L = 8.
~
x

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

Figure 2.9. Relation entrée sortie quantification uniforme L = 8

Un convertisseur analogique numérique (CAN) classique réalise les opérations


d’’échantillonnage, de quantication uniforme et de codage binaire. Pour un CAN avec
R = 8 bits/échantillon, nous avons L = 256.

Licence limitée accordée à doc-ist-Onera


Codage de source 83

Un exemple de quantication 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

Figure 2.10. Quantification non uniforme L = 8

~
x
y8

y7

y6

y5

a1 a2 a3 y4 a5 a6 a7 x

y3

y2

y1

Figure 2.11. Relation entrée sortie quantification non uniforme L = 8

La qualité d’’un quanticateur peut être mesurée par l’’erreur quadratique |x − x̃| 2
entre le signal quantié et le signal d’’origine.

Licence limitée accordée à doc-ist-Onera


84 Bases de communications numériques 1

D ÉFINITION.–– A partir de l’erreur quadratique, nous définissons l’erreur quadratique


moyenne (EQM) ou distorsion moyenne D :
D = E(|x − x̃|2 )
# +∞
= |x − x̃|2 f (x)dx
−∞
L #
!
= |x − yi |2 f (x)dx [2.8]
i=1 Si

où f (x) est la densité de probabilité de x.

Ainsi, lorsque la densité de probabilité f (x) est connue, l’’objectif de la quanti-


cation est de coder les échantillons de la source avec un nombre de bits donnés en
minimisant la distorsion moyenne D. L’’opération de quantication introduit une er-
reur de quantication q entre l’’amplitude x et l’’amplitude quantiée x̃. Nous avons la
relation suivante :

x̃ = x + q [2.9]


Pour la quantication uniforme, l’’erreur de quantication q est comprise entre − 2
et + ∆
2.

En considérant que l’’amplitude du signal est sufsamment grande devant ∆, la


densité de probabilité de q est bien approximativement uniforme :
/
1
∆ si − ∆ 2 ≤ q ≤

2
p(q) =
0 ailleurs

Calculons alors l’’erreur quadratique moyenne D :


# +∞ # ∆
2 1 2 ∆2
D= q p(q)dq = q 2 dq = [2.10]
−∞ ∆ −∆
2
12

Si la quantication uniforme est réalisée sur L = 2 R niveaux et que la dynamique


du signal issu de la source est égal à A avec A = ∆L = ∆2 R , l’’erreur quadratique
moyenne est égale à :
∆2
D(R) =
12
A2 −2R
= 2 [2.11]
12

Licence limitée accordée à doc-ist-Onera


Codage de source 85

Le rapport signal à bruit en décibels s’’exprime comme suit :


σx2
SN R = 10 log10
D
A2
= 10 log10 σx2 − 10 log10 + 10 log10 22R
12
A2 ln 2
= 10 log10 σx2 − 10 log10 + 20R
12 ln 10
A2
= 10 log10 σx2 − 10 log10 + 6, 05R [2.12]
12
avec σx2 variance de la source.

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]

Si le signal x est distribué uniformément entre −A/2 et +A/2, nous avons σ x2 =


A2
12 et la distorsion en fonction du taux de codage R est égale à :

D(R) = σx2 2−2R [2.14]

et le rapport signal à bruit est le suivant :

SN R = 6, 05R dB [2.15]

2.3.3.1. Modulation par impulsion et codage et quantification logarithmique


La modulation par impulsion et codage (PCM) (Pulse Coded Modulation) consti-
tue la plus simple des techniques de codage. Elle comprend deux fonctions distinctes :
l’’opération de quantication scalaire et l’’opération de codage 1.

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 quantica-
tion, le codage et la modulation. Cependant, aujourd’’hui seules les deux premières fonctions
composent les techniques de codage.

Licence limitée accordée à doc-ist-Onera


86 Bases de communications numériques 1

Pour un codeur PCM, après échantillonnage, les échantillons sont simplement


quantiés puis codés. La gure 2.12 présente le synoptique d’’un codeur PCM (sans le
codeur binaire). Cette technique est bien adaptée aux sources sans mémoire.

Quantification

Figure 2.12. Codeur PCM

Nous avons la relation suivante entre l’’entrée et la sortie du codeur PCM :

x˜n = xn + qn [2.16]

où qn est l’’erreur de quantication.

Dans de nombreuses applications comme le traitement de la parole par exemple,


les signaux de petites amplitudes se produisent plus fréquemment que ceux de grandes
amplitudes. La quantication scalaire uniforme n’’exploite pas cette distribution non
uniforme et est donc sous-optimale. C’’est pourquoi plusieurs quantications scalaires
non uniformes ont été proposées pour améliorer les performances. Ceux-ci peuvent
être vus comme l’’association d’’un compresseur qui effectue une transformation non
linéaire et d’’un quanticateur scalaire uniforme. En pratique, cette transformation non
linéaire ou compression est mise en œœuvre par une table de correspondance (look up
table) qui réalise l’’opération de compression.

Un des critères pour la détermination de la fonction non linéaire consiste à main-


tenir constant le rapport signal à bruit dans la dynamique du signal de la source en
adaptant le pas de quantication en fonction du signal d’’entrée yδii ≈ cst. Les fonc-
tions non linéaires choisies sont donc des logarithmes et pour le codage de la parole
deux lois de compression (norme ITU-T G.711) [ITU 89] sont principalement utili-
sées :
–– loi A (système européen) :
/
Ax 1
1+ln A si |x| ≤ A A = 87, 6
y= [2.17]
(signe de x) 1+ln(A|x|)
1+ln A si A1
≤ |x| ≤ 1

Pour la loi A, la fonction inverse s’’écrit :


/ |y|(1+ln(A))
1
A si 0 ≤ |y| ≤ 1+ln(A)
x = (signe de y) exp(|y|(1+ln(A))−1) 1
[2.18]
A si 1+ln(A) ≤ |y| ≤1

Licence limitée accordée à doc-ist-Onera


Codage de source 87

–– loi µ (système américain) :

ln(1 + µ(x))
y = (signe de x) avec µ = 255 et |x| ≤ 1 [2.19]
ln(1 + µ)

Pour la loi µ, la fonction inverse s’’écrit :


) *5 6
1
x = (signe de y) (1 + µ)|y| − 1 avec |y| ≤ 1 [2.20]
µ

Dans les deux lois, les logarithmes sont népériens.

Pour un signal de parole standard, la loi A apporte une réduction de 24 dB du bruit


de quantication par rapport à une quantication uniforme.

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

Figure 2.13. Caractéristiques de transfert d’un compresseur basé sur


la loi A et la loi µ

Licence limitée accordée à doc-ist-Onera


88 Bases de communications numériques 1

La quantication non uniforme peut être réalisée à partir d’’une quantication 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.

Segment Mot d’entrée 12b Mot de sortie 8b


13 0 1 X1 X2 X3 X4 N N N N N N 0 1 1 1 X1 X2 X3 X4
12 0 0 1 X1 X2 X3 X4 N N N N N 0 1 1 0 X1 X2 X3 X4
11 0 0 0 1 X1 X2 X3 X4 N N N N 0 1 0 1 X1 X2 X3 X4
10 0 0 0 0 1 X1 X2 X3 X4 N N N 0 1 0 0 X1 X2 X3 X4
9 0 0 0 0 0 1 X1 X2 X3 X4 N N 0 0 1 1 X1 X2 X3 X4
8 0 0 0 0 0 0 1 X1 X2 X3 X4 N 0 0 1 0 X1 X2 X3 X4
7 0 0 0 0 0 0 0 1 X1 X2 X3 X4 0 0 0 1 X1 X2 X3 X4
7 0 0 0 0 0 0 0 0 X1 X2 X3 X4 0 0 0 0 X1 X2 X3 X4
7 1 0 0 0 0 0 0 0 X1 X2 X3 X4 1 0 0 0 X1 X2 X3 X4
7 1 0 0 0 0 0 0 1 X1 X2 X3 X4 1 0 0 1 X1 X2 X3 X4
6 1 0 0 0 0 0 1 X1 X2 X3 X4 N 1 0 1 0 X1 X2 X3 X4
5 1 0 0 0 0 1 X1 X2 X3 X4 N N 1 0 1 1 X1 X2 X3 X4
4 1 0 0 0 1 X1 X2 X3 X4 N N N 1 1 0 0 X1 X2 X3 X4
3 1 0 0 1 X1 X2 X3 X4 N N N N 1 1 0 1 X1 X2 X3 X4
2 1 0 1 X1 X2 X3 X4 N N N N N 1 1 1 0 X1 X2 X3 X4
1 1 1 X1 X2 X3 X4 N N N N N N 1 1 1 1 X1 X2 X3 X4

Tableau 2.5. Table d’encodage pour la mise en œuvre de la


quantification non uniforme

2.3.4. Quantification scalaire optimale

2.3.4.1. Conditions pour l’optimalité


Le quanticateur scalaire optimal est l’’ensemble de cellules S = {S 1 , S2 , . . . , SL }
et de représentants Y = {y 1 , y2 , . . . , yL } qui minimisent l’’erreur quadratique moyenne
D. Sa détermination n’’admet pas de solution simple. Deux conditions sont cependant
nécessaires pour garantir l’’optimalité et ont permis de construire des algorithmes pra-
tiques :
–– règle du plus proche voisin : soit un ensemble de représentants {y 1 , y2 , . . . , yL },
les cellules doivent satisfaire :

Si = {x : (x − yi )2 ≤ (x − yj )2 ∀j *= i} [2.21]

Licence limitée accordée à doc-ist-Onera


Codage de source 89

–– condition du centroïde : soit un ensemble de cellules {S 1 , S2 , . . . , SL }, les re-


présentants doivent être calculés comme suit :
yi = E[X|X ∈ Si ]
7
xf (x)dx
= 7Si [2.22]
Si f (x)dx

2.3.4.2. Cas limite


Nous avons vu dans le chapitre 3 que Shannon a introduit une fonction distorsion-
taux asymptotique donnée par l’’équation [1.92]. Dans ce paragraphe, nous allons
exprimer plusieurs fonctions distorsion-taux effectives selon les solutions mises en
œœuvre.

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

En intégrant le terme de droite, nous obtenons :

L
1!
D(R) = f (yi )((ai − yi )3 − (ai−1 − yi )3 ) [2.25]
3 i=1

An 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.

Finalement, l’’erreur quadratique moyenne peut donc s’’écrire :

L L
1 ! 1 !
D(R) ≈ P r(X ∈ Si )∆2i = f (yi )∆3i [2.26]
12 i=1 12 i=1

Licence limitée accordée à doc-ist-Onera


90 Bases de communications numériques 1

Dans le cas de la quantication uniforme, nous retrouvons le résultat de l’’équation


[2.10].

Il est possible d’’approximer D(R) en fonction de la distribution de l’’entrée x . En


"L
utilisant la relation i=1 L−1 = 1, à partir de [2.26] nous pouvons écrire :

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

et nous obtenons nalement :


& L
'3 & L '3
1 ! 1 −2 !
(1/3) − 23 (1/3)
D(R) ≥ f (yi ) ∆i L = L f (yi ) ∆i [2.29]
12 i=1
12 i=1

Dans le cas limite de petits intervalles ∆ i , nous pouvons remplacer la sommation


par une intégration comme suit :

L
! # +∞
(1/3)
f (yi ) ∆i ≈ f (1/3) (x)dx [2.30]
i=1 −∞

Finalement, en utilisant la relation L −2 = 2−2R nous obtenons :

&# '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

Licence limitée accordée à doc-ist-Onera


Codage de source 91

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 quantication sca-
laire an que le taux de codage R soit égal à l’’entropie de la source constituée des
échantillons de sortie du quanticateur 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

où HD (X) est l’’entropie différentielle de la source X. En appliquant l’’inégalité de


Jensen et l’’équation [2.26] nous obtenons :
& L '
1 !
3
R ≥ HD (X) − log2 f (yi )∆i
2 i=1

1
= HD (X) − log2 (12D) [2.34]
2
La fonction distorsion-taux effective asymptotique pour un quanticateur scalaire
associé à un codage entropique s’’écrit alors :

1 2HD (X) −2R


D(R) = 2 2 [2.35]
12

Calculons la fonction distorsion-taux pour une source gaussienne. Dans l’’équation


[1.56] nous avons montré que H D (X) = 1/2 log2 2πeσx2 . Ainsi, nous obtenons la
fonction suivante :

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 quantication scalaire est égal à 3 3/e = 1, 91 soit 2,8 dB.

Licence limitée accordée à doc-ist-Onera


92 Bases de communications numériques 1

Il est possible de montrer que la fonction distorsion-taux asymptotique ainsi obte-


nue est à 10 log10 πe/6 soit 1,53 dB de la fonction distorsion-taux de Shannon.

2.3.5. Quantification vectorielle

Pour réaliser l’’opération de quantication vectorielle, nous commençons par for-


mer un vecteur à partir de plusieurs échantillons réels x = [x 1 , x2 , . . . , xN ]. Le
principal intérêt de la quantication vectorielle est de prendre en compte la corréla-
tion entre les échantillons (c’’est-à-dire la propriété de mémoire de la source).

Si les vecteurs sont de dimension N et un nombre de bits par dimension R, le


nombre de vecteurs dans le dictionnaire est égal à :

L = 2N R [2.37]

Le quanticateur vectoriel généralise le quanticateur scalaire : il est composé


d’’un ensemble de régions ou cellules de Voronoï S = {S 1 , S2 , . . . , SL } et d’’un en-
semble de L vecteurs de dimension N qui constitue le dictionnaire du quanticateur
vectoriel Y = {y1 , y2 , . . . , yL } avec yi = [yi1 , yi2 , . . . , yiN ].

L’’opération de quantication vectorielle est dénie mathématiquement par la rela-


tion suivante :

x̃ = yi pour x ∈ Si [2.38]

A partir de la dénition [1.87], l’’erreur quadratique moyenne (EQM) ou distorsion


moyenne par dimension D N est alors égale à :
L #
1 !
DN = ||x − yi ||2 f (x)dx
N i=1 Si
L # ! N
1 !
= |xj − yij |2 f (x)dx [2.39]
N i=1 Si j=1

où f (x) est la densité de probabilité de x.

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.

Licence limitée accordée à doc-ist-Onera


Codage de source 93

2.3.5.1. Algorithme de Lloyd


L’’algorithme de Lloyd [LLO 82] permet de construire itérativement un quantica-
teur en exploitant ces deux critères. L’’algorithme est décrit comme suit :
–– étape1 : initialisation :
- construire une base d’’apprentissage composée d’’un grand nombre d’’échan-
tillons représentatifs de la source à quantier {x 1 , x2 , . . . , xM } avec M 1 L ;
- initialiser le dictionnaire composé des représentants [y 1 , y2 , . . . , yL ] par ti-
rage aléatoire :
–– étape 2 : règle du plus proche voisin :
- à partir du dictionnaire, nous associons chaque échantillon de la base d’’ap-
prentissage à son représentant le plus proche ;

xk ∈ Si si ||xk − yi ||2 ≤ ||xk − yj ||2 ∀j *= i [2.40]

–– étape 3 : condition du centroïde :


- pour l’’ensemble des échantillons x k appartenant à la i-ème région S i , nous
calculons la moyenne qui devient le nouveau représentant de S i :

1 !
yi = xk [2.41]
|Si |
xk ∈Si

–– retourner à l’étape 2 jusqu’à convergence.

Nous n’’avons pas la garantie que le quanticateur 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.

Il existe un deuxième algorithme pour construire un quanticateur appelé l’’algo-


rithme de Lloyd 2 ou algorithme de Lloyd-Max.

Prenons un exemple pour illustrer l’’apport de la quantication vectorielle dans


le cas d’’une source à mémoire. Le signal à quantier est un signal synthétique de la
forme x(n) = x(n−1)−0, 25×x(n−2)+'(n) où ' est un bruit blanc gaussien centré
(modèle autorégressif d’’ordre 2) et donc à mémoire comme nous pouvons le voir sur
la gure 2.14. En formant des vecteurs à deux dimensions x(n) = [x(n) x(n + 1)] T
et en représentant ces vecteurs dans le plan comme présenté sur la gure 2.15, nous
pouvons voir qu’’il existe une corrélation entre les échantillons successifs puisque les

Licence limitée accordée à doc-ist-Onera


94 Bases de communications numériques 1

vecteurs sont plutôt concentrés le long d’’une droite. Ainsi, contrairement à la quan-
tication scalaire, la quantication 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

Figure 2.14. Exemple de réalisation d’une source à mémoire en


fonction du temps

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)

Figure 2.15. Exemple de réalisation d’une source à mémoire projetée


dans un plan

Licence limitée accordée à doc-ist-Onera


Codage de source 95

Sur les gures 2.16 et 2.17, nous présentons les vecteurs et les cellules obtenues
aprés quantication scalaire et vectorielle. Dans les deux cas, les représentants ont été
obtenus en utilisant l’’algorithme de Lloyd. Pour le quanticateur scalaire, le nombre
de représentants L est égal à 4 alors que pour le quanticateur vectoriel L = 16 car
nous avons choisi un nombre de dimensions N = 2. Les deux quanticateurs utilisent
donc 2 bits en moyenne par échantillon. L’’erreur quadratique moyenne par dimension
est égale à 0,0267 et 0,015 respectivement pour le quanticateur 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

Figure 2.16. Exemple de quantification scalaire

1.5

0.5

ï0.5

ï1

ï1.5

ï2
ï2 ï1.5 ï1 ï0.5 0 0.5 1 1.5 2

Figure 2.17. Exemple de quantification vectorielle

Licence limitée accordée à doc-ist-Onera


96 Bases de communications numériques 1

2.3.6. Quantification vectorielle optimale

Soit le moment d’’inertie normalisé M (S i , yi ) pour une cellule de Voronoi S i :

#
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 :

DN (R) ≈ MN βN σx2 2−2R [2.43]

avec :

&# '(N +2)/N


+∞
1 N/(N +2)
βN = 2 f (x)dx [2.44]
σx −∞


le cas N = 1 (quantication 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’’inni, 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

En conclusion, le passage d’’une quantication scalaire à une quantication vecto-


rielle pour une source gaussienne permet un gain asynptotique de 4,35 dB.

L’’utilisation directe d’’un quanticateur vectoriel pose souvent un problème de


complexité. En effet, en absence de structure particulière, il est nécessaire pour dé-
terminer le vecteur de sortie x̃ d’’avoir recours à une recherche exhaustive. Diffé-
rents auteurs ont proposé des quanticateurs vectoriels ayant une structure particulière
comme :

Licence limitée accordée à doc-ist-Onera


Codage de source 97

–– le quanticateur vectoriel multi-étages [JUA 82] ;


–– le quanticateur vectoriel à structure arborescente [GRA 82, LIN 80] ;
–– le quanticateur vectoriel de type gain-forme [SAB 84] ;
–– le quanticateur vectoriel sur réseaux de points [CON 92, GIB 88].

Ce paragraphe n’’a traité que les principes de la quantication vectorielle. Pour un


traitement complet nous vous recommandons l’’ouvrage [GER 92] ou l’’article de Gray
et Neuhoff [GRA 98].

2.4. Techniques de codage pour les sources analogiques à mémoire

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 quantication
scalaire associée à un codage entropique soit une quantication 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’’efcacité du codeur de source.

Il existe trois grandes familles de techniques pour exploiter cette propriété de cor-
rélation an 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 quantication 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.).

2.4.2. Prédiction linéaire

La prédiction linéaire est une technique d’’estimation statistique classique en trai-


tement du signal pour estimer les échantillons courants ou futurs d’’un processus aléa-
toire à partir des échantillons passés [MAK 75, VAI 08].

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.

Licence limitée accordée à doc-ist-Onera


98 Bases de communications numériques 1

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

Z-1 Z-1 Z-1


xn -1 xn - 2 xn - P

Figure 2.18. Synoptique du prédicteur d’ordre P

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]

Déterminons les P coefcients de prédiction a i qui minimisent l’’erreur quadra-


tique moyenne E[e 2n ] :

E[e2n ] = E[(xn − x̂n )2 ]


= E(x2n − 2xn xTn−1 a + aT xn−1 xTn−1 a)
= Rxx (0) − 2rT a + aT Ra [2.48]

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)

où Rxx (m) = E(xn xn−m ) est la fonction d’’autocorrélation des échantillons x n .

Licence limitée accordée à doc-ist-Onera


Codage de source 99

Dérivons E[e2n ] par rapport 2 à a :

∂E[e2n ]
= −2r + 2Ra [2.49]
∂a

En annulant cette expression, nous obtenons la solution suivante :

a = R−1 r [2.50]

En remplaçant a obtenu précédemment dans l’’équation [2.48] nous avons :

E(e2n ) = Rxx (0) − rT a [2.51]

Cette relation correspond à la résolution du système linéaire suivant comprenant


un ensemble d’’équations appelées équations de Yuke-Walker ou de Wiener-Hopf :

P
!
ai Rxx (i − j) = Rxx (j) pour j = 1, 2, . . . , P [2.52]
i=1

Ce système peut se résoudre par l’’algorithme de Gauss mais nécessite O(P 3 )


opérations. L’’algorithme de Levinson-Durbin évite d’’inverser la matrice R et ne né-
cessite que O(P 2 ) opérations. Il permet de construire récursivement le prédicteur à
l’’ordre P en calculant le prédicteur à l’’ordre m + 1 à partir du prédicteur calculé à
l’’ordre m. Nous donnerons la description de cet algorithme sans justication. Posons
2
a1 (m), . . . , am (m) les coefcients du prédicteur à l’’ordre m et σ E (m) la variance de
l’’erreur de prédiction à l’’ordre m. L’’algorithme de Levinson-Durbin est le suivant :

a1 (1) = k1 = Rxx (1)/Rxx (0)


2
σE (1) = Rxx (0)(1 − k12 )

Pour j = 2, . . . , P :
& '
1
"j−1
kj = 2 (j−1)
σE
Rxx (j) − i=1 ai (j − 1)Rxx (j − i)

ai (j) = ai (j − 1) − kj aj−i (j − 1) pour i = 1, . . . , j − 1

∂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.

Licence limitée accordée à doc-ist-Onera


100 Bases de communications numériques 1

aj (j) = kj
2 2
σE (j) = σE (j − 1)(1 − kj2 )

Les coefcients ai sont égaux aux coefcients a i (P ) ∀i = 1, . . . , P obtenus à la


n de l’’algorithme. Les coefcients k i ∀i = 1, . . . , P sont appelés les coefcients
de corrélation partielle et sont de module inférieur à 1. L’’erreur quadratique moyenne
résiduelle est donnée par :

P
2
2 2
σE = σE (P ) = Rxx (0) (1 − ki2 ) [2.53]
i=1

Les coefcients ai peuvent être déterminés en début de transmission ou être


ajustés périodiquement. Dans la pratique, la fonction d’’autocorrélation R xx (m) =
E(xn xn−m ) est estimée à partir d’’un nombre ni de données observées N 1 P :

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 :

σx2 Rxx (0)


G= 2 = "P
σE Rxx (0) − i=1 ai Rxx (i)
1
= >P [2.55]
i=1 (1 − ki2 )

Comme le module des coefcients de corrélation partielle k i est inférieur à 1, le


gain est une fonction croissante de P . Le gain de prédiction sera d’’autant plus grand
que les modules |ki | seront proches de 1.

2.4.3. Quantification scalaire prédictive

2.4.3.1. Modulation Delta


Nous savons que les sources analogiques (son et image) sont trés corrélées et cette
redondance ne peut pas être exploitée par une simple modulation PCM. Lorsque la
source est à mémoire, la variation de l’’amplitude entre les échantillons successifs
est relativement faible. Ainsi, en quantiant les différences entre les amplitudes des
échantillons successifs, il est possible de réduire le débit en sortie du codeur.

Licence limitée accordée à doc-ist-Onera


Codage de source 101

Le principe de base de la modulation Delta consiste à quantier la différence d’’am-


plitude en entre l’’échantillon courant x n et l’’échantillon reconstruit x̂ n :

en = xn − x̂n [2.56]

La quantication est uniquement réalisée sur deux niveaux (ẽ n = ±∆). La


gure 2.19 présente le synoptique d’’un modulateur Delta.

x(t ) Quantification
e = ±D
~
1 bit

Acc

Figure 2.19. Modulateur Delta

L’’accumulateur réalise l’’opération suivante :

x̂n = x̂n−1 + ẽn−1 [2.57]

Si à l’’instant n, nous avons x n > x̂n , alors ẽn = +∆ et la sortie de l’’accumulateur


à l’’instant n + 1 est incrémentée de ∆ : x̂ n+1 = x̂n + ∆.

Si à l’’instant n, nous avons x n ≤ x̂n , alors ẽn = −∆ et la sortie de l’’accumulateur


à l’’instant n + 1 est décrémentée de ∆ : x̂ n+1 = x̂n − ∆.

Le synoptique du démodulateur Delta est présenté sur la gure 2.20.

Acc

Figure 2.20. Démodulateur Delta

Licence limitée accordée à doc-ist-Onera


102 Bases de communications numériques 1

L’’erreur de quantication q n apportée par l’’opération de quantication est donnée


par :

qn = ẽn − en [2.58]

Il est alors possible d’’exprimer l’’échantillon estimé x̂ n à partir de x̂n−1 et de l’’er-


reur de quantication :

x̂n = x̂n−1 + ẽn−1


= (xn−1 + qn−1 − ẽn−1 ) + ẽn−1
= xn−1 + qn−1 [2.59]

Ainsi l’’échantillon estimé x̂n est égal à l’’échantillon précédent x n−1 entaché de
l’’erreur de quantication q n−1 . Un exemple de fonctionnement est donné sur la
gure 2.21.

x(t)

x(t)

Figure 2.21. Exemple d’évolution de x̂n dans un modulateur Delta

Licence limitée accordée à doc-ist-Onera


Codage de source 103

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 efcace 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).

2.4.3.2. Modulation par impulsion et codage différentiel


Le principe de base de la modulation par impulsion et codage différentiel DPCM
(Differential Pulse Coded Modulation) consiste à quantier la différence d’’amplitude
en entre l’’échantillon courant x n et l’’échantillon prédit x̂ n . en = xn − x̂n est appelée
l’’erreur de prédiction. Faisons l’’hypothèse que l’’échantillon prédit x̂ n côté récepteur
puisse être transmis à l’’émetteur comme présenté sur la gure 2.22.

~
en ~
xn en Quantification xn

xˆˆn

Figure 2.22. Synoptique d’une chaîne DPCM idéalisée

En pratique, x̂ n est obtenu en utilisant un prédicteur d’’ordre P comme nous l’’avons


vu précédemment. Il n’’est cependant pas possible d’’utiliser x n comme entrée du pré-
dicteur. En effet, dans ce cas, il ne sera pas possible d’’ajouter exactement x̂ n côté
récepteur (xn n’’étant pas connu au récepteur) et nous aurons alors une erreur de re-
construction x̃n − xn supérieure à l’’erreur de quantication ẽ n − en (voir exercice
sur la modulation DPCM). La solution retenue consiste à réaliser une quantication
prédictive en boucle fermée, c’’est-à-dire en incorporant un décodeur local. Ainsi, la
prédiction se fera sur le signal reconstruit x̃ n . Le synoptique du codeur DPCM utili-
sant la quantication prédictive en boucle fermée est donné sur la gure 2.23.

Licence limitée accordée à doc-ist-Onera


104 Bases de communications numériques 1

Quantification

Prédiction

Figure 2.23. Codeur DPCM

La sortie du préicteur est donnée par :

P
!
x̂n = ai x̃n−i [2.60]
i=1

où l’’entrée du prédicteeur es égale à : x̃ n = x̂n + ẽn .

Nous pouvons vérier que l’’erreur de quantication 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]

La gure 2.24 présente le synoptique d’’un décodeur DPCM.

Prédiction

Figure 2.24. Décodeur DPCM

Licence limitée accordée à doc-ist-Onera


Codage de source 105

Les coefcients du ltre prédicteur devront également être transmis périodique-


ment au récepteur. Dans ce cas, le décodage utilisera le même prédicteur que pour
le codage (en considérant l’’absence d’’erreurs de transmission). Ainsi, nous pouvons
reconstruire les échantillons x̃ n = ẽn + x̂n .

Avec cette structure, les échantillons à quantier 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 quantication 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 quantication 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].

2.4.4. Codage par transformée

Comme la prédiction linéaire ou la quantication vectorielle, le codage par trans-


formée exploite la corrélation de la source an de réduire la quantité d’’information
à transmettre. Le principe du codage par transformée consiste après avoir regroupé
les échantillons en vecteurs de dimension N puis à appliquer à chaque vecteur d’’en-
trée une transformation linéaire qui va signicativement réduire la corrélation entre
les échantillons et concentrer l’’énergie sur quelques composantes [GOY 01]. Il sufra
alors de quantier ces composantes par une simple quantication scalaire et appliquer
un codage entropique.

Les principaux avantages du codage par transformée sont sa complexité réduite et


sa facilité à traiter des vecteurs dont la dimension N peut être très grande en utilisant
des transformations linéaires. Un autre avantage est de permettre, après transforma-
tion, d’’exploiter au mieux la perception humaine (auditive ou visuelle selon l’’applica-
tion).

Le synoptique du codage par transformée est présenté sur la gure 2.25.

Au codage, la transformée linéaire dénie par la matrice A convertit le vecteur x =


[x0 , x1 , . . . , xN −1 ] composés de N échantillons en un vecteur y = [y 0 , y1 , . . . , yN −1 ]
comme suit :

y = Ax [2.62]

Nous appliquons alors une quantication scalaire α k à chaque coefcient y k . Les


index sont alors codés en utilisant un codage entropique γ. Au décodage, après déco-
dage entropique γ −1 , nous appliquons une quantication inverse β k sur les index puis

Licence limitée accordée à doc-ist-Onera


106 Bases de communications numériques 1

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]

où B est la matrice de transformation inverse.

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

Figure 2.25. Synoptique de l’ensemble codage-décodage


par transformée

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]

En plus de conserver la norme du vecteur d’’entrée, les transformées orthogonales


conservent la distorsion c’’est-à-dire que E[||x − x̂||2 ] = E[||y − ŷ||2 ]. Nous pouvons
montrer que la transformée qui minimise la distorsion est la transformée de Karhunen-
Loève. Les colonnes a i de la matrice transformée A doivent satisfaire la relation sui-
vante :

Rai = λi ai [2.65]

où λi sont les valeurs propres de la matrice de covariance R = E[xx T ] du vecteur x.


Ainsi, les colonnes ai doivent être les propres de R.

Cette transformée est aussi appelée transformée d’’Hotelling ou analyse en compo-


santes principales PCA (Principal Components Analysis). L’’inconvénient majeur de la
transformée de Karhunen-Loève est sa grande complexité de calcul car elle nécessite

Licence limitée accordée à doc-ist-Onera


Codage de source 107

d’’actualiser la matrice de transformation en fonction de la matrice de covariance si les


signaux ne sont pas tout à fait stationnaires. C’’est pourquoi, en pratique, nous utilisons
plutôt la transformée de Fourier discrète (TFD) ou en cosinus discrète (DCT).

Les coefcients akn de la matrice A pour la transformée en cosinus discrète sont


donnés par :

+ ) * ,
π 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

La transformée en cosinus discrète est utilisée dans de nombreux standards de


compression d’’image xe ou animée, comme par exemple JPEG et MPEG.

Un des problèmes à résoudre consiste à déterminer la meilleure allocation des bits


an de minimiser l’’erreur quadratique moyenne pour un taux de codage global R :

N −1 N −1
1 ! 1 !
D(R) = Di (Ri ) sous la contrainte Ri = R [2.67]
N i=0 N i=0

où Ri et Di (Ri) sont respectivement le taux de codage et la distorsion associé au


coefcient yi .

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.

Licence limitée accordée à doc-ist-Onera


108 Bases de communications numériques 1

1.5

0.5

ï0.5

ï1

ï1.5

ï2
ï2 ï1.5 ï1 ï0.5 0 0.5 1 1.5 2

Figure 2.26. Exemple de quantification scalaire après transformée


Karhunen-Loève

Sur la gure 2.26 nous présentons les vecteurs et les cellules obtenues aprés trans-
formée Karhunen-Loève et quantication 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 quantication vectorielle.

2.4.5. Codage par sous-bande

Le codage par sous-bande consiste à scinder le signal d’’entrée en plusieurs signaux


bande étroite centrés autour de différentes fréquences puis à coder ces signaux sépa-
remment. Ce codage est le première étage de nombreuses techniques de codage audio
et vidéo. Sa mise en œœuvre est facilitée par l’’utilisation d’’un banc de ltres composé
de N ltres comme présenté sur la gure 2.27.

L’’opération de décimation (↓ N ) consiste à supprimer N − 1 échantillons sur N et


l’’opération de sur-échantillonnage (↑ N ) consiste à insérer N − 1 zéros entre chaque
échantillon. Le ltre prototype G est un ltre à réponse impulsionnelle nie contenant
L coefcients, dont la transformée en z s’’écrit :
L−1
!
G(z) = g[l]z −l [2.69]
l=0

Licence limitée accordée à doc-ist-Onera


Codage de source 109

G0 ( z ) ØN ≠N F0 ( z )
xˆˆk
G1 ( z ) ØN ≠N F1 ( z )

xk

GN -1 ( z ) ØN ≠N FN -1 ( z )

Figure 2.27. Codage par sous-bande

Les N ltres de réponse impulsionnelle G i (z) et de réponse en fréquence G i (f )


se déduisent du ltre prototype G après un décalage fréquentiel de (2i + 1)/4N :

) * ) *
2i + 1 2i + 1
Gi (f ) = G f − +G f + [2.70]
4N 4N

Ainsi, la fréquence centrale normalisée de chaque ltre est (2k + 1)/4N et la


largeur de bande normalisée est 1/2N . Les N réponses impulsionnelles se déduisent
de la réponse impulsionnelle :
L−1
! ) *
2i + 1
Gi (z) = 2g[l] cos 2π l z −l [2.71]
4N
l=0

En pratique, le banc de ltre est mis en œœuvre en utilisant l’’implémentation poly-


phase [VAI 93].

2.5. Application à la compression des images et du son

2.5.1. Application à la compression d’image fixe

Dans ce paragraphe, nous présenterons succinctement la norme JPEG [JPE 90]


adoptée en 1992. JPEG (Joint Photographic Experts Group) est un groupe qui édite
des normes de compression pour images xes. Dans la norme JPEG, les pixels de
l’’image sont traités par blocs de 8x8 pixels. Chaque pixel est codé sur 8 bits. Nous ne
considérerons ici que la partie luminance mais un traitement similaire est aussi appli-
qué aux deux signaux de chrominance. Pour chaque bloc, les étapes de compression
sont les suivantes :
–– application de la transformée de cosinus discrète 2D (DCT) en effectuant une
DCT de dimension 1D sur les lignes puis sur les colonnes des blocs de 8x8 pixels ;

Licence limitée accordée à doc-ist-Onera


110 Bases de communications numériques 1

–– soustraction d’’un facteur 128 ;


–– quantication à partir d’’une table prédénie en appliquant à chaque symbole
l’’opération suivante :
) *
Q yij
yij = arrondi [2.72]
Qij

Un exemple de table est donné dans le tableau 2.6 ;


–– les données de chaque bloc sont alors sérialisées (zig zag) comme sur la
gure 2.28 ;
–– les données sont encodées en utilisant le codage entropique de Huffman.

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

Tableau 2.6. Table de quantification JPEG

Figure 2.28. Sérialisation zigzag

Un compromis entre la qualité de l’’image reconstituée et le nombre de bits trans-


mis est ainsi réalisé. Dans le standard JPEG les éléments (DC) sont encodés séparé-
ment (codage prédictif).

Licence limitée accordée à doc-ist-Onera


Codage de source 111

Dans la norme JPEG2000 [TAU 02], la transformée en ondelettes est utilisée à la


place de la transformée DCT. Avant quantication, l’’image est décomposée en sous-
images qui correpondent à des versions ltrées passe-bande et sous-échantillonée de
l’’image originale. La transformée en ondelettes peut être implémentée efcacement
en utilisant un banc de ltres. Les normes de compression vidéo MPEG (MPEG-1,
MPEG-2, MPEG-4 Part 2, MPEG-4 AVC/H.264) exploitent la corrélation temporelle
en plus de la corrélation spatiale et utilisent toutes un codage par transformée basé sur
la transformée DCT [SAL 07]. Dans la norme H265 HEVC (High Efficiency Video
Coding) publiée en 2013 [SUL 12] la dimension de la transformée DCT est adaptée
en fonction du contenu des images (16x16, 32x32, 64x64). Cette norme est particuliè-
rement bien adaptée au codage vidéo en très haute dénition (2K, 4K, 8K, etc.) et en
dénition standard pour les mobiles.

2.5.2. Application au codage de la parole

2.5.2.1. Caractéristiques des signaux de la parole


La parole est le résultat de l’’action coordonnée des appareils respiratoire et mas-
ticatoire. Les poumons propulsent l’’air pendant la phase d’’expiration, à travers la tra-
chée artère. Au niveau du larynx, la pression de l’’air est modulée avant d’’être appli-
quée au conduit vocal composé des cavités pharyngienne puis buccale et nasale en pa-
rallèle. Le signal de parole est un signal complexe en raison des différents organes mis
en œœuvre pour sa génération. Il est localement stationnaire lorsque la fenêtre d’’analyse
est d’’environ 20 ms.

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 »).

Licence limitée accordée à doc-ist-Onera


112 Bases de communications numériques 1

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 quantication 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)

Figure 2.29. Exemple d’un signal de parole (« ceci »)


dans le domaine temporel

Licence limitée accordée à doc-ist-Onera


Codage de source 113

2.5.2.2. Codage direct


Nous avons étudié la quantication scalaire prédictive dans la section 2.4.3. Le
tableau 2.7 présente une comparaison des différentes techniques de codage direct de
la parole (PCM, DPCM, ADPCM) en considérant une fréquence d’’échantillonnage de
8 kHz. Les paramètres choisis sont ceux qui sont les plus couramment utilisés.

Technique Quantificateur Nb de bits Débit


PCM uniforme 12 bits 96 kb/s
log PCM logarithmique 8 bits 64 kb/s
DPCM logarithmique 4––6 bits 32––48 kb/s
ADPCM adaptative 3––4 bits 24––32 kb/s

Tableau 2.7. Comparaison des modulations pour le codage


de la parole

2.5.2.3. Codeur par prédiction linéaire LPC


Le codeur par prédiction linéaire LPC (Linear Predictive Coder) [CAM 86] est
un codeur maintenant obsolète basé sur la prédiction linéaire. Il est à la base d’’un
grand nombre de codeurs de parole actuels. La gure 2.30 présente le synoptique de
ce codeur de parole.

Echantillons périodiques voisé


de période T
1
H ( z) =
A( z ) signal synthétique ˆx̂
non voisé
g
bruit aléatoire

Figure 2.30. Synoptique simplifié d’un codeur LPC

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

Licence limitée accordée à doc-ist-Onera


114 Bases de communications numériques 1

Ainsi, la densité spectrale de puissance du signal reconstruite au récepteur x̂ est


donnée par :

σ2
γX̂ X̂ (f ) = = γXX (f ) [2.74]
|A(f )|2

Les coefcients ai du ltre sont déterminés en utilisant l’’algorithme de Levinson-


Durbin. Dans le cas des sons voisés, le signal d’’excitation e est un peigne de Dirac
dont la période est égale à la fréquence fondamentale du signal d’’entrée.

Pour réduire le nombre de bits associés aux P coefcients a i à transmettre, nous


utilisons la représentation en paire de ligne spectrale LSP (Line Spectrum Pairs). Il
s’’agit à partir de A(z) de construire les deux polynomes P (z) et Q(z) suivants :

P (z) = A(z) − z −P −1 A(z −1 ) et Q(z) = A(z) + z −P −1 A(z −1 ) [2.75]

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 coefcients a i , nous pouvons calculer les coefcients w i qui pos-
sèdent la propriété suivante :

0 < w1 < w2 < · · · < wP < π [2.78]

Sous réserve de conserver l’’ordre dans l’’équation [2.78] après quantication, la


représentation LSP guarantit la stabilité du ltre reconstruit au décodage. Elle est aussi
utilisée pour interpoler les coefcients lorsque la trame est divisée en plusieurs sous-
trames.

Nous allons brièvement décrire les paramètres retenus pour le codeur LPC10 à dix
coefcients 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

Licence limitée accordée à doc-ist-Onera


Codage de source 115

d’’échantillonnage est de 8 kHz, la trame comprend donc 180 échantillons. Le débit


binaire de sortie étant de 2,4 kbit/s, 54 bits sufsent pour coder une trame. Parmis
ces 54 bits, 42 bits sont utilisés pour le codage des coefcients LPC en utilisant la
représentation LSP, 6 bits pour la période fondamentale, 1 bit pour la sélection son
voisé/non voisé et 5 bits pour le gain g.

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 quantication vectorielle de type
forme-gain est appliquée pour coder cette erreur résiduelle. Ainsi, l’’objectif du codeur
sera de déterminer les coefcients 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

eˆˆ L-1 gˆˆ M -1


Dictionnaire Dictionnaire
d’’excitations de gains

Figure 2.31. Synoptique simplifié d’un codeur CELP

Licence limitée accordée à doc-ist-Onera


116 Bases de communications numériques 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

eˆˆ L-1 gˆˆ M -1


Dictionnaire Dictionnaire
d’’excitations de gains

Figure 2.32. Autre synoptique d’un codeur CELP

La recherche conjointe de l’’ensemble des paramètres étant trop complexe, nous


commençons par déterminer les coefcients par prédiction linéaire en appliquant un
signal blanc aléatoire en entrée des deux ltres. Il restera alors à déterminer le signal
à appliquer en entrée ainsi et le gain. Un préltrage fréquentiel (non représenté sur
les synoptiques) est ajouté pour concentrer l’’erreur dans les zones non perceptibles
en exploitant la propriété du masquage du son que nous introduirons dans le prochain
paragraphe. En fonction de la norme, le dictionnaire des séquences d’’excitation est
prédéni ou adapté à la statistique du signal d’’entrée.

Nous présentons quelques exemples de normes utilisant le codeur CELP ou ses


variantes :
–– norme ITU G.723.1 deux codeurs sont normalisés MP-MLQ (Multi-Pulse Maxi-
mum Likelihood Quantization) (6,3 kbit/s) / ACELP (Algebraic CELP) (5,3 kbit/s).
Cette norme dénit le codeur de parole pour la téléconférence sur réseau télépho-
nique public et pour la voix sur IP (VOIP). Les ltres STP et LTP sont respectivement
d’’ordre 10 et 5 ;
–– norme ITU G.728 LD low delay CELP (16 kbit/s) : la durée de la trame est très
courte (0,625 ms). Il n’’y a pas de ltre LTP et les coefcients du ltre STP ne sont pas
transmis au décodeur. Les indices des vecteurs d’’excitation et gain sont codés sur 10
bits (10 bits/0,625 ms= 16 kbit/s) ;
–– norme ITU G.729 CS-ACELP Conjugate Structure Algebraic CELP (8 kbit/s) :
les vecteurs d’’excitation sont des séquences codées à structure algébrique conjuguée.
Les éléments non nuls des vecteurs d’’excitation du dictionnaire ne peuvent prendre

Licence limitée accordée à doc-ist-Onera


Codage de source 117

que la valeur 1 ou ––1 et sont à des positions régulières [SAL 98]. La répartition des
débits est la suivante : coefcients du ltre STP d’’ordre 10(1,8kbit/s), coefcients 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 : coefcients du ltre STP d’’ordre 8 (1,8kbit/s),
coefcients 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).

Une description détaillée des différentes techniques de codage de la parole et des


normes est donnée dans l’’ouvrage de W. Chu [CHU 04].

2.5.3. Application à la compression audio

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.

2.5.3.1. Propriétés psychoacoustiques


L’’oreille humaine se décompose en trois parties : l’’oreille externe (pavillon et canal
auditif), l’’oreille moyenne (tympan et chaîne des osselets) et l’’oreille interne (cochlée)
qui jouent chacune un rôle spécique dans le système auditif. Les vibrations sonores
parviennent au tympan sous la forme de variations de pression captées par l’’oreille
externe. Ces variations de pression sont transformées en vibrations mécaniques par
la chaîne des osselets et transmises à la cochlée. La cochlée contient un liquide dans
lequel baigne la membrane basilaire d’’une longueur de 3 cm qui transforme l’’énergie
mécanique en énergie électrique et est reliée au nerf auditif. L’’étude des propriétés
psychoacoustiques de l’’oreille menées par Fletcher puis dans les années 1960 par

Licence limitée accordée à doc-ist-Onera


118 Bases de communications numériques 1

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)

Figure 2.33. Courbe de seuil d’audition

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.

La gure 2.34 illustre le phénomène de masquage pour quatre composantes tonales


d’’un signal audio respectivement de fréquence 1940 Hz, 4,5 kHz, 5,2 kHz et 19 kHz.
Les courbes associées à chacune de ces fréquences sont les courbes de masquage et

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.

Licence limitée accordée à doc-ist-Onera


Codage de source 119

dénissent le seuil d’’audition requis en fonction de la fréquence pour pouvoir entendre


le son. Ces expériences montrent que le masquage est effectif dans une bande étroite
autour du signal masquant. Il faut noter que la pente des courbes de masquage est plus
forte vers les fréquences inférieures que vers les fréquences supérieures.

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

Tableau 2.8. Liste des 24 bandes critiques de l’échelle de Bark

100

80
Niveau de masquage (dB)

60

40

20

ï20
2 3 4
10 10 10
Fréquence (Hz)

Figure 2.34. Niveau de masquage

Licence limitée accordée à doc-ist-Onera


120 Bases de communications numériques 1

2.5.3.2. Codage audio MPEG


La norme MPEG (Motion Picture Expert Group) constitue une norme internatio-
nale ISO proposant des méthodes de compression vidéo et audio. La norme MPEG 1
a été adoptée en 1992 alors que la norme MPEG 2 a été publiée en 1994 [PAN 95].
Le codeur audio MPEG exploite les limitations du système auditif. Plus particulière-
ment, il élimine les fréquences inaudibles, ce qui permet de réduire considérablement
le nombre de bits nécessaire pour coder le signal audio. Selon l’’application, trois dif-
férentes couches du système de codage audio peuvent être utilisées. Les débits requis
par les différentes couches pour obtenir la même qualité subjective qu’’un compact
disc stéréo sont les suivants :
–– couche 1 : 384 kbit/s (soit un taux de compression de 3,6) ;
–– couche 2 : 256 kbit/s (soit un taux de compression de 5,4) ;
–– couche 3 : 128 kbit/s (soit un taux de compression de 10,8).

Un compact disc nécessite un débit de 2 × 44 100 × 16 = 1 378 kbit/s (fréquence


d’’échantillonnage = 44 100 Hz et quantication sur 16 bits).

Dans ce paragraphe, nous ne donnerons que quelques informations succinctes sur


la norme MPEG1 couche 1. Cette norme autorise trois fréquences d’’échantillonnage :
32, 44,1, et 48 kHz.

Le synoptique général d’’un codeur audio MPEG est présenté sur la gure 2.35.

Figure 2.35. Synoptique du codeur audio MPEG

Le codeur audio MPEG comprend quatres parties :


–– le banc de ltres répartit le signal audio d’’entrée en N = 32 signaux bande
étroite de largeur identique ;
–– l’’estimation spectrale estime la densité spectrale de puissance du signal audio
dans la fenêtre d’’analyse courante ;

Licence limitée accordée à doc-ist-Onera


Codage de source 121

–– le modèle psychoacoustique détermine le seuil de masquage et le rapport signal


sur masque pour chaque sous-bande ;
–– l’’allocation de bits calcule le nombre de bits alloué à chaque sous-bande à partir
des rapports signal sur masque.

Dans la norme MPEG 1 couche 1, à partir d’’une trame de 512 échantillons, le


banc de ltre délivre N = 32 signaux qui sont sous-échantillonnés d’’un facteur 32.
Exprimons les 32 signaux à la sortie du banc de ltre à partir du signal d’’entrée et de
la réponse impulsionnelle des différents ltres :

511
!
st [i] = x[t − n]Hi [n] i = 0, . . . , 31 [2.79]
n=0

où x[n] est le signal d’’entrée avec 0 ≤ n ≤ 511 et :

) *
(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 coefcients de la matrice
d’’analyse donnés par :

) *
(2i + 1) × (k − 16) × π
M [i][k] = cos [2.82]
64

Licence limitée accordée à doc-ist-Onera


122 Bases de communications numériques 1

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

Figure 2.36. Réponse impulsionnelle du filtre prototype

La réponse en fréquence du banc de ltre ainsi obtenue est représentée sur la


gure 2.37. Chaque sous-bande est de largeur 22/32 ≈ 0, 7 kHz.

Pour chaque bloc de 32 échantillons traité, la sortie se compose d’’un échantillon


pour chaque sous-bande. Le signal est donc sous-échantillonné par 32. L’’inconvénient
majeur de ce type de ltrage est que la largeur de bande de chacune des sous-bandes
est identique ce qui ne correspond pas aux bandes critiques du modèle auditif humain.

Comme indiqué précédemment, le modèle psychoacoustique détermine le rap-


port signal sur masque pour chaque sous-bande. Deux modèles sont proposés dans la
norme. La procédure est assez complexe et dépend du modèle choisi. Dans le modèle
1, la procédure consiste à localiser tout d’’abord les composantes tonales qui corres-
pondent aux pics d’’énergie déterminés sur la densité spectrale de puissance du signal
audio. Après traitement de ces composantes tonales, l’’énergie restante dans chacune
des bandes critiques est calculée et est associée à une composante non tonale. La fré-
quence de ces composantes non tonales est égale à la moyenne géométrique calculée
dans la bande critique concernée. Ensuite, le seuil de masquage est déterminé pour
chacune des bandes critiques et les rapports signal à masque associés sont calculés.
Ces rapports signal à masque sont nalement utilisés pour l’’allocation des bits dans
les sous-bandes.

Licence limitée accordée à doc-ist-Onera


Codage de source 123

ï20
Réponse en fréquence (dB)

ï40

ï60

ï80

ï100

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 2.2


fréquence (Hz) 4
x 10

Figure 2.37. Réponse en fréquence du banc de filtres


dans la bande [0 ; 22Khz]

2.6. Exercices

2.6.1. Exercice 1 : entropie et codage d’Huffman

Une source d’’information X de débit D = 1 000 symboles/s utilise quatre mes-


sages A, B, C, D avec les probabilités d’’apparition : P (A) = 0, 6; P (B) = 0, 2;
P (C) = 0, 15; P (D) = 0, 05.
1) Calculer l’’entropie H(X) et le débit informationnel D I de la source X.
2) Nous encodons les symboles de la source de la façon suivante :
A->00 ; C-> 10 ; B -> 01 ; D -> 11
Déterminer le débit binaire D & et l’’entropie binaire H & de cette nouvelle source
aprés ce codage.
3) Utiliser l’’algorithme de Huffman pour encoder efcacement les symboles de
la source. Calculer le nouveau débit binaire D && . Calculer l’’entropie binaire H && .
Conclure.
4) Comment pouvons-nous améliorer l’’efcacité du codage ?

Licence limitée accordée à doc-ist-Onera


124 Bases de communications numériques 1

2.6.2. Exercice 2 : entropie et codage d’Huffman d’une source corrélée

Une source d’’information X utilise trois messages A, B, C avec les probabilités


d’’apparition : P (A) = 0, 5; P (B) = 0, 25; P (C) = 0, 25.
1) Calculer l’’entropie H(X).
2) Utiliser l’’algorithme de Huffman pour encoder efcacement les symboles de la
source. Calculer la longueur moyenne des mots ainsi obtenue.
3) Nous supposons maintenant que les symboles sont corrélés deux à deux :
P (AA) = 0, 25 ; p(AB) = 0, 2 ; p(AC) = 0, 05 ; p(BA) = 0, 05 ; p(BB) =
0, 05 ; p(BC) = 0, 15 ; p(CA) = 0, 2 ; p(CB) = 0; p(CC) = 0, 05. Calculer H(X).
Proposer un encodage efcace de cette source et calculer la longueur moyenne des
mots.

2.6.3. Exercice 3 : codage LZ78

Soit le message binaire suivant : 1 0 1 1 0 0 1 0 1 0 0 0 0 1 1 0 0


1) Encoder le message en utilisant le codage LZ78.
2) Décoder la séquence encodée.

2.6.4. Exercice 4 : quantification scalaire et codage d’Huffman

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

Figure 2.38. Densité de probabilité des échantillons

1) Nous quantions 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 quantication.

Licence limitée accordée à doc-ist-Onera


Codage de source 125

3) Utiliser un codage de Huffman pour réduire le nombre de bits nécessaire pour


transmettre les échantillons. Déterminer le nombre de bits moyens par échantillon
codé.

2.6.5. Exercice 5 : quantification scalaire et distorsion

Soit une source délivrant des échantillons réels. Nous quantions ces échantillons
sur quatre niveaux en utilisant un pas de quantication é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 quanticateur.
2) Quantier 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 quantication que précédemment. Tracer la fonction
d = f (x) avec d = (x − x̃)2 .

p(x)

1/2

x
-2 +2

Figure 2.39. Densité de probabilité des échantillons

4) Exprimer littéralement l’’erreur quadratique moyenne ou distorsion moyenne D


puis la calculer.
5) Dans le cas d’’une source gaussienne centrée de variance σ x2 la limite théorique
de D est : D = σx2 2−2R . Calculer cette valeur et la comparer avec la distorsion
moyenne calculée précédemment.
6) Dans quel cas a-t-on la relation : distorsion moyenne = (pas de quanti-
cation)2 /12 ?

2.6.6. Exercice 6 : codage DPCM

Soit le système de codage prédictif complet (codeur + décodeur) donné sur la


gure 2.40.

Licence limitée accordée à doc-ist-Onera


126 Bases de communications numériques 1

1) Exprimer la fonction de transfert en z de cette chaîne en supposant que le pré-


dicteur est un ltre linéaire de fonction de transfert W (z). En déduire l’’expression de
l’’erreur globale entre l’’entrée et la sortie du système.

x (t ) xn en Quantification
e~n

Prédiction
xˆˆn Prédiction

Figure 2.40. Synoptique du système de codage prédictif

Nous modions le codeur comme dans la gure 2.41.

xn en Quantification e~n

Prédiction

qn
Prédiction

Figure 2.41. Synoptique du codeur modifié

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 quantication 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 quantication 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) Justier l’’architecture codeur/décodeur.

Licence limitée accordée à doc-ist-Onera


3

Codes correcteurs d’erreurs


en blocs

3.1. Introduction

L’’objectif du codage de canal est de protéger les données issues du codage de


source contre les erreurs de transmission.

Nous avons vu que le codage aléatoire permet d’’atteindre la limite du théorème du


codage de canal lorsque N tend vers + ∞. Cependant, cette technique n’’est pas envi-
sageable pratiquement en raison de la complexité du codeur et du décodeur. En effet,
considérons un code C en blocs binaire aléatoire (N, K) comprenant 2 K mots de code.
Chaque mot d’’information composé de K bits est associé à un mot de code unique
composé de N bits. Pour réaliser un codeur aléatoire, il faut tout d’’abord construire
une liste de 2K mots de code. Chacun des mots de code est composé de N bits tirés
aléatoirement. L’’opération de codage consiste à associer à chaque mot d’’information
une adresse unique qui servira ensuite pour lire le mot de code correspondant. Le
contenu de la liste ne présentant aucune structure particulière, l’’opération de déco-
dage implique de faire la comparaison exhaustive du mot reçu en sortie du canal avec
l’’ensemble des 2 K mots de code avant de déterminer le mot de code le plus probable.
La complexité du décodeur croît exponentionellement avec K et rend cette technique
presque toujours inutilisable en pratique.

L’’impossibilité pratique d’’utiliser le codage aléatoire nous amène donc à utiliser


des codes possédant une structure algébrique comme par exemple la linéarité ce qui
rend les opérations de codage et de décodage plus simples à effectuer. Ces codes
doivent de plus être adaptés aux types d’’erreurs de transmission (aléatoire, isolé ou par
paquets). Nous nous intéresserons aux trois principales familles de codes suivantes :
–– les codes en blocs linéaires : un code en blocs q-aire (N, K) est un ensemble
comprenant q K mots de code. Nous associons à chaque mot d’’information composé

Licence limitée accordée à doc-ist-Onera


128 Bases de communications numériques 1

de K symboles q-aire un mot de code composé de N symboles q-aire. Chaque mot


de code ne dépend que d’’un mot d’’information. La linéarité signie que les N sym-
boles du mot code sont obtenus par combinaison linéaire des K symboles du mot
d’’information ;
–– les codes convolutifs : à la différence des codes en blocs, pour un code convolutif
de taux k/n, le mot de code composé de n symboles dépend du mot d’’information
de k symboles mais aussi d’’un nombre ni de mots d’’information précédents. Les
séquences d’’entrée et de sortie sont de longueur innie ;
–– les codes concaténés : ces codes s’’obtiennent par concaténation de codes en
blocs linéaires ou de codes convolutifs.

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.

3.2. Les corps finis

3.2.1. Rappel sur les corps

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.

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 129

3.2.2. Les corps finis

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.

E XEMPLE.–– Addition et multiplication dans GF (2).


+ 0 1 × 0 1
0 0 1 0 0 0
1 1 0 1 0 1

Tableau 3.1. Addition et multiplication dans GF(2)

L’’addition dans GF (2) correspond à une opération « ou exclusif » alors que la


multiplication correspond à un « et logique » comme indiqué dans tableau 3.1.

E XEMPLE.–– Addition et multiplication dans GF (5).


+ 0 1 2 3 4 × 0 1 2 3 4
0 0 1 2 3 4 0 0 0 0 0 0
1 1 2 3 4 0 1 0 1 2 3 4
2 2 3 4 0 1 2 0 2 4 1 3
3 3 4 0 1 2 3 0 3 1 4 2
4 4 0 1 2 3 4 0 4 3 2 1

Tableau 3.2. Addition et multiplication dans GF(5)

3.2.3. Polynômes irréductibles et primitifs

Soit un polynôme f (p) dont les coefcients 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.

Licence limitée accordée à doc-ist-Onera


130 Bases de communications numériques 1

m
−1
T HÉORÈME.–– Tout polynôme irréductible dans GF (2) de degré m divise p 2 − 1.

La démonstration de ce théorème est donnée par exemple dans [LIN 83].

Dans le tableau 3.3, nous donnons la décomposition en produit de polynômes irré-


m
ductibles des polynômes de la forme p 2 −1 − 1 pour m ≤ 5.

m = 2 p3 − 1 = (1 + p)(1 + p + p2 )

m = 3 p7 − 1 = (1 + p)(1 + p + p3 )(1 + p2 + p3 )

m = 4 p15 − 1 = (1 + p)(1 + p + p2 )(1 + p3 + p4 )(1 + p + p4 )(1 + p + p2 + p3 + p4 )

m = 5 p31 − 1 = (1 + p)(1 + p3 + p5 )(1 + p2 + p5 )(1 + p2 + p3 + p4 + p5 )

(1 + p + p3 + p4 + p5 )(1 + p + p2 + p4 + p5 )(1 + p + p2 + p3 + p5 )

Tableau 3.3. Décomposition en produit de polynômes irréductibles des


m
polynômes de la forme p 2 −1 − 1

D ÉFINITION.–– Un polynôme irréductible f (p) de degré m est un polynôme primitif si


le plus petit entier positif n pour lequel f (p) divise p n + 1 est n = 2m − 1. Une liste
non exhaustive des polynômes primitifs est donnée dans le tableau 3.4.

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

Tableau 3.4. Liste des polynômes primitifs pour m ≤ 16

3.2.4. Corps finis à 2m éléments

Un corps ni GF (2m ) est isomorphe au corps des polynômes à coefcients 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 ).

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 131

E XEMPLE.–– Addition et multiplication dans GF (2 2 ).

Etudions le corps ni GF (2 2 ) (cas m = 2) construit à partir du polynôme primitif


1 + p + p2. Soit α une racine de ce polynôme : 1 + α + α 2 = 0. Nous pouvons vérier
que les puissances successives de α engendrent les 2 2 − 1 éléments non nuls du corps
GF (22 ). Le tableau 3.5 liste les éléments du corps GF (2 2 ) ainsi construit.

Élément Polynôme Représentation binaire


0 0 00
1 1 01
α p 10
α2 1+p 11

Tableau 3.5. Liste des éléments du corps fini GF(2 2 )

+ 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 α

Tableau 3.6. Addition et multiplication dans GF(2 2 )

Nous avons α2 = 1 + α, α3 = α + α2 = 1 et α4 = α. Nous pouvons ainsi


vérier à partir des tables d’’addition et de multiplication donnée dans le tableau 3.6
que GF (22 ) est bien un corps ni.

E XEMPLE.–– Soit m = 4 et le polynôme irréductible f (p) = 1 + p + p 4. Nous pouvons


vérier dans le tableau 3.3 que ce polynôme de degré 4 est facteur de p 15 − 1 (l’’autre
polynôme irréductible de degré 4 est 1 + p + p 2 + p3 + p4 ). Soit α une racine de ce
polynôme : 1 + α + α 4 = 0. Comme précédemment, les puissances successives de α
engendrent les 2 4 − 1 = 15 éléments non nuls du corps GF (2 4 ). Le tableau 3.7 liste
ces éléments.

A chaque élément non nul du corps GF (2 m ) nous associons un polynôme mini-


mal.

D ÉFINITION.–– Le polynôme minimal m i (p) est le polynôme de plus faible degré dont
αi est racine.

Licence limitée accordée à doc-ist-Onera


132 Bases de communications numériques 1

Élément Polynôme Représentation binaire


0 0 0000
1 1 0001
α p 0010
α2 p2 0100
3
α p3 1000
α4 1+p 0011
α5 p + p2 0110
α6 p2 + p3 1100
7
α 1 + p + p3 1011
α8 1 + p2 0101
α9 p + p3 1010
α10 1 + p + p2 0111
α11 p + p2 + p3 1110
α12 1 + p + p2 + p3 1111
α13 1 + p2 + p3 1101
α14 1 + p3 1001

Tableau 3.7. Liste des éléments du corps GF(2 4 ) construit à partir du


polynôme irréductible 1 + p + p 4

Pour l’’exemple précédent les quinze polynômes minimaux sont les suivants :

m1 (p) = m2 (p) = m4 (p) = m8 (p) = 1 + p + p4


m3 (p) = m6 (p) = m9 (p) = m12 (p) = 1 + p + p2 + p3 + p4
m5 (p) = m10 (p) = 1 + p + p2
m7 (p) = m11 (p) = m13 (p) = m14 (p) = 1 + p3 + p4
m0 (p) = 1 + p [3.1]

T HÉORÈME.–– Tout polynôme minimal m i (p) est irréductible.

La démonstration de ce théorème est donnée dans [LIN 83]. Nous pouvons vérier
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. Codes en blocs linéaires

3.3.1. Introduction

Un code C en blocs linéaire q-aire (N, K) est un ensemble comprenant q K mots


de code. Nous associons à chaque mot d’’information composé de K symboles q-aire

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 133

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]

G est la matrice génératrice du codeur de dimension K × N :


   
g0 g0,0 g0,1 . . . g0,N −1
 g1   g1,0 g1,1 . . . g1,N −1 
   
G= .. = .. .. .. ..  [3.3]
 .   . . . . 
gK−1 gK−1,0 gK−1,1 . . . gK−1,N −1

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

où IK est la matrice identité de dimension K × K. Lorsque la matrice génératrice est


sous la forme systématique, les K premiers bits du mot de code sont les bits d’’infor-
mation. Nous avons c = [u 0 , u1 , . . . , uK−1 , cK , cK+1 , . . . , cN −1 ].

E XEMPLE.–– Code de répétition C 1 (3, 1) dans GF (2) :


C D
G= 111 [3.5]

Licence limitée accordée à doc-ist-Onera


134 Bases de communications numériques 1

Le bit d’’information est répété trois fois :

c0 = u 0 , c1 = u 0 et c2 = u0

E XEMPLE.–– Code de parité C 2 (3, 2) dans GF (2) :


) *
101
G= [3.6]
011

c2 est le bit de contrôle de parité :

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

Figure 3.1. Code de parité C 2 (3, 2)

E XEMPLE.–– Code de Hamming C 3 (7, 4) dans GF (2) avec la matrice génératrice


suivante :
 
110 10 00
0 1 1 01 0 0
G=
0 0 1
 [3.7]
10 1 0
000 11 01

Ici, la matrice génératrice sous la forme systématique s’’obtient simplement comme


suit : nous ajoutons les lignes 1, 2 et 3 pour obtenir la ligne 1, les lignes 2, 3 et 4 pour

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 135

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.

La forme systématique de cette matrice génératrice est donc la suivante :

 
100 01 10
0 1 0 00 1 1
G=
0 0 1
 [3.8]
01 1 1
000 11 01

Les trois bits de parité ou de redondance sont égaux à :

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

Tableau 3.8. Liste des mots de code du code C 3 de Hamming (7,4)

D ÉFINITION.–– Le rendement ou taux R d’un code en blocs (N, K) est égal à :

K
R= [3.9]
N

D ÉFINITION.–– Soit c1 et c2 deux mots de code du code C, et α 1 et α2 deux éléments


du corps fini. La linéarité implique que α 1 c1 + α2 c2 est aussi un mot de code de C.
Par conséquent, le mot c 0 = [00 . . . 0] est toujours un mot de code d’un code linéaire.
Il est appelé mot de code nul.

3.3.2. Distance minimale d’un code

D ÉFINITION.–– Soit c1 et c2 deux mots de code du code C de longueur N , la distance


de Hamming dH (c1 , c2 ) est égale au nombre d’éléments qui différent.

Licence limitée accordée à doc-ist-Onera


136 Bases de communications numériques 1

Exemple : c1 = [001100] et c2 = [001111], dH (c1 , c2 ) = 2.

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.

Exemple : c = [001100] , w(c) = 2.

D ÉFINITION.–– La distance minimale d min du code C est le nombre d’éléments qui


diffèrent entre les deux mots de code les plus proches au sens de la distance de Ham-
ming :

dmin = min dH (ci , cj ) [3.10]


i,j,i)=j

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 ) :

dmin = min w(ci ) [3.11]


i,i)=0

E XEMPLE.–– la distance minimale du code C 1 (3,1) et du code C 3 (7,4) est égale à 3 ;


la distance minimale du code C 2 (3,2) est égale à 2.

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].

3.3.3. Matrice de contrôle

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]

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 137

Si la matrice génératrice G est systématique de la forme [3.4], H est de la forme


suivante :
H = [PT IN −K ]
 
p0,0 p1,0 ... pK−1,0 1 00 ... 0
 p0,1 p1,1 ... pK−1,1 0 10 ... 0
 
= .. .. .. .. .. .. .. .. ..  [3.14]
 . . . . . . . . .
p0,N −K−1 p1,N −K−1 . . . pK−1,N −K−1 0 0 0 . . . 1

La matrice H est appelée matrice de contrôle ou matrice de parité du code C.

E XEMPLE.–– La matrice de contrôle ou parité du code de Hamming C 3 (7, 4) est la


suivante :
 
101110 0
H = 1 1 1 0 0 1 0 [3.15]
011100 1

Nous pouvons observer que la matrice de parité du code de Hamming C 3 comprend


l’’ensemble des sept différents vecteurs colonnes non nuls de dimension trois. Chacune
des trois lignes de la matrice de parité correspond à une équation de parité (addition
modulo 2 dans le cas d’’un code binaire) liant différents bits des mots de code c =
(c0 c1 c2 c3 c4 c5 c6 ) = (u0 u1 u2 u3 c4 c5 c6 ) :


 u 0 + u 2 + u 3 + c4 = 0
u 0 + u 1 + u 2 + c5 = 0 [3.16]


u 1 + u 2 + u 3 + c6 = 0

Nous retrouvons bien les équations de parité calculées dans l’’exemple précédent.

3.3.4. Fonctions d’énumération de poids

Les fonctions d’’énumération de poids permettent d’’étudier les performances des


codes correcteurs d’’erreurs en blocs linéaires.

D ÉFINITION.–– La fonction d’énumération de poids WEF (Weight Enumerator Func-


tion) d’un codeur binaire en blocs systématique (N, K) est définie comme suit :

N
!
A(D) = Ad Dd [3.17]
d=0

Ad est le nombre de mots de code de longueur N de poids de Hamming d.

Licence limitée accordée à doc-ist-Onera


138 Bases de communications numériques 1

D ÉFINITION.–– La fonction d’énumération de poids IRWEF (Input Redundancy Weight


Enumerator Function) d’un codeur binaire en blocs systématique (N, K) est définie
comme suit :

−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.

La fonction IRWEF peut aussi s’’écrire :

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

D ÉFINITION.–– La fonction d’énumération de poids IOWEF (Input Output Weight


Enumerator Function) d’un codeur binaire en blocs (N, K) est définie comme suit :

K !
! N
B(W, D) = Bw,d W w Dd [3.21]
d=0 w=0

Bw,d est le nombre de mots de code de longueur N de poids d et dont le poids de


la séquence des bits d’’information est égal à w.

E XEMPLE.–– Code de parité C 2 (3,2) dans GF (2).

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

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 139

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

Tableau 3.9. Enumération des poids des mots d’information et des


mots de code pour le code de parité (3,2)

E XEMPLE.–– Code de Hamming C 3 (7, 4).

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 :

A(D) = 1 + 7D3 + 7D4 + D7


A(W, Z) = 1 + W (3Z 2 + Z 3 ) + W 2 (3Z + 3Z 2 ) + W 3 (1 + 3Z) + W 4 Z 3
B(W, D) = 1 + W (3D3 + D4 ) + W 2 (3D3 + 3D4 ) + W 3 (D3 + 3D4 ) + W 4 D7

3.3.5. Capacité de correction et de détections d’erreurs d’un code li-


néaire en blocs

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]

Licence limitée accordée à doc-ist-Onera


140 Bases de communications numériques 1

dmin

Figure 3.2. Sphères de Hamming

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.

Sur un canal à effacement, ce code sera capable de corriger jusqu’’à d min − 1


effacements :

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.

3.3.5.1. Borne de Hamming et codes parfaits


D ÉFINITION.–– La borne de Hamming exprime une relation 2 entre K, N et e le
nombre d’erreurs que peut corriger un code (N, K) dans GF (q) :

e
!
qN ≥ qK i
CN (q − 1)i [3.25]
i=0

ou en divisant les deux termes par 2 K :

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.

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 141

D ÉMONSTRATION.–– Le nombre de mots contenus dans une sphère de Hamming de


rayon e est égal à :

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].

Dans le cas binaire, la relation [3.25] se simplie comme suit :

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é.

3.3.6. Bornes sur la distance minimale des codes linéaires en blocs

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 .

Une première borne supérieure est la borne de Singleton :

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).

En divisant les deux termes dans [3.29] par N , nous obtenons :

dmin 1 K
≤1−R+ avec R = [3.30]
N N N

En faisant tendre N → +∞ nous obtenons :

dmin
R≤1− + o(1) [3.31]
N

Licence limitée accordée à doc-ist-Onera


142 Bases de communications numériques 1

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

avec Hq (α) = α logq (q − 1) − α logq (α) − (1 − α) logq (1 − α).

Dans le cas des codes binaires, la borne de Elias-Bassalygo s’’écrit :

 B 
1− 1 − 2 dmin
R
R ≤ 1 − H2   + o(1) [3.34]
2

avec H2 (α) = − log2 α − (1 − α) log2 (1 − α).

La borne supérieure de Hamming s’’obtient à partir de la borne de Hamming pré-


sentée précédemment :

) *
dmin
R ≤ 1 − Hq [3.35]
2N

Finalement, nous présentons la borne de Gilbert-Varshamov qui est la borne infé-


rieure la plus utilisée :

) *
dmin
R ≥ 1 − Hq ∀N [3.36]
N

Dans le cas des codes binaires, nous avons :

) *
dmin
R ≥ 1 − H2 ∀N [3.37]
N

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 143

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

Figure 3.3. Bornes sur la distance minimale des codes linéaires en


blocs pour q = 2

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.

Licence limitée accordée à doc-ist-Onera


144 Bases de communications numériques 1

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

Figure 3.4. Bornes sur la distance minimale des codes linéaires en


blocs pour q = 256

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)).

3.3.7. Bornes sur le taux en régime non asymptotique

A partir de la gure 1.18 présentée dans le chapitre 1, nous pouvons exprimer le


taux R comme le rapport H(U )/H(X). Lorsque l’’entrée du canal de transmission est
binaire, nous avons H(X)=1 Sh/symb et R = H(U ). Le théorème du codage de canal
énoncé par la relation 1.106 devient alors R ≤ C. La théorie de l’’information donne
l’’expression de la capacité du canal de transmission C qui est une borne sur le taux
atteignable sous réserve que la longueur des mots de code tende asymptotiquement
vers l’’inni. Suite à ces travaux, plusieurs chercheurs dont Feinstein et Elias [ELI 55]
ont évalué la probabilité d’’erreur par mot des systèmes de communication dans le
régime non asymptotique, c’’est-à-dire lorsque la longueur des mots de code N n’’est

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 145

pas innie. 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)

Figure 3.5. Fonction exposant d’erreur versus taux

En 1967, Shannon, Gallager et Berlekamp [SHA 67] introduisirent la borne infé-


rieure appelée borne par empilement de sphères sur l’’exposant d’’erreur. Pour le canal
discret sans mémoire, cette borne s’’énonce comme suit :

Pe ≥ exp(−N E(R)) [3.38]

) * I ) *
ln 8 M ln N 8 e ln 8
E(R) = ESP R− − + ln √ + [3.39]
N N N Pmin N

avec :

ESP (R) = sup(E0 (ρ) − ρR) [3.40]


ρ≥0

et :
  +M ,1+ρ 
L
! !
E0 (ρ) = max − ln  qi P (Y = yj |X = xi )1/(1+ρ)  [3.41]
q
j=1 i=1

Licence limitée accordée à doc-ist-Onera


146 Bases de communications numériques 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

Figure 3.6. Bornes de Poltyrev taux en fonction de N

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 147

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é an 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.

3.3.8. Principaux codes en blocs

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.

Licence limitée accordée à doc-ist-Onera


148 Bases de communications numériques 1

3
Eb/N0

2.5

1.5

0.5

ï0.5

ï1 2 3 4 5
10 10 10 10
N

Figure 3.7. Bornes par empilement de sphères rapport E b /N0 en


fonction de N

3.3.8.1. Codes de Hamming


Les codes de Hamming sont des codes en blocs linéaires parfaits binaires (N, K)
avec N = 2J − 1 et K = 2J − 1 − J. Un code de Hamming (N, K) peut être
décrit simplement à partir de sa matrice de contrôle H de dimension J × N puisque
J = N − K. En effet, les colonnes de H sont les N vecteurs binaires non nuls
contenant J éléments. Par exemple, pour J = 3, le code de Hamming est un code
(7,4) et sa matrice de parité est donnée dans [3.15].

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.

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 149

3.3.8.2. Code de Golay


Le code de Golay binaire est un code linéaire binaire (23,12) dont la distance
minimale est égale à 7. Ce code est parfait puisque pour N = 23, K = 12 et e = 3,
nous avons l’’égalité :

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

Sa fonction d’’énumération WEF est égale à :

A(D) = 1 + 253D7 + 506D8 + 1288D11 + 1288D12


+506D15 + 253D16 + D23 [3.48]

A partir du code de Golay (23,12), il est possible de construire le code de Golay


étendu (24,12) en ajoutant un bit de parité. La distance minimale de ce code est égale
à 8. La matrice génératrice non systématique du code de Golay étendue (24,12) est la
suivante :
 
1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 1 0
1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 1
 
1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 1 0 0 0
1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 1 0 0


1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 1 0
 
1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 1
G=
1
 [3.49]
 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 1 0 1 1
1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 1 0 1
 
1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 1 0 1 1 0
1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 1 0 1 1


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

Licence limitée accordée à doc-ist-Onera


150 Bases de communications numériques 1

Sa fonction d’’énumération WEF est égale à :

A(D) = 1 + 759D8 + 2576D12 + 759D16 + D24 [3.50]

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

Il s’’agit d’’un code parfait puisque nous avons l’’égalité :

1 2
1 + 2C11 + 4C11 = 35

3.3.8.3. Codes de Reed-Muller


Les codes de Reed-Muller sont une classe de codes couvrant une large gamme de
dimension et de distance minimale. Ils présentent la propriété d’’avoir des représen-
tations en treillis simples qui permettent un décodage à entrées pondérées. Pour tout
entier m et r < m, il existe un code de Reed Muller (N, K, d min ) avec :

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).

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 151

où G0 = [1 1 1 . . . 1 1] de dimension 1 × N , G 1 est une matrice de dimension


m × N composée de l’’ensemble des N différents vecteurs colonnes binaires non nuls
2
de dimension m. La matrice G 2 est de dimension Cm × N . Chaque ligne de G 2
est obtenue en effectuant le produit élément par élément de deux lignes de G 1 . Plus
i
généralement, la matrice G i est de dimension Cm × N et ses lignes sont obtenues en
faisant le produit élément par élément de i lignes de la matrice G 1 .

E XEMPLE.–– Construisons un code de Reed-Muller (8,4,4) d’’ordre 1 avec m = 3.

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

Ainsi, nous avons :


 
111 11 11 1
0 0 0 01 11 1
G=
0 0 1
 [3.55]
10 01 1
010 10 10 1

Pour construire le code de Reed-Muller (8,7,2) d’’ordre 2, il suft d’’ajouter à la


matrice génératrice précédente la matrice G 2 de dimension 3 × 7 avec :

   
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.

m=3 m=4 m=5


ordre 0 (8,1,8) (16,1,16) (32,1,32)
ordre 1 (8,4,4) (16,5,8) (32,6,16)
ordre 2 (8,7,2) (16,11,4) (32,16,8)
ordre 3 (16,15,2) (32,26,4)
ordre 4 (32,31,2)

Tableau 3.10. Liste des codes de Reed-Muller (N, K, d min )


pour m = 3, 4 et 5

Licence limitée accordée à doc-ist-Onera


152 Bases de communications numériques 1

3.3.9. Représentations graphiques des codes en blocs linéaires bi-


naires

Nous présentons maintenant différentes représentations graphiques comme le


graphe de Tanner ou le diagramme en treillis qui sont des outils très pratiques pour
étudier les codes correcteurs d’’erreurs et dériver des algorithmes de décodage ef-
caces.

3.3.9.1. Graphe de Tanner


D’’une manière générale, tout code linéaire binaire peut être représenté sous la
forme d’’un graphe de Tanner. Un graphe de Tanner est un graphe biparti comprenant
deux types de nœœuds : des nœœuds de variable binaire représentés par un cercle et des
nœœuds de contrôle de parité ou de contrôle représentés par un carré avec un « + » à
l’’intérieur. Chaque branche signie une dépendance entre le nœœud de variable et le
nœœud de contrôle qu’’elle relie.

Le graphe de Tanner se déduit directement de la matrice de parité H du code :


chaque nœœud de contrôle de parité T i du graphe de Tanner correspond à la i-ième
ligne de la matrice de parité H et chaque nœœud de variable j correspond à la j-ième
colonne de H. En effet, chaque ligne de H dénit une équation de parité entre plu-
sieurs variables. Une branche reliera le nœœud de contrôle de parité T i avec le nœœud de
variable cj si et seulement si hij = 1.

E XEMPLE.–– Reprenons le code C 3 de Hamming (7, 4) dont la matrice génératrice sous


sa forme systématique est donnée dans l’’équation [3.8]. Nous avons montré que cha-
cune des trois lignes de la matrice de parité H correspond à une équation de parité liant
différents bits du mot de code c = (c 0 c1 c2 c3 c4 c5 c6 ) = (u0 u1 u2 u3 c4 c5 c6 ) :



 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.

3.3.9.2. Diagramme en treillis des codes linéaires en blocs


Wolf [WOL 78], Massey [MAS 78] en 1978 puis Forney [FOR 88] en 1988 ont
montré qu’’il était possible de représenter tout code en blocs par un diagramme en
treillis composé de N sections élémentaires. Il décrit l’’ensemble des mots de code.

"NLe diagramme en treillis du code peut être construit à partir la relation cH T =


−1 T
i=0 ci hi = 0 avec H = [h0 h1 . . . hN −1 ] la matrice de parité du code. Soit s r+1

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 153

le vecteur de dimension (N − K) × 1 qui représente l’’état du treillis à la position i. Le


vecteur d’’état s i+1 est aussi appelé syndrome partiel. Nous avons la relation récursive
suivante :

si+1 = si + ci hTi [3.58]

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)

Figure 3.8. Deux versions du graphe de Tanner du code de Hamming


(7,4)

ci = 0
si+1
si
Figure 3.9. Branche d’une section du treillis

Licence limitée accordée à doc-ist-Onera


154 Bases de communications numériques 1

Prenons l’’exemple précédent du code C 3 (7,4) de Hamming. A partir de la matrice


de parité donnée dans [3.15], nous pouvons représenter le diagramme en treillis de ce
code comme présenté sur la gure 3.10.

"""

""!

"!"

"!!

!""

!"!

!!"

!!!

Figure 3.10. Diagramme en treillis obtenu à partir de la matrice de


parité du code C 3

Le nombre de branches du diagramme en treillis ainsi obtenu est égal à 2 1 + 22 +


2 + 24 + 23 + 22 + 21 = 44. Nous montrerons dans la section suivante, qu’’il est aussi
3

possible de construire un diagramme en treillis équivalent lorsque les codes en blocs


linéaires sont cycliques.

Une autre méthode classique de construction du diagramme en treillis d’’un code


consiste à utiliser sa matrice génératrice [FOR 88]. Pour ce faire, il faut tout d’’abord
mettre la matrice génératrice sous une forme adaptée à la représentation en treillis,
c’’est-à-dire permettant de construire un diagramme en treillis avec le minimum de
branches et d’’états. Nous allons terminer cette section en décrivant cette méthode.

Soit un mot de code c = (c 0 c1 , . . . cN −1 ). Nous dénissons L(c) comme le


plus petit index i tel que c i *= 0 et C(c) comme le plus grand index i tel que c i *= 0.
L’’enveloppe de c est la séquence de bits à 1 qui commence au premier bit non nul
du mot de code et se termine au dernier bit non nul du mot de code. Par exemple,
l’’enveloppe associée au mot de code 1101000 est 1111000.

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 155

Un algorithme glouton proposé par Kschischang et Sorokine [KSH 95] permet de


déterminer la matrice génératrice dont l’’enveloppe minimise le nombre de branches
dans le diagramme en treillis. Voici son pseudo-code :
–– étape 1 : déterminer une paire de lignes c i et cj de la matrice génératrice G tel
que L(ci ) = L(cj ) et R(ci ) ≤ R(cj ), ou R(ci ) = R(cj ) et L(ci ) ≥ L(cj ) ;
–– étape 2 : si aucune paire n’’est trouvée dans l’’étape 1, passer à l’’étape 4 ;
–– étape 3 : appliquer c i = ci + cj , c’’est-à-dire remplacer la ligne c i de la matrice
génératrice par la somme des deux lignes ;
–– étape 4 : la matrice G ainsi obtenue est à enveloppe minimale.

E XEMPLE.–– Considérons le code C 3 de Hamming (7,4) déni par la matrice généra-


trice sous sa forme systématique donnée dans [3.8] et sa matrice enveloppe associée :

   
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

En appliquant l’’algorithme précédent (par exemple en sommant les lignes 2 et


3, puis les lignes 3 et 4, puis les lignes 1 et 3 et nalement les lignes 1 et 2), nous
obtenons la matrice génératrice et la matrice enveloppe associée suivantes :

   
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

Pour déterminer le nombre de branches du diagramme en treillis associé, nous


comptons le nombre de 1 par colonne de la matrice enveloppe." Soit n i le nombre de
1 de la i-ème colonne ; le nombre total de branches est égal à i 2ni . Le nombre de
branches du diagramme en treillis correspondant est égal à 44.

Pour construire le diagramme en treillis de ce code, il faut considérer chaque ligne


de la matrice génératrice comme un sous-code (N, 1) et ne comprenant donc que deux
mots de code.

Construisons le diagramme en treillis à partir de la matrice génératrice G précé-


dente. Les différentes phases de cette construction sont présentées sur la gure 3.11.
Pour la première ligne, le sous-code comprend les mots de code 0000000 et 11010000.

Licence limitée accordée à doc-ist-Onera


156 Bases de communications numériques 1

Le treillis de ce sous-code comprend donc deux chemins. Nous construisons alors le


diagramme en treillis du sous-code correspondant aux deux premières lignes de ma-
trice génératrice. Ce diagramme en treillis est simplement le produit du diagramme en
treillis des sous-codes relatifs aux première et seconde lignes du treillis. Cette procé-
dure est répétée jusqu’’à construction complète du diagramme en treillis. Nous pou-
vons vérier que le diagramme en treillis ainsi obtenu comporte bien 44 branches.
Nous retrouvons la même complexité de branches que dans l’’approche par la matrice
de parité présentée précédemment. Nous pouvons démontrer [MCE 96] que le dia-
gramme en treillis obtenu à partir de la matrice de parité est à complexité de branches
minimale.

Figure 3.11. Diagramme en treillis du code de Hamming (7,4)

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 157

Comme la complexité du décodage à partir du diagramme en trellis du code est


proportionnelle au nombre de branches de celui-ci, il est important de construire un
diagramme en treillis avec le nombre le plus faible de branches. Nous avons montré
deux approches pour construire un tel treillis dans cette section.

3.4. Décodage des codes en blocs linéaires binaires

3.4.1. Introduction

Dans le chapitre 1, nous avons introduit différents modèles de canaux de transmis-


sion. Sur la gure 3.12 nous présentons une chaîne de transmission point à point pour
un canal additif à bruit blanc gaussien.

u c x y r ˆû

n
ˆû

Figure 3.12. Synoptique d’une chaîne de transmission sur


canal additif à bruit blanc gaussien

Ainsi, nous pouvons distinguer deux cas :


–– si l’’entrée du décodeur est binaire nous parlerons de décodage à entrées dures
(hard decoding). L’’ensemble modulation-canal additif à bruit blanc gaussien-fonction
de décision peut être vu comme un canal équivalent BSC. La probabilité de transition
p de ce canal BSC sera égale à la probabilité d’’erreur sur canal additif à bruit blanc
gaussien non codé donnée par l’’équation suivante :
&I '
1 REb
p = erfc [3.61]
2 N0

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 à

Licence limitée accordée à doc-ist-Onera


158 Bases de communications numériques 1

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]

où e est le vecteur d’’erreurs binaires ;


–– si l’’entrée du décodeur peut prendre une valeur continue, nous dirons que le
décodage est à entrées souples ou pondérées (soft decoding). En pratique, l’’entrée est
quantiée sur plusieurs bits (3 ou 4 bits sufsent généralement pour ne pas dégrader les
performances du décodeur). Contrairement au décodeur à entrées dures, le décodeur à
entrées souples calcule des distances euclidiennes. La relation entrée-sortie s’’exprime
comme suit :

y = x+n [3.64]

où x est le mot émis, n est le vecteur d’’erreurs et y est le mot reçu.

Dans cette section, nous étudierons également le décodage des codes en blocs sur
canal à effacement.

3.4.2. Décodage optimal

L’’objectif du décodage optimal est de déterminer la séquence qui a été la plus


vraisemblablement émise, notée x̂.

Soit la séquence x = (x0 , x1 , x2 , . . . , xN −1 ) de longueur N envoyée dans un ca-


nal discret stationnaire sans mémoire de densité de probabilité conditionnelle p(y i /xi )
et y = (y0 , y1 , y2 , . . . , yN −1 ) la séquence reçue.

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 :

x̂ = arg max P r(x|y) [3.65]


x

Nous pouvons écrire :

p(y|x)P r(x)
P r(x|y) = [3.66]
p(y)

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 159

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 :

x̂ = arg max p(y|x) [3.67]


x

Un décodeur utilisant ce critère est appelé un décodeur au sens du maximum de


vraisemblance ML (Maximum Likelihood). Ainsi, lorsque les mots de code sont équi-
probables, les décodeurs MAP et ML sont identiques.

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

La recherche de la séquence la plus probable implique donc que le décodeur ML


calcule les distances entre la séquence reçue et toutes les séquences possibles.

Pour le canal binaire symétrique de probabilité d’’inversion p, la probabilité P r(r|c)


est la suivante :

) *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

où dH (r, c) est la distance de Hamming entre la séquence binaire reçue r et le mot de


p
code transmis c. Comme p est compris entre 0 et 0,5, nous avons 0 < 1−p < 1. Nous
avons démontré que maximiser P r(r|c) revient à minimiser la distance de Hamming
entre r et c. En conséquence :

ĉ = arg max P r(r|c)


c

= arg min dH (r, c) [3.70]


c

Ainsi, le critère du maximum de vraisemblance implique dans le cas du canal


binaire symétique de calculer l’’ensemble des distances de Hamming entre la séquence
reçue et toutes les séquences possibles.

Licence limitée accordée à doc-ist-Onera


160 Bases de communications numériques 1

Considérons maintenant le cas du décodage à entrées souples d’’une séquence reçue


après ltrage adapté pour un canal additif à bruit blanc gaussien. Nous avons vu que
nous pouvons exprimer à l’’instant i sa sortie y i comme suit :

yi = xi + ni [3.71]

avec Es énergie moyenne par symbole x i et ni un échantillon du bruit blanc gaussien


centré de variance σ 2 = N20 . Ainsi, la densité de probabilité de y i conditionnellement
à xi est :
) *
1 (yi − xi )2
p(yi |xi ) = √ exp − [3.72]
πN0 N0

Comme la fonction logarithme est croissante, au lieu d’’utiliser la relation [3.67]


pour déterminer x̂, nous pouvons utiliser :
x̂ = arg max ln p(y|x)
x
N
2 −1
= arg max ln p(yi |xi ) [3.73]
x
i=0
N
! −1
= arg max ln p(yi |xi ) [3.74]
x
i=0

Nous obtenons donc une première version du décodeur à maximum de vraisem-


blance :
x̂ = arg max ln p(y|x)
x
N
! −1 ) *
(yi − xi )2
= arg max −
x
i=0
N0
N
! −1
= arg min (yi − xi )2 [3.75]
x
i=0

Ici, le critère du maximum de vraisemblance implique de calculer l’’ensemble des


distances euclidiennes entre la séquence reçue et toutes les séquences possibles.

Une seconde version du décodeur à maximum de vraisemblance est obtenue en


ramplacant la distance euclidienne par la distance de Manhattan comme suit :

N
! −1
x̂ = arg min |yi − xi | [3.76]
x
i=0

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 161

Cette version sous-optimale donne cependant d’’assez bonnes performances en pra-


tique.

Dans le cas d’’une modulation bipodale (x i = ± Es ), il est possible d’’obtenir
une troisième version exacte :
x̂ = arg max ln p(y|x)
x
N
! −1
= arg max −(yi − xi )2
x
i=0
N
! −1
= arg max −yi2 + 2yi xi − x2i
x
i=0
N
! −1
= arg max yi xi [3.77]
x
i=0

En effet, comme y i2 , et x2i = Es sont communs à toutes les séquences nous pou-
vons simplier les calculs sans aucune dégradation des performances.

3.4.3. Décodage à entrées dures des codes en blocs linéaires binaires

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é.

En multipliant le mot reçu r par la matrice de parité transposée H T , nous obtenons


le syndrome d’’erreurs s de dimension 1 × (N − K) :
s = rHT
= cHT + eHT
= eHT car cHT = 0 [3.79]
En l’’absence d’’erreurs de transmission, le syndrome d’’erreurs s est le vecteur nul.

Nous allons présenter trois méthodes de décodage : la méthode du tableau stan-


dard, le décodage par syndrome et l’’algorithme de Viterbi.

Licence limitée accordée à doc-ist-Onera


162 Bases de communications numériques 1

3.4.3.1. Méthode du tableau standard


Puisque le syndrome d’’erreurs peut prendre 2 N −K valeurs différentes, une valeur
de syndrome d’’erreurs s correspond à 2 N /2N −K = 2K vecteurs d’’erreurs possibles.
La méthode du tableau standard consiste à partitioner l’’espace vectoriel à N dimen-
sion en 2K classes disjointes. Chacune des classes correspond à un mot de code.

Le tableau standard 3.11 est construit de la manière suivante :


–– la première ligne contient les 2 K mots de code en commençant par le mot de
code nul ;
–– sous le mot de code nul, nous listons l’’ensemble des vecteurs d’’erreurs à com-
mencer par les motifs d’’erreurs de poids 1 puis le cas échéant les motifs d’’erreurs de
poids 2 (si N ≤ 2N −K ), jusqu’’à avoir rempli les 2 N −K cases de la première colonne ;
–– sous chacun des mots de code de la première ligne, nous faisons gurer la somme
du mot de code et du vecteur d’’erreurs correspondant.

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

Tableau 3.11. Tableau standard

Chaque rangée fournit un sous-ensemble de mots ou classe (coset) correspondant


à un syndrome et un représentant commun appelé chef de classe (coset leader). Le
chef de classe est le vecteur d’’erreurs le plus vraisemblable parmi les mots de ce sous-
ensemble.

Le décodage consiste donc à rechercher dans le tableau la colonne dans laquelle


se trouve le mot reçu. Le résultat du décodage sera le mot de code situé en première
ligne de cette colonne. Cette méthode reste encore très complexe et a surtout un interêt
pédagogique !

3.4.3.2. Décodage par syndrome


Nous avons vu que le syndrome d’’erreurs peut prendre 2 N −K valeurs différentes.
Le décodage par syndrome consiste tout d’’abord à calculer le syndrome d’’erreurs cor-
respondant au mot reçu. Ensuite, on associe au syndrome le vecteur d’’erreurs estimé
correspondant ê. Il suft donc de stocker dans une table de correspondance les syn-
dromes et les vecteurs d’’erreurs comme celle présentée dans le tableau 3.12.

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 163

ê s
ê0 s0
ê1 s1
ê2 s2
.. ..
. .
N −K N −K
−1
ê2 s2 −1

Tableau 3.12. Table de syndrome

Le mot de code estimé ĉ est alors :

ĉ = 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.

E XEMPLE.–– Considérons le code C 4 (5,2) déni par la matrice génératrice suivante :

) *
10101
G= [3.81]
01011

et la matrice de parité associée H suivante :

 
10100
H = 0 1 0 1 0 [3.82]
11001

Le tableau standard est donné par le tableau 3.13.

Il faut souligner qu’’il existe plusieurs choix pour les deux dernières lignes du ta-
bleau.

Considérons le mot d’’information u = [11]. Le mot de code associé est c =


[11110]. Nous pouvons vérier que le syndrome associé à ce mot de code est nul :
s = [000].

Licence limitée accordée à doc-ist-Onera


164 Bases de communications numériques 1

00000 01011 10101 11110 000


00001 01010 10100 11111 001
00010 01001 10111 11100 010
00100 01111 10001 11010 100
01000 00011 11101 10110 011
10000 11011 00101 01110 101
11000 10011 01101 00110 110
10010 11001 00111 01100 111

Tableau 3.13. Tableau standard pour le code (5,2)

Supposons maintenant qu’’une erreur survienne dans la transmission sur le 4-ième


bit du mot émis : e = [00010]. Le mot reçu est alors r = [11100]. En utilisant le tableau
nous trouvons directement ĉ = [11110]. Le décodeur a pu corriger cette erreur.

Utilisons maintenant la méthode du syndrome. Pour construire la table de syn-


drome, nous calculons le syndrome correspondant à chaque vecteur d’’erreurs en com-
mençant par les vecteurs d’’erreurs les plus probables (1 erreur, puis 2 erreurs, etc.).

La table de décodage par syndrome est donnée dans le tableau 3.14.

ê s
00000 000
00001 001
00010 010
00100 100
01000 011
10000 101
11000 110
10010 111

Tableau 3.14. Table de décodage par syndrome pour le code (5,2)

Le calcul du syndrome associé au mot reçu r donne s = rH T = [010]. En utilisant


cette table de décodage par syndrome nous trouvons ê = [00010]. En ajoutant le
vecteur d’’erreurs estimé ê au mot reçu r nous retrouvons bien ĉ = [11110].

Puisque la capacité de correction de ce code est égale à e = 1, ce code permet


de corriger tous les motifs d’’erreurs simples. Les deux dernières lignes de la table de
décodage par syndrome ne permettent pas de garantir un bon décodage puisque plu-
sieurs motifs à deux erreurs sont associés à ces deux syndromes. Il est donc préférable
de ne pas les prendre en compte.

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 165

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.

3.4.3.3. Algorithme de Viterbi


Nous avons vu précédemment qu’’un code en blocs linéaire et binaire pouvait être
représenté graphiquement par un diagramme en treillis. La recherche du mot de code
ĉ le plus probable est équivalente à déterminer le chemin le plus probable dans le
diagramme en treillis. La séquence ĉ se déduit alors immédiatement.

Le principe général de l’’algorithme de Viterbi consiste, à chaque section du dia-


gramme en treillis, à éliminer tous les chemins (et les mots de code associés) qui ne
peuvent pas être le chemin le plus vraisemblable. A chaque nœœud du treillis, nous ne
conservons qu’’un seul chemin. A chaque section, l’’algorithme de Viterbi réalise les
opérations suivantes :
–– calcul des métriques de branches (dans le cas du décodage à entrées dures, dis-
tance de Hamming d H (ri , ci ) entre le bit reçu ri et le bit associé à la branche consi-
dérée ci ) ;
–– à chaque état, calcul de la métrique cumulée pour chaque branche arrivant à cet
état (sommation de la métrique cumulée de l’’état de départ de la branche et de la
métrique de branche) ;
–– pour chaque état, sélection du chemin survivant correspondant ; au chemin arri-
vant à cet état et ayant la plus petite métrique cumulée. Les autres chemins concurrents
sont éliminés.

Finalement, le chemin le plus probable et le mot de code associé sont obtenus en


remontant le diagramme en treillis de la droite vers la gauche.

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.

Licence limitée accordée à doc-ist-Onera


166 Bases de communications numériques 1

(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)

(0) (1) (1)


(0)
(1)
(1) (0) (1) (0) (0) (1) (0)

séquence 1 0 1 0 0 1 0
reçue

Figure 3.13. Calcul des métriques de branche

3.4.4. Décodage à entrées pondérées des codes en blocs linéaires bi-


naires

L’’algorithme de Viterbi est principalement utilisé pour réaliser le décodage à en-


trées pondérées ou souples et déterminer la séquence ĉ en évitant de calculer les mé-
triques cumulées associées à chacune des séquences possibles. Par rapport au déco-
dage à entrées dures, les métriques de branche sont les distances euclidiennes au carré
(yi − xi )2 entre l’’échantillon reçu y i et le symbole associé à la branche considérée x i .

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.

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 167

(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)

(0) (1) (1)


(0)
(1)
(0) (1)
(1) (0) (1) (0) (0) (1) (0)

séquence 1 0 1 0 0 1 0
reçue

Figure 3.14. Calcul des métriques cumulées après réception du 1 er bit


du mot r

yi ––0,2 +0,9 +1,1 ––1,3 +0,4 +2,5 ––0,7


(yi − 1)2 +1,44 +0,01 +0,01 +5,29 +0,36 +2,25 +2,89
(yi + 1)2 +0,64 +3,61 +4,41 +0,09 +1,96 +12,25 +0,09

Tableau 3.15. Table des métriques de branche

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érier que ||y − x̂|| 2 = 5,85.

Licence limitée accordée à doc-ist-Onera


168 Bases de communications numériques 1

(1) (1) (2)

(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)

(0) (1) (1)


(0)
(1)
(0) (1) (2)
(1) (0) (1) (1)
(2)
(0) (0) (1) (0)

séquence 1 0 1 0 0 1 0
reçue

Figure 3.15. Calcul des métriques cumulées après réception du 4 ème


bit du mot r

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.

E XEMPLE.–– Reprenons l’’exemple du code C 3 de Hamming (7,4) étudié précédem-


ment. Nous supposons que le mot de code transmis est c = [1111111] et que le mot

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 169

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].

(1) (1) (2)

(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)

(0) (1) (1)


(0)
(1) (1)
(0) (1) (2) (2) (1)
(1) (0) (1) (1)
(2)
(0) (0) (1) (0)

séquence 1 0 1 0 0 1 0
reçue

Figure 3.16. Calcul des métriques cumulées

Une seconde méthode consiste à résoudre le système composé des N − K équa-


tions de parité en remplaçant les variables binaires par les bits reçus associés. Comme
précédemment, s’’il existe plusieurs solutions, alors le décodage est un échec.

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

Licence limitée accordée à doc-ist-Onera


170 Bases de communications numériques 1

(1) (1) (2)

(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)

(0) (1) (1)


(0)
(1) (1)
(0) (1) (2) (2) (1)
(1) (0) (1) (1)
(2)
(0) (0) (1) (0)

séquence 1 1 1 0 0 1 0
décodée

Figure 3.17. Détermination de la séquence estimée

Après résolution de ce système, nous obtenons la solution unique :

/
c2 = 1
[3.84]
c1 = 1

Et le mot décodé est donc ĉ = [1111111] comme précédent.

Une troisième méthode sous-optimale consiste à résoudre itérativement le système


à partir du graphe de Tanner. A chaque itération, nous construisons un vecteur e =
[e0 e1 . . . eN −1 ] contenant les positions effacées :

/
1 , si la position i est effacée
ei = [3.85]
0 , sinon

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 171

(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)

(0.01) (0.09) 2.25

(0.01) (0.36) 2.25


(12.25)
(0.01) (4.41) (0.09) (0.36)

(1.44) (5.29) (2.89)


(0.01)
(5.29)
(0.64) (3.61) (4.41) (0.09) (1.96) (12.25) (0.09)

séquence -0.2 +0.9 +1.1 -1.3 +0.4 +2.5 -0.7


reçue

Figure 3.18. Calcul des métriques de branche

A partir du vecteur e nous pouvons calculer le nombre de bits effacés i j pour


chaque équation de parité T j . L’’algorithme de décodage consiste à chaque itération
à rechercher une équation de parité ayant un seul effacement. Si une telle équation
existe, alors la position effacée peut être simplement corrigée. Cette procédure est
répétée après mise à jour du nombre de bits effacés i j pour chaque équation T j . L’’al-
gorithme se termine s’’il n’’y a plus aucun effacement ou en cas d’’échec, c’’est-à-dire si
ij > 1 ∀j. Cet algorithme est décrit sur la gure 3.22 en reprenant l’’exemple précé-
dent.

Nous pouvons dénir la fonction d’’énumération d’’effacements T (x) comme suit :

N
!
T (x) = Ti xi [3.86]
i=0

Licence limitée accordée à doc-ist-Onera


172 Bases de communications numériques 1

où Ti est le nombre de motifs d’’effacement de poids i (c’’est-à-dire contenant i efface-


ment) non décodable. Dans un canal à effacement, la probabilité d’’un motif d’’efface-
ment de poids i est égale à p i (1 − p)N −i ou p est la probabilité d’’effacement.

(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)

(0.01) (0.36) 2.25


(1.44) (1.45) (5.86) (5.95) (12.25)
(0.01) (4.41) (0.09) (0.36)

(1.44) (5.29) (2.89)


(0.01)
(5.29)
(0) (0.64) (4.25) (8.74)
(0.64) (3.61) (8.65) (12.25) (0.09)
(4.41) (0.09) (1.96)

séquence -0.2 +0.9 +1.1 -1.3 +0.4 +2.5 -0.7


reçue

Figure 3.19. Calcul des métriques cumulées

La probabilité d’’erreur par mot se déduit simplement de T (x) :

N
!
T EM = Ti pi (1 − p)N −i [3.87]
i=0

Pour le code C 3 de Hamming (7,4), la fonction d’’énumération d’’effacement cal-


culé :e en utilisant la première et deuxième méthode est égale à :

T (x) = 7x3 + 35x4 + 21x5 + 7x6 + x7 [3.88]

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 173

(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)

(0.01) (0.36) 2.25


(6.96)
(1.44) (1.45) (5.86) (5.95) (6.31)(12.25)
(0.01) (4.41) (0.09) (0.36)

(1.44) (5.29) (2.89)


(0.01)
(5.29) (5.85)
(0) (0.64) (4.25) (8.74) (1.11) (5.76)
(0.64) (3.61) (8.65) (12.25) (0.09)
(4.41) (0.09) (1.96)

séquence -0.2 +0.9 +1.1 -1.3 +0.4 +2.5 -0.7


reçue

Figure 3.20. Calcul des métriques cumulées

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.

En utilisant la méthode itérative sous-optimale, la fonction d’’énumération d’’effa-


cement est sensiblement différente :

T (x) = 10x3 + 35x4 + 21x5 + 7x6 + x7 [3.89]

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

Licence limitée accordée à doc-ist-Onera


174 Bases de communications numériques 1

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)

(0.01) (0.36) 2.25


(6.96)
(1.44) (1.45) (5.86) (5.95) (6.31)(12.25)
(0.01) (4.41) (0.09) (0.36)

(1.44) (5.29) (2.89)


(0.01)
(5.29) (5.85)
(0) (0.64) (4.25) (8.74) (1.11) (5.76)
(0.64) (3.61) (8.65) (12.25) (0.09)
(4.41) (0.09) (1.96)

séquence 1 1 1 0 0 1 0
décodée

Figure 3.21. Détermination de la séquence estimé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

Figure 3.22. Décodage itératif sur graphe de Tanner

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 175

3.5. Performances des codes linéaires en blocs

3.5.1. Performances des codes linéaires en blocs avec décodage à en-


trées dures

Pour le canal binaire symétrique de probabilité d’’inversion p, nous avons vu que


la probabilité P r(r|c) est la suivante :

) *dH (r,c)
p
P r(r|c) = pdH (r,c) (1 − p)N −dH (r,c) = (1 − p)N [3.90]
1−p

où dH (r, c) est la distance de Hamming entre la séquence reçue r et la séquence c.


Pour un canal de transmission binaire symétrique, la probabilité qu’’un mot reçu de
longueur N bits contienne i erreurs est la suivante :

PN i = CN p (1 − p)N −i
i i
[3.91]

où p est la probabilité d’’erreur du canal binaire symétrique.

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é.

3.5.2. Bornes par réunion

La borne par réunion permet de majorer une probabilité d’’erreur.

Considérons un décodeur à maximum de vraisemblance qui décide en faveur du


mot de code le plus probable, c’’est-à-dire le plus proche au sens de la distance eucli-
dienne :

x̂ = arg max p(y|x) [3.93]


x

Licence limitée accordée à doc-ist-Onera


176 Bases de communications numériques 1

La probabilité de décoder un mauvais mot de code sachant que le mot de code x i


a été transmis est bornée supérieurement comme suit :

P r(erreur mot|x i ) = P r(y ∈ Λ̄i |xi )


!
≤ P r(y ∈ Λij |xi ) [3.94]
j:j)=i

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.

Le taux d’’erreur par mot (TEM) est égal à :


!
T EM = P r(xi , erreur mot)
i
!
= P r(xi )P r(erreur mot|xi ) [3.96]
i

Finalement, le taux d’’erreur par mot est borné comme suit :

! !
T EM ≤ P r(xi ) P r(xi → xj ) [3.97]
i j)=i

où P r(x i → xj ) est la probabilité d’’erreur par paire c’’est-à-dire la probabilité de


décoder le mot de code x j sachant que x i a été transmis en faisant abstraction de tous
les autres mots de code.

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.

E XEMPLE.–– Soit un ensemble de quatre mots de codes x 1 , x2 , x3 et x4 et leurs zones


de décision associées Λ1 , Λ2 , Λ3 et Λ4 présenté sur la gure 3.23.

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 177

x3 x1

L3 L1

L4 L2

x4 x2

Figure 3.23. Zones de décision associées aux mots de code

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 :

P r(erreur mot|x 1 ) = P r(y ∈ Λ¯1 |x1 )


= P r(y ∈ (Λ2 ∪ Λ3 ∪ Λ4 )|x1 )
≤ P r(y ∈ Λ12 |x1 ) + P r(y ∈ Λ13 |x1 ) + P r(y ∈ Λ14 |x1 )
= P r(x1 → x2 ) + P r(x1 → x3 ) + P r(x1 → x4 )

L’’exemple est illustré par la gure 3.24.

3.5.3. Performances des codes linéaires en blocs avec décodage à en-


trées souples

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

Licence limitée accordée à doc-ist-Onera


178 Bases de communications numériques 1

L1
x3 x1

L1

x4 x2

L 13

x1 x3 x1 x1

L 21 L 31 L 41

L12

x2

L 14

Figure 3.24. Exemple

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

où d(xi , xj ) est la distance euclidienne entre les deux mots x i et xj . La démonstration


de la relation [3.98] sera donnée dans le deuxième volume de cet ouvrage.

Soit ci et cj les deux mots de code associés respectivement aux mots x i et xj . Si la


distance de Hamming entre c i et cj est égale à dH (ci ,cj ) = d, la distance euclidienne
entre xi et xj est égale à :
B (
i j
d(x , x ) = d(2 REb )2
(
= 4dREb
(
= 2 dREb [3.99]

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 179

Nous avons alors :


&I '
i 1
j Eb
P r(x → x ) = erfc dR [3.100]
2 N0

E XEMPLE.–– Code de parité (3,2).

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

où Ad est le nombre de mots de code de poids d. d min est la distance de Hamming


minimale du code en bloc.

En utilisant l’’inégalité :

1 √ 1
erfc( x) ≤ e−x [3.103]
2 2

Il est possible d’’exprimer une première borne supérieure de type réunion-


Bhattacharyya [BEN 99] sur le taux d’’erreur binaire :

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

Licence limitée accordée à doc-ist-Onera


180 Bases de communications numériques 1

avec :

! w
Bd = Aw,z [3.106]
K
d:d=w+z

Bd peut aussi s’’exprimer à partir de la fonction IOWEF :

!K
w
Bd = Bw,d [3.107]
w=1
K

La première ligne permet de distinguer la contribution des mots d’’information de


poids w alors que dans la seconde ligne nous avons regroupé la contribution des mots
de code de poids d en introduisant le coefcient B d . Le coefcient Bd est le ratio
moyen de bits d’’information non nuls associés aux mots de code de poids d.

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

Nous avons alors :


&I ' &I '
Eb Eb − (d−dmin )REb
erfc dR ≤ erfc dmin R e N0
N0 N0

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

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 181

La distance minimale d min conditionne les performances à fort rapport E b /N0 . Il


est cependant important de ne pas négliger le terme B d qui impacte également le TEB.

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 :

&I ' &I ' &I '


3 12 Eb 16 Eb 1 Eb
T EB ≈ erfc + 2erfc + erfc 4 [3.113]
2 7 N0 7 N0 2 N0

3.5.4. Gain de codage

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

Licence limitée accordée à doc-ist-Onera


182 Bases de communications numériques 1

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)

Figure 3.25. Gain de codage de différents codes

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 183

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

Si nous ne tenons pas compte du terme A dmin , le gain de codage « asymptopique »


s’’écrit simplement :

GCasympt ≈ 10 log10 (dmin R) en dB [3.116]

En prenant en compte le nombre de mots de codes à la distance minimale A dmin ,


nous pouvons approximer le gain de codage réel comme suit [FOR 98] :

GCT EM ≈ 10 log10 (dmin R) − 0, 2 log2 (Admin ) en dB [3.117]

Le facteur 0, 2 log2 (Admin ) prend en compte l’’impact du nombre de mots de codes


qui sont à la distance minimale sur le gain de codage. Le facteur 0,2 correspond à la
pente de la fonction erfc(.) dans la région 10 −4 − 10−5 . Cette formule n’’est qu’’une
approximation.

Par exemple, pour le code de Golay (23,12), nous avons R = 12 23 , dmin = 7 et


Admin = 253 soit un gain de codage approximativement égal à 4 dB.

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

Licence limitée accordée à doc-ist-Onera


184 Bases de communications numériques 1

Dans ce cas nous avons la relation suivante :

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

Tableau 3.16. Gain de codage de différents codes


correcteurs d’erreurs

Une autre approche consiste à utiliser le TEB mais elle implique alors de calculer
Bdmin .

3.5.5. Comparaison des performances des décodeurs à entrées dures et


pondérées

Sur la gure 3.26, nous présentons les courbes de performances T EM =


f (Eb /N0 ) d’’une chaîne de transmission utilisant un code de Hamming (7,4) et un
code de Golay (23,12). Les courbes en trait continu sont obtenues avec un décodeur
à entrées dures (en utilisant l’’équation [3.92]) et les courbes en trait pointillé sont ob-
tenues avec un décodeur à entrées pondérées (en utilisant l’’équation [3.102]). Pour le
code de Golay, nous pouvons observer que le décodage à entrées pondérées apporte
un gain d’’environ 2 dB.

3.6. Codes cycliques

3.6.1. Définition et propriétés

R EMARQUE.–– Dans cette section, la convention de notation adoptée est la convention


poids fort (MSB) à droite.

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 185

ï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

Figure 3.26. Comparaison des décodages à entrées


dures et pondérées

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
suft.

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).

Les codes cycliques possèdent la propriété principale suivante : si c = [c 0 c1 . . .


cN −2 cN −1 ] est un mot de code, alors le mot obtenu par décalage circulaire à droite
d’’une position c’ = [c N −1 c0 . . . cN −3 cN −2 ] est aussi un mot de code.

Licence limitée accordée à doc-ist-Onera


186 Bases de communications numériques 1

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.

Calculons le polynôme pc(p) :

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.

En ajoutant cN −1 puis retranchant c N −1 , cette expression peut encore s’’écrire :

pc(p) = cN −1 + c0 p + c1 p2 + · · · + cN −2 pN −1 + cN −1 (pN − 1)

Or le polynôme c & (p) associé au mot de code c’ est égal à :

c& (p) = cN −1 + c0 p + · · · + cN −2 pN −1

Ainsi, nous avons donc :

c& (p) = pc(p) − cN −1 (pN − 1)

Effectuons le calcul de pc(p) modulo p N − 1. Nous obtenons :

c& (p) = pc(p) mod (pN − 1)

Ainsi, un décalage circulaire à droite d’’une position correspond à une multiplica-


tion par p modulo p N − 1.

Plus généralement, un décalage circulaire à droite de i positions correspond à une


multiplication par p i modulo p N − 1.

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 187

3.6.2. Propriétés des codes cycliques

P ROPRIÉTÉ.–– Si c(p) est un polynôme de degré N − 1 associé à un mot de code d’’un


code cyclique (N, K), alors :

(a0 + a1 p + a2 p2 + · · · + aK−1 pK−1 )c(p) mod (pN − 1) [3.120]


avec a0 , a1 , . . . , aK−1 ∈ GF (2)

est aussi un polynôme associé à un mot de code.

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.

P ROPRIÉTÉ.–– Il est possible de construire un code cyclique (N, K) à partir d’’un


polynôme générateur noté g(p) de degré N − K :

g(p) = g0 + g1 p + · · · + gN −K−1 pN −K−1 + pN −K

g(p) est le polynôme de degré minimal parmi les 2 K mots de code du code cy-
clique.

P ROPRIÉTÉ.–– Le polynôme g(p) de degré N − K doit être un facteur de p N − 1.

P ROPRIÉTÉ.–– L’’ensemble des 2 K polynômes associés aux 2 K mots de code d’’un


code cyclique (N, K) s’’obtient par multiplication de g(p) par les 2 K polynômes de
degré inférieur ou égal à K − 1.

Si nous dénissons le polynôme u(p) associé au mot d’’information u avec u =


[u0 u1 . . . uK−2 uK−1 ] :

u(p) = u0 + u1 p + · · · + uK−2 pK−2 + uK−1 pK−1

Nous avons la relation suivante entre le polynôme u(p) de degré K − 1 et le poly-


nôme c(p) de degré N − 1 :

c(p) = u(p)g(p) [3.121]

P ROPRIÉTÉ.–– Tout polynôme facteur de p N − 1 engendre un code cyclique.

Dans le tableau 3.3, nous avons présenté la décomposition en produit de poly-


m
nômes irréductibles des polynômes de la forme p 2 −1 −1 pour m ≤ 5. Les polynômes
irréductibles de ce tableau sont les principaux polynômes utilisés pour la construction

Licence limitée accordée à doc-ist-Onera


188 Bases de communications numériques 1

de codes cycliques. Par exemple p 7 −1 se décompose en un produit de trois polynômes


irréductibles. Il est donc possible de construire les trois codes cycliques suivants avec
N =7:
–– un code (7,6) avec g(p) = 1 + p ;
–– un code (7,4) avec g(p) = 1 + p + p 3 ;
–– un code (7,4) avec g(p) = 1 + p 2 + p3 .

Les codes cycliques (7,4) ainsi obtenus sont des codes de Hamming étudiés précé-
demment.

E XEMPLE.–– Considérons le code de Hamming construit à partir du polynôme géné-


rateur g(p) = 1 + p + p3 . Les seize mots de code s’’obtiennent par multiplication des
polynômes associés aux mots d’’information avec g(p). L’’ensemble des seize mots de
code est donné dans le tableau 3.17.
u0 u1 u2 u3 c0 c1 c2 c3 c4 c5 c6
0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 1 0 1 0 0 0
0 1 0 0 0 1 1 0 1 0 0
1 1 0 0 1 0 1 1 1 0 0
0 0 1 0 0 0 1 1 0 1 0
1 0 1 0 1 1 1 0 0 1 0
0 1 1 0 0 1 0 1 1 1 0
1 1 1 0 1 0 0 0 1 1 0
0 0 0 1 0 0 0 1 1 0 1
1 0 0 1 1 1 0 0 1 0 1
0 1 0 1 0 1 1 1 0 0 1
1 1 0 1 1 0 1 0 0 0 1
0 0 1 1 0 0 1 0 1 1 1
1 0 1 1 1 1 1 1 1 1 1
0 1 1 1 0 1 0 0 0 1 1
1 1 1 1 1 0 0 1 0 1 1

Tableau 3.17. Liste des mots de code du code de Hamming (7,4) avec
g(p) =1 + p + p 3

Soit u = [1 1 1 0] (en utilisant la convention MSB à droite) et son polynome


associé u(p) = 1 + p + p2 . Le polynôme c(p) est égal à :

c(p) = u(p)g(p) = (1 + p + p2 )(1 + p + p3 ) = 1 + p4 + p5

et le mot de code associé en notation vectorielle c = [1 0 0 0 1 1 0].

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 189

L’’obtention de la matrice génératrice à partir du polynôme générateur est immé-


diate. Nous avons vu précédemment que la matrice génératrice d’’un code linéaire en
blocs s’’obtient à partir de K mots de code indépendants. Dans le cas des codes cy-
cliques, il suft de choisir les polynômes associés aux mots de code suivants :

g(p), g(p)p, g(p)p2 , ..., g(p)pK−1

Par exemple, pour le code de Hamming (7,4) avec g(p) = 1 + p + p 3 , la matrice


génératrice est la suivante :

 
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 :

pN −K u(p) = u0 pN −K + u1 pN −K+1 + · · · + uK−2 pN −2 + uK−1 pN −1

Le polynôme c(p) associé à un mot de code sous la forme systématique :

c = [c0 c1 . . . cN −1 ] = [c0 c1 . . . cN −K−1 u0 u1 . . . uK−2 uK−1 ]

s’’écrit :

c(p) = t(p) + pN −K u(p) [3.123]


= q(p)g(p) d’’après la propriété des codes cycliques [3.124]

Divisons pN −K u(p) par g(p). Nous obtenons :

pN −K u(p) = q(p)g(p) + t(p)

où q(p) est le quotient et t(p) est le reste de la division de degré inférieur à N − K.

Licence limitée accordée à doc-ist-Onera


190 Bases de communications numériques 1

En résumé, pour obtenir le mot de code sous forme systématique c(p) = q(p)g(p)
il suft 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) :

c(p) = t(p) + pN −K u(p)

E XEMPLE.–– Considérons le mot d’’information u = [1 1 1 0] et le code de Hamming


(7,4) avec g(p) = 1 + p + p 3. Le polynôme associé à u est u(p) = 1 + 1p + 1p 2 + 0p3 .
On a :

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

Le reste de la division de p 3 + p4 + p5 par g(p) = 1 + p + p3 est égal à p. Ainsi


le polynôme c(p) associé au mot de code s’’écrit :

c(p) = p + p3 + p4 + p5

Le mot de code est donc nalement :

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

Cette écriture est différente de la forme systématique présentée précédemment.


Nous retrouvons donc le même mot de code à un décalage près que celui obtenu à
partir de la matrice génératrice systématique [3.8].

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 191

3.6.3. Détection d’erreurs par CRC et requête automatique de répétition

An de garantir une transmission extrêmement able, il est possible de mettre


en œœuvre un système de requête automatique de répétition ARQ (Automatic Repeat
reQuest) utilisant un acquittement/ acquittement négatif (Acknowledgement (ACK)/
Negative Acknowledgement (NACK)) sous réserve de disposer d’’un canal de retour.

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 :

c(p) = t(p) + pN −K u(p)

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 signie 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.

Nom du CRC Polynôme générateur Système


CRC4 g(p) = p4 + p + 1 G.704
CRC5 g(p) = p5 + p2 + 1 USB
CRC6 g(p) = p6 + p + 1 G.704
CRC8-CCITT g(p) = p8 + p2 + p + 1 ATM, RNIS
CRC16 g(p) = p16 + p15 + p2 + 1 USB, ANSI
CRC16-CCITT g(p) = p16 + p12 + p5 + 1 X25, SDLC,
HDLC
CRC16-DECT g(p) = p16 + p10 + p8 + p7 + p3 + 1 DECT
CRC24 g(p) = p24 + p22 + p20 + p19 + p18 + p16 + p14 +
p13 + p11 + p10 + p8 + p7 + p6 + p3 + p + 1
CRC32 g(p) = p32 + p26 + p23 + p22 + p16 + p12 + p11 + V.42, Ethernet,
p10 + p8 + p7 + p5 + p4 + p2 + p + 1 MPEG2

Tableau 3.18. Polynômes générateurs pour CRC

Licence limitée accordée à doc-ist-Onera


192 Bases de communications numériques 1

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 efcace. 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.

Dans le protocole go-back-N, l’’émetteur est autorisé à transmettre consécutive-


ment un nombre N f de trames regroupées en fenêtre sans recevoir de symbole ACK.
Dès que l’’émetteur reçoit un symbole NACK associé à la trame i, il arrête de trans-
mettre de nouvelles trames et retransmet la trame i ainsi que les N f − 1 trames sui-
vantes. A la réception, le récepteur élimine la trame erronée i ainsi que les N f − 1
trames suivantes reçues qu’’elles soient correctes ou non. La transmission est répé-
tée jusqu’’à ce que la trame i soit bien reçue et le processus est répété à nouveau. Le
protocole go-back-N est illustré sur la gure 3.27b pour N f = 4.

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

An 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).

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 193

Dans le protocole HARQ type 1, le code correcteur d’’erreurs permet de réduire la


fréquence de retransmission en cherchant à corriger les erreurs avant de tester l’’inté-
grité du message par le CRC. Lorsque le récepteur ne peut pas décoder la trame, il
demande une retransmission et élimine la trame corrompue.

Si le récepteur peut stocker les trames précédemment reçues, il est possible de


combiner celles-ci pour faciliter le décodage. Cette version est appelée « combinaison
de Chase » CC (Chase Combining) [CHA 73].

Dans le protocole HARQ type 2 ou protocole « redondance incrémentale » IR (In-


cremental Redundancy) [MAN 74] lorsque l’’émetteur reçoit un symbole NACK, il
transmet une trame codée supplémentaire qui sera associée aux trames précédentes
pour participer au décodage à la réception. Le protocole IR peut être décrit comme
suit :
1) calcul du mot de code à partir du mot d’’information en utilisant un code en
blocs linéaire (N, K) ;

"M2) division du mot de code en M sous-mots de code de dimension N k où N =


k=1 Nk et mémorisation de l’’ensemble du mot de code (partie systématique et re-
dondance) en vue d’’éventuelles transmissions ;
3) initialisation m = 1 ;
4) transmission du m ième sous-mot de code ;
5) à la réception, essai de décodage en utilisant les symboles reçus jusqu’’à présent.
Si la séquence d’’information a été correctement décodée, envoi d’’un symbole ACK à
l’’émetteur. Sinon, m = m + 1 et envoi d’’un symbole NACK à l’’émetteur et retour
à l’’étape 4). Si la séquence d’’information n’’a pas été correctement décodée lorsque
m = M , alors échec de la transmission.

Le rendement du code après la m ième transmission est Rm = "mK Nk


et le ren-
k=1
dement moyen est égal à :

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 signicativement meilleures.

Licence limitée accordée à doc-ist-Onera


194 Bases de communications numériques 1

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.

3.6.4. Codage des codes cycliques

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.

3.6.4.1. Structure matérielle d’un diviseur de polynômes


Soit la division d’’un polynôme dividende a(p) par un polynôme diviseur g(p) de
degré d dans le corps ni GF (2). Le reste t(p) et le quotient q(p) de cette division
sont dénis par la relation classique :

a(p) = g(p)q(p) + t(p) [3.126]

E XEMPLE.–– Soit la division de 1 + p 2 + p6 par 1 + p + p2 .

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 modications du divi-
dende sont réalisées de la gauche vers la droite (des poids forts vers les poids faibles) ;

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 195

–– pour un diviseur de degré d, à chaque itération, les modications du dividende


ne portent que sur les (d + 1) termes les plus à gauche. Les autres termes du dividende
peuvent être momentanément ignorés ;
–– lorsque la modication du dividende a lieu, elle consiste à ajouter terme à terme
les d + 1 coefcients du diviseur.

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 coefcient du polynôme a(p) entre dans
le circuit. Après d coups d’’horloge, le premier coefcient non nul du quotient sort du
dernier registre à décalage. Ce coefcient 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

Figure 3.28. Structure matérielle d’un diviseur par 1 + p + p 2

Le séquencement correspondant à la division calculée ci-dessus est donné sur la


gure 3.29 et dans le tableau 3.20. Nous pouvons vérier qu’’à chaque instant les
registres internes contiennent la partie du dividende en cours de calcul. Le quotient est
obtenu à partir du second coup d’’horloge en sortie du registre s 2 , q(p) = 1p4 + 1p3 +
0p2 + 1p + 0. Au dernier coup d’’horloge, la sortie des registres à décalage correspond
bien au reste de la division soit t(p) = 1p + 1.

3.6.4.2. Structures d’un codeur cyclique


Dans le cas des codes cycliques (N, K), nous avons vu qu’’avant de calculer le
reste t(p) de la division il est nécessaire de prémultiplier le polynôme associé au mot
d’’information u(p) par p N −K . La multiplication par p N −K est équivalente à ajouter
pN −K zéros à la suite de u(p).

Licence limitée accordée à doc-ist-Onera


196 Bases de communications numériques 1

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

Figure 3.29. Séquencement du diviseur par 1 + p + p 2

Entrée Coup d’horloge s1 s2


0 0 0
MSB 1 1 1 0
0 2 0 1
0 3 1 1
0 4 1 0
1 5 1 1
0 6 1 0
LSB 1 7 1 1

Tableau 3.19. Séquencement du diviseur

E XEMPLE.–– Considérons à nouveau l’’exemple du code cyclique de Hamming (7,4)


avec g(p) = 1 + p + p3 .

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.

Reprenons le mot d’’information u = [1 1 1 0] (en utilisant toujours la convention


MSB à droite) associé au polynôme u(p) = 1 + p + p 2 .

Après prémultiplication, nous avons p 3 u(p) = p3 + p4 + p5 et le mot transmis au


diviseur est [0 0 0 1 1 1 0].

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 197

2 3
1 1p 0p 1p

3
p u ( p) s1 s2 s3
D D D

Figure 3.30. Structure matérielle d’un codeur de Hamming


g(p) = 1 + p + p 3

Entrée Coup d’horloge s1 s2 s3


0 0 0 0
MSB 0 1 0 0 0
1 2 1 0 0
1 3 1 1 0
1 4 1 1 1
0 5 1 0 1
0 6 1 0 0
LSB 0 7 0 1 0

Tableau 3.20. Séquencement du codeur de Hamming

Nous retrouvons le reste calculé précédemment t(p) = 0 + 1p + 0p 2 . Avec cette


structure, il faut sept coups d’’horloge pour obtenir le reste de la division [0 1 0] sur
trois bits, comme présenté dans le tableau 3.20.

Il est possible de réduire le nombre de coups d’’horloge nécessaire pour calculer le


reste en exploitant le fait que les N − K derniers bits du polynôme p N −K u(p) sont
nuls. Au lieu de modier les N − K + 1 coefcients les plus à gauche du dividende à
chaque itération, nous pouvons décomposer la division en K divisions successives.

Reprenons l’’exemple précédent pour illustrer ce principe : u(p) = 1 + p + p 2 et


g(p) = 1 + p + p3 .

La structure du codeur correspondant est donnée sur la gure 3.31 et le séquence-


ment du codeur est donné dans le tableau 3.21.

En résumé, cette structure permet de gagner N −K coups d’’horloge correspondant


aux N − K derniers bits nuls du polynôme p N −K u(p).

Licence limitée accordée à doc-ist-Onera


198 Bases de communications numériques 1

2 3
1 1p 0p 1p

s1 s2 s3
D D D

3
p u ( p)

Figure 3.31. Structure matérielle d’un codeur de Hamming avec


prémultiplication g(p) = 1 + p + p 3

Entrée Coup d’horloge s1 s2 s3


0 0 0 0
MSB 0 1 0 0 0
1 2 1 1 0
1 3 1 0 1
1 4 0 1 0

Tableau 3.21. Séquencement du codeur de Hamming


avec prémultiplication

Nous pouvons maintenant présenter la structure matérielle complète d’’un codeur


pour le code de Hamming (7,4) déni par le polynôme g(p) = 1 + p + p 3 .

D D D

Figure 3.32. Structure matérielle complète d’un codeur de Hamming


g(p) = 1 + p + p 3

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 199

Le codage s’’effectue en deux étapes :


–– l’’interrupteur P 0 est fermé et P1 est en position A. K = 4 coups d’’horloge sont
appliqués pour envoyer les K premiers bits du mot de code et calculer le reste t(p) ;
–– l’’interrupteur P 0 est ouvert et P1 est en position B. N − K = 3 coups d’’horloge
sont appliqués pour envoyer les N − K derniers bits du mot de code (correspondant
au reste).

Ces structures matérielles de codeurs sont à comparer à celles utilisant des addi-
tionneurs modulo 2 dénies à partir du graphe de Tanner.

3.6.4.3. Diagramme en treillis d’un code cyclique


Nous avons vu dans la section 3.3.9 comment obtenir le diagramme en treillis d’’un
code linéaire en blocs. A partir de la structure matérielle de son codeur, il est possible
de déterminer directement le diagramme en treillis d’’un code cyclique. Le diagramme
en treillis pour le code de Hamming déni par le polynôme g(p) = 1 + p + p 3 est
présenté sur la gure 3.33.

"""

""!

"!"

"!!

!""

!"!

!!"

!!!

Figure 3.33. Diagramme en treillis du code de Hamming défini par le


polynôme g(p) = 1 + p + p 3

Licence limitée accordée à doc-ist-Onera


200 Bases de communications numériques 1

Le nombre d’’états maximum de ce diagramme en treillis est égal au nombre d’’états


de la structure matérielle soit ici 2 3 = 8 états. Ce diagramme en treillis est identique
à celui obtenu au chapitre 3.3 sous réserve d’’inverser l’’ordre des N bits. En effet,
les trois premières sections de ce diagramme en treillis correspondent aux bits de
redondance et les quatre dernières aux bits d’’information.

3.6.5. Décodage des codes cycliques

Le décodage d’’un code cyclique en blocs comprend deux phases distinctes :


–– calcul de syndrome ;
–– localisation des erreurs.

Le calcul du syndrome s’’obtient en réalisant la division du mot reçu r(p) par g(p) :

r(p) = q(p)g(p) + s(p) [3.127]

Le reste de cette division possède toutes les propriétés d’’un syndrome :


–– si s(p) = 0, alors le mot reçu r(p) est un mot de code ;
–– s(p) est un polynôme de degré inférieur ou égal à N − K − 1. A partir de la
valeur de s(p) il est possible d’’estimer un vecteur d’’erreurs ê(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

Figure 3.34. Structure du décodeur pour le code de


Hamming g(p) = 1 + p + p 3

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 201

La logique de décodage associe à chaque valeur du syndrome s(p) le vecteur d’’er-


reurs estimé ê(p). Il suft ensuite d’’ajouter ce vecteur d’’erreurs au mot reçu r(p) :

ĉ(p) = r(p) + ê(p) [3.128]

La complexité de ce décodeur réside dans la logique de décodage. Cette solution


est cependant intéressante lorsque le nombre d’’erreurs à corriger est faible.

3.6.5.1. Correction d’une erreur


Lorsque le code permet de corriger une seule erreur, la logique de décodage est
une simple porte à (N − K) entrées.

Soit une erreur de la forme e(p) = p j . Le syndrome associé à cette erreur a la


forme particulière suivante :

s(p) = pj mod g(p) [3.129]

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

Figure 3.35. Structure de décodage à complexité réduite pour le code


de Hamming défini par g(p) = 1 + p + p 3

Pour cet exemple, nous donnons le tableau de correspondance 3.22 entre les vec-
teurs d’’erreurs et les syndromes s(p).

Licence limitée accordée à doc-ist-Onera


202 Bases de communications numériques 1

Vecteur d’erreurs e(p) s(p)


1000000 1 1
0100000 p p
0010000 p2 p2
0001000 p3 1+p
0000100 p4 p + p2
0000010 p5 1 + p + p2
0000001 p6 1 + p2
LSB MSB

Tableau 3.22. Table des syndromes

Le résultat de la multiplication du syndrome s(p) par p N −j est égal à 1 :

s(p)pN −j = pj pN −j = pN = 1 [3.130]

Ainsi, pour déterminer la position de l’’erreur, il suft de multiplier successivement


s(p) par p jusqu’’à obtenir 1.

E XEMPLE.–– Soit le mot de code émis c = [1111111] et le vecteur d’’erreurs e =


[0000100] (e(p) = p4 soit une erreur au cinquième bit à partir du LSB) :

r(p) = c(p) + e(p) = 1p6 + 1p5 + 0p4 + 1p3 + 1p2 + 1p + 1 [3.131]

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

Tableau 3.23. Evolution du contenu des registres

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 203

3.6.6. Les codes BCH

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 suft de ne
considérer que les puissances impaires de α :

5 6
g(p) = PPCM m1 (p), m3 (p), . . . , m2e−1 (p) [3.134]

E XEMPLE.–– Construisons un code BCH avec N = 15 et sachant corriger deux erreurs


soit e = 2.

Puisque N = 2m − 1, nous obtenons m = 4 et la distance minimale est supérieure


ou égale à 5. Son polynôme générateur g(p) est le suivant :

g(p) = m1 (p)m3 (p)

A partir de la liste des polynômes minimaux pour GF (2 4 ), on obtient :

g(p) = (1 + p + p4 )(1 + p + p2 + p3 + p4 ) = 1 + p4 + p6 + p7 + p8

4. A. Hocquenghem (1908-1990) était professeur titulaire de la chaire de mathématiques géné-


rales en vue des applications au Conservatoire national des arts et métiers.

Licence limitée accordée à doc-ist-Onera


204 Bases de communications numériques 1

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

Tableau 3.24. Liste des polynômes générateurs des codes


BCH avec N ≤ 63

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.

Soit un mot de code c(p) = c 0 + c1 p + · · · + cN −1 pN −1 .

Cette propriété peut s’’écrire comme suit :

c(αi ) = c0 + c1 αi + · · · + cN −1 α(N −1)i = 0 ∀i 1 ≤ i ≤ 2e [3.135]

Cette relation peut s’’écrire aussi sous la forme matricielle suivante :

 
1 1 ... 1
 α α2 ... α2e 
 
(c0 c1 . . . cN −1 )  .. .. .. .. =0 [3.136]
 . . . . 
αN −1 α2(N −1) . . . α2e(N −1)

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 205

Comme la matrice de parité vérie cH T = 0, elle est égale à :

 
1 α . . . αN −1
1 α2 . . . α2(N −1) 
 
H = . .. . . ..  [3.137]
 .. . . . 
2e 2e(N −1)
1 α ... α

Cette matrice vérie la relation cH T = 0. Il est alors possible de démontrer que le


code corrige bien e erreurs.

E XEMPLE.–– Les lignes de la matrice de parité [3.137] qui correspondent à un même


polynôme minimal n’’ont pas besoin d’’être répétées et nous obtenons donc pour le
code BCH (15,7) déni par g(p) = 1 + p 4 + p6 + p7 + p8 la matrice de parité tronquée
suivante en ne conservant que la première et la troisième ligne :

) *
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

3.6.6.2. Décodage des codes BCH


Le décodage à entrées dures des codes BCH peut être séparé en trois étapes dis-
tinctes :
–– calcul des 2e composantes du syndrome s = (s 1 s2 . . . s2e ) ;
–– détermination du polynôme localisateur d’’erreurs σ(p) ;
–– recherche des racines du polynôme σ(p).

Licence limitée accordée à doc-ist-Onera


206 Bases de communications numériques 1

3.6.6.2.1. Calcul du syndrome


Soit c(p) = c0 + c1 p + · · · + cN −2 pN −2 + cN −1 pN −1 le mot de code, r(p) =
r0 + r1 p + · · · + rN −2 pN −2 + rN −1 pN −1 le mot reçu et e(p) = e 0 + e1 p + · · · +
eN −2 pN −2 + eN −1 pN −1 le mot d’’erreurs. Nous avons alors :

r(p) = c(p) + e(p) [3.140]

La première étape consiste à calculer le syndrome s déni par un vecteur à 2e


éléments. Par dénition le syndrome est égal au produit du vecteur reçu par la matrice
de contrôle transposée :

s = (s1 , s2 , . . . , s2e ) = rHT = (r0 , r1 , . . . , rN −1 ) HT [3.141]

Les 2e composantes du syndrome sont calculées comme suit :

si = r(αi ) = c(αi ) + e(αi ) = e(αi ) ∀i 1 ≤ i ≤ 2e [3.142]

Il faut noter que s’’il n’’y a pas d’’erreurs (e(p) = 0), les 2e composantes du syn-
drome sont nulles.

Supposons que le mot d’’erreurs soit composé de v erreurs (avec v ≤ e) :

e(p) = pj1 + pj2 + · · · + pjv [3.143]

avec 0 ≤ j1 ≤ j2 · · · ≤ jv ≤ N − 1.

A partir de [3.142], nous obtenons le système d’’équations suivant :

s1 = e(α) = αj1 + αj2 + · · · + αjv


s2 = e(α2 ) = (αj1 )2 + (αj2 )2 + · · · + (αjv )2
s3 = e(α3 ) = (αj1 )3 + (αj2 )3 + · · · + (αjv )3
..
.
s2e = e(α2e ) = (αj1 )2e + (αj2 )2e + · · · + (αjv )2e [3.144]

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 207

Posons βk = αjk 1 ≤ k ≤ v le système d’’équations devient :


s 1 = β 1 + β2 + · · · + βv
s2 = (β1 )2 + (β2 )2 + · · · + (βv )2
s3 = (β1 )3 + (β2 )3 + · · · + (βv )3
..
.
s2e = (β1 )2e + (β2 )2e + · · · + (βv )2e [3.145]
Dénissons le polynôme suivant :
v
2
σ(p) = (1 − βk p)
k=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 .

Les coefcients σk vérient les équations suivantes :


σ0 = 1
σ1 = β1 + β2 + · · · + βv
σ2 = β1 β2 + β1 β3 + · · · + βv−1 βv
..
.
σv = β1 β2 . . . βv [3.147]
Pour déterminer les coefcients σ k , nous utiliserons les relations dites de Newton
suivantes :
s1 + σ1 = 0
s2 + σ1 s1 + 2σ2 = 0
s3 + σ1 s2 + σ2 s1 + 3σ3 = 0
..
.
sv + σ1 sv−1 + · · · + σv−1 s1 + vσv = 0 [3.148]
et pour i > v :
si + σ1 si−1 + · · · + σv si−v = 0
Il faut noter que dans le cas binaire iσ i = 0 si i est pair.

Licence limitée accordée à doc-ist-Onera


208 Bases de communications numériques 1

3.6.6.2.2. Détermination du polynôme localisateur d’erreurs par l’approche


matricielle
L’’ approche matricielle consiste à résoudre directement le système de Newton
[3.148] pour déterminer le polynôme localisateur d’’erreurs σ(p).

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

Par exemple, si v = 2 le système devient :

) *) * ) *
1 0 σ1 s
= 1 [3.150]
s2 s 1 σ2 s3

Et les solutions sont :

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.

L’’approche matricielle ne présente un intérêt que lorsque la capacité de correction


du code BCH est limitée (par exemple e ≤ 3).

Nous allons maintenant voir un algorithme dont la portée est beaucoup plus géné-
rale : l’’algorithme de Berlekamp-Massey.

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 209

3.6.6.2.3. Détermination du polynôme localisateur d’erreurs par l’algorithme


de Berlekamp-Massey
Cet algorithme a été proposé par Berlekamp [BER 68] et son fonctionnement a
été éclairci par Massey [MAS 69]. Nous nous contenterons ici de présenter l’’algo-
rithme sans en faire la démonstration. Pour une description détaillée, nous renvoyons
le lecteur à l’’ouvrage de Berlekamp.

La première étape consiste à déterminer le polynôme de degré minimal σ (1) (p)


dont les coefcients vérient la première égalité du système Newton [3.148]. Si les
coefcients vérient aussi la seconde égalité du système, nous posons alors σ (2) (p) =
σ (1) (p). Sinon, nous ajoutons un terme correctif à σ (1) (p) pour obtenir σ (2) (p). Le po-
lynôme σ (2) (p) est alors le polynôme à degré minimum dont les coefcients vérient
les deux premières égalités de Newton. Nous continuons cette procédure pour former
σ (3) (p) puis σ (4) (p) jusqu’’à obtenir σ (2e) (p). Ce dernier polynôme est le polynôme
localisateur d’’erreurs σ(p).
(µ) (µ) (µ)
Soit σ (µ) (p) = 1 + σ1 p + σ2 p2 + · · · + σlµ plµ le polynôme de degré l µ
déterminé à la µeme étape et vériant donc les µ premières équations. Pour déterminer
σ (µ+1) (p) nous commençons par calculer d µ comme suit :

(µ) (µ) (µ)


dµ = sµ+1 + σ1 sµ + σ2 sµ−1 + · · · + σlµ sµ+1−lµ

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 :

σ (µ+1) (p) = σ (µ) (p) + dµ d−1


ρ p
µ−ρ (ρ)
σ (p)

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 .

Nous commençons par calculer les composantes du syndrome :

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]

Licence limitée accordée à doc-ist-Onera


210 Bases de communications numériques 1

Comme l’’exemple est relativement simple, il est possible de déterminer le poly-


nôme localisateur d’’erreurs σ(p) par l’’approche matricielle. Nous obtenons :
σ1 = s1 = α14
s3
σ2 = + s2 = s2 = α13 [3.152]
s1
Utilisons maintenant l’’algorithme de Berlekamp-Massey.
–– Pour µ = 0. Nous initialisons σ (0) (p) = 1 et nous calculons d 0 :

d0 = s1 = α14

Nous obtenons le tableau partiel 3.25.


µ σ (µ) (p) dµ lµ µ − lµ
––1 1 1 0 ––1
0 1 α14 0 0

Tableau 3.25. Tableau partiel pour µ = 0

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]

–– Pour µ = 1. Nous calculons d 1 :


(µ)
d1 = s2 + σ1 s1
= α13 + α14 α14
= α13 + α13 = 0 [3.154]
Nous obtenons le tableau partiel 3.26 pour µ = 1 .
µ σ (µ) (p) dµ lµ µ − lµ
––1 1 1 0 ––1
0 1 α14 0 0
1 1 + α14 p 0 1 0

Tableau 3.26. Tableau partiel pour µ = 1

Comme d1 est nul, nous avons :

σ (2) (p) = σ (1) (p) = 1 + α14 p

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 211

–– Pour µ = 2. Nous calculons d 2 :


(µ) (µ)
d2 = s3 + σ1 s2 + σ2 s1
= 0 + α13 α14 + 0
= α12 [3.155]

Nous obtenons le tableau partiel 3.27 pour µ = 2.

µ σ (µ) (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

Tableau 3.27. Tableau partiel pour µ = 2

Comme d2 est non nul, nous devons ajouter un terme correctif à σ (2) (p) pour
obtenir σ (3) (p) :

σ (3) (p) = σ (2) (p) + dµ d−1


ρ p
µ−ρ (ρ)
σ (p) avec ρ = 0
= 1 + α14 p + α12 α−14 p2
= 1 + α14 p + α13 p2 [3.156]

–– Pour µ = 3. Nous calculons d 3 :


(µ) (µ)
d3 = s4 + σ1 s3 + σ2 s2
= α11 + 0 + α13 α13
=0 [3.157]

Le tableau nal est présenté dans le tableau 3.28.

µ σ (µ) (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

Tableau 3.28. Tableau final

Licence limitée accordée à doc-ist-Onera


212 Bases de communications numériques 1

Comme d3 est nul, nous avons σ (4) (p) = σ (3) (p) et nous obtenons nalement le
polynôme localisateur d’’erreurs σ(p) suivant :

σ(p) = σ (2e) (p) = σ (4) (p) = 1 + α14 p + α13 p2

Il reste maintenant à déterminer les positions des erreurs.

3.6.6.2.4. Recherche des racines du polynôme localisateur d’erreurs


Nous avons vu précédemment que les inverses des racines du polynôme localisa-
teur d’’erreurs sont égales à β k et permettent de localiser la position des erreurs j k .

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.

E XEMPLE.–– Nous pouvons vérier que :

σ(p) = σ (4) (p) = 1 + α14 p + α13 p2


= (1 + α4 p)(1 + α9 p) [3.158]

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 pouvons également appliquer la méthode de Chien pour déterminer la posi-


tion des erreurs. Les résultats sont présentés dans le tableau 3.29.

Nous retrouvons bien que les deux erreurs sont aux positions j 1 = 4 et j2 = 9.

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 213

"
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

Tableau 3.29. Détermination de la position des erreurs


par la méthode de Chien

3.6.7. Les codes Reed Solomon

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 .

Le polynôme générateur g(p) d’’un code RS(N, K) de longueur N = 2 m − 1 et


de dimension K est le produit des N − K polynômes minimaux m i (p) avec i =
1, 2, ..., N − K :
−K
N2 −K
N2
g(p) = mi (p) = (p − αi ) [3.159]
i=1 i=1

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

Licence limitée accordée à doc-ist-Onera


214 Bases de communications numériques 1

de Reed-Solomon (255,239) construit dans GF (2 8 ) à partir du polynôme primitif


p8 + p4 + p3 + p2 + 1 est le suivant :
16
2
g(p) = (p − αi )
i=1

= p16 + 59p15 + 13p14 + 104p13 + 189p12 + 68p11 + 209p10 + 30p9


+ 8p8 + 163p7 + 65p6 + 41p5 + 229p4 + 98p3 + 50p2 + 36p + 39
[3.160]

Le taux d’’erreur par mot est égal à :

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

La courbe de performance T ES S = f (T ESE ) pour le code Reed Solomon


(255, 239, 17) est présentée sur la gure 3.36.

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).

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 215

ï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

Figure 3.36. TES S = f(TESE ) pour le code Reed Solomon


(255,239,17)

Les codes de Reed Solomon sont particulièrement bien adaptés à la correction


de paquets d’’erreurs dans les systèmes de communication. Les codes les plus cou-
ramment utilisés sont le (255, 239, 17), (255, 223, 33) et (255, 251, 5) dans GF (2 8 ).
Ce dernier code est utilisé pour les disques compacts audio (code CIRC Cross In-
terleave Reed-Solomon Code composé d’’un code (28, 24, 5) d’’un entrelaceur et d’’un
code (32, 28, 5)) [WIC 99]. Le code de Reed-Solomon (28, 24) est réalisé à partir
d’’un code Reed-Solomon (255, 251, 5). Pour cela, nous ajoutons 227 octets nuls aux
24 octets d’’information an d’’obtenir 251 octets, puis nous appliquons le codage de
Reed-Solomon (255, 251, 5). Après codage, nous supprimons les 227 octets excéden-
taires pour obtenir un paquet de 28 octets comprenant 4 octets de contrôle. Nous ef-
fectuons la même opération au décodage. Le même principe est utilisé pour le code
de Reed-Solomon (32, 28, 5).

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.

Licence limitée accordée à doc-ist-Onera


216 Bases de communications numériques 1

3.8. Exercices

3.8.1. Exercice 1 : code de répétition

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.8.2. Exercice 2 : probabilité d’erreur sur canal binaire symétrique

Nous considérons une source binaire et un canal binaire symétrique où le taux


d’’erreur p est égal à 0.1. Nous avons vu que la capacité de ce canal est environ égale
à 0.52 Shannon/symb.
1) Déterminer la probabilité qu’’un mot de code composé de 23 bits soit reçu sans
erreur en sortie du canal.
2) Faire le même calcul pour 1, 2 et 3 erreurs.

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 217

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.

3.8.3. Exercice 3 : stratégie de réémission

Nous transmettons dans un canal binaire symétrique un message binaire de lon-


gueur N bits dont les 0 et les 1 sont équiprobables.

Soit p la probabilité conditionnelle p = P r(Y = 0|X = 1) = P r(Y = 1|X = 0).


1) Déterminer la probabilité de n’’avoir aucune erreur dans le message.
2) Déterminer la probabilité d’’avoir une erreur exactement dans le message.
3) Déterminer la probabilité d’’avoir au moins une erreur dans le message.
4) Faire l’’application numérique pour p = 0, 1 et N = 12.
Si le message reçu est erroné, nous retransmettons à nouveau celui-ci jusqu’’à ce
que le message soit reçu sans erreur.
5) Quelle est la probabilité que le message soit correct sans réémission ?
6) Quelle est la probabilité que le message soit correct après 1, 2,3,. . ., n réémis-
sions ?
La répétition du même message trois fois permet d’’utiliser une stratégie de déco-
dage à choix majoritaire pour chacun des N bits du message. Nous pouvons mon-
trer que cette stratégie est équivalente à considérer que le message a été transmis sur
un canal binaire symétrique de longueur N mais dont la probabilité conditionnelle
p& = 3p2 .
7) Calculer alors la probabilité de décoder ce message sans erreur.
Une autre solution consiste à utiliser un code correcteur d’’erreurs. Soit le code de
Golay (24,12) dont la distance minimale est égale à 8.
8) Calculer la probabilité d’’erreur sur le mot de code après décodage.

3.8.4. Exercice 4 : code simplexe (7,3)

Soit la matrice génératrice du code simplexe (7,3) :


 
001110 1
G = 0 1 0 0 1 1 1
100111 0

Licence limitée accordée à doc-ist-Onera


218 Bases de communications numériques 1

1) Mettre G sous la forme systématique et déterminer H la matrice de contrôle.


2) Quel est le lien de ce code avec le code de Hamming (7,4) ?
3) Déterminer la fonction d’’énumération A(D) en déduire la distance minimale.
4) Construire la table de syndrome de ce code.
5) Montrer que le mot de code correspondant au mot d’’information u = [101] est
orthogonal à H.

3.8.5. Exercice 5 : code linéaire en blocs (6,3)

Soit la matrice génératrice d’’un code en blocs binaire (6,3) suivante :

 
110101
G = 0 1 1 1 1 0
001101

1) Mettre G sous la forme systématique et déterminer H la matrice de contrôle.


2) Déterminer la fonction d’’énumération A(D) en déduire la distance minimale.
3) Construire la table de syndrome de ce code.
4) Soit le mot d’’information suivant u = [101]. Déterminer le mot de code cor-
respondant. Nous supposons qu’’une erreur s’’est produite e = [001000]. Le décodeur
peut-il la corriger ?

3.8.6. Exercice 6 : code de Hamming (7,4)

Soit la matrice génératrice du code de Hamming (7,4) suivante :

 
11 01 00 0
0 1 10 10 0
G=
0 0

11 01 0
00 01 10 1

1) Mettre G sous la forme systématique et déterminer H la matrice de contrôle.


2) Determiner la fonction d’’énumération A(D) en déduire la distance minimale.
3) Construire la table de syndrome de ce code.

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 219

4) Soit le mot d’’information suivant u = [1111]. Déterminer le mot de code cor-


respondant. Nous considèrons que le canal ajoute une erreur dans la transmission
e = [1000000]. En déduire le mot reçu r = c + e. Retrouver le mot de code émis en
utilisant la table de syndrome.

3.8.7. Exercice 7 : code de Reed-Muller (8,4)

Soit la matrice génératrice du code de Hamming (7,4) suivante :


 
1101000
0 1 1 0 1 0 0
G= 0 0 1 1 0 1 0

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 ?

3.8.8. Exercice 8 : décodage à entrées dures d’un code en blocs sur le


treillis

Soit le treillis correspondant au code de Hamming déni par la matrice génératrice


systématique suivante :
 
1000110
0 1 0 0 0 1 1
G= 0 0 1 0 1 1 1

0001101

Licence limitée accordée à doc-ist-Onera


220 Bases de communications numériques 1

Soit le mot d’’information suivant : u = [1111].


1) Déterminer le mot de code correspondant.
Nous considérons que le canal ajoute une erreur de transmission e = [1000000].
2) Déterminer le mot reçu r = c + e.
3) Retrouver le mot de code émis en utilisant un décodeur de Viterbi à entrées
dures (on utilisera donc la distance de Hamming pour le calcul des métriques de
branche).

3.8.9. Exercice 9 : décodage à entrées pondérées d’un code en blocs sur


le treillis

Soit le treillis correspondant au code de Hamming déni par la matrice génératrice


systématique suivante :

 
10 00 11 0
0 1 00 01 1
G=
0 0

10 11 1
00 01 10 1

Soit le mot d’’information suivant : u = [1111].


1) Déterminer le mot de code correspondant.
Avant émission sur le canal nous convertissons les bits en un signal bipodal bit 0 ⇒
––1 et bit 1⇒ +1. Le vecteur reçu est y = [−0, 2 +0, 8 +1, 0 +1, 4 −0, 5 +2, 5 +0, 7].
2) Effectuer le décodage en utilisant un décodeur de Viterbi à entrées pondérées
(on utilisera donc la distance euclidienne (y i − xi )2 au lieu de la distance de Hamming
pour le calcul des métriques de branche).

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 221

3.8.10. Exercice 10 : décodage à entrées pondérées

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 :

Nous recevons le mot y = [+0, 9 + 0, 1 + 1, 4].


4) Réaliser le décodage à entrées pondérées en utilisant un décodeur de Viterbi (on
supposera ici que E s = +1). Commenter les résultats obtenus.
5) A partir du mot reçu, calculer les probabilités conditionnelles P r(u 1 = 1|y) et
P r(u1 = 0|y). Nous prendrons N 0 = 4.

3.8.11. Exercice 11 : comparaison du décodage à entrées dures et pon-


dérées

Soit le code linéaire en blocs déni par la matrice génératrice suivante :

 
11000011
G = 1 1 1 1 0 0 0 0
11001100

Licence limitée accordée à doc-ist-Onera


222 Bases de communications numériques 1

et son diagramme en treillis associé :

1) Déterminer la liste des mots de code 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.
Nous utilisons ce code pour une communication sur un canal additif à bruit blanc
gaussien de variance σ 2 . Avant émission sur le canal nous convertissons les bits en
un signal bipodal bit 0 ⇒ ––1 et bit 1⇒ +1.
Nous transmettons le mot d’’information u = [000].
2) Déterminer le mot de code c et le vecteur émis x = [x 0 x1 x2 x3 x4 x5 x6 x7 ].
Le vecteur d’’erreurs est le suivant :

n = [+1, 2 + 1, 3 − 0, 4 − 0, 5 0 + 0, 2 + 1, 1 − 1, 1] .

3) Déterminer le vecteur reçu y sans et avec seuillage.


4) Effectuer un décodage à entrée dure en appliquant l’’algorithme de Viterbi sur
le treillis du code. Conclusion ?
5) Démontrer
> que pour un canal
" additif à2 bruit blanc gaussien, nous avons la re-
lation : log ( p( yi | xi )) ∝ − (yi − xi ) où le signe ∝ signie « proportionnel
à ».
6) Effectuer un décodage à entrées pondérées (au lieu de la métrique euclidienne
(yi − xi )2 nous utiliserons la métrique |y i − xi | pour simplier les calculs). Conclu-
sion ?

3.8.12. Exercice 12 : code de Hamming

Nous devons transmettre un message composé d’’éléments binaires dans un canal


bruyant à entrées et sorties binaires. Nous utilisons un code de Hamming pouvant
corriger une erreur simple. Nous avons choisi pour le code C(15,11).
1) Le polynôme générateur de ce code est g(p) = 1+p+p 4. Justier ce choix.
2) Quel est le mot-code systématique associé au message de onze éléments bi-
naires suivant u = [11010010100] (MSB à droite).

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 223

3) Dessiner la structure électronique du codeur avec prémultiplication. Retrouver


en utilisant cette structure électronique, le reste calculé précédemment.
4) Nous recevons le mot suivant (MSB à droite) [011011010101000]. Vérier que
ce mot n’’est pas un mot de code.
5) Dessiner la structure électronique du décodeur.
6) Retrouver en utilisant cette structure électronique, le reste calculé précédem-
ment.

3.8.13. Exercice 13 : code cyclique

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érier 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.

Licence limitée accordée à doc-ist-Onera


224 Bases de communications numériques 1

1 + p + p3 1+p nombre d’’erreurs


divisible divisible
non divisible non divisible
non divisible divisible

Nous considérons que le décodeur ne teste que la divisibilité par 1 + p + p 3 .


11) Calculer le reste de la division du polynôme associé au mot reçu (question 9)
avec le polynôme 1 + p + p 3 .
12) Donner la structure électronique du diviseur associé. Etablir le tableau des états
des cellules élémentaires après chaque coup d’’horloge.
13) En déduire la position de l’’erreur de transmission éventuelle.
14) Y a-t-il un lien entre le code correcteur d’’erreurs déni par la matrice généra-
trice systématique calculée de la question 2 et le code déni par g(p).

3.8.14. Exercice 14 : code de Hamming

Nous considérons un code de Hamming (7,4) dont le polynôme générateur est


g(p) = 1 + p + p3 .
1) Soit le mot d’’information u = [0111] (MSB à droite), calculer le mot de code
associé c.
2) Dessiner la structure électronique du codeur avec prémultiplication.
3) Vérier le résultat obtenu dans la question 1).

3.8.15. Exercice 15 : performance des codes de Reed Solomon

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

Licence limitée accordée à doc-ist-Onera


Codes correcteurs d’erreurs en blocs 225

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 .

3.8.16. Exercice 16 : CRC

Dans les standards d’’identication radiofréquence (RFID), chaque trame comporte


un CRC de longueur 5 bits pour détecter les erreurs trame à la réception. Le polynôme
générateur utilisé dans cette norme est g(p) = p 5 + p2 + 1.
1) Soit la trame de bits d’’information de longueur K=6 u = [101001] (MSB à
droite). Déterminer les 5 bits de CRC à ajouter à celle-ci pour construire la trame
codée. Vérier que le mot de code ainsi construit est bien un mot de code.
2) Représenter la structure électronique du circuit d’’encodage.
3) Soit le mot reçu 10110001001. Est-ce un mot de code ?

3.8.17. Exercice 17 : code de Reed Solomon

Soit un code de Reed-Solomon (255,239).


1) Exprimer la distance minimale et la capacité de correction de ce code correcteur
d’’erreurs.
2) Calculer la relation taux d’’erreur par symbole TESs en sortie du décodeur à
entrées et sorties dures en fonction du taux d’’erreur par symbole en entrée TESe.
3) Tracer la courbe TESs=f(TESe).

Licence limitée accordée à doc-ist-Onera


Licence limitée accordée à doc-ist-Onera
4

Codes convolutifs

4.1. Introduction

Les codes convolutifs 1 constituent la deuxième grande classe de codes correcteurs


d’’erreurs. Ils ont été introduit par Elias en 1955 [ELI 55] et ont été utilisés tout d’’abord
dans les systèmes de communications spatiales. Il a fallu cependant attendre la décou-
verte de l’’algorithme de Viterbi en 1967 pour qu’’ils soient utilisés dans pratiquement
tous les systèmes de communications numériques.

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. Représentations mathématiques et structures matérielles

4.2.1. Définitions

Un code convolutif est un code qui transforme une séquence semi-innie de mots
d’’information en une autre séquence semi-innie de mots de code.

Soit u la séquence d’’entrée ou séquence de mots d’’information de dimension k


d’’un codeur convolutif binaire de rendement nk , u = u0 , u1 , u2 , . . . où ui = [u1i , u2i ,
..., uki ] est le ième mot d’’information de la séquence et c la séquence de sortie ou sé-
quence de mots de code de dimension n, c = c 0 , c1 , c2 , . . . où ci = [c1i , c2i , ..., cni ] est
le le ième mot de code de la séquence comme indiqué sur la gure 4.1.

1. Ces codes sont aussi appelés codes convolutionnels qui est une traduction facile du terme
anglais convolutional codes.

Licence limitée accordée à doc-ist-Onera


228 Bases de communications numériques 1

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

Figure 4.1. Codeur convolutif

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.

D ÉFINITION.–– Un codeur convolutif binaire de rendement k/n est la réalisation par


un circuit linéaire de l’association φ d’une séquence de mots d’information de k bits
u(D) avec une séquence de mots de code de n bits c(D) :
φ :Fk2 [[D]] → Fn2 [[D]]
u(D) → c(D)

2. Un idéal est une structure algébrique dénie par un anneau.

Licence limitée accordée à doc-ist-Onera


Codes convolutifs 229

avec :

c(D) = u(D)G(D) [4.3]

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.–– Un code convolutif est l’ensemble de toutes les séquences de sortie


possibles c(D) du codeur convolutif.

Pour un code convolutif, il existe un ensemble de matrices génératrices G(D) et


de codeurs qui génèrent celui-ci.

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.

Pour un codeur donné, soit M i le nombre de cellules mémoires associées à la ième


séquence d’’entrée binaire :

Mi = max deg gij (D)


i≤j≤n

"k
Le nombre total de cellules mémoires est égal à M = i=1 Mi . M détermine la
complexité du codeur.

Licence limitée accordée à doc-ist-Onera


230 Bases de communications numériques 1

u
D D

Figure 4.2. Codeur convolutif non récursif de rendement


1/2 M = 2 g1 = 7, g2 = 5

E XEMPLE.–– Considérons l’’exemple du codeur convolutif non récursif k = 1, n = 2


M = 2 donné sur la gure 4.2.

Sa matrice génératrice est la suivante :

G(D) = (g1 (D), g2 (D)) = (1 + D + D2 , 1 + D2 )

Le degré maximum des polynômes étant égal à 2, la réalisation de ce codeur né-


cessitera M = 2 cellules mémoire.

Nous décrivons également les polynômes générateurs du codeur convolutif sous


une forme octale :

g1 (D) = g01 + g11 D + g21 D2 = 1 + D + D2

g1 = [111]bin = 7oct

g2 (D) = g02 + g12 D + g22 D2 = 1 + D2

g2 = [101]bin = 5oct

Dans cet exemple nous avons les relations :

u(D) = u0 + u1 D + u2 D2 + . . .

c1 (D) = c10 + c11 D + c12 D2 + · · · = u(D)(1 + D + D2 ) [4.5]

c2 (D) = c20 + c21 D + c22 D2 + · · · = u(D)(1 + D2 ) [4.6]

Licence limitée accordée à doc-ist-Onera


Codes convolutifs 231

Les équations [4.5] et [4.6] peuvent aussi à l’’instant i s’’écrire :

c1i = g01 ui + g11 ui−1 + g21 ui−2 = ui + ui−1 + ui−2

c2i = g02 ui + g12 ui−1 + g22 ui−2 = ui + ui−2

Le rendement de ce code est égal à 1/2.

E XEMPLE.–– Considérons l’’exemple du codeur convolutif non récursif k = 1, n = 2


M = 6 donné sur la gure 4.3.

c 1i

ui s1i si2 s3i si4 si5 si6


D D D D D D

ci2

Figure 4.3. Codeur convolutif non récursif de rendement


1/2 M=6 g1 = 133, g 2 = 171

Sa matrice génératrice est la suivante :

G(D) = (g1 (D), g2 (D)) = (1 + D2 + D3 + D5 + D6 , 1 + D + D2 + D3 + D6 )

Ce codeur est un standard utilisé dans le domaine spatial et les télécommunica-


tions.

Pour le codeur récursif, les n bits de sortie peuvent dépendre d’’un nombre inni de
bits d’’entrée précédents. C’’est pourquoi le codeur récursif est un système à réponse
impulsionnelle innie (RII) sur F 2 . Les éléments gi,j (D) de la matrice génératrice
sont alors des rapports de polynômes.

Un codeur convolutif binaire de rendement k/n est appelé systématique si les k


bits de l’’entrée sont recopiés à la sortie du codeur. Sa matrice génératrice s’’écrit alors :

G(D) = (Ik R(D))

Licence limitée accordée à doc-ist-Onera


232 Bases de communications numériques 1

E XEMPLE.–– Considérons l’’exemple du codeur convolutif récursif systématique k =


1, n = 2 M = 2 donné sur la gure 4.4.

S
c i

1 2
ui si si
D D
P
c i

Figure 4.4. Codeur convolutif récursif systématique


de rendement 1/2 M = 2

La matrice génératrice de ce codeur convolutif récursif systématique est la sui-


vante :
) *
1 + D2
G(D) = 1,
1 + D + D2

Nous avons donc :

(1 + D + D2 )u(D) = (1 + D2 )cP (D) [4.7]

L’’égalité de toutes les puissances de D dans [4.7] implique l’’équation de parité


suivante pour toutes les positions i :

ui + ui−1 + ui−2 + cP P
i + ci−2 = 0 [4.8]

Les codeurs du premier et du troisième exemple sont équivalents.

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 justie leur utilisa-
tion dans les codes convolutifs concaténés en parallèle comme nous le verrons dans le
chapitre 5.

Licence limitée accordée à doc-ist-Onera


Codes convolutifs 233

4.2.2. Représentation matricielle des codes convolutifs

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 .

Les équations reliant u i , si , si+1 et ci sont les suivantes :

/
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]

Ces équations correspondent exactement aux équations d’’état et de sortie utilisées


pour décrire un système linéaire discret à entrées et sorties multiples et invariant dans
le temps [BOU 06].

Pour le premier exemple, nous avons également les relations suivantes :

s1i+1 = ui [4.11]
s2i+1 = s1i [4.12]
c1i = ui + s1i + s2i [4.13]
c2i = ui + s2i [4.14]

Ainsi, nous avons les équations d’’état et de sortie suivantes :


) *
C D C D 01 C D
si+1 = s1i+1 s2i+1 = s1i s2i + ui 1 0 [4.15]
00
) *
C D C D 10 C D
ci = c1i c2i = s1i s2i + ui 1 1 [4.16]
11

Licence limitée accordée à doc-ist-Onera


234 Bases de communications numériques 1

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

où u(D) et c(D) sont dénis dans [4.1] et [4.2] et :


!
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 :

G(D) = D + B(D−1 IM − A)−1 C [4.18]

Une dernière représentation matricielle des codes convolutifs s’’obtient en sériali-


sant les bits d’’entrée et de sortie du codeur convolutif :

u = u10 , u20 , . . . , uk0 , u11 , u21 , ..., uk1 , . . .


c = c10 , c20 , . . . , cn0 , c11 , c21 , ..., cn1 , . . .

La relation [4.3] devient alors :

c = uG [4.19]

où G est une matrice génératrice semi-innie 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 difculté.

La matrice G est alors de la forme :


 
g 0 g1 g2 . . . gM
 g0 g1 . . . gM−1 gM 
 
G= g0 . . . gM−2 gM−1 gM  [4.20]
 
.. .. .. .. ..
. . . . .

avec gi = [gi1 gi2 . . . gin ]. Les espaces blancs correspondent à des zéros.

Licence limitée accordée à doc-ist-Onera


Codes convolutifs 235

ui s1i si2 s iM
D D D
g10 g11 g 1M
c1i

g 02 g12 g2M
ci2

g0n g1n g nM
cin

Figure 4.5. Codeur convolutif non récursif générique de rendement 1/n

Pour le premier exemple, la matrice génératrice est la suivante :

 
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-innie suivante :

GHT = 0 [4.22]

Chaque séquence c devra donc satisfaire la relation :

cHT = 0 [4.23]

Pour le premier exemple, la matrice de parité est la suivante :

 
11
0 1 1 1 
 
1 1 0 1 1 1 
 
H= 110111  [4.24]
 

 11011 1 
..
.

Licence limitée accordée à doc-ist-Onera


236 Bases de communications numériques 1

4.3. Représentations graphiques des codes convolutifs

4.3.1. Diagramme de transitions d’état

Le diagramme de transitions d’’état permet de décrire simplement le fonctionne-


ment du codeur convolutif. Pour un codeur convolutif composé de M cellules mé-
moires, nous dénissons l’’état interne du codeur à l’’instant i par un vecteur s i de
dimension M :

si = [s1i , s2i , ...sM


i ]

sji est l’’état à l’’instant i de la j-ième cellule mémoire.

Le diagramme de transition d’’état est un graphe orienté composé de 2 M sommets.


Chaque sommet correspond à un état interne du codeur.

E XEMPLE.–– Le diagramme de transition pour le codeur convolutif non récursif de


rendement 1/2 déni par la matrice génératrice G(D) = (1 + D + D 2 , 1 + D2 ) est
donné gure 4.6.

10

d
01 [11] 01

c 10
b
[10 ]
00 [ 01]

11 11
[ 00 ]
a

00

Figure 4.6. Diagramme d’état pour le code convolutif non


récursif g1 = 7, g2 = 5

Dans cet exemple nous avons M = 2 et donc 2 M = 4 états internes du codeur


commeprésenté dans le tableau 4.1. Chaque branche est renseignée avec les bits de
sortie (ici c1i et c2i ). Les branches en traits pointillés et continus correspondent respec-
tivement à un bit d’’entrée égal à 0 et à 1.

Licence limitée accordée à doc-ist-Onera


Codes convolutifs 237

Etat interne s1i s2i


a 0 0
b 0 1
c 1 0
d 1 1

Tableau 4.1. Description des états internes

4.3.2. Diagramme en treillis

A partir du diagramme de transitions d’’état, il est possible de construire un graphe


biparti appelé aussi treillis élémentaire. Chaque branche b de ce graphe biparti relie
un état de départ s − (b) et un état d’’arrivée s + (b).

E XEMPLE.–– Le treillis élémentaire pour le codeur convolutif non récursif de rende-


ment 1/2 déni par la matrice génératrice G(D) = (1 + D + D 2 , 1 + D2 ) est donné
gure 4.7.

Figure 4.7. Treillis élémentaire d’un codeur convolutif non


récursif g1 = 7, g2 = 5

A chaque nœœud arrivent et partent 2 k branches. Le nombre total de branches est


donc égal à 2 k+M ; (dans cet exemple k = 1, M = 2 et donc 2 k+M = 8).

Le diagramme en treillis est un diagramme de transitions d’’état où l’’abscisse cor-


respond au temps. Il est obtenu simplement en assemblant un nombre inni de treillis
élémentaires. Le diagramme en treillis pour le codeur convolutif non récursif de ren-
dement 1/2 déni par la matrice génératrice G(D) = (1+D+D 2 , 1+D2 ) en débutant
à l’’état a est donné gure 4.8.

Licence limitée accordée à doc-ist-Onera


238 Bases de communications numériques 1

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

i=0 i=1 i=2 i=3 i=4

Figure 4.8. Diagramme en treillis d’un codeur convolutif non


récursif g1 = 7, g2 = 5

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.

4.3.3. Graphes TWL

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

Licence limitée accordée à doc-ist-Onera


Codes convolutifs 239

u0 u1 u2 u3

s0 s1 s2 s3 s4
T0 T1 T2 T3

cP
0 cP
1 cP
2 cP
3

Figure 4.9. Graphe TWL d’un codeur convolutif systématique de


rendement 1/2

La fonction locale T i (si , cP i , ui , si+1 ) correspond au treillis élémentaire du codeur


convolutif qui relie s i , si+1 , cP
i et ui .

4.4. Distance libre et fonction de transfert des codes convolutifs

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 .

chemin nul de référence


a

2 2
b
2
0

1 1
c

d 1

i=0 i=1 i=2 i=3 i=4

Figure 4.10. Diagramme en treillis d’un codeur convolutif non récursif


g1 = 7, g2 = 5

Licence limitée accordée à doc-ist-Onera


240 Bases de communications numériques 1

A partir de ce diagramme, nous constatons qu’’un seul chemin quittant le chemin


de référence à l’’instant i = 0 est à la distance 5 du chemin de référence. Il s’’agit
du chemin (a, c, b, a). Ainsi, la distance libre de ce code convolutif est égale à 5. Il
est à noter qu’’il existe deux chemins (a, c, d, b, a) et (a, c, b, c, b, a) à la distance 6 du
chemin de référence.

La fonction de transfert d’’un code convolutif permet de déterminer les proprié-


tés de distance de celui-ci. Cette fonction s’’obtient à partir du diagramme d’’états du
codeur convolutif.

Pour déterminer la fonction de transfert, nous devons modier ce diagramme


comme suit : tout d’’abord chaque branche est renseignée avec D wO W wI où wI et
wO sont respectivement le poids de Hamming des bits d’’information et des bits de
sortie. Dans notre exemple, un bit d’’information et deux bits de sorties sont associés
à chaque branche. Comme précédemment, les branches en traits pointillés et continus
correspondent respectivement à un bit d’’entrée égal à 0 et à 1. Ensuite, nous suppri-
mons la branche se rebouclant sur l’’état a qui n’’intervient pas sur les propriétés de
distance du code. Finalement, nous séparons le nœœud a en deux nœœuds distincts a et
e correspondant respectivement au nœœud d’’entrée et au nœœud de sortie du diagramme
d’’état modié. Le diagramme d’’état modié pour le codeur convolutif non récursif de
rendement 1/2 déni par la matrice génératrice G(D) = (1 + D + D 2 , 1 + D2 ) est
donné sur la gure 4.11.

D e
a D 2W c b D2
W

DW d D

DW

Figure 4.11. Diagramme d’états modifié d’un codeur convolutif non


récursif g1 = 7, g2 = 5

A partir de ce diagramme, nous pouvons alors calculer la fonction de transfert du


code convolutif. Nous avons les quatre équations suivantes :
Xc = W D 2 Xa + W Xb
Xb = DXc + DXd
Xd = W DXc + W DXd
Xe = D 2 Xb

Licence limitée accordée à doc-ist-Onera


Codes convolutifs 241

En résolvant ce système d’’équations, nous obtenons nalement la fonction IOWEF


T (W, D), dénie dans le chapitre 3 suivante 3 :

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

La fonction de transfert T (D) nous renseigne en particulier sur la distance libre


du code (ici 5) et le nombre de séquences associées (ici une seule séquence). Ces
fonctions permettent de prédire les performances du code convolutif.

Soit la séquence c0 correspondant au chemin nul de référence et c d , une séquence


de poids d. En utilisant la borne de l’’union, nous pouvons borner le taux d’’erreur
binaire sur le canal additif à bruit blanc gaussien pour un décodage à entrées pondérées
comme suit :


!
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].

Licence limitée accordée à doc-ist-Onera


242 Bases de communications numériques 1

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].

Nombre de mémoires Code dlibre


1 (2, 3) 3
2 (5, 7) 5
3 (15, 17) 6
4 (23, 35) 7
5 (53, 75) 8
6 (133, 171) 10
7 (345, 237) 10
8 (561, 753) 12
9 (1161, 1545) 12
10 (2335, 3661) 14
11 (4335, 5723) 15
12 (10533, 17661) 16

Tableau 4.2. Liste des meilleurs codes convolutifs de rendement 1/2

4.5. Algorithme de Viterbi pour le décodage des codes convolutifs

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

Licence limitée accordée à doc-ist-Onera


Codes convolutifs 243

treillis du code convolutif se prête particulièrement bien à la mise en œœuvre de l’’algo-


rithme de Viterbi, comme nous allons le voir.

Nous avons montré dans le chapitre 3 que la recherche de la séquence x̂ la plus


probable est équivalente à déterminer le chemin (ou la séquence d’’états) le plus pro-
bable. La séquence x̂ se déduit alors immédiatement.

Nous avons vu que le principe général de l’’algorithme de Viterbi consiste à chaque


section du diagramme en treillis à éliminer tous les chemins (et les séquences asso-
ciées) qui ne peuvent pas être le chemin le plus vraisemblable. A chaque nœœud du
treillis, nous ne conservons qu’’un seul chemin.

Nous allons illustrer l’’algorithme de Viterbi appliqué au décodage du codeur convo-


lutif de l’’exemple précédent. Le décodeur sera ici à entrées dures ; nous utiliserons
donc comme métrique la distance de Hamming.

Supposons qu’’à l’’instant i = 0, le codeur convolutif soit dans l’’état a et que la


séquence en entrée du codeur soit 1001. La séquence en sortie est alors 11 10 11
11. Nous considèrons que la séquence reçue est 11 00 11 11 (soit une erreur sur le
troisième bit).

A chaque étape l’’algorithme de Viterbi calcule pour chaque nouvelle branche la


distance de Hamming entre le couple de bits reçus et le couple de bits associés à la
branche considérée. Puis il calcule les 2 k+M métriques cumulées.

Le diagramme en treillis associé est présenté sur la gure 4.12.

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.

E XEMPLE.–– A l’’instant i = 3, deux chemins convergent vers l’’état a :


–– le chemin (a, c, b, a) à la distance 0+1+0=1 de la séquence reçue ;
–– le chemin (a, a, a, a) à la distance 2+0+2=4 de la séquence reçue.

Le survivant en ce nœœud sera donc le chemin (a, c, b, a). A l’’instant i = 4, il reste


quatre chemins survivants qui convergent respectivement :
–– vers l’’état a avec une distance de 2 ;
–– vers l’’état b avec une distance de 3 ;
–– vers l’’état c avec une distance de 1 ;
–– vers l’’état d avec une distance de 3.

Licence limitée accordée à doc-ist-Onera


244 Bases de communications numériques 1

i=1
c

i=2
c

i=3
c

i=4
c

Figure 4.12. Décodage de Viterbi pour un codeur convolutif non


récursif g1 = 7, g2 = 5

Licence limitée accordée à doc-ist-Onera


Codes convolutifs 245

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.

Le décodage à entrées souples en utilisant l’’algorithme de Viterbi améliore en


théorie les performances d’’environ 2 dB par rapport au décodage en décision dure.
En pratique, il est nécessaire d’’effectuer une quantication des entrées sur 2 b niveaux,
avec b = 3 ou b = 4.

4.5.1. Complexité du décodeur de Viterbi

Pour un codeur convolutif de rendement k/n et composé de M mémoires internes,


nous avons 2 M états internes : l’’utilisation de l’’algorithme de Viterbi nécessite de
conserver à chaque étape 2 M chemins survivants et métriques cumulées associées. A
chaque étape 2 k chemins convergent vers chaque nœœud ; pour chacun de ces chemins,
nous devons calculer la métrique cumulée an de déterminer le chemin survivant. En
conséquence, le nombre de calculs de métrique cumulée à effectuer à chaque étape est
égal à 2k+M . Ce calcul croît exponentiellement avec k et M , ce qui limite l’’utilisation
de l’’algorithme de Viterbi à de faibles valeurs de k et M .

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 .

4.6. Poinçonnage des codes convolutifs

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 modier 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.

Le poinçonnage s’’obtient par exemple en supprimant un symbole sur quatre en


sortie du codeur de rendement 1/2. A la réception nous ajoutons à la place de chaque
symbole manquant un symbole nul.

Le diagramme en treillis de ce codeur perforé de rendement 2/3 est représenté sur


la gure 4.13.

Licence limitée accordée à doc-ist-Onera


246 Bases de communications numériques 1

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

i=0 i=1 i=2 i=3 i=4

Figure 4.13. Diagramme en treillis d’un codeur convolutif poinçonné

La distance libre du code convolutif de rendement 1/2 et M = 2 est égale à 5 ; elle


est réduite à 3 dans le cas du code poinçonné de rendement 2/3. Il faut préciser qu’’il
n’’existe pas de code de rendement 2/3 avec M = 2 ayant une distance libre supérieure
à 3.

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

Licence limitée accordée à doc-ist-Onera


Codes convolutifs 247

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.

Dans les radiocommunications de seconde génération, le standard GSM utilise


un code convolutif de rendement 1/2 avec M = 4, alors que IS95 utilise un code
convolutif de rendement 1/2 avec M = 8 comme les satellites Globalstar.

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

4.8.1. Exercice 1 : code convolutif récursif systèmatique

1) Dessiner la structure-du code récursif


. systématique déni par la matrice géné-
1+D 2
ratrice suivante : G(D) = 1, 1+D+D 2 .

2) Déterminer le diagramme d’’état et le treillis élémentaire du code.


3) Quelle est la distance libre de ce code ?

4.8.2. Exercice 2 : code non récursif et décodage de Viterbi

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).

Licence limitée accordée à doc-ist-Onera


248 Bases de communications numériques 1

6) Nous réalisons un5 poinçonnage


6 pour passer d’’un rendement R = 1/2 à R =
1 1
2/3 de la forme P = . La séquence reçue est alors +2,0 +1,3 ––0,3 X +1,6
1X
––1,0 +0,5 X. Appliquer l’’algorithme de Viterbi à entrées pondérées pour estimer la
séquence d’’information.

Licence limitée accordée à doc-ist-Onera


5

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 enn 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).

Licence limitée accordée à doc-ist-Onera


250 Bases de communications numériques 1

Dans ce chapitre, nous commencerons par introduire les techniques de décodage


à entrées et sorties pondérées dont l’’algorithme Somme-Produit et l’’algorithme Aller-
Retour pour les codes convolutifs. Ensuite, nous présenterons les codes LDPC, la
structure d’’encodage associée et le décodage itératif de ces codes appliqué au canal
à effacement, au canal binaire symétrique et au canal additif à bruit blanc gaussien.
Puis nous étudierons les codes convolutifs concaténés en parallèle ou turbo codes et la
structure du décodeur itératif. Finalement, nous présenterons succinctement d’’autres
classes de codes concaténés comme les codes PCBC, les codes produits ainsi que les
codes convolutifs concaténés en série.

5.2. Décodage à entrées et sorties pondérées

5.2.1. Introduction

5.2.1.1. Probabilités a posteriori et intrinsèque


Dans le chapitre 3, nous avons introduit le décodeur maximum a posteriori (MAP)
qui ayant reçu la séquence y 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.

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 :

AP P (xi = a) = P r(xi = a|y)


!
= P r(x, xi = a|y)
x
!
= P r(x|y)
x:xi =a
! p(y|x)P r(x)
=
x:xi =a
p(y)
!
∝ p(y|x)P r(x) [5.1]
x:xi =a

Le signe ∝ signie « proportionnel à ». Le terme p(y) étant indépendant de a, il


peut être considéré comme une constante. Nous utiliserons souvent cette notation dans
la suite du chapitre.
"
x:xi =a signie que la somme est effectuée pour tous les mots de code x dont le
bit en position i est xi = a.

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 251

Comme dans ce chapitre, nous nous restreindrons au cas de la modulation bipo-


dale, a pourra prendre la valeur +1 ou −1.

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

Finalement, en sortant la probabilité a priori P r(x i = a) et la probabilité condi-


tionnelle p(yi |xi ) du signe somme, nous obtenons la relation classique suivante :

AP P (xi = a) ∝ P r{xi = a}p(yi |xi )EXT R(xi = a) [5.3]

avec la probabilité extrinsèque EXT R(x i = a) :

! 2
EXT R(xi = a) = p(yj |xj )P r(xj ) [5.4]
x:xi =a j)=i

Ainsi, la probabilité a posteriori AP P (x i = a) est le produit de trois termes : la


probabilité a priori P r{x i = a}, la probabilité conditionnelle p(y i |xi ) et la probabi-
lité extrinsèque EXT R(xi = a).

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.

5.2.1.2. Logarithmes de rapport de vraisemblance


Dans la relation [5.3], il est parfois plus pratique d’’utiliser des logarithmes de rap-
port de vraisemblance LLR (Logarithm Likelihood Ratio) à la place des probabilités
lorsque a peut prendre les valeurs +1 ou −1. La relation [5.3] s’’écrit alors 1 :

AP P (xi = +1) P r(xi = +1) p(yi |xi = +1)


ln = ln + ln
AP P (xi = −1) P r(xi = −1) p(yi |xi = −1)
EXT R(xi = +1)
+ ln [5.5]
EXT R(xi = −1)

1. L’’extension aux cas des modulations quelconques a été traitée par Le Goff et al. dans
[LEG 94].

Licence limitée accordée à doc-ist-Onera


252 Bases de communications numériques 1

Cette relation s’’écrit simplement :

LAP P (xi ) = LAP RI (xi ) + LIN T (xi ) + LEXT R (xi ) [5.6]

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)

p(yi |xi = +1)


LIN T (xi ) = ln
p(yi |xi = −1)

EXT R(xi = +1)


LEXT R (xi ) = ln
EXT 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 :

p(yi |xi = +1) = exp(LIN T (xi ))p(yi |xi = −1) [5.7]

En multipliant et divisant par 1 + exp(L IN T (xi )), cette relation s’’écrit :

exp(LIN T (xi ))
p(yi |xi = +1) = (p(yi |xi = −1) + p(yi |xi = +1)) [5.8]
1 + exp(LIN T (xi ))

Par ailleurs, nous avons :

1
p(yi |xi = −1) = (p(yi |xi = −1) + p(yi |xi = +1)) [5.9]
1 + exp(LIN T (xi ))

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 253

Finalement nous obtenons les relations suivantes :

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 ))

5.2.1.3. Application au canal à bruit blanc additif gaussien


Nous considérons une séquence codée x. Cette séquence est transmise sur un canal
additif à bruit blanc gaussien en utilisant une modulation bipodale. L’’échantillon reçu
en sortie du ltre adapté y i est égal à :

yi = xi + ni [5.12]

avec xi = ±1 et ni est l’’échantillon de bruit de variance σ 2 (pour


√ simplier l’’écriture
nous avons normalisée l’’expression en divisant par le terme REb ). Comme le bruit
est gaussien, la probabilité conditionnelle p(y i |xi ) s’’écrit :
) *
1 −(yi − xi )2
p(yi |xi ) = √ exp [5.13]
2πσ 2 2σ 2

Calculons l’’information intrinsèque L IN T (xi ) :


p(yi |xi = +1)
LIN T (xi ) = ln
p(yi |xi = −1)
) *
−(yi −1)2
√ 1 exp
2σ2 2σ2
= ln ) *
−(yi +1)2
√1 exp 2
22σ 2σ

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.

Nous pouvons écrire l’’expression [5.14] comme suit :

LIN T (xi ) = µI xi + nIi [5.15]

Licence limitée accordée à doc-ist-Onera


254 Bases de communications numériques 1

avec µI = σ22 et nIi un terme de bruit de distribution gaussienne centrée et de variance


σI2 = σ42 . Ainsi, pour une valeur xée de x i = +1, la variance du logarithme de
rapport de vraisemblance est le double de sa moyenne µ I = σI2 /2. Cette propriété
sera utilisée pour l’’étude des performances des codes concaténés.

5.2.1.4. Cas du code de parité (3,2)


Le graphe factorisé 2 associé à ce code est présenté sur la gure 5.1.

p ( y0 x0 )

u0
c0 c2
p ( y2 x2 )
u1
c1

p ( y1 x1 )

Figure 5.1. Graphe factorisé du code de parité (3,2)

A partir des échantillons reçus y 0 , y1 et y2 nous pouvons calculer les probabili-


tés conditionnelles p(y 0 |x0 = −1), p(y0 |x0 = 1), p(y1 |x1 = −1), p(y1 |x1 = 1),
p(y2 |x2 = −1) et p(y2 |x2 = 1). En appliquant la relation [5.3], nous obtenons pour
AP P (x0 = a) :

AP P (x0 = a) = P r{x0 = a|y0 , y1 , y2 }


∝ P r{y0 |x0 = a}P r{x0 = a}EXT R(x0 = a) [5.16]

avec :
! 2
EXT R(x0 = +1) = p(yj |xj )P r(xj )
x:xi =1 j)=0

= p(y1 |x1 = −1)P r{x1 = −1}p(y2 |x2 = +1)P r{x2 = +1}


+ p(y1 |x1 = +1)P r{x1 = +1}p(y2 |x2 = −1)P r{x2 = −1}
[5.17]

2. Par rapport aux graphes de Tanner introduits dans le chapitre 3 nous avons ajouté sur les
graphes factorisés des nœœuds spéciques 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.

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 255

! 2
EXT R(x0 = −1) = p(yj |xj )P r(xj )
x:xi =−1 j)=0

= p(y1 |x1 = −1)P r{x1 = −1}p(y2 |x2 = −1)P r{x2 = −1}


+ p(y1 |x1 = +1)P r{x1 = +1}p(y2 |x2 = +1)P r{x2 = +1}
[5.18]

5.2.1.5. Cas du code de répétition (3,1)


Le graphe factorisé associé à ce code est présenté sur la gure 5.2.

p ( y0 x0 ) p ( y1 x1 ) p ( y2 x2 )

u0
c0 c1 c2

Figure 5.2. Graphe factorisé du code de répétition (3,1)

A partir des échantillons reçus y 0 , y1 et y2 nous pouvons calculer les probabilités


conditionnelles p(y 0 |x0 = −1), p(y0 |x0 = +1), p(y1 |x1 = −1), p(y1 |x1 = +1),
p(y2 |x2 = −1), p(y2 |x2 = +1). En appliquant la relation [5.3] on obtient pour
AP P (x0 = a) :
AP P (x0 = a) = P r{x0 = a|y0 , y1 , y2 }
∝ P r{y0 |x0 = a}P r{x0 = a}EXT R(x0 = a) [5.19]
avec :
! 2
EXT R(x0 = +1) = p(yj |xj )P r(xj )
x:xi =1 j)=0

= p(y1 |x1 = +1)P r{x1 = +1}p(y2 |x2 = +1)P r{x2 = +1}


[5.20]
! 2
EXT R(x0 = −1) = p(yj |xj )P r(xj )
x:xi =−1 j)=0

= p(y1 |x1 = −1)P r{x1 = −1}p(y2 |x2 = −1)P r{x2 = −1}


[5.21]

Licence limitée accordée à doc-ist-Onera


256 Bases de communications numériques 1

5.2.2. Algorithme Somme-Produit

5.2.2.1. Introduction
L’’algorithme Somme-Produit permet un calcul efcace 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 articielle. 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.

5.2.2.2. Règles de base


A partir des résultats obtenus pour le code de parité (3,2) et le code de répétition
(3,1) nous allons déterminer les règles de décodage lorsque l’’on applique l’’algorithme
Somme-Produit sur un graphe dont les nœœuds de variable sont binaires et dont les
nœœuds de contrôle sont des équations de parité (additions modulo 2).

Nous allons exprimer la première règle de calcul de l’’information extrinsèque. Soit


le nœœud de variable binaire de degré 3 comme sur la gure 5.3a.

ca cb
Ta Tb

µTb →c (c) µcb →T (cb )


µTa →c (c) µca →T (ca )
c T
µc→T (c) µT →c (c)

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

où le terme pa1 pb1 + pa0 pb0 au dénominateur est un terme de normalisation.

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 257

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

A partir de la première règle, nous obtenons :

µc→T (c) = µTa →c (c) + µTb →c (c) [5.25]

La seconde règle s’’écrit :


exp(Λa ) + exp(Λb )
µT →c (c) = ln
exp(Λa ) exp(Λb ) + 1
) ) * ) **
−1 µca →T (ca ) µcb →T (cb )
= −2 tanh tanh tanh [5.26]
2 2
en utilisant la relation tanh(u/2) = (exp(u) − 1)/(exp(u) + 1) [BAT 79, HAG 96].

Lorsque les nœœuds sont de degré supérieur à 3, les règles deviennent :

!
µ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
signie 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
signie l’’ensemble n(T ) excepté le nœœud de variable c.

Licence limitée accordée à doc-ist-Onera


258 Bases de communications numériques 1

L’’algorithme simplié Minimum-Somme s’’obtient à partir de l’’algorithme Somme-


Produit en remplaçant l’’équation [5.26] par l’’approximation suivante :
µT →c (c) = − min (|µca →T (ca )|, |µcb →T (cb |) sgn(µca →T (ca ))sgn(µcb →T (cb ))
= −µca →T (ca ) " µcb →T (cb ) [5.29]
où :
/
+1 si a≥0
sgn(a) = [5.30]
−1 si a<0

et :

a " b = min(|a|, |b|)sgn(a)sgn(b) [5.31]

Nous utiliserons l’’opérateur " pour simplier l’’écriture dans la suite du livre.

Lorsque le nœœud de contrôle est de degré supérieur à 3, la relation [5.28] devient


en utilisant l’’opérateur " :
!
µT →c (c) = − " µci →T (ci ) [5.32]
n(T )\c

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.

5.2.2.3. Application de l’algorithme Somme-Produit sur les graphes factorisés


sans cycle
L’’application de l’’algorithme Somme-Produit sur les graphes factorisés sans cycle
consiste simplement à appliquer les règles décrites précédemment en commençant
par les extrémités ou feuilles de l’’arbre. L’’algorithme se termine lorsque toutes les
branches ont été explorées deux fois : une fois dans le sens aller et une fois dans le
sens retour.

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

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 259

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)

Figure 5.4. Courbes de contour de µ T→c (c) en fonction de µ ca →T (ca )


et µc →T (cb ) (a) algorithme Somme-Produit (b) algorithme
b
Minimum-Somme

Licence limitée accordée à doc-ist-Onera


260 Bases de communications numériques 1

Les trois bits de parité sont obtenus comme suit :

u 0 + u 1 + c4 = 0 T0
u 0 + u 2 + c5 = 0 T1
u 0 + u 3 + c6 = 0 T2

Le graphe de Tanner de ce code est donné sur la gure 5.5.

c3
c5 u3

c2
u2 c6
T1 T2

c0
u0
c4 T0

c1
u1

Figure 5.5. Graphe de Tanner du code (7, 4)

Par rapport au code de Hamming (7,4), la distance minimale de ce code n’’est que
de 2.

Soit la séquence x = [+1 − 1 − 1 + 1 + 1 + 1 − 1] associée au mot de code binaire


c = [1001110]. La séquence x est émise sur un canal additif à bruit blanc gaussien de
variance σ 2 = 0.75 et la séquence reçue est la suivante : y = [+1, 2 − 0, 4 − 1, 5 −
0, 4 + 1, 2 − 0, 75 − 1,5].

En utilisant directement les probabilités conditionnelles p(y i |xi = −1) et p(yi |


xi = +1) calculées à partir des échantillons reçus y i nous pouvons appliquer l’’algo-
rithme Somme-Produit sur le graphe factorisé du code (7,4).

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

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 261

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] :

AP P (x1 = +1) ∝ P r{x1 = +1}p(y1 |x1 = +1)EXT R(x1 = +1)


∝ 0, 5 × 0, 27 × 0, 46 = 0, 0621 [5.34]

AP P (x1 = −1) ∝ P r{x1 = −1}p(y1 |x1 = −1)EXT R(x1 = −1)


∝ 0, 5 × 0, 73 × 0, 54 = 0, 1971 [5.35]

En normalisant nous obtenons nalement :

AP P (x1 = +1) = 0, 2396

AP P (x1 = −1) = 0, 7604

En utilisant directement les LLR intrinsèques L IN T (xi ) avec LIN T (xi ) = 2y


σ2 ,
i

nous pouvons également appliquer l’’algorithme Somme-Produit ou l’’algorithme


Minimum-Somme sur le graphe factorisé du code (7,4). Les différentes étapes de l’’al-
gorithme Minimum-Somme sont présentées sur la gure 5.7.

Nous avons :

LIN T (x) = [+3 − 1 − 4 − 1 + 3 − 2 − 4]

En appliquant l’’algorithme Minimum-Somme, nous obtenons les LLR extrinsèques


LEXT R (xi ) suivants :

LEXT R (x) = [−2 0 + 2 + 2 0 + 3 + 1]

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 :

LAP P (x) = [+1 − 1 − 2 + 1 + 3 + 1 − 3]

car LAP RI (xi ) = 0 en absence d’’information a priori.

Licence limitée accordée à doc-ist-Onera


262 Bases de communications numériques 1

(0,73 ; 0,27)
(0,88 ; 0,12)

c5 c3

(0,98 ; 0,02) c2 (0,98 ; 0,02)


T1 T2
c6

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)

c2 T1 T2 (0,98 ; 0,02) (0,98 ; 0,02)


(0,98 ; 0,02) (0,98 ; 0,02)
c1 (0
,8 )
7 , 28
;0 ;0 c6
(0,73 ; 0,27) ,1 72
3) ,
(a) (0

c0
(0,29 ; 0,71) (0,05 ; 0,95)

c4 T0

(0,05 ; 0,95) (0,05 ; 0,95)

(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,98 ; 0,02) c2 (0,98 ; 0,02) (0,98 ; 0,02) (0,98 ; 0,02)


(0 )
,8 8
7 ,2
;0 ;0 c6
,1 72
3) ,
(0 (0,12 ; 0,88)
(0,05 ; 0,95)
c0 (0,73 ; 0,27)
(0,88 ; 0,12)
(0,29 ; 0,71) (0,05 ; 0,95)

(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)

(0,05 ; 0,95) (0,05 ; 0,95)


(0,54 ; 0,46)
(0,73 ; 0,27)

c1
(d)
(0,73 ; 0,27)

Figure 5.6. Algorithme Somme-Produit sur code (7, 4)

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 263

(-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)

(-4) c2 (-4) (-4) (-4)

(-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)

Figure 5.7. Algorithme Minimum-Somme sur code (7, 4)

Licence limitée accordée à doc-ist-Onera


264 Bases de communications numériques 1

Bien que l’’algorithme Minimum-Somme ne soit pas un algorithme de décodage


(l’’objectif principal est de délivrer une information de abilité sur les bits décodés), si
nous réalisons un seuillage des LLR a posteriori, nous retrouvons bien le mot de code
émis :

x̂ = [+1 − 1 − 1 + 1 + 1 + 1 − 1]

5.2.3. Algorithme Aller-Retour

L’’algorithme Aller-Retour ou algorithm BCJR 3 [BAH 74] estime les probabilités


a posteriori des états et des transitions d’’une source de Markov observée à travers un
canal discret, bruité et sans mémoire.

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.

Soient ut = (u1t , u2t , . . . , ukt ) et ct = (c1t , c2t , . . . , cnt ) respectivement l’’entrée et


la sortie du codeur convolutif à l’’instant t. Soit x t = (x1t , x2t , . . . , xnt ) la séquence
associée émise sur le canal de transmission. En sortie du canal discret bruité et sans
mémoire le décodeur reçoit y t = (yt1 , yt2 , . . . , ytn ) à l’’instant t. Dans cette section,
nous nous limiterons au cas des codes convolutifs invariants dans le temps.

L’’algorithme Aller-Retour permet d’’estimer les probabilités a posteriori conjointes


σt (m& , m) d’’un codeur convolutif observé à travers un canal discret, bruité et sans mé-
moire :

σt (m& , m) = P r(st = m& ; st+1 = m; y0T −1 ) [5.36]

où st est l’’état à l’’instant t avec st = m, m ∈ {0, 1, . . . , S − 1} et y0T −1 est la


séquence reçue de l’’instant 0 à T − 1.

A partir de ces probabilités, nous pouvons déterminer la probabilité a posteriori


(APP) sur xit . Nous avons :

AP P (xit = a) = P r(xit = a|y0T −1 )


!
∝ σt (m& , m) [5.37]
m# ,m/xit =a

3. BCJR correspond aux initiales des quatres auteurs de l’’article [BAH 74] : Bahl, Cocke, Jeli-
nek et Raviv.

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 265

Nous calculons σt (m& , m) en utilisant la relation suivante :

σt (m& , m) = αt (m& )γt (m& , m)βt+1 (m) [5.38]

avec :

αt (m& ) = P r(st = m& ; y0t−1 ) [5.39]

γt (m& , m) = P r(st+1 = m; yt |st = m& ) [5.40]

βt (m) = P r(ytT −1 |st = m) [5.41]

Les quantités αt (m), γt (m& , m) et βt+1 (m) représentent l’’inuence de la sé-


quence reçue respectivement avant l’’instant t, à l’’instant t et après l’’instant t sur la
probabilité conjointe σ t (m& , m) comme illustré sur la gure 5.8.

Le calcul de la métrique de branche γ t (m& , m) s’’exprime comme suit :

γt (m& , m) = P r(st+1 = m; yt |st = m& )


= P r{st+1 = m|st = m& } × P r(yt |st+1 = m; st = m& )
!
= P r{st+1 = m|st = m& } P r(yt , xt |st = m& ; st+1 = m)
xt ∈X
!
&
= P r{st+1 = m|st = m } p(yt |xt )P r(xt = x|st = m& ; st+1 = m)
xt ∈X
[5.42]

où la probabilité a posteriori sur la séquence de sortie conditionnellement à la sé-


quence d’’entrée est égale à :

n
2
P r(yt |xt ) = p(ytj /xjt ) [5.43]
j=1

et p(ytj /xjt ) est la probabilité de transition du canal. La probabilité P r{x t = x|st =


m& , st+1 = m} est égale à 0 ou 1 selon x t (m& , m) :

/
& 1 si xt (m& , m) = x
P r{xt = x|st = m , st+1 = m} = [5.44]
0 sinon

Licence limitée accordée à doc-ist-Onera


266 Bases de communications numériques 1

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

Le calcul des probabilités α t (m) est effectué par récurrence :

S−1
!
αt (m) = αt−1 (m& )γt−1 (m& , m) [5.45]
m# =0

De même que le calcul des probabilités β t (m) :

S−1
!
βt (m) = βt+1 (m& )γt (m& , m) [5.46]
m# =0

En utilisant [5.38] et [5.42] nous obtenons :


!
AP P (xit = a) ∝ αt (m& )P r{st+1 = m|st = m& }
m# ,m|xit =a
)! *
× p(yt |xt )P r(xt = x|st = m& ; st+1 = m) βt+1 (m)
xt ∈X
[5.47]

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 267

Finalement, à partir de [5.43] et [5.44] l’’expression [5.47] peut s’’écrire :

!
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

L’’expression nale des probabilités a posteriori AP P (x it = a) et extrinsèque


EXT R(xit = a) dépend de la structure du codeur convolutif.

Nous pouvons décrire l’’algorithme Aller-Retour en quatre étapes :


–– initialisation : l’’état initial et l’’état nal du codeur sont égaux à l’’état zéro :

α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].

5.2.3.1. Codes convolutifs non systématiques


En introduisant AP RI(x it ) la probabilité a priori sur x it , P r{st+1 = m|st = m& }
peut s’’écrire :

n
2
P r{st+1 = m|st = m& } = AP RI(xit = xit (m& , m)) [5.49]
i=1

Licence limitée accordée à doc-ist-Onera


268 Bases de communications numériques 1

où xi (m& , m) est la valeur de la sortie associée à la branche (m & , m) Si aucune pro-


babilité a priori n’’est disponible à l’’entrée du décodeur, alors AP RI(x it ) = 1/2 et
p(m|m& ) est égal à 2n . Nous avons :
! n
2 # #
AP P (xit = a) = αt (m& ) AP RI(xit = xit (m& , m))
m# ,m/xit =a i# =1

n
2
× p(ytj | xjt (m& , m))βt+1 (m)
j=1

= AP RI(xit = a) × EXT R(xit = a) [5.50]


avec :
! n
2 # #
EXT R(xit = a) = αt (m& ) AP RI(xit = xit (m& , m))
m# ,m/xit =a i# =1
i# )=i
n
2
× p(ytj | xjt (m& , m))βt+1 (m) [5.51]
j=1

5.2.3.2. Codes convolutifs systématiques


Dans le cas des codes convolutifs systématiques, nous avons les expressions sui-
vantes :

! 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(xit = a) × p(yti | xit = a) × EXT R(xit = a)


[5.52]
avec :
! n
2 # #
EXT R(xit = a) = αt (m& ) AP RI(xit = xi (m& , m))
m# ,m/xit =a i# =1
i# )=i
n
2 # #
× p(yti | xit (m& , m))βt+1 (m) [5.53]
i# =1
i# )=i

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 269

5.2.3.3. Codes convolutifs systématiques de rendement 1/2


Soit xt = (xSt , xP S P
t ) le mot émis sur le canal à l’’instant t et y t = (yt , yt ) les
échantillons reçus à la sortie du canal sans mémoire. Nous avons alors :
!
AP P (xSt = a) ∝ αt (m& ) × AP RI(xSt = xSt (m& , m))
m# ,m/xS
t =a

&
× AP RI(xP P
t = xt (m , m))

× p(ytS | xSt (m& , m)) × p(ytP | xP &


t (m , m)) × βt+1 (m)

∝ AP RI(xSt = a) × p(ytS | xSt = a) × EXT R(xSt = a)


[5.54]
avec :
!
EXT R(xSt = a) = αt (m& ) × AP RI(xP P &
t = xt (m , m))
m# ,m/xS
t =a

&
× p(ytP | xP
t (m , m)) × βt+1 (m) [5.55]

En général, nous n’’avons aucune information a priori sur x P


t ; l’’information ex-
trinsèque EXT R(xSt = a) devient alors :

!
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

Tableau 5.1. Table des symboles transmis et reçus

Licence limitée accordée à doc-ist-Onera


270 Bases de communications numériques 1

# $
1
Figure 5.9. Treillis du codeur 1, 1+D

La variance du bruit du canal additif blanc gaussien est égale à σ 2 = 1. Après


multiplication des échantillons reçus par 2/σ 2 = 2, nous obtenons les informations
intrinsèques LIN T données dans le tableau 5.2.

5.2.3.4.1. Calcul des métriques de branche γ


Pour un code convolutif systématique de rendement 1/2, le calcul de la métrique
de branche est le suivant :

γt (m& , m) = AP RI(xSt = xSt (m& , m)) × p(ytS | xSt (m& , m))


&
×p(ytP | xP
t (m , m)) [5.57]

Calculons p(yt | xt ) pour un canal à bruit blanc additif gaussien avec x t = ±1 :


& '
1 −(yt − xt )2
p(yt | xt = a) = √ exp [5.58]
2πσ 2 2σ 2
& '
2yt xt
∝ exp [5.59]
2σ 2
& '
xt
∝ exp LIN T (xt ) [5.60]
2
& '
(xt + 1)
∝ exp LIN T (xt ) [5.61]
2

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 simplier les calculs.

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 271

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

Tableau 5.2. Table des informations intrinsèques

Dans notre exemple, en absence d’’information a priori, les 2 n = 4 métriques


de branche γ tpq où p et q sont respectivement les bits relatifs à x St et xP
t . Elles sont
données dans le tableau 5.3 en utilisant la relation [5.58].

γi00 0,0266 0,2521 0,0067 0,0004 0,0426 0,0001


γi10 0,0893 0,0928 0,0004 0,0461 0,1049 0,0445
γi01 0,0792 0,0865 0,2199 0,0007 0,0921 0,0000
γi11 0,2655 0,0318 0,0126 0,0946 0,2265 0,0144

Tableau 5.3. Table des métriques de branche calculées


à partir de [5.58]

Pour simplier 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 coefcient 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

Tableau 5.4. Table des métriques de branche calculées


à partir de [5.61]

5.2.3.4.2. Calcul des α


i = 0 : initialisation :

α0 (0) = 1

α0 (1) = 0

i=1:

α1 (0) ∝ α0 (0)γ000 = 1

Licence limitée accordée à doc-ist-Onera


272 Bases de communications numériques 1

α1 (1) ∝ α0 (0)γ011 = 9, 97

Après normalisation : α 1 (0) = 0, 09 α1 (1) = 0, 91

i=2:

α2 (0) ∝ α1 (0)γ100 + α1 (1)γ110 = 0, 417

α2 (1) ∝ α1 (0)γ111 + α1 (1)γ101 = 0, 32

Après normalisation : α 2 (0) = 0, 57 α2 (1) = 0, 43

..
.

Les résultats naux sont présentés sur la gure 5.10

+1,00 +0,09 +0,57 +0,04 +0,91 +0,18 +0,93

Etat 0

Etat 1

+0,00 +0,91 +0,43 +0,96 +0,09 +0,82 +0,07

i=0 i=1 i=2 i=3 i=4 i=5 i=6

Figure 5.10. Calcul des α

5.2.3.4.3. Calcul des β


i = 6 : initialisation

β6 (0) = 0, 5

β6 (1) = 0, 5 car le trellis n’’a pas été terminé.

i=5:

β5 (0) ∝ β6 (0)γ500 + β6 (1)γ511 = 57, 71

β5 (1) ∝ β6 (0)γ510 + β6 (1)γ501 = 177, 28

Après normalisation : β 5 (0) = 0, 25 β5 (1) = 0, 75

..
.

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 273

Les résultats naux sont présentés sur la gure 5.6

+1,00 +0,37 +0,08 +0,52 +0,66 +0,25 +0,5

Etat 0

Etat 1

+0,00 +0,63 +0,92 +0,48 +0,34 +0,75 +0,5

i=0 i=1 i=2 i=3 i=4 i=5 i=6

Figure 5.11. Calcul des β

5.2.3.4.4. Calcul de LAPP (xSi )


Nous utilisons la relation :
!
AP P (xSi = a) ∝ αt (m& ) × γt (m& , m) × βt+1 (m) [5.62]
m# ,m/xS
i
=a

i=0:

AP P (xS0 = −1) ∝ α0 (0) × γ000 × β1 (0) = 0, 37

AP P (xS0 = +1) ∝ α0 (0) × γ011 × β1 (1) = 6, 28

LAP P (xS0 ) = +2, 85

i=1:

AP P (xS1 = −1) ∝ α1 (0) × γ100 × β2 (0) + α1 (1) × γ101 × β2 (1) = 0, 2918

AP P (xS1 = +1) ∝ α1 (0) × γ111 × β2 (1) + α1 (1) × γ110 × β2 (0) = 0, 0361

LAP P (xS1 ) = −2, 04

..
.

Finalement après calcul, nous obtenons les informations a posteriori données dans
le tableau 5.5.

Licence limitée accordée à doc-ist-Onera


274 Bases de communications numériques 1

i 0 1 2 3 4 5
LAP P (xS
i ) +2,85 ––2,04 ––2,61 +4,77 +2,31 +6,54

Tableau 5.5. Calcul des informations a posteriori

5.2.3.5. Exemple avec version max log MAP


En pratique, l’’utilisation des logarithmes de probabilité permet de simplier les
calculs.

5.2.3.5.1. Calcul des métriques de branche ln γ


Les métriques de branches ln γ ipq s’’obtiennent directement à partir des informa-
tions LIN T :

ln γi00 = 0
ln γi10 = LIN T (xSi )
ln γi01 = LIN T (xP
i )

ln γi11 = LIN T (xSi )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

Tableau 5.6. Calcul des ln γ

De la même façon, au lieu de calculer les α et les β, on calculera les ln α et les


ln β.

5.2.3.5.2. Calcul des ln α


i = 0 : initialisation :
ln α0 (0) = 0

ln α0 (1) = −∞

i=1:

ln α1 (0) = ln α0 (0) + ln γ000 = 0


ln α1 (1) = ln α0 (0) + ln γ011 = 2, 3

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 275

i=2:

ln α2 (0) = max(ln α1 (0) + ln γ100 ; ln α1 (1) + ln γ110 ) = max(0; 1, 3) = 1, 3

ln α2 (1) = max(ln α1 (0) + ln γ111 ; ln α1 (1) + ln γ101 ) = max(−2, 07; 1, 23) =


1, 23

..
.

Les résultats naux sont présentés sur la gure 5.12.

+0,00 +0,00 +1,3 +1,3 +9,56 +9,56 +16,1

Etat 0

Etat 1

-1000 +2,3 +1,23 +4,72 +6,86 +11,23 +14,3

i=0 i=1 i=2 i=3 i=4 i=5 i=6

Figure 5.12. Calcul des ln α

5.2.3.5.3. Calcul des ln β


i = 6 : initialisation :

ln β6 (0) = 0

ln β6 (1) = 0 car le trellis n’’a pas été terminé.

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

..
.

Les résultats naux sont présentés sur la gure 5.13.

Licence limitée accordée à doc-ist-Onera


276 Bases de communications numériques 1

+13,8 +13,01 +12,2 +7,54 +4,74 +0,0


Etat
0

Etat
1
+0,00 +14,8 +15,87 +12,38 +6,64 +5,87 +0,0

i=0 i=1 i=2 i=3 i=4 i=5 i=6

Figure 5.13. Calcul des ln β

5.2.3.5.4. Calcul de LAPP (xSi )


Nous utilisons la relation :
& '
& &
LAP P (xSi ) = max ln αt (m ) + ln γt (m , m) + ln βt+1 (m)
m# ,m/xS
i
=+1
& '
& &
− max ln αt (m ) + ln γt (m , m) + ln βt+1 (m) [5.63]
m# ,m/xS
i
=−1

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:

LAP P (xS1 ) = max(ln α1 (0) + ln γ111 + ln β2 (1); ln α1 (1) + ln γ110 + ln β2 (0))


− max(ln α1 (0) + ln γ100 + ln β2 (0); ln α1 (1) + ln γ101 + ln β2 (1))
= max(0 − 2, 07 + 15, 87; 2, 3 − 1 + 13, 01)
− max(0 + 0 + 13, 01; +2, 3 − 1, 07 + 15, 87)
= 14, 31 − 17, 1 = −2, 79
..
.

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

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 277

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

Tableau 5.7. Calcul des informations a posteriori

5.2.3.6. Etude de la complexité de l’algorithme Aller-Retour


Pour étudier la complexité de l’’algorithme Aller-Retour nous prendrons le cas du
décodage d’’un code convolutif sans connaissance des probabilités a priori sur les bits
d’’information.

Le nombre de multiplications et d’’additions est donné pour une section du treillis.


Pour un bloc de longueur K, il faudra donc multiplier les résultats par K pour obtenir
le nombre total d’’opérations :
>n
–– calcul des γ : au lieu de calculer l’’expression j=1 p(ytj | xjt (m& , m)) à chaque
fois, il est préférable de calculer ses 2 n valeurs possibles et de les stocker en mémoire.
Chaque calcul requiert n − 1 multiplications élémentaires. Il faut donc effectuer 2 n ×
(n − 1) multiplications élémentaires pour le calcul des γ ;
–– calcul des α : il y a 2 k branches quittant et arrivant sur chaque nœœud. Pour chaque
nœœud, le calcul de α nécessite donc 2 k multiplications élémentaires et une addition de
2k valeurs (soit 2k − 1 additions élémentaires). Puisqu’’il y 2 M nœœuds, le calcul des α
requiert donc 2 k+M multiplications et 2M × (2k − 1) additions élémentaires ;
–– calcul des β : même complexité que pour le calcul des α ;
–– calcul de AP P (xit = a) : chaque calcul nécessite une addition de 2 M−1 ×
2 membres et 2k × 2M multiplications. Comme il y a deux valeurs à calculer
k

(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 .

5.2.3.7. Lien entre l’algorithme Aller-Retour et l’algorithme Somme-Produit


Dans cette section, nous allons montrer que l’’application de l’’algorithme Somme-
Produit sur le graphe factorisé d’’un codeur convolutif permet de retrouver l’’algorithme
Aller-Retour.

Considérons le cas d’’un système de transmission composé d’’un codeur convolutif


récursif systématique de rendement R = 1/2 terminé vu comme un code linéaire en
blocs binaire systématique (2K, K), et d’’un canal discret stationnaire sans mémoire
de densité de probabilité conditionnelle p(y/x) comme montré sur la gure 5.14.

Licence limitée accordée à doc-ist-Onera


278 Bases de communications numériques 1

u = cs ys
u
xs

codeur modul. canal yp


cp xp

Figure 5.14. Modèle de communication

Soit x = (xS , xP ) la séquence émise sur le canal associée à la séquence d’’entrée u


avec xS = (xS0 , xS1 , . . . , xSi , . . . , xSK−1 ) et xP = (xP P P P
0 , x1 , . . . , xi , . . . , xK−1 ). Soit
S P
y = (y , y ) la séquence reçue.

Nous avons vu que la probabilité conditionnelle a posteriori AP P (x Si = a) peut


s’’exprimer comme suit :

AP P (xSi = a) = P r(xSi = a | y)
!
∝ P r(x)p{y|x} [5.64]
xS :xS
i
=a

En considérant que la distribution a priori des séquences transmises sur le canal


est uniforme, la probabilité qu’’une séquence particulière x soit générée est égale à
1/2K .

Comme pour les graphes TWL, la fonction locale T i (si , cP S


i , ci , si+1 ) à la position
i est dénie à partir des équations d’’état et de sortie du codeur convolutif :

/
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

La factorisation de P r(x)p{y|x} est alors la suivante :

K−1 K−1 K−1


1 2 P S
2
S S
2
P r(x)p{y|x} = K
T (s ,
i i i c , c i , s i+1 ) p(y i | xi ) p(yiP | xP
i ) [5.67]
2 i=0 i=0 i=0

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 279

Un exemple de graphe factorisé pour un codeur RSC de rendement 1/2 est donné
en gure 5.15.

p(y0S | xS0 ) p(y1S | xS1 ) S


p(yK−2 | xSK−2 ) S
p(yK−1 | xSK−1 )

cS0 cS1 cSK−2 cSK−1


T0 T1 TK−2 TK−1
s0 s1 s2 sK−1 sK

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 )

Figure 5.15. Exemple de graphe factorisé pour un codeur RSC de


rendement 1/2 utilisé pour le décodage Aller-Retour

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

Licence limitée accordée à doc-ist-Onera


280 Bases de communications numériques 1

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

–– calcul des probabilités extrinsèques : nalement, il ne reste plus qu’’à transmettre


les messages µTi →cSi (cSi ) entre les nœœuds de contrôle T i et les nœœuds de variable u i :
!!!
EXT R(xSi ) = Ti (si , cSi , cP P
i , si+1 )α(si )β(si+1 )γ(ci ) [5.70]
si si+1 cP
i

Pour chacune de ces sommes, T i (si , cSi , cP


i , si+1 ) = 0 sauf lorsque la branche du
treillis est valide ;
–– calcul des probabilités a posteriori : le calcul de AP P (x Si ) s’’obtient à partir de
EXT R(xSi ) et γ(cSi ) comme suit :

AP P (xSi ) = EXT R(xSi ) × γ(cSi ) [5.71]

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 :

α(si ) ∝ P r(si = Si |y0i−1 ) [5.72]

Pour chaque valeur de s i+1 ∈ Si+1 , β(si+1 ) est proportionnel à la probabilité


conditionnelle que la séquence émise passe par l’’état s i+1 sachant l’’observation future
yi+1 , yi+2 , . . .

K−1
β(si+1 ) ∝ P r(si+1 = Si+1 |yi+1 ) [5.73]

Nous retrouvons bien les expressions α(s i ) et β(si+1 ) de l’’algorithme Aller-Retour


présentées précédemment.

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 281

cSi
EXT R(cSi ) γ(cSi )
β(si ) β(si+1 )
si si+1
α(si ) α(si+1 )

γ(cP
i )

cP
i

Figure 5.16. Passage des messages lors de l’application de


l’algorithme Aller-Retour

5.3. Codes LDPC

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é scientique 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].

Licence limitée accordée à doc-ist-Onera


282 Bases de communications numériques 1

c1 T1

dT
dc

TM

cN dT

dc

entrelaceur

Figure 5.17. Graphe de Tanner d’un code LDPC (N, d c , dT ) régulier

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.

La matrice de parité associée à ce code est la suivante :


 
1 0 1 0 0 0 1 1 0 0 0 0
0
 1 0 0 1 0 0 0 0 1 1 0
0
 1 0 1 0 0 0 0 1 0 0 1
0
 0 1 0 0 1 0 0 0 0 1 1
H=
1 0 1 0 1 0 1 0 0 0 0 0 [5.75]
0
 0 0 1 0 0 0 1 1 0 0 1
1
 1 0 0 0 1 0 0 1 0 0 0
0 0 0 1 0 0 1 0 0 1 1 0
0 0 0 0 1 1 0 1 0 1 0 0

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 283

Figure 5.18. Graphe de Tanner d’un code LDPC (12, 3, 4) régulier

Comme les lignes de la matrice H sont indépendantes, le rendement de ce code est


égal à R = 14 , et la longueur du mot d’’information est K = 3.

Gallager a démontré que la distance minimale moyenne calculée sur l’’ensemble


des codes LDPC croît linéairement avec K lorsque d c > 2 et donc que les codes
LDPC avec dc > 2 sont asymptotiquement bons (ils permettent d’’atteindre la borne de
Gilbert-Varshamov donnée par l’’équation [3.36]). Par contre, pour d c = 2, la distance
croît seulement linéairement avec le logarithme de K (distance en O(log K)).

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)

Pour un code de longueur N , le nombre d’’équations de parité M sera égal à :

71
ρ(x)
M = N 7 01 [5.77]
0 λ(x)

Licence limitée accordée à doc-ist-Onera


284 Bases de communications numériques 1

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.

Figure 5.19. Maille ou girth d’un graphe biparti

Concevoir une matrice de parité avec la maille la plus grande possible est un pro-
blème combinatoire difcile. 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.

Les matrices non structurées n’’imposent aucune contrainte et permettent d’’obtenir


les meilleures performances. Ces matrices sont en général obtenues par des heuris-
tiques comme l’’algorithme PEG (Progressive Edge Growth) proposé par Hu et al.
[HU 05], l’’algorithme IPEG [XIA 04] et l’’algorithme bit filling de Campello et al.
[CAM 01].

Les matrices structurées ou déterministes ont le grand avantage de permettre une


mise en œœuvre facile et exible. Plusieurs méthodes de construction ont été proposées
comme par exemple l’’utilisation de la géométrie nie [KOU 01] ou la combinatoire
algébrique [JOH 01]. Cependant, l’’approche la plus populaire consiste à construire
des matrices de parité quasi-cyclique (QC-LDPC) [CHE 04, FOS 04].

La matrice de parité d’’un code QC-LDPC est composée de sous-matrices circu-


laires carrées de dimension Z × Z. Chaque sous-matrice est soit une matrice identité

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 285

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

Figure 5.20. Matrice de parité d’un code QC-LDPC (638,324)

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].

Licence limitée accordée à doc-ist-Onera


286 Bases de communications numériques 1

5.3.2. Encodage des codes LDPC

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 efcaces. 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 modier la matrice génératrice an 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 modier 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

Supposons qu’’en appliquant des permutations de colonnes et de lignes, nous par-


venions à mettre la matrice H sous la forme :
) *
ABT
H= [5.79]
CDE

où A, B, C, D, E, T sont des matrices creuses et T est une matrice triangulaire


inférieure dont la diagonale est composée de 1. Plusieurs méthodes heuristiques sont
proposées dans [RIC 01b] pour chercher à minimiser la valeur de g. En multipliant
cette matrice H par la droite par la matrice :
) *
I 0
[5.80]
−ET−1 I

nous obtiendrons :
) *
A B T
[5.81]
C − ET−1 A D − ET−1 B 0

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 287

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 :

AuT + BpT1 + TpT2 = 0 [5.82]

(C − ET−1 A)uT + (D − ET−1 B)pT1 = 0 [5.83]

En posant φ = D − ET−1 B et en s’’assurant que la matrice φ de dimension g × g


est non singulière, nous pouvons calculer p T1 et pT2 comme suit :

pT1 = φ−1 (C − ET−1 A)uT [5.84]

pT2 = −T−1 (AuT + BpT1 )uT [5.85]

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]

Comme H1 est une matrice creuse et H −1


2 a une structure régulière, la complexité
de l’’opération [5.86] est linéaire.

Licence limitée accordée à doc-ist-Onera


288 Bases de communications numériques 1

5.3.3. Décodage itératif des codes LDPC

La complexité d’’un décodeur au sens du maximum de vraisemblance pour les


codes LDPC croît exponentiellement avec la taille du mot d’’information K. Heureu-
sement, il existe des décodeurs dont les performances sont proches des décodeurs au
sens du maximum de vraisemblance mais avec une complexité raisonnable : il s’’agit
de la classes des décodeurs itératifs. Dans cette section, nous allons étudier le déco-
dage itératif des codes LDPC sur canal à effacement, sur canal binaire symétrique et
sur canal additif à bruit blanc gaussien. Pour simplier les notations, nous nous limite-
rons au cas des codes LDPC réguliers. L’’extension au cas des codes LDPC irréguliers
ne pose aucune difculté.

5.3.3.1. Décodage itératif des codes LDPC sur canal à effacement


Nous avons déja vu dans la section 3.4.5 un algorithme de décodage par correc-
tion successive des effacements (Peeling Decoder) que nous avions appliqué sur le
graphe biparti des code en blocs. Cet algorithme peut bien sur être appliqué au cas
des codes LDPC. Dans cette section, nous allons nous intéresser à une classe sensible-
ment différente d’’algorithme de décodage : il s’’agit du décodage itératif par échange
de messages.

Soit l’’alphabet A = {0, X, 1} et soit le symbole reçu r n ∈ A associé au nœœud de


variable cn . Le symbole X correspond à un symbole effacé et nous avons P r(r n =
X) = ' pour un canal à effacement. Nous dénissons µ lcn →Tm (cn ) le message trans-
mis du nœœud de variable c n vers le nœœud de contrôle T m et µlTm →cn (cn ) le message
transmis du nœœud de contrôle T m vers le nœœud de variable c n à l’’itération l.

L’’algorithme de décodage itératif sur ce graphe consiste à propager des messages


entre les nœœuds de variables et les nœœuds de contrôle itérativement. Une itération
comprend deux phases :
–– calcul des messages nœœud de variable vers nœœud de contrôle : chaque nœœud de
variable v reçoit dc messages issus des nœœuds de contrôle voisins plus le message issu
du canal de transmission, calcule les d c messages puis envoie ceux-ci aux nœœuds de
contrôle voisins ;
–– calcul des messages nœœud de contrôle vers nœœud de variable : chaque nœœud de
contrôle c reçoit d T messages issus des nœœuds de variables voisins, calcule les d T
messages puis envoie ceux-ci aux nœœuds de variables voisins.

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.

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 289

Pour le canal à effacement, les phases sont les suivantes :


–– calcul des messages nœœud de variable vers nœœud de contrôle :
- à l’’itération 0 µlcn →Tm (cn ) = rn ;
- à l’’itération l avec l > 0, µ lcn →Tm (cn ) = X si le message reçu cn et tous les
messages µl−1 Tm# →cn (cn ) sont effacés (T m# sont les nœœuds de contrôle reliés à c n ex-
cepté Tm ). Sinon, µlcn →Tm (cn ) sera égal à l’’un des messages entrants (µ l−1
Tm# →cn (cn )
ou cn ) non effacés ;
–– calcul des messages nœœud de contrôle vers nœœud de variable :
- nous avons µ lTm →cn (cn ) = X si un des messages µlcn# →Tm (cn# ) est ef-
facé (c # sont les nœœuds de variable reliés à T m excepté cn ). Sinon µlTm →cn (cn ) =
" l n
µcn# →Tm (cn# ) mod 2.

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 conné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.

Il est possible de prédire les performances de cet algorithme itératif lorsque la


taille du mot de code et très grande ce qui permet de faire l’’hypothèse que le graphe
de Tanner associé est un arbre. Richardson et Urbanke [RIC 01a] ont démontré que
pour des tailles de blocs d’’information K très grandes, les messages se propagent
sur un arbre avec une probabilité 1 − O( K 1
). Par conséquent, sous réserve que la
taille des blocs soit sufsamment grande, ces cycles n’’inuencent pas ou très peu la
convergence de l’’algorithme. Dans ce cas, les messages convergeant vers les nœœuds
(i) (i)
de variable et aussi vers les nœœuds de contrôle sont indépendants. Soit p c et pT
respectivement les probabilités d’’effacement au niveau des nœœuds de variable et des
nœœuds de contrôle à l’’itération l. Pour un code LDPC régulier, nous avons les relations
récursives suivantes :
(l−1)
pT = 1 − (1 − pc(l−1) )dT −1 [5.87]
(l−1)
p(l)
c = '(pT )dc −1
= p0 (1 − (1 − pc(l−1) )dT −1 )dc −1 [5.88]

Pour le cas d’’un code LDPC régulier avec d c = 6, dT = 3 et une probabilité


(l)
d’’effacement ' = 0.4 les premières valeurs de p c sont 0,4000 0,3402 0,3062 0,2818

Licence limitée accordée à doc-ist-Onera


290 Bases de communications numériques 1

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érier 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.

Figure 5.22. Illustration graphique de l’évolution de la probabilité


d’effacement en fonction des itérations pour un code LDPC régulier
avec dc = 6, dT = 3

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]

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 291

Figure 5.23. Illustration graphique de l’évolution de la probabilité


d’effacement en fonction des itérations pour un code LDPC irrégulier

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 deux phases de l’’algorithme A sont les suivantes :


–– calcul des messages nœœud de variable vers nœœud de contrôle µ lcn →Tm (cn ) pour
chaque branche (c n , Tm ) :
- à l’’itération 0, µ 0cn →Tm (cn ) = rm ;

Licence limitée accordée à doc-ist-Onera


292 Bases de communications numériques 1

- à l’’itération l avec l > 0 :


si tous les bits µl−1
Tm# →cn (cn ) = b (Tm# sont les nœœuds de contrôle reliés à
l
cn excepté Tm ) alors µcn →Tm (cn ) = b ;
sinon, µlcn →Tm (cn ) = rm ;
–– calcul des messages nœœud de contrôle vers nœœud de variable µ lTm →cn (cn ) pour
chaque branche (c n , Tm ) :
" l
µlTm →cn (cn ) = µcn# →Tm (cn# ) mod 2 (cn# sont les nœœuds de variable reliés à
Tm excepté cn )

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 an 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
inuence 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.

Le décodage itératif consiste ici à appliquer un algorithme de décodage à déci-


sions pondérées comme l’’algorithme Somme-Produit sur le graphe de Tanner du code.
Comme précédemment, les messages se propagent sur un arbre avec une probabilité
1
1 − O( K ). Lorsque le graphe local utilisé pour le décodage est un arbre, nous pouvons
analyser simplement l’’algorithme de décodage car les messages qui arrivent à chaque
nœœud sont alors indépendants (chaque nœœud de variable n’’apparaît qu’’une seule fois
sur cet arbre local).

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).

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 293

c1 T1

dT
p(y1 /x1 ) dc

TM

cN dT

p(yN /vN ) dc

entrelaceur

Figure 5.24. Graphe factorisé d’un code LDPC (N, d c , dT ) régulier

L’’application de l’’algorithme Somme-Produit sur ce graphe consiste à propager


des messages entre les nœœuds de variables et les nœœuds de contrôle itérativement.

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

Lors de la première itération aucune information a priori issue des précédents


décodeurs n’’étant disponible, seule l’’information issue du canal de transmission µ 0 est
utilisée dans le calcul de µ c→T (c). µ0 (c) est le rapport de vraisemblance du symbole
reçu :

p(y/x = +1) 2
µ0 (c) = ln = 2y
p(y/x = −1) σ

Licence limitée accordée à doc-ist-Onera


294 Bases de communications numériques 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

p(yi /xi ) Th itération l − 1


dc − 1
(l−1)
µTh →ci (ci )
ci
(l)
µci →Tj (ci )

dT − 1
Tj itération l
(l)
µTj →ck (ck )

ck

Figure 5.25. Exemple d’arbre local pour un code LDPC (d c , dT )

Finalement, le calcul de l’’information a posteriori AP P (x) associé au bit c est


effectué en sommant les informations issues de tous les nœœuds de contrôle et du canal :

dc
! (l)
AP P (x) = µTi →c (c) + µ0 (c) [5.92]
i=1

Un exemple de performance d’’un code LDPC (4320, 3557) avec D c = 17 et


dT = 3 sur canal additif à bruit blanc gaussien est donné sur la gure 5.27. Nous pou-
vons voir qu’’un relativement grand nombre d’’itérations est nécessaire pour atteindre
la convergence du décodeur itératif.

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 295

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’’inni, 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 simplier 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) (l) (l) (l)


avec mv et mc respectivement les moyennes des messages µ v→c et µc→v .

Licence limitée accordée à doc-ist-Onera


296 Bases de communications numériques 1

(l)
mc peut être calculée à partir de l’’espérance sur chacun des termes de [5.91] :

 & & ''dc −1 


(l−1)
 −1  µvi →c (vi ) 
m(l)
c = E −2 tanh tanh [5.94]
2

code (4320,3557) d =17 d =3


c T
ï1
10

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

Figure 5.27. Taux d’erreur binaire en fonction du rapport E b /N0 pour un


code LDPC régulier (4320, 3557) avec D c = 17 et dT = 3

Soit la fonction φ(x) suivante :

/ 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.

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 297

En utilisant la fonction φ(x), nous obtenons la relation suivante :

)N Odc −1 *
−1
m(l)
c =φ (l)
φ(mv ) [5.96]

Sur la gure 5.28, nous avons comparé l’’évolution de la moyenne et de la variance


(l)
du message µv→cr (v) obtenue par approximation gaussienne et l’’évolution de la den-
sité de probabilité.

25

20

var_de
15

var_ga

10
mean_de

mean_ga
5

0
0 20 40 60 80 100 120
itération

Figure 5.28. Comparaison de la moyenne et de la variance calculées


en utilisant l’approximation gaussienne et l’évolution de la densité

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.

Licence limitée accordée à doc-ist-Onera


298 Bases de communications numériques 1

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.

En 2008, un code LDPC fonctionnant à un débit de 1 Gbit/s a été choisi pour la


norme ITU-T G.hn/G.9960 (standard ITU-T pour les transmissions par courant por-
teur, paires torsadées et cables coaxiaux). Les longueurs varient de N = 336 à 5184
bits et les rendements sont 1/2, 2/3 et 5/6. Un code LDPC (2048, 1723) est également
utilisé pour le standard IEEE 802.3an pour l’’Ethernet 10GBase-T, qui envoie des don-
nées à 10 gigabits par seconde sur un câble composé de quatre paires torsadées. Depuis
2009, les codes LDPC font également en option pour le standard 802.11n et 802.11ac.
Pour le standard 802.11ac, quatre codes QC-LDPC irréguliers de rendement 1/2, 2/3,
3/4 et 5/6 sont dénis avec N = 648, 1296 et 1 944 bits. La gure 5.20 décrit la
matrice H pour le cas R = 1/2 et N = 648.

5.4. Codes convolutifs concaténés en parallèle ou turbo codes

5.4.1. Introduction

La découverte des codes convolutifs concaténés en parallèle ou turbo codes en


1993 par Berrou, Glavieux et Thitimajshima [BER 93] a considérablement révolu-
tionné le domaine du codage de canal en permettant de s’’approcher de la limite de
Shannon. Les principaux apports des turbo codes sont les suivants :
–– la concaténation de plusieurs codes simples et l’’utilisation d’’un entrelaceur per-
mettant de s’’approcher du codage aléatoire ;
–– l’’utilisation du décodage à entrées et sorties pondérées ;
–– le décodage itératif qui bien qu’’il soit en général sous optimal converge presque
toujours vers la solution obtenue par le décodage au sens du maximum de vraisem-
blance.

Dans cette section, nous présenterons la structure du turbo codeur et du décodeur


itératif associé. Finalement, nous étudierons les performances théoriques de ces codes
et les critères et méthodes de construction des entrelaceurs.

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 299

5.4.2. Structure du codeur

La structure du codeur associé au turbo code ou codes convolutifs concaténés en


parallèle est présentée gure 5.29. Ce codeur comprend deux codeurs convolutifs ré-
cursifs systématiques (RSC) binaires de rendement k/n et un entrelaceur de K bits.
La longueur de la séquence d’’entrée est limitée à K bits.

K bits K bits (n/k-1)K bits (n/k-1)K bits

u
u
Codeur 1
R=k/n c1

Entrelaceur E

v Codeur 2 c2
R=k/n

Figure 5.29. Codeurs convolutifs concaténés en parallèle

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

La fonction d’’entrelacement appliquée sur les K bits d’’information modie l’’ordre


de sortie de ceux-ci.

Un entrelaceur E de taille K est déni par sa matrice de permutation.

Π de dimension K × K ; nous avons alors la relation entre la séquence d’’entrée u


et la sortie v de l’’entrelaceur E :

v = uΠ avec u = [u0 , u1 , . . . , uK−1 ]


v = [v0 , v1 , . . . , vK−1 ]

Licence limitée accordée à doc-ist-Onera


300 Bases de communications numériques 1

Π = {aij }K×K avec aij ∈ {0, 1}

! !
aij = 1 et aij = 1
j i

Si aij = 1 alors le bit ui est associé au bit vj .

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.

c10 c11 c12 c13

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

Figure 5.30. Graphe TWL d’un turbo codeur

Comme pour les codes convolutifs, il est possible d’’effectuer une perforation en
sortie an 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 an 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

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 301

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
an 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]

où G est la matrice génératrice de dimension K × N . La matrice de parité associée


H est de dimension (N − K) × N avec xH T = 0.

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 :

H& = (H2 H1 ) [5.98]

Nous avons la relation suivante entre u et x 1 , H2 et H1 :

) T*
1 H2
(u x ) =0 [5.99]
H1 T

Pour le second code convolutif de la structure concaténée, nous avons la relation :

) T*
2 H2
(uΠx ) =0 [5.100]
H1 T

Licence limitée accordée à doc-ist-Onera


302 Bases de communications numériques 1

La matrice de parité H du turbo code se déduit alors de H & comme suit :

) *
H2 H1 0
H= [5.101]
ΠT H2 0 H1

Un exemple de matrice de parité H pour un turbo code classique est présentée


sur la gure 5.31 à partir de la matrice [4.24]. Un cercle placé à l’’intérieur d’’un carré
signie que les colonnes à l’’intérieur de ce carré sont permutées suivant une fonction
d’’entrelacement E.

K noeuds

K noeuds

K bits K bits K bits

Figure 5.31. Matrice de parité d’un turbo codeur composé de deux


codeurs RSC(7,5) avec R T = 1/3

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.

5.4.3. Etude des performances des turbo codes

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 coefcients B d de la borne supé-
rieure [3.109]. A fort et moyen rapport signal sur bruit, seul le premier terme inuence
le taux d’’erreur et nous avons :
&I '
1 Eb
T EB ≈ Bdmin erfc dmin R [5.102]
2 N0

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 303

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.

Dans [BEN 96b], Benedetto et Montorsi ont introduit un entrelaceur uniforme


pour étudier les performances moyennes des turbo codes. Un entrelaceur uniforme
n’’est pas un entrelaceur au sens strict mais plutôt un outil probabiliste : il associe une
w
séquence d’’entrée de poids w avec les C K séquences distinctes de poids w, chacune
w
avec la même probabilité p = 1/C K . Cet entrelaceur permet de calculer l’’énuméra-
teur de poids moyen des codes convolutifs concaténés. Nous avons introduit préce-
demment la fonction d’’énumération de poids IRWEF A C (W, Z) d’’un codeur binaire
en blocs (N, K). La fonction IRWEF d’’un codeur RSC C de rendement k/n dont la
séquence d’’entrée est terminée et de longueur K bits est la suivante :

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

ACw,z est le nombre de mots de code de C dont le poids de la séquence d’’entrée


est égal à w et dont le poids de la séquence des bits de redondance est égal à z. w min
est le poids minimal des séquences d’’entrée. z min est le poids minimum des bits de
redondance. Le calcul de la fonction d’’énumération de poids A C (W, Z) pour un code
convolutif terminé est développé dans l’’annexe B.

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 :

dlibre ≥ zmin + 2 [5.103]

Les coefcients de la fonction d’’énumération de poids IRWEF moyenne A CP


(W, Z) d’’un turbo code classique composé de deux codeurs RSC identiques et d’’un
entrelaceur s’’exprime comme suit 5 :

[AC (w, Z)]2


ACP (w, Z) = w [5.104]
CK

5. Cnp est le nombre de combinaisons sans répétition de n éléments pris p à p. Cnp = n!


p!(n−p)!
.

Licence limitée accordée à doc-ist-Onera


304 Bases de communications numériques 1

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

Nous dénissons la distance libre effective d libre,ef f du code concaténé comme


suit :

dlibre,ef f = 2 + 2zmin [5.106]

Dans le cas des codeurs convolutifs non récursifs, comme w min = 1, il n’’y a
aucun gain d’’entrelacement. An 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érier 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’’inuence 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 inuent 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.

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 305

ï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

Figure 5.32. Comparaison des performances moyennes de turbo codes de


rendement R t = 1/3 composé de codes RSC(7,5) (en trait pointillé) et
RSC(15,17) (en trait continu) et d’un entrelaceur uniforme K = 100 et K = 1 000

5.4.4. Décodeur itératif des turbo codes

Dans la section précédente nous avons montré que l’’application de l’’algorithme


Somme-Produit sur un graphe sans cycle permet de calculer efcacement et exacte-
ment les probabilités a posteriori AP P (x Si = a). Cependant dans de nombreuses
applications comme les codes concaténés (codes LDPC, codes produits, turbo codes,
etc.), le graphe contient des cycles. Malgré l’’absence de justication mathématique
rigoureuse, il est néanmoins possible d’’utiliser l’’algorithme Somme-Produit en fai-
sant abstraction des cycles présents dans le graphe. C’’est ce que nous allons faire en
décodant itérativement les codes concaténés pour estimer les bits émis.

La complexité du calcul exact de AP P (x Si ) dans une structure concaténée croît


exponentionellement avec la longueur de la séquence d’’information. L’’intérêt prin-
cipal de la structure concaténée du codeur réside dans la possibilité de réaliser un
décodage sous-optimal de ce code. L’’objectif du décodage itératif est d’’exploiter la
structure du graphe du turbo codeur composé de deux graphes élémentaires sans cycle

Licence limitée accordée à doc-ist-Onera


306 Bases de communications numériques 1

pour factoriser la probabilité a posteriori AP P (x Si = a) = P r(xSi = a | yS , y1 , y2 ).


Nous évitons ainsi de calculer la probabilité a posteriori de façon globale.

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

Figure 5.33. Contribution des séquences d’entrée de faible poids sur le


taux d’erreur binaire turbo codeur de rendement R t = 1/3 composé de
codeurs RSC(15,17) et d’un entrelaceur uniforme K = 100

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.

Le schéma simplié du décodeur itératif est donné gure 5.35.

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).

Pendant le décodage, les informations extrinsèques calculées par le décodeur 1


après entrelacement deviennent les informations a priori pour le décodeur 2. Suite au

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 307

décodage du second code, les informations extrinsèques du décodeur 2, après applica-


tion de la fonction d’’entrelacement inverse, sont transmises au décodeur 1 comme in-
formations a priori. Ce processus appelé itération est répété plusieurs fois. Un exemple
de graphe factorisé pour un turbo code de rendement 1/3 est donné en gure 5.36.

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

Figure 5.34. Contribution des séquences d’entrée de faible poids sur le


taux d’erreur binaire turbo codeur de rendement R t = 1/3 composé de
codeurs RSC(15,17) et d’un entrelaceur uniforme K = 1 000

Ce graphe comporte de nombreux cycles. Il est important dans le cas de blocs


de taille moyenne (K ≤ 2 000) de chercher à réduire leur inuence an d’’améliorer
les performances du décodage itératif. Dans [MCE 98] et [KSC 01] les auteurs ont
montré que le décodage itératif proposé par Berrou est équivalent à l’’application de
l’’algorithme Somme-Produit sur le graphe factorisé du code.

Nous allons maintenant décrire les différentes opérations réalisées au cours du


décodage.

Licence limitée accordée à doc-ist-Onera


308 Bases de communications numériques 1

xS yS
x1 y1 CANAL APP CANAL APP
DEC 1 DEC 2
x2 y2
APRI EXTR π APRI EXTR

π −1

Figure 5.35. Structure du décodeur itératif

p(y01 | x10 ) p(y11 | x11 ) p(y21 | x12 ) p(y31 | x13 )

c10 c11 c12 c13

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

p(y02 | x20 ) p(y12 | x21 ) p(y22 | x22 ) p(y32 | x23 )

Figure 5.36. Exemple de graphe factorisé d’un turbo code de


rendement 1/3

Soit u = xS , la séquence d’’information, c 1 et c2 les séquences des bits de re-


dondance et y S , y1 et y2 les séquences reçues associées. A partir des N = Kn/k

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 309

observations relatives au premier codeur et des probabilités a priori AP RI 1(l) (xSi )


calculées lors d’’un décodage précédent, le décodeur 1 calcule alors les probabilités
extrinsèques EXT R 1(l) (xSi ) suivantes pour les K bits d’’information et à chaque ité-
ration l, 1 ≤ l ≤ lT :

! 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

EXT R1(l) (xSi = a) est la probabilité extrinsèque et AP RI 1(l) (xSi = a) est la


probabilité a priori sur le i-ième bit de la séquence d’’entrée u. AP RI 1(l) (xSi = a)
est obtenue comme suit :
/
1(l) 1/2 ∀i pour l = 1
AP RI (xSi ) = 2(l−1) S
EXT R (xi ) pour l > 1

De la même façon, le décodeur 2 calcule EXT R 2(l) (xSi ) :

! 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

avec AP RI 2(l) (xSi ) = EXT R1(l) (xSi ).

Finalement, pour réaliser la décision nale lors de la dernière itération l T , nous


calculons AP P (lT ) (xSi = a) :

! 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]

Licence limitée accordée à doc-ist-Onera


310 Bases de communications numériques 1

Pour calculer ces probabilités, le décodeur applique l’’algorithme Aller-Retour ou


l’’algorithme de Viterbi à sorties pondérées, mais dans ce cas les performances obte-
nues seront sensiblement moins bonnes.

Quelques itérations sufsent généralement pour que le décodeur itératif converge.


Le nombre d’’itérations dépend cependant du rapport E b /N0 . Au lieu de xer à l’’avance
le nombre d’’itérations, il est possible d’’utiliser des critères d’’arrêt comme l’’écart en-
tropique (cross-entropy) [MOH 93]. La prise de décision nale est réalisée à partir du
signe des informations a posteriori obtenues lors de la dernière itération.

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
à:

LAP P (xSi ) = LAP RI (xSi ) + LIN T (xSi ) + LEXT R (xSi ) [5.111]

avec :

p(yjS | xSj = 1) 2
LIN T (xSi ) = ln S S
= 2 yjS
p(yj | xj = 0) σ

LIN T (xSi ) est l’’information intrinsèque ou information issue du canal. En pra-


tique, il sera nécessaire d’’estimer la variance du bruit σ 2 .

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

optimisé S-random de dimension K = 1 024. Une opération de perforation permet de


passer d’’un rendement de 1/3 à R T = 1/2. Les courbes sont données pour l = 2, 5, 10
et 15 itérations. Nous pouvons voir qu’’au delà de cinq itérations, le gain apporté par
une augmentation du nombre d’’itérations est très faible (moins de 0,2 dB).

Sur la gure 5.38, nous présentons les courbes T EB = f (E B /N0 ) d’’un


turbo code de rendement R T = 1/2 composé de deux codes convolutifs RSC
1+D 4
(1, 1+D+D 2 +D 3 +D 4 ) perforés et d’’un entrelaceur pseudo-aléatoire de dimension K =

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

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 311

de la faible distance minimale des turbo codes. Cependant, l’’optimisation de l’’entre-


laceur permet de le réduire sensiblement.

En conclusion, l’’association des turbo codes et du décodage itératif permet d’’ob-


tenir des performances remarquables avec une complexité raisonnable.
ï1
10
itération 2
itération 5
itération 10
itération 15
ï2
10

ï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

Figure 5.37. Courbes TEB = f(E B /N0 ) pour un turbo code de


1+D2
rendement 1/2 composé de deux codes convolutifs RSC (1, ) et
1+D+D2
d’un entrelaceur S-random de K = 1 024

5.4.5. Courbes EXIT

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.

Licence limitée accordée à doc-ist-Onera


312 Bases de communications numériques 1

sans codage

itération 1
TEB

itération 3

itération
18 itération 3

itération
6

effet de palier

EB/N0

Figure 5.38. Courbes TEB=f(E B/N0 ) pour un turbo code de rendement


1+D4
1/2 composé de deux codes convolutifs RSC (1, ) et
1+D+D2 +D3 +D4
d’un entrelaceur pseudo-aléatoire de dimension K = 65 536

Les mesures effectuées sur les logarithmes de rapport de vraisemblance L AP RI (x)


montrent que ceux-ci sont bien approximés par des distributions gaussiennes. D’’après
la relation [5.15], nous avons :

LAP RI (x) = µA x + nA [5.112]

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 :

IA = I(x; LAP RI (x))


! # +∞
= pA (z|x)P r(x)
x=±1 −∞
& '
pA (z|x)
× log2 dz
P r(x = +1)pA (z|x = +1) + P r(x = −1)pA (z|x = −1)

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 313

# & '
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]

La relation [5.113] s’’obtient en exploitant la propriété de gaussiannité de la dis-


tribution pA (z|x). L’’information mutuelle I(x; L EXT R (x)) n’’étant pas en général
gaussienne, il n’’est pas possible d’’utiliser cette relation. Ainsi I(x; L EXT R (x)) est
calculée comme suit :
IE = I(x; LEXT R (x))
# & '
1 ! +∞ 2pE (z|x)
= pE (z|x) log2 dz
2 x=±1 −∞ pA (z|x = +1) + pA (z|x = −1)
[5.114]
où pE (z|x) est la distribution empirique mesurée à la sortie du décodeur à entrées
et sorties pondérées. Ainsi, pour un rapport E b /N0 donné, nous pouvons dénir la
fonction EXIT qui lie l’’information mutuelle d’’entrée I A et l’’information mutuelle de
sortie du décodeur I E :

IE = T (IA , Eb /N0 ) [5.115]

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 suft
de tracer sur une même gure la courbe EXIT de chacun des décodeurs élémentaires.
Lorsque les codes constituants sont identiques, il suft 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.

Licence limitée accordée à doc-ist-Onera


314 Bases de communications numériques 1

Figure 5.39. Courbes EXIT pour un turbo code

5.4.6. Critères et méthodes de construction des entrelaceurs

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.

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 315

Figure 5.40. Evolution des informations mutuelles en fonction des


itérations pour un code convolutif systématique (13,15)
de rendement R = 1/2

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 :

p = [p(0), p(1), p(2), . . . , p(K − 1)] [5.116]

Nous avons la relation suivante entre u i et vp(i) :

ui = vp(i) [5.117]

Licence limitée accordée à doc-ist-Onera


316 Bases de communications numériques 1

Une autre description de la fonction de permutation s’’obtient à partir de la matrice


de permutation Π de dimension K × K :

Π = {aij }K×K avec aij ∈ {0, 1} [5.118]

! !
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

Figure 5.41. Exemple de cycle primaire

Les facteurs de dispersion S et L nous renseignent sur la capacité de l’’entrelaceur


à minimiser la corrélation des informations extrinsèques lors du décodage itératif.

Un entrelaceur en bloc a un facteur de dispersion S [DOL 95] si :

∀i, j |i − j| < S alors |p(j) − p(i)| ≥ S [5.120]

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 317

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.

Il existe un autre facteur de dispersion appelé facteur de dispersion L [LER 00].


Soit l(i, j) la distance associée aux bits d’’entrée à la position i et j :

l(i, j) = |i − j| + |p(i) − p(j)| [5.121]

Le facteur de dispersion L pour l’’entrelaceur E est déni comme suit :

L = min l(i, j) [5.122]


i,j

L correspond à la longueur du cycle primaire de longueur minimale.

Nous avons vu que pour un meilleur fonctionnement du décodage itératif, l’’infor-


mation a priori doit être la moins corrélée possible avec l’’information issue du canal
de transmission. Le facteur IDS (Iterative Decoding Suitability) introduit par Hokfelt
[HOK 99b] évalue cette corrélation au cours de la première itération. A la première
itération, le décodeur 1 calcule l’’information extrinsèque LLREXT 1(uk ) (Le1k pour
simplier les notations) directement à partir des informations issues du canal de trans-
mission ykS# (∀k & *= k) et y1 car aucune information a priori n’’est disponible.

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.

Soit Vk dénie comme suit :

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

Licence limitée accordée à doc-ist-Onera


318 Bases de communications numériques 1

Une faible valeur de V k indique une bonne qualité de l’’information extrinsèque


Le2k lors de la première itération. De la même façon, nous pouvons calculer la va-
leur Vk& relative au désentrelaceur en remplaçant Π par Π T dans l’’équation [5.123].
Finalement, le paramètre IDS est calculé en faisant la moyenne de tous les V k et Vk& :

&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 conit 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

où 0 ≤ v < W , 0 ≤ u1 < M , 0 ≤ u2 < M , u1 *= u2 . Cette propriété permet de


traiter la trame d’’information en p tronçons de longueur W avec K = pW . Les valeurs
de chaque terme dans l’’inégalité [5.127] correspondent aux indices des tronçons. Pour
toute position v de chaque tronçon, l’’accés aux bancs de mémoire sera unique.

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

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 319

sans cycle. Comme les cycles sont toujours présents, le second critère de construction
doit garantir que ces cycles soient sufsamment grands.

Il existe d’’autres critères importants comme la complexité de mise en œœuvre de


l’’entrelaceur qui dépend de la taille mémoire requise... et la facilité de paralléliser les
traitements, en particulier au décodage.

5.4.6.3. Méthodes de construction d’entrelaceurs pour turbo codes


La construction d’’un entrelaceur est un problème d’’optimisation. La principale
difculté vient du fait que nous avons deux critères à optimiser. Fort heureusement,
ces deux contraintes ne sont pas totalement contradictoires. Si la solution optimale est
difcile à atteindre, une solution proche de la solution optimale peut cependant être
obtenue en utilisant des algorithmes heuristiques. Nous pouvons classer les méthodes
de construction en trois catégories distinctes :
–– les constructions algébriques : les entrelaceurs algébriques les plus simples sont
les entrelaceurs ligne-colonne et les entrelaceurs hélicoïdaux [BAR 95]. D’’autres
constructions plus efcaces ont été proposées dans [TAK 98] et l’’entrelaceur QPP
[SUN 05] ;
–– les constructions semi-algébriques : parmi les méthodes semi-algébriques nous
pouvons citer l’’entrelaceur DRP (Dithered Relative Prime) [CRO 05] et l’’entrelaceur
ARP (Almost Regular Permutation) [BER 04] ;
–– les constructions élément par élément : avec ces méthodes de construction, nous
construisons la matrice de permutation ligne par ligne. Parmi ces méthodes nous pou-
vons citer l’’entrelaceur S-random [DOL 95] et ses dérivés [SAD 01] et l’’entrelaceur
L-random [LER 00].

Pour terminer cette section, nous allons succinctement présenter les entrelaceurs
QPP (Quadratic Polynomial Permutation) les plus souvent retenus dans les standards.

Un polynôme P (x) = f 1 x + f2 x2 est appelé polynôme de permutation sur Z K


s’’il permet de construire un entrelaceur de taille K. Ce polynôme est utilisé pour la
construction des entrelaceurs QPP qui sont dénis comme suit :

p(i) = (f1 .i + f2 .i2 ) mod K [5.128]

où f1 et f2 sont deux entiers qui doivent satisfaire un ensemble de conditions énu-


mérées dans [SUN 05] pour que P (x) soit un polynôme de permutation. Les valeurs
f1 et f2 sont choisies an de maximiser la distance minimale du turbo code pour une
taille de l’’entrelaceur K. Les entrelaceurs QPP sont sans conit d’’accès et permettent
donc de parallèliser les opérations d’’encodage et de décodage. Les entrelaceurs ARP

Licence limitée accordée à doc-ist-Onera


320 Bases de communications numériques 1

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écie 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.

Plus récemment, le groupe Homeplug Alliance a proposé les standards HomePlug


AV et HomePlug AV2 pour les transmissions par courant porteur en ligne exploitant
le réseau électrique. Ces standards utilisent un code convolutif duo binaire à huit états
et de rendement 2/3. La longueur des trames d’’information est égale à 16, 136 ou
520 octets. Le rendement est égal à 1/2 ou 16/21. L’’IEEE a repris ces travaux pour le
standard IEEE 1901.

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 321

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)

Figure 5.42. Entrelaceurs (a) L-random K = 320 (b) QPP K = 280

Licence limitée accordée à doc-ist-Onera


322 Bases de communications numériques 1

5.5. Autres classes de codes concaténés

5.5.1. Codes PCBC

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

Figure 5.43. Code PCBC

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

Chacune des kV lignes correspond à un code en blocs linéaire systématique C H


(nH , kH ). Par ailleurs, chaque colonne correspond également à un code en blocs li-
néaire systématique C V (nV , kV ).

La distance minimale de ces codes est égale à la somme d V + dH − 1 où dV et dH


sont respectivement la distance minimale des codes constituants C V et CH .

Le graphe TWL des codes PCBC est présenté sur la gure 5.44.

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 323

cH
code C H 1 code C H 2 code C H k V

Entrelaceur
en bloc

code C V 1 code C V 2 code C V k H

cV

Figure 5.44. Graphe TWL des codes PCBC

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.

5.5.1.2. Décodage itératif


Pour que le décodage itératif soit efcace, le graphe TWL du code concaténé ne
doit pas comporter de cycles courts. C’’est le rôle de l’’entrelaceur ligne-colonne.

Les étapes du décodage itératif sont les suivantes :


–– étape 1 : initialisation des informations a priori L H
AP RI = 0 pour le décodage
horizontal ;
–– étape 2 : décodage horizontal. Calcul des informations extrinsèques L H
EXT R (xi )
associés aux bits d’’information u i ;
–– étape 3 : les informations extrinsèques calculées L H
EXT R (xi ) deviennent les in-
formations a priori L AP RI (xi ) pour le décodage vertical :

LAP RI (xi ) = LH
EXT R (xi )

–– étape 4 : décodage vertical. Calcul des informations extrinsèques L VEXT R (xi )


associés aux bits d’’information u i ;

Licence limitée accordée à doc-ist-Onera


324 Bases de communications numériques 1

–– étape 5 : si le nombre d’’itérations (décodage horizontal puis vertical) xé est


atteint nous terminons le décodage par l’’étape 6 sinon L AP RI (xi ) = LVEXT R (xi )
puis retour à l’’étape 2 ;
–– étape 6 : calcul de l’’information a posteriori L AP P (xi ) = LAP RI (xi ) +
LIN T R (xi )) + LVEXT R (xi ).

Si le graphe de Tanner du code constituant est un arbre, on appliquera l’’algorithme


Somme-Produit ou Minimum-Somme sur cet arbre pour calculer les informations ex-
trinsèques. Si le graphe de Tanner du code constituant n’’est pas un arbre nous le trans-
formerons en un graphe TWL sans cycle (donc un arbre) et on appliquera l’’algorithme
Aller-Retour. Une autre solution proposée par Pyndiah [PYN 94] consiste à utiliser
l’’algorithme de Chase [CHA 72]. Cet algorithme permet de réaliser un décodage à
entrées et sorties pondérées à partir d’’un algorithme de décodage à entrées et sorties
dures comme l’’algorithme de Berlekamp-Massey.

5.5.2. Codes convolutifs concaténés en série

La structure du codeur associé aux codes convolutifs concaténés en série (SCC)


(Serial Concatenated Convolutional ) est présentée gure 5.45. Ce codeur comprend
deux codeurs convolutifs systématiques C 1 et C2 binaires respectivement de rende-
ment k1 /n1 et k2 /n2 et un entrelaceur de Kn 1 /k1 bits. La longueur de la séquence
d’’entrée est limitée à K bits.

Figure 5.45. Codeurs convolutifs concaténés en série

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

Par exemple en choisissant un code C 1 de rendement 1/2 et un code C 2 de rende-


ment 2/3 nous obtiendrons un code SCC de rendement R T = 1/3.

Comme pour les turbo codes, le décodage est itératif.

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 325

Figure 5.46. Codeur RA R T = 1/2

5.5.3. Codes répétition-accumulation

Le codeur répétition-accumulation RA (Repeat Accumulate en anglais) est obtenu


par la concaténation en série d’’un codeur de répétition de rendement 1/k et d’’un
codeur convolutif ne comprend qu’’une mémoire interne aussi appelée accumulateur.
Certains codes LDPC peuvent être vus comme des codes répétition-accumulation ir-
réguliers IRA (Irregular Repeat Accumulate en anglais).

5.5.4. Codes produits

Les codes produits ont été introduits en 1954 par Elias [ELI 54].

La structure de ces codes est donnée sur la gure 5.47.

kH colonnes nH - k H colonnes

k V lignes u ch

nV - kV lignes cv chv

Figure 5.47. Code produit

Licence limitée accordée à doc-ist-Onera


326 Bases de communications numériques 1

Le code ainsi obtenu est un code linéaire en blocs systématique (N, K) avec N =
nV nH et K = kV kH .

Le rendement global du code produit est égal à :

kV kH
RT =
nV nH

Chacune des nV lignes correspond à un code en blocs linéaire systématique C H


(nH , kH ). Par ailleurs, chaque colonne correspond également à un code en blocs li-
néaire systématique CV (nV , kV ). La principale différence des codes produits par rap-
port aux codes PCBC est la présence de (n H − kH ) × (nV − kV ) bits de redondance
supplémentaires protégeant les bits de redondance des codes constituants (Check on
Check).

La distance minimale de ces codes est égale au produit d V × dH où dV et dH sont


respectivement la distance minimale des codes constituants C V et CH . La distance
minimale est supérieure à celle des codes PCBC grâce à la présence de bits de contrôle
sur les bits de contrôle.

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

5.6.1. Exercice 1 : décodage à entrées et sorties pondérées d’un code


convolutif à deux états

Soit le- code convolutif


. récursif systématique déni par la matrice génératrice
1
G(D) = 1; 1+D .

1) Déterminer la structure matérielle du codeur. Exprimer la sortie c P


k en fonction
de cSk = uk et cP
k−1 .

Licence limitée accordée à doc-ist-Onera


Codes concaténés et décodage itératif 327

2) Déterminer le diagramme en treillis de ce code.


Le graphe de Tanner associé à ce code est le suivant :

S P
c1S c1P c2S c2P c3 c3

3) Justier la structure de ce graphe.


Nous considérons une transmission de 4 symboles binaires : 3 bits d’’information +
1 bit de terminaison permettant de retourner à l’’état 0 à l’’instant 4. Nous transmettons
le vecteur suivant :
xS1 xP1 xS
2 xP
2 xS3 xP
3 xS
4 xP4
––1 ––1 +1 +1 ––1 +1 +1 ––1
2
L’’information intrinséque reçue L IN T = σ2 y est la suivante :
LINT (xS
1) LINT (xP
1) LINT (xS
2) LINT (xP
2)
+0,8 +0,1 +1 ––0,5
LINT (xS P S P
3 ) LINT (x3 ) LINT (x4 ) LINT (x4 )
––1,8 +1,1 +1,6 ––1,6
4) Rappeler l’’expression mathématique de l’’information a posteriori (logarithme
de rapport de vraisemblance).
5) Représenter le diagramme en treillis en tenant compte de la terminaison.
6) Appliquer l’’algorithme Aller-Retour (version log max) pour déterminer les in-
formations a posteriori et extrinsèques associées aux symbolesx Si .
7) Retrouver les résultats obtenus avec l’’algorithme Aller-Retour en appliquant
l’’algorithme Minimum Somme sur le graphe de Tanner du code.
Nous considèrons maintenant un turbo code composé de deux codes convolutifs
récursifs systématiques étudiés précédemment et d’’un entrelaceur de taille 4 bits.
8) Dessiner le graphe TWL utilisé pour le décodage itératif du turbo code.
9) Expliquer succinctement le principe du décodage itératif.
10) Justier pourquoi le code constituant des turbo codes doit être un code convo-
lutif récursif.

Licence limitée accordée à doc-ist-Onera


328 Bases de communications numériques 1

5.6.2. Exercice 2 : décodage à entrées et sorties pondérées d’un code


en blocs (4,3)

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.

Soit le treillis et le graphe de Tanner associé à ce code :

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.

Nous transmettons le mot x = [+1 − 1 − 1 + 1] et nous recevons le mot y =


[+0, 4 − 0, 2 + 0, 2 + 1, 4]. La variance du bruit est égale à σ 2 = 2.
1) Appliquer l’’algorithme Aller Retour (version log max) sur ce treillis pour dé-
terminer LAP P (xi ). En déduire L EXT R (xi ).
2) Utiliser l’’algorithme minimum somme pour déterminer L AP P (xi ). En déduire
LEXT R (xi ).
3) En plus du message reçu, nous disposons de l’’information a priori suivante
LAP RI = [+0, 3 − 0, 5 − 0, 4 − 0, 2] (obtenue par exemple après avoir appliqué une
itération dans une structure de décodage itérative). Reprendre alors les questions 1) et
2).

Licence limitée accordée à doc-ist-Onera


Annexe A

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.

Soit n = (n1 , n2 , . . . , nD ) le vecteur bruit composé de D composantes indépen-


dantes. La densité de probabilité de chacune de ces composantes est gaussienne :

) *
1 n2
p(ni ) = √ exp − i2 [A.1]
2πσ 2 2σ

La densité de probabilité du vecteur n s’’exprime comme le produit des D densités


de probabilité p(n i ) :

& " '


D 2
1 i=1 ni
p(n) = exp − [A.2]
(2πσ 2 )D/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 :

E(r2 ) = E(n21 + n22 + · · · + n2D )


= E(n21 ) + E(n22 ) + · · · + E(n2D )
= D.σ 2 [A.3]

Licence limitée accordée à doc-ist-Onera


330 Bases de communications numériques 1

Et la variance de n 2i est :

var(n2i ) = E(n4i ) − E(n2i )2


# +∞
= n4i p(n2i )dni − E(n2i )2
−∞
# +∞ ) *
n4 n2
= √ i exp − i2 dni − σ 4
−∞ 2πσ 2 2σ
= 3σ 4 − σ 4
= 2σ 4 [A.4]

Pour D grand, en utilisant le théorème de la limite centrale, on montre que la


variance de r 2 est égale 4
√ à 2σ D. Ainsi lorsque D tend vers l’’inni, la norme r est
concentrée autour de D.σ.

Licence limitée accordée à doc-ist-Onera


Annexe B

Calcul de la fonction IRWEF


d’un code RSC

Cette méthode de calcul de la fonction d’’énumération de poids IRWEF a été pro-


posée par Viterbi et al. [VIT 97]. Nous allons présenter cette méthode à partir d’’un
exemple. Considérons le cas du codeur convolutif récursif systématique RSC(7,5). La
matrice de transition d’’état pour ce code est la suivante :

 
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

et la fonction d’’énumération de poids s’’écrit :

 
1
0
A(W, Z) = (1 0 0 0)C K (W, Z) 
0
 [B.2]
0

Les équations de transitions sont alors :

    
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)

Licence limitée accordée à doc-ist-Onera


332 Bases de communications numériques 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 suft
donc d’’appliquer les équations [B.3] pour i = 1, . . . , K.

Licence limitée accordée à doc-ist-Onera


Glossaire

ACK : acquittement, Acknowledgement

AEP : principe d’’équirépartition asymptotique, Asymptotic Equipartition Principle

APP : probabilité a posteriori, A Posteriori Probability

APRI : probabilité a priori, A PRiori Probability

ARQ : requête automatique de répétition, Automatic Repeat Request

BP : propagation de croyance, Belief Propagation

CC : combinaison de Chase, Chase Combining

CELP : prédiction linéaire avec excitation par séquences codées, Code Excited Linear
Predictive

CRC : contrôle de redondance cyclique, Cyclic Redundancy Check

CVSD : modulation Delta à pente continuellement variable, Continuously Variable


Slope Delta

DCT : transformée en cosinus discrète, Discrete Cosine Transform

DPCM : modulation par impulsion et codage différentiel, Differential Pulse Coded


Modulation

EXIT : fonction de transfert de l’’information intrinsèque, EXtrinsic Information Trans-


fert

EXTR : probabilité extrinsèque

Licence limitée accordée à doc-ist-Onera


334 Bases de communications numériques 1

IR : redondance incrémentale, Incremental Redundancy

IRWEF : fonction d’’énumération de poids, Input Redundancy Weight Enumerator


Function

LDPC : code à matrice de parité de faible densité, Low Density Parity Check

LLR : logarithme du rapport de vraisemblance, Logarithm Likelihood Ratio

LPC : codeur par prédiction linéaire, Linear Predictive Coder

LSP : paire de ligne spectrale, Line Spectrum Pairs

LTE : Long Term Evolution

MAP : Maximum A Posteriori

MDS : codes séparables à distance maximale, Maximum Distance Separable

ML : critère du maximum de vraisemblance, Maximum Likelihood

MLSE : égaliseur basé sur le critère du maximum de vraisemblance, Maximum Like-


lihood Sequence Estimator

MMSE : critère de minimisation de l’’erreur quadratique, Minimum Mean Square Er-


ror

NACK : acquittement négatif, Negative Acknowledgement

NRSC : codeur convolutif systématique non récursif, Non Recursive Systematic Convo-
lutional

NRZ : non retour à zéro

PCA : analyse en composantes principales, Principal Components Analysis

codes PCC : codes convolutifs concaténés en parallèle, Parallel Concatenated Convo-


lutional

PCM : modulation par impulsion et codage, Pulse Coded Modulation

PSK : modulation par déplacement de phase, Phase Shift Keying

QAM : modulation d’’amplitude en quadrature, Quadrature Amplitude Modulation

QPP : Quadratic Polynomial Permutation

Licence limitée accordée à doc-ist-Onera


Glossaire 335

code RA : code à répétition accumulation, Repeat Accumulated

RLC : codage par plage, Run Length Coding

codeur RSC : codeur convolutif récursif systématique, Recursive Systematic


convolutional

code RZ : code retour à zéro

SNR : rapport signal à bruit, Signal to Noise Ratio

TEB : taux d’’erreur par bit

TEM : taux d’’erreurs par mot

TFD : transformée de Fourier discrète

WEF : fonction d’’énumération de poids, Weight Enumerator Function

Licence limitée accordée à doc-ist-Onera


Licence limitée accordée à doc-ist-Onera
Notations

AX : alphabet associé à la variable X

A : matrice de transformation

A(D) : fonction d’’énumération de poids WEF

Ad : nombre de mots de codes de poids d

A(W, Z) : fonction d’’énumération de poids IRWEF

Aw,z : nombre de mots de codes de poids w + z

B : bande passante

B : matrice de transformation inverse

c : mot de code

c(p) : polynôme associé au mot de code

C : capacité en Sh/dimension

C & : capacité en Sh/sec

D : variable associée au poids d’’un mot ou retard ou distorsion

D(R) : fonction distorsion-taux

DB : débit binaire

DN : distorsion moyenne par dimension

Licence limitée accordée à doc-ist-Onera


338 Bases de communications numériques 1

DS : débit symbole

d : distance ou poids de Hamming

dmin : distance minimale ou libre

e : capacité de correction

e : vecteur d’’erreurs

E[x] : espérance de la variable aléatoire x

Eb : énergie par bit

Es : énergie par symbole

ed : capacité de détection

g(p) : polynôme générateur

G : ltre prototype

G : matrice génératrice

γxx (f ) : densité spectrale de puissance du processus aléatoire x

H : matrice de parité

H(X) : entropie de X

HD (X) : entropie différentielle de X

I(X; Y ) : information mutuelle moyennne entre les variables X et Y

k : nombre de bits par mot d’’information (code convolutif)

K : nombre de symboles par mot d’’information (code en blocs)

ni : échantillon de bruit à l’’instant i où longueur du mot associé au i-ième message

N : puissance de bruit, nombre de symboles par mot de code

n : nombre de bits par mot de code (code convolutif)

N0 : densité spectrale de bruit unilatérale

Licence limitée accordée à doc-ist-Onera


Notations 339

P : puissance du signal

Pe : probabilité d’’erreur par symbole

p : probabilité de transition sur canal binaire symétrique

p(x) : densité de probabilité

Q : taille de l’’alphabet

R : rendement ou taux de codage

Rss (t) : fonction d’’autocorrélation du processus aléatoire s

R(D) : fonction taux-distorsion

s : syndrome d’’erreur

T : durée symbole

Tb : durée de transmission d’’un élément binaire

s(p) : polynôme associé au syndrome

u : mot d’’information

u(p) : polynôme associé au mot d’’information

w : poids de la séquence des bits d’’information

W : variable associée au poids de la séquence des bits d’’information

X : variable associée au signal en entrée du canal

x : mot émis sur le canal

y : mot reçu en sortie du canal après ltrage adapté et échantillonnage

Y : variable associée au signal en sortie du canal

z : poids de la séquence des bits de redondance

Z : variable associée au poids de la séquence des bits de redondance

Licence limitée accordée à doc-ist-Onera


Licence limitée accordée à doc-ist-Onera
Bibliographie

[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.

Licence limitée accordée à doc-ist-Onera


342 Bases de communications numériques 1

[BER 68] B E R L E K A M P E.R., Algebraic coding theory, McGraw-Hill, New York,


1968.
[BER 93] B ERROU C., G LAVIEUX A., T HITIMAJSHIMA P., « Near Shannon limit error cor-
recting coding and decoding : Turbo-codes », Proc. of the 1993 Int. Conf. on Comm., Ge-
nève, Suisse, mai 1993.
[BER 99] B ERROU C., D OUILLARD C., J ÉZÉQUEL M., « Multiple parallel concatenation of
circular recursive systematic convolutional (CRSC) codes », Annales des Télécommunica-
tions, vol. 44, n° 10, p. 1261-1271, 1999.
[BER 04] B ERROU C., S AOUTER Y., D OUILLARD C., K EROUEDAN S., J ÉZÉQUEL M., « De-
signing good permutations for turbo codes : towards a single model », Proc. of the 2004 Int.
Conf. on Comm., p. 341-345, juin 2004.
[BOS 60] B OSE R.C., R AY-C HAUDHURI D.K., « On a class of error correcting binary group
codes », Inform. Control, vol. 3, p. 68-79, 1960.
[BOU 06] B OURLÈS H., Systèmes linéaires : de la modélisation à la commande, Hermès-
Lavoisier, Paris, 2006.
[BRI 99] TEN B RINK S., « Performance of an Efcient Parallel Data Transmission System »,
Electronic Letters, vol. 35, n° 10, p. 806-808, mai 1999.
[CAI 79] C AIN J.B., C LARK G.C., G EIST J.M., « Punctured convolutional codes of rate n −
1/n and simplied maximum likelihood decoding », IEEE Trans. Inform. Theory, vol. 25,
p. 97-100, 1979.
[CAM 86] C AMPBELL J.P., T REMAIN T.E., « Voiced/Unvoiced Classication of Speech with
Applications to the U.S. Government LPC-10E Algorithm », Proc. IEEE International
Conference on Acoustics, Speech and Signal Processing (ICASSP), juin 1986.
[CAM 01] C AMPELLO J., M ODHA D.S., R AJAGOPALAN S., « Designing LDPC codes using
bit-lling », IEEE International Conference on Communications, vol. 1, p. 55-59, 2001.
[CAN 13] C ANDELPERGHER B., Théorie des probabilités : une introduction élémentaire, Cal-
vage et Mounet, Paris, 2013.
[CHA 72] C HASE D., « A class of algorithms for decoding block codes with channel measu-
rement information », IEEE Trans. on Inform. Theory., vol. 18, p. 170-182, 1972.
[CHA 73] C HASE D., « A combined coding and modulation approach for communication over
dispersive channels », IEEE Transactions on Communications, vol. 21, n° 3, p. 159-174,
1973.
[CHE 04] C HEN L., X U J., D JURDJEVIC I., L IN S., « Near-Shannon-limit quasi-cyclic low-
density parity-check codes », IEEE Transactions on Communications, vol. 52, n° 7, p. 1038-
1042, 2004.
[CHI 64] C HIEN R.T., « Cyclic decoding procedures for Bose-Chaudhuri-Hocquenghem
codes », IEEE Transactions on Information Theory, vol. 10, n° 4, p. 357-363, 1964.
[CHU 04] C HU W.C., Speech coding algorithms : foundation and evolution of standardized
coders, John Wiley & Sons, New York, 2004.
[CON 92] C ONWAY J.H., S LOANE N.J.A., Sphere packings, lattices and groups, 2e édition,
Springer-Verlag, New York, 1992.

Licence limitée accordée à doc-ist-Onera


Bibliographie 343

[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.

Licence limitée accordée à doc-ist-Onera


344 Bases de communications numériques 1

[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.

Licence limitée accordée à doc-ist-Onera


Bibliographie 345

[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
efciency 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.

Licence limitée accordée à doc-ist-Onera


346 Bases de communications numériques 1

[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., « Efcient 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.

Licence limitée accordée à doc-ist-Onera


Bibliographie 347

[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.

Licence limitée accordée à doc-ist-Onera


348 Bases de communications numériques 1

[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., « Efcient 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.

Licence limitée accordée à doc-ist-Onera


Index

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

Licence limitée accordée à doc-ist-Onera


350 Bases de communications numériques 1

compression audio, 117 M


corps ni, 128-130 méthode du tableau standard, 162
courbes EXIT, 311 matrice
critère du maximum de contrôle, 136
a posteriori, 158 de parité, 302
de vraisemblance, 158 de parité, 283
génératrice , 133
D modulation
décodage Delta, 101
à entrées dures, 156, 175 par impulsion et codage, 86
àentréespondérées, 156, 167, 178 par impulsion et codage différentiel, 103
itératif, 291, 292, 305, 323
par syndrome, 162 P
détection d’’erreurs par CRC, 190 poids de Hamming, 135
diagramme poinçonnage, 245
d’’état, 235 polynôme localisateur d’’erreurs, 207
en treillis, 153, 236 prédiction linéaire, 98, 113
distance libre, 239 probabilité
distorsion, 44 a posteriori, 250
divergence de Kullback-Leibler, 29 erreur par paire, 176
extrinsèque, 250
E intrinsèque, 250
efcacité spectrale, 64
entrelaceur, 299, 314, 318 Q, R
entropie, 26, 35 quantication
différentielle, 30 non uniforme, 87
scalaire, 81
F scalaire optimale, 88
fonction vectorielle, 92
d’’énumération de poids, 137 vectorielle optimale, 95
distorsion-taux, 92 requête automatique de répétition, 190
IOWEF, 137, 240, 241
IRWEF, 137, 302 S
G séquences
conjointement typiques, 32
gain de codage, 182
typiques, 31
graphe
standard LTE, 320
de Tanner, 152, 324
syndrome d’’erreurs, 161
factorisé, 253, 279
TWL, 238
T
I, L
terminaison, 300
inégalité transformée
de Jensen, 20 en cosinus discrète, 107
de Kraft ,39 Karhunen-Loève, 108
information mutuelle, 25 turbo codes, 302
logarithmes de rapport de vraisemblance, 251

Licence limitée accordée à doc-ist-Onera


Sommaire du volume 2

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

Licence limitée accordée à doc-ist-Onera


2   

   
  1
351

Chapitre 2. Transmissions en bande de base


2.1. Introduction
2.2. Les codes en ligne
2.2.1. Code non retour à zéro ( NRZ)
2.2.2. Code retour à zéro ( RZ) unipolaire
2.2.3. Code retour à zéro ( RZ) bipolaire simple
2.2.4. Code biphase ou Manchester
2.2.5. Code bipolaire ou AMI
2.2.6. Code de Miller
2.2.7. Code non retour à zéro avec inversion sur les 1 ( NRZI)
2.2.8. Code MLT-3 (Multi Level Transmit 3)
2.2.9. Codes RLL(d,k)
2.2.10. Code NRZ M-aire
2.3. Le canal à bruit blanc additif gaussien
2.4. Réception optimale pour le canal à bruit blanc additif gaussien
2.4.1. Introduction
2.4.2. Structure du modulateur
2.4.3. Récepteur optimal pour un canal à bruit blanc additif gaussien
2.4.4. Calcul du taux d’erreur binaire pour un signal NRZ sur un canal à bruit
blanc additif gaussien
2.5. Critère de Nyquist
2.5.1. Introduction
2.5.2. Canal de transmission
2.5.3. Diagramme de l’œil
2.5.4. Critère de Nyquist
2.5.5. Filtres d’émission et de réception avec filtre adapté
2.6. Conclusion
2.7. Exercices
2.7.1. Exercice 1 : densité spectrale de puissance de différents codes en ligne
2.7.2. Exercice 2 : code biphase
2.7.3. Exercice 3 : étude d’un système d’enregistrement magnétique
2.7.4. Exercice 4 : code en ligne et effacement
2.7.5. Exercice 5 : modulation NRZ à quatre niveaux
2.7.6. Exercice 6 : filtre de mise en forme gaussien
2.7.7. Exercice 7 : critère de Nyquist
2.7.8. Exercice 8 : filtre en cosinus surélevé

Chapitre 3. Modulations numériques


3.1. Introduction

Licence limitée accordée à doc-ist-Onera


Sommaire du volume 2 353

3.2. Transmission en bande transposée et chaîne passe-bas équivalente


3.2.1. Signal à bande étroite
3.2.2. Passage d’un signal à bande étroite dans un canal passe-bande
3.2.3. Enveloppe complexe d’un processus aléatoire du second ordre
3.2.4. Détection synchrone
3.3. Modulations numériques linéaires en bande transposée
3.3.1. Principes généraux des modulations linéaires
3.3.2. Paramètres d’une modulation de M symboles
3.3.3. Modulations par déplacement d’amplitude
3.3.4. Modulations par déplacement de phase
3.3.5. Modulations en quadrature
Eb
3.3.6. Lien entre N 0
et le rapport signal à bruit en puissance
3.3.7. Densité spectrale de puissance des modulations régulières
3.3.8. Conclusion
3.4. Modulations par déplacement de fréquence
3.4.1. Définitions
3.4.2. FSK à phase discontinue
3.4.3. FSK à phase continue
3.4.4. Démodulation
3.4.5. Modulation GMSK
3.4.6. Performances
3.5. Conclusion
3.6. Exercices
3.6.1. Exercice 1 : constellations des modulations QAM-8
3.6.2. Exercice 2 : modulation ASK irrégulière
3.6.3. Exercice 3 : comparaison de deux modulations PSK
3.6.4. Exercice 4 : comparaison des modulations QAM et PSK
3.6.5. Exercice 5 : comparaison des modulations 8-PSK et 8-QAM
3.6.6. Exercice 6 : comparaison des modulations 2-FSK et 2-ASK
3.6.7. Exercice 7 : comparaison des modulations 16-QAM et 16-FSK

Chapitre 4. Synchronisation et égalisation


4.1. Introduction
4.2. Synchronisation
4.2.1. Correction du décalage en fréquence
4.2.2. Synchronisation du rythme
4.2.3. Estimation du canal avec séquence d’apprentissage
4.2.4. Borne de Cramer-Rao
4.3. Egalisation
4.3.1. Canal introduisant des distorsions

Licence limitée accordée à doc-ist-Onera


354   

   
  1

4.3.2. Représentation discrète du canal avec interférence entre symboles


et filtre blanchisseur
4.3.3. Egalisation linéaire
4.3.4. Egaliseur avec retour de décision
4.3.5. Egalisation avec critère du maximum de vraisemblance
4.4. Conclusion
4.5. Exercices
4.5.1. Exercice 1 : estimation d’une constante dans un bruit
4.5.2. Exercice 2 : correction du décalage en fréquence
4.5.3. Exercice 3 : égalisation ZF
4.5.4. Exercice 4 : égalisation MMSE
4.5.5. Exercice 5 : égalisation DFE-MMSE
4.5.6. Exercice 6 : égalisation MLSE avec un registre à décalage
4.5.7. Exercice 7 : égalisation MLSE avec deux registres à décalage

Chapitre 5. Modulations multiporteuses


5.1. Introduction
5.2. Principes généraux des modulations multiporteuses
5.2.1. Transmission parallèle sur les sous-porteuses
5.2.2. Modulations multiporteuses sans recouvrement : FMT
5.2.3. Modulations multiporteuses avec recouvrement
5.2.4. Structure du chapitre
5.3. OFDM
5.3.1. Emission et réception en OFDM
5.3.2. Principe du préfixe cyclique
5.3.3. Allocation optimale de puissance en OFDM
5.3.4. PAPR
5.3.5. Sensibilité à la désynchronisation
5.3.6. Techniques de synchronisation en OFDM
5.4. FBMC/OQAM
5.4.1. Principes du FBMC/OQAM à temps continu
5.4.2. Formulation à temps discret pour le FBMC/OQAM
5.4.3. Choix du filtre prototype
5.5. Conclusion
5.6. Exercices
5.6.1. Exercice 1
5.6.2. Exercice 2

Licence limitée accordée à doc-ist-Onera


Sommaire du volume 2 355

Chapitre 6. Modulations codées


6.1. Les réseaux de points
6.1.1. Définitions
6.1.2. Propriétés de groupe d’un réseau de points
6.1.3. Classification des réseaux de points
6.1.4. Evaluation des performances sur le canal à bruit blanc additif gaussien
6.2. Modulations codées en blocs
6.2.1. Principales constructions algébriques des réseaux de points
6.2.2. Construction des modulations codées en blocs
6.3. Modulations codées en treillis
6.3.1. Construction des modulations codées en treillis
6.3.2. Décodage des modulations codées en treillis
6.4. Conclusion

Annexe A. Calcul de la densité spectrale de puissance


d’un signal émis en bande de base

Annexe B. Implémentation polyphase de bancs de filtres


pour le FBMC/OQAM

Glossaire

Notations

Bibliographie

Index

Licence limitée accordée à doc-ist-Onera


Licence limitée accordée à doc-ist-Onera

Vous aimerez peut-être aussi