Vous êtes sur la page 1sur 145

Première partie

Introduction au codage de source et


au codage de canal

c 2010 HEIG-VD.
°
1
Table des matières

I Introduction au codage de source et au codage de canal 1


1 Introduction au cours de Télécommunications Numériques 1
1.1 Eléments d’un système de communication numérique . . . . . . . 1
1.2 Fonction du codage de source . . . . . . . . . . . . . . . . . . . . 2
1.3 Le canal de communication . . . . . . . . . . . . . . . . . . . . . 4
1.4 Les imperfections du canal de communication . . . . . . . . . . . 6
1.5 Fonction du codage de canal . . . . . . . . . . . . . . . . . . . . 16
1.6 Fonction du modulateur numérique . . . . . . . . . . . . . . . . . 16
1.7 Fonction du démodulateur . . . . . . . . . . . . . . . . . . . . . 17
1.8 Fonction du décodage de canal . . . . . . . . . . . . . . . . . . . 17
1.9 Fonction du décodage de source . . . . . . . . . . . . . . . . . . 18
1.10 Plan du cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2 Notions de la théorie de l’information 19


2.1 Information=Surprise . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2 Comment mesurer l’information ? . . . . . . . . . . . . . . . . . 20
2.2.1 Exemple 1 . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2.2 Exemple 2 . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3 Entropie=Moyenne de l’information . . . . . . . . . . . . . . . . 22
2.3.1 Exemple 3 . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.3.2 Remarque historique :-) . . . . . . . . . . . . . . . . . . 24

3 Codage de Source 25
3.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.1.1 Codes à longueur constante . . . . . . . . . . . . . . . . 26
3.1.2 Codes à longueur variable . . . . . . . . . . . . . . . . . 26
3.1.3 Décodage unique et décodage instantané . . . . . . . . . 27
3.1.4 Longueur moyenne des mots . . . . . . . . . . . . . . . . 28
3.1.5 Inégalité de Kraft-McMillan . . . . . . . . . . . . . . . . 28
3.1.6 Capacité, efficacité et redondance du code . . . . . . . . . 28
3.2 Codage de Shannon-Fanno . . . . . . . . . . . . . . . . . . . . . 30
3.3 Codage binaire de Huffman . . . . . . . . . . . . . . . . . . . . . 32
3.4 Algorithme de Lempel-Ziv . . . . . . . . . . . . . . . . . . . . . 34

c 2010 HEIG-VD.
°
3
TABLE DES MATIÈRES TABLE DES MATIÈRES

3.4.1 Codage de type Lempel-Ziv . . . . . . . . . . . . . . . . 34


3.4.2 Décodage avec l’algorithme Lempel-Ziv . . . . . . . . . . 36
3.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

4 Codes détecteurs et correcteurs d’erreur 43


4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.2 Préliminaires pour les codes linéaires par blocs . . . . . . . . . . 44
4.2.1 Champ de Galois CG(2) . . . . . . . . . . . . . . . . . . 44
4.2.2 Distance de Hamming . . . . . . . . . . . . . . . . . . . 45
4.2.3 Matrice d’éléments binaires . . . . . . . . . . . . . . . . 46
4.3 Principe général des codes détecteurs-correcteurs . . . . . . . . . 48
4.3.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.3.2 Capacité de détection d’un code . . . . . . . . . . . . . . 49
4.3.3 Capacité de correction d’un code . . . . . . . . . . . . . . 50
4.3.4 Rendement d’un code . . . . . . . . . . . . . . . . . . . 51
4.4 Codes linéaires par blocs (n, k) . . . . . . . . . . . . . . . . . . 51
4.4.1 Principe et propriétés . . . . . . . . . . . . . . . . . . . . 51
4.4.2 Codes blocs générés par des matrices systématiques . . . 53
4.5 Détection d’erreur avec un code linéaire par bloc . . . . . . . . . 54
4.6 Correction d’erreurs avec les codes blocs linéaires . . . . . . . . . 56
4.7 Code de Hamming . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.8 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

5 Détection et correction d’erreur par codes polynômiaux cycliques 61


5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.2 Propriétés fondamentales des codes cycliques . . . . . . . . . . . 62
5.3 Encodage d’un code cyclique (n, k) sous forme systématique . . 64
5.4 Décodage d’un code cyclique (n, k) . . . . . . . . . . . . . . . . 66
5.5 Réalisation d’un encodage de code cyclique . . . . . . . . . . . . 67
5.5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.5.2 Préliminaires . . . . . . . . . . . . . . . . . . . . . . . . 67
5.5.3 Circuit de division . . . . . . . . . . . . . . . . . . . . . 68
5.5.4 Codeur d’un code cyclique . . . . . . . . . . . . . . . . . 70
5.5.5 Réalisation matérielle du décodage d’un code cyclique sys-
tématique . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.6 Propriétés des codes polynômiaux (cycliques ou non) . . . . . . . 72
5.7 Quelques polynômes générateurs normalisés . . . . . . . . . . . . 73
5.7.1 Le code CCITT V.41 . . . . . . . . . . . . . . . . . . . . 73
5.7.2 Le code CRC-16 . . . . . . . . . . . . . . . . . . . . . . 74
5.7.3 Le code CRC-12 . . . . . . . . . . . . . . . . . . . . . . 74
5.7.4 Le code ARPA . . . . . . . . . . . . . . . . . . . . . . . 74
5.7.5 Le code ETHERNET . . . . . . . . . . . . . . . . . . . . 74

4 TBA1
TABLE DES MATIÈRES TABLE DES MATIÈRES

5.8 Codes cycliques BCH . . . . . . . . . . . . . . . . . . . . . . . . 75


5.8.1 Description des codes BCH . . . . . . . . . . . . . . . . 75
5.9 Eléments théoriques nécessaires au développement des codes BCH 76
5.9.1 Construction des champs de Galois CG(2m ) . . . . . . . 76
5.9.2 Propriétés des champs de Galois CG(2m ) . . . . . . . . . 80
5.9.3 Construction des codes BCH . . . . . . . . . . . . . . . . 82
5.9.4 Exemple de construction de code BCH . . . . . . . . . . 83
5.9.5 Calcul du syndrome d’un code BCH . . . . . . . . . . . . 84
5.9.6 Décodage d’un code BCH . . . . . . . . . . . . . . . . . 87
5.10 Codes de Reed-Solomon . . . . . . . . . . . . . . . . . . . . . . 87
5.11 Quelques codes cycliques remarquables . . . . . . . . . . . . . . 88
5.11.1 Le code de Golay . . . . . . . . . . . . . . . . . . . . . . 88
5.11.2 Les codes de Fire . . . . . . . . . . . . . . . . . . . . . . 89
5.12 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

6 Codes convolutionnels 97
6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
6.2 Encodage de codes convolutionnels . . . . . . . . . . . . . . . . 97
6.3 Longueur de contrainte d’un code convolutionnel . . . . . . . . . 99
6.4 Graphe de transition d’un code convolutif . . . . . . . . . . . . . 99
6.4.1 Remarque fondamentale concernant le codage . . . . . . . 100
6.4.2 Diagramme en treillis associé à un code convolutionnel . . 102
6.5 Décodage d’un code convolutionnel . . . . . . . . . . . . . . . . 105
6.5.1 Introduction au décodage selon l’algorithme de Viterbi . . 105
6.5.2 Algorithme de Viterbi pour un codeur (n, 1, m) . . . . . 112
6.5.3 Décodage selon le principe du maximum de vraisemblance 112
6.5.4 Algorithme de Viterbi pour la méthode du maximum de
vraisemblance . . . . . . . . . . . . . . . . . . . . . . . 114
6.6 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

7 Modulations numériques 117


7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
7.2 Technique par saut de phase . . . . . . . . . . . . . . . . . . . . 118
7.2.1 Technique par saut de phase binaire (BPSK) . . . . . . . . 118
7.2.2 Démodulation optimale (BPSK) . . . . . . . . . . . . . . 119
7.2.3 Probabilité d’erreur avec un système BPSK en présence de
bruit blanc Gaussien additif . . . . . . . . . . . . . . . . 121
7.2.4 Génération d’une modulation BPSK . . . . . . . . . . . . 125
7.2.5 Occupation spectrale d’une modulation BPSK . . . . . . . 125
7.2.6 Technique par saut de phase quadriphase (QPSK) . . . . . 128
7.2.7 Exemple de construction de signaux QPSK . . . . . . . . 130
7.2.8 Génération de signaux QPSK . . . . . . . . . . . . . . . 132

TBA1 5
TABLE DES MATIÈRES TABLE DES MATIÈRES

7.2.9 Détection optimale de signaux QPSK . . . . . . . . . . . 133


7.2.10 Probabilité d’erreur des systèmes QPSK . . . . . . . . . . 135
7.2.11 Occupation spectrale d’une modulation QPSK . . . . . . 136
7.2.12 Exercice 1 (PSK) . . . . . . . . . . . . . . . . . . . . . . 138
7.2.13 Exercice 2 (PSK) . . . . . . . . . . . . . . . . . . . . . . 138
7.2.14 Exercice 3 (PSK) . . . . . . . . . . . . . . . . . . . . . . 138
7.2.15 Exercice 4 (ASK) . . . . . . . . . . . . . . . . . . . . . . 139
7.2.16 Exercice 5 (PSK) . . . . . . . . . . . . . . . . . . . . . . 139

6 TBA1
1

Introduction au cours de
Télécommunications Numériques

CONTENU
1.1 Eléments d’un système de communication numérique . . 1
1.2 Fonction du codage de source . . . . . . . . . . . . . . . 2
1.3 Le canal de communication . . . . . . . . . . . . . . . . 4
1.4 Les imperfections du canal de communication . . . . . . 6
1.5 Fonction du codage de canal . . . . . . . . . . . . . . . 16
1.6 Fonction du modulateur numérique . . . . . . . . . . . . 16
1.7 Fonction du démodulateur . . . . . . . . . . . . . . . . 17
1.8 Fonction du décodage de canal . . . . . . . . . . . . . . 17
1.9 Fonction du décodage de source . . . . . . . . . . . . . 18
1.10 Plan du cours . . . . . . . . . . . . . . . . . . . . . . . 18

Résumé Ce chapitre motive les suivants en présentant de manière très générale


les concepts de codage, de théorie de l’information, de modulation et démodula-
tion tels qu’ils sont utilisés dans les systèmes de communication numériques ac-
tuels. On part donc de l’architecture général d’un système de communication afin
de comprendre le principe de fonctionnement des divers blocs de traitement de
l’information.

1.1 Eléments d’un système de communication numérique


La figure 1.1 illustre le fonctionnement d’un système de communication numé-

c 2010 HEIG-VD.
°
1
Introduction H. Dedieu

rique. Dans ce schéma, une source émet un message qui le plus souvent appartient
au monde analogique. Ce message est traité de façon numérique, c’est à dire rem-
placé par une séquence de nombres binaires. On introduit ainsi, par rapport à une
transmission purement analogique de la robustesse car la détection d’un bit 0 ou 1
sera équivalente à la réception à une détection de niveau d’amplitude ou de phase.
Un système numérique est donc par nature, beaucoup plus immune au bruit qu’un
système purement analogique. Le prix à payer est un accroissement en besoin de
bande passante, on peut en effet considérer que lorsqu’on convertit un signal ana-
logique sur 12 bits, on doit en fait traiter 12 signaux élémentaires, certes binaires,
mais 12 signaux au lieu d’un seul. Le premier bloc de traitement que l’on découvre
sur notre émetteur est le bloc de conversion qui échantillonne et quantifie le mes-
sage analogique à transmettre. A la sortie de ce bloc on dispose de train de bits qui
sont séquencés à des fractions de la période d’échantillonnage Te . Par exemple on
disposera d’un bloc de 12 bits toutes les Te s si la conversion se fait sur 12 bits en
virgule fixe. Cette information numérique est ensuite encodée dans un alphabet dit
alphabet de source par le bloc de codage de source.

F IGURE 1.1 – Architecture générale d’un système de communication numérique

1.2 Fonction du codage de source


La fonction élémentaire de ce bloc de codage est de réduire le débit binaire,
c’est un principe d’économie qui guide la conception de ce bloc. Imaginons par
exemple que nous ayons à transmettre des textes contenant les 26 lettres de l’alpha-
bet français plus les 6 symboles de ponctuations appartenant à l’ensemble { " , : ; .
-}. Ces 32 symboles peuvent être codés sur 5 bits. Si les symboles sont envoyés à
une fréquence de 8 kHz on en enverra donc 8 ksymboles/s 1 qui correspondront
1. Les spécialistes de télécommunications parleraient de 8 kBauds, un Baud correspondant à

2 TBA1
H. Dedieu Introduction

en fait à 5 × 8 kbits/s = 40 kbits/s. Si l’on réalise toutefois que toutes les lettres
et tous les signes de ponctuations ne sont pas équiprobables, il apparaît comme fai-
sant sens de coder les lettres et signes les plus probables avec moins de 5 bits et les
lettres et signes les plus improbables avec 5 bits ou plus, mais de façon à ce qu’en
moyenne, les 32 symboles de notre alphabet soient représentés par moins de 5 bits 2
Supposons que cette moyenne soit 3.5, on obtiendrait alors après codage de source
un débit de transmission de 3.5 × 8 kbits/s = 28 kbits/s au lieu des 40 kbits/s
tout en maintenant la même vitesse de 8 ksymboles/s de codage/décodage. Cette
façon de coder de manière économique a été perçue dès l’avènement des premiers
systèmes de transmissions numériques, ainsi l’alphabet Morse, utilisé depuis 1835
codait la lettre "E" avec seulement un seul son bref, alors que le point de ponctua-
tion était codé par un alternat de 6 sons bref-long-bref-long-bref-long.
Les algorithmes de codage de source appartiennent à deux grandes catégories,
les codages avec ou sans perte :
1. Soit ils s’appuient sur un dissymétrie statistique des messages à émettre et
ils proposent un codage efficient des messages de façon à économiser de
la bande passante. Ainsi les symboles les plus probables de l’alphabet de
transmission se trouvent codés avec le moins de bits, les plus improbables
en consommant plus. On ne peut pas dire que ces algorithmes suppriment
de la redondance car ils proposent un codage sans perte. Une image simple
d’un tel type de code est le code Morse. De bout en bout on reproduit avec
exactitude le message codé. Les algorithmes les plus utilisés dans ce domaine
sont l’algorithme d’Huffman et l’algorithme de Lempel-Ziv
2. Une autre façon d’envisager ce codage de source lorsqu’il s’agit de coder de
l’audio ou de la vidéo est de considérer qu’un certain nombre d’informations
sont redondantes pour notre appareil auditif ou visuel. On trouve alors une
façon d’extraire l’information pertinente pour notre système sensoriel et de
ne transmettre que cette information. Les algorithmes utilisés ici sont donc
des algorithmes de codage avec perte. Certains de ces algorithmes sont som-
maires comme les algorithmes qui s’inspirent des lois de compression non
linéaire de notre système auditif (loi A, loi µ), ils sont dits sans mémoire car
ils n’utilisent pas l’histoire du signal à transmettre. Dans leur raffinement ré-
cents, les algorithmes de codage sont en général d’une certaine complexité
car issus d’un très grand effort de recherche par une vaste communauté. La
très grande difficulté ayant résidé dans la découverte de principe de codages
invariants pour notre système perceptif. Dans leurs versions évoluées, ces al-
gorithmes prennent en compte la mémoire d’un modèle de production qui
les a engendré. Ils sont dits algorithme de codage avec mémoire. Une façon
un symbole par seconde.
2. Quand les messages de l’alphabet n’ont pas la même longueur leur décryptage présuppose
que des indicateurs de début et/ou fin de mot soient positionnés, on suppose donc ici que le codage
est effectué afin que le décodage soit unique.

TBA1 3
Introduction H. Dedieu

de les comprendre est d’imaginer que tout système physiologique de pro-


duction et d’écoute du son obéit à des contraintes mécaniques, vibratoires,
bio-chimiques et électriques. Il y a ordonnancement dans la dynamique des
signaux et des contraintes déterministes existent si bien que lorsque certains
événements phonatoires se sont produits dans un passé récent, d’autres à ve-
nir sont plus probables. L’appareil phonatoire a ainsi une mémoire, d’où un
intérêt évident à essayer d’utiliser l’histoire du signal. Certains de ces al-
gorithmes sont communément utilisés dans les systèmes de transmissions
parce que directement adaptés au traitement temps-réel de l’information. Un
foisonnement de méthodes existent ici suivant que l’on considère du signal
audio ou vidéo. Les méthodes utilisent largement la transformation de signal
dans l’espace des fréquences ; des algorithmes de prédiction des symboles
sont implémentés dans cet espace transformé. Au lieu de transmettre le si-
gnal, on transmet les paramètres du prédicteur de signal. Ce prédicteur de
signal est en quelque sorte un modèle simplifié de l’appareil phonatoire, dont
les contraintes mécaniques font qu’il varie moins vite que le signal. Il est
donc plus économique de transmettre les paramètres du prédicteur et une
version très quantififiée d’un signal d’excitation du prédicteur permettant de
recomposer le signal à la réception. Comme on se retrouve généralement
confronté à transmettre des vecteurs dans un espace multi-dimensionnel, on
utilise une technique dite de quantification vectorielle que l’on surajoute à la
technique de prdédiction. La quantification vectorielle permet de ne considé-
rer qu’un nombre fini de points de cet espace multi-dimensionnel, les cen-
troïdes, elle consiste à trouver le centroïde de l’espace le plus proche du vec-
teur prédicteur calculé à un instant donné, on transmet alors le numéro du
centroïde sous forme d’une séquence binaire.

1.3 Le canal de communication


Avant de parler du bloc de codage de canal et du bloc de modulation, il nous
faut donner quelques idées relatives à l’action du canal de communication. Le canal
de communication est le support physique qui sert à la transmission. On trouve trois
types principaux de canaux de communications : le canal filaire, le sans fil, la fibre
optique.
Le canal filaire (wireline)
On trouve plusieurs types de support comme :
– la paire torsadée (téléphone, ADSL, VDSL, Ethernet) permettant une bande
passante jusqu’à 10 M Hz,
– le câble coaxial (Ethernet) permettant d’échanger des signaux jusqu’à 1 GHz

4 TBA1
H. Dedieu Introduction

– le cuivre non torsadé comme pour les réseaux à courants porteurs dit PLC
(Power Line Communication), permettant d’échanger des signaux jusqu’à
20 M Hz de bande,
– les guides d’ondes permettant d’assurer des communications via des ondes
électromagnétiques guidées entre 1 GHz et 100 GHz.
On donne à la figure 1.2, une vue synthétique des différentes bandes occupée par
ces canaux.

F IGURE 1.2 – Les principaux canaux guidés : filaire, guidé, optique.

Le sans fil (wireless)

Les canaux Hertziens ont été segmentés en un certains nombres de canaux (MF,
HF, VHF, UHF, SHF, EHF) utilisant des longueurs d’ondes variées (λ = c/f ),
– les ondes moyennes (dites MF entre 100 m et 1 km de longueur d’onde
pour des fréquences de l’ordre du M Hz) sont employées par les systèmes

TBA1 5
Introduction H. Dedieu

à modulation d’amplitude dits AM (systèmes de plus en plus désuets mais


encore utilisés en radio, dans le domaine maritime en particulier),
– les hautes fréquences (dites HF entre 100 m et 10 m de longueur d’onde
pour des fréquences de l’ordre de 10 M Hz), ces bandes sont réservées au
radio-amateurs et à la CB (citizen band),
– les très hautes fréquences (dites VHF entre 10 m et 1 m de longueur d’onde
pour des fréquences de l’ordre de 100 M Hz), réservées à la TV VHF, à la
radio par modulation de fréquence (FM),
– les ultra hautes fréquences (dites UHF entre 1 m et 10 cm de longueur d’onde
pour des fréquences de l’ordre du GHz), on trouve ici la TV UHF et la télé-
phonie mobile (dit GSM pour Global System for Mobile Communications)
avec les bandes GSM 900 (entre 872 à 960 M Hz), GSM 1800 (entre 1.710
à 1.875 GHz et GSM 1900 (entre 1.930 et 1.990 GHz)
– au delà on trouve les ondes SHF (super high frequencies entre 10 cm et 1
cm) et EHF (en deça du cm). Ces deux types de bande étant occupées par les
transmissions par satellite.
On donne à la figure 1.3, une vue synthétique des différentes bandes occupée par
ces canaux.

La fibre optique
Les canaux par fibre optiques offrent des bandes passantes supérieures de plu-
sieurs ordres de grandeur par rapport à celles des cables co-axiaux. L’information
est ici transmise en modulant l’intensité d’une source de lumière qui se propage
le long d’une fibre. Des répéteurs peuvent se trouver sur la fibre à des longueurs
équi-espacées afin de compenser l’atténuation due à la distance. Au récepteur, une
photodiode détecte la lumière et émet un signal électrique proportionnel à l’inten-
sité de la lumière reçue.

1.4 Les imperfections du canal de communication


Il existe deux types d’imperfection, la première est liée à la bande passante
limitée du canal, la seconde à tous les bruits inhérents au canal.

Effet liés à la bande passante limitée


Lorsqu’on envoie un train de bits sur un canal, ce dernier agit comme un filtre
qui dans le meilleur des cas est linéaire. Si l’on admet qu’un message donné est dé-
composé en série de Fourier, l’envoi de ce message sur le canal correspondra à une
atténuation des composantes spectrales harmoniques de la fréquence fondamentale

6 TBA1
H. Dedieu Introduction

d’analyse du message initial. La recomposition du message au récepteur sera tron-


quée et déformée parce qu’un certain nombre de composantes spectrales auront été
éliminées par le canal. La reconstruction sera d’autant meilleure que la bande pas-
sante du canal sera large. On peut admettre que si la troncation est trop sévère, on ne
puisse plus reconstruire le message émis et que la détection des bits soit impossible
au récepteur. Ceci est montré à la figure 1.4 ou un train de bits de durée Te s est en-
voyé sur un canal qui est un filtre passe-bas d’ordre 4 de fréquence de coupure 2/Te
filtre le train de bits. On a superposé sur la figure le train de bits ainsi ainsi que sa
réponse filtrée par le canal. On conçoit aisément en vérifiant l’allure du train de bits
qu’il soit possible moyennant un détecteur à seuil au récepteur de reconstruire sans
erreur le signal émis. Les ingénieurs en télécommunications on coutume d’utiliser
une représentation dite du diagramme en oeil où ils superposent sur un oscilloscope
les traces successives de durée Te s. Ainsi les différents bits reçus en superposition
permettent d’estimer à quel instant on doit détecter le signal reçu (synchronisation
fine à l’intérieur d’un bit) de manière à commettre le moins d’erreurs de recons-
truction avec les détecteurs à seuil. Ceci est montré à la figure 1.6 où il est patent
que "l’oeil" est ouvert et que le détecteur à seuil peut être placé de façon optimale
dans l’intervalle [0.4Te , 0.9Te ]. Si l’on diminue la bande passante du canal et que
celle-ci prenne par exemple la valeur 0.35/Te , on s’aperçoit sur la figure 1.5 que
le message reçu rendra la reconstruction difficile ou quasi-impossible. Ceci devient
évident sur le diagramme en oeil correspondant (figure 1.7) où l’oeil apparaît fermé.
On a ce qu’on appelle de l’interférence inter-symbole, la mémoire du canal fait que
la réponse au bit précédent s’ajoute à celle du bit courant. On s’aperçoit que la vi-
tesse de réaction du canal le rendra impropre à toute communication au delà d’un
certain débit. La bande passante, est donc un facteur limitatif au débit accessible de
communication avec des taux d’erreur acceptables. Ce n’est pas le seul paramètre
limitatif. Le bruit de communication, principalement dû au canal, influe aussi de
manière déterminante.

Effets liés au bruit du canal


Le canal introduit toutes sortes de bruit et de distortions. Dans le meilleur des
cas, et c’est souvent une approximation que l’on fait, le canal est considéré comme
un filtre linéaire avec bruit additif. Il fait donc correspondre à un message x(t) qui
lui est est envoyé un signal y(t) tel que
Z ∞
y(t) = x(t) ∗ h(t) + n(t) = h(τ ) ∗ x(t − τ )dτ + n(t) (1.1)
0

où h(t) est la réponse impulsionnelle du canal, n(t) est le bruit additif introduit par
le canal, et ∗ est l’opérateur de convolution. Dans le domaine fréquenciel, l’équa-
tion précédente se ramène à
Y (f ) = X(f )H(f ) + N (f ) (1.2)

TBA1 7
Introduction H. Dedieu

Dans la pratique, les choses sont un peu moins simples. Certes, les bruits élec-
troniques de type bruit thermique, sont présents dans toutes les résistances et cir-
cuits actifs intégrés de la chaîne de transmission ; on peut généralement prendre
en compte ces bruits comme un bruit Gaussien additif, mais de nombreux autres
bruits existent, ils dépendent des canaux utilisés, des interférences entre canaux.
Par exemple, les systèmes sans fil sont souvent affectés de phénomènes de multi-
trajets, un message arrivant via un trajet d’une certaine longueur est pollué par une
réplique de ce message arrivant retardé car ayant suivi un autre chemin. Parfois
les bruits sont impulsifs, c’est le cas dans le PLC et le DSL où les décharges de
tubes néons peuvent perturber de façon instantanée les communications. Parfois
les canaux ne sont pas linéaires, en ADSL, au moment ou des signaux de sonnerie
de l’ordre de 300V crête à crête sont appliqués sur la ligne torsadée, des filtres de
protection contenant des inductances peuvent se mettre à saturer, les harmoniques
des signaux générés peuvent rayonner et induire des salves d’erreur sur les commu-
nications ADSL. Dans les systèmes DSL, tout est fait pour minimiser l’influence
des canaux adjacents (on veille à l’équilibrage des deux brins et à ce que les deux
brins soient torsadés), mais en pratique, il existe de la diaphonie (crosstalk) entre
les lignes adjacentes induites par un couplage capacitif présent sur une grande por-
tion de ligne, cette diaphonie se manifeste par un couplage plus complexe qu’un
simple bruit additif en bout de ligne. De manière générale, les canaux même s’ils
sont linéaires ne sont pas à phase linéaire, il en résulte une distortion de phase
(temps de propagation de groupe non constant). Comment avoir un aperçu de l’in-
fluence du bruit dans le domaine de la transmission. On peut reprendre l’exemple
des figures 1.4 et 1.5 qui montrait un canal de communication très bon avec un
oeil complètement ouvert. Si nous rajoutons un bruit de communication tel que le
rapport signal à bruit soit de 10 dB on voit que l’oeil a tendance à se fermer. Ceci
est montré au figures 1.8 et 1.9. Au delà d’un certain niveau de bruit il est clair que
la reconstruction du signal deviendrait impossible.

Prise en compte globale de l’effet bande-passante limitée et bruit


de communication : la formule de Shannon
On voit donc intuitivement que les deux paramètres que sont la largeur de bande
W d’un canal et le niveau de rapport à bruit SN R interfèrent pour donner ce que les
spécialistes en télécommunications appellent la capacité C d’un canal. Par capacité
on entend un débit limite de communication tel qu’il soit théoriquement possible
d’effectuer une communication sans erreur avec un débit D tant que D < C. Une
formule célèbre due au travaux de Shannon (1948) donne cette capacité (exprimée
en bits/s) en fonction de la band passante du canal W et du rapport signal à bruit .
Cette formule s’exprime par
µ ¶
P
C = W log2 1 + (bits/s) (1.3)
N0 W

8 TBA1
H. Dedieu Introduction

où P désigne la puissance moyenne du signal transmis et N0 la puissance moyenne


du bruit additif. Insistons sur le fait que cette limite est théorique, c’est une li-
mitation de vitesse fondamentale que l’on ne peut dépasser. S’il est important de
connaître cette vitesse maximum, Shannon ne nous dit pas comment construire les
outils de communications de façon à exploiter au mieux la capacité du canal. Un des
enjeux majeurs des architectes modernes de systèmes de communications a été de
construire des systèmes s’approchant de la limite de Shannon. Encore aujourd’hui,
à chaque exploitation d’un nouveau canal de communication, de nouvelles idées et
concepts surgissent pour optimiser les blocs de traitement de communication.

TBA1 9
Introduction H. Dedieu

F IGURE 1.3 – Les principaux canaux "sans-fil".

10 TBA1
H. Dedieu Introduction

fc=2/Te
1.5

0.5

−0.5

−1

−1.5
0 5 10 15 20 25 30 35 40

F IGURE 1.4 – Réponse du canal : la fréquence de coupure du canal est deux fois la
fréquence des bits.

TBA1 11
Introduction H. Dedieu

fc=0.35/Te
1.5

0.5

−0.5

−1

−1.5
0 5 10 15 20 25 30 35 40

F IGURE 1.5 – Réponse du canal : la fréquence de coupure du canal est deux fois la
fréquence des bits.

12 TBA1
H. Dedieu Introduction

fc=2/Te

0.5

amplitude

−0.5

−1

0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 1.1 1.2


time (second)

F IGURE 1.6 – Diagramme en oeil associé à la figure 1.4 .

TBA1 13
Introduction H. Dedieu

fc=0.35/Te

0.5
amplitude

−0.5

−1

0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 1.1 1.2


time (second)

F IGURE 1.7 – Diagramme en oeil associé à la figure 1.5.

fc=2/Te
2

1.5

0.5

−0.5

−1

−1.5

−2
0 5 10 15 20 25 30 35 40

F IGURE 1.8 – Réponse du canal : la fréquence de coupure du canal est deux fois la
fréquence des bits mais avec SNR=10 dB.

14 TBA1
H. Dedieu Introduction

fc=2/Te

1.5

0.5
amplitude

−0.5

−1

−1.5

0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 1.1 1.2


time (second)

F IGURE 1.9 – Diagramme en oeil associé à la figure 1.8.

TBA1 15
Introduction H. Dedieu

1.5 Fonction du codage de canal


Nous venons de voir que c’est principalement le canal qui impacte le débit
limite de communications sans erreurs. La formule de Shannon, dans une conci-
sion remarquable nous donnant la valeur limite de la capacité pour un débit sans
erreur. Or, pour combattre à la fois le bruit de communication et l’interférence in-
tersymbole, il est nécessaire de mettre en oeuvre un moyen intelligent de détecter
et corriger les erreurs de communication. Si l’on ne faisait rien, l’intersymbole et le
bruit génèreraient forcément des erreurs au récepteur. Ce codage particulier, appelé
codage de canal est une signature que l’on va rajouter sur tout paquet d’information
à transmettre. Entre l’information transmise et sa signature doit exister une corres-
pondance de telle sorte, que si le récepteur ne constate pas de correspondance, il
puisse détecter une erreur ou plusieurs erreurs. Cette signature est une fonction ma-
thématique connue du récepteur, liant la signature au message à transmettre. Or si
détecter est important, corriger sans avoir à redemander un renvoi du paquet, l’est
tout autant. Une grande force du codage de canal est de pouvoir détecter les er-
reurs (ou plutôt détecter un certain nombre d’erreurs) et de les corriger. Un code
détecteur sommaire d’erreur est un bit de parité que l’on rajoute à un paquet de
bits. Ce détecteur est très sommaire car il ne peut détecteur qu’un nombre impair
d’erreurs, et il ne peut corriger les messages. On verra dans la suite de ce cours des
codes de canaux bien plus sophistiqués, et en particulier, deux grandes familles de
codes détecteur/correcteur d’erreurs basés sur ce que l’on appelle les codes blocs
ou les codes convolutionnels. Soulignons ici que le codage de canal repose sur
l’ajout d’une redondance, alors que le codage de source reposait sur un principe
d’économie de bits à transmettre.

1.6 Fonction du modulateur numérique


Il s’agit ici de placer un signal porteur de contenu spectral compatible avec la
bande occupée par le canal. Ce signal peut-être bande étroite ou large bande. En
lui-même, le signal porteur qui est parfaitement déterministe, ne porte aucune in-
formation. On module donc ce signal porteur à l’aide de notre signal d’information.
On peut jouer sur l’amplitude, la phase, la fréquence du signal porteur. On montre
à la figure 1.10, un exemple où l’on module l’amplitude d’un signal porteur à fré-
quence fixe. Dans cet exemple, on groupe les bits à transmettre par paquet de 2,
ces deux bits codent des impulsions à 4 amplitudes possibles en bande de base.
On multiplie (module) alors une porteuse à fréquence f0 par le signal en bande de

16 TBA1
H. Dedieu Introduction

base. Ce type de modulation est dit, modulation d’amplitude d’impulsions (Pulse-


Amplitude-Modulation ou PAM). Ceci n’est qu’un exemple parmi une très grande
variété de possibilités de modulations.

F IGURE 1.10 – Exemple de modulation par modulation d’amplitude d’impulsions.

1.7 Fonction du démodulateur

Le démodulateur a pour fonction de ramener le signal reçu en bande de bande


tout en retrouvant l’information modulante, c’est-à-dire le message. En général,
le démodulateur contient un système de synchronisation lui permettant de se ver-
rouiller sur le signal porteur.

1.8 Fonction du décodage de canal

Le décodeur de canal détecte les erreurs et éventuellement les corrige.

TBA1 17
Introduction H. Dedieu

1.9 Fonction du décodage de source


C’est la fonction mathématique inverse à celle du codage de source.

1.10 Plan du cours


Nous nous analyserons les principaux blocs de traitement de l’information dans
les systèmes de communications numériques. Dans le temps imparti, il est illu-
soire d’être exhaustif, nous chercherons donc à décrire des principes généraux
de quelques systèmes importants utilisés en communications numériques. L’ordre
dans lequel nous visiterons les différents blocs ne sera pas exactement celui dans
lequel l’information est traitée. Dans une première partie, nous nous attacherons à
décrire les principes qui gouvernent le codage de source et le codage de canal.

18 TBA1
2

Notions de la théorie de l’information

CONTENU
2.1 Information=Surprise . . . . . . . . . . . . . . . . . . . 19
2.2 Comment mesurer l’information ? . . . . . . . . . . . . 20
2.2.1 Exemple 1 . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2.2 Exemple 2 . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3 Entropie=Moyenne de l’information . . . . . . . . . . . 22
2.3.1 Exemple 3 . . . . . . . . . . . . . . . . . . . . . . . . 23
2.3.2 Remarque historique :-) . . . . . . . . . . . . . . . . . 24

Résumé Ce chapitre est une très brève introduction à la théorie de l’information.


On n’introduit ici que les définitions classiques de l’information. Ne sont pas abor-
dées pour le moment le passage d’information au travers d’un canal et la notion de
limite de Shannon pour un canal linéaire avec bruit additif Gaussien.

2.1 Information=Surprise

Nous allons essayer de définir ici la notion d’information . Avant d’aller plus
loin, il faut être conscient que la notion d’information a une signification particu-
lière dans la théorie des probabilités, cette signification est différente de celle que
nous lui accordons habituellement. Prenons un exemple et considérons les deux
assertions suivantes :
1. Il fera jour demain
2. Le président de la Confédération dansera nu à la prochaine streetparade

c 2010 HEIG-VD.
°
19
Théorie de l’information H. Dedieu

Si l’on se demande laquelle de ses deux assertions transporte le plus d’information,


il semble que l’assertion 2) en apporte le plus. Il est en effet hautement improbable,
qu’il ne fasse pas jour demain. Bien que nous soyons certainement très peu intéressé
par la vie privée du président de la Confédération, l’assertion 2) nous apporte un
éclairage particulier sur sa personnalité. En résumé
1. plus un événement est certain (probabilité d’apparition proche de 1) et moins
il apporte d’information.
2. plus un événement est incertain, ou nous surprend (probabilité d’apparition
proche de 0) et plus il apporte d’information.
On voit donc que la notion d’information ou de de quantité d’information est étroi-
temement liée à la notion de de surprise. Considérons maintenant deux ordinateurs
reliés entre eux et échangeant des données. Supposons que les deux messages sui-
vants aient transité de l’ordinateur 1 vers l’ordinateur 2.
1. AMOUR
2. QWERTZ
Notre réaction immédiate est de nous dire que le message QWERTZ n’a aucun sens
et donc ne porte aucune information. Dans notre vie quotidienne, l’information est
en effet liée à la fois à la notion de surprise mais aussi au sens. Remarquons que
pour l’ordinateur les deux messages n’ont certainement aucun sens. Par contre,
l’ordinateur 2, qui "voit passer" un très grand nombre de messages en Français
peut mesurer la fréquence des lettres, et peut s’apercevoir que les lettres W et Z
sont peu usitées, ou que la transition QW a une probabilité d’apparition nulle. En
ce sens le message QWERTZ sera plus surprenant que le message AMOUR pour
l’ordinateur 2.
La théorie mathématique de l’information est donc seulement liée à la notion de
surprise, elle abandonne la notion des sens. Les raisons de ce choix sont simples,
d’une part la théorie de l’information s’est développée dans le cadre de l’ingénierie
des télécommunications où c’est facteur de surprise qui est important, d’autre part,
il faut bien admettre que la notion de sens est difficilement quantifiable pour une
machine.

2.2 Comment mesurer l’information ?


C’est la question que s’est posé Claude Shannon en 1948 dans un article désor-
mais célèbre "A Mathematical Theory of Communications". Les éléments qui ont
guidé la théorie Shannon concernant l’information sont les suivants :
1. Soit I(E) la mesure de l’information liée à la réalisation de l’évènement E
et soit P (E) sa probabilité de réalisation. Alors I(E) devrait être une fonc-
tion décroissante de P (E) (Les événements à forte probabilité de réalisation

20 TBA1
H. Dedieu Théorie de l’information

apportent moins d’information que les événements à faible probabilité de


réalisation).
2. L’information ne peut être une quantité négative i.e. I(E) >= 0 pour tout
événement E appartenant à l’espace des événements.
3. Si l’événement est certain, sa réalisation n’apporte aucune information, i.e.
I(E) = 0 si P (E) = 1 .
4. Si l’on considère la réalisation de 2 événements indépendants ( la réalisa-
tion de l’un n’a pas d’influence sur la réalisation de l’autre) alors l’infor-
mation liée à la réalisation des 2 événements devrait être égale à la somme
T
des informations des événements. Autrement dit soit E = E1 E2 tel que
T
P (E) = P (E1 E2 ) = P (E1 ).P (E2 ) alors I(E) = I(E1 ) + I(E2 )
Un des candidats possibles pour une telle mesure est une fonction logarithmique,
i.e.
I(E) = −K loga (P (E))
ou K et a sont des constantes positives. L’usage a consacré le logarithme a base 2.
Si bien que l’information liée à la réalisation de l’événement E est décrite par

I(E) = −log2 (P (E)) (2.1)

L’unité d’information est le bit.

2.2.1 Exemple 1
Soient deux machines échangeant des messages avec des mots qui ont un al-
phabet de 4 symboles, i.e. A, B, C, D. (Remarquons que 2 bits sont nécessaires
pour coder ces 4 symboles). Supposons que ces 4 symboles soient équiprobables
et calculons l’information associée à l’apparition des quatre symboles. La proba-
bilité de chaque symbole étant 14 , l’information associée à leur apparition est donc
I(A) = I(B) = I(C) = I(D) = −log2 ( 14 ) = 2

Evénement E A B C D
1 1 1 1
p(E) 4 4 4 4
I(E) 2 bits 2 bits 2 bits 2 bits

TABLE 2.1 – Calcul de l’information quand les symboles sont équiprobables

2.2.2 Exemple 2
Supposons maintenant que les symboles ne soient plus équiprobables mais que
leurs probabilités d’apparition se répartissent suivant la loi p(A) = 21 , p(B) = 41 ,

TBA1 21
Théorie de l’information H. Dedieu

Evénement E A B C D
1 1 1 1
p(E) 2 4 8 8
I(E) 1 bits 2 bits 3 bits 3 bits

TABLE 2.2 – Calcul de l’information quand les symboles ne sont plus équipro-
bables

p(C) = 18 , p(D) = 18 . Les quantités d’information relatives aux différents symboles


calculées selon l’équation (2.1) sont données par la table 2.2.
A la lumière de ces deux exemples, on voit que si les symboles transmis sont
équiprobables, alors l’information apportée par chaque symbole est log2 (N ombre de symboles)
(en l’occurrence 2 bits pour l’exemple 1). Pour l’exemple 2, on voit que l’événe-
ment A apparaîtra une fois sur deux ; en anticipant sur les notions de codage que
nous introduirons ultérieurement, on coderait A sur 1 bit (on a besoin d’un seul bit
une fois sur deux). L’événement B apparaîtra une fois sur quatre et nécessitera 2
bits, C une fois sur 8 et nécessitera 3 bits, idem pour D.

2.3 Entropie=Moyenne de l’information


Les deux exemples précédents font apparaître un nombre moyen de bits d’in-
formation différent. Dans l’exemple 1, le nombre moyen de bits d’information est
2, quel est le nombre moyen de bits d’information dans l’exemple 2, est-il inférieur
ou supérieur à 2. Pour calculer la moyenne on doit tenir compte des pondérations
qui expriment la fréquence d’apparition des symboles. Le nombre de bits moyen
d’information pour l’exemple 2 est donc

1 1 1 1 14
1+ 2+ 3+ 3= = 1.75 bits
2 4 8 8 8
Ce nombre moyen de bits d’information a été appelé conventionnellement entropie.
Formellement on peut la définir de la manière suivante. Soit une variable aléatoire
X qui se réalise par n événements possibles e1 , e2 , . . . en . Chaque événement ei a
une probabilité d’apparition P (ei ) et une quantité d’information associée I(ei ). La
valeur moyenne de l’information H(X) est donc
n
X n
X
H(X) = P (ei )I(ei ) = − P (ei ) log2 (P (ei )) (2.2)
i=1 i=1

L’entropie, mesure moyenne de l’information, se mesure donc aussi en bits.

22 TBA1
H. Dedieu Théorie de l’information

Entropie en fonction de p
1

0.9

0.8

0.7

0.6
Entropie

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
p=Probabilité d'apparition du symbole A

F IGURE 2.1 – Entropie en fonction de p (Exemple 3)

2.3.1 Exemple 3
Soit un ordinateur 1 envoyant des symboles vers un ordinateur 2. Les symboles
seront désignés par A et B. Les messages sont tels que p(A) = p et donc p(B) =
1 − p. Calculer l’entropie en fonction de p.
Dans ce cas particulier l’application de la formule (2.2) donne

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

La figure 2.1 montre que l’entropie est maximum quand les symboles sont équi-
probables. L’entropie mesure l’incertitude. Si p est proche de 0 (respectivement 1)
cela veut dire que le symbole B (respectivement A) apparaît avec une fréquence très
grande, on est pratiquement sûr de voir B (respectivement A) se réaliser. En consé-
quence l’incertitude sur l’apparition du symbole est faible et l’entropie est proche
de 0. Par contre lorsque p = 0.5, on a un maximum d’incertitude sur l’apparition
d’un symbole, l’entropie prend sa valeur maximale, i.e. 1 bit.
De façon générale on peut montrer que pour une variable aléatoire discrète X
prenant n valeurs possibles, l’entropie H(X) vérifie les propriétés suivantes
1. H(X) ≥ 0
2. H(X) = 0 si et seulement si X prend une de ses valeurs de façon certaine
3. H(X) ≤ log2 (n)
4. H(X) = log2 (n) si et seulement si X est uniformément distribué.

TBA1 23
Théorie de l’information H. Dedieu

2.3.2 Remarque historique :-)


L’usage de la terminologie entropie qui trouve son origine en thermodynamique
et en physique statistique appelle quelques commentaires. L’usage du vocable en-
tropie a été proposé par Shannon quand il réalisa l’importance de l’expression (2.2).
La petite histoire nous apprend qu’il consulta le grand mathématicien John Von
Newman au sujet du meilleur nom possible. La réponse de Von Newman fut la sui-
vante. "Vous devriez l’appeler entropie, premièrement parce que la même fonction
est utilisée en thermodynamique, deuxièmement et de façon plus importante, parce
que la plupart des gens ne savent pas ce qu’est l’entropie réellement, donc si vous
utilisez le mot entropie dans une discussion, vous gagnerez à chaque coup".

24 TBA1
3

Codage de Source

CONTENU
3.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . 25
3.1.1 Codes à longueur constante . . . . . . . . . . . . . . . 26
3.1.2 Codes à longueur variable . . . . . . . . . . . . . . . . 26
3.1.3 Décodage unique et décodage instantané . . . . . . . . 27
3.1.4 Longueur moyenne des mots . . . . . . . . . . . . . . . 28
3.1.5 Inégalité de Kraft-McMillan . . . . . . . . . . . . . . . 28
3.1.6 Capacité, efficacité et redondance du code . . . . . . . . 28
3.2 Codage de Shannon-Fanno . . . . . . . . . . . . . . . . 30
3.3 Codage binaire de Huffman . . . . . . . . . . . . . . . . 32
3.4 Algorithme de Lempel-Ziv . . . . . . . . . . . . . . . . 34
3.4.1 Codage de type Lempel-Ziv . . . . . . . . . . . . . . . 34
3.4.2 Décodage avec l’algorithme Lempel-Ziv . . . . . . . . . 36
3.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . 36

Résumé Ce chapitre introduit les notions de codage de source.

3.1 Généralités
Comme nous l’avons vu dans le chapitre introductif, différentes sortes de co-
dage sont utilisées. On distingue :
1. le codage de source visant à transformer la source d’information (appelée
source primaire) en une source d’information secondaire qui est à entropie
maximale. L’objectif est donc de réduire au maximum la redondance et la

c 2010 HEIG-VD.
°
25
Codage de source H. Dedieu

longueur des messages.


2. le codage de canal qui s’appuie sur des codes détecteurs et correcteurs d’er-
reur. Le codage de canal, au contraire du codage de source augmente la lon-
gueur et la redondance des messages afin de permettre la détection et éven-
tuellement la correction des erreurs occasionnées par l’action des perturba-
tions dues au canal.
3. le codage d’émission réalise l’adaptation des signaux aux canal par modula-
tion, filtrage, distorsion linéaire, etc
L’éventail des techniques utilisées est très grand, on s’attachera aux familles prin-
cipales de codage de source et de canal. On considérera dans la suite un alphabet
de source à n symboles
[S] = [s1 , s2 , . . . sn ]
tandis que l’alphabet du code aura m symboles

[X] = [x1 , x2 , . . . xm ]

Un mot du code est une suite finie de l’alphabet X, xi1 , xi2 , . . . , xin . Le code
désignera un suite finie de n mots.

[C] = [c1 , c2 , . . . cn ]

Exemple
Soit [S] = [A, E, I, O] à coder à partir d’un alphabet binaire [X] = [0, 1]. Un
code possible sera 00 pour A, 01 pour E, 10 pour I, 11 pour O. Le code correspon-
dant sera donc [C] = [00, 01, 10, 11]

3.1.1 Codes à longueur constante


Le codage le plus simple consiste à donner la même longueur à tous les mots.
Un exemple de ce type de code est le code ASCII qui utilise des mots de 7 bits.

3.1.2 Codes à longueur variable


Si l’on dispose des probabilités d’émission des différents symboles de l’alpha-
bet de source [S], il est plus économe d’utiliser des codes à longueur variable : le
mot-code d’un symbole de source aura une longueur variable, qui décroît avec la
probabilité d’émission. Un exemple d’un tel code est le code Morse, où la lettre E,
fréquemment utilisée, est codée par un seul symbole (.), tandis que la lettre Q plus
rare est codée par quatre symboles (− − .−)

26 TBA1
H. Dedieu Codage de source

3.1.3 Décodage unique et décodage instantané


Si les mots du code sont convenablement choisis, on peut faire en sorte que
chaque succession de mots du code corresponde une seule succession de l’alphabet
de source. Dans ce cas, on dit qu’on a un code à décodage unique . La propriété
de décodage unique est la propriété que doit posséder tout code. Soit à coder [S] =
[A, E, I, O], on pourra utiliser les différents codes donnés dans la table 3.1 Le

Message sk Code 1 Code 2 Code 3 Code 4


A 00 0 0 0
E 01 10 01 10
I 10 110 011 110
O 11 1110 0111 111

TABLE 3.1 – Exemples de codes à décodage unique

code à décodage unique le plus simple est le code 1, car ses mots sont de même
longueur. Le code 2 est à décodage unique parce que le symbole 0 sert d’indicateur
de fin de mot. Le code 3 est aussi à décodage unique car le 0 sert d’indicateur de
début de mot. Parmi les codes à décodage unique, il existe les codes à décodage
instantané et les codes à décodage non instantané. Soit par exemple à coder le mot
AIE avec le code 2, ceci donne le message 011010 ; au décodage, à la réception du
premier 0 on sait instantanément qu’il s’agit de A qui a été codé, puis à la réception
de 110 on peut immédiatement décoder I, et la réception de 10 on décodera E.
Le code 3 par contre n’est pas instantané. Si l’on code AIE, on obtient cette fois
00110. Observons que la réception du premier 0 ne nous permet pas de décoder
A instantanément, il faut attendre la réception du prochain bit en l’occurrence 0
pour se rendre compte qu’un nouveau symbole débute et que l’on peut décoder le
précédent symbole comme étant A. Le code 3 n’est pas un code instantané. Soir
ci = xi1 , xi2 , xi3 , . . . xin un mot du vocabulaire du code C, on définit comme
préfixes tous les mots plus courts que ci de la forme xi1 , xi2 , xi3 , . . . xim avec
m < n. Un code est à décodage instantané si et seulement si aucun mot du code
ne peut être préfixe d’un autre mot du code.
Ainsi pour le code 2, 0 n’est pas préfixe de 10 ni de 110 ni de 1110, 10 n’est
pas préfixe de 110 ni de 1110 et 110 n’est pas préfixe de 1110. Le code 2 est donc
un code instantané. Par contre pour le code 3, 0 est préfixe de 01, 011, 0111 ; 01 est
préfixe de 011 et 0111, 011 est préfixe de 0111. Par conséquent le code 3 n’est pas
un code instantané.
Un code instantané est un code à décodage unique, mais la réciproque n’est pas
vraie.

TBA1 27
Codage de source H. Dedieu

3.1.4 Longueur moyenne des mots


L’efficacité du codage peut se mesurer par la longueur moyenne des mots codes
ci , cette longueur moyenne est
n
X
L̄ = pi li (3.1)
i=1

où les pi sont les probabilités des symboles si représentés par des mots ci de lon-
gueur li .

3.1.5 Inégalité de Kraft-McMillan


On peut montrer qu’un code instantané de n mots-codes ci ayant des longueurs
li existe si et seulement si
n
X
¯l = m−li ≤ 1 (3.2)
i=1

où m est le nombre de symboles de l’alphabet du code. L’inégalité de Kraft-McMillan


indique que l’on ne peut pas prendre trop de mots ayant une très faible longueur.

Exemple

Déterminer s’il existe un code instantané utilisant un alphabet de code binaire


pour un alphabet de source de 5 lettres codées respectivement avec 1, 2, 3, 4 et 5
bits.

Solution

Nous avons n = 5 et m = 2 et
31
2−1 + 2−2 + 2−3 + 2−4 + 2−5 = <1
32
Dès lors par l’équation (3.2) il existe un code instantané. Par exemple 0, 10, 110,
1110, 11110.

3.1.6 Capacité, efficacité et redondance du code


On appelle capacité C du code, la valeur maximale de l’entropie de l’alphabet
du code :
C = max(H(X)) = log 2(m) (3.3)

28 TBA1
H. Dedieu Codage de source

3.1.6.1 Commentaire
La capacité du code X est la valeur maximale de l’entropie des symboles du
code. On a vu que l’entropie était maximale lorsque les m symboles étaient équi-
probables, et dans ce cas l’entropie vaut log 2(m). Pour un alphabet de code binaire
C = 1.
On appelle efficacité η (ou rendement) du code, le rapport entre la longueur
moyenne minimale et la longueur moyenne d’un mot du code.
¯lmin
η= ¯l (3.4)

Question : que le vaut la longueur moyenne minimale ? L’information moyenne


produite par la source est H(S). Soit ¯l la longueur moyenne en symboles de X
permettant de coder l’alphabet de source, alors on la relation

H(S) = ¯lH(X) (3.5)

Soit
¯l = H(S) (3.6)
H(X)
Or on vient de voir que H(X) prenait sa valeur maximale lorsque H(X) = log 2(m),
par conséquent la valeur minimum de ¯l sera

¯lmin = H(S) (3.7)


log 2(m)
Des équations (3.4), (3.5) et (3.7 on déduit la valeur de l’efficacité du code
H(X)
η= (3.8)
log 2(m)
La redondance ρ d’un code se définit comme

ρ=1−η (3.9)

Exemple
Considérons une source
h dont l’alphabeti [S] = [A, , B , C , D] et les probabili-
1 1 1 1
tés associées sont [P ] = 2 , , 4 , 8 , 8 . L’entropie de la source est
4
X −1 1 1 1 7
H(S) = − pi log 2(pi ) = (−1) − (−2) − (−3) − (−3) =
i=1 2 4 8 8 4

Prenons maintenant un alphabet binaire [X] = [0, 1] et supposons que l’on utilise
le codage suivant

TBA1 29
Codage de source H. Dedieu

Symbole A B C D
Code 00 01 10 11
1 1 1 1
Probabilité 2 4 8 8

TABLE 3.2 – Code associé aux symboles A, B, C et D

La longueur moyenne est donc


X4
¯l = 1 (2) + 1 (2) + 1 (2) + 1 (2) = 2( pi = 2)
2 4 8 8 i=1

Comme ¯lmin = H(S)


log 2(m)
(m = 2), d’où ¯lmin = H(S) = 74 , d’où
¯lmin 7
η= ¯l = = 0.875 ρ = 1 − η = 0.125
8
Prenons maintenant un nouveau code La longueur moyenne est maintenant

Symbole A B C D
Code 0 10 110 111
1 1 1 1
Probabilité 2 4 8 8

TABLE 3.3 – Nouveau Code associé aux symboles A, B, C et D

¯l = 1 (1) + 1 (2) + 1 (3) + 1 (3) = 7


2 4 8 8 4
Par conséquent pour ce nouveau code
¯lmin
η= ¯l = 1 ρ=0

Le nouveau code atteint la valeur maximale de l’efficacité. Ceci a été réalisé en


allouant un mot-code de longueur égale à la quantité d’information du symbole de
source associé.

3.2 Codage de Shannon-Fanno


Un tel codage permet de calculer directement le nombre de bits que l’on doit
affecter à chaque symbole en fonction de sa probabilité d’apparition. Soit un al-
phabet [S] à n symboles à coder dans un alphabet binaire. Les n symboles ont

30 TBA1
H. Dedieu Codage de source

une probabilité d’apparition pi i = 1 . . . n. Pour calculer la longueur de codage de


chaque symbole, on part de l’observation que pour tout symbole si de probabilité
d’apparition pi , il existe un entier li tel que
1 1
log2 ( ) ≤ li < log2 ( ) + 1 (3.10)
pi pi
le codage de Shannon-Fano consiste à affecter li bits au codage du symbole si . Une
question naturelle que l’on peut se poser est de savoir si un tel code est à décodage
instantané. La réponse est positive, en effet l’équation (3.10) est équivalente à
1 1
≤ 2li < 2 (3.11)
pi pi
soit encore
pi
pi ≥ 2−li > (3.12)
2
Or l’équation (3.12) est l’inégalité de Kraft (3.2) quand m = 2 (cas du code à
alphabet binaire), ce qui prouve qu’il est toujours possible de construire un code de
Shannon-Fanno à décodage instantané.
3.2.0.2 Exemple
Soit [S] un alphabet à 6 symboles [S] = [s1 , s2 , s3 , s4 , s5 , s6 ] tel que les pro-
babilités d’apparition des symboles soient [P ] = [0.30, 0.25, 0.15, 0.15, 0.10, 0.05].
En prenant le logarithme à base 2 du vecteur P on trouve

P = [1.7370, 2.000, 2.7370, 2.7370, 3.3219, 4.3219]

qui prouve que les longueurs de code à utiliser sont (en tenant compte de l’inégalité
(3.10) [2, 2, 3, 3, 4, 5]. On remarquera qu’un tel code est de longueur moyenne
¯l = 2.65

Un code instantané possible est

s1 −→ 00
s2 −→ 01
s3 −→ 100
s4 −→ 101
s5 −→ 1100
s6 −→ 11100
(3.13)

TBA1 31
Codage de source H. Dedieu

3.3 Codage binaire de Huffman


Le problème qui se pose ici est de trouver une méthode de codage (instantané)
optimal. Afin que le codage soit optimal, il faut que le mot-code le plus court soit
attribué au symbole ayant la probabilité la plus grande d’être transmis. A cette fin,
on ordonne les messages dans l’ordre décroissant des probabilités, i.e.

p(s1 ) ≥ p(s2 ) ≥ p(s3 ) . . . ≥ p(sn−1 ) ≥ p(sn ) (3.14)

avec, si les li , i = 1 . . . n représentent les longueurs associées aux symboles si ;

l1 ≤ l2 ≤ l3 . . . ≤ ln−1 ≤ ln (3.15)

Remarquons, que si l’ordre n’était pas respecté (par ex. l1 est attribué à s3 et l3
est attribué à s1 ) alors ¯l) ne peut qu’augmenter (dans le cas particulier présenté
p(s1 )l3 + p(s3 )l1 ≥ p(s1 )l1 + p(s3 )l3 ).
D’autre part pour arriver au codage optimal, il faut que les deux dernières lon-
gueurs soient égales, i.e.
ln−1 = ln (3.16)
En effet si l’on suppose que ln = ln−1 + 1, alors il existe un seul mot de longueur
ln . Si on élimine le dernier bit, le mot à ln−1 bits obtenu est préfixe de sn et par
conséquent, il ne peut être attribué qu’à sn et pas sn−1 ( pour la raison que l’on
désire construire un code à décodage instantané). Il s’ensuit que le ln ième bit est
superflu et ne fait qu’accroître ¯l. Un code optimal est donc tel que ln = ln−1 .
Le codage d’Huffman est basé sur l’idée suivante. On range les symboles sui-
vant l’ordre décroissant des probabilités. Puis on rassemble les symboles sn et sn−1
(de probabilités les plus faibles) en un seul symbole de probabilité pn + pn−1 en
sorte que l’on ait maintenant un alphabet de n − 1 symboles. On ordonne à nou-
veau les symboles de ce nouvel alphabet et on réunit les deux symboles ayant les
plus faibles probabilités en un seul symbole dont la probabilité est la somme des
probabilités d’apparition des deux symboles. On procède ainsi récursivement jus-
qu’à ce qu’il ne reste que deux symboles. On code l’un 0 et l’autre 1, puis on revient
en arrière et on code chaque paire de symboles avant rassemblement en 0 et 1. Afin
de comprendre le codage d’Huffman, le mieux est d’utiliser un exemple. Repre-
nons l’exemple qui avait été utilisé pour le codage de Shannon-Fanno. Soit [S] un
alphabet à 6 symboles [S] = [s1 , s2 , s3 , s4 , s5 , s6 ] tel que les probabilités d’ap-
parition des symboles soient [P ] = [0.30, 0.25, 0.15, 0.15, 0.10, 0.05]. Trouvons
le codage d’Huffman d’un tel alphabet. Pour ce faire construisons l’arbre de la fi-
gure 3.1. Après construction de l’arbre et en procédant de la droite vers la gauche
on trouve les codages des symboles selon les lois s1 → 00, s2 → 10, s3 → 11,

32 TBA1
H. Dedieu Codage de source

0.30 0.30
s1
@ (0) 0.60
@ (0)
0.30 ¡¡(1)
0.25 0.25
s2 (0)
@ 0.40
@ (1)
0.15 0.15 ¡¡(1)
s3

0.15
s4
@ (0)
@
0.10 @
s5 ¡
@(0) 0.15 ¡
@ ¡ (1)
0.05 ¡
s6 ¡(1)

s1 → 00, s2 → 10, s3 → 11, s4 → 010, s5 → 0110, s6 → 0111

F IGURE 3.1 – Codage d’Huffman

s4 → 010, s5 → 0110, s6 → 0111. Un calcul de la longueur moyenne des mots-


code donne ¯l = 2.45.

TBA1 33
Codage de source H. Dedieu

3.4 Algorithme de Lempel-Ziv


Le codage de type Huffman est optimal lorsque l’on peut considérer que les
symboles de source sont statistiquement indépendants. Or ceci est loin d’être le cas
dans la pratique. Soit à coder un texte en français, il est évident que des corrélations
existent entre certaines lettres, un ’q’ aura une probabilité importante d’être suivi
par un ’u’ et une probabilité nulle d’être suivi par un ’w’. On s’aperçoit donc très
vite que le codage de type Huffman est un codage optimal lorsque les symboles de
sources sont "sans mémoire". Dès que des corrélations existent entre des symboles
consécutifs, il faudrait, de façon optimale, afin d’étendre le codage de type Huff-
man, connaître les probabilités jointes pour des blocs de symboles de longueur su-
périeure ou égale à 2. Ceci pose des problèmes pratiques, car on ne connaît pas ces
probabilités a priori. On peut, bien sûr, par estimation d’une très longue séquence
de texte, calculer ces probabilités. Le calcul de l’estimation des probabilités jointes
est toutefois extrêmement onéreux en termes de puissance de calcul. En pratique,
on ne les calcule donc pas.
Une méthode de compression très élégante due à Jacob Ziv et Abraham Lempel
ne nécessitant pas de calculs probabilistes a été découverte en 1977. Cette méthode,
ou des variantes de cette méthode sont utilisées par des programmes de compres-
sion très populaires tels PKZip et WinZip. Les utilitaires sous Unix "compress" et
"uncompress" sont aussi basés sur le même algorithme. La méthode a été améliorée
notamment par Terry Welch sous le nom LZW.
L’idée de base qu’ont suivie Lempel et Ziv est de faire une analyse de la source
de données en constituant un dictionnaire des séquences les plus courtes non encore
rencontrées. Ces séquences sont alors temporairement stockées et forment une base
de mots ayant une position dans un dictionnaire qui se constitue au fur et à mesure
que les séquences sont découvertes. La séquence de source (mot du dictionnaire)
est alors codée sous forme d’un pointeur vers les mots du dictionnaire. Une des
propriétés remarquables de l’algorithme de Lempel-Ziv est qu’il n’est nullement
nécessaire de transmettre le dictionnaire au récepteur, le dictionnaire est lui-même
décodé "on-fly" lorsque le décodeur analyse les données compressées.
3.4.1 Codage de type Lempel-Ziv
Prenons un exemple afin de comprendre le principe de l’algorithme de codage.
Soit à coder la séquence :
000101110010100101
On suppose que les symboles binaires 0 et 1 sont déjà stockés dans le dictionnaire.
Le symbole 0 sera le premier mot du dictionnaire et le symbole 1 en constituera le
second.

34 TBA1
H. Dedieu Codage de source

Il nous faut faire maintenant l’analyse de la séquence, le premier mot différent


de 0 et 1 est 00. Le troisième mot du dictionnaire sera donc 00. Puis viendra 01,
etc ... Sur la base de l’analyse effectuée sur la séquence, le dictionnaire suivant sera
donc constitué 1 :

Position du mot dans le dictionnaire 1 2 3 4 5 6 7 8 9


Mot du dictionnaire 0 1 00 01 011 10 010 100 101

TABLE 3.4 – Constitution du mot du dictionnaire par analyse itérative des sé-
quences les plus courtes non encore rencontrées

Il nous faut maintenant trouver un mécanisme d’indexation intelligent tel qu’on


n’ait pas à transmettre au décodeur les mots du dictionnaire mais que ceux-ci
puissent être aussi itérativement recomposés au cours du décodage. Chaque mot
du dictionnaire va être séparé entre un préfixe et son dernier bit, au lieu de trans-
mettre le préfixe, on va transmettre son numéro d’apparition dans le dictionnaire
(sous forme binaire) plus le dernier bit qui sera appelé bit d’innovation. Le numéro
d’indexation du préfixe permettra de le retrouver ultérieurement au sein des pré-
fixes déjà connus. Pour plus de clarté continuons l’exemple. La séquence que l’on

Pos. du mot dans dict. 1 2 3 4 5 6 7 8 9


Mot du dictionnaire 0 1 00 01 011 10 010 100 101
Num. préfixe - bit d’innov. 1-0 1-1 4-1 2-0 4-0 6-0 6-1
Mots codés 001-0 001-1 100-1 010-0 100-0 110-0 110-1

TABLE 3.5 – Constitution de la séquence codée

enverra au décodeur est donc constituée par la dernière ligne de la table 3.5, i.e.

0010001110010100100011001101

Pour constituer la séquence observons que l’on code 00, le premier élément à trans-
mettre, en remarquant que le préfixe est 0 et le bit d’innovation 0. Par conséquent
00 est constitué du mot dictionnaire numéro 1 suivi du bit d’innovation 0. C’est ce
que nous avons codé 1 − 0. Comme on a 6 numéros de préfixes à transmettre (les
préfixes 7, 8 et 9 ne sont pas utilisés), il faut au moins 3 bits pour coder le préfixe,
on codera 1 − 0 sous la forme 001 − 0. Remarquons par exemple que le neuvième
mot à coder 101 a pour préfixe 10 (mot numéro 6 dans le dictionnaire) et bit d’inno-
vation 1. On le code sous la forme 6 − 1 qui lorsque l’on code le préfixe en binaire
se traduit par 110 − 1 soit 1101.
1. Ce dictionnaire est unique pour la séquence considérée.

TBA1 35
Codage de source H. Dedieu

Si l’on considère la longueur de la séquence codée (7 × 4 = 28) par rapport


à la longueur de la séquence initiale qui était de 18, on constate que l’algorithme
a produit une expansion plutôt qu’une compression. Ce n’est évidemment pas vrai
pour des séquences longues où de nombreuses répétitions et corrélations existent.
Ainsi un algorithme de type Lempel-Ziv compresse des textes anglais avec un rap-
port de compaction de 55% là où un algorithme de type Huffman n’amène qu’à des
rapports de compaction de l’ordre de 43%.

3.4.2 Décodage avec l’algorithme Lempel-Ziv


Observons maintenant le mécanisme du décodage afin de comprendre la nature
itérative du processus de recomposition des mots du dictionnaire qui se fait paral-
lèlement au décodage. Le décodeur avant de recevoir la séquence sait seulement
qu’il dispose de deux mots du dictionnaires 0 et 1. Comme pour le codeur, 0 est le
mot numéro 1 du dictionnaire et 1 est le numéro 2. Le décodeur connaît en outre la
longueur des blocs à décoder, en l’occurrence, 4 bits dans notre exemple précédent.
Le premier bloc que reçoit le décodeur est 0010, il comprend donc que le bit
d’innovation est 0 et qu’il a affaire à un préfixe numéro 001 (en binaire). Le pré-
fixe ainsi indexé est 0 alors que le bit d’innovation était 0, il décode donc 00. Et
il dispose dès maintenant du 3ième mot code du dictionnaire qui dès à présent est
identifié 00. Il traite alors le second bloc de données 0011, il reconnaît le bit d’in-
novation 1 et l’index du préfixe 001 lui permet d’identifier que le premier mot code
est préfixe, il décode donc 01 et constitue 01 comme étant son 4ième mot code. Puis
il reçoit 1001 et reconstitue un index pour le 4ième mot code et un bit d’innovation
1 qui lui permet cette fois de décoder 011, etc ....

3.5 Exercices

Exercice 3.5.1
Soit p la probabilité d’un événement, tracer la valeur de la quantité d’informa-
tion relative à l’événement en fonction de p pour 0 ≤ p ≤ 1.

Exercice 3.5.2
Une source émet aléatoirement un symbole parmi quatre symboles possibles.
Ces quatre symboles ont des probabilités d’occurrence telles que p0 = 0.4, p1 =
0.3, p2 = 0.2 et p3 = 0.1 et sont statistiquement indépendants.
1. Calculer l’information associée à l’émission de chacun de ces 4 symboles.

36 TBA1
H. Dedieu Codage de source

2. Calculer l’entropie de la source.

Exercice 3.5.3
Considérons une source sans mémoire (les symboles émis sont statistiquement
indépendants) dont l’alphabet est constitué par K symboles équiprobables.
1. Quelle est le meilleur codage possible pour une telle source, à longueur fixe
ou variable ? Pourquoi ?
2. Quelle condition doit satisfaire K pour que l’efficacité du codage soit maxi-
male ?

Exercice 3.5.4
Considérez les 4 codes listés dans la table suivante :
Symbole Code I Code II Code III Code IV
s0 0 0 0 00
s1 10 01 01 01
s2 110 001 011 10
s3 1110 0010 110 110
s4 1111 0011 111 111

1. Lesquels de ces codes sont à décodage instantanés ?


2. Calculer l’inégalité de Kraft-McMillan pour chacun de ces codes. Discutez
les résultats en fonctions de ceux obtenus en 1).

Exercice 3.5.5
Considérez des lettres d’un alphabet ayant les probabilités d’apparition telles
que :

Lettre a i l m n o p y
Probabilité 0.1 0.1 0.2 0.1 0.1 0.2 0.1 0.1

TABLE 3.6 – Table associée à l’exercice 3.5.5


Calculez deux codes différents de Huffman pour cet alphabet. Dans un cas,
reportez un symbole combiné dans l’arbre à la position la plus haute, dans l’autre
dans la position la plus basse. Pour chacun des codes obtenus, calculez la longueur
moyenne des mots code ainsi que la variance de la longueur moyenne des mots
code. Lequel de ces deux codages possibles choisirez-vous en pratique ?

TBA1 37
Codage de source H. Dedieu

Exercice 3.5.6
Une source discrète sans mémoire a un alphabet de 7 symboles dont les proba-
bilités d’apparition sont décrites dans la table suivante :

Symbole s0 s1 s2 s3 s4 s5 s6
Probabilité 1/4 1/4 1/8 1/8 1/8 1/16 1/16

Calculer le code de Huffman associé ainsi que son rendement.

Exercice 3.5.7
Considérez une source discrète sans mémoire avec un alphabet {s0 , s1 , s2 }
dont les probabilités d’apparition sont respectivement {0.7, 0.15,0.15} . Appliquez
le codage d’Huffman à cette source et montrez que la longueur moyenne du code
est 1.3 bits/symbole.

Exercice 3.5.8
En considérant la figure 3.2, donnez les codes associés aux symboles A, B, C,
D, E, F, G.

F IGURE 3.2 – Figure liée à l’exercice 3.5.8

38 TBA1
H. Dedieu Codage de source

Exercice 3.5.9
Un calculateur exécute 4 instructions qui sont représentées par les mots code
(00, 01, 10, 11). En supposant que ces instructions sont utilisées de manière indé-
pendante avec des probabilités (1/2, 1/8, 1/8, 1/4), calculez le pourcentage d’éco-
nomie de bits qui pourrait être réalisé avec un codage de source optimal. Trouver
un code de Huffman qui réalise ce codage optimal.

Exercice 3.5.10
Considérez la séquence binaire suivante
011100011100011100011100
Utilisez l’algorithme de Lempel-Ziv pour encoder cette séquence.

Exercice 3.5.11
Une source sans mémoire a un alphabet A tel que

A = {−5, −3, −1, 0, 1, 3, 5}


Les probabilités correspondantes sont

{0.05, 0.1, 0.1, 0.15, 0.05, 0.25, 0.3}


1. Trouver l’entropie de la source.
2. En supposant que la source est quantifiée selon la règle suivante :

Q(−5) = Q(−3) = −4
Q(−1) = Q(0) = Q(1) = 0
Q(3) = Q(5) = 4
trouver l’entropie de la source quantifiée.
3. Proposer un codage optimal de cette source quantifiée.

Exercice 3.5.12
Une source sans mémoire émet des symboles a1 , a2 , a3 , a4 avec des probabi-
lités correspondantes p1 = p2 = 0.3365 et p3 = p4 = 0.1635.
1. Trouver l’entropie de la source.
2. Trouver un code de Huffman pour cette source.
3. Calculer la longueur moyenne du code obtenu.
4. Calculer le rendement du code obtenu.

TBA1 39
Codage de source H. Dedieu

Exercice 3.5.13
Une source sans mémoire a un alphabet de 5 symboles S1 , S2 , S3 , S4 et S5 .
Ces cinq symboles sont équiprobables. Evaluez le rendement d’un code binaire de
longueur constante dans les trois cas suivants :
1. On code chaque symbole.
2. On code des paires de symboles.
3. On code des successions de trois symboles.

Exercice 3.5.14
Une source sans mémoire émet des symboles S1 , S2 , S3 , S4 avec des probabili-
tés p1 = 0.5, p2 = 0.25, p3 = 0.125 et p4 = 0.125.
1. Coder chaque symbole avec un code de longueur fixe et calculer le rendement
du code.
2. Trouver un code à décodage instantané de rendement 100%.

Exercice 3.5.15
Le schéma de la Figure 1 montre un schéma d’automate de Markov. Cet auto-
mate produit un symbole toutes les T s., ce symbole peut être s0 ou s1 . On lit le
schéma de la Figure 3.3 de la manière suivante ; si s0 a été produit à l’instant k.T ,
la probabilité d’obtenir un nouveau s0 à l’instant (k + 1).T est 1/4, alors que la
probabilité d’obtenir s1 à (k + 1).T est alors 3/4. (De tels automates sont utilisés
pour modéliser la production de parole.). On observera qu’une tel automate produit
des données qui sont dépendantes dans le temps. En supposant que l’on code des
séquences de deux symboles consécutifs :
1. Calculer l’entropie de la source constituée par l’automate.
2. Proposer un codage de Huffman des séquences de deux symboles.
3. Calculer l’efficacité du code ainsi créé.

Exercice 3.5.16
On considère une source S1 sans mémoire délivrant des symboles {s0 , s1 , s2 , s3 }
avec des probabilités respectives 1/4, 1/2, 1/16, 3/16. D’autre part on considère
une source S2 sans mémoire délivrant des symboles {t0 , t1 , t2 , t3 } avec des pro-
babilités respectives 1/8, 1/32, 1/64, 53/64. On considère ensuite une source S3
qui délivre aléatoirement soit un symbole de S1 , soit un symbole de S2 à chaque
coup d’horloge ; la probabilité que S1 soit choisie est de 3/4.

40 TBA1
H. Dedieu Codage de source

1|4 3|4

3|4
s0 s1
1|4
F IGURE 3.3 – Automate de Markov

1. Calculer l’entropie de chacune des trois sources S1 , S2 et S3 .


2. Proposer un codage de Huffman des séquences de symboles pour chacune
des trois sources.
3. Calculer l’efficacité des trois codes ainsi créés.

Exercice 3.5.17
Soit une source S1 sans mémoire délivrant des symboles {s0 , s1 , s2 , s3 , s4 }
avec des probabilités respectives 1/16, 1/16, 1/8, 1/4, 1/2. Sans faire appel à
un graphe de type Huffman, proposer un code à décodage instantané qui ait une
efficacité de 100%. Justifier vos choix et expliquez bien pourquoi l’efficacité est de
100%.

Exercice 3.5.18
On considère la séquence suivante que l’on veut encoder par l’algorithme de
Lempel-Ziv.
010110111011110111110111111
On considère que 0 est le premier mot code et que 1 est le second mot code. On
considère d’autre part que les mots code sont numérotés à partir de 1.
1. Calculer la séquence codée par l’algorithme de Lempel-Ziv.
2. Calculer le taux de compression obtenu.
3. Vérifiez que la séquence obtenue est bien juste en procédant au décodage de
la séquence.

TBA1 41
Codage de source H. Dedieu

42 TBA1
4

Codes détecteurs et correcteurs


d’erreur

CONTENU
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . 44
4.2 Préliminaires pour les codes linéaires par blocs . . . . . 44
4.2.1 Champ de Galois CG(2) . . . . . . . . . . . . . . . . . 44
4.2.2 Distance de Hamming . . . . . . . . . . . . . . . . . . 45
4.2.3 Matrice d’éléments binaires . . . . . . . . . . . . . . . 46
4.3 Principe général des codes détecteurs-correcteurs . . . . 48
4.3.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . 48
4.3.2 Capacité de détection d’un code . . . . . . . . . . . . . 49
4.3.3 Capacité de correction d’un code . . . . . . . . . . . . . 50
4.3.4 Rendement d’un code . . . . . . . . . . . . . . . . . . 51
4.4 Codes linéaires par blocs (n, k) . . . . . . . . . . . . . 51
4.4.1 Principe et propriétés . . . . . . . . . . . . . . . . . . . 51
4.4.2 Codes blocs générés par des matrices systématiques . . 53
4.5 Détection d’erreur avec un code linéaire par bloc . . . . 54
4.6 Correction d’erreurs avec les codes blocs linéaires . . . . 56
4.7 Code de Hamming . . . . . . . . . . . . . . . . . . . . 57
4.8 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . 58

Résumé Ce chapitre introduit le principe des codes détecteurs et correcteurs


d’erreurs.

c 2010 HEIG-VD.
°
43
Codes détecteurs et correcteurs H. Dedieu

4.1 Introduction
La probabilité d’erreur d’un système de transmission est une fonction du rapport
Signal à Bruit de la liaison. Pour augmenter ce rapport on est amené à augmenter
la puissance du signal émis. Malheureusement ceci n’est pas toujours possible car
on se heurte très vite à une limitation d’ordre technologique ou économique.
Pour améliorer la qualité de transmission on fait usage du codage de canal
qui consiste à ajouter de la redondance au signal de source. Cette redondance
est ajoutée de manière intelligente de façon à pouvoir détecter et éventuellement
corriger des erreurs. Le codage détecteur et correcteur d’erreur est l’appellation
plus commune du codage de canal. La redondance que l’on ajoute peut être vue
comme une signature que l’on impose sur l’information, cette signature est dyna-
mique dans le sens où elle dépend de l’information. A la réception on vérifie la
signature du messsage, si elle est correcte, on décide qu’il n’y a pas d’erreur de
transmission. Si la signature est incorrecte, on détecte une erreur que l’on peut cor-
riger dans certains cas. Il existe deux grandes familles de codes : les codes par
blocs et les codes convolutionnels. Lorsqu’on utilise des codes par blocs, les bits
de redondance sont calculés à partir des bits d’information provenant du même
bloc. Lorsqu’on utilise des codes convolutionnels, les bits de redondance sont cal-
culés à partir des bits d’information de plusieurs blocs précédant le bloc courant.

4.2 Préliminaires pour les codes linéaires par blocs

4.2.1 Champ de Galois CG(2)


On considèrera un espace vectoriel formé par des vecteurs v = (v1 , v2 , . . . vn )
où les vi sont égaux à 0 où à 1. Ces vecteurs seront désignés dans la suite comme
des n − uples. L’espace vectoriel considéré est un espace vectoriel de dimension n
puisqu’il existe une base orthonormée de n vecteurs (1, 0, . . . 0), (0, 1, 0, . . . 0),
. . ., (0, 0, . . . , 0, 1). Le produit scalaire de deux vecteurs u et v se définit comme
M M M
u.v = u1 v1 u2 v 2 u3 v3 . . . u n vn (4.1)
L
où le symbole est l’addition modulo 2 , i.e.
L
0 0=0
L
0 1=1
L
1 0=1
L
1 1=0

4.2.1.1 Exemple
L L L L
Soit u = (1, 0, 1, 0, 1) et v = (1, 1, 1, 1, 0) on a u.v = 1 0 1 0 0=
0, d’autre part ||u|| = 3 et ||v|| = 4.

44 TBA1
H. Dedieu Codes détecteurs et correcteurs

4.2.2 Distance de Hamming


La distance de Hamming entre deux vecteurs u et v se définit comme le nombre
de positions où les bits de u et de v diffèrent.

4.2.2.1 Exemple
Soit u = (1, 0, 1, 0, 1) et v = (1, 1, 1, 1, 0) on a d(u, v) = 3.

TBA1 45
Codes détecteurs et correcteurs H. Dedieu

4.2.3 Matrice d’éléments binaires


On définira par G(n, k) une matrice d’éléments binaires à k lignes et n co-
lonnes avec k < n dont les éléments appartiennent à CG(2).

4.2.3.1 Exemple
à !
0 1 0 1
G(4, 2) =
1 1 0 1

La matrice G(n, k) est une matrice de dimension k × n qui fera correspondre à un


k − uple un n − uple, i.e
(u1 , u2 , . . . uk ) G(n, k) = (v1 , v2 , . . . , vk , vk+1 , . . . vn )
1×k k×n 1×n

La matrice G(n, k) sera appelée dans la suite matrice génératrice d’un code (n, k).

4.2.3.2 Exemple
à !
0 1 0 1
(1, 0) = (0, 1, 0, 1)
1 1 0 1

Propriété 1 La matrice G(n, k) engendre un sous-espace vectoriel de dimension


k
Nous pouvons aisément vérifier cette propriété sur l’exemple précédent où l’on fait
correspondre à des 2 − uples des 4 − uples. Les 2 − uples forment un espace
vectoriel de dimension 2 puisqu’ils peuvent tous s’exprimer en fonction de la base
à 2 éléments (0, 1) et (1, 0) car

(0, 0) = 0(0, 1) = 0(1, 0)


(0, 1) = 1(0, 1)
(1, 0) = 1(1, 0)
(1, 1) = 1(0, 1) + 1(1, 0)

Les 4 − uples engendrés par G(4, 2) ne forment pas un espace vectoriel de dimen-
sion 4 mais un espace vectoriel de dimension 2. Vérifions-le
à !
0 1 0 1
(0, 0) = (0, 0, 0, 0)
1 1 0 1

à !
0 1 0 1
(0, 1) = (1, 1, 0, 1)
1 1 0 1

46 TBA1
H. Dedieu Codes détecteurs et correcteurs

à !
0 1 0 1
(1, 0) = (0, 1, 0, 1)
1 1 0 1

à !
0 1 0 1
(1, 1) = (1, 0, 0, 0)
1 1 0 1

On vérifie aisément que les 4−uples générés ne sont pas linéairement indépendants
puisque 2 d’entre-eux peuvent servir de base ; (1, 1, 0, 1) et (0, 1, 0, 1) forment
une base puisque

(0, 0, 0, 0) = 0 (1, 1, 0, 1) = 0 (0, 1, 0, 1)


(1, 1, 0, 1) = 1 (1, 1, 0, 1)
(0, 1, 0, 1) = 1 (0, 1, 0, 1)
(1, 0, 0, 0) = 1 (1, 1, 0, 1) + 1 (0, 1, 0, 1)

Propriété 2 Soit G0 une matrice engendrée par combinaison linéaire des lignes de
G, le sous-espace vectoriel engendré par G0 est le même que celui engendré par G.

Pour s’en convaincre soient les matrices G et G0 suivantes


à ! à !
0 1 0 1 0 0 1 0 1
G= G =
1 1 0 1 1 0 0 0

La première ligne de G0 est identique à la premiere ligne de G tandis que la deuxième


ligne de G0 résulte de l’addition des 2 lignes de G. On s’aperçoit maintenant qu’en
appliquant G0 à tous les 2 − uples on obtient les mêmes 4 − uples d’arrivée que
par G, i.e à !
0 1 0 1
(0, 0) = (0, 0, 0, 0)
1 0 0 0

à !
0 1 0 1
(0, 1) = (1, 0, 0, 0)
1 0 0 0

à !
0 1 0 1
(1, 0) = (0, 1, 0, 1)
1 0 0 0

à !
0 1 0 1
(1, 1) = (1, 1, 0, 1)
1 0 0 0

TBA1 47
Codes détecteurs et correcteurs H. Dedieu

Propriété 3 Par combinaison des lignes (et éventuellement des colonnes) de G, on


peut toujours convertir G sous la forme canonique systématique

GS = ( Ik , P
|{z} )
|{z} (4.2)
k×k k×n−k

avec Ik matrice identité k × k, et où P est une matrice k × n − k.


à ! à ! à !
0 1 0 1 0 1 1 0 1 1 0 0 0
G= −→ G = −→ GS =
1 1 0 1 0 1 0 1 0 1 0 1

La transformation a eu lieu en des étapes, G0 est d’abord fabriquée par échange des
lignes de G. GS est constitué en gardant la deuxième ligne de G0 puis en addition-
nant les deux lignes de G0 pour former la première lignes de GS .
Propriété 4 Soit GS = (Ik P ), il existe une matrice
³ ´
HS = P T , In−k (4.3)
T
HS = ( P
|{z} , In−k )
| {z } (4.4)
n−k×k n−k×n−k
telle que
GS HST = 0 (4.5)
Démonstration :
à !
P M
GS HST = (Ik , P ) =P P =0
In−k

4.3 Principe général des codes détecteurs-correcteurs

4.3.1 Généralités
Supposons une source qui fournit de k symboles binaires (k − uples)

X = (x1 , x2 , . . . xk ) avec xi = 0 ou 1 pour i = 1 . . . n

Il y a donc 2k messages X possibles. Pour réduire les erreurs de transmissions on


ajoute de la redondance au message en remplaçant les 2k mots à k bits par 2k mots
à n bits, i.e

X = (x1 , x2 , . . . xk ) −→ Y = (y1 , y2 , . . . yk , yk+1 , . . . , yn )

48 TBA1
H. Dedieu Codes détecteurs et correcteurs

avec n > k. BIEN QU’IL Y AIT 2n mots possibles pour Y ON N’UTILISE AU


CODAGE QUE 2k MOTS PARMI les 2n mots possibles. On parle de code (n, k)
où k est le nombre de bits d’information et n − k est le nombre de bits de contrôle.
Le code Y fait apparaître des codes possibles et des codes impossibles (Cf. Figure
4.1). Dès lors, si au cours d’une transmission, le nombre d’erreur générées à la
réception d’un mot Y fait glisser le code Y d’un code possible à un code impossible,
on sait que le mot reçu n’est pas correct, il y a détection d’erreur. On pourra aussi
dans certains cas corriger le faux Y en le remplaçant par le Y possible le plus
proche. Toute l’intelligence des codes détecteurs correcteurs sera contenue dans la
manière d’affecter les bits de contrôle en fonction des bits d’information.
' $
' $
x -x
x
XXX x 1x
³³
x
XXX
x ³³³ - x
XXX ³ x
XXX ³³
XX ³³³ x x
xPP x XXX
³ -
x PP ³ ³³ XX
X -x
PP ³ X XX
P ³³ zx
³ ³³PPP x
³ ³³ PP x
³ P PP x x x
³³ PP
x³ PP -
x PP x
PP x
2k P
q x
& % x 2n
& %
{X} {Y }

F IGURE 4.1 – Correspondance entre les X et les Y

4.3.2 Capacité de détection d’un code


Si le mot transmis est entaché d’une erreur et s’il est tel que le mot reçu n’appar-
tienne pas au code alors la détection d’erreur est immédiate. La question qui vient
immédiatement à l’esprit est de savoir combien d’erreurs binaires on peut détecter
au plus. Soit dmin la plus petite distance qui existe entre deux mots du code Y et
soit q le nombre d’erreurs que l’on peut faire tel que le code possible devienne un
code impossible. De façon claire
q = dmin − 1
car dès que q atteint dmin il y a possibilité de passer d’un code possible à un autre
code possible tout en ayant fait dmin erreurs. D’autre part tant que q est inférieur à
dmin il est certain que le code reçu est un code impossible. La quantité q = dmin −1
est appelée capacité de détection d’un code.

TBA1 49
Codes détecteurs et correcteurs H. Dedieu

(0, 1) (1, 1)
z

z
(0, 0) (1, 0)

z Codes possibles

F IGURE 4.2 – Exemple de code (2, 1)

4.3.2.1 Exemple
Soit le code (2, 1) tel que 0 → (0, 0) et 1 → (1, 1). Un tel code est schématisé
à la figure 4.2 Un seul bit d’erreur fait passer d’un code possible à un code impos-
sible. Deux bits d’erreurs font passer d’un code possible à un autre code possible
et donc on ne peut évidemment détecter deux bits d’erreurs. La distance minimum
entre deux mots du code est dmin = 2 et on vérifie bien que q = dmin − 1 = 1 est
bien le nombre d’erreurs détectables.

4.3.2.2 Exemple
Soit le code (3, 1) tel que 0 → (0, 0, 0) et 1 → (1, 1, 1). Un tel code est
schématisé à la figure 4.3. Clairement la capacité de détection d’un tel code est
q = 2.

4.3.3 Capacité de correction d’un code


On aborde la question de savoir si lorsqu’on a détecté une erreur, il est possible
de la corriger. Et d’abord, sur quel principe devrait-on la corriger ? Sur la base du
mot possible le plus proche du mot impossible que l’on a reçu. (Le plus proche
au sens de la distance de Hamming). Voyons d’abord sur les exemples que nous
venons de considérer. Dans le code (2, 1) de la figure 4.2 on voit que lorsque l’on
est en erreur, on ne peut décider du mot possible le plus proche puisque les deux
mots possibles sont tous deux à une distance de 1. Dès lors il est clair que la capacité
de correction du code considéré est 0. Avec le code (3, 1), on voit qu’une erreur
simple peut être corrigée par le fait que l’on reste plus proche du mot possible
juste que du mot possible faux. Si l’on fait deux erreurs simples alors le mot reçu
est plus proche du mot possible faux que de celui qui était juste, si l’on corrige,

50 TBA1
H. Dedieu Codes détecteurs et correcteurs

@ @
@ @
@ @
@
@ @
@z

(1, 1, 1)
z
@ @
(0, 0,@ 0) @
@ @
@
@ @
@

z Codes possibles

F IGURE 4.3 – Exemple de code (3, 1)

on corrigera faussement. La capacité de correction du code considéré est donc 1.


Raisonnons maintenant de façon générale. Posons comme t le nombre d’erreurs
qui sont telles que l’on reste toujours plus proche du mot possible originel que de
tout autre mot possible. Il faut donc que t soit plus petit que la moitié de la distance
minimale entre deux points du code. Dès lors
2t ≤ dmin − 1 (4.6)
t est appelé capacité de correction du code .

4.3.4 Rendement d’un code


On appelle rendement d’un code le rapport entre le nombre de bits d’informa-
tion et le nombre de bits par bloc.
k
η= (4.7)
n

4.4 Codes linéaires par blocs (n, k)

4.4.1 Principe et propriétés


On engendre ces codes à l’aide de matrices génératrices (n, k). Comme nous
l’avons vu ces matrices génératrices sont des matrices à k lignes de n − uples li-
néairement indépendants (n > k). Ces matrices vont nous permettre de transformer
des blocs de k bits en blocs de n bits.

TBA1 51
Codes détecteurs et correcteurs H. Dedieu

4.4.1.1 Exemple
Soit une matrice génératrice (7, 3), i.e.
 
1 1 1 0 1 0 0
 
G= 0 1 1 1 0 1 1 
0 0 1 1 1 0 0

Cette matrice transforme donc des blocs de 3 bits en blocs de 7 bits. Comme il y a
23 = 8 messages possibles, le code sera formé des 8 blocs de 7 bits suivants

(0 0 0) G = (0 0 0 0 0 0 0)
(0 0 1) G = (0 0 1 1 1 0 0)
(0 1 0) G = (0 1 1 1 0 1 1)
(0 1 1) G = (0 1 0 0 1 1 1)
(1 0 0) G = (1 1 1 0 1 0 0)
(1 0 1) G = (1 1 0 1 0 0 0)
(1 1 0) G = (1 0 0 1 1 1 1)
(1 1 1) G = (1 0 1 0 0 1 1)

Propriété 1 Toute combinaison linéaire des mots du code est encore un mot du
code.

La démonstration de cette propriété est quasi-évidente. Soit u et v deux mots codes


(2 n − uples). Une combinaison linéaire de ces 2 mots codes s’écrit

s = λu + γv

Or u et v étant des mots codes, ils sont issus de k − uples et s’écrivent u = ud G et


v = vd G où ud et vd sont deux des 2k k − uples possibles. Dès lors
³ ´
s = λud G + γvd G = λud + γvd G

Or dans l’espace des k − uples, la somme de 2 k − uples est encore un k − uple


puisque l’addition est modulo-2. De même la combinaison linéaire de 2 k − uples
est encore un k − uple. (En fait un champ de Galois est tel que muni de ces
opérations
³ d’addition
´ et de multiplication on ne sorte jamais du champ). Donc
λud + γvd est encore un k − uple, appelons-le wd , d’où

s = wd G

D’où l’on tire que s est bien un mot code.

Propriété 2 La distance minimale entre deux mots du code est égale au poids du
vecteur le plus faible du code (en exceptant le vecteur nul).

52 TBA1
H. Dedieu Codes détecteurs et correcteurs

Cette propriété se démontre à partir de la précédente. Comme toute combinaison


linéaire des mots du code est encore un mot du code, la différence de 2 mots du
code (qui est donc aussi une combinaison linéaire) est encore un mot du code. Par
conséquent les différences entre mots du code sont des mots de code. Il s’ensuit
que la distance dmin entre 2 mots du code est le vecteur de moindre poids dans tous
les mots codes (excepté le vecteur nul qui est la différence entre deux mêmes mots
du code).

4.4.1.2 Exemple
Soient les 8 mots codes définis dans l’exemple précédent. Trouver la distance
minimale entre les mots du code. En déduire la capacité de détection et de correc-
tion du code. On voit donc que dmin = 3. Par suite la capacité de détection est

u1 = (0 0 0 0 0 0 0) ||u1 || = 0
u2 = (0 0 1 1 1 0 0) ||u2 || = 3
u3 = (0 1 1 1 0 1 1) ||u3 || = 5
u4 = (0 1 0 0 1 1 1) ||u4 || = 4
u5 = (1 1 1 0 1 0 0) ||u5 || = 4
u6 = (1 1 0 1 0 0 0) ||u6 || = 3
u7 = (1 0 0 1 1 1 1) ||u7 || = 5
u8 = (1 0 1 0 0 1 1) ||u8 || = 4

dmin − 1 = 2. La capacité de correction est telle que 2t = dmin − 1, d’où l’on


déduit que l’on peut corriger une seule erreur simple.

4.4.2 Codes blocs générés par des matrices systématiques


On écrit en général les matrices génératrices sous forme systématique, ceci dans
le but que les k bits d’en-tête du bloc de codage soient exactement les k bits d’in-
formation. En effet, la matrice systématique s’écrivant sous la forme (Ik , P ) où Ik
est la matrice identité k × k, les k premiers bits ne sont pas affectés par GS

4.4.2.1 Exemple
   
1 1 1 0 1 0 0 1 0 0 1 1 1 1
   
G =  0 1 1 1 0 1 1  −→ GS =  0 1 0 0 1 1 1 
0 0 1 1 1 0 0 0 0 1 1 1 0 0
Dans cet exemple, la première ligne de GS est la somme des 2 premières lignes
de G. La deuxième ligne de GS est la somme de la deuxième et de la troisième
ligne de G. La troisième ligne de GS est la troisième ligne de G.

TBA1 53
Codes détecteurs et correcteurs H. Dedieu

Soit la correspondance

(x1 , x2 , x3 ) −→ (y1 , y2 , y3 , y4 , y5 , y6 , y7 ) = (x1 , x2 , x3 )GS

On voit que 
y1 = x1
y2 = x2 
 bits d0 inf ormation
y3 = x3

y4 = x1 + x3
y5 = x1 + x2 + x3 

 bits de contrôle
y6 = x1 + x2 
y7 = x1 + x2
L’idée sous-jacente à la détection d’erreur, est donc de vérifier à la réception que
les relations de contrôle sont bien remplies. Si elles le sont, on conclut à la non
présence d’erreurs. On notera toutefois que pour un nombre d’erreurs supérieur à
la capacité de détection du code on peut conclure faussement à la non présence
d’erreurs.

4.5 Détection d’erreur avec un code linéaire par bloc


Le principe de détection d’erreur est simple. On a des bits d’information et des
bits de contrôle. Les bits de contrôle sont calculés à partir des bits d’information
selon une loi d’encodage (matrice génératrice) a priori connue par le récepteur. A
la réception, on fait la vérification que les bits de contrôle et les bits d’information
sont bien en correspondance au travers de la loi d’encodage. Voyons comment cela
se traduit d’une manière algébrique. Le message transmis à partir de l’information
x est
y = xGS (4.8)
Or on sait qu’il existe une matrice dite de contrôle HS , déduite de GS selon l’équa-
tion (4.5) telle que
GS HST = 0 (4.9)
Par conséquent, si l’on multiplie le message y par HS on obtient

yHST = xGS HST = 0 (4.10)

La technique de détection est donc simple, le message reçu est multiplié par la
matrice HST , si le résultat est nul, on décide que le mot transmis ne contient pas
d’erreur. Il est toutefois évident que si le nombre d’erreurs est supérieur à la ca-
pacité de détection du code, on pourra se retrouver dans un cas ou c’est un code

54 TBA1
H. Dedieu Codes détecteurs et correcteurs

possible différent du code possible émis qui est reçu, la détection d’erreur est dans
ce cas inopérante.
Admettons que x soit le mot à coder, et que y = xGS soit son code. Si des
erreurs se produisent pendant la transmission c’est un mot d’erreur e qui se rajoute
à y si bien que l’on reçoit effectivement

ŷ = y + e (4.11)

Lorsqu’on reçoit ŷ, on multiplie donc par HS , i.e.

s = ŷHST = yHST + eHST = eHST


| {z } (4.12)
0

s est appelé syndrome pour la raison qu’il détecte une anomalie de transmission.
En effet, s’il n’y a pas d’erreur de transmission e = 0 et d’après (4.12) s = 0.
4.5.0.2 Exemple

Soit GS la matrice systématique


 
1 0 0 1 1 1 1
 
GS =  0 1 0 0 1 1 1 
0 0 1 1 1 0 0

calculer le syndrome associé à GS . Construisons HS selon l’équation ( 4.4), il vient


 
1 0 1 1 0 0 0
 1 1 1 0 1 0 0 
 
HS =  
 1 1 0 0 0 1 0 
1 1 0 0 0 0 1

Le syndrome s s’écrit donc


 
1 1 1 1
 


0 1 1 1 

 T
  ŷ1 + ŷ3 + ŷ4
 1 1 0 0   ŷ
T    1 + ŷ2 + ŷ3 + ŷ5 

s = yHS = (ŷ1 , ŷ2 , ŷ3 , ŷ4 , ŷ5 , ŷ6 , ŷ7 )  1 0 0 0 = 
   ŷ1 + ŷ2 + ŷ6 
 0 1 0 0 
  ŷ1 + ŷ2 + ŷ7
 0 0 1 0 
 
0 0 0 1
(4.13)

TBA1 55
Codes détecteurs et correcteurs H. Dedieu

4.5.0.3 Remarque :

Le même exemple avait été traité précédemment et on avait vu que les bits de
contrôle s’écrivaient au codage

y4 = x1 + x3 = y1 + y3
y5 = x1 + x2 + x3 = y1 + y2 + y3
(4.14)
y6 = x1 + x2 = y1 + y2
y7 = x1 + x2 = y1 + y2

On vérifiera qu’il n’y a aucune contradiction entre (4.13) et (4.14). En effet en


addition modulo 2 on a forcément y4 + y4 = 0, y5 + y5 = 0, etc. en somme que
l’équation (4.14) est équivalente à

y1 + y3 + y4 = 0
y1 + y2 + y3 + y5 = 0
(4.15)
y1 + y2 + y6 = 0
y1 + y2 + y7 = 0

donc la relation de décodage des erreurs (4.13) est bien équivalente à (4.15) quand
s = 0.

4.6 Correction d’erreurs avec les codes blocs linéaires


Soit e le vecteur d’erreur lors de la transmission, i.e

e = (e1 , e2 , . . . , en ) (4.16)

Lorsque l’on calcule le syndrome par l’équation (4.12), il vient

s = e1 h1 + e2 h2 + . . . + en hn (4.17)

où les hi sont les vecteurs colonnes de HS . On remarque que le syndrome est une
combinaison linéaire des n colonnes de la matrice HS . Cette relation peut être
utilisée pour corriger le mot reçu s’il est possible de retrouver de manière univoque
les coefficients ei qui vérifient (4.17). On remarque ainsi que si les n colonnes de
HS sont toutes distinctes et non nulles, un code linéaire peut corriger toutes les
erreurs simples. En effet une seule erreur à la kième position produit un syndrome
s = hk . Par conséquent si toutes les colonnes de HS sont distinctes, l’erreur peut
être localisée.

56 TBA1
H. Dedieu Codes détecteurs et correcteurs

4.6.0.4 Exemple
Supposons dans l’exemple précédent que s = (0, 1, 0, 0). On constate alors
que s est la cinquième colonne de HS , d’où l’on déduit que e5 = 1 et donc
e = (0, 0, 0, 0, 1, 0, 0). Le mot reçu peut être corrigé en retranchant l’erreur,
i.e. y = ŷ + e (On rappelle qu’en addition modulo 2, l’addition est équivalente à la
soustraction.)

4.7 Code de Hamming


On ne s’intéresse ici qu’aux codes linéaires corrigeant toutes les erreurs simples
(dmin = 3). En vue de maximiser le rendement η = nk , on peut se demander quelle
est la valeur maximale n des mots de code corrigeant toute erreur simple si le
nombre de bits de contrôle n − k est fixé. Comme les vecteurs colonnes de la
matrice HS sont des n − kuples, on peut en former 2n−k − 1 au plus qui soient tous
non nuls et distincts. On a vu précédemment qu’un code bloc peut corriger toute
erreur simple si les n colonnes sont non nulles et distinctes. Il faut donc que

n ≤ 2n−k − 1 (4.18)

et la longueur maximale des mots est atteinte lorsque les deux membres de cette in-
égalité sont égaux. Le code est alors un code de Hamming. Le tableau suivant donne
quelques-uns des codes de Hamming et leurs rendements : Un code de Hamming

n−k 2 3 4 5 6 7
n 3 7 15 31 63 127
k 1 4 11 26 57 120
η 0.333 0.571 0.733 0.839 0.905 0.945

TABLE 4.1 – Codes de Hamming et rendements associés

présente une matrice de contrôle H (non systématique) où la colonne hi est la re-


présentation binaire du nombre i. D’autre part les bits de contrôle sont fixés aux
positions 2i . Par exemple pour le code (7, 4) on a
 
0 0 0 1 1 1 1
H= 0 1 1 0 0 1 1 


1 0 1 0 1 0 1

La détection d’erreur simple devient alors aisément implémentable puisque une


erreur à la position i va être signalée par la valeur du syndrome. Par exemple si

TBA1 57
Codes détecteurs et correcteurs H. Dedieu

s = (1, 0, 1) on sait que l’erreur s’est produite à la position 5. A partir de H on


calcule la matrice génératrice. Pour la matrice H(7, 4) on trouverait
 
1 1 1 0 0 0 0
 1 0 0 1 1 0 0 
 
G= 
 0 1 0 1 0 1 0 
1 1 0 1 0 0 1

4.8 Exercices
Problème 4.8.1
Soit une code linéaire dont les mots code sont engendrés par la matrice généra-
trice G suivante à !
1 1 0 1
G=
0 1 1 0
1. Donner le nombre de bits d’information et le nombre de bits par bloc (par
mot-code) pour un tel code.
2. Donner l’ensemble des mots code générés par G.
3. Quelle est la distance minimale entre deux mots du code ?
4. Quelle est la capacité de détection du code ?
5. Quelle est la capacité de correction du code ?
6. On décide de mettre G sous sa forme systématique GS , trouver GS .
7. Quel est, de façon générale, l’intérêt de mettre un code sous sa forme systé-
matique ?
8. Donner l’ensemble des mots-code générés par GS . Cet ensemble est-il diffé-
rent de l’ensemble généré par G ? Si oui ou non, dites pourquoi.

Problème 4.8.2
En observant les mots transitant au travers d’un canal de communication, vous
observez que l’on retrouve toujours les 4 mots suivants

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

58 TBA1
H. Dedieu Codes détecteurs et correcteurs

1. Votre sagacité vous incite à penser qu’un code bloc (6, 2) a été utilisé. Pour-
quoi ? Pourquoi le code utilisé est-il linéaire ?
2. Donner la matrice systématique GS d’un tel code.
3. Quelle est la capacité de détection du code ?
4. Quelle est la capacité de correction du code ?
5. En écrivant
[y1 , y2 , y3 , y4 , y5 , y6 ] = [x1 , x2 ] GS
donner toutes les lois de calcul des yi pour i = 1 . . . 6. Prenez soin de calculer
exactement les bits de contrôle, y3 , y4 , y5 et y6 .
6. Calculez à partir de la matrice génératrice GS la matrice de contrôle HS d’un
tel code.
7. En écrivant la relation habituelle de contrôle

[y1 , y2 , y3 , y4 , y5 , y6 ] HST = 0

montrez que vous arrivez aux 4 relations de contrôle que vous aviez découvert
en 5).
8. Vous recevez le mot 111111 que vaut le syndrome ?
9. En étudiant le syndrome (obtenu précédemment) et en supposant qu’une er-
reur simple se soit produite, à quelle position du mot-code s’est produite
l’erreur ? Corrigez le mot code. En observant les mots-code possibles, dites
si votre bon sens vous indiquerait le même résultat que l’algèbre des codes
blocs linéaires.

Problème 4.8.3
On décide de construire un code bloc linéaire, non pas à partir de sa matrice
génératrice G mais à partir de sa matrice de contrôle H. Par exemple on décide
qu’un code (7, 4) sera formé d’une matrice H sous la forme
 
0 0 0 1 1 1 1
H= 
 0 1 1 0 0 1 1 
1 0 1 0 1 0 1

L’idée sous-jacente est que chaque colonne de la matrice est "codée" par des nombres
croissants 1, 2, 3, . . . 7
1. Quel pourrait être à votre avis l’utilité pratique d’une telle matrice en cas
d’une erreur simple lorsqu’on calcule le syndrome ? On voudrait calculer la
matrice génératrice correspondant à H. On décide pour ce faire de ne pas tra-
vailler avec une matrice G systématique et de mettre tous les bits de contrôle

TBA1 59
Codes détecteurs et correcteurs H. Dedieu

à des positions qui soient des puissances de 2. En somme que si l’on doit
coder
x = [x1 , x2 , x3 , x4 ]
on transmette
y = [y1 , y2 , x1 , y3 , x2 , x3 , x4 ]
(Les bits de contrôle sont aux positions 20 = 1, 2, 4)
2. A partir de la relation de contrôle standard

yH T = 0

déduire les 3 relations de contrôle qui gèrent les yi pour i = 1 . . . 3


3. Déduire de la question précédente la matrice génératrice G.
4. On reçoit 1101000 que vaut le syndrome ?
5. Déduire la position de l’erreur d’après le syndrome si l’on suppose une erreur
simple.

60 TBA1
5

Détection et correction d’erreur par


codes polynômiaux cycliques

CONTENU
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . 62
5.2 Propriétés fondamentales des codes cycliques . . . . . . 62
5.3 Encodage d’un code cyclique (n, k) sous forme systé-
matique . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.4 Décodage d’un code cyclique (n, k) . . . . . . . . . . . 66
5.5 Réalisation d’un encodage de code cyclique . . . . . . . 67
5.5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . 67
5.5.2 Préliminaires . . . . . . . . . . . . . . . . . . . . . . . 67
5.5.3 Circuit de division . . . . . . . . . . . . . . . . . . . . 68
5.5.4 Codeur d’un code cyclique . . . . . . . . . . . . . . . . 70
5.5.5 Réalisation matérielle du décodage d’un code cyclique
systématique . . . . . . . . . . . . . . . . . . . . . . . 71
5.6 Propriétés des codes polynômiaux (cycliques ou non) . . 72
5.7 Quelques polynômes générateurs normalisés . . . . . . . 73
5.7.1 Le code CCITT V.41 . . . . . . . . . . . . . . . . . . . 73
5.7.2 Le code CRC-16 . . . . . . . . . . . . . . . . . . . . . 74
5.7.3 Le code CRC-12 . . . . . . . . . . . . . . . . . . . . . 74
5.7.4 Le code ARPA . . . . . . . . . . . . . . . . . . . . . . 74
5.7.5 Le code ETHERNET . . . . . . . . . . . . . . . . . . . 74
5.8 Codes cycliques BCH . . . . . . . . . . . . . . . . . . . 75
5.8.1 Description des codes BCH . . . . . . . . . . . . . . . 75
5.9 Eléments théoriques nécessaires au développement des
codes BCH . . . . . . . . . . . . . . . . . . . . . . . . 76
5.9.1 Construction des champs de Galois CG(2m ) . . . . . . 76

c 2010 HEIG-VD.
°
61
Codes polynômiaux cycliques H. Dedieu

5.9.2 Propriétés des champs de Galois CG(2m ) . . . . . . . . 80


5.9.3 Construction des codes BCH . . . . . . . . . . . . . . . 82
5.9.4 Exemple de construction de code BCH . . . . . . . . . 83
5.9.5 Calcul du syndrome d’un code BCH . . . . . . . . . . . 84
5.9.6 Décodage d’un code BCH . . . . . . . . . . . . . . . . 87
5.10 Codes de Reed-Solomon . . . . . . . . . . . . . . . . . 87
5.11 Quelques codes cycliques remarquables . . . . . . . . . 88
5.11.1 Le code de Golay . . . . . . . . . . . . . . . . . . . . . 88
5.11.2 Les codes de Fire . . . . . . . . . . . . . . . . . . . . . 89
5.12 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . 91

5.1 Introduction
Les codes polynômiaux sont des codes linéaires par blocs qui ont une impor-
tance particulière en téléinformatique où ils sont utilisés pour la détection d’erreur.
Ils présentent l’avantage de s’accommoder d’une longueur variable des mots d’in-
formation et ont une bonne capacité de détection des salves d’erreur. Les codes
cycliques forment une importante sous-classe des codes polynômiaux. Un fait re-
marquable est que la plupart des codes blocs importants connus peuvent être re-
formulés en tant que codes blocs cycliques ou apparentés. Ces codes possèdent
des propriétés algébriques qui simplifient les opérations de codage et de décodage.
Nous aborderons les principales propriétés des codes cycliques et donnerons un
aperçu des codes cycliques les plus remarquables, les codes BCH.
Définition 1 Par définition un code linéaire (n, k) est dit code cyclique si tout
décalage cyclique d’un mot code est encore un mot code.

5.1.0.5 Exemple
On montrera dans la suite qu’un code cyclique (4, 2) est de la forme telle que
définie par la table 5.1. On constate bien que tout décalage cyclique de 0000 en-
gendre 0000, tout décalage cyclique de 1111 engendre 1111, tout décalage cyclique
de 0101 engendre soit 1010, soit 0101.

5.2 Propriétés fondamentales des codes cycliques


Afin de développer les propriétés algébriques des codes cycliques, on les traite
dans la suite comme des polynômes, ainsi à un n-uple (vn−1 , vn−2 , vn−3 , . . . , v0 )

62 TBA1
H. Dedieu Codes polynômiaux cycliques

Message → Mot Code


00 → 0000
01 → 0101
10 → 1010
11 → 1111

TABLE 5.1 – Code cyclique (4, 2)

on fera correspondre le polynôme

(vn−1 , vn−2 , vn−3 , . . . , v0 ) −→ v0 + v1 X + v2 X 2 + . . . + vn−1 X n−1

Propriété 1 Le code polynomial non nul de degré minimal d’un code cyclique
(n, k) est de degré n − k et il s’écrit sous la forme

g(X) = 1 + g1 X + g2 X 2 + . . . + gn−k−1 X n−k−1 + X n−k (5.1)

5.2.0.6 Exemple
Pour le code cyclique (4, 2) défini à la table 5.1, le code polynomial non nul de
degré minimal correspond au code 0101 et s’écrit donc 0X 3 + 1X 2 + 0X + 1 =
1 + X 2 qui est bien de degré 4 − 2 = 2

Propriété 2 Le code polynomial non nul de degré minimal d’un code cyclique
(n, k) divise le polynôme 1 + X n

5.2.0.7 Exemple
Pour le code cyclique (4, 2) défini à la table 5.1, le code polynomial non nul de
degré minimal 1 + X 2 divise bien 1 + X 4 . En effet

(1 + X 2 )(1 + X 2 ) = 1 + 2X 2 + X 4 = 1 + X 4 + (1 + 1)X 2 = 1 + X 4

(On rappelle que les additions se font modulo 2)

Propriété 3 Si g(X) est un polynôme de degré n − k et divise 1 + X n , alors


g(X) engendre un code cyclique (n, k), g(X) est appelé polynôme générateur .
Afin d’engendrer le code on multiplie les polynômes correspondant aux messages
d’information par le polynôme générateur.
Cette propriété est très importante puisqu’elle indique comment générer un code
cyclique.

TBA1 63
Codes polynômiaux cycliques H. Dedieu

5.2.0.8 Exemple
Soit à générer le code cyclique (4, 2). Ce code cyclique existera si l’on peut
trouver un polynôme de degré 4 − 2 = 2 qui divise 1 + X 4 . Or un tel polynôme
existe, il s’agit de 1 + X 2 . Pour générer le code, on opère suivant le principe donné
par la propriété précédente ; ce principe est illustré à la table 5.2.

Message Poly. message Poly. générateur × Poly. message Résultat Mot Code
00 0 (1 + X 2 )0 0 0000
01 1 (1 + X 2 )1 X2 + 1 0101
10 X (1 + X 2 )X X3 + X 1010
11 X +1 (1 + X 2 )(X + 1) X3 + X2 + X + 1 1111

TABLE 5.2 – Code cyclique (4, 2)

Propriété 4 Les k décalages cycliques du mot code correspondant au polynôme


non nul de degré minimal forment une base du code.

5.2.0.9 Exemple
Pour le code cyclique (4, 2) défini à la table 5.1, le code polynomial non nul de
degré minimal est (1 + X 2 ) auquel correspond le mot code 0101. Les 2 décalages
cycliques du code sont 1010 et 0101 qui engendrent bien une base du code, en
effet 0000 = 0 × 1010 = 0 × 0101, 1010 = 1 × 1010, 0101 = 1 × 0101 et
1111 = 1 × 0101 + 1 × 1010.

5.3 Encodage d’un code cyclique (n, k) sous forme systéma-


tique
Lorsqu’on doit encoder un message d’information, i.e. un k-uple (ik−1 , . . . , i0 )
on a vu que cela consistait à multiplier le polynôme i0 + i1 X + . . . + ik−1 X k−1 par
le polynôme générateur g(X), puis à retrouver les bits du mot code associé au
polynôme produit. En effectuant un tel produit, les bits d’information sont affectés
par le codage et dans la plupart des cas, le code obtenu n’est pas systématique. Afin
d’obtenir un code systématique on opère de la façon suivante.
On multiplie le polynôme i(X) du message d’information par X n−k , i.e.

i(X) −→ X n−k i(X) (5.2)

64 TBA1
H. Dedieu Codes polynômiaux cycliques

Remarquons que le polynôme X n−k i(X) a ses monômes qui s’étendent de X n−k
à X n puisque i(X) est au plus de degré k. Divisons le résultat par le polynôme
générateur g(X) et l’on obtient

X n−k i(X) = a(X)g(X) + r(X) (5.3)

où r(X) est le reste de la division de X n−k i(X) par g(X). On voit donc que r(X)
est de degré inférieur à n − k. Additionnons maintenant r(X) aux 2 membres de
(5.3), il vient compte tenu des propriétés de l’addition modulo 2.

X n−k i(X) + r(X) = a(X)g(X) (5.4)

On a donc les deux résultats fondamentaux suivants. D’une part d’après ( 5.4), la
quantité X n−k i(X) + r(X) est bien un multiple de g(X) (ce qui est la propriété
désirée du code cyclique). D’autre part les deux polynômes X n−k i(X) et r(X) ont
des monômes qui ne peuvent s’additionner puisque ceux de r(X) s’étendent de 0
à n − k − 1 au plus alors que ceux de X n−k i(X) s’étendent de n − k à n au plus.
Les bits d’information se trouvent en tête du message alors que les bits de r(X)
qui seront les bits de contrôle du code occuperont les n − k premières positions. Le
mot code sera en effet de la forme

ik−1 X n + ik−2 X n−1 + . . . i0 X n−k + rn−k−1 X n−k−1 + . . . + r1 X + r0

ce qui correspondra au n-uple

(ik−1 , ik−2 , . . . , i0 , rn−k−1 , rn−k−2 , . . . , r1 , r0 )

5.3.0.10 Exemple
Trouver pour un code cyclique (7, 4) l’encodage systématique ainsi qu’un en-
codage non systématique de 1010.

5.3.0.11 Solution
Il faut d’abord trouver le polynôme générateur du code. Le degré de ce po-
lynôme générateur est d’après la propriété 1, n − k = 7 − 4 = 3. D’autre part
d’après la propriété 2, le polynôme générateur doit diviser 1 + X 7 . Si l’on essaie
de factoriser 1 + X 7 on trouve

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

On s’aperçoit qu’il y a deux candidats comme polynôme générateur de degré 3.


Lequel choisir ? La réponse n’est pas évidente d’emblée. A priori on ne peut savoir
lequel des deux codes est le meilleur. Prenons comme polynôme générateur

g(X) = 1 + X + X 3

TBA1 65
Codes polynômiaux cycliques H. Dedieu

L’encodage non systématique de l’information donnerait


g(X)i(X) = (1 + X + X 3 )(X + X 3 ) = X + X 2 + X 3 + X 6
soit
(1010) −→ (1001110)
L’encodage systématique de l’information donnerait
X n−k i(X) = X 3 (X + X 3 ) = X 4 + X 6
X 4 + X 6 = (X 3 + X + 1)(X 3 + 1) + X + 1
Soit r(X) = X + 1. L’encodage systématique est donc X 6 + X 4 + r(X) = X 6 +
X 4 + X + 1 soit
(1010) −→ (1010011)

5.4 Décodage d’un code cyclique (n, k)


Quand il n’y a pas d’erreur, le récepteur reçoit un mot de la forme
c(X) = X n−k i(X) + r(X) = a(X)g(X)
Lorsque des erreurs de transmissions se produisent on reçoit
ĉ(X) = X n−k i(X) + r(X) + e(X) = a(X)g(X) + e(X)
Pour détecter une erreur, on voit donc qu’il suffit de vérifier si le mot reçu est divi-
sible par g(X). Le syndrome que nous calculerons est donc le reste de la division
par g(X). Si le syndrome est nul cela veut dire que e(X) = 0. (Cela pourrait vouloir
dire que e(X) est un des codes cycliques auquel cas on ne pourrait détecter l’erreur
car l’erreur serait telle que l’on soit passé d’un mot code possible à un autre mot
code possible.)
Il existe deux méthodes équivalentes pour le calcul du correcteur.
1. On calcule le reste de la division de ĉ(X) par g(X), (s(X) = e(X)).
2. On calcule les bits de contrôle correspondants aux bits d’information reçus
et on les additionne aux bits de contrôle réellement reçus. Soit
ĉ(X) = X n−k î(X) + r̂(X)
le mot reçu. On calcule
à !
0 X n−k î(X)
r (X) = reste
g(X)
Le syndrome s’écrit alors
s(X) = r0 (X) + r̂(X)

66 TBA1
H. Dedieu Codes polynômiaux cycliques

5.4.0.12 Fonctionnement en détecteur d’erreur seul


En pratique on préfère souvent la deuxième méthode parce qu’elle permet d’uti-
liser la même structure au codeur et au décodeur. Si on utilise le code en détecteur
d’erreur seul, le décodeur prend la décision mot erroné-mot correct et demande ou
ne demande pas la retransmission.

5.4.0.13 Fonctionnement en correcteur d’erreur


Il y a plusieurs possibilités de fonctionnement. Soit on dispose d’un tableau de
correspondance archivé dans une ROM entre toutes les erreurs possibles et toutes
leurs corrections. Soit on calcule en temps réel la correction grâce à un algorithme
adéquat.

5.5 Réalisation d’un encodage de code cyclique

5.5.1 Introduction
Nous avons vu précédemment que l’encodage d’un code cyclique (n, k) consis-
tait en trois étapes
1. multiplication du message i(X) par X n−k
2. division de X (n−k) i(X) par g(X) afin d’obtenir le reste r(X)
3. formation du code par addition de r(X) et X (n−k) i(X)
Il se trouve que ces trois étapes peuvent être réalisées de manière simple sous une
forme matérielle. Nous allons essayer d’expliquer pourquoi dans la suite.

5.5.2 Préliminaires
On doit réaliser sous forme matérielle des multiplications et des divisions poly-
nomiales. Or les bits que nous émettons ou recevons apparaissent de façon sérielle
et le formalisme polynomial introduit par pure commodité algébrique tient compte
de la séquencialité dans le temps. Que se passe-t-il lorsque l’on multiplie un poly-
nôme par X ? Soit par exemple le message 100111 auquel correspond un polynôme
1 + X + X 2 + X 5 . Implicitement cela veut dire qu’au temps 0 apparaît le 1, alors
qu’à l’instant d’avant -1 avait apparu 1, et qu’au temps -2 avait apparu le bit 1, au
temps -4 le bit 0, etc, au temps -5 le bit 1. Multiplier le polynôme par X, c’est
décaler vers la gauche le message qui devient 1001110. Le bit qui était au temps
i apparaît maintenant au temps i − 1. Autrement dit une multiplication par X se
traduit par un décalage temporel d’une unité de temps. Ce décalage correspond à

TBA1 67
Codes polynômiaux cycliques H. Dedieu

u(X) ¶³ ¶³ ¶³ ¶³ y(X)
- - D - - D - - D -
0 1 m−1
µ´ µ´ µ´ µ´
6 6 6 6

¡@@ g1 ¡@@ g2 ¡@@ gm−1 ?g =1


g0 = 1 ¡ ¡ ¡ m

u(X)
F IGURE 5.1 – Circuit de division g(X)

u(X) ¶³ ¶³ ¶³ ¶³ y(X)
- - X −1 - - X −1 - - X −1 -
µ´ µ´ µ´ µ´
6 6 6 6
0 1 m-1

g0 = 1 ¡@@ g1 ¡@@ g2 ¡@@ gm−1 ?g =1


¡ ¡ ¡ m

u(X)
F IGURE 5.2 – Schéma équivalent au circuit de division g(X)

une anticipation d’un coup d’horloge. Inversement on pourrait monter qu’une di-
vision par X se traduit par une retard d’un coup d’horloge. Un retard de m coups
d’horloge correspond donc à une division par X m

5.5.3 Circuit de division


On donne ci-dessous le schéma d’un diviseur par g(X) de degré m = n − k.
Dans ce schéma les bascules D sont des éléments retard d’une unité de temps.
Du fait que chaque retard correspond à une multiplication par X −1 , on peut simpli-
fier le schéma de la figure 5.1 pour lui trouver le schéma équivalent de la figure 5.2.
Montrons tout d’abord que le circuit divise u(X) par g(X). En partant du schéma
5.2 on obtient
y(X) = (u(X)+y(X))X −m +g1 y(X)X −(m−1) +g2 y(X)X −(m−2) + . . . +gm−1 X −1
En tenant compte du fait que l’addition modulo 2 est équivalente à la soustraction
modulo 2,
y(X)(1 + gm−1 X −1 + gm−2 X −2 + . . . + g1 X −(m−1) + X −m ) = u(X)X −m

68 TBA1
H. Dedieu Codes polynômiaux cycliques

u(X) ¶³ ¶³ y(X)
- - X −1 - - X −1 - - X −1 -
µ´ µ´
6 6
0 1 2

g0 = 1 g1 = 1 g2 = 0 ?g3 = 1

u(X)
F IGURE 5.3 – Circuit de division X 3 +X+1)

D’où en multipliant numérateur et dénominateur par X m ,

u(X)
y(X) =
1 + g1 X + g2 X2 + . . . + gm−1 X (m−1) + X m

Le circuit proposé divise bien u(X) par g(X). Soit

u(X) = q(X)g(X) + r(X)

Alors si u(X) est de degré n après n coups d’horloge on a calculé les coefficients
de q(X). On peut montrer par ailleurs que le reste de la division r(X) se trouve
stocké dans les bascules après n + 1 coups d’horloge. L’exercice suivant illustre
cette propriété.

5.5.3.1 Exercice
Soient les polynômes u(X) = X 5 + X + 1 et g(X) = X 3 + X + 1
1. Calculer le quotient et le reste de la division de u(X) par g(X).
2. Donner le schéma du circuit de division.
3. Analyser le fonctionnement du circuit de division.

5.5.3.2 Solution
La division ne pose aucun problème, on trouve

X 5 + X + 1 = (X 2 + 1)g(X) + X 2

On a donc q(X) = X 2 + 1 et r(X) = X 2 Le circuit réalisant la division est


représenté à la figure 5.3 L’analyse du comportement temporel du circuit est donné
au tableau 5.5.3.2

TBA1 69
Codes polynômiaux cycliques H. Dedieu

Coup d’horloge ui D0 D1 D2 qi
0 u5 =1 0 0 0
1 u4 =0 1 0 0
2 u3 =0 0 1 0
3 u2 =0 0 0 1 q2 = 1
4 u1 =1 1 1 0 q1 = 0
5 u0 =1 1 1 1 q0 = 1
6 0 0 = r0 0 = r1 1 = r2

-
i(X) ?
@f k
@ c(X)
@ -

- f
¶³ ¶³ ¶³ m ?
¶³
- D - - D - - D -
0 1 m−1
µ´ µ´ µ´ µ´
6 6 6 6

¡@@ g1 ¡@@ g2 ¡@@ gm−1


g0 = 1 ¡ ¡ ¡ gm = 1

F IGURE 5.4 – Encodage d’un code cyclique systématique

5.5.4 Codeur d’un code cyclique


Le schéma de codage d’un code cyclique se fait en respectant la relation

c(X) = i(X)X n−k + r(X)

où r(X) est le reste de la division de i(X)X n−k par g(X). Le codeur doit effectuer
les trois opérations suivantes : multiplication de i(x) par X n−k , puis division par
g(X), puis addition du produit au reste. Le schéma du circuit réalisant ces trois
opérations est donné à la figure 5.4 Tant que le commutateur se trouve en position
k donc pendant k coups d’horloge, les k bits d’information sont en même temps
envoyé vers le circuit et vers le récepteur. On bascule ensuite en position m où
pendant m = n − k coups d’horloge on va envoyer les bits de contrôle (reste) vers
le récepteur. Montrons qu’en position k le circuit effectue la division de i(X)X n−k
par g(X). Le schéma équivalent de l’encodeur cyclique lorsqu’il est en position k
est donné à la figure 5.5. Soit y(X) le signal au point noté A sur le schéma. On voit

70 TBA1
H. Dedieu Codes polynômiaux cycliques

i(X)

¶³ ¶³ ¶³ ?
¶³
- X −1 - - X −1 - - X −1 - - X −1 -
µ´ µ´ µ´ µ´
6 6 6 6
A
?y(X)
¡@@ g1 ¡@@ g2 ¡@@ gm−1
g0 = 1 ¡ ¡ ¡ gm = 1

F IGURE 5.5 – Schéma équivalent de l’encodeur cyclique systématique

que

y(X) = i(X) + X −m y(X) + g1 X −(m−1) y(X) + . . . + gm−1 X −1 y(X)

Soit

y(X)(1 + gm−1 X −1 + gm−2 X −2 + . . . + g1 X m−1 + X −m ) = i(X)

Soit encore
i(X)
y(X) =
1 + gm−1 X −1 + gm−2 X −2 + . . . + g1 X m−1 + X −m

X m i(X)
y(X) =
X m + gm−1 X m−1 + gm−2 X m−2 + . . . + g1 X + 1

Ce qui prouve que le circuit effectue bien la division requise.

5.5.5 Réalisation matérielle du décodage d’un code cyclique sys-


tématique
Une des deux méthodes consiste à calculer le reste de la division de ĉ(X) par
g(X). Comme le reste apparaît après n + 1 coups d’horloge sur les registres des
bascules D, on peut utiliser le premier circuit de division et à l’aide d’une porte OU
qui somme toutes les sorties des bascules à cet instant là. Si la sortie vaut 0, il n’y
aura pas d’erreur détectée, si la sortie vaut 1, c’est qu’il y a au moins une erreur.

TBA1 71
Codes polynômiaux cycliques H. Dedieu

5.6 Propriétés des codes polynômiaux (cycliques ou non)


Lorsqu’aucune erreur de transmission survient on sait que le récepteur reçoit un
"mot polynômial" de la forme
c(X) = a(X)g(X)
où g(X) est le polynôme générateur du code. Cette propriété est vraie que le code
soit cyclique ou non. Lorsqu’une ou plusieurs erreurs surviennent pendant la trans-
mission le mot reçu ĉ(X) est la somme du mot code émis et d’un certain polynôme
d’erreur e(X), i.e.
ĉ(X) = a(X)g(X) + e(X)
Au décodage, ĉ(X) est divisé par g(X) et la transmission est déclarée sans erreurs si
le reste de la division est nul. Le système de décodage détecte toute erreur telle que
g(X) ne divise pas e(X) ; les propriétés de détection du code polynomial (cyclique
ou non) peuvent être évaluées en fonction des propriétés du polynôme générateur
g(X).

Propriété 1 Un code polynomial détecte toute erreur simple.

Une erreur simple sur le ième bit se traduit par un polynôme e(X) = X n−i . Comme
g(X) contient au moins deux coefficients qui sont non nuls (le premier et le der-
nier), g(X) ne peut être de la forme X p et ne peut donc diviser X n−i . Par consé-
quent lorsqu’une erreur simple survient,la division de e(X) par g(X) est non nulle
et l’erreur est détectée.
Propriété 2 Un code polynomial détecte toute erreur double si son polynôme gé-
nérateur g(X) ne divise pas X l + 1 où l peut prendre n’importe quelle valeur entre
1 et n − 1.
Une erreur double en positions i et j (1 ≤ i < j ≤ n−1)se traduit par un polynôme
générateur
e(X) = X n−i + X n−j = X n−j (1 + X j−i )
Comme g(X) possède deux coefficients non nuls il ne peut diviser X n−i . Si de plus
g(X) ne peut diviser 1 + X p pour 1 ≤ p ≤ n − 1, il ne pourra diviser (1 + X j−i ).
Par conséquent on est sûr que g(X) ne peut diviser X n−j (1 + X j−i ).
Propriété 3 L’erreur sur un message comportant un nombre impair d’erreurs est
toujours détectée si le polynôme générateur g(X) contient un facteur X + 1.
Si les erreurs sont en nombre impair, le polynôme e(X) contient un nombre im-
pair de coefficients non nuls. Par conséquent e(1) = 1. D’autre part comme g(X)
contient le facteur X + 1, g(1) = 0. Ceci montre que e(X) ne peut être un multiple
de g(X) car dans ce cas e(1) devrait valoir 0. Le polynôme e(X) n’est donc pas
divisible par g(X) et tout nombre impair d’erreurs est détecté.

72 TBA1
H. Dedieu Codes polynômiaux cycliques

Propriété 4 Un code polynomial (n, k) détecte toutes les salves d’erreurs de lon-
gueur inférieure ou égale à n − k.

Une salve d’erreurs de longueur j est définie comme un vecteur dont les compo-
santes non nulles peuvent être confinées sur j positions consécutives.
Par exemple le vecteur e = (0 0 0 1 0 1 1 0 1 0 0 0) est une salve d’erreur de
longueur 6. Une salve d’erreurs de longueur j ≤ n − k est donc représentable par
un polynôme

e(X) = X n−i +ei+1 X n−i−1 +. . .+ei+j−2 X n−i−j+2 +X n−i−j+1 = X n−i−j+1 (X j−1 +X j−2 +. . .+X+1)

où j − 1 ≤ n − k − 1. g(X) ne divise pas X n−i−j+1 car g(X) contient deux


coefficients non nuls. D’autre part g(X) de degré n − k ne peut diviser (X j−1 +
X j−2 + . . . + X + 1) qui est degré inférieur. Par conséquent e(X) ne peut être
divisible par g(X) et la salve d’erreurs de longueur inférieure ou égale à n − k est
détectée. De façon générale on peut montrer que les salves d’erreurs de longueur
supérieure à n − k sont détectées avec une probabilité très élevée.
Ces propriétés montrent que les codes polynômiaux (cycliques ou non) peuvent
être aisément conçus pour détecter les erreurs simples, les erreurs doubles, les er-
reurs en nombre impair. De plus les codes polynômiaux (cycliques ou non) dé-
tectent les erreurs par salves de façon sûre si les salves sont de longueur inférieure
ou égale à n − k et avec une probabilité grande si les salves sont de longueur supé-
rieure à n − k. Cette dernière caractéristique, particulièrement importante pour la
transmission sur le canal téléphonique, où les erreurs se produisent le plus souvent
par salves, a conduit à la normalisation de plusieurs codes polynômiaux pour la
téléinformatique.

5.7 Quelques polynômes générateurs normalisés


On énumère ici quelques codes polynômiaux très couramment utilisés en télé-
informatique. On donne ici le polynôme générateur ( d’ordre n − k) associé à ces
codes normalisés. Ces polynômes peuvent être utilisés pour différentes longueurs
de bloc n. Suivant la valeur de n choisi on aura affaire à un code cyclique ou non.
On rappelle que pour que le code polynômial soit cyclique il faut que son polynôme
générateur d’ordre n − k divise 1 + X n .
5.7.1 Le code CCITT V.41
Ce code a pour polynôme générateur

g(X) = 1 + X 5 + X 12 + X 16 (5.5)

TBA1 73
Codes polynômiaux cycliques H. Dedieu

On peut montrer aisément que la distance minimale entre deux mots du code est
dmin = 4. Ce code peut donc détecter toutes les erreurs simples, doubles et triples,
toutes les erreurs en nombre impair ainsi que toutes les salves d’erreurs de longueur
inférieure ou égale à 16 (degré de g(X)). Ce code est utilisé dans les procédures de
lignes orientées bit, en particulier la procédure HDLC .

5.7.2 Le code CRC-16


Le polynôme générateur de ce code est donné par

g(X) = 1 + X 2 + X 15 + X 16 (5.6)

Ce code est utilisé dans les procédures de transmission orientées caractères telles
BSC Binary Synchronous Communication lorsque l’alphabet utilisé est l’EBCDIC
.

5.7.3 Le code CRC-12


Le polynôme générateur est

g(X) = 1 + X + X 2 + X 3 + X 11 + X 12 (5.7)

Ce code est aussi utilisé dans les procédures de transmission orientées caractères
telles BSC lorsque l’alphabet utilisé comporte des mots de 6 bits.

5.7.4 Le code ARPA


Le polynôme générateur est de la forme

g(X) = 1+X 3 +X 5 +X 8 +X 9 +X 10 +X 11 +X 12 +X 13 +X 15 +X 16 +X 17 +X 23 +X 24
(5.8)

5.7.5 Le code ETHERNET


Ce code est utilisé dans le réseau local ETHERNET, son polynôme générateur
s’écrit

g(X) = 1+X+X 2 +X 4 +X 5 +X 7 +X 8 +X 10 +X 11 +X 12 +X 16 +X 22 +X 23 +X 26 +X 32
(5.9)

74 TBA1
H. Dedieu Codes polynômiaux cycliques

5.8 Codes cycliques BCH


Les codes de Bose, Chaudhuri et Hocquenghem (BCH) forment une classe trés
importante et très puissante de codes cycliques détecteurs et correcteurs d’erreurs.
Ils généralisent les codes de Hamming pour la correction d’erreurs multiples. Les
codes binaires BCH ont été découverts indépendemment par Hocquenghem (1959)
et Bose et Chaudhuri (1960).

5.8.1 Description des codes BCH


Les codes BCH sont construits pour corriger t erreurs. Pour tout couple d’en-
tiers positifs m ( m ≥ 3 et t ( t < 2m−1 ) on peut montrer qu’il existe un code
binaire BCH avec les paramètres suivants :
Longueur de bloc n n = 2m − 1
Nombre de bits de contrôle n − k ≤ mt
Distance minimale entre mots-code dmin ≥ 2t + 1

5.8.1.1 Exemple
Analyser la potentialité des codes BCH (511, 421) et (1023, 923) en terme de
correction d’erreur. Comparer le rendement de ces deux codes.

5.8.1.2 Solution
Le code BCH (511, 421) est tel que n = 511 = 29 − 1 d’où l’on déduit
que m = 9. Le nombre de bits de contrôle est n − k = 511 − 421 = 90. D’où
l’on déduit que t ≥ n−k m
= 90
9
= 10. Un tel code peut donc corriger 10 erreurs
sur un bloc de 511 bits. Son rendement est η = nk = 421 511
= 0.823. Pour le code
BCH (1023, 923) on trouverait m = 10. Comme le nombre de bits de contrôle
est n − k = 1023 − 923 = 100, on en déduirait qu’un tel code est capable de
corriger t ≥ n−km
= 100
10
= 10 erreurs. Le rendement du code BCH (1023, 923)
k 923
est η = n = 1023 = 0.902. On voit donc que les deux codes ont la même capacité
de correction par bloc, puisque 10 erreurs par bloc peuvent être corrigées. Le code
BCH (1023, 923) offre un meilleur rendement que le code BCH (511, 421). Il faut
toutefois remarquer que la capacité de correction en terme de nombre d’erreurs
corrigées par longueur de bloc est meilleure pour le code BCH (511, 421) (elle est
10 10
de 511 ) que pour le code BCH (1023, 923) ( 1023 ).

TBA1 75
Codes polynômiaux cycliques H. Dedieu

5.9 Eléments théoriques nécessaires au développement des codes


BCH
Les codes BCH peuvent être décrits à partir de leur polynôme générateur, ou de
façon plus commode à partir des racines de leur polynôme générateur. Ces racines
prennent leurs valeurs dans le champ de Galois CG(2m ) dont nous n’avons pas
encore parlé jusqu’ici. Afin d’expliquer la construction des codes BCH nous allons
introduire ici les éléments théoriques minimaux. Avant d’introduire le champ de
Gallois CG(2m ), le théorème suivant nous sera nécessaire.
m −1
Théorème 1 Tout polynôme irréductible sur CG(2) de degré m divise X 2 + 1.

(On rappelle qu’un polynôme est dit irréductible s’il ne possède aucun diviseur de
degré supérieur à 0.)

5.9.0.3 Exemple
P (X) = X 3 + X + 1 n’a pas de racine sur CG(2) car P (1) = 1 et P (0) =
0. Comme 2m − 1 = 23 − 1 = 7 on peut vérifier que X 7 + 1 est divisible par
X 3 + X + 1. Après division, on obtient bien
X7 + 1
3
= X4 + X2 + X + 1
X +X +1
On appelle période d’un polynôme P (X) le plus petit entier l tel que P (X) divise
X l + 1. Un polynôme irréductible P (X) de degré m est dit polynôme primitif si
l’entier positif n le plus petit pour lequel P (X) divise X n + 1 est n = 2m − 1.
D’après le théorème précédent, un polynôme primitif a donc pour période 2m − 1.

5.9.0.4 Exemple
Le polynôme X 4 + X + 1 est un polynôme irréductible de CG(2). D’après
m
le thèorème, P (X) doit diviser X 2 −1 + 1 = X 15 + 1. Pour savoir si P (X) est
primitif, il faudra vérifier que P (X) ne divise pas X n + 1 pour 1 ≤ n ≤ 15.
La table 5.3 donne quelques polynômes primitifs

5.9.1 Construction des champs de Galois CG(2m )


Le champ de Galois CG(2) est constitué des 2 éléments 0 et 1. Le champ de
Galois CG(2m ) est constitué des 2m éléments suivants
h m −2
i
G∗ = 0, 1, α, α2 , α3 , . . . , α2 (5.10)

76 TBA1
H. Dedieu Codes polynômiaux cycliques

m P (X) m P (X)
3 1 + X + X3 14 1 + X + X 6 + X 10 + X 14
4 1 + X + X4 15 1 + X + X 15
5 1 + X2 + X5 16 1 + X + X 3 + X 12 + X 16
6 1 + X + X6 17 1 + X 3 + X 17
7 1 + X3 + X7 18 1 + X 7 + X 18
8 1 + X2 + X3 + X4 + X8 19 1 + X + X 2 + X 5 + X 19
9 1 + X4 + X9 20 1 + X 3 + X 20
10 1 + X 3 + X 10 21 1 + X 2 + X 21
11 1 + X 2 + X 11 22 1 + X + X 22
12 1 + X + X 4 + X 6 + X 12 23 1 + X 5 + X 23
13 1 + X + X 3 + X 4 + X 13 24 1 + X + X 2 + X 7 + X 24

TABLE 5.3 – Polynôme primitifs pour 3 ≤ m ≤ 24

Le champ de Galois CG(2m ) est donc formé par 0 et par les puissances croissantes
de α de l’ordre 0 jusqu’à l’ordre 2m − 2. Quelle valeur de α doit-on choisir ? α
n’est pas quelconque, en effet, afin que le champ soit "fermé sur lui-même" pour
la multiplication il faut que les puissances de α supérieures à 2m − 2 nous ramène
dans le champ. Pour ce faire on rajoute la condition
m −1
α2 =1 (5.11)

En addition modulo-2, la condition ( 5.11) est équivalente à


m −1
α2 +1=0 (5.12)

Théorème 2 Soit P (X) le polynôme primitif d’ordre m. Soit α une racine de ce


hpolynôme primitif (α est dit élément
i primitif de CG(2m ) de CG(2m ). Alors G∗ =
m
0, 1, α, α2 , α3 , . . . , α2 −2 constitue un ensemble fermé pour la multiplication.

La démonstration de ce théorème est aisée. Sachant que P (X) est un polynôme


primitif, on sait d’après le théorème 1 que
m −1
X2 + 1 = P (X)q(X)

En remplaçant X par α il vient


m −1
α2 + 1 = P (α)q(α)

Comme par hypothèse P (α) = 0, on a donc


m −1
α2 +1=0

TBA1 77
Codes polynômiaux cycliques H. Dedieu

Soit d’après les propriétés de l’addition modulo-2


m −1
α2 =1
Il s’ensuit que le produit de deux éléments de G∗ est un élément de G∗ . En effet
soient deux entiers i et j tels que 0 ≤ i ≤ 2m −2 et 0 ≤ j ≤ 2m −2. Si i+j < 2m −1,
alors αi αj = αi+j qui est un élément non nul de G∗ . Si i + j ≥ 2m − 1, on peut
toujours écrire i + j = (2m − 1) + r avec 0 ≤ r < 2m − 1. Dès lors
m −1
αi αj = αi+j = α2 αr = 1αr = αr
Ce qui prouve bien que G∗ est fermé sous la multiplication. Pour disposer d’un
champ, il faut maintenant trouver une opération d’addition qui ferme aussi le champ.
A cette fin, pour 0 ≤ i ≤ 2m − 1, on divise X i par P (X) et l’on obtient
X i = qi (X)P (X) + ai (X) 0 ≤ i ≤ 2m − 1 (5.13)
Comme X et P (X) n’ont pas de facteur commun (car P (X) est un polynôme
irréductible), X i et P (X) sont premiers entre eux. Le reste ai (X) de la division par
P (X) est donc non nul et c’est un polynôme de degré m − 1 au plus sur CG(2) qui
prend la forme
ai (X) = ai,0 + ai,1 X + ai,2 X 2 + . . . + ai,m−1 X m−1 (5.14)
On peut montrer facilement, compte tenu du fait que P (X) est un polynôme primi-
tif, que ai (X) 6= aj (X) si i 6= j.
En remplaçant X par α dans l’équation (5.13) on obtient
αi = qi (α)P (α) + ai (α) 0 ≤ i ≤ 2m − 1 (5.15)
Comme P (α) = 0, (5.15) devient
αi = ai (α) = ai,0 + ai,1 α + ai,2 α2 + . . . + ai,m−1 αm−1 0 ≤ i ≤ 2m − 1 (5.16)
qui peut aussi se représenter sous forme de m − uple
αi = (ai,m−1 ai,m−2 . . . ai,1 ai,0 ) 0 ≤ i ≤ 2m − 1 (5.17)
Les 2m −1 ai (X) pour 0 ≤ i ≤ 2m −1 sont donc tous différents, avec l’élément nul
ils forment 2m polynômes de degré m − 1 (polynômes à m coefficients). Montrons
maintenant que G∗ est fermé sous l’addition. On a
αi + αj = (ai,0 + aj,0 ) + (ai,1 + aj,1 )α + . . . + (ai,m−1 + aj,m−1 )αm−1 (5.18)
Pour i = j, en tenant compte des propriétés de l’addition modulo-2, l’équation
(5.18) donne
αi + αi = 0 + 0α + . . . + 0αm−1 = 0 (5.19)
6 j, du fait que ai (X) 6= aj (X), αi + αj est non nul, c’est donc forcément
Pour i =
un des 2m − 1 éléments non nuls de G∗ .

78 TBA1
H. Dedieu Codes polynômiaux cycliques

5.9.1.1 Exemple

Construire le champ de Galois CG(24 ) en donnant la représentation de tous ses


éléments sous forme polynômiale et sous forme de 4 − uples.

5.9.1.2 Solution

Les 24 = 16 éléments du champ de Galois CG(24 ) peuvent être déterminés


dès lors que l’on connaît le polynôme primitif d’ordre 4. D’après la table 5.3, le
polynôme primitif d’ordre 4 est

P (X) = 1 + X + X 4

Pour trouver la représentation des αi , sous forme polynomiale, on calcule le reste


de la division par P (X) de X i . Par exemple pour X 7 , on trouve

X 7 = P (X)(X 3 + 1) + X 3 + X + 1

D’après l’équation (5.16) on en déduit que

α7 = α3 + α + 1

Une autre façon équivalente est de partir de P (α) = 0 et donc de 1 + α + α4 = 0.


D’où l’on déduit α4 = 1 + α. Par suite on peut déterminer par récurrence toutes les
puissances de α de 4 à 14 en fonction de 1, α, α2 , α3 . Ainsi

α5 = α4 α = (1 + α)α = α + α2

α6 = α5 α = (α + α2 )α = α2 + α3

α7 = α6 α = (α2 + α3 )α = α3 + α4 = α3 + α + 1

En procédant ainsi par récurrence on arriverait à

α14 = α3 + 1

On remarquera que conformément à la théorie

α15 = α14 α = (α3 + 1)α = α4 + α = 1 + α + α = 1

Finalement la représentation des 16 éléments de CG(24 ) tant sous forme polyno-


miale que sous forme de 4 − uples est donnée à la table 5.4.

TBA1 79
Codes polynômiaux cycliques H. Dedieu

αi Représentation Représentation
polynomiale par 4-uples
0 0 (0 0 0 0)
1 1 (0 0 0 1)
α α (0 0 1 0)
α2 α2 (0 1 0 0)
α3 α3 (1 0 0 0)
α4 α+1 (0 0 1 1)
α5 α2 + α (0 1 1 0)
α6 α3 + α2 (1 1 0 0)
α7 α3 + α + 1 (1 0 1 1)
α8 α2 + 1 (0 1 0 1)
α9 α3 + α (1 0 1 0)
α10 α2 + α + 1 (0 1 1 1)
α11 α3 + α2 + α (1 1 1 0)
α12 α3 + α2 + α + 1 (1 1 1 1)
α13 α3 + α2 + 1 (1 1 0 1)
α14 α3 + 1 (1 0 0 1)

TABLE 5.4 – Trois représentations des 16 éléments de CG(24 )

5.9.2 Propriétés des champs de Galois CG(2m )


En algèbre ordinaire un polynôme à coefficients réels peut très bien n’avoir
pas de racines dans le champ des nombres réels mais avoir ses racines dans le
champ des nombres complexes qui contient le champ des nombres réels comme
sous-champ. Une propriété similaire existe pour les polynômes à coefficients dans
CG(2). Un polynôme à coefficients dans CG(2) peut très bien n’avoir pas ses
racines dans CG(2) mais dans un champ qui est une extension de CG(2). Par
exemple, le polynôme X 4 + X 3 + 1 est irreductible dans CG(2) puisque ni 0 ni 1
ne sont racines. Si nous substituons à X des éléments de CG(24 ) on peut vérifier
que α7 , α11 , α13 et α14 sont racines de X 4 + X 3 + 1 ; pour s’en convaincre pour α7
(en utilisant les éléments donnés par la table 5.4), il vient

(α7 )4 +(α7 )3 +1 = α28 +α21 +1 = α13 +α6 +1 = (α3 +α2 +1)+(α3 +α2 )+1 = 0

Théorème 3 Les 2m − 1 éléments non nuls de CG(2m ) sont formés de toutes les
m
racines de X 2 −1 + 1.
On a donc le corollaire suivant
Corollaire 4 Les 2m éléments de CG(2m ) sont formés de toutes les racines de
m
X 2 + X.

80 TBA1
H. Dedieu Codes polynômiaux cycliques

Eléments de CG(24 ) Polynômes minimaux


0 X
1 X +1
α, α , α4 , α8
2 4
X +X +1
α3 , α6 , α9 , α12 X4 + X3 + X2 + X + 1
α5 , α10 X2 + X + 1
α , α11 , α13 , α14
7
X4 + X3 + 1

TABLE 5.5 – Polynômes minimaux associés aux éléments de CG(24 ) générés par
P (X) = X 4 + X + 1

m
Il résulte du corollaire que tout élément β de CG(2m ) est une racine X 2 + X. Par
conséquent β doit être racine d’un polynôme de degré inférieur à 2m . Soit m(X)
le polynôme de degré le plus petit sur CG(2) tel que m(α) = 0, m(α) est dit
polynôme minimal de α.

5.9.2.1 Exemple de polynômes minimaux


Pour le champ de Galois CG(24 ) le polynôme minimal associé à β = 0 est
m(X) = X (m(β) = β = 0). Le polynôme minimal associé à β = 1 est m(X) =
X + 1, en effet m(β) = β + 1 = 1 + 1 = 0. On peut montrer que l’ensemble des
polynômes minimaux associés aux 16 éléments de CG(24 ) est donné par la table
5.5.

Théorème 5 Le polynôme minimal m(X) associé à un élément β de CG(24 ) est


un polynôme irréductible.

Théorème 6 Soit m(X) le polynôme associé à un élément β de CG(2m ). Soit p le


p
plus petit entier tel que β 2 = β. Dès lors
p−1
Y i
m(X) = (X + β 2 ) (5.20)
i=0

Ce dernier théorème offre le moyen de construire le polynôme minimal associé à


tout élément de CG(2m ).

5.9.2.2 Exemple de construction de polynôme minimal

Construire dans CG(24 ) le polynôme minimal associé à l’élément β = α9 .

TBA1 81
Codes polynômiaux cycliques H. Dedieu

5.9.2.3 Solution
p
On calcule d’abord p tel β 2 = β. On a
β 2 = α18 = α3 β 4 = α36 = α6 β 8 = α72 = α12 β 16 = α144 = α9
4
(Ces calculs sont effectués en tenant compte que β 2 −1 = β 15 = 1 et que toutes
les puissances de α peuvent être réduites par leur expression en modulo-15, par
exemple 144=9 modulo-15) On déduit donc que 2p = 16, soit p = 4. Le polynôme
associé à β = α9 est donc d’après le théorème précédent
m(X) = (X +β)(X +β 2 )(X +β 4 )(X +β 8 ) = (X +α9 )(X +α3 )(X +α6 )(X +α12 )
En développant on obtient
m(X) = (X 2 + X(α3 + α9 ) + α12 )(X 2 + X(α6 + α12 ) + α18 )
En tenant compte des résultats sur CG(24 ) exprimés dans la table 5.4 il vient
m(X) = (X 2 + Xα + α12 )(X 2 + X(1 + α) + α3 )
Soit
m(X) = X 4 + X 3 (1 + α + α) + X 2 (α12 + α3 + α + α2 ) + X(α4 + α12 + α13 ) + α15
soit encore
m(X) = X 4 + X 3 + X 2 + X + 1

5.9.3 Construction des codes BCH


Un code BCH à longueur de bloc n = 2m − 1 capable de corriger t erreurs
(dmin = 2t + 1) est spécifié à l’aide des racines de son polynôme générateur dans
le champ de Galois CG(2m ). Soit α un élément primitif de CG(2m ), le polynôme
générateur du code BCH est défini comme le polynôme de plus petit degré sur
CG(2) qui possède comme racines α, α2 , α3 , . . . , α2t . On rappelle ici la notion
de polynôme minimal ; le polynôme minimal associé à l’élément αi (0 ≤ i ≤ 2t)
est le polynôme de degré minimal qui possède αi comme racine. Par conséquent
le code BCH qui possède comme racines α, α2 , α3 , . . . , α2t a pour polynôme
générateur
g(X) = P lus P etit Commun M ultiple(m1 (X), m2 (X), m3 (X), . . . , m2t (X))
(5.21)
i
où les mi (X) 0 ≤ i ≤ 2t sont les polynômes minimaux associés aux α . Les po-
lynômes minimaux possèdent un certain nombre de facteurs communs, en somme
qu’il peut être montré que l’équation (5.21) est équivalente à
g(X) = P lus P etit Commun M ultiple(m1 (X), m3 (X), . . . , m2t−1 (X))
(5.22)

82 TBA1
H. Dedieu Codes polynômiaux cycliques

Dans CG(2m ) les polynômes minimaux sont au plus de degré m et il y a t facteurs


dans l’équation (5.22), par conséquent le degré de g(X) est au plus mt. Comme le
degré de g(X) représente le nombre de bits de contrôle n − k, on a

n − k ≤ mt (5.23)

L’équation (5.23) spécifie le nombre de bits de contrôle. Il n’y a pas de formule


simple pour calculer n − k, en général lorsque t est petit, n − k est égal à mt.
Il resterait à prouver que le code BCH défini par (5.22) a une distance minimale
dmin = 2t + 1 (capacité de corriger t erreurs). A cette fin on peut commencer par
montrer que si v est un n − uple appartenant au code alors il est tel que

vH T = 0 (5.24)

avec  
1 α α2 α3 ... αn−1
 


1 (α2 ) (α2 )2 (α2 )3 . . . (α2 )n−1 

 1 (α3 ) (α3 )2 (α3 )3 . . . (α3 )n−1 
H=



(5.25)
 .. .. .. .. .. .. 
 . . . . . . 
2t 2t 2 2t 3 2t n−1
1 (α ) (α ) (α ) . . . (α )
où H est la matrice de contrôle du code (chaque αi pouvant être représenté par un
m − uple, c’est une matrice à 2tm lignes et n colonnes). Pour prouver que le code
a une distance minimum de 2t + 1 on suppose qu’un code v pourrait avoir un poids
inférieur ou égal à 2t, puis on prouve par contradiction que ceci n’est pas possible.

5.9.4 Exemple de construction de code BCH


Construire le code cyclique capable de corriger t = 3 erreurs dans des blocs de
n = 15 bits.

5.9.4.1 Solution
Les codes BCH sont de longueur n = 2m − 1. Dans le cas présent, on a donc
m = 4. Trouver le code BCH revient à trouver les racines du polynôme primitif de
CG(2m ) = CG(24 ). D’après la table 5.3, ce polynôme générateur est

P (X) = 1 + X + X 4

L’élément primitif de CG(24 ) est donc tel 1 + α + α4 = 0. D’après le théorème


5.22 le polynôme générateur g(X) du code capable de corriger t = 3 erreurs est tel
que

g(X) = P lus P etit Commun M ultiple(m1 (X), m3 (X), m5 (X))

TBA1 83
Codes polynômiaux cycliques H. Dedieu

Les polynômes minimaux peuvent être trouvés par application du théorème 6. Dans
CG(24 ) ces polynômes sont donnés par la table 5.5, i.e m1 (X) = X 4 + X + 1
(polynôme minimal associé à α), m3 (X) = X 4 + X 3 + X 2 + X + 1 (polynôme
minimal associé à α3 ), m5 (X) = X 2 + X + 1 (polynôme minimal associé à α5 ).
Par conséquent

g(X) = P lus P etit Commun M ultiple(X 4 +X+1, X 4 +X 3 +X 2 +X+1, X 2 +X+1)

Comme ni X 4 + X + 1, ni X 4 + X 3 + X 2 + 1 ne sont divisibles par X 2 + X + 1,


on a

g(X) = (X 4 +X+1) (X 4 +X 3 +X 2 +X+1) (X 2 +X+1) = X 10 +X 8 +X 5 +X 4 +X 2 +X+1

Le degré de g(X) est n − k = 10, d’où l’on déduit que k = 5. Le polynôme


générateur trouvé est donc celui du code cyclique BCH (15, 5).

5.9.5 Calcul du syndrome d’un code BCH


Si l’on suppose que le mot code transmis est de la forme v(X) = v0 + v1 X +
v2 X 2 +. . .+vn−1 X n−1 . Définissons par e(X) = e0 +e1 X +e2 X 2 +. . .+en−1 X n−1
le n-uple erreur en somme que le mot reçu soit

r(X) = v(X) + e(X)

On sait que la matrice de contrôle H définie par la relation (5.25) est telle que

vH T = 0 (5.26)

où H T est une matrice n × 2t et v est la représention du polynôme v(X) sous forme


de n − uple 1 × n.
Le syndrome est donc le 2t − uple

s = (s1 , s2 , s3 , . . . s2t ) = rH T = eH T (5.27)

Par application des équations (5.27) et (5.25), la ième composante du syndrome est
donc

si = r(αi ) = r0 + r1 αi + r2 α2i + r3 α3i + . . . + rn−1 α(n−1)i 1 ≤ i ≤ 2t (5.28)

ou encore

si = e(αi ) = e0 + e1 αi + e2 α2i + e3 α3i + . . . + en−1 α(n−1)i 1 ≤ i ≤ 2t (5.29)

Remarquons que si est nul si αi est racine de r(X) ou de façon équivalente si r(X)
est divisible par le polynôme minimal associé à αi . Donc si l’on divise r(X) par
mi (X), i.e.
r(X) = ai (X)mi (X) + bi (X) (5.30)

84 TBA1
H. Dedieu Codes polynômiaux cycliques

on a

r(αi ) = ai (αi )mi (αi ) + bi (αi ) == ai (αi )0 + bi (αi ) = bi (αi ) (5.31)

Ainsi la ième composante du syndrome peut être calculée simplement. On divise


r(X) par mi (X) et le reste obtenu bi (X) sert à calculer r(αi ) = e(αi ) = bi (αi ).

5.9.5.1 Exemple de calcul de syndrome pour un code BCH


Soit le code BCH (15, 5) dont le polynôme générateur est donné par

g(X) = X 10 + X 8 + X 5 + X 4 + X 2 + X + 1

Calculer l’encodage systématique du 5-uple (0 0 1 0 0) par le code BCH (15, 5).


Soit s le 15-uple après encodage. Une erreur se produit au niveau du bit 11, calcu-
ler le syndrome et vérifier que l’on puisse détecter et corriger l’erreur à partir du
syndrome.

5.9.5.2 Solution
Le code BCH (15, 5) est tel que n = 15 = 24 − 1, d’où l’on déduit que m = 4.
De la relation n − k ≤ mt on déduit que ce code peut corriger t = 3 erreurs. Le
polynôme générateur a ses trois racines dans CG(24 ).
Au 15-uple d’information (0 0 1 0 0) correspond le polynôme i(X) = X 2 .
L’encodage systématique consiste à trouver le reste de la division de i(X)X n−k
par g(X), puis à rajouter au résultat i(X)X n−k . Comme n − k = 10, il faut trouver
le reste de la division de X 12 par g(X). Or

X 12 = (X 2 + 1)g(X) + X 8 + X 7 + X 6 + X 5 + X 3 + X + 1

L’information encodée sous forme systématique est donc

t(X) = X 12 + X 8 + X 7 + X 6 + X 5 + X 3 + X + 1

qui correspond au 15-uple :

t = (0 0 1 0 0 0 1 1 1 1 0 1 0 1 1)

Les 2t = 6 polynômes minimaux de CG(24 ) qui servent à calculer le syndrome


sont donnés par la table 5.5. Soit

m1 (X) = m2 (X) = m4 (X) = X 4 +X+1 m3 (X) = m6 (X) = X 4 +X 3 +X 2 +X+1

m5 (X) = X 2 + X + 1

TBA1 85
Codes polynômiaux cycliques H. Dedieu

On pourrait vérifier que le syndrome de t(X) est bien nul car


t(X) = (X 8 +X 5 +X 3 +1)m1 (X), t(X) = (X 8 +X 7 +X 4 +X 3 +X 2 +1)m3 (X)
t(X) = (X 10 + X 9 + X 7 + X 4 + X 2 + 1)m5 (X)
Une erreur sur le bit en position 11 correspond au 15-uple
r = (0 0 1 1 0 0 1 1 1 1 0 1 0 1 1)
ou au polynôme r(X)
r(X) = X 12 + X 11 + X 8 + X 7 + X 6 + X 5 + X 3 + X + 1
Pour calculer les 6 composantes du syndrome il faut calculer les restes des divisions
de r(X) par les 3 polynômes m1 (X), m3 (X) et m5 (X). Après calculs on a
r(X) = (X 8 + X 7 + X 5 + X 4 + X + 1)m1 (X) + X 3 + X 2 + X
r(X) = (X 8 + X 6 + X + 1)m3 (X) + X
r(X) = (X 10 + X 8 + X 7 + X 6 + X 5 + X 4 + X 3 )m5 (X) + X + 1
Les restes des des divisions de r(X) par m1 (X), m3 (X) et m5 (X) s’écrivent donc
respectivement
b1 (X) = X 3 + X 2 + X b3 (X) = X b5 (X) = X + 1
On en déduit maintenant (avec l’aide de la table 5.4) les expressions des 6 compo-
santes du syndrome
s1 = b1 (α) = α3 + α2 + α = α11
s2 = b2 (α2 ) = b1 (α2 ) = α6 +α4 +α2 = (α3 +α2 )+(α+1)+α2 = α3 +α+1 = α7
s3 = b3 (α3 ) = α3
s4 = b4 (α2 ) = b1 (α4 ) = α12 +α8 +α4 = (α3 +α2 +α+1)+(α2 +1)+1 = α3 +1 = α14
s5 = b5 (α5 ) = α5 + 1 = α2 + α + 1 = α10
s6 = b6 (α6 ) = b3 (α6 ) = α6
L’expression du syndrome est donc
S = (α11 , α7 , α3 , α14 , α10 , α6 )
On voit que l’expression du syndrome est cohérente avec une erreur en position 11.
En effet
S = (e(α), e(α2 ), e(α3 ), e(α4 ), e(α5 ), e(α6 ))
D’où e(α) = α11 signale une erreur en position 11. Remarquons que e(α2 ) =
2 3 6
α11 = α22 = α7 , que e(α3 ) = α11 = α33 = α3 , etc..., e(α6 ) = α11 = α66 = α6 .

86 TBA1
H. Dedieu Codes polynômiaux cycliques

5.9.6 Décodage d’un code BCH


Supposons que µ erreurs se produisent lors de la transmission d’un n-uple d’un
code BCH (n, k) et que ces µ erreurs se trouvent aux positions 0 ≤ j1 ≤ j2 ≤
j3 . . . ≤ jµ < n. On a donc

e(X) = ej1 X j1 + ej2 X j2 + . . . + ejµ X jµ = X j1 + X j2 + . . . + X jµ (5.32)

D’après l’équation (5.29) on a les 2t équations suivantes

s1 = αj1 + αj2 + αj2 + . . . + αjµ


s2 = (αj1 )2 + (αj2 )2 + (αj2 )2 + . . . + (αjµ )2
s3 = (αj1 )3 + (αj2 )3 + (αj2 )3 + . . . + (αjµ )3 (5.33)
.. ..
. .
s2t = (αj1 )2t + (αj2 )2t + (αj2 )2t + . . . + (αjµ )2t

Dans l’équation (5.33), les αj1 , αj2 , αj2 , . . . , αjµ sont les inconnues. Une fois ces
inconnues trouvées, on en déduit les positions des erreurs j1 , , j2 , . . . , jµ . Toute
méthode capable de résoudre l’équation (5.33) constitue un algorithme de décodage
des codes BCH. On dispose de plusieurs algorithmes pour le décodage des codes
BCH. La méthode la plus simple, quand n n’est pas trod grand est basé sur la cor-
respondance entre le syndrome et le correcteur qui est stockée en mémoire ROM.

5.10 Codes de Reed-Solomon


Découverts avant les codes BCH, les codes de Reed-Solomon ne sont pourtant
qu’un cas particulier des codes BCH ; ils forment une classe importante des codes
correcteurs que l’on utilise principalement pour traiter les salves d’erreurs. Les
codes de Reed-Solomon (ainsi dénommés en honneur à leurs découvreurs en 1960)
sont des codes BCH particuliers dont les polynômes générateurs sont non binaires
et obéissent à une relation de la forme

g(X) = (X + α)(X + α2 )(X + α3 ) . . . (X + α2t ) (5.34)

où α est l’élément primitif de CG(2m ). Avec de tels codes on traite des éléments
(symboles) de CG(2m ) et par conséquent des m-uples. Les codes de Reed-Solomon
ont la propriété remarquable de pouvoir corriger des blocs de t symboles avec seule-
ment 2t symboles de contrôle. Les paramètres des codes de Reed-Solomon sont les
suivants

TBA1 87
Codes polynômiaux cycliques H. Dedieu

Longueur de bloc n symboles n = (2m − 1) symboles (2m − 1) × m bits par bloc


Nombre de bits de contrôle n − k = 2t symboles 2t × m bits de contrôle
Distance minimale entre mots-code dmin = 2t + 1 symboles

5.10.0.1 Exemple
Trouver le polynôme générateur du code de Reed-Solomon (15, 11).

5.10.0.2 Solution
Le code de Reed-Solomon (15, 11) possède n − k = 15 − 11 = 4 symboles de
contrôle. Les symboles sont des éléments de CG(24 ) car m = 4, (n = 2m − 1 =
15 = 24 − 1). Un tel code est donc capable de corriger t = n−k
2
= 2 symboles dans
des blocs de n = 15 symboles en utilisant 11 symboles d’information et 8 symboles
de contrôle. Selon l’équation (5.34), le polynôme générateur est de la forme

(X + α)(X + α2 )(X + α3 )(X + α4 )

Soit
(X 2 + (α + α2 )X + α3 )(X 2 + (α3 + α4 )X + α7 )
En utilisant les résultats de la table 5.4 concernant les éléments de CG(24 ) on
trouve
(X 2 + α5 X + α3 )(X 2 + α7 X + α7 )
Puis en développant

g(X) = X 4 + α13 X 3 + α6 X 2 + α3 X + α10

5.11 Quelques codes cycliques remarquables

5.11.1 Le code de Golay


Le code de Golay (23, 12) est un code cyclique qui peut être généré soit par

g1 (X) = 1 + X 2 + X 4 + X 5 + X 6 + X 10 + X 11 (5.35)

ou par
g2 (X) = 1 + X + X 5 + X 6 + X 7 + X 9 + X 11 (5.36)
On remarque en effet que

X 23 + 1 = (X + 1)g1 (X)g2 (X) (5.37)

88 TBA1
H. Dedieu Codes polynômiaux cycliques

Ce code est capable de corriger n’importe quelle combinaison de trois erreurs ou


moins dans un bloc de n = 23 bits. Ce code possède 23 − 12 = 11 bits de re-
dondance, le syndrome peut donc représenter 211 = 2048 combinaisons d’erreurs
différentes. Or le nombre de combinaisons possibles correspondant respectivement
à l’absence d’erreurs, à une, deux et trois erreurs possibles sont respectivement.

0 1 2 23 × 22 2 23 × 22 × 21
C23 = 1 C23 = 23 C23 = = 253 C23 = = 1771
2 2×3

Le nombre de combinaisons d’erreurs possibles pour un nombre d’erreurs variant


entre 0 et 3 est
0 1 2 3
C23 + C23 + C23 + C23 = 2048

Le code de Golay est ce que l’on appelle un code parfait car l’ensemble des com-
binaisons d’erreurs que le code peut corriger correspond au nombre de combinai-
sons permises par le syndrome. La correction, une fois le syndrome calculé, peut
être effectuée par inspection d’une table à 2048 entrées puisqu’il existe une corres-
pondance bi-univoque entre le syndrome et l’erreur commise. D’un point de vue
théorique le code de Golay a inspiré un large éventail de recherches, puisqu’il est
avec le code de Hamming le seul code parfait. Malheureusement le code de Golay
ne peut être généralisé à une famille de codes plus large.

5.11.2 Les codes de Fire


Les codes de Fire appartiennent à la première classe de codes qui ont été
construits de façon à corriger les salves d’erreurs. Ces codes présentent un poly-
nôme générateur de la forme

g(X) = (1 + X 2l−1 )p(X) (5.38)

où p(X) est un polynôme générateur irréductible de degré r et 2l − 1 ne doit pas


être divisible par r. Si p(X) est primitif, pour que le code soit cyclique, il faut que
n soit le petit commun multiple de 2l − 1 et de 2r−1 . Comme tout code polynomial,
un code de Fire est capable de détecter les salves d’erreur de longueur inférieure
ou égale à n − k = 2l − 1 + r. On peut montrer qu’un code de Fire est capable de
corriger des salves d’erreurs de longueur l

5.11.2.1 Exemple

à l’aide du polynôme primitif de degré 5, p(X) = 1 + X 2 + X 5 . Construire le


code Fire capable de corriger des salves de longueur l = 5 à l’aide du polynôme
primitif de degré 5, p(X) = 1 + X 2 + X 5 .

TBA1 89
Codes polynômiaux cycliques H. Dedieu

5.11.2.2 Solution
Comme p(X) est un polynôme primitif de degré 5 sa période est 25 − 1 = 31.
(On rappelle que la période est l’entier µ le plus petit pour lequel p(X) divise
1 + X µ ). On doit corriger des salves d’erreur de longueur maximum l = 5 et
2l − 1 = 9 et 31 sont bien premier entre eux. Le polynôme générateur est donc

g(X) = (1 + X 9 )(1 + X 2 + X 5 )

Comme un code cyclique doit être tel que son polynôme générateur (de degré n−k)
divise 1 + X n , n est forcément le plus petit commun multiple entre 9 et 31 soit
n = 279. Or n − k = 9 + 5 = 14. D’où l’on tire que le code est un code (279, 265).

90 TBA1
H. Dedieu Codes polynômiaux cycliques

5.12 Exercices

Exercice 5.1
Soit g(X) un polynôme générateur d’un code bloc (n, k). Montrer que si g(X)
divise (1 + X n ), alors si C1 (X) = c0 + c1 .X + c2 .X 2 + . . . + cn−1 .X n−1 est un
mot-code (correspondant au n-uple ([cn−1 , cn−2 , . . . , c0 ]) alors C2 (X) = cn−1 +
c0 .X + c1 .X 2 + . . . + cn−2 .X n−1 est aussi un mot-code (correspondant au n-uple
([cn−2 , cn−1 , . . . , c0 , cn−1 ]). En déduire qu’une condition nécessaire et suffisante
à l’obtention d’un code cyclique est la divisibilité de (1 + X n ) par g(X).

Exercice 5.2
Pourquoi le polynôme générateur d’un code (n, k) est-il de degré n − k ? Com-
bien de mots-code pourra-t-on générer avec un polynôme générateur d’un tel de-
gré ?

Exercice 5.3
1. Trouver le polynôme générateur d’un code cyclique (7, 4) et donner l’en-
semble des mots-code.
2. Trouver la distance minimale entre les mots-codes et en déduire la capacité
de détection et la capacité de correction du code.
3. Trouver une matrice génératrice systématique d’un tel code (7, 4).
4. La matrice génératrice que vous avez trouvée garde-t-elle les mêmes corres-
pondances entre les mots d’information et les mots-codes que celles trouvées
à la question 1.

Exercice 5.4
Soit un code cyclique (n, k) dont le polynôme générateur est g(X).
1. Montrer que pour l = 1, 2, . . . k, X n−l peut s’écrire sous la forme X n−l =
Al (X).g(X) + Rl (X) et indiquer le degré maximum de Rl (X).
2. En déduire que X n−l + Rl (X) est divisible par g(X).
3. Indiquer à l’aide d’un bloc de bits jusqu’où vont s’étendre les bits correspon-
dants à X n−l et ceux correspondants à Rl (X). Montrer que ces deux types
de bits ne peuvent jamais interférer à la même position.

TBA1 91
Codes polynômiaux cycliques H. Dedieu

4. Montrer qu’une matrice systématique GS peut être constituée en prenant k


lignes induites par les polynômes X n−l + Rl (X) pour l = 1, 2, . . . k.
5. En reprenant l’exemple précédent où le polynôme générateur du code valait
soit g1 (X) = (X 3 + X 2 + 1) ou soit g2 (X) = (X 3 + X + 1), construire
les matrices génératrices GS1 et GS2 des deux codes. Montrer que les deux
codes ont les mêmes capacités de détection et de correction.

Exercice 5.5
Soit un code cyclique ou non (n, k) dont le polynôme générateur est g(X).
Montrer que si le polynôme générateur contient un facteur X +1 alors tout message
de longueur n comportant un nombre impair d’erreurs est détecté.

Exercice 5.6
Soit le circuit de la figure 5.6 dans lequel tous les additionneurs sont modulo 2
(OU exclusif). Soit U (X) un polynôme de degré k − 1 tel que U (X) = u0 + u1 X +
. . . + uk−1 X k−1 correspondant au k-uple [uk−1 , uk−2 , . . . , u0 ] dans lesquels les
ui pour [i = 0 . . . k − 1] appartiennent à CG(2). On suppose que l’on présente à
l’entrée du circuit de la figure 5.6 les bits ui dans l’ordre suivant, uk−1 est envoyé
au temps 0, uk−2 au temps 1, . . . u0 au temps k − 1.
U (X)
1. Montrer que Y (X) est égal à Q(X) = 1+X+X 3
.
2. En déduire la valeur de yi à chaque temps i pour i = 0 . . . k − 1 en fonction
des termes qi du polynôme quotient Q(X) (Q(X) = q0 +q1 .X +q2 .X 2 +. . .).
3. Déduire de la question précédente les composantes du 3-uple qui se trouve à
la sortie des bascules au temps k en fonction de u0 , u1 , u2 , q0 , q1 et q2 .
4. En calculant le reste de la division polynômiale de U (X) par 1 + X + X 3
déduire que ce reste se trouve stocké à la sortie des bascules à l’instant n.
5. Soit k = 7 et U (X) = X + X 2 + X 3 + X 4 + X 6 , trouver le quotient et le
reste de la division polynômiale de U (X) par 1 + X + X 3
6. Présenter maintenant à l’entrée du circuit de la figure 5.6 le 7-uple corres-
pondant au polynôme U (X) = X + X 2 + X 3 + X 4 + X 6 et vérifier que
vous obtenez bien par le circuit le quotient et le reste de la division par
g(X) = 1 + X + X 3 en calculant les sorties des bascules de l’instant 0 à
l’instant 7.
7. Que se passe-t-il en sortie du circuit si l’on continue à itérer jusqu’à n = 9
en mettant à 0 l’entrée depuis l’itération 7 (i.e. u7 = u8 = u9 = 0) ?
8. De manière générale, soit le circuit de la figure 5.7 dans lequel les gi valent 0
ou 1. Dans le cas où gi = 1, cela veut dire qu’il existe un rebouclage unitaire

92 TBA1
H. Dedieu Codes polynômiaux cycliques

entre la sortie yi et l’entrée de l’additionneur correspondant à gi , dans le cas


où gi = 0 le rebouclage correspondant n’existe pas. Montrer que le circuit
divise U (X) par g(X) = 1 + g1 X + g2 X 2 + . . . gm−1 X m−1 + X m .
9. Expliquez comment on calcule le reste de la division polynômiale de U (X)
par g(X) à l’aide du circuit de la figure 5.7.

ui + + yi
D0 D1 D2
+ +

FRGHF\FOLTXHH[RFLUFXLWSGI 

F IGURE 5.6 – Figure associée à l’exercice 5.6 (questions 1 à 7)

+ + + + yi
ui +
D0 D1 D2 Dm-1
+ + + + +
1 g1 g2 g3 gm-1 1

FRGHF\FOLTXHH[RFLUFXLWSGI 

F IGURE 5.7 – Figure associée à l’exercice 5.6 (questions 8 et 9)

TBA1 93
Codes polynômiaux cycliques H. Dedieu

Exercice 5.7
Dans le protocole de liaison de données HDLC (High-level Data Link Control)
on utilise une structure de trame qui a la forme décrite à la figure 5.8.

Fanion Fanion
Adresse Contrôle Données CRC
01111110 01111110
(8 bits) (8 bits) (8.Kd bits) (16 bits)
(8 bits) (8 bits)
KGOFWUDPHSGI 

F IGURE 5.8 – Structure d’une trame HDLC

Les données sont en nombre variable d’une trame à sa suivante mais elles sont
toujours sur un nombre entier d’octets Kd .
Le champ CRC (Cyclic redundancy check) est calculé à l’aide d’un polynôme
générateur normalisé appelé CRC-CCITT V.41 de la forme

g(X) = 1 + X 5 + X 12 + X 16

Le champ CRC est calculé à l’aide d’un polynôme générateur que l’on applique
sur la trame à l’exception des bits de fanion et du CRC lui-même. Le CRC est ici
exclusivement utilisé en détection d’erreurs. Après détection éventuelle d’erreurs,
la trame sera redemandé à l’expéditeur.
1. En appelant k le nombre de bits correspondant au champ d’adresse, de contrôle
et de données, calculez la longueur n des mots-code.
2. Combien y-a-t-il de bits de contrôle par mot-code ? Est-ce en accord avec la
structure de la trame donnée à la figure 5.8 ?
3. Comment calculeriez-vous le mot-code et en particulier les bits de contrôle ?
(Tenez compte du fait que le code est systématique)
4. Montrer que si un nombre impair d’erreurs est présent alors il sera détecté
par le CRC.
5. Montrer que les salves d’erreurs de longueur inférieure à 16 sont détectées.
6. Montrer que toutes les erreurs doubles sont détectées. (Indications : montrer
que le reste de la division de X 17 +1 par g(X) est non nul, puis par récurrence
montrer que si le reste de la division de X l + 1 par g(X) est non nul, alors le
reste de la division de X l+1 + 1 par g(X) est aussi non nul.
7. Montrer que toutes les erreurs simples et triples sont détectées.
8. Montrer qu’il est relativement simple de construire un cas ou une erreur qua-
druple n’est pas détectée.
9. Déduire des 3 questions précédentes la distance minimale entre les mots du
code.

94 TBA1
H. Dedieu Codes polynômiaux cycliques

10. Quelle est la capacité de détection du code ?


11. Quelle serait la capacité de correction si le code était utilisé en correcteur ?
12. Vous êtes chargé de réaliser un code CRC-CCITT V.41 sous forme de circuit.
Votre premier réflexe est de chercher sur Internet un schéma du circuit. Vous
trouvez rapidement le schéma de la figure 5.9, cependant les explications
sont lacunaires. Analyser comment devrait fonctionner ce circuit. Vérifier
que le circuit est correct et expliquer ce que l’on doit faire avec la porte et les
interrupteurs.
13. Après que vous ayez codé avec succès vous êtes chargé du décodage. Quel
circuit allez-vous proposer ?
KGOFFRGHXUSGI

Porte
1

+ + Sortie
D D D D D D D D D D D D D D D D
+ + + +


Entrée

F IGURE 5.9 – Structure d’un codeur CRC-CCITT V.41

TBA1 95
Codes polynômiaux cycliques H. Dedieu

96 TBA1
6

Codes convolutionnels

6.1 Introduction
Les codes convolutionnels diffèrent des codes blocs par le fait que le codeur
possède une mémoire. Dès lors les n valeurs de sortie du codeur à un instant donné
sont calculées non seulement avec les k valeurs d’entrée à cet instant mais aussi à
partir des m valeurs stockées en mémoire dans le codeur. On parle maintenant de
codes (n, k, m). Un code convolutionnel (n, k, m) peut être implémenté à l’aide
d’un circuit séquentiel à k entrées, n sorties et m valeurs mémorisées. Dans les cas
que nous considérerons dans la suite k = 1 ; les séquences d’informations ne seront
pas traitées comme des blocs mais seront traitées de façon continue.

6.2 Encodage de codes convolutionnels


Un exemple de circuit séquentiel implémentant un code convolutionnel (2, 1, 3)
est donné à la figure 6.1. Dans cette figure les additionneurs représentent des OU-
Exclusifs (additions modulo-2), les rectangles représentent des registres mémoires
à décalage qui sont actionnés toutes les T secondes, T étant la période de temps
séparant deux entrées consécutives. Les deux sorties v (1) et v (2) sont calculées à
chaque instant et sont entrelacées de façon à former le bloc de sortie v = (v (1) , v (2) ).

Considérons le codage de la séquence d’entrée u = (1, 0, 1, 1, 1) à l’aide du


circuit implémentant le code convolutionnel (2, 1, 3) présenté à la figure 6.1. Nous

c 2010 HEIG-VD.
°
97
Codes polynômiaux cycliques H. Dedieu

- - v (1)
l -f
¡
µ @
I@
- ¡
@
6 6 @
u v
- - - - - 6- - ¡
@ -
T T T ª f
¡
?
? ? ?
-
- @ v (2)
H@
RH l -f
- j
-

F IGURE 6.1 – Un exemple de code convolutionnel (2, 1, 3)


Itération u s1 s2 s3 v (1) v (2) v
1 1 0 0 0 1 1 11
2 0 1 0 0 0 1 01
3 1 0 1 0 0 0 00
4 1 1 0 1 0 1 01
5 1 1 1 0 0 1 01
6 0 1 1 1 0 1 01
7 0 0 1 1 0 0 00
8 0 0 0 1 1 1 11

TABLE 6.1 – Analyse du circuit précédent en réponse à u = (1, 0, 1, 1, 1)

désignerons respectivement par s1 , s2 , s3 les sorties des bascules avec l’indice s1


pour la bascule de gauche et s2 pour la bascule du milieu. L’analyse du circuit est
donné par la table 6.1
La séquence complète de sortie en réponse à u = (1, 0, 1, 1, 1) est donc
v = (11, 01, 00, 01, 01, 01, 00, 11)
Une autre façon de calculer la sortie du système est d’utiliser la transformée en z
(1) (2)
pour calculer les deux fonctions de transfert VU (z)(z) et VU (z)(z) . En analysant le circuit
on voit que
V (1) (z)
= 1 + z −2 + z −3
U (z)

V (2) (z)
= 1 + z −1 + z −2 + z −3
U (z)
Or U (z) = 1 + z −2 + z −3 + z −4 , d’où
³ ´³ ´
V (1) (z) = 1 + z −2 + z −3 1 + z −2 + z −3 + z −4

98 TBA1
H. Dedieu Codes polynômiaux cycliques

³ ´³ ´
V (2) (z) = 1 + z −1 + z −2 + z −3 1 + z −2 + z −3 + z −4
Soit en développant
V (1) (z) = 1 + z −7
V (2) (z) = 1 + z −1 + z −3 + z −4 + z −5 + z −7
En prenant la transformée en z inverse des deux signaux on trouve

v 1 = (1, 0, 0, 0, 0, 0, 0, 1)

v 2 = (1, 1, 0, 1, 1, 1, 0, 1)
En entrelaçant v 1 et v 2 on retrouve finalement

v = (11, 01, 00, 01, 01, 01, 00, 11)

6.3 Longueur de contrainte d’un code convolutionnel


On appelle longueur de contrainte le nombre

nc = n(m + 1) (6.1)

En effet, chaque bit d’information influence les n sorties du codeur pendant m + 1


itérations. En conséquence nc peut être interprêté comme le nombre maximum de
sorties du codeur qui peuvent être influencées par un simple bit d’information.

6.4 Graphe de transition d’un code convolutif


Dans l’exemple que nous avons traité jusqu’à présent, nous avons considéré le
codeur vu sous l’angle d’une table de fonctionnement tenant compte d’une certaine
séquence d’entrée non exhaustive. Or le codeur étant une machine à nombre d’états
finis une représentation plus globale et plus fonctionnelle du codeur devrait exister.
Cette représentation est donnée par le graphe de transition du codeur. On appel-
lera état du codeur l’ensemble des variables mémoires du codeur. 1 Soit le codeur
convolutionnel (2, 1, 2) défini par la figure 6.2 Pour un tel codeur il y a 22 = 4
états accessibles possibles et pour chacun de ces états accessibles il y a 2 entrées
possibles. Dès lors une table de 8 lignes spécifie de façon exhaustive le comporte-
ment du codeur, (voir table 6.2). Le diagramme de transition de phase de la figure
6.3 spécifie de façon complète le comportement du codeur. Dans ce diagramme les
1. On appelle en général état d’une machine l’ensemble minimal de variables qui permet avec
les entrées de calculer complètement la sortie de la machine à tout instant.

TBA1 99
Codes polynômiaux cycliques H. Dedieu

-f
(
v 1) @
I@
- @
l @
6 @
@
@
u 6 @¡
- - - - - 6 ¡
ª@ v -
T T f
s1 s ?
2
?

- l ¾

v ( 2)
-f

F IGURE 6.2 – Exemple de codeur convolutionnel (2, 1, 2)

Entrée Etat Etat suivant Sorties


u s1 s2 u s1 v (1) v (2)
0 00 00 00
1 00 10 11
0 01 00 11
1 01 10 00
0 10 01 10
1 10 11 01
0 11 01 01
1 11 11 10

TABLE 6.2 – Table de fonctionnement du codeur

états se trouvent dans les cercles, les sorties du codeurs se trouvent indiquées lors
des transitions d’états ; par exemple pour la transition entre l’état 00 et l’état 10 on
indique par 1/11 que l’arrivée de l’entrée 1 a généré une sortie 11.
6.4.1 Remarque fondamentale concernant le codage
Lorsque l’on code à l’aide d’un code convolutionnel (n, 1, m) une information
de longueur 1 bit se trouve codée par n bits. Cependant si l’on considère qu’un bloc
de L bits pénétre séquentiellement dans le codeur, ce bloc est encodé par un code
de longueur n(L + m) car n.m sorties supplémentaires sont générées par le codeur
après que la dernière information non nulle ait pénétrée dans le codeur. Si au début
du bloc le codeur était dans son état initial nul, au bout du temps (L + m), le codeur
reviendra dans son état initial nul. Pour nous en convaincre, reprenons l’exemple du

100 TBA1
H. Dedieu Codes polynômiaux cycliques

1/10
-
-
@
I
@ ¡
@ #Ã ¡
@ ¡
ª
11
µ
¡"! @
¡
¡ @
@@
@
R
0/01
1/01
¡µ
¡¡
@
¡
¡ @
¡ 0/10 @#Ã
R
@
#Ã - -
10
¾ ¾ 01
"! 1/00 "!
@
I ¡
@ ¡
@ ¡
ª
¡¡
@
I ¡ 0/11
1/11@@
@ #Ã ¡
@ ª
¡
00
¡ "!@
I
@
¡ @
¡
ª - @
-
0/00

F IGURE 6.3 – Diagramme de transition de phase

TBA1 101
Codes polynômiaux cycliques H. Dedieu

codeur (2, 1, 3) de la figure 6.1. On code ici une information u = (1, 0, 1, 1, 1)


de longueur L = 5. On remarque que le code généré est de longueur n(L + m) =
2(5 + 3) = 16 et que la durée du codage est L + m = 5 + 3 = 8 ; au bout de
8 itérations, le codeur est bien revenu dans son état initial. Les m = 3 dernières
itérations du codeur correspondent à des itérations à entrée nulle.

Itération Entrée Etat Etat suivant Sortie


(1) (2)
u s1 s2 s3 u s1 s2 v v v
1 1 0 0 0 1 0 0 1 1 11
2 0 1 0 0 0 1 0 0 1 01
3 1 0 1 0 1 0 1 0 0 00
4 1 1 0 1 1 1 0 0 1 01
5 1 1 1 0 1 1 1 0 1 01
6 0 1 1 1 0 1 1 0 1 01
7 0 0 1 1 0 0 1 0 0 00
8 0 0 0 1 0 0 0 1 1 11

TABLE 6.3 – Analyse du circuit de la figure 6.1 en réponse à u = (1, 0, 1, 1, 1)

6.4.2 Diagramme en treillis associé à un code convolutionnel


Soit un bloc de longueur L que l’on veut encoder à l’aide d’un code convo-
lutionnel (n, 1, m). On sait d’après la remarque précédente que les mots codes
résultants seront de longueur n(L + m) et qu’après L + m itérations, le codeur
sera revenu dans son état initial. L’ensemble des possibilités d’encodage peut être
apprécié avec un diagramme en treillis dont l’utilité nous apparaîtra clairement
lorsqu’on considèrera le problème du décodage. Pour illustrer ce qu’est un dia-
gramme treillis reprenons l’exemple du code convolutionnel (2, 1, 2) associé au
circuit de la figure 6.2. Un tel code à 2m = 22 = 4 états. Décidons de noter l’état
00 par S0 , l’état 01 par S1 , l’état 10 par S2 et l’état 11 par S3 . Considérons main-
tenant l’encodage de blocs de L = 3 bits. Le diagramme en treillis de la figure 6.4
montre l’ensemble des 8 mots codes qui sont générés. Par exemple lorsqu’on veut
coder 111 on voit que l’arrivée du premier 1 génère une transition S0 → S2 et que
la sortie générée est 11, puis l’arrivée du second 1 génère une transition S2 → S3
pour une sortie 01, enfin l’arrivée du troisième 1 génère une transition S3 → S3 .
Toutefois il faut m = 2 itérations de plus pour "désarmer" la mémoire du codeur en
imposant des entrées nulles pendant m itérations. Dès lors une quatrième itération
supplémentaire sera nécessaire pour passer de S3 → S1 par l’intermédiaire d’un
0 en entrée (01 en sortie) et une cinquième itération pour passer de S1 → S0 par

102 TBA1
H. Dedieu Codes polynômiaux cycliques

L = 3 sorties m = 2 sorties
¾ -¾ -

º· 0/00 º· 0/00 º·
0/00-
º·
0/00- º· 0/00-
º·
S0 - S0 - S0 S0 S0 S0
¹¸ ¹¸ ¹¸ 3́ ¹¸ ´3́ ¹¸ 3́¹¸
J1/11 J
1/11 1/11
J ´ ´ ´
J J J
´
´ 0/11 ´ 0/11 ´
´ 0/11
J J º· ´ J º· ´ º· ´
J J S1 J S1 S1
J J´3́ ¹¸ ´ J3́ ¹¸ 3́¹¸
J ´ J
1/00
Q ´ J­ ´
Q Á ´ ­­ Á
J^ 0/10´ J 0/10´ Q ­J ´
Jº· ´ J
^º· ´ Q­QJ
^º· ´0/10 ­
s
S2 S2 ­ S2 ­
¹¸ Z ¹¸ Z 0/01
­ ¹¸­
0/01
Z Z­ ­
Z1/01 ­ Z 1/01 ­
Z º· ­ Z º· ­
~
Z ~
Z
S3 - S3
¹¸ 1/10 ¹¸

F IGURE 6.4 – Diagramme en treillis associé au circuit de la figure 6.2 (code convo-
lutionnel (2, 1, 2))

l’intermédiaire d’un 0 en entrée (10 en sortie). Le codage de 111 est donc selon
111 −→ 1101100111
L’ensemble des 8 possibilités de codage pour L = 3 est représenté à la table 6.4.
Mot en entrée du codeur Mot en sortie du codeur
000 00 00 00 00 00
001 00 00 11 10 11
010 00 11 10 11 00
011 00 11 01 01 11
100 11 10 11 00 00
101 11 10 00 10 11
110 11 01 01 11 00
111 11 01 10 01 11

TABLE 6.4 – Codes générés pour des mots de longueur L = 3 par le code convolu-
tionnel (2, 1, 2) associé au circuit de la figure 6.2

6.4.2.1 Remarques fondamentales concernant le diagramme en treillis


Le codeur commence à coder depuis l’état S0 (éléments mémoires initialisés à
0) et revient dans le même état S0 . Les m premières itérations correspondent au

TBA1 103
Codes polynômiaux cycliques H. Dedieu

L=6 m=2
¾ - ¾ -
¶³ ¶³ ¶³ ¶³ ¶³ ¶³ ¶³ ¶³ ¶³
0/00 0/00 0/00 0/00 0/00 0/00 0/00 - 0/00
S0 - S0 - S0 - S0 - S0 - S0 - S 0 S 0 - S0
µ´ µ´ µ´ 1/11 µ´ 1/11 µ´ 1/11 3́ µ´ 1/11 3́ µ´ 3́ µ´ 3́µ´
J1/11 1/11 J 0/113́ J ´ 3́ J ´ J ´ 0/11
´ 0/11
J 0/11 0/11 ´
´ 0/11
´ ´
J J ´
J ´
J J ´
J ¶³ ´ ¶³ ´
¶³ ´ ¶³ ´ ¶³ ´ ¶³ ´ ´
J
J
J
J
S1
J 3́ µ´
J S1 JJ S1 JJ S1
J3́ µ´
S1
J3́ µ´
S1
3́ µ´ 1/00 3́ µ´ 1/00 3́µ´
J ´ Q1/00´ JÁ Q 1/00´ JÁ Q ´J Q ´J ´ ­
0/10´ J Q ­­
´ Q ­­
´ Q ­­
´ Á Q ­­
´
0/10
Á
J ´ ­Á
0/10
J
J
^¶³ ´ J
^
J¶³ 0/10
´ Q­
J
J
^ ¶³0/10
´ Q­
J
J
^ 0/10
¶³ ­´ Q J
J
^¶³ ´ Q­Q
s
J
^ ¶³ ´ ­
s
Q s
Q Q
s S2
S2 S2 ­ S2 ­ S2 ­ S2 ­ ­
µ´ µ´ Z­ µ´ Z­ µ´ Z­ µ´ Z­ µ´ ­
Z Z
Z Z Z ­Z ­ Z ­
1/01
Z ¶³
­ Z
0/01 1/01
¶³
­
0/01 1/01
Z ¶³ 0/01 Z
1/01¶³ 0/01 1/01
¶³ 0/01
­ ~
Z ­ Z
~ ­ ~
Z ­ Z
~ ­
~
Z - S - S3
S3 - S3 - S3 3
µ´ 1/10µ´ 1/10µ´ 1/10 µ´ 1/10µ´

F IGURE 6.5 – Diagramme en treillis associé au circuit de la figure 6.2 pour L = 6


(code convolutionnel (2, 1, 2))

départ depuis l’état S0 et les m dernières au retour vers l’état S0 . Il s’ensuit que que
tous les états ne peuvent être atteints durant les m − 1 premières et les m dernières
itérations du codeur. Cependant dans la portion centrale du treillis (itérations m à L)
tous les états sont accessibles. En particulier depuis l’itération m jusqu’à l’itération
L − 1 pour chaque état du treillis il y a 2 branches sortantes et depuis l’itération
m + 1 jusqu’à l’itération L il y a toujours 2 branches entrantes ; en conséquence le
treillis est formé d’une réplique symétrique de transitions entre les itérations m + 1
et L − 1 Ceci n’apparaît pas directement sur la figure 6.2 car L est trop petit dans ce
cas, pour s’en convaincre on pourra observer le diagramme en treillis de la figure
6.5 où L = 6 ; la zone centrale du treillis est indiquée à l’intérieur du rectangle.
Pour chacun des 2L mots pouvant entrer dans le codeur il existe un chemin unique
à travers le treillis ; ce chemin est de longueur n(L + m). En suivant un chemin
particulier on peut directement écrire la correspondance entre le mot d’entrée (L
premières itérations) et le mot code résultant ; par exemple pour le chemin indiqué
en traits gras à la figure 6.6 on a la correspondance

101111 −→ 1110000110100111

104 TBA1
H. Dedieu Codes polynômiaux cycliques

L=6 m=2
¾ - ¾ -
¶³ ¶³ ¶³ ¶³ ¶³ ¶³ ¶³ ¶³ ¶³
0/00 0/00 0/00 0/00 0/00 0/00 0/00- S0 0/00
S0 - S0 - S0 - S0 - S0 - S 0
- S 0 - S0
µ´ µ´ µ´ 1/11 3́ µ´ 1/11 3́ µ´ 1/11 3́ µ´ 1/11 3́ µ´ 3́ µ´ ´ 3́ µ´
J1/11
1/11
J J 0/11 J ´ 0/11 J ´ J ´ 0/11 0/11
´ 0/11
´
´ 0/11
´ ´ ´
J ´
J ´
J J ´
J ¶³ ´ ¶³
J ¶³ ´ J ¶³´ J ¶³ ´ J ¶³ ´ J ´
J J S S S S1 S1
S1 1 1 J 1 J3́ µ´
J J 3́ µ´ Z J3́ µ´
1/00 1/00
J3́ µ´ 3́ µ´
1/00
Q ´J Q1/00´ JÁ
3́µ´
´J Z´ J­ Q ´J ´ Á
J ´ J ´ Z­Á Q ­­
´ Á Q ­­
´ Á Q ­­
´ ´ ­­
0/10
J 0/10
¶³ ´ ^
J ¶³0/10
´ J
J
^ ¶³0/10
´ Q J
J
^¶³ 0/10
´ Q J
J
^ ¶³ 0/10
´ Q J
J
^ ¶³ ´ ­
J
^ ­Z
~ ­
s
Q ­
Q
s ­Q
s
S2 S2 ­ S2 ­ S2 ­ S2 ­ S2 ­
µ´ µ´ Z­ µ´Z­ µ´ Z­ µ´ Z­ µ´ ­
Z Z
Z Z Z ­Z ­ ­
1/01
Z
­ Z
0/01 1/01
¶³
­
0/011/01
Z 0/01 Z
1/01¶³ 0/01 Z1/01
¶³ 0/01
~
Z
¶³ ­ ~
Z ­ ~ ¶³
Z ­ ~
Z ­ Z
~ ­
S3 - S3 - S3 - S3 - S3
µ´ 1/10µ´ 1/10µ´ 1/10 µ´ 1/10µ´

F IGURE 6.6 – Un chemin particulier pour le diagramme en treillis associé au cir-


cuit de la figure 6.2 pour L = 6 (code convolutionnel (2, 1, 2)) 101111 −→
11 10 00 01 10 10 01 11

6.5 Décodage d’un code convolutionnel

6.5.1 Introduction au décodage selon l’algorithme de Viterbi


Nous allons envisager ici un décodage des mots reçus selon le principe que les
mots seront corrigés (s’il y a lieu) en échangeant le mot reçu contre le mot code qui
se trouve à la distance de Hamming la plus proche.

6.5.1.1 Quand le mot reçu appartient au code ...


Si le mot reçu appartient à un chemin possible à travers le treillis on en déduit
que le syndrome est nul et l’on peut recomposer facilement la séquence de suc-
cession d’états en même temps que la séquence d’entrée. Par exemple si pour le
diagramme en treillis 6.6, le récepteur reçoit la séquence 11 10 00 01 10 10 01 11,
ayant connaissance du diagramme en treillis du codeur, il s’aperçoit que les deux
premiers bits 11 ont été émis lors d’une transition S0 → S2 sous l’impulsion d’une
entrée 1, puis que deux bits suivants 10 ont été émis lors d’une transition S2 → S1
sous l’implusion d’un 0, etc .... Il reconstitue sans peine le message avant codage
101111.

6.5.1.2 Quand le mot reçu n’appartient pas au code ...


Il semble a priori qu’il faille comparer le mot reçu au 2L mots-code possibles.
Si L devient grand cette façon de faire devient prohibitive du point de vue du coût

TBA1 105
Codes polynômiaux cycliques H. Dedieu

calculatoire et du stockage en mémoire. C’est ici qu’intervient un algorithme de


décodage très puissant introduit par Viterbi en 1967. Nous allons décrire d’abord
cet algorithme, nous justifierons ensuite son optimalité ; nous raisonnerons d’abord
sur un exemple particulier avant d’énoncer et de justifier le principe dans sa géné-
ralité. Reprenons l’exemple du codeur (2, 1, 2) de la figure 6.2 utilisé pour coder
des mots de longueur L = 3. Si nous récrivons la table de codage en calculant
la distance entre les mots du code on trouve dmin = 5 ce qui prouve que le code
est capable de détecter jusqu’à 4 erreurs et peut en corriger 2. Supposons que l’on
reçoive le mot 0001111111, ce mot n’appartient pas au code et envisageons de le
corriger.

Mot en entrée du codeur Mot en sortie du codeur d


000 00 00 00 00 00 -
001 00 00 11 10 11 5
010 00 11 10 11 00 5
011 00 11 01 01 11 6
100 11 10 11 00 00 5
101 11 10 00 10 11 6
110 11 01 01 11 00 6
111 11 01 10 01 11 7

TABLE 6.5 – Codes générés pour des mots de longueur L = 3 par le code convo-
lutionnel (2, 1, 2) associé au circuit de la figure 6.2, d indique toutes les distances
possibles entre les mots du code

1. Etape 1. Plaçons nous d’abord à l’itération j = m. Pour chaque état Si ,


i = 0 . . . 3, il n’existe qu’un seul chemin possible conduisant du S0 initial
(itération 0) à l’état Si de l’itération m. On calcule alors la distance entre le
chemin sur le treillis et les n.m premiers bits reçus. Par exemple pour l’état
S0 de l’itération m (m = 2), les transitions d’états sont S0 → S0 → S0 , le
chemin optimal est 00 00 alors que l’on a reçu 00 01. On indique pour S0 une
distance 1. Pour S1 , les transitions d’état sont S0 → S2 → S1 , et le chemin
optimal est 11 10 alors que l’on a reçu 00 01. On indique pour S0 une distance
4. Pour S2 on calcule ainsi la distance entre 00 11 et 00 01 et l’on indique une
distance 1. Par le même principe pour S3 on calcule la distance entre 1101 et
00 01 qui indique une distance 2. Ces résultats sont décrits par la figure 6.7.
2. Etape 2. Accroissons maintenant j → j + 1. Pour chaque état Si i = 0 . . . 3
associé à l’itération j on calcule la distance entre le chemin menant de S0
à l’itération 0 à Si à l’itération j. On n’a pas besoin de recalculer toutes
les distances, en effet pour l’état S0 qui est obtenu à l’itération 3 selon les
transitions d’états S0 → S0 → S0 → S0 , on devrait calculer la distance

106 TBA1
H. Dedieu Codes polynômiaux cycliques

L=3 m=2
¾ -¾ -

º· 0/00- º· 1º·
0/00 -
S0 S0 S0
¹¸ ¹¸ ¹¸
J J
J 1/11 J 1/11
J J 4º·
J J S1
J J´3́ ¹¸
J 0/10´ J
J^ ´ JJ
Jº· ´ ^º·
1
S2 S2
¹¸
Z ¹¸
Z
Z
Z º·
1/01 ~
Z
S3
2 ¹¸

F IGURE 6.7 – Décodage de Viterbi pour le codeur (2, 1, 2) associé au circuit de la


figure 6.2 ; on se place d’abord à l’itération m (m = 2)

entre 00 00 00 et le message reçu 00 01 11, cette distance donnerait 3. Il est


plus commode et équivalent de cumuler la distance entre 00 00 et 00 01 déjà
calculée précédemment et indiquée sur le diagramme en treillis partiel 6.7.
En effet d(00 00 00, 00 01 11) = 1 + d(00, 11) = 3. Comme il y a deux
façons d’accéder à chaque état Si , on note la paire de distances associée à
chaque chemin menant à Si . Ceci est décrit par la figure 6.8. Pour chaque état
Si à l’itération j il existe donc deux chemins, l’un des deux est sous-optimal
puisqu’il montre une distance supérieure ; on peut donc élaguer le treillis en
supprimant pour chaque état le chemin qui est sous-optimal, chaque état se
trouve maintenant associé à une seule métrique. Ceci est montré à la figure
6.9.
3. Etape 3. Tant que j < L + m on revient à l’étape 2. Dans le cas contraire
on arrête. L’ensemble de l’étape 2 est représenté aux figures 6.10 à 6.12. A
l’étape 3 il ne reste plus qu’un chemin optimal représenté à la figure 6.13. Ce
chemin indique un mot code corrigé 00 00 11 10 11. Le mot avant codage
peut être aussi lu sur le diagramme en considérant les entrées associés aux
L = 3 premières transitions d’état, on trouve un mot avant codage égal à 001.

TBA1 107
Codes polynômiaux cycliques H. Dedieu

bits reçus L=3 m=2


¾ 00 01 11 -¾ -

º· 0/00- º· 1º· 0/00 3 º·


0/00- -
S0 S0 S0 S0
¹¸ ¹¸ ¹¸ 43́ ¹¸
J J 1/11
J ´ 0/11
J 1/11 J 1/11 ´

J J 4º· ´J º·
2
>
½
J J S1 J ½ S1
J J´3́ ¹¸ ½J 3 ¹¸
J 0/10´ J
1/00
Z½ J ¢̧
J^ ´ J^º· ½Z ¢
Jº· 0/10 Z ¢J^ 1
´
1J ½
¢Z J º·
S2 S2 ~
Z S2
¹¸ ¹¸ ¢ 6¹¸
Z Z
Z Z¢
Z 0/01¢Z
Z º· ¢ Z2 º·
1/01 ~
Z ~
Z
S3 ¢ - S3
2 ¹¸ ¹¸
1/103

F IGURE 6.8 – Décodage de Viterbi pour le codeur (2, 1, 2) associé au circuit de la


figure 6.2 ; on se place à l’itération j = m + 1 = 3

bits reçus L=3 m=2


¾ 00 01 11 -¾ -

º· º· 1º· 3 º·
0/00
- 0/00- 0/00 -
S0 S0 S0 S0
¹¸ ¹¸ ¹¸ ¹¸
J J J 1/11
J 1/11 J1/11
J
J J 4º· º·
J 2
J J S1 J S1
J J´3́ ¹¸ J´3́ ¹¸
J ´ J ´J
J^ ´
´0/10 JJ
Jº· ^º· ´
´0/10 J^ 1
J º·
1
S2 S2 S2
¹¸
Z ¹¸Z ¹¸
Z Z
Z
1/01 Z
1/01 Z º· ZZ
2 º·
~
Z ~
S3 S3
2 ¹¸ ¹¸

F IGURE 6.9 – Décodage de Viterbi pour le codeur (2, 1, 2) associé au circuit de


la figure 6.2 ; on se place à l’itération j = m + 1 = 3, on élague les chemins
sous-optimaux.

108 TBA1
H. Dedieu Codes polynômiaux cycliques

bits reçus L=3 m=2


¾ 00 01 11 -¾
11 -

º· º· 1º· 3 º· 5º·
0/00
- 0/00- 0/00 - 0/00-
S0 S0 S0 S0 S0
¹¸ ¹¸ ¹¸ ¹¸ 0/11 3́ ¹¸
J J J 1/11 ´
J 1/11 J1/11 ´ 2
J ´
J J 4º· º· ´ º·
J 2
J J S1 J S1 2 S1
J J´3́ ¹¸J 3́ ¹¸ ´3́ ¹¸
J ´ J ´
´J
1/00 ´ ¢¢̧ 3
J^ ´ J ´ ´
Jº· ´0/10 J
1^º· ´0/10JJ 1 ´
^ º· 0/10 ¢
S2 ¢
S2 S2 ¢
¹¸
Z ¹¸ Z ¹¸
Z ¢
Z 1/01 Z ¢
1/01Z 2 º·
Z º· ZZ ~ 0/01
¢
~
Z
S3 S3 ¢
2 ¹¸ ¹¸

F IGURE 6.10 – Décodage de Viterbi pour le codeur (2, 1, 2) associé au circuit de


la figure 6.2 ; on se place à l’itération j = 4.

TBA1 109
Codes polynômiaux cycliques H. Dedieu

bits reçus L=3 m=2


¾ 00 01 11 -¾
11 -

º· º· 1º· 3 º· º·
0/00
- 0/00- 0/00 -
S0 S0S0 S0 S0
¹¸ ¹¸ ¹¸ ¹¸ 0/11
3́ ¹¸
J J J 1/11 ´
J 1/11 J1/11 ´ 2
J ´
J J 4º· º· ´ º·
J 2
J J S1 J S 1 2 S1
J J´3́ ¹¸J 3́ ¹¸ ´ 3́ ¹¸
J ´ J ´ ´
´ ´J ´
J^
Jº·
´0/10 JJ
^º· ´ J 1
º·´
´0/10 J
1 ^ 0/10
S2 S2 S2
¹¸
Z ¹¸Z ¹¸
Z Z
1/01Z
1/01Z 2 º·
Z º· ZZ ~
~
Z
S3 S3
2 ¹¸ ¹¸

F IGURE 6.11 – Décodage de Viterbi pour le codeur (2, 1, 2) associé au circuit de la


figure 6.2 ; on se place à l’itération j = 4 après élagage des chemins sous-optimaux.

bits reçus L=3 m=2


¾ 00 01 11 -¾
11 11 -

º· º· 1º· 3 º· º· 4 º·
0/00
- 0/00- 0/00 - 0/00-
S0 S0 S0 S 0 S0 S0
¹¸ ¹¸ ¹¸ ¹¸ 0/11
3́ ¹¸ 3́¹¸
J J J 1/11 ´ ´
J 1/11 J1/11 ´ 2 ´ 2
J ´ ´
J J 4º· º· ´ º· ´ 0/11
J 2
J J S1 J S1 2 S1
J J´3́ ¹¸J 3́ ¹¸ ´3́ ¹¸
J ´ J ´ ´
´ ´J ´
J^
Jº·
´0/10 JJ
^º· ´ J 1 ´
1 ^ º·
´0/10 J 0/10
S2 S2 S2
¹¸
Z ¹¸Z ¹¸
Z Z
1/01
Z Z
1/01 Z º· ZZ
2 º·
~
Z ~
S3 S3
2 ¹¸ ¹¸

F IGURE 6.12 – Décodage de Viterbi pour le codeur (2, 1, 2) associé au circuit de


la figure 6.2 ; on se place à l’itération j = L + m = 5.

110 TBA1
H. Dedieu Codes polynômiaux cycliques

bits reçus L=3 m=2


¾ 00 01 11 -¾
11 11 -

º· º· 1º· 3 º· º· º·
0/00
-
0/00- 0/00 -
S0 S0 S0 S 0 S 0 S0
¹¸ ¹¸ ¹¸ ¹¸ 0/11
3́ ¹¸ 3́ ¹¸
J ´ ´
J 1/11 J 1/11 ´ 2 ´ 2
J 1/11 J J ´ ´
J 4º· º· ´ º· ´ 0/11
J J 2
J J S1 J S 1 2 S1
J J´3́ ¹¸J 3́ ¹¸ 3́ ¹¸
´ J ´ ´
J ´ ´J ´
JJ ´0/10 JJ ´ ´
1 0/10
^ º· 1^º·
´0/10JJ
^ º·´
S2 S2 S2
¹¸
Z ¹¸Z ¹¸
Z Z
1/01
Z Z
1/01 Z º· ZZ
2 º·
~
Z ~
S3 S3
2 ¹¸ ¹¸

F IGURE 6.13 – Décodage de Viterbi pour le codeur (2, 1, 2) associé au circuit de


la figure 6.2 ; on se place à l’itération j = L + m = 5, après élagage du dernier
chemin sous-optimal on trouve le mot code corrigé 00 00 11 10 11 qui correspond
au mot avant codage 001

TBA1 111
Codes polynômiaux cycliques H. Dedieu

6.5.2 Algorithme de Viterbi pour un codeur (n, 1, m)


On énonce maintenant le fonctionnement de l’algorithme de Viterbi dans le cas
général. Cette algorithme se décompose en 3 étapes principales.

6.5.2.1 Etape 1
On se place à l’itération j = m où les 2m états sont "visités" par un seul chemin.
Pour chaque état à cette itération on indique la distance entre le chemin accédant à
l’état et la séquence des n.m premiers bits reçus. On mémorise cette distance pour
(m)
chaque état. On note di la distance entre le chemin menant de l’état initial à l’état
i de l’itération j = m et la séquence des n.m bits reçus.

6.5.2.2 Etape 2
On accroît j d’une unité, j → j + 1. Pour chaque état, il existe maintenant deux
chemins d’accès. On calcule par récurrence les 2 distances entres les 2 chemins
possibles et la séquence des n.j premiers bits reçus. Pour ce faire, s’il existe une
transition possible entre un état k à l’itération j − 1 et un état l à l’itération j, on
calcule
(j) (j−1)
dl = dk + d(ok l , rj ) (6.2)
où ok l est la sortie de n bits associée à la transition entre l’état k à l’itération j − 1
et l’état l à l’itération j et rj est la séquence de n bits reçus situés aux positions (j −
(j)
1)n+1 à j.n. Pour l = 1 . . . 2m chacun des états Sl possède 2 métriques associées
(j)
à 2 chemins d’accès permettant de visiter Sl . On supprime alors pour chaque état
le chemin d’accès sous-optimal qui possède la métrique la plus grande. Après cette
(j)
opération d’élagage il n’existe plus qu’un chemin pour accéder à chacun des Sl
(j)
et qu’une métrique associée à chacun des Sl .

6.5.2.3 Etape 3
On teste si j = L + m et on revient à l’étape 2 tant que cela n’est pas vrai.
Lorsque cela est vrai on dispose d’un seul chemin permettant de parcourir le treillis
et ce chemin est forcément le chemin optimal car tous les sous-chemins éliminés à
l’étape 2 ne peuvent faire partie du chemin optimal.

6.5.3 Décodage selon le principe du maximum de vraisemblance


On suppose ici aussi qu’on utilise un codeur (n, 1, m) et qu’on code une sé-
quence de L bits
u = u0 , u1 , u2 , . . . , uL−1

112 TBA1
H. Dedieu Codes polynômiaux cycliques

en une séquence de longueur N = n(L + m) de la forme

v = v0 , v1 , v2 , . . . , vN −1

Supposons maintenant que la séquence v soit envoyée sur un canal discret sans
mémoire et que l’on échantillonne les données vi entachées de bruit sur Q niveaux.
On dispose alors d’une séquence r de la forme

r = r0 , r1 , r2 , . . . , rN −1

Pour chaque ri sur Q niveaux on peut supposer que par mesure on peut modéliser
l’effet du canal sous la forme de la probabilité de recevoir ri sachant que l’on a
émis vi . Lorsque les vi sont binaires et les ri sur Q niveaux, la modélisation du
canal se fait par l’intermédiaire d’une table p(ri |vi ) à 2 lignes et Q colonnes. On se
pose maintenant la question de savoir, étant donné un message reçu r, de trouver
le message émis v le plus probable 2 . On veut donc minimiser la probabilité de se
tromper c’est-à-dire que l’on cherchera v̂ qui minimise

p(v̂ 6= v|r)

Ceci revient donc à maximiser la probabilité

p(v̂ = v|r)

Or ceci revient encore à trouver le v̂ qui parmi tous les v possibles va maximiser

p(r|v)p(v)
p(v|r) = (6.3)
p(r)

Pour une source à entropie maximale, p(v) est la même pour tous les v, d’autre
part r étant reçu p(r) est une constante qui n’intervient pas dans la maximisation
de l’équation (6.3). Il s’ensuit que maximiser (6.3) revient à trouver le v̂ qui parmi
tous les v possibles va maximiser

p(r|v) (6.4)

Si l’on suppose que le canal est un canal qui superpose au signal vi un bruit blanc
Gaussien on a
NY
−1
p(r|v) = p(ri |vi ) (6.5)
i=0

(Cette dernière équation est valide car le canal et sans mémoire et que les échan-
tillons de bruits sont indépendants entre eux par hypothèse.) Dès lors le problème
2. Les v et les u étant en correspondance bi-univoque, trouver le v le plus probable est équivalent
à trouver le u le plus probable.

TBA1 113
Codes polynômiaux cycliques H. Dedieu

de trouver le v̂ le plus probable revient à celui de trouver les v̂i i = 0 . . . N − 1


qui vont maximiser (6.5). Cette méthode est appelée méthode du maximum de
vraisemblance et un décodeur qui maximise (6.5) est dit décodeur à maximum de
vraisemblance . Pour des raisons de commodité d’implémentation, on choisit sou-
vent de maximiser le logarithme de la fonction (6.5) enfin d’échanger une somme
par un produit, i.e
N
X −1 ³ ´
log (p(r|v)) = log p(ri |vi ) (6.6)
i=0

6.5.4 Algorithme de Viterbi pour la méthode du maximum de


vraisemblance
On a présenté jusqu’à présent l’algorithme de Viterbi avec des métriques qui
utilisaient la distance de Hamming. Ceci équivalait à faire l’hypothèse implicite que
le canal avait certaines bonnes propriétés, par exemple q’il était binaire symétrique.
Dans un cas plus général on remplacera la distance de Hamming qui intervient dans
l’algorithme de Viterbi par la fonction de log-vraisemblance. C’est-à-dire que la
récurrence ( 6.2) sera remplacé par l’équation
(j) (j−1)
dl = dk + log(p(rj |vj = ok l )) (6.7)

Mis à part ce changement de métrique, l’algorithme de Viterbi s’applique de façon


identique.

Problème 1
Un codeur convolutionnel de type (3, 1, 2) est donné à la Figure 6.14.

+ y1
+
+ y2
+
x D D
+ y3
+
F IGURE 6.14 – Codeur convolutionnel (3, 1, 2)

1. Donner la table de fonctionnement du codeur convolutionnel.

114 TBA1
H. Dedieu Codes polynômiaux cycliques

2. En déduire la diagramme de transistion d’états.


3. Quelle séquence de sortie correspondra à la séquence d’entrée 0101100
4. On reçoit le message 111010001011011111011, corrigez ce message si né-
cessaire avec un algorithme de Viterbi et trouvez le mot d’information le plus
probable lui correspondant.

6.6 Exercices

Problème 2
Soit le codeur convolutionnel (3, 1, 2) qui est décrit par la Figure 6.15.

v(1)

+ +

u
T T

+ +
+

v(2)

+
v(3)
+

F IGURE 6.15 – Figure associée au problème 2

Pour un tel codeur


1. Trouver la table de fonctionnement du codeur.
2. Trouver le graphe de transition de phase du codeur.
3. Soit une séquence d’entrée de la forme

101010000011

trouver la réponse du codeur.

TBA1 115
Codes polynômiaux cycliques H. Dedieu

v(1)

+ +

u
T T

+ +
+

v(2)

F IGURE 6.16 – Figure associée au problème 3

Problème 3
Soit le codeur convolutionnel (2, 1, 2) qui est décrit par la Figure 6.16.
Pour un tel codeur
1. Trouver sa table de fonctionnement.
2. Trouver le graphe de transition de phase du codeur.
3. Dessiner le diagramme en treillis associé au codeur pour un message d’entrée
de longueur L = 3 bits (on veillera à désarmer le codeur).
4. Parcourez le diagramme en treillis pour le message d’entrée 110 et donnez la
mot en sortie du codeur.
5. Sachant que vous recevez une séquence (éventuellement entachée d’une er-
reur) de la forme

0011111100

encodée à l’aide du codeur de la Figure 3. Décodez cette séquence à l’aide


d’un algorithme de Viterbi et donnez la séquence d’entrée la plus plausible.

116 TBA1
7

Modulations numériques

CONTENU

7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . 118


7.2 Technique par saut de phase . . . . . . . . . . . . . . . 118
7.2.1 Technique par saut de phase binaire (BPSK) . . . . . . . 118
7.2.2 Démodulation optimale (BPSK) . . . . . . . . . . . . . 119
7.2.3 Probabilité d’erreur avec un système BPSK en présence
de bruit blanc Gaussien additif . . . . . . . . . . . . . . 121
7.2.4 Génération d’une modulation BPSK . . . . . . . . . . . 125
7.2.5 Occupation spectrale d’une modulation BPSK . . . . . . 125
7.2.6 Technique par saut de phase quadriphase (QPSK) . . . . 128
7.2.7 Exemple de construction de signaux QPSK . . . . . . . 130
7.2.8 Génération de signaux QPSK . . . . . . . . . . . . . . 132
7.2.9 Détection optimale de signaux QPSK . . . . . . . . . . 133
7.2.10 Probabilité d’erreur des systèmes QPSK . . . . . . . . . 135
7.2.11 Occupation spectrale d’une modulation QPSK . . . . . 136
7.2.12 Exercice 1 (PSK) . . . . . . . . . . . . . . . . . . . . . 138
7.2.13 Exercice 2 (PSK) . . . . . . . . . . . . . . . . . . . . . 138
7.2.14 Exercice 3 (PSK) . . . . . . . . . . . . . . . . . . . . . 138
7.2.15 Exercice 4 (ASK) . . . . . . . . . . . . . . . . . . . . . 139
7.2.16 Exercice 5 (PSK) . . . . . . . . . . . . . . . . . . . . . 139

Résumé

c 2010 HEIG-VD.
°
117
Modulations numériques H. Dedieu

7.1 Introduction

On s’est intéressé jusqu’à présent des transmissions numériques en bande de


base. On s’intéresse maintenant à des transmissions numériques dans lesquelles le
flot de données numériques est le signal modulant d’une porteuse généralement
sinusoïdale dont la fréquence est dans la bande d’un canal passe-bande.
Cette manière de moduler les signaux numériques correspond au plus grand
nombre d’applications.
Il y a trois façons de procéder pour ces modulations numériques.
1. Soit on modifie l’amplitude d’une porteuse en fonction du bit ou du sym-
bole à transmettre (modulation par saut d’amplitude - (ASK) Amplitude Shift
Keying).
2. Soit on modifie la phase de la porteuse en fonction du bit ou du symbole à
transmettre (modulation par saut de phase - (PSK) Phase Shift Keying).
3. Soit on modifie la fréquence de la porteuse en fonction du bit ou du symbole
à transmettre (modulation par saut de fréquence - (FSK) Frequency Shift
Keying).

Ces trois façons de moduler peuvent être interprétées comme des cas particu-
liers des modulations d’amplitude, de phase et de fréquence. Notons que dans de
nombreux on utilise en fait des combinaisons de ces trois méthodes.

7.2 Technique par saut de phase

On va étudier ici les méthodes au saut de phase soit binaire (BPSK), soit qua-
ternaire (QPSK) ainsi que leurs variantes. Nous serons particulièrement intéressés
à leur probabilité d’erreur, consommation en bande passante et efficacité spectrale.
Ces trois termes seront définis plus avant.
7.2.1 Technique par saut de phase binaire (BPSK)
Dans cette technique (Binary Phase Shift Keying), on module le signal porteur
par un saut de phase (0 ou π). De façon plus précise, une paire de signaux s0 (t) et
s1 (t) est utilisée afin de représenter les bits 0 ou 1. Soit Eb l’énergie d’un bit durant
un temps Tb , le signal associé au ”0” sera défini par
s
2Eb
s0 (t) = cos(2πfc t) 0 ≤ t < Tb , (7.1)
Tb

118 TBA1
H. Dedieu Modulations numériques

1
Saut d amplitude
0.5

−0.5

−1
0 1 2 3 4 5 6

1
Saut de phase

0.5

−0.5

−1
0 1 2 3 4 5 6

1
Saut de fréquence

0.5

−0.5

−1
0 1 2 3 4 5 6

F IGURE 7.1 – Exemple de modulation du train de bits [0, 1, 1, 0, 1, 0] selon une


modulation d’amplitude, de phase ou de fréquence.

le signal associé au ”1” s’écrira quant à lui


s s
2Eb 2Eb
s1 (t) = cos(2πfc t + π) = − cos(2πfc t) = −s0 (t) 0 ≤ t < Tb ,
Tb Tb
(7.2)
Afin d’assurer qu’à chaque bit transmis est associé un nombre entier de périodes
de la porteuse, la fréquence de la porteuse est choisie de telle manière que fc = nTbc
où nc est un nombre entier. Les deux signaux sinusoïdaux s0 (t) et s1 (t) tels que
définis en (7.1) et (7.2) étant déphasés de π sont appelés signaux antipodaux.

7.2.2 Démodulation optimale (BPSK)


On aimerait trouver une fonction à énergie unitaire φ0 (t) telle que l’on ait (au
sens d’un produit scalaire à définir)
K
s0 (t) φ0 (t) = K0 , (7.3)

Si l’équation (7.3) est vérifiée, comme s1 (t) = −s0 (t), on a bien sûr

TBA1 119
Modulations numériques H. Dedieu

K
s1 (t) φ0 (t) = −K0 , (7.4)
avec K0 le plus grand possible afin que la discrimination soit la meilleure pos-
sible. Comment choisir maintenant le produit scalaire et la fonction φ0 (t) ?
On choisit en général comme produit scalaire de deux fonctions l’intégrale du
produit de deux fonctions sur la durée du bit, ainsi on définit le produit scalaire par
K Z Tb
x(t) y(t) = x(t).y(t)dt (7.5)
0
(Remarquons que lorsque x(t) est égal à y(t), l’équation 7.5 représente l’éner-
gie de x(t) durant le temps Tb .)
L’une des façons de maximiser K0 est de prendre une fonction φ0 (t) proportion-
nelle à s0 (t) et donc sinusoïdale. Uneqfonction à énergie unitaire sur un intervalle
de temps Tb doit avoir une amplitude T2b , la fonction φ0 (t) vaut donc
s
2
φ0 (t) = cos(2πfc t) (7.6)
Tb
L’application du produit scalaire de la fonction φ0 (t) au signal s0 (t) ou s1 (t)
permettra la discrimination des deux fonctions s0 (t) et s1 (t) à condition que K0
soit suffisamment grand.
Que vaut K0 ? On a,
Z Tb √ Z q
Eb Tb 2
K0 = s0 (t).φ0 (t)dt = 2 cos (2πfc t)dt = Eb (7.7)
0 Tb 0
L’ensemble de l’opération de démodulation est schématisé à la Figure 7.2.

Tb E

³
b
s0(t)
s1(t)  E
0 b

2 cos(2Sf t)
0
Tb

F IGURE 7.2 – Suivant√le signal s√


0 (t) ou s1 (t) appliqué à l’entrée du démodulateur,
apparaîtra en sortie + Eb ou − Eb après un temps Tb .

L’opération de détection ou démodulation peut être interprétée comme une opé-


ration qui effectue une correspondance (mapping) entre √ un signal de √
durée Tb ,
s0 (t) 0 ≤ t < Tb (resp. s1 (t)) avec un point√qui vaut + Eb (resp. − Eb ). La
coordonnée du "point de message" est donc ± Eb . L’ensemble de l’opération de
démodulation est schématisée à la Figure 7.3.

120 TBA1
H. Dedieu Modulations numériques

Frontière de
décision

 E b E b

2Eb 2Eb
Tb Tb

s1(t) s0(t)

- 2Eb 2Eb
Tb - Tb
0 T b 0 T b

F IGURE 7.3 – Suivant le signal s0 (t) ou√ s1 (t) appliqué


√ à l’entrée du démodulateur,
apparaîtra dans un cas idéal en sortie + Eb ou − Eb après un temps Tb . En pra-
tique, en raison du bruit de canal, si le nombre détecté est positif on conclura à un
bit "0" transmis. La frontière de décision arbitre la détection du bit transmis.

7.2.3 Probabilité d’erreur avec un système BPSK en présence


de bruit blanc Gaussien additif
Si l’on suppose qu’un bruit blanc Gaussien de variance N20 et de moyenne nulle
se superpose à la détection optimale, les√signaux obtenus en sortie du détecteur sont
2 N0
des signaux aléatoires de moyenne ± Eb et de variance σb = 2 . Ainsi lorsque
l’on envoie un signal s0 (t) à l’entrée du modulateur, on détecte en sortie un nombre
aléatoire X0 dont la densité de probabilité est
" q #
1 1
pX0 (x0 |0) = √ exp − 2 (x0 − Eb )2 (7.8)
2πσb 2σb
Cette fonction s’interprète comme la densité de probabilité de recevoir un nombre
aléatoire X0 dans un voisinage de x0 petit sachant qu’un "0" a été émis, de façon

TBA1 121
Modulations numériques H. Dedieu

plus précise la densité de probabilité est telle que

p(x1 ≤ X0 < x0 + dx0 ) = pX0 (x0 |0)dx0 (7.9)

De la même manière lorsque l’on envoie un signal s1 (t) à l’entrée du modu-


lateur, on détecte en sortie un nombre aléatoire X1 dont la densité de probabilité
est " #
1 1 q
2
pX1 (x1 |1) = √ exp − 2 (x1 + Eb ) (7.10)
2πσb 2σb
Les densités de probabilité associées aux deux variables √ aléatoires X0 et X1
sont représentées à la Figure 7.4 pour un cas particulier où Eb = 1.5 et σb = 0.6.

0.7

0.6

0.5
Densités de probabilités

0.4

0.3

0.2

0.1

0
−4 −3 −2 −1 0 1 2 3 4
Nombres aléatoires détectés à la sortie du démodulateur

F IGURE 7.4 – Les deux densités de probabilité associées


√ aux variables aléatoires
X0 et X1 représentées pour un cas particulier où Eb = 1.5 et σb = 0.6.

Que vaut la probabilité d’erreur lorsque l’on émet un "1" ?


La probabilité d’erreur est la probabilité de détecter un nombre
√ positif en sortie
du démodulateur (idéalement le nombre obtenu devrait être − Eb ). Or la densité
de probabilité du nombre obtenu à la sortie du démodulateur sachant qu’un "1" a été
émis est pX1 (x1 |1). Par conséquent, la probabilité de détecter un "0" sachant qu’un
"1" a été émis que nous appellerons p01 est l’intégrale de la densité de probabilité
sur la demi-droite des nombres positifs, i.e
Z +∞
p01 = pX1 (x1 |1)dx1 (7.11)
0
L’illustration de cette intégrale est donnée à la Figure 7.5. Détaillons maintenant le

122 TBA1
H. Dedieu Modulations numériques

 E b

F IGURE 7.5 – La probabilité de détecter un "0" sachant qu’un "1" a été émis est
donnée par l’intégrale de la densité de probabilité sur l’ensemble des nombres réels
positifs.

calcul de p01 , il vient


Z +∞ " q #
1 1
p01 = √ exp − 2 (x1 + Eb )2 dx1 , (7.12)
0 2πσb 2σb
N0
soit en tenant de σb2 = 2
,
Z +∞ · q ¸
1 1
p01 = √ exp − (x1 + Eb )2 dx1 , (7.13)
0 πN0 N0

En posant z = √1 (x1 + Eb ) et donc dz = √1 dx1 , la probabilité d’erreur s’écrit
N0 N0

1 Z +∞ h i
p01 =√ √ exp −z 2 dz, (7.14)
π Eb /N0

Cette fonction n’est pas calculable analytiquement mais elle est tabulée, en effet on
a coutume d’appeler, fonction erreur complémentaire la fonction suivante
2 Z +∞ h i
erf c(a) = √ √ exp −z 2 dz, (7.15)
π a
On a donc Ãs !
1 Eb
p01 = erf c , (7.16)
2 N0

TBA1 123
Modulations numériques H. Dedieu

De manière symétrique si l’on voulait calculer la probabilité de détecter un "1"


lorsqu’un "0" est émis, on trouverait
Ãs !
1 Eb
p10 = erf c . (7.17)
2 N0

Si l’on admet une équiprobabilité des "0" et des "1" émis, la probabilité d’erreur est
Ãs !
1 1 1 Eb
peBP SK = p01 + p10 = erf c . (7.18)
2 2 2 N0

La probabilité d’erreur d’un système de type BPSK est donnée à la Figure 7.6. On
observera, conformément au bon sens qu’à niveau de bruit donnée N0 , le fait d’ac-
croître Eb , et donc d’accroître la discrimination entre les deux messages, diminue
la probabilité d’erreur. Lorsqu’on connaît le niveau de bruit, on ajuste si cela est
possible l’énergie par bit Eb de façon à pouvoir atteindre une probabilité d’erreur
prescrite (e.g 10−5 ).
0
10

−1
10

−2
10

−3
Pe

10

−4
10

−5
10

−6
10
−5 −2.5 0 2.5 5 7.5 10
Eb/No

F IGURE 7.6 – Probabilité d’erreur d’un système BPSK

124 TBA1
H. Dedieu Modulations numériques

7.2.4 Génération d’une modulation BPSK


D’après la forme temporelle des signaux BPSK (Cf. équations (7.1) et (7.2)),
on peut les considérer
q comme résultant d’une mise en forme de type NRZ bipo-
laire d’amplitude ± 2E Tb
b
, cette mise en forme étant elle-même modulée par une
porteuse à fréquence fc . L’ensemble de l’opération de modulation est schématisée
à la Figure 7.7.

x(t)
2E b
Tb
T b

t
 2Eb
Tb
Séquence NRZ Séquence
1, 0, 1, 1, ..... bipolaire BPSK
NRZ bipolaire
m(t) x(t)
y(t)
Message
binaire toutes
les Tb sec.
cos(2Sfct)

F IGURE 7.7 – Probabilité d’erreur d’un système BPSK

7.2.5 Occupation spectrale d’une modulation BPSK


Il est essentiel maintenant de se poser la question de l’occupation spectrale re-
lative à une modulation BPSK. D’après la Figure 7.7, on voit que l’occupation
spectrale d’un signal BPSK pourra se déduire de l’occupation spectrale d’une sé-
quence NRZ en bande de base. En effet, à l’occupation spectrale d’une signal NRZ
en bande de base, il correspondra un signal BPSK dont l’occupation spectrale se
déduira par un décalage fréquenciel centré sur fc pour les fréquences positives et
sur −fc pour les fréquences négatives.
Que vaut maintenant l’occupation spectrale qd’une séquence NRZ dont la durée
de chaque bit est Tb et donc l’amplitude est ± 2E Tb
b
?
Comme la séquence NRZ est une séquence pseudo-aléatoire, le spectre de la
séquence est la transformée de Fourier de la fonction d’autocorrélation
q de cette
2Eb
séquence. Calculons cette fonction d’autocorrélation. Posons A = Tb .

TBA1 125
Modulations numériques H. Dedieu

RX (τ ) = E[x(t)x(t + τ )] (7.19)
Il y a deux cas à considérer, soit |τ | < Tb , ou |τ | ≥ Tb . Nous supposerons que les
bits successifs sont indépendants et que l’on a équiprobabilité des "1" et des "0".
1) Supposons d’abord que 0 ≥ τ < Tb . On s’aperçoit que de τ à Tb , x(t) et
x(t + τ ) ont la même polarité. De 0 à τ , les polarités de x(t) et x(t + τ ) peuvent
être quelconques puisqu’elles appartiennent à deux symboles consécutifs indépen-
dants. En moyenne, ces polarités se compenseront du fait de l’équiprobabilité des
symboles. Dès lors
1 Z Tb 2 1 τ
RX (τ ) = A dt = A2 [t]Tτ b = A2 [1 − ] si 0 ≥ τ < Tb (7.20)
Tb τ Tb Tb
2) Supposons maintenant que −Tb < τ ≤ 0. On s’aperçoit que de 0 à Tb +
τ , x(t) et x(t + τ ) ont la même polarité. De Tb + τ à Tb , les polarités de x(t)
et x(t + τ ) peuvent être quelconques puisqu’elles appartiennent à deux symboles
consécutifs indépendants. En moyenne, ces polarités se compenseront du fait de
l’équiprobabilité des symboles. Dès lors
1 Z Tb +τ 2 1 τ
RX (τ ) = A dt = A2 [t]T0 b +τ = A2 [1 + ] si − Tb < τ ≤ 0 (7.21)
Tb 0 Tb Tb
3) Supposons maintenant que |τ | > Tb . Dans ce cas, x(t) et x(t + τ ), peuvent
avoir des polarités quelconques à l’instant t puisque x(t) et x(t + τ ) appartiennent
à des bits différents. La moyenne des polarités sera nulle du fait de l’indépendance
des bits et de l’équiprobabilité des "0" et des "1".

RX (τ ) = 0 si |τ | ≥ Tb (7.22)
On peut résumer l’étude de la fonction d’autocorrélation sous la forme de la for-
mule suivante,
( |τ |
A2 .[1 − ] |τ | < Tb
RX (τ ) = Tb (7.23)
0 |τ | ≥ Tb
La transformée de Fourier de la fonction d’autocorréaltion s’écrit alors
Z 0 Z Tb
t t
SX (f ) = T.F.[RX (τ )] = ] exp−j2πf t dt+
A2 [1+ A2 [1− ] exp−j2πf t dt
−Tb Tb 0 Tb
(7.24)
Après manipulation de cette dernière équation, on trouve,

sin2 (πf Tb )
2
SX (f ) = A .Tb , (7.25)
(πf Tb )2
q
2Eb
soit en remplaçant A par Tb
,

126 TBA1
H. Dedieu Modulations numériques

2
sin(πf Tb )
SX (f ) = 2Eb2 2
= 2Eb2 sinc2 (Tb f ) (7.26)
(πf Tb )
Ceci correspond à ce que l’on pourrait appeler le spectre BPSK en bande de
base. Le spectre BPSK réel correspondra à un double décalage tel que donné à la
Figure 7.8.

TBA1 127
Modulations numériques H. Dedieu

Spectre BPSK en bande de base


1.5

0.5

0
−5 −4 −3 −2 −1 0 1 2 3 4 5
Tb.f
Spectre BPSK (exemple avec fc=3/Tb)

0.8

0.6

0.4

0.2

0
−5 −4 −3 −2 −1 0 1 2 3 4 5
Tb.f

F IGURE 7.8 – Spectre d’un signal BPSK (en bande de base) et en bande réelle pour
un exemple avec fc = T3b .

7.2.6 Technique par saut de phase quadriphase (QPSK)


On va voir ici que l’on peut mieux exploiter le canal en utilisant une technique
quadriphase en lieu de la technique biphase utilisée jusqu’alors. Dans la technique
QPSK (Quadriphase Phase Shift Keying), la phase de la porteuse peut prendre l’une
des quatre valeurs π4 , 3π
4
, 5π
4
ou 7π
4
. On peut alors définir le signal QPSK comme
étant l’un des quatre signaux suivants
s
µ ¶
2E π
si (t) = cos 2πfc t + (2i − 1) 0≤t<T i = 1 . . . 4, (7.27)
T 4
où E est l’énergie par bit, T est la durée d’un symbole correspondant à l’un des
quatre états de phase et fc est un multiple de T1 . Comme un symbole pourra prendre
quatre valeurs, il sera donc codé sur deux bits.
Une façon alternative d’écrire l’équation (7.27) est

s s
µ ¶ µ ¶
2E π 2E π
si (t) = cos(2πfc t) cos (2i − 1) − sin 2πfc t) sin((2i − 1) i = 1 . . . 4,
T 4 T 4
(7.28)
Ce jeu d’écriture fait apparaître le signal QPSK comme étant un signal avec une
double modulation, les deux porteuses étant en quadrature.

128 TBA1
H. Dedieu Modulations numériques

Soient maintenant les fonctions φ1 (t) et φ2 (t) représentant ces deux porteuses
en quadrature et prenons comme amplitude des deux porteuses un nombre tel que
leur énergie soit unitaire sur le temps T . Il vient
s s
2 2
φ1 (t) = cos(2πfc t) φ2 (t) = − sin(2πfc t), (7.29)
T T
Remarquons par ailleurs que φ1 (t) ⊥ φ2 (t) au sens du produit scalaire suivant

K Z T
φ1 (t) φ2 (t) = φ1 (t)φ2 (t)dt = 0 (7.30)
0

On peut alors d’après (7.28) et (7.29) récrire si (t) sous la forme

√ µ √ ¶ µ ¶
π π
si (t) = Eφ1 (t) cos (2i − 1) + Eφ2 (t) sin (2i − 1) i = 1 . . . 4,
4 4
(7.31)
l’ensemble des quatre signaux possibles est alors
s s
E E
si (t) = ± φ1 (t) + ± φ2 (t) i = 1 . . . 4, (7.32)
2 2

On peut alors convenir d’un diagramme d’états pour la modulation QPSK en


décrivant le message si (t) suivant sa décomposition sur les axes φ1 (t) et φ2 (t). Ce
diagramme est donné à la Figure 7.9.

I 2

Eb 2

 Eb 2 Eb
2
I 1

 Eb 2

F IGURE 7.9 – Diagramme de l’espace signal QPSK.

On peut établir une correspondance entre les phases et les bits du message de la
manière suivante :
Avec le choix de la Table 7.1, la correspondance entre le diagramme de l’espace
signal et le message est donné à la Figure 7.10.

TBA1 129
Modulations numériques H. Dedieu

Message Coordonnées du Message QPSK Phase QPS


q q
0 0 − E2 , − E2 5π
4
q q
0 1 − E2 , + E2 3π
4
q q
1 0 + E2 , − E2 7π
4
q q
1 1 + E2 , + E2 π
4

TABLE 7.1 – Exemple de codage possible QPSK.

I 2

01 11
Eb 2

 Eb 2 Eb
2
I 1

 Eb 2
00 10

F IGURE 7.10 – Correspondance entre le diagramme de l’espace signal QPSK et le


message (dibit) avec le codage de la Table 7.1.

7.2.7 Exemple de construction de signaux QPSK


Soit par exemple le message [01 10 10 00], avec le choix de codage la Table 7.1,
comment seront construits les signaux QPSK correspondants à ce message ?
Le message est constitué de 4 dibits consécutifs formant 4 symboles à trans-q
mettre. On peut noter que le signal QPSK est la somme d’un signal φ1 (t) × ± E2
q
et d’un signal φ2 (t) × ± E2 . Le premier signal est appelé voix I (pour in-phase)
alors que le second est appelé voix Q (pour voix en quadrature). On peut aussi noter
que lorsqueqle premier bit du symbole (dibit) est "1", alors le signal sur la voix I
est φ1 (t) × E2 , si le premier bit du symbole est "0" alors le signal sur la voix I est
q
E
φ1 (t) × − 2
. De même lorsque le deuxième bit du symbole (dibit) est "1", alors le
q
E
signal sur la voix Q est φ2 (t) × 2
, si le deuxième bit du symbole est "0" alors le
q
signal sur la voix Q est φ2 (t) × − E2 . Le signal QPSK correspondant au message
[01 10 10 00] est donné à la Figure 7.11.

130 TBA1
H. Dedieu Modulations numériques

0.5
Voix I

−0.5

−1
0 0.5 1 1.5 2 2.5 3 3.5 4

0.5
Voix Q

−0.5

−1
0 0.5 1 1.5 2 2.5 3 3.5 4

1.5
1
Signal QPSK

0.5
0
−0.5
−1
−1.5
0 0.5 1 1.5 2 2.5 3 3.5 4

F IGURE 7.11 – Exemple de construction de signaux QPSK.

TBA1 131
Modulations numériques H. Dedieu

7.2.8 Génération de signaux QPSK


On peut maintenant généraliser l’exemple précédent sous forme d’un schéma
bloc général. On s’aperçoit que l’on peut considérer que q la séquence binaire est en-
codée par une séquence NRZ bipolaire d’amplitude ± T2 . Chaque bit est de durée
T
2
. Puis un démultiplexeur envoie la valeur échantillonnée de la séquence NRZ cor-
respondant au premier bit du dibit courant sur la voix I et la valeur échantillonnée
de la séquence NRZ correspondant au second bit du dibit courant sur la voix Q. Les
signaux sont maintenus pendant T secondes et sont modulés par les fonctions por-
teuses φ1 (t) et φ2 (t). Les résultats sont enfin sommés pour former le signal QPSK.
L’ensemble de la procédure est présentée à la Figure 7.12 sous forme de schéma
bloc.

T T T

E
2

E

2
0 1 1

I 1
2
T
cos(2Sfct)
Signal BPSK
Encodeur
Séquence
NRZ Démultiplexeur
binaire
bipolaire
I 2
2
T
sin(2Sfct)
011010
E
2

E E

2 2 T=2Tb
0 1 1 0 1 0
E
Tb 
2
1 0 0

T T T

F IGURE 7.12 – Diagramme bloc équivalent d’une modulation QPSK.

132 TBA1
H. Dedieu Modulations numériques

7.2.9 Détection optimale de signaux QPSK


Rappelons d’abord l’orthogonalité des fonctions de base φ1 (t) et φ2 (t) au sens
du produit scalaire défini par l’équation (7.30), i.e.

Z T Z T Z T
φ21 (t)dt = 1 φ22 (t)dt = 1 φ1 (t)φ2 (t)dt = 1 (7.33)
0 0 0

Partant de l’équation (7.31) que nous récrivons par commodité de raisonnement,


√ µ ¶√ µ ¶
π π
si (t) = Eφ1 (t) cos (2i − 1) + Eφ2 (t) sin (2i − 1) i = 1 . . . 4.
4 4
(7.34)
Multipliant les membres de droite et de gauche de (7.34) par φ1 (t) et intégrons de
0 à T , il vient,

Z T ÃZ ! µ ¶ √ ÃZ T ! µ ¶
√ T π π
si (t)φ1 (t)dt = E φ21 (t)dt
cos (2i − 1) + E φ2 (t)φ1 (t)dt sin (2i − 1) ,
0 0 4 0 4
(7.35)
soit en tenant compte de l’orthogonalité de φ1 (t) et φ2 (t) telle que décrite par
l’équation (7.33), il vient,
s
Z T √ µ ¶
π E
si (t)φ1 (t)dt = E cos (2i − 1) =± . (7.36)
0 4 2
De manière similaire, en utilisant φ2 (t) au lieu de φ1 (t), on trouverait,
s
Z T √ µ ¶
π E
si (t)φ1 (t)dt = E sin (2i − 1) =± . (7.37)
0 4 2
Autrement dit, les produits scalaires de si (t) par les fonctions φ1 (t) et φ2 (t)
redonnent les composantes de l’espace du signal selon les axes φ1 (t) et φ2 (t). Cha-
cune de ces deux composantes nécessite un calcul qui dure T secondes correspon-
dantes à l’intégration de 0 à T . Par multiplexage de ces deux composantes on peut
retrouver la séquence NRZ bipolaire qui avait été utilisée à la modulation. L’en-
semble de la démodulation est schématisée à la Figure 7.13.

TBA1 133
Modulations numériques H. Dedieu

T T T

E
2
Tb

E

2
E
0 1 1
2
Décision
³
T
toutes les T
0 E
sec. 
2
0 1 1 0 1 0
I 1
2
T
cos(2Sfct)
si(t) Démultiplexeur Décodeur
Tb=T/2 NRZ
I 2
2
T
sin(2Sfct) message
binaire
Décision 0 1 1 0 1 0

³
T
toutes les T
0 sec.

E 1 0 0
2

E

2

T T T

F IGURE 7.13 – Diagramme bloc équivalent d’une démodulation QPSK.

134 TBA1
H. Dedieu Modulations numériques

7.2.10 Probabilité d’erreur des systèmes QPSK


L’objectif est ici de comparer la probabilité d’erreur d’un système QPSK par
rapport à un système BPSK. Nous comparerons la probabilité d’erreur obtenu pour
un même niveau de bruit et pour une même vitesse en bits par secondes. On aura
donc σb2 = N20 , et T = 2Tb où Tb est la durée d’un bit à la fois pour le système
BPSK et pour le système QPSK.
On part de l’hypothèse que le signal si (t) reçu est entaché d’un bruit Gaussien
de variance σb2 = N20 , en sorte que l’on reçoive en fait,

x(t) = si (t) + w(t) 0≤t<T i = 1...4 (7.38)

N0
E[w(t)]2 = (7.39)
2
Après démodulation sur la voie I, on trouve à l’instant T où se fait la décision,

Z T Z T µ Z T ¶
π
xI = si (t)φ1 (t)dt + φ1 (t)w(t)dt = cos (2i − 1) + φ1 (t)w(t)dt,
0 0 4 0
(7.40)
soit s
E ZT
xI = ± + φ1 (t)w(t)dt (7.41)
2 0

De même sur la voie Q, on trouverait,


s
E ZT
xQ = ± + φ2 (t)w(t)dt (7.42)
2 0

Posons pour les bruits entachant xI et xQ ,


Z T Z T
w1 = φ1 (t)w(t)dt w2 = φ2 (t)w(t)dt (7.43)
0 0

Les nombres aléatoires w1 et w2 représentent le bruit de démodulation sur les


deux voies. Quelle est la variance de chacun de ces deux bruits ?
On a
"Z #2 Z T
T N0
E[w12 ] =E φ1 (t)w(t)dt = φ21 (t)E[w(t)]2 dt = (7.44)
0 0 2

On trouverait de même
N0
E[w22 ] = (7.45)
2

TBA1 135
Modulations numériques H. Dedieu

En conclusion, les deux composantes xI et xQ ont une énergie E2 et sont enta-


chées d’un bruit de variance N20 . Chaque voie I ou Q pouvant être assimilée à un
système BP SK, la probabilité de faire une erreur sur chaque voie, c’est-à-dire sur
un bit est connue, c’est donc
s 
1 E/2 
PeQP SK = erf c  (7.46)
2 N0
Or comme un bit dure la moitié du temps d’un symbole, on a
E
Eb = (7.47)
2
La probabilité d’erreur d’un système QPSK est donc
Ãs !
1 Eb
PeQP SK = erf c (7.48)
2 N0
Or cette expression est identique à celle de PeBP SK telle que trouvée en (7.28). Si
les probabilités d’erreurs à niveau de bruit donné et à vitesse de transfert donné sont
équivalentes pour un système BPSK et QPSK, quel est l’intérêt d’utiliser un sys-
tème QPSK ? L’étude de l’étendue spectrale des systèmes QPSK va nous permettre
de comparer plus avant ces deux types de modulation et à prouver la supériorité des
modulations QPSK.

7.2.11 Occupation spectrale d’une modulation QPSK


On sait d’après (7.26) qu’une voie BPSK d’energie A par bit et de durée Tb par
bit a un spectre
SBP SK = 2Asinc2 (Tb f )
Or notre signal QPSK est formé de la somme de deux spectres de signaux BPSK
indépendants (voies I et Q). Chacune de ces voies BPSK a une énergie E2 par bit et
une durée T secondes. Les deux spectres s’additionnant, on trouve
E E
SQP SK = 2 sinc2 (T f ) + 2 sinc2 (T f ) (7.49)
2 2
Soit en tenant compte de E = 2Eb et T = 2Tb ,

SQP SK = 4Eb sinc2 (2Tb f ) (7.50)


La comparaison de l’étendue spectrale des modulations BPSK et QPSK montre
que pour un même Tb , la bande QPSK est la moitié de la bande BPSK. La Fi-
gure 7.14 illustre les deux occupations spectrales.
Autrement dit, entre une modulation BPSK et une modulation QPSK, à même
débit binaire, à même niveau de bruit, on choisira toujours une modulation QPSK
car elle utilise à peu près deux fois moins de bande.

136 TBA1
H. Dedieu Modulations numériques

4
BPSK
QPSK
Comparaison des spectres BPSK et QPSK en bande de base

3.5

2.5

1.5

0.5

0
−4 −3 −2 −1 0 1 2 3 4
Tb.f

F IGURE 7.14 – Comparaison des étendues spectrales BPSK et QPSK en bande


passante.

TBA1 137
Modulations numériques H. Dedieu

7.2.12 Exercice 1 (PSK)


Soit un signal BPSK défini par

E .φ(t) 0 ≤ t ≤ Tb (symbole 1)
s(t) = { √ b
− Eb .φ(t) 0 ≤ t ≤ Tb (symbole 0)

où la fonction φ(t) est telle que :


s
2
φ(t) = cos(2πfc t)
Tb

Déterminer la probabilité d’erreur d’un tel système de transmission lorsque l’on ef-
fectue une démodulation cohérente avec une erreur de phase ψ, c’est-à-dire lorsque
le système de synchronisation produit un signal
s
2
r(t) = cos(2πfc t + ψ)
Tb
N0
On supposera un bruit de démodulation w(t) Gaussien de variance σb2 = 2
. On
supposera que fc est un multiple de T1b .

7.2.13 Exercice 2 (PSK)


Soit une boucle à verrouillage de phase constituée par un multiplicateur, un
filtre de boucle et un VCO.
Le signal idéal (sans bruit) appliqué à l’entrée de la boucle de verrouillage phase
est de la forme
s(t) = Ac cos(2πfc t + kp m(t))
dans lequel kp est la sensibilité de phase et m(t) prend les valeurs +1 pour le
symbole 1 et −1 pour le symbole 0. La sortie du VCO, une fois la boucle accrochée
s’écrit
r(t) = Ac sin(2πfc t + θ(t))
1. Evaluez la sortie du filtre de boucle en supposant que la composante à 2.fc
soit complètement éliminée par le filtre de boucle.
2. Montrez que la sortie est proportionnelle à l’entrée si la boucle est ver-
rouillée, c’est-à-dire si θ(t) = 0.

7.2.14 Exercice 3 (PSK)


Définissez votre diagramme de phase QPSK en veillant à ce que deux états
voisins ne se distinguent que par un seul bit.

138 TBA1
H. Dedieu Modulations numériques

1. Déterminez les composantes Q et I du signal QPSK correspondant à la sé-


quence
1100100010
(Tracez les deux composantes I et Q en fonction du temps pour un symbole
de durée Tb .)
2. Tracez la forme d’onde QPSK en fonction du temps.

7.2.15 Exercice 4 (ASK)


Dans un cas particulier de la modulation par saut d’amplitude (Amplitude Shift
Keying),
q le symbole "1" est représenté par un signal porteur sinusoïdal d’amplitude
2Eb
Tb
où Eb est l’énergie du symbole "1". Le symbole "0" est quant à lui représenté
par un signal d’amplitude nulle. On suppose l’équiprobabilité des "1" et des "0".
En supposant que le bruit de transmission est Gaussien de variance N20 , trouvez la
probabilité d’erreur d’un tel système en supposant qu’une détection cohérente soit
possible.

7.2.16 Exercice 5 (PSK)


Le signal d’une modulation PSK non conventionnelle est décrit par l’équation
suivante √
s(t) = Ak sin(2πfc t) ± 1 − k 2 cos(2πfc t)
où 0 ≤ t ≤ Tb , fc est un multiple de T1b , le signe "+" correspond au symbole "1" et
le signe "-" au symbole "0". Le premier terme représente un signal porteur facilitant
la synchronisation entre le récepteur et l’émetteur.
1. Dessinez le diagramme dans l’espace signal.
2. Montrez qu’en présence de bruit additif blanc Gaussien de moyenne nulle et
de variance N20 , la probabilité d’erreur est
Ãs !
1 Eb
Pe = erf c (1 − k 2 )
2 N0

3. Supposez que 10% de la puissance transmise soit dévolue au signal porteur.


Eb
Déterminez alors le rapport signal à bruit N0
permettant d’assurer une proba-
−4
bilité d’erreur de 10 .
Eb
4. Comparez la valeur trouvée à la valeur du rapport signal à bruit N0
que l’on
−4
devrait assurer pour maintenir une probabilité d’erreur de 10 avec une mo-
dulation PSK conventionnelle.

TBA1 139

Vous aimerez peut-être aussi