Vous êtes sur la page 1sur 75

MINISTERE DE L'ENSEIGNEMENT SUPERIEUR ET DE LA RECHERCHE SCIENTIFIQUE

UNIVERSITE HASIBA BEN BOUALI CHLEF

FACULTE DE TECHNOLOGIE

DEPARTEMENT D'ELECTRONIQUE

Polycopié de
Cours & Travaux Dirigés

Codage de Canal

Réalisé par
MOSTARI LATIFA

Année universitaire 2016/2017


Préface ....................................................................................................................................... I

Chapitre I- Codes Correcteurs d'Erreurs: une Introduction ......................................... 111


I.1 De la théorie de communications au codage ........................................................................ 1
I.2 Principe des codes correcteurs d'erreurs .............................................................................. 1
I.3 Avantages et inconvénients ................................................................................................... 2
I.4 Distinction entre détection et correction d'erreurs ............................................................... 2
I.5 Classification des codes correcteurs d'erreurs ...................................................................... 3
I.6 Mesure des performances des codes correcteurs d'erreurs .................................................. 4
I.7 Rappels sur les propriétés du corps de Galois ...................................................................... 5

Chapitre II- Codes en Bloc ................................................................................................... 11


II.1 Définition .......................................................................................................................... 11
II.2 Représentation matricielles des codes en bloc linéaires ................................................... 11
II.2.1 Code a contrôle de parité linéaire ............................................................................. 11
II.2.2 Matrice de contrôle de parité .................................................................................... 13
II.2.3 Décodage syndromique ............................................................................................. 14
II.2.4 Code dual .................................................................................................................. 14
II.3 Détection et correction d'erreurs d'un code en bloc .......................................................... 14
II.3.1 Distance de Hamming ............................................................................................... 14
II.3.2 Distance minimale .................................................................................................... 14
II.4 Présentation de quelques codes en blocs linéaires ............................................................ 17
II.4.1 Code de Hamming .................................................................................................... 17
II.4.2 Code de parité ........................................................................................................... 18
II.4.3 Code à longueur maximale ....................................................................................... 19
II.4.4 Code à répétition ....................................................................................................... 19
II.5 Performances des codes en bloc linéaires ......................................................................... 19
Chapitre III- Codes Cycliques ............................................................................................. 21
III.1 Définition ........................................................................................................................ 21
III.2 Propriétés des corps finis.................................................................................................. 21
III.3 Représentation des codes cycliques ................................................................................ 22
III.4 Polynôme générateur d'un code cyclique ........................................................................ 22
III.5 Procédure de codage systématique .................................................................................. 24
III.6 Racine primitive nième de l'unité .................................................................................... 26
III.7 Présentation de quelques codes cycliques . ...................................................................... 26
II.7.1 Code BCH ................................................................................................................. 26
II.7.2 Code de Reed-Solomon ............................................................................................ 29
II.7.3 Code de Golay ........................................................................................................... 32
II.7.4 Code pour détection d'erreurs en paquets ................................................................. 32
III.8 Réalisation du codeur cyclique ........................................................................................ 33
III.9 Décodage des codes cycliques- calcul de syndrome ....................................................... 33

Chapitre IV- Codes Convolutifs ........................................................................................... 36


IV.1 Définition ........................................................................................................................ 36
IV.2 Principe de codage ........................................................................................................... 37
IV.3 Représentation des codes convolutifs ............................................................................ 37
IV.3.1 Digramme en treillis ................................................................................................ 38
IV.3.2 Digramme en arbre .................................................................................................. 39
IV.3.3 Diagramme d'état ..................................................................................................... 40
IV.4 Décodage des codes convolutifs ...................................................................................... 40
IV.4.1 Algorithme de Viterbi ............................................................................................. 41
IV.4.2 Décodage séquentiel ................................................................................................ 43
IV.5 Performances des codes convolutifs ............................................................................... 43
IV.6 Quelques exemples de codes ........................................................................................... 44
IV.6.1 Codes catastrophiques ............................................................................................. 44
IV.6.2 Codes convolutifs poinçonnés ................................................................................. 45

Chapitre V- Codes Concaténés ............................................................................................ 47


V.1 Codes concaténés à un niveau .......................................................................................... 47
V.2 Codes concaténés à un multiniveaux ................................................................................. 49
V.3 Techniques d'entrelacement et de désentrelacement ....................................................... 49
V.4 Concaténation binaire ........................................................................................................ 51

Chapitre VI- Turbo-Codes ................................................................................................... 52


VI.1 Définition ........................................................................................................................ 52
VI.2 Conception des turbo-codes ............................................................................................. 52
VI.3 Analyse des performances des turbo-codes .................................................................... 55
VI.4 Décodage itératif .............................................................................................................. 55

Chapitre VII- Modulation Codée en Treillis ...................................................................... 56


VII.1 Introduction .................................................................................................................... 56
VII.2 Construction du code ...................................................................................................... 61
VII.3 Analyse des performances ............................................................................................. 62

Travaux Dirigés ..................................................................................................................... 63

Conclusion Générale ............................................................................................................. 69

Bibliographie 70
................................................................................................................................................ 707

......................................................................................................................................................
Préface
__________________________________

Le mathématicien Shannon était capable de montrer théoriquement une transmission


sans erreurs sans donner le code correcteur d’erreurs qui permet de réaliser la solution de
correction des erreurs. Après cette théorie, des recherches ont été faites afin de réaliser le code
correcteur d’erreurs. Dans le but d’atteindre la limite théorique de Shannon et d’avoir un bon
compromis performance/complexité. Deux grandes familles de codes correcteurs d'erreurs ont
été introduites : les codes en blocs et les codes convolutifs.

Il existe deux catégories de codes en bloc : les codes en bloc linéaires et non-linéaires.
Les codes en bloc non-linéaires ne sont jamais employés dans les applications pratiques et ne
sont pas beaucoup étudiés. Les codes en bloc linéaires se subdivisent en plusieurs codes tels
que les codes cycliques, les codes de Reed Solomon...

Les performances d'un code binaire augmentent avec sa longueur de bloc, tandis que la
complexité de décodage augmente avec la longueur du code. Une façon d'aborder le problème
de la complexité, est de construire de bons codes qui présentent une complexité de décodage
raisonnable, est d'utiliser des codes concaténés. Les performances des codes concaténés
peuvent être améliorer avec une technique itérative utilisée pour leur décodage. Ce nouveau
schéma de code, appelé turbo-code, permet d'atteindre la limite de Shannon. Les codes les
plus performants sont associés a des modulations d'ordre élevé pour les transmission à haut
débit dans des bandes de fréquence étroite tel que les modulation codées en treillis.

Dans ce cours, on s'intéresse aux codes correcteurs d'erreurs et leurs différents types.
Ainsi, on étudie les modulations codées. Le chapitre 1 présente une introduction des codes
correcteurs d'erreurs. Les chapitres 2, 3 et 4 montrent respectivement les codes en bloc, les
codes cycliques et les codes convolutifs. Les codes concaténés sont illustrés dans le chapitre
5. Le chapitre 6 discute les turbo-codes. Enfin, le cours se termine avec les modulations codée
en treillis.

I
Chapitre I
Codes Correcteurs d'Erreurs: une
Introduction
___________________________________________________________________________

I.1 De la théorie des communications au codage

La communication est devenue aujourd’hui un besoin essentiel de la vie de tous les


jours. Avec la démocratisation d’Internet, de la téléphonie mobile, les exigences des
utilisateurs deviennent de plus en plus grandes et diverses.

En effet, on recherche tout d’abord à pouvoir communiquer depuis n’importe ou, aussi
bien en contexte fixe que mobile. On demande également à ce que les données échangées
soient aussi bien de la voix, de la vidéo, des images, que des messages instantanés ou bien
même des données informatiques.

Face à de telles exigences, les communications numériques constituent une solution


désormais incontournable. Une solution parmi d’autres, est de pouvoir augmenter l’efficacité
spectrale tout en garantissant une qualité de transmission inchangée.

En 1948, le mathématicien Shannon prouve théoriquement qu’il existe une efficacité


spectrale limite maximal si on souhaite une transmission sans erreurs. Shannon était capable
de donner une limite sans donner le code qui permet la correction des erreurs. Après des
recherches ont été faites afin de réaliser la solution de codage. Le but est de se rapprocher au
maximum de la limite de Shannon et d’obtenir un bon compromis performance/complexité.

Afin de réaliser la solution de codage, des efforts intensifs de recherches ont été faits
dans le monde entier. L’essentiel est de réaliser un code correcteur d'erreurs permettant de se
rapprocher à la limite de Shannon, et aussi d’atteindre un bon compromis
performance/complexité.

I.2 Principes des codes correcteurs d’erreurs

Le codeur correcteur d’erreurs également appelé codeur de canal ajoute des bits de
redondance au message qui ne porteront pas d’information mais qui permettront de détecter

1 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre I- Codes Correcteurs d'Erreurs: une Introduction

et/ou de corriger les erreurs de transmission à la réception.

I.3 Avantages et inconvénients

Le codeur correcteur d’erreurs permet de transmettre le message avec la fiabilité


maximum. Plus le nombre de bit de redondance augmente, Plus la correction des erreurs est
meilleur. Cependant, plus le message est long plus l’usage d’un canal coûte cher.

Ainsi, la mémoire à code correcteur d'erreurs est plus couteuse que la mémoire
conventionnelle en raison du matériel supplémentaire nécessaire pour la produire et de plus
faibles volumes de production de cette mémoire et des composantes associées.

Une mémoire à code correcteur d'erreurs peut être de 2 à 3 pour cent plus lente qu'une
mémoire conventionnelle en raison du temps additionnel nécessaire pour la vérification et la
correction des erreurs.

Par conséquent, il y a un compromis entre la correction des erreurs et le coût plus


élevé de la mémoire et du canal.

I.4 Distinction entre détection et correction d'erreurs

Les méthodes de correction des erreurs se regroupent principalement en deux modes


d'utilisation :

 Correction par retransmission (ARQ: Automatic Repeat Request) ;


 Auto-correction (FEC: Forward Error Correction).

L'objectif du mode ARQ est l'ajout d'une petite quantité de redondance au message, de
manière à permettre la détection d'éventuelles erreurs de transmission. Dans le cas d'une
détection d'erreurs, le décodeur demande la retransmission du message erroné.

Par contre, dans le cas du mode FEC, la redondance introduite permet de détecter et
corriger au niveau du décodeur un nombre fini d'erreurs. La quantité de redondance nécessaire
est naturellement plus grande pour le mode FEC que pour le mode ARQ.

Le principal désavantage du mode FEC est l'utilisation constante d'une plus large
bande passante, même en l'absence d'erreurs. Cette méthode s'applique surtout pour des

2 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre I- Codes Correcteurs d'Erreurs: une Introduction

systèmes de transmission où le retard de retransmission n'est pas acceptable. Généralement,


pour des systèmes ayant des taux d'erreurs raisonnables, les coûts liés aux demandes et aux
retransmissions des blocs de signaux erronés (mode ARQ) sont normalement moins
importants que ceux causés par l'usage d'une bande passante plus large (mode FEC).

On observe que pour des applications supportant un retard de retransmission, un mode


mixte ou hybride (ARQ-FEC) permettant de bénéficier des avantages des deux approches est
couramment utilisé. Grâce à la redondance fournie par le mode FEC, le système cherche
d'éventuelles erreurs qui sont ensuite corrigées. Si le taux d'erreurs est supérieur à celui
supportable par la méthode FEC, la méthode ARQ intervient en exigeant la retransmission du
message.

I.5 Classification des codes correcteurs d'erreurs

Jusqu’aux années 80, le code permettant d’atteindre la limite de Shannon avec une
complexité raisonnable n’était pas encore introduit. Deux grandes familles de code correcteur
d’erreurs ont été imposées sont : les codes en bloc qui se subdivisent en plusieurs types et les
codes convolutifs.

Les performances d'un code binaire augmentent avec sa longueur de bloc N, tandis que
la complexité de décodage d'un code binaire de dimension N est de l'ordre de O(N). Une
approche de ce problème est de réduire la complexité de décodage. Une façon d'aborder le
problème, est de construire de bons codes qui présentent une complexité de décodage
raisonnable, est d'utiliser des codes concaténés.

La stratégie de la concaténation de codes est de construire des codes correcteurs


d'erreurs puissants en combinant, en parallèle, en série ou hybride, deux ou plusieurs codes
correcteurs d'erreurs, en blocs ou convolutifs, de longueurs faibles à modérées avec une
complexité de décodage raisonnable.

En 1993 Berrou a montré que les performances des codes concaténés peuvent être
améliorer avec une technique itérative utilisée pour leur décodage. Ce nouveau schéma de
code, appelé turbo-code, permet d'atteindre la limite de Shannon. Les turbo-codes peuvent
être des turbo-codes en bloc ou des turbo-codes convolutifs selon le type des codes

3 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre I- Codes Correcteurs d'Erreurs: une Introduction

concaténés. Ainsi, selon le type de la concaténation, parallèle ou série, on peut avoir des
turbo-codes parallèles ou séries.

Après la puissance du décodage itératif qui a été mise en évidence grâce à l'invention
des turbo-codes. Les codes LDPC (Low-Density Parity-Check), qui ont été négligés, à cause
de leur complexité, pendant de longues années depuis leur introduction par Gallager en 1962,
ont été redécouverts par Mackay en 1995 et Spieleman et autres en 1996. Les codes LDPC
sont des codes en blocs permettent aussi d'atteindre la limite de Shannon, leur décodage se fait
selon le principe de décodage itératif.

I.6 Mesure des performances des codes correcteurs d’erreurs

On mesure les performance d’un code correcteur d’erreurs par l’évaluation du Taux
d’Erreurs Binaires (TEB), à la sortie du décodeur au niveau du récepteur, en fonction du
rapport signal à bruit (SNR  Eb N 0 (dB) où Eb étant l’énergie reçue par symbole binaire
d’information transmis et N0 la densité spectrale de puissance du bruit contenue dans la
bande).

𝑛𝑜𝑚𝑏𝑟𝑒 𝑑𝑒 𝑠𝑦𝑚𝑏𝑜𝑙𝑒𝑠 𝑏𝑖𝑛𝑎𝑖𝑟𝑒𝑠 𝑒𝑟𝑟𝑜𝑛 é𝑠


𝑇𝐸𝐵 = 𝑛𝑜𝑚𝑏𝑟𝑒 (I.1)
𝑑𝑒 𝑠𝑦𝑚𝑏𝑜𝑙𝑒𝑠 𝑏𝑖𝑛𝑎𝑖𝑟𝑒𝑠 𝑡𝑟𝑎𝑛𝑠𝑚𝑖𝑠

L'efficacité d'un codeur de canal se reflète dans le gain de codage (figure I.1).

Système non codée


𝑇𝐸𝐵
10-2 Système codé

10-5

10-6

Gain de
codage à 10-5

0 2 4 6 8 10 12 14 16 𝐸𝑏 𝑁0 𝑑𝐵

Figure I.1- Illustration du gain de codage pour


un 𝑇𝐸𝐵 = 10−5

4 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre I- Codes Correcteurs d'Erreurs: une Introduction

I.7 Rappels sur les propriétés du corps de Galois

Les corps de Galois font partie d’une branche particulière des mathématiques qui
modélise les fonctions du monde numérique. La dénomination « corps de Galois » provient
du mathématicien français Galois qui en a découvert les propriétés fondamentales.

Il y a deux types de corps, les corps finis et les corps infinis. Les corps de Galois finis
sont des ensembles d’éléments fermés sur eux-mêmes. L’addition et la multiplication de deux
éléments du champ donnent toujours un élément du corps fini.

I.7.1 Définition

Un corps de Galois à q  2 m éléments noté GF q  , où m est un entier positif. Le corps


de Galois consiste en un ensemble de nombres, ces nombres sont constitués à l’aide de
l’élément de base  comme suit :

 
GF q   0,  0 ,  1 , , q2 avec  q1  1 (I.2)

Avec  est l’élément primitif du corps de Galois GF q  .

GF q  est formé à partir du corps de base GF 2 , où GF 2  0, 1.

  
Exemple 1 : GF 4  0,  0 ,  1 ,  2  0, 1,  ,  2 
I.7.2 Polynôme primitif

Le polynôme primitif, ayant  comme racine, est utilisé pour construire le corps
GF q  , il est sous la forme suivante :

P   p0  p1.  p2 . 2    pm . m (I.3)

Le polynôme primitif doit être :

 irréductible c’est-à-dire être non factorisable dans GF 2 (autrement dit 0 et 1 ne


sont pas racines de P  ;
 de degré m ;

5 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre I- Codes Correcteurs d'Erreurs: une Introduction

 à coefficients dans GF 2 (c-à-d pi  0 ou 1 , avec i  0,, m ) ;


m
1
 diviseur de x 2  1 , où l’opération de la division se faite modulo 2.

 Détermination du polynôme primitif

Prenons un exemple d’un corps de Galois GF 4 , avec m  2 , et on détermine son


polynôme primitif comme suit :

Pour m  2 on peut avoir 2 m  4 polynômes de degré m :

P1  x   1  x  x 2
P2  x   1  x 2
(I.4)
P3  x   x  x 2
P4  x   x 2

Pour déterminer le polynôme irréductible, on remplace 0 et 1 dans chaque polynôme et


on prend le polynôme où 0 et 1 ne sont pas des racines (c-à-d P0  0 et P1  0 ). On trouve

que P1 x   1  x  x 2 est un polynôme irréductible.

m 2
1
On fait la division polynomiale : la division de x 2  1  x 2 1  1  x 3  1 par

P1 x   1  x  x 2 . On trouvé le reste = 0. Donc, le polynôme P1 x  est diviseur x 2


m
1
1 .

Par conséquent : le polynôme P1 x   1  x  x 2 est un polynôme primitif du corps


GF 4 .

Comme mentionné ci-dessus, l’élément  est racine du polynôme primitif, on peut en


déduire :

P x   1  x  x 2
P   1     2 (I.5)
0  1    2   2   1

Toutes les opérations dans le corps de Galois sont faites modulo 2 et modulo
polynôme primitif. Donnons pour le corps GF 4 , à titre d’exemple, les règles régissant les

6 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre I- Codes Correcteurs d'Erreurs: une Introduction

opérations d’addition (Tableau I.1) et de multiplication (Tableau I.2). Les opérations sont

faites modulo 2 et modulo     1 .


2

+ 0 1  2  0 1  2
0 0 1  2 0 0 0 0 0
1 1 0 1 0 1  2
1    2 1  2  
  0  0  2  3 1
1    2   2 1
0 2 0 2  3 1  4 
2 2 1  2     2 1
Tableau I.1- Adition dans GF 4 Tableau I.2- Multiplication dans GF 4

I.7.3 Représentation des éléments du GF q 

Les éléments du corps de Galois GF q  sont définis modulo polynôme primitif.


Chaque élément de ce corps peut être représenté par deux types de
représentations polynomiale et binaire :

 Représentation polynômiale : l’élément est représenté par un polynôme de


degré égal à (m-1) et à coefficient dans GF 2 , sous la forme :

 m1 x m1   m2 x m2     .x   0 (I.6)

Avec :   éléments dans GF 2


m1 0

 Représentation binaire : l’élément est représenté par une séquence des


éléments dans GF 2 , sous la forme :

 m1 m2 m3  0 (I.7)

Où   correspondent aux éléments de l’équation (I.3).


m1 0

Le tableau (I.3) illustre les différentes représentations des éléments du corps de Galois
GF 16 .

7 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre I- Codes Correcteurs d'Erreurs: une Introduction

Eléments Représentation polynomiale Représentation


du corps binaire
0 0 0000
1 1 0001
  0010

2 2 0100

3 3 1000

4   1(polynôme primitif) 0011

5  . 4   .  1   2   0110

6  . 5   . 2      3   2 1100

7  . 6   . 3   2    4   3   3    1 1011

8  4 . 4    1  1   2  1  2.   2  1 0101

9  . 8   . 2  1   3   1010

 10  . 9   . 3      4   2   2    1 0111

 11  . 10   . 2    1   3   2   1110

 12  . 11   . 3   2      4   3   2   3   2    1 1110

 13  . 12   . 3   2    1 1101
 4  3  2   1 3  2   3  2 1

 14  . 13   . 3   2  1 1001
  4   3      1   3     3  2.  1   3  1

Tableau I.3- Représentations des éléments du corps de Galois GF 16

I.7.4 Polynôme minimal à coefficients dans GF 2 associé à un élément d’un

corps de Galois GF q 

Le polynôme minimal m x  à coefficient dans GF 2 associé à un élément

quelconque  d’un corps de Galois GF q  , est un polynôme de degré au plus égal à

m  log 2 q  , ayant  comme racine :

8 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre I- Codes Correcteurs d'Erreurs: une Introduction

 
m
m  x    x   2
 i 1 

i 1 (I.8)

m x   x     x    x    .  x   2
  4
  2 m 1 

Exemple 2

La détermination du polynôme minimal associé à    dans GF 16 , se fait comme


suit :

m  4  m x   x   .x   2 . x   4 . x   8  (I.9)

On remplace  par  , m x  devient :

    
m  x    x   . x   2 . x   4 . x   8
m x   x   x   .x   x   x   .x   
2 2 3 2 8 4 12 (I.10)
m x   x     .x   x     .x   
2 2 3 2 8 4 12

 2       1   . 4   5
(polynôme primitif     1)
4
Avec :
       1   .  
8 4 4 4 4 5

L’équation (I.10) devient :


m x   x 2   5 .x   3 x 2   5 .x   12   (I.11)
  
 x 4   5   5 .x 3   12   10   3 .x 2   17   8 .x   15   

Avec     0
5 5
; où      15  1 (voir l’équation I.2)
q 1 161

 17   2 . 15   2 .1   2

L’équation (I.11) devient :


m x   x 4   12   10   3 .x 2   2   8 .x  1    (I.12)

Pour faire la sommation      et  2   8 : on remplace chaque élément par sa


12 10 3

représentation binaire et on fait la sommation.

9 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre I- Codes Correcteurs d'Erreurs: une Introduction

 12 : 1111
  2 : 0100
 10 : 0111 et 
  8 : 0101
 3 : 1000  0001
 0000

La représentation binaire 0000 correspond à l’élément du corps 0 et 0001 correspond à


l’élément 1. Donc, le polynôme minimal associé à    dans GF 16 est m x   x 4  x  1

On remarque que le polynôme minimale associé à  est le polynôme primitif. De la

même manière on calcule le polynôme minimale associé à  ou  …


3 4

10 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre II
Codes en Bloc
___________________________________________________________________________

II.1 Définition

Le codage en bloc s’effectue par bloc de symboles, la séquence d’information est


segmentée en bloc de longueur fixe, il y a K symboles dans chaque bloc. On va ajouter de la
redondance, on va ajouter M  N  K symboles, c'est-à-dire que le bloc final à transmettre
possède N N  K  symboles. Les M symboles introduits par le codeur sont appelés symboles
de contrôle ou de parité. Ces symboles offrent une grande diversité.

II.2 Représentation matricielle des codes en blocs linéaires

II.2.1 Code à contrôle de parité linéaire

Un code en bloc linaire est une application biunivoque entre des blocs de K symboles
issus de la source d’informations, appelés message ou mot d’information, et des blocs de N
symboles, appelés mot de code. La figure II.1 montre le principe de codage en bloc linéaire.

Chaque code en bloc est défini par la quantité suivante qui s’appelle le rendement:

𝑛𝑜𝑚𝑏𝑟𝑒 𝑑𝑒 𝑠𝑦𝑚𝑏𝑜𝑙𝑒𝑠 𝑑′𝑒𝑛𝑡𝑟 é𝑒 𝐾


𝑅= =𝑁 (II.1)
𝑛𝑜𝑚𝑏𝑟𝑒 𝑑𝑒 𝑠𝑦𝑚𝑏𝑜𝑙𝑒 𝑑𝑒 𝑠𝑜𝑟𝑡𝑖𝑒

Les symboles prennent leurs valeurs dans le corps de Galois.

Mot d’information Mot de code


D  d1 d 2 d 3 d K  Code en bloc C  c1 c2 c3 c N 
G K  N 

Figure II.1- Codage en bloc

G est la réponse du code définissant aussi les codes en bloc, et celle-ci est déterminée
par une matrice génératrice de taille 𝐾 × 𝑁, où K : le nombre de colonnes et N : le nombre de
lignes.

11 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre II- Codes en Bloc

En effet, puisque le code est linéaire (la correspondance entre la sortie et l’entrée est
une fonction linéaire), la convolution temporelle correspond à la multiplication polynomiale.
On passe du message M au mot de code C par la matrice génératrice G :

C  M .G (II.2)

Avec K symboles d’entrée, on peut construire 2 K messages, le codeur va donc utiliser


2 K mots de code choisis parmi 2 N possibilités.

La matrice génératrice est toujours équivalente à une forme particulièrement simple,


construisant des codes appelés codes systématiques. C’est le cas le plus utilisé, dont la matrice
systématique s’obtient à partir de la matrice génératrice du code non-systématique.

 Code en bloc systématique

Un code est systématique si les symboles d’entrées sont toujours retrouvés intacts dans
la séquence de symboles codés à la sortie du code. Le mot de code est représenté sous la
forme suivante :

C  cK 1 c N , d1 d K  (II.3)

La matrice génératrice G prend alors la forme suivante :

 q11  q1, N  K 1 0  0
 
 q21  q2, N  K 0 1  0
G (II.4)
      
 
 qK1  qK , N K 1 0  1 

La matrice G peut se mettre sous la forme :

G  Q, I K  (II.5)

Où I K est la matrice unité à K lignes et à K colonnes et Q une matrice à K ligne et

N  K  colonnes qui caractérise le code. La figure II.2 illustre le schéma d’un code en bloc
sous la forme systématique.

12 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre II- Codes en Bloc

Mot d’information Mot d’information


D  d1 d 2 d K  D  d1 d 2 d K 

Bloc de parité
Code en bloc P  c K 1 c K  2  c N 
systématique

Figure II.2- Code en bloc systématique

A partir de la matrice génératrice on peut déterminer une matrice définissant le


décodeur d’un code en bloc et elle possède encore une forme particulièrement simple. Cette
matrice est appelée matrice de contrôle de parité. Elle permet comme nous allons le voir de
détecter les erreurs de transmission.

II.2.2 Matrice de contrôle de parité

Pour une matrice systématique G de taille 𝐾 × 𝑁, avec K lignes indépendantes, on


peut toujours trouver une matrice H de dimension 𝑀 × 𝑁, non nulle qui vérifie la relation
suivante:

G.H T  0 (II.6)

Où l’indice T indique la transposition.

Compte-tenu de la matrice G, la matrice H est égale à :

1 0  0 q11  q1, K 
 
0 1  0 q21  q2 , K 
H   (II.7)
      
 
0 0  1 q N  K ,1  q N  K , K 

Qui peut encore s’écrire :


H  I N  K , QT  (II.8)

Où I N  K est une matrice unité à M ligne et à M colonnes.

13 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre II- Codes en Bloc

Les mots de code doivent être suffisamment différents les uns des autres pour avoir de
meilleures performances. Cette distinction est caractérisée par un paramètre important qui
explique les performances d’un code correcteur d’erreurs en terme de probabilité d’erreur,
appelé distance minimale.

II.2.3 Décodage syndromique

l’algorithme de décodage par syndrome.

Entrée: Un mot bruité y, la matrice de parité H (sous forme systématique).

Sortie: Le message d’origine v.

1. Calculer le syndrome s=Hy;


2. Chercher l’erreur e telle que s=He;
3. Calculer le mot de code c=y+e;
4. Le message d’origine se trouve dans les k premières composantes de c.

II.2.4 Code dual

Le code dual d'un code linéaire C de dimension k est un code de même longueur n et
de dimension n - k. Dans le cas d'un code systématique, la matrice de contrôle de C devient
une matrice génératrice de son dual. De même une matrice génératrice de C est une matrice de
contrôle de son dual.

II.3 Détection et correction d'erreurs d'un code en blocs

II.3.1 Distance de Hamming

La distance de Hamming entre deux mots de code est égale au nombre de symboles
binaires codés différents entre les séquences associées à chacun des deux mots de code.

II.3.2 Distance de minimale

La distance minimale d min , est définie comme la plus petite distance de Hamming
existant entre deux mots de code.

14 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre II- Codes en Bloc

La recherche de la distance minimale bénéficie de la propriété de linéarité des codes


en bloc, qui permet de se concentrer uniquement sur les distances entre les mots de code
potentiels et le mot de code zéro. Le mot de code "zéro" est le message codé contenant une
séquence de zéros, générée par le codage d'une série de bits d'informations 'zéro'.

De ce fait, la distance minimale est aussi égale au poids minimal wH des mots de code
non-nuls. Le poids d’une séquence est le nombre de bit égal à 1.

d min  min wH Ci  Ci  0; 


i  1, , 2 K  1  (II.9)

Lorsque le nombre de mots de code est très élevé, la recherche de la distance minimale
peut s’avérer laborieuse. Une première solution pour contourner cette difficulté est de
déterminer la distance minimale à partir de la matrice de contrôle de parité: La propriété

d’orthogonalité C.H  0 implique que la somme de d min colonnes de la matrice de contrôle


T

de parité est nulle. Ainsi d min correspond au nombre minimal de colonnes de la matrice de
contrôle de parité linéairement dépendantes.

 Principe de la détection des erreurs

Considérons le modèle de transmission de la figure II.3.

Erreurs
E  e1 e N 

Mot d’information Mot de code Mot reçu Mot estimé


D  d1  d K  Codeur C  c1 c N  
C '  c1'  cN'  Décodeur 
Dˆ  dˆ1  dˆ K 
G K  N  H M  N 
Chaine

Figure II.3- Modèle de transmission simplifié utilisant le codeur


et le décodeur en bloc

'
Soit C le mot reçu, constitué de N symboles binaires lorsque le mot de code C est
émis :

C'  C  E (II.10)

15 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre II- Codes en Bloc

Où E est un mot de N symboles binaires qui représente les éventuelles erreurs de


transmission.

En utilisant la matrice de contrôle de parité pour détecter les erreurs de transmission.


Une propriété importante pour n’importe qu’elle type de code en bloc est donnée par :

C ' .H T  0  C ' n' est pas un mot de code (II.11)

'
Si on multiplie le mot reçu C par la matrice de contrôle de parité transposée, on
obtient :

S  C ' .H T  C.H T  E.H T  M .G.H T  E.H T (II.12)

En tenant compte que G.H  0 , on obtient :


T

S  E.H T (II.13)

S s’appelle le syndrome, il permet de détecter les erreurs de transmission. Le


syndrome S peut être nul ou pas, notons que H est une matrice non-nulle :

 1er cas : S  0 signifie deux possibilités

- E est identiquement nul alors il n’y a pas d’erreurs de transmission ;


- E est égal à un mot de code. Dans ce cas on ne peut pas détecter les erreurs de
transmission.

 2ème cas : S  0

- E est différent de zéro et les erreurs de transmission sont détectées.

 Principe de la correction des erreurs

La correction des erreurs consiste à rechercher le mot de code émis C c'est-à-dire à


réaliser un décodage de C à partir du mot reçu C' . Deux stratégies sont possibles :

 Un décodage à entrée ferme ou pondéré et à sortie ferme ;

16 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre II- Codes en Bloc

 Un décodage à sortie pondérée.

Un décodage à entrée ferme, c’est-à-dire l’entrée du décodeur est constituée par des
symboles binaires, la règle de correction consiste à choisir pour un mot de code émis, celui
qui est à la distance de Hamming minimale du mot reçu.

Un décodage à entrée pondérée, c’est-à-dire l’entrée du décodeur est constituée par


des échantillons analogiques, on remplace la distance de Hamming par la distance
Euclidienne.

Chaque type de codes en bloc à ses propres algorithmes de décodage. Le bon code est
celui qui corrige plus d’erreurs et à moins de complexité de décodage.

II.4 Présentation de quelques codes en blocs

Il existe deux catégories de codes en bloc : les codes en bloc linéaires et non-linéaires.
Les codes en bloc non-linéaires ne sont jamais employés dans les applications pratiques et ne
sont pas beaucoup étudiés. Les codes en bloc linéaires se subdivisent en plusieurs codes tels
que les codes de Hamming, les codes de parité, les codes à longueur maximale, les codes à
répétition...

II.4.1 Code de Hamming

Pour un code de Hamming les colonnes de la matrice de contrôle de parité sont les
représentations binaires des nombres de 1 à n. Chaque colonne étant constituée de m  n  k 
symboles binaires, les paramètres du code de Hamming sont donc :

n  2m 1 , k  2m  m 1 (II.14)

Les colonnes de la matrice de contrôle de parité étant constituées par toutes les
combinaisons possibles de n  k  symboles binaires sauf 0 00 , la somme de deux
colonnes est égale à une colonne. Le nombre minimal de colonnes linéairement dépendantes
est de 3. La distance minimale d’un code de Hamming est donc égale à 3, quelle que soit la
valeur des paramètres n et k.

17 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre II- Codes en Bloc

Exemple

Soit un code de Hamming de paramètre m = 3. Les mots de code [c1 c2 c3 c4 m3 m2 m1]


et les blocs de données [m3 m2 m1] sont alors respectivement constitués de n = 7 et k = 4
symboles binaires. Prenons c1=m1+m2+m3, c2 = m2+m3, c3 = m1+m3, c4 = m1+m2, la matrice
de contrôle de parité peut être la suivante :

1 1 1 0 1 0 0
H  1 1 0 1 0 1 0  P T I 3  
1 0 1 1 0 0 1

Et la matrice génératrice correspondante est égale à :

1 0 0 0 1 1 1
0 1 0 0 1 1 0
G  I 4 P 
0 0 1 0 1 0 1
 
0 0 0 1 0 1 1

II.4.2 Code de parité

Ce code utilise un symbole binaire de redondance n  k  1 déterminé de façon à


assurer la nullité modulo 2 de la somme des symboles de chaque mot de code.

k 1
c  d 0 d1 d k 2 d k 1 cn1  avec cn1   d j
j 0
(II.15)

Où d  d 0 d1 d k 2 d k 1  représente les symboles de données. La distance minimale


de ce code est de 2.

Exemple

Une matrice génératrice G de ce code pour n = 5, k = 4 est égale à :

1 0 0 0 1
0 1 0 0 1
G  I 4 P 
0 0 1 0 1
 
0 0 0 1 1

18 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre II- Codes en Bloc

Et la matrice de contrôle de parité H se réduit à un vecteur :

H  1 1 1 1 1  PT I1  
II.4.3 Code à longueur maximale

Les colonnes de la matrice génératrice d’un code à longueur maximale sont les
représentations binaires des nombres de 1 à n. Les paramètres de ce code sont donc n  2 m  1
, k  m et on peut montrer que sa distance minimale est de 2 k 1 . Le code à longueur maximale
de paramètres n  2 m  1 , k  m est le code dual du code de Hamming de paramètres
n  2 m  1 , k  2 m  m  1 , c’est-à-dire que la matrice génératrice de l’un est la matrice de
contrôle de parité de l’autre.

II.4.4 Code à répétition

Pour ce code de paramètres k  1 et n  2m  1 , chaque donnée binaire issue de la


source d’information est répétée un nombre impair de fois. La distance minimale de ce code
est 2m  1 . Le code à répétition C 2m  1,1 est le code dual du code de parité C 2m  1, 2m .

Exemple

La matrice génératrice et la matrice de contrôle de parité de ce code, pour k = 1, n = 5,


peuvent être les suivantes :

G  1 1 1 1 1  I1 P

1 1 0 0 0
1 0 1 0 0
H 
1 0 0 1 0
 PT I 4  
 
1 0 0 0 1

II.5 Performances des codes en blocs linéaires

Les mots de code doivent être suffisamment différents les uns des autres pour avoir de
meilleures performances. Cette distinction est caractérisée par la distance minimale qui
explique les performances d’un code correcteur d’erreurs en terme de probabilité d’erreur.

19 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre II- Codes en Bloc

Un bon code est un code avec une grande distance minimale, mais il doit pouvoir être
bien décodé. Cette distance nous permet de déterminer la capacité de détection et correction
de code.

Pour une distance minimale d min d’un code en bloc, le code pourra alors détecter t d

erreurs et corriger t c erreurs :

 Le nombre d’erreurs à détecter est :

t d  d min  1 (II.16)

 Le nombre d’erreurs à corriger est:

 d min  1
 si d min est impair
tr   2 (II.17)
 d min  2 si d min est pair
 2

La distance minimale de notre exemple est égale à 4. Dans ce cas, le code pourra
détecter 3 erreurs et corriger 2 erreurs. Alors, les deux équations précédentes montrent bien
que la distance minimale détermine les performances d’un code en bloc.

20 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre III
Codes Cycliques
___________________________________________________________________________

III.1 Définition

Les codes cycliques sont des codes en bloc linéaires. Un code en bloc linéaire est dit
cyclique si : C  c0 , c1 , , c N 1  étant un mot de code alors : C1  cN 1 , c0 , , cN 2  est aussi

un mot de code.

Il est clair que cette définition entraine que tout mot de code C i obtenu à partir du mot

de code C après i permutations circulaire est aussi un mot de code.

III.2 Propriétés des corps finis

Un corps est un anneau ou tous les éléments non nuls sont inversibles. Un corps fini
est aussi appelé corps de Galois qu'on note GF(q).

Théorème: un anneau est un corps si est seulement si n est un nombre premier.

Définition: tout corps K contenant le corps F s'appelle extension de F. K est un espace


vectoriel sur F.

Théorème: soit F un corps. Alors ou bien F est une extension du corps Q des nombres
rationnels, ou bien F est une extension de Zp pour un nombre premier p uniquement
déterminé.

Corollaire: soit F un corps, alors la caractéristique de F est soit nulle, soit un nombre
premier.

Définition: soit R un anneau. la caractéristique de R est le plus petit entier m>0


lorsqu'il existe vérifiant m = 1+...+1=0. Si un tel m n'existe pas, c'est à dire pour tout m
*, m.1 ≠0, on dit alors que R est de caractéristique nulle.

21 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre III- Codes Cycliques

Lemme : soit F un corps fini de caractéristique pi, alors (a+b) pi =api + b pi pour tout a,
b F et i *.

Définition: l'ordre d'un corps fini F est le nombre d'éléments de F.

Théorème: soit F un corps fini alors l'ordre de F est pr ou p est un nombre premier et r
est un entier > 0.

III.3 Représentation des codes cycliques

Pour les codes cycliques, on utilise une représentation polynomiale des mots de code
et des blocs de données (messages). Ainsi, au mot de code C  c0 , c1 , , c N 1  on associe le

polynôme C x  de degré n  1.

C x   c0  c1 x  c2 x 2    c j x j    c N 1 x N 1
(III.1)

Et au bloc de données d le polynôme d x  de degré K  1 .

d x   d 0  d1 x  d 2 x 2    d j x j    d K 1 x K 1
(III.2)

Où d j et c j sont binaires.

III.4 Polynôme générateur d'un code cyclique

Les mots de code d’un code cyclique sont engendrés par un polynôme générateur de
degré N  K .

C x   d x .g x  (III.3)

Où le polynôme générateur g x  est de la forme

g x   g 0  g1 x  g 2 x 2    g j x j    g N K x N  K
(III.4)

Avec : g x .hx   x N  1

22 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre III- Codes Cycliques

 Matrice génératrice d’un code cyclique

À partir du polynôme générateur g x  il est possible de construire une matrice

génératrice G du code C n, k  . On se rappelle que les k lignes de la matrice G sont constitués
de k mots de code linéairement indépendants. Ces k mots de code peuvent être obtenus à partir
d’un ensemble de k polynômes indépendants de la forme :

x j g x  j  k  1, k  2,,1, 0 (III.5)

Soit d x  la représentation polynomiale d’un bloc de données quelconque. Les k mots

de code engendrés par les polynômes x j g x  ont pour expression :

C j  x j g x . d x  j  k  1, k  2,,1, 0
(III.6)

Exemple

Soit le code C 7, 4 de polynôme générateur g x   1  x 2  x 3 . Prenons pour bloc de

données d x   1 . Les 4 lignes de la matrice génératrice G sont obtenues à partir des 4 mots
de code C j x  .

C3  x   x 3  x 5  x 6
C 2 x   x 2  x 4  x 5
C1  x   x  x 3  x 4
C0 x   1  x 2  x 3

Une matrice génératrice du code C 7, 4 est égale à :

0 0 0 1 0 1 1
0 0 1 0 1 1 0
G
0 1 0 1 1 0 0
 
1 0 1 1 0 0 0

23 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre III- Codes Cycliques

III.5 Procédure de codage systématique

Lorsque les mots de code sont sous forme systématique, les données issues de la
source d’information sont séparées des symboles de redondance. Le mot de code C x 

associé au bloc de données d x  est alors de la forme :

C x   c0  c1 x  c2 x 2    c N  K 1 x N  K 1  d 0 x N  K    d K 1 x N 1
 
vx 

 v x   x N K
d 
0  d x 
 K 1
K 1

d x

C  x   v x   x N  K d  x 

C  x   x N  K d  x   v x  (III.7)

Où vx  est le polynôme associé aux symboles de redondance.

En tenant compte du fait que cx  est un multiple du polynôme générateur et que les
opérations étant faites modulo 2, l’addition est équivalente à la soustraction, alors on peut
écrire :

x N  K d  x   C  x   v x 
x N  K d x   r ( x).g ( x)  vx  (III.8)

vx  est donc le reste de la division x N  K d x  par le polynôme générateur g x  . Le

mot de code associé au bloc de données d x  est égal à x N  K d x  augmenté du reste de la

division de x N  K d x  par le polynôme générateur.

Exemple

Pour illustrer le calcul d’un mot de code écrit sous forme systématique, prenons
l’exemple d’un code C 7, 4 de polynôme générateur g x   1  x  x 3 et déterminons le mot

de code C x  associé au message d x   1  x 2  x 3 , soit :

24 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre III- Codes Cycliques

C  x   x N  K d  x   v x  ; N  K  3

C x   x 3 d x   vx  ; vx ??

x N K d x   r ( x).g ( x)  vx 

 
x N  K d x   x 3 . 1  x 2  x 3  x 3  x 5  x 6

Le reste de la division x N K d x   x 3  x 5  x 6 par le polynôme générateur

g x   1  x 2  x 3 est vx   1.

C  x   x 3d  x   v x   x 3  x 5  x 6  1

Donc, Le mot de code C x  associé au bloc de données d x  est :

C x   1  x 3  x 5  x 6

Ainsi au bloc de données d, constitué de 4 symboles binaires d’information est associé


le mot de code C avec :

d  1 0 1 1  C  1 0 0 1 0 1 1

Pour obtenir la matrice génératrice, il suffit de coder d x   1, x, x 2 , x 3 . On obtient :

d x  cx 
1 1 x  x3
x x  x2  x4
x 2 1  x  x2  x5
x3 1  x2  x5

1 1 0 1 0 0 0
0 1 1 0 1 0 0
G
1 1 1 0 0 1 0
 
1 0 1 0 0 0 1

25 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre III- Codes Cycliques

On peut vérifier que pour d  1 0 1 1 , le produit matriciel d.G fournit bien

C  1 0 0 1 0 1 1 .

III.6 Racine primitive nième de l'unité

Soit C un (n, k)-code cyclique engendré par g. Soit  une racine primitive n-ième de
l'unité. Si g admet parmi ses racines  puissance de  successives, alors d +1.

III.7 Présentation de quelques codes cycliques

III.7.1 Codes BCH

Les codes BCH permettent de construire de manière systématique des codes cycliques
corrigeant au moins t erreurs dans un bloc de n symboles.

Pour construire un code BCH, on se fixe t ou de manière équivalente d, appelée


distance construite du code et on détermine son polynôme générateur g(x). Le code obtenu
possède une distance minimale dmin qui est toujours supérieure ou égale à la distance
construite.

III.7.1.1 Code BCH primitif

Le polynôme générateur g(x) d’un code BCH primitif construit sur un corps de Galois
GF q  avec q  2 m éléments, de distance construite d (d= 2t+2 ou 2t+1), possède (d−1)
racines. Le code BCH est dit primitif car les racines de son polynôme générateur sont des
puissances de α, élément primitif du corps de Galois GF q  .

 Code BCH primitif avec d  2t  1

Le polynôme générateur g(x) d’un code BCH primitif de distance construite d  2t  1


est égal à :

g x   P.P.C.M .m x , m 3 x , , m 2 t 1 x 
(III.9)

Où m i x  est le polynôme minimal à coefficients dans le corps GF 2 associé à  j et

P.P.C.M. désigne le Plus Petit Commun Multiple.

26 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre III- Codes Cycliques

Les paramètres d’un code BCH primitif de distance construite d = 2t + 1 sont les
suivants :

N  2 m  1; K  2 m  1  mt; d min  2t  1 (III.10)

Exemple

Soit un code BCH primitif de distance construit d  2t  1 avec m  4 et t  2 .

1) Déterminer la valeur de N et le corps de Galois utilisé.

2) Déterminer le polynôme générateur.

3) Déterminer les paramètres de ce code.

Solution

N  2m  1  15

 
m  4  GF 2 m  GF 16

g x   P.P.C.M .m x , m 3 x , , m 2t 1 x 

t allant de 1 à 2  g x   P.P.C.M .m x , m 3 x 

m x   x 4  x  1

m 3 x   x 4  x 3  x 2  x  1

Le P.P.C.M des polynômes m x  et m 3 x  est évidemment égal au produit de ces

deux polynômes puisqu’ils sont irréductibles et ainsi, le polynôme générateur est égal à :

g x   P.P.C.M .m x , m 3 x 
g x   m x . m 3 x 
 
g x   x 4  x  1 . x 4  x 3  x 2  x  1

27 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre III- Codes Cycliques

En développant on obtient :

g x   x 8  x 7  x 6  x 4  1

Finalement les paramètres de ce code BCH sont :

m  4; N  15; N  K  8; K  7; t  2

 Code BCH primitif avec d  2t  2

Le polynôme générateur g(x) d’un code BCH primitif de distance construite d  2t  2


est égal à :

g x   P.P.C.M .m 0 x , m 1 x , m 3 x , , m 2t 1 x 
(III.11)

m 0 x   x  1
(III.12)

III.7.1.2 Code BCH non primitif

Un corps de Galois GF q  , avec q  2 m éléments, possède des éléments non primitifs

si 2 m  1 n’est pas premier. Les éléments non primitifs sont alors de la forme     où λ est

un diviseur de 2 m  1 et α est un élément primitif du corps.

La longueur N des mots d’un code BCH non primitif est égale à p, où p est l’exposant
de  tel que  p  1 .

Le polynôme générateur g(x) d’un code BCH non primitif de distance construite
d  2t  1 est égal à :


g x   P.P.C.M . m x , m 3 x , , m 2 t 1 x  (III.13)

Exemple

 
Soit un corps de Galois GF 26 , m  6, q  64

28 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre III- Codes Cycliques

La quantité 2 m  1  63 n’est pas égale un nombre premier, elle divisible par 3, 7, 9, 21


et 63.

Les éléments non primitifs de ce corps sont donc :  3 ,  7 , 9 , 21,  63  1

Construire un code BCH non primitif avec t  2 sur le corps GF 64 et prenons pour

élément non primitif    3 .


g x   P.P.C.M . m x , m 3 x , , m 2 t 1 x  

t allant de 1 à 2  g x   P.P.C.M . m x , m 3 x  

g x   P.P.C.M . m x , m 3 x  
g x   m x . m 3 x 
g x   x 9  x 8  x 7  x 5  x 4  x  1

Les paramètres de ce code BCH non primitif sont :

N  21 car  21
 
 3
21
  63  1 
N  K  9; K  12

III.7.2 Codes de Reed-Solomon

Les codes de Reed-Solomon sont les codes à symboles non binaire les plus connus et
surtout les plus utilisés. Pour les codes à symboles non-binaires les plus connus et surtout les
plus utilisé.

Pour les codes à symboles non-binaires les coefficients c j des mots de code et d j des

blocs de donnée prennent leur valeur dans un corps de Galois GF q  à q  2 m élément. Ainsi,
chaque symbole des codes peut être code sur m symboles binaires.

29 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre III- Codes Cycliques

Les codes de Reed-Solomon étant des codes cycliques, ils sont engendrés par un
polynôme générateur g x  diviseur de x n  1 dont les coefficients g j j  0, 1, , N  K  1

prennent également leur valeur dans le corps de Galois GF q  .

Le polynôme générateur d’un code de Reed-Solomon, de distance construit d possède


d  1 racines  l , ,  l  j , ,  l d 2 . Il a donc pour expression :

g x   P.P.C.M .m l x , , m l  j x , , m l  d 2 x 
(III.14)

Où m l j x  est le polynôme minimal associé à l’élément  l  j du corps GF q  .

Le polynôme minimal m l j x  a pour unique racine  l  j :


m l  j x   x   l  j  (III.15)

Le polynôme générateur d’un code de Reed-Solomon est donc de la forme :

     
g x   x   l x   l 1  x   l  j  x   l d 2  (III.16)

En général, le paramètre l est fixé à 0 ou à 1.

Le polynôme générateur d’un code de Reed-Solomon, de degré N  K  possède

d  1 racines soit N  K  d  1 . Sa distance construite est donc égale à :

d  N  K 1 (III.17)

La distance minimale d min d’un code de Reed-Solomon est égale à sa distance


construite. Un code dont la distance minimale est égale à N  K  1 est appelé un code à
distance maximale.

Les paramètres d’un code de Reed-Solomon corrigeant t erreurs dans un bloc de n


symboles q-aires sont donc :

N  q  1; N  K  d min  1  2t; K  N  2t (III.18)

30 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre III- Codes Cycliques

Exemple

Déterminer le polynôme générateur d’un code de Reed-Solomon construit à partir


d’un corps de Galois à 16 éléments, ayant un pouvoir de correction de t  2 erreurs.

La distance minimale de ce code est donc de d min  5 . En prenant par exemple l  1 ,


le polynôme générateur de ce code est donc de la forme :

d allant de 1 à 5.

     
g x   x   l x   l 1  x   l  j  x   l  d 2 
g x   x   .x   
. x   
2
. x   3 4

En développant l’expression précédente, on obtient :

 
g  x   x 2   2 x   .x   3 . x 2   4 x   3 x   7 
g x   x  
2 2
  .x   .x  
3 2 4
 3 x   
7

Polynôme primitif  4    1

 2       1   . 4   5
 4   3   3   1   3 . 4   7

 
g x   x 2   5 x   3 . x 2   7 x   7 
g x   x 4   7 x 3   7 x 2   5 x 3   12 x 2   12 x   3 x 2   10 x   10
    
g x   x 4   7   5 x 3   7   12   3 x 2   12   10 x   10 

En utilisant les représentations binaires des éléments du corps GF 16

 7  1011
 7  1011   12  1111
  12  1111 
et et
 5  0110   10  0111
 1101  3  1000  1000
 1100

31 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre III- Codes Cycliques

1101 correspond à  13 , 1100 correspond à  6 et 1000 correspond à  3

g x   x 4   13 x 3   6 x 2   3 x   10

III.7.3 Codes de Golay

Le code de Golay, comme le code de Hamming est un code matriciel généré à partir
d’un polynôme générateur.

Ce code a néanmoins quelques particularités par rapport aux codes de Hamming sur
lesquels il est basé. Tout d’abord, il s’agit d’un code correcteur dit cyclique, c’est-à-dire que
toute permutation circulaire d’un mot de code reste un mot de code (un mot de code
correspond à des données encodées par la matrice génératrice). Les codes cycliques ont aussi
une particularité concernant leur polynôme générateur : ils divisent le polynôme 𝑧 𝑛 + 1 (ou
𝑧 𝑛 − 1).

Le polynôme générateur du code correcteur binaire étendu de Golay (23,12,7) est:

𝐻 𝑧 = 𝑧 11 + 𝑧 10 + 𝑧 6 + 𝑧 5 + 𝑧 4 + 𝑧 2 + 1 (III.19)

En appliquant les divisions euclidiennes (pour connaître dans les détails ce type de
génération, voir le principe de fonctionnement du code de Hamming).

Pour obtenir le code de Golay (24,12,8) à partir du code de Golay (23,12,7), il suffit de
rajouter un bit de parité à la fin de la matrice génératrice obtenue. Pour obtenir ce bit de
parité, il suffit de faire la somme de tous les bits de la ligne considérée. Si cette somme est
égale à 0, alors le bit de parité ajouté sera 1. Si cette somme est égale à 1, ce bit sera égal à 0.

III.7.4 Codes pour détection d'erreurs en paquets

Les codes pour détection d'erreurs en paquets consistent à protéger des blocs de
données, appelés trames (frames en anglais). A chaque trame est associé un bloc de données,
appelé code de contrôle, Ce code contient des éléments redondants vis-à-vis de la trame,
permettant de détecter les erreurs, mais aussi de les réparer.

32 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre III- Codes Cycliques

Le principe des codes pour détection d'erreurs en paquets consiste à traiter les
séquences binaires comme des polynômes binaires, c'est-à-dire des polynômes dont les
coefficients correspondent à la séquence binaire.

III.8 Réalisation du codeur cyclique

Le schéma de principe d'un codeur cyclique est représenté sur la figure III.1.

𝑔𝑖 = 1 𝑖𝑛𝑡𝑒𝑟𝑟𝑢𝑝𝑡𝑒𝑢𝑟 𝑓𝑒𝑟𝑚é
𝑔𝑖 = 0 𝑖𝑛𝑡𝑒𝑟𝑟𝑢𝑝𝑡𝑒𝑢𝑟 𝑜𝑢𝑣𝑒𝑟𝑡

𝑔0 𝑔1 𝑔2 𝑔𝑛−𝑘

1
𝑅0 𝑅1 𝑅𝑛−𝑘−1 I
2
Sortie
Horloge
1
Entrée du codeur I
2
Figure III.1. - Réalisation du codeur Cyclique

Lorsque l'interrupteur I est en position 1, les K symboles du message M rentrent dans


le codeur qui effectue la division de 𝑋 𝑁−𝑀 𝑀 𝑋 par 𝑔 𝑋 . le reste de cette division se trouve
dans les registres 𝑅0 à 𝑅𝑛 −𝑘−1 . la division terminée l'interrupteur I passe en position 2 et on
vide le contenu des registres 𝑅0 à 𝑅𝑛−𝑘−1 .

III.9 Décodage des codes cycliques- calcul de syndrome

Pour détecter la présence d'erreurs de transmission on va utiliser le polynôme


générateur 𝑔 𝑋 . on se rappelle que 𝑔 𝑋 divise les mots de code 𝐶 𝑋 , on va donc tester le
mot reçu 𝑅 𝑋 en le divisant par 𝑔 𝑋 . Le reste de la division de 𝑅 𝑋 par 𝑔 𝑋 s'appelle le
syndrome 𝑆 𝑋 .

𝑅 𝑋 =𝑔 𝑋 𝑞 𝑋 +𝑆 𝑋 = 𝐶 𝑋 +𝑒 𝑋 (III.20)

33 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre III- Codes Cycliques

Ou 𝑒 𝑋 est le polynôme associé aux erreurs de transmission. Le syndrome 𝑆 𝑋


obtenu sous forme polynomiale est bien entendu identique au syndrome S obtenu
précédemment en multipliant le mot reçu R par la matrice de contrôle H.

- Si 𝑆 𝑋 = 0 il n'y a pas d'erreurs de transmission ou du moins d'erreurs détectables.

- Si 𝑆 𝑋 ≠ 0 il y a des erreurs de transmission.

Comme nous l'avons déjà vu la correction des erreurs suivant le critère du Maximum
de Vraisemblance demande la comparaison du mot reçu avec tous les mots de code soit 2𝐾
comparaisons. Le mot de code choisi étant celui qui est à la distance minimale du mot reçu.
Cette procédure de correction ne peut être appliquée que si le paramètre K est assez petit.

On peut utiliser le syndrome pour effectuer la correction des erreurs de transmission.


Le syndrome possède 2𝑁−𝐾 configurations. Nous allons utiliser dans notre raisonnement la
représentation vectorielle du syndrome.

Soit 𝑆𝑖 une configuration du syndrome correspondant à un vecteur d'erreur 𝑒𝑖 de poids


i (i erreurs de transmission).

𝑆𝑖 = 𝑒𝑖 𝐻 𝑡 (III.21)

On sait que la matrice H possède au minimum 2𝑡 + 1 colonnes dépendantes.

Recherchons les configurations du vecteur d'erreurs qui donnent au syndrome la valeur


𝑆𝑖 .

𝑆𝑖 = 𝑒𝑗 𝐻 𝑡 (III.22)

Si 𝑒𝑖 et 𝑒𝑗 donne la même valeur pour le syndrome cela signifie que 𝑖 + 𝑗 colonnes


de H sont nulles.

Ceci est possible si 𝑖 + 𝑗 ≥ 2𝑡 + 1 ⇒ 𝑗 ≥ 2𝑡 + 1 + 𝑖

Si le vecteur d'erreurs 𝑒𝑗 correspond à une configuration d'erreurs que le code ne peut


corriger.

34 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre III- Codes Cycliques

Enfin, on vérifiera facilement que deux vecteurs d'erreurs de même poids (inférieurs
ou égale à t) ne peuvent donner la même valeur pour i pour le syndrôme.

35 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre IV
Codes Convolutifs
___________________________________________________________________________

IV.1 Définition

Pour les codes convolutifs, chaque bloc de ns symboles binaires en sortie, dépend non
seulement des ne symboles binaires présents en entrée mais aussi des v blocs de ne symboles
binaires précédents. Par conséquent, ces codes introduisent un effet de mémoire d’ordre v.

Chaque code convolutif est défini par les paramètres suivants :

 Rendement du code : R  ne ns ;
 Longueur de contrainte : K  v  1

La figure IV.1 donne un exemple d’un code convolutif de rendement R=1/2 et de


longueur du contrainte K =3.
xk

dk d k 1 d k 2
T T

yk

Figure IV.1- Exemple d’un code convolutif


( ne  1, ns  2, R  1/ 2, v  2, K  3 )

Un code convolutif est un circuit logique comprenant un registre à décalage formé de


K cellules, ns additionneurs modulo 2 (portes ou-exclusif), un ensemble de connexions entre

les additionneurs et les cellules du registre à décalage et du commutateur à ns positions.

36 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre IV- Codes Convolutifs

IV.2 Principe de codage

Pendant un cycle d’horloge, la sortie du codeur va comporter la sortie de


l’additionneur supérieur suivi de celle de l’additionneur inférieur, ces sorties sont données par
la relation suivante :

2 2
x k   g1 j d k  j , y k   g 2 j d k  j (modulo 2) (IV.1)
j 0 j 0

Où g i , j ( i  1, 2) est la réponse du code définissant aussi les codes convolutifs, et

celle-ci est déterminée par :

 Les séquences génératrices représentent l'ensemble des connexions entre les


additionneurs modulo 2 et les cellules du registre à décalage. Les séquences génératrices
peuvent être données par :

g1  101  5octal , g 2  111  7 octal (IV.2)

 Les polynômes générateurs exprimés en fonction de la variable D (Delay)


équivalente à la variable Z-1 de la transformée en Z :

G1 D  1  D 2 , G2 D  1  D  D 2 (IV.3)

IV.3 Représentation des codes convolutifs

D’une façon générale, un code convolutif fonctionne de la manière suivante : l’état du


code (le contenu de registre à décalage) à l’instant k est représenté par l’état
d k 1 , d k 2 ,, d k  v . A chaque arrivée d’un symbole binaire d k , le contenu de registre à

décalage devient égal à d k , d k 1 ,, d k  v , une sortie est donc générée. Ensuite, le registre fait

le décalage et le code passe à l’état suivant qui est d k , d k 1 ,, d k  v1 . Avant que le processus

de codage ne débute, l’état du code est initialisé à zéro.

Ce fonctionnement est représenté par trois diagrammes équivalents mais différents :


l’arbre du code, le treillis du code et le diagramme d’états. Ce dernier représente les

37 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre IV- Codes Convolutifs

transitions entre les états tandis que le diagramme en arbre et celui en treillis représentent
l’évolution au cours du temps de ces états.

IV.3.1 Diagramme en treillis

Sur la figure IV.2 on va représenter le treillis du code convolutif de la figure IV.1.

Sortie dk  1
xk y k
Etat dk  0
d k 1 d k 2
00 00 00 00
a : 00
11 11
11
11 11 11
b :01 00 00

10 10 10

c : 10
01 01 01 01 01
10 10
d :11

Temps k

0 1 2 3 4

Figure IV.2- Diagramme en treillis associé au code convolutif de la figure IV.1

Le treillis est formé de noeuds reliés par des branches : les noeuds représentent les
nev
différents états ( 2 états) possibles du code, les branches représentent les différentes
transitions ( 2 v transitions) possibles d’un noeud à un autre (ou d’un état du code au suivant)
lors de l’arrivée d’un symbole d’entrée (transition en trait pointillé (resp. en trait plein) pour
l’arrivée d’un 0 (resp. d’un 1)).

La longueur du treillis représente la profondeur dans la séquence des bits d'information


(notion du temps) et sa largeur équivaut au nombre d'états du code. Les états sont identifiés
sur la colonne de gauche. La sortie du code est mentionnée sur chaque branche.

Après K décalages, quelque soit l’état initial du code, le motif du treillis se répète.

38 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre IV- Codes Convolutifs

Le fonctionnement temporel du code se traduit donc par le tracé d’une succession


d’états connectés par des branches. Cette suite connectée de branche est dite "chemin" à
laquelle correspond les suites des symboles d’information et des symboles codés.

Les chemins doivent être suffisamment distants les uns des autres pour avoir des
meilleures performances. Cette distinction est caractérisée par un paramètre important qui
caractérise les performances du code en terme de probabilité d’erreur, appelé distance libre.

IV.3.2 Diagramme en arbre

Sur la figure IV.3 on va représenter l’arbre du code convolutif de la figure IV.1.

Figure IV.3- Diagramme en arbre associé au code convolutif de la figure IV.1

Lorsque l’élément binaire à l’entrée du codeur est égal à « 0 » (respectivement à


« 1 »), le couple binaire en sortie du codeur est porté par une branche montante
(respectivement descendante) du diagramme en arbre. Ces branches se séparent en un point
est appelé nœud.

39 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre IV- Codes Convolutifs

IV.3.3 Diagramme d’état

Pour le diagramme d’état la notion du temps a disparu, et on ne représente que les


transitions qui existent entre les états. Ce diagramme est déduit du diagramme en arbre.

Sur la figure IV.4 on va représenter le diagramme d’état du code convolutif de la


figure IV.1.

Figure IV.4- Diagramme d’état associé au code convolutif de la figure IV.1

IV.4 Décodage des codes convolutifs

Dans les communications numériques actuelles, il existe deux méthodes de décodage


pour les codes convolutifs :

 La 1ère méthode recherche le message le plus probable (décodage à entrée ferme ou


pondérée et à sortie ferme) ;
 La 2ème méthode estime les symboles d'informations les plus probables (décodage à
sortie pondérée).

Dans ce qui suit, on va décrire deux algorithmes de décodage à entrée et à sortie


ferme : algorithme de Viterbi et algorithme séquentiel

40 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre IV- Codes Convolutifs

IV.4.1 Algorithme de Viterbi

L'algorithme de Viterbi a été présenté en 1967 par A. J. Viterbi. Le principe de cet


algorithme consiste à estimer les transitions, qui se sont produites dans la mémoire du code
convolutif pendant le codage. L'estimation se base sur le maximum de vraisemblance
(Maximum Likelihood). Le maximum de vraisemblance permet d'identifier la séquence la
plus probable par la comparaison des séquences transmises possibles pour une séquence
reçue.

L’algorithme de Viterbi utilise le treillis comme structure de données. Il est représenté


sur la figure 4.6. Supposons que la séquence reçue soit 11 00 11 11.

dk  1
Métrique de branche Métrique cumulée
Etat
d k 1 d k 2 dk  0
00 (2) (2) 00 (0) (2) 00 (2) (1) 00 (2) (2)
00
11 (0) 11 (0)
11 (0) 11 (2) (1) 11 (0) (2) 11 (0) (3) Chemin le plus
01 00 (2) 00 (2) vraisemblable
10 (1) 10 (1) 10 (1)
(0) (4) (2) (1)
10 01 (1)
01(1) 01 (1) 01 (1) 01 (1)
(1) 10 (1) (2) 10 (1) (3)
11

Temps k

0 1 2 3 4

Figure IV.6- Algorithme de Viterbi

Il fonctionne comme suit :

A chaque transition et pour chacun des nœuds, on va faire une séquence d'opération
appelée Addition-Comparaison-Selection (ACS) :

41 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre IV- Codes Convolutifs

1. Calcul de la métrique : à chaque instant, on calcule la métrique de branche


associée à chaque chemin dans le treillis : c’est-à-dire la distance entre le couple de bits reçus
et les couples de bits codés correspondant au branches. Plusieurs métriques sont à notre
disposition pour calculer cette distance. Les trois suivantes sont le plus souvent citées avec
l'algorithme de Viterbi :

 La métrique de corrélation ;
 La métrique euclidienne ;
 La métrique de Hamming. C’est celle qui est utilisée ici.

Ces distances apparaissent entre parenthèse sur chaque branche concernée.

2. Addition : pour chaque nœud on calcule les métriques cumulées des chemins
aboutissant à ce nœud. Elles sont calculées par l’addition des métriques de branche et des
anciennes métriques cumulées correspond au même chemin.

Ces métriques apparaissent entre parenthèse sur chaque noeud concerné.

3. Comparaison-Selection : chaque noeud doit alors comparer les deux métriques


ainsi calculées pour choisir le chemin le plus probable : la plus petite pour la métrique de
Hamming ou la métrique euclidienne, la plus grande pour la métrique de corrélation. Ce
chemin est appelé le chemin survivant, l’autre est le chemin concurrent.

Si deux chemins sont aussi vraisemblables, un seul chemin est toutefois conservé et le
choix peut être arbitraire.

A la fin de l'opération de décodage, le chemin de métrique totale minimale correspond


alors à la séquence transmise la plus probable (représenté en gras sur la figure).

Il est évident que le décodeur de Viterbi est un décodeur à maximum de vraisemblance


car à chaque étape, il ne rejette que des chemins ne pouvant être meilleurs que les chemins
choisis.

Aucune modification de l’algorithme de Viterbi à entrée pondérée n’est nécessaire.


Une simple adaptation de la métrique de branche permet une prise en compte naturelle des
entrées pondérées.

42 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre IV- Codes Convolutifs

L’algorithme de Viterbi est une méthode optimale de décodage pour réduire au


minimum la probabilité d'erreur par séquence. Malheureusement, l’algorithme de Viterbi ne
peut pas calculer la décision pondérée pour chaque symbole décodé. Cet algorithme a été
modifié pour faire utiliser l’algorithme SOVA.

IV.4.2 Décodage séquentiel

La première méthode utilisée pour le décodage des séquences protégées par des codes
convolutifs, a été l’algorithme séquentiel proposé par ozencraft en 1957

Cette méthode a été repris e et modifiée par Fano. La stratégie adoptée par Fano
consiste en la recherche du chemin le plus probable à l'intérieur du diagramme en arbre, en
examinant une transition de mémoire à la fois. Ce type de recherche appartient au genre de
recherche depth-first. La recherche du chemin le plus prometteur est conduite à l'aide d'une
fonction de métrique PM adaptée à ce genre de recherche.

IV.5 Performances des codes convolutifs

La distance libre, est définie comme la plus petite distance de Hamming existant entre
deux chemins qui divergent puis convergent de nouveau.

Rappelons que la distance de Hamming entre deux chemins est égale au nombre de
symboles binaires codés différents entre les séquences associées à chacun des deux chemins.

La recherche de la distance libre bénéficie de la propriété de linéarité des codes


convolutifs, qui permet de se concentrer uniquement sur les distances entre les messages
potentiels et le message zéro. Le message "zéro" est le message codé contenant une séquence
infinie de zéros, générée par le codage d'une série infinie de bits d'informations 'zéro' (chemin
de poids nul).

De ce fait, la distance libre est aussi égale au poids minimal des chemins qui divergent
puis convergent vers le chemin de poids nul. Le poids d’une séquence est le nombre de bit
égal à 1.

Reprenons le treillis de la figure 4.2 et portons sur chaque branche le poids


correspondant. On obtiendra la figure 4.5.

43 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre IV- Codes Convolutifs

Poids
Etat
d k 1 d k 2

00 Chemin « nul »
2 2
2
2 2 2
01 0 0
dk  1
1 1 1
dk  0
10
1 1 1 1 1
1 1
11

Temps k

0 1 2 3 4

Figure IV.5- Détermination de la distance libre du code de la figure IV.1

La distance libre de notre exemple de treillis est égale à 5. Elle correspond au chemin
(00-10-01-00) représenté en gras sur la figure IV.5.

IV.6 Quelques exemples des codes

IV.6.3 Codes catastrophiques

Il existe des codes pour lesquels un nombre fini d'erreurs de transmission risque de
produire un nombre infinie d'erreurs en sortie du décodeur. Ces codes sont appelés
catastrophiques (figure IV.6). Un code convolutif est catastrophique, s'il existe dans le
diagramme d'états un chemin fermé dont toutes les branches sont de poids nul.
xk

dk d k 1 d k 2
T T

yk

Figure IV.6- Exemple d’un code convolutif


catastrophique

44 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre IV- Codes Convolutifs

IV.6.2 Codes convolutifs poinçonnés

Plus le rendement est faible, plus le code est performant. Mais, plus le rendement est
faible, plus la largeur de bande nécessaire à la transmission doit être importante.

On cherche donc à construire des codes ayant un rendement le plus élevé possible
(pour des raisons de temps et de coût) et permettant une fiabilité arbitrairement grande.

Pour fabriquer des codes convolutifs de rendement supérieur, on utilise l’opérateur de


poinçonnage, placé à la sortie du code, permettant d’effacer, c’est-à-dire de ne pas
transmettre, certains symboles codés. En réception, un dispositif vient insérer un zéro
analogique en entrée du décodeur aux places correspondantes.

La figure IV.7 donne un exemple d’un code de rendement R=1/2 dont on supprime un
bit de sortie sur 4. Il devient un code de rendement R=2/3.

Masque de poinçonnage
1 1 1 : transmission
0 1 0 : effacement

Codeur convolutif C11 C 21 C11 C 21 Codeur poinçonné


d1 d 2 de rendement de rendement
R=1/2 C12 C 22 C 22 R=2/3

Figure IV.7- Exemple de poinçonnage d’un code convolutif


de rendement R=1/2

Sur la figure IV.7, le masque de poinçonnage indique la position des symboles à


effacer.

La technique de poinçonnage permet d'augmenter le rendement d'un code sans pour


autant augmenter la complexité du décodeur. Cette technique permet d’obtenir des codes
ayant des performances très voisines de celles obtenues avec des codes non-poinçonnés de
même rendement, tout en présentant l’avantage d’avoir une réduction de la complexité de
décodage.

45 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre IV- Codes Convolutifs

A l’aide de la technique de poinçonnage, le codeur et le décodeur sont identiques pour


l’ensemble des rendements de codage. Seule la fonction de poinçonnage est paramétrable en
fonction de rendement.

La technique de poinçonnage est placée à la sortie du codeur. Elle permet d’effacer,


c’est-à-dire de ne pas transmettre, certains symboles codés. En réception, un dispositif,
nommé dépoinçonnage, insère des zéros analogiques en entrée du décodeur aux places
correspondantes.

La figure IV.9 représente le schéma de principe d’un système de transmission utilisant


la technique de poinçonnage.

Codeur Poinçon- Canal de Dépoinçon- Décodeur


en bloc nage transmission nage en bloc

Figure IV.9- Schéma d’un système de transmission numérique


utilisant le poinçonnage

La technique de poinçonnage permet d’augmenter le rendement d’un code sans


augmenter la complexité de décodage.

46 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre V
Codes Concaténés
___________________________________________________________________________

V.1 Codes concaténés à un niveau

Pour un code correcteur d’erreurs, la distance libre déterminant les performances du


code, augmente avec le degré des polynômes générateurs. Malheureusement, la complexité
d’un décodeur croit en fonction de ce degré. De ce fait, on combine des codes élémentaires de
faible complexité, tout en conservant des distances libres élevés.

La concaténation de codes est donc la combinaison de deux codes élémentaires, en


bloc ou convolutifs, de faible complexité afin d’obtenir un code puissant : c’est-à-dire un code
ayant une distance libre élevés. Ainsi, le décodeur est constitué de deux décodeurs
élémentaires de complexité modérée.

Les concaténations les plus célèbres sont : la concaténation parallèle, la concaténation


série. Il est possible de fabriquer des concaténations hybrides en combinant la concaténation
série et la concaténation parallèle. Les structures hybrides sont peu intéressantes car un très
grand gain en performance est déjà atteint par les structures classiques.

V.1.1 Concaténation série de codes

Le schéma de principe de la concaténation en série de deux codes est illustré sur la


figure V.1.

Figure V.1- Codes concaténés en série (a) sans permutation (b) avec permutation

Dans ce schéma, un premier codeur, dit codeur extérieur, fournit un mot de code qui
est ensuite recodé par un deuxième codeur, dit codeur intérieur. Si les deux codes sont
systématiques, le code concaténé est lui-même systématique.

Le rendement global est : Rcs  R1 R2

47 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre V- Codes Concaténés

 Concaténation en série d’un code convolutif et un code de Reed-Solomon

Le code extérieur est le code de Reed-Solomon et le code intérieur est le code


convolutif. Le décodeur intérieur est un décodeur de Viterbi à décision douce et le décodeur
extérieur est un décodeur à décision dur. Le décodeur convolutif corrige des erreurs
indépendantes et les paquets d’erreurs sont corrigés par un décodeur de Reed-Solomon. Afin
de diminuer les paquets d’erreurs à l’entrée de décodeur RS, un entrelaceur est ajouté entre les
deux codes.

Les deux codes convolutifs travaillent en décision douce. Le décodage interne peut se
faire selon l’algorithme de Berrou-Add, tandis que le décodage externe utilise simplement
l’algorithme de Viterbi.

V.1.2 Concaténation parallèle de codes

La figure V.2 représente la structure d’une concaténation parallèle de rendement


global R=1/3, construit à partir de deux codes CSR élémentaires C1 et C2, de même longueur
de contrainte K=3 et de polynômes générateurs (5, 7) et (7, 5), séparés par un entrelaceur noté
 introduisant de la diversité.

Pour un symbole d’entrée d k , les sorties du turbo-code x k et y k à l’instant kT sont

respectivement égales à d k (code systématique) et la sortie du code C1 : y1k , ou la sortie du

code C2 : y 2 k .

Puisque les deux codes élémentaires sont systématiques et opèrent la même séquence
de symboles d'entrée, on n’a pas besoin de transmettre l’entrée du deuxième code C 2, et ceci
augmente le rendement du code global. Elle est utile seulement pour doubler la diversité en
présence d’évanouissements .

48 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre V- Codes Concaténés

dk xk

  C1

y1k


y2k

  C2

Figure V.2- Concaténation parallèle de rendement R=1/3, construit


à partir de deux codes CSR

Afin d'augmenter le rendement du code global, les deux séquences de parité y1k  et

y2k  peuvent être poinçonnées.


La concaténation parallèle de plus de deux codes de faible complexité (typiquement
v=2) donne des codes globaux à faibles rendements.

V.2 Code concaténés a un multiniveaux

La concaténation de codes est donc la combinaison de plusieurs codes élémentaires, en


bloc ou convolutifs, de faible complexité afin d’obtenir un code puissant : c’est-à-dire un code
ayant une distance libre élevés. Ainsi, le décodeur est constitué de plusieurs décodeurs
élémentaires de complexité modérée.

V.3 Technique d'entrelacement et de désentrelacement

L'entrelacement est une opération qui change l'ordre des symboles à l'émission pour
les remettre en ordre à la réception.

Le principe d'une chaine de transmission avec codage et entrelacement est présenté à


la figure V.3.

49 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre V- Codes Concaténés

Canal de transmission

Source Codeur
d k  Modulateur
Entrelaceur
d’information de canal

Milieu de
transmission

Destinataire Décodeur d̂ 


k Désentrela- Démodulateur
de canal ceur

Figure V.3- Schéma d’un système de transmission numérique avec


codage et entrelacement

On peux utiliser l'entrelacement avec un seul code correcteur d'erreurs dans la chaine
de transmission, et aussi dans la concaténation de codes.

L'entrelaceur a pour but d'espacer les symboles consécutifs et de transférer un canal à


erreurs indépendantes, et ceci augmente la capacité de correction de codes. Il existe deux type
d'entrelacement:

1- Entrelacement en bloc

Pour cet entrelacement, on écrit les symboles issus du codeur à l'émission dans une
matrice mémoire ligne par ligne et on les relit colonne par colonne. A la réception, l'opération
inverse est effectuée pour rétablir l'ordre initial. La famille d'entrelacement en bloc regroupe
plusieurs types d'entrelacement.

2- Entrelacement convolutionnel

A l'émission un retard different va être inséré dans chaque branche d'un commutateur.
A la réception, le retard inverse est appliqué de façon à ce que tous les signaux aient subit le
même retard

Exemple

Imaginons la suite de mots suivants:

50 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre V- Codes Concaténés

n i c h e

c h i e n

p o u l e

t a s s e

f o u r s

b a l l e s

v i d e o

a u d i o

p e t i t

p o r t e

Chaque mot est mis en mémoire horizontalement et relu verticalement. Ainsi, si on


relit les paquets depuis le de e niche, cela donne les mots suivants:

eeuaf nlsob esuav erlia sldup eedep soito

A la suite de la transmission, on reçoit la séquence suivante affectée d'erreurs

eeuaf nlsob esuav **lia s***p eedep soito

Après désentrelacement on retrouve les mots suivants:

... tass* fou*s bal*es vi*eo ...

On voit nettement que l'entrelacement a permis de repartir les erreurs sur plusieurs
mots. Seul une lettre par mot est affecté et le code peut facilement corriger ces erreurs. Sans
entrelacement, ce sont les mots complets qui auraient été affectées sans espoir de pouvoir les
récupérer.

V.4 Concaténation binaire

La concaténation binaire est la combinaison de plusieurs codes élémentaires binaires,


en bloc ou convolutifs, de faible complexité afin d’obtenir un code puissant : c’est-à-dire un
code ayant une distance libre élevés. Ainsi, le décodeur est constitué de plusieurs décodeurs
élémentaires de complexité modérée.

51 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre VI
Turbo-Codes
___________________________________________________________________________

VI.1 Définition

La preuve du théorème de Shannon sur la capacité d'un canal de transmission a été


apportée par le codage aléatoire. D’après une recherche exhaustive faite par les théoriciens du
codage, un code correcteur d’erreur baptisé turbo-code, a été introduit récemment, et il
satisfait à la preuve de Shannon.

Les turbo-codes sont des codes correcteurs d’erreurs qui permettent d’avoisiner la
limite théorique de correction. Ces codes, inventés à l’ENST de Bretagne, sont obtenus par la
concaténation parallèle, série ou hybride de deux ou plusieurs codes correcteurs d’erreurs de
faible complexité. Leur décodage fait appel à un processus itératif (ou turbo).

VI.2 Conception des turbo-codes

VI.2.1 Turbo-codeur

La figure VI.1 représente la structure d’un turbo-code à concaténation parallèle de


rendement global R=1/2, construit à partir de deux codes CSR élémentaires C1 et C2, de même
longueur de contrainte K=3 et de polynômes générateurs (5, 7) et (7, 5), séparés par un
entrelaceur noté  introduisant de la diversité. Ce dernier doit permettre d’augmenter les
distances libres des codes concaténés.

Les deux codes élémentaires C1 et C2 utilisent les mêmes symboles d’entrées, mais
suivant des séquences différentes. Ceci est rendu possible par la présence de l’entrelaceur.

Pour un symbole d’entrée d k , les sorties du turbo-code x k et y k à l’instant kT sont

respectivement égales à d k (code systématique) et la sortie du code C1 : y1k , ou la sortie du

code C2 : y 2 k .

Puisque les deux codes élémentaires sont systématiques et opèrent la même séquence
de symboles d'entrée, on n’a pas besoin de transmettre l’entrée du deuxième code C 2, et ceci

52 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre VI- Turbo-Codes

augmente le rendement de turbo-code. Elle est utile seulement pour doubler la diversité en
présence d’évanouissements.

dk xk

  C1

y1k

 yk
y2k

  C2

Figure VI.1- Turbo-code à concaténation parallèle de rendement


R=1/2, construit à partir de deux codes CSR

Afin d'augmenter le rendement de turbo-code, les deux séquences de parité y1k  et

y2k  peuvent être poinçonnées. Des turbo-codes ont été proposés, appelés turbo-codes m-
binaire. Ils ont permis d’obtenir des rendements de codage naturellement élevés.

La concaténation parallèle de plus de deux codes de faible complexité (typiquement


v=2) donne des turbo-codes à faibles rendements.

Le choix des codes CSR, la concaténation parallèle et l’entrelaceur pour un turbo-code


se justifient par le fait que pour des petits SNR, ces composants permettent d’augmenter la
distance libre du code qui conditionne ces performances, donc le turbo-code à une grande
distance libre.

VI.2.2 Turbo-décodeur

Le turbo-décodage se fait selon le principe de décodage itératif ou turbo basé sur


l’utilisation de décodeurs à entrée et à sortie pondérée ou SISO (Soft-Input Soft-Output) qui
s’échangent des informations de fiabilité Z k , appelées informations extrinsèques, par le biais
d’une contre-réaction, afin d’améliorer la correction au fil des itérations.

Le terme TURBO (Toggle Until Regenerations Bring Optimality) vient de la notion de


bouclage semblable à celle utilisée dans les moteurs turbo.

53 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre VI- Turbo-Codes

Dans un circuit électronique le processus turbo s’explique comme ceci :

On fait un premier traitement, les résultats ont été mis en mémoire et on reprend ce
traitement en faisant bénéficier le traitement en amont des résultats du traitement en aval. On
procède plusieurs fois ce type d’opération dans le cas du turbo-décodage.

Un turbo-décodeur parallèle présenté à la figure VI.2, est constitué de deux décodeurs


élémentaires SISO DEC1 et DEC2 associés respectivement au code C 1 et C2 disposés en
parallèle, de deux entrelaceurs et d’un désentrelaceur.


xk'
DEC1
y1k' (SISO)
Z1 k
yk' 

Z2k
DEC2 d̂ k
'
y 2k (SISO)

 1

Figure VI.2- Turbo-décodeur parallèle

 
Le turbo-décodeur reçoit les observations x k' y k' en provenance du canal et estime le
message émis.

Les deux décodeurs DEC1 et DEC2 travaillent conjointement, de telle manière que le
décodeur DEC1 puisse tirer bénéfice de y 2' ,k et le décodeur DEC2 de y1' ,k . Ils fournissent une

première estimation, chacun communique ses résultats à l’autre pour une nouvelle passe, ce
qui correspond à une itération complète. Ils fournissent ensuite une seconde estimation.
Après, chacun communique ses résultats à l’autre et ainsi de suite. Le décodage s’arrête au
bout d’un nombre fixe d’itération, et la décision finale peut venir du DEC 1 ou du DEC2.

Le soustracteur placé à la sortie de chaque décodeur DEC 1 et DEC2 est utilisé pour ne
garder que la contribution de chacun (information extrinsèque).

54 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre VI- Turbo-Codes

VI.3 Analyse des performances des turbo-codes

La présence de l’entrelaceur  et de désentrelaceur  1 respectivement à la sortie du


décodeur DEC1 et celle du décodeur DEC2 ont pour rôle de décorréler les décisions pondérées
en sortie de chaque décodeur.

Plusieurs méthodes d’entrelacement sont possibles. Cependant, le choix de la structure


d'un entrelaceur est un facteur clé qui détermine les performances d'un turbo-code, dans le
sens qu’il modifie leur propriété de distance libre.

Afin que ce turbo-décodeur s’effectue correctement même après plusieurs itérations de


décodage, l’entrelacement et le désentrelacement doivent s’effectuer de manière pseudo-
aléatoire ou aléatoire.

Grâce à ces deux types d’entrelacement, les turbo-codes paraissent aléatoires au canal
(notons que les codes aléatoires sont ceux qui ont été utilisés par Shannon), ce qui constitue
une caractéristique dont le décodage peut tirer bénéfice.

VI.4 Décodage itératif

Les turbo-codes utilisent le concept de décodage itératif. Le circuit d’un turbo-


décodeur est constitué par la mise en cascade de P modules, correspondant aux P itérations,
de décodage identiques (figure VI.3). Sa structure est donc parfaitement modulaire.

L’entrée du P éme module est constituée des séquences reçues x k'   P 1


 
et y k' P 1
retardées

convenablement et de la séquence Z k'   P 1


de la contre-réaction générée par le P  1ème
module.
Z  '
k 0 Z 
'
k 1
Z 
'
k P 1

x 
'

x 
'
k 0
Module x 
'
k 1
Module k P 1
Module
1 2 P
y 
'
k 0 y 
'
k 1 y 
'
k P 1 P

d k 1 d k 2 dk P
Figure VI.3- Structure modulaire d’un turbo-décodeur

55 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre VII
Modulation Codée en Treillis
___________________________________________________________________________

VII.1 Introduction

Les échanges d’information dans les systèmes de télécommunication s’effectuent à des


débits toujours plus élevés et dans des bandes de fréquences de plus en plus étroites. On
cherche par conséquent à maximiser le rapport débit utile sur bande, c’est-à-dire l’efficacité
spectrale des transmissions. Pour ce faire, il apparaît naturel de coupler des modulations
numériques à grand nombre de points avec des codes correcteurs d’erreurs à haut rendement.

Les études menées dans ce domaine font essentiellement appel à deux approches : les
modulations codées en treillis et les modulations codées pragmatiques.

Avant d'aborder les modulations codées rappelons brièvement quelques propriétés des
modulations numériques conventionnelles.

La transmission de l'information à travers un canal peut se faire de deux manières:

1. Soit en bande de base, c'est-à-dire que le message numérique issu du codeur de


canal est transformé en un signal (codage à signal), dont la densité spectrale de puissance de
ce signal est comprise dans une bande centrée sur zéro, qui émet dans le canal. La
transmission en bande de base n’est utilisable qu’à de courtes distances (< 5km).

2. Soit en bande infinie, pour des raisons de compatibilité avec le canal, il serait
souhaitable de translater en fréquence le signal précédent autour d'une fréquence f0. Pour
cela, on fait la multiplication du signal par cos2 f 0t  . Cette opération s'appelle la
modulation, c’est une fonction complémentaire du codage à signal.

 Modulateur

Le modulateur est l'interface qui convertit l'information numérique en formes d'ondes


adaptées aux caractéristiques du canal. Il transpose la gamme de fréquence occupée par le
signal dans une autre bande propre à la transmission. Les formes d'ondes peuvent varier selon
leur amplitude (Modulation par Déplacement d’Amplitude (MDA)), leur phase (Modulation

56 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre VII- Modulation Codée en Treillis

par Déplacement de Phase (MDP)) ou la combinaison des deux (Modulation d’Amplitude de


deux porteuses en Quadrature (MAQ)), et selon leur fréquence (Modulation par Déplacement
de Fréquence (MDF)).

Les modulations qui translatent le spectre du signal vers la fréquence porteuse sans en
modifier la forme sont appelées modulations linéaires : MDA, MDP et MAQ. À l’opposé, les
modulations qui modifient la forme du spectre du signal en bande de base sont dites non
linéaires : MDF.

Plusieurs améliorations peuvent être apportées à la modulation :

1. Modulation multiporteuses, OFDM (Orthogona1 Frequency Division


Multiplexing), consiste à répartir l'information à transmettre sur un grand nombre de
porteuses chacune modulée à bas débit.

2. Modulation M-aire : plutôt que de coder chaque symbole indépendamment, on


les regroupe par bloc de m où m représente le nombre de symboles à transmettre (M = 2m). A
chaque bloc ainsi formé on fait correspondre un signal. C’est ce qu’on appelle les modulations
à M états.

Les modulations à M états utilisent un ensemble de M signaux S i (t ) ( i  1, 2,, M )


de durée T pour transmettre m symboles toutes les T secondes.

S t   ut e j 2 f0 t (VII.1)

Où f 0 désigne la fréquence de l’onde porteuse, u t  le signal modulant (le signal en


bande de base) et l’ensemble de leurs échantillons un ,1 , un , 2 ,, un , m  représente les m

symboles binaires à transmettre associés à ce signal S t  .

Dans un espace à deux dimensions, ces M signaux sont représentés par un ensemble de
M points appelé constellation et ceci permet de différencier chaque type de modulation.

D’un point de vue théorique, l’opération de modulation à l’instant nT consiste donc à


faire correspondre un ensemble de m symboles à un point de la constellation repéré par son
abscisse  an et son ordonnée  bn .

57 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre VII- Modulation Codée en Treillis

Où a n et bn sont des symboles Q-aires, et le facteur  est un paramètre permettant de

fixer l’énergie moyenne des signaux émis, c’est-à-dire l’énergie moyenne Eb par symbole
binaire transmis.

 
Donc chaque ensemble des échantillons un ,1 , u n , 2 ,, un , m de m symboles binaires est

associé à chaque instant nT à un couple de symboles Q-aires an , bn  . Après passage dans le

canal de transmission, l’observation relative au couple an , bn  est représentée par un couple

a , b .
'
n
'
n

Les symboles transmis vont mieux suivre un code binaire de type Gray, il permet
d’affirmer qu’il existe généralement un seul symbole erroné.

On va présenter dans la section suivante quelques exemples de constellation


concernant les modulations qui seront utilisées dans ce travail : Modulation par Déplacement
de Phase à M états (MDP-M) et Modulation d’Amplitude de deux porteuses en phase et en
Quadrature à M états (MAQ-M).

a- Modulation par déplacement de phase à M états (MDP-M)

Dans ce cas an  cos  n et bn  sin  n

 
2n  1 avec 0  n  M  1 si M  2
n   M (VII.2)

0 ou  si M  2

Où  n représente la phase de l’onde porteuse.

La figure VII.1 représente quelques exemples de constellations de type circulaire


correspond à la modulation MDP-M.

58 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre VII- Modulation Codée en Treillis

MDP-16
MDP-8

Figure VII.1- Exemples de constellations correspondantes à


des modulations MDP-M.

La disposition des symboles sur un cercle se traduit non seulement par enveloppe
constante, mais aussi, par une énergie identique mise en œuvre pour transmettre chaque
ensemble de m symboles.

La complexité de l’ensemble émission/réception de la MDP-M augmente avec M, mais


reste raisonnable, ce qui en fait une modulation fréquemment utilisée pour M allant de 2 à 16
avec de bonnes performances.

b- Modulation d’amplitude de deux porteuses en quadrature à M états


(MAQ-M)

Pour un nombre d’états M grand, la MAQ constitue une solution satisfaisante pour
utiliser efficacement l’énergie émise. C’est une modulation où les signaux n’ont pas la même
énergie, on peut parler de l’énergie moyenne E m ou bien l’énergie crête à crête E c .

Elle se fait par une combinaison de deux porteuses en phase et en quadrature modulées
en amplitude. Si m est un nombre pair la MAQ-M présente la particularité de pouvoir se
résumer à deux MDA-M indépendantes agissant sur deux porteuses en quadrature, tandis que
pour m impair la MAQ-M ne peut pas se résumer à deux modulations d’amplitude
indépendantes.

Pour la MAQ on a : an , bn   1,3,,Q  1

La figure VII.2 représente quelques exemples de constellations de type carré et en


croix correspondant à la modulation MAQ-M.

59 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre VII- Modulation Codée en Treillis

MAQ-64

MAQ-32

MAQ-16

Figure VII.3- Exemples de constellations


correspondantes à des modulations MAQ-M

La constellation de la MAQ-M avec un nombre pair de symboles est carrée, et elle est
en croix pour un nombre impair de symboles.

Le choix de la répartition des points dépend des critères suivants :

1. Pour pouvoir distinguer deux ensembles de m symboles (par conséquent deux


signaux), il faut respecter une distance minimale d min entre les points représentatifs de ces
ensembles. Plus cette distance est grande et plus la probabilité d'erreur sera faible. La distance
minimale entre tous les ensembles de m symboles est :

d min  Mind ij  (VII.3)


i j

0
 
d i2, j   Si t   S j t  dt
2
i, j  1,2,, M  (VII.4)

Ceci est à rapprocher avec la définition de la distance de Hamming ou la distance


euclidienne.

2. A chaque ensemble de m symboles émis correspond un signal élémentaire et


par la même une énergie nécessaire à la transmission de cet ensemble. Dans la constellation,
la distance entre un point représentatif de cet ensemble et l'origine est proportionnelle à la
racine carrée de l'énergie qu'il faut fournir pendant l'intervalle de temps nT , n  1T  pour
émettre cet ensemble.

60 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre VII- Modulation Codée en Treillis

Les deux critères évoqués ci-dessus sont opposés puisque l'on serait tenté d'une part
d'éloigner les ensembles de m symboles au maximum pour diminuer la probabilité d'erreur et
d'autre part, de les rapprocher de l'origine pour minimiser l'énergie nécessaire à la
transmission.

Les critères de choix d'une modulation sont :

1. La constellation qui suivant les applications mettra en évidence une faible


énergie nécessaire à la transmission ou une faible probabilité d'erreur.

2. L'occupation spectrale du signal modulé.

3. La simplicité de réalisation.

VII.2 Construction du code

Dans le but de diminuer la probabilité d'erreurs Ungerboeck a proposé d'introduire de


la corrélation entre les point d'une constellation. Le principe utilisé est indiqué sur la figure
VII.3.

A un ensemble de K symboles binaires appelé message on associé un mot de code


constitué de N symboles binaires. Chaque mot de code dépend de plusieurs messages. Le
codeur présente donc un effet de mémoire (comme les codes convolutifs) qui va régir la
correlation entre les points de la constellation. Le mot de code vient ensuite sélectionner le
signal qui sera émis parmi les M points de la constellation.

Codeur Sélection du
de canal signal à émettre
Message Mot de code
(K symboles) (N symboles)

Figure VII.3- Principe d'une modulation codée

Le fonctionnement du modulateur peut être représenté par un diagramme en treillis


dont le nombre dont le nombre d'états est fonction de la mémoire du codeur. Chaque branche
de ce treillis est associé à un signal de la constellation. En réception la démodulation est faite
en utilisant l'algorithme de Viterbi.

61 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Chapitre VII- Modulation Codée en Treillis

VII.3 Analyse des performances

La probabilité d'erreurs est alors fonction de la distance minimale ou distance libre 𝑑𝑓


entre les chemin du treillis et non-plus de la distance minimale 𝑑0 entre les points de la
constellation.

le gain obtenu pour une modulation codée, en terme de rapport 𝐸𝑏 𝑁0 est


approximativement égal à:

𝑑𝑓 2
𝐺𝑑𝐵 = 10𝑙𝑜𝑔 (VII.5)
𝑑0

62 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
TD No. 01
Exercice 1
Soit un code en bloc de matrice génératrice :

0 0 1 1 1 0 1
 
G  0 1 0 0 1 1 1
1 0 0 1 1 1 0
 

1) Trouver les mots de codes possibles utilisés par le codeur.


2) Calculer le poids de chaque mot de code.
3) Calculer la capacité de détection d’erreurs de ce code.
4) Calculer la capacité de correction d’erreurs de ce code.
5) Transformer la matrice G sous une forme systématique G’.
6) Déduire la matrice de contrôle de parité H.

Exercice 2
Soit la matrice de contrôle d’un code en bloc :

1 0 1 1 0 0 0
 
1 1 1 0 1 0 0
H 
1 1 0 0 0 1 0
 
0 1 1 0 0 0 1 

1) Calculer la distance minimale de ce code.


2) Calculer le syndrome du mot reçu R  1111111 .

Exercice 3
Un code en bloc contient les quatre mots suivants :

0000000000
0000011111
1111100000
1111111111

1) Que vaut la distance minimale de ce code.


2) Combien d’erreurs peut-il détecter ? et combien d’erreurs peut-il corriger ?
3) Le récepteur reçoit le mot 1110000000, quel est le mot initial ?

Exercice 4
Soit un code en bloc qui au vecteur d'information i = (i1,i2,i3,i4) associe le mot de code
c= (i1,i2,i3,i4,c5,c6,c7) avec c5 = i1+i3+i4, c6 = i1+i2+i3, et c7 = i2+i3+i4.
1) Donner la matrice génératrice et la matrice de contrôle de ce code.
2) Soit i = (1 0 1 0), quel est le mot de code associé ?
3) Soit le message m = (1 1 1 1 0 0 1). Est-il un mot du code ?

63 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
TD No. 02
Exercice 1
1 011 00
 
Un code linéaire a pour matrice de contrôle H   1 1 0 0 1 0 
010001
 
1) Préciser la longueur n des mots de code et la longueur k des mots d'information.
2) Les messages suivants sont-ils des mots du code ?
 m1 = (1 1 1 0 1 1)
 m2 = (1 0 0 1 1 0)
3) Donner la matrice génératrice du code et le codage de chaque mot d'information.

Exercice 2
On considère un code en bloc de matrice génératrice G.

1 0 1 0 1 0 
 
G  1 1 0 1 0 0 
1 1 1 1 1 1 
 

1) Un code sous forme systématique est tel que les mots de code sont composés par les k bits
d’information suivis par (n −k) bits de redondance.
Ecrire la matrice génératrice du code permettant d’obtenir la forme systématique du code.
2) Donner tous les mots de code.
3) En déduire la distance minimale dmin de ce code. Combien d’erreurs peut-il corriger ?
4) Déterminer la matrice de contrôle du code, à partir de la matrice génératrice sous forme
systématique.

Exercice 3
1) Combien d'erreurs peuvent-elles être détectées grâce à un code de parité? Est-il possible de
corriger ces erreurs ?
2) Coder les messages suivants à l'aide d'un bit de parité :
 1101011001
 100
 11111000111001111
3) Quels sont les rendements des trois messages ci-dessus ?

Exercice 4
Soit un code en bloc de matrice de contrôle
 1 1 0 0 1 0 1
 
H   0 0 1 1 1 0 1
 1 0 1 0 0 1 1
 

1) Donner le nombre de bits de redondance.


2) Soit m un message dont tous les bits sont égaux à 1. Est-ce un mot du code?
3) Montrer que le code est un code de Hamming.

64 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
TD No. 03
Exercice 1
Soit le code cyclique C(2,4).
1) Donner un polynôme générateur du code C.
2) Donner un mot de code obtenu par codage non-systématique.

Exercice 2
Soit le polynôme g x   1  x  x3
1) Montrer que g x  est un polynôme générateur d’un code cyclique de longueur 7.
2) Quelle est la dimension de ce code.
3) Déterminer la matrice génératrice G de ce code

Exercice 3
Soit g x   x 2  x  1 le polynôme générateur d’un code cyclique de longueur 6.
1) Quelle est la longueur des mots d'information ?
2) Montrer que cx   x3  x 2  x est un polynôme de mot de code.
3) Donner tous les mots de code possible par codage systématique.
4) Déterminer la distance minimale de ce code.
5) Trouver une matrice génératrice systématique de ce code.
6) La matrice génératrice que vous avez trouvée garde-t-elle les mêmes correspondances entre
les mots d’information et les mots-codes que celles trouvées à la question 3.

Exercice 4
Soit un code cyclique de longueur 7 et de polynôme générateur g x   x 5  x 4  x  1
- Donner le polynôme de contrôle de parité.

Exercice 5
Le code binaire de matrice génératrice

0 0 1 1 1
 
G   0 1 1 1 0
1 1 1 0 0
 
est-il cyclique.

Exercice 6
Soit le polynôme sur GF 2 , g x   x 8  x 7  x 6  x 4  1
1) Montrer que g x  et un polynôme générateur d’un code cyclique C de longueur 15.
2) Déterminer la longueur des mots d’information.
3) Montrer que C est un code BCH primitif.
4) Déterminer la distance construite de C

Exercice 7
Soit un code de Reed-Solomon C de longueur 7 et de distance minimale 5.
1) Déterminer les paramètres de C.
2) Déterminer le polynôme générateur de C.

65 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
TD No. 04
Exercice 1
Soit le code convolutif suivant :

1) Déterminer le rendement, la longueur de contrainte et les polynômes générateurs de ce


code.
2) Déterminer les états de ce code.

Exercice 2
Soit un codeur convolutif représenté ci-dessous.

1) Déterminer le rendement et la longueur de contrainte de ce code.


2) Déterminer les polynômes générateur et les séquences génératrices de ce code.
3) Représenter le diagramme d'état de ce codeur.

Exercice 3
On considère le code convolutif de rendement ½ et de polynômes générateurs: G1  D  1 et
G2  D2  D
1. Représenter le code associé.
2. Représenter le diagramme en arbre.

66 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
TD No. 05

Exercice 1
Soit un code convolutif de rendement 𝑅 = 1 2, de longueur de contrainte 𝐾 = 3 et de
polynômes générateurs 7, 5 .
1) Représenter le code associé.
2) Déterminer la distance libre de ce code.
3) On suppose qu’on a émis la séquence suivante 1 1 0 1. On suppose que le registre du
codeur est initialisé par des zéros. Quel est alors le mot de code associé à cette séquence ?
4) La séquence reçue est 11 00 11 11. Déterminer la séquence émise la plus vraisemblable.
5) Représenter le code convolutif systématique récursif associé à ce code, et de polynômes
7
générateurs 1, .
5

Exercice 2
Soit le codeur convolutif suivant :

1) Ce codeur est il catastrophique ?


2) Le registre du codeur est initialisé par des zéros. L’entrée du codeur est constituée d’une
longue séquence de « 1 ». On suppose que le canal de transmission introduit une erreur aux
positions 1, 2 et 4 de la séquence codée. Déterminer la séquence estimée.

Exercice 3
Soit un code convolutif poinçonné de rendement 𝑅 = 2 3, obtenu à partir d’un code de
rendement 𝑅 = 1 2, de longueur de contrainte 𝐾 = et de polynômes générateurs 7, 5 .
1) Parmi les masques de poinçonnage suivants, choisir le masque correspondant à ce code
poinçonné:
1 1 1
1 0 1 0 1 0 1 1 0 1
P  , P  , P  1 0 0 , P   
1 1 1 1 0 1 0 0 0 0 1 1 0
1) Pour une séquence 1 1 0, déterminer la séquence codée et poinçonnée
3) On suppose que le canal de transmission introduit une erreur à la position 4 de la séquence
poinçonnée. Calculer le TEB à la sorite du canal de transmission.
4) Déponçonner la séquence reçue.

67 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
TD No. 07

Exercice 1
1)-a Coder la séquence de bits d'information suivante (1111) par un code convolutif C 1 de
rendement 1/2, de longueur de contrainte 4 et de séquences génératrices g1=[1101] et
g2=[1110].
1)-b Représenter le schéma de ce codeur.
2)-a Recoder la sortie de ce codeur convolutif par un code en bloc C 2 de matrice génératrice G
1 0 0 0 1 1 1
𝐺= 0 1 0 1 0 1 1
0 0 1 1 1 0 1
2)-b Déterminer le rendement de ce code. Justifier
2)-c Déterminer sa distance libre. Déduire le nombre d’erreurs à détecter le nombre d’erreurs
à corriger par ce code.
3)-a Le code convolutif C1 et le code en bloc C2 sont concaténés. Quel est le type de cette
concaténation.
3)-b Déterminer le rendement globale de cette concaténation.

Exercice 2
Soit une concaténation parallèle de deux codes de rendement global R=1/2, construit à partir
de deux codes CSR élémentaires C1 et C2, de même longueur de contrainte K=3 et de
polynômes générateurs (1, 7/5) et (1, 7/5).
1) Représenter la structure de ce turbo-code
2) Coder la séquence (111) a l'aide de cette structure.

Exercice 3
Soit une modulation codée d'une distance libre 𝑑𝑓 = 5 entre les chemin du treillis et non-plus
de la distance minimale 𝑑0 = 2 entre les points de la constellation.
1) Calculer le gain obtenu pour une modulation codée, en terme de rapport 𝐸𝑏 𝑁0 .

68 Cours & Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
Conclusion Générale
__________________________________

L’objectif de ce cours était d’étudier les codes correcteurs d'erreurs et leurs différents
types. Et de donner des notions de base et donner une ouverture sur les techniques plus
récentes.

On a pour cela, au premier chapitre et sous forme introductive, identifié le principe de


détection et correction des erreurs de transmission et mesure de performances des codes
correcteurs d'erreurs. Ensuite, on a discuté les avantages et les inconvénients des codes
correcteurs d'erreurs .

Le deuxième, le troisième et le quatrième chapitre a été axé sur l'étude respectivement


en détail des codes en bloc, cycliques et des codes convolutifs.

Le chapitre cinq était orienté à l’étude de la concaténation des codes correcteurs


d'erreurs permettant d'améliorer les performances des codes correcteurs d'erreurs. Dans le
chapitre six, on a présenté les turbo-codes permettant d'approcher la limite de Shannon.

Les modulations codée en treillis sont présente dans le dernier chapitre, ces
modulations sont utilisés pour des transmission à haut débit dans une bande passante étroite.

70 Cours&Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC
[1] Y. Jiang, “A Practical Guide to Error-Control Coding using MATLAB”, Artech House,
2010.

[2] Y. S. Cho, J. Kim, W. Y. Yang and C. G. Kang, “MIMO-OFDM Wireless


Communications with Matlab”, John Wiley & Sons (Asia) Pte Ltd, 2010.

[3] T. S. Rappaport, “Wireless Communications: Principles and Practice”, Second Edition,


2002.

[4] J. G. Proakis, “Digital Communications”, Fourth Edition, 2001.

[5] M. Weeks, “Digital Signal Processing using MATLAB”, Infinity Science Press LLC,
2006.

[6] Marco Baldi, “QC-LDPC Code-Based Cryptography”, Springer, 2014.

[7] J. C. Moreira and P. G. Farrell, “Essentials of Error-Control Coding”, John Wiley & Sons
Ltd, 2006.

[8] C. Berrou, “Codes et Turbo-Codes”, Springer, 2007.

[9] T. K. Moon, “Error Correction Coding Mathematical Methods and Algorithms”, A John
Wiley & Sons, Inc, 2005.

70 Cours&Travaux Dirigés M2: Codage de Canal Latifa MOSTARI


UHBC