Vous êtes sur la page 1sur 70

Bibliographie

 J. PROAKIS : Digital Communications,


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

24/08/2009 Codage Canal-BE 1 24/08/2009 Codage Canal-BE 2

Plan du cours Plan du cours


1. Introduction 1. Introduction
2. Codes en blocs linéaires 1. Contexte
3. Codes convolutionnels 2. Principe

4. Combinaisons de codes 2. Codes en blocs linéaires


3. Codes convolutionnels
4. Combinaisons de codes

24/08/2009 Codage Canal-BE 3 24/08/2009 Codage Canal-BE 4

1
Contexte : systèmes de Contexte : stockage de
télécommunications données sur support physique
DONNÉES ORIGINALES DONNÉES ORIGINALES
01010011000111 01010011000111
(données émises) (données stockées)

DONNÉES À TRAITER DONNÉES À TRAITER


(données reçues)
01000011100111 (données lues) 01000011100111
 Exemples : WiFi, TNT, Bluetooth, 3G, …  Stockage : écriture sur support physique (CD,
 Causes de l’altération : mauvaises conditions disque dur).
de réception.
 Causes de l’altération : CD rayé, …
 Résultat : les données reçues sont différentes
des données émises.  Résultat : les données lues sont différentes des
données écrites.
24/08/2009 Codage Canal-BE 5 24/08/2009 Codage Canal-BE 6

Problème soulevé par Impacts de l’utilisation de


l’altération des données données altérées
 Sans traitement préalable sur les données  Dépendent de l’application
originales, l’équipement qui va utiliser les et du type d’altération.
données (téléphone mobile, lecteur DVD) ne  Fort impact : un bit faux
sait pas que le flux de données comporte des dans le codage d’un numéro
erreurs. de carte bleue .
 Faible impact : plusieurs
paquets manquants dans le
1

0.8

0.6

BLOC UTILISATEUR codage d’une conversation 0.4

0.2

DONNÉES téléphonique.
0

DES DONNÉES
-0.2

-0.4

-0.6

-0.8
0 0.5 1 1.5 2 2.5 3 3.5 4
4
x 10

24/08/2009 Codage Canal-BE 7 24/08/2009 Codage Canal-BE 8

2
Implications générales en
télécommunications Enjeu
 PDU (Protocol Data Unit) dont la syntaxe est  Comment savoir si un flux de données comporte des
erronée, donc PDU inexploitable (paquet, erreurs ?
1ère étape : détecter les erreurs.
trame). 

 Que faire lorsque le flux de données à traiter est


 Nécessité de retransmettre l’information. erroné ?
 Baisse du débit effectif.  Corriger les erreurs (protocoles de la couche 1 et lecture
de données sur support CD).
 Baisse de la QoS (Quality of Service).  Solliciter l’émission de nouvelles données (protocoles à partir
de la couche 2).
 Interpoler entre les données précédentes et les données
suivantes (applications).

24/08/2009 Codage Canal-BE 9 24/08/2009 Codage Canal-BE 10

Interpoler entre les données Solliciter l’émission de


précédentes et les données suivantes nouvelles données
 Technique possible lorsque les données traitées  Mécanisme de type ARQ.
sont très redondantes et que la perte d’un bloc  Automatic Repeat reQuest.
de données n’altère pas la qualité du service.
 Exemple : film, conversation téléphonique. transmission test
OK
vers la couche supérieure

RÉCEPTION TRAITEMENT
transmission test
1 3 4 1 2 3 4 OK
demande de retransmission
24/08/2009 Codage Canal-BE 11 24/08/2009 Codage Canal-BE 12

3
Détecter et corriger les Application aux
données altérées télécommunications
 Codes correcteurs d’erreurs : rajouter des  Codage canal : adapter le codage au canal
bits de redondance aux bits d’information de transmission pour améliorer les
(opération inverse à l’opération de performances en termes de probabilité
compression). d’erreur Pe.
 Codage :
 Blocs de k bits en entrée.
 Blocs de n bits en sortie (n>k). codage émetteur canal récepteur décodage
 Décodage : retrouver les blocs de k bits à Penc non codé
partir des blocs de n bits.
Pec<Penc codé
24/08/2009 Codage Canal-BE 13 24/08/2009 Codage Canal-BE 14

Exemple : code à répétition Limitation des codes


C(3,1) correcteurs
DONNÉES ÉMISES
 Si les erreurs sont rares, elles sont effectivement
01001110 CODEUR 000 111 000 000 111 111 111 000
corrigées.
000 110 000 010 111 110 111 000

Code à répétition Les seuls blocs de 3 bits  Sinon, le décodeur va générer des erreurs là où il n’y
0 donne 000 autorisés sont les blocs en avait pas.
000 110 000 010 111 110 111 000
1 donne 111 000 et 111
 Conséquence : un décodeur ne peut traiter
correctement des données qu’à partir d’une certaine
DONNÉES REÇUES qualité à l’entrée du décodeur (aux environs de 1 bit
000 110 000 010 111 110 111 000 DECODEUR 01001110 faux sur 10 ou 1 bit faux sur 100).
? ? ?
24/08/2009 Codage Canal-BE 15 24/08/2009 Codage Canal-BE 16

4
Inconvénient des codes Impact de l’utilisation des
correcteurs d’erreurs codes correcteurs
 Soit Tbloc le temps alloué à l’émission d’un  En pratique, c’est le débit utile qui est
bloc de données. diminué car les débits des données codées
 En théorie, l’ajout de redondance contribue à sont fixées par les normes.
augmenter les besoins en bande passante.  Plus il y a de protection (et donc de
redondance – k/n petit), plus le débit utile
k CODEUR n diminue.
k CODEUR n
Cas non codé Cas codé
Nombre de bits émis / bloc k n Données non codées Données codées
Débit k/Tbloc n/Tbloc Débit k/n . D D (fixe)

24/08/2009 Codage Canal-BE 17 24/08/2009 Codage Canal-BE 18

Pourquoi utiliser des codes


Enjeu des codes correcteurs correcteurs dans les systèmes de
d’erreurs télécommunications ?
 Plus il y a de redondance,  Au niveau de la couche physique, les
 Plus la capacité de correction est grande. techniques de transmission arrivent à
 Plus la consommation en bande passante est
diminuer le nombre d’erreurs (en augmentant
grande. le rapport signal à bruit à la réception) mais
ne peuvent les empêcher.
 Enjeu : fournir la meilleure capacité de
 Comment alors améliorer la qualité de la
correction en utilisant le moins de bits de transmission ?
redondance.
 Solution : codes correcteurs.

24/08/2009 Codage Canal-BE 19 24/08/2009 Codage Canal-BE 20

5
Pourquoi utiliser des codes
correcteurs dans le stockage de
données (disque dur, CD) ? Plan du cours
 Comment récupérer, traiter des données 1. Introduction
stockés sur un support quelconque (disque 1. Contexte
dur, CD, DVD) lorsque le support de stockage 2. Principe
est défectueux ? 2. Codes en blocs linéaires
 Solution : codes correcteurs. 3. Codes convolutionnels
4. Combinaisons de codes

24/08/2009 Codage Canal-BE 21 24/08/2009 Codage Canal-BE 22

Principe du codage Principe du décodage (1/3)


 Ajouter au message à transmettre des bits de  Coder les données sans les décoder ne sert à rien.
redondance selon une loi donnée.  Décoder : tester si la loi de codage est respectée.
 Taux de codage Rc.  Si la loi de codage est respectée, alors les données
 Exemple : code à répétition C(3,1) sont envoyées au bloc de traitement suivant.
 Si 0, alors 000. Si 1, alors 111.  Exemple : code à répétition C(3,1)
k Si 000, alors 0. Si 111, alors 1.
Rc =


n
n DÉCODEUR k
k CODEUR n
24/08/2009 Codage Canal-BE 23 24/08/2009 Codage Canal-BE 24

6
Principe du décodage (2/3) Principe du décodage (3/3)
 Si la loi de codage n’est pas respectée, il y a  S’il y a détection d’erreur alors il y a
détection d’erreur(s).  Soit correction et envoi au bloc de traitement
 Exemple : code à répétition C(3,1) suivant,
 Si le décodeur reçoit un autre bloc de trois bits  Soit suppression des données, demande de
que 000 ou 111, il détecte que le bloc est erroné. retransmission ou interpolation.

n DÉCODEUR k n DÉCODEUR k
24/08/2009 Codage Canal-BE 25 24/08/2009 Codage Canal-BE 26

Distinction entre détection et


Exemple de correction d’erreur correction d’erreur
Détection d’erreur : le mot  Détection d’erreur : le décodeur détecte que
 Code à répétition
110 est différent de 000 et 0 donne 000 le bloc de bits à traiter est erroné.
1 donne 111 L’information produite est binaire : il y a ou il n’y a
de 111. 

pas d’erreur (une ou plusieurs erreurs).


 Correction d’erreur : le mot DONNÉES
 Correction d’erreur : le décodeur sait où se
reçu est plus proche de REÇUES
trouvent les erreurs et les corrige.
111 que de 000. La sortie 110 DÉCODEUR 1
est donc 1.

24/08/2009 Codage Canal-BE 27 24/08/2009 Codage Canal-BE 28

7
Exemples Remarque
 Un décodeur utilisé comme
Code à répétition Code à répétition correcteur d’erreur produit Code à répétition
0 donne 00 0 donne 000 toujours un flux de sortie. 0 donne 00
1 donne 11 1 donne 111  Il existe un risque que le 1 donne 11
décodeur introduise des
erreurs.
DÉCODEUR DÉCODEUR  Contrainte : assurer une DÉCODEUR
erreur erreur erreur
détection détection certaine qualité du flux de détection
01 110 données à l’entrée du 01
DÉCODEUR DÉCODEUR décodeur. DÉCODEUR
0 1 0
correction correction correction
24/08/2009 Codage Canal-BE 29 24/08/2009 Codage Canal-BE 30

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 1. Matrice génératrice et matrice de contrôle de parité
(Bose-Chaudhuri-Hocquenghem) et RS (Reed- 2. Exemples de codes en blocs linéaires particuliers
Solomon). 3. Codes cycliques
 1960-1970 : codes convolutifs (Fano, Forney, 4. Décodage optimal soft-decision
Viterbi). 5. Décodage hard-decision
Opérations sur les codes
 1980 : modulations codées en treillis (Ungerboeck). 6.

3. Codes convolutionnels
 1990 : décodage itératif et turbo-codes (Berrou-
Glavieux). 4. Combinaisons de codes
 2000 : codes LDPC (Low Density Parity Check).

24/08/2009 Codage Canal-BE 31 24/08/2009 Codage Canal-BE 32

8
Codes en blocs linéaires Composantes du mot de code
 Code en bloc = ensemble de
n
code composante valeur
vecteurs de longueur n appelés q=2 binaire bit {0,1}
mots de code.
q≠2 non binaire symbole {0,…,q-1}

 Les composantes d’un mot de qn  Exemples :


code appartiennent à un  Si q=2, alors les mots de code sont 01010010
alphabet à q symboles. constitués de 0 et 1.
 Si q =3, alors les mots de code sont
constitués de 0,1 et 2. 01210210

24/08/2009 Codage Canal-BE 33 24/08/2009 Codage Canal-BE 34

Cas particulier : q=2b (b>1) Exemple


 Possibilité de représenter un symbole par b  Si q = 4=22, alors mot de code constitué de
bits. 0,1,2 et 3.
 Conséquence : un mot de code de N  Possibilité de représenter un symbole (0,1,2,3) par
symboles peut se représenter par un mot de 2 bits (00 01 10 11).
code binaire de bN bits.  Conséquence : mot de code de 8 symboles = mot
de code binaire de 2x8 bits.

0 1 2 3 2 1 1 2
=
00 01 10 11 10 01 01 10
24/08/2009 Codage Canal-BE 35 24/08/2009 Codage Canal-BE 36

9
Définition d’un code C(n,k) Exemple : C(4,2)
2k mots de k bits  Les 4 (22) mots de code sont choisis parmi n=4
les 16 (24) mots de 4 bits.
 Association de 2k mots
de code de n bits aux 2k Mot de Mot de
mots de données de k CODE données code
bits. 00 1010
2n=16
01 0010
10 0110
2n mots de n bits
sélection de 2k mots 11 1011

24/08/2009 Codage Canal-BE


de n bits 37 24/08/2009 Codage Canal-BE 38

Généralisation aux
codes non binaires Exemple C(2,1) q=3 n=2
Mots de code à n symboles n

 1 symbole en entrée :
(et non bits). 0,1,2.
 Symboles : 0,1,2, …,q-1  2 symboles en sortie : 32
 qn mots de n symboles. qn (0,1,2) x (0,1,2).
 Sélection de qk mots pour
former un code. Mot de données Mot de code
0 12
1 20
2 22
24/08/2009 Codage Canal-BE 39 24/08/2009 Codage Canal-BE 40

10
Poids d’un mot : nombre
d’éléments non nuls dans le mot Exemples
 Distribution des poids d’un code w : ensemble  Répartition possible des poids sur un code
des poids d’un code. C(3,2).
 Existence de codes dont tous les mots de
code ont le même poids (codes à poids fixe
ou à poids constant). 000 001 011 111 w = {0,1,2,3}
 Paramètre important pour établir les 000 001 010 100 w = {0,1}
110 101 011 111 w = {2,3}
performances de certains codes.

24/08/2009 Codage Canal-BE 41 24/08/2009 Codage Canal-BE 42

Opérations sur les mots de


code et les mots de données Rappel sur les corps
 Les composantes des vecteurs appartiennent  Corps = ensemble G d'éléments muni de deux opérations
à un alphabet à q symboles. (l'addition + et la multiplication . ) vérifiant les propriétés
 Alphabet muni de l'addition modulo-q et de la suivantes :
L'ensemble G muni de l'addition + est un groupe commutatif.
multiplication modulo-q = corps de Galois 

L'élément neutre de l'addition est noté 0.


d'ordre q, noté GF(q). 

 L'ensemble des éléments non-nuls de G muni de la multiplication .


 Corps de Galois = corps d'ordre fini. est un groupe commutatif.
 Corps d'ordre fini = corps dont le nombre  L'élément neutre de la multiplication . est noté 1.
d'éléments (ordre) est fini.  La multiplication est distributive par rapport à l'addition.

24/08/2009 Codage Canal-BE 43 24/08/2009 Codage Canal-BE 44

11
Rappel sur les groupes Exemple : GF(2) et GF(3)
+ 0 1 2
 Un ensemble G sur lequel est défini une Addition + 0 1
opération * est un groupe si modulo--2 :
modulo
0 0 1
0 0 1 2
OU exclusif
 L'opération est associative, (XOR). 1 1 2 0
1 1 0
 G contient un élément e (appelé élément neutre 2 2 0 1
de G),
× 0 1 2
 Pour chaque élément a de G, il existe un élément Multiplication × 0 1
a' de G appelé inverse de a. modulo--2 : ET
modulo 0 0 0 0
0 0 0
logique (AND).
1 0 1 2
1 0 1
a*e=e*a=a a*a'=a'*a=e 2 0 2 1

24/08/2009 Codage Canal-BE 45 24/08/2009 Codage Canal-BE 46

Rappel sur les espaces


Espaces vectoriels vectoriels (1/2)
 Les vecteurs de mots de données et de mots  Soit V un ensemble sur lequel est définie
de code appartiennent respectivement aux l’addition "+" et soit F un corps. La
espaces vectoriels Vk et Vn. multiplication "." est définie entre les
 Ces espaces vectoriels sont munis de éléments de F et les éléments de V.
l’addition modulo-q et de la multiplication  Les éléments de V sont des vecteurs; ceux de
modulo-q sur un corps de Galois GF(q). F, des scalaires.

24/08/2009 Codage Canal-BE 47 24/08/2009 Codage Canal-BE 48

12
Rappel sur les espaces Distance minimale dmin
vectoriels (2/2) d’un code
 V est un espace vectoriel sur le corps F si :  Distance de Hamming : Mot de Mot de
 V muni de l'addition + est un groupe commutatif. nombre d’éléments données code
 Pour chaque élément a dans F et chaque élément v dans V, différents (bits, symboles) 00 000
a.v est un élément de V. entre les deux mots
La multiplication est distributive par rapport à l’addition.
01 101

(distance comprise entre
10 110
 La multiplication est associative.
0 et n). D([101], [110]) = 2
 Si 1 est l'élément neutre pour la multiplication, alors 1.v=v. 11 011
 Distance de Hamming
minimale entre deux mots
de code : dmin.
 Exemple : C(3,2), dmin=2.
24/08/2009 Codage Canal-BE 49 24/08/2009 Codage Canal-BE 50

Plan du cours Définitions et Notations


1. Introduction  Soit un code C(n,k).
2. Codes en blocs linéaires
1. Matrice génératrice et matrice de contrôle de parité  Mot de données Xm à k composantes.
Exemples de codes en blocs linéaires particuliers
2.

3. Codes cycliques
 Mot de code Cm à n composantes.
4. Décodage optimal soft-decision

X m = [x m1x m 2 ...xmk ]
5. Décodage hard-decision
6. Opérations sur les codes

Cm = [c m1c m 2 ...c mk c m (k +1)...c mn ]


3. Codes convolutionnels
4. Combinaisons de codes

Xm CODEUR Cm
24/08/2009 Codage Canal-BE 51 24/08/2009 Codage Canal-BE 52

13
Génération de la jième Génération de la jième
composante de Cm (1/2) composante de Cm (2/2)
 Combinaison linéaire (CL) des k composantes
du mot de données Xm. c mj = x m1g 1 j + x m 2 g 2 j + L + x mk g kj j = 1,2, L , n
m=1,…,2k k

xm1 xm2 … xmi … xmk cmj = ∑ g ij xmi


i =1
Pour savoir quelles composantes de Xm participent à la CL :
g1j g2j gij gkj 
coefficients gij (0 ou 1).
 i de 1 à k pour les k composantes du mot de données
j de 1 à n pour les n composantes du mot de code.
Σ


cmj
24/08/2009 Codage Canal-BE 53 24/08/2009 Codage Canal-BE 54

Génération des n Codage par multiplication


composantes de Cm matricielle
 Pour n composantes, n combinaisons linéaires Xm CODEUR Cm
différentes.
 Le codeur est entièrement défini par n CLs. Matrice génératrice
Cm = X mG
1≤ i ≤ k  g11 g12 L g1n 
k 1≤ i ≤ k
g g 22 L g 2n 
G= 
c mj = ∑ g ij x mi
21
1≤ j ≤ n k
c mj = ∑ g ij x mi 1≤ j ≤ n  M M M 
i =1 i =1  
1≤ m ≤ 2 k
1 ≤ m ≤ 2k g k 1 g k 2 L g kn 
24/08/2009 Codage Canal-BE 55 24/08/2009 Codage Canal-BE 56

14
Matrice génératrice G Exemple C(3,2)
 g1   g 11 g 12 L g 1n  Mot de Mot de
 Matrice génératrice     1 0 1
de rang(1) k.   
g 2  g 21 g 22 L g 2n 
 données code G= 
G=  = 
 
 Les vecteurs gi  M   M M M  00 000
0 1 1
forment une base    
   
non unique. g k  g k 1 gk2 L g kn  01 011

C m = x m1g1 + x m 2 g 2 + ... + x mk g k 10 101

11 110
(1) Rang d’une matrice : nombre maximal de vecteurs
lignes (ou colonnes) linéairement indépendants.
24/08/2009 Codage Canal-BE 57 24/08/2009 Codage Canal-BE 58

Matrice génératrice pour code


Code systématique systématique
 Un code est dit systématique si les k premiers  Il est possible d’obtenir la matrice génératrice
bits du mot de code sont constitués par les k de la version systématique d’un code par
bits du mot de données. Ces k bits sont dits opérations sur les lignes et permutations des
systématiques. colonnes.
 Les (n-k) bits restants sont appelés bits de
parité.

k CODEUR k n-k
24/08/2009 Codage Canal-BE 59 24/08/2009 Codage Canal-BE 60

15
Forme de la matrice génératrice Intérêt des codes
pour un code systématique 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.
1 0 L 0 p11 p12 L p1(n − k )   Le décodage est plus facile car il suffit de
 
  tronquer le mot reçu.
0 1 O M p21 p 22 L p 2 (n − k ) 
G = [Ik P] = 
 Exemple : le code de l’exemple précédent est

M M M M 
systématique.
O O 0
X m [Ik P] = [X m X mP]
 
 
0 L 0 1 pk 1 pk 2 L p k (n − k ) 
Bits systématiques Bits de parité
24/08/2009 Codage Canal-BE 61 24/08/2009 Codage Canal-BE 62

Code dual d’un code C(n,k) Cas des codes systématiques


 Soit un code C(n,k) de matrice  Forme particulière
génératrice G. de la matrice H si G = [I k P]
 Code dual : code C(n,n-k) de GHT = 0 le code généré par
matrice génératrice H. la matrice G est
systématique. GHT = 0
Propriété : tous les mots de code
C m HT = 0 [ ]

générés par G sont orthogonaux à H = − PT In − k
ceux générés par H.

24/08/2009 Codage Canal-BE 63 24/08/2009 Codage Canal-BE 64

16
Capacité de détection d'un
Exemple code C(n,k)
1 0 0 0 1 0 1  Soit un code C(n,k) de distance minimale dmin.
0 1 0 0 1 1 1
G= ÉVENTUELLEMENT
0 0 1 0 1 1 0
  MOT DE CODE + d>=dmin ERREURS = MOT DE CODE
0 0 0 1 0 1 1
X Y
1 1 1 0 1 0 0 CERTAINEMENT
H = 0 1 1 1 0 1 0
 1 1 0 1 0 0 1 MOT DE CODE + d<dmin ERREURS ≠ MOT DE CODE
24/08/2009 Codage Canal-BE 65 24/08/2009 Codage Canal-BE 66

Capacité de détection d'un


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

erreurs. détection : 1. 00 000


 La réception de [010] 01 011
 Détection : dmin-1 erreurs
transforment un mot de implique au moins une 10 101
erreur.
code en un autre mot qui 11 110
 C(5,1) :
n'est pas un mot de code. dmin
 dmin=5, capacité de Mot de Mot de
détection : 4. données code
d min ≤ n − k + 1  La réception de [00010] 0 00000
implique au moins une
erreur. 1 11111
24/08/2009 Codage Canal-BE 67 24/08/2009 Codage Canal-BE 68

17
Précisions sur la capacité de Précisions sur la capacité de
détection d'un code détection d'un code
2n -1 erreurs 2n mots de code
 Code C(n,k) = 2k mots de codes de longueur
n parmi 2n mots possibles. possibles (autres
que le mot nul)
 Lors de la lecture d’un CD ou lors d’une
transmission, le mot de code Cm subit une
altération e pour donner Y.
 C’est Y qui sera reçu par le bloc de
traitement.
2n-2k erreurs 2k-1 erreurs non détectables
Y = Cm+e détectables car 2k–1 mots de code non
nuls
24/08/2009 Codage Canal-BE 69 24/08/2009 Codage Canal-BE 70

Rapport erreurs non détectables Capacité de correction d'un


et détectables code C(n,k) 2k mots de données

 Pour n grand, le nombre d'erreurs non  Soit dmin, la distance minimale.


détectables devient petit devant le nombre  Capacité de détection : dmin –1. t
d'erreurs détectables.  Capacité de correction t : partie
k
2 −1 entière de la moitié de (dmin-1).
Pour pouvoir corriger ces
2n − 2k

 Exemple : C(7,4) erreurs, il faut que le mot reçu
 16 mots de code, 15 erreurs non détectables. soit suffisamment près d'un dmin
 128-16=112 erreurs détectables. mot de code existant.
 d − 1
t = Ent  min 
 2 
24/08/2009 Codage Canal-BE 71 24/08/2009 Codage Canal-BE 72

18
Exemple : code à répétition
Exemple : code C(3,2), dmin=2 C(3,1)
 Réception de [010]. Mot de Mot de  Capacité de détection 2, Mot de Mot de
 Détection d’une erreur. données code capacité de correction 1. données code
 Capacité de correction nulle.
 Impossibilité de décider quel 00 000 0 000
mot a été transmis :  Réception de [001] :
[000] détection d’une erreur et

01 101 1 111
ou [011]


 ou [110].
correction en [000].
10 110

11 011

24/08/2009 Codage Canal-BE 73 24/08/2009 Codage Canal-BE 74

Limitation Codes étendus


 Exemple : code à répétition C(3,1).  Code étendu C(n+1,k) généré à partir d’un
 Transmission de [000] et réception de [011], code C(n,k) : ajout d’un bit de parité (somme
détection d’une erreur et correction en [111]. modulo 2 du mot de code) au mot de code
 Conséquence : généré par C(n,k) :
 en théorie, génération d’erreurs !  0 si nombre de 1 dans mot de code pair,
 en pratique, cas correspondants à des conditions  1 si nombre de 1 dans mot de code impair.
de transmission inexploitables.  Propriété :
 Les codes correcteurs ne peuvent fonctionner  Si C(n,k) de distance minimale dmin impaire, alors
correctement que si le BER (Bit Error Rate) C(n+1,k) de distance minimale dmin+1.
avant correction est inférieur à 10-1.
24/08/2009 Codage Canal-BE 75 24/08/2009 Codage Canal-BE 76

19
Conclusion sur les codes
Codes raccourcis en blocs linéaires
 Code raccourci C(n-l,k-l) généré à partir d’un Xm CODEUR Cm
code systématique C(n,k) : suppression des l
premiers bits d’information (génération des
mots de code par G) : Cm = X mG
 Si le code C(n,k) est de distance minimale dmin,
alors le code C(n-l,k-l) a au moins une distance Mot de code Matrice génératrice
minimale de dmin. 1xn kxn
 Codes étendus et raccourcis utiles pour faire Mot de données De la forme [Ik P]
des multiples d’octets. 1xk pour les codes
systématiques
24/08/2009 Codage Canal-BE 77 24/08/2009 Codage Canal-BE 78

Limitation des codes en blocs


linéaires Plan du cours
 Codage par multiplication matricielle. 1. Introduction
2. Codes en blocs linéaires
 Inconvénients : 1. Matrice génératrice et matrice de contrôle de parité
 Stockage de la matrice (espace mémoire requis 2. Exemples de codes en blocs linéaires particuliers
important), 3. Codes cycliques
4. Décodage optimal soft-decision
 Traitement temps réel impossible (traitement 5. Décodage hard-decision
bloc). 6. Opérations sur les codes
3. Codes convolutionnels
 Solution : codes cycliques. 4. Combinaisons de codes

24/08/2009 Codage Canal-BE 79 24/08/2009 Codage Canal-BE 80

20
Codes de Hamming binaires Exemple
Codes de la forme C(2m-1,2m-1-m).
1 0 0 0 1 0 1

0 1 0 0 1 1 1
Exemple : m=3, C(7,4).

G=
 Forme particulière de la matrice H : 0 0 1 0 1 1 0
m lignes  
0 0 0 1 0 1 1


 2m-1 colonnes = représentation binaire des entiers


non nuls inférieurs ou égal à 2m-1. 1 1 1 0 1 0 0
 dmin=3 pour tous les codes de Hamming. H = 0 1 1 1 0 1 0
1 1 0 1 0 0 1
24/08/2009 Codage Canal-BE 81 24/08/2009 Codage Canal-BE 82

Codes de Hadamard Propriétés


 Un mot de code = une ligne d’une matrice de  Chaque ligne diffère
Hadamard. 0 0 0 0
des autres en n/2  
 Matrice de Hadamard : Mn où n est un entier positions.  
pair. 0 1 0 1
 Une ligne ne M4 =  
 Construction récurrente des matrices. contient que des 0 0 1 1
zéros.  
 
0 0 M n Mn   Toutes les autres 0 1 1 0
M2 =   M 2n =  
contiennent n/2
   
0 1
M n Mn  zéros et n/2 uns.
24/08/2009 Codage Canal-BE 83 24/08/2009 Codage Canal-BE 84

21
Construction d’un code Plan du cours
0 0 0 0
Introduction
 Les lignes de Mn et 

 1.

 2. Codes en blocs linéaires


de son complément 0 1 0 1
M4 =   1. Matrice génératrice et matrice de contrôle de parité
forment un code 0 0 1 1 2. Exemples de codes en blocs linéaires particuliers
 
binaire C(2m,m+1)   3. Codes cycliques
0 1 1 0 4. Décodage optimal soft-decision
de distance 5. Décodage hard-decision
1 1 1 1
minimale dmin=2m-1.   6. Opérations sur les codes
  3. Codes convolutionnels
 Exemple : C(4,3), 1 0 1 0
M4 =   4. Combinaisons de codes
dmin=2. 1 1 0 0
 
 
1 0 0 1

24/08/2009 Codage Canal-BE 85 24/08/2009 Codage Canal-BE 86

Représentation polynomiale des


Codes cycliques codes cycliques
 Famille de codes linéaires ayant la propriété  Associer à chaque mot de code, à n
suivante : toute permutation circulaire d'un composantes, un polynôme C(p).
mot de code C donne un autre mot de code.  Propriétés du polynôme :
 Nombre de coefficients : n, de 0 à (n-1).
Degré inférieur ou égal à (n-1).
C = [c n − 1c n − 2 ...c1c 0 ]


 Codes binaires : coefficients dans {0,1}.

C' = [c n − 2 c n − 3 ...c 0 c n − 1 ] C = [c n − 1c n − 2 ...c1c 0 ] ⇒ C (p ) = c n − 1p n − 1 + c n − 2 p n − 2 + L + c1p + c 0

24/08/2009 Codage Canal-BE 87 24/08/2009 Codage Canal-BE 88

22
Génération des mots de code par
Exemples permutation cyclique

C = [1] ⇒ C (p ) = 1
 Comment passer de C à C1 ?
Idée 1 : p C(p)
C = [10 ] ⇒ C (p ) = p


 p C (p) ne peut pas être un mot de code car de

C = [11] ⇒ C (p ) = p + 1
degré n si cn-1=1.

C = [1101] ⇒ C (p ) = p 3 + p 2 + 1 C = [c n −1c n − 2 ...c1c0 ] C (p ) = c n −1p n −1 + c n −2 p n −2 + L + c1p + c0


pC (p ) = cn −1p n + c n −2 p n −1 + L + c1p 2 + c0 p
C = [1101101] ⇒ C (p ) = p 6 + p 5 + p 3 + p 2 + 1
C1 = [cn − 2c n − 3 ...c0cn − 1 ] C1 (p ) = c n −2 p n −1 + c n −3 p n −2 + L + c0 p + c n −1

24/08/2009 Codage Canal-BE 89 24/08/2009 Codage Canal-BE 90

Génération des mots de code par Génération des mots de code par
permutation cyclique permutation cyclique
 Idée 2 : division de p C(p) par pn+1  C1 : reste de la division de pC(p) par pn+1.

pC (p ) = c n −1p n + c n −2 p n −1 + L + c1p 2 + c0 p
pC (p ) = c n −1( p n + 1) + c n −2 p n −1 + L + c1p 2 + c0 p + c n −1 ( )
pC (p ) = c n −1 p n + 1 + C1 (p ) C = [c n − 1c n − 2 ...c1c 0 ]

pC (p ) = c n −1( p n + 1) + C1 (p ) C1 (p ) = pC (p ) mod p n + 1 ( )
C1 = [c n − 2 c n − 3 ...c 0 c n − 1 ]
C1(p ) = c n −2 p n −1 + c n −3 p n −2 + L + c0 p + c n −1

24/08/2009 Codage Canal-BE 91 24/08/2009 Codage Canal-BE 92

23
Code cyclique et
Généralisation multiplication polynomiale
 Permutation de Ci de i éléments : reste de la  Soit un polynôme générateur g(p) de degré (n-k),
division de piC(p) par (pn+1) facteur de pn+1 (g(p) divise pn+1).
 Soit Xm(p) le polynôme d’information à coder.
 Soit Cm(p) le polynôme du mot de code.
(
p C (p ) = Q ( p ) p + 1 + C i ( p )
i n
)
g (p ) = p n − k + g n − k − 1 p n − k − 1 + L + g 1 p + 1
C = [c n − 1c n − 2 ...c1c 0 ] C i = [c n − i − 1c n − i − 2 ...c n − i + 1c n − i ] X (p ) = x k − 1 p k − 1 + x k − 2 p k − 2 + L + x 1 p + x 0

C m (p ) = X m (p )g (p )
24/08/2009 Codage Canal-BE 93 24/08/2009 Codage Canal-BE 94

 0  0 0 0 0 0 0 0
   
   
 1  0 0 0 1 1 0 1
   
 2  0 0 1 1 0 1 0

Exemple avec n=7 Table de g(p)   


  
 3  0
  
0 1 0 1 1 1



 4  0 1 1 0 1 0 0
   
   
 Avec p7+1, possibilité de générer deux codes  g(p)=p3+p2+1  5  0
  
  
1 1 1 0 0 1


cycliques C(7,4).  C(7,4)
 6  0
  
1 0 1 1 1 0

 7  0 1 0 0 0 1 1
  =  
 Un choix objectif entre les deux polynômes  Exemples :   
 8  1 1 0 1 0 0 0

   
peut être fait s’ils donnent naissance à des  X(p)=1 donne C(p)=g(p)  9  1
  
1 0 0 1 0 1

codes de capacité de correction différente.  X(p)=p donne C(p)=g(p).p
  
10  1
  
1 1 0 0 1 0


   

( )( )
11 1 1 1 1 1 1 1
X(p)=p+1 donne
p + 1 = (p + 1) p + p + 1 p + p + 1
    
7 3 2 3 12 1 0
C(p)=g(p)(p+1)=p4+p3+p+p3+   
0 1 1 1 0

14243 14243 p2+1=p4+p2+p+1
  
13  1 0 1 0 0 0 1

g (p ) g1 ( p )
   
14  1 0 0 0 1 1 0
   
   
15  1 0 0 1 0 1 1

24/08/2009 Codage Canal-BE 95 24/08/2009 Codage Canal-BE 96

24
Code dual Exemple
 En général, pn+1=g(p)h(p)  Code dual de g(p)
 g(p) polynôme du code cyclique C(n,k) et h(p) polynôme de


parité de degré k.
Polynôme générateur du code cyclique C(n,n-k) dual du code 144
(
42444 3 14243
)(
p 7 + 1 = (p + 1) p 3 + p + 1 p 3 + p 2 + 1 )
h(p ) g (p )
C(n,k) : polynôme réciproque de h(p) défini par pkh(p-1).
h (p ) = p + p + p + 1
4 3 2

( )
p h p −1 = 1 + p + p 2 + p 4
4
k
p hp ( ) = p (p
−1 k −k
+ hk − 1 p −k +1
+ hk − 2 p −k + 2
+ L h1 p −1
+1)
= 1 + hk − 1 p + hk − 2 p 2 + L + h1 p k − 1 + p k
24/08/2009 Codage Canal-BE 97 24/08/2009 Codage Canal-BE 98

Lien avec les matrices


génératrices Exemple : C(7,4)
 Matrice génératrice d’un code cyclique C(n,k) g (p ) = 1 + p 2 + p 3
de polynôme g(p) constituée des lignes :
 pk-1g(p) 1 1 0 1 0 0 0
 pk-2g(p) 1 g n − k −1 L 1 0 L 0
 
   
 …   0 1 1 0 1 0 0
 pg(p) 0
G= 
1 O O O M
G= 

 g(p) M O 1 0 0 0 1 1 0 1 0
   
   
0 L 0 1 g n − k −1 L 1
0 0 0 1 1 0 1
24/08/2009 Codage Canal-BE 99 24/08/2009 Codage Canal-BE 100

25
Construction de codes
systématiques Méthode
 Codes systématiques : k premiers bits  Multiplier le polynôme d’information X(p) par pn-k.
constitués par les bits d’information.  Diviser pn-kX(p) par g(p).
 Propriété :  Ajouter le reste de la division, noté r(p), à pn-kX(p).

p n − k X (p ) = Q (p )g (p ) + r (p ) p n −k X (p ) = Q (p )g (p ) + r (p )
p n −k X (p ) + r (p ) = Q (p )g (p ) p n −k X (p ) + r (p ) = Q (p )g (p )

24/08/2009 Codage Canal-BE 101 24/08/2009 Codage Canal-BE 102

Exemple : C(7,4)
et g(p) = p3+p+1 Exemple (suite)
1001000
 Mot à coder X=[1001] 

 1011 Dividende : 1
 X(p)=p3+1  010000
0000 Dividende : 10
 pn-kX(p)= p6+p3 

 10000
 Le reste de la division de pn-kX(p) par g(p)  1011 Dividende : 101
donne les bits de parité.  0110
 0000 Dividende : 1010
 g=[1011].  110
 Reste = p2+p donc C=[1001110]

24/08/2009 Codage Canal-BE 103 24/08/2009 Codage Canal-BE 104

26
Mise en œuvre de codes Intérêt des registres à
cycliques décalages
 Utilisation de registres à décalages.  Utiles pour le traitement de flux de donnés :
 Registre : case mémoire accessible par le peuvent traiter des flux ininterrompus de bits.
processeur sans temps d’accès (de taille 64  Utiles pour la mise en œuvre d’applications
bits pour les processeurs dits 64 bits). temps réel : un bit sortant pour un bit
 Registre à décalage : registre de taille fixe entrant.
dans lequel les bits sont décalés à chaque logique combinatoire sorties
coup d'horloge.

entrées

24/08/2009 Codage Canal-BE 105 24/08/2009 Codage Canal-BE 106

Étapes de codage Codeur cyclique


 Multiplier le polynôme d’information X(p) par  Basculement des interrupteurs après passage
pn-k : décalage de registres. des k bits d’information.
 Diviser pn-kX(p) par g(p) : seule opération non
triviale à réaliser. … g
1 g1 n-k-1
 Ajouter le reste de la division, noté r(p), à pn-
kX(p) : remplir les cases du registre. …
c0 c1 cn-k-1
bits de
polynôme pn-kX(p) parité
sortie
bits d’information
24/08/2009 Codage Canal-BE 107 24/08/2009 Codage Canal-BE 108

27
Exemple C(7,4) Exemple C(7,4)

g (p ) = 1 + p + p 3  Entrée : 0110
c 0 c 1c 2
 Sortie : 0110001
000

1 g1=1 g2=0 000

c0 c1 c2 110
c0 c1 c2
bits de parité 101
bits de parité polynôme d’information
polynôme d’information sortie
sortie pn-kX(p) 100
pn-kX(p) bits d’information
bits d’information

24/08/2009 Codage Canal-BE 109 24/08/2009 Codage Canal-BE 110

Codes cycliques dans les Implantation des codes


protocoles de communication cycliques dans les protocoles
 Protection des unités de données de  Utilisation d’un codeur C(n,k) systématique
protocoles – PDUs (paquets, trames) avec (n-k) bits de redondance.
 Les codes permettent de détecter des erreurs
même si les champs de commande (en-tête) sont  Quelle que soit la taille de la PDU, le nombre
cohérents et conformes au protocole. de bits de parité sera toujours le même : n-k.
 Inconvénient :  Exemples : paquet IP, trame Ethernet.
 codes cycliques définis par n et k fixes.  Avec un CRC de 16 bits, 16 bits de redondance
 PDUs de tailles variables. seront produits, quelle que soit la taille du bloc à
traiter.

24/08/2009 Codage Canal-BE 111 24/08/2009 Codage Canal-BE 112

28
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
24/08/2009 Codage Canal-BE 113 24/08/2009 Codage Canal-BE 114

Synthèse des codes cycliques


Capacité de détection C(n,k) : limitation
 Si l’entrée est constituée de blocs de K bits, la  Pour un code C(n,k) quelconque, il faut
sortie est constituée de blocs de K+(n-k) bits. calculer toutes les distances entre les mots de
 Le rapport entre le nombre d’erreurs non code pour avoir dmin et en déduire les
détectées et le nombre d’erreurs détectées capacités de détection et de correction.
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.
1
1− K Solution : codes BCH (Bose-Chaudhuri-
2K − 1

2 1 1
K +n −k
= n −k → n −k ≈ n −k Hocquenghem).
2 −2 K
2 −1 K → +∞ 2 −1 2
24/08/2009 Codage Canal-BE 115 24/08/2009 Codage Canal-BE 116

29
Polynômes générateurs des
Codes BCH codes BCH
 Paramètres des codes BCH binaires n = 2m − 1  Polynômes générateurs construits à partir du
k bits d’information en entrée polynôme pq+1 où q=2m-1.

n − k ≤ mt
 n bits de code à la sortie Nécessite la connaissance des GF(2m).
d min = 2t + 1

 m entier supérieur ou égal à 3  GF(q) peut être construit si q est premier ou
 t entier représentant le pouvoir de correction du de la forme q=pm avec p premier et m entier.
code.
 Si q=pm, GF(p) peut être étendu à GF(pm),
 Propriété importante : les codes BCH portent
appelé corps étendu de GF(p). Les opérations
dans la définition même de n et k, leur
se font modulo p.
capacité de correction.

24/08/2009 Codage Canal-BE 117 24/08/2009 Codage Canal-BE 118

Représentation des polynômes n k t g(p)


générateurs des codes BCH Exemples 7 4 1 13

 Forme compacte d’énoncer les coefficients du  Tables existantes 15 11 1 23


polynôme : notation en octal pour m compris 7 2 721
 1 chiffre = 3 bits entre 3 et 8, donc
 bit le plus à gauche = coefficient de degré le plus n compris entre 7 5 3 2467
grand et 255. 31 26 1 45
 Exemple : C(15,5)  Cf. Proakis.
21 2 3551 …
 2467 en octal = 010 100 110 111 en binaire

g (p ) = p 10 + p 8 + p 5 + p 4 + p 2 + p + 1 255 247 1 435561
24/08/2009 Codage Canal-BE 119 24/08/2009 Codage Canal-BE 120

30
Conclusion sur les codes
cycliques Plan du cours
Introduction
Xm CODEUR Cm 1.

2. Codes en blocs linéaires

Cm (p ) = X m (p )g (p )
1. Matrice génératrice et matrice de contrôle de parité
2. Exemples de codes en blocs linéaires particuliers
3. Codes cycliques
4. Décodage optimal soft-decision
5. Décodage hard-decision
Mot de code Polynôme générateur 6. Opérations sur les codes

de degré <= n -1 de degré <= n -k 3. Codes convolutionnels


4. Combinaisons de codes
Mot de données
de degré <= nk-1
24/08/2009 Codage Canal-BE 121 24/08/2009 Codage Canal-BE 122

Modèle de la chaîne de
transmission Canal AWGN
 Bits équiprobables.  Canal idéal : ajout d’une source de bruit blanc
gaussien, indépendant du signal émis, de PSD (Power
 Canal AWGN (Additive White Gaussian Noise). Spectral Density) N0/2.

Échantillons Échantillons
Bits Bits
Bits CODAGE +1/-1 DÉCODAGE Bits CODAGE +1/-1 DÉCODAGE
estimés estimés
Bits codés Échantillons Bits codés Échantillons
BRUIT BRUIT
bruités bruités
24/08/2009 Codage Canal-BE 123 24/08/2009 Codage Canal-BE 124

31
Décodage optimal
soft-decision Rôle du décodeur
 Décodage soft-decision = décodage à partir  À chaque bloc de n bits, décider quel est le
des valeurs des échantillons reçus et non pas mot de code qui a été émis et en déduire le
sur des estimations de bits (0 ou 1). mot de données de k bits.

Échantillons
Bits
Bits Bits CODAGE +1/-1 DÉCODAGE
Échantillons estimés
DÉCODAGE
bruités estimés
Bits codés Échantillons
BRUIT
bruités
24/08/2009 Codage Canal-BE 125 24/08/2009 Codage Canal-BE 126

Décodeur optimal Modèle des échantillons reçus


 Le décodeur optimal est celui qui maximise la  Pour chaque mot Ci, les composantes cij du
probabilité de choisir le bon mot de code (ou vecteur sont des 0 et des 1 (j=1…n).
de minimiser la probabilité de ne pas choisir  Les échantillons nj sont des variables aléatoires
le bon). gaussiennes, indépendantes,centrées, de
variance N0/2. 2c -1
vecteur de n mot de code ij
DÉCODEUR
échantillons bruités r le plus probable
Bits
Bits CODAGE +1/-1 DÉCODAGE
estimés
2k mots
de code cij rj=(2cij-1)+nj
BRUIT
24/08/2009 Codage Canal-BE 127 24/08/2009 Codage Canal-BE 128

32
Densité de probabilité des Densité de probabilité gaussienne
échantillons de bruit n=[n0 … nn] du vecteur r r=[r0 … rn]

 La densité de probabilité du vecteur n des n  La densité de probabilité du vecteur r des n


échantillons de bruit est une gaussienne à n échantillons reçus est une gaussienne à n
dimensions. dimensions.
   Hypothèse : le mot Ci est émis.
 n 2j 
p(n) = ∏ p(n j ) = ∏
n n
1
exp−   La densité de probabilité de r est
j =1 j =1

N0  2 N0  conditionnée par le symbole émis.
2  2  p (x)
r j = (2c ij − 1) + n j ⇔ n j = r j − (2c ij − 1)
nj
 n n j 
2

= (πN0 ) 2 exp− ∑ 
n

x
 j =1 N0 
24/08/2009 Codage Canal-BE 129 24/08/2009 Codage Canal-BE 130

Expression de la densité de
probabilité p(r|Ci) Rôle du décodeur
 La densité de probabilité du vecteur des  Entrée : vecteur r des n échantillons bruités.
échantillons reçus est conditionnée par le mot  Sortie : estimation du mot de code émis (puis
de code émis Ci. décodage pour restituer le mot de donnée
émis).
Indépendance des échantillons de bruit
 Rôle du décodeur : décider quel mot de code
a été émis en fonction des observations
 n [r − (2c ij − 1)] 
( )
2
disponibles : r.
p(r Ci ) = ∏ p r j c ij = (πN0 ) 2 exp− ∑ j
n n


j =1  j =1 N0 

24/08/2009 Codage Canal-BE 131 24/08/2009 Codage Canal-BE 132

33
Estimateur MAP (Maximum A
Critère de décision Posteriori)
 Le mot de code estimé est, parmi tous les Ci,  L’estimateur mis en œuvre est de type
celui qui a la probabilité d’occurrence la plus maximum a posteriori car il choisit la
probabilité maximale après avoir reçu les
forte (celui qui est le plus probable) en observations.
fonction des observations réalisées r.  Procédure : calculer la distribution P[Ci|r] et
 Le mot de code estimé est donc celui qui sélectionner le mot de code qui donne la plus
maximise la probabilité P[Ci|r]. grande valeur de P[Ci|r].

ˆ = argmax P [C r ] ˆ = argmax P [C r ]
C
C i i
Ci Ci

24/08/2009 Codage Canal-BE 133 24/08/2009 Codage Canal-BE 134

Estimateur du maximum de Équivalence des estimateurs ML


vraisemblance et MAP
 Estimateur du maximum de vraisemblance :  Utilisation de la règle de Bayes. ˆ = argmax P [C r ]
C i
Ci
chercher le mot Ci transmis qui permet de  Hypothèses :
maximiser la densité de probabilité des  les mots sont équiprobables à l’émission :
P[Ci]=cste,
échantillons reçus. les observations ne dépendent pas d’un i
p(r C i )P [C i ]


P [C i r ] =
 Estimateur MLSE : maximum likelihood particulier.
 Estimateur ML et MAP équivalents. p(r )
sequence estimator.
Raisonnement à partir de l’estimateur
ˆ = argmax p(r C )


C ML car estimateur asymptotiquement


i
Ci sans biais et efficace.
ˆ = argmax p (r C )
C i
Ci
24/08/2009 Codage Canal-BE 135 24/08/2009 Codage Canal-BE 136

34
Densité de probabilité p(r|Ci) Estimateur MLSE
 Densité de probabilité de r | Ci : gaussienne à  Estimateur MLSE : minimise la distance
n dimensions. euclidienne entre les n échantillons reçus et
 Échantillons indépendants donc densité de les n éléments des 2k mots de codes.
probabilité du vecteur = produit des densités  Critère de distance minimale.
de probabilité sur les échantillons.

 n [r j − (2cij − 1)]2 
( )
p(r Ci ) = ∏ p r j cij = (πN0 )
n n

exp− ∑ n 2
 argmaxp(r Ci ) = argmin∑ [r j − (2cij − 1)]  = argminD 2 (r, Ci )
2
j =1  j =1 N0  Ci Ci  j =1  Ci

24/08/2009 Codage Canal-BE 137 24/08/2009 Codage Canal-BE 138

Démonstration Circuit de décision


  n [r − (2cij − 1)]2   Comparaison d’une séquence de n valeurs rj
argmax p(r Ci ) = argmax (πN0 ) 2 exp− ∑ j
n 
− 
  aux 2k mots de codes possibles par les
Ci Ci
 
 j =1 N 0 

distances D²(r,Ci) i=1,..,2k.
 n
[r j − (2cij − 1)]2 
n
= argmax− (πN0 ) −
1
2 N
∑  Sélection du mot de code qui donne la
Ci  0 j =1  distance la plus petite.
 1 2
∑[r − (2c − 1)] 
n
= argmax− j ij
n 2
argmax p (r Ci ) = argmin∑ [r j − (2c ij − 1)]  = argmin D 2 (r, C i )
Ci  N0 j =1 
n 2
= argmin∑ [r j − (2cij − 1)]  = argminD 2 (r, Ci )
Ci Ci  j =1  Ci

Ci  j =1  Ci

24/08/2009 Codage Canal-BE 139 24/08/2009 Codage Canal-BE 140

35
Circuit de décision – amélioration Démonstration
 Principe : chercher le mot le Terme égal à 1 quelle que soit
code le plus corrélé avec le
mot reçu. la valeur de cij
 Comparaison de la séquence
de n valeurs rj aux 2k mots n 2 n 2
argmin ∑ [r j − (2c ij − 1)]  = argmin ∑ r j2 − 2r j (2cij − 1) + (2cij − 1) 
CM i = ∑ (2c ij − 1)r j
de codes possibles par les n

métriques CMi i=1,..,2k.


Ci  j =1  Ci  j =1 
j =1
 
= argmin ∑ − 2r j (2cij − 1)
 Sélection du mot de code qui n

donne la métrique la plus Terme


indépendant
Ci  j =1 
grande.
( )
argmax p r Ci =argmaxCMi n 
Ci Ci des Ci = argmax ∑ 2r j (2c ij − 1)
Ci  j =1 
24/08/2009 Codage Canal-BE 141 24/08/2009 Codage Canal-BE 142

Probabilité d’erreur sur un mot de


Limitation code Pmc
 Méthode simple mais très coûteuse en temps  En théorie : utilisation de la répartition des
de calcul dès que k>10 (210 comparaisons à poids dans les mots de codes.
chaque mot de n bits reçu).  En pratique : utilisation d’une borne
 Réduction possible du nombre d’opérations supérieure indépendante de la répartition des
par algorithme de Viterbi (voir partie sur les poids.
codes convolutionnels).

24/08/2009 Codage Canal-BE 143 24/08/2009 Codage Canal-BE 144

36
Exemple : BPSK
(codage +1/-1) Précision sur la valeur de Eb
 Borne supérieure pour une chaîne codée  Soit E, l’énergie requise pour
transmettre un mot de code.
 E  Soit Ec, l’énergie pour
Pmc < exp − b Rc d min + k ln 2  
transmettre un bit du mot de
 N0  code.
 Borne supérieure pour une chaîne non codée  Soit Eb, l’énergie pour E = nE c
transmettre un bit
1  E  d’information. E n Ec
Pmc < exp − b  Eb = = Ec =
2  N0  k k Rc

24/08/2009 Codage Canal-BE 145 24/08/2009 Codage Canal-BE 146

Comparaison BPSK codée et non Différence entre erreur sur un


codée bit et erreur sur un mot
 À forts SNR par bit  Si un mot de code de 2 bits est faux, 3 cas
donné, la probabilité Chaîne codée sont possibles.
d’erreur pour une
chaîne codée est plus x x x x
faible que pour une
Pmc Chaîne non x : emplacement des bits faux
chaîne non codée. codée
 À faibles SNR par bit,
P
Pb = mc
1
[1 + 1 + 2] = 2 Pmc
c’est l’inverse.
3 2 3
Eb/N0
(en dB) Probabilité Probabilité de recevoir Nombre moyen de
d’erreur un des mots de code bits faux par mot de
sur 1 bit faux possibles code
24/08/2009 Codage Canal-BE 147 24/08/2009 Codage Canal-BE 148

37
Probabilité d’erreur sur les bits
Généralisation Pb
Pmc 1 n
2n −1 Facteur de pondération proche de ½ quand n
∑ jC

Pb = j
= Pmc
2 −1 n
n
j =1
n
2n − 1 augmente.

Probabilité Probabilité de recevoir Nombre moyen de


P 1 n
2n −1
d’erreur
sur 1 bit
un des mots de code
faux possibles
bits faux par mot de
code
Pb = n mc
2 −1 n
∑ jC
j =1
n
j
= n
2 −1
Pmc

Pmc
PROPRIÉTÉ Pb ≈ si n >> 1
2

24/08/2009 Codage Canal-BE 149 24/08/2009 Codage Canal-BE 150

Conclusion sur le
décodage «soft decision» Plan du cours
Introduction
 Décodage = estimation du mot de 1.

2. Codes en blocs linéaires


code émis = mot de code le plus 1. Matrice génératrice et matrice de contrôle de parité
Exemples de codes en blocs linéaires particuliers
proche du mot reçu (distance
2.

3. Codes cycliques
Décodage optimal soft-decision
euclidienne). 4.

5. Décodage hard-decision
Opérations sur les codes
Amélioration par mesure de
6.

 3. Codes convolutionnels
corrélation. 4. Combinaisons de codes

24/08/2009 Codage Canal-BE 151 24/08/2009 Codage Canal-BE 152

38
Décodage hard-decision Canal BSC
 Seule modification du récepteur : une  BSC = Binary Symetric Channel
décision est prise sur chaque échantillon du  Ec = énergie transmise par bit codé
vecteur r avant d’entrer dans le bloc de  N0/2 = densité spectrale de puissance du bruit
décodage. 1-p
0 p 0
Bits Bits codés
Échantillons Bits codés estimés p
DÉCISION DÉCODAGE 1 1
bruités estimés 1-p
probabilité  Ec 
1
d’erreur par bit p p= erfc  
2  N 
 0 
24/08/2009 Codage Canal-BE 153 24/08/2009 Codage Canal-BE 154

Décodage par distance


minimale Propriété du décodeur
 Entrée : mot de n bits.  Décodage optimal au sens de la probabilité
 Décodage : comparaison entre le mot de d’erreur sur un mot de code (maximum de
code reçu et les 2k mots de code possibles et vraisemblance).
sélection du mot de code le plus proche du  Inconvénient : 2k comparaisons.
mot reçu au sens de la distance de Hamming.  Amélioration : méthode du syndrome.

Échantillons Bits
DÉCISION DÉCODAGE
bruités estimés
24/08/2009 Codage Canal-BE 155 24/08/2009 Codage Canal-BE 156

39
Décodage par syndrome et Look- Intérêt du décodage par
up Table (Table de vérification) syndrome
 Cm, le vecteur des bits codés émis  Le vecteur S (de taille n-k)
 Y, le vecteur des bits codés estimés a des composantes Y = Cm + e
 H, la matrice de contrôle de parité  nulles lorsque l’équation de
 S, le syndrome contrôle de parité est
 e, un vecteur d’erreur dont les Y = Cm + e satisfaite

S = YHT = (C m + e )HT
composantes sont  non nulles sinon
Donc, 2n-k-1 erreurs
S = YHT = (C m + e )HT
 1 s’il y a une erreur 
 0 s’il n’y en a pas. détectées.
= eHT
= eHT
24/08/2009 Codage Canal-BE 157 24/08/2009 Codage Canal-BE 158

Décodage par syndrome Exemple : code C(7,4)


type d' erreur syndrome
 mots de n bits = mot de code 1 1 0 1 0 0 0

+ mot d’erreur. Y = Cm + e i 1000000 100






0 1 1 0 1 0 0
G= 
 Décodage par syndrome : 0100000 010 1 1 1 0 0 1 0

S = YHT = (C m + e i )HT
 
 calcul du syndrome  
0010000 001  1 0 1 0 0 0 1 
 repérage de l’erreur ˆ = Y⊕e
C m i

correspondante = e i HT 0001000 110


 correction du mot reçu 1 0 0 1 0 1 1
0000100 011  
 
H = 0 1 0 1 1 1 0
0000010 111  
 0 0 1 0 1 1 1 
0000001 101

24/08/2009 Codage Canal-BE 159 24/08/2009 Codage Canal-BE 160

40
Exemple : code C(7,4) Décodage des codes cycliques
 Réception : [1001111] / Syndrome : [011]  Calcul du syndrome par division polynomiale.
 Erreur correspondante : [0000100]  Soient les polynômes C(p),Y(p) et e(p)
 Correction = Réception + Erreur correspondante = associés respectivement au mot de code C,
[1001011].
au mot reçu Y et à l’erreur e.
 Limitation du décodage par syndrome : un syndrome
nul signifie qu’il n’y a pas d'erreur détectable.
Exemple : si vecteur d'erreur = mot de code
Y (p ) = C (p ) + e (p )


 mot reçu = mot de code + mot de code = mot de code.


Syndrome (mot de code)=0 donc pas d’erreur détectée.
= X (p )g (p ) + e(p )


24/08/2009 Codage Canal-BE 161 24/08/2009 Codage Canal-BE 162

Décodage des codes cycliques Division de Y(p) par g(p)


 Division de Y(p) par le polynôme générateur g(p). 1. Les n bits du mot de code reçu Y sont passés dans
le circuit (interrupteur en position 1).
 Le reste de la division R(p), de degré inférieur ou
2. Les n-k registres contiennent les bits du syndrome
égal à n-k-1, représente le polynôme du
qui sont acheminés vers la sortie (interrupteur en
syndrome. position 2).
 Le syndrome est nul si Y(p) est un mot de code.
1 g1 gn-k-1
1
2 sortie
Y (p ) = Q(p )g (p ) + R (p )
s0 s1 sn-k-1
syndrome
polynôme reçu Y(p)
24/08/2009 Codage Canal-BE 163 24/08/2009 Codage Canal-BE 164

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

24/08/2009 Codage Canal-BE 165 24/08/2009 Codage Canal-BE 166

Remarque : protocoles de Probabilité d’erreur en mode hard


niveau supérieur ou égal à 2 decision
 Pour le CSMA/CD ou IP, le calcul du syndrome se fait  p est la probabilité d’erreur sur 1 bit.
en temps réel : la détection d’erreur sur une trame
ou un paquet est immédiate.
 dmin la distance minimale du code.

( )
Pmc ≤ 2k − 1 [4 p(1 − p )]
d min
 En revanche, le temps de correction est ici
2
rédhibitoire (recherche de la correspondance entre
une valeur de syndrome et une forme d’erreur
particulière).
 En pratique, le hard decision est moins
performant que le soft decision.
 Conséquence : pas de correction dans les couches
supérieures ou égale à 2 (choix de la retransmission).

24/08/2009 Codage Canal-BE 167 24/08/2009 Codage Canal-BE 168

42
Importance de dmin dans le
dimensionnement des codes Codes non binaires
Code en bloc non binaire : ensemble de mots
d min ≤ n − k + 1

de code dans lesquels les composantes
appartiennent à un alphabet à q symboles.
 Pour les codes binaires, pas de codes pour  En pratique : q=2k (k bits donne un
atteindre la borne supérieure. symbole).
 Pour les codes non binaires, existence de  N : longueur du mot de code
codes (comme les codes RS) permettant  K : longueur du mot de donnée
d’atteindre la borne supérieure.  Dmin : distance minimale du code

24/08/2009 Codage Canal-BE 169 24/08/2009 Codage Canal-BE 170

N = q − 1 = 2k − 1
Codes RS Avantages des codes RS
K = 1,2,3, L , N − 1
 Code RS (Reed Solomon) :  Correction d’erreurs groupées ou paquets
Dmin = N − K + 1 d’erreurs (burst en anglais).
code BCH primitif de
longueur N=q-1 sur GF(q) K  Exemple : code RS(15,11), 15=24-1
où q est de la forme 2k. Rc =  Pouvoir de correction t = 2 éléments
N
 Existence de tables pour quaternaires
1 
les polynômes t = Ent  (Dmin − 1)  Soit de 2 à 8 bits.

générateurs. 2   Codes utilisés pour le stockage des données


sur support CD et dans les systèmes de
1 
= Ent  (N − K ) communications subissant des erreurs par
2  rafales.
24/08/2009 Codage Canal-BE 171 24/08/2009 Codage Canal-BE 172

43
Exemple : DVB-S Paramètres du code RS
 Utilisation d’un code raccourci RS(204,188,T=8)  Polynôme Générateur du Code g(x).
obtenu à partir d’un code original RS(255,239, T=8)
appliqué à chaque groupe de 188 octets.
 Polynôme Générateur du Corps p(x).
 Code aussi appliqué aux mots de synchronisation
(inversés ou non-inversés). ( )( )( )(
g(x )= x+λ0 x+λ1 x+λ2 L x+λ15 )
λ=02HEX
p(x )=x8+x4+x3+x2+1

24/08/2009 Codage Canal-BE 173 24/08/2009 Codage Canal-BE 174

Implantation du code Conclusion sur le


raccourci décodage «hard decision»
 Implantation du code raccourci : insertion de  Décodage = estimation du mot de
51 octets nuls avant codage. Retrait des 51
octets après codage.
code émis = mot de code le plus
proche (distance de Hamming).
RS(204,188, t=8)  Amélioration : décodage par
Paquets Ajout 51 Suppression Paquets syndrome.
transport octets à 0 RS (255, 239) 51 octets transport
MPEG-2 (début de (début de MPEG-2
(188 octets) paquet) paquet) protégés
(204 octets)
24/08/2009 Codage Canal-BE 175 24/08/2009 Codage Canal-BE 176

44
Plan du cours Opérations sur les codes
Cod 1 chaîne Decod. 1 Un codeur
1. Introduction
2. Codes en blocs linéaires
1. Matrice génératrice et matrice de contrôle de parité
2. Exemples de codes en blocs linéaires particuliers Cod 2 Cod 1 chaîne Decod. 1 Decod. 2 Deux codeurs différents
3. Codes cycliques
4. Décodage optimal soft-decision
5. Décodage hard-decision
6. Opérations sur les codes Cod 2 Π Cod 1 chaîne Decod. 1 Π −1 Decod. 2 Deux codeurs
3. Codes convolutionnels identiques
4. Combinaisons de codes

erreurs
24/08/2009 Codage Canal-BE 177 24/08/2009 Codage Canal-BE 178

Concaténation de codes en blocs Caractéristiques du nouveau code


données d’entrée données d’entrée
 En pratique :  Distance minimale : Dmin dmin.
 Code extérieur non binaire C(N,K), codeur C(N,K) codeur C(N,K)
 Code intérieur binaire C(n,k).  Taux de codage : Kk/Nn.
 Blocs d’entrée de taille kK bits, séparés en codeur C(n,k) codeur C(n,k)
K blocs (symboles) de k bits chacun et  Décodage hard decision pour les
Modulateur Modulateur
codés en N blocs de k bits chacun par deux codeurs possibles.
C(N,K). Canal Canal
 Chacun des symboles de k bits est codé en  Décodage soft decision possible pour
mots de code de n bits C(n,k). Démodulateur le code intérieur (si 2k pas trop Démodulateur
 Code résultant C(Nn,Kk). Décodeur C(n,k) élevé). Décodeur C(n,k)

Décodeur C(N,K) Décodeur C(N,K)

données de sortie données de sortie


24/08/2009 Codage Canal-BE 179 24/08/2009 Codage Canal-BE 180

45
Entrelacement de codes Exemple
8 colonnes
données d’entrée
 Principe : mélanger les données après le  Entrelaceur matriciel :
codage et les re-mélanger avant le codeur C(n,k)  écriture ligne par ligne écriture
décodage.  lecture colonne par colonne
entrelaceur
 Propriété : si les erreurs arrivent en  Désentrelaceur :
Modulateur  écriture colonne par colonne 57 lignes
rafales, elles sont dispersées avant le
 lecture ligne par ligne
décodage et donc plus facilement Canal
 Exemple : GSM 2ème
corrigées. Démodulateur génération
Désentrelaceur
lecture
Décodeur C(n,k)

données de sortie
24/08/2009 Codage Canal-BE 181 24/08/2009 Codage Canal-BE 182

Concaténation série et parallèle


Exemple LA PHRASE EST NON CODEE
L A P H
de codes en blocs
R A S E
E S T N
O N
D E E
C O  Combinaison d’un entrelaceur et de la
LREODAASNE ST EPE C H NO
concaténation de codes.
LA PHRASE EST NON CODEE
 Codes systématiques.
canal canal

LA PHRASxxxxx NON CODEE LREODAASxxxxx EPE C H NO

L A x P H
R A x E
E S x N
O x C O
D x E

LAxPHRAxE ESx NOx CODxE

24/08/2009 Codage Canal-BE 183 24/08/2009 Codage Canal-BE 184

46
Combinaison série Combinaison parallèle
 taux de codage : k/n  taux de codage : k/(n1+n2-k)
m m m blocs de
blocs de blocs de m k bits
m p bits Entrelaceur p bits m blocs de
m blocs de
blocs de C(p,k) bloc de longueur C(n,p) blocs de k bits C(n1,k)
n1-k bits
k bits N=mp n bits
Entrelaceur
m blocs de
bloc de longueur C(n2,k)
n2-k bits
N=mk
24/08/2009 Codage Canal-BE 185 24/08/2009 Codage Canal-BE 186

Décodage des concaténations


série ou parallèle Plan du cours
 Décodage itératif (soft-in, soft-out) de type 1. Introduction
MAP : 2. Codes en blocs linéaires
 Benedetto (1998) pour les codes série, 3. Codes convolutionnels
 Berrou (1993) pour les codes parallèle. 1. Décodage optimal – algorithme de Viterbi
 Performances proches des limites théoriques 2. Codes poinçonnés
de Shannon (10-4/10-5 pour des SNRs très 3. Concaténation série et parallèle de codes
bas). 4. Combinaisons de codes
 Famille des turbo-codes.

24/08/2009 Codage Canal-BE 187 24/08/2009 Codage Canal-BE 188

47
Codes convolutionnels Constitution d'un codeur
 Autre dénomination : codes convolutifs.  un registre à Kk étages mémorise les K blocs
 Principe du codage : de k bits d’information,
 chaque bloc de n bits en sortie du codeur dépend  une logique combinatoire calcule les blocs de
des K blocs de k bits précédents. n bits,
 chaque bloc de k bits en entrée donne un bloc de  un convertisseur parallèle / série.
n bits en sortie.

K blocs de k bits K blocs de k bits

k bits d’entrée k bits d’entrée

combinaison logique n bits de sortie combinaison logique n bits de sortie


24/08/2009 Codage Canal-BE 189 24/08/2009 Codage Canal-BE 190

Caractéristiques des codes Illustration


ck1

 Taux de codage : k/n  Codeur convolutif de


rendement Rc=1/2 et de
 Longueur de contrainte : K longueur de contrainte K =
 Si les k bits d’information se retrouvent dans 3. Entrée dk dk-1 dk-2 Sorties

le bloc de n bits en sortie du codeur, le code  Entrée constituée par des


est dit systématique. blocs de k = 1 bit.
 Sortie constituée par des
ck2
K blocs de k bits blocs de n = 2 bits.

k bits d’entrée
combinaison logique n bits de sortie
24/08/2009 Codage Canal-BE 191 24/08/2009 Codage Canal-BE 192

48
Représentation des codes Exemple
 n sorties. ck1  Fonctions
 sortie = addition modulo 2 génératrices :
d’une sélection des Kk bits
d’entrée. entrée

g1 = [100]
 A chacune des n sorties Entrée dk dk-1 dk-2 Sorties

correspond un vecteur de Kk sortie


éléments (fonction
génératrice) : g 2 = [101]
 1 si l’élément participe à la ck2

g 3 = [111]
somme,
 0 sinon.

24/08/2009 Codage Canal-BE 193 24/08/2009 Codage Canal-BE 194

Exemple Exemple
 K=2, k=2, n=3
 Codeur 1/3
 K=3 // k=1 // n=3 entrée entrée
Registres initialisés à 0.
g1 = [1011]


 Entrée 1 Sortie 111 sortie

g 2 = [1101]
 Entrée 0 Sortie 001 sortie
 Entrée 1 Sortie 100
g 3 = [1010 ]

24/08/2009 Codage Canal-BE 195 24/08/2009 Codage Canal-BE 196

49
Remarque sur le caractère Autres formes de
convolutif du codeur représentation
 La sortie du codeur  Arbre
peut être interprétée
comme le produit entrée  Diagramme d’état
de convolution entre
l’entrée du codeur et  Treillis : représentation utile pour
la réponse du sortie
l'algorithme Viterbi, algorithme de
codeur définie par
ses fonctions décodage le plus utilisé pour les codes
génératrices. convolutifs.

24/08/2009 Codage Canal-BE 197 24/08/2009 Codage Canal-BE 198

Treillis d’un code convolutif Exemple : codeur C(1/2, 3)


 3 informations fournies : 00
Transitions d’un état du codeur vers un autre état 00

entrée 11
en fonction des entrées. 11
 Valeurs des entrées et des sorties 01 00
correspondantes.
x x
sortie
 État du codeur : états des registres (hormis 10 01
les cases mémoires réservées aux entrées).
10
10
entrée 0 entrée 1 11
01
24/08/2009 Codage Canal-BE 199 24/08/2009 Codage Canal-BE 200

50
Régime transitoire et régime
permanent Généralisation
00 00 00  Code C(k/n,K).
 Au bout de K
transitions, le 00  2k branches entrant
11 11 11 00
treillis atteint 11 dans chaque nœud.
01
son régime 01 00  2k branches sortant de
permanent. chaque nœud. 10

10 01 01  2k(K-1) états possibles. 11


10 10
10
11
01
24/08/2009 Codage Canal-BE 201 24/08/2009 Codage Canal-BE 202

Distance minimale et
Distance libre minimale performances
 Distance minimale (de  Plus grande est la dmin, meilleur est le code.
000 000 000
Hamming) entre 00  Existence de tables pour construire un code
011
 le chemin tous-zéros 01
111
sachant k,K et n avec la distance minimale la
100
001
 le chemin partant de 00 plus grande (cf. Proakis).
10
et revenant à 00 en un 110 010
nombre de transitions
 Exemple : C(1/2,3), plus grande dmin possible
11
minimum. 101 =5
 fonctions génératrices (en octal) : 5 et 7
dmin=6

24/08/2009 Codage Canal-BE 203 24/08/2009 Codage Canal-BE 204

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

24/08/2009 Codage Canal-BE 205 24/08/2009 Codage Canal-BE 206

Explication du principe sur un


exemple simple Chemins possibles
 Soit le codeur C(1/3,3).  Deux chemins vont de l’état 00 à l’état 00 en trois
transitions :
 Il s’agit d’aller de l’état 00 à
 Chemin i=0 : Entrée : 000 , Sortie : 000 000 000
l’état 00 en trois transitions.
entrée  Chemin i=1 : Entrée : 100 , Sortie : 111 001 011
 Hypothèse : le récepteur sait
que l’information envoyée x x 000 000
sortie 000
permet d’aller de l’état 00 à 00
011
l’état 00 en trois transitions. 01
111
100
001
10
110 010
11
101
24/08/2009 Codage Canal-BE 207 24/08/2009 Codage Canal-BE 208

52
Question : quelle séquence de
bits a été émise ? Données (1/3)
 Soit p est la probabilité  Soient rjm les échantillons reçus
d’erreur sur un bit.  j représente l’indice de branche = 1,2,…,B
 m représente le numéro du bit = 1,2,…,n
 Soit la séquence reçue : 0,5 000 000 000
00  Échantillons réels utilisés par les décodeurs « soft
-0,5 0,33 -0,4 -0,3 -0,2 1,1 111
011 decision ».
-0,2 -0,3 01
001
0,5 -0,5 0,33 -0,4 -0,3 -0,2 1,1 -0,2 -0,3
 Quel est le chemin le plus 10 Exemple : B=3 00

probable ? 11 Rappel du codage 01 0,5


1,1
-0,2
utilisé à l’émission: -0,5
0,33
-0,4 -0,3
10 -0,3
0-1 -0,2
1+1
24/08/2009 Codage Canal-BE 209 24/08/2009 Codage Canal-BE 210

Données (2/3) Données (3/3)


 Soient yjm les décisions binaires sur rjm  Soient les bits possibles cjm(i)
 Valeurs binaires utilisées par les décodeurs « hard  i représente le chemin possible
decision ».

0,5 -0,5 0,33 -0,4 -0,3 -0,2 1,1 -0,2 -0,3 101 000 100
00 00
000 000 000
00
01 1,1 01 100
0,5 -0,2
-0,5 01 011
-0,4 -0,3 101
10 0,33 -0,3 10 000
111 001
-0,2 10

24/08/2009 Codage Canal-BE 211 24/08/2009 Codage Canal-BE 212

53
Méthode Métriques d’un chemin
 Calculer une métrique pour chaque chemin
possible et choisir le chemin qui a la meilleure Optimisation Hard Soft
Decision Decision
métrique.
 Les métriques de chemin s’obtiennent en Corrélation Maximiser NA x
additionnant les métriques sur chaque Distance euclidienne Minimiser NA x
branche.
Distance de Hamming Minimiser x NA

NA : Non Applicable

24/08/2009 Codage Canal-BE 213 24/08/2009 Codage Canal-BE 214

Métrique de branche Exemple : C(1/3,3)


 Mesure de corrélation :  Branche numéro 1 00
101

∑ r (2c ( ) − 1)
n
µ (j i ) = jm
i
jm  Cas du hard decision 01
 Distance euclidienne : m =1
10
101

µ (i ) = ∑ [r jm − (2c (jmi ) − 1)]


3
n (i ) (i )
2
µ1 = ∑ y 1m ⊕ c1m
 Distance de Hammingj : m =1
m =1 00
000

(i )
n
(i )
µ1(0 ) = 2 01

µ j = ∑ y jm ⊕ c jm 111

m =1
µ1(1) = 1 10

24/08/2009 Codage Canal-BE 215 24/08/2009 Codage Canal-BE 216

54
Métrique de chemin ou PM
(Path Metric) Critère de décision
 Métrique totale pour un  Une fois les métriques de chaque chemin
chemin à B branches : 00
101 000 100 calculées, il faut sélectionner le chemin qui a
la meilleure métrique.
01 100
B 101
 Exemple : code C(1/3,3)
(i ) (i ) 000
∑µ
10
PM = j
 Si PM(0)=3 et PM(1)=5 et si la métrique est fondée
j =1 sur le calcul de distance de Hamming, alors le
000 000 000
00 meilleur chemin est le chemin 0.
PM (0 ) = 2 + 0 + 1 = 3 01 011
Exemple : (1)
PM = 1+ 1+ 3 = 5 10
111 001

24/08/2009 Codage Canal-BE 217 24/08/2009 Codage Canal-BE 218

Poursuite du décodage à la
Dernière étape : le décodage transition 4
0 0 0
 Remonter le treillis de  A priori, il y a 4 chemins possibles :
101 000 100 000 000 000 et (000 ou 111)
l’état d’arrivée à l’état 00 

111 001 011 et (000 ou 111)


de départ et re- 01 100


Transition 4
parcourir le treillis vers 101
10 000
la droite pour décoder 000 000 000 000
00
les bits émis. 000 000 000
00 01 011
 Exemple : 000
011 111 001 111
01 10
111 001
10 11
Transition 3
24/08/2009 Codage Canal-BE 219 24/08/2009 Codage Canal-BE 220

55
Calcul des métriques de
chemins Conséquence
 Le fait de rajouter une transition ne modifie  À partir de la transition 3, le chemin (1) peut
en rien la conclusion établie à la transition être supprimé. Le chemin (0) est dit chemin
précédente. survivant.
Transition 4 Transition 4

000 000 000 000 000 000 000 000


00 00

01 011 01 011
111 001 111 111 001 111
10 10

11 11
Transition 3 Transition 3
24/08/2009 Codage Canal-BE 221 24/08/2009 Codage Canal-BE 222

Chemin survivant Généralisation


 A partir de la transition 3, un seul chemin subsiste.  À chaque transition, Décision de
 A la transition 4, il n’y a plus que 2 chemins possibles : pour chaque état, ne supprimer le
 000 000 000 et (000 ou 111) conserver qu’un seul chemin le
chemin. moins probable
00

000 000 000 000 01


00

01 011 10
111 001 111
10 11
Transition 3
11

24/08/2009 Codage Canal-BE 223 24/08/2009 Codage Canal-BE 224

56
Sélection des chemins à
Conséquence supprimer
 Réduction 00
importante du 01
nombre de 00

métriques à 01
10

calculer. 10
11

11 État à partir duquel il est possible


de supprimer les chemins les
moins probables (K transitions)

24/08/2009 Codage Canal-BE 225 24/08/2009 Codage Canal-BE 226

Sélection des chemins à


Suppression des chemins supprimer
00 00

01 01

10 10

11 11

Etat à partir duquel il est possible Etat à partir duquel il est possible
de supprimer les chemins les de supprimer les chemins les
moins probables moins probables

24/08/2009 Codage Canal-BE 227 24/08/2009 Codage Canal-BE 228

57
Suppression des chemins Décodage
00  Après réception
complète du bloc
01 de données, 00 5
10 sélection du 01 6
chemin le plus
11 probable et 10 1
décodage. 11 6
Etat à partir duquel il est possible
de supprimer les chemins les
moins probables Décodage : 0101

24/08/2009 Codage Canal-BE 229 24/08/2009 Codage Canal-BE 230

Algorithme de Viterbi : Algorithme de Viterbi :


récapitulatif récapitulatif
 À chaque transition, calculer toutes les métriques de  Après la réception complète du bloc de
branches.
 Jusqu’à la transition K, calculer les métriques de tous données, sélectionner le meilleur chemin
les chemins. survivant et en déduire les bits émis.
 A la fin de la Kième transition, sélectionner les 2k(K-1)
chemins survivants (1 par état).
 À partir de la transition K+1,
 calculer toutes les métriques de branches,
 les ajouter aux métriques des chemins survivants,
 et sélectionner les nouveaux chemins survivants.

24/08/2009 Codage Canal-BE 231 24/08/2009 Codage Canal-BE 232

58
Inconvénient de l’algorithme
de Viterbi Observations empiriques
 Grand retard introduit au décodage sur de  En théorie : les chemins survivants peuvent
grands blocs de données. provenir de plusieurs chemins.
 En pratique : les chemins survivants
proviennent tous d’un même chemin (avec
une probabilité voisine de 1).
00 00

01 01

10 10

11 11
24/08/2009 Codage Canal-BE 233 24/08/2009 Codage Canal-BE 234

Méthode de décodage : fenêtre


Conséquence coulissante
 Si tous les chemins survivants à la transition  À la transition T, sortie du bit correspondant
T proviennent d’un même chemin, il est à la transition T-D.
possible de produire des bits de sortie avant
T-D T
même que le bloc de données ne soit
complètement traité. 00

01

10

11

24/08/2009 Codage Canal-BE 235 24/08/2009 Codage Canal-BE 236

59
Fenêtre coulissante Conséquence
 Valeur de D empirique : 5K.  Réduction du retard introduit par le
 Dégradations négligeables sur les performances. décodage.
 Possibilité de mise en œuvre temps réel.
00

01

10

11

24/08/2009 Codage Canal-BE 237 24/08/2009 Codage Canal-BE 238

Exemple K=1 Exemple


 Décodage du premier bit à T-5K.  Décodage du 2ème bit à T+1-5K.
0 T 0 0 T T+1

00 00

01 01

10 10

11 11

24/08/2009 Codage Canal-BE 239 24/08/2009 Codage Canal-BE 240

60
Exemple Limitation
 Décodage du 3ème bit à T+2-5K.  Si k bits en entrée et longueur de contrainte K, alors
2k(K-1) états, donc 2k(K-1) métriques et 2k métriques
0 0 1 T T+1 T+2 calculées pour chaque état.
 Complexité calculatoire augmente exponentiellement
00
avec k et K.
 Algorithme de Viterbi réservé pour petites valeurs de
01 k et K (quelques unités).
10

11

24/08/2009 Codage Canal-BE 241 24/08/2009 Codage Canal-BE 242

Autres algorithmes de décodage Algorithme BCJR


 Séquentiels :  Algorithme soft input (échantillons réels à l’entrée du
 Fano (adapté pour les grandes longueurs de décodeur) et soft output (sorties sous la forme de rapport
contrainte), de vraisemblance sur la valeur des bits).
 Stack,  Algorithme de décodage de base des turbo-codes.
 Feedback.
 Algorithmes à sorties soft :
 BCJR (Bak, Cocke, Jelinek, Raviv),
 SOVA (Soft Output Viterbi Algorithm).

24/08/2009 Codage Canal-BE 243 24/08/2009 Codage Canal-BE 244

61
Plan du cours Codes à fort rendement
1. Introduction  Dans certaines applications, besoin de codes
2. Codes en blocs linéaires à fort taux de codage (rendement), du type
3. Codes convolutionnels (n-1)/n.
 Exemple : ¾.
1. Décodage optimal – algorithme de Viterbi
 Fort rendement = économie de bande
2. Codes poinçonnés
passante (peu de bits de redondance ajoutés
3. Concaténation série et parallèle de codes par bit d’information).
4. Combinaisons de codes

24/08/2009 Codage Canal-BE 245 24/08/2009 Codage Canal-BE 246

Inconvénient des codes à fort


rendement Technique du poinçonnage
 Inconvénient : implique grande complexité  Génération de codes (n-1)/n par poinçonnage
calculatoire du décodeur. de codes 1/n.
 Solution : construire des codes à fort  Avantage :
rendement à partir de codes à faible  codes à fort rendement de type (n-1)/n,
rendement et en supprimant des bits à  décodage peu calculatoire des codes 1/n.
l’émission.
 Technique du poinçonnage.

24/08/2009 Codage Canal-BE 247 24/08/2009 Codage Canal-BE 248

62
Opération de poinçonnage Taux de codage
 Suppression périodique de bits  Suppression de N bits.
à la sortie du codeur.
 Code de départ : code 1/n.  p11 p 21 L p1P 
 Taux de la forme : P/(nP-N)
  Avec N entier de 0 à (n-1)P-1.
 Période de poinçonnage P.  


P bits en entrée du codeur.  p21 p 22 p 2P 


Taux de la forme : P/(P+M)

P= 

 nP bits en sortie.  M M M   Avec M=1,2,…,(n-1)P.
 
 Utilisation d’une matrice de  
poinçonnage P  pn1 pn 2 L pnP 
 1 si le bit est transmis
 0 sinon

24/08/2009 Codage Canal-BE 249 24/08/2009 Codage Canal-BE 250

Exemple Fonctionnement
 Taux de codage visé : ¾
 Taux de codage de départ 1 1 1 …1101 bits poinçonnés
 
: 1/3  
P = 1 0 0
 n=3, P=3, nP=9, N=5  
entrée
…1101 1 1

0 0
1

 Taux final : 0 …1001 



P = 1 0 0

 sortie
x x 
0

0 …111011
P/(nP-N) = 3/(9-5)=3/4
0


…0011

24/08/2009 Codage Canal-BE 251 24/08/2009 Codage Canal-BE 252

63
Décodage des codes Décodage des codes
poinçonnés poinçonnés
 Soit décoder le flux poinçonné par Viterbi en  Soit rajouter des échantillons à 0 aux endroits
adaptant le treillis au poinçonnage (motif du où les bits ont été poinçonnés et utiliser
treillis non uniforme). Viterbi avec le treillis du code 1/n.
 Rappel : codage des bits par +1/-1 avant
00 0 0 00
00
1
transmission dans le canal.
11 1 0
01 1
0
0
10 1
1
0
11
1 11

24/08/2009 Codage Canal-BE 253 24/08/2009 Codage Canal-BE 254

Inconvénient des codes


poinçonnés Distance minimale
 Une erreur dans un code poinçonné se  Possibilité de chercher la matrice de
propage plus longtemps qu’une erreur dans poinçonnage qui donne la dmin la plus
un code non poinçonné. grande.
 Conséquence : fenêtre d’observation plus
longue que 5K.
 La dmin du code poinçonné est égale ou
inférieure d’un bit à la dmin du code à
fort taux de codage sans poinçonnage.

24/08/2009 Codage Canal-BE 255 24/08/2009 Codage Canal-BE 256

64
Exemple : DVB-S Code interne (convolutif)
 Code de base convolutif de rendement ½ et
de longueur de contrainte K=7.
 Peut être poinçonné pour donner des codes X (171oct)
+
de rendement 2/3, ¾, 5/6 et 7/8. Poinçonnage
bits Z-1 Z-1 Z-1 Z-1 Z-1 Z-1 +
Sérialisation
Y (133oct)
+
Code « mère » (7,1/2)

Taux de codage : ½, 2/3, ¾, 5/6, 7/8

24/08/2009 Codage Canal-BE 257 24/08/2009 Codage Canal-BE 258

Concaténation série et parallèle


Plan du cours de codes convolutifs
1. Introduction  Concaténation parallèle de codes convolutifs :
2. Codes en blocs linéaires turbo-codes (Berrou-Glavieux 1993)
3. Codes convolutionnels  Evolution majeure des communications
numériques des années 1990.
1. Décodage optimal – algorithme de Viterbi
 Codes permettant d’atteindre (presque) les limites
2. Codes poinçonnés théoriques fixées par Shannon en termes de débit
3. Concaténation série et parallèle de codes maximal de transmission dans un canal.
4. Combinaisons de codes

24/08/2009 Codage Canal-BE 259 24/08/2009 Codage Canal-BE 260

65
Combinaison de codes
convolutifs Turbo-Codes
Cod 1 chaîne Decod. 1 Un codeur
 Utiliser les résultats du deuxième décodeur dans le
premier codeur.
Cod 2 Cod 1 chaîne Decod. 1 Decod. 2 Deux codeurs différents  Besoin de décodeurs produisant une information non
binaire (rapport de vraisemblance) sur les bits :
utilisation de codes convolutifs et d’un algorithme de
décodage de type BCJR.
Cod 2 Π Cod 1 chaîne Decod. 1 Π −1 Decod. 2 Deux codeurs
identiques

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

erreurs Π
24/08/2009 Codage Canal-BE 261 24/08/2009 Codage Canal-BE 262

Performances Limitations
 moins de 10 itérations pour atteindre des  Retard et complexité calculatoire.
BERs de 10-5 pour de faibles SNR.  Compensés par les excellentes performances.
 Exemple :  Meilleures performances avec une
 codes ½ concaténation série pour des BER inférieurs à
 N=216 10-2.
 18 itérations
 10-5 pour SNR=0,6 dB

24/08/2009 Codage Canal-BE 263 24/08/2009 Codage Canal-BE 264

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

24/08/2009 Codage Canal-BE 265 24/08/2009 Codage Canal-BE 266

Concaténation de codes Exemple : DVB-S


Cod 1 chaîne Decod. 1 Un codeur
 Code RS et code convolutif séparés par un
entrelaceur de type Forney.
Cod 2 Cod 1 chaîne Decod. 1 Decod. 2 Deux codeurs différents

Cod 2 Π Cod 1 chaîne Decod. 1 Π −1 Decod. 2 Deux codeurs


identiques

erreurs
24/08/2009 Codage Canal-BE 267 24/08/2009 Codage Canal-BE 268

67
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
 260 bits toutes les 20 ms (soit débit de 13 kbit/s).
bits), 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 ½ :
 Principe : mieux protéger les bits les plus sensibles. 378 bits à la sortie.
 Résultat : 3 classes, de la plus sensible à la moins  La 3ème classe est concaténée (78 bits) sans protection.
sensible : 50, 132 et 78 bits.
 Total : 456 bits toutes les 20 ms (soit débit de 22,8 kbit/s).

24/08/2009 Codage Canal-BE 269 24/08/2009 Codage Canal-BE 270

ARQ Vers les


HARQ Type I 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
24/08/2009 Codage Canal-BE 271 24/08/2009 Codage Canal-BE 272

68
Amélioration : décodeurs
« soft » et Chase Combining
Vers les
Émission HARQ Type II
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

24/08/2009 Codage Canal-BE … OK 273 24/08/2009 Codage Canal-BE 274

Réception HARQ Type IIVers les Conclusion générale


REDONDANCE INCRÉMENTALE couches
supérieures  Codage canal : code correcteurs d'erreurs
 Familles de codes étudiées : codes en blocs
DATA CRC FEC1 DECOD FEC CRC CHECK OK linéaires, codes cycliques, codes convolutifs.
 Applications :
Demande de STOCKAGE OK  Transport de données
retransmission  Stockage de données

DATA CRC FEC2 DECOD FEC CRC CHECK OK

OU FEC2 OK
24/08/2009 Codage Canal-BE … 275 24/08/2009 Codage Canal-BE 276

69
1. Introduction 1. Codes en blocs linéaires
2. Codes en blocs linéaires 2. Codes convolutionnels
1. Matrice génératrice et matrice de contrôle de parité
2. Exemples de codes en blocs linéaires particuliers 1. Décodage optimal – algorithme de Viterbi
3. Codes cycliques 2. Codes poinçonnés
4. Décodage optimal soft-decision
5. Décodage hard-decision 3. Concaténation série et parallèle de codes
6. Opérations sur les codes 3. Combinaisons de codes
3. Codes convolutionnels
4. Combinaisons de codes

24/08/2009 Codage Canal-BE 277 24/08/2009 Codage Canal-BE 278

70