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(2
m
) . . . . . . . 76
5.9.2 Propriétés des champs de Galois CG(2
m
) . . . . . . . . . 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 T
e
. Par exemple on
disposera d’un bloc de 12 bits toutes les T
e
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.
FIGURE 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 MHz,
– 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 MHz 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.
FIGURE 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 MHz) 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 MHz), 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 MHz), réservées à la TV VHF, à la
radio par modulation de fréquence (FM),
– les ultra hautes fréquences (dites UHF entre 1 met 10 cmde 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 MHz), 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 T
e
s est en-
voyé sur un canal qui est un filtre passe-bas d’ordre 4 de fréquence de coupure 2/T
e
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 T
e
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.4T
e
, 0.9T
e
]. Si l’on diminue la bande passante du canal et que
celle-ci prenne par exemple la valeur 0.35/T
e
, 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
y(t) = x(t) ∗ h(t) + n(t) =
_

0
h(τ) ∗ x(t −τ)dτ + n(t) (1.1)
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 SNRinterfè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
C = W log
2
_
1 +
P
N
0
W
_
(bits/s) (1.3)
8 TBA1
H. Dedieu Introduction
où P désigne la puissance moyenne du signal transmis et N
0
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
FIGURE 1.3 – Les principaux canaux "sans-fil".
10 TBA1
H. Dedieu Introduction
0 5 10 15 20 25 30 35 40
−1.5
−1
−0.5
0
0.5
1
1.5
fc=2/Te
FIGURE 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
0 5 10 15 20 25 30 35 40
−1.5
−1
−0.5
0
0.5
1
1.5
fc=0.35/Te
FIGURE 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
0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 1.1 1.2
−1
−0.5
0
0.5
1
time (second)
a
m
p
l
i
t
u
d
e
fc=2/Te
FIGURE 1.6 – Diagramme en oeil associé à la figure 1.4 .
TBA1 13
Introduction H. Dedieu
0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 1.1 1.2
−1
−0.5
0
0.5
1
time (second)
a
m
p
l
i
t
u
d
e
fc=0.35/Te
FIGURE 1.7 – Diagramme en oeil associé à la figure 1.5.
0 5 10 15 20 25 30 35 40
−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
fc=2/Te
FIGURE 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
0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 1.1 1.2
−1.5
−1
−0.5
0
0.5
1
1.5
time (second)
a
m
p
l
i
t
u
d
e
fc=2/Te
FIGURE 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 f
0
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.
FIGURE 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
des informations des événements. Autrement dit soit E = E
1

E
2
tel que
P(E) = P(E
1

E
2
) = P(E
1
).P(E
2
) alors I(E) = I(E
1
) + I(E
2
)
Un des candidats possibles pour une telle mesure est une fonction logarithmique,
i.e.
I(E) = −K log
a
(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) = −log
2
(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
1
4
, l’information associée à leur apparition est donc
I(A) = I(B) = I(C) = I(D) = −log
2
(
1
4
) = 2
Evénement E A B C D
p(E)
1
4
1
4
1
4
1
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) =
1
2
, p(B) =
1
4
,
TBA1 21
Théorie de l’information H. Dedieu
Evénement E A B C D
p(E)
1
2
1
4
1
8
1
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) =
1
8
, p(D) =
1
8
. 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 log
2
(Nombre 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
2
1 +
1
4
2 +
1
8
3 +
1
8
3 =
14
8
= 1.75 bits
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 e
1
, e
2
, . . . e
n
. Chaque événement e
i
a
une probabilité d’apparition P(e
i
) et une quantité d’information associée I(e
i
). La
valeur moyenne de l’information H(X) est donc
H(X) =
n

i=1
P(e
i
)I(e
i
) = −
n

i=1
P(e
i
) log
2
(P(e
i
)) (2.2)
L’entropie, mesure moyenne de l’information, se mesure donc aussi en bits.
22 TBA1
H. Dedieu Théorie de l’information
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Entropie en fonction de p
p=Probabilité d'apparition du symbole A
E
n
t
r
o
p
i
e
FIGURE 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 log
2
(p) −(1 −p) log
2
(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) ≤ log
2
(n)
4. H(X) = log
2
(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] = [s
1
, s
2
, . . . s
n
]
tandis que l’alphabet du code aura m symboles
[X] = [x
1
, x
2
, . . . x
m
]
Un mot du code est une suite finie de l’alphabet X, x
i
1
, x
i
2
, . . . , x
i
n
. Le code
désignera un suite finie de n mots.
[C] = [c
1
, c
2
, . . . c
n
]
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 s
k
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
c
i
= x
i
1
, x
i
2
, x
i
3
, . . . x
i
n
un mot du vocabulaire du code C, on définit comme
préfixes tous les mots plus courts que c
i
de la forme x
i
1
, x
i
2
, x
i
3
, . . . x
i
m
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
c
i
, cette longueur moyenne est
¯
L =
n

i=1
p
i
l
i
(3.1)
où les p
i
sont les probabilités des symboles s
i
représentés par des mots c
i
de lon-
gueur l
i
.
3.1.5 Inégalité de Kraft-McMillan
On peut montrer qu’un code instantané de n mots-codes c
i
ayant des longueurs
l
i
existe si et seulement si
¯
l =
n

i=1
m
−l
i
≤ 1 (3.2)
où mest 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
2
−1
+ 2
−2
+ 2
−3
+ 2
−4
+ 2
−5
=
31
32
< 1
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.
η =
¯
l
min
¯
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)
H(X)
(3.6)
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
¯
l
min
=
H(S)
log 2(m)
(3.7)
Des équations (3.4), (3.5) et (3.7 on déduit la valeur de l’efficacité du code
η =
H(X)
log 2(m)
(3.8)
La redondance ρ d’un code se définit comme
ρ = 1 −η (3.9)
Exemple
Considérons une source dont l’alphabet [S] = [A, , B , C , D] et les probabili-
tés associées sont [P] =
_
1
2
, ,
1
4
,
1
8
,
1
8
_
. L’entropie de la source est
H(S) = −
4

i=1
p
i
log 2(p
i
) =
−1
2
(−1) −
1
4
(−2) −
1
8
(−3) −
1
8
(−3) =
7
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
Probabilité
1
2
1
4
1
8
1
8
TABLE 3.2 – Code associé aux symboles A, B, C et D
La longueur moyenne est donc
¯
l =
1
2
(2) +
1
4
(2) +
1
8
(2) +
1
8
(2) = 2(
4

i=1
p
i
= 2)
Comme
¯
l
min
=
H(S)
log 2(m)
(m = 2), d’où
¯
l
min
= H(S) =
7
4
, d’où
η =
¯
l
min
¯
l
=
7
8
= 0.875 ρ = 1 −η = 0.125
Prenons maintenant un nouveau code La longueur moyenne est maintenant
Symbole A B C D
Code 0 10 110 111
Probabilité
1
2
1
4
1
8
1
8
TABLE 3.3 – Nouveau Code associé aux symboles A, B, C et D
¯
l =
1
2
(1) +
1
4
(2) +
1
8
(3) +
1
8
(3) =
7
4
Par conséquent pour ce nouveau code
η =
¯
l
min
¯
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 p
i
i = 1 . . . n. Pour calculer la longueur de codage de
chaque symbole, on part de l’observation que pour tout symbole s
i
de probabilité
d’apparition p
i
, il existe un entier l
i
tel que
log
2
(
1
p
i
) ≤ l
i
< log
2
(
1
p
i
) + 1 (3.10)
le codage de Shannon-Fano consiste à affecter l
i
bits au codage du symbole s
i
. 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
p
i
≤ 2
l
i
< 2
1
p
i
(3.11)
soit encore
p
i
≥ 2
−l
i
>
p
i
2
(3.12)
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] = [s
1
, s
2
, s
3
, s
4
, s
5
, s
6
] 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
s
1
−→ 00
s
2
−→ 01
s
3
−→ 100
s
4
−→ 101
s
5
−→ 1100
s
6
−→ 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(s
1
) ≥ p(s
2
) ≥ p(s
3
) . . . ≥ p(s
n−1
) ≥ p(s
n
) (3.14)
avec, si les l
i
, i = 1 . . . n représentent les longueurs associées aux symboles s
i
;
l
1
≤ l
2
≤ l
3
. . . ≤ l
n−1
≤ l
n
(3.15)
Remarquons, que si l’ordre n’était pas respecté (par ex. l
1
est attribué à s
3
et l
3
est attribué à s
1
) alors
¯
l) ne peut qu’augmenter (dans le cas particulier présenté
p(s
1
)l
3
+ p(s
3
)l
1
≥ p(s
1
)l
1
+ p(s
3
)l
3
).
D’autre part pour arriver au codage optimal, il faut que les deux dernières lon-
gueurs soient égales, i.e.
l
n−1
= l
n
(3.16)
En effet si l’on suppose que l
n
= l
n−1
+ 1, alors il existe un seul mot de longueur
l
n
. Si on élimine le dernier bit, le mot à l
n−1
bits obtenu est préfixe de s
n
et par
conséquent, il ne peut être attribué qu’à s
n
et pas s
n−1
( pour la raison que l’on
désire construire un code à décodage instantané). Il s’ensuit que le l
n
ième bit est
superflu et ne fait qu’accroître
¯
l. Un code optimal est donc tel que l
n
= l
n−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 s
n
et s
n−1
(de probabilités les plus faibles) en un seul symbole de probabilité p
n
+ p
n−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] = [s
1
, s
2
, s
3
, s
4
, s
5
, s
6
] 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 s
1
→ 00, s
2
→ 10, s
3
→ 11,
32 TBA1
H. Dedieu Codage de source
(1)
s
1
→00, s
2
→10, s
3
→11, s
4
→010, s
5
→0110, s
6
→0111
0.40
0.60
0.15
0.25
0.30
0.30
0.15
0.30
0.25
0.15
0.15
0.10
0.05
(1)
(1)
(1)
(0)
(0)
(0)
(0)
(1)
(0)

s6
s5
s4
s3
s2
s1
FIGURE 3.1 – Codage d’Huffman
s
4
→ 010, s
5
→ 0110, s
6
→ 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 p
0
= 0.4, p
1
=
0.3, p
2
= 0.2 et p
3
= 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
s
0
0 0 0 00
s
1
10 01 01 01
s
2
110 001 011 10
s
3
1110 0010 110 110
s
4
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 s
0
s
1
s
2
s
3
s
4
s
5
s
6
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 {s
0
, s
1
, s
2
}
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.
FIGURE 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 a
1
, a
2
, a
3
, a
4
avec des probabi-
lités correspondantes p
1
= p
2
= 0.3365 et p
3
= p
4
= 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 S
1
, S
2
, S
3
, S
4
et S
5
.
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 S
1
, S
2
, S
3
, S
4
avec des probabili-
tés p
1
= 0.5, p
2
= 0.25, p
3
= 0.125 et p
4
= 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 s
0
ou s
1
. On lit le
schéma de la Figure 3.3 de la manière suivante ; si s
0
a été produit à l’instant k.T,
la probabilité d’obtenir un nouveau s
0
à l’instant (k + 1).T est 1/4, alors que la
probabilité d’obtenir s
1
à (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 S
1
sans mémoire délivrant des symboles {s
0
, s
1
, s
2
, s
3
}
avec des probabilités respectives 1/4, 1/2, 1/16, 3/16. D’autre part on considère
une source S
2
sans mémoire délivrant des symboles {t
0
, t
1
, t
2
, t
3
} avec des pro-
babilités respectives 1/8, 1/32, 1/64, 53/64. On considère ensuite une source S
3
qui délivre aléatoirement soit un symbole de S
1
, soit un symbole de S
2
à chaque
coup d’horloge ; la probabilité que S
1
soit choisie est de 3/4.
40 TBA1
H. Dedieu Codage de source
s
0
s
1
1|4 3|4 3|4
3|4
1|4
1|4
FIGURE 3.3 – Automate de Markov
1. Calculer l’entropie de chacune des trois sources S
1
, S
2
et S
3
.
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 S
1
sans mémoire délivrant des symboles {s
0
, s
1
, s
2
, s
3
, s
4
}
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 = (v
1
, v
2
, . . . v
n
)
où les v
i
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
u.v = u
1
v
1

u
2
v
2

u
3
v
3

. . . u
n
v
n
(4.1)
où le symbole

est l’addition modulo 2 , i.e.
0

0 = 0
0

1 = 1
1

0 = 1
1

1 = 0
4.2.1.1 Exemple
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
G(4, 2) =
_
0 1 0 1
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
(u
1
, u
2
, . . . u
k
) G(n, k) = (v
1
, v
2
, . . . , v
k
, v
k+1
, . . . v
n
)
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
(1, 0)
_
0 1 0 1
1 1 0 1
_
= (0, 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, 0)
_
0 1 0 1
1 1 0 1
_
= (0, 0, 0, 0)
(0, 1)
_
0 1 0 1
1 1 0 1
_
= (1, 1, 0, 1)
46 TBA1
H. Dedieu Codes détecteurs et correcteurs
(1, 0)
_
0 1 0 1
1 1 0 1
_
= (0, 1, 0, 1)
(1, 1)
_
0 1 0 1
1 1 0 1
_
= (1, 0, 0, 0)
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 G

une matrice engendrée par combinaison linéaire des lignes de
G, le sous-espace vectoriel engendré par G

est le même que celui engendré par G.
Pour s’en convaincre soient les matrices G et G

suivantes
G =
_
0 1 0 1
1 1 0 1
_
G

=
_
0 1 0 1
1 0 0 0
_
La première ligne de G

est identique à la premiere ligne de Gtandis que la deuxième
ligne de G

résulte de l’addition des 2 lignes de G. On s’aperçoit maintenant qu’en
appliquant G

à tous les 2 − uples on obtient les mêmes 4 − uples d’arrivée que
par G, i.e
(0, 0)
_
0 1 0 1
1 0 0 0
_
= (0, 0, 0, 0)
(0, 1)
_
0 1 0 1
1 0 0 0
_
= (1, 0, 0, 0)
(1, 0)
_
0 1 0 1
1 0 0 0
_
= (0, 1, 0, 1)
(1, 1)
_
0 1 0 1
1 0 0 0
_
= (1, 1, 0, 1)
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
G
S
= ( I
k
.¸¸.
, P
.¸¸.
)
k ×k k ×n −k
(4.2)
avec I
k
matrice identité k ×k, et où P est une matrice k ×n −k.
G =
_
0 1 0 1
1 1 0 1
_
−→G

=
_
1 1 0 1
0 1 0 1
_
−→G
S
=
_
1 0 0 0
0 1 0 1
_
La transformation a eu lieu en des étapes, G

est d’abord fabriquée par échange des
lignes de G. G
S
est constitué en gardant la deuxième ligne de G

puis en addition-
nant les deux lignes de G

pour former la première lignes de G
S
.
Propriété 4 Soit G
S
= (I
k
P), il existe une matrice
H
S
=
_
P
T
, I
n−k
_
(4.3)
H
S
= ( P
T
.¸¸.
, I
n−k
. ¸¸ .
)
n −k ×k n −k ×n −k
(4.4)
telle que
G
S
H
T
S
= 0 (4.5)
Démonstration :
G
S
H
T
S
= (I
k
, P)
_
P
I
n−k
_
= P

P = 0
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 = (x
1
, x
2
, . . . x
k
) avec x
i
= 0 ou 1 pour i = 1 . . . n
Il y a donc 2
k
messages X possibles. Pour réduire les erreurs de transmissions on
ajoute de la redondance au message en remplaçant les 2
k
mots à k bits par 2
k
mots
à n bits, i.e
X = (x
1
, x
2
, . . . x
k
) −→Y = (y
1
, y
2
, . . . y
k
, y
k+1
, . . . , y
n
)
48 TBA1
H. Dedieu Codes détecteurs et correcteurs
avec n > k. BIEN QU’IL Y AIT 2
n
mots possibles pour Y ON N’UTILISE AU
CODAGE QUE 2
k
MOTS PARMI les 2
n
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.
2
n
2
k
_

¸

x
x
x
x
x
x
x
x
¸
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

¸
¸

¸
¸

x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
_

¸

{X} {Y }
FIGURE 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 d
min
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 = d
min
−1
car dès que q atteint d
min
il y a possibilité de passer d’un code possible à un autre
code possible tout en ayant fait d
min
erreurs. D’autre part tant que q est inférieur à
d
min
il est certain que le code reçu est un code impossible. La quantité q = d
min
−1
est appelée capacité de détection d’un code.
TBA1 49
Codes détecteurs et correcteurs H. Dedieu
Codes possibles

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

FIGURE 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 d
min
= 2 et on vérifie bien que q = d
min
− 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
(1, 1, 1)
(0, 0, 0)

Codes possibles

FIGURE 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 ≤ d
min
−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
n
(4.7)
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.
G =
_
_
_
1 1 1 0 1 0 0
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
2
3
= 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 = u
d
G et
v = v
d
G où u
d
et v
d
sont deux des 2
k
k −uples possibles. Dès lors
s = λu
d
G + γv
d
G =
_
λu
d
+ γv
d
_
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
_
λu
d
+γv
d
_
est encore un k −uple, appelons-le w
d
, d’où
s = w
d
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 d
min
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 d
min
= 3. Par suite la capacité de détection est
u
1
= (0 0 0 0 0 0 0 ) ||u
1
|| = 0
u
2
= (0 0 1 1 1 0 0 ) ||u
2
|| = 3
u
3
= (0 1 1 1 0 1 1 ) ||u
3
|| = 5
u
4
= (0 1 0 0 1 1 1 ) ||u
4
|| = 4
u
5
= (1 1 1 0 1 0 0 ) ||u
5
|| = 4
u
6
= (1 1 0 1 0 0 0 ) ||u
6
|| = 3
u
7
= (1 0 0 1 1 1 1 ) ||u
7
|| = 5
u
8
= (1 0 1 0 0 1 1 ) ||u
8
|| = 4
d
min
− 1 = 2. La capacité de correction est telle que 2t = d
min
− 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 (I
k
, P) où I
k
est la matrice identité k ×k, les k premiers bits ne sont pas affectés par G
S
4.4.2.1 Exemple
G =
_
_
_
1 1 1 0 1 0 0
0 1 1 1 0 1 1
0 0 1 1 1 0 0
_
_
_ −→ G
S
=
_
_
_
1 0 0 1 1 1 1
0 1 0 0 1 1 1
0 0 1 1 1 0 0
_
_
_
Dans cet exemple, la première ligne de G
S
est la somme des 2 premières lignes
de G. La deuxième ligne de G
S
est la somme de la deuxième et de la troisième
ligne de G. La troisième ligne de G
S
est la troisième ligne de G.
TBA1 53
Codes détecteurs et correcteurs H. Dedieu
Soit la correspondance
(x
1
, x
2
, x
3
) −→(y
1
, y
2
, y
3
, y
4
, y
5
, y
6
, y
7
) = (x
1
, x
2
, x
3
)G
S
On voit que
y
1
= x
1
y
2
= x
2
y
3
= x
3
_
_
_bits d

information
y
4
= x
1
+ x
3
y
5
= x
1
+ x
2
+x
3
y
6
= x
1
+ x
2
y
7
= x
1
+ x
2
_
_
_
_
_
bits de contrˆ ole
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 = xG
S
(4.8)
Or on sait qu’il existe une matrice dite de contrôle H
S
, déduite de G
S
selon l’équa-
tion (4.5) telle que
G
S
H
T
S
= 0 (4.9)
Par conséquent, si l’on multiplie le message y par H
S
on obtient
yH
T
S
= xG
S
H
T
S
= 0 (4.10)
La technique de détection est donc simple, le message reçu est multiplié par la
matrice H
T
S
, 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 = xG
S
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 = y + e (4.11)
Lorsqu’on reçoit ˆ y, on multiplie donc par H
S
, i.e.
s = ˆ yH
T
S
= yH
T
S
. ¸¸ .
+ eH
T
S
= eH
T
S
0
(4.12)
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 G
S
la matrice systématique
G
S
=
_
_
_
1 0 0 1 1 1 1
0 1 0 0 1 1 1
0 0 1 1 1 0 0
_
_
_
calculer le syndrome associé à G
S
. Construisons H
S
selon l’équation ( 4.4), il vient
H
S
=
_
_
_
_
_
1 0 1 1 0 0 0
1 1 1 0 1 0 0
1 1 0 0 0 1 0
1 1 0 0 0 0 1
_
_
_
_
_
Le syndrome s s’écrit donc
s = yH
T
S
= (ˆ y
1
, ˆ y
2
, ˆ y
3
, ˆ y
4
, ˆ y
5
, ˆ y
6
, ˆ y
7
)
_
_
_
_
_
_
_
_
_
_
_
_
_
1 1 1 1
0 1 1 1
1 1 0 0
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
_
_
_
_
_
_
_
_
_
_
_
_
_
=
_
_
_
_
_
ˆ y
1
+ ˆ y
3
+ ˆ y
4
ˆ y
1
+ ˆ y
2
+ ˆ y
3
+ ˆ y
5
ˆ y
1
+ ˆ y
2
+ ˆ y
6
ˆ y
1
+ ˆ y
2
+ ˆ y
7
_
_
_
_
_
T
(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
y
4
= x
1
+ x
3
= y
1
+ y
3
y
5
= x
1
+x
2
+ x
3
= y
1
+y
2
+y
3
y
6
= x
1
+ x
2
= y
1
+ y
2
y
7
= x
1
+ x
2
= y
1
+ y
2
(4.14)
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 y
4
+ y
4
= 0, y
5
+ y
5
= 0, etc. en somme que
l’équation (4.14) est équivalente à
y
1
+ y
3
+ y
4
= 0
y
1
+y
2
+ y
3
+ y
5
= 0
y
1
+ y
2
+ y
6
= 0
y
1
+ y
2
+ y
7
= 0
(4.15)
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 = (e
1
, e
2
, . . . , e
n
) (4.16)
Lorsque l’on calcule le syndrome par l’équation (4.12), il vient
s = e
1
h
1
+ e
2
h
2
+ . . . + e
n
h
n
(4.17)
où les h
i
sont les vecteurs colonnes de H
S
. On remarque que le syndrome est une
combinaison linéaire des n colonnes de la matrice H
S
. Cette relation peut être
utilisée pour corriger le mot reçu s’il est possible de retrouver de manière univoque
les coefficients e
i
qui vérifient (4.17). On remarque ainsi que si les n colonnes de
H
S
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 = h
k
. Par conséquent si toutes les colonnes de H
S
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 H
S
, d’où l’on déduit que e
5
= 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 = ˆ 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
(d
min
= 3). En vue de maximiser le rendement η =
k
n
, 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 H
S
sont des n−kuples, on peut en former 2
n−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 ≤ 2
n−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 h
i
est la re-
présentation binaire du nombre i. D’autre part les bits de contrôle sont fixés aux
positions 2
i
. Par exemple pour le code (7, 4) on a
H =
_
_
_
0 0 0 1 1 1 1
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
G =
_
_
_
_
_
1 1 1 0 0 0 0
1 0 0 1 1 0 0
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
G =
_
1 1 0 1
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 G
S
, trouver G
S
.
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 G
S
. 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 G
S
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
[y
1
, y
2
, y
3
, y
4
, y
5
, y
6
] = [x
1
, x
2
] G
S
donner toutes les lois de calcul des y
i
pour i = 1 . . . 6. Prenez soin de calculer
exactement les bits de contrôle, y
3
, y
4
, y
5
et y
6
.
6. Calculez à partir de la matrice génératrice G
S
la matrice de contrôle H
S
d’un
tel code.
7. En écrivant la relation habituelle de contrôle
[y
1
, y
2
, y
3
, y
4
, y
5
, y
6
] H
T
S
= 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
H =
_
_
_
0 0 0 1 1 1 1
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 = [x
1
, x
2
, x
3
, x
4
]
on transmette
y = [y
1
, y
2
, x
1
, y
3
, x
2
, x
3
, x
4
]
(Les bits de contrôle sont aux positions 2
0
= 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 y
i
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(2
m
) . . . . . . 76
c 2010 HEIG-VD.
61
Codes polynômiaux cycliques H. Dedieu
5.9.2 Propriétés des champs de Galois CG(2
m
) . . . . . . . . 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 (v
n−1
, v
n−2
, v
n−3
, . . . , v
0
)
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
(v
n−1
, v
n−2
, v
n−3
, . . . , v
0
) −→v
0
+ v
1
X + v
2
X
2
+ . . . + v
n−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 + g
1
X +g
2
X
2
+ . . . + g
n−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 X
2
+ 1 0101
10 X (1 + X
2
)X X
3
+X 1010
11 X + 1 (1 + X
2
)(X + 1) X
3
+ X
2
+ 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 (i
k−1
, . . . , i
0
)
on a vu que cela consistait à multiplier le polynôme i
0
+i
1
X +. . . +i
k−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
i
k−1
X
n
+ i
k−2
X
n−1
+. . . i
0
X
n−k
+ r
n−k−1
X
n−k−1
+ . . . + r
1
X + r
0
ce qui correspondra au n-uple
(i
k−1
, i
k−2
, . . . , i
0
, r
n−k−1
, r
n−k−2
, . . . , r
1
, r
0
)
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
ˆ c(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 ˆ c(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
ˆ c(X) = X
n−k
ˆ
i(X) + ˆ r(X)
le mot reçu. On calcule
r

(X) = reste
_
X
n−k
ˆ
i(X)
g(X)
_
Le syndrome s’écrit alors
s(X) = r

(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
D
m−1
D
1
D
0
y(X)
u(X)
¸
·
g
m
= 1 g
m−1
g
2 g
1 g
0
= 1
¸ ¸ ¸ ¸ ¸ ¸
` ` `

`
`

`

`

`

FIGURE 5.1 – Circuit de division
u(X)
g(X)
m-1 1 0
X
−1
X
−1
X
−1
y(X)
u(X)
¸
·
g
m
= 1 g
m−1 g
2
g
1
g
0
= 1
¸ ¸ ¸ ¸ ¸ ¸
` ` `

`
`

`

`

`

FIGURE 5.2 – Schéma équivalent au circuit de division
u(X)
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
+g
1
y(X)X
−(m−1)
+g
2
y(X)X
−(m−2)
+. . . +g
m−1
X
−1
En tenant compte du fait que l’addition modulo 2 est équivalente à la soustraction
modulo 2,
y(X)(1 + g
m−1
X
−1
+ g
m−2
X
−2
+ . . . + g
1
X
−(m−1)
+ X
−m
) = u(X)X
−m
68 TBA1
H. Dedieu Codes polynômiaux cycliques
g
1
= 1
2
¸
g
3
= 1 g
2
= 0
1 0
X
−1
X
−1
X
−1
y(X) u(X)
¸
·
g
0
= 1
¸ ¸ ¸ ¸ ¸
` `
`

`

FIGURE 5.3 – Circuit de division
u(X)
X
3
+X+1)
D’où en multipliant numérateur et dénominateur par X
m
,
y(X) =
u(X)
1 + g
1
X + g
2
X
2
+. . . +g
m−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 u
i
D
0
D
1
D
2
q
i
0 u
5
= 1 0 0 0
1 u
4
= 0 1 0 0
2 u
3
= 0 0 1 0
3 u
2
= 0 0 0 1 q
2
= 1
4 u
1
= 1 1 1 0 q
1
= 0
5 u
0
= 1 1 1 1 q
0
= 1
6 0 0 = r
0
0 = r
1
1 = r
2
¸
`

`

`

`

` ` `
¸ ¸ ¸ ¸
g
0
= 1
g
1
g
2 g
m−1
D
0
D
1
D
m−1
c(X)
i(X)
¸
·
¸
m
k
¸

¸
¸
¸
·
`

g
m
= 1
FIGURE 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
X
−1
X
−1 ¸ ¸
X
−1
X
−1
¸
`

`

`

`

` ` `
¸ ¸ ¸ ¸
g
0
= 1
g
1
g
2 g
m−1
i(X)
¸
·
`

g
m
= 1
y(X) ·
A
FIGURE 5.5 – Schéma équivalent de l’encodeur cyclique systématique
que
y(X) = i(X) + X
−m
y(X) + g
1
X
−(m−1)
y(X) + . . . + g
m−1
X
−1
y(X)
Soit
y(X)(1 + g
m−1
X
−1
+ g
m−2
X
−2
+ . . . + g
1
X
m−1
+X
−m
) = i(X)
Soit encore
y(X) =
i(X)
1 +g
m−1
X
−1
+g
m−2
X
−2
+. . . +g
1
X
m−1
+ X
−m
y(X) =
X
m
i(X)
X
m
+ g
m−1
X
m−1
+ g
m−2
X
m−2
+. . . +g
1
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 ˆ c(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 ˆ c(X) est la somme du mot code émis et d’un certain polynôme
d’erreur e(X), i.e.
ˆ c(X) = a(X)g(X) + e(X)
Au décodage, ˆ c(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
+e
i+1
X
n−i−1
+. . .+e
i+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
d
min
= 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 < 2
m−1
) on peut montrer qu’il existe un code
binaire BCH avec les paramètres suivants :
Longueur de bloc n n = 2
m
−1
Nombre de bits de contrôle n −k ≤ mt
Distance minimale entre mots-code d
min
≥ 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 = 2
9
− 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 η =
k
n
=
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−k
m
=
100
10
= 10 erreurs. Le rendement du code BCH (1023, 923)
est η =
k
n
=
923
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
de
10
511
) que pour le code BCH (1023, 923) (
10
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(2
m
) 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(2
m
), le théorème suivant nous sera nécessaire.
Théorème 1 Tout polynôme irréductible sur CG(2) de degré m divise X
2
m
−1
+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 2
m
−1 = 2
3
− 1 = 7 on peut vérifier que X
7
+ 1 est divisible par
X
3
+ X + 1. Après division, on obtient bien
X
7
+ 1
X
3
+ X + 1
= X
4
+ X
2
+ 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 = 2
m
− 1.
D’après le théorème précédent, un polynôme primitif a donc pour période 2
m
−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
le thèorème, P(X) doit diviser X
2
m
−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(2
m
)
Le champ de Galois CG(2) est constitué des 2 éléments 0 et 1. Le champ de
Galois CG(2
m
) est constitué des 2
m
éléments suivants
G

=
_
0, 1, α, α
2
, α
3
, . . . , α
2
m
−2
_
(5.10)
76 TBA1
H. Dedieu Codes polynômiaux cycliques
m P(X) m P(X)
3 1 + X +X
3
14 1 +X + X
6
+ X
10
+ X
14
4 1 + X +X
4
15 1 +X + X
15
5 1 + X
2
+X
5
16 1 +X + X
3
+ X
12
+ X
16
6 1 + X +X
6
17 1 +X
3
+ X
17
7 1 + X
3
+X
7
18 1 +X
7
+ X
18
8 1 + X
2
+X
3
+ X
4
+ X
8
19 1 +X + X
2
+ X
5
+X
19
9 1 + X
4
+X
9
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(2
m
) est donc formé par 0 et par les puissances croissantes
de α de l’ordre 0 jusqu’à l’ordre 2
m
− 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 à 2
m
− 2 nous ramène
dans le champ. Pour ce faire on rajoute la condition
α
2
m
−1
= 1 (5.11)
En addition modulo-2, la condition ( 5.11) est équivalente à
α
2
m
−1
+ 1 = 0 (5.12)
Théorème 2 Soit P(X) le polynôme primitif d’ordre m. Soit α une racine de ce
polynôme primitif (α est dit élément primitif de CG(2
m
) de CG(2
m
). Alors G

=
_
0, 1, α, α
2
, α
3
, . . . , α
2
m
−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
X
2
m
−1
+ 1 = P(X)q(X)
En remplaçant X par α il vient
α
2
m
−1
+ 1 = P(α)q(α)
Comme par hypothèse P(α) = 0, on a donc
α
2
m
−1
+ 1 = 0
TBA1 77
Codes polynômiaux cycliques H. Dedieu
Soit d’après les propriétés de l’addition modulo-2
α
2
m
−1
= 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 ≤ 2
m
−2 et 0 ≤ j ≤ 2
m
−2. Si i+j < 2
m
−1,
alors α
i
α
j
= α
i+j
qui est un élément non nul de G

. Si i + j ≥ 2
m
− 1, on peut
toujours écrire i + j = (2
m
−1) + r avec 0 ≤ r < 2
m
−1. Dès lors
α
i
α
j
= α
i+j
= α
2
m
−1
α
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 ≤ 2
m
−1, on divise X
i
par P(X) et l’on obtient
X
i
= q
i
(X)P(X) + a
i
(X) 0 ≤ i ≤ 2
m
−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 a
i
(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
a
i
(X) = a
i,0
+ a
i,1
X + a
i,2
X
2
+ . . . + a
i,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 a
i
(X) = a
j
(X) si i = j.
En remplaçant X par α dans l’équation (5.13) on obtient
α
i
= q
i
(α)P(α) + a
i
(α) 0 ≤ i ≤ 2
m
−1 (5.15)
Comme P(α) = 0, (5.15) devient
α
i
= a
i
(α) = a
i,0
+a
i,1
α+a
i,2
α
2
+. . . +a
i,m−1
α
m−1
0 ≤ i ≤ 2
m
−1 (5.16)
qui peut aussi se représenter sous forme de m−uple
α
i
= (a
i,m−1
a
i,m−2
. . . a
i,1
a
i,0
) 0 ≤ i ≤ 2
m
−1 (5.17)
Les 2
m
−1 a
i
(X) pour 0 ≤ i ≤ 2
m
−1 sont donc tous différents, avec l’élément nul
ils forment 2
m
polynômes de degré m−1 (polynômes à m coefficients). Montrons
maintenant que G

est fermé sous l’addition. On a
α
i
+ α
j
= (a
i,0
+ a
j,0
) + (a
i,1
+ a
j,1
)α + . . . + (a
i,m−1
+ a
j,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)
Pour i = j, du fait que a
i
(X) = a
j
(X), α
i
+ α
j
est non nul, c’est donc forcément
un des 2
m
−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(2
4
) 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 2
4
= 16 éléments du champ de Galois CG(2
4
) 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(2
4
) 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(2
4
)
5.9.2 Propriétés des champs de Galois CG(2
m
)
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(2
4
) 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 2
m
− 1 éléments non nuls de CG(2
m
) sont formés de toutes les
racines de X
2
m
−1
+ 1.
On a donc le corollaire suivant
Corollaire 4 Les 2
m
éléments de CG(2
m
) sont formés de toutes les racines de
X
2
m
+ X.
80 TBA1
H. Dedieu Codes polynômiaux cycliques
Eléments de CG(2
4
) Polynômes minimaux
0 X
1 X + 1
α, α
2
, α
4
, α
8
X
4
+ X + 1
α
3
, α
6
, α
9
, α
12
X
4
+X
3
+ X
2
+ X + 1
α
5
, α
10
X
2
+ X + 1
α
7
, α
11
, α
13
, α
14
X
4
+ X
3
+ 1
TABLE 5.5 – Polynômes minimaux associés aux éléments de CG(2
4
) générés par
P(X) = X
4
+ X + 1
Il résulte du corollaire que tout élément β de CG(2
m
) est une racine X
2
m
+X. Par
conséquent β doit être racine d’un polynôme de degré inférieur à 2
m
. 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(2
4
) 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(2
4
) est donné par la table
5.5.
Théorème 5 Le polynôme minimal m(X) associé à un élément β de CG(2
4
) est
un polynôme irréductible.
Théorème 6 Soit m(X) le polynôme associé à un élément β de CG(2
m
). Soit p le
plus petit entier tel que β
2
p
= β. Dès lors
m(X) =
p−1

i=0
(X +β
2
i
) (5.20)
Ce dernier théorème offre le moyen de construire le polynôme minimal associé à
tout élément de CG(2
m
).
5.9.2.2 Exemple de construction de polynôme minimal
Construire dans CG(2
4
) le polynôme minimal associé à l’élément β = α
9
.
TBA1 81
Codes polynômiaux cycliques H. Dedieu
5.9.2.3 Solution
On calcule d’abord p tel β
2
p
= β. On a
β
2
= α
18
= α
3
β
4
= α
36
= α
6
β
8
= α
72
= α
12
β
16
= α
144
= α
9
(Ces calculs sont effectués en tenant compte que β
2
4
−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 2
p
= 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(2
4
) 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 = 2
m
− 1 capable de corriger t erreurs
(d
min
= 2t + 1) est spécifié à l’aide des racines de son polynôme générateur dans
le champ de Galois CG(2
m
). Soit α un élément primitif de CG(2
m
), 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) = Plus Petit Commun Multiple(m
1
(X), m
2
(X), m
3
(X), . . . , m
2t
(X))
(5.21)
où les m
i
(X) 0 ≤ i ≤ 2t sont les polynômes minimaux associés aux α
i
. 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) = Plus Petit Commun Multiple(m
1
(X), m
3
(X), . . . , m
2t−1
(X))
(5.22)
82 TBA1
H. Dedieu Codes polynômiaux cycliques
Dans CG(2
m
) 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
d
min
= 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
H =
_
¸
¸
¸
¸
¸
¸
¸
_
1 α α
2
α
3
. . . α
n−1
1 (α
2
) (α
2
)
2

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

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

2t
)
3
. . . (α
2t
)
n−1
_
¸
¸
¸
¸
¸
¸
¸
_
(5.25)
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 = 2
m
− 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(2
m
) = CG(2
4
). 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(2
4
) 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) = Plus Petit Commun Multiple(m
1
(X), m
3
(X), m
5
(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(2
4
) ces polynômes sont donnés par la table 5.5, i.e m
1
(X) = X
4
+ X + 1
(polynôme minimal associé à α), m
3
(X) = X
4
+ X
3
+ X
2
+ X + 1 (polynôme
minimal associé à α
3
), m
5
(X) = X
2
+ X + 1 (polynôme minimal associé à α
5
).
Par conséquent
g(X) = Plus Petit Commun Multiple(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) = v
0
+ v
1
X +
v
2
X
2
+. . .+v
n−1
X
n−1
. Définissons par e(X) = e
0
+e
1
X+e
2
X
2
+. . .+e
n−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 = (s
1
, s
2
, s
3
, . . . s
2t
) = rH
T
= eH
T
(5.27)
Par application des équations (5.27) et (5.25), la ième composante du syndrome est
donc
s
i
= r(α
i
) = r
0
+r
1
α
i
+r
2
α
2i
+r
3
α
3i
+. . . +r
n−1
α
(n−1)i
1 ≤ i ≤ 2t (5.28)
ou encore
s
i
= e(α
i
) = e
0
+e
1
α
i
+e
2
α
2i
+e
3
α
3i
+. . . +e
n−1
α
(n−1)i
1 ≤ i ≤ 2t (5.29)
Remarquons que s
i
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
m
i
(X), i.e.
r(X) = a
i
(X)m
i
(X) + b
i
(X) (5.30)
84 TBA1
H. Dedieu Codes polynômiaux cycliques
on a
r(α
i
) = a
i

i
)m
i

i
) + b
i

i
) == a
i

i
)0 + b
i

i
) = b
i

i
) (5.31)
Ainsi la ième composante du syndrome peut être calculée simplement. On divise
r(X) par m
i
(X) et le reste obtenu b
i
(X) sert à calculer r(α
i
) = e(α
i
) = b
i

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 = 2
4
−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(2
4
).
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(2
4
) qui servent à calculer le syndrome
sont donnés par la table 5.5. Soit
m
1
(X) = m
2
(X) = m
4
(X) = X
4
+X+1 m
3
(X) = m
6
(X) = X
4
+X
3
+X
2
+X+1
m
5
(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)m
1
(X), t(X) = (X
8
+X
7
+X
4
+X
3
+X
2
+1)m
3
(X)
t(X) = (X
10
+ X
9
+ X
7
+ X
4
+ X
2
+ 1)m
5
(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 m
1
(X), m
3
(X) et m
5
(X). Après calculs on a
r(X) = (X
8
+ X
7
+X
5
+ X
4
+ X + 1)m
1
(X) + X
3
+ X
2
+ X
r(X) = (X
8
+ X
6
+ X + 1)m
3
(X) + X
r(X) = (X
10
+ X
8
+X
7
+ X
6
+ X
5
+ X
4
+ X
3
)m
5
(X) + X + 1
Les restes des des divisions de r(X) par m
1
(X), m
3
(X) et m
5
(X) s’écrivent donc
respectivement
b
1
(X) = X
3
+ X
2
+ X b
3
(X) = X b
5
(X) = X + 1
On en déduit maintenant (avec l’aide de la table 5.4) les expressions des 6 compo-
santes du syndrome
s
1
= b
1
(α) = α
3
+ α
2
+ α = α
11
s
2
= b
2

2
) = b
1

2
) = α
6

4

2
= (α
3

2
)+(α+1)+α
2
= α
3
+α+1 = α
7
s
3
= b
3

3
) = α
3
s
4
= b
4

2
) = b
1

4
) = α
12

8

4
= (α
3

2
+α+1)+(α
2
+1)+1 = α
3
+1 = α
14
s
5
= b
5

5
) = α
5
+ 1 = α
2
+ α + 1 = α
10
s
6
= b
6

6
) = b
3

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
) =
α
11
2
= α
22
= α
7
, que e(α
3
) = α
11
3
= α
33
= α
3
, etc..., e(α
6
) = α
11
6
= α
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 ≤ j
1
≤ j
2

j
3
. . . ≤ j
µ
< n. On a donc
e(X) = e
j
1
X
j
1
+ e
j
2
X
j
2
+ . . . + e
j
µ
X
j
µ
= X
j
1
+ X
j
2
+ . . . + X
j
µ
(5.32)
D’après l’équation (5.29) on a les 2t équations suivantes
s
1
= α
j
1
+ α
j
2

j
2
+ . . . + α
j
µ
s
2
= (α
j
1
)
2
+ (α
j
2
)
2
+ (α
j
2
)
2
+ . . . + (α
j
µ
)
2
s
3
= (α
j
1
)
3
+ (α
j
2
)
3
+ (α
j
2
)
3
+ . . . + (α
j
µ
)
3
(5.33)
.
.
.
.
.
.
s
2t
= (α
j
1
)
2t
+ (α
j
2
)
2t
+ (α
j
2
)
2t
+ . . . + (α
j
µ
)
2t
Dans l’équation (5.33), les α
j
1
, α
j
2
, α
j
2
, . . . , α
j
µ
sont les inconnues. Une fois ces
inconnues trouvées, on en déduit les positions des erreurs j
1
, , j
2
, . . . , 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(2
m
). Avec de tels codes on traite des éléments
(symboles) de CG(2
m
) 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 = (2
m
−1) symboles (2
m
−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 d
min
= 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(2
4
) car m = 4, (n = 2
m
− 1 =
15 = 2
4
−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(2
4
) 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
g
1
(X) = 1 + X
2
+X
4
+ X
5
+ X
6
+X
10
+ X
11
(5.35)
ou par
g
2
(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)g
1
(X)g
2
(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 2
11
= 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.
C
0
23
= 1 C
1
23
= 23 C
2
23
=
23 ×22
2
= 253 C
2
23
=
23 ×22 ×21
2 ×3
= 1771
Le nombre de combinaisons d’erreurs possibles pour un nombre d’erreurs variant
entre 0 et 3 est
C
0
23
+ C
1
23
+ C
2
23
+ C
3
23
= 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 2
r−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 2
5
− 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 C
1
(X) = c
0
+ c
1
.X + c
2
.X
2
+ . . . + c
n−1
.X
n−1
est un
mot-code (correspondant au n-uple ([c
n−1
, c
n−2
, . . . , c
0
]) alors C
2
(X) = c
n−1
+
c
0
.X + c
1
.X
2
+ . . . + c
n−2
.X
n−1
est aussi un mot-code (correspondant au n-uple
([c
n−2
, c
n−1
, . . . , c
0
, c
n−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
=
A
l
(X).g(X) + R
l
(X) et indiquer le degré maximum de R
l
(X).
2. En déduire que X
n−l
+ R
l
(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 à R
l
(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 G
S
peut être constituée en prenant k
lignes induites par les polynômes X
n−l
+R
l
(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 g
1
(X) = (X
3
+ X
2
+ 1) ou soit g
2
(X) = (X
3
+ X + 1), construire
les matrices génératrices G
S1
et G
S2
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) = u
0
+u
1
X+
. . . + u
k−1
X
k−1
correspondant au k-uple [u
k−1
, u
k−2
, . . . , u
0
] dans lesquels les
u
i
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 u
i
dans l’ordre suivant, u
k−1
est envoyé
au temps 0, u
k−2
au temps 1, . . . u
0
au temps k −1.
1. Montrer que Y (X) est égal à Q(X) =
U(X)
1+X+X
3
.
2. En déduire la valeur de y
i
à chaque temps i pour i = 0 . . . k − 1 en fonction
des termes q
i
du polynôme quotient Q(X) (Q(X) = q
0
+q
1
.X+q
2
.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 u
0
, u
1
, u
2
, q
0
, q
1
et q
2
.
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. u
7
= u
8
= u
9
= 0) ?
8. De manière générale, soit le circuit de la figure 5.7 dans lequel les g
i
valent 0
ou 1. Dans le cas où g
i
= 1, cela veut dire qu’il existe un rebouclage unitaire
92 TBA1
H. Dedieu Codes polynômiaux cycliques
entre la sortie y
i
et l’entrée de l’additionneur correspondant à g
i
, dans le cas
où g
i
= 0 le rebouclage correspondant n’existe pas. Montrer que le circuit
divise U(X) par g(X) = 1 + g
1
X + g
2
X
2
+. . . g
m−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.
D
0
D
1
D
2
+
+
u
i
y
i
+
+
codecycliqueexocircuit61.pdI 1 05/06/05 10:46:01
FIGURE 5.6 – Figure associée à l’exercice 5.6 (questions 1 à 7)
D
0
D
1
D
2
+
+
u
i
y
i
+
+ +
+
D
m-1
+
+
+
+
1 1 g
2
g
1 g
3
g
m-1
codecycliqueexocircuit62.pdI 1 05/06/05 12:37:24
FIGURE 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
01111110
(8 bits)
Fanion
01111110
(8 bits)
Adresse
(8 bits)
Contrôle
(8 bits)
CRC
(16 bits)
Données
(8.K
d
bits)
hdlctrame.pdI 1 05/07/05 21:04:22
FIGURE 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 K
d
.
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 ?
D D D D D D D D D D D D D D
+
+ +
+
+
+
Entrée
Sortie
D
1
2
D
Porte
h
d
lc
c
o
d
e
u
r.p
d
I 1
0
5
/0
8
/0
5
0
0
:2
0
:2
3

FIGURE 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
T T T
v
(2)
v
(1)
u
¸

´
¸
¸ ¸
¸ ¸
¸
¸
¸
¸
· ·
`
·
`
¸
·
`
¸ ¸ ¸ ¸ ¸ ¸ ¸
¸
¸

_
_
FIGURE 6.1 – Un exemple de code convolutionnel (2, 1, 3)
Itération u s
1
s
2
s
3
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 s
1
, s
2
, s
3
les sorties des bascules avec l’indice s
1
pour la bascule de gauche et s
2
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
pour calculer les deux fonctions de transfert
V
(1)
(z)
U(z)
et
V
(2)
(z)
U(z)
. En analysant le circuit
on voit que
V
(1)
(z)
U(z)
= 1 + z
−2
+ z
−3
V
(2)
(z)
U(z)
= 1 + z
−1
+ z
−2
+ z
−3
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
n
c
= 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 n
c
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 2
2
= 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
s
2
s
1

»

´
¸
¸
¡
`
v
T T
v
(
2)
v
(
1)
u
¸ ¸
¸
¸
¸
¸
·
`
·
`
¸ ¸ ¸ ¸ ¸
_
_
FIGURE 6.2 – Exemple de codeur convolutionnel (2, 1, 2)
Entrée Etat Etat suivant Sorties
u s
1
s
2
u s
1
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
¸

»

´
¡
¸
0/01
1/01
0/00
1/00
0/10
1/10
1/11
0/11
¡
¸

»

´

´

»
¸
¸ ¸

´

»
10
01
00
11
FIGURE 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
u s
1
s
2
s
3
u s
1
s
2
v
(1)
v
(2)
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 à 2
m
= 2
2
= 4 états. Décidons de noter l’état
00 par S
0
, l’état 01 par S
1
, l’état 10 par S
2
et l’état 11 par S
3
. 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 S
0
→ S
2
et que
la sortie générée est 11, puis l’arrivée du second 1 génère une transition S
2
→ S
3
pour une sortie 01, enfin l’arrivée du troisième 1 génère une transition S
3
→ S
3
.
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 S
3
→ S
1
par l’intermédiaire d’un
0 en entrée (01 en sortie) et une cinquième itération pour passer de S
1
→ S
0
par
102 TBA1
H. Dedieu Codes polynômiaux cycliques
1/00
1/01 1/01
0/01
0/01
0/11 0/11 0/11
0/10
0/10
0/10
1/11 1/11
1/11
0/00
0/00 0/00 0/00 0/00
m = 2 sorties
¡ ¸
L = 3 sorties
¡ ¸
`

`

`

`

`

´
´
´
´
´
´
´
´´
´
´
´
´
´
´
´
´´
¸
`
`
`
`
`

`

`

`

¸ ¸ ¸ ¸ ¸
`
`
`
`
`
`
`
`
`
`
S
2
S
2
S
2
S
3
1/10
S
3
S
1
S
1
S
1
S
0
S
0
S
0
S
0
S
0 S
0

`
`
`
`
`
`
`

`
`
`
`
`
`
`

`
`
`
`
`
`
`
` ·
`

`

`

`

`

`

FIGURE 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 S
0
(éléments mémoires initialisés à
0) et revient dans le même état S
0
. Les m premières itérations correspondent au
TBA1 103
Codes polynômiaux cycliques H. Dedieu
1/00 1/00
1/00 1/00
0/01 0/01 0/01
0/01
0/01
0/11 0/11
0/11
0/11
0/11 0/11
1/01
1/01
1/01 1/01 1/01
0/10 0/10
0/10
0/10 0/10
0/10
1/11 1/11
1/11 1/11 1/11 1/11
1/10
1/10 1/10 1/10
m = 2
¡
´
´
´
´
´
´
´ ´

`

¸ ¸
S
2
S
1
S
1
S
0
S
0 S
0
`

`

S
3
`

`

`

´
´
´
´
´
´
´´
¸
`
`
`
`

`

¸
`
`
`
`

`
`
`
`
`
`

`

`

`

´
´
´
´
´
´
´´
¸
`
`
`
`

`

¸
`
`
`
`

`
`
`
`
`
`

`

`

`

´
´
´
´
´
´
´´
¸
`
`
`
`

`

¸
`
`
`
`

`
`
`
`
`
`

`

`

`

´
´
´
´
´
´
´´
¸
`
`
`
`

`

¸
`
`
`
`

`
`
`
`
`
`

0/00 0/00 0/00 0/00
0/00 0/00 0/00 0/00
S
3
S
3
S
3
S
2
S
2
S
2
S
1
S
1
S
1
S
0
S
0
S
0
¸
L = 6
¸
`

`

`

¡
`

`

`

`

¸ ¸
`
`
`
`
S
2
S
2
S
3
S
1
S
0
S
0
S
0

`
`
`
`
`
`
` ·
`
`
`
`
`
`

FIGURE 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 S
0
et les m dernières au retour vers l’état S
0
. 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 2
L
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

3

-
-
Z
Z
Z
Z~
Z
Z
Z
Z~

3
J
J
J
J
J
J
J^
1/00 1/00
1/00 1/00
0/01 0/01 0/01
0/01
0/01
0/11 0/11
0/11
0/11
0/11 0/11
1/01
1/01
1/01 1/01 1/01
0/10 0/10
0/10
0/10 0/10
0/10
1/11 1/11
1/11 1/11 1/11 1/11
1/10
1/10 1/10 1/10
m = 2
¡

`

¸ ¸
S
2
S
1
S
1
S
0
S
0 S
0
`

`

S
3
`

`

`

´
´
´
´
´
´
´´
`
`
`
`

`

¸
`
`
`
`

`
`
`
`
`
`

`

`

`

´
´
´
´
´
´
´´
`
`
`
`

`

¸
`
`
`
`

`
`
`
`
`
`

`

`

`

´
´
´
´
´
´
´´
¸
`
`
`
`

`

¸

`
`
`
`
`
`

`

`

`

´
´
´
´
´
´
´´
¸

`

¸
`
`
`
`

`
`
`
`
`
`

0/00 0/00 0/00 0/00
0/00 0/00 0/00 0/00
S
3
S
3
S
3
S
2
S
2
S
2
S
1
S
1
S
1
S
0
S
0
S
0
¸
L = 6
¸
`

`

`

¡
`

`

`

`

¸ ¸
`
`
`
`
S
2
S
2
S
3
S
1
S
0
S
0
S
0
`
`
`
`
`
`
` ·
FIGURE 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 S
0
→S
2
sous l’impulsion d’une
entrée 1, puis que deux bits suivants 10 ont été émis lors d’une transition S
2
→S
1
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 2
L
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 d
min
= 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 S
i
,
i = 0 . . . 3, il n’existe qu’un seul chemin possible conduisant du S
0
initial
(itération 0) à l’état S
i
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
S
0
de l’itération m (m = 2), les transitions d’états sont S
0
→ S
0
→ S
0
, le
chemin optimal est 00 00 alors que l’on a reçu 00 01. On indique pour S
0
une
distance 1. Pour S
1
, les transitions d’état sont S
0
→ S
2
→ S
1
, et le chemin
optimal est 11 10 alors que l’on a reçu 00 01. On indique pour S
0
une distance
4. Pour S
2
on calcule ainsi la distance entre 00 11 et 00 01 et l’on indique une
distance 1. Par le même principe pour S
3
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 S
i
i = 0 . . . 3
associé à l’itération j on calcule la distance entre le chemin menant de S
0
à l’itération 0 à S
i
à l’itération j. On n’a pas besoin de recalculer toutes
les distances, en effet pour l’état S
0
qui est obtenu à l’itération 3 selon les
transitions d’états S
0
→ S
0
→ S
0
→ S
0
, on devrait calculer la distance
106 TBA1
H. Dedieu Codes polynômiaux cycliques
2
1
4
1
0/10
1/01
1/11
0/00
1/11
0/00
`

`

`

m = 2
¡ ¸
L = 3
¡ ¸
`

`

`

`

¸ ¸
`
`
`
`
`
S
2
S
2
S
3
S
1
S
0
S
0
S
0

`
`
`
`
`
`
`

`
`
`
`
`
`
`
` ·
FIGURE 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 S
i
, on note la paire de distances associée à
chaque chemin menant à S
i
. Ceci est décrit par la figure 6.8. Pour chaque état
S
i
à 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
2
3
`
`
`
`
`
1/10
3
2
0/10
0/01

`
6
1
S
3
S
2
S
1
1/00
1/11
`
`
`
`
`
4
`
`
`
`
`
`
`
` ·
3
0/11

0/00
11 01 00
`

`

¸
`

S
0
`

¸
2
1
4
1
0/10
1/01
1/11
0/00
1/11
0/00
`

`

`

m = 2
¡ ¸
L = 3
¡ ¸
`

`

`

`

¸ ¸
`
`
`
`
`
S
2
S
2
S
3
S
1
S
0
S
0
S
0

`
`
`
`
`
`
`

`
`
`
`
`
`
`
` ·
FIGURE 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
1/01
1/01
0/10 0/10
1/11
1/11
1/11
0/00 0/00 0/00

`
`
`
`
`
`
`
` ·
`
`
`
`
`
`
`

S
0
S
0
S
0
S
1
S
3
S
2
S
2
`
`
`
`
`
¸ ¸
`

`

`

`

¸ ¡
L = 3
¸ ¡
m = 2
`

`

`
_¸ 1
4
1
2
¸
`

S
0
`

`

`

00 01 11
3
`
`
`
`
`
`
`
` ·
S
1
S
2
S
3
1
2
`
`
`
`
`
2
bits reçus
FIGURE 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
3
2
2
5
0/01

`
1/00
S
1
S
0
0/11
0/10
0/00

`

11
`

¸
1/01
1/01
0/10 0/10
1/11
1/11
1/11
0/00 0/00 0/00

`
`
`
`
`
`
`
` ·
`
`
`
`
`
`
`

S
0
S
0
S
0
S
1
S
3
S
2
S
2
`
`
`
`
`
¸ ¸
`

`

`

`

¸ ¡
L = 3
¸ ¡
m = 2
`

`

`
_¸ 1
4
1
2
¸
`

S
0
`

`

`

00 01 11
3
`
`
`
`
`
`
`

S
1
S
2
S
3
1
2
`
`
`
`
`
2
bits reçus
FIGURE 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
2
2
S
1
S
0
0/11
0/10

`

11
`

1/01
1/01
0/10 0/10
1/11
1/11
1/11
0/00 0/00 0/00

`
`
`
`
`
`
`
` ·
`
`
`
`
`
`
`

S
0
S
0
S
0
S
1
S
3
S
2
S
2
`
`
`
`
`
¸ ¸
`

`

`

`

¸ ¡
L = 3
¸ ¡
m = 2
`

`

`
_¸ 1
4
1
2
¸
`

S
0
`

`

`

00 01 11
3
`
`
`
`
`
`
`

S
1
S
2
S
3
1
2
`
`
`
`
`
2
bits reçus
FIGURE 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.
S
0
2
4
0/11
0/00
11

`

¸
2
2
S
1
S
0
0/11
0/10

`

11
`

1/01
1/01
0/10 0/10
1/11
1/11
1/11
0/00 0/00 0/00

`
`
`
`
`
`
`
` ·
`
`
`
`
`
`
`

S
0
S
0
S
0
S
1
S
3
S
2
S
2
`
`
`
`
`
¸ ¸
`

`

`

`

¸ ¡
L = 3
¸ ¡
m = 2
`

`

`
_¸ 1
4
1
2
¸
`

S
0
`

`

`

00 01 11
3
`
`
`
`
`
`
`

S
1
S
2
S
3
1
2
`
`
`
`
`
2
bits reçus
FIGURE 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
- -
J
J
J
J
J
J
J
J^

3

3
S
0
2
0/11
11
`

2
2
S
1
S
0
0/11
0/10

`

11
`

1/01
1/01
0/10 0/10
1/11
1/11
1/11
0/00 0/00 0/00

`
`
`
`
`
`
`

`
`
`
`
`
`
`

S
0
S
0
S
0
S
1
S
3
S
2
S
2
`
`
`
`
`
`

`

`

`

¸ ¡
L = 3
¸ ¡
m = 2
`

`

`
_¸ 1
4
1
2
¸
`

S
0
`

`

`

00 01 11
3
S
1
S
2
S
3
1
2
`
`
`
`
`
2
bits reçus
FIGURE 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 = moù les 2
m
é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
chaque état. On note d
(m)
i
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
d
(j)
l
= d
(j−1)
k
+ d(o
k l
, r
j
) (6.2)
où o
k 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 r
j
est la séquence de n bits reçus situés aux positions (j −
1)n+1 à j.n. Pour l = 1 . . . 2
m
chacun des états S
(j)
l
possède 2 métriques associées
à 2 chemins d’accès permettant de visiter S
(j)
l
. 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
opération d’élagage il n’existe plus qu’un chemin pour accéder à chacun des S
(j)
l
et qu’une métrique associée à chacun des S
(j)
l
.
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 maximumde vraisemblance
On suppose ici aussi qu’on utilise un codeur (n, 1, m) et qu’on code une sé-
quence de L bits
u = u
0
, u
1
, u
2
, . . . , u
L−1
112 TBA1
H. Dedieu Codes polynômiaux cycliques
en une séquence de longueur N = n(L + m) de la forme
v = v
0
, v
1
, v
2
, . . . , v
N−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 v
i
entachées de bruit sur Q niveaux.
On dispose alors d’une séquence r de la forme
r = r
0
, r
1
, r
2
, . . . , r
N−1
Pour chaque r
i
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 r
i
sachant que l’on a
émis v
i
. Lorsque les v
i
sont binaires et les r
i
sur Q niveaux, la modélisation du
canal se fait par l’intermédiaire d’une table p(r
i
|v
i
) à 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 = 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(v|r) =
p(r|v)p(v)
p(r)
(6.3)
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 v
i
un bruit blanc
Gaussien on a
p(r|v) =
N−1

i=0
p(r
i
|v
i
) (6.5)
(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
log (p(r|v)) =
N−1

i=0
log
_
p(r
i
|v
i
)
_
(6.6)
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
d
(j)
l
= d
(j−1)
k
+ log(p(r
j
|v
j
= o
k 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.
D D x
y
1
y
2
y
3
+
+
+
+
+
+
FIGURE 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.
T T
+ +
+
+
+
+
+
u
v
( 1)
v
(2 )
v
(3 )
FIGURE 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
T T
+ +
+
+
+
u
v
( 1)
v
(2 )
FIGURE 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 s
0
(t) et
s
1
(t) est utilisée afin de représenter les bits 0 ou 1. Soit E
b
l’énergie d’un bit durant
un temps T
b
, le signal associé au ”0” sera défini par
s
0
(t) =
¸
2E
b
T
b
cos(2πf
c
t) 0 ≤ t < T
b
, (7.1)
118 TBA1
H. Dedieu Modulations numériques
0 1 2 3 4 5 6
−1
−0.5
0
0.5
1
S
a
u
t

d

a
m
p
l
i
t
u
d
e
0 1 2 3 4 5 6
−1
−0.5
0
0.5
1
S
a
u
t

d
e

p
h
a
s
e
0 1 2 3 4 5 6
−1
−0.5
0
0.5
1
S
a
u
t

d
e

f
r
é
q
u
e
n
c
e
FIGURE 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
1
(t) =
¸
2E
b
T
b
cos(2πf
c
t +π) = −
¸
2E
b
T
b
cos(2πf
c
t) = −s
0
(t) 0 ≤ t < T
b
,
(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 f
c
=
n
c
T
b
où n
c
est un nombre entier. Les deux signaux sinusoïdaux s
0
(t) et s
1
(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)
s
0
(t)
_
φ
0
(t) = K
0
, (7.3)
Si l’équation (7.3) est vérifiée, comme s
1
(t) = −s
0
(t), on a bien sûr
TBA1 119
Modulations numériques H. Dedieu
s
1
(t)
_
φ
0
(t) = −K
0
, (7.4)
avec K
0
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
x(t)
_
y(t) =
_
T
b
0
x(t).y(t)dt (7.5)
(Remarquons que lorsque x(t) est égal à y(t), l’équation 7.5 représente l’éner-
gie de x(t) durant le temps T
b
.)
L’une des façons de maximiser K
0
est de prendre une fonction φ
0
(t) proportion-
nelle à s
0
(t) et donc sinusoïdale. Une fonction à énergie unitaire sur un intervalle
de temps T
b
doit avoir une amplitude
_
2
T
b
, la fonction φ
0
(t) vaut donc
φ
0
(t) =
¸
2
T
b
cos(2πf
c
t) (7.6)
L’application du produit scalaire de la fonction φ
0
(t) au signal s
0
(t) ou s
1
(t)
permettra la discrimination des deux fonctions s
0
(t) et s
1
(t) à condition que K
0
soit suffisamment grand.
Que vaut K
0
? On a,
K
0
=
_
T
b
0
s
0
(t).φ
0
(t)dt = 2

E
b
T
b
_
T
b
0
cos
2
(2πf
c
t)dt =
_
E
b
(7.7)
L’ensemble de l’opération de démodulation est schématisé à la Figure 7.2.
cos(2Sf
0
t)
s
0
(t)
s
1
(t)
b
T
2
³
b
T
0
Eb
Eb

FIGURE 7.2 – Suivant le signal s
0
(t) ou s
1
(t) appliqué à l’entrée du démodulateur,
apparaîtra en sortie +

E
b
ou −

E
b
après un temps T
b
.
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 T
b
,
s
0
(t) 0 ≤ t < T
b
(resp. s
1
(t)) avec un point qui vaut +

E
b
(resp. −

E
b
). La
coordonnée du "point de message" est donc ±

E
b
. L’ensemble de l’opération de
démodulation est schématisée à la Figure 7.3.
120 TBA1
H. Dedieu Modulations numériques
b
b
T
E 2
Eb Eb

b
b
T
E 2
b
b
T
E 2
b
b
T
E 2
-
-
Tb
Tb 0 0
s
0
(t)
s
1
(t)
Frontière de
décision
FIGURE 7.3 – Suivant le signal s
0
(t) ou s
1
(t) appliqué à l’entrée du démodulateur,
apparaîtra dans un cas idéal en sortie +

E
b
ou −

E
b
après un temps T
b
. 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
N
0
2
et de moyenne nulle
se superpose à la détection optimale, les signaux obtenus en sortie du détecteur sont
des signaux aléatoires de moyenne ±

E
b
et de variance σ
2
b
=
N
0
2
. Ainsi lorsque
l’on envoie un signal s
0
(t) à l’entrée du modulateur, on détecte en sortie un nombre
aléatoire X
0
dont la densité de probabilité est
p
X
0
(x
0
|0) =
1

2πσ
b
exp
_

1

2
b
(x
0

_
E
b
)
2
_
(7.8)
Cette fonction s’interprète comme la densité de probabilité de recevoir un nombre
aléatoire X
0
dans un voisinage de x
0
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(x
1
≤ X
0
< x
0
+ dx
0
) = p
X
0
(x
0
|0)dx
0
(7.9)
De la même manière lorsque l’on envoie un signal s
1
(t) à l’entrée du modu-
lateur, on détecte en sortie un nombre aléatoire X
1
dont la densité de probabilité
est
p
X
1
(x
1
|1) =
1

2πσ
b
exp
_

1

2
b
(x
1
+
_
E
b
)
2
_
(7.10)
Les densités de probabilité associées aux deux variables aléatoires X
0
et X
1
sont représentées à la Figure 7.4 pour un cas particulier où

E
b
= 1.5 et σ
b
= 0.6.
−4 −3 −2 −1 0 1 2 3 4
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
Nombres aléatoires détectés à la sortie du démodulateur
D
e
n
s
i
t
é
s

d
e

p
r
o
b
a
b
i
l
i
t
é
s
FIGURE 7.4 – Les deux densités de probabilité associées aux variables aléatoires
X
0
et X
1
représentées pour un cas particulier où

E
b
= 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 −

E
b
). Or la densité
de probabilité du nombre obtenu à la sortie du démodulateur sachant qu’un "1" a été
émis est p
X
1
(x
1
|1). Par conséquent, la probabilité de détecter un "0" sachant qu’un
"1" a été émis que nous appellerons p
01
est l’intégrale de la densité de probabilité
sur la demi-droite des nombres positifs, i.e
p
01
=
_
+∞
0
p
X
1
(x
1
|1)dx
1
(7.11)
L’illustration de cette intégrale est donnée à la Figure 7.5. Détaillons maintenant le
122 TBA1
H. Dedieu Modulations numériques
Eb

FIGURE 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 p
01
, il vient
p
01
=
_
+∞
0
1

2πσ
b
exp
_

1

2
b
(x
1
+
_
E
b
)
2
_
dx
1
, (7.12)
soit en tenant de σ
2
b
=
N
0
2
,
p
01
=
_
+∞
0
1

πN
0
exp
_

1
N
0
(x
1
+
_
E
b
)
2
_
dx
1
, (7.13)
En posant z =
1

N
0
(x
1
+

E
b
) et donc dz =
1

N
0
dx
1
, la probabilité d’erreur s’écrit
p
01
=
1

π
_
+∞

E
b
/N
0
exp
_
−z
2
_
dz, (7.14)
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
erfc(a) =
2

π
_
+∞

a
exp
_
−z
2
_
dz, (7.15)
On a donc
p
01
=
1
2
erfc
_
¸
E
b
N
0
_
, (7.16)
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
p
10
=
1
2
erfc
_
¸
E
b
N
0
_
. (7.17)
Si l’on admet une équiprobabilité des "0" et des "1" émis, la probabilité d’erreur est
p
eBPSK
=
1
2
p
01
+
1
2
p
10
=
1
2
erfc
_
¸
E
b
N
0
_
. (7.18)
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 N
0
, le fait d’ac-
croître E
b
, 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 E
b
de façon à pouvoir atteindre une probabilité d’erreur
prescrite (e.g 10
−5
).
−5 −2.5 0 2.5 5 7.5 10
10
−6
10
−5
10
−4
10
−3
10
−2
10
−1
10
0
Eb/No
P
e
FIGURE 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 comme résultant d’une mise en forme de type NRZ bipo-
laire d’amplitude ±
_
2E
b
T
b
, cette mise en forme étant elle-même modulée par une
porteuse à fréquence f
c
. L’ensemble de l’opération de modulation est schématisée
à la Figure 7.7.
cos(2Sf
c
t)
T
E
b
b 2
1, 0, 1, 1, .....
NRZ bipolaire
m(t)
Message
binaire toutes
les Tb sec.
x(t)
y(t)
x(t)
t
Séquence NRZ
bipolaire
Tb
Séquence
BPSK
T
E
b
b 2

FIGURE 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 f
c
pour les fréquences positives et
sur −f
c
pour les fréquences négatives.
Que vaut maintenant l’occupation spectrale d’une séquence NRZ dont la durée
de chaque bit est T
b
et donc l’amplitude est ±
_
2E
b
T
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 de cette
séquence. Calculons cette fonction d’autocorrélation. Posons A =
_
2E
b
T
b
.
TBA1 125
Modulations numériques H. Dedieu
R
X
(τ) = E[x(t)x(t + τ)] (7.19)
Il y a deux cas à considérer, soit |τ| < T
b
, ou |τ| ≥ T
b
. 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 ≥ τ < T
b
. On s’aperçoit que de τ à T
b
, 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
R
X
(τ) =
1
T
b
_
T
b
τ
A
2
dt =
1
T
b
A
2
[t]
T
b
τ
= A
2
[1 −
τ
T
b
] si 0 ≥ τ < T
b
(7.20)
2) Supposons maintenant que −T
b
< τ ≤ 0. On s’aperçoit que de 0 à T
b
+
τ, x(t) et x(t + τ) ont la même polarité. De T
b
+ τ à T
b
, 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
R
X
(τ) =
1
T
b
_
T
b

0
A
2
dt =
1
T
b
A
2
[t]
T
b

0
= A
2
[1+
τ
T
b
] si −T
b
< τ ≤ 0 (7.21)
3) Supposons maintenant que |τ| > T
b
. 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".
R
X
(τ) = 0 si |τ| ≥ T
b
(7.22)
On peut résumer l’étude de la fonction d’autocorrélation sous la forme de la for-
mule suivante,
R
X
(τ) =
_
A
2
.[1 −
|τ|
T
b
] |τ| < T
b
0 |τ| ≥ T
b
(7.23)
La transformée de Fourier de la fonction d’autocorréaltion s’écrit alors
S
X
(f) = T.F.[R
X
(τ)] =
_
0
−T
b
A
2
[1+
t
T
b
] exp
−j2πft
dt+
_
T
b
0
A
2
[1−
t
T
b
] exp
−j2πft
dt
(7.24)
Après manipulation de cette dernière équation, on trouve,
S
X
(f) = A
2
.T
b
sin
2
(πfT
b
)
(πfT
b
)
2
, (7.25)
soit en remplaçant A par
_
2E
b
T
b
,
126 TBA1
H. Dedieu Modulations numériques
S
X
(f) = 2E
2
b
sin
2
(πfT
b
)
(πfT
b
)
2
= 2E
2
b
sinc
2
(T
b
f) (7.26)
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
−5 −4 −3 −2 −1 0 1 2 3 4 5
0
0.5
1
1.5
2
Tb.f
S
p
e
c
t
r
e

B
P
S
K

e
n

b
a
n
d
e

d
e

b
a
s
e
−5 −4 −3 −2 −1 0 1 2 3 4 5
0
0.2
0.4
0.6
0.8
1
Tb.f
S
p
e
c
t
r
e

B
P
S
K


(
e
x
e
m
p
l
e

a
v
e
c

f
c
=
3
/
T
b
)
FIGURE 7.8 – Spectre d’un signal BPSK (en bande de base) et en bande réelle pour
un exemple avec f
c
=
3
T
b
.
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
,

4
,

4
ou

4
. On peut alors définir le signal QPSK comme
étant l’un des quatre signaux suivants
s
i
(t) =
¸
2E
T
cos
_
2πf
c
t + (2i −1)
π
4
_
0 ≤ t < T i = 1 . . . 4, (7.27)
où E est l’énergie par bit, T est la durée d’un symbole correspondant à l’un des
quatre états de phase et f
c
est un multiple de
1
T
. 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
i
(t) =
¸
2E
T
cos(2πf
c
t) cos
_
(2i −1)
π
4
_

¸
2E
T
sin
_
2πf
c
t) sin((2i −1)
π
4
_
i = 1 . . . 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
φ
1
(t) =
¸
2
T
cos(2πf
c
t) φ
2
(t) = −
¸
2
T
sin(2πf
c
t), (7.29)
Remarquons par ailleurs que φ
1
(t) ⊥ φ
2
(t) au sens du produit scalaire suivant
φ
1
(t)
_
φ
2
(t) =
_
T
0
φ
1
(t)φ
2
(t)dt = 0 (7.30)
On peut alors d’après (7.28) et (7.29) récrire s
i
(t) sous la forme
s
i
(t) =


1
(t) cos
_
(2i −1)
π
4
_
+


2
(t) sin
_
(2i −1)
π
4
_
i = 1 . . . 4,
(7.31)
l’ensemble des quatre signaux possibles est alors
s
i
(t) = ±
¸
E
2
φ
1
(t) +±
¸
E
2
φ
2
(t) i = 1 . . . 4, (7.32)
On peut alors convenir d’un diagramme d’états pour la modulation QPSK en
décrivant le message s
i
(t) suivant sa décomposition sur les axes φ
1
(t) et φ
2
(t). Ce
diagramme est donné à la Figure 7.9.
2
Eb

2
Eb

2
Eb
2
Eb
I
1
I
2
FIGURE 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
0 0 −
_
E
2
, −
_
E
2

4
0 1 −
_
E
2
, +
_
E
2

4
1 0 +
_
E
2
, −
_
E
2

4
1 1 +
_
E
2
, +
_
E
2
π
4
TABLE 7.1 – Exemple de codage possible QPSK.
2
Eb

2
Eb

2
Eb
2
Eb
I
1
I
2
11
10
01
00
FIGURE 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-
mettre. On peut noter que le signal QPSK est la somme d’un signal φ
1
(t) × ±
_
E
2
et d’un signal φ
2
(t) × ±
_
E
2
. 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 lorsque le premier bit du symbole (dibit) est "1", alors le signal sur la voix I
est φ
1
(t) ×
_
E
2
, si le premier bit du symbole est "0" alors le signal sur la voix I est
φ
1
(t)×−
_
E
2
. De même lorsque le deuxième bit du symbole (dibit) est "1", alors le
signal sur la voix Q est φ
2
(t) ×
_
E
2
, si le deuxième bit du symbole est "0" alors le
signal sur la voix Q est φ
2
(t) ×−
_
E
2
. Le signal QPSK correspondant au message
[01 10 10 00] est donné à la Figure 7.11.
130 TBA1
H. Dedieu Modulations numériques
0 0.5 1 1.5 2 2.5 3 3.5 4
−1
−0.5
0
0.5
1
V
o
i
x

I
0 0.5 1 1.5 2 2.5 3 3.5 4
−1
−0.5
0
0.5
1
V
o
i
x

Q
0 0.5 1 1.5 2 2.5 3 3.5 4
−1.5
−1
−0.5
0
0.5
1
1.5
S
i
g
n
a
l

Q
P
S
K
FIGURE 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 la séquence binaire est en-
codée par une séquence NRZ bipolaire d’amplitude ±
_
2
T
. 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.
cos(2Sf
c
t)
Séquence
binaire
Encodeur
NRZ
bipolaire
Démultiplexeur
sin(2Sf
c
t)
T
2
1

I
T
2
2

I
0 1 1 0 1 0
0 1 1 0 1 0
2
E
2
E

Signal BPSK
2
E
2
E

0 1 1
2
E
2
E

1 0 0
T
T
b
T T
T T T
T=2T
b
FIGURE 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.
_
T
0
φ
2
1
(t)dt = 1
_
T
0
φ
2
2
(t)dt = 1
_
T
0
φ
1
(t)φ
2
(t)dt = 1 (7.33)
Partant de l’équation (7.31) que nous récrivons par commodité de raisonnement,
s
i
(t) =


1
(t) cos
_
(2i −1)
π
4
_
+


2
(t) sin
_
(2i −1)
π
4
_
i = 1 . . . 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,
_
T
0
s
i
(t)φ
1
(t)dt =

E
_
_
T
0
φ
2
1
(t)dt
_
cos
_
(2i −1)
π
4
_
+

E
_
_
T
0
φ
2
(t)φ
1
(t)dt
_
sin
_
(2i −1)
π
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,
_
T
0
s
i
(t)φ
1
(t)dt =

E cos
_
(2i −1)
π
4
_
= ±
¸
E
2
. (7.36)
De manière similaire, en utilisant φ
2
(t) au lieu de φ
1
(t), on trouverait,
_
T
0
s
i
(t)φ
1
(t)dt =

E sin
_
(2i −1)
π
4
_
= ±
¸
E
2
. (7.37)
Autrement dit, les produits scalaires de s
i
(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
cos(2Sf
c
t)
Décision
toutes les T
sec.
Démultiplexeur
T
b
=T/2
sin(2Sf
c
t)
T
2
1

I
T
2
2

I
0 1 1 0 1 0
2
E
2
E

2
E
2
E

2
E
2
E

1 0 0
T
T
b
T T
T T T
³
T
0
³
T
0
Décision
toutes les T
sec.
s
i
(t)
Décodeur
NRZ
message
binaire
0 1 1 0 1 0
0 1 1
FIGURE 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 σ
2
b
=
N
0
2
, et T = 2T
b
où T
b
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 s
i
(t) reçu est entaché d’un bruit Gaussien
de variance σ
2
b
=
N
0
2
, en sorte que l’on reçoive en fait,
x(t) = s
i
(t) + w(t) 0 ≤ t < T i = 1 . . . 4 (7.38)

E[w(t)]
2
=
N
0
2
(7.39)
Après démodulation sur la voie I, on trouve à l’instant T où se fait la décision,
x
I
=
_
T
0
s
i
(t)φ
1
(t)dt +
_
T
0
φ
1
(t)w(t)dt = cos
_
(2i −1)
π
4
_
+
_
T
0
φ
1
(t)w(t)dt,
(7.40)
soit
x
I
= ±
¸
E
2
+
_
T
0
φ
1
(t)w(t)dt (7.41)
De même sur la voie Q, on trouverait,
x
Q
= ±
¸
E
2
+
_
T
0
φ
2
(t)w(t)dt (7.42)
Posons pour les bruits entachant x
I
et x
Q
,
w
1
=
_
T
0
φ
1
(t)w(t)dt w
2
=
_
T
0
φ
2
(t)w(t)dt (7.43)
Les nombres aléatoires w
1
et w
2
représentent le bruit de démodulation sur les
deux voies. Quelle est la variance de chacun de ces deux bruits ?
On a
E[w
2
1
] = E
_
_
T
0
φ
1
(t)w(t)dt
_
2
=
_
T
0
φ
2
1
(t)E[w(t)]
2
dt =
N
0
2
(7.44)
On trouverait de même
E[w
2
2
] =
N
0
2
(7.45)
TBA1 135
Modulations numériques H. Dedieu
En conclusion, les deux composantes x
I
et x
Q
ont une énergie
E
2
et sont enta-
chées d’un bruit de variance
N
0
2
. Chaque voie I ou Q pouvant être assimilée à un
système BPSK, la probabilité de faire une erreur sur chaque voie, c’est-à-dire sur
un bit est connue, c’est donc
P
e
QPSK
=
1
2
erfc
_
_
¸
E/2
N
0
_
_
(7.46)
Or comme un bit dure la moitié du temps d’un symbole, on a
E
b
=
E
2
(7.47)
La probabilité d’erreur d’un système QPSK est donc
P
e
QPSK
=
1
2
erfc
_
¸
E
b
N
0
_
(7.48)
Or cette expression est identique à celle de P
e
BPSK
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 T
b
par
bit a un spectre
S
BPSK
= 2Asinc
2
(T
b
f)
Or notre signal QPSKest formé de la somme de deux spectres de signaux BPSK
indépendants (voies I et Q). Chacune de ces voies BPSK a une énergie
E
2
par bit et
une durée T secondes. Les deux spectres s’additionnant, on trouve
S
QPSK
= 2
E
2
sinc
2
(Tf) + 2
E
2
sinc
2
(Tf) (7.49)
Soit en tenant compte de E = 2E
b
et T = 2T
b
,
S
QPSK
= 4E
b
sinc
2
(2T
b
f) (7.50)
La comparaison de l’étendue spectrale des modulations BPSK et QPSK montre
que pour un même T
b
, 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 −3 −2 −1 0 1 2 3 4
0
0.5
1
1.5
2
2.5
3
3.5
4
Tb.f
C
o
m
p
a
r
a
i
s
o
n

d
e
s

s
p
e
c
t
r
e
s

B
P
S
K

e
t

Q
P
S
K

e
n

b
a
n
d
e

d
e

b
a
s
e
BPSK
QPSK
FIGURE 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
s(t) = {

E
b
.φ(t) 0 ≤ t ≤ T
b
(symbole 1)


E
b
.φ(t) 0 ≤ t ≤ T
b
(symbole 0)
où la fonction φ(t) est telle que :
φ(t) =
¸
2
T
b
cos(2πf
c
t)
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
r(t) =
¸
2
T
b
cos(2πf
c
t + ψ)
On supposera un bruit de démodulation w(t) Gaussien de variance σ
2
b
=
N
0
2
. On
supposera que f
c
est un multiple de
1
T
b
.
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) = A
c
cos(2πf
c
t + k
p
m(t))
dans lequel k
p
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) = A
c
sin(2πf
c
t + θ(t))
1. Evaluez la sortie du filtre de boucle en supposant que la composante à 2.f
c
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 T
b
.)
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), le symbole "1" est représenté par un signal porteur sinusoïdal d’amplitude
_
2E
b
T
b
où E
b
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
N
0
2
, 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πf
c
t) ±

1 −k
2
cos(2πf
c
t)
où 0 ≤ t ≤ T
b
, f
c
est un multiple de
1
T
b
, 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
N
0
2
, la probabilité d’erreur est
P
e
=
1
2
erfc
_
¸
E
b
N
0
(1 −k
2
)
_
3. Supposez que 10% de la puissance transmise soit dévolue au signal porteur.
Déterminez alors le rapport signal à bruit
E
b
N
0
permettant d’assurer une proba-
bilité d’erreur de 10
−4
.
4. Comparez la valeur trouvée à la valeur du rapport signal à bruit
E
b
N
0
que l’on
devrait assurer pour maintenir une probabilité d’erreur de 10
−4
avec une mo-
dulation PSK conventionnelle.
TBA1 139

Table des matières
I
1

Introduction au codage de source et au codage de canal
Introduction au cours de Télécommunications Numériques 1.1 Eléments d’un système de communication numérique . . 1.2 Fonction du codage de source . . . . . . . . . . . . . . . 1.3 Le canal de communication . . . . . . . . . . . . . . . . 1.4 Les imperfections du canal de communication . . . . . . 1.5 Fonction du codage de canal . . . . . . . . . . . . . . . 1.6 Fonction du modulateur numérique . . . . . . . . . . . . 1.7 Fonction du démodulateur . . . . . . . . . . . . . . . . 1.8 Fonction du décodage de canal . . . . . . . . . . . . . . 1.9 Fonction du décodage de source . . . . . . . . . . . . . 1.10 Plan du cours . . . . . . . . . . . . . . . . . . . . . . . Notions de la théorie de l’information 2.1 Information=Surprise . . . . . . . . 2.2 Comment mesurer l’information ? . 2.2.1 Exemple 1 . . . . . . . . . 2.2.2 Exemple 2 . . . . . . . . . 2.3 Entropie=Moyenne de l’information 2.3.1 Exemple 3 . . . . . . . . . 2.3.2 Remarque historique :-) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1
1 1 2 4 6 16 16 17 17 18 18 19 19 20 21 21 22 23 24 25 25 26 26 27 28 28 28 30 32 34

2

3

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

c 2010 HEIG-VD.

3

.1 Le code CCITT V. . .2 Préliminaires pour les codes linéaires par blocs . . . 4.7. . . . . . .5 Réalisation d’un encodage de code cyclique . 5. . . . .2 Décodage avec l’algorithme Lempel-Ziv . .5. . 5. .TABLE DES MATIÈRES TABLE DES MATIÈRES 34 36 36 43 44 44 44 45 46 48 48 49 50 51 51 51 53 54 56 57 58 61 62 62 64 66 67 67 67 68 70 71 72 73 73 74 74 74 74 3. . .5. . .1 Champ de Galois CG(2) . Exercices . . . . . . . 5. . . .2 Codes blocs générés par des matrices systématiques 4. . 4. . . 4. . .3 Principe général des codes détecteurs-correcteurs . . 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7. . .7. . . . . . .6 Correction d’erreurs avec les codes blocs linéaires . . . . . . . . . 4. . . . . . . . . . . . . . . . . . . . . . . . . . . .41 . . . . . . . . . . . . . . . . 5. . . . . . . . . . . . . . . . . . . . 4. .5. . . . 4. . . . . . . . . . .4.3 Matrice d’éléments binaires . .1 Généralités .4 Décodage d’un code cyclique (n. . . . . . . . .3. . . . 5. . . . . . . . . . . . . .7. . . . . . . . . .4. . . .4 Codeur d’un code cyclique . . . . . . . . . . . .3 Circuit de division . . . . .3. . . . . .7.4. . . .2. .5. . . . . . . . . . . . . . .4. . . . . . . . . .7 Code de Hamming .4 Codes linéaires par blocs (n. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3. 3. . . . 5. .7 Quelques polynômes générateurs normalisés . . . . . . . . . . . 4.2 Le code CRC-16 . . . . . . . . . . . .1 Introduction . .3. . . . . . . .4 Le code ARPA . .3 Capacité de correction d’un code . 5. . . . k) sous forme systématique . . . . . . . . . . . . . . .5 4 3. . . . . .5 Réalisation matérielle du décodage d’un code cyclique systématique . . . . . . . . . . . 4 TBA1 . . . . . . . . . . . . . . . . . . . . . . . . . 5. . . . . . . . . . . .8 Exercices . . 5. . . . . . . . . . . . . . . . 4. 4. 5. . . . . . . . . . . . . . . . . 4. . . . . . . . . . . . . . . . . . . . . . . 5. . . . . . . . . . . . . . . k) .5 Le code ETHERNET . . . . . .2 Capacité de détection d’un code .2. . . . . . .5 Détection d’erreur avec un code linéaire par bloc . . . . . . . . . . . . . . 5. . 5. . . . . . . . . Codes détecteurs et correcteurs d’erreur 4. 5. . . . 4. . . . . . .4 Rendement d’un code . . . . . . . . . . . . . . . . . . . . 4. . . . . . . . . . .1 Introduction .2 Propriétés fondamentales des codes cycliques .1 Principe et propriétés . . . . . . . . . . . .1 Introduction . . . . . . . . . . . . . .2 Distance de Hamming . . . . . 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5. . . . .5.3 Le code CRC-12 . . . . . 4. . . .6 Propriétés des codes polynômiaux (cycliques ou non) . . . . . . . . . . . . .3 Encodage d’un code cyclique (n. . . . 5. . . . .2. . . . 5 Détection et correction d’erreur par codes polynômiaux cycliques 5. . . k) . . .1 Codage de type Lempel-Ziv . . . . . .2 Préliminaires . .

. . . . . . .5. . . . . . . . . . . . . . . . . .2. . .2 Les codes de Fire . 5. . . . . . . . . . . . .1 Introduction au décodage selon l’algorithme de Viterbi . . . . . . . 5. . .6 Décodage d’un code BCH . . . . . .9. . . . . . . . . . . . . . . . . . . . . 118 7. . . . . . . . . . . . . . . . . . . . .5 Décodage d’un code convolutionnel . . . . . . . . .11 Quelques codes cycliques remarquables . .1 Description des codes BCH . . 121 7. . . . . .3 Longueur de contrainte d’un code convolutionnel . . . . .2. .6 Exercices .4 Graphe de transition d’un code convolutif . . . . . .5 Calcul du syndrome d’un code BCH .4 Exemple de construction de code BCH . . 5. . . . . . . . . . .9. . . . . . . . . .3 Probabilité d’erreur avec un système BPSK en présence de bruit blanc Gaussien additif . . . . . . . . . . 125 7.2 Propriétés des champs de Galois CG(2m ) . .1 Remarque fondamentale concernant le codage .4 Algorithme de Viterbi pour la méthode du maximum de vraisemblance . . . 5. . . . . . . .2 Technique par saut de phase . .1 Introduction . . .TABLE DES MATIÈRES 5. . . . . . . . . . . . . 119 7. . . . . . 118 7. . . . . 132 5 TBA1 . . . . . . . 5. . . . . .12 Exercices . . . . 6 Codes convolutionnels 6. . .2 Diagramme en treillis associé à un code convolutionnel .9. . . .9. . . . 130 7. 5. . .8. . . . . . . . . . . . . . . . . . . .3 Construction des codes BCH . . . . .5. . 5. . . . . . . . . . 125 7. .4. . . . . . . . . .6 Technique par saut de phase quadriphase (QPSK) . .4 Génération d’une modulation BPSK . 6. . . 128 7. . . . . .11. .2. . . .2. . . . 6. . . . . . . . . . .9.9. .7 Exemple de construction de signaux QPSK . . . . . . . . . . . . . . . . . . . .2 Encodage de codes convolutionnels . . 6. . . . . . . . . .1 Le code de Golay . .2. . . . . . . . . . . . . 6. 6. 6. . . . . .8 Génération de signaux QPSK . . . . . . . 7 Modulations numériques 117 7. . . . . . . . . . . . . . . .3 Décodage selon le principe du maximum de vraisemblance 6. . . . . . . .2 Algorithme de Viterbi pour un codeur (n.5. . .1 Construction des champs de Galois CG(2m ) . 6. . . . . . . 6. .1 Introduction . . .2. . . . . 6. . . . . . . . . . . . .9 Eléments théoriques nécessaires au développement des codes BCH 5. . . . . . . . . . . . .2. 5. . . . . . . . . . . . . . . . . . . . .4. . . .5 Occupation spectrale d’une modulation BPSK . . . . . .1 Technique par saut de phase binaire (BPSK) . . . . 5. . . 6. . . . .5.11. m) . . . . 5. . . . . . .10 Codes de Reed-Solomon . . . . . 5. . . . . . . . . . . . . . . . .8 TABLE DES MATIÈRES 75 75 76 76 80 82 83 84 87 87 88 88 89 91 97 97 97 99 99 100 102 105 105 112 112 114 115 Codes cycliques BCH . . . . . . . . . . . . . . 1. . . . 5. .2. . .2 Démodulation optimale (BPSK) . . . 118 7.

. . . . Exercice 3 (PSK) . . . . . . . Probabilité d’erreur des systèmes QPSK . . . . . . . . . . . .9 7. . . . . . . . . . . . . . . . .2. . . . . . . . . . . . . .2. . Exercice 2 (PSK) . . . . .15 7. . . Exercice 4 (ASK) .10 7.12 7. Occupation spectrale d’une modulation QPSK Exercice 1 (PSK) . 6 TBA1 . . . Exercice 5 (PSK) . . . . . . . . . . . .13 7.11 7. . . . . . . . . . . . . .TABLE DES MATIÈRES 7.2.2. . . . . . . . . . . . . . . . . . . .2. .2. . . 133 135 136 138 138 138 139 139 Détection optimale de signaux QPSK . . .2.14 7. .2. . .16 TABLE DES MATIÈRES . . . . . . . . . . . . . . . . . . . .

. . Le canal de communication . .6 1. . .5 1. de théorie de l’information. .1 Introduction au cours de Télécommunications Numériques CONTENU 1. . . .2 1. . . . . . . . Fonction du modulateur numérique . . . . . Fonction du décodage de canal .1 Eléments d’un système de communication numérique La figure 1. . . . . . .4 1. . de modulation et démodulation tels qu’ils sont utilisés dans les systèmes de communication numériques actuels. . . . . . . . . Plan du cours . 1 .3 1. . .10 Eléments d’un système de communication numérique Fonction du codage de source . . . . . . . . . . . . . . . . . . . . . . Les imperfections du canal de communication .9 1. . . Fonction du décodage de source . . . . . . . . . . . . . . . . . . . .7 1. . . . . . . . . . .1 illustre le fonctionnement d’un système de communication numé- c 2010 HEIG-VD. . . . . 1. 1 2 4 6 16 16 17 17 18 18 Résumé Ce chapitre motive les suivants en présentant de manière très générale les concepts de codage. . . . . . . Fonction du codage de canal . 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. . . . Fonction du démodulateur . . . . . . . . . . . .1 1. . . . . .8 1. . . . . .

beaucoup plus immune au bruit qu’un système purement analogique. Cette information numérique est ensuite encodée dans un alphabet dit alphabet de source par le bloc de codage de source. Le premier bloc de traitement que l’on découvre sur notre émetteur est le bloc de conversion qui échantillonne et quantifie le message analogique à transmettre. un Baud correspondant à 2 TBA1 . On introduit ainsi. Ce message est traité de façon numérique. certes binaires. 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 . Si les symboles sont envoyés à une fréquence de 8 kHz on en enverra donc 8 ksymboles/s 1 qui correspondront 1. -}. : . 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. Dans ce schéma. on doit en fait traiter 12 signaux élémentaires.Introduction H. Le prix à payer est un accroissement en besoin de bande passante. . c’est un principe d’économie qui guide la conception de ce bloc. on peut en effet considérer que lorsqu’on convertit un signal analogique sur 12 bits. Un système numérique est donc par nature. 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. une source émet un message qui le plus souvent appartient au monde analogique. Les spécialistes de télécommunications parleraient de 8 kBauds. mais 12 signaux au lieu d’un seul. Imaginons par exemple que nous ayons à transmettre des textes contenant les 26 lettres de l’alphabet français plus les 6 symboles de ponctuations appartenant à l’ensemble { " . F IGURE 1.2 Fonction du codage de source La fonction élémentaire de ce bloc de codage est de réduire le débit binaire.1 – Architecture générale d’un système de communication numérique 1. c’est à dire remplacé par une séquence de nombres binaires. Dedieu rique. Ces 32 symboles peuvent être codés sur 5 bits.

De bout en bout on reproduit avec exactitude le message codé. 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 ne peut pas dire que ces algorithmes suppriment de la redondance car ils proposent un codage sans perte. Ainsi les symboles les plus probables de l’alphabet de transmission se trouvent codés avec le moins de bits. on suppose donc ici que le codage est effectué afin que le décodage soit unique. on obtiendrait alors après codage de source un débit de transmission de 3. 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. ils sont dits sans mémoire car ils n’utilisent pas l’histoire du signal à transmettre. les codages avec ou sans perte : 1. Dedieu Introduction en fait à 5 × 8 kbits/s = 40 kbits/s.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. loi µ).H. ces algorithmes prennent en compte la mémoire d’un modèle de production qui les a engendré. les 32 symboles de notre alphabet soient représentés par moins de 5 bits 2 Supposons que cette moyenne soit 3. les plus improbables en consommant plus. ainsi l’alphabet Morse. 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. Les algorithmes de codage de source appartiennent à deux grandes catégories. alors que le point de ponctuation était codé par un alternat de 6 sons bref-long-bref-long-bref-long. utilisé depuis 1835 codait la lettre "E" avec seulement un seul son bref. Les algorithmes les plus utilisés dans ce domaine sont l’algorithme d’Huffman et l’algorithme de Lempel-Ziv 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. Dans leurs versions évoluées. Une image simple d’un tel type de code est le code Morse.5. 2. On trouve alors une façon d’extraire l’information pertinente pour notre système sensoriel et de ne transmettre que cette information. TBA1 3 . Certains de ces algorithmes sont sommaires comme les algorithmes qui s’inspirent des lois de compression non linéaire de notre système auditif (loi A. Une façon un symbole par seconde. Si l’on réalise toutefois que toutes les lettres et tous les signes de ponctuations ne sont pas équiprobables. mais de façon à ce qu’en moyenne. Dans leur raffinement récents. Ils sont dits algorithme de codage avec mémoire. La très grande difficulté ayant résidé dans la découverte de principe de codages invariants pour notre système perceptif. Les algorithmes utilisés ici sont donc des algorithmes de codage avec perte. 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é. il apparaît comme faisant 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.

on transmet alors le numéro du centroïde sous forme d’une séquence binaire. Comme on se retrouve généralement confronté à transmettre des vecteurs dans un espace multi-dimensionnel. On trouve trois types principaux de canaux de communications : le canal filaire. 1. Le canal de communication est le support physique qui sert à la transmission. d’autres à venir sont plus probables. La quantification vectorielle permet de ne considérer qu’un nombre fini de points de cet espace multi-dimensionnel. Certains de ces algorithmes sont communément utilisés dans les systèmes de transmissions parce que directement adaptés au traitement temps-réel de l’information. on utilise une technique dite de quantification vectorielle que l’on surajoute à la technique de prdédiction. VDSL. bio-chimiques et électriques. Les méthodes utilisent largement la transformation de signal dans l’espace des fréquences . ADSL. L’appareil phonatoire a ainsi une mémoire. – le câble coaxial (Ethernet) permettant d’échanger des signaux jusqu’à 1 GHz 4 TBA1 . Au lieu de transmettre le signal. d’où un intérêt évident à essayer d’utiliser l’histoire du signal. vibratoires. on transmet les paramètres du prédicteur de signal. la fibre optique. des algorithmes de prédiction des symboles sont implémentés dans cet espace transformé. Ethernet) permettant une bande passante jusqu’à 10 M Hz. Un foisonnement de méthodes existent ici suivant que l’on considère du signal audio ou vidéo. Le canal filaire (wireline) On trouve plusieurs types de support comme : – la paire torsadée (téléphone. Dedieu de les comprendre est d’imaginer que tout système physiologique de production et d’écoute du son obéit à des contraintes mécaniques. le sans fil. Ce prédicteur de signal est en quelque sorte un modèle simplifié de l’appareil phonatoire. 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.3 Le canal de communication Avant de parler du bloc de codage de canal et du bloc de modulation. les centroïdes. elle consiste à trouver le centroïde de l’espace le plus proche du vecteur prédicteur calculé à un instant donné. 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. dont les contraintes mécaniques font qu’il varie moins vite que le signal. il nous faut donner quelques idées relatives à l’action du canal de communication.Introduction H.

une vue synthétique des différentes bandes occupée par ces canaux. On donne à la figure 1. HF. VHF. – 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 . UHF. F IGURE 1. Dedieu Introduction – le cuivre non torsadé comme pour les réseaux à courants porteurs dit PLC (Power Line Communication). optique. permettant d’échanger des signaux jusqu’à 20 M Hz de bande.H.2. – les guides d’ondes permettant d’assurer des communications via des ondes électromagnétiques guidées entre 1 GHz et 100 GHz. EHF) utilisant des longueurs d’ondes variées (λ = c/f ). guidé. SHF. Le sans fil (wireless) Les canaux Hertziens ont été segmentés en un certains nombres de canaux (MF.2 – Les principaux canaux guidés : filaire.

4 Les imperfections du canal de communication Il existe deux types d’imperfection. Au récepteur. l’envoi de ce message sur le canal correspondra à une atténuation des composantes spectrales harmoniques de la fréquence fondamentale 6 TBA1 . 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. 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). – 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).875 GHz et GSM 1900 (entre 1. ces bandes sont réservées au radio-amateurs et à la CB (citizen band). – 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). à la radio par modulation de fréquence (FM).Introduction H. – 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). Dedieu à modulation d’amplitude dits AM (systèmes de plus en plus désuets mais encore utilisés en radio.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). Si l’on admet qu’un message donné est décomposé en série de Fourier. Des répéteurs peuvent se trouver sur la fibre à des longueurs équi-espacées afin de compenser l’atténuation due à la distance. La fibre optique Les canaux par fibre optiques offrent des bandes passantes supérieures de plusieurs ordres de grandeur par rapport à celles des cables co-axiaux. 1. la première est liée à la bande passante limitée du canal. Ces deux types de bande étant occupées par les transmissions par satellite. On donne à la figure 1. dans le domaine maritime en particulier). ce dernier agit comme un filtre qui dans le meilleur des cas est linéaire. L’information est ici transmise en modulant l’intensité d’une source de lumière qui se propage le long d’une fibre. réservées à la TV VHF. GSM 1800 (entre 1. une vue synthétique des différentes bandes occupée par ces canaux.710 à 1. une photodiode détecte la lumière et émet un signal électrique proportionnel à l’intensité de la lumière reçue.3.

la mémoire du canal fait que la réponse au bit précédent s’ajoute à celle du bit courant. On a ce qu’on appelle de l’interférence inter-symbole. Ce n’est pas le seul paramètre limitatif. n(t) est le bruit additif introduit par le canal. 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 y(t) = x(t) ∗ h(t) + n(t) = ∞ 0 h(τ ) ∗ x(t − τ )dτ + n(t) (1. est donc un facteur limitatif au débit accessible de communication avec des taux d’erreur acceptables. On peut admettre que si la troncation est trop sévère. Ceci est montré à la figure 1. Dans le domaine fréquenciel.1) où h(t) est la réponse impulsionnelle du canal. Ceci devient évident sur le diagramme en oeil correspondant (figure 1. Effets liés au bruit du canal Le canal introduit toutes sortes de bruit et de distortions. Si l’on diminue la bande passante du canal et que celle-ci prenne par exemple la valeur 0. La reconstruction sera d’autant meilleure que la bande passante du canal sera large. 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 reconstruction avec les détecteurs à seuil. on s’aperçoit sur la figure 1. Dedieu Introduction d’analyse du message initial. Le bruit de communication.5 que le message reçu rendra la reconstruction difficile ou quasi-impossible. l’équation précédente se ramène à Y (f ) = X(f )H(f ) + N (f ) (1. Dans le meilleur des cas. La recomposition du message au récepteur sera tronquée et déformée parce qu’un certain nombre de composantes spectrales auront été éliminées par le canal. et ∗ est l’opérateur de convolution. Ceci est montré à la figure 1. influe aussi de manière déterminante. On a superposé sur la figure le train de bits ainsi ainsi que sa réponse filtrée par le canal. et c’est souvent une approximation que l’on fait.9Te ].H. 0.2) 7 TBA1 .4 ou un train de bits de durée Te s est envoyé sur un canal qui est un filtre passe-bas d’ordre 4 de fréquence de coupure 2/Te filtre le train de bits. 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. La bande passante. on ne puisse plus reconstruire le message émis et que la détection des bits soit impossible au récepteur.4Te . 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. On s’aperçoit que la vitesse de réaction du canal le rendra impropre à toute communication au delà d’un certain débit.7) où l’oeil apparaît fermé. principalement dû au canal.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.35/Te .

ils dépendent des canaux utilisés. mais en pratique. 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.5 qui montrait un canal de communication très bon avec un oeil complètement ouvert. les harmoniques des signaux générés peuvent rayonner et induire des salves d’erreur sur les communications ADSL.3) TBA1 . des filtres de protection contenant des inductances peuvent se mettre à saturer. 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. 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. les systèmes sans fil sont souvent affectés de phénomènes de multitrajets. 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 . Dans les systèmes DSL. les canaux même s’ils sont linéaires ne sont pas à phase linéaire. les bruits électroniques de type bruit thermique.8 et 1. Certes. en ADSL. Ceci est montré au figures 1. On peut reprendre l’exemple des figures 1. Dedieu Dans la pratique. 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. sont présents dans toutes les résistances et circuits actifs intégrés de la chaîne de transmission . Au delà d’un certain niveau de bruit il est clair que la reconstruction du signal deviendrait impossible. Comment avoir un aperçu de l’influence du bruit dans le domaine de la transmission. Parfois les canaux ne sont pas linéaires. cette diaphonie se manifeste par un couplage plus complexe qu’un simple bruit additif en bout de ligne. on peut généralement prendre en compte ces bruits comme un bruit Gaussien additif.9. 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). il en résulte une distortion de phase (temps de propagation de groupe non constant).4 et 1. Cette formule s’exprime par C = W log2 1 + 8 P N0 W (bits/s) (1. 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. De manière générale. il existe de la diaphonie (crosstalk) entre les lignes adjacentes induites par un couplage capacitif présent sur une grande portion de ligne. Par exemple. Parfois les bruits sont impulsifs. les choses sont un peu moins simples. 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 interférences entre canaux.Introduction H. mais de nombreux autres bruits existent.

Encore aujourd’hui. Shannon ne nous dit pas comment construire les outils de communications de façon à exploiter au mieux la capacité du canal.H. S’il est important de connaître cette vitesse maximum. TBA1 9 . 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. c’est une limitation de vitesse fondamentale que l’on ne peut dépasser. à chaque exploitation d’un nouveau canal de communication. de nouvelles idées et concepts surgissent pour optimiser les blocs de traitement de communication. Insistons sur le fait que cette limite est théorique. Dedieu Introduction où P désigne la puissance moyenne du signal transmis et N0 la puissance moyenne du bruit additif.

10 TBA1 . Dedieu F IGURE 1.Introduction H.3 – Les principaux canaux "sans-fil".

4 – Réponse du canal : la fréquence de coupure du canal est deux fois la fréquence des bits.H.5 0 −0. Dedieu fc=2/Te 1.5 Introduction 1 0.5 0 5 10 15 20 25 30 35 40 F IGURE 1.5 −1 −1. TBA1 11 .

5 −1 −1.5 1 0. Dedieu fc=0.5 – Réponse du canal : la fréquence de coupure du canal est deux fois la fréquence des bits.35/Te 1.5 0 −0.5 0 5 10 15 20 25 30 35 40 F IGURE 1. 12 TBA1 .Introduction H.

5 0.1 1.7 0.5 −1 0.4 0.H.4 .3 0.9 1 1.2 F IGURE 1.6 – Diagramme en oeil associé à la figure 1.5 amplitude 0 −0. Dedieu fc=2/Te Introduction 1 0.6 0. TBA1 13 .8 time (second) 0.

5 0.5 amplitude 0 −0.35/Te 1 0.5.1 1.2 F IGURE 1.5 1 0.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.6 0. fc=2/Te 2 1.8 time (second) 0.4 0. 14 TBA1 .Introduction H.3 0. Dedieu fc=0.5 −2 0 5 10 15 20 25 30 35 40 F IGURE 1.7 – Diagramme en oeil associé à la figure 1.5 −1 0.5 −1 −1.9 1 1.7 0.5 0 −0.

9 – Diagramme en oeil associé à la figure 1.5 0. TBA1 15 .9 1 1.8 time (second) 0.5 −1 −1. Dedieu Introduction fc=2/Te 1.6 0.H.5 amplitude 0 −0.4 0.3 0.5 0.8.2 F IGURE 1.5 1 0.1 1.7 0.

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. dans une concision remarquable nous donnant la valeur limite de la capacité pour un débit sans erreur. En lui-même. On module donc ce signal porteur à l’aide de notre signal d’information. Ce codage particulier. l’intersymbole et le bruit génèreraient forcément des erreurs au récepteur. la fréquence du signal porteur. il est nécessaire de mettre en oeuvre un moyen intelligent de détecter et corriger les erreurs de communication. liant la signature au message à transmettre. La formule de Shannon. Ce détecteur est très sommaire car il ne peut détecteur qu’un nombre impair d’erreurs. pour combattre à la fois le bruit de communication et l’interférence intersymbole.Introduction H. corriger sans avoir à redemander un renvoi du paquet.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. Dedieu 1. Or si détecter est important. On verra dans la suite de ce cours des codes de canaux bien plus sophistiqués. appelé codage de canal est une signature que l’on va rajouter sur tout paquet d’information à transmettre. Cette signature est une fonction mathématique connue du récepteur. 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. Or. Une grande force du codage de canal est de pouvoir détecter les erreurs (ou plutôt détecter un certain nombre d’erreurs) et de les corriger. la phase. Entre l’information transmise et sa signature doit exister une correspondance de telle sorte. 1. que si le récepteur ne constate pas de correspondance. ces deux bits codent des impulsions à 4 amplitudes possibles en bande de base. et il ne peut corriger les messages. il puisse détecter une erreur ou plusieurs erreurs. Un code détecteur sommaire d’erreur est un bit de parité que l’on rajoute à un paquet de bits. on groupe les bits à transmettre par paquet de 2. alors que le codage de source reposait sur un principe d’économie de bits à transmettre. Si l’on ne faisait rien. On montre à la figure 1. Soulignons ici que le codage de canal repose sur l’ajout d’une redondance. On peut jouer sur l’amplitude. Dans cet exemple. et en particulier. Ce signal peut-être bande étroite ou large bande. le signal porteur qui est parfaitement déterministe.10. ne porte aucune information. un exemple où l’on module l’amplitude d’un signal porteur à fréquence fixe. l’est tout autant. On multiplie (module) alors une porteuse à fréquence f0 par le signal en bande de 16 TBA1 .

F IGURE 1. le démodulateur contient un système de synchronisation lui permettant de se verrouiller sur le signal porteur. Dedieu Introduction base. En général.8 Fonction du décodage de canal Le décodeur de canal détecte les erreurs et éventuellement les corrige. TBA1 17 .H.10 – Exemple de modulation par modulation d’amplitude d’impulsions. 1. 1. Ce type de modulation est dit. Ceci n’est qu’un exemple parmi une très grande variété de possibilités de modulations. c’est-à-dire le message. modulation d’amplitude d’impulsions (PulseAmplitude-Modulation ou PAM).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.

18 TBA1 .Introduction H.10 Plan du cours Nous nous analyserons les principaux blocs de traitement de l’information dans les systèmes de communications numériques. nous nous attacherons à décrire les principes qui gouvernent le codage de source et le codage de canal. 1. nous chercherons donc à décrire des principes généraux de quelques systèmes importants utilisés en communications numériques. Dedieu 1. il est illusoire d’être exhaustif.9 Fonction du décodage de source C’est la fonction mathématique inverse à celle du codage de source. Dans le temps imparti. 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.

. .2. . . . . . . . . . . . . 22 23 24 Résumé Ce chapitre est une très brève introduction à la théorie de l’information.1 2. . Il fera jour demain 2. . . .2 Exemple 1 . . . . . . . . . . . .2 Notions de la théorie de l’information CONTENU 2. . . . Comment mesurer l’information ? .3.1 2. .2. . . Avant d’aller plus loin. . . . . 2. . 19 . .3 Information=Surprise . . . . .2 2. . . . . . . . . . . . . . . . . . . . . . . cette signification est différente de celle que nous lui accordons habituellement. . . Remarque historique :-) . . . . . . .1 Information=Surprise Nous allons essayer de définir ici la notion d’information . . 19 20 21 21 Entropie=Moyenne de l’information . . On n’introduit ici que les définitions classiques de l’information. . . . .3. Exemple 2 . . . . . . . . . . Exemple 3 . . . . Prenons un exemple et considérons les deux assertions suivantes : 1. . . . . Ne sont pas abordé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 2. . . . . . Le président de la Confédération dansera nu à la prochaine streetparade c 2010 HEIG-VD. . .2 2. . . . il faut être conscient que la notion d’information a une signification particulière dans la théorie des probabilités. . . . . . .

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. La théorie mathématique de l’information est donc seulement liée à la notion de surprise. En résumé 1. ou que la transition QW a une probabilité d’apparition nulle. il faut bien admettre que la notion de sens est difficilement quantifiable pour une machine. Il est en effet hautement improbable. Supposons que les deux messages suivants aient transité de l’ordinateur 1 vers l’ordinateur 2. l’information est en effet liée à la fois à la notion de surprise mais aussi au sens. 2. 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. l’assertion 2) nous apporte un éclairage particulier sur sa personnalité. Considérons maintenant deux ordinateurs reliés entre eux et échangeant des données. l’ordinateur 2. Les raisons de ce choix sont simples. En ce sens le message QWERTZ sera plus surprenant que le message AMOUR pour l’ordinateur 2. il semble que l’assertion 2) en apporte le plus. plus un événement est incertain. qu’il ne fasse pas jour demain. 1. Bien que nous soyons certainement très peu intéressé par la vie privée du président de la Confédération. elle abandonne la notion des sens. d’autre part. et peut s’apercevoir que les lettres W et Z sont peu usitées. Dedieu Si l’on se demande laquelle de ses deux assertions transporte le plus d’information. Dans notre vie quotidienne. qui "voit passer" un très grand nombre de messages en Français peut mesurer la fréquence des lettres. ou nous surprend (probabilité d’apparition proche de 0) et plus il apporte d’information. Alors I(E) devrait être une fonction décroissante de P (E) (Les événements à forte probabilité de réalisation 20 TBA1 . AMOUR 2. Par contre. QWERTZ Notre réaction immédiate est de nous dire que le message QWERTZ n’a aucun sens et donc ne porte aucune information. On voit donc que la notion d’information ou de de quantité d’information est étroitemement liée à la notion de de surprise.2 Comment mesurer l’information ? C’est la question que s’est posé Claude Shannon en 1948 dans un article désormais célèbre "A Mathematical Theory of Communications". plus un événement est certain (probabilité d’apparition proche de 1) et moins il apporte d’information. Remarquons que pour l’ordinateur les deux messages n’ont certainement aucun sens. 2.Théorie de l’information H.

1) 2. (Remarquons que 2 bits sont nécessaires pour coder ces 4 symboles).e.2. La probabilité de chaque symbole étant 1 .H. D. Si bien que l’information liée à la réalisation de l’événement E est décrite par I(E) = −log2 (P (E)) L’unité d’information est le bit. p(B) = 4 . sa réalisation n’apporte aucune information. Si l’événement est certain. L’usage a consacré le logarithme a base 2. 2.P (E2 ) alors I(E) = I(E1 ) + I(E2 ) Un des candidats possibles pour une telle mesure est une fonction logarithmique. I(E) = 0 si P (E) = 1 . I(E) = −K loga (P (E)) ou K et a sont des constantes positives. TBA1 21 . l’information associée à leur apparition est donc 4 I(A) = I(B) = I(C) = I(D) = −log2 ( 1 ) = 2 4 Evénement E p(E) I(E) A 2 bits 1 4 B 2 bits 1 4 C 2 bits 1 4 D 2 bits 1 4 TABLE 2.1 – Calcul de l’information quand les symboles sont équiprobables 2.1 Exemple 1 Soient deux machines échangeant des messages avec des mots qui ont un alphabet de 4 symboles.e. B. Si l’on considère la réalisation de 2 événements indépendants ( la réalisation de l’un n’a pas d’influence sur la réalisation de l’autre) alors l’information liée à la réalisation des 2 événements devrait être égale à la somme des informations des événements. C. 3. i. i. 4. Dedieu Théorie de l’information apportent moins d’information que les événements à faible probabilité de réalisation).2.2 Exemple 2 Supposons maintenant que les symboles ne soient plus équiprobables mais que 1 1 leurs probabilités d’apparition se répartissent suivant la loi p(A) = 2 .e. i. (2. A. Supposons que ces 4 symboles soient équiprobables et calculons l’information associée à l’apparition des quatre symboles. L’information ne peut être une quantité négative i.e. Autrement dit soit E = E1 E2 tel que P (E) = P (E1 E2 ) = P (E1 ). I(E) >= 0 pour tout événement E appartenant à l’espace des événements.

Dans l’exemple 1. alors l’information apportée par chaque symbole est log2 (N ombre de symboles) (en l’occurrence 2 bits pour l’exemple 1). on voit que si les symboles transmis sont équiprobables. e2 . en . 2. idem pour D. Les quantités d’information relatives aux différents symboles 8 8 calculées selon l’équation (2. La valeur moyenne de l’information H(X) est donc n n H(X) = i=1 P (ei )I(ei ) = − i=1 P (ei ) log2 (P (ei )) (2.2 – Calcul de l’information quand les symboles ne sont plus équiprobables p(C) = 1 . en anticipant sur les notions de codage que nous introduirons ultérieurement. . p(D) = 1 . Chaque événement ei a une probabilité d’apparition P (ei ) et une quantité d’information associée I(ei ). on voit que l’événement A apparaîtra une fois sur deux . . 22 TBA1 . C une fois sur 8 et nécessitera 3 bits. se mesure donc aussi en bits. quel est le nombre moyen de bits d’information dans l’exemple 2. Pour calculer la moyenne on doit tenir compte des pondérations qui expriment la fréquence d’apparition des symboles.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.2) L’entropie. Le nombre de bits moyen d’information pour l’exemple 2 est donc 1 1 1 1 14 1+ 2+ 3+ 3= = 1. est-il inférieur ou supérieur à 2. A la lumière de ces deux exemples. mesure moyenne de l’information.2.Théorie de l’information Evénement E p(E) I(E) A 1 bits 1 2 H. Soit une variable aléatoire X qui se réalise par n événements possibles e1 . le nombre moyen de bits d’information est 2. L’événement B apparaîtra une fois sur quatre et nécessitera 2 bits. on coderait A sur 1 bit (on a besoin d’un seul bit une fois sur deux). Dedieu B 2 bits 1 4 C 3 bits 1 8 D 3 bits 1 8 TABLE 2. Pour l’exemple 2.3 Entropie=Moyenne de l’information Les deux exemples précédents font apparaître un nombre moyen de bits d’information différent.1) sont données par la table 2. .

7 0. L’entropie mesure l’incertitude. Par contre lorsque p = 0.1 0 0 0.1 0. 1 bit.2 0. H(X) = 0 si et seulement si X prend une de ses valeurs de façon certaine 3.3 0. Dans ce cas particulier l’application de la formule (2. En conséquence l’incertitude sur l’apparition du symbole est faible et l’entropie est proche de 0.H.4 0. on est pratiquement sûr de voir B (respectivement A) se réaliser. Calculer l’entropie en fonction de p. Les messages sont tels que p(A) = p et donc p(B) = 1 − p.5 0. l’entropie prend sa valeur maximale.6 0.1 – Entropie en fonction de p (Exemple 3) 2.8 0.2) donne H = −p log2 (p) − (1 − p) log2 (1 − p) La figure 2.3. H(X) ≥ 0 2. Dedieu Entropie en fonction de p 1 Théorie de l’information 0.e. 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. l’entropie H(X) vérifie les propriétés suivantes 1.3 0.1 Exemple 3 Soit un ordinateur 1 envoyant des symboles vers un ordinateur 2.1 montre que l’entropie est maximum quand les symboles sont équiprobables. De façon générale on peut montrer que pour une variable aléatoire discrète X prenant n valeurs possibles.7 p=Probabilité d'apparition du symbole A 0.8 0.2 0.9 1 F IGURE 2. Les symboles seront désignés par A et B.6 Entropie 0. H(X) = log2 (n) si et seulement si X est uniformément distribué. H(X) ≤ log2 (n) 4. on a un maximum d’incertitude sur l’apparition d’un symbole.5 0.9 0. i.5.4 0. TBA1 23 .

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

3 3. . . On distingue : 1. . . 3. . . le codage de source visant à transformer la source d’information (appelée source primaire) en une source d’information secondaire qui est à entropie maximale. . . . Capacité. . . . . Algorithme de Lempel-Ziv . . . . . .5 3. Décodage unique et décodage instantané Longueur moyenne des mots . . . 25 26 26 27 28 28 28 3. .1.1. . . . . . . . .4 3. . . . . Inégalité de Kraft-McMillan . 30 32 34 34 36 Exercices . . . . . . .4. . . . . . Décodage avec l’algorithme Lempel-Ziv . . . . . . . . . . . . . . .1 Généralités Comme nous l’avons vu dans le chapitre introductif. . . 36 Ce chapitre introduit les notions de codage de source. . .6 Codes à longueur constante . . .1. . . . . Codage binaire de Huffman . . . . .1. . . . . . . . . . . . . . . .3 Codage de Source CONTENU 3. . . . 3. . . .1. . . . .1 3. . . . . . . . . . . . .1 3. . . . . .2 3. . . . . . différentes sortes de codage sont utilisées. . . 25 . . . . . . . . . . . . . . . .1 Généralités . .4 3. efficacité et redondance du code . . . . .3 3. . . . . . .5 Résumé Codage de Shannon-Fanno . . . . . . . . . . . . . . . . L’objectif est donc de réduire au maximum la redondance et la c 2010 HEIG-VD. .2 Codage de type Lempel-Ziv . . .1. . . . . .4. . . . . . . Codes à longueur variable . . 3. . . . .2 3. . . . . .

. Le code correspondant sera donc [C] = [00. O] à coder à partir d’un alphabet binaire [X] = [0. 1]. xi1 . fréquemment utilisée. sn ] tandis que l’alphabet du code aura m symboles [X] = [x1 . Un exemple de ce type de code est le code ASCII qui utilise des mots de 7 bits. Dedieu 2. le codage de canal qui s’appuie sur des codes détecteurs et correcteurs d’erreur. . x2 .1 Codes à longueur constante Le codage le plus simple consiste à donner la même longueur à tous les mots. xin . 01. . I. etc L’éventail des techniques utilisées est très grand. . tandis que la lettre Q plus rare est codée par quatre symboles (− − . . le codage d’émission réalise l’adaptation des signaux aux canal par modulation. s2 . .1. c2 . . xm ] Un mot du code est une suite finie de l’alphabet X. E. filtrage. . Le code désignera un suite finie de n mots. . est codée par un seul symbole (. il est plus économe d’utiliser des codes à longueur variable : le mot-code d’un symbole de source aura une longueur variable.). . .1. cn ] Exemple Soit [S] = [A. on s’attachera aux familles principales de codage de source et de canal. 3. .−) 26 TBA1 . xi2 . 11] 3. On considérera dans la suite un alphabet de source à n symboles [S] = [s1 . au contraire du codage de source augmente la longueur et la redondance des messages afin de permettre la détection et éventuellement la correction des erreurs occasionnées par l’action des perturbations dues au canal. . 01 pour E. 10. où la lettre E. H. distorsion linéaire. 10 pour I. 3. Un code possible sera 00 pour A. Le codage de canal.2 Codes à longueur variable Si l’on dispose des probabilités d’émission des différents symboles de l’alphabet de source [S]. qui décroît avec la probabilité d’émission. Un exemple d’un tel code est le code Morse. [C] = [c1 . 11 pour O.Codage de source longueur des messages.

on peut faire en sorte que chaque succession de mots du code corresponde une seule succession de l’alphabet de source. Dedieu Codage de source 3. 01 est préfixe de 011 et 0111. . Parmi les codes à décodage unique.1 Le Message sk A E I O Code 1 Code 2 00 0 01 10 10 110 11 1110 Code 3 Code 4 0 0 01 10 011 110 0111 111 TABLE 3. il existe les codes à décodage instantané et les codes à décodage non instantané. . Soit à coder [S] = [A. et la réception de 10 on décodera E. au décodage. Un code instantané est un code à décodage unique. 011. Par contre pour le code 3. 0 n’est pas préfixe de 10 ni de 110 ni de 1110. . xim avec m < n. on pourra utiliser les différents codes donnés dans la table 3. xi2 . xin un mot du vocabulaire du code C. Le code 3 par contre n’est pas instantané. Le code 2 est donc un code instantané. xi2 . xi3 . Soir ci = xi1 . mais la réciproque n’est pas vraie. 0111 . on dit qu’on a un code à décodage unique . Ainsi pour le code 2. 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. Observons que la réception du premier 0 ne nous permet pas de décoder A instantanément. on obtient cette fois 00110.1 – Exemples de codes à décodage unique code à décodage unique le plus simple est le code 1. .1. Le code 3 est aussi à décodage unique car le 0 sert d’indicateur de début de mot. 10 n’est pas préfixe de 110 ni de 1110 et 110 n’est pas préfixe de 1110. Soit par exemple à coder le mot AIE avec le code 2. . à la réception du premier 0 on sait instantanément qu’il s’agit de A qui a été codé. 0 est préfixe de 01. car ses mots sont de même longueur. 011 est préfixe de 0111. Le code 2 est à décodage unique parce que le symbole 0 sert d’indicateur de fin de mot. puis à la réception de 110 on peut immédiatement décoder I.3 Décodage unique et décodage instantané Si les mots du code sont convenablement choisis. 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. O]. Dans ce cas. Par conséquent le code 3 n’est pas un code instantané. La propriété de décodage unique est la propriété que doit posséder tout code. . Si l’on code AIE. xi3 . Le code 3 n’est pas un code instantané. ceci donne le message 011010 . TBA1 27 . E. on définit comme préfixes tous les mots plus courts que ci de la forme xi1 . I.H.

4 Longueur moyenne des mots L’efficacité du codage peut se mesurer par la longueur moyenne des mots codes ci . 3. 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. 10. Dedieu 3. Par exemple 0. cette longueur moyenne est ¯ L= n pi li i=1 (3. 110.1.1.2) il existe un code instantané.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 ¯= l n m−li ≤ 1 (3.3) 28 TBA1 .Codage de source H.1. 1110. 11110.2) i=1 où m est le nombre de symboles de l’alphabet du code.1) où les pi sont les probabilités des symboles si représentés par des mots ci de longueur li .6 Capacité. 3. Solution Nous avons n = 5 et m = 2 et 2−1 + 2−2 + 2−3 + 2−4 + 2−5 = 31 <1 32 Dès lors par l’équation (3. 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. 4 et 5 bits. 2.

1] et supposons que l’on utilise le codage suivant TBA1 29 .7) La redondance ρ d’un code se définit comme ρ=1−η Exemple Considérons une source dont l’alphabet [S] = [A. 1 . alors on la relation H(S) = ¯ lH(X) Soit ¯ = H(S) l H(X) (3. Dedieu 3.7 on déduit la valeur de l’efficacité du code η= H(X) log 2(m) (3. D] et les probabili1 tés associées sont [P ] = 2 . On appelle efficacité η (ou rendement) du code.4). On a vu que l’entropie était maximale lorsque les m symboles étaient équiprobables.4) Question : que le vaut la longueur moyenne minimale ? L’information moyenne produite par la source est H(S).H. . Soit ¯ la longueur moyenne en symboles de X l permettant de coder l’alphabet de source. (3.6) Or on vient de voir que H(X) prenait sa valeur maximale lorsque H(X) = log 2(m). 1 .8) (3.1 Commentaire Codage de source La capacité du code X est la valeur maximale de l’entropie des symboles du code. η= ¯min l ¯ l (3. .6. 1 .5) (3. B . par conséquent la valeur minimum de ¯ sera l ¯min = H(S) l log 2(m) Des équations (3.5) et (3. C . et dans ce cas l’entropie vaut log 2(m).9) H(S) = − i=1 pi log 2(pi ) = −1 1 1 1 7 (−1) − (−2) − (−3) − (−3) = 2 4 8 8 4 Prenons maintenant un alphabet binaire [X] = [0. le rapport entre la longueur moyenne minimale et la longueur moyenne d’un mot du code. L’entropie de la source est 4 8 8 4 (3.1. Pour un alphabet de code binaire C = 1.

3 – Nouveau Code associé aux symboles A.125 η= Prenons maintenant un nouveau code La longueur moyenne est maintenant Symbole Code Probabilité A 0 1 2 B 10 1 4 C 110 1 8 D 111 1 8 TABLE 3.Codage de source Symbole Code Probabilité A 00 1 2 H. d’où l 4 ¯min l 7 = = 0. d’où ¯min = H(S) = 7 . B. 3. Dedieu B 01 1 4 C 10 1 8 D 11 1 8 TABLE 3. Ceci a été réalisé en allouant un mot-code de longueur égale à la quantité d’information du symbole de source associé.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.2 – Code associé aux symboles A. C et D ¯ = 1 (1) + 1 (2) + 1 (3) + 1 (3) = 7 l 2 4 8 8 4 Par conséquent pour ce nouveau code η= ¯min l ¯ =1 l ρ=0 Le nouveau code atteint la valeur maximale de l’efficacité. Les n symboles ont 30 TBA1 . Soit un alphabet [S] à n symboles à coder dans un alphabet binaire. B. C et D La longueur moyenne est donc 4 ¯ = 1 (2) + 1 (2) + 1 (2) + 1 (2) = 2( pi = 2) l 2 4 8 8 i=1 Comme ¯min = l H(S) log 2(m) (m = 2).875 ¯ 8 l ρ = 1 − η = 0.

12) 2 Or l’équation (3.7370.25.2) quand m = 2 (cas du code à alphabet binaire).3219. En prenant le logarithme à base 2 du vecteur P on trouve P = [1. s4 .H. n.10. 0.13) TBA1 31 . 2.05].15. On remarquera qu’un tel code est de longueur moyenne ¯ = 2. 0.2.15. 2.11) pi (3. 0.000.7370.0.10) [2. 3. Pour calculer la longueur de codage de chaque symbole. on part de l’observation que pour tout symbole si de probabilité d’apparition pi . 4.7370. La réponse est positive.65 l Un code instantané possible est s1 s2 s3 s4 s5 s6 −→ −→ −→ −→ −→ −→ 00 01 100 101 1100 11100 (3. 4. . 3. s2 . 0. . il existe un entier li tel que 1 1 log2 ( ) ≤ li < log2 ( ) + 1 pi pi (3. 2.3219] qui prouve que les longueurs de code à utiliser sont (en tenant compte de l’inégalité (3. en effet l’équation (3. Une question naturelle que l’on peut se poser est de savoir si un tel code est à décodage instantané. Dedieu Codage de source une probabilité d’apparition pi i = 1 . s3 . 5].30.10) le codage de Shannon-Fano consiste à affecter li bits au codage du symbole si .12) est l’inégalité de Kraft (3. ce qui prouve qu’il est toujours possible de construire un code de Shannon-Fanno à décodage instantané. s6 ] tel que les probabilités d’apparition des symboles soient [P ] = [0. 3.10) est équivalente à 1 1 ≤ 2li < 2 pi pi soit encore pi ≥ 2−li > (3. s5 . 2.2 Exemple Soit [S] un alphabet à 6 symboles [S] = [s1 . 0. 3.

s3 → 11.10.16) En effet si l’on suppose que ln = ln−1 + 1. Le codage d’Huffman est basé sur l’idée suivante. il faut que les deux dernières longueurs soient égales. i = 1 .3 Codage binaire de Huffman Le problème qui se pose ici est de trouver une méthode de codage (instantané) optimal. si les li . Soit [S] un alphabet à 6 symboles [S] = [s1 . s3 . . . Si on élimine le dernier bit. le mot à ln−1 bits obtenu est préfixe de sn et par conséquent. 0.14) avec. On ordonne à nouveau 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. s5 . s2 → 10. 0. l1 est attribué à s3 et l3 est attribué à s1 ) alors ¯ ne peut qu’augmenter (dans le cas particulier présenté l) p(s1 )l3 + p(s3 )l1 ≥ p(s1 )l1 + p(s3 )l3 ). 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 les messages dans l’ordre décroissant des probabilités. On code l’un 0 et l’autre 1. p(s1 ) ≥ p(s2 ) ≥ p(s3 ) . .25.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. l1 ≤ l2 ≤ l3 . Dedieu 3. alors il existe un seul mot de longueur ln . Pour ce faire construisons l’arbre de la figure 3. Trouvons le codage d’Huffman d’un tel alphabet. 0. A cette fin. Afin que le codage soit optimal. 0.15. On procède ainsi récursivement jusqu’à ce qu’il ne reste que deux symboles. s6 ] tel que les probabilités d’apparition des symboles soient [P ] = [0. Il s’ensuit que le ln ième bit est superflu et ne fait qu’accroître ¯ Un code optimal est donc tel que ln = ln−1 .e. On range les symboles suivant l’ordre décroissant des probabilités. n représentent les longueurs associées aux symboles si . ≥ p(sn−1 ) ≥ p(sn ) (3. puis on revient en arrière et on code chaque paire de symboles avant rassemblement en 0 et 1.30.e. s2 . D’autre part pour arriver au codage optimal. i. Afin de comprendre le codage d’Huffman. s4 . 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 faut que le mot-code le plus court soit attribué au symbole ayant la probabilité la plus grande d’être transmis. .05]. le mieux est d’utiliser un exemple. l.15. i. 0. 32 TBA1 . que si l’ordre n’était pas respecté (par ex.Codage de source H.15) Remarquons. ≤ ln−1 ≤ ln (3. . ln−1 = ln (3. Reprenons l’exemple qui avait été utilisé pour le codage de Shannon-Fanno. .

10 0.25 0.60 d (0) 0. s4 → 010. s5 → 0110.25 d (0) 0. Un calcul de la longueur moyenne des motscode donne ¯ = 2. s6 → 0111. Dedieu 0. s5 → 0110.H.05 d (0) d d   d(0) 0.30 0.15   d   (1)     (1) 0.30    (1) d 0. s3 → 11.15 0.30 Codage de source s1 s2 s3 s4 s5 s6 0. s6 → 0111 F IGURE 3.15 0.40 d (1) 0.15    (1) (0) s1 → 00.1 – Codage d’Huffman s4 → 010. l TBA1 33 .45. s2 → 10.

Le calcul de l’estimation des probabilités jointes est toutefois extrêmement onéreux en termes de puissance de calcul. ou des variantes de cette méthode sont utilisées par des programmes de compression très populaires tels PKZip et WinZip. car on ne connaît pas ces probabilités a priori. on ne les calcule donc pas. En pratique. La séquence de source (mot du dictionnaire) est alors codée sous forme d’un pointeur vers les mots du dictionnaire. 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 méthode a été améliorée notamment par Terry Welch sous le nom LZW. Dedieu 3. 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.1 Codage de type Lempel-Ziv Prenons un exemple afin de comprendre le principe de l’algorithme de codage. On peut. 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. 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". Soit à coder un texte en français.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. Dès que des corrélations existent entre des symboles consécutifs.4. de façon optimale. 34 TBA1 . Les utilitaires sous Unix "compress" et "uncompress" sont aussi basés sur le même algorithme. Soit à coder la séquence : 000101110010100101 On suppose que les symboles binaires 0 et 1 sont déjà stockés dans le dictionnaire. afin d’étendre le codage de type Huffman. bien sûr. calculer ces probabilités. Ceci pose des problèmes pratiques.Codage de source H. il faudrait. connaître les probabilités jointes pour des blocs de symboles de longueur supérieure ou égale à 2. par estimation d’une très longue séquence de texte. le dictionnaire est lui-même décodé "on-fly" lorsque le décodeur analyse les données compressées. 3. Le symbole 0 sera le premier mot du dictionnaire et le symbole 1 en constituera le second. un ’q’ aura une probabilité importante d’être suivi par un ’u’ et une probabilité nulle d’être suivi par un ’w’. Or ceci est loin d’être le cas dans la pratique. Cette méthode. il est évident que des corrélations existent entre certaines lettres. 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.

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 Mot du dictionnaire 1 0 2 1 3 4 00 01 5 011 6 7 10 010 8 100 9 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 transmettre 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. Mot du dictionnaire Num. préfixe - bit d’innov. Mots codés 1 0 2 1 3 00 1-0 001-0 4 5 01 011 1-1 4-1 001-1 100-1 6 7 10 010 2-0 4-0 010-0 100-0 8 9 100 101 6-0 6-1 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 à transmettre, 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’innovation 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 rapport 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 parallè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’innovation 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’information 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
2. Calculer l’entropie de la source.

Codage de 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 maximale ?

Exercice 3.5.4
Considérez les 4 codes listés dans la table suivante : Symbole s0 s1 s2 s3 s4 Code I 0 10 110 1110 1111 Code II Code III Code IV 0 0 00 01 01 01 001 011 10 0010 110 110 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 Probabilité 0.1 0.1 0.2 m 0.1 n 0.1 o 0.2 p 0.1 y 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

Dedieu Exercice 3.Codage de source H.3 bits/symbole. s2 } dont les probabilités d’apparition sont respectivement {0. Appliquez le codage d’Huffman à cette source et montrez que la longueur moyenne du code est 1.6 Une source discrète sans mémoire a un alphabet de 7 symboles dont les probabilités d’apparition sont décrites dans la table suivante : Symbole s0 s1 s2 s3 Probabilité 1/4 1/4 1/8 1/8 s4 1/8 s5 1/16 s6 1/16 Calculer le code de Huffman associé ainsi que son rendement.5. C.7 Considérez une source discrète sans mémoire avec un alphabet {s0 . Exercice 3. F.8 En considérant la figure 3.15} . E.15.5.7. donnez les codes associés aux symboles A.2 – Figure liée à l’exercice 3.0. 0.8 38 TBA1 . Exercice 3.5. F IGURE 3. D. s1 .5.2. B. G.

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. 1. Exercice 3. 1/8. Trouver l’entropie de la source.1. 5} Les probabilités correspondantes sont {0. 11).5. 0. Exercice 3. 0. a4 avec des probabilités correspondantes p1 = p2 = 0. calculez le pourcentage d’économie de bits qui pourrait être réalisé avec un codage de source optimal. 0. a3 .H.3365 et p3 = p4 = 0.05. 3. 1/8.25. Exercice 3.5. TBA1 39 . Trouver un code de Huffman pour cette source. En supposant que ces instructions sont utilisées de manière indépendante avec des probabilités (1/2. 3. 0. 3. Dedieu Codage de source Exercice 3.5.11 Une source sans mémoire a un alphabet A tel que A = {−5. 01.9 Un calculateur exécute 4 instructions qui sont représentées par les mots code (00.1635.5.3} 1. −3. 0. −1. 1. 2. Trouver un code de Huffman qui réalise ce codage optimal. 2. Proposer un codage optimal de cette source quantifiée.15.05. Trouver l’entropie de la source. a2 . 0.12 Une source sans mémoire émet des symboles a1 . 10. Calculer la longueur moyenne du code obtenu. Calculer le rendement du code obtenu. 4. 0. 1/4).10 Considérez la séquence binaire suivante 011100011100011100011100 Utilisez l’algorithme de Lempel-Ziv pour encoder cette séquence.1.

la probabilité que S1 soit choisie est de 3/4..5. On code chaque symbole. 1/32. 1. S2 .125.T est 1/4. En supposant que l’on code des séquences de deux symboles consécutifs : 1. 3. t2 . 3/16.15 Le schéma de la Figure 1 montre un schéma d’automate de Markov.T est alors 3/4. t3 } avec des probabilités respectives 1/8. la probabilité d’obtenir un nouveau s0 à l’instant (k + 1). p2 = 0.5. Calculer l’entropie de la source constituée par l’automate. S4 avec des probabilités p1 = 0. Exercice 3.Codage de source H. Trouver un code à décodage instantané de rendement 100%. On code des successions de trois symboles. On lit le schéma de la Figure 3. (De tels automates sont utilisés pour modéliser la production de parole.). 1/64.25. Cet automate produit un symbole toutes les T s. Calculer l’efficacité du code ainsi créé. On considère ensuite une source S3 qui délivre aléatoirement soit un symbole de S1 . t1 . 40 TBA1 .5. 3. 1/2. Ces cinq symboles sont équiprobables. D’autre part on considère une source S2 sans mémoire délivrant des symboles {t0 . S2 .125 et p4 = 0. 2.14 Une source sans mémoire émet des symboles S1 . s1 . S3 . p3 = 0. alors que la probabilité d’obtenir s1 à (k + 1). S4 et S5 . On observera qu’une tel automate produit des données qui sont dépendantes dans le temps. 53/64. si s0 a été produit à l’instant k.16 On considère une source S1 sans mémoire délivrant des symboles {s0 . ce symbole peut être s0 ou s1 . 2. Coder chaque symbole avec un code de longueur fixe et calculer le rendement du code. 2.5.5. Evaluez le rendement d’un code binaire de longueur constante dans les trois cas suivants : 1. soit un symbole de S2 à chaque coup d’horloge . Proposer un codage de Huffman des séquences de deux symboles. On code des paires de symboles. Exercice 3. Dedieu Exercice 3. S3 .13 Une source sans mémoire a un alphabet de 5 symboles S1 .3 de la manière suivante . s2 . Exercice 3. 1/16. s3 } avec des probabilités respectives 1/4.T .

010110111011110111110111111 On considère que 0 est le premier mot code et que 1 est le second mot code.H. On considère d’autre part que les mots code sont numérotés à partir de 1. Calculer le taux de compression obtenu. Proposer un codage de Huffman des séquences de symboles pour chacune des trois sources. Vérifiez que la séquence obtenue est bien juste en procédant au décodage de la séquence. Exercice 3. 2. s3 . s4 } avec des probabilités respectives 1/16. S2 et S3 . 3. 1.3 – Automate de Markov 1. 1/16. TBA1 41 . Calculer l’efficacité des trois codes ainsi créés. Calculer l’entropie de chacune des trois sources S1 . 1/2.5. proposer un code à décodage instantané qui ait une efficacité de 100%.18 On considère la séquence suivante que l’on veut encoder par l’algorithme de Lempel-Ziv. 3. Exercice 3. 2. Justifier vos choix et expliquez bien pourquoi l’efficacité est de 100%. Sans faire appel à un graphe de type Huffman.5. s1 . 1/8.17 Soit une source S1 sans mémoire délivrant des symboles {s0 . 1/4. s2 . Calculer la séquence codée par l’algorithme de Lempel-Ziv. Dedieu Codage de source 1|4 3|4 1|4 3|4 s0 s1 F IGURE 3.

Dedieu 42 TBA1 .Codage de source H.

. . .7 4. . . .2. .4 Codes linéaires par blocs (n. . . . .1 4. . . . . . . . . . Rendement d’un code . . . . . . . . .1 4. . Exercices . . . Détection d’erreur avec un code linéaire par bloc Correction d’erreurs avec les codes blocs linéaires Code de Hamming .2. . . . . . . . . . .3. . . . . .3. . k) . . . . . . . . . . . . . . 44 44 44 45 46 4. . . . . Capacité de détection d’un code . . . . . . . . . . . . . . . . . . 4. . . . . . . . . .2. . .4 48 48 49 50 51 4.3 Principe général des codes détecteurs-correcteurs . . . . . . . . . . . . . . Matrice d’éléments binaires .1 4.3 4. . . . . . .3 Champ de Galois CG(2) . . . . . . .6 4.2 4. . . . . . . . . Capacité de correction d’un code . .2 4. . . . . . . . . . . Distance de Hamming . . . . . . . . .3. . . 51 51 53 4. . .4. . . . . . . . . . 4. . . . . . . . .2 Introduction . . . . . . .4. . . . . .8 Résumé d’erreurs. . Codes blocs générés par des matrices systématiques . . . . . . . . . . . Généralités . . .2 Principe et propriétés . . . . . . . . . . .3. . . 54 56 57 58 Ce chapitre introduit le principe des codes détecteurs et correcteurs c 2010 HEIG-VD. . 4. . . 43 . . . . . .5 4. . .1 4. . . . . . . . . . . . . Préliminaires pour les codes linéaires par blocs .4 Codes détecteurs et correcteurs d’erreur CONTENU 4.

1) et v = (1.1) est l’addition modulo 2 . . Le produit scalaire de deux vecteurs u et v se définit comme u. 0. . 0. Il existe deux grandes familles de codes : les codes par blocs et les codes convolutionnels.2 Préliminaires pour les codes linéaires par blocs 4. cette signature est dynamique dans le sens où elle dépend de l’information. . si elle est correcte. 1.2. v2 . (0. 0). u n vn (4. .v = u1 v1 où le symbole u2 v 2 0 0 1 1 4. vn ) où les vi sont égaux à 0 où à 1. Pour améliorer la qualité de transmission on fait usage du codage de canal qui consiste à ajouter de la redondance au signal de source.v = 1 0. Dedieu 4. 0) on a u. La redondance que l’on ajoute peut être vue comme une signature que l’on impose sur l’information.1 Exemple 0 1 0 0= u3 v3 . 1. Lorsqu’on utilise des codes par blocs. A la réception on vérifie la signature du messsage. . d’autre part ||u|| = 3 et ||v|| = 4. Pour augmenter ce rapport on est amené à augmenter la puissance du signal émis.1 Introduction La probabilité d’erreur d’un système de transmission est une fonction du rapport Signal à Bruit de la liaison. (0. . i. . L’espace vectoriel considéré est un espace vectoriel de dimension n puisqu’il existe une base orthonormée de n vecteurs (1.2. 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. .1. 44 TBA1 . les bits de redondance sont calculés à partir des bits d’information provenant du même bloc. . 0. 1. 0=0 1=1 0=1 1=0 Soit u = (1.1 Champ de Galois CG(2) On considèrera un espace vectoriel formé par des vecteurs v = (v1 . 0. . 0. . .. 4. 1). Si la signature est incorrecte. . on décide qu’il n’y a pas d’erreur de transmission.Codes détecteurs et correcteurs H. Malheureusement ceci n’est pas toujours possible car on se heurte très vite à une limitation d’ordre technologique ou économique. les bits de redondance sont calculés à partir des bits d’information de plusieurs blocs précédant le bloc courant. 0. 1. Ces vecteurs seront désignés dans la suite comme des n − uples. .e. 1. . on détecte une erreur que l’on peut corriger dans certains cas. 0). . . . Lorsqu’on utilise des codes convolutionnels.

v) = 3.2. 0) on a d(u. 1. 1.H.2.1 Exemple Soit u = (1. 0.2. 1. 4.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. Dedieu Codes détecteurs et correcteurs 4. TBA1 45 . 1) et v = (1. 0. 1.

= 1(1. .e (u1 . . k) est une matrice de dimension k × n qui fera correspondre à un k − uple un n − uple. . 0) car (0.Codes détecteurs et correcteurs H. 4. 1) TBA1 .2. 0. 1) 46 = (1. . Dedieu 4. vn ) 1×k k×n 1×n La matrice G(n. k) = (v1 . 4. 0. . . 1. . 1) = 0(1. uk ) G(n. i. (1. 0) 1) 0) 1) = 0(0. 0) Les 4 − uples engendrés par G(4. 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. 0. 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. k) une matrice d’éléments binaires à k lignes et n colonnes avec k < n dont les éléments appartiennent à CG(2). vk+1 .2. = 1(0. . 0) 1) 0) 1) + 1(1. v2 . 1) Propriété 1 La matrice G(n. = 1(0.3.3 Matrice d’éléments binaires On définira par G(n. 0) 0 1 0 1 1 1 0 1 = (0. 0.3.2. k) sera appelée dans la suite matrice génératrice d’un code (n. 2) = 0 1 0 1 1 1 0 1 La matrice G(n. (0. vk . 0) (0.2 Exemple (1. k). u2 . 1. . 1) et (1. 2) ne forment pas un espace vectoriel de dimension 4 mais un espace vectoriel de dimension 2.1 Exemple G(4. . Vérifions-le (0. 0) 0 1 0 1 1 1 0 1 0 1 0 1 1 1 0 1 = (0. (1.

1) 1) 1) 1) + 1 (0.e 0 1 0 1 (0. 0. 0. 0. 0. 0. 0) (1. 1) (1. 0) 1 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 1 0 0 0 (0. 1) = (1. 1. 0. 1. 1. 0. = 1 (1. 1. 1. 0) = (0. 1. 1. 0. (1. 1. Pour s’en convaincre soient les matrices G et G suivantes G= 0 1 0 1 1 1 0 1 G = 0 1 0 1 1 0 0 0 La première ligne de G est identique à la premiere ligne de G tandis que la deuxième ligne de G résulte de l’addition des 2 lignes de G. 0. 0. 0) 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) = (0. 1) et (0. (1. 0. 0. 0. 1) Propriété 2 Soit G une matrice engendrée par combinaison linéaire des lignes de G. (0. 0. (1. = 1 (0. 0. 0) 0 1 0 1 1 1 0 1 0 1 0 1 1 1 0 1 = (0. 1) = (1. le sous-espace vectoriel engendré par G est le même que celui engendré par G. 0. 0. 0. 1. 0. 0. 1) = 0 (0. 0) 1) 1) 0) = 0 (1. 0. 1. On s’aperçoit maintenant qu’en appliquant G à tous les 2 − uples on obtient les mêmes 4 − uples d’arrivée que par G. 1) 47 TBA1 . i. 0. Dedieu Codes détecteurs et correcteurs (1. 1. = 1 (1. 1) forment une base puisque (0. 1.H. 1. 0. 1) (1.

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. n Il y a donc 2k messages X possibles.5) Démonstration : T GS HS = (Ik .3. yk . . . G= 0 1 0 1 1 1 0 1 −→ G = 1 1 0 1 0 1 0 1 −→ GS = 1 0 0 0 0 1 0 1 La transformation a eu lieu en des étapes. Propriété 4 Soit GS = (Ik P ). xk ) −→ Y = (y1 . on peut toujours convertir G sous la forme canonique systématique GS = ( Ik k×k . In−k HS = ( telle que T GS HS = 0 (4.3) In−k ) (4.4) PT n−k×k . . et où P est une matrice k × n − k.1 Généralités Supposons une source qui fournit de k symboles binaires (k − uples) X = (x1 . . x2 . G est d’abord fabriquée par échange des lignes de G.3 Principe général des codes détecteurs-correcteurs 4. . Dedieu Propriété 3 Par combinaison des lignes (et éventuellement des colonnes) de G. yn ) 48 TBA1 . i. x2 . . xk ) avec xi = 0 ou 1 pour i = 1 . P ) P In−k =P P =0 4. yk+1 . . y2 . . il existe une matrice HS = P T . n−k×n−k (4. GS est constitué en gardant la deuxième ligne de G puis en additionnant les deux lignes de G pour former la première lignes de GS . . . . .2) avec Ik matrice identité k × k. .Codes détecteurs et correcteurs H. P k×n−k ) (4.e X = (x1 . . .

La quantité q = dmin −1 est appelée capacité de détection d’un code. On pourra aussi dans certains cas corriger le faux Y en le remplaçant par le Y possible le plus proche. ' $ x ˆ x ˆˆ ' Ex $  ˆˆ  x x ˆ € x € x E  ˆˆˆ E €€ ˆˆ  x x  ˆˆ €€ z ˆ x €€  € x  €€  x €€  x x €€  x €€  x €€ E x x €€ €€ x k € q ˆˆˆ ˆˆˆ x x ˆˆˆ I   x  Ex  x x 2 & % & x x 2n % {X} F IGURE 4. 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.3. 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. si au cours d’une transmission.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’appartienne pas au code alors la détection d’erreur est immédiate. k) où k est le nombre de bits d’information et n − k est le nombre de bits de contrôle. Dès lors. Figure 4. on sait que le mot reçu n’est pas correct.1 – Correspondance entre les X et les Y {Y } 4. On parle de code (n. 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. La question qui vient immédiatement à l’esprit est de savoir combien d’erreurs binaires on peut détecter au plus.H. TBA1 49 .1). il y a détection d’erreur. Le code Y fait apparaître des codes possibles et des codes impossibles (Cf. 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. BIEN QU’IL Y AIT 2n mots possibles pour Y ON N’UTILISE AU CODAGE QUE 2k MOTS PARMI les 2n mots possibles. D’autre part tant que q est inférieur à dmin il est certain que le code reçu est un code impossible. Dedieu Codes détecteurs et correcteurs avec n > k.

2 – Exemple de code (2. 0) Codes possibles F IGURE 4. Dès lors il est clair que la capacité de correction du code considéré est 0. 4. 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.3. Dedieu z z (0.2. Dans le code (2.Codes détecteurs et correcteurs (0. Avec le code (3. 0) et 1 → (1. (Le plus proche au sens de la distance de Hamming). 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.3 Capacité de correction d’un code On aborde la question de savoir si lorsqu’on a détecté une erreur. 1). Voyons d’abord sur les exemples que nous venons de considérer.1 Exemple Soit le code (2.3. 1) 4. 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. 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. 50 TBA1 .2 Un seul bit d’erreur fait passer d’un code possible à un code impossible. 1) (1. si l’on corrige. 1. il est possible de la corriger.2 Exemple Soit le code (3. 0) et 1 → (1.2 on voit que lorsque l’on est en erreur. 1) de la figure 4. z 0) (1. 1).3. 1) H. 4. Un tel code est schématisé à la figure 4. Et d’abord. on ne peut décider du mot possible le plus proche puisque les deux mots possibles sont tous deux à une distance de 1. 1). 1) tel que 0 → (0. 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. 1) tel que 0 → (0.3. Un tel code est schématisé à la figure 4. 0. Clairement la capacité de détection d’un tel code est q = 2.2.

η= k n (4.4.H.6) 4. TBA1 51 . Dès lors 2t ≤ dmin − 1 t est appelé capacité de correction du code . k) 4. Il faut donc que t soit plus petit que la moitié de la distance minimale entre deux points du code. (0. Comme nous l’avons vu ces matrices génératrices sont des matrices à k lignes de n − uples linéairement indépendants (n > k). 0) d d d d d d 1.1 Principe et propriétés On engendre ces codes à l’aide de matrices génératrices (n. 1) d d d z Codes possibles F IGURE 4. Ces matrices vont nous permettre de transformer des blocs de k bits en blocs de n bits.4 Codes linéaires par blocs (n. La capacité de correction du code considéré est donc 1.7) 4. Raisonnons maintenant de façon générale.3.3 – Exemple de code (3. 1) on corrigera faussement. 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. z d 0.4 Rendement d’un code On appelle rendement d’un code le rapport entre le nombre de bits d’information et le nombre de bits par bloc. (4. k). Dedieu Codes détecteurs et correcteurs d d d d d d d d d dz (1.

le code sera formé des 8 blocs de 7 bits suivants (0 (0 (0 (0 (1 (1 (1 (1 0 0 1 1 0 0 1 1 0) 1) 0) 1) 0) 1) 0) 1) G G G G G G G G = = = = = = = = (0 (0 (0 (0 (1 (1 (1 (1 0 0 1 1 1 1 0 0 0 1 1 0 1 0 0 1 0 1 1 0 0 1 1 0 0 1 0 1 1 0 1 0 0 0 1 1 0 0 1 1 0) 0) 1) 1) 0) 0) 1) 1) Propriété 1 Toute combinaison linéaire des mots du code est encore un mot du code. 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. la somme de 2 k − uples est encore un k − uple puisque l’addition est modulo-2. i. 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).Codes détecteurs et correcteurs 4. 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. Une combinaison linéaire de ces 2 mots codes s’écrit s = λu + γv Or u et v étant des mots codes. 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).1.1 Exemple   H. 52 TBA1 . Dedieu Soit une matrice génératrice (7. La démonstration de cette propriété est quasi-évidente. appelons-le wd . 3). Donc λud + γvd est encore un k − uple. Dès lors s = λud G + γvd G = λud + γvd G Or dans l’espace des k − uples.e. Comme il y a 23 = 8 messages possibles. d’où s = wd G D’où l’on tire que s est bien un mot code. Soit u et v deux mots codes (2 n − uples).4.

Dedieu Codes détecteurs et correcteurs Cette propriété se démontre à partir de la précédente. d’où l’on déduit que l’on peut corriger une seule erreur simple.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. les k premiers bits ne sont pas affectés par GS 4.1. En effet. 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). ceci dans le but que les k bits d’en-tête du bloc de codage soient exactement les k bits d’information.H.     TBA1 53 . la première ligne de GS est la somme des 2 premières lignes de G. La capacité de correction est telle que 2t = dmin − 1. 4. On voit donc que dmin = 3.2. 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. Trouver la distance minimale entre les mots du code. 4. 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.2 Exemple Soient les 8 mots codes définis dans l’exemple précédent. Par suite la capacité de détection est u1 = (0 u2 = (0 u3 = (0 u4 = (0 u5 = (1 u6 = (1 u7 = (1 u8 = (1 0 0 1 1 1 1 0 0 0 1 1 0 1 0 0 1 0 1 1 0 0 1 1 0 0 1 0 1 1 0 1 0 0 0 1 1 0 0 1 1 0) 0) 1) 1) 0) 0) 1) 1) ||u1 || = 0 ||u2 || = 3 ||u3 || = 5 ||u4 || = 4 ||u5 || = 4 ||u6 || = 3 ||u7 || = 5 ||u8 || = 4 dmin − 1 = 2.4. la matrice systématique s’écrivant sous la forme (Ik . P ) où Ik est la matrice identité k × k. En déduire la capacité de détection et de correction du code. Comme toute combinaison linéaire des mots du code est encore un mot du code.4.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.4.

on décide que le mot transmis ne contient pas d’erreur. x2 . y5 . le message reçu est multiplié par la T matrice HS . x3 ) −→ (y1 . y7 ) = (x1 . y2 . est donc de vérifier à la réception que les relations de contrôle sont bien remplies. 4. Le message transmis à partir de l’information x est y = xGS (4. 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. 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. x3 )GS On voit que y1 = x1 y2 = x2  bits d inf ormation  y3 = x3 y4 y5 y6 y7 = x1 + x3 = x1 + x2 + x3 = x1 + x2 = x1 + x2     bits de contrˆle o   L’idée sous-jacente à la détection d’erreur. Il est toutefois évident que si le nombre d’erreurs est supérieur à la capacité de détection du code.9) GS HS = 0 Par conséquent. Dedieu (x1 . si le résultat est nul. y3 . on pourra se retrouver dans un cas ou c’est un code 54 TBA1 . y4 . Si elles le sont. Voyons comment cela se traduit d’une manière algébrique. 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. x2 .5) telle que T (4.5 Détection d’erreur avec un code linéaire par bloc Le principe de détection d’erreur est simple. A la réception. on conclut à la non présence d’erreurs. On a des bits d’information et des bits de contrôle. si l’on multiplie le message y par HS on obtient T T yHS = xGS HS = 0 (4.10) La technique de détection est donc simple.Codes détecteurs et correcteurs Soit la correspondance H.8) Or on sait qu’il existe une matrice dite de contrôle HS . déduite de GS selon l’équation (4. y6 .

H. Admettons que x soit le mot à coder.12) s = 0. y6 . ˆ T T T s = y HS = yHS + eHS = eHS ˆ T (4.5.4). y7 )       1 0 1 1 0 0 0 1 1 1 0 1 0 0 1 1 0 0 0 1 0 1 1 0 0 0 0 1      y1 ˆ    y ˆ1   =   y1 ˆ   y1 ˆ   + + + + y3 ˆ y2 ˆ y2 ˆ y2 ˆ + + + + y4 ˆ y3 + y5  ˆ ˆ    y6 ˆ y7 ˆ T (4. et que y = xGS soit son code. y5 . i. la détection d’erreur est dans ce cas inopérante. En effet. s’il n’y a pas d’erreur de transmission e = 0 et d’après (4. y2 . Construisons HS selon l’équation ( 4. on multiplie donc par HS . Dedieu Codes détecteurs et correcteurs possible différent du code possible émis qui est reçu. il vient       HS =  1 1 1 1 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1      Le syndrome s s’écrit donc        T y ˆ ˆ ˆ ˆ ˆ ˆ s = yHS = (ˆ1 . y3 .12) s est appelé syndrome pour la raison qu’il détecte une anomalie de transmission. y4 .e.13) TBA1 55 . 4.0. 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 =y+e ˆ Lorsqu’on reçoit y .11) 0 (4.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 .

3 Remarque : H.15) donc la relation de décodage des erreurs (4.12). . 4. i. 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. etc. . On remarque que le syndrome est une combinaison linéaire des n colonnes de la matrice HS .Codes détecteurs et correcteurs 4.16) où les hi sont les vecteurs colonnes de HS .6 Correction d’erreurs avec les codes blocs linéaires Soit e le vecteur d’erreur lors de la transmission. En effet en addition modulo 2 on a forcément y4 + y4 = 0. en ) Lorsque l’on calcule le syndrome par l’équation (4. .5. Par conséquent si toutes les colonnes de HS sont distinctes. .0.e e = (e1 . en somme que l’équation (4.14) est équivalente à y1 + y3 + y4 y1 + y2 + y3 + y5 y1 + y2 + y6 y1 + y2 + y7 = = = = 0 0 0 0 (4.14) On vérifiera qu’il n’y a aucune contradiction entre (4.17).15) quand s = 0. 56 TBA1 .17) (4. il vient s = e1 h1 + e2 h2 + . y5 + y5 = 0. e2 . En effet une seule erreur à la kième position produit un syndrome s = hk .13) est bien équivalente à (4. + en hn (4. . . 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.13) et (4. Dedieu 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 y5 y6 y7 = x1 + x3 = x1 + x2 + x3 = x1 + x2 = x1 + x2 = y1 + y3 = y1 + y2 + y3 = y1 + y2 = y1 + y2 (4.14). l’erreur peut être localisée.

On constate alors que s est la cinquième colonne de HS . 0).H. Le mot reçu peut être corrigé en retranchant l’erreur. 1. i. Comme les vecteurs colonnes de la matrice HS sont des n − kuples. D’autre part les bits de contrôle sont fixés aux positions 2i . d’où l’on déduit que e5 = 1 et donc e = (0. On a vu précédemment qu’un code bloc peut corriger toute erreur simple si les n colonnes sont non nulles et distinctes.571 0.4 Exemple Codes détecteurs et correcteurs Supposons dans l’exemple précédent que s = (0. 0.945 TABLE 4. 0). 0. on peut en former 2n−k − 1 au plus qui soient tous non nuls et distincts. 0. l’addition est équivalente à la ˆ soustraction. 0. Le code est alors un code de Hamming.905 7 127 120 0.0. Le tableau suivant donne quelques-uns des codes de Hamming et leurs rendements : Un code de Hamming n−k n k η 2 3 4 5 3 7 15 31 1 4 11 26 0. Dedieu 4.18) et la longueur maximale des mots est atteinte lorsque les deux membres de cette inégalité sont égaux. 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é. En vue de maximiser le rendement η = n .7 Code de Hamming On ne s’intéresse ici qu’aux codes linéaires corrigeant toutes les erreurs simples k (dmin = 3).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 représentation binaire du nombre i. 1.733 0.6.) 4. Par exemple pour le code (7.333 0. 0.e. Par exemple si   TBA1 57 . 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. Il faut donc que n ≤ 2n−k − 1 (4.839 6 63 57 0. y = y + e (On rappelle qu’en addition modulo 2.

8. Quelle est la capacité de correction du code ? 6.8. A partir de H on calcule la matrice génératrice. Quel est. trouver GS .2 En observant les mots transitant au travers d’un canal de communication. On décide de mettre G sous sa forme systématique GS .8 Exercices Problème 4. Problème 4. de façon générale. Donner l’ensemble des mots-code générés par GS . Donner l’ensemble des mots code générés par G. Donner le nombre de bits d’information et le nombre de bits par bloc (par mot-code) pour un tel code. 2. Quelle est la capacité de détection du code ? 5.1 Soit une code linéaire dont les mots code sont engendrés par la matrice génératrice G suivante 1 1 0 1 G= 0 1 1 0 1. l’intérêt de mettre un code sous sa forme systématique ? 8. 7. Quelle est la distance minimale entre deux mots du code ? 4. 4) on trouverait     G= 1 1 0 1 1 0 1 1 1 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 0 0 1      4. 3. Cet ensemble est-il différent de l’ensemble généré par G ? Si oui ou non. 1) on sait que l’erreur s’est produite à la position 5.Codes détecteurs et correcteurs H. Pour la matrice H(7. Dedieu s = (1. dites pourquoi. 0. vous observez que l’on retrouve toujours les 4 mots suivants 0 0 1 1 58 0 1 0 1 0 1 0 1 0 1 1 0 0 0 1 1 0 1 0 1 TBA1 .

Dedieu Codes détecteurs et correcteurs 1. . 6. 7 1. 3. Donner la matrice systématique GS d’un tel code. On décide pour ce faire de ne pas travailler avec une matrice G systématique et de mettre tous les bits de contrôle   TBA1 59 . 7. 6.3 On décide de construire un code bloc linéaire. En écrivant [y1 . y6 ] = [x1 . y5 et y6 . 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. En étudiant le syndrome (obtenu précédemment) et en supposant qu’une erreur simple se soit produite. . y2 . y3 . y4 . Quelle est la capacité de détection du code ? 4. 8. Par exemple on décide qu’un code (7. En écrivant la relation habituelle de contrôle T [y1 . y4 . . Prenez soin de calculer exactement les bits de contrôle. . y3 . Votre sagacité vous incite à penser qu’un code bloc (6. Problème 4. En observant les mots-code possibles. 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. y2 . x2 ] GS donner toutes les lois de calcul des yi pour i = 1 . non pas à partir de sa matrice génératrice G mais à partir de sa matrice de contrôle H. y5 . y5 . y6 ] HS = 0 montrez que vous arrivez aux 4 relations de contrôle que vous aviez découvert en 5). . Quelle est la capacité de correction du code ? 5. Vous recevez le mot 111111 que vaut le syndrome ? 9.H. y3 . 2. à quelle position du mot-code s’est produite l’erreur ? Corrigez le mot code. 3. dites si votre bon sens vous indiquerait le même résultat que l’algèbre des codes blocs linéaires. 2) a été utilisé. y4 . Calculez à partir de la matrice génératrice GS la matrice de contrôle HS d’un tel code.8. Pourquoi ? Pourquoi le code utilisé est-il linéaire ? 2.

y3 .Codes détecteurs et correcteurs H. x2 . . . 4) 2. 4. On reçoit 1101000 que vaut le syndrome ? 5. 3 3. En somme que si l’on doit coder x = [x1 . x4 ] on transmette y = [y1 . x2 . 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 . x4 ] (Les bits de contrôle sont aux positions 20 = 1. Déduire de la question précédente la matrice génératrice G. 2. x3 . x1 . y2 . 60 TBA1 . x3 . Déduire la position de l’erreur d’après le syndrome si l’on suppose une erreur simple. Dedieu à des positions qui soient des puissances de 2.

.5 Introduction . . . . . . . . . . .5. . . . . .5. . . . 5. Réalisation matérielle du décodage d’un code cyclique systématique .7. . . . . . . .1 5. . . . . .5 Le code CCITT V.1 Construction des champs de Galois CG(2m ) . . . . . . . . . . . . . . . . Codeur d’un code cyclique . .9. . . . . . . 62 62 64 66 67 67 67 68 70 71 Introduction . . . . 5. . . . . . . . . . . . . . . . . . Propriétés fondamentales des codes cycliques . . . . . . .7 Propriétés des codes polynômiaux (cycliques ou non) . . . . . . . . . . . . . . .6 5. . . . . . . . . . . .2 5. .5. . .4 5.1 5. . . . . .5 .7. . . . .5 Détection et correction d’erreur par codes polynômiaux cycliques CONTENU 5. Décodage d’un code cyclique (n. . . . . Réalisation d’un encodage de code cyclique . . Le code ETHERNET . . . . . . . . . . . . . .3 5. . . . . . .4 5. . . . . . . . . . . . .1 Description des codes BCH . . . . . . . . . . . 5. . . . . . 76 76 c 2010 HEIG-VD. . . . . .3 5. . . . . . . . . . . .9 Codes cycliques BCH . . 72 73 73 74 74 74 74 5. .7.7. . . . . . . . . k) sous forme matique . . . . . . . . . . . 5. . .41 Le code CRC-16 . . . . . . . . . . . 61 . . . . . . . . . .7. . . . . 75 75 Eléments théoriques nécessaires au développement des codes BCH . . . . . . . . . . . . . . . . .1 5. . . . .2 5. . . . . . . Quelques polynômes générateurs normalisés . . Circuit de division . systé. . . . Le code ARPA . Préliminaires . 5. . . . . . . . . . . . . . . . .8. . . Le code CRC-12 . . . . . . . .5. . . .2 5. . k) . . . .8 5. . Encodage d’un code cyclique (n. . . . . . . . . . . . . . . . . . . .5. . . .3 5. . . . .4 5. . . . . . . . . . . . . . . . .

H. . . . . . . . . 5. on les traite dans la suite comme des polynômes.3 5. . . . .2 Propriétés fondamentales des codes cycliques Afin de développer les propriétés algébriques des codes cycliques. .11. 87 88 88 89 5. . . . k) est dit code cyclique si tout décalage cyclique d’un mot code est encore un mot code. . . . . . . . . vn−3 .9. .9. . 5. .1 Introduction Les codes polynômiaux sont des codes linéaires par blocs qui ont une importance particulière en téléinformatique où ils sont utilisés pour la détection d’erreur. . . . 5. .12 Exercices . . . . . .10 Codes de Reed-Solomon . . . . . . . .11 Quelques codes cycliques remarquables . . Ces codes possèdent des propriétés algébriques qui simplifient les opérations de codage et de décodage.9. . . . . . Exemple de construction de code BCH . . Nous aborderons les principales propriétés des codes cycliques et donnerons un aperçu des codes cycliques les plus remarquables. . les codes BCH. .9.6 Propriétés des champs de Galois CG(2m ) Construction des codes BCH . . 5. Calcul du syndrome d’un code BCH . . .2 Les codes de Fire .Codes polynômiaux cycliques 5. . . . . . . . . . . . . . . . . 5. Définition 1 Par définition un code linéaire (n. . . . . . ainsi à un n-uple (vn−1 . . . . . . . . v0 ) 62 TBA1 . . . . . . . . . . . soit 0101. . .5 Exemple On montrera dans la suite qu’un code cyclique (4.1.1. . . On constate bien que tout décalage cyclique de 0000 engendre 0000. . . . . . . . Dedieu . . Un fait remarquable est que la plupart des codes blocs importants connus peuvent être reformulés en tant que codes blocs cycliques ou apparentés. tout décalage cyclique de 1111 engendre 1111. . . . . . . . . . .1 Le code de Golay . .0.2 5. . .4 5. . . . . . . . tout décalage cyclique de 0101 engendre soit 1010. . . . . . . .5 5. . .9. . . . . 80 82 83 84 87 5. Les codes cycliques forment une importante sous-classe des codes polynômiaux. . . Décodage d’un code BCH . Ils présentent l’avantage de s’accommoder d’une longueur variable des mots d’information et ont une bonne capacité de détection des salves d’erreur. vn−2 . . . 91 5.11. . . . . 2) est de la forme telle que définie par la table 5.

H.0. k) est de degré n − k et il s’écrit sous la forme g(X) = 1 + g1 X + g2 X 2 + . .0. + vn−1 X n−1 Propriété 1 Le code polynomial non nul de degré minimal d’un code cyclique (n. Afin d’engendrer le code on multiplie les polynômes correspondant aux messages d’information par le polynôme générateur.1. 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 . 2) défini à la table 5. alors g(X) engendre un code cyclique (n. 2) on fera correspondre le polynôme (vn−1 . . Dedieu Message 00 01 10 11 → → → → → Codes polynômiaux cycliques Mot Code 0000 0101 1010 1111 TABLE 5. vn−2 . k).6 Exemple Pour le code cyclique (4. + gn−k−1 X n−k−1 + X n−k (5. le code polynomial non nul de degré minimal 1 + X 2 divise bien 1 + X 4 . TBA1 63 . v0 ) −→ v0 + v1 X + v2 X 2 + . 2) défini à la table 5.1) 5. . .7 Exemple Pour le code cyclique (4. .2. k) divise le polynôme 1 + X n 5.2. vn−3 .1. g(X) est appelé polynôme générateur . . 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. . .1 – Code cyclique (4. Cette propriété est très importante puisqu’elle indique comment générer un code cyclique.

Les 2 décalages cycliques du code sont 1010 et 0101 qui engendrent bien une base du code. message 00 0 (1 + X 2 )0 01 1 (1 + X 2 )1 10 X (1 + X 2 )X 11 X +1 (1 + X 2 )(X + 1) TABLE 5.2. Afin d’obtenir un code systématique on opère de la façon suivante. . Or un tel polynôme existe. 5. . un k-uple (ik−1 . le code obtenu n’est pas systématique. i. 2) défini à la table 5.3 Encodage d’un code cyclique (n. en effet 0000 = 0 × 1010 = 0 × 0101.2) TBA1 .0. On multiplie le polynôme i(X) du message d’information par X n−k . 2).2 – Code cyclique (4.1. 2) Résultat 0 X2 + 1 X3 + X X3 + X2 + X + 1 Mot Code 0000 0101 1010 1111 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. il s’agit de 1 + X 2 . .0. 1010 = 1 × 1010.Codes polynômiaux cycliques 5. Message Poly.e. . . . les bits d’information sont affectés par le codage et dans la plupart des cas. i(X) −→ X n−k i(X) 64 (5.2.8 Exemple H. i. k) sous forme systématique Lorsqu’on doit encoder un message d’information.e. + ik−1 X k−1 par le polynôme générateur g(X). message Poly. générateur × Poly. puis à retrouver les bits du mot code associé au polynôme produit. le code polynomial non nul de degré minimal est (1 + X 2 ) auquel correspond le mot code 0101.2. Dedieu Soit à générer le code cyclique (4. En effectuant un tel produit. Pour générer le code. on opère suivant le principe donné par la propriété précédente . Ce code cyclique existera si l’on peut trouver un polynôme de degré 4 − 2 = 2 qui divise 1 + X 4 . i0 ) on a vu que cela consistait à multiplier le polynôme i0 + i1 X + . 0101 = 1 × 0101 et 1111 = 1 × 0101 + 1 × 1010. ce principe est illustré à la table 5. 5.9 Exemple Pour le code cyclique (4.

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. 5. X n−k i(X) + r(X) = a(X)g(X) (5. . . D’autre part d’après la propriété 2. .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.11 Solution Il faut d’abord trouver le polynôme générateur du code. + r1 X + r0 ce qui correspondra au n-uple (ik−1 . i0 . 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. ik−2 .3) où r(X) est le reste de la division de X n−k i(X) par g(X). . rn−k−2 . . r1 .3.0. il vient compte tenu des propriétés de l’addition modulo 2. 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.3).4) On a donc les deux résultats fondamentaux suivants. On voit donc que r(X) est de degré inférieur à n − k. . . Le mot code sera en effet de la forme ik−1 X n + ik−2 X n−1 + . Le degré de ce polynôme générateur est d’après la propriété 1. 4) l’encodage systématique ainsi qu’un encodage non systématique de 1010. rn−k−1 . Prenons comme polynôme générateur g(X) = 1 + X + X 3 TBA1 65 . D’une part d’après ( 5. A priori on ne peut savoir lequel des deux codes est le meilleur. Lequel choisir ? La réponse n’est pas évidente d’emblée. r0 ) 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). n − k = 7 − 4 = 3. le polynôme générateur doit diviser 1 + X 7 .3. . . 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. . i0 X n−k + rn−k−1 X n−k−1 + .10 Exemple Trouver pour un code cyclique (7.0. Additionnons maintenant r(X) aux 2 membres de (5. .

(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. On calcule r (X) = reste Le syndrome s’écrit alors s(X) = r (X) + r(X) ˆ 66 X n−kˆ i(X) g(X) TBA1 . Soit c(X) = X n−kˆ ˆ i(X) + r(X) ˆ le mot reçu. 1. Si le syndrome est nul cela veut dire que e(X) = 0.4 Décodage d’un code cyclique (n.Codes polynômiaux cycliques L’encodage non systématique de l’information donnerait H. Le syndrome que nous calculerons est donc le reste de la division par g(X). le récepteur reçoit un mot de la forme Lorsque des erreurs de transmissions se produisent on reçoit c(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 divisible par g(X). k) c(X) = X n−k i(X) + r(X) = a(X)g(X) Quand il n’y a pas d’erreur. ˆ 2. On calcule le reste de la division de c(X) par g(X). 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.) Il existe deux méthodes équivalentes pour le calcul du correcteur. (s(X) = e(X)). L’encodage systématique est donc X 6 + X 4 + r(X) = X 6 + X 4 + X + 1 soit (1010) −→ (1010011) 5. Dedieu 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.

4. 5.5. etc.4. Dedieu 5.13 Fonctionnement en correcteur d’erreur Il y a plusieurs possibilités de fonctionnement. le décodeur prend la décision mot erroné-mot correct et demande ou ne demande pas la retransmission. Autrement dit une multiplication par X se traduit par un décalage temporel d’une unité de temps. 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. division de X (n−k) i(X) par g(X) afin d’obtenir le reste r(X) 3.5. Le bit qui était au temps i apparaît maintenant au temps i − 1. 5. Soit on calcule en temps réel la correction grâce à un algorithme adéquat.1 Introduction Nous avons vu précédemment que l’encodage d’un code cyclique (n.5 Réalisation d’un encodage de code cyclique 5. 5. et qu’au temps -2 avait apparu le bit 1. multiplication du message i(X) par X n−k 2.H.0. au temps -5 le bit 1. Nous allons essayer d’expliquer pourquoi dans la suite. Ce décalage correspond à TBA1 67 .0.12 Codes polynômiaux cycliques Fonctionnement en détecteur d’erreur seul En pratique on préfère souvent la deuxième méthode parce qu’elle permet d’utiliser la même structure au codeur et au décodeur. alors qu’à l’instant d’avant -1 avait apparu 1. Multiplier le polynôme par X.2 Préliminaires On doit réaliser sous forme matérielle des multiplications et des divisions polynomiales. 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. c’est décaler vers la gauche le message qui devient 1001110. Soit on dispose d’un tableau de correspondance archivé dans une ROM entre toutes les erreurs possibles et toutes leurs corrections. k) consistait en trois étapes 1. Que se passe-t-il lorsque l’on multiplie un polynôme par X ? Soit par exemple le message 100111 auquel correspond un polynôme 1 + X + X 2 + X 5 . au temps -4 le bit 0. Implicitement cela veut dire qu’au temps 0 apparaît le 1. Si on utilise le code en détecteur d’erreur seul.

+gm−1 X −1 En tenant compte du fait que l’addition modulo 2 est équivalente à la soustraction modulo 2. Du fait que chaque retard correspond à une multiplication par X −1 .2 on obtient y(X) = (u(X)+y(X))X −m +g1 y(X)X −(m−1) +g2 y(X)X −(m−2) + . Montrons tout d’abord que le circuit divise u(X) par g(X).2 – Schéma équivalent au circuit de division u(X) g(X) une anticipation d’un coup d’horloge. on peut simplifier le schéma de la figure 5.1 pour lui trouver le schéma équivalent de la figure 5.Codes polynômiaux cycliques H. Dedieu y(X) E u(X)  E E D 0  T  E E D 1  T  d   d g1  E  T  d   d g2  E D m−1  T  d   d gm−1 g0 = 1 c g m =1 F IGURE 5. . + g1 X −(m−1) + X −m ) = u(X)X −m 68 TBA1 . Dans ce schéma les bascules D sont des éléments retard d’une unité de temps.3 Circuit de division On donne ci-dessous le schéma d’un diviseur par g(X) de degré m = n − k. . Un retard de m coups d’horloge correspond donc à une division par X m 5. En partant du schéma 5.1 – Circuit de division u(X)   E E X −1 E E X −1   T T  E  T  d   d g2 u(X) g(X) 0 1  E X −1  T  d   d gm−1 y(X) E m-1 c g m g0 = 1  d   d g1 =1 F IGURE 5. . Inversement on pourrait monter qu’une division par X se traduit par une retard d’un coup d’horloge.5. y(X)(1 + gm−1 X −1 + gm−2 X −2 + .2. .

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. 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).1 Exercice Soient les polynômes u(X) = X 5 + X + 1 et g(X) = X 3 + X + 1 1.5. L’exercice suivant illustre cette propriété.3 – Circuit de division u(X) X 3 +X+1) D’où en multipliant numérateur et dénominateur par X m . 2. y(X) = 1 + g1 X + g2 X2 u(X) + .5. + gm−1 X (m−1) + X m Le circuit proposé divise bien u(X) par g(X). Calculer le quotient et le reste de la division de u(X) par g(X). 5.3.5. . Dedieu u(X)  Codes polynômiaux cycliques  E E X −1 E E X −1   T T E E X −1 2 y(X) E 0 1 g0 = 1 g1 = 1 g2 = 0 c3=1 g F IGURE 5.3. Analyser le fonctionnement du circuit de division.3 L’analyse du comportement temporel du circuit est donné au tableau 5.3. .H. 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. Donner le schéma du circuit de division. 3.2 TBA1 69 .2 Solution La division ne pose aucun problème. 5.

4 Tant que le commutateur se trouve en position k donc pendant k coups d’horloge. On voit 70 TBA1 . Montrons qu’en position k le circuit effectue la division de i(X)X n−k par g(X). puis division par g(X).5.Codes polynômiaux cycliques Coup d’horloge 0 1 2 3 4 5 6 ui =1 =0 =0 =0 =1 =1 0 D0 0 1 0 0 1 1 0 = r0 D1 0 0 1 0 1 1 0 = r1 D2 0 0 0 1 0 1 1 = r2 qi H. puis addition du produit au reste. Le schéma équivalent de l’encodeur cyclique lorsqu’il est en position k est donné à la figure 5. Le schéma du circuit réalisant ces trois opérations est donné à la figure 5. les k bits d’information sont en même temps envoyé vers le circuit et vers le récepteur. Dedieu u5 u4 u3 u2 u1 u0 q2 = 1 q1 = 0 q0 = 1 i(X) E c df k d d E f c(X) E E D 0 T  E E D 1  T  d   d g1  E  T  d   d g2  E D m−1  T  d   d gm−1 m c  E  g0 = 1 gm = 1 F IGURE 5.4 – Encodage d’un code cyclique systématique 5. 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. Le codeur doit effectuer les trois opérations suivantes : multiplication de i(x) par X n−k .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).5. Soit y(X) le signal au point noté A sur le schéma.

si la sortie vaut 1. . 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à. . . . + g1 X m−1 + X −m y(X) = X m i(X) X m + gm−1 X m−1 + gm−2 X m−2 + .5 Réalisation matérielle du décodage d’un code cyclique systématique Une des deux méthodes consiste à calculer le reste de la division de c(X) par ˆ g(X). TBA1 71 . . + g1 X m−1 + X −m ) = i(X) Soit encore y(X) = 1 + gm−1 X −1 i(X) + gm−2 X −2 + . il n’y aura pas d’erreur détectée. . c’est qu’il y a au moins une erreur. Dedieu Codes polynômiaux cycliques i(X)    E X −1 E E X −1 E E X −1 E E X −1    T T T T  d   d g1  d   d g2  d   d gm−1 c  E  A gm = 1 cy(X) g0 = 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) + .5. + gm−1 X −1 y(X) Soit y(X)(1 + gm−1 X −1 + gm−2 X −2 + . Comme le reste apparaît après n + 1 coups d’horloge sur les registres des bascules D. + g1 X + 1 Ce qui prouve que le circuit effectue bien la division requise.H. Si la sortie vaut 0. 5. . .

72 TBA1 . Dedieu 5. Une erreur simple sur le ième bit se traduit par un polynôme e(X) = X n−i . Lorsqu’une ou plusieurs erreurs surviennent pendant la transmission le mot reçu c(X) est la somme du mot code émis et d’un certain polynôme ˆ d’erreur e(X).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. 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). le polynôme e(X) contient un nombre impair de coefficients non nuls.la division de e(X) par g(X) est non nulle et l’erreur est détectée. g(1) = 0. Le système de décodage détecte toute erreur telle que g(X) ne divise pas e(X) . g(X) ne peut être de la forme X p et ne peut donc diviser X n−i . Le polynôme e(X) n’est donc pas divisible par g(X) et tout nombre impair d’erreurs est détecté.e. il ne pourra diviser (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. Ceci montre que e(X) ne peut être un multiple de g(X) car dans ce cas e(1) devrait valoir 0. Par conséquent on est sûr que g(X) ne peut diviser X n−j (1 + X j−i ). Si les erreurs sont en nombre impair. Comme g(X) contient au moins deux coefficients qui sont non nuls (le premier et le dernier). Si de plus g(X) ne peut diviser 1 + X p pour 1 ≤ p ≤ n − 1.Codes polynômiaux cycliques H. 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. c(X) est divisé par g(X) et la transmission est déclarée sans erreurs si ˆ le reste de la division est nul. 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 . Par conséquent e(1) = 1. Par conséquent lorsqu’une erreur simple survient. c(X) = a(X)g(X) + e(X) ˆ Au décodage. D’autre part comme g(X) contient le facteur X + 1. Propriété 1 Un code polynomial détecte toute erreur simple. Cette propriété est vraie que le code soit cyclique ou non. i.

. . Suivant la valeur de n choisi on aura affaire à un code cyclique ou non. 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. . les erreurs en nombre impair. Cette dernière caractéristique.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. a conduit à la normalisation de plusieurs codes polynômiaux pour la téléinformatique.7. 5. Une salve d’erreurs de longueur j est définie comme un vecteur dont les composantes non nulles peuvent être confinées sur j positions consécutives. 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 . où les erreurs se produisent le plus souvent par salves. + X + 1) qui est degré inférieur. les erreurs doubles. On donne ici le polynôme générateur ( d’ordre n − k) associé à ces codes normalisés. 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.41 Ce code a pour polynôme générateur g(X) = 1 + X 5 + X 12 + X 16 (5.5) 73 TBA1 .+X+1) où j − 1 ≤ n − k − 1. . Ces polynômes peuvent être utilisés pour différentes longueurs de bloc n. 5. Dedieu Codes polynômiaux cycliques Propriété 4 Un code polynomial (n. particulièrement importante pour la transmission sur le canal téléphonique. . 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.H. D’autre part g(X) de degré n − k ne peut diviser (X j−1 + X j−2 + . g(X) ne divise pas X n−i−j+1 car g(X) contient deux coefficients non nuls. . 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.+ei+j−2 X n−i−j+2 +X n−i−j+1 = X n−i−j+1 (X j−1 +X j−2 +. 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 +.1 Le code CCITT V. k) détecte toutes les salves d’erreurs de longueur inférieure ou égale à n − k.

5.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.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 . en particulier la procédure HDLC . toutes les erreurs en nombre impair ainsi que toutes les salves d’erreurs de longueur inférieure ou égale à 16 (degré de g(X)). 5. 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 .7. Dedieu On peut montrer aisément que la distance minimale entre deux mots du code est dmin = 4.7.7. Ce code peut donc détecter toutes les erreurs simples.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.8) 5.Codes polynômiaux cycliques H.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 Le code ETHERNET Ce code est utilisé dans le réseau local ETHERNET.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. doubles et triples. 5. Ce code est utilisé dans les procédures de lignes orientées bit.

923) on trouverait m = 10. Le rendement du code BCH (1023.H.1 Exemple Analyser la potentialité des codes BCH (511. Comme le nombre de bits de contrôle est n − k = 1023 − 923 = 100. Chaudhuri et Hocquenghem (BCH) forment une classe trés importante et très puissante de codes cycliques détecteurs et correcteurs d’erreurs. on en déduirait qu’un tel code est capable de corriger t ≥ n−k = 100 = 10 erreurs. Dedieu Codes polynômiaux cycliques 5.1. 421) est tel que n = 511 = 29 − 1 d’où l’on déduit que m = 9. n = 2m − 1 n − k ≤ mt dmin ≥ 2t + 1 TBA1 75 . 421).902. Son rendement est η = n = 421 = 0.2 Solution Le code BCH (511. Ils généralisent les codes de Hamming pour la correction d’erreurs multiples. 421) (elle est 10 10 de 511 ) que pour le code BCH (1023.8. 923) en terme de correction d’erreur. 923) offre un meilleur rendement que le code BCH (511. Le code BCH (1023. Un tel code peut donc corriger 10 erreurs m 9 k sur un bloc de 511 bits.1.8. 421) et (1023. Le nombre de bits de contrôle est n − k = 511 − 421 = 90. 5.8. 923) m 10 k 923 est η = n = 1023 = 0.823. Pour tout couple d’entiers 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 Nombre de bits de contrôle Distance minimale entre mots-code 5. 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. Les codes binaires BCH ont été découverts indépendemment par Hocquenghem (1959) et Bose et Chaudhuri (1960).1 Description des codes BCH Les codes BCH sont construits pour corriger t erreurs. 923) ( 1023 ).8 Codes cycliques BCH Les codes de Bose. Pour le code 511 BCH (1023. On voit donc que les deux codes ont la même capacité de correction par bloc. 5. Comparer le rendement de ces deux codes. D’où l’on déduit que t ≥ n−k = 90 = 10. puisque 10 erreurs par bloc peuvent être corrigées.

9. α2 76 m −2 (5. P (X) doit diviser X 2 −1 + 1 = X 15 + 1.10) TBA1 .1 Construction des champs de Galois CG(2m ) Le champ de Galois CG(2) est constitué des 2 éléments 0 et 1. α2 . Théorème 1 Tout polynôme irréductible sur CG(2) de degré m divise X 2 m −1 + 1. 1.0. α.9.) 5. Ces racines prennent leurs valeurs dans le champ de Galois CG(2m ) dont nous n’avons pas encore parlé jusqu’ici.3 donne quelques polynômes primitifs 5. Avant d’introduire le champ de Gallois CG(2m ). Dedieu 5. on obtient bien X7 + 1 = X4 + X2 + X + 1 3+X +1 X 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 primitif a donc pour période 2m − 1. . Le champ de Galois CG(2m ) est constitué des 2m éléments suivants G∗ = 0. D’après m le thèorème. Afin d’expliquer la construction des codes BCH nous allons introduire ici les éléments théoriques minimaux. La table 5. .3 Exemple P (X) = X 3 + X + 1 n’a pas de racine sur CG(2) car P (1) = 1 et P (0) = 0. (On rappelle qu’un polynôme est dit irréductible s’il ne possède aucun diviseur de degré supérieur à 0. Pour savoir si P (X) est primitif. D’après le théorème précédent. 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. le théorème suivant nous sera nécessaire. ou de façon plus commode à partir des racines de leur polynôme générateur. . il faudra vérifier que P (X) ne divise pas X n + 1 pour 1 ≤ n ≤ 15. 5.Codes polynômiaux cycliques H. .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. Comme 2m − 1 = 23 − 1 = 7 on peut vérifier que X 7 + 1 est divisible par X 3 + X + 1. α3 . Après division.9.0.4 Exemple Le polynôme X 4 + X + 1 est un polynôme irréductible de CG(2).

on a donc α2 m −1 +1=0 77 TBA1 . . α3 .H. α. . . 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 α2 m −1 =1 (5. en effet.11) En addition modulo-2. α2 −2 constitue un ensemble fermé pour la multiplication. Dedieu m 3 4 5 6 7 8 9 10 11 12 13 P (X) 1 + X + X3 1 + X + X4 1 + X2 + X5 1 + X + X6 1 + X3 + X7 1 + X2 + X3 + X4 + X8 1 + X4 + X9 1 + X 3 + X 10 1 + X 2 + X 11 1 + X + X 4 + X 6 + X 12 1 + X + X 3 + X 4 + X 13 m 14 15 16 17 18 19 20 21 22 23 24 Codes polynômiaux cycliques P (X) 1 + X + X 6 + X 10 + X 14 1 + X + X 15 1 + X + X 3 + X 12 + X 16 1 + X 3 + X 17 1 + X 7 + X 18 1 + X + X 2 + X 5 + X 19 1 + X 3 + X 20 1 + X 2 + X 21 1 + X + X 22 1 + X 5 + X 23 1 + X + X 2 + X 7 + X 24 TABLE 5. . Soit α une racine de ce polynôme primitif (α est dit élément primitif de CG(2m ) de CG(2m ). Alors G∗ = m 0. on sait d’après le théorème 1 que X2 En remplaçant X par α il vient α2 m −1 m −1 + 1 = P (X)q(X) + 1 = P (α)q(α) Comme par hypothèse P (α) = 0. 1. la condition ( 5. La démonstration de ce théorème est aisée.11) est équivalente à α2 m −1 +1=0 (5. Quelle valeur de α doit-on choisir ? α n’est pas quelconque.12) Théorème 2 Soit P (X) le polynôme primitif d’ordre m. Sachant que P (X) est un polynôme primitif.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. α2 .

compte tenu du fait que P (X) est un polynôme primitif. On a αi + αj = (ai. que ai (X) = aj (X) si i = j.18) donne (5.m−1 ai. + 0αm−1 = 0 Pour i = j. .m−1 + aj.2 X 2 + .0 + aj. Si i + j ≥ 2m − 1. du fait que ai (X) = aj (X). En remplaçant X par α dans l’équation (5. .18) Pour i = j.m−2 . . alors αi αj = αi+j qui est un élément non nul de G∗ .13) on obtient αi = qi (α)P (α) + ai (α) Comme P (α) = 0. il faut maintenant trouver une opération d’addition qui ferme aussi le champ.19) αi + αi = 0 + 0α + . l’équation (5.15) devient αi = ai (α) = ai. on divise X i par P (X) et l’on obtient X i = qi (X)P (X) + ai (X) 0 ≤ i ≤ 2m − 1 (5. Dès lors αi αj = αi+j = α2 m −1 αr = 1αr = αr Ce qui prouve bien que G∗ est fermé sous la multiplication.m−1 )αm−1 (5. + ai. Si i+j < 2m −1. .Codes polynômiaux cycliques Soit d’après les propriétés de l’addition modulo-2 α2 m −1 H. En effet soient deux entiers i et j tels que 0 ≤ i ≤ 2m −2 et 0 ≤ j ≤ 2m −2. αi + αj est non nul. Montrons maintenant que G∗ est fermé sous l’addition.0 + ai.0 ) + (ai. c’est donc forcément un des 2m − 1 éléments non nuls de G∗ . 78 TBA1 .0 + ai.0 ) 0 ≤ i ≤ 2m − 1 (5.16) 0 ≤ i ≤ 2m − 1 (5.1 )α + . . 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. X i et P (X) sont premiers entre eux. . + ai.1 α + ai. avec l’élément nul ils forment 2m polynômes de degré m − 1 (polynômes à m coefficients). pour 0 ≤ i ≤ 2m − 1.2 α2 + . en tenant compte des propriétés de l’addition modulo-2. on peut toujours écrire i + j = (2m − 1) + r avec 0 ≤ r < 2m − 1. Pour disposer d’un champ. ai.14) On peut montrer facilement.15) Les 2m −1 ai (X) pour 0 ≤ i ≤ 2m −1 sont donc tous différents. . . Dedieu =1 Il s’ensuit que le produit de deux éléments de G∗ est un élément de G∗ .13) Comme X et P (X) n’ont pas de facteur commun (car P (X) est un polynôme irréductible).m−1 αm−1 qui peut aussi se représenter sous forme de m − uple αi = (ai. .17) 0 ≤ i ≤ 2m − 1 (5. + (ai. .1 ai.1 + aj. (5.m−1 X m−1 (5. A cette fin.1 X + ai.

1 Exemple Codes polynômiaux cycliques 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. 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 polynomiale que sous forme de 4 − uples est donnée à la table 5.1. Dedieu 5.3.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.H. TBA1 79 .9.4.9. α3 . α. sous forme polynomiale. D’après la table 5. α2 . D’où l’on déduit α4 = 1 + α. 5. on trouve X 7 = P (X)(X 3 + 1) + X 3 + X + 1 D’après l’équation (5.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. le polynôme primitif d’ordre 4 est P (X) = 1 + X + X 4 Pour trouver la représentation des αi . Par suite on peut déterminer par récurrence toutes les puissances de α de 4 à 14 en fonction de 1.1. on calcule le reste de la division par P (X) de X i . Par exemple pour X 7 .

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. α11 . le polynôme X 4 + X 3 + 1 est irreductible dans CG(2) puisque ni 0 ni 1 ne sont racines.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. α13 et α14 sont racines de X 4 + X 3 + 1 . Si nous substituons à X des éléments de CG(24 ) on peut vérifier que α7 .Codes polynômiaux cycliques αi 0 1 α α2 α3 α4 α5 α6 α7 α8 α9 α10 α11 α12 α13 α14 Représentation polynomiale 0 1 α α2 α3 α+1 α2 + α α3 + α2 α3 + α + 1 α2 + 1 α3 + α α2 + α + 1 α3 + α2 + α α3 + α2 + α + 1 α3 + α2 + 1 α3 + 1 Représentation par 4-uples (0 0 0 0) (0 0 0 1) (0 0 1 0) (0 1 0 0) (1 0 0 0) (0 0 1 1) (0 1 1 0) (1 1 0 0) (1 0 1 1) (0 1 0 1) (1 0 1 0) (0 1 1 1) (1 1 1 0) (1 1 1 1) (1 1 0 1) (1 0 0 1) H. 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).9. 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. 80 TBA1 . Dedieu TABLE 5. Une propriété similaire existe pour les polynômes à coefficients dans CG(2). pour s’en convaincre pour α7 (en utilisant les éléments donnés par la table 5.4 – Trois représentations des 16 éléments de CG(24 ) 5. Par exemple.4).

α11 . Soit p le p plus petit entier tel que β 2 = β. α10 7 α . Soit m(X) le polynôme de degré le plus petit sur CG(2) tel que m(α) = 0.2 Exemple de construction de polynôme minimal Construire dans CG(24 ) le polynôme minimal associé à l’élément β = α9 .1 Exemple de polynômes minimaux m Pour le champ de Galois CG(24 ) le polynôme minimal associé à β = 0 est m(X) = X (m(β) = β = 0). α13 . Dès lors p−1 m(X) = i=0 (X + β 2 ) i (5. α14 Codes polynômiaux cycliques Polynômes minimaux X X +1 4 X +X +1 X4 + X3 + X2 + X + 1 X2 + X + 1 X4 + X3 + 1 TABLE 5. Le polynôme minimal associé à β = 1 est m(X) = X + 1. α12 α5 . 5.H.9.9. en effet m(β) = β + 1 = 1 + 1 = 0. Théorème 6 Soit m(X) le polynôme associé à un élément β de CG(2m ). Dedieu Eléments de CG(24 ) 0 1 2 α. TBA1 81 . α8 α3 .5 – Polynômes minimaux associés aux éléments de CG(24 ) générés par P (X) = X 4 + X + 1 Il résulte du corollaire que tout élément β de CG(2m ) est une racine X 2 + X. 5.2. Par conséquent β doit être racine d’un polynôme de degré inférieur à 2m . α4 .20) Ce dernier théorème offre le moyen de construire le polynôme minimal associé à tout élément de CG(2m ).5. α9 . Théorème 5 Le polynôme minimal m(X) associé à un élément β de CG(24 ) est un polynôme irréductible. 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. α6 . m(α) est dit polynôme minimal de α. α .2.

α2 . . Dedieu On calcule d’abord p tel β 2 = β. .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.Codes polynômiaux cycliques 5. . On a β 2 = α18 = α3 β 4 = α36 = α6 β 8 = α72 = α12 4 β 16 = α144 = α9 (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. . .9. 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. soit p = 4. . Les polynômes minimaux possèdent un certain nombre de facteurs communs. Soit α un élément primitif de CG(2m ). On rappelle ici la notion de polynôme minimal . Par conséquent le code BCH qui possède comme racines α. . . . α2t .21) i où les mi (X) 0 ≤ i ≤ 2t sont les polynômes minimaux associés aux α . 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. m3 (X). m2t−1 (X)) (5. α3 .2. .21) est équivalente à g(X) = P lus P etit Commun M ultiple(m1 (X).9. . par exemple 144=9 modulo-15) On déduit donc que 2p = 16. .22) 82 TBA1 . m2 (X). m2t (X)) (5. .3 Solution p H. m3 (X). . 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 α. α3 .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 ). . α2t a pour polynôme générateur g(X) = P lus P etit Commun M ultiple(m1 (X). . en somme qu’il peut être montré que l’équation (5. α2 .

. par conséquent le degré de g(X) est au plus mt. .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). . on a n − k ≤ mt (5. αn−1 . . D’après le théorème 5. m3 (X). . Dans le cas présent. 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 avec      H=    (5. on a donc m = 4. (α2 )n−1 .4.. . . puis on prouve par contradiction que ceci n’est pas possible. . .9. 2t n−1 . c’est une matrice à 2tm lignes et n colonnes). . Il n’y a pas de formule simple pour calculer n − k. . . Trouver le code BCH revient à trouver les racines du polynôme primitif de CG(2m ) = CG(24 ). (α )          1 α α2 α3 1 (α2 ) (α2 )2 (α2 )3 1 (α3 ) (α3 )2 (α3 )3 . 2t 2t 2 2t 3 1 (α ) (α ) (α ) (5. 5.23) L’équation (5. . m5 (X)) TBA1 83 . en général lorsque t est petit. .22) a une distance minimale dmin = 2t + 1 (capacité de corriger t erreurs). .24) . .H. 5. n − k est égal à mt. .4 Exemple de construction de code BCH Construire le code cyclique capable de corriger t = 3 erreurs dans des blocs de n = 15 bits.. Comme le degré de g(X) représente le nombre de bits de contrôle n − k.22). (α3 )n−1 . 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. . 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.23) spécifie le nombre de bits de contrôle. . D’après la table 5. . 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.1 Solution Les codes BCH sont de longueur n = 2m − 1.25) où H est la matrice de contrôle du code (chaque αi pouvant être représenté par un m − uple. .3. .9. Il resterait à prouver que le code BCH défini par (5.

+vn−1 X n−1 .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 +. Donc si l’on divise r(X) par mi (X). r(X) = ai (X)mi (X) + bi (X) (5. .e. s2 .Codes polynômiaux cycliques H. X 4 +X 3 +X 2 +X+1. 5). + rn−1 α(n−1)i ou encore si = e(αi ) = e0 + e1 αi + e2 α2i + e3 α3i + . . Dedieu Les polynômes minimaux peuvent être trouvés par application du théorème 6. . + en−1 α(n−1)i 1 ≤ i ≤ 2t (5.27) Par application des équations (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.27) et (5.25) est telle que vH T = 0 (5. X 2 +X+1) Comme ni X 4 + X + 1.9. 5.+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. la ième composante du syndrome est donc si = r(αi ) = r0 + r1 αi + r2 α2i + r3 α3i + . i. . Dans CG(24 ) ces polynômes sont donnés par la table 5. i. . Par conséquent g(X) = P lus P etit Commun M ultiple(X 4 +X+1. . Définissons par e(X) = e0 +e1 X +e2 X 2 +.30) 84 TBA1 .e m1 (X) = X 4 + X + 1 (polynôme minimal associé à α). .29) 1 ≤ i ≤ 2t (5.28) 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 .5. m3 (X) = X 4 + X 3 + X 2 + X + 1 (polynôme minimal associé à α3 ). ni X 4 + X 3 + X 2 + 1 ne sont divisibles par X 2 + X + 1. . . . d’où l’on déduit que k = 5. s2t ) = rH T = eH T (5. s3 . .25). 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. Le syndrome est donc le 2t − uple s = (s1 . Le polynôme générateur trouvé est donc celui du code cyclique BCH (15. m5 (X) = X 2 + X + 1 (polynôme minimal associé à α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 . puis à rajouter au résultat i(X)X n−k . Une erreur se produit au niveau du bit 11. Dedieu on a Codes polynômiaux cycliques r(αi ) = ai (αi )mi (αi ) + bi (αi ) == ai (αi )0 + bi (αi ) = bi (αi ) (5. il faut trouver le reste de la division de X 12 par g(X). Au 15-uple d’information (0 0 1 0 0) correspond le polynôme i(X) = X 2 .5.1 Exemple de calcul de syndrome pour un code BCH Soit le code BCH (15. Le polynôme générateur a ses trois racines dans CG(24 ). 5).5.9. 5. L’encodage systématique consiste à trouver le reste de la division de i(X)X n−k par g(X).31) Ainsi la ième composante du syndrome peut être calculée simplement. Soit s le 15-uple après encodage. 5) est tel que n = 15 = 24 − 1.H.5. De la relation n − k ≤ mt on déduit que ce code peut corriger t = 3 erreurs. 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. Comme n − k = 10. d’où l’on déduit que m = 4.9. 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. On divise r(X) par mi (X) et le reste obtenu bi (X) sert à calculer r(αi ) = e(αi ) = bi (αi ).2 Solution Le code BCH (15. calculer le syndrome et vérifier que l’on puisse détecter et corriger l’erreur à partir du syndrome.

H.. e(α2 ). e(α3 ).Codes polynômiaux cycliques 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). En effet S = (e(α). e(α6 ) = α11 = α66 = α6 .4) les expressions des 6 composantes 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 . α10 . m3 (X) et m5 (X). e(α6 )) D’où e(α) = α11 signale une erreur en position 11. α3 . 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). Dedieu 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). que e(α3 ) = α11 = α33 = α3 . etc. e(α5 ).. 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. e(α4 ). 86 TBA1 . α6 ) On voit que l’expression du syndrome est cohérente avec une erreur en position 11.. α14 . α7 . Remarquons que e(α2 ) = 2 3 6 α11 = α22 = α7 .

jµ . ≤ jµ < n. . + ejµ X jµ = X j1 + X j2 + . s2t = αj1 + αj2 + αj2 + . + (αjµ )2t (5. .H. . . . On a donc e(X) = ej1 X j1 + ej2 X j2 + . La méthode la plus simple. + X jµ D’après l’équation (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 . αjµ sont les inconnues. Dedieu Codes polynômiaux cycliques 5. Les paramètres des codes de Reed-Solomon sont les suivants TBA1 87 . . ils forment une classe importante des codes correcteurs que l’on utilise principalement pour traiter les salves d’erreurs. k) et que ces µ erreurs se trouvent aux positions 0 ≤ j1 ≤ j2 ≤ j3 . . on en déduit les positions des erreurs j1 . . . . .33) Dans l’équation (5. 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 ) . + αjµ = (αj1 )2 + (αj2 )2 + (αj2 )2 + . . . αj2 . + (αjµ )3 . Une fois ces inconnues trouvées.34) où α est l’élément primitif de CG(2m ). On dispose de plusieurs algorithmes pour le décodage des codes BCH.29) on a les 2t équations suivantes s1 s2 s3 .33). (X + α2t ) (5. . Avec de tels codes on traite des éléments (symboles) de CG(2m ) et par conséquent des m-uples. quand n n’est pas trod grand est basé sur la correspondance entre le syndrome et le correcteur qui est stockée en mémoire ROM. . les αj1 . . .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. .9. + (αjµ )2 = (αj1 )3 + (αj2 )3 + (αj2 )3 + . = (αj1 )2t + (αj2 )2t + (αj2 )2t + . . 5. αj2 . .32) (5. . . . Toute méthode capable de résoudre l’équation (5. .33) constitue un algorithme de décodage des codes BCH. . . Les codes de Reed-Solomon ont la propriété remarquable de pouvoir corriger des blocs de t symboles avec seulement 2t symboles de contrôle. j2 . . .

37) (5.11. 11). 5.Codes polynômiaux cycliques H.36) (5. 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 ou par g2 (X) = 1 + X + X 5 + X 6 + X 7 + X 9 + X 11 On remarque en effet que X 23 + 1 = (X + 1)g1 (X)g2 (X) 88 (5.1 Le code de Golay Le code de Golay (23. Les symboles sont des éléments de CG(24 ) car m = 4. Dedieu Longueur de bloc n symboles Nombre de bits de contrôle Distance minimale entre mots-code 5.0.35) TBA1 .10.11 Quelques codes cycliques remarquables 5.0.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) possède n − k = 15 − 11 = 4 symboles de contrôle. Selon l’équation (5.2 Solution Le code de Reed-Solomon (15.34).10.1 Exemple n = (2m − 1) symboles n − k = 2t symboles dmin = 2t + 1 symboles (2m − 1) × m bits par bloc 2t × m bits de contrôle Trouver le polynôme générateur du code de Reed-Solomon (15. Un tel code est donc capable de corriger t = n−k = 2 symboles dans 2 des blocs de n = 15 symboles en utilisant 11 symboles d’information et 8 symboles de contrôle. (n = 2m − 1 = 15 = 24 − 1). 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.

Construire le code Fire capable de corriger des salves de longueur l = 5 à l’aide du polynôme primitif de degré 5. Or le nombre de combinaisons possibles correspondant respectivement à l’absence d’erreurs. une fois le syndrome calculé. Si p(X) est primitif. puisqu’il est avec le code de Hamming le seul code parfait. p(X) = 1 + X 2 + X 5 .11.1 Exemple à l’aide du polynôme primitif de degré 5. 2 1 0 C23 = 1 C23 = 23 C23 = 23 × 22 = 253 2 2 C23 = 23 × 22 × 21 = 1771 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 combinaisons d’erreurs que le code peut corriger correspond au nombre de combinaisons permises par le syndrome. pour que le code soit cyclique. le syndrome peut donc représenter 211 = 2048 combinaisons d’erreurs différentes. TBA1 89 . un code de Fire est capable de détecter les salves d’erreur de longueur inférieure ou égale à n − k = 2l − 1 + r. Comme tout code polynomial.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. Ces codes présentent un polynôme générateur de la forme g(X) = (1 + X 2l−1 )p(X) (5. peut être effectuée par inspection d’une table à 2048 entrées puisqu’il existe une correspondance bi-univoque entre le syndrome et l’erreur commise. 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. deux et trois erreurs possibles sont respectivement. D’un point de vue théorique le code de Golay a inspiré un large éventail de recherches.2. Malheureusement le code de Golay ne peut être généralisé à une famille de codes plus large.11. On peut montrer qu’un code de Fire est capable de corriger des salves d’erreurs de longueur l 5.H. Ce code possède 23 − 12 = 11 bits de redondance. il faut que n soit le petit commun multiple de 2l − 1 et de 2r−1 . 5. p(X) = 1 + X 2 + X 5 . à une.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. La correction.

On doit corriger des salves d’erreur de longueur maximum l = 5 et 2l − 1 = 9 et 31 sont bien premier entre eux. Dedieu 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 µ ).2 Solution H. n est forcément le plus petit commun multiple entre 9 et 31 soit n = 279. 265).2.Codes polynômiaux cycliques 5.11. Or n − k = 9 + 5 = 14. D’où l’on tire que le code est un code (279. 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 . 90 TBA1 .

cn−1 ]).2 Pourquoi le polynôme générateur d’un code (n. . . .3 1. .X + c2 . 4). . 3. . Dedieu Codes polynômiaux cycliques 5. 2. La matrice génératrice que vous avez trouvée garde-t-elle les mêmes correspondances entre les mots d’information et les mots-codes que celles trouvées à la question 1.X n−1 est aussi un mot-code (correspondant au n-uple ([cn−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. 1. c0 ]) alors C2 (X) = cn−1 + c0 . X n−l peut s’écrire sous la forme X n−l = Al (X). + cn−2 . cn−1 .1 Soit g(X) un polynôme générateur d’un code bloc (n. 4) et donner l’ensemble des mots-code.H. . + cn−1 . k. .X n−1 est un mot-code (correspondant au n-uple ([cn−1 . Trouver une matrice génératrice systématique d’un tel code (7.4 Soit un code cyclique (n. . k). Montrer que pour l = 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). Montrer que si g(X) divise (1 + X n ).X 2 + . 2. .g(X) + Rl (X) et indiquer le degré maximum de Rl (X).X 2 + . 3. TBA1 91 .12 Exercices Exercice 5. . Indiquer à l’aide d’un bloc de bits jusqu’où vont s’étendre les bits correspondants à X n−l et ceux correspondants à Rl (X). Trouver le polynôme générateur d’un code cyclique (7. . Montrer que ces deux types de bits ne peuvent jamais interférer à la même position. . c0 . alors si C1 (X) = c0 + c1 . En déduire que X n−l + Rl (X) est divisible par g(X). Exercice 5. k) est-il de degré n − k ? Combien de mots-code pourra-t-on générer avec un polynôme générateur d’un tel degré ? Exercice 5.X + c1 . k) dont le polynôme générateur est g(X). cn−2 . Exercice 5. . 4. 2.

u7 = u8 = u9 = 0) ? 8. construire les matrices génératrices GS1 et GS2 des deux codes.X 2 +. Montrer que Y (X) est égal à Q(X) = U (X) . uk−1 est envoyé au temps 0.6 le 7-uple correspondant 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. q1 et q2 .). . .5 Soit un code cyclique ou non (n. . . 2. cela veut dire qu’il existe un rebouclage unitaire 92 TBA1 . . . 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). 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. u0 au temps k − 1. + uk−1 X k−1 correspondant au k-uple [uk−1 . soit le circuit de la figure 5. 5. q0 . . 4. k − 1] appartiennent à CG(2). 5. 7. .Codes polynômiaux cycliques H. 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é. 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 . 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. u1 . . u2 . Présenter maintenant à l’entrée du circuit de la figure 5. 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. uk−2 au temps 1. . Soit k = 7 et U (X) = X + X 2 + X 3 + X 4 + X 6 . .6 Soit le circuit de la figure 5. Dans le cas où gi = 1. k) dont le polynôme générateur est g(X). 1+X+X 3 2. trouver le quotient et le reste de la division polynômiale de U (X) par 1 + X + X 3 6. De manière générale. On suppose que l’on présente à l’entrée du circuit de la figure 5. . k − 1 en fonction des termes qi du polynôme quotient Q(X) (Q(X) = q0 +q1 . En déduire la valeur de yi à chaque temps i pour i = 0 .7 dans lequel les gi valent 0 ou 1.X +q2 . k. uk−2 . Dedieu 4.6 les bits ui dans l’ordre suivant.6 dans lequel tous les additionneurs sont modulo 2 (OU exclusif). u0 ] dans lesquels les ui pour [i = 0 . . 1. . Soit U (X) un polynôme de degré k − 1 tel que U (X) = u0 + u1 X + . Exercice 5. Montrer que les deux codes ont les mêmes capacités de détection et de correction.e. Exercice 5. . 3. . . .

H. dans le cas où gi = 0 le rebouclage correspondant n’existe pas. Dedieu Codes polynômiaux cycliques entre la sortie yi et l’entrée de l’additionneur correspondant à gi . 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.6 (questions 1 à 7) ui + + D0 + D1 D2 + + g3 + Dm-1 yi + 1 + g1 + g2 + gm-1 1 F IGURE 5. ui + D0 + D1 D2 yi + + F IGURE 5.7. .7 – Figure associée à l’exercice 5. 9.6 (questions 8 et 9) TBA1 93 .6 – Figure associée à l’exercice 5. . Montrer que le circuit divise U (X) par g(X) = 1 + g1 X + g2 X 2 + . gm−1 X m−1 + X m .

Codes polynômiaux cycliques H. Montrer que toutes les erreurs simples et triples sont détectées. Montrer qu’il est relativement simple de construire un cas ou une erreur quadruple n’est pas détectée.8 ? 3. Le CRC est ici exclusivement utilisé en détection d’erreurs. 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. 6. puis par récurrence montrer que si le reste de la division de X l + 1 par g(X) est non nul. 1. En appelant k le nombre de bits correspondant au champ d’adresse. 9.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 .Kd bits) CRC (16 bits) F IGURE 5. 94 TBA1 . alors le reste de la division de X l+1 + 1 par g(X) est aussi non nul. (Indications : montrer que le reste de la division de X 17 +1 par g(X) est non nul. Montrer que les salves d’erreurs de longueur inférieure à 16 sont détectées. calculez la longueur n des mots-code. 2. Le champ CRC (Cyclic redundancy check) est calculé à l’aide d’un polynôme générateur normalisé appelé CRC-CCITT V. 7. Montrer que si un nombre impair d’erreurs est présent alors il sera détecté par le CRC. 8. 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. de contrôle et de données. Fanion 01111110 (8 bits) Fanion 01111110 (8 bits) Adresse (8 bits) Contrôle (8 bits) Données (8. Après détection éventuelle d’erreurs. la trame sera redemandé à l’expéditeur. Dedieu Exercice 5.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. Déduire des 3 questions précédentes la distance minimale entre les mots du code. 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. Montrer que toutes les erreurs doubles sont détectées.

Vous êtes chargé de réaliser un code CRC-CCITT V. Votre premier réflexe est de chercher sur Internet un schéma du circuit. Quelle serait la capacité de correction si le code était utilisé en correcteur ? 12. Quel circuit allez-vous proposer ? Porte 1 + D + D Sortie D D D D D D D D D D D D D D + + + + 2 Entrée F IGURE 5. Quelle est la capacité de détection du code ? Codes polynômiaux cycliques 11.9. Dedieu 10. Après que vous ayez codé avec succès vous êtes chargé du décodage.9 – Structure d’un codeur CRC-CCITT V. cependant les explications sont lacunaires. 13. Vous trouvez rapidement le schéma de la figure 5.41 TBA1 95 . Vérifier que le circuit est correct et expliquer ce que l’on doit faire avec la porte et les interrupteurs. Analyser comment devrait fonctionner ce circuit.H.41 sous forme de circuit.

Dedieu 96 TBA1 .Codes polynômiaux cycliques H.

3) présenté à la figure 6. Dans cette figure les additionneurs représentent des OUExclusifs (additions modulo-2). 1. 1. 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. 0.2 Encodage de codes convolutionnels Un exemple de circuit séquentiel implémentant un code convolutionnel (2. 1. 1. les séquences d’informations ne seront pas traitées comme des blocs mais seront traitées de façon continue. Considérons le codage de la séquence d’entrée u = (1. k. 6. Un code convolutionnel (n.1. 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) . m). n sorties et m valeurs mémorisées.6 Codes convolutionnels 6. k. les rectangles représentent des registres mémoires à décalage qui sont actionnés toutes les T secondes.1. On parle maintenant de codes (n. m) peut être implémenté à l’aide d’un circuit séquentiel à k entrées. 97 . T étant la période de temps séparant deux entrées consécutives. Dans les cas que nous considérerons dans la suite k = 1 . 1) à l’aide du circuit implémentant le code convolutionnel (2. v (2) ). 3) est donné à la figure 6.1 Introduction Les codes convolutionnels diffèrent des codes blocs par le fait que le codeur possède une mémoire. Nous c 2010 HEIG-VD.

Codes polynômiaux cycliques H. 1. d’où V (1) (z) = 1 + z −2 + z −3 98 1 + z −2 + z −3 + z −4 TBA1 . 01.1 – Analyse du circuit précédent en réponse à u = (1. 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 . 1. 01. 1) est donc v = (11. 00. 01. 0. s3 les sorties des bascules avec l’indice s1 pour la bascule de gauche et s2 pour la bascule du milieu. 01. 11) Une autre façon de calculer la sortie du système est d’utiliser la transformée en z (2) (z) (1) (z) pour calculer les deux fonctions de transfert VU (z) et VU (z) . 0.1 La séquence complète de sortie en réponse à u = (1. L’analyse du circuit est donné par la table 6. s2 . 1. 00. 1.1 – Un exemple de code convolutionnel (2. 1. Dedieu v (1) E E E      l T Ef d s d u T E c E d E T E E c T E E T E c T E E c d v (2) rd l ‚ r j E d   d   f © v E Ef F IGURE 6. 1) désignerons respectivement par s1 . 3) Itération 1 2 3 4 5 6 7 8 u 1 0 1 1 1 0 0 0 s1 0 1 0 1 1 1 0 0 s2 0 0 1 0 1 1 1 0 s3 0 0 0 1 0 1 1 1 v (1) 1 0 0 0 0 0 0 1 v (2) 1 1 0 1 1 1 0 1 v 11 01 00 01 01 01 00 11 TABLE 6.

On appellera état du codeur l’ensemble des variables mémoires du codeur. Cette représentation est donnée par le graphe de transition du codeur. 1. 11) 6. 1) En entrelaçant v 1 et v 2 on retrouve finalement v = (11. 0. 0. 1. 0. 1. 1. Dedieu V (2) (z) = 1 + z −1 + z −2 + z −3 Soit en développant V (1) (z) = 1 + z −7 Codes polynômiaux cycliques 1 + z −2 + z −3 + z −4 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.1) En effet. 01. 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.3 Longueur de contrainte d’un code convolutionnel On appelle longueur de contrainte le nombre nc = n(m + 1) (6. chaque bit d’information influence les n sorties du codeur pendant m + 1 itérations. 0. 0. 0. 1. 1 Soit le codeur convolutionnel (2. 0. 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.H. Dès lors une table de 8 lignes spécifie de façon exhaustive le comportement du codeur.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. (voir table 6. 1) v 2 = (1. Dans ce diagramme les 1. 01. 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. 6. Or le codeur étant une machine à nombre d’états finis une représentation plus globale et plus fonctionnelle du codeur devrait exister. 0.2). 01. 01.3 spécifie de façon complète le comportement du codeur. Le diagramme de transition de phase de la figure 6. 2) défini par la figure 6. 00. 00.4 Graphe de transition d’un code convolutif Dans l’exemple que nous avons traité jusqu’à présent. TBA1 99 .

m) une information de longueur 1 bit se trouve codée par n bits. les sorties du codeurs se trouvent indiquées lors des transitions d’états .Codes polynômiaux cycliques Ef d s d v 1) d ( H.4. 2) Entrée u 0 1 0 1 0 1 0 1 Etat s1 s2 00 00 01 01 10 10 11 11 Etat suivant u s1 00 10 00 10 01 11 01 11 Sorties v (1) v (2) 00 11 11 00 10 01 01 10 TABLE 6. le codeur reviendra dans son état initial nul. Cependant si l’on considère qu’un bloc de L bits pénétre séquentiellement dans le codeur. Si au début du bloc le codeur était dans son état initial nul. 1. ce bloc est encodé par un code de longueur n(L + m) car n. 1. reprenons l’exemple du 100 TBA1 . au bout du temps (L + m). Pour nous en convaincre. 6.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.1 Remarque fondamentale concernant le codage Lorsque l’on code à l’aide d’un code convolutionnel (n.2 – Exemple de codeur convolutionnel (2. Dedieu E l T d d d u T E c E d E T E E s1 T E T s c 2   d  d © v E f l ' v ( 2) Ef F IGURE 6.2 – Table de fonctionnement du codeur états se trouvent dans les cercles. 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.

H. Dedieu Codes polynômiaux cycliques 1/10 s d d E d d #     © E   11 "! d      d   d 0/01 d d ‚   1/01    d     d   0/10 d#   ‚ d # E E 01 ' ' "! 1/00 "!   d s d     d   ©   d s d   0/11 1/11d d #   d ©   10 d s d   "! d   E d E   © 00 0/00 F IGURE 6.3 – Diagramme de transition de phase TBA1 101 .

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.4 montre l’ensemble des 8 mots codes qui sont générés. 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. 1.3 – Analyse du circuit de la figure 6. 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. Dedieu codeur (2. le codeur est bien revenu dans son état initial. l’état 01 par S1 . 2) associé au circuit de la figure 6. 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 . Itération 1 2 3 4 5 6 7 8 Entrée u 1 0 1 1 1 0 0 0 Etat s2 s3 0 0 0 0 1 0 0 1 1 0 1 1 1 1 0 1 Etat suivant s1 0 1 0 1 1 1 0 0 Sortie v 11 01 00 01 01 01 00 11 s1 0 1 0 1 1 1 0 0 u 1 0 1 1 1 0 0 0 s2 0 0 1 0 1 1 1 0 v (1) v (2) 1 0 0 0 0 0 0 1 1 1 0 1 1 1 0 1 TABLE 6.2 Diagramme en treillis associé à un code convolutionnel Soit un bloc de longueur L que l’on veut encoder à l’aide d’un code convolutionnel (n. l’état 10 par S2 et l’état 11 par S3 . 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.1. 1. Un tel code à 2m = 22 = 4 états. enfin l’arrivée du troisième 1 génère une transition S3 → S3 . 3) de la figure 6.Codes polynômiaux cycliques H. le codeur sera revenu dans son état initial. Décidons de noter l’état 00 par S0 .2. 0.1 en réponse à u = (1. 0. 1.4. 1. Pour illustrer ce qu’est un diagramme treillis reprenons l’exemple du code convolutionnel (2. 1. m). On code ici une information u = (1. 1. Les m = 3 dernières itérations du codeur correspondent à des itérations à entrée nulle. puis l’arrivée du second 1 génère une transition S2 → S3 pour une sortie 01. Considérons maintenant l’encodage de blocs de L = 3 bits. Le diagramme en treillis de la figure 6. 1) 6. au bout de 8 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 . 1) de longueur L = 5. 1.

2)) l’intermédiaire d’un 0 en entrée (10 en sortie).2.4 – Diagramme en treillis associé au circuit de la figure 6. 1. 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 – Codes générés pour des mots de longueur L = 3 par le code convolutionnel (2. 2) associé au circuit de la figure 6.2 (code convolutionnel (2.4. Les m premières itérations correspondent au TBA1 103 .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 .2 6. Mot en entrée du codeur 000 001 010 011 100 101 110 111 Mot en sortie du codeur 00 00 00 00 00 00 00 11 10 11 00 11 10 11 00 00 11 01 01 11 11 10 11 00 00 11 10 00 10 11 11 01 01 11 00 11 01 10 01 11 TABLE 6. Dedieu L = 3 sorties Codes polynômiaux cycliques m = 2 sorties ' E' E   0/00  0/00  E  E  0/00 0/00 0/00E E S E S S0 S0 S0 S0 0 0  Q         Q Q t t t 1/11  1/11 1/11   0/11 t  0/11 t t  0/11       t t  t  t t t S1 S1 S1 tQ Q t      t Q  1/00    t  t  t  0  0       t  t t t  t ” 0/10  ” ” 0/10 t    0/10    s    S2 S2 S2      0/01   0/01       1/01  1/01       ~  ~  E S3 S3  1/10  F IGURE 6.H.4. 1.

Codes polynômiaux cycliques
L=6

H. Dedieu
m=2

'

E '

E 

 0/00 0/00  E  E  E  E  E  E S 0/00 0/00 0/00 0/00 0/00 E S0 E S S0 0/00 0 S0 S0 S0 S0 S0 0 Q               Q 1/11Q 1/11Q 1/11Q 1/11Q 1/11  1/11 0/11 t 0/11 t  0/11 t t  0/11 t  0/11  0/11 tt        t t t t t         t   t  t  t t t S1 S1 S1 S1 S1 S1 t t tQ tQ t t Q Q 1/00Q 1/00Q  t 1/00 1/00       t      t   t t t 0   0  0  0 0            0/10  t t    t 0/10 t   ” ”   s” t   t   t  s” t 0/10 ” 0/10 t 0/10 t 0/10 t  t ”  s  s  S2  S2 S2 S2  S2 S2                        1/01  1/01  0/01 1/01  1/01      1/01 0/01  0/01  0/01 ~ 0/01 ~    ~ ~ ~  E S3 E S3 E S3 E S3 S3 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

E '

m=2

E 

 0/00 0/00  E  E  E  E  E  E S 0/00 0/00 0/00 0/00 0/00 E S0 E S S0 0/00 0 S0 S0 S0 S0 S0 0 3  Q          Q  1/11 1/11Q 1/11Q 1/11   0/11 t    0/11 t Q t 0/11 1/11 0/11 t 0/11  0/11 tt  J1/11       t t t t        J  t   t  t  t t S1 S1 J S1 S1 S1 S1 t  t t  t t   Q Z J 1/00Q 3 1/00Q  t 1/00Q 1/00Q  t 
 0 Z t  t t    0  0  0 J     0/10  t   t   t  ” 0/10 ” 0/10 ~ 0/10   

t   t ” ” t ”   tZZ  t 0/10 t 0/10 t J  J ^  s   s s  S2
S2 S2 S2  S2 S2         
 Z     Z  
    1/01  Z 0/01 1/01  1/01
  1/01 0/01  1/01 0/01  0/01 Z ~ 0/01 ~    ~ ~ ~  - S3 - S3 E S3 E S3 S3    1/10 1/10  1/10 1/10

F IGURE 6.6 – Un chemin particulier pour le diagramme en treillis associé au circuit 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 succession 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 000 001 010 011 100 101 110 111 Mot en sortie du codeur 00 00 00 00 00 00 00 11 10 11 00 11 10 11 00 00 11 01 01 11 11 10 11 00 00 11 10 00 10 11 11 01 01 11 00 11 01 10 01 11 d 5 5 6 5 6 6 7

TABLE 6.5 – Codes générés pour des mots de longueur L = 3 par le code convolutionnel (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

13. Etape 3. Dans le cas contraire on arrête. 2) associé au circuit de la figure 6. 3. Ceci est montré à la figure 6. 00 01 11) = 1 + d(00.7. 1. Pour chaque état Si à l’itération j il existe donc deux chemins. cette distance donnerait 3.H.12.8.2 . 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. Dedieu L=3 Codes polynômiaux cycliques m=2 ' E' E 1  0/00  E  0/00 E S S0 S0 0    t t t 1/11 t 1/11 t t 4 t t S1 Q t   t  0/10 t t   t t t ” ” t      S2 1  S2  1/01   ~ S3 2  F IGURE 6. on trouve un mot avant codage égal à 001. TBA1 107 . on note la paire de distances associée à chaque chemin menant à Si . on se place d’abord à l’itération m (m = 2) entre 00 00 00 et le message reçu 00 01 11. L’ensemble de l’étape 2 est représenté aux figures 6. Comme il y a deux façons d’accéder à chaque état Si . l’un des deux est sous-optimal puisqu’il montre une distance supérieure . 11) = 3. chaque état se trouve maintenant associé à une seule métrique. A l’étape 3 il ne reste plus qu’un chemin optimal représenté à la figure 6. Ceci est décrit par la figure 6.10 à 6. 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. Ce chemin indique un mot code corrigé 00 00 11 10 11. En effet d(00 00 00.7 – Décodage de Viterbi pour le codeur (2. on peut donc élaguer le treillis en supprimant pour chaque état le chemin qui est sous-optimal.9. Tant que j < L + m on revient à l’étape 2.

on se place à l’itération j = m + 1 = 3 bits reçus 00 '  L=3 01 S0 11 m=2 E' E     t t t 1/11 1/11 t t 1/11 t t t 4 2  t t t S1 t S1 Q t t     t Q   t  t t  t t t   ” ” t  0/10 t 0/10 ” 1 t     1/01 S0 0/00 E  1 3  0/00 E S 0/00 E S0 0 S2 1     1/01  2     ~  ~  S2 S2 S3 2   S3 F IGURE 6. 1.9 – Décodage de Viterbi pour le codeur (2. on élague les chemins sous-optimaux.8 – Décodage de Viterbi pour le codeur (2. 2) associé au circuit de la figure 6.2 .Codes polynômiaux cycliques H. 1. Dedieu bits reçus 00 ' L=3 01 11 m=2 E' E 1  0/00 E 0/00  E  3  0/00 E S S0 S0 S0 0   4  Q  t t t 1/11 0/11 t 1/11 t 1/11 t t t t 4 2  b & t t t & S1 S1 Q t   3  t & ¡ t ! 1/00 0/10 & t  t & t ¡  t t t   t ” & ” t  1t 0/10 ¡¡ ” 1  ~  S2 S2 S2 ¡ 6     ¡    ¡  0/01 2 ¡  ~ 1/01    ~ E S3 S3 ¡ 2   1/103 F IGURE 6. 2) associé au circuit de la figure 6. on se place à l’itération j = m + 1 = 3.2 . 108 TBA1 .

Dedieu Codes polynômiaux cycliques bits reçus 00 '  L=3 01 11 E' 11 m=2 E 1 3  5 0/00 0/00 E S 0/00 E S0 E S S0 S0 0 0/11 0      Q   t t t 1/11  2 1/11 t t 1/11  t   t t 4 2  t t t S1 2 S1 t S1  Q Q t       t Q t  1/00 ¡¡ 3 t  !  t t    t t t  ¡   ” ” t 0/10 1t 0/10 t 1  ” 0/10 ¡ S2 S2 S2 ¡ 0/00 E      1/01    ¡  1/01 ¡  2 0/01 ¡     ~  ~  S3 S3 ¡ 2   F IGURE 6. 2) associé au circuit de la figure 6. on se place à l’itération j = 4. 1.10 – Décodage de Viterbi pour le codeur (2.2 . TBA1 109 .H.

bits reçus 00 '  L=3 01 11 E' 11 m=2 11 E 1 3   4  0/00 0/00 E S 0/00 E S0 E S0 S0 S0 S0 0 0/11       Q  Q  t t  t 1/11  2 1/11  2 t t 1/11  t    t t 4 2   0/11 t t t S1 2 S1 t S1 0/00 E   Q Q t       t Q t  t t   t   t t t   ” t ”  0/10 t 0/10 t 1  ” 0/10     1/01 S2 1     1/01  2     ~  ~  S2 S2 S3 2   S3 F IGURE 6.12 – Décodage de Viterbi pour le codeur (2. Dedieu bits reçus 00 '  L=3 01 S0 11 E' 11 m=2 E 1 3   0/00 E S 0/00 E S0 S 0 0/11 0      Q   t t t 1/11  2 1/11 t 1/11 t  t   t t 4 2  t t t 2 S1 S1 t S1  Q S0 0/00 E  Q t t      Q t  t   t t   t t t   ” t t ” 1   0/10 ” 0/10 0/10 t     1/01  S2 1     1/01  2     ~  ~  S2 S2 S3 2   S3 F IGURE 6. 2) associé au circuit de la figure 6. 2) associé au circuit de la figure 6. on se place à l’itération j = 4 après élagage des chemins sous-optimaux. on se place à l’itération j = L + m = 5.2 . 1. 110 TBA1 . 1.2 .11 – Décodage de Viterbi pour le codeur (2.Codes polynômiaux cycliques H.

1. on se place à l’itération j = L + m = 5.13 – Décodage de Viterbi pour le codeur (2. 2) associé au circuit de la figure 6.H. 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 .2 . Dedieu Codes polynômiaux cycliques bits reçus 00 '  L=3 01 11 E' 11 m=2 11 E 1 3    0/000/00 E S0 S0 S0 S0 S0 S0 0/11         Q 3   t t J 1/11  2  2 1/11 t 1/11   t J   0/11  t 4 2  t J t S1 2 S1 S1 t J 0/00  Q t       Q t 3  J   t t  J    t  t J   ” 0/10 1t 0/10 J 1 0/10  ^ t ”     1/01 S2     1/01  2     ~  ~  S2 S2 S3 2   S3 F IGURE 6.

2m chacun des états Sl possède 2 métriques associées (j) à 2 chemins d’accès permettant de visiter Sl . On calcule par récurrence les 2 distances entres les 2 chemins possibles et la séquence des n. Pour ce faire. m) On énonce maintenant le fonctionnement de l’algorithme de Viterbi dans le cas général.1 Etape 1 On se place à l’itération j = m où les 2m états sont "visités" par un seul chemin. . u2 .5. 6. Dedieu 6. On supprime alors pour chaque état le chemin d’accès sous-optimal qui possède la métrique la plus grande. 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.5. Pour chaque état. Pour l = 1 . Cette algorithme se décompose en 3 étapes principales.2 Algorithme de Viterbi pour un codeur (n.5. . s’il existe une transition possible entre un état k à l’itération j − 1 et un état l à l’itération j.m premiers bits reçus. il existe maintenant deux chemins d’accès. 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.3 Décodage selon le principe du maximum de vraisemblance On suppose ici aussi qu’on utilise un codeur (n. 6. 6. m) et qu’on code une séquence de L bits u = u0 . u1 . 1. 1.Codes polynômiaux cycliques H. .j premiers bits reçus. rj ) (6.m bits reçus.5. . . . uL−1 112 TBA1 .3 Etape 3 On teste si j = L + m et on revient à l’étape 2 tant que cela n’est pas vrai. On mémorise cette distance pour (m) chaque état.2.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.5.2. on calcule (j) (j−1) dl = dk + d(ok l .2. 6. Pour chaque état à cette itération on indique la distance entre le chemin accédant à l’état et la séquence des n. j → j + 1.2 Etape 2 On accroît j d’une unité.n. 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 .

d’autre part r étant reçu p(r) est une constante qui n’intervient pas dans la maximisation de l’équation (6. .3) Pour une source à entropie maximale. On veut donc minimiser la probabilité de se tromper c’est-à-dire que l’on cherchera v qui minimise ˆ p(ˆ = v|r) v Ceci revient donc à maximiser la probabilité p(ˆ = v|r) v Or ceci revient encore à trouver le v qui parmi tous les v possibles va maximiser ˆ p(v|r) = p(r|v)p(v) p(r) (6. de trouver le message émis v le plus probable 2 .3) revient à trouver le v qui parmi ˆ tous les v possibles va maximiser p(r|v) (6. Dedieu Codes polynômiaux cycliques en une séquence de longueur N = n(L + m) de la forme v = v0 . . Lorsque les vi sont binaires et les ri sur Q niveaux.) Dès lors le problème 2. r2 . Il s’ensuit que maximiser (6. TBA1 113 . Les v et les u étant en correspondance bi-univoque. v1 . . . la modélisation du canal se fait par l’intermédiaire d’une table p(ri |vi ) à 2 lignes et Q colonnes. trouver le v le plus probable est équivalent à trouver le u le plus probable. On se pose maintenant la question de savoir. On dispose alors d’une séquence r de la forme r = r0 .4) Si l’on suppose que le canal est un canal qui superpose au signal vi un bruit blanc Gaussien on a N −1 i=0 p(r|v) = p(ri |vi ) (6. . r1 . 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. . étant donné un message reçu r.H. 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 .5) (Cette dernière équation est valide car le canal et sans mémoire et que les échantillons de bruits sont indépendants entre eux par hypothèse.3). p(v) est la même pour tous les v. v2 . . .

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. 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.5) est dit décodeur à maximum de vraisemblance .2) sera remplacé par l’équation dl = dk (j) (j−1) + log(p(rj |vj = ok l )) (6.14. Dedieu de trouver le v le plus probable revient à celui de trouver les vi i = 0 .Codes polynômiaux cycliques H. 1. .5). l’algorithme de Viterbi s’applique de façon identique. 1. Pour des raisons de commodité d’implémentation. Ceci équivalait à faire l’hypothèse implicite que le canal avait certaines bonnes propriétés.e N −1 log (p(r|v)) = i=0 log p(ri |vi ) (6. 2) 1.5.7) Mis à part ce changement de métrique.5) enfin d’échanger une somme par un produit. Cette méthode est appelée méthode du maximum de vraisemblance et un décodeur qui maximise (6. on choisit souvent de maximiser le logarithme de la fonction (6.6) 6. 114 y1 y2 y3 TBA1 . C’est-à-dire que la récurrence ( 6. par exemple q’il était binaire symétrique.14 – Codeur convolutionnel (3. . + + + + x D D + + F IGURE 6. i. 2) est donné à la Figure 6. Problème 1 Un codeur convolutionnel de type (3. N − 1 ˆ ˆ qui vont maximiser (6. Donner la table de fonctionnement du codeur convolutionnel.

En déduire la diagramme de transistion d’états. 2) qui est décrit par la Figure 6. 3.H.15. Soit une séquence d’entrée de la forme 101010000011 trouver la réponse du codeur. Quelle séquence de sortie correspondra à la séquence d’entrée 0101100 4. 6. 3.15 – Figure associée au problème 2 Pour un tel codeur 1. corrigez ce message si nécessaire avec un algorithme de Viterbi et trouvez le mot d’information le plus probable lui correspondant. v(1) + + u T T + + + v(2) + + v(3) F IGURE 6. 1. Dedieu Codes polynômiaux cycliques 2.6 Exercices Problème 2 Soit le codeur convolutionnel (3. On reçoit le message 111010001011011111011. 2. Trouver le graphe de transition de phase du codeur. TBA1 115 . Trouver la table de fonctionnement du codeur.

Dedieu + + u T T + + + v(2) F IGURE 6.Codes polynômiaux cycliques v(1) H.16 – Figure associée au problème 3 Problème 3 Soit le codeur convolutionnel (2. Parcourez le diagramme en treillis pour le message d’entrée 110 et donnez la mot en sortie du codeur. 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). Trouver sa table de fonctionnement. 1. 4. 3. 5. Décodez cette séquence à l’aide d’un algorithme de Viterbi et donnez la séquence d’entrée la plus plausible. Pour un tel codeur 1. Sachant que vous recevez une séquence (éventuellement entachée d’une erreur) de la forme 0011111100 encodée à l’aide du codeur de la Figure 3.16. 116 TBA1 . 2) qui est décrit par la Figure 6. 2. Trouver le graphe de transition de phase du codeur.

. Exercice 5 (PSK) . . Exercice 3 (PSK) . 118 Technique par saut de phase . . . . .8 7. . . . . . . . . . .2. . . . . . . Détection optimale de signaux QPSK . .16 Technique par saut de phase binaire (BPSK) . . . . Démodulation optimale (BPSK) . . . .10 7. . . . . . . .2. .2 Introduction .13 7. . . . . . . . . . . . . . . .2. . . . .2. . . . . .2. . . . . . . . . .2. . . . . Exercice 1 (PSK) . Technique par saut de phase quadriphase (QPSK) . . . . . .3 7. . . . . . . . Exemple de construction de signaux QPSK .6 7. . . . . . . . . . .5 7. . .11 7. . . . .9 7. . .2. . . . . .2. .2. . . . . . . . .2. . . . . . . . . . . . . . . . . . . . .2. .1 7. . .2. . . . . . . . . . . . . . . . . . . 118 7. . . . . . . .7 7. . . Génération de signaux QPSK . . Probabilité d’erreur des systèmes QPSK . . . . . Occupation spectrale d’une modulation QPSK . . . . .4 7. .7 Modulations numériques CONTENU 7. . . . . . . . . .2. . . . Génération d’une modulation BPSK . . Exercice 4 (ASK) . . Exercice 2 (PSK) . .2.2. . . . 117 . Occupation spectrale d’une modulation BPSK .14 7. .2 7. . . . . . . . . . .15 7. .12 7. . . 118 119 121 125 125 128 130 132 133 135 136 138 138 138 139 139 Résumé c 2010 HEIG-VD.2. . . . Probabilité d’erreur avec un système BPSK en présence de bruit blanc Gaussien additif . . . . . . . . .1 7. . . . . .

(7.Modulations numériques H.(FSK) Frequency Shift Keying). 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. le signal associé au ”0” sera défini par s0 (t) = 118 2Eb cos(2πfc t) Tb 0 ≤ t < Tb .(ASK) Amplitude Shift Keying). 2. Soit Eb l’énergie d’un bit durant un temps Tb .1) TBA1 . on module le signal porteur par un saut de phase (0 ou π). 3. Soit on modifie l’amplitude d’une porteuse en fonction du bit ou du symbole à transmettre (modulation par saut d’amplitude .1 Technique par saut de phase binaire (BPSK) Dans cette technique (Binary Phase Shift Keying). 7. consommation en bande passante et efficacité spectrale. 1. une paire de signaux s0 (t) et s1 (t) est utilisée afin de représenter les bits 0 ou 1. 7. Nous serons particulièrement intéressés à leur probabilité d’erreur.2. Ces trois termes seront définis plus avant.(PSK) Phase Shift Keying). Ces trois façons de moduler peuvent être interprétées comme des cas particuliers des modulations d’amplitude.1 Introduction On s’est intéressé jusqu’à présent des transmissions numériques en bande de base. Cette manière de moduler les signaux numériques correspond au plus grand nombre d’applications. Notons que dans de nombreux on utilise en fait des combinaisons de ces trois méthodes. de phase et de fréquence. Il y a trois façons de procéder pour ces modulations numériques. De façon plus précise.2 Technique par saut de phase On va étudier ici les méthodes au saut de phase soit binaire (BPSK). Soit on modifie la phase de la porteuse en fonction du bit ou du symbole à transmettre (modulation par saut de phase . soit quaternaire (QPSK) ainsi que leurs variantes. Dedieu 7. Soit on modifie la fréquence de la porteuse en fonction du bit ou du symbole à transmettre (modulation par saut de fréquence .

(7.5 0 −0.5 0 −0.5 −1 1 Saut de phase 0.5 −1 1 Saut de fréquence 0.1 – Exemple de modulation du train de bits [0. comme s1 (t) = −s0 (t). (7.5 −1 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 Modulations numériques 5 6 5 6 5 6 F IGURE 7.2. 1. 0] selon une modulation d’amplitude.H. 1. 1. de phase ou de fréquence. le signal associé au ”1” s’écrira quant à lui s1 (t) = 2Eb 2Eb cos(2πfc t + π) = − cos(2πfc t) = −s0 (t) Tb Tb 0 ≤ t < Tb .3) est vérifiée.3) Si l’équation (7.1) et (7. on a bien sûr TBA1 119 .2) étant déphasés de π sont appelés signaux antipodaux. 7. 0. Dedieu 1 Saut d amplitude 0.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) s0 (t) φ0 (t) = K0 . la fréquence de la porteuse est choisie de telle manière que fc = nb T où nc est un nombre entier. Les deux signaux sinusoïdaux s0 (t) et s1 (t) tels que définis en (7.2) Afin d’assurer qu’à chaque bit transmis est associé un nombre entier de périodes c de la porteuse.5 0 −0.

Une fonction à énergie unitaire sur un intervalle 2 de temps Tb doit avoir une amplitude Tb . Que vaut K0 ? On a.5 représente l’énergie de x(t) durant le temps Tb . Tb 0 s0(t) s1(t) E E b b 2 cos(2 f t) 0 Tb F IGURE 7.7) K0 = s0 (t).3.Modulations numériques H. s1 (t)) avec un point√ vaut + Eb (resp.4) avec K0 le plus grand possible afin que la discrimination soit la meilleure possible. 120 TBA1 . s0 (t) 0 ≤ t < Tb (resp.6) 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. le √ apparaîtra en sortie + Eb ou − Eb après un temps Tb . La qui coordonnée du "point de message" est donc ± Eb .2 – Suivant√ signal s0 (t) ou s1 (t) appliqué à l’entrée du démodulateur.2.) L’une des façons de maximiser K0 est de prendre une fonction φ0 (t) proportionnelle à s0 (t) et donc sinusoïdale.5) (Remarquons que lorsque x(t) est égal à y(t).y(t)dt (7.φ0 (t)dt = 2 cos2 (2πfc t)dt = Eb Tb 0 0 L’ensemble de l’opération de démodulation est schématisé à la Figure 7. 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. √ Tb Eb Tb (7. L’ensemble de l’opération de démodulation est schématisée à la Figure 7. (7. Dedieu s1 (t) φ0 (t) = −K0 . l’équation 7. ainsi on définit le produit scalaire par x(t) y(t) = Tb 0 x(t). la fonction φ0 (t) vaut donc φ0 (t) = 2 cos(2πfc t) Tb (7. L’opération de détection ou démodulation peut être interprétée comme une opération qui effectue une correspondance (mapping) entre √ signal de √ un durée Tb . − Eb ).

H. Dedieu
Frontière de décision

Modulations numériques

E

b

E

b

2Eb
T b

2Eb
T b

s1(t)

s0(t)

-

2Eb
T b

0

T

b

2Eb
T b

0

T

b

F IGURE 7.3 – Suivant le signal s0 (t) ou√1 (t) appliqué à l’entrée du démodulateur, s √ apparaîtra dans un cas idéal en sortie + Eb ou − Eb après un temps Tb . En pratique, 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 N0 et de moyenne nulle 2 se superpose à la détection optimale, les signaux obtenus en sortie du détecteur sont √ 2 des signaux aléatoires de moyenne ± Eb et de variance σb = N0 . Ainsi lorsque 2 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 pX0 (x0 |0) = √ 1 1 exp − 2 (x0 − 2σb 2πσb Eb )2 (7.8)

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
plus précise la densité de probabilité est telle que p(x1 ≤ X0 < x0 + dx0 ) = pX0 (x0 |0)dx0

H. Dedieu

(7.9)

De la même manière lorsque l’on envoie un signal s1 (t) à l’entrée du modulateur, on détecte en sortie un nombre aléatoire X1 dont la densité de probabilité est 1 1 exp − 2 (x1 + Eb )2 (7.10) pX1 (x1 |1) = √ 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 Nombres aléatoires détectés à la sortie du démodulateur

3

4

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 p01 =
+∞ 0

pX1 (x1 |1)dx1

(7.11)

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 p01 =
2 soit en tenant de σb = +∞ 0 N0 , 2 +∞ 0

1 1 exp − 2 (x1 + 2σb 2πσb

Eb )2 dx1 ,

(7.12)

p01 = En posant z =

1 1 exp − (x1 + N0 πN0
√1 dx1 , N0

Eb )2 dx1 ,

(7.13)

√1 (x1 + N0

Eb ) et donc dz =

la probabilité d’erreur s’écrit (7.14)

+∞ 1 p01 = √ √ exp −z 2 dz, π 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 erf c(a) = √ π On a donc
+∞ √ a

exp −z 2 dz,

(7.15)

1 p01 = erf c 2

Eb , N0

(7.16) 123

TBA1

17) Si l’on admet une équiprobabilité des "0" et des "1" émis. diminue la probabilité d’erreur.6.Modulations numériques H.5 10 F IGURE 7.18) La probabilité d’erreur d’un système de type BPSK est donnée à la Figure 7. N0 (7. le fait d’accroître Eb .5 0 2.g 10−5 ). Lorsqu’on connaît le niveau de bruit. on trouverait 1 p10 = erf c 2 Eb . N0 (7.6 – Probabilité d’erreur d’un système BPSK 124 TBA1 . la probabilité d’erreur est 1 1 1 peBP SK = p01 + p10 = erf c 2 2 2 Eb . conformément au bon sens qu’à niveau de bruit donnée N0 . et donc d’accroître la discrimination entre les deux messages. Dedieu De manière symétrique si l’on voulait calculer la probabilité de détecter un "1" lorsqu’un "0" est émis. on ajuste si cela est possible l’énergie par bit Eb de façon à pouvoir atteindre une probabilité d’erreur prescrite (e. 10 0 10 −1 10 −2 Pe 10 −3 10 −4 10 −5 10 −6 −5 −2. On observera.5 Eb/No 5 7.

b t Tb Séquence NRZ bipolaire x(t) Séquence BPSK y(t) cos(2 fct) F IGURE 7. le spectre de la séquence est la transformée de Fourier de la fonction d’autocorrélation de cette séquence.5 Occupation spectrale d’une modulation BPSK Il est essentiel maintenant de se poser la question de l’occupation spectrale relative à une modulation BPSK. x(t) 2E b Tb T 2Eb 1. Que vaut maintenant l’occupation spectrale d’une séquence NRZ dont la durée de chaque bit est Tb et donc l’amplitude est ± 2Eb ? Tb Comme la séquence NRZ est une séquence pseudo-aléatoire.1) et (7. on peut les considérer comme résultant d’une mise en forme de type NRZ bipolaire d’amplitude ± 2Eb .7 – Probabilité d’erreur d’un système BPSK 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. Posons A = 2Eb . 1. 0.4 Génération d’une modulation BPSK D’après la forme temporelle des signaux BPSK (Cf. 1. cette mise en forme étant elle-même modulée par une Tb porteuse à fréquence fc . Calculons cette fonction d’autocorrélation..2.. équations (7. D’après la Figure 7. En effet. Tb TBA1 125 . .2)).7. NRZ bipolaire m(t) Message binaire toutes les Tb sec.7.2.H. Dedieu Modulations numériques 7. 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. L’ensemble de l’opération de modulation est schématisée à la Figure 7. à l’occupation spectrale d’une signal NRZ en bande de base.

on trouve. 1) Supposons d’abord que 0 ≥ τ < Tb .21) Tb Tb 3) Supposons maintenant que |τ | > Tb . Dans ce cas. Nous supposerons que les bits successifs sont indépendants et que l’on a équiprobabilité des "1" et des "0". 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. ces polarités se compenseront du fait de l’équiprobabilité des symboles.Modulations numériques H. sin2 (πf Tb ) . Dès lors RX (τ ) = 1 Tb Tb +τ 0 A2 dt = 1 2 Tb +τ τ A [t]0 = A2 [1 + ] si − Tb < τ ≤ 0 (7. x(t) et x(t + τ ) ont la même polarité. x(t) et x(t + τ ). ces polarités se compenseront du fait de l’équiprobabilité des symboles.20) 2) Supposons maintenant que −Tb < τ ≤ 0. RX (τ ) = A2 .24) Après manipulation de cette dernière équation.19) Il y a deux cas à considérer. Dès lors RX (τ ) = 1 Tb Tb τ A2 dt = 1 2 Tb τ A [t]τ = A2 [1 − ] si 0 ≥ τ < Tb Tb Tb (7. peuvent avoir des polarités quelconques à l’instant t puisque x(t) et x(t + τ ) appartiennent à des bits différents. En moyenne. Dedieu RX (τ ) = E[x(t)x(t + τ )] (7.25) soit en remplaçant A par 126 2Eb .22) On peut résumer l’étude de la fonction d’autocorrélation sous la forme de la formule suivante.23) La transformée de Fourier de la fonction d’autocorréaltion s’écrit alors SX (f ) = T. les polarités de x(t) et x(t + τ ) peuvent être quelconques puisqu’elles appartiennent à deux symboles consécutifs indépendants. SX (f ) = A . ou |τ | ≥ Tb . De 0 à τ .[RX (τ )] = 0 −Tb A2 [1+ t ] exp−j2πf t dt+ Tb A2 [1− t ] exp−j2πf t dt Tb (7. soit |τ | < Tb . En moyenne. Tb TBA1 . De Tb + τ à Tb .F. les polarités de x(t) et x(t + τ ) peuvent être quelconques puisqu’elles appartiennent à deux symboles consécutifs indépendants. On s’aperçoit que de 0 à Tb + τ .Tb (πf Tb )2 2 (7. x(t) et x(t + τ ) ont la même polarité.[1 − 0 |τ | ] Tb |τ | < Tb |τ | ≥ Tb Tb 0 (7. On s’aperçoit que de τ à Tb .

26) Ceci correspond à ce que l’on pourrait appeler le spectre BPSK en bande de base. Dedieu Modulations numériques SX (f ) = 2 sin 2Eb (πf Tb ) 2 = 2Eb sinc2 (Tb f ) 2 (πf Tb ) 2 (7.H. Le spectre BPSK réel correspondra à un double décalage tel que donné à la Figure 7.8. TBA1 127 .

4.f 1 2 3 4 5 Spectre BPSK (exemple avec fc=3/Tb) 1 0.5 0 −5 −4 −3 −2 −1 0 Tb. 128 TBA1 .6 0. On peut alors définir le signal QPSK comme 4 4 4 4 étant l’un des quatre signaux suivants si (t) = 2E π cos 2πfc t + (2i − 1) T 4 0≤t<T i = 1 . T est la durée d’un symbole correspondant à l’un des 1 quatre états de phase et fc est un multiple de T . (7. 7. . les deux porteuses étant en quadrature. . Dans la technique QPSK (Quadriphase Phase Shift Keying).2. Dedieu 1. .5 1 0.28) Ce jeu d’écriture fait apparaître le signal QPSK comme étant un signal avec une double modulation. (7.8 0. Comme un symbole pourra prendre quatre valeurs. Une façon alternative d’écrire l’équation (7. 3π .27) est 2E π 2E π cos(2πfc t) cos (2i − 1) − sin 2πfc t) sin((2i − 1) T 4 T 4 si (t) = i = 1 . 4. .8 – Spectre d’un signal BPSK (en bande de base) et en bande réelle pour 3 un exemple avec fc = Tb .f 1 2 3 4 5 F IGURE 7.2 0 −5 −4 −3 −2 −1 0 Tb. il sera donc codé sur deux bits. la phase de la porteuse peut prendre l’une des quatre valeurs π .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.27) où E est l’énergie par bit. 5π ou 7π .Modulations numériques Spectre BPSK en bande de base 2 H.4 0.

.32) 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). Il vient φ1 (t) = 2 cos(2πfc t) T φ2 (t) = − 2 sin(2πfc t).H. la correspondance entre le diagramme de l’espace signal et le message est donné à la Figure 7.9 – Diagramme de l’espace signal QPSK. (7. . Ce diagramme est donné à la Figure 7. 2 2 (7.29) Remarquons par ailleurs que φ1 (t) ⊥ φ2 (t) au sens du produit scalaire suivant φ1 (t) φ2 (t) = T 0 φ1 (t)φ2 (t)dt = 0 (7. 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. T (7. 4. . . 4.10.9.28) et (7. 2 Eb 2 Eb 2 Eb 2 1 Eb 2 F IGURE 7. 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 .31) l’ensemble des quatre signaux possibles est alors si (t) = ± E E φ1 (t) + ± φ2 (t) i = 1 .1. TBA1 129 .30) On peut alors d’après (7.29) récrire si (t) sous la forme √ √ π π + Eφ2 (t) sin (2i − 1) 4 4 si (t) = Eφ1 (t) cos (2i − 1) i = 1 .

130 TBA1 . 2 De même lorsque le deuxième bit du symbole (dibit) est "1".11. si le premier bit du symbole est "0" alors le signal sur la voix I est 2 φ1 (t) × − E . On peut noter que le signal QPSK est la somme d’un signal φ1 (t) × ± E 2 et d’un signal φ2 (t) × ± E . Le signal QPSK correspondant au message 2 signal sur la voix Q est φ2 (t) × signal sur la voix Q est φ2 (t) × [01 10 10 00] est donné à la Figure 7.7 Exemple de construction de signaux QPSK Soit par exemple le message [01 10 10 00]. Le premier signal est appelé voix I (pour in-phase) 2 alors que le second est appelé voix Q (pour voix en quadrature). avec le choix de codage la Table 7.Modulations numériques Message 0 0 0 1 1 0 1 1 Coordonnées du Message QPSK − − + + E . comment seront construits les signaux QPSK correspondants à ce message ? Le message est constitué de 4 dibits consécutifs formant 4 symboles à transmettre. si le deuxième bit du symbole est "0" alors le 2 − E . 7.1 – Exemple de codage possible QPSK. 2 E . 2 01 Eb 2 11 Eb 2 Eb 2 1 Eb 2 00 10 F IGURE 7. alors le signal sur la voix I est φ1 (t) × E . alors le E . 2 H.1. On peut aussi noter que lorsque le premier bit du symbole (dibit) est "1". 2 E . Dedieu Phase QPS 5π 4 3π 4 7π 4 π 4 − + − + E 2 E 2 E 2 E 2 TABLE 7. 2 E .2.10 – Correspondance entre le diagramme de l’espace signal QPSK et le message (dibit) avec le codage de la Table 7.1.

5 3 3.5 Voix Q 0 −0.H.5 4 F IGURE 7.5 4 0 0.5 −1 1 0. Dedieu Modulations numériques 1 0.5 1 1.5 2 2.5 1 1.5 2 2.5 4 0 0.5 0 0.5 2 2.5 −1 1.5 3 3.5 0 −0.11 – Exemple de construction de signaux QPSK. TBA1 131 .5 Signal QPSK 1 0.5 Voix I 0 −0.5 1 1.5 3 3.5 −1 −1.

12 sous forme de schéma bloc. Dedieu 7. Les signaux sont maintenus pendant T secondes et sont modulés par les fonctions porteuses φ1 (t) et φ2 (t). T T T E 2 E 2 0 1 1 Séquence binaire 011010 E 2 E 2 Encodeur NRZ bipolaire 1 2 cos(2 fct) T 2 sin(2 fct) T Signal BPSK Démultiplexeur 2 E 2 0 1 1 0 1 0 Tb E 2 T=2Tb 1 T 0 T 0 T F IGURE 7. On s’aperçoit que l’on peut considérer que la séquence binaire est en2 codée par une séquence NRZ bipolaire d’amplitude ± T . Puis un démultiplexeur envoie la valeur échantillonnée de la séquence NRZ cor2 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. L’ensemble de la procédure est présentée à la Figure 7. 132 TBA1 . Les résultats sont enfin sommés pour former le signal QPSK.12 – Diagramme bloc équivalent d’une modulation QPSK.Modulations numériques H.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.2. Chaque bit est de durée T .

34) Multipliant les membres de droite et de gauche de (7.e.34) par φ1 (t) et intégrons de 0 à T . TBA1 133 . Par multiplexage de ces deux composantes on peut retrouver la séquence NRZ bipolaire qui avait été utilisée à la modulation. . 4 (7.2. en utilisant φ2 (t) au lieu de φ1 (t). 2 (7.30). si (t) = √ Eφ1 (t) cos (2i − 1) √ π π + Eφ2 (t) sin (2i − 1) 4 4 i = 1 . 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). on trouverait.33).31) que nous récrivons par commodité de raisonnement. Dedieu Modulations numériques 7.36) De manière similaire. T 0 si (t)φ1 (t)dt = √ E cos (2i − 1) π 4 =± E . i.H. il vient. T 0 si (t)φ1 (t)dt = √ E sin (2i − 1) π 4 =± E . L’ensemble de la démodulation est schématisée à la Figure 7. (7. 2 (7. il vient.35) soit en tenant compte de l’orthogonalité de φ1 (t) et φ2 (t) telle que décrite par l’équation (7. 4. T 0 si (t)φ1 (t)dt = √ E T 0 φ2 (t)dt cos (2i − 1) 1 √ π + E 4 T 0 φ2 (t)φ1 (t)dt sin (2i − 1) π . .37) Autrement dit.33) Partant de l’équation (7. Chacune de ces deux composantes nécessite un calcul qui dure T secondes correspondantes à l’intégration de 0 à T .13.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. T 0 φ2 (t)dt = 1 1 T 0 φ2 (t)dt = 1 2 T 0 φ1 (t)φ2 (t)dt = 1 (7.

E 2 1 0 0 E 2 T T T F IGURE 7. 134 TBA1 .Modulations numériques H. Dedieu T T T E 2 Tb E 2 0 T 0 2 cos(2 fct) T 2 sin(2 fct) T 1 1 E 2 Décision toutes les T sec.13 – Diagramme bloc équivalent d’une démodulation QPSK. E 2 0 1 1 0 1 0 Démultiplexeur Tb=T/2 Décodeur NRZ message binaire 0 1 1 0 1 0 1 si(t) 2 T 0 Décision toutes les T sec.

H.44) On trouverait de même 2 E[w2 ] = N0 2 (7. (7. On aura 2 donc σb = N0 ..40) (7. on trouve à l’instant T où se fait la décision.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. E[w(t)]2 = T 0 T 0 0≤t<T i = 1. On part de l’hypothèse que le signal si (t) reçu est entaché d’un bruit Gaussien 2 de variance σb = N0 .38) xI = soit si (t)φ1 (t)dt + φ1 (t)w(t)dt = cos (2i − 1) π + 4 T 0 φ1 (t)w(t)dt.2. 2 x(t) = si (t) + w(t) où N0 (7.45) 135 TBA1 . w1 = T 0 φ1 (t)w(t)dt w2 = T 0 φ2 (t)w(t)dt (7. Nous comparerons la probabilité d’erreur obtenu pour un même niveau de bruit et pour une même vitesse en bits par secondes. Quelle est la variance de chacun de ces deux bruits ? On a 2 E[w1 ] =E T 0 2 φ1 (t)w(t)dt = T 0 φ2 (t)E[w(t)]2 dt = 1 N0 2 (7. Dedieu Modulations numériques 7.42) Posons pour les bruits entachant xI et xQ .41) xI = ± E + 2 T 0 φ1 (t)w(t)dt De même sur la voie Q. et T = 2Tb où Tb est la durée d’un bit à la fois pour le système 2 BPSK et pour le système QPSK.4 (7..43) Les nombres aléatoires w1 et w2 représentent le bruit de démodulation sur les deux voies. on trouverait. xQ = ± E + 2 T 0 φ2 (t)w(t)dt (7.39) 2 Après démodulation sur la voie I. en sorte que l’on reçoive en fait.

Si les probabilités d’erreurs à niveau de bruit donné et à vitesse de transfert donné sont équivalentes pour un système BPSK et QPSK.49) (7. SQP SK = 4Eb sinc2 (2Tb f ) (7. on choisira toujours une modulation QPSK car elle utilise à peu près deux fois moins de bande. Autrement dit.48) Or cette expression est identique à celle de PeBP SK telle que trouvée en (7. à même niveau de bruit. la bande QPSK est la moitié de la bande BPSK. Chaque voie I ou Q pouvant être assimilée à un 2 système BP SK. entre une modulation BPSK et une modulation QPSK. La Figure 7. on a E 2 La probabilité d’erreur d’un système QPSK est donc Eb = 1 PeQP SK = erf c 2 Eb N0 (7.Modulations numériques H.47) (7.2. Les deux spectres s’additionnant. 7. Chacune de ces voies BPSK a une énergie E par bit et 2 une durée T secondes.11 Occupation spectrale d’une modulation QPSK On sait d’après (7.14 illustre les deux occupations spectrales. 136 TBA1 . la probabilité de faire une erreur sur chaque voie. c’est donc   1 E/2  PeQP SK = erf c  2 N0 Or comme un bit dure la moitié du temps d’un symbole.50) La comparaison de l’étendue spectrale des modulations BPSK et QPSK montre que pour un même Tb . les deux composantes xI et xQ ont une énergie E et sont enta2 chées d’un bruit de variance N0 . quel est l’intérêt d’utiliser un systè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. à même débit binaire.28).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). on trouve E E SQP SK = 2 sinc2 (T f ) + 2 sinc2 (T f ) 2 2 Soit en tenant compte de E = 2Eb et T = 2Tb . c’est-à-dire sur un bit est connue.46) (7. Dedieu En conclusion.

5 0 −4 −3 −2 −1 0 Tb.5 3 2.5 2 1.H.14 – Comparaison des étendues spectrales BPSK et QPSK en bande passante. TBA1 137 . Dedieu Modulations numériques 4 BPSK QPSK Comparaison des spectres BPSK et QPSK en bande de base 3.5 1 0.f 1 2 3 4 F IGURE 7.

2. 2 2 On supposera un bruit de démodulation w(t) Gaussien de variance σb = 1 supposera que fc est un multiple de Tb . 2. un filtre de boucle et un VCO.fc soit complètement éliminée par le filtre de boucle.Modulations numériques H.12 Exercice 1 (PSK) Soit un signal BPSK défini par √ E . Dedieu 7. La sortie du VCO. Montrez que la sortie est proportionnelle à l’entrée si la boucle est verrouillée.2.13 Exercice 2 (PSK) Soit une boucle à verrouillage de phase constituée par un multiplicateur. c’est-à-dire lorsque le système de synchronisation produit un signal r(t) = 2 cos(2πfc t + ψ) Tb N0 . c’est-à-dire si θ(t) = 0. 7. une fois la boucle accrochée s’écrit r(t) = Ac sin(2πfc t + θ(t)) 1.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 .φ(t) 0 ≤ t ≤ Tb (symbole 0) où la fonction φ(t) est telle que : φ(t) = 2 cos(2πfc t) Tb Déterminer la probabilité d’erreur d’un tel système de transmission lorsque l’on effectue une démodulation cohérente avec une erreur de phase ψ.2. Evaluez la sortie du filtre de boucle en supposant que la composante à 2. 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.φ(t) 0 ≤ t ≤ Tb (symbole 1) s(t) = { √ b − Eb . On 7.

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. Le symbole "0" est quant à lui représenté Tb par un signal d’amplitude nulle. Comparez la valeur trouvée à la valeur du rapport signal à bruit Nb que l’on 0 devrait assurer pour maintenir une probabilité d’erreur de 10−4 avec une modulation PSK conventionnelle. En supposant que le bruit de transmission est Gaussien de variance N0 .15 Exercice 4 (ASK) Dans un cas particulier de la modulation par saut d’amplitude (Amplitude Shift Keying). Montrez qu’en présence de bruit additif blanc Gaussien de moyenne nulle et de variance N0 . 2. la probabilité d’erreur est 2 1 Pe = erf c 2 Eb (1 − k 2 ) N0 3. E Déterminez alors le rapport signal à bruit Nb permettant d’assurer une proba0 bilité d’erreur de 10−4 . Dedieu Modulations numériques 1. trouvez la 2 probabilité d’erreur d’un tel système en supposant qu’une détection cohérente soit possible. E 4. Supposez que 10% de la puissance transmise soit dévolue au signal porteur. 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 .H. le symbole "1" est représenté par un signal porteur sinusoïdal d’amplitude 2Eb où Eb est l’énergie du symbole "1". TBA1 139 . 7. On suppose l’équiprobabilité des "1" et des "0". 1.) 2. fc est un multiple de Tb .2. Tracez la forme d’onde QPSK en fonction du temps. Dessinez le diagramme dans l’espace signal. 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) 1 où 0 ≤ t ≤ Tb .

Sign up to vote on this title
UsefulNot useful