c 2010 HEIG-VD.
°
1
Table des matières
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
4 TBA1
TABLE DES MATIÈRES TABLE DES MATIÈRES
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
TBA1 5
TABLE DES MATIÈRES TABLE DES MATIÈRES
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
c 2010 HEIG-VD.
°
1
Introduction H. Dedieu
rique. Dans ce schéma, une source émet un message qui le plus souvent appartient
au monde analogique. Ce message est traité de façon numérique, c’est à dire rem-
placé par une séquence de nombres binaires. On introduit ainsi, par rapport à une
transmission purement analogique de la robustesse car la détection d’un bit 0 ou 1
sera équivalente à la réception à une détection de niveau d’amplitude ou de phase.
Un système numérique est donc par nature, beaucoup plus immune au bruit qu’un
système purement analogique. Le prix à payer est un accroissement en besoin de
bande passante, on peut en effet considérer que lorsqu’on convertit un signal ana-
logique sur 12 bits, on doit en fait traiter 12 signaux élémentaires, certes binaires,
mais 12 signaux au lieu d’un seul. Le premier bloc de traitement que l’on découvre
sur notre émetteur est le bloc de conversion qui échantillonne et quantifie le mes-
sage analogique à transmettre. A la sortie de ce bloc on dispose de train de bits qui
sont séquencés à des fractions de la période d’échantillonnage Te . Par exemple on
disposera d’un bloc de 12 bits toutes les Te s si la conversion se fait sur 12 bits en
virgule fixe. Cette information numérique est ensuite encodée dans un alphabet dit
alphabet de source par le bloc de codage de source.
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
4 TBA1
H. Dedieu Introduction
– le cuivre non torsadé comme pour les réseaux à courants porteurs dit PLC
(Power Line Communication), permettant d’échanger des signaux jusqu’à
20 M Hz de bande,
– les guides d’ondes permettant d’assurer des communications via des ondes
électromagnétiques guidées entre 1 GHz et 100 GHz.
On donne à la figure 1.2, une vue synthétique des différentes bandes occupée par
ces canaux.
Les canaux Hertziens ont été segmentés en un certains nombres de canaux (MF,
HF, VHF, UHF, SHF, EHF) utilisant des longueurs d’ondes variées (λ = c/f ),
– les ondes moyennes (dites MF entre 100 m et 1 km de longueur d’onde
pour des fréquences de l’ordre du M Hz) sont employées par les systèmes
TBA1 5
Introduction H. Dedieu
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.
6 TBA1
H. Dedieu Introduction
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.
8 TBA1
H. Dedieu Introduction
TBA1 9
Introduction H. Dedieu
10 TBA1
H. Dedieu Introduction
fc=2/Te
1.5
0.5
−0.5
−1
−1.5
0 5 10 15 20 25 30 35 40
F IGURE 1.4 – Réponse du canal : la fréquence de coupure du canal est deux fois la
fréquence des bits.
TBA1 11
Introduction H. Dedieu
fc=0.35/Te
1.5
0.5
−0.5
−1
−1.5
0 5 10 15 20 25 30 35 40
F IGURE 1.5 – Réponse du canal : la fréquence de coupure du canal est deux fois la
fréquence des bits.
12 TBA1
H. Dedieu Introduction
fc=2/Te
0.5
amplitude
−0.5
−1
TBA1 13
Introduction H. Dedieu
fc=0.35/Te
0.5
amplitude
−0.5
−1
fc=2/Te
2
1.5
0.5
−0.5
−1
−1.5
−2
0 5 10 15 20 25 30 35 40
F IGURE 1.8 – Réponse du canal : la fréquence de coupure du canal est deux fois la
fréquence des bits mais avec SNR=10 dB.
14 TBA1
H. Dedieu Introduction
fc=2/Te
1.5
0.5
amplitude
−0.5
−1
−1.5
TBA1 15
Introduction H. Dedieu
16 TBA1
H. Dedieu Introduction
TBA1 17
Introduction H. Dedieu
18 TBA1
2
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
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
20 TBA1
H. Dedieu Théorie de l’information
2.2.1 Exemple 1
Soient deux machines échangeant des messages avec des mots qui ont un al-
phabet de 4 symboles, i.e. A, B, C, D. (Remarquons que 2 bits sont nécessaires
pour coder ces 4 symboles). Supposons que ces 4 symboles soient équiprobables
et calculons l’information associée à l’apparition des quatre symboles. La proba-
bilité de chaque symbole étant 14 , l’information associée à leur apparition est donc
I(A) = I(B) = I(C) = I(D) = −log2 ( 14 ) = 2
Evénement E A B C D
1 1 1 1
p(E) 4 4 4 4
I(E) 2 bits 2 bits 2 bits 2 bits
2.2.2 Exemple 2
Supposons maintenant que les symboles ne soient plus équiprobables mais que
leurs probabilités d’apparition se répartissent suivant la loi p(A) = 21 , p(B) = 41 ,
TBA1 21
Théorie de l’information H. Dedieu
Evénement E A B C D
1 1 1 1
p(E) 2 4 8 8
I(E) 1 bits 2 bits 3 bits 3 bits
TABLE 2.2 – Calcul de l’information quand les symboles ne sont plus équipro-
bables
1 1 1 1 14
1+ 2+ 3+ 3= = 1.75 bits
2 4 8 8 8
Ce nombre moyen de bits d’information a été appelé conventionnellement entropie.
Formellement on peut la définir de la manière suivante. Soit une variable aléatoire
X qui se réalise par n événements possibles e1 , e2 , . . . en . Chaque événement ei a
une probabilité d’apparition P (ei ) et une quantité d’information associée I(ei ). La
valeur moyenne de l’information H(X) est donc
n
X n
X
H(X) = P (ei )I(ei ) = − P (ei ) log2 (P (ei )) (2.2)
i=1 i=1
22 TBA1
H. Dedieu Théorie de l’information
Entropie en fonction de p
1
0.9
0.8
0.7
0.6
Entropie
0.5
0.4
0.3
0.2
0.1
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
p=Probabilité d'apparition du symbole A
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
La figure 2.1 montre que l’entropie est maximum quand les symboles sont équi-
probables. L’entropie mesure l’incertitude. Si p est proche de 0 (respectivement 1)
cela veut dire que le symbole B (respectivement A) apparaît avec une fréquence très
grande, on est pratiquement sûr de voir B (respectivement A) se réaliser. En consé-
quence l’incertitude sur l’apparition du symbole est faible et l’entropie est proche
de 0. Par contre lorsque p = 0.5, on a un maximum d’incertitude sur l’apparition
d’un symbole, l’entropie prend sa valeur maximale, i.e. 1 bit.
De façon générale on peut montrer que pour une variable aléatoire discrète X
prenant n valeurs possibles, l’entropie H(X) vérifie les propriétés suivantes
1. H(X) ≥ 0
2. H(X) = 0 si et seulement si X prend une de ses valeurs de façon certaine
3. H(X) ≤ log2 (n)
4. H(X) = log2 (n) si et seulement si X est uniformément distribué.
TBA1 23
Théorie de l’information H. Dedieu
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
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
[X] = [x1 , x2 , . . . xm ]
Un mot du code est une suite finie de l’alphabet X, xi1 , xi2 , . . . , xin . Le code
désignera un suite finie de n mots.
[C] = [c1 , c2 , . . . cn ]
Exemple
Soit [S] = [A, E, I, O] à coder à partir d’un alphabet binaire [X] = [0, 1]. Un
code possible sera 00 pour A, 01 pour E, 10 pour I, 11 pour O. Le code correspon-
dant sera donc [C] = [00, 01, 10, 11]
26 TBA1
H. Dedieu Codage de source
code à décodage unique le plus simple est le code 1, car ses mots sont de même
longueur. Le code 2 est à décodage unique parce que le symbole 0 sert d’indicateur
de fin de mot. Le code 3 est aussi à décodage unique car le 0 sert d’indicateur de
début de mot. Parmi les codes à décodage unique, il existe les codes à décodage
instantané et les codes à décodage non instantané. Soit par exemple à coder le mot
AIE avec le code 2, ceci donne le message 011010 ; au décodage, à la réception du
premier 0 on sait instantanément qu’il s’agit de A qui a été codé, puis à la réception
de 110 on peut immédiatement décoder I, et la réception de 10 on décodera E.
Le code 3 par contre n’est pas instantané. Si l’on code AIE, on obtient cette fois
00110. Observons que la réception du premier 0 ne nous permet pas de décoder
A instantanément, il faut attendre la réception du prochain bit en l’occurrence 0
pour se rendre compte qu’un nouveau symbole débute et que l’on peut décoder le
précédent symbole comme étant A. Le code 3 n’est pas un code instantané. Soir
ci = xi1 , xi2 , xi3 , . . . xin un mot du vocabulaire du code C, on définit comme
préfixes tous les mots plus courts que ci de la forme xi1 , xi2 , xi3 , . . . xim avec
m < n. Un code est à décodage instantané si et seulement si aucun mot du code
ne peut être préfixe d’un autre mot du code.
Ainsi pour le code 2, 0 n’est pas préfixe de 10 ni de 110 ni de 1110, 10 n’est
pas préfixe de 110 ni de 1110 et 110 n’est pas préfixe de 1110. Le code 2 est donc
un code instantané. Par contre pour le code 3, 0 est préfixe de 01, 011, 0111 ; 01 est
préfixe de 011 et 0111, 011 est préfixe de 0111. Par conséquent le code 3 n’est pas
un code instantané.
Un code instantané est un code à décodage unique, mais la réciproque n’est pas
vraie.
TBA1 27
Codage de source H. Dedieu
où les pi sont les probabilités des symboles si représentés par des mots ci de lon-
gueur li .
Exemple
Solution
Nous avons n = 5 et m = 2 et
31
2−1 + 2−2 + 2−3 + 2−4 + 2−5 = <1
32
Dès lors par l’équation (3.2) il existe un code instantané. Par exemple 0, 10, 110,
1110, 11110.
28 TBA1
H. Dedieu Codage de source
3.1.6.1 Commentaire
La capacité du code X est la valeur maximale de l’entropie des symboles du
code. On a vu que l’entropie était maximale lorsque les m symboles étaient équi-
probables, et dans ce cas l’entropie vaut log 2(m). Pour un alphabet de code binaire
C = 1.
On appelle efficacité η (ou rendement) du code, le rapport entre la longueur
moyenne minimale et la longueur moyenne d’un mot du code.
¯lmin
η= ¯l (3.4)
Soit
¯l = H(S) (3.6)
H(X)
Or on vient de voir que H(X) prenait sa valeur maximale lorsque H(X) = log 2(m),
par conséquent la valeur minimum de ¯l sera
ρ=1−η (3.9)
Exemple
Considérons une source
h dont l’alphabeti [S] = [A, , B , C , D] et les probabili-
1 1 1 1
tés associées sont [P ] = 2 , , 4 , 8 , 8 . L’entropie de la source est
4
X −1 1 1 1 7
H(S) = − pi log 2(pi ) = (−1) − (−2) − (−3) − (−3) =
i=1 2 4 8 8 4
Prenons maintenant un alphabet binaire [X] = [0, 1] et supposons que l’on utilise
le codage suivant
TBA1 29
Codage de source H. Dedieu
Symbole A B C D
Code 00 01 10 11
1 1 1 1
Probabilité 2 4 8 8
Symbole A B C D
Code 0 10 110 111
1 1 1 1
Probabilité 2 4 8 8
30 TBA1
H. Dedieu Codage de source
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
s1 −→ 00
s2 −→ 01
s3 −→ 100
s4 −→ 101
s5 −→ 1100
s6 −→ 11100
(3.13)
TBA1 31
Codage de source H. Dedieu
l1 ≤ l2 ≤ l3 . . . ≤ ln−1 ≤ ln (3.15)
Remarquons, que si l’ordre n’était pas respecté (par ex. l1 est attribué à s3 et l3
est attribué à s1 ) alors ¯l) ne peut qu’augmenter (dans le cas particulier présenté
p(s1 )l3 + p(s3 )l1 ≥ p(s1 )l1 + p(s3 )l3 ).
D’autre part pour arriver au codage optimal, il faut que les deux dernières lon-
gueurs soient égales, i.e.
ln−1 = ln (3.16)
En effet si l’on suppose que ln = ln−1 + 1, alors il existe un seul mot de longueur
ln . Si on élimine le dernier bit, le mot à ln−1 bits obtenu est préfixe de sn et par
conséquent, il ne peut être attribué qu’à sn et pas sn−1 ( pour la raison que l’on
désire construire un code à décodage instantané). Il s’ensuit que le ln ième bit est
superflu et ne fait qu’accroître ¯l. Un code optimal est donc tel que ln = ln−1 .
Le codage d’Huffman est basé sur l’idée suivante. On range les symboles sui-
vant l’ordre décroissant des probabilités. Puis on rassemble les symboles sn et sn−1
(de probabilités les plus faibles) en un seul symbole de probabilité pn + pn−1 en
sorte que l’on ait maintenant un alphabet de n − 1 symboles. On ordonne à nou-
veau les symboles de ce nouvel alphabet et on réunit les deux symboles ayant les
plus faibles probabilités en un seul symbole dont la probabilité est la somme des
probabilités d’apparition des deux symboles. On procède ainsi récursivement jus-
qu’à ce qu’il ne reste que deux symboles. On code l’un 0 et l’autre 1, puis on revient
en arrière et on code chaque paire de symboles avant rassemblement en 0 et 1. Afin
de comprendre le codage d’Huffman, le mieux est d’utiliser un exemple. Repre-
nons l’exemple qui avait été utilisé pour le codage de Shannon-Fanno. Soit [S] un
alphabet à 6 symboles [S] = [s1 , s2 , s3 , s4 , s5 , s6 ] tel que les probabilités d’ap-
parition des symboles soient [P ] = [0.30, 0.25, 0.15, 0.15, 0.10, 0.05]. Trouvons
le codage d’Huffman d’un tel alphabet. Pour ce faire construisons l’arbre de la fi-
gure 3.1. Après construction de l’arbre et en procédant de la droite vers la gauche
on trouve les codages des symboles selon les lois s1 → 00, s2 → 10, s3 → 11,
32 TBA1
H. Dedieu Codage de source
0.30 0.30
s1
@ (0) 0.60
@ (0)
0.30 ¡¡(1)
0.25 0.25
s2 (0)
@ 0.40
@ (1)
0.15 0.15 ¡¡(1)
s3
0.15
s4
@ (0)
@
0.10 @
s5 ¡
@(0) 0.15 ¡
@ ¡ (1)
0.05 ¡
s6 ¡(1)
TBA1 33
Codage de source H. Dedieu
34 TBA1
H. Dedieu Codage de source
TABLE 3.4 – Constitution du mot du dictionnaire par analyse itérative des sé-
quences les plus courtes non encore rencontrées
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
3.5 Exercices
Exercice 3.5.1
Soit p la probabilité d’un événement, tracer la valeur de la quantité d’informa-
tion relative à l’événement en fonction de p pour 0 ≤ p ≤ 1.
Exercice 3.5.2
Une source émet aléatoirement un symbole parmi quatre symboles possibles.
Ces quatre symboles ont des probabilités d’occurrence telles que p0 = 0.4, p1 =
0.3, p2 = 0.2 et p3 = 0.1 et sont statistiquement indépendants.
1. Calculer l’information associée à l’émission de chacun de ces 4 symboles.
36 TBA1
H. Dedieu Codage de source
Exercice 3.5.3
Considérons une source sans mémoire (les symboles émis sont statistiquement
indépendants) dont l’alphabet est constitué par K symboles équiprobables.
1. Quelle est le meilleur codage possible pour une telle source, à longueur fixe
ou variable ? Pourquoi ?
2. Quelle condition doit satisfaire K pour que l’efficacité du codage soit maxi-
male ?
Exercice 3.5.4
Considérez les 4 codes listés dans la table suivante :
Symbole Code I Code II Code III Code IV
s0 0 0 0 00
s1 10 01 01 01
s2 110 001 011 10
s3 1110 0010 110 110
s4 1111 0011 111 111
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
TBA1 37
Codage de source H. Dedieu
Exercice 3.5.6
Une source discrète sans mémoire a un alphabet de 7 symboles dont les proba-
bilités d’apparition sont décrites dans la table suivante :
Symbole s0 s1 s2 s3 s4 s5 s6
Probabilité 1/4 1/4 1/8 1/8 1/8 1/16 1/16
Exercice 3.5.7
Considérez une source discrète sans mémoire avec un alphabet {s0 , s1 , s2 }
dont les probabilités d’apparition sont respectivement {0.7, 0.15,0.15} . Appliquez
le codage d’Huffman à cette source et montrez que la longueur moyenne du code
est 1.3 bits/symbole.
Exercice 3.5.8
En considérant la figure 3.2, donnez les codes associés aux symboles A, B, C,
D, E, F, G.
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
Q(−5) = Q(−3) = −4
Q(−1) = Q(0) = Q(1) = 0
Q(3) = Q(5) = 4
trouver l’entropie de la source quantifiée.
3. Proposer un codage optimal de cette source quantifiée.
Exercice 3.5.12
Une source sans mémoire émet des symboles a1 , a2 , a3 , a4 avec des probabi-
lités correspondantes p1 = p2 = 0.3365 et p3 = p4 = 0.1635.
1. Trouver l’entropie de la source.
2. Trouver un code de Huffman pour cette source.
3. Calculer la longueur moyenne du code obtenu.
4. Calculer le rendement du code obtenu.
TBA1 39
Codage de source H. Dedieu
Exercice 3.5.13
Une source sans mémoire a un alphabet de 5 symboles S1 , S2 , S3 , S4 et S5 .
Ces cinq symboles sont équiprobables. Evaluez le rendement d’un code binaire de
longueur constante dans les trois cas suivants :
1. On code chaque symbole.
2. On code des paires de symboles.
3. On code des successions de trois symboles.
Exercice 3.5.14
Une source sans mémoire émet des symboles S1 , S2 , S3 , S4 avec des probabili-
tés p1 = 0.5, p2 = 0.25, p3 = 0.125 et p4 = 0.125.
1. Coder chaque symbole avec un code de longueur fixe et calculer le rendement
du code.
2. Trouver un code à décodage instantané de rendement 100%.
Exercice 3.5.15
Le schéma de la Figure 1 montre un schéma d’automate de Markov. Cet auto-
mate produit un symbole toutes les T s., ce symbole peut être s0 ou s1 . On lit le
schéma de la Figure 3.3 de la manière suivante ; si s0 a été produit à l’instant k.T ,
la probabilité d’obtenir un nouveau s0 à l’instant (k + 1).T est 1/4, alors que la
probabilité d’obtenir s1 à (k + 1).T est alors 3/4. (De tels automates sont utilisés
pour modéliser la production de parole.). On observera qu’une tel automate produit
des données qui sont dépendantes dans le temps. En supposant que l’on code des
séquences de deux symboles consécutifs :
1. Calculer l’entropie de la source constituée par l’automate.
2. Proposer un codage de Huffman des séquences de deux symboles.
3. Calculer l’efficacité du code ainsi créé.
Exercice 3.5.16
On considère une source S1 sans mémoire délivrant des symboles {s0 , s1 , s2 , s3 }
avec des probabilités respectives 1/4, 1/2, 1/16, 3/16. D’autre part on considère
une source S2 sans mémoire délivrant des symboles {t0 , t1 , t2 , t3 } avec des pro-
babilités respectives 1/8, 1/32, 1/64, 53/64. On considère ensuite une source S3
qui délivre aléatoirement soit un symbole de S1 , soit un symbole de S2 à chaque
coup d’horloge ; la probabilité que S1 soit choisie est de 3/4.
40 TBA1
H. Dedieu Codage de source
1|4 3|4
3|4
s0 s1
1|4
F IGURE 3.3 – Automate de Markov
Exercice 3.5.17
Soit une source S1 sans mémoire délivrant des symboles {s0 , s1 , s2 , s3 , s4 }
avec des probabilités respectives 1/16, 1/16, 1/8, 1/4, 1/2. Sans faire appel à
un graphe de type Huffman, proposer un code à décodage instantané qui ait une
efficacité de 100%. Justifier vos choix et expliquez bien pourquoi l’efficacité est de
100%.
Exercice 3.5.18
On considère la séquence suivante que l’on veut encoder par l’algorithme de
Lempel-Ziv.
010110111011110111110111111
On considère que 0 est le premier mot code et que 1 est le second mot code. On
considère d’autre part que les mots code sont numérotés à partir de 1.
1. Calculer la séquence codée par l’algorithme de Lempel-Ziv.
2. Calculer le taux de compression obtenu.
3. Vérifiez que la séquence obtenue est bien juste en procédant au décodage de
la séquence.
TBA1 41
Codage de source H. Dedieu
42 TBA1
4
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
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.1.1 Exemple
L L L L
Soit u = (1, 0, 1, 0, 1) et v = (1, 1, 1, 1, 0) on a u.v = 1 0 1 0 0=
0, d’autre part ||u|| = 3 et ||v|| = 4.
44 TBA1
H. Dedieu Codes détecteurs et correcteurs
4.2.2.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.1 Exemple
à !
0 1 0 1
G(4, 2) =
1 1 0 1
La matrice G(n, k) sera appelée dans la suite matrice génératrice d’un code (n, k).
4.2.3.2 Exemple
à !
0 1 0 1
(1, 0) = (0, 1, 0, 1)
1 1 0 1
Les 4 − uples engendrés par G(4, 2) ne forment pas un espace vectoriel de dimen-
sion 4 mais un espace vectoriel de dimension 2. Vérifions-le
à !
0 1 0 1
(0, 0) = (0, 0, 0, 0)
1 1 0 1
à !
0 1 0 1
(0, 1) = (1, 1, 0, 1)
1 1 0 1
46 TBA1
H. Dedieu Codes détecteurs et correcteurs
à !
0 1 0 1
(1, 0) = (0, 1, 0, 1)
1 1 0 1
à !
0 1 0 1
(1, 1) = (1, 0, 0, 0)
1 1 0 1
On vérifie aisément que les 4−uples générés ne sont pas linéairement indépendants
puisque 2 d’entre-eux peuvent servir de base ; (1, 1, 0, 1) et (0, 1, 0, 1) forment
une base puisque
Propriété 2 Soit G0 une matrice engendrée par combinaison linéaire des lignes de
G, le sous-espace vectoriel engendré par G0 est le même que celui engendré par G.
à !
0 1 0 1
(0, 1) = (1, 0, 0, 0)
1 0 0 0
à !
0 1 0 1
(1, 0) = (0, 1, 0, 1)
1 0 0 0
à !
0 1 0 1
(1, 1) = (1, 1, 0, 1)
1 0 0 0
TBA1 47
Codes détecteurs et correcteurs H. Dedieu
GS = ( Ik , P
|{z} )
|{z} (4.2)
k×k k×n−k
La transformation a eu lieu en des étapes, G0 est d’abord fabriquée par échange des
lignes de G. GS est constitué en gardant la deuxième ligne de G0 puis en addition-
nant les deux lignes de G0 pour former la première lignes de GS .
Propriété 4 Soit GS = (Ik P ), il existe une matrice
³ ´
HS = P T , In−k (4.3)
T
HS = ( P
|{z} , In−k )
| {z } (4.4)
n−k×k n−k×n−k
telle que
GS HST = 0 (4.5)
Démonstration :
à !
P M
GS HST = (Ik , P ) =P P =0
In−k
4.3.1 Généralités
Supposons une source qui fournit de k symboles binaires (k − uples)
48 TBA1
H. Dedieu Codes détecteurs et correcteurs
TBA1 49
Codes détecteurs et correcteurs H. Dedieu
(0, 1) (1, 1)
z
z
(0, 0) (1, 0)
z Codes possibles
4.3.2.1 Exemple
Soit le code (2, 1) tel que 0 → (0, 0) et 1 → (1, 1). Un tel code est schématisé
à la figure 4.2 Un seul bit d’erreur fait passer d’un code possible à un code impos-
sible. Deux bits d’erreurs font passer d’un code possible à un autre code possible
et donc on ne peut évidemment détecter deux bits d’erreurs. La distance minimum
entre deux mots du code est dmin = 2 et on vérifie bien que q = dmin − 1 = 1 est
bien le nombre d’erreurs détectables.
4.3.2.2 Exemple
Soit le code (3, 1) tel que 0 → (0, 0, 0) et 1 → (1, 1, 1). Un tel code est
schématisé à la figure 4.3. Clairement la capacité de détection d’un tel code est
q = 2.
50 TBA1
H. Dedieu Codes détecteurs et correcteurs
@ @
@ @
@ @
@
@ @
@z
(1, 1, 1)
z
@ @
(0, 0,@ 0) @
@ @
@
@ @
@
z Codes possibles
TBA1 51
Codes détecteurs et correcteurs H. Dedieu
4.4.1.1 Exemple
Soit une matrice génératrice (7, 3), i.e.
1 1 1 0 1 0 0
G= 0 1 1 1 0 1 1
0 0 1 1 1 0 0
Cette matrice transforme donc des blocs de 3 bits en blocs de 7 bits. Comme il y a
23 = 8 messages possibles, le code sera formé des 8 blocs de 7 bits suivants
(0 0 0) G = (0 0 0 0 0 0 0)
(0 0 1) G = (0 0 1 1 1 0 0)
(0 1 0) G = (0 1 1 1 0 1 1)
(0 1 1) G = (0 1 0 0 1 1 1)
(1 0 0) G = (1 1 1 0 1 0 0)
(1 0 1) G = (1 1 0 1 0 0 0)
(1 1 0) G = (1 0 0 1 1 1 1)
(1 1 1) G = (1 0 1 0 0 1 1)
Propriété 1 Toute combinaison linéaire des mots du code est encore un mot du
code.
s = λu + γv
s = wd G
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
4.4.1.2 Exemple
Soient les 8 mots codes définis dans l’exemple précédent. Trouver la distance
minimale entre les mots du code. En déduire la capacité de détection et de correc-
tion du code. On voit donc que dmin = 3. Par suite la capacité de détection est
u1 = (0 0 0 0 0 0 0) ||u1 || = 0
u2 = (0 0 1 1 1 0 0) ||u2 || = 3
u3 = (0 1 1 1 0 1 1) ||u3 || = 5
u4 = (0 1 0 0 1 1 1) ||u4 || = 4
u5 = (1 1 1 0 1 0 0) ||u5 || = 4
u6 = (1 1 0 1 0 0 0) ||u6 || = 3
u7 = (1 0 0 1 1 1 1) ||u7 || = 5
u8 = (1 0 1 0 0 1 1) ||u8 || = 4
4.4.2.1 Exemple
1 1 1 0 1 0 0 1 0 0 1 1 1 1
G = 0 1 1 1 0 1 1 −→ GS = 0 1 0 0 1 1 1
0 0 1 1 1 0 0 0 0 1 1 1 0 0
Dans cet exemple, la première ligne de GS est la somme des 2 premières lignes
de G. La deuxième ligne de GS est la somme de la deuxième et de la troisième
ligne de G. La troisième ligne de GS est la troisième ligne de G.
TBA1 53
Codes détecteurs et correcteurs H. Dedieu
Soit la correspondance
On voit que
y1 = x1
y2 = x2
bits d0 inf ormation
y3 = x3
y4 = x1 + x3
y5 = x1 + x2 + x3
bits de contrôle
y6 = x1 + x2
y7 = x1 + x2
L’idée sous-jacente à la détection d’erreur, est donc de vérifier à la réception que
les relations de contrôle sont bien remplies. Si elles le sont, on conclut à la non
présence d’erreurs. On notera toutefois que pour un nombre d’erreurs supérieur à
la capacité de détection du code on peut conclure faussement à la non présence
d’erreurs.
La technique de détection est donc simple, le message reçu est multiplié par la
matrice HST , si le résultat est nul, on décide que le mot transmis ne contient pas
d’erreur. Il est toutefois évident que si le nombre d’erreurs est supérieur à la ca-
pacité de détection du code, on pourra se retrouver dans un cas ou c’est un code
54 TBA1
H. Dedieu Codes détecteurs et correcteurs
possible différent du code possible émis qui est reçu, la détection d’erreur est dans
ce cas inopérante.
Admettons que x soit le mot à coder, et que y = xGS soit son code. Si des
erreurs se produisent pendant la transmission c’est un mot d’erreur e qui se rajoute
à y si bien que l’on reçoit effectivement
ŷ = y + e (4.11)
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
TBA1 55
Codes détecteurs et correcteurs H. Dedieu
4.5.0.3 Remarque :
Le même exemple avait été traité précédemment et on avait vu que les bits de
contrôle s’écrivaient au codage
y4 = x1 + x3 = y1 + y3
y5 = x1 + x2 + x3 = y1 + y2 + y3
(4.14)
y6 = x1 + x2 = y1 + y2
y7 = x1 + x2 = y1 + y2
y1 + y3 + y4 = 0
y1 + y2 + y3 + y5 = 0
(4.15)
y1 + y2 + y6 = 0
y1 + y2 + y7 = 0
donc la relation de décodage des erreurs (4.13) est bien équivalente à (4.15) quand
s = 0.
e = (e1 , e2 , . . . , en ) (4.16)
s = e1 h1 + e2 h2 + . . . + en hn (4.17)
où les hi sont les vecteurs colonnes de HS . On remarque que le syndrome est une
combinaison linéaire des n colonnes de la matrice HS . Cette relation peut être
utilisée pour corriger le mot reçu s’il est possible de retrouver de manière univoque
les coefficients ei qui vérifient (4.17). On remarque ainsi que si les n colonnes de
HS sont toutes distinctes et non nulles, un code linéaire peut corriger toutes les
erreurs simples. En effet une seule erreur à la kième position produit un syndrome
s = hk . Par conséquent si toutes les colonnes de HS sont distinctes, l’erreur peut
être localisée.
56 TBA1
H. Dedieu Codes détecteurs et correcteurs
4.6.0.4 Exemple
Supposons dans l’exemple précédent que s = (0, 1, 0, 0). On constate alors
que s est la cinquième colonne de HS , d’où l’on déduit que e5 = 1 et donc
e = (0, 0, 0, 0, 1, 0, 0). Le mot reçu peut être corrigé en retranchant l’erreur,
i.e. y = ŷ + e (On rappelle qu’en addition modulo 2, l’addition est équivalente à la
soustraction.)
n ≤ 2n−k − 1 (4.18)
et la longueur maximale des mots est atteinte lorsque les deux membres de cette in-
égalité sont égaux. Le code est alors un code de Hamming. Le tableau suivant donne
quelques-uns des codes de Hamming et leurs rendements : Un code de Hamming
n−k 2 3 4 5 6 7
n 3 7 15 31 63 127
k 1 4 11 26 57 120
η 0.333 0.571 0.733 0.839 0.905 0.945
TBA1 57
Codes détecteurs et correcteurs H. Dedieu
4.8 Exercices
Problème 4.8.1
Soit une code linéaire dont les mots code sont engendrés par la matrice généra-
trice G suivante à !
1 1 0 1
G=
0 1 1 0
1. Donner le nombre de bits d’information et le nombre de bits par bloc (par
mot-code) pour un tel code.
2. Donner l’ensemble des mots code générés par G.
3. Quelle est la distance minimale entre deux mots du code ?
4. Quelle est la capacité de détection du code ?
5. Quelle est la capacité de correction du code ?
6. On décide de mettre G sous sa forme systématique GS , trouver GS .
7. Quel est, de façon générale, l’intérêt de mettre un code sous sa forme systé-
matique ?
8. Donner l’ensemble des mots-code générés par GS . Cet ensemble est-il diffé-
rent de l’ensemble généré par G ? Si oui ou non, dites pourquoi.
Problème 4.8.2
En observant les mots transitant au travers d’un canal de communication, vous
observez que l’on retrouve toujours les 4 mots suivants
0 0 0 0 0 0
0 1 1 1 0 1
1 0 0 1 1 0
1 1 1 0 1 1
58 TBA1
H. Dedieu Codes détecteurs et correcteurs
1. Votre sagacité vous incite à penser qu’un code bloc (6, 2) a été utilisé. Pour-
quoi ? Pourquoi le code utilisé est-il linéaire ?
2. Donner la matrice systématique GS d’un tel code.
3. Quelle est la capacité de détection du code ?
4. Quelle est la capacité de correction du code ?
5. En écrivant
[y1 , y2 , y3 , y4 , y5 , y6 ] = [x1 , x2 ] GS
donner toutes les lois de calcul des yi pour i = 1 . . . 6. Prenez soin de calculer
exactement les bits de contrôle, y3 , y4 , y5 et y6 .
6. Calculez à partir de la matrice génératrice GS la matrice de contrôle HS d’un
tel code.
7. En écrivant la relation habituelle de contrôle
[y1 , y2 , y3 , y4 , y5 , y6 ] HST = 0
montrez que vous arrivez aux 4 relations de contrôle que vous aviez découvert
en 5).
8. Vous recevez le mot 111111 que vaut le syndrome ?
9. En étudiant le syndrome (obtenu précédemment) et en supposant qu’une er-
reur simple se soit produite, à quelle position du mot-code s’est produite
l’erreur ? Corrigez le mot code. En observant les mots-code possibles, dites
si votre bon sens vous indiquerait le même résultat que l’algèbre des codes
blocs linéaires.
Problème 4.8.3
On décide de construire un code bloc linéaire, non pas à partir de sa matrice
génératrice G mais à partir de sa matrice de contrôle H. Par exemple on décide
qu’un code (7, 4) sera formé d’une matrice H sous la forme
0 0 0 1 1 1 1
H=
0 1 1 0 0 1 1
1 0 1 0 1 0 1
L’idée sous-jacente est que chaque colonne de la matrice est "codée" par des nombres
croissants 1, 2, 3, . . . 7
1. Quel pourrait être à votre avis l’utilité pratique d’une telle matrice en cas
d’une erreur simple lorsqu’on calcule le syndrome ? On voudrait calculer la
matrice génératrice correspondant à H. On décide pour ce faire de ne pas tra-
vailler avec une matrice G systématique et de mettre tous les bits de contrôle
TBA1 59
Codes détecteurs et correcteurs H. Dedieu
à des positions qui soient des puissances de 2. En somme que si l’on doit
coder
x = [x1 , x2 , x3 , x4 ]
on transmette
y = [y1 , y2 , x1 , y3 , x2 , x3 , x4 ]
(Les bits de contrôle sont aux positions 20 = 1, 2, 4)
2. A partir de la relation de contrôle standard
yH T = 0
60 TBA1
5
CONTENU
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . 62
5.2 Propriétés fondamentales des codes cycliques . . . . . . 62
5.3 Encodage d’un code cyclique (n, k) sous forme systé-
matique . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.4 Décodage d’un code cyclique (n, k) . . . . . . . . . . . 66
5.5 Réalisation d’un encodage de code cyclique . . . . . . . 67
5.5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . 67
5.5.2 Préliminaires . . . . . . . . . . . . . . . . . . . . . . . 67
5.5.3 Circuit de division . . . . . . . . . . . . . . . . . . . . 68
5.5.4 Codeur d’un code cyclique . . . . . . . . . . . . . . . . 70
5.5.5 Réalisation matérielle du décodage d’un code cyclique
systématique . . . . . . . . . . . . . . . . . . . . . . . 71
5.6 Propriétés des codes polynômiaux (cycliques ou non) . . 72
5.7 Quelques polynômes générateurs normalisés . . . . . . . 73
5.7.1 Le code CCITT V.41 . . . . . . . . . . . . . . . . . . . 73
5.7.2 Le code CRC-16 . . . . . . . . . . . . . . . . . . . . . 74
5.7.3 Le code CRC-12 . . . . . . . . . . . . . . . . . . . . . 74
5.7.4 Le code ARPA . . . . . . . . . . . . . . . . . . . . . . 74
5.7.5 Le code ETHERNET . . . . . . . . . . . . . . . . . . . 74
5.8 Codes cycliques BCH . . . . . . . . . . . . . . . . . . . 75
5.8.1 Description des codes BCH . . . . . . . . . . . . . . . 75
5.9 Eléments théoriques nécessaires au développement des
codes BCH . . . . . . . . . . . . . . . . . . . . . . . . 76
5.9.1 Construction des champs de Galois CG(2m ) . . . . . . 76
c 2010 HEIG-VD.
°
61
Codes polynômiaux cycliques H. Dedieu
5.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.
62 TBA1
H. Dedieu Codes polynômiaux cycliques
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
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
TBA1 63
Codes polynômiaux cycliques H. Dedieu
5.2.0.8 Exemple
Soit à générer le code cyclique (4, 2). Ce code cyclique existera si l’on peut
trouver un polynôme de degré 4 − 2 = 2 qui divise 1 + X 4 . Or un tel polynôme
existe, il s’agit de 1 + X 2 . Pour générer le code, on opère suivant le principe donné
par la propriété précédente ; ce principe est illustré à la table 5.2.
Message Poly. message Poly. générateur × Poly. message Résultat Mot Code
00 0 (1 + X 2 )0 0 0000
01 1 (1 + X 2 )1 X2 + 1 0101
10 X (1 + X 2 )X X3 + X 1010
11 X +1 (1 + X 2 )(X + 1) X3 + X2 + X + 1 1111
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.
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
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.
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
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 )
g(X) = 1 + X + X 3
TBA1 65
Codes polynômiaux cycliques H. Dedieu
66 TBA1
H. Dedieu Codes polynômiaux cycliques
5.5.1 Introduction
Nous avons vu précédemment que l’encodage d’un code cyclique (n, k) consis-
tait en trois étapes
1. multiplication du message i(X) par X n−k
2. division de X (n−k) i(X) par g(X) afin d’obtenir le reste r(X)
3. formation du code par addition de r(X) et X (n−k) i(X)
Il se trouve que ces trois étapes peuvent être réalisées de manière simple sous une
forme matérielle. Nous allons essayer d’expliquer pourquoi dans la suite.
5.5.2 Préliminaires
On doit réaliser sous forme matérielle des multiplications et des divisions poly-
nomiales. Or les bits que nous émettons ou recevons apparaissent de façon sérielle
et le formalisme polynomial introduit par pure commodité algébrique tient compte
de la séquencialité dans le temps. Que se passe-t-il lorsque l’on multiplie un poly-
nôme par X ? Soit par exemple le message 100111 auquel correspond un polynôme
1 + X + X 2 + X 5 . Implicitement cela veut dire qu’au temps 0 apparaît le 1, alors
qu’à l’instant d’avant -1 avait apparu 1, et qu’au temps -2 avait apparu le bit 1, au
temps -4 le bit 0, etc, au temps -5 le bit 1. Multiplier le polynôme par X, c’est
décaler vers la gauche le message qui devient 1001110. Le bit qui était au temps
i apparaît maintenant au temps i − 1. Autrement dit une multiplication par X se
traduit par un décalage temporel d’une unité de temps. Ce décalage correspond à
TBA1 67
Codes polynômiaux cycliques H. Dedieu
u(X) ¶³ ¶³ ¶³ ¶³ y(X)
- - D - - D - - D -
0 1 m−1
µ´ µ´ µ´ µ´
6 6 6 6
u(X)
F IGURE 5.1 – Circuit de division g(X)
u(X) ¶³ ¶³ ¶³ ¶³ y(X)
- - X −1 - - X −1 - - X −1 -
µ´ µ´ µ´ µ´
6 6 6 6
0 1 m-1
u(X)
F IGURE 5.2 – Schéma équivalent au circuit de division g(X)
une anticipation d’un coup d’horloge. Inversement on pourrait monter qu’une di-
vision par X se traduit par une retard d’un coup d’horloge. Un retard de m coups
d’horloge correspond donc à une division par X m
68 TBA1
H. Dedieu Codes polynômiaux cycliques
u(X) ¶³ ¶³ y(X)
- - X −1 - - X −1 - - X −1 -
µ´ µ´
6 6
0 1 2
g0 = 1 g1 = 1 g2 = 0 ?g3 = 1
u(X)
F IGURE 5.3 – Circuit de division X 3 +X+1)
u(X)
y(X) =
1 + g1 X + g2 X2 + . . . + gm−1 X (m−1) + X m
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
TBA1 69
Codes polynômiaux cycliques H. Dedieu
Coup d’horloge ui D0 D1 D2 qi
0 u5 =1 0 0 0
1 u4 =0 1 0 0
2 u3 =0 0 1 0
3 u2 =0 0 0 1 q2 = 1
4 u1 =1 1 1 0 q1 = 0
5 u0 =1 1 1 1 q0 = 1
6 0 0 = r0 0 = r1 1 = r2
-
i(X) ?
@f k
@ c(X)
@ -
- f
¶³ ¶³ ¶³ m ?
¶³
- D - - D - - D -
0 1 m−1
µ´ µ´ µ´ µ´
6 6 6 6
où r(X) est le reste de la division de i(X)X n−k par g(X). Le codeur doit effectuer
les trois opérations suivantes : multiplication de i(x) par X n−k , puis division par
g(X), puis addition du produit au reste. Le schéma du circuit réalisant ces trois
opérations est donné à la figure 5.4 Tant que le commutateur se trouve en position
k donc pendant k coups d’horloge, les k bits d’information sont en même temps
envoyé vers le circuit et vers le récepteur. On bascule ensuite en position m où
pendant m = n − k coups d’horloge on va envoyer les bits de contrôle (reste) vers
le récepteur. Montrons qu’en position k le circuit effectue la division de i(X)X n−k
par g(X). Le schéma équivalent de l’encodeur cyclique lorsqu’il est en position k
est donné à la figure 5.5. Soit y(X) le signal au point noté A sur le schéma. On voit
70 TBA1
H. Dedieu Codes polynômiaux cycliques
i(X)
¶³ ¶³ ¶³ ?
¶³
- X −1 - - X −1 - - X −1 - - X −1 -
µ´ µ´ µ´ µ´
6 6 6 6
A
?y(X)
¡@@ g1 ¡@@ g2 ¡@@ gm−1
g0 = 1 ¡ ¡ ¡ gm = 1
que
Soit
Soit encore
i(X)
y(X) =
1 + gm−1 X −1 + gm−2 X −2 + . . . + g1 X m−1 + X −m
X m i(X)
y(X) =
X m + gm−1 X m−1 + gm−2 X m−2 + . . . + g1 X + 1
TBA1 71
Codes polynômiaux cycliques H. Dedieu
Une erreur simple sur le ième bit se traduit par un polynôme e(X) = X n−i . Comme
g(X) contient au moins deux coefficients qui sont non nuls (le premier et le der-
nier), g(X) ne peut être de la forme X p et ne peut donc diviser X n−i . Par consé-
quent lorsqu’une erreur simple survient,la division de e(X) par g(X) est non nulle
et l’erreur est détectée.
Propriété 2 Un code polynomial détecte toute erreur double si son polynôme gé-
nérateur g(X) ne divise pas X l + 1 où l peut prendre n’importe quelle valeur entre
1 et n − 1.
Une erreur double en positions i et j (1 ≤ i < j ≤ n−1)se traduit par un polynôme
générateur
e(X) = X n−i + X n−j = X n−j (1 + X j−i )
Comme g(X) possède deux coefficients non nuls il ne peut diviser X n−i . Si de plus
g(X) ne peut diviser 1 + X p pour 1 ≤ p ≤ n − 1, il ne pourra diviser (1 + X j−i ).
Par conséquent on est sûr que g(X) ne peut diviser X n−j (1 + X j−i ).
Propriété 3 L’erreur sur un message comportant un nombre impair d’erreurs est
toujours détectée si le polynôme générateur g(X) contient un facteur X + 1.
Si les erreurs sont en nombre impair, le polynôme e(X) contient un nombre im-
pair de coefficients non nuls. Par conséquent e(1) = 1. D’autre part comme g(X)
contient le facteur X + 1, g(1) = 0. Ceci montre que e(X) ne peut être un multiple
de g(X) car dans ce cas e(1) devrait valoir 0. Le polynôme e(X) n’est donc pas
divisible par g(X) et tout nombre impair d’erreurs est détecté.
72 TBA1
H. Dedieu Codes polynômiaux cycliques
Propriété 4 Un code polynomial (n, k) détecte toutes les salves d’erreurs de lon-
gueur inférieure ou égale à n − k.
Une salve d’erreurs de longueur j est définie comme un vecteur dont les compo-
santes non nulles peuvent être confinées sur j positions consécutives.
Par exemple le vecteur e = (0 0 0 1 0 1 1 0 1 0 0 0) est une salve d’erreur de
longueur 6. Une salve d’erreurs de longueur j ≤ n − k est donc représentable par
un polynôme
e(X) = X n−i +ei+1 X n−i−1 +. . .+ei+j−2 X n−i−j+2 +X n−i−j+1 = X n−i−j+1 (X j−1 +X j−2 +. . .+X+1)
g(X) = 1 + X 5 + X 12 + X 16 (5.5)
TBA1 73
Codes polynômiaux cycliques H. Dedieu
On peut montrer aisément que la distance minimale entre deux mots du code est
dmin = 4. Ce code peut donc détecter toutes les erreurs simples, doubles et triples,
toutes les erreurs en nombre impair ainsi que toutes les salves d’erreurs de longueur
inférieure ou égale à 16 (degré de g(X)). Ce code est utilisé dans les procédures de
lignes orientées bit, en particulier la procédure HDLC .
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
.
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.
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)
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.1.1 Exemple
Analyser la potentialité des codes BCH (511, 421) et (1023, 923) en terme de
correction d’erreur. Comparer le rendement de ces deux codes.
5.8.1.2 Solution
Le code BCH (511, 421) est tel que n = 511 = 29 − 1 d’où l’on déduit
que m = 9. Le nombre de bits de contrôle est n − k = 511 − 421 = 90. D’où
l’on déduit que t ≥ n−k m
= 90
9
= 10. Un tel code peut donc corriger 10 erreurs
sur un bloc de 511 bits. Son rendement est η = nk = 421 511
= 0.823. Pour le code
BCH (1023, 923) on trouverait m = 10. Comme le nombre de bits de contrôle
est n − k = 1023 − 923 = 100, on en déduirait qu’un tel code est capable de
corriger t ≥ n−km
= 100
10
= 10 erreurs. Le rendement du code BCH (1023, 923)
k 923
est η = n = 1023 = 0.902. On voit donc que les deux codes ont la même capacité
de correction par bloc, puisque 10 erreurs par bloc peuvent être corrigées. Le code
BCH (1023, 923) offre un meilleur rendement que le code BCH (511, 421). Il faut
toutefois remarquer que la capacité de correction en terme de nombre d’erreurs
corrigées par longueur de bloc est meilleure pour le code BCH (511, 421) (elle est
10 10
de 511 ) que pour le code BCH (1023, 923) ( 1023 ).
TBA1 75
Codes polynômiaux cycliques H. Dedieu
(On rappelle qu’un polynôme est dit irréductible s’il ne possède aucun diviseur de
degré supérieur à 0.)
5.9.0.3 Exemple
P (X) = X 3 + X + 1 n’a pas de racine sur CG(2) car P (1) = 1 et P (0) =
0. Comme 2m − 1 = 23 − 1 = 7 on peut vérifier que X 7 + 1 est divisible par
X 3 + X + 1. Après division, on obtient bien
X7 + 1
3
= X4 + X2 + X + 1
X +X +1
On appelle période d’un polynôme P (X) le plus petit entier l tel que P (X) divise
X l + 1. Un polynôme irréductible P (X) de degré m est dit polynôme primitif si
l’entier positif n le plus petit pour lequel P (X) divise X n + 1 est n = 2m − 1.
D’après le théorème précédent, un polynôme primitif a donc pour période 2m − 1.
5.9.0.4 Exemple
Le polynôme X 4 + X + 1 est un polynôme irréductible de CG(2). D’après
m
le thèorème, P (X) doit diviser X 2 −1 + 1 = X 15 + 1. Pour savoir si P (X) est
primitif, il faudra vérifier que P (X) ne divise pas X n + 1 pour 1 ≤ n ≤ 15.
La table 5.3 donne quelques polynômes primitifs
76 TBA1
H. Dedieu Codes polynômiaux cycliques
m P (X) m P (X)
3 1 + X + X3 14 1 + X + X 6 + X 10 + X 14
4 1 + X + X4 15 1 + X + X 15
5 1 + X2 + X5 16 1 + X + X 3 + X 12 + X 16
6 1 + X + X6 17 1 + X 3 + X 17
7 1 + X3 + X7 18 1 + X 7 + X 18
8 1 + X2 + X3 + X4 + X8 19 1 + X + X 2 + X 5 + X 19
9 1 + X4 + X9 20 1 + X 3 + X 20
10 1 + X 3 + X 10 21 1 + X 2 + X 21
11 1 + X 2 + X 11 22 1 + X + X 22
12 1 + X + X 4 + X 6 + X 12 23 1 + X 5 + X 23
13 1 + X + X 3 + X 4 + X 13 24 1 + X + X 2 + X 7 + X 24
Le champ de Galois CG(2m ) est donc formé par 0 et par les puissances croissantes
de α de l’ordre 0 jusqu’à l’ordre 2m − 2. Quelle valeur de α doit-on choisir ? α
n’est pas quelconque, en effet, afin que le champ soit "fermé sur lui-même" pour
la multiplication il faut que les puissances de α supérieures à 2m − 2 nous ramène
dans le champ. Pour ce faire on rajoute la condition
m −1
α2 =1 (5.11)
TBA1 77
Codes polynômiaux cycliques H. Dedieu
78 TBA1
H. Dedieu Codes polynômiaux cycliques
5.9.1.1 Exemple
5.9.1.2 Solution
P (X) = 1 + X + X 4
X 7 = P (X)(X 3 + 1) + X 3 + X + 1
α7 = α3 + α + 1
α5 = α4 α = (1 + α)α = α + α2
α6 = α5 α = (α + α2 )α = α2 + α3
α7 = α6 α = (α2 + α3 )α = α3 + α4 = α3 + α + 1
α14 = α3 + 1
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)
(α7 )4 +(α7 )3 +1 = α28 +α21 +1 = α13 +α6 +1 = (α3 +α2 +1)+(α3 +α2 )+1 = 0
Théorème 3 Les 2m − 1 éléments non nuls de CG(2m ) sont formés de toutes les
m
racines de X 2 −1 + 1.
On a donc le corollaire suivant
Corollaire 4 Les 2m éléments de CG(2m ) sont formés de toutes les racines de
m
X 2 + X.
80 TBA1
H. Dedieu Codes polynômiaux cycliques
TABLE 5.5 – Polynômes minimaux associés aux éléments de CG(24 ) générés par
P (X) = X 4 + X + 1
m
Il résulte du corollaire que tout élément β de CG(2m ) est une racine X 2 + X. Par
conséquent β doit être racine d’un polynôme de degré inférieur à 2m . Soit m(X)
le polynôme de degré le plus petit sur CG(2) tel que m(α) = 0, m(α) est dit
polynôme minimal de α.
TBA1 81
Codes polynômiaux cycliques H. Dedieu
5.9.2.3 Solution
p
On calcule d’abord p tel β 2 = β. On a
β 2 = α18 = α3 β 4 = α36 = α6 β 8 = α72 = α12 β 16 = α144 = α9
4
(Ces calculs sont effectués en tenant compte que β 2 −1 = β 15 = 1 et que toutes
les puissances de α peuvent être réduites par leur expression en modulo-15, par
exemple 144=9 modulo-15) On déduit donc que 2p = 16, soit p = 4. Le polynôme
associé à β = α9 est donc d’après le théorème précédent
m(X) = (X +β)(X +β 2 )(X +β 4 )(X +β 8 ) = (X +α9 )(X +α3 )(X +α6 )(X +α12 )
En développant on obtient
m(X) = (X 2 + X(α3 + α9 ) + α12 )(X 2 + X(α6 + α12 ) + α18 )
En tenant compte des résultats sur CG(24 ) exprimés dans la table 5.4 il vient
m(X) = (X 2 + Xα + α12 )(X 2 + X(1 + α) + α3 )
Soit
m(X) = X 4 + X 3 (1 + α + α) + X 2 (α12 + α3 + α + α2 ) + X(α4 + α12 + α13 ) + α15
soit encore
m(X) = X 4 + X 3 + X 2 + X + 1
82 TBA1
H. Dedieu Codes polynômiaux cycliques
n − k ≤ mt (5.23)
vH T = 0 (5.24)
avec
1 α α2 α3 ... αn−1
1 (α2 ) (α2 )2 (α2 )3 . . . (α2 )n−1
1 (α3 ) (α3 )2 (α3 )3 . . . (α3 )n−1
H=
(5.25)
.. .. .. .. .. ..
. . . . . .
2t 2t 2 2t 3 2t n−1
1 (α ) (α ) (α ) . . . (α )
où H est la matrice de contrôle du code (chaque αi pouvant être représenté par un
m − uple, c’est une matrice à 2tm lignes et n colonnes). Pour prouver que le code
a une distance minimum de 2t + 1 on suppose qu’un code v pourrait avoir un poids
inférieur ou égal à 2t, puis on prouve par contradiction que ceci n’est pas possible.
5.9.4.1 Solution
Les codes BCH sont de longueur n = 2m − 1. Dans le cas présent, on a donc
m = 4. Trouver le code BCH revient à trouver les racines du polynôme primitif de
CG(2m ) = CG(24 ). D’après la table 5.3, ce polynôme générateur est
P (X) = 1 + X + X 4
TBA1 83
Codes polynômiaux cycliques H. Dedieu
Les polynômes minimaux peuvent être trouvés par application du théorème 6. Dans
CG(24 ) ces polynômes sont donnés par la table 5.5, i.e m1 (X) = X 4 + X + 1
(polynôme minimal associé à α), m3 (X) = X 4 + X 3 + X 2 + X + 1 (polynôme
minimal associé à α3 ), m5 (X) = X 2 + X + 1 (polynôme minimal associé à α5 ).
Par conséquent
On sait que la matrice de contrôle H définie par la relation (5.25) est telle que
vH T = 0 (5.26)
Par application des équations (5.27) et (5.25), la ième composante du syndrome est
donc
ou encore
Remarquons que si est nul si αi est racine de r(X) ou de façon équivalente si r(X)
est divisible par le polynôme minimal associé à αi . Donc si l’on divise r(X) par
mi (X), i.e.
r(X) = ai (X)mi (X) + bi (X) (5.30)
84 TBA1
H. Dedieu Codes polynômiaux cycliques
on a
g(X) = X 10 + X 8 + X 5 + X 4 + X 2 + X + 1
5.9.5.2 Solution
Le code BCH (15, 5) est tel que n = 15 = 24 − 1, d’où l’on déduit que m = 4.
De la relation n − k ≤ mt on déduit que ce code peut corriger t = 3 erreurs. Le
polynôme générateur a ses trois racines dans CG(24 ).
Au 15-uple d’information (0 0 1 0 0) correspond le polynôme i(X) = X 2 .
L’encodage systématique consiste à trouver le reste de la division de i(X)X n−k
par g(X), puis à rajouter au résultat i(X)X n−k . Comme n − k = 10, il faut trouver
le reste de la division de X 12 par g(X). Or
X 12 = (X 2 + 1)g(X) + X 8 + X 7 + X 6 + X 5 + X 3 + X + 1
t(X) = X 12 + X 8 + X 7 + X 6 + X 5 + X 3 + X + 1
t = (0 0 1 0 0 0 1 1 1 1 0 1 0 1 1)
m5 (X) = X 2 + X + 1
TBA1 85
Codes polynômiaux cycliques H. Dedieu
86 TBA1
H. Dedieu Codes polynômiaux cycliques
Dans l’équation (5.33), les αj1 , αj2 , αj2 , . . . , αjµ sont les inconnues. Une fois ces
inconnues trouvées, on en déduit les positions des erreurs j1 , , j2 , . . . , jµ . Toute
méthode capable de résoudre l’équation (5.33) constitue un algorithme de décodage
des codes BCH. On dispose de plusieurs algorithmes pour le décodage des codes
BCH. La méthode la plus simple, quand n n’est pas trod grand est basé sur la cor-
respondance entre le syndrome et le correcteur qui est stockée en mémoire ROM.
où α est l’élément primitif de CG(2m ). Avec de tels codes on traite des éléments
(symboles) de CG(2m ) et par conséquent des m-uples. Les codes de Reed-Solomon
ont la propriété remarquable de pouvoir corriger des blocs de t symboles avec seule-
ment 2t symboles de contrôle. Les paramètres des codes de Reed-Solomon sont les
suivants
TBA1 87
Codes polynômiaux cycliques H. Dedieu
5.10.0.1 Exemple
Trouver le polynôme générateur du code de Reed-Solomon (15, 11).
5.10.0.2 Solution
Le code de Reed-Solomon (15, 11) possède n − k = 15 − 11 = 4 symboles de
contrôle. Les symboles sont des éléments de CG(24 ) car m = 4, (n = 2m − 1 =
15 = 24 − 1). Un tel code est donc capable de corriger t = n−k
2
= 2 symboles dans
des blocs de n = 15 symboles en utilisant 11 symboles d’information et 8 symboles
de contrôle. Selon l’équation (5.34), le polynôme générateur est de la forme
Soit
(X 2 + (α + α2 )X + α3 )(X 2 + (α3 + α4 )X + α7 )
En utilisant les résultats de la table 5.4 concernant les éléments de CG(24 ) on
trouve
(X 2 + α5 X + α3 )(X 2 + α7 X + α7 )
Puis en développant
g1 (X) = 1 + X 2 + X 4 + X 5 + X 6 + X 10 + X 11 (5.35)
ou par
g2 (X) = 1 + X + X 5 + X 6 + X 7 + X 9 + X 11 (5.36)
On remarque en effet que
88 TBA1
H. Dedieu Codes polynômiaux cycliques
0 1 2 23 × 22 2 23 × 22 × 21
C23 = 1 C23 = 23 C23 = = 253 C23 = = 1771
2 2×3
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.1 Exemple
TBA1 89
Codes polynômiaux cycliques H. Dedieu
5.11.2.2 Solution
Comme p(X) est un polynôme primitif de degré 5 sa période est 25 − 1 = 31.
(On rappelle que la période est l’entier µ le plus petit pour lequel p(X) divise
1 + X µ ). On doit corriger des salves d’erreur de longueur maximum l = 5 et
2l − 1 = 9 et 31 sont bien premier entre eux. Le polynôme générateur est donc
g(X) = (1 + X 9 )(1 + X 2 + X 5 )
Comme un code cyclique doit être tel que son polynôme générateur (de degré n−k)
divise 1 + X n , n est forcément le plus petit commun multiple entre 9 et 31 soit
n = 279. Or n − k = 9 + 5 = 14. D’où l’on tire que le code est un code (279, 265).
90 TBA1
H. Dedieu Codes polynômiaux cycliques
5.12 Exercices
Exercice 5.1
Soit g(X) un polynôme générateur d’un code bloc (n, k). Montrer que si g(X)
divise (1 + X n ), alors si C1 (X) = c0 + c1 .X + c2 .X 2 + . . . + cn−1 .X n−1 est un
mot-code (correspondant au n-uple ([cn−1 , cn−2 , . . . , c0 ]) alors C2 (X) = cn−1 +
c0 .X + c1 .X 2 + . . . + cn−2 .X n−1 est aussi un mot-code (correspondant au n-uple
([cn−2 , cn−1 , . . . , c0 , cn−1 ]). En déduire qu’une condition nécessaire et suffisante
à l’obtention d’un code cyclique est la divisibilité de (1 + X n ) par g(X).
Exercice 5.2
Pourquoi le polynôme générateur d’un code (n, k) est-il de degré n − k ? Com-
bien de mots-code pourra-t-on générer avec un polynôme générateur d’un tel de-
gré ?
Exercice 5.3
1. Trouver le polynôme générateur d’un code cyclique (7, 4) et donner l’en-
semble des mots-code.
2. Trouver la distance minimale entre les mots-codes et en déduire la capacité
de détection et la capacité de correction du code.
3. Trouver une matrice génératrice systématique d’un tel code (7, 4).
4. La matrice génératrice que vous avez trouvée garde-t-elle les mêmes corres-
pondances entre les mots d’information et les mots-codes que celles trouvées
à la question 1.
Exercice 5.4
Soit un code cyclique (n, k) dont le polynôme générateur est g(X).
1. Montrer que pour l = 1, 2, . . . k, X n−l peut s’écrire sous la forme X n−l =
Al (X).g(X) + Rl (X) et indiquer le degré maximum de Rl (X).
2. En déduire que X n−l + Rl (X) est divisible par g(X).
3. Indiquer à l’aide d’un bloc de bits jusqu’où vont s’étendre les bits correspon-
dants à X n−l et ceux correspondants à Rl (X). Montrer que ces deux types
de bits ne peuvent jamais interférer à la même position.
TBA1 91
Codes polynômiaux cycliques H. Dedieu
Exercice 5.5
Soit un code cyclique ou non (n, k) dont le polynôme générateur est g(X).
Montrer que si le polynôme générateur contient un facteur X +1 alors tout message
de longueur n comportant un nombre impair d’erreurs est détecté.
Exercice 5.6
Soit le circuit de la figure 5.6 dans lequel tous les additionneurs sont modulo 2
(OU exclusif). Soit U (X) un polynôme de degré k − 1 tel que U (X) = u0 + u1 X +
. . . + uk−1 X k−1 correspondant au k-uple [uk−1 , uk−2 , . . . , u0 ] dans lesquels les
ui pour [i = 0 . . . k − 1] appartiennent à CG(2). On suppose que l’on présente à
l’entrée du circuit de la figure 5.6 les bits ui dans l’ordre suivant, uk−1 est envoyé
au temps 0, uk−2 au temps 1, . . . u0 au temps k − 1.
U (X)
1. Montrer que Y (X) est égal à Q(X) = 1+X+X 3
.
2. En déduire la valeur de yi à chaque temps i pour i = 0 . . . k − 1 en fonction
des termes qi du polynôme quotient Q(X) (Q(X) = q0 +q1 .X +q2 .X 2 +. . .).
3. Déduire de la question précédente les composantes du 3-uple qui se trouve à
la sortie des bascules au temps k en fonction de u0 , u1 , u2 , q0 , q1 et q2 .
4. En calculant le reste de la division polynômiale de U (X) par 1 + X + X 3
déduire que ce reste se trouve stocké à la sortie des bascules à l’instant n.
5. Soit k = 7 et U (X) = X + X 2 + X 3 + X 4 + X 6 , trouver le quotient et le
reste de la division polynômiale de U (X) par 1 + X + X 3
6. Présenter maintenant à l’entrée du circuit de la figure 5.6 le 7-uple corres-
pondant au polynôme U (X) = X + X 2 + X 3 + X 4 + X 6 et vérifier que
vous obtenez bien par le circuit le quotient et le reste de la division par
g(X) = 1 + X + X 3 en calculant les sorties des bascules de l’instant 0 à
l’instant 7.
7. Que se passe-t-il en sortie du circuit si l’on continue à itérer jusqu’à n = 9
en mettant à 0 l’entrée depuis l’itération 7 (i.e. u7 = u8 = u9 = 0) ?
8. De manière générale, soit le circuit de la figure 5.7 dans lequel les gi valent 0
ou 1. Dans le cas où gi = 1, cela veut dire qu’il existe un rebouclage unitaire
92 TBA1
H. Dedieu Codes polynômiaux cycliques
ui + + yi
D0 D1 D2
+ +
FRGHF\FOLTXHH[RFLUFXLWSGI
+ + + + yi
ui +
D0 D1 D2 Dm-1
+ + + + +
1 g1 g2 g3 gm-1 1
FRGHF\FOLTXHH[RFLUFXLWSGI
TBA1 93
Codes polynômiaux cycliques H. Dedieu
Exercice 5.7
Dans le protocole de liaison de données HDLC (High-level Data Link Control)
on utilise une structure de trame qui a la forme décrite à la figure 5.8.
Fanion Fanion
Adresse Contrôle Données CRC
01111110 01111110
(8 bits) (8 bits) (8.Kd bits) (16 bits)
(8 bits) (8 bits)
KGOFWUDPHSGI
Les données sont en nombre variable d’une trame à sa suivante mais elles sont
toujours sur un nombre entier d’octets Kd .
Le champ CRC (Cyclic redundancy check) est calculé à l’aide d’un polynôme
générateur normalisé appelé CRC-CCITT V.41 de la forme
g(X) = 1 + X 5 + X 12 + X 16
Le champ CRC est calculé à l’aide d’un polynôme générateur que l’on applique
sur la trame à l’exception des bits de fanion et du CRC lui-même. Le CRC est ici
exclusivement utilisé en détection d’erreurs. Après détection éventuelle d’erreurs,
la trame sera redemandé à l’expéditeur.
1. En appelant k le nombre de bits correspondant au champ d’adresse, de contrôle
et de données, calculez la longueur n des mots-code.
2. Combien y-a-t-il de bits de contrôle par mot-code ? Est-ce en accord avec la
structure de la trame donnée à la figure 5.8 ?
3. Comment calculeriez-vous le mot-code et en particulier les bits de contrôle ?
(Tenez compte du fait que le code est systématique)
4. Montrer que si un nombre impair d’erreurs est présent alors il sera détecté
par le CRC.
5. Montrer que les salves d’erreurs de longueur inférieure à 16 sont détectées.
6. Montrer que toutes les erreurs doubles sont détectées. (Indications : montrer
que le reste de la division de X 17 +1 par g(X) est non nul, puis par récurrence
montrer que si le reste de la division de X l + 1 par g(X) est non nul, alors le
reste de la division de X l+1 + 1 par g(X) est aussi non nul.
7. Montrer que toutes les erreurs simples et triples sont détectées.
8. Montrer qu’il est relativement simple de construire un cas ou une erreur qua-
druple n’est pas détectée.
9. Déduire des 3 questions précédentes la distance minimale entre les mots du
code.
94 TBA1
H. Dedieu Codes polynômiaux cycliques
Porte
1
+ + Sortie
D D D D D D D D D D D D D D D D
+ + + +
Entrée
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.
c 2010 HEIG-VD.
°
97
Codes polynômiaux cycliques H. Dedieu
- - v (1)
l -f
¡
µ @
I@
- ¡
@
6 6 @
u v
- - - - - 6- - ¡
@ -
T T T ª f
¡
?
? ? ?
-
- @ v (2)
H@
RH l -f
- j
-
V (2) (z)
= 1 + z −1 + z −2 + z −3
U (z)
Or U (z) = 1 + z −2 + z −3 + z −4 , d’où
³ ´³ ´
V (1) (z) = 1 + z −2 + z −3 1 + z −2 + z −3 + z −4
98 TBA1
H. Dedieu Codes polynômiaux cycliques
³ ´³ ´
V (2) (z) = 1 + z −1 + z −2 + z −3 1 + z −2 + z −3 + z −4
Soit en développant
V (1) (z) = 1 + z −7
V (2) (z) = 1 + z −1 + z −3 + z −4 + z −5 + z −7
En prenant la transformée en z inverse des deux signaux on trouve
v 1 = (1, 0, 0, 0, 0, 0, 0, 1)
v 2 = (1, 1, 0, 1, 1, 1, 0, 1)
En entrelaçant v 1 et v 2 on retrouve finalement
nc = n(m + 1) (6.1)
TBA1 99
Codes polynômiaux cycliques H. Dedieu
-f
(
v 1) @
I@
- @
l @
6 @
@
@
u 6 @¡
- - - - - 6 ¡
ª@ v -
T T f
s1 s ?
2
?
- l ¾
v ( 2)
-f
états se trouvent dans les cercles, les sorties du codeurs se trouvent indiquées lors
des transitions d’états ; par exemple pour la transition entre l’état 00 et l’état 10 on
indique par 1/11 que l’arrivée de l’entrée 1 a généré une sortie 11.
6.4.1 Remarque fondamentale concernant le codage
Lorsque l’on code à l’aide d’un code convolutionnel (n, 1, m) une information
de longueur 1 bit se trouve codée par n bits. Cependant si l’on considère qu’un bloc
de L bits pénétre séquentiellement dans le codeur, ce bloc est encodé par un code
de longueur n(L + m) car n.m sorties supplémentaires sont générées par le codeur
après que la dernière information non nulle ait pénétrée dans le codeur. Si au début
du bloc le codeur était dans son état initial nul, au bout du temps (L + m), le codeur
reviendra dans son état initial nul. Pour nous en convaincre, reprenons l’exemple du
100 TBA1
H. Dedieu Codes polynômiaux cycliques
1/10
-
-
@
I
@ ¡
@ #Ã ¡
@ ¡
ª
11
µ
¡"! @
¡
¡ @
@@
@
R
0/01
1/01
¡µ
¡¡
@
¡
¡ @
¡ 0/10 @#Ã
R
@
#Ã - -
10
¾ ¾ 01
"! 1/00 "!
@
I ¡
@ ¡
@ ¡
ª
¡¡
@
I ¡ 0/11
1/11@@
@ #Ã ¡
@ ª
¡
00
¡ "!@
I
@
¡ @
¡
ª - @
-
0/00
TBA1 101
Codes polynômiaux cycliques H. Dedieu
102 TBA1
H. Dedieu Codes polynômiaux cycliques
L = 3 sorties m = 2 sorties
¾ -¾ -
º· 0/00 º· 0/00 º·
0/00-
º·
0/00- º· 0/00-
º·
S0 - S0 - S0 S0 S0 S0
¹¸ ¹¸ ¹¸ 3́ ¹¸ ´3́ ¹¸ 3́¹¸
J1/11 J
1/11 1/11
J ´ ´ ´
J J J
´
´ 0/11 ´ 0/11 ´
´ 0/11
J J º· ´ J º· ´ º· ´
J J S1 J S1 S1
J J´3́ ¹¸ ´ J3́ ¹¸ 3́¹¸
J ´ J
1/00
Q ´ J ´
Q Á ´ Á
J^ 0/10´ J 0/10´ Q J ´
Jº· ´ J
^º· ´ QQJ
^º· ´0/10
s
S2 S2 S2
¹¸ Z ¹¸ Z 0/01
¹¸
0/01
Z Z
Z1/01 Z 1/01
Z º· Z º·
~
Z ~
Z
S3 - S3
¹¸ 1/10 ¹¸
F IGURE 6.4 – Diagramme en treillis associé au circuit de la figure 6.2 (code convo-
lutionnel (2, 1, 2))
l’intermédiaire d’un 0 en entrée (10 en sortie). Le codage de 111 est donc selon
111 −→ 1101100111
L’ensemble des 8 possibilités de codage pour L = 3 est représenté à la table 6.4.
Mot en entrée du codeur Mot en sortie du codeur
000 00 00 00 00 00
001 00 00 11 10 11
010 00 11 10 11 00
011 00 11 01 01 11
100 11 10 11 00 00
101 11 10 00 10 11
110 11 01 01 11 00
111 11 01 10 01 11
TABLE 6.4 – Codes générés pour des mots de longueur L = 3 par le code convolu-
tionnel (2, 1, 2) associé au circuit de la figure 6.2
TBA1 103
Codes polynômiaux cycliques H. Dedieu
L=6 m=2
¾ - ¾ -
¶³ ¶³ ¶³ ¶³ ¶³ ¶³ ¶³ ¶³ ¶³
0/00 0/00 0/00 0/00 0/00 0/00 0/00 - 0/00
S0 - S0 - S0 - S0 - S0 - S0 - S 0 S 0 - S0
µ´ µ´ µ´ 1/11 µ´ 1/11 µ´ 1/11 3́ µ´ 1/11 3́ µ´ 3́ µ´ 3́µ´
J1/11 1/11 J 0/113́ J ´ 3́ J ´ J ´ 0/11
´ 0/11
J 0/11 0/11 ´
´ 0/11
´ ´
J J ´
J ´
J J ´
J ¶³ ´ ¶³ ´
¶³ ´ ¶³ ´ ¶³ ´ ¶³ ´ ´
J
J
J
J
S1
J 3́ µ´
J S1 JJ S1 JJ S1
J3́ µ´
S1
J3́ µ´
S1
3́ µ´ 1/00 3́ µ´ 1/00 3́µ´
J ´ Q1/00´ JÁ Q 1/00´ JÁ Q ´J Q ´J ´
0/10´ J Q
´ Q
´ Q
´ Á Q
´
0/10
Á
J ´ Á
0/10
J
J
^¶³ ´ J
^
J¶³ 0/10
´ Q
J
J
^ ¶³0/10
´ Q
J
J
^ 0/10
¶³ ´ Q J
J
^¶³ ´ QQ
s
J
^ ¶³ ´
s
Q s
Q Q
s S2
S2 S2 S2 S2 S2
µ´ µ´ Z µ´ Z µ´ Z µ´ Z µ´
Z Z
Z Z Z Z Z
1/01
Z ¶³
Z
0/01 1/01
¶³
0/01 1/01
Z ¶³ 0/01 Z
1/01¶³ 0/01 1/01
¶³ 0/01
~
Z Z
~ ~
Z Z
~
~
Z - S - S3
S3 - S3 - S3 3
µ´ 1/10µ´ 1/10µ´ 1/10 µ´ 1/10µ´
départ depuis l’état S0 et les m dernières au retour vers l’état S0 . Il s’ensuit que que
tous les états ne peuvent être atteints durant les m − 1 premières et les m dernières
itérations du codeur. Cependant dans la portion centrale du treillis (itérations m à L)
tous les états sont accessibles. En particulier depuis l’itération m jusqu’à l’itération
L − 1 pour chaque état du treillis il y a 2 branches sortantes et depuis l’itération
m + 1 jusqu’à l’itération L il y a toujours 2 branches entrantes ; en conséquence le
treillis est formé d’une réplique symétrique de transitions entre les itérations m + 1
et L − 1 Ceci n’apparaît pas directement sur la figure 6.2 car L est trop petit dans ce
cas, pour s’en convaincre on pourra observer le diagramme en treillis de la figure
6.5 où L = 6 ; la zone centrale du treillis est indiquée à l’intérieur du rectangle.
Pour chacun des 2L mots pouvant entrer dans le codeur il existe un chemin unique
à travers le treillis ; ce chemin est de longueur n(L + m). En suivant un chemin
particulier on peut directement écrire la correspondance entre le mot d’entrée (L
premières itérations) et le mot code résultant ; par exemple pour le chemin indiqué
en traits gras à la figure 6.6 on a la correspondance
101111 −→ 1110000110100111
104 TBA1
H. Dedieu Codes polynômiaux cycliques
L=6 m=2
¾ - ¾ -
¶³ ¶³ ¶³ ¶³ ¶³ ¶³ ¶³ ¶³ ¶³
0/00 0/00 0/00 0/00 0/00 0/00 0/00- S0 0/00
S0 - S0 - S0 - S0 - S0 - S 0
- S 0 - S0
µ´ µ´ µ´ 1/11 3́ µ´ 1/11 3́ µ´ 1/11 3́ µ´ 1/11 3́ µ´ 3́ µ´ ´ 3́ µ´
J1/11
1/11
J J 0/11 J ´ 0/11 J ´ J ´ 0/11 0/11
´ 0/11
´
´ 0/11
´ ´ ´
J ´
J ´
J J ´
J ¶³ ´ ¶³
J ¶³ ´ J ¶³´ J ¶³ ´ J ¶³ ´ J ´
J J S S S S1 S1
S1 1 1 J 1 J3́ µ´
J J 3́ µ´ Z J3́ µ´
1/00 1/00
J3́ µ´ 3́ µ´
1/00
Q ´J Q1/00´ JÁ
3́µ´
´J Z´ J Q ´J ´ Á
J ´ J ´ ZÁ Q
´ Á Q
´ Á Q
´ ´
0/10
J 0/10
¶³ ´ ^
J ¶³0/10
´ J
J
^ ¶³0/10
´ Q J
J
^¶³ 0/10
´ Q J
J
^ ¶³ 0/10
´ Q J
J
^ ¶³ ´
J
^ Z
~
s
Q
Q
s Q
s
S2 S2 S2 S2 S2 S2
µ´ µ´ Z µ´Z µ´ Z µ´ Z µ´
Z Z
Z Z Z Z
1/01
Z
Z
0/01 1/01
¶³
0/011/01
Z 0/01 Z
1/01¶³ 0/01 Z1/01
¶³ 0/01
~
Z
¶³ ~
Z ~ ¶³
Z ~
Z Z
~
S3 - S3 - S3 - S3 - S3
µ´ 1/10µ´ 1/10µ´ 1/10 µ´ 1/10µ´
TBA1 105
Codes polynômiaux cycliques H. Dedieu
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
106 TBA1
H. Dedieu Codes polynômiaux cycliques
L=3 m=2
¾ -¾ -
º· 0/00- º· 1º·
0/00 -
S0 S0 S0
¹¸ ¹¸ ¹¸
J J
J 1/11 J 1/11
J J 4º·
J J S1
J J´3́ ¹¸
J 0/10´ J
J^ ´ JJ
Jº· ´ ^º·
1
S2 S2
¹¸
Z ¹¸
Z
Z
Z º·
1/01 ~
Z
S3
2 ¹¸
TBA1 107
Codes polynômiaux cycliques H. Dedieu
º· º· 1º· 3 º·
0/00
- 0/00- 0/00 -
S0 S0 S0 S0
¹¸ ¹¸ ¹¸ ¹¸
J J J 1/11
J 1/11 J1/11
J
J J 4º· º·
J 2
J J S1 J S1
J J´3́ ¹¸ J´3́ ¹¸
J ´ J ´J
J^ ´
´0/10 JJ
Jº· ^º· ´
´0/10 J^ 1
J º·
1
S2 S2 S2
¹¸
Z ¹¸Z ¹¸
Z Z
Z
1/01 Z
1/01 Z º· ZZ
2 º·
~
Z ~
S3 S3
2 ¹¸ ¹¸
108 TBA1
H. Dedieu Codes polynômiaux cycliques
º· º· 1º· 3 º· 5º·
0/00
- 0/00- 0/00 - 0/00-
S0 S0 S0 S0 S0
¹¸ ¹¸ ¹¸ ¹¸ 0/11 3́ ¹¸
J J J 1/11 ´
J 1/11 J1/11 ´ 2
J ´
J J 4º· º· ´ º·
J 2
J J S1 J S1 2 S1
J J´3́ ¹¸J 3́ ¹¸ ´3́ ¹¸
J ´ J ´
´J
1/00 ´ ¢¢̧ 3
J^ ´ J ´ ´
Jº· ´0/10 J
1^º· ´0/10JJ 1 ´
^ º· 0/10 ¢
S2 ¢
S2 S2 ¢
¹¸
Z ¹¸ Z ¹¸
Z ¢
Z 1/01 Z ¢
1/01Z 2 º·
Z º· ZZ ~ 0/01
¢
~
Z
S3 S3 ¢
2 ¹¸ ¹¸
TBA1 109
Codes polynômiaux cycliques H. Dedieu
º· º· 1º· 3 º· º·
0/00
- 0/00- 0/00 -
S0 S0S0 S0 S0
¹¸ ¹¸ ¹¸ ¹¸ 0/11
3́ ¹¸
J J J 1/11 ´
J 1/11 J1/11 ´ 2
J ´
J J 4º· º· ´ º·
J 2
J J S1 J S 1 2 S1
J J´3́ ¹¸J 3́ ¹¸ ´ 3́ ¹¸
J ´ J ´ ´
´ ´J ´
J^
Jº·
´0/10 JJ
^º· ´ J 1
º·´
´0/10 J
1 ^ 0/10
S2 S2 S2
¹¸
Z ¹¸Z ¹¸
Z Z
1/01Z
1/01Z 2 º·
Z º· ZZ ~
~
Z
S3 S3
2 ¹¸ ¹¸
º· º· 1º· 3 º· º· 4 º·
0/00
- 0/00- 0/00 - 0/00-
S0 S0 S0 S 0 S0 S0
¹¸ ¹¸ ¹¸ ¹¸ 0/11
3́ ¹¸ 3́¹¸
J J J 1/11 ´ ´
J 1/11 J1/11 ´ 2 ´ 2
J ´ ´
J J 4º· º· ´ º· ´ 0/11
J 2
J J S1 J S1 2 S1
J J´3́ ¹¸J 3́ ¹¸ ´3́ ¹¸
J ´ J ´ ´
´ ´J ´
J^
Jº·
´0/10 JJ
^º· ´ J 1 ´
1 ^ º·
´0/10 J 0/10
S2 S2 S2
¹¸
Z ¹¸Z ¹¸
Z Z
1/01
Z Z
1/01 Z º· ZZ
2 º·
~
Z ~
S3 S3
2 ¹¸ ¹¸
110 TBA1
H. Dedieu Codes polynômiaux cycliques
º· º· 1º· 3 º· º· º·
0/00
-
0/00- 0/00 -
S0 S0 S0 S 0 S 0 S0
¹¸ ¹¸ ¹¸ ¹¸ 0/11
3́ ¹¸ 3́ ¹¸
J ´ ´
J 1/11 J 1/11 ´ 2 ´ 2
J 1/11 J J ´ ´
J 4º· º· ´ º· ´ 0/11
J J 2
J J S1 J S 1 2 S1
J J´3́ ¹¸J 3́ ¹¸ 3́ ¹¸
´ J ´ ´
J ´ ´J ´
JJ ´0/10 JJ ´ ´
1 0/10
^ º· 1^º·
´0/10JJ
^ º·´
S2 S2 S2
¹¸
Z ¹¸Z ¹¸
Z Z
1/01
Z Z
1/01 Z º· ZZ
2 º·
~
Z ~
S3 S3
2 ¹¸ ¹¸
TBA1 111
Codes polynômiaux cycliques H. Dedieu
6.5.2.1 Etape 1
On se place à l’itération j = m où les 2m états sont "visités" par un seul chemin.
Pour chaque état à cette itération on indique la distance entre le chemin accédant à
l’état et la séquence des n.m premiers bits reçus. On mémorise cette distance pour
(m)
chaque état. On note di la distance entre le chemin menant de l’état initial à l’état
i de l’itération j = m et la séquence des n.m bits reçus.
6.5.2.2 Etape 2
On accroît j d’une unité, j → j + 1. Pour chaque état, il existe maintenant deux
chemins d’accès. On calcule par récurrence les 2 distances entres les 2 chemins
possibles et la séquence des n.j premiers bits reçus. Pour ce faire, s’il existe une
transition possible entre un état k à l’itération j − 1 et un état l à l’itération j, on
calcule
(j) (j−1)
dl = dk + d(ok l , rj ) (6.2)
où ok l est la sortie de n bits associée à la transition entre l’état k à l’itération j − 1
et l’état l à l’itération j et rj est la séquence de n bits reçus situés aux positions (j −
(j)
1)n+1 à j.n. Pour l = 1 . . . 2m chacun des états Sl possède 2 métriques associées
(j)
à 2 chemins d’accès permettant de visiter Sl . On supprime alors pour chaque état
le chemin d’accès sous-optimal qui possède la métrique la plus grande. Après cette
(j)
opération d’élagage il n’existe plus qu’un chemin pour accéder à chacun des Sl
(j)
et qu’une métrique associée à chacun des Sl .
6.5.2.3 Etape 3
On teste si j = L + m et on revient à l’étape 2 tant que cela n’est pas vrai.
Lorsque cela est vrai on dispose d’un seul chemin permettant de parcourir le treillis
et ce chemin est forcément le chemin optimal car tous les sous-chemins éliminés à
l’étape 2 ne peuvent faire partie du chemin optimal.
112 TBA1
H. Dedieu Codes polynômiaux cycliques
v = v0 , v1 , v2 , . . . , vN −1
Supposons maintenant que la séquence v soit envoyée sur un canal discret sans
mémoire et que l’on échantillonne les données vi entachées de bruit sur Q niveaux.
On dispose alors d’une séquence r de la forme
r = r0 , r1 , r2 , . . . , rN −1
Pour chaque ri sur Q niveaux on peut supposer que par mesure on peut modéliser
l’effet du canal sous la forme de la probabilité de recevoir ri sachant que l’on a
émis vi . Lorsque les vi sont binaires et les ri sur Q niveaux, la modélisation du
canal se fait par l’intermédiaire d’une table p(ri |vi ) à 2 lignes et Q colonnes. On se
pose maintenant la question de savoir, étant donné un message reçu r, de trouver
le message émis v le plus probable 2 . On veut donc minimiser la probabilité de se
tromper c’est-à-dire que l’on cherchera v̂ qui minimise
p(v̂ 6= v|r)
p(v̂ = v|r)
Or ceci revient encore à trouver le v̂ qui parmi tous les v possibles va maximiser
p(r|v)p(v)
p(v|r) = (6.3)
p(r)
Pour une source à entropie maximale, p(v) est la même pour tous les v, d’autre
part r étant reçu p(r) est une constante qui n’intervient pas dans la maximisation
de l’équation (6.3). Il s’ensuit que maximiser (6.3) revient à trouver le v̂ qui parmi
tous les v possibles va maximiser
p(r|v) (6.4)
Si l’on suppose que le canal est un canal qui superpose au signal vi un bruit blanc
Gaussien on a
NY
−1
p(r|v) = p(ri |vi ) (6.5)
i=0
(Cette dernière équation est valide car le canal et sans mémoire et que les échan-
tillons de bruits sont indépendants entre eux par hypothèse.) Dès lors le problème
2. Les v et les u étant en correspondance bi-univoque, trouver le v le plus probable est équivalent
à trouver le u le plus probable.
TBA1 113
Codes polynômiaux cycliques H. Dedieu
Problème 1
Un codeur convolutionnel de type (3, 1, 2) est donné à la Figure 6.14.
+ y1
+
+ y2
+
x D D
+ y3
+
F IGURE 6.14 – Codeur convolutionnel (3, 1, 2)
114 TBA1
H. Dedieu Codes polynômiaux cycliques
6.6 Exercices
Problème 2
Soit le codeur convolutionnel (3, 1, 2) qui est décrit par la Figure 6.15.
v(1)
+ +
u
T T
+ +
+
v(2)
+
v(3)
+
101010000011
TBA1 115
Codes polynômiaux cycliques H. Dedieu
v(1)
+ +
u
T T
+ +
+
v(2)
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
116 TBA1
7
Modulations numériques
CONTENU
Résumé
c 2010 HEIG-VD.
°
117
Modulations numériques H. Dedieu
7.1 Introduction
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.
On va étudier ici les méthodes au saut de phase soit binaire (BPSK), soit qua-
ternaire (QPSK) ainsi que leurs variantes. Nous serons particulièrement intéressés
à leur probabilité d’erreur, consommation en bande passante et efficacité spectrale.
Ces trois termes seront définis plus avant.
7.2.1 Technique par saut de phase binaire (BPSK)
Dans cette technique (Binary Phase Shift Keying), on module le signal porteur
par un saut de phase (0 ou π). De façon plus précise, une paire de signaux s0 (t) et
s1 (t) est utilisée afin de représenter les bits 0 ou 1. Soit Eb l’énergie d’un bit durant
un temps Tb , le signal associé au ”0” sera défini par
s
2Eb
s0 (t) = cos(2πfc t) 0 ≤ t < Tb , (7.1)
Tb
118 TBA1
H. Dedieu Modulations numériques
1
Saut d amplitude
0.5
−0.5
−1
0 1 2 3 4 5 6
1
Saut de phase
0.5
−0.5
−1
0 1 2 3 4 5 6
1
Saut de fréquence
0.5
−0.5
−1
0 1 2 3 4 5 6
Si l’équation (7.3) est vérifiée, comme s1 (t) = −s0 (t), on a bien sûr
TBA1 119
Modulations numériques H. Dedieu
K
s1 (t) φ0 (t) = −K0 , (7.4)
avec K0 le plus grand possible afin que la discrimination soit la meilleure pos-
sible. Comment choisir maintenant le produit scalaire et la fonction φ0 (t) ?
On choisit en général comme produit scalaire de deux fonctions l’intégrale du
produit de deux fonctions sur la durée du bit, ainsi on définit le produit scalaire par
K Z Tb
x(t) y(t) = x(t).y(t)dt (7.5)
0
(Remarquons que lorsque x(t) est égal à y(t), l’équation 7.5 représente l’éner-
gie de x(t) durant le temps Tb .)
L’une des façons de maximiser K0 est de prendre une fonction φ0 (t) proportion-
nelle à s0 (t) et donc sinusoïdale. Uneqfonction à énergie unitaire sur un intervalle
de temps Tb doit avoir une amplitude T2b , la fonction φ0 (t) vaut donc
s
2
φ0 (t) = cos(2πfc t) (7.6)
Tb
L’application du produit scalaire de la fonction φ0 (t) au signal s0 (t) ou s1 (t)
permettra la discrimination des deux fonctions s0 (t) et s1 (t) à condition que K0
soit suffisamment grand.
Que vaut K0 ? On a,
Z Tb √ Z q
Eb Tb 2
K0 = s0 (t).φ0 (t)dt = 2 cos (2πfc t)dt = Eb (7.7)
0 Tb 0
L’ensemble de l’opération de démodulation est schématisé à la Figure 7.2.
Tb E
³
b
s0(t)
s1(t) E
0 b
2 cos(2Sf t)
0
Tb
120 TBA1
H. Dedieu Modulations numériques
Frontière de
décision
E b E b
2Eb 2Eb
Tb Tb
s1(t) s0(t)
- 2Eb 2Eb
Tb - Tb
0 T b 0 T b
TBA1 121
Modulations numériques H. Dedieu
0.7
0.6
0.5
Densités de probabilités
0.4
0.3
0.2
0.1
0
−4 −3 −2 −1 0 1 2 3 4
Nombres aléatoires détectés à la sortie du démodulateur
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.
1 Z +∞ h i
p01 =√ √ exp −z 2 dz, (7.14)
π Eb /N0
Cette fonction n’est pas calculable analytiquement mais elle est tabulée, en effet on
a coutume d’appeler, fonction erreur complémentaire la fonction suivante
2 Z +∞ h i
erf c(a) = √ √ exp −z 2 dz, (7.15)
π a
On a donc Ãs !
1 Eb
p01 = erf c , (7.16)
2 N0
TBA1 123
Modulations numériques H. Dedieu
Si l’on admet une équiprobabilité des "0" et des "1" émis, la probabilité d’erreur est
Ãs !
1 1 1 Eb
peBP SK = p01 + p10 = erf c . (7.18)
2 2 2 N0
La probabilité d’erreur d’un système de type BPSK est donnée à la Figure 7.6. On
observera, conformément au bon sens qu’à niveau de bruit donnée N0 , le fait d’ac-
croître Eb , et donc d’accroître la discrimination entre les deux messages, diminue
la probabilité d’erreur. Lorsqu’on connaît le niveau de bruit, on ajuste si cela est
possible l’énergie par bit Eb de façon à pouvoir atteindre une probabilité d’erreur
prescrite (e.g 10−5 ).
0
10
−1
10
−2
10
−3
Pe
10
−4
10
−5
10
−6
10
−5 −2.5 0 2.5 5 7.5 10
Eb/No
124 TBA1
H. Dedieu Modulations numériques
x(t)
2E b
Tb
T b
t
2Eb
Tb
Séquence NRZ Séquence
1, 0, 1, 1, ..... bipolaire BPSK
NRZ bipolaire
m(t) x(t)
y(t)
Message
binaire toutes
les Tb sec.
cos(2Sfct)
TBA1 125
Modulations numériques H. Dedieu
RX (τ ) = E[x(t)x(t + τ )] (7.19)
Il y a deux cas à considérer, soit |τ | < Tb , ou |τ | ≥ Tb . Nous supposerons que les
bits successifs sont indépendants et que l’on a équiprobabilité des "1" et des "0".
1) Supposons d’abord que 0 ≥ τ < Tb . On s’aperçoit que de τ à Tb , x(t) et
x(t + τ ) ont la même polarité. De 0 à τ , les polarités de x(t) et x(t + τ ) peuvent
être quelconques puisqu’elles appartiennent à deux symboles consécutifs indépen-
dants. En moyenne, ces polarités se compenseront du fait de l’équiprobabilité des
symboles. Dès lors
1 Z Tb 2 1 τ
RX (τ ) = A dt = A2 [t]Tτ b = A2 [1 − ] si 0 ≥ τ < Tb (7.20)
Tb τ Tb Tb
2) Supposons maintenant que −Tb < τ ≤ 0. On s’aperçoit que de 0 à Tb +
τ , x(t) et x(t + τ ) ont la même polarité. De Tb + τ à Tb , les polarités de x(t)
et x(t + τ ) peuvent être quelconques puisqu’elles appartiennent à deux symboles
consécutifs indépendants. En moyenne, ces polarités se compenseront du fait de
l’équiprobabilité des symboles. Dès lors
1 Z Tb +τ 2 1 τ
RX (τ ) = A dt = A2 [t]T0 b +τ = A2 [1 + ] si − Tb < τ ≤ 0 (7.21)
Tb 0 Tb Tb
3) Supposons maintenant que |τ | > Tb . Dans ce cas, x(t) et x(t + τ ), peuvent
avoir des polarités quelconques à l’instant t puisque x(t) et x(t + τ ) appartiennent
à des bits différents. La moyenne des polarités sera nulle du fait de l’indépendance
des bits et de l’équiprobabilité des "0" et des "1".
RX (τ ) = 0 si |τ | ≥ Tb (7.22)
On peut résumer l’étude de la fonction d’autocorrélation sous la forme de la for-
mule suivante,
( |τ |
A2 .[1 − ] |τ | < Tb
RX (τ ) = Tb (7.23)
0 |τ | ≥ Tb
La transformée de Fourier de la fonction d’autocorréaltion s’écrit alors
Z 0 Z Tb
t t
SX (f ) = T.F.[RX (τ )] = ] exp−j2πf t dt+
A2 [1+ A2 [1− ] exp−j2πf t dt
−Tb Tb 0 Tb
(7.24)
Après manipulation de cette dernière équation, on trouve,
sin2 (πf Tb )
2
SX (f ) = A .Tb , (7.25)
(πf Tb )2
q
2Eb
soit en remplaçant A par Tb
,
126 TBA1
H. Dedieu Modulations numériques
2
sin(πf Tb )
SX (f ) = 2Eb2 2
= 2Eb2 sinc2 (Tb f ) (7.26)
(πf Tb )
Ceci correspond à ce que l’on pourrait appeler le spectre BPSK en bande de
base. Le spectre BPSK réel correspondra à un double décalage tel que donné à la
Figure 7.8.
TBA1 127
Modulations numériques H. Dedieu
0.5
0
−5 −4 −3 −2 −1 0 1 2 3 4 5
Tb.f
Spectre BPSK (exemple avec fc=3/Tb)
0.8
0.6
0.4
0.2
0
−5 −4 −3 −2 −1 0 1 2 3 4 5
Tb.f
F IGURE 7.8 – Spectre d’un signal BPSK (en bande de base) et en bande réelle pour
un exemple avec fc = T3b .
s s
µ ¶ µ ¶
2E π 2E π
si (t) = cos(2πfc t) cos (2i − 1) − sin 2πfc t) sin((2i − 1) i = 1 . . . 4,
T 4 T 4
(7.28)
Ce jeu d’écriture fait apparaître le signal QPSK comme étant un signal avec une
double modulation, les deux porteuses étant en quadrature.
128 TBA1
H. Dedieu Modulations numériques
Soient maintenant les fonctions φ1 (t) et φ2 (t) représentant ces deux porteuses
en quadrature et prenons comme amplitude des deux porteuses un nombre tel que
leur énergie soit unitaire sur le temps T . Il vient
s s
2 2
φ1 (t) = cos(2πfc t) φ2 (t) = − sin(2πfc t), (7.29)
T T
Remarquons par ailleurs que φ1 (t) ⊥ φ2 (t) au sens du produit scalaire suivant
K Z T
φ1 (t) φ2 (t) = φ1 (t)φ2 (t)dt = 0 (7.30)
0
√ µ √ ¶ µ ¶
π π
si (t) = Eφ1 (t) cos (2i − 1) + Eφ2 (t) sin (2i − 1) i = 1 . . . 4,
4 4
(7.31)
l’ensemble des quatre signaux possibles est alors
s s
E E
si (t) = ± φ1 (t) + ± φ2 (t) i = 1 . . . 4, (7.32)
2 2
I 2
Eb 2
Eb 2 Eb
2
I 1
Eb 2
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
I 2
01 11
Eb 2
Eb 2 Eb
2
I 1
Eb 2
00 10
130 TBA1
H. Dedieu Modulations numériques
0.5
Voix I
−0.5
−1
0 0.5 1 1.5 2 2.5 3 3.5 4
0.5
Voix Q
−0.5
−1
0 0.5 1 1.5 2 2.5 3 3.5 4
1.5
1
Signal QPSK
0.5
0
−0.5
−1
−1.5
0 0.5 1 1.5 2 2.5 3 3.5 4
TBA1 131
Modulations numériques H. Dedieu
T T T
E
2
E
2
0 1 1
I 1
2
T
cos(2Sfct)
Signal BPSK
Encodeur
Séquence
NRZ Démultiplexeur
binaire
bipolaire
I 2
2
T
sin(2Sfct)
011010
E
2
E E
2 2 T=2Tb
0 1 1 0 1 0
E
Tb
2
1 0 0
T T T
132 TBA1
H. Dedieu Modulations numériques
Z T Z T Z T
φ21 (t)dt = 1 φ22 (t)dt = 1 φ1 (t)φ2 (t)dt = 1 (7.33)
0 0 0
Z T ÃZ ! µ ¶ √ ÃZ T ! µ ¶
√ T π π
si (t)φ1 (t)dt = E φ21 (t)dt
cos (2i − 1) + E φ2 (t)φ1 (t)dt sin (2i − 1) ,
0 0 4 0 4
(7.35)
soit en tenant compte de l’orthogonalité de φ1 (t) et φ2 (t) telle que décrite par
l’équation (7.33), il vient,
s
Z T √ µ ¶
π E
si (t)φ1 (t)dt = E cos (2i − 1) =± . (7.36)
0 4 2
De manière similaire, en utilisant φ2 (t) au lieu de φ1 (t), on trouverait,
s
Z T √ µ ¶
π E
si (t)φ1 (t)dt = E sin (2i − 1) =± . (7.37)
0 4 2
Autrement dit, les produits scalaires de si (t) par les fonctions φ1 (t) et φ2 (t)
redonnent les composantes de l’espace du signal selon les axes φ1 (t) et φ2 (t). Cha-
cune de ces deux composantes nécessite un calcul qui dure T secondes correspon-
dantes à l’intégration de 0 à T . Par multiplexage de ces deux composantes on peut
retrouver la séquence NRZ bipolaire qui avait été utilisée à la modulation. L’en-
semble de la démodulation est schématisée à la Figure 7.13.
TBA1 133
Modulations numériques H. Dedieu
T T T
E
2
Tb
E
2
E
0 1 1
2
Décision
³
T
toutes les T
0 E
sec.
2
0 1 1 0 1 0
I 1
2
T
cos(2Sfct)
si(t) Démultiplexeur Décodeur
Tb=T/2 NRZ
I 2
2
T
sin(2Sfct) message
binaire
Décision 0 1 1 0 1 0
³
T
toutes les T
0 sec.
E 1 0 0
2
E
2
T T T
134 TBA1
H. Dedieu Modulations numériques
où
N0
E[w(t)]2 = (7.39)
2
Après démodulation sur la voie I, on trouve à l’instant T où se fait la décision,
Z T Z T µ Z T ¶
π
xI = si (t)φ1 (t)dt + φ1 (t)w(t)dt = cos (2i − 1) + φ1 (t)w(t)dt,
0 0 4 0
(7.40)
soit s
E ZT
xI = ± + φ1 (t)w(t)dt (7.41)
2 0
On trouverait de même
N0
E[w22 ] = (7.45)
2
TBA1 135
Modulations numériques H. Dedieu
136 TBA1
H. Dedieu Modulations numériques
4
BPSK
QPSK
Comparaison des spectres BPSK et QPSK en bande de base
3.5
2.5
1.5
0.5
0
−4 −3 −2 −1 0 1 2 3 4
Tb.f
TBA1 137
Modulations numériques H. Dedieu
Déterminer la probabilité d’erreur d’un tel système de transmission lorsque l’on ef-
fectue une démodulation cohérente avec une erreur de phase ψ, c’est-à-dire lorsque
le système de synchronisation produit un signal
s
2
r(t) = cos(2πfc t + ψ)
Tb
N0
On supposera un bruit de démodulation w(t) Gaussien de variance σb2 = 2
. On
supposera que fc est un multiple de T1b .
138 TBA1
H. Dedieu Modulations numériques
TBA1 139