Vous êtes sur la page 1sur 40

Bibliographie

 J. PROAKIS : Digital Communications,


 Ed. McGraw Hill, 2001.
TS219 CODAGE CANAL  S. LIN, D.J. COSTELLO : Error Control Coding : Fundamentals and
Applications,
 Ed. Prentice-Hall, 1983.
 A. GLAVIEUX, M. JOINDOT : Communications numériques.
Introduction,
Benoît ESCRIG  Ed. Masson, 1996.
ENSEIRB-MATMECA/IRIT

29/08/2011 Codage Canal-BE 1 29/08/2011 Codage Canal-BE 2

Plan du cours Plan du cours


1. Introduction 1. Introduction
2. Codes en blocs linéaires 1. Contexte
3. Codes convolutifs 2. Principe
4. Combinaisons de codes 2. Codes en blocs linéaires
3. Codes convolutifs
4. Combinaisons de codes

29/08/2011 Codage Canal-BE 3 29/08/2011 Codage Canal-BE 4

1
Enjeux soulevés par l’altération des
Contextes d’application données
DONNÉES ORIGINALES  L’équipement qui va utiliser les données (téléphone mobile, lecteur
01010011000111 DVD) ne sait pas que le flux de données comporte des erreurs.
(données émises/stockées)
 L’impact de l’utilisation de données altérées dépend de l’application
DONNÉES À TRAITER et du type d’altération.
(données reçues/lues)
01000011100111
 Fort impact : un bit faux dans le codage d’un numéro de carte bleue .
 Systèmes de télécommunications  Faible impact : plusieurs paquets manquants dans le codage d’une
conversation téléphonique.
 Exemples : WiFi, TNT, Bluetooth, 3G, …
 Causes de l’altération : mauvaises conditions de réception.
 Résultat : les données reçues sont différentes des données émises.
 Stockage de données sur support physique BLOC UTILISATEUR
Stockage : écriture sur support physique (CD, disque dur). DONNÉES
 DES DONNÉES
 Causes de l’altération : CD rayé, …
 Résultat : les données lues sont différentes des données écrites.
29/08/2011 Codage Canal-BE 5 29/08/2011 Codage Canal-BE 6

Solutions au dessus de la couche


Enjeu physique
 Comment savoir si un flux de données comporte des erreurs ?  Couche application : interpoler entre les données RÉCEPTION
 1ère étape : détecter les erreurs. précédentes et les données suivantes
 Que faire lorsque le flux de données à traiter est erroné ?  Technique possible lorsque les données traitées 1 3 4
sont très redondantes et que la perte d’un bloc de
 Corriger les erreurs (protocoles de la couche 1 et lecture de données sur
données n’altère pas la qualité du service. TRAITEMENT
support CD).
 Exemple : film, conversation téléphonique.
 Solliciter l’émission de nouvelles données (protocoles à partir de la
couche 2).  Couches réseau (2,3,4) : solliciter l’émission de 1 2 3 4
 Interpoler entre les données précédentes et les données suivantes nouvelles données
(applications).  Mécanisme ARQ (Automatic Repeat reQuest).
vers la couche supérieure
OK
transmission test
demande de retransmission
OK
29/08/2011 Codage Canal-BE 7 29/08/2011 Codage Canal-BE 8

2
Détecter et corriger les données altérées Exemple : code à répétition C(3,1)
 Codes correcteurs d’erreurs : rajouter des bits de redondance aux DONNÉES ÉMISES
bits d’information (opération inverse à l’opération de compression).
01001110 CODEUR 000 111 000 000 111 111 111 000
 Codage :
 Blocs de k bits en entrée.
 Blocs de n bits en sortie (n>k).
Code à répétition Les seuls blocs de 3 bits
 Décodage : retrouver les blocs de k bits à partir des blocs de n bits. 0 donne 000 autorisés sont les blocs 000 et
 Application aux télécommunications : codage canal 1 donne 111 111
 Adapter le codage au canal de transmission pour améliorer les
performances en termes de probabilité d’erreur binaire Pb.

codage émetteur canal récepteur décodage DONNÉES REÇUES


Pb(nc) non codé
000 110 000 010 111 110 111 000 DECODEUR 01001110
Pbc<Pb(nc) codé ? ? ?
29/08/2011 Codage Canal-BE 9 29/08/2011 Codage Canal-BE 10

Inconvénient des codes correcteurs


Limitation des codes correcteurs d’erreurs
 Si les erreurs sont rares, elles sont effectivement  En théorie, l’ajout de redondance contribue à augmenter les besoins
corrigées. en bande passante (Tbloc, temps d’émission d’un bloc de données).
000 110 000 010 111 110 111 000  En pratique, le débit utile est diminué car le débit des données
codées est fixé par la norme.
 Sinon, le décodeur va générer des erreurs là où il n’y en  Plus il y a de protection (et donc de redondance – k/n petit), plus le
avait pas. débit utile diminue.
k CODEUR n
000 110 000 010 111 110 111 000
Cas non codé Cas codé
 Conséquence : un décodeur ne peut traiter correctement
Nombre de bits émis / bloc k n
des données qu’à partir d’une certaine qualité à l’entrée
Débit k/Tbloc n/Tbloc
du décodeur (aux environs de 1 bit faux sur 10 ou 1 bit
faux sur 100). Données non codées Données codées
Débit k/n . D D (fixe)
29/08/2011 Codage Canal-BE 11 29/08/2011 Codage Canal-BE 12

3
Enjeu des codes correcteurs d’erreurs Plan du cours
 Plus il y a de redondance, 1. Introduction
 Plus la capacité de correction est grande. 1. Contexte
 Plus la consommation en bande passante est grande. 2. Principe
 Enjeu : fournir la meilleure capacité de correction en utilisant le 2. Codes en blocs linéaires
moins de bits de redondance. 3. Codes convolutifs
 Intérêt pour les systèmes de télécommunications 4. Combinaisons de codes
 Les techniques de transmission augmentent le rapport signal à bruit à la
réception mais n’empêchent pas les erreurs.
 Les codes correcteurs permettent alors d’améliorer un peu plus les
performances en termes de BER (Bit Error Rate).
 Intérêt pour le stockage de données (disque dur, CD)
 Récupération de données lorsque le support de stockage est défectueux.

29/08/2011 Codage Canal-BE 13 29/08/2011 Codage Canal-BE 14

Principe du codage Principe du décodage


 Ajouter au message à transmettre des bits de redondance selon une  Coder les données sans les décoder ne sert à rien.
loi donnée.  Décoder : tester si la loi de codage est respectée.
Taux de codage Rc. k

Rc =  Si la loi de codage est respectée, alors les données sont envoyées au
 Exemple : code à répétition C(3,1) n bloc de traitement suivant.
 Si 0, alors 000. Si 1, alors 111.  Exemple d’un code à répétition C(3,1) : si 000, alors 0. Si 111, alors 1.
 Si la loi de codage n’est pas respectée, il y a détection d’erreur(s).
k CODEUR n  Exemple d’un code à répétition C(3,1) : il y a détection d’erreur dès
lors que le bloc de trois bits reçus n’est ni 000, ni 111 (ex : 001).
 S’il y a détection d’erreur alors il y a correction et envoi au bloc de
traitement suivant, ou suppression des données et demande de
retransmission.
n DÉCODEUR k
29/08/2011 Codage Canal-BE 15 29/08/2011 Codage Canal-BE 16

4
Distinction entre détection et correction
Exemple de correction d’erreur d’erreur
 Détection d’erreur : le décodeur détecte que le bloc de bits à traiter est
 Détection d’erreur : le mot 110 est Code à répétition erroné.
différent de 000 et de 111. 0 donne 000  L’information produite est binaire : il y a ou il n’y a pas d’erreur (une ou plusieurs
 Correction d’erreur : le mot reçu est plus 1 donne 111 erreurs).
proche de 111 que de 000. La sortie est  Correction d’erreur : le décodeur sait où se trouvent les erreurs et les corrige.
donc 1.
DONNÉES Code à répétition Code à répétition
REÇUES 0 donne 00 0 donne 000
110 1 donne 11 1 donne 111
DÉCODEUR 1
DÉCODEUR erreur DÉCODEUR erreur
détection détection
01 110
DÉCODEUR DÉCODEUR
correction 0 correction 1
29/08/2011 Codage Canal-BE 17 29/08/2011 Codage Canal-BE 18

Historique Plan du cours


 1948 : Shannon (théorie de l’information). 1. Introduction
 1950 : Hamming. 2. Codes en blocs linéaires
 1950-1970 : codes en blocs et codes cycliques, BCH (Bose-Chaudhuri- 1. Matrice génératrice et matrice de contrôle de parité
Hocquenghem) et RS (Reed-Solomon). 2. Codes cycliques
3. Décodage optimal soft-decision
 1960-1970 : codes convolutifs (Fano, Forney, Viterbi).
4. Décodage hard-decision
 1980 : modulations codées en treillis (Ungerboeck).
3. Codes convolutifs
 1990 : décodage itératif et turbo-codes (Berrou-Glavieux). 4. Combinaisons de codes
 2000 : codes LDPC (Low Density Parity Check).

29/08/2011 Codage Canal-BE 19 29/08/2011 Codage Canal-BE 20

5
Codes en blocs linéaires Cas particulier : q=2b (b>1)
n
 Code en bloc : ensemble de vecteurs de  Possibilité de représenter un symbole par b bits.
longueur n appelés mots de code.  Conséquence : un mot de code de N symboles peut se représenter
 Les composantes d’un mot de code par un mot de code binaire de bN bits.
appartiennent à un alphabet à q symboles. qn  Exemple : si q = 4=22, alors mot de code constitué de 0,1,2 et 3.
 Exemples :  Possibilité de représenter un symbole (0,1,2,3) par 2 bits (00 01 10 11).
 Si q=2, alors les mots de code sont  Conséquence : mot de code de 8 symboles = mot de code binaire de 2x8
constitués de 0 et 1. 01010010 bits.
 Si q =3, alors les mots de code sont
01210210 0 1 2 3 2 1 1 2
constitués de 0,1 et 2.

code composante valeur 00 01 10 11 10 01 01 10


=
q=2 binaire bit {0,1}
q≠2 non binaire symbole {0,…,q-1}
29/08/2011 Codage Canal-BE 21 29/08/2011 Codage Canal-BE 22

n
Généralisation aux
Définition d’un code C(n,k) codes non binaires
qn
Association de 2k mots de code de n bits aux 2k mots de données de k
  Mots de code à n symboles (et non bits).
bits.  Symboles : 0,1,2, …,q-1
 Exemple C(4,2) : les 4 (22) mots de code sont choisis parmi les 16 (24)  qn mots de n symboles.
mots de 4 bits.  Sélection de qk mots pour former un code.
n=4
 Exemple C(2,1) q=3 n=2
2k mots
Mot de Mot de de k bits  1 symbole en entrée : 0,1,2.
données code CODE  2 symboles en sortie : (0,1,2) x (0,1,2).
00 1010
Mot de données Mot de code
01 0010 2n=16 2n mots
de n bits 0 12 qn=32
10 0110
1 20
11 1011
sélection de 2k mots 2 22
29/08/2011 Codage Canal-BE de n bits 23 29/08/2011 Codage Canal-BE 24

6
Poids d’un mot : nombre d’éléments non Opérations sur les mots de code et les
nuls dans le mot mots de données
 Distribution des poids d’un code w : ensemble des poids d’un code.  Les composantes des vecteurs appartiennent à un alphabet à q
 Existence de codes dont tous les mots de code ont le même poids symboles.
(codes à poids fixe ou à poids constant).  Alphabet muni de l'addition modulo-q et de la multiplication modulo-
q = corps de Galois d'ordre q, noté GF(q).
 Paramètre important pour établir les performances de certains codes.  Corps de Galois = corps d'ordre fini.
 Exemples : répartition possible des poids sur un code C(3,2).  Corps d'ordre fini = corps dont le nombre d'éléments (ordre) est fini.
 Exemple : GF(2) et GF(3).
× 0 1 2 + 0 1 2
000 001 011 111 w = {0,1,2,3}
+ ×
000 001 010 100 w = {0,1}
0 1 0 1 0 0 0 0 0 0 1 2

110 101 011 111 w = {2,3} 0 0 1 0 0 0 1 0 1 2 1 1 2 0

1 1 0 1 0 1 2 0 2 1 2 2 0 1

29/08/2011 Codage Canal-BE 25 29/08/2011 Codage Canal-BE 26

Distance minimale dmin d’un code Plan du cours


 Distance de Hamming : nombre 1. Introduction
d’éléments différents (bits, Mot de Mot de 2. Codes en blocs linéaires
symboles) entre deux mots. données code 1. Matrice génératrice et matrice de contrôle de parité
 Si les mots sont de taille n, la 00 000 2. Codes cycliques
distance est comprise entre 0 3. Décodage optimal soft-decision
01 101
et n. 4. Décodage hard-decision
 Distance de Hamming 10 110 3. Codes convolutifs
minimale entre deux mots de 11 011 4. Combinaisons de codes
code : dmin.
 Exemple : C(3,2), dmin=2. D([101], [110]) = 2

29/08/2011 Codage Canal-BE 27 29/08/2011 Codage Canal-BE 28

7
Définitions et Notations Génération de la jième composante de Cm
 Soit un code C(n,k).  Combinaison linéaire (CL) des k composantes du mot de données Xm.
 Mot de données Xm à k composantes.  Pour savoir quelles composantes de Xm participent à la CL : coefficients
gij (0 ou 1).
 Mot de code Cm à n composantes.  i de 1 à k pour les k composantes du mot de données
 Pour construire un code C(n,k) valide, il faut que les 2k n-uplets  j de 1 à n pour les n composantes du mot de code.
forment un sous-espace vectoriel de Vn, espace vectoriel des  m de 0 à 2k-1 pour l’ensemble des mots de données.
mots de n bits.
xm1 xm2 … xmi … xmk

g1j g2j gij gkj

X m = [x m1x m 2 ...x mk ] Cm = [cm1cm 2 ...cmk cm (k +1)...cmn ] k


Σ cmj = ∑ gij xmi
i =1
Xm CODEUR Cm cmj = xm1g1 j + xm2g2 j + L + xmk gkj j = 1,2,L, n
29/08/2011 Codage Canal-BE 29 29/08/2011 Codage Canal-BE 30

Génération des n composantes de Cm Code systématique


 Pour n composantes, n combinaisons linéaires différentes.  Un code est dit systématique si les k premiers bits du mot de code
sont constitués par les k bits du mot de données.
 Le codeur est entièrement défini par n CLs. C m = X mG
 Matrice génératrice de rang k.  Ces k bits sont dits systématiques. Les (n-k) bits restants sont appelés
 Rang d’une matrice : nombre maximal de vecteurs lignes (ou colonnes) bits de parité.
linéairement indépendants.  Matrice génératrice pour code systématique : il est possible d’obtenir
 Les vecteurs gi forment une base non unique. la matrice génératrice de la version systématique d’un code par
opérations sur les lignes et permutations des colonnes.
Xm CODEUR Cm  g1   g11 g12 L g1 n 
 g  g g22 L g2n 
C m = xm1 g1 + xm2 g2 + ... + xmk g k G= =
2 21

k CODEUR k n-k
M  M M M 
1≤i ≤k
   
k
 g k  gk 1 gk 2 L gkn 
cmj = ∑ gij xmi 1≤ j ≤n
i =1
Matrice génératrice
29/08/2011 0 ≤ m ≤ 2k − 1 Codage Canal-BE 31 29/08/2011 Codage Canal-BE 32

8
Forme de la matrice génératrice
pour un code systématique Intérêt des codes systématiques
 Ik matrice identité et P matrice k x (n-k).  Le mot de données apparaît explicitement dans le mot de code.
 Le décodage est plus facile car il suffit de tronquer le mot reçu.
 Exemple : le code de l’exemple précédent est systématique.
1 0 L 0 p11 p12 L p1(n − k ) 
  X m [Ik P ] = [X m X mP ]
  Mot de Mot de
0 1 O M p21 p 22 L p 2 (n − k ) 
G = [Ik P] = 
données code
Bits systématiques Bits de parité
 00 000
M O O 0 M M M  01 011
  1 0 1
  Exemple : code C(3,2) G=  10 101
L  
0 L 0 1 pk 1 pk 2 p k (n − k )  0 1 1 11 110

29/08/2011 Codage Canal-BE 33 29/08/2011 Codage Canal-BE 34

Exercice : code C(7,4) Code dual d’un code C(n,k)


 Soit le code C(7,4) de matrice génératrice C(7,4).  Soit un code C(n,k) de matrice génératrice G. GHT = 0
 Donner les expressions des éléments du mot de code cmj, où j=1,…,n,  Code dual : code C(n,n-k) de matrice génératrice H. C mHT = 0
en fonction des éléments du mot de données xmi, où i=1,…,k.  Propriété : tous les mots de code générés par G sont
orthogonaux à ceux générés par H. G = [I k P]
1 0 0 0 1 0 1  Forme particulière de la matrice H si le code généré
0 1 0 0 1 1 1
G=
0
par la matrice G est systématique.
[
H = − PT I n − k ]
0 1 0 1 1 0
  1 0 0 0 1 0 1
0 0 0 1 0 1 1 1 1 1 0 1 0 0
0 1 0 0 1 1 1
G= H = 0 1 1 1 0 1 0
0 0 1 0 1 1 0 1 1 0 1 0 0 1
 
0 0 0 1 0 1 1

29/08/2011 Codage Canal-BE 35 29/08/2011 Codage Canal-BE 36

9
Capacité de détection d'un code C(n,k) Exemples
2k mots de données
 Soit un code C(n,k) de distance minimale dmin.  C(3,2) : Mot de Mot de
dmin=2, capacité de détection : 1. données code
 Capacité de détection d’un code : au plus dmin-1 

erreurs.  La réception de [010] implique au moins 00 000


Détection : dmin-1 erreurs transforment un mot une erreur.
 01 011
de code en un autre mot qui n'est pas un mot  C(5,1) : 10 101
de code.  dmin=5, capacité de détection : 4.
 La réception de [00010] implique au 11 110
ÉVENTUELLEMENT
moins une erreur.
MOT DE + d>=dmin = MOT DE Mot de Mot de
dmin données code
CODE ERREURS CODE
0 00000
CERTAINEMENT
1 11111
MOT DE + d<dmin ≠ MOT DE
dmin ≤ n − k + 1
CODE ERREURS CODE
29/08/2011 Codage Canal-BE 37 29/08/2011 Codage Canal-BE 38

Calcul de la capacité de détection


d'un code Capacité de correction d'un code C(n,k)
2k mots de données
 Code C(n,k) = 2k mots de codes de longueur n parmi 2n mots possibles.  Soit dmin, la distance minimale.
 Lors d’une transmission, le mot de code Cm subit une altération e pour  Capacité de détection : dmin –1. t
donner Y.  Capacité de correction t : partie entière
 Pour n grand, le nombre d'erreurs non détectables devient petit devant le de la moitié de (dmin-1).
nombre d'erreurs détectables.  Pour pouvoir corriger ces erreurs, il faut
2n -1 erreurs possibles
 Exemple : C(7,4) (autres que le mot nul) que le mot reçu soit suffisamment près
 16 mots de code, 15 erreurs non détectables. d'un mot de code existant.
 128-16=112 erreurs détectables dmin
2n mots d −1
2n-2k erreurs de code t = Ent  min 
2k − 1 détectables  2 
Y = Cm+e
2n − 2 k

2k-1 erreurs non détectables car 2k–1 mots de code non nuls
29/08/2011 Codage Canal-BE 39 29/08/2011 Codage Canal-BE 40

10
Exemples Limitation
 Code C(3,2), dmin=2 : Mot de Mot de  Exemple : code à répétition C(3,1).
 Réception de [010]. données code  Transmission de [000] et réception de [011], détection d’une erreur
et correction en [111].
 Détection d’une erreur. 00 000
 Conséquence :
 Capacité de correction nulle. 01 101  en théorie, génération d’erreurs !
 Impossibilité de décider quel 10 110  en pratique, cas correspondants à des conditions de transmission
mot a été transmis : [000] ou inexploitables.
11 011
[011] ou [110].  Les codes correcteurs ne peuvent fonctionner correctement que si le
 Code à répétition C(3,1) : BER (Bit Error Rate) avant correction est inférieur à 10-1.
Mot de Mot de
 Capacité de détection 2, capacité de données code
correction 1.
 Réception de [001] : détection d’une 0 000
erreur et correction en [000]. 1 111

29/08/2011 Codage Canal-BE 41 29/08/2011 Codage Canal-BE 42

Conclusion sur les codes en blocs


Codes étendus et codes raccourcis linéaires
Code étendu C(n+1,k) généré à partir d’un code C(n,k) : ajout d’un bit
C m = X mG

de parité (somme modulo 2 du mot de code) au mot de code généré Xm CODEUR Cm
par C(n,k) : 0 si nombre de 1 dans mot de code pair, 1 sinon.
 Propriété : si C(n,k) de distance minimale dmin impaire, alors C(n+1,k)
Mot de code Mot de données Matrice génératrice
de distance minimale dmin+1.
1xn 1xk kxn
 Code raccourci C(n-l,k-l) généré à partir d’un code systématique de la
forme C(n,k) : suppression des l premiers bits d’information  Limitations des codes en blocs linéaires De la forme [Ik P]
(génération des mots de code par G) :  Stockage de la matrice (espace mémoire pour les codes
 Propriété : si le code C(n,k) est de distance minimale dmin, alors le requis important), systématiques
code C(n-l,k-l) a au moins une distance minimale de dmin.  Traitement temps réel impossible (traitement
 Codes étendus et raccourcis utiles pour faire des multiples d’octets. bloc).
 Alternative : codes cycliques.

29/08/2011 Codage Canal-BE 43 29/08/2011 Codage Canal-BE 44

11
Plan du cours Codes cycliques
1. Introduction  Famille de codes linéaires ayant la propriété suivante : toute
2. Codes en blocs linéaires permutation circulaire d'un mot de code C donne un autre mot de
1. Matrice génératrice et matrice de contrôle de parité code.
2. Codes cycliques  Représentation polynomiale des codes cycliques
3. Décodage optimal soft-decision  Associer à chaque mot de code, à n composantes, un polynôme C(p).
4. Décodage hard-decision  Propriétés du polynôme :
3. Codes convolutifs  Nombre de coefficients : n, de 0 à (n-1). C = [cn−1cn−2 ...c1c0 ]
Combinaisons de codes
C' = [cn−2cn−3 ...c0cn−1 ]
4.
 Degré inférieur ou égal à (n-1).
 Codes binaires : coefficients dans {0,1}.

C = [cn−1cn−2 ...c1c0 ] ⇒ C (p ) = cn−1 p n−1 + cn−2 pn−2 + L + c1 p + c0

29/08/2011 Codage Canal-BE 45 29/08/2011 Codage Canal-BE 46

Génération de la permutation
Exemples cyclique d’un mot de code
Comment passer de C à C1 ? C = [c n −1c n − 2 ...c1c0 ]
C = [1] ⇒ C (p ) = 1


 Idée 1 : p C(p) mais p C (p) ne peut pas être un mot de code car
C = [10] ⇒ C (p ) = p il est de degré n si cn-1=1. C1 = [cn − 2c n − 3 ...c0cn − 1 ]
Idée 2 : division de p C(p) par pn+1
C = [11] ⇒ C (p ) = p + 1


C (p ) = cn−1 pn−1 + cn−2 pn−2 + L + c1 p + c0


C = [1101 ] ⇒ C (p ) = p3 + p2 + 1
pC (p ) = cn−1 p n + cn−2 pn−1 + L + c1 p2 + c0 p
C = [1101101 ] ⇒ C (p ) = p6 + p5 + p3 + p2 + 1 C1 (p ) = cn−2 pn−1 + cn−3 p n−2 + L + c0 p + cn−1

pC (p ) = cn−1 (p n + 1) + cn−2 pn−1 + L + c1 p2 + c0 p + cn−1


pC (p ) = cn−1 (p n + 1) + C1 (p )

29/08/2011 Codage Canal-BE 47 29/08/2011 Codage Canal-BE 48

12
Génération des mots de code par Code cyclique et
permutation cyclique multiplication polynomiale
 C1 : reste de la division de pC(p) par pn+1.
Soit un polynôme générateur
g(p ) = p n−k + gn−k −1 p n−k −1 + L + g1 p + 1

 Généralisation : g(p) de degré (n-k), facteur
X (p ) = xk −1 pk −1 + xk −2 p k −2 + L + x1 p + x0
 Permutation de Ci de i éléments : reste de la division de piC(p) par (pn+1) de pn+1 (g(p) divise pn+1).

Cm (p ) = X m (p )g(p )
 Soit Xm(p) le polynôme
d’information à coder.

pC (p ) = cn−1 (pn + 1 ) + C1 (p )
Soit Cm(p) le polynôme du
C1 = [cn−2cn−3 ...c0cn−1 ]


p7 + 1 = (p + 1 )(1 + 1 )(1 1)
mot de code.
+2
p34 p243 p34+2p4
+3
p iC (p ) = Q(p )(pn + 1) + Ci (p ) Ci = [cn−i −1cn−i −2 ...cn−i +1cn−i ] g(p ) g1 ( p )

Exemple avec n=7 : avec p7+1,


possibilité
C = [cn−1cn−2 ...c1c0 ] de générer deux codes cycliques C(7,4).

29/08/2011 Codage Canal-BE 49 29/08/2011 Codage Canal-BE 50

 0  0 0 0 0 0 0 0
   
   
 1  0 0 0 1 1 0 1
   
 2  0 0 1 1 0 1 0
   
Table de g(p)   
 3  0
  
0 1 0 1 1 1


Lien avec les matrices génératrices
 4  0 1 1 0 1 0 0
   
   
 g(p)=p3+p2+1  5  0 1 1 1 0 0 1
  
  


 La notion de code dual existe mais n’est pas utilisée.
 C(7,4)  6  0 1 0 1 1 1 0
     Matrice génératrice d’un code cyclique C(n,k) de polynôme g(p)
 Exemples :  7  0 1 0 0 0 1 1
constituée des lignes :
  =  
 X(p)=1 donne C(p)=g(p)    
 8  1 1 0 1 0 0 0  pk-1g(p)
X(p)=p donne C(p)=g(p).p    

 9  1
  
1 0 0 1 0 1

 pk-2g(p) 1 g n − k −1 L 1 0 L 0
 X(p)=p+1 donne     …  
C(p)=g(p)(p+1)=p4+p3+p+p3+p2+1=p4+p2+p+1

10  1
  
1 1 0 0 1 0
  
     pg(p) 0 1 O O O M
11 1 1 1 1 1 1 1
     g(p) G=  
12 1
  
0 1 1 1 0 0
 M O 1 0
  
13  1 0 1 0 0 0 1
  
     
14  1
  
0 0 0 1 1 0
 0 L 0 1 g n − k −1 L 1
   
15  1 0 0 1 0 1 1

29/08/2011 Codage Canal-BE 51 29/08/2011 Codage Canal-BE 52

13
Exemple : C(7,4) Construction de codes systématiques

g (p ) = 1 + p 2 + p 3
 Codes systématiques : k premiers bits constitués par les bits
d’information.
 Méthode :
1 1 0 1 0 0 0  Multiplier le polynôme d’information X(p) par pn-k.
0 1 1 0 1 0 0  Diviser pn-kX(p) par g(p).
G=   Ajouter le reste de la division, noté r(p), à pn-kX(p).
0 0 1 1 0 1 0
0 0 0 1 1 0 1 
 p n−k X (p ) = Q(p )g(p ) + r (p )
p n−k X (p ) + r (p ) = Q(p )g(p )

29/08/2011 Codage Canal-BE 53 29/08/2011 Codage Canal-BE 54

Exemple : C(7,4) et g(p) = p3+p+1 Mise en œuvre de codes cycliques


 Mot à coder X=[1001]  Utilisation de registres à décalages.
 X(p)=p3+1  Registre : case mémoire accessible par le processeur sans temps
 pn-kX(p)= p6+p3 d’accès (de taille 64 bits pour les processeurs dits 64 bits).
 Le reste de la division de pn-kX(p) par g(p) donne les bits de parité.  Registre à décalage : registre de taille fixe dans lequel les bits sont
 g=[1011]. décalés à chaque coup d'horloge.
 Intérêt des registres à décalages
 Utiles pour le traitement de flux de donnés : peuvent traiter des flux
ininterrompus de bits.
 Utiles pour la mise en œuvre d’applications temps réel : un bit sortant
pour un bit entrant.

29/08/2011 Codage Canal-BE 55 29/08/2011 Codage Canal-BE 56

14
Étapes de codage Codeur cyclique
 Multiplier le polynôme d’information X(p) par pn-k : décalage de  Basculement des interrupteurs après passage des k bits
registres. d’information.
 Diviser pn-kX(p) par g(p) : seule opération non triviale à réaliser.
 Ajouter le reste de la division, noté r(p), à pn-kX(p) : remplir les cases
du registre. …
1 g1 gn-k-1


logique combinatoire sorties c0 c1 cn-k-1
bits de
polynôme pn-kX(p) parité
entrées sortie
bits d’information
29/08/2011 Codage Canal-BE 57 29/08/2011 Codage Canal-BE 58

Codes cycliques dans les protocoles


Exemple C(7,4) de communication
g( p ) = 1 + p + p 3
Entrée : 0110  Protection des unités de données de protocoles – PDUs (paquets,
Sortie : 0110001 c 0 c 1c 2 trames)
 Les codes permettent de détecter des erreurs même si les champs de
commande (en-tête) sont cohérents et conformes au protocole.
000
 Inconvénient : les codes cycliques définis avec n et k fixes alors que
les PDUs sont de tailles variables.
1 g1=1 g2=0 000
 Implantation : utilisation d’un codeur C(n,k) systématique avec (n-k)
110 bits de redondance.
c0 c1 c2  Quelle que soit la taille de la PDU, le nombre de bits de parité sera
101 toujours le même : n-k.
bits de parité
 Exemples : paquet IP, trame Ethernet.
polynôme d’information
pn-kX(p)
sortie 100  Avec un CRC de 16 bits, 16 bits de redondance seront produits, quelle
que soit la taille du bloc à traiter.
bits d’information

29/08/2011 Codage Canal-BE 59 29/08/2011 Codage Canal-BE 60

15
Exemples : trames HDLC et PPP Exemple : trame Ethernet
G(x) = x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10
+ x8 + x7 + x5 + x4 + x2 + x + 1
01111110 Adresse Commande Données >=0 FCS 01111110 Contrôle (4octets)
 CRC de degré 32 Padding (0-46 octets)
Fanion 8 bits 8 bits Données (0-1500 octets)
(FCS) : Frame Check Sequence
8 bits
16 bits
x16+x12+x5+1
Longueur données (2 octets)
Adresse source : 6 octets
Adresse destination : 6 octets
Délimiteur de début de trame : 1 octet
Préambule : 7 octets
29/08/2011 Codage Canal-BE 61 29/08/2011 Codage Canal-BE 62

Capacité de détection Codes BCH


 Si l’entrée est constituée de blocs de K bits, la sortie est constituée de  Limitation des codes cycliques C(n,k) : pour un code C(n,k) quelconque, il faut
blocs de K+(n-k) bits. calculer toutes les distances entre les mots de code pour avoir dmin et en
 Le rapport entre le nombre d’erreurs non détectées et le nombre déduire les capacités de détection et de correction.
d’erreurs détectées tend vers 1/[2(n-k)] lorsque K tend vers l’infini.  Optimisation possible : définir des codes pour lesquels le dmin est connu a priori.
 Solution : codes BCH (Bose-Chaudhuri-Hocquenghem).
1  Paramètres des codes BCH binaires n = 2m − 1
2 −1 K 1−
K 1 1
 k bits d’information en entrée
n − k ≤ mt
K +n−k
= n−k 2 → n−k ≈ n− k  n bits de code à la sortie
dmin = 2t + 1
2 −2K
2 −1 K → +∞ 2 −1 2  m entier supérieur ou égal à 3
 t entier représentant le pouvoir de correction du code.
 Propriété importante : les codes BCH portent dans la définition même de n et k,
leur capacité de correction.

29/08/2011 Codage Canal-BE 63 29/08/2011 Codage Canal-BE 64

16
Représentation des polynômes Conclusion sur les codes
générateurs des codes BCH cycliques
n k t g(p)
 Forme compacte d’énoncer les Xm CODEUR Cm
coefficients du polynôme : notation en 7 4 1 13
octal 15 11 1 23
Cm (p ) = X m (p )g(p )
 1 chiffre = 3 bits
 bit le plus à gauche = coefficient de 7 2 721
degré le plus grand 5 3 2467
 Tables existantes pour m compris entre Polynôme générateur
31 26 1 45 Mot de code
3 et 8, donc n compris entre 7 et 255 de degré <= n -k
de degré <= n -1
(Cf. Proakis). 21 2 3551 …
 Exemple : C(15,5)
… Mot de données
 2467 en octal = 010 100 110 111 en 255 247 1 435561
binaire de degré <= nk-1
g(p ) = p10 + p8 + p5 + p 4 + p2 + p + 1
29/08/2011 Codage Canal-BE 65 29/08/2011 Codage Canal-BE 66

Plan du cours Modèle de la chaîne de transmission


1. Introduction  Bits équiprobables.
2. Codes en blocs linéaires  Canal AWGN (Additive White Gaussian Noise) : ajout d’une source de
1. Matrice génératrice et matrice de contrôle de parité bruit blanc gaussien, indépendant du signal émis, de PSD (Power
2. Codes cycliques Spectral Density) N0/2.
3. Décodage optimal soft-decision
4. Décodage hard-decision Échantillons
3. Codes convolutifs
4. Combinaisons de codes Bits
Bits CODAGE +1/-1 DÉCODAGE
estimés

Bits codés BRUIT Échantillons


bruités

29/08/2011 Codage Canal-BE 67 29/08/2011 Codage Canal-BE 68

17
Décodage optimal
soft-decision Modèle des échantillons reçus
 Décodage soft-decision = décodage à partir des valeurs des  Pour chaque mot Ci, les composantes cij du vecteur sont des 0 et des 1
échantillons reçus et non pas sur des estimations de bits (0 ou 1). (j=1…n).
 Rôle du décodeur : à chaque bloc de n bits, décider quel est le mot de  Les échantillons nj sont des variables aléatoires gaussiennes,
code qui a été émis et en déduire le mot de données de k bits. indépendantes,centrées, de variance N0/2.
 Le décodeur optimal est celui qui maximise la probabilité de choisir le

bon mot de code (ou de minimiser la probabilité de ne pas choisir le Échantillons 2cij-1
bon).
mot de code Bits
vecteur de n Bits CODAGE +1/-1 DÉCODAGE
DÉCODEUR le plus probable estimés
échantillons bruités r
(bits estimés)
Bits codés BRUIT Échantillons
bruités
rj=(2cij-1)+nj
2k mots cij
de code
29/08/2011 Codage Canal-BE 69 29/08/2011 Codage Canal-BE 70

Densité de probabilité des Densité de probabilité gaussienne


échantillons de bruit du vecteur r
 La densité de probabilité du vecteur n des n échantillons de bruit est  La densité de probabilité du vecteur r des n échantillons reçus est une
une gaussienne à n dimensions. gaussienne à n dimensions.
n=[n0 … nn]
 Hypothèse : le mot Ci est émis.
 La densité de probabilité de r est conditionnée par le symbole émis.

r=[r0 … rn]
 2

 n 
p(n) = ∏ p(n j ) = ∏
n n
1
j =1 j =1 N
exp− j
N
 2 0

 pnj(x) r j = (2c ij − 1) + n j ⇔ n j = r j − (2c ij − 1)
2π 0
2  2 
x
 n n2 
= (πN0 ) 2 exp− ∑ j 
n

 j =1 N0 
29/08/2011 Codage Canal-BE 71 29/08/2011 Codage Canal-BE 72

18
Expression de la densité de probabilité
p(r|Ci) Rôle du décodeur
 La densité de probabilité du vecteur des échantillons reçus est  Entrée : vecteur r des n échantillons bruités.
conditionnée par le mot de code émis Ci.  Sortie : estimation du mot de code émis (puis décodage pour
restituer le mot de donnée émis).
 Rôle du décodeur : décider quel mot de code a été émis en fonction
des observations disponibles : r.
Indépendance des échantillons de bruit  Critère de décision : le mot de code estimé est, parmi tous les Ci, celui
qui a la probabilité d’occurrence la plus forte (celui qui est le plus
probable) en fonction des observations réalisées r.
 n [r − (2cij − 1)]2 
( )
Le mot de code estimé est donc celui qui maximise la probabilité
p(r Ci ) = ∏ p rj cij = (πN0 )− 2 exp − ∑ j
n 
n
 P[Ci|r].

Cˆ = argmax P[C i r ]
j =1  j =1 N0 
Ci

29/08/2011 Codage Canal-BE 73 29/08/2011 Codage Canal-BE 74

Estimateurs Équivalence des estimateurs ML et MAP


 Estimateur MAP (Maximum A Posteriori)  Utilisation de la règle de Bayes.
 L’estimateur du maximum a posteriori choisit la probabilité maximale  Hypothèses :
après avoir reçu les observations.  les mots sont équiprobables à l’émission : P[Ci]=cste,
 Procédure : calculer la distribution P[Ci|r] et sélectionner le mot de code  les observations ne dépendent pas d’un i particulier.
qui donne la plus grande valeur de P[Ci|r].
 Estimateur ML et MAP équivalents.
 Estimateur du maximum de vraisemblance
 Raisonnement à partir de l’estimateur ML car estimateur
 L’estimateur du maximum de vraisemblance cherche le mot Ci qui
maximise la densité de probabilité des échantillons reçus.
asymptotiquement sans biais et efficace.
 Estimateur MLSE : maximum likelihood sequence estimator.
p(r Ci )P[Ci ]
Cˆ = argmax P[Ci r ] P[Ci r] = Cˆ = argmax p(r C i )
ˆ = argmax P [C r ]
C ˆ = argmax p(r C )
C Ci p(r ) Ci
i i
Ci Ci

29/08/2011 Codage Canal-BE 75 29/08/2011 Codage Canal-BE 76

19
Maximisation de la probabilité
Densité de probabilité p(r|Ci) conditionnelle

 n [r − (2cij − 1)]2  
 Densité de probabilité de r | Ci : gaussienne à n dimensions.

argmaxp(r Ci ) = argmax (πN0 )− 2 exp− ∑ j
n
 Échantillons indépendants donc densité de probabilité du vecteur =
  
produit des densités de probabilité sur les échantillons. Ci Ci
  j =1 N0 
 n 
= argmax− (πN0 ) − ∑[rj − (2cij − 1)]2 
1 n
 n [r − (2cij − 1)]2 
( )
p(r Ci ) = ∏ p rj cij = (πN0 )− 2 exp − ∑ j
n n Ci
 2 N0 j =1 
  1 n 
= argmax− ∑[rj − (2cij − 1)]2 
j =1  j =1 N0 
Ci
 N0 j =1 
n 
= argmin∑[rj − (2cij − 1)]2  = argminD2 (r,Ci )
Ci
 j =1  Ci

29/08/2011 Codage Canal-BE 77 29/08/2011 Codage Canal-BE 78

Estimateur MLSE Circuit de décision – amélioration


 L’estimateur MLSE cherche la distance euclidienne minimale entre les  Principe : chercher le mot le code le plus corrélé avec le mot reçu.
n échantillons reçus et les n éléments des 2k mots de codes.  Comparaison de la séquence de n valeurs rj aux 2k mots de codes
 Circuit de décision possibles par les métriques CMi i=1,..,2k.
 Calcul de 2k distances euclidiennes D(r,Ci) i=1,..,2k.  Sélection du mot de code qui donne la métrique la plus grande.
 Sélection du mot de code Ci qui donne la distance la plus petite.

CMi = ∑ (2cij − 1)rj


n 
Cˆ = argmaxp(r Ci ) = argmin∑[rj − (2cij − 1)]2  = argminD2 (r,Ci )
n
argmax p (r Ci ) = argmax CMi
Ci Ci
 j =1  Ci
Ci Ci
j =1

n  n 
argmin∑ [rj − (2cij − 1 )]2  = argmax ∑ 2rj (2cij − 1 )
Ci
 j =1  Ci
 j =1 

29/08/2011 Codage Canal-BE 79 29/08/2011 Codage Canal-BE 80

20
Probabilité d’erreur sur un mot de
Limitation code
 Méthode simple mais très coûteuse en temps de calcul dès que k>10  En théorie : utilisation de la répartition des poids Chaîne codée
(210 comparaisons à chaque mot de n bits reçu). dans les mots de codes.
 Réduction possible du nombre d’opérations par algorithme de Viterbi Chaîne
 En pratique : utilisation d’une borne supérieure non codée
(voir partie sur les codes convolutionnels). indépendante de la répartition des poids.
 Exemple : BPSK
 À forts SNR par bit donné, la probabilité d’erreur
pour une chaîne codée est plus faible que pour une
chaîne non codée.
Eb/N0 (en dB)
 À faibles SNR par bit, c’est l’inverse.

1  E   Eb  Eb(c )k = nEb(nc )
Pnon _ cod < exp − b  Pcod < exp − Rc dmin + k ln 2 
2  N 
 N0  0

29/08/2011 Codage Canal-BE 81 29/08/2011 Codage Canal-BE 82

Différence entre erreur sur un bit et Conclusion sur le décodage «soft


erreur sur un mot decision»
x : emplacement
x x x x  Décodage = estimation du mot de code émis =
des bits faux
mot de code le plus proche du mot reçu (distance
P
Pb = mc
1
[1 + 1 + 2] = 2 Pmc
3 2 3 euclidienne).
Probabilité Probabilité de recevoir un des
 Amélioration par mesure de corrélation.
Nombre moyen de bits
d’erreur sur 1 bit mots de code faux possibles faux par mot de code

Pmc 1 n
2n−1
Pb =
2n − 1 n
∑ jC
j =1
j
n =
2n − 1
Pmc PROPRIÉTÉ

Pmc
Pb ≈ si n >> 1
2
29/08/2011 Codage Canal-BE 83 29/08/2011 Codage Canal-BE 84

21
Plan du cours Décodage hard-decision
1. Introduction  Seule modification du récepteur : une décision est prise sur chaque
2. Codes en blocs linéaires échantillon du vecteur r avant d’entrer dans le bloc de décodage.
1. Matrice génératrice et matrice de contrôle de parité  Décodage par distance minimale.
2. Codes cycliques  Entrée : mot de n bits.
3. Décodage optimal soft-decision  Décodage : comparaison entre le mot de code reçu et les 2k mots de
4. Décodage hard-decision code possibles et sélection du mot de code le plus proche du mot
3. Codes convolutifs reçu au sens de la distance de Hamming.
4. Combinaisons de codes
Échantillons Bits
DÉCISION DÉCODAGE
bruités estimés

29/08/2011 Codage Canal-BE 85 29/08/2011 Codage Canal-BE 86

Canal BSC Propriété du décodeur


 BSC = Binary Symetric Channel.  Décodage optimal au sens de la probabilité d’erreur sur un mot de
 Ec = énergie transmise par bit codé. code (maximum de vraisemblance).
 N0/2 = densité spectrale de puissance du bruit.  Inconvénient : 2k comparaisons.
 Amélioration : méthode du syndrome.

Bits Bits codés 1-p


codés estimés 0 0
p 1  E 
probabilité p = erfc c 

p 2  N0 
d’erreur par bit p 1 1
1-p

29/08/2011 Codage Canal-BE 87 29/08/2011 Codage Canal-BE 88

22
Décodage par syndrome et Look-up
Table (Table de vérification) Décodage par syndrome
 Cm, le vecteur des bits codés émis  Décodage par syndrome :
 calcul du syndrome Y = Cm + ei
 Y, le vecteur des bits codés estimés  repérage de l’erreur correspondante
 H, la matrice de contrôle de parité Y = Cm + e  correction du mot reçu
S = YHT
 S, le syndrome  Intérêt du décodage par syndrome

e, un vecteur d’erreur dont les


 Le vecteur S (de taille n-k) a des composantes
= (C m + ei )HT
S = YH = (Cm + e )H
 nulles lorsque l’équation de contrôle de parité
T T 

composantes sont est satisfaite


= eiHT
 non nulles sinon
1 s’il y a une erreur
= eHT

 Donc, 2n-k-1 erreurs détectées.
 0 s’il n’y en a pas.
Cˆ m = Y ⊕ ei

29/08/2011 Codage Canal-BE 89 29/08/2011 Codage Canal-BE 90

Exemple : code C(7,4) Exemple : code C(7,4)


type d' erreur syndrome 1 0

1 0 1 0 0

 Réception : [1001111] / Syndrome : [011]
1000000 100   Erreur correspondante : [0000100]
0 1 1 0 1 0 0 
G= 
0100000 010 1 1 1 0 0 1 0  Correction = Réception + Erreur correspondante =
 
  [1001011].
0010000 001  1 0 1 0 0 0 1 
 Limitation du décodage par syndrome : un syndrome nul
0001000 110 signifie qu’il n’y a pas d'erreur détectable.
1 0 0 1 0 1 1
0000100 011    Exemple : si vecteur d'erreur = mot de code
 
H = 0 1 0 1 1 1 0  mot reçu = mot de code + mot de code = mot de code.
0000010 111  
 0 0 1 0 1 1 1 
 Syndrome (mot de code)=0 donc pas d’erreur détectée.
0000001 101

29/08/2011 Codage Canal-BE 91 29/08/2011 Codage Canal-BE 92

23
Décodage des codes cycliques Division de Y(p) par g(p)
 Calcul du syndrome par division polynomiale. 1. Les n bits du mot de code reçu Y sont passés dans le
 Soient les polynômes C(p),Y(p) et e(p) associés respectivement au circuit (interrupteur en position 1).
mot de code C, au mot reçu Y et à l’erreur e.
2. Les n-k registres contiennent les bits du syndrome qui
 Procédure :
sont acheminés vers la sortie (interrupteur en position 2).
 Division de Y(p) par le polynôme générateur g(p).
 Le reste de la division R(p), de degré inférieur ou égal à n-k-1, représente
le polynôme du syndrome.
 Le syndrome est nul si Y(p) est un mot de code.
1 g1 gn-k-1
Y (p ) = C (p ) + e (p )
1
Y (p ) = Q(p )g(p ) + R(p ) s0 s1 sn-k-1
2 sortie
= X (p )g(p ) + e(p ) syndrome
polynôme reçu Y(p)
29/08/2011 Codage Canal-BE 93 29/08/2011 Codage Canal-BE 94

Dernière étape : décodage du mot


Look-up table de code
 Après calcul du syndrome : recherche de l’erreur correspondante ec  1ère idée : par une table donnant la correspondance entre les 2k
dans la table de vérification (look-up table) puis correction. mots de codes et 2k mots de données (pas d'opération matricielle
 Solution utilisée tant que n-k<20. disponible).
 Sinon, utilisation de codes BCH dont la complexité calculatoire du  Inconvénient : il faut stocker la table.
décodage est mois importante.  2ème idée : tirer profit de la propriété des codes systématiques
Cˆ = Y ⊕ ec (décodage = troncature du mot de code).

29/08/2011 Codage Canal-BE 95 29/08/2011 Codage Canal-BE 96

24
Remarque : protocoles de niveau Probabilité d’erreur en mode hard
supérieur ou égal à 2 decision
 Pour le CSMA/CD ou IP, le calcul du syndrome se fait en  p est la probabilité d’erreur sur 1 bit.
temps réel : la détection d’erreur sur une trame ou un  dmin la distance minimale du code.
paquet est immédiate.
 En revanche, le temps de correction est ici rédhibitoire
(recherche de la correspondance entre une valeur de  En pratique, le hard decision est moins performant que le soft
decision.
syndrome et une forme d’erreur particulière).
 Conséquence : pas de correction dans les couches
Pmc ≤ (2k − 1 )[4 p(1 − p )]
dmin
supérieures ou égale à 2 (choix de la retransmission).
2

29/08/2011 Codage Canal-BE 97 29/08/2011 Codage Canal-BE 98

Importance de dmin dans le


dimensionnement des codes Codes non binaires
 Code en bloc non binaire : ensemble de mots de code dans lesquels
d min ≤ n − k + 1 les composantes appartiennent à un alphabet à q symboles.
 En pratique : q=2k (k bits donne un symbole).
 N : longueur du mot de code
 Pour les codes binaires, pas de codes pour atteindre la borne  K : longueur du mot de donnée
supérieure.  Dmin : distance minimale du code
 Pour les codes non binaires, existence de codes (comme les codes RS)
permettant d’atteindre la borne supérieure.

29/08/2011 Codage Canal-BE 99 29/08/2011 Codage Canal-BE 100

25
Codes RS Avantages des codes RS
 Code RS (Reed Solomon) : code BCH N = q − 1 = 2k − 1  Correction d’erreurs groupées ou paquets d’erreurs (burst en
primitif de longueur N=q-1 sur GF(q) où anglais).
q est de la forme 2k. K = 1,2,3,L, N − 1  Exemple : code RS(15,11), 15=24-1
 Existence de tables pour les polynômes Dmin = N − K + 1  Pouvoir de correction t = 2 éléments quaternaires
générateurs.  Soit de 2 à 8 bits.
K
Rc =  Codes utilisés pour le stockage des données sur support CD et dans
N les systèmes de communications subissant des erreurs par rafales.
1 
t = Ent  (Dmin − 1)
2 
1 
= Ent  (N − K )
2 
29/08/2011 Codage Canal-BE 101 29/08/2011 Codage Canal-BE 102

Conclusion sur le décodage «hard


Exemple : DVB-S decision»
 Utilisation d’un code raccourci RS(204,188,T=8) obtenu à partir d’un  Décodage = estimation du mot de code émis =
code original RS(255,239, T=8) appliqué à chaque groupe de 188
octets. mot de code le plus proche (distance de
Hamming).
 Amélioration : décodage par syndrome.
RS(204,188, T=8)

Paquets Ajout 51 Suppression 51 Paquets


transport octets à 0 RS (255, 239) octets transport
MPEG-2 (début de (début de MPEG-2
(188 octets) paquet) paquet) protégés
(204 octets)
29/08/2011 Codage Canal-BE 103 29/08/2011 Codage Canal-BE 104

26
Plan du cours Codes convolutifs
1. Introduction  Principe du codage :
 chaque bloc de k bits en entrée donne un bloc de n bits en sortie.
2. Codes en blocs linéaires  chaque bloc de n bits dépend des K blocs de k bits précédents.
3. Codes convolutifs  Caractéristiques des codes
1. Décodage optimal – algorithme de Viterbi  Taux de codage : k/n
2. Codes poinçonnés  Longueur de contrainte : K
4. Combinaisons de codes  Si les k bits d’information se retrouvent dans le bloc de n bits en
sortie du codeur, le code est dit systématique.

K blocs de k bits

k bits d’entrée
combinaison logique n bits de sortie
29/08/2011 Codage Canal-BE 105 29/08/2011 Codage Canal-BE 106

Représentation des codes Exemple


 n sorties.  Codeur 1/3
 sortie = addition modulo 2 d’une  K=3 // k=1 // n=3
sélection des Kk bits d’entrée. ck1  Registres initialisés à 0.
 A chacune des n sorties correspond un  Entrée 1 Sortie 111 entrée
vecteur de Kk éléments (fonction  Entrée 0 Sortie 001
génératrice) :
Entrée dk dk-1 dk-2 Sorties  Entrée 1 Sortie 100 sortie
 1 si l’élément participe à la somme,
 Fonctions génératrices
 0 sinon.
g1, g2 et g3 :
 Exemple : codeur convolutif de
rendement Rc=1/2 et de longueur de ck2
g1 = [100]
contrainte K = 3. g2 = [101]
g3 = [111]
 Entrée constituée par des blocs de k = 1.
 Sortie constituée par des blocs de n = 2.
29/08/2011 Codage Canal-BE 107 29/08/2011 Codage Canal-BE 108

27
Exemple Remarques
 K=2, k=2, n=3  Caractère convolutif du codeur :
 La sortie du codeur peut être
interprétée comme le produit de
entrée convolution entre l’entrée du
codeur et la réponse du codeur
définie par ses fonctions entrée
génératrices.
g1 = [1011]  Autres formes de représentation
sortie sortie
g2 = [1101]
 Arbre
 Diagramme d’état
g3 = [1010 ]  Treillis : représentation utile pour
l'algorithme Viterbi, algorithme
de décodage le plus utilisé pour
les codes convolutifs.
29/08/2011 Codage Canal-BE 109 29/08/2011 Codage Canal-BE 110

Treillis d’un code convolutif Régime transitoire et régime permanent


 3 informations fournies :
 Au bout de K 00 00 00
 Transitions d’un état du codeur vers un autre en fonction des entrées.
transitions, le treillis 00
Valeurs des entrées et des sorties correspondantes. 11 11

atteint son régime 11
 État du codeur : états des registres (hormis les cases mémoires permanent. 11
réservées aux entrées).
 Exemple : codeur C(1/2, 3). 00
01 00
00
entrée 11
11
x x 01 00 10 01 01
sortie
10 01 10 10
10 10
entrée 0 entrée 1 11
10 11
01 01
29/08/2011 Codage Canal-BE 111 29/08/2011 Codage Canal-BE 112

28
Généralisation Distance libre minimale (Hamming)
 Code C(k/n,K).  Distance minimale
 2k branches entrant dans chaque nœud.  le chemin tous-zéros 000 000 000
00
 2k branches sortant de chaque nœud.  le chemin partant et revenant à l’état 011
tout zéro en un nombre de minimal 111
 2k(K-1) états possibles. de transitions. 01 100
001
 Plus grande est la dmin, meilleur est le 10
00 code. 110 010
 Existence de tables pour construire 11
01 101
des codes à distance minimale la plus
10 grande (cf. Proakis).
 Exemple : C(1/2,3), dmin = 5 dmin=6
11  fonctions génératrices (en octal) : 5 et
7

29/08/2011 Codage Canal-BE 113 29/08/2011 Codage Canal-BE 114

Plan du cours Décodeur optimal


1. Introduction  Estimateur séquentiel du maximum de
2. Codes en blocs linéaires vraisemblance MLSE : recherche, à travers
3. Codes convolutifs
1. Décodage optimal – algorithme de Viterbi le treillis, de la séquence la plus
2. Codes poinçonnés vraisemblable.
4. Combinaisons de codes
 Distance de Hamming ou euclidienne
suivant qu’il s’agit de hard ou soft decision.

29/08/2011 Codage Canal-BE 115 29/08/2011 Codage Canal-BE 116

29
Explication du principe sur un exemple
simple Démarche
entrée
 Soit le codeur C(1/3,3).  Soit la séquence reçue : 0,5 -0,5 0,33 -0,4 -
 Il s’agit d’aller de l’état 00 à l’état 0,3 -0,2 1,1 -0,2 -0,3
x x sortie
00 en trois transitions.  Principe : comparer la séquence reçue aux
 Hypothèse : le récepteur sait que séquences possibles grâce à des
000 000 000
l’information envoyée permet métriques. 00
011
d’aller de l’état 00 à l’état 00 en  Calculer des métriques transition par 111
transition puis les accumuler pour former 01
trois transitions. 000 000 000 001
00 des métriques de chemin.
 Enjeu : choisir entre les deux 011 10
111  Deux solutions pour les métriques
chemins possibles 01 100 Soft Decision : distance euclidienne
 Chemin i=0 : Entrée : 000 , 001 
11
Sortie : 000 000 000 10  Hard Decision : distance de Hamming
110 010
 Chemin i=1 : Entrée : 100 , ,
Sortie : 111 001 011 11
101
29/08/2011 Codage Canal-BE 117 29/08/2011 Codage Canal-BE 118

B
PM (i ) = ∑ μ(j i )
Données Méthode j =1

 Soient rjm les échantillons reçus  Calculer une métrique pour chaque chemin possible et choisir le
 j représente l’indice de branche = 1,2,…,B chemin qui a la meilleure métrique.
 m représente le numéro du bit = 1,2,…,n  Les métriques de chemin s’obtiennent en additionnant les métriques
 Échantillons réels utilisés par les décodeurs « soft decision ». sur chaque branche.
 Exemple pour B=3 et n=3 : 0,5 -0,5 0,33 -0,4 -0,3 -0,2 1,1 -0,2 -0,3 NA : Non Applicable
 Soient yjm les décisions binaires sur rjm Optimisation Hard Decision Soft Decision
 Valeurs binaires utilisées par les décodeurs « hard decision ».
Corrélation Maximiser NA x
 Exemple pour B=3 et n=3 : 101 000 100
 Soient les bits possibles cjm(i) Distance euclidienne Minimiser NA x
000 000 000
 i représente le chemin possible 00 Distance de Hamming Minimiser x NA

μ(j i ) = ∑rjm (2c (jmi ) − 1) μ(j i ) = ∑ [rjm − (2c (jmi ) − 1 )]


n n n
011
μ(j i ) = ∑ y jm ⊕ c (jmi )
01 2

111 001 m=1 m =1 m =1


10
29/08/2011 Codage Canal-BE 119 29/08/2011 Codage Canal-BE 120

30
Exemple : C(1/3,3) Critère de décision
 Cas du hard decision 101 000 100  Une fois les métriques de chaque chemin calculées, il faut
00 sélectionner le chemin qui a la meilleure métrique.
 Exemple : code C(1/3,3)
01 100
3
 Si PM(0)=3 et PM(1)=5 et si la métrique est fondée sur le calcul de distance
μ (j i ) = ∑ y jm ⊕ c (jmi )
101 000 de Hamming, alors le meilleur chemin est le chemin 0.
10

iˆ = arg min[PM (i ) ]
m=1

000 000 000


00 i
PM (0 ) = 2 + 0 + 1 = 3 011
01
PM (1 ) = 1 + 1 + 3 = 5 111 001
10

29/08/2011 Codage Canal-BE 121 29/08/2011 Codage Canal-BE 122

Calcul des métriques de chemins à la


Dernière étape : le décodage 4ème transition
0 0 0
 Remonter le treillis de l’état  Il y a 4 chemins possibles.
d’arrivée à l’état de départ et re- 101 000 100  Le fait de rajouter une transition ne modifie en rien la conclusion
parcourir le treillis vers la droite 00
établie à la transition précédente.
pour décoder les bits émis.  À partir de la transition 3, le chemin (1) peut être supprimé. Le
01 100
 Exemple : 000 chemin (0) est dit chemin survivant.
101 000
10 Transition 4
000 000 000 000
00
000 000 000
00 01 011

011 111 001 111


01 10
111 001
10 11
Transition 3
29/08/2011 Codage Canal-BE 123 29/08/2011 Codage Canal-BE 124

31
Conséquence du principe du chemin
survivant Décodage
 La réduction du nombre de chemins réduit la complexité de  Après réception complète
l’algorithme. du bloc de données,
sélection du chemin le plus
 Exemple : seuls deux chemins sont à tester à la 4ème transition. probable et décodage. 00 5
 Généralisation : à chaque transition, pour chaque état, ne conserver
qu’un seul chemin. 01 6
000 000 000 000
00 10 1
01 011
11 6
Remarque : il faut que le treillis ait 111 111
001
atteint son régime permanent (cad 10
que tous les états soient atteints). Transition 3 Décodage : 0101
11

29/08/2011 Codage Canal-BE 125 29/08/2011 Codage Canal-BE 126

Algorithme de Viterbi : récapitulatif Observations empiriques


 À chaque transition, calculer toutes les métriques de branches.  En théorie : les chemins survivants peuvent provenir de plusieurs
 Jusqu’à la transition K, calculer les métriques de tous les chemins. chemins.
 A la fin de la Kième transition, sélectionner les 2k(K-1) chemins survivants  En pratique : les chemins survivants proviennent tous d’un même
(1 par état). chemin (avec une probabilité voisine de 1).
 À partir de la transition K+1,  Conséquence : si tous les chemins survivants à la transition T
 calculer toutes les métriques de branches, proviennent d’un même chemin, il est possible de produire des bits
de sortie avant même que le bloc de données ne soit complètement
 les ajouter aux métriques des chemins survivants, traité, cad à la transition T-D.
 et sélectionner les nouveaux chemins survivants.
 Après la réception complète du bloc de données, sélectionner le 00
meilleur chemin survivant et en déduire les bits émis.
01
 Inconvénient de l’algorithme de Viterbi
10
 Grand retard introduit au décodage sur de grands blocs de données.
11
29/08/2011 Codage Canal-BE 127 29/08/2011 Codage Canal-BE 128

32
Méthode de décodage : fenêtre
coulissante Limitation
 À la transition T, sortie du bit correspondant à la transition T-D.  Si k bits en entrée et longueur de contrainte K, alors 2k(K-1) états, donc
 Valeur de D empirique : 5K. 2k(K-1) métriques et 2k métriques calculées pour chaque état.
 Dégradations négligeables sur les performances.  Complexité calculatoire augmente exponentiellement avec k et K.
Algorithme de Viterbi réservé pour petites valeurs de k et K (quelques
T-D

T 

unités).
00  Autres algorithmes de décodage
 Séquentiels : Fano (adapté pour les grandes longueurs de contrainte),
01 Stack, Feedback.
 Algorithmes à sorties soft : BCJR (Bak, Cocke, Jelinek, Raviv), SOVA (Soft
10 Output Viterbi Algorithm).

11

29/08/2011 Codage Canal-BE 129 29/08/2011 Codage Canal-BE 130

Algorithme BCJR Plan du cours


 Algorithme soft input (échantillons réels à l’entrée du décodeur) 1. Introduction
et soft output (sorties sous la forme de rapport de 2. Codes en blocs linéaires
vraisemblance sur la valeur des bits). 3. Codes convolutifs
 Algorithme de décodage de base des turbo-codes. 1. Décodage optimal – algorithme de Viterbi
2. Codes poinçonnés
4. Combinaisons de codes

29/08/2011 Codage Canal-BE 131 29/08/2011 Codage Canal-BE 132

33
Codes à fort rendement Opération de poinçonnage
 Codes à fort taux de codage (rendement), du type (n-1)/n.  Suppression périodique de bits à la sortie du codeur.
 Exemple : ¾.  Code de départ : code 1/n.
 Avantage : économie de bande passante (peu de bits de redondance  Période de poinçonnage P.  p11 p21 L p1P 
ajoutés par bit d’information).  P bits en entrée du codeur. p p22 p2P 
P= 
Inconvénient des codes à fort rendement : implique grande 21
  nP bits en sortie.
complexité calculatoire du décodeur.  Utilisation d’une matrice de poinçonnage P  M M M 
Solution : construire des codes à fort rendement à partir de codes à p pn2 L pnP 
  1 si le bit est transmis  n1
faible rendement et en supprimant des bits à l’émission.  0 sinon
 Technique du poinçonnage  Suppression de N bits.
 Génération de codes (n-1)/n par poinçonnage de codes 1/n.  Taux de la forme : P/(nP-N) avec N entier de 0 à (n-1)P-1.
 Avantage :  Taux de la forme : P/(P+M) avec M=1,2,…,(n-1)P.
 codes à fort rendement de type (n-1)/n,
 décodage peu calculatoire des codes 1/n.
29/08/2011 Codage Canal-BE 133 29/08/2011 Codage Canal-BE 134

Exemple Décodage des codes poinçonnés


 Taux de codage visé : ¾ 1 1 1   Rappel : l’intérêt des codes poinçonnés réside dans leur construction
P = 1 0 0
 Taux de codage de départ : 1/3 à partir d’un code de rendement 1/n.
 n=3, P=3, nP=9, N=5    Objectif : utiliser le décodeur correspondant au code de rendement
 Taux final : P/(nP-N) = 3/(9-5)=3/4
0 0 0 1/n.
 Enjeu : remplacer les bits poinçonnés par des informations qui
…1101 bits poinçonnés n’influencent pas les décisions prises par le décodeur.
 Pas de rajout de 0 ou de 1.
entrée  Indication : codage des bits par +1/-1 avant transmission dans le
…1101 1 1 1 canal.
…1001 


 sortie
P = 1 0 0
x x  
…111011  Solution : rajouter des échantillons à 0 aux endroits où les bits ont été
0 0 0
poinçonnés et utiliser Viterbi avec le treillis du code 1/n.

29/08/2011
…0011 Codage Canal-BE 135 29/08/2011 Codage Canal-BE 136

34
Propriétés des codes poinçonnés Exemple : DVB-S
 Distance minimale  Code de base convolutif de rendement
 Possibilité de chercher la matrice de poinçonnage qui donne la distance ½ et de longueur de contrainte K=7.
minimale dmin la plus grande.  Peut être poinçonné pour donner des
 La distance minimale dmin du code poinçonné est égale ou inférieure d’un codes de rendement 2/3, ¾, 5/6 et 7/8.
bit à la distance minimale du code à fort taux de codage sans
poinçonnage.
 Inconvénient
 Une erreur dans un code poinçonné se propage plus longtemps qu’une
erreur dans un code non poinçonné.
 Conséquence : fenêtre d’observation plus longue que 5K.

29/08/2011 Codage Canal-BE 137 29/08/2011 Codage Canal-BE 138

Plan du cours Combinaisons de codes


1. Introduction  Concaténation de codes
2. Codes en blocs linéaires  Codage source canal conjoint
3. Codes convolutifs  HARQ (Hybrid Automatic Repeat Request)
4. Combinaisons de codes

29/08/2011 Codage Canal-BE 139 29/08/2011 Codage Canal-BE 140

35
Opérations sur les codes Concaténation de codes
Cod 1 chaîne Decod. 1 Un codeur  En pratique :
données d’entrée
 Code extérieur non binaire C(N,K), codeur C(N,K)
 Code intérieur binaire C(n,k).
 Blocs d’entrée de taille kK bits, séparés en K blocs codeur C(n,k)
Cod 2 Cod 1 chaîne Decod. 1 Decod. 2 Deux codeurs différents (symboles) de k bits chacun et codés en N blocs de k
bits chacun par C(N,K). Modulateur
 Chacun des symboles de k bits est codé en mots de
code de n bits C(n,k). Canal
Cod 2 Π Cod 1 chaîne Decod. 1 Π −1 Decod. 2 Deux codeurs  Code résultant C(Nn,Kk).
identiques  Taux de codage : Kk/Nn. Démodulateur
 Décodage hard decision pour les deux codeurs Décodeur C(n,k)
possibles.
 Décodage soft decision possible pour le code intérieur Décodeur C(N,K)
erreurs (si 2k pas trop élevé).
données de sortie
29/08/2011 Codage Canal-BE 141 29/08/2011 Codage Canal-BE 142

Combinaison série et parallèle Exemple : DVB-S


 taux de codage : k/n  Code RS et code convolutif séparés par un entrelaceur de type
Forney.
m blocs de p bits m blocs de p bits
m Entrelaceur m
blocs de C(p,k) bloc de longueur C(n,p) blocs de
k bits N=mp n bits

 taux de codage : k/(n1+n2-k)

m blocs de k bits
m blocs de k bits

C(n1,k) m blocs de (n1-k) bits


Entrelaceur
bloc de longueur C(n2,k) m blocs de (n2-k) bits
N=mk
29/08/2011 Codage Canal-BE 143 29/08/2011 Codage Canal-BE 144

36
Décodage des concaténations série
ou parallèle Turbo-Codes
 Décodage itératif (soft-in, soft-out) de type MAP :  Utiliser les résultats du deuxième décodeur dans le premier codeur.
 Benedetto (1998) pour les codes série,  Besoin de décodeurs produisant une information non binaire (rapport de
 Berrou (1993) pour les codes parallèle. vraisemblance) sur les bits : utilisation de codes convolutifs et d’un algorithme de
 Famille des turbo-codes. décodage de type BCJR.
 Performances proches des limites théoriques de Shannon (exemple : code ½,
N=216, 18 itérations, 10-5 pour SNR=0,6 dB).
 Limitations
 Retard et complexité calculatoire compensés par les excellentes performances.
 Meilleures performances avec une concaténation série pour des BER inférieurs à 10-2.

Decod. 1 Π −1 Decod. 2 Décision

Π
29/08/2011 Codage Canal-BE 145 29/08/2011 Codage Canal-BE 146

Codage source canal conjoint Protection hiérarchique


 Exemple : protection hiérarchique dans le GSM.  La 1ère classe est codée par un CRC de 3 bits : 50+3=53.
 Sortie du codeur de parole :  La 2ème classe (132 bits) est concaténée aux 53 bits (+ 4 bits),
 260 bits toutes les 20 ms (soit débit de 13 kbit/s).
soit 189 bits.
 Classement des 260 bits suivant leur criticité dans le rendu
du signal de parole.  Le tout est codé par un code convolutif de rendement ½ : 378
 Principe : mieux protéger les bits les plus sensibles. bits à la sortie.
 Résultat : 3 classes, de la plus sensible à la moins sensible :  La 3ème classe est concaténée (78 bits) sans protection.
50, 132 et 78 bits.
 Total : 456 bits toutes les 20 ms (soit débit de 22,8 kbit/s).

29/08/2011 Codage Canal-BE 147 29/08/2011 Codage Canal-BE 148

37
ARQ HARQ Type I
Vers les Vers les
couches couches
supérieures supérieures
DATA CRC CRC CHECK OK DATA CRC FEC DECOD FEC CRC CHECK OK

Demande de OK Demande de OK
retransmission retransmission

DATA CRC DATA CRC FEC


•Amélioration BER/FER
•Augmentation de l’efficacité
spectrale
29/08/2011 Codage Canal-BE 149 29/08/2011 Codage Canal-BE 150

Amélioration : décodeurs « soft » et


Chase Combining Émission HARQ Type II
Vers les
couches BITS DE PARITÉ
supérieures
DATA CRC FEC DECOD FEC CRC CHECK OK DATA CRC COD FEC POINÇONNAGE

Demande de STOCKAGE OK
retransmission FEC1 FEC2 FEC3 …

DATA CRC FEC DECOD FEC CRC CHECK OK PREMIÈRE ÉMISSION DATA CRC FEC1

29/08/2011 Codage Canal-BE … OK 151 29/08/2011 Codage Canal-BE 152

38
Réception HARQ Type II Conclusion générale
Vers les
REDONDANCE INCRÉMENTALE couches  Codage canal : code correcteurs d'erreurs
supérieures  Familles de codes étudiées : codes en blocs linéaires, codes cycliques,
codes convolutifs.
DATA CRC FEC1 DECOD FEC CRC CHECK OK 1. Introduction
 Applications : 2. Codes en blocs linéaires
 Transport de données 1. Matrice génératrice et matrice de
 Stockage de données contrôle de parité
Demande de STOCKAGE OK 2. Codes cycliques
3. Décodage optimal soft-decision
retransmission 4. Décodage hard-decision
… 3. Codes convolutifs
1. Décodage optimal – algorithme de
Viterbi
DATA CRC FEC2 DECOD FEC CRC CHECK OK
2. Codes poinçonnés
4. Combinaisons de codes

OU FEC2 OK
29/08/2011 Codage Canal-BE … 153 29/08/2011 Codage Canal-BE 154

Annexe : rappels d’algèbre Rappel sur les corps


 Rappels sur les corps, les groupes et les espaces vectoriels.  Corps = ensemble G d'éléments muni de deux opérations
(l'addition + et la multiplication . ) vérifiant les propriétés
suivantes :
 L'ensemble G muni de l'addition + est un groupe commutatif.
 L'élément neutre de l'addition est noté 0.
 L'ensemble des éléments non-nuls de G muni de la multiplication . est un
groupe commutatif.
 L'élément neutre de la multiplication . est noté 1.
 La multiplication est distributive par rapport à l'addition.

29/08/2011 Codage Canal-BE 155 29/08/2011 Codage Canal-BE 156

39
Rappel sur les groupes Espaces vectoriels
 Un ensemble G sur lequel est défini une opération * est un groupe si  Les mots de données et les mots de code appartiennent respectivement aux
 L'opération est associative, espaces vectoriels Vk et Vn. Ces espaces vectoriels sont munis de l’addition
modulo-q et de la multiplication modulo-q sur un corps de Galois GF(q).
 G contient un élément e (appelé élément neutre de G),
 Soit V un ensemble sur lequel est définie l’addition "+" et soit F un corps. La
 Pour chaque élément a de G, il existe un élément a' de G appelé inverse
multiplication "." est définie entre les éléments de F et les éléments de V. Les
de a.
éléments de V sont des vecteurs; ceux de F, des scalaires.
 V est un espace vectoriel sur le corps F si :
a *e = e*a = a a * a' = a'*a = e  V muni de l'addition + est un groupe commutatif.
 Pour chaque élément a dans F et chaque élément v dans V, a.v est un élément de V.
 La multiplication est distributive par rapport à l’addition.
 La multiplication est associative.
 Si 1 est l'élément neutre pour la multiplication, alors 1.v=v.

29/08/2011 Codage Canal-BE 157 29/08/2011 Codage Canal-BE 158

40

Vous aimerez peut-être aussi