70
1 TS219 CODAGE CANAL Benoît ESCRIG ENSEIRB-MATMECA/IRIT 24/08/2009 Codage Canal-BE 1 Bibliographie 24/08/2009 Codage Canal-BE 2 J. PROAKIS : Digital Communications, Ed. McGraw Hill, 2001. S. LIN, D.J. COSTELLO : Error Control Coding : Fundamentals and Applications, Ed. Prentice-Hall, 1983. A. GLAVIEUX, M. JOINDOT : Communications numériques. Introduction, Ed. Masson, 1996. Plan du cours 1. Introduction 2. Codes en blocs linéaires 3. Codes convolutionnels 4. Combinaisons de codes 24/08/2009 Codage Canal-BE 3 Plan du cours 1. Introduction 1. Contexte 2. Principe 2. Codes en blocs linéaires 3. Codes convolutionnels 4. Combinaisons de codes 24/08/2009 Codage Canal-BE 4

Cours_codage

Embed Size (px)

Citation preview

Page 1: Cours_codage

1

TS219 CODAGE CANAL

Benoît ESCRIGENSEIRB-MATMECA/IRIT

24/08/2009 Codage Canal-BE 1

Bibliographie

24/08/2009 Codage Canal-BE 2

� J. PROAKIS : Digital Communications, Ed. McGraw Hill, 2001.

� S. LIN, D.J. COSTELLO : Error Control Coding : Fundamentals and Applications, Ed. Prentice-Hall, 1983.

� A. GLAVIEUX, M. JOINDOT : Communications numériques. Introduction, Ed. Masson, 1996.

Plan du cours

1. Introduction2. Codes en blocs linéaires3. Codes convolutionnels4. Combinaisons de codes

24/08/2009 Codage Canal-BE 3

Plan du cours

1. Introduction1. Contexte

2. Principe

2. Codes en blocs linéaires3. Codes convolutionnels4. Combinaisons de codes

24/08/2009 Codage Canal-BE 4

Page 2: Cours_codage

2

Contexte : systèmes de télécommunications

24/08/2009 Codage Canal-BE 5

� 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.

0 1 0 1 0 0 1 1 0 0 0 1 1 1

0 1 0 0 0 0 1 1 1 0 0 1 1 1

DONNÉES ORIGINALES(données émises)

DONNÉES À TRAITER (données reçues)

Contexte : stockage de données sur support physique

24/08/2009 Codage Canal-BE 6

� Stockage : écriture sur support physique (CD, disque dur).

� Causes de l’altération : CD rayé, …� Résultat : les données lues sont différentes des

données écrites.

0 1 0 1 0 0 1 1 0 0 0 1 1 1

0 1 0 0 0 0 1 1 1 0 0 1 1 1

DONNÉES ORIGINALES(données stockées)

DONNÉES À TRAITER (données lues)

Problème soulevé par l’altération des données

� Sans traitement préalable sur les données originales, l’équipement qui va utiliser les données (téléphone mobile, lecteur DVD) ne sait pas que le flux de données comporte des erreurs.

24/08/2009 Codage Canal-BE 7

DONNÉESBLOC UTILISATEUR

DES DONNÉES

Impacts de l’utilisation de données altérées

� Dépendent de l’application et du type d’altération.

� Fort impact : un bit faux dans le codage d’un numéro de carte bleue .

� Faible impact : plusieurs paquets manquants dans le codage d’une conversation téléphonique.

24/08/2009 Codage Canal-BE 8

0 0.5 1 1.5 2 2.5 3 3.5 4

x 104

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Page 3: Cours_codage

3

Implications générales en télécommunications

� PDU (Protocol Data Unit) dont la syntaxe est erronée, donc PDU inexploitable (paquet, trame).

� Nécessité de retransmettre l’information.� Baisse du débit effectif.� Baisse de la QoS (Quality of Service).

24/08/2009 Codage Canal-BE 9

Enjeu

� Comment savoir si un flux de données comporte des erreurs ?� 1ère étape : détecter les erreurs.

� Que faire lorsque le flux de données à traiter est erroné ?� Corriger les erreurs (protocoles de la couche 1 et lecture

de données sur support CD).� 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 10

Interpoler entre les données précédentes et les données suivantes

� Technique possible lorsque les données traitées sont très redondantes et que la perte d’un bloc de données n’altère pas la qualité du service.

� Exemple : film, conversation téléphonique.

24/08/2009 Codage Canal-BE 11

RÉCEPTION

1 3 1 2 3

TRAITEMENT

4 4

Solliciter l’émission de nouvelles données

OK24/08/2009 Codage Canal-BE 12

� Mécanisme de type ARQ.� Automatic Repeat reQuest.

OK

transmission test

demande de retransmission

transmission test

vers la couche supérieure

Page 4: Cours_codage

4

Détecter et corriger les données altérées

� Codes correcteurs d’erreurs : rajouter des bits de redondance aux bits d’information (opération inverse à l’opération de compression).

� Codage : � Blocs de k bits en entrée.� Blocs de n bits en sortie (n>k).

� Décodage : retrouver les blocs de k bits à partir des blocs de n bits.

24/08/2009 Codage Canal-BE 13

Application aux télécommunications

� Codage canal : adapter le codage au canal de transmission pour améliorer les performances en termes de probabilité d’erreur Pe.

24/08/2009 Codage Canal-BE 14

émetteur récepteurcanalcodage décodage

Pec<Pe

nc

Penc non codé

codé

Exemple : code à répétition C(3,1)

24/08/2009 Codage Canal-BE 15

CODEUR

Code à répétition0 donne 000 1 donne 111

01001110 000 111 000 000 111 111 111 000

DECODEUR 01001110000 110 000 010 111 110 111 000

Les seuls blocs de 3 bits autorisés sont les blocs 000 et 111

DONNÉES ÉMISES

DONNÉES REÇUES

? ? ?

Limitation des codes correcteurs

� Si les erreurs sont rares, elles sont effectivement corrigées.

� Sinon, le décodeur va générer des erreurs là où il n’y en avait pas.

� Conséquence : un décodeur ne peut traiter correctement des données qu’à partir d’une certaine qualité à l’entrée du décodeur (aux environs de 1 bit faux sur 10 ou 1 bit faux sur 100).

24/08/2009 Codage Canal-BE 16

000 110 000 010 111 110 111 000

000 110 000 010 111 110 111 000

Page 5: Cours_codage

5

Inconvénient des codes correcteurs d’erreurs

Cas non codé Cas codéNombre de bits émis / bloc k nDébit k/Tbloc n/Tbloc

24/08/2009 Codage Canal-BE 17

� Soit Tbloc le temps alloué à l’émission d’un bloc de données.

� En théorie, l’ajout de redondance contribue à augmenter les besoins en bande passante.

k nCODEUR

Impact de l’utilisation des codes correcteurs

Données non codées Données codéesDébit k/n . D D (fixe)

24/08/2009 Codage Canal-BE 18

� En pratique, c’est le débit utile qui est diminué car les débits des données codées sont fixées par les normes.

� Plus il y a de protection (et donc de redondance – k/n petit), plus le débit utile diminue.

k nCODEUR

Enjeu des codes correcteurs d’erreurs

� Plus il y a de redondance, � Plus la capacité de correction est grande.� Plus la consommation en bande passante est

grande.

� Enjeu : fournir la meilleure capacité de correction en utilisant le moins de bits de redondance.

24/08/2009 Codage Canal-BE 19

Pourquoi utiliser des codes correcteurs dans les systèmes de télécommunications ?

� Au niveau de la couche physique, les techniques de transmission arrivent à diminuer le nombre d’erreurs (en augmentant le rapport signal à bruit à la réception) mais ne peuvent les empêcher.

� Comment alors améliorer la qualité de la transmission ?

� Solution : codes correcteurs.

24/08/2009 Codage Canal-BE 20

Page 6: Cours_codage

6

Pourquoi utiliser des codes correcteurs dans le stockage de données (disque dur, CD) ?

� Comment récupérer, traiter des données stockés sur un support quelconque (disque dur, CD, DVD) lorsque le support de stockage est défectueux ?

� Solution : codes correcteurs.

24/08/2009 Codage Canal-BE 21

Plan du cours

1. Introduction1. Contexte2. Principe

2. Codes en blocs linéaires3. Codes convolutionnels4. Combinaisons de codes

24/08/2009 Codage Canal-BE 22

Principe du codage

nk

Rc =

24/08/2009 Codage Canal-BE 23

� Ajouter au message à transmettre des bits de redondance selon une loi donnée.

� Taux de codage Rc.� Exemple : code à répétition C(3,1)

� Si 0, alors 000. Si 1, alors 111.

k nCODEUR

Principe du décodage (1/3)

� Coder les données sans les décoder ne sert à rien.� Décoder : tester si la loi de codage est respectée.� Si la loi de codage est respectée, alors les données

sont envoyées au bloc de traitement suivant.� Exemple : code à répétition C(3,1)

� Si 000, alors 0. Si 111, alors 1.

24/08/2009 Codage Canal-BE 24

DÉCODEURn k

Page 7: Cours_codage

7

Principe du décodage (2/3)

� Si la loi de codage n’est pas respectée, il y a détection d’erreur(s).

� Exemple : code à répétition C(3,1)� Si le décodeur reçoit un autre bloc de trois bits

que 000 ou 111, il détecte que le bloc est erroné.

24/08/2009 Codage Canal-BE 25

DÉCODEURn k

Principe du décodage (3/3)

� S’il y a détection d’erreur alors il y a � Soit correction et envoi au bloc de traitement

suivant,� Soit suppression des données, demande de

retransmission ou interpolation.

24/08/2009 Codage Canal-BE 26

DÉCODEURn k

Exemple de correction d’erreur

� Détection d’erreur : le mot 110 est différent de 000 et de 111.

� Correction d’erreur : le mot reçu est plus proche de 111 que de 000. La sortie est donc 1.

24/08/2009 Codage Canal-BE 27

Code à répétition0 donne 000 1 donne 111

DÉCODEUR 1110

DONNÉES REÇUES

Distinction entre détection et correction d’erreur

� Détection d’erreur : le décodeur détecte que le bloc de bits à traiter est erroné.� L’information produite est binaire : il y a ou il n’y a

pas d’erreur (une ou plusieurs erreurs).

� Correction d’erreur : le décodeur sait où se trouvent les erreurs et les corrige.

24/08/2009 Codage Canal-BE 28

Page 8: Cours_codage

8

Exemples

24/08/2009 Codage Canal-BE 29

Code à répétition0 donne 00 1 donne 11

DÉCODEURdétection

erreur01

Code à répétition0 donne 000 1 donne 111

DÉCODEURdétection erreur

110DÉCODEURcorrection

0 DÉCODEURcorrection 1

Remarque

� Un décodeur utilisé comme correcteur d’erreur produit toujours un flux de sortie.

� Il existe un risque que le décodeur introduise des erreurs.

� Contrainte : assurer une certaine qualité du flux de données à l’entrée du décodeur.

24/08/2009 Codage Canal-BE 30

Code à répétition0 donne 00 1 donne 11

DÉCODEURdétection

erreur01

DÉCODEURcorrection

0

Historique� 1948 : Shannon (théorie de l’information).� 1950 : Hamming. � 1950-1970 : codes en blocs et codes cycliques, BCH

(Bose-Chaudhuri-Hocquenghem) et RS (Reed-Solomon).

� 1960-1970 : codes convolutifs (Fano, Forney, Viterbi).

� 1980 : modulations codées en treillis (Ungerboeck).� 1990 : décodage itératif et turbo-codes (Berrou-

Glavieux).� 2000 : codes LDPC (Low Density Parity Check).

24/08/2009 Codage Canal-BE 31

Plan du cours1. Introduction

2. Codes en blocs linéaires1. Matrice génératrice et matrice de contrôle de parité2. Exemples de codes en blocs linéaires particuliers3. Codes cycliques4. Décodage optimal soft-decision 5. Décodage hard-decision 6. Opérations sur les codes

3. Codes convolutionnels4. Combinaisons de codes

24/08/2009 Codage Canal-BE 32

Page 9: Cours_codage

9

Codes en blocs linéaires

� Code en bloc = ensemble de vecteurs de longueur n appelés mots de code.

� Les composantes d’un mot de code appartiennent à un alphabet à q symboles.

24/08/2009 Codage Canal-BE 33

n

qn

Composantes du mot de code

code composante valeurq=2 binaire bit {0,1}q≠2 non binaire symbole {0,…,q-1}

24/08/2009 Codage Canal-BE 34

� Exemples : � Si q=2, alors les mots de code sont

constitués de 0 et 1.� Si q =3, alors les mots de code sont

constitués de 0,1 et 2.

01010010

01210210

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

� Possibilité de représenter un symbole par bbits.

� Conséquence : un mot de code de Nsymboles peut se représenter par un mot de code binaire de bN bits.

24/08/2009 Codage Canal-BE 35

=

Exemple

� Si q = 4=22, alors mot de code constitué de 0,1,2 et 3.� Possibilité de représenter un symbole (0,1,2,3) par

2 bits (00 01 10 11).� Conséquence : mot de code de 8 symboles = mot

de code binaire de 2x8 bits.

24/08/2009 Codage Canal-BE 36

0 1 2 3 2 1 1 2

00 01 10 11 10 01 01 10

Page 10: Cours_codage

10

Définition d’un code C(n,k)

� Association de 2k mots de code de n bits aux 2k

mots de données de kbits.

24/08/2009 Codage Canal-BE 37

2k mots de k bits

2n mots de n bitssélection de 2k mots

de n bits

CODE

Exemple : C(4,2)

Mot de données

Mot de code

00 1010

01 0010

10 0110

11 1011

24/08/2009 Codage Canal-BE 38

� Les 4 (22) mots de code sont choisis parmi les 16 (24) mots de 4 bits.

n=4

2n=16

Généralisation aux codes non binaires

� Mots de code à n symboles (et non bits).

� Symboles : 0,1,2, …,q-1� qn mots de n symboles.� Sélection de qk mots pour

former un code.

24/08/2009 Codage Canal-BE 39

n

qn

Exemple C(2,1) q=3

Mot de données Mot de code

0 12

1 20

2 22

24/08/2009 Codage Canal-BE 40

� 1 symbole en entrée : 0,1,2.

� 2 symboles en sortie : (0,1,2) x (0,1,2).

n=2

32

Page 11: Cours_codage

11

Poids d’un mot : nombre d’éléments non nuls dans le mot

� Distribution des poids d’un code w : ensemble des poids d’un code.

� Existence de codes dont tous les mots de code ont le même poids (codes à poids fixe ou à poids constant).

� Paramètre important pour établir les performances de certains codes.

24/08/2009 Codage Canal-BE 41

Exemples

{ }{ }{ }3,2 111 011 011 110

1,0 100 010 001 000

3,2,1,0 111 011 001 000

===

w

w

w

24/08/2009 Codage Canal-BE 42

� Répartition possible des poids sur un code C(3,2).

Opérations sur les mots de code et les mots de données

� Les composantes des vecteurs appartiennent à un alphabet à q symboles.

� Alphabet muni de l'addition modulo-q et de la multiplication modulo-q = corps de Galois d'ordre q, noté GF(q).� Corps de Galois = corps d'ordre fini.� Corps d'ordre fini = corps dont le nombre

d'éléments (ordre) est fini.

24/08/2009 Codage Canal-BE 43

Rappel sur les corps

� 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.

24/08/2009 Codage Canal-BE 44

Page 12: Cours_codage

12

Rappel sur les groupes

aaeea == **

24/08/2009 Codage Canal-BE 45

� Un ensemble G sur lequel est défini une opération * est un groupe si� L'opération est associative,� G contient un élément e (appelé élément neutre

de G), � Pour chaque élément a de G, il existe un élément

a' de G appelé inverse de a.

eaaaa == '*'*

Exemple : GF(2) et GF(3)

011

100

10+

101

000

10×

1022

0211

2100

210+

1202

2101

0000

210×

24/08/2009 Codage Canal-BE 46

Multiplication Multiplication modulomodulo--2 : ET 2 : ET logique (AND).logique (AND).

Addition Addition modulomodulo--2 : 2 : OU exclusif OU exclusif (XOR).(XOR).

Espaces vectoriels

� Les vecteurs de mots de données et de mots de code appartiennent respectivement aux 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).

24/08/2009 Codage Canal-BE 47

Rappel sur les espaces vectoriels (1/2)

� Soit V un ensemble sur lequel est définie l’addition "+" et soit F un corps. La multiplication "." est définie entre les éléments de F et les éléments de V.

� Les éléments de V sont des vecteurs; ceux de F, des scalaires.

24/08/2009 Codage Canal-BE 48

Page 13: Cours_codage

13

Rappel sur les espaces vectoriels (2/2)

� V est un espace vectoriel sur le corps F si :� 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.

24/08/2009 Codage Canal-BE 49

Distance minimale dmin d’un code

� Distance de Hamming : nombre d’éléments différents (bits, symboles) entre les deux mots (distance comprise entre 0 et n).

� Distance de Hamming minimale entre deux mots de code : dmin.

� Exemple : C(3,2), dmin=2.

Mot de données

Mot de code

00 00001 10110 11011 011

[ ] [ ]( ) 2110,101 =D

24/08/2009 Codage Canal-BE 50

Plan du cours1. Introduction

2. Codes en blocs linéaires1. Matrice génératrice et matrice de contrôle de parité

2. Exemples de codes en blocs linéaires particuliers3. Codes cycliques4. Décodage optimal soft-decision 5. Décodage hard-decision 6. Opérations sur les codes

3. Codes convolutionnels 4. Combinaisons de codes

24/08/2009 Codage Canal-BE 51

Définitions et Notations

[ ]mkmmm xxx ...21=X

24/08/2009 Codage Canal-BE 52

� Soit un code C(n,k).� Mot de données Xm à k composantes.� Mot de code Cm à n composantes.

( )[ ]mnkmmkmmm ccccc ...... 121 +=C

CODEURXm Cm

Page 14: Cours_codage

14

Génération de la jième

composante de Cm (1/2)� Combinaison linéaire (CL) des k composantes

du mot de données Xm.

24/08/2009 Codage Canal-BE 53

xm1

g1j g2j gij gkj

xm2 xmi xmk

cmj

ΣΣΣΣ

m=1,…,2k

… …

Génération de la jième

composante de Cm (2/2)

∑=

=k

imiijmj xgc

1

24/08/2009 Codage Canal-BE 54

� Pour savoir quelles composantes de Xm participent à la CL : 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.

njgxgxgxc kjmkjmjmmj ,,2,1 2211 LL =+++=

Génération des ncomposantes de Cm

k

k

imiijmj

m

njxgc

ki

21

1

1

1

≤≤

≤≤=

≤≤

∑=

24/08/2009 Codage Canal-BE 55

� Pour n composantes, n combinaisons linéaires différentes.

� Le codeur est entièrement défini par n CLs.

Codage par multiplication matricielle

GXC mm =

24/08/2009 Codage Canal-BE 56

=

knkk

n

n

ggg

ggg

ggg

L

MMM

L

L

21

22221

11211

G

k

k

imiijmj

m

njxgc

ki

21

1

1

1

≤≤

≤≤=

≤≤

∑=

CODEURXm Cm

Matrice génératrice

Page 15: Cours_codage

15

Matrice génératrice G

� Matrice génératrice de rang(1) k.

� Les vecteurs giforment une base non unique.

kmkmmm xxx gggC +++= ...2211

=

=

knkk

n

n

k ggg

ggg

ggg

L

MMM

L

L

M

21

22221

11211

2

1

g

g

g

G

24/08/2009 Codage Canal-BE 57

(1) Rang d’une matrice : nombre maximal de vecteurs lignes (ou colonnes) linéairement indépendants.

Exemple C(3,2)

Mot de données

Mot de code

00 000

01 011

10 101

11 110

=

110

101G

24/08/2009 Codage Canal-BE 58

Code systématique

� Un code est dit systématique si les k premiers bits du mot de code sont constitués par les kbits du mot de données. Ces k bits sont dits systématiques.

� Les (n-k) bits restants sont appelés bits de parité.

24/08/2009 Codage Canal-BE 59

k n-kCODEUR k

Matrice génératrice pour code systématique

� Il est possible d’obtenir la matrice génératrice de la version systématique d’un code par opérations sur les lignes et permutations des colonnes.

24/08/2009 Codage Canal-BE 60

Page 16: Cours_codage

16

Forme de la matrice génératrice pour un code systématique

[ ]

( )

( )

( )

==

knkkk

kn

kn

k

ppp

ppp

ppp

L

MMM

L

L

L

OOM

MO

L

21

22221

11211

100

0

10

001

PIG

24/08/2009 Codage Canal-BE 61

� Ik matrice identité et P matrice k x (n-k).

Intérêt des codes systématiques

[ ] [ ]PXXPIX mmkm =

24/08/2009 Codage Canal-BE 62

� 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.

Bits systématiques Bits de parité

Code dual d’un code C(n,k)

� Soit un code C(n,k) de matrice génératrice G.

� Code dual : code C(n,n-k) de matrice génératrice H.

� Propriété : tous les mots de code générés par G sont orthogonaux à ceux générés par H.

24/08/2009 Codage Canal-BE 63

0GH =T

0HC =Tm

Cas des codes systématiques

[ ]PIG k=

24/08/2009 Codage Canal-BE 64

� Forme particulière de la matrice H si le code généré par la matrice G est systématique.

[ ]knT

−−= IPH

0GH =T

Page 17: Cours_codage

17

Exemple

=

1101000

0110100

1110010

1010001

G

=1001011

0101110

0010111

H

24/08/2009 Codage Canal-BE 65

Capacité de détection d'un code C(n,k)

≠24/08/2009 Codage Canal-BE 66

� Soit un code C(n,k) de distance minimale dmin.

MOT DE CODEX

d>=dmin ERREURS MOT DE CODEY

ÉVENTUELLEMENT

MOT DE CODE d<dmin ERREURS MOT DE CODE

CERTAINEMENT

+ =

+

Capacité de détection d'un code C(n,k)

1min +−≤ knd

24/08/2009 Codage Canal-BE 67

� Capacité de détection d’un code : au plus dmin-1 erreurs.

� Détection : dmin-1 erreurs transforment un mot de code en un autre mot qui n'est pas un mot de code.

2k mots de données

dmin

Exemples

� C(3,2) : � dmin=2, capacité de

détection : 1.� La réception de [010]

implique au moins une erreur.

� C(5,1) : � dmin=5, capacité de

détection : 4.� La réception de [00010]

implique au moins une erreur.

Mot de données

Mot de code

00 00001 01110 10111 110

Mot de données

Mot de code

0 000001 11111

24/08/2009 Codage Canal-BE 68

Page 18: Cours_codage

18

Précisions sur la capacité de détection d'un code

� Code C(n,k) = 2k mots de codes de longueur n parmi 2n mots possibles.

� 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.

24/08/2009 Codage Canal-BE 69

Y= Cm+e

Précisions sur la capacité de détection d'un code

24/08/2009 Codage Canal-BE 70

2n mots de code2n -1 erreurs possibles (autres que le mot nul)

2k-1 erreurs non détectables car 2k–1 mots de code non nuls

2n-2k erreurs détectables

Rapport erreurs non détectables et détectables

24/08/2009 Codage Canal-BE 71

� Pour n grand, le nombre d'erreurs non détectables devient petit devant le nombre d'erreurs détectables.

� Exemple : C(7,4) � 16 mots de code, 15 erreurs non détectables.� 128-16=112 erreurs détectables.

kn

k

2212

−−

Capacité de correction d'un code C(n,k)

−=2

1mindEntt

24/08/2009 Codage Canal-BE 72

� Soit dmin, la distance minimale. � Capacité de détection : dmin –1.� Capacité de correction t : partie

entière de la moitié de (dmin-1).� Pour pouvoir corriger ces

erreurs, il faut que le mot reçu soit suffisamment près d'un mot de code existant.

2k mots de données

dmin

t

Page 19: Cours_codage

19

Exemple : code C(3,2), dmin=2� Réception de [010].� Détection d’une erreur.� Capacité de correction nulle.� Impossibilité de décider quel

mot a été transmis : � [000] � ou [011] � ou [110].

Mot de données

Mot de code

00 000

01 101

10 110

11 011

24/08/2009 Codage Canal-BE 73

Exemple : code à répétition C(3,1)

� Capacité de détection 2, capacité de correction 1.

� Réception de [001] : détection d’une erreur et correction en [000].

Mot de données

Mot de code

0 000

1 111

24/08/2009 Codage Canal-BE 74

Limitation

� Exemple : code à répétition C(3,1).� Transmission de [000] et réception de [011],

détection d’une erreur et correction en [111].� Conséquence :

� en théorie, génération d’erreurs !� en pratique, cas correspondants à des conditions

de transmission inexploitables.� Les codes correcteurs ne peuvent fonctionner

correctement que si le BER (Bit Error Rate) avant correction est inférieur à 10-1.

24/08/2009 Codage Canal-BE 75

Codes étendus

� Code étendu C(n+1,k) généré à partir d’un code C(n,k) : ajout d’un bit de parité (somme modulo 2 du mot de code) au mot de code généré par C(n,k) :

� 0 si nombre de 1 dans mot de code pair,� 1 si nombre de 1 dans mot de code impair.

� Propriété :� Si C(n,k) de distance minimale dmin impaire, alors

C(n+1,k) de distance minimale dmin+1.

24/08/2009 Codage Canal-BE 76

Page 20: Cours_codage

20

Codes raccourcis

� Code raccourci C(n-l,k-l) généré à partir d’un code systématique C(n,k) : suppression des lpremiers bits d’information (génération des mots de code par G) : � Si le code C(n,k) est de distance minimale dmin,

alors le code C(n-l,k-l) a au moins une distance minimale de dmin.

� Codes étendus et raccourcis utiles pour faire des multiples d’octets.

24/08/2009 Codage Canal-BE 77

Conclusion sur les codes en blocs linéaires

24/08/2009 Codage Canal-BE 78

GXC mm =

CODEURXm Cm

Mot de code1 x n

Mot de données1 x k

Matrice génératricek x n

De la forme [Ik P] pour les codes systématiques

Limitation des codes en blocs linéaires

� Codage par multiplication matricielle.� Inconvénients :

� Stockage de la matrice (espace mémoire requis important),

� Traitement temps réel impossible (traitement bloc).

� Solution : codes cycliques.

24/08/2009 Codage Canal-BE 79

Plan du cours1. Introduction

2. Codes en blocs linéaires1. Matrice génératrice et matrice de contrôle de parité2. Exemples de codes en blocs linéaires particuliers

3. Codes cycliques4. Décodage optimal soft-decision 5. Décodage hard-decision 6. Opérations sur les codes

3. Codes convolutionnels4. Combinaisons de codes

24/08/2009 Codage Canal-BE 80

Page 21: Cours_codage

21

Codes de Hamming binaires

� Codes de la forme C(2m-1,2m-1-m).� Exemple : m=3, C(7,4).� Forme particulière de la matrice H :

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

non nuls inférieurs ou égal à 2m-1.

� dmin=3 pour tous les codes de Hamming.

24/08/2009 Codage Canal-BE 81

Exemple

=1001011

0101110

0010111

H

24/08/2009 Codage Canal-BE 82

=

1101000

0110100

1110010

1010001

G

Codes de Hadamard

=

10

00

2M

24/08/2009 Codage Canal-BE 83

� Un mot de code = une ligne d’une matrice de Hadamard.

� Matrice de Hadamard : Mn où n est un entier pair.

� Construction récurrente des matrices.

=

nn

nn

n

MM

MMM2

Propriétés

� Chaque ligne diffère des autres en n/2 positions.

� Une ligne ne contient que des zéros.

� Toutes les autres contiennent n/2 zéros et n/2 uns.

=

0110

1100

1010

0000

4M

24/08/2009 Codage Canal-BE 84

Page 22: Cours_codage

22

Construction d’un code

� Les lignes de Mn et de son complément forment un code binaire C(2m,m+1) de distance minimale dmin=2m-1.

� Exemple : C(4,3), dmin=2.

=

1001

0011

0101

1111

4M

24/08/2009 Codage Canal-BE 85

=

0110

1100

1010

0000

4M

Plan du cours1. Introduction

2. Codes en blocs linéaires1. Matrice génératrice et matrice de contrôle de parité2. Exemples de codes en blocs linéaires particuliers3. Codes cycliques

4. Décodage optimal soft-decision 5. Décodage hard-decision 6. Opérations sur les codes

3. Codes convolutionnels4. Combinaisons de codes

24/08/2009 Codage Canal-BE 86

Codes cycliques

[ ][ ]1032

0121

...'

...

−−−

−−

=

=

nnn

nn

cccc

cccc

C

C

24/08/2009 Codage Canal-BE 87

� Famille de codes linéaires ayant la propriété suivante : toute permutation circulaire d'un mot de code C donne un autre mot de code.

Représentation polynomiale des codes cycliques

� Associer à chaque mot de code, à ncomposantes, un polynôme C(p).

� Propriétés du polynôme :� Nombre de coefficients : n, de 0 à (n-1).� Degré inférieur ou égal à (n-1).� Codes binaires : coefficients dans {0,1}.

[ ] ( ) 012

21

10121 ... cpcpcpcpCcccc nn

nnnn ++++=⇒= −

−−

−−− LC

24/08/2009 Codage Canal-BE 88

Page 23: Cours_codage

23

Exemples

24/08/2009 Codage Canal-BE 89

[ ] ( )[ ] ( )[ ] ( )[ ] ( )[ ] ( ) 11101101

11101

111

10

11

2356

23

++++=⇒=++=⇒=

+=⇒==⇒=

=⇒=

pppppC

pppC

ppC

ppC

pC

C

C

C

C

C

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

( )( )

( ) 102

31

21

02

11

21

012

21

1

−−

−−

−−−

−−

−−

++++=

++++=

++++=

nn

nn

n

nn

nn

nn

nn

cpcpcpcpC

pcpcpcpcppC

cpcpcpcpC

L

L

L

24/08/2009 Codage Canal-BE 90

� Comment passer de C à C1 ?� Idée 1 : p C(p)

� p C (p) ne peut pas être un mot de code car de degré n si cn-1=1.

[ ]0121 ... cccc nn −−=C

[ ]10321 ... −−−= nnn ccccC

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

� Idée 2 : division de p C(p) par pn+1

24/08/2009 Codage Canal-BE 91

( )( )( ) ( )( ) 10

23

121

11

102

11

21

02

11

21

)1(

)1(

−−

−−

−−

−−

−−−

++++=

++=

++++++=

++++=

nn

nn

n

nn

nn

nn

n

nn

nn

cpcpcpcpC

pCpcppC

cpcpcpcpcppC

pcpcpcpcppC

L

L

L

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

� C1 : reste de la division de pC(p) par pn+1.

24/08/2009 Codage Canal-BE 92

( ) ( ) ( )( ) ( ) ( )1mod

1

1

11

+=

++= −

n

nn

pppCpC

pCpcppC [ ]0121 ... cccc nn −−=C

[ ]10321 ... −−−= nnn ccccC

Page 24: Cours_codage

24

Généralisation

( ) ( )( ) ( )pCppQpCp ini ++= 1

24/08/2009 Codage Canal-BE 93

� Permutation de Ci de i éléments : reste de la division de piC(p) par (pn+1)

[ ]0121 ... cccc nn −−=C [ ]inininini cccc −+−−−−−= 121 ...C

Code cyclique et multiplication polynomiale

� Soit un polynôme générateur g(p) de degré (n-k), 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.

( )( )( ) ( ) ( )pgpXpC

xpxpxpxpX

pgpgppg

mm

kk

kk

knkn

kn

=

++++=

++++=

−−

−−

−−−−

012

21

1

11

1 1

L

L

24/08/2009 Codage Canal-BE 94

Exemple avec n=7

� Avec p7+1, possibilité de générer deux codes cycliques C(7,4).

� Un choix objectif entre les deux polynômes peut être fait s’ils donnent naissance à des codes de capacité de correction différente.

24/08/2009 Codage Canal-BE 95

( )( )( )

( )( )4342143421

pgpg

pppppp1

1111 3237 +++++=+

Table de g(p)

=

1101001

0110001

1000101

0011101

1111111

0100111

1010011

0001011

1100010

0111010

1001110

0010110

1110100

0101100

1011000

0000000

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

24/08/2009 Codage Canal-BE 96

� g(p)=p3+p2+1� C(7,4)� Exemples :

� X(p)=1 donne C(p)=g(p)� X(p)=p donne C(p)=g(p).p� X(p)=p+1 donne

C(p)=g(p)(p+1)=p4+p3+p+p3+p2+1=p4+p2+p+1

Page 25: Cours_codage

25

Code dual

� En général, pn+1=g(p)h(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

C(n,k) : polynôme réciproque de h(p) défini par pkh(p-1).

24/08/2009 Codage Canal-BE 97

( ) ( )kk

kk

kk

kk

kkk

pphphph

phphphppphp

+++++=

++++=

−−−

−+−−

+−−

−−

11

221

11

22

11

1

1

1

L

L

Exemple

� Code dual de g(p)

24/08/2009 Codage Canal-BE 98

( )( )( )

( )( )

( )( ) 4214

234

2337

1

1

1111

pppphp

pppph

pppppppgph

+++=+++=

+++++=+

43421444 3444 21

Lien avec les matrices génératrices

=

−−

−−

1100

01

10

0011

1

1

LL

OM

MOOO

LL

kn

kn

g

g

G

24/08/2009 Codage Canal-BE 99

� Matrice génératrice d’un code cyclique C(n,k) de polynôme g(p) constituée des lignes :� pk-1g(p)� pk-2g(p)� …� pg(p)� g(p)

Exemple : C(7,4)

( ) 321 pppg ++=

24/08/2009 Codage Canal-BE 100

=

1011000

0101100

0010110

0001011

G

Page 26: Cours_codage

26

Construction de codes systématiques

� Codes systématiques : k premiers bits constitués par les bits d’information.

� Propriété :

24/08/2009 Codage Canal-BE 101

( ) ( ) ( ) ( )( ) ( ) ( ) ( )pgpQprpXp

prpgpQpXpkn

kn

=++=

Méthode

( ) ( ) ( ) ( )( ) ( ) ( ) ( )pgpQprpXp

prpgpQpXpkn

kn

=++=

24/08/2009 Codage Canal-BE 102

� Multiplier le polynôme d’information X(p) par pn-k.� Diviser pn-kX(p) par g(p).� Ajouter le reste de la division, noté r(p), à pn-kX(p).

Exemple : C(7,4) et g(p) = p3+p+1

� Mot à coder X=[1001] � X(p)=p3+1� pn-kX(p)= p6+p3

� Le reste de la division de pn-kX(p) par g(p)donne les bits de parité.

� g=[1011].

24/08/2009 Codage Canal-BE 103

Exemple (suite)� 1001000 � 1011 Dividende : 1� 010000� 0000 Dividende : 10� 10000� 1011 Dividende : 101� 0110� 0000 Dividende : 1010� 110� Reste = p2+p donc C=[1001110]

24/08/2009 Codage Canal-BE 104

Page 27: Cours_codage

27

Mise en œuvre de codes cycliques

� Utilisation de registres à décalages.� Registre : case mémoire accessible par le

processeur sans temps d’accès (de taille 64 bits pour les processeurs dits 64 bits).

� Registre à décalage : registre de taille fixe dans lequel les bits sont décalés à chaque coup d'horloge.

24/08/2009 Codage Canal-BE 105

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.

24/08/2009 Codage Canal-BE 106

entrées

sortieslogique combinatoire

Étapes de codage

� Multiplier le polynôme d’information X(p) par pn-k : décalage de registres.

� 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.

24/08/2009 Codage Canal-BE 107

Codeur cyclique

� Basculement des interrupteurs après passage des k bits d’information.

24/08/2009 Codage Canal-BE 108

1 g1 gn-k-1

bits d’information

c0 c1 cn-k-1

polynôme pn-kX(p)

sortie

bits de parité

Page 28: Cours_codage

28

Exemple C(7,4)

24/08/2009 Codage Canal-BE 109

( ) 31 pppg ++=

1 g1=1

bits d’information

c0 c1 c2

polynôme d’information pn-kX(p)

sortie

bits de parité

g2=0

Exemple C(7,4)

� Entrée : 0110� Sortie : 0110001

100

101

110

000

000

210 ccc

24/08/2009 Codage Canal-BE 110

bits d’information

c0 c1 c2

polynôme d’information pn-kX(p)

sortie

bits de parité

Codes cycliques dans les protocoles de communication

� Protection des unités de données de protocoles – PDUs (paquets, 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.

� Inconvénient : � codes cycliques définis par n et k fixes.� PDUs de tailles variables.

24/08/2009 Codage Canal-BE 111

Implantation des codes cycliques dans les protocoles

� Utilisation d’un codeur C(n,k) systématique avec (n-k) bits de redondance.

� Quelle que soit la taille de la PDU, le nombre de bits de parité sera toujours le même : n-k.

� Exemples : paquet IP, trame Ethernet.� Avec un CRC de 16 bits, 16 bits de redondance

seront produits, quelle que soit la taille du bloc à traiter.

24/08/2009 Codage Canal-BE 112

Page 29: Cours_codage

29

Exemples : trames HDLC et PPP

24/08/2009 Codage Canal-BE 113

01111110 01111110Adresse Commande Données >=0 FCS

Fanion8 bits

8 bits 8 bits (FCS) : Frame Check Sequence16 bits

x16+x12+x5+1

Exemple : trame Ethernet

� CRC de degré 32

24/08/2009 Codage Canal-BE 114

Préambule : 7 octets

Délimiteur de début de trame : 1 octet

Adresse destination : 6 octetsAdresse source : 6 octets

Longueur données (2 octets)

Données (0-1500 octets)Padding (0-46 octets)

Contrôle (4octets)

G(x) = x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1

Capacité de détection

knknKkn

K

KknK

K

−−+∞→−−+ ≈−

→−

−=

−−

21

121

1221

1

2212

24/08/2009 Codage Canal-BE 115

� Si l’entrée est constituée de blocs de K bits, la sortie est constituée de blocs de K+(n-k) bits.

� Le rapport entre le nombre d’erreurs non détectées et le nombre d’erreurs détectées tend vers 1/[2(n-k)] lorsque K tend vers l’infini.

Synthèse des codes cycliques C(n,k) : limitation

� Pour un code C(n,k) quelconque, il faut calculer toutes les distances entre les mots de code pour avoir dmin et en déduire les capacités de détection et de correction.

� Optimisation possible : définir des codes pour lesquels le dmin est connu a priori.

� Solution : codes BCH (Bose-Chaudhuri-Hocquenghem).

24/08/2009 Codage Canal-BE 116

Page 30: Cours_codage

30

Codes BCH

12

12

min +=≤−

−=

td

mtkn

n m

24/08/2009 Codage Canal-BE 117

� Paramètres des codes BCH binaires� k bits d’information en entrée� n bits de code à la sortie� 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.

Polynômes générateurs des codes BCH

� Polynômes générateurs construits à partir du polynôme pq+1 où q=2m-1.

� Nécessite la connaissance des GF(2m). � GF(q) peut être construit si q est premier ou

de la forme q=pm avec p premier et m entier. � Si q=pm, GF(p) peut être étendu à GF(pm),

appelé corps étendu de GF(p). Les opérations se font modulo p.

24/08/2009 Codage Canal-BE 118

Représentation des polynômes générateurs des codes BCH

� Forme compacte d’énoncer les coefficients du polynôme : notation en octal� 1 chiffre = 3 bits� bit le plus à gauche = coefficient de degré le plus

grand

� Exemple : C(15,5)� 2467 en octal = 010 100 110 111 en binaire

24/08/2009 Codage Canal-BE 119

( ) 1245810 ++++++= pppppppg

Exemples

� Tables existantes pour m compris entre 3 et 8, donc n compris entre 7 et 255.

� Cf. Proakis.

24/08/2009 Codage Canal-BE 120

n k t g(p)

7 4 1 13

15 11 1 23

7 2 721

5 3 2467

31 26 1 45

21 2 3551 …

…255 247 1 435561

Page 31: Cours_codage

31

Conclusion sur les codes cycliques

( ) ( ) ( )pgpXpC mm =

24/08/2009 Codage Canal-BE 121

Mot de codede degré <= n -1

Mot de donnéesde degré <= nk-1

Polynôme générateurde degré <= n -k

CODEURXm Cm

Plan du cours1. Introduction

2. Codes en blocs linéaires1. Matrice génératrice et matrice de contrôle de parité2. Exemples de codes en blocs linéaires particuliers3. Codes cycliques4. Décodage optimal soft-decision

5. Décodage hard-decision 6. Opérations sur les codes

3. Codes convolutionnels4. Combinaisons de codes

24/08/2009 Codage Canal-BE 122

Modèle de la chaîne de transmission

� Bits équiprobables.� Canal AWGN (Additive White Gaussian Noise).

24/08/2009 Codage Canal-BE 123

CODAGE DÉCODAGE+1/-1

BRUIT

Bits

Bits codés

Échantillons

Échantillons bruités

Bitsestimés

Canal AWGN

� Canal idéal : ajout d’une source de bruit blanc gaussien, indépendant du signal émis, de PSD (Power Spectral Density) N0/2.

24/08/2009 Codage Canal-BE 124

CODAGE DÉCODAGE+1/-1

BRUIT

Bits

Bits codés

Échantillons

Échantillons bruités

Bitsestimés

Page 32: Cours_codage

32

Décodage optimal soft-decision

� Décodage soft-decision = décodage à partir des valeurs des échantillons reçus et non pas sur des estimations de bits (0 ou 1).

24/08/2009 Codage Canal-BE 125

DÉCODAGEÉchantillons bruités

Bitsestimés

Rôle du décodeur

� À chaque bloc de n bits, décider quel est le mot de code qui a été émis et en déduire le mot de données de k bits.

24/08/2009 Codage Canal-BE 126

CODAGE DÉCODAGE+1/-1

BRUIT

Bits

Bits codés

Échantillons

Échantillons bruités

Bitsestimés

Décodeur optimal

� 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 bon).

24/08/2009 Codage Canal-BE 127

vecteur de néchantillons bruités r

DÉCODEUR

2k mots de code

mot de codele plus probable

Modèle des échantillons reçus

� Pour chaque mot Ci, les composantes cij du vecteur sont des 0 et des 1 (j=1…n).

� Les échantillons nj sont des variables aléatoires gaussiennes, indépendantes,centrées, de variance N0/2.

24/08/2009 Codage Canal-BE 128

CODAGE DÉCODAGE+1/-1

BRUIT

Bits

cij

2cij-1

Bitsestimés

rj=(2cij-1)+nj

Page 33: Cours_codage

33

Densité de probabilité des échantillons de bruit

( ) ( )

( )

−=

−==

∏∏

=

==

n

j

jn

n

j

jn

jj

N

nN

Nn

Nnpp

1 0

2

20

1 0

2

01

exp

22

exp

22

1

π

πn

24/08/2009 Codage Canal-BE 129

� La densité de probabilité du vecteur n des néchantillons de bruit est une gaussienne à ndimensions.

x

pnj(x)

n=[n0 … nn]

Densité de probabilité gaussienne du vecteur r

( ) ( )1212 −−=⇔+−= ijjjjijj crnncr

24/08/2009 Codage Canal-BE 130

� La densité de probabilité du vecteur r des néchantillons reçus est une gaussienne à ndimensions.

� Hypothèse : le mot Ci est émis. � La densité de probabilité de r est

conditionnée par le symbole émis.

r=[r0 … rn]

Expression de la densité de probabilité p(r|Ci)

( ) ( ) ( ) ( )[ ]

−−−== ∑∏

=

=

n

j

ijjnn

jijji N

crNcrpp

1 0

2

201

12expπCr

24/08/2009 Codage Canal-BE 131

� La densité de probabilité du vecteur des échantillons reçus est conditionnée par le mot de code émis Ci.

Indépendance des échantillons de bruit

Rôle du décodeur

� Entrée : vecteur r des n échantillons bruités.� 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.

24/08/2009 Codage Canal-BE 132

Page 34: Cours_codage

34

Critère de décision

[ ]rCCC

iPi

argmaxˆ =

24/08/2009 Codage Canal-BE 133

� 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.

� Le mot de code estimé est donc celui qui maximise la probabilité P[Ci|r].

Estimateur MAP (Maximum A Posteriori)

[ ]rCCC

iPi

argmaxˆ =

24/08/2009 Codage Canal-BE 134

� L’estimateur mis en œuvre est de type maximum a posteriori car il choisit la probabilité maximale après avoir reçu les observations.

� Procédure : calculer la distribution P[Ci|r] et sélectionner le mot de code qui donne la plus grande valeur de P[Ci|r].

Estimateur du maximum de vraisemblance

( )ipi

CrCC

argmaxˆ =

24/08/2009 Codage Canal-BE 135

� Estimateur du maximum de vraisemblance : chercher le mot Ci transmis qui permet de maximiser la densité de probabilité des échantillons reçus.

� Estimateur MLSE : maximum likelihood sequence estimator.

Équivalence des estimateurs ML et MAP

� Utilisation de la règle de Bayes.� Hypothèses :

� les mots sont équiprobables à l’émission : P[Ci]=cste,

� les observations ne dépendent pas d’un iparticulier.

� Estimateur ML et MAP équivalents.� Raisonnement à partir de l’estimateur

ML car estimateur asymptotiquement sans biais et efficace.

24/08/2009 Codage Canal-BE 136

[ ]rCCC

iPi

argmaxˆ =

( )ipi

CrCC

argmaxˆ =

[ ] ( ) [ ]( )r

CCrrC

p

PpP ii

i =

Page 35: Cours_codage

35

Densité de probabilité p(r|Ci)

( ) ( ) ( ) ( )[ ]

−−

−== ∑∏=

=

n

j

ijjnn

jijji N

crNcrpp

1 0

2

201

12expπCr

24/08/2009 Codage Canal-BE 137

� Densité de probabilité de r | Ci : gaussienne à n dimensions.

� Échantillons indépendants donc densité de probabilité du vecteur = produit des densités de probabilité sur les échantillons.

Estimateur MLSE

� Estimateur MLSE : minimise la distance euclidienne entre les n échantillons reçus et les n éléments des 2k mots de codes.

� Critère de distance minimale.

24/08/2009 Codage Canal-BE 138

( ) ( )[ ] ( )i

n

jijji Dcrp

iii

CrCrCCC

,argmin12argminargmax 2

1

2 =

−−= ∑=

Démonstration

24/08/2009 Codage Canal-BE 139

( ) ( ) ( )[ ]

( ) ( )[ ]

( )[ ]

( )[ ] ( )i

n

jijj

n

jijj

n

jijj

n

j

ijjn

i

Dcr

crN

crN

Nπn

N

crNπp

ii

i

i

ii

Cr

Cr

CC

C

C

CC

,argmin12argmin

121

argmax

121

2argmax

12expargmaxargmax

2

1

2

1

2

0

1

2

00

1 0

2

20

=

−−=

−−−=

−−−−=

−−−=

=

=

=

=

Circuit de décision

( ) ( )[ ] ( )i

n

jijji Dcrp

iii

CrCrCCC

,argmin12argminargmax 2

1

2 =

−−= ∑=

24/08/2009 Codage Canal-BE 140

� Comparaison d’une séquence de n valeurs rjaux 2k mots de codes possibles par les distances D²(r,Ci) i=1,..,2k.

� Sélection du mot de code qui donne la distance la plus petite.

Page 36: Cours_codage

36

Circuit de décision – amélioration

( )ii

CMpii CC

Cr argmaxargmax =

24/08/2009 Codage Canal-BE 141

� Principe : chercher le mot le code le plus corrélé avec le mot reçu.

� Comparaison de la séquence de n valeurs rj aux 2k mots de codes possibles par les métriques CMi i=1,..,2k.

� Sélection du mot de code qui donne la métrique la plus grande.

( )∑=

−=n

jjiji rcCM

1

12

Démonstration

( )[ ] ( ) ( )

( )

( )

−=

−−=

−+−−=

−−

∑∑

=

=

==

n

jijj

n

jijj

n

jijijjj

n

jijj

cr

cr

ccrrcr

i

i

ii

1

1

1

22

1

2

122argmax

122argmin

12122argmin12argmin

C

C

CC

24/08/2009 Codage Canal-BE 142

Terme indépendant des Ci

Terme égal à 1 quelle que soit la valeur de cij

Limitation

� Méthode simple mais très coûteuse en temps de calcul dès que k>10 (210 comparaisons à chaque mot de n bits reçu).

� Réduction possible du nombre d’opérations par algorithme de Viterbi (voir partie sur les codes convolutionnels).

24/08/2009 Codage Canal-BE 143

Probabilité d’erreur sur un mot de code Pmc

� En théorie : utilisation de la répartition des poids dans les mots de codes.

� En pratique : utilisation d’une borne supérieure indépendante de la répartition des poids.

24/08/2009 Codage Canal-BE 144

Page 37: Cours_codage

37

Exemple : BPSK (codage +1/-1)

+−< 2lnexp min

0

kdRNE

P cb

mc

24/08/2009 Codage Canal-BE 145

� Borne supérieure pour une chaîne codée

� Borne supérieure pour une chaîne non codée

−<

0

exp21

NE

P bmc

Précision sur la valeur de Eb

� Soit E, l’énergie requise pour transmettre un mot de code.

� Soit Ec, l’énergie pour transmettre un bit du mot de code.

� Soit Eb, l’énergie pour transmettre un bit d’information.

c

ccb

c

RE

Ekn

kE

E

nEE

===

=

24/08/2009 Codage Canal-BE 146

Comparaison BPSK codée et non codée

� À 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.

� À faibles SNR par bit, c’est l’inverse.

24/08/2009 Codage Canal-BE 147

Pmc

Eb/N0(en dB)

Chaîne codée

Chaîne non codée

Différence entre erreur sur un bit et erreur sur un mot

� Si un mot de code de 2 bits est faux, 3 cas sont possibles.

24/08/2009 Codage Canal-BE 148

x x x xx : emplacement des bits faux

[ ] mcmc

b PP

P32

211 21

3

=++=

Probabilité d’erreur sur 1 bit

Probabilité de recevoir un des mots de code faux possibles

Nombre moyen de bits faux par mot de code

Page 38: Cours_codage

38

Généralisation

24/08/2009 Codage Canal-BE 149

mcn

nn

j

jnn

mcb PjC

nP

P12

2

1

12

1

1 −=

−=

=∑

Probabilité d’erreur sur 1 bit

Probabilité de recevoir un des mots de code faux possibles

Nombre moyen de bits faux par mot de code

1 si 2

>>≈ nP

P mcbPROPRIÉTÉ

Probabilité d’erreur sur les bits Pb

mcn

nn

j

jnn

mcb PjC

nP

P12

2

1

12

1

1 −=

−=

=∑

24/08/2009 Codage Canal-BE 150

� Facteur de pondération proche de ½ quand naugmente.

Conclusion sur le décodage «soft decision»

� Décodage = estimation du mot de code émis = mot de code le plus proche du mot reçu (distance euclidienne).

� Amélioration par mesure de corrélation.

24/08/2009 Codage Canal-BE 151

Plan du cours1. Introduction

2. Codes en blocs linéaires1. Matrice génératrice et matrice de contrôle de parité2. Exemples de codes en blocs linéaires particuliers3. Codes cycliques4. Décodage optimal soft-decision 5. Décodage hard-decision

6. Opérations sur les codes3. Codes convolutionnels4. Combinaisons de codes

24/08/2009 Codage Canal-BE 152

Page 39: Cours_codage

39

Décodage hard-decision

� Seule modification du récepteur : une décision est prise sur chaque échantillon du vecteur r avant d’entrer dans le bloc de décodage.

24/08/2009 Codage Canal-BE 153

DÉCISIONÉchantillons bruités

Bitsestimés

DÉCODAGE

Canal BSC

=

021

NE

erfcp c

24/08/2009 Codage Canal-BE 154

� BSC = Binary Symetric Channel� Ec = énergie transmise par bit codé� N0/2 = densité spectrale de puissance du bruit

probabilité d’erreur par bit p

Bits codésestimés

Bits codés

0 0

1 1

pp

1-p

1-p

Décodage par distance minimale

� Entrée : mot de n bits.� Décodage : comparaison entre le mot de

code reçu et les 2k mots de code possibles et sélection du mot de code le plus proche du mot reçu au sens de la distance de Hamming.

24/08/2009 Codage Canal-BE 155

DÉCISIONÉchantillons bruités

Bitsestimés

DÉCODAGE

Propriété du décodeur

� Décodage optimal au sens de la probabilité d’erreur sur un mot de code (maximum de vraisemblance).

� Inconvénient : 2k comparaisons.� Amélioration : méthode du syndrome.

24/08/2009 Codage Canal-BE 156

Page 40: Cours_codage

40

Décodage par syndrome et Look-up Table (Table de vérification)

� Cm, le vecteur des bits codés émis� Y, le vecteur des bits codés estimés� H, la matrice de contrôle de parité� S, le syndrome� e, un vecteur d’erreur dont les

composantes sont � 1 s’il y a une erreur� 0 s’il n’y en a pas.

eCY += m

( )T

Tm

T

eH

HeCYHS

=

+==

24/08/2009 Codage Canal-BE 157

Intérêt du décodage par syndrome

� Le vecteur S (de taille n-k) a des composantes� nulles lorsque l’équation de

contrôle de parité est satisfaite

� non nulles sinon

� Donc, 2n-k-1 erreurs détectées.

24/08/2009 Codage Canal-BE 158

eCY += m

( )T

Tm

T

eH

HeCYHS

=

+==

Décodage par syndrome

� mots de n bits = mot de code + mot d’erreur.

� Décodage par syndrome :� calcul du syndrome� repérage de l’erreur

correspondante� correction du mot reçu

im eYC ⊕=ˆ

24/08/2009 Codage Canal-BE 159

im eCY +=

( )T

i

Tim

T

He

HeCYHS

=

+==

Exemple : code C(7,4)

1010000001

1110000010

0110000100

1100001000

0010010000

0100100000

1001000000

syndromeerreurd' type

=

1000101

0100111

0010110

0001011

G

=

1110100

0111010

1101001

H

24/08/2009 Codage Canal-BE 160

Page 41: Cours_codage

41

Exemple : code C(7,4)

� Réception : [1001111] / Syndrome : [011]� Erreur correspondante : [0000100]� Correction = Réception + Erreur correspondante =

[1001011].� 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

� mot reçu = mot de code + mot de code = mot de code. � Syndrome (mot de code)=0 donc pas d’erreur détectée.

24/08/2009 Codage Canal-BE 161

Décodage des codes cycliques

� Calcul du syndrome par division polynomiale.� Soient les polynômes C(p),Y(p) et e(p)

associés respectivement au mot de code C, au mot reçu Y et à l’erreur e.

24/08/2009 Codage Canal-BE 162

( ) ( ) ( )( ) ( ) ( )pepgpX

pepCpY

+=

+=

Décodage des codes cycliques

( ) ( ) ( ) ( )pRpgpQpY +=24/08/2009 Codage Canal-BE 163

� 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.

Division de Y(p) par g(p)

1. Les n bits du mot de code reçu Y sont passés dans le circuit (interrupteur en position 1).

2. Les n-k registres contiennent les bits du syndrome qui sont acheminés vers la sortie (interrupteur en position 2).

24/08/2009 Codage Canal-BE 164

1 g1 gn-k-1

s0 s1 sn-k-1

polynôme reçu Y(p)

sortie syndrome

12

Page 42: Cours_codage

42

Look-up table

� Après calcul du syndrome : recherche de l’erreur correspondante ec dans la table de vérification (look-up table) puis correction.

� Solution utilisée tant que n-k<20.� Sinon, utilisation de codes BCH dont la

complexité calculatoire du décodage est mois importante.

24/08/2009 Codage Canal-BE 165

ceYC ⊕=ˆ

Dernière étape : décodage du mot de code

� 1ère idée : par une table donnant la correspondance entre les 2k mots de codes et 2k mots de données (pas d'opération matricielle disponible).

� Inconvénient : il faut stocker la table.� 2ème idée : tirer profit de la propriété des

codes systématiques (décodage = troncature du mot de code).

24/08/2009 Codage Canal-BE 166

Remarque : protocoles de niveau supérieur ou égal à 2

� Pour le CSMA/CD ou IP, le calcul du syndrome se fait en temps réel : la détection d’erreur sur une trame ou un paquet est immédiate.

� En revanche, le temps de correction est ici rédhibitoire (recherche de la correspondance entre une valeur de syndrome et une forme d’erreur particulière).

� Conséquence : pas de correction dans les couches supérieures ou égale à 2 (choix de la retransmission).

24/08/2009 Codage Canal-BE 167

Probabilité d’erreur en mode hard decision

� p est la probabilité d’erreur sur 1 bit.� dmin la distance minimale du code.

� En pratique, le hard decision est moins performant que le soft decision.

24/08/2009 Codage Canal-BE 168

( ) ( )[ ] 2min

1412d

kmc ppP −−≤

Page 43: Cours_codage

43

Importance de dmin dans le dimensionnement des codes

� Pour les codes binaires, pas de codes pour atteindre la borne supérieure.

� Pour les codes non binaires, existence de codes (comme les codes RS) permettant d’atteindre la borne supérieure.

24/08/2009 Codage Canal-BE 169

1min +−≤ knd

Codes non binaires

� Code en bloc non binaire : ensemble de mots de code dans lesquels les composantes appartiennent à un alphabet à q symboles.

� En pratique : q=2k (k bits donne un symbole).

� N : longueur du mot de code� K : longueur du mot de donnée� Dmin : distance minimale du code

24/08/2009 Codage Canal-BE 170

Codes RS

� Code RS (Reed Solomon) : code BCH primitif de longueur N=q-1 sur GF(q) où q est de la forme 2k.

� Existence de tables pour les polynômes générateurs.

( )

( )

−=

−=

=

+−=

−=

−=−=

KNEnt

DEntt

NK

R

KND

NK

qN

c

k

21

121

1

1,,3,2,1

121

min

min

L

24/08/2009 Codage Canal-BE 171

Avantages des codes RS

� Correction d’erreurs groupées ou paquets d’erreurs (burst en anglais).

� Exemple : code RS(15,11), 15=24-1� Pouvoir de correction t = 2 éléments

quaternaires� Soit de 2 à 8 bits.

� Codes utilisés pour le stockage des données sur support CD et dans les systèmes de communications subissant des erreurs par rafales.

24/08/2009 Codage Canal-BE 172

Page 44: Cours_codage

44

Exemple : DVB-S

� Utilisation d’un code raccourci RS(204,188,T=8) obtenu à partir d’un code original RS(255,239, T=8) appliqué à chaque groupe de 188 octets.

� Code aussi appliqué aux mots de synchronisation (inversés ou non-inversés).

24/08/2009 Codage Canal-BE 173

Paramètres du code RS

� Polynôme Générateur du Code g(x).� Polynôme Générateur du Corps p(x).

24/08/2009 Codage Canal-BE 174

( ) ( )( )( ) ( )

( ) 1

022348

15210

++++=

=++++=

xxxxxp

xxxxxg

HEXλλλλλ L

Implantation du code raccourci

� Implantation du code raccourci : insertion de 51 octets nuls avant codage. Retrait des 51 octets après codage.

24/08/2009 Codage Canal-BE 175

Ajout 51 octets à 0(début de paquet)

RS (255, 239)Suppression

51 octets(début de paquet)

Paquets transport MPEG-2

(188 octets)

RS(204,188, t=8)

Paquets transport MPEG-2protégés

(204 octets)

Conclusion sur le décodage «hard decision»

� Décodage = estimation du mot de code émis = mot de code le plus proche (distance de Hamming).

� Amélioration : décodage par syndrome.

24/08/2009 Codage Canal-BE 176

Page 45: Cours_codage

45

Plan du cours1. Introduction

2. Codes en blocs linéaires1. Matrice génératrice et matrice de contrôle de parité2. Exemples de codes en blocs linéaires particuliers3. Codes cycliques4. Décodage optimal soft-decision 5. Décodage hard-decision 6. Opérations sur les codes

3. Codes convolutionnels4. Combinaisons de codes

24/08/2009 Codage Canal-BE 177

Opérations sur les codes

24/08/2009 Codage Canal-BE 178

chaîneCod 1 Decod. 1

chaîneCod 1 Decod. 1Cod 2 Decod. 2

chaîneCod 1 Decod. 1Cod 2 Decod. 2ΠΠΠΠ ΠΠΠΠ−−−−1111

Un codeur

Deux codeursidentiques

Deux codeurs différents

erreurs

Concaténation de codes en blocs

� En pratique : � Code extérieur non binaire C(N,K),� Code intérieur binaire C(n,k).

� Blocs d’entrée de taille kK bits, séparés en K blocs (symboles) de k bits chacun et codés en N blocs de k bits chacun par C(N,K).

� Chacun des symboles de k bits est codé en mots de code de n bits C(n,k).

� Code résultant C(Nn,Kk).

24/08/2009 Codage Canal-BE 179

codeur C(N,K)

codeur C(n,k)

Modulateur

Canal

Démodulateur

Décodeur C(N,K)

Décodeur C(n,k)

données d’entrée

données de sortie

Caractéristiques du nouveau code

� Distance minimale : Dmin dmin. � Taux de codage : Kk/Nn.� Décodage hard decision pour les

deux codeurs possibles.� Décodage soft decision possible pour

le code intérieur (si 2k pas trop élevé).

24/08/2009 Codage Canal-BE 180

codeur C(N,K)

codeur C(n,k)

Modulateur

Canal

Démodulateur

Décodeur C(N,K)

Décodeur C(n,k)

données d’entrée

données de sortie

Page 46: Cours_codage

46

Entrelacement de codes

� Principe : mélanger les données après le codage et les re-mélanger avant le décodage.

� Propriété : si les erreurs arrivent en rafales, elles sont dispersées avant le décodage et donc plus facilement corrigées.

24/08/2009 Codage Canal-BE 181

codeur C(n,k)

entrelaceur

Modulateur

Canal

Démodulateur

Décodeur C(n,k)

Désentrelaceur

données d’entrée

données de sortie

Exemple� Entrelaceur matriciel :

� écriture ligne par ligne� lecture colonne par colonne

� Désentrelaceur :� écriture colonne par colonne� lecture ligne par ligne

� Exemple : GSM 2ème génération

24/08/2009 Codage Canal-BE 182

8 colonnes

57 lignes

écriture

lecture

Exemple

24/08/2009 Codage Canal-BE 183

LA PHRASE EST NON CODEE

ExD

OCxO

NxSE

ExAR

HPxAL

LREODAASNE ST EPE C H NO LA PHRASE EST NON CODEE

canal

LA PHRASxxxxx NON CODEE

LAxPHRAxE ESx NOx CODxE

EED

OCNO

NTSE

ESAR

HPAL

canal

LREODAASxxxxx EPE C H NO

Concaténation série et parallèle de codes en blocs

� Combinaison d’un entrelaceur et de la concaténation de codes.

� Codes systématiques.

24/08/2009 Codage Canal-BE 184

Page 47: Cours_codage

47

Combinaison série

� taux de codage : k/n

24/08/2009 Codage Canal-BE 185

mblocs de

k bitsC(p,k)

Entrelaceur bloc de longueur

N=mpC(n,p)

mblocs de

p bits

mblocs de

p bits mblocs de

n bits

Combinaison parallèle

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

24/08/2009 Codage Canal-BE 186

mblocs de

k bits C(n1,k)

Entrelaceur bloc de longueur

N=mkC(n2,k)

m blocs de n1-k bits

m blocs de k bits

m blocs de n2-k bits

Décodage des concaténations série ou parallèle

� Décodage itératif (soft-in, soft-out) de type MAP :� Benedetto (1998) pour les codes série,� Berrou (1993) pour les codes parallèle.

� Performances proches des limites théoriques de Shannon (10-4/10-5 pour des SNRs très bas).

� Famille des turbo-codes.

24/08/2009 Codage Canal-BE 187

Plan du cours

1. Introduction 2. Codes en blocs linéaires

3. Codes convolutionnels1. Décodage optimal – algorithme de Viterbi2. Codes poinçonnés3. Concaténation série et parallèle de codes

4. Combinaisons de codes

24/08/2009 Codage Canal-BE 188

Page 48: Cours_codage

48

Codes convolutionnels

� Autre dénomination : codes convolutifs.� Principe du codage :

� chaque bloc de n bits en sortie du codeur dépend des K blocs de k bits précédents.

� chaque bloc de k bits en entrée donne un bloc de n bits en sortie.

24/08/2009 Codage Canal-BE 189

k bits d’entrée

K blocs de k bits

combinaison logique n bits de sortie

Constitution d'un codeur

� un registre à Kk étages mémorise les K blocs de k bits d’information,

� une logique combinatoire calcule les blocs de n bits,

� un convertisseur parallèle / série.

24/08/2009 Codage Canal-BE 190

k bits d’entrée

K blocs de k bits

combinaison logique n bits de sortie

Caractéristiques des codes

� Taux de codage : k/n� Longueur de contrainte : K� Si les k bits d’information se retrouvent dans

le bloc de n bits en sortie du codeur, le code est dit systématique.

24/08/2009 Codage Canal-BE 191

k bits d’entrée

K blocs de k bits

combinaison logique n bits de sortie

Illustration

� Codeur convolutif de rendement Rc=1/2 et de longueur de contrainte K = 3.

� Entrée constituée par des blocs de k = 1 bit.

� Sortie constituée par des blocs de n = 2 bits.

dk dk-1 dk-2Entrée Sorties

ck1

ck2

24/08/2009 Codage Canal-BE 192

Page 49: Cours_codage

49

Représentation des codes� n sorties.� sortie = addition modulo 2

d’une sélection des Kk bits d’entrée.

� A chacune des n sorties correspond un vecteur de Kkéléments (fonction génératrice) :� 1 si l’élément participe à la

somme,� 0 sinon.

dk dk-1 dk-2Entrée Sorties

ck1

ck2

24/08/2009 Codage Canal-BE 193

Exemple

� Fonctions génératrices :

[ ][ ][ ]111

101

100

3

2

1

=

=

=

g

g

g

24/08/2009 Codage Canal-BE 194

entrée

sortie

Exemple

� Codeur 1/3� K=3 // k=1 // n=3� Registres initialisés à 0.� Entrée 1 Sortie 111� Entrée 0 Sortie 001� Entrée 1 Sortie 100

24/08/2009 Codage Canal-BE 195

entrée

sortie

Exemple

� K=2, k=2, n=3

24/08/2009 Codage Canal-BE 196

entrée

sortie

[ ][ ][ ]1010

1101

1011

3

2

1

=

=

=

g

g

g

Page 50: Cours_codage

50

Remarque sur le caractère convolutif du codeur

� La sortie du codeur peut être interprétée comme le produit de convolution entre l’entrée du codeur et la réponse du codeur définie par ses fonctions génératrices.

24/08/2009 Codage Canal-BE 197

entrée

sortie

Autres formes de représentation

� Arbre� Diagramme d’état� Treillis : représentation utile pour

l'algorithme Viterbi, algorithme de décodage le plus utilisé pour les codes convolutifs.

24/08/2009 Codage Canal-BE 198

Treillis d’un code convolutif

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

en fonction des entrées.� Valeurs des entrées et des sorties

correspondantes.

� État du codeur : états des registres (hormis les cases mémoires réservées aux entrées).

24/08/2009 Codage Canal-BE 199

Exemple : codeur C(1/2, 3)

24/08/2009 Codage Canal-BE 200

00

01

10

11entrée 0 entrée 1

00

11

x x

entrée

sortie

11

00

01

1010

01

Page 51: Cours_codage

51

Régime transitoire et régime permanent

� Au bout de Ktransitions, le treillis atteint son régime permanent.

24/08/2009 Codage Canal-BE 201

00

01

10

11

00

11 11

01

10

1111

00

01

1010

01

00 00

Généralisation

� Code C(k/n,K).� 2k branches entrant

dans chaque nœud.� 2k branches sortant de

chaque nœud.� 2k(K-1) états possibles.

24/08/2009 Codage Canal-BE 202

00

01

10

11

Distance libre minimale

� Distance minimale (de Hamming) entre � le chemin tous-zéros� le chemin partant de 00

et revenant à 00 en un nombre de transitions minimum.

24/08/2009 Codage Canal-BE 203

00

01

10

11

000

111

001

110

011

100

101

010

000 000

dmin=6

Distance minimale et performances

� Plus grande est la dmin, meilleur est le code.� Existence de tables pour construire un code

sachant k,K et n avec la distance minimale la plus grande (cf. Proakis).

� Exemple : C(1/2,3), plus grande dmin possible = 5� fonctions génératrices (en octal) : 5 et 7

24/08/2009 Codage Canal-BE 204

Page 52: Cours_codage

52

Plan du cours

1. Introduction 2. Codes en blocs linéaires

3. Codes convolutionnels1. Décodage optimal – algorithme de Viterbi

2. Codes poinçonnés3. Concaténation série et parallèle de codes

4. Combinaisons de codes

24/08/2009 Codage Canal-BE 205

Décodeur optimal

� Estimateur séquentiel du maximum de vraisemblance MLSE : recherche, à travers le treillis, de la séquence la plus vraisemblable.

� Distance de Hamming ou euclidienne suivant qu’il s’agit de hard ou soft decision.

24/08/2009 Codage Canal-BE 206

Explication du principe sur un exemple simple

� Soit le codeur C(1/3,3).� Il s’agit d’aller de l’état 00 à

l’état 00 en trois transitions.� Hypothèse : le récepteur sait

que l’information envoyée permet d’aller de l’état 00 à l’état 00 en trois transitions.

24/08/2009 Codage Canal-BE 207

x x

entrée

sortie

Chemins possibles� Deux chemins vont de l’état 00 à l’état 00 en trois

transitions :� Chemin i=0 : Entrée : 000 , Sortie : 000 000 000� Chemin i=1 : Entrée : 100 , Sortie : 111 001 011

24/08/2009 Codage Canal-BE 208

00

01

10

11

000

111

001

110

011

100

101

010

000 000

Page 53: Cours_codage

53

Question : quelle séquence de bits a été émise ?

� Soit p est la probabilité d’erreur sur un bit.

� Soit la séquence reçue : 0,5 -0,5 0,33 -0,4 -0,3 -0,2 1,1 -0,2 -0,3

� Quel est le chemin le plus probable ?

24/08/2009 Codage Canal-BE 209

00

01

10

11

000

111

001

011

000 000

Données (1/3)

� Soient rjm les échantillons reçus� j représente l’indice de branche = 1,2,…,B� m représente le numéro du bit = 1,2,…,n� Échantillons réels utilisés par les décodeurs « soft

decision ».

24/08/2009 Codage Canal-BE 210

00

01

10

0,5 -0,5 0,33 -0,4 -0,3 -0,2 1,1 -0,2 -0,3

0,5 -0,5 0,33

-0,4 -0,3 -0,2

1,1 -0,2 -0,3

Exemple : B=3Rappel du codage utilisé à l’émission: 0�-11�+1

Données (2/3)

� Soient yjm les décisions binaires sur rjm

� Valeurs binaires utilisées par les décodeurs « hard decision ».

24/08/2009 Codage Canal-BE 211

00

01

10

101

101

000 100

100

000

00

01

10

0,5 -0,5 0,33 -0,4 -0,3 -0,2 1,1 -0,2 -0,3

0,5 -0,5 0,33

-0,4 -0,3 -0,2

1,1 -0,2 -0,3

Données (3/3)

� Soient les bits possibles cjm(i)

� i représente le chemin possible

24/08/2009 Codage Canal-BE 212

00

01

10

000

111 001

011

000 000

Page 54: Cours_codage

54

Méthode

� Calculer une métrique pour chaque chemin possible et choisir le chemin qui a la meilleure métrique.

� Les métriques de chemin s’obtiennent en additionnant les métriques sur chaque branche.

24/08/2009 Codage Canal-BE 213

Métriques d’un chemin

Optimisation Hard Decision

Soft Decision

Corrélation Maximiser NA x

Distance euclidienne Minimiser NA x

Distance de Hamming Minimiser x NA

24/08/2009 Codage Canal-BE 214

NA : Non Applicable

Métrique de branche

( ) ( )( )[ ]∑=

−−=n

m

ijmjm

ij cr

1

212µ

24/08/2009 Codage Canal-BE 215

� Mesure de corrélation :

� Distance euclidienne :

� Distance de Hamming :

( ) ( )( )∑=

−=n

m

ijmjm

ij cr

1

12µ

( ) ( )∑=

⊕=n

m

ijmjm

ij cy

1

µ

Exemple : C(1/3,3)

( )

( ) 1

21

1

01

=

=

µµ

24/08/2009 Codage Canal-BE 216

� Branche numéro 1� Cas du hard decision

00

01

10

000

111

00

01

10

101

101

( ) ( )∑=

⊕=3

1111

m

imm

i cyµ

Page 55: Cours_codage

55

Métrique de chemin ou PM (Path Metric)

( )

( ) 5311

31021

0

=++==++=

PM

PM

24/08/2009 Codage Canal-BE 217

� Métrique totale pour un chemin à B branches :

( ) ( )∑=

=B

j

ij

iPM1

µ

00

01

10

000

111 001

011

000 000

00

01

10

101

101

000 100

100

000

Exemple :

Critère de décision

� Une fois les métriques de chaque chemin calculées, il faut sélectionner le chemin qui a la meilleure métrique.

� Exemple : code C(1/3,3)� Si PM(0)=3 et PM(1)=5 et si la métrique est fondée

sur le calcul de distance de Hamming, alors le meilleur chemin est le chemin 0.

24/08/2009 Codage Canal-BE 218

Dernière étape : le décodage

� Remonter le treillis de l’état d’arrivée à l’état de départ et re-parcourir le treillis vers la droite pour décoder les bits émis.

� Exemple : 000

24/08/2009 Codage Canal-BE 219

00

01

10

000

111 001

011

000 000

00

01

10

101

101

000 100

100

000

0 0 0

Poursuite du décodage à la transition 4

� A priori, il y a 4 chemins possibles : � 000 000 000 et (000 ou 111)� 111 001 011 et (000 ou 111)

24/08/2009 Codage Canal-BE 220

00

01

10

000

111 001

011

000 000

11Transition 3

000

111

Transition 4

Page 56: Cours_codage

56

Calcul des métriques de chemins

� Le fait de rajouter une transition ne modifie en rien la conclusion établie à la transition précédente.

24/08/2009 Codage Canal-BE 221

00

01

10

000

111 001

011

000 000

11Transition 3

000

111

Transition 4

Conséquence

� À partir de la transition 3, le chemin (1) peut être supprimé. Le chemin (0) est dit chemin survivant.

24/08/2009 Codage Canal-BE 222

00

01

10

000

111 001

011

000 000

11Transition 3

000

111

Transition 4

Chemin survivant

� A partir de la transition 3, un seul chemin subsiste.� A la transition 4, il n’y a plus que 2 chemins possibles :

� 000 000 000 et (000 ou 111)

24/08/2009 Codage Canal-BE 223

00

01

10

000

111 001

011

000 000

11Transition 3

000

111

Généralisation

� À chaque transition, pour chaque état, ne conserver qu’un seul chemin.

24/08/2009 Codage Canal-BE 224

00

01

10

11

Décision de supprimer le chemin le moins probable

Page 57: Cours_codage

57

Conséquence

� Réduction importante du nombre de métriques à calculer.

24/08/2009 Codage Canal-BE 225

00

01

10

11

Sélection des chemins à supprimer

24/08/2009 Codage Canal-BE 226

00

01

10

11

État à partir duquel il est possible de supprimer les chemins les moins probables (K transitions)

Suppression des chemins

24/08/2009 Codage Canal-BE 227

00

01

10

11

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

Sélection des chemins à supprimer

24/08/2009 Codage Canal-BE 228

00

01

10

11

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

Page 58: Cours_codage

58

Suppression des chemins

24/08/2009 Codage Canal-BE 229

00

01

10

11

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

Décodage

� Après réception complète du bloc de données, sélection du chemin le plus probable et décodage.

24/08/2009 Codage Canal-BE 230

00

01

10

11

5

6

1

6

Décodage : 0101

Algorithme de Viterbi : récapitulatif� À chaque transition, calculer toutes les métriques de

branches.� Jusqu’à la transition K, calculer les métriques de tous

les chemins.� 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

Algorithme de Viterbi : récapitulatif

� Après la réception complète du bloc de données, sélectionner le meilleur chemin survivant et en déduire les bits émis.

24/08/2009 Codage Canal-BE 232

Page 59: Cours_codage

59

Inconvénient de l’algorithme de Viterbi

� Grand retard introduit au décodage sur de grands blocs de données.

24/08/2009 Codage Canal-BE 233

00

01

10

11

Observations empiriques

� En théorie : les chemins survivants peuvent provenir de plusieurs chemins.

� En pratique : les chemins survivants proviennent tous d’un même chemin (avec une probabilité voisine de 1).

24/08/2009 Codage Canal-BE 234

00

01

10

11

Conséquence

� Si tous les chemins survivants à la transition T 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 traité.

24/08/2009 Codage Canal-BE 235

Méthode de décodage : fenêtre coulissante

� À la transition T, sortie du bit correspondant à la transition T-D.

24/08/2009 Codage Canal-BE 236

00

01

10

11

TT-D

Page 60: Cours_codage

60

Fenêtre coulissante

� Valeur de D empirique : 5K.� Dégradations négligeables sur les performances.

24/08/2009 Codage Canal-BE 237

00

01

10

11

Conséquence

� Réduction du retard introduit par le décodage.

� Possibilité de mise en œuvre temps réel.

24/08/2009 Codage Canal-BE 238

Exemple K=1

� Décodage du premier bit à T-5K.

24/08/2009 Codage Canal-BE 239

00

01

10

11

0 T

Exemple

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

24/08/2009 Codage Canal-BE 240

00

01

10

11

0 T T+10

Page 61: Cours_codage

61

Exemple

� Décodage du 3ème bit à T+2-5K.

24/08/2009 Codage Canal-BE 241

00

01

10

11

0 T T+10 T+21

Limitation

� 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 calculées pour chaque état.

� Complexité calculatoire augmente exponentiellement avec k et K.

� Algorithme de Viterbi réservé pour petites valeurs de k et K (quelques unités).

24/08/2009 Codage Canal-BE 242

Autres algorithmes de décodage

� Séquentiels : � Fano (adapté pour les grandes longueurs de

contrainte),� Stack,� Feedback.

� Algorithmes à sorties soft : � BCJR (Bak, Cocke, Jelinek, Raviv),� SOVA (Soft Output Viterbi Algorithm).

24/08/2009 Codage Canal-BE 243

Algorithme BCJR

� Algorithme soft input (échantillons réels à l’entrée du décodeur) et soft output (sorties sous la forme de rapport de vraisemblance sur la valeur des bits).

� Algorithme de décodage de base des turbo-codes.

24/08/2009 Codage Canal-BE 244

Page 62: Cours_codage

62

Plan du cours

1. Introduction2. Codes en blocs linéaires

3. Codes convolutionnels1. Décodage optimal – algorithme de Viterbi2. Codes poinçonnés

3. Concaténation série et parallèle de codes4. Combinaisons de codes

24/08/2009 Codage Canal-BE 245

Codes à fort rendement

� Dans certaines applications, besoin de codes à fort taux de codage (rendement), du type (n-1)/n.� Exemple : ¾.

� Fort rendement = économie de bande passante (peu de bits de redondance ajoutés par bit d’information).

24/08/2009 Codage Canal-BE 246

Inconvénient des codes à fort rendement

� Inconvénient : implique grande complexité calculatoire du décodeur.

� Solution : construire des codes à fort rendement à partir de codes à faible rendement et en supprimant des bits à l’émission.

� Technique du poinçonnage.

24/08/2009 Codage Canal-BE 247

Technique du poinçonnage

� Génération de codes (n-1)/n par poinçonnage de codes 1/n.

� Avantage : � codes à fort rendement de type (n-1)/n, � décodage peu calculatoire des codes 1/n.

24/08/2009 Codage Canal-BE 248

Page 63: Cours_codage

63

Opération de poinçonnage� Suppression périodique de bits

à la sortie du codeur.� Code de départ : code 1/n. � Période de poinçonnage P.� P bits en entrée du codeur.� nP bits en sortie.� Utilisation d’une matrice de

poinçonnage P� 1 si le bit est transmis� 0 sinon

=

nPnn

P

P

ppp

ppp

ppp

L

MMM

L

21

22221

12111

P

24/08/2009 Codage Canal-BE 249

Taux de codage

� Suppression de N bits.� Taux de la forme : P/(nP-N)

� Avec N entier de 0 à (n-1)P-1.

� Taux de la forme : P/(P+M)� Avec M=1,2,…,(n-1)P.

24/08/2009 Codage Canal-BE 250

Exemple

� Taux de codage visé : ¾� Taux de codage de départ

: 1/3� n=3, P=3, nP=9, N=5� Taux final :

� P/(nP-N) = 3/(9-5)=3/4

24/08/2009 Codage Canal-BE 251

=

000

001

111

P

Fonctionnement

24/08/2009 Codage Canal-BE 252

x x

entrée…1101

sortie…111011

=

000

001

111

P

…1101

…1001

…0011

bits poinçonnés

Page 64: Cours_codage

64

Décodage des codes poinçonnés

� Soit décoder le flux poinçonné par Viterbi en adaptant le treillis au poinçonnage (motif du treillis non uniforme).

24/08/2009 Codage Canal-BE 253

00

01

10

11

00

11

0

1

01

1

0

0

1

0

1

01

00

11

Décodage des codes poinçonnés

� Soit rajouter des échantillons à 0 aux endroits où les bits ont été poinçonnés et utiliser Viterbi avec le treillis du code 1/n.

� Rappel : codage des bits par +1/-1 avant transmission dans le canal.

24/08/2009 Codage Canal-BE 254

Inconvénient des codes poinçonnés

� 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.

24/08/2009 Codage Canal-BE 255

Distance minimale

� Possibilité de chercher la matrice de poinçonnage qui donne la dmin la plus grande.

� 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 256

Page 65: Cours_codage

65

Exemple : DVB-S

� Code de base convolutif de rendement ½ et de longueur de contrainte K=7.

� Peut être poinçonné pour donner des codes de rendement 2/3, ¾, 5/6 et 7/8.

24/08/2009 Codage Canal-BE 257

Code interne (convolutif)

24/08/2009 Codage Canal-BE 258

Z-1 Z-1 Z-1 Z-1 Z-1 Z-1

+

+

X (171oct)

Y (133oct)

bitsPoinçonnage

+Sérialisation

Code « mère » (7,1/2)

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

Plan du cours

1. Introduction 2. Codes en blocs linéaires

3. Codes convolutionnels1. Décodage optimal – algorithme de Viterbi2. Codes poinçonnés3. Concaténation série et parallèle de codes

4. Combinaisons de codes

24/08/2009 Codage Canal-BE 259

Concaténation série et parallèle de codes convolutifs

� Concaténation parallèle de codes convolutifs : turbo-codes (Berrou-Glavieux 1993)

� Evolution majeure des communications numériques des années 1990.

� Codes permettant d’atteindre (presque) les limites théoriques fixées par Shannon en termes de débit maximal de transmission dans un canal.

24/08/2009 Codage Canal-BE 260

Page 66: Cours_codage

66

Combinaison de codes convolutifs

24/08/2009 Codage Canal-BE 261

chaîneCod 1 Decod. 1

chaîneCod 1 Decod. 1Cod 2 Decod. 2

chaîneCod 1 Decod. 1Cod 2 Decod. 2ΠΠΠΠ ΠΠΠΠ−−−−1111

Un codeur

Deux codeursidentiques

Deux codeurs différents

erreurs

Turbo-Codes

� Utiliser les résultats du deuxième décodeur dans le premier codeur.

� 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.

24/08/2009 Codage Canal-BE 262

Decod. 1 Decod. 2ΠΠΠΠ−−−−1111

ΠΠΠΠ

Décision

Performances

� moins de 10 itérations pour atteindre des BERs de 10-5 pour de faibles SNR.

� Exemple : � codes ½� N=216

� 18 itérations� 10-5 pour SNR=0,6 dB

24/08/2009 Codage Canal-BE 263

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.

24/08/2009 Codage Canal-BE 264

Page 67: Cours_codage

67

Plan du cours

1. Introduction 2. Codes en blocs linéaires3. Codes convolutionnels4. Combinaisons de codes

24/08/2009 Codage Canal-BE 265

Combinaisons de codes

� Concaténation de codes� Codage source canal conjoint� HARQ (Hybrid Automatic Repeat Request)

24/08/2009 Codage Canal-BE 266

Concaténation de codes

24/08/2009 Codage Canal-BE 267

chaîneCod 1 Decod. 1

chaîneCod 1 Decod. 1Cod 2 Decod. 2

chaîneCod 1 Decod. 1Cod 2 Decod. 2ΠΠΠΠ ΠΠΠΠ−−−−1111

Un codeur

Deux codeursidentiques

Deux codeurs différents

erreurs

Exemple : DVB-S

� Code RS et code convolutif séparés par un entrelaceur de type Forney.

24/08/2009 Codage Canal-BE 268

Page 68: Cours_codage

68

Codage source canal conjoint� Exemple : protection hiérarchique dans le GSM.� Sortie du codeur de parole :

� 260 bits toutes les 20 ms (soit débit de 13 kbit/s).� Classement des 260 bits suivant leur criticité dans le

rendu du signal de parole.� Principe : mieux protéger les bits les plus sensibles. � Résultat : 3 classes, de la plus sensible à la moins

sensible : 50, 132 et 78 bits.

24/08/2009 Codage Canal-BE 269

Protection hiérarchique

24/08/2009 Codage Canal-BE 270

� La 1ère classe est codée par un CRC de 3 bits : 50+3=53. � La 2ème classe (132 bits) est concaténée aux 53 bits (+ 4

bits), soit 189 bits. � Le tout est codé par un code convolutif de rendement ½ :

378 bits à la sortie. � La 3ème classe est concaténée (78 bits) sans protection.� Total : 456 bits toutes les 20 ms (soit débit de 22,8 kbit/s).

ARQ

24/08/2009 Codage Canal-BE 271

DATA CRC CRC CHECK OK

OK

Vers les couches supérieures

Demande de retransmission

DATA CRC

HARQ Type I

24/08/2009 Codage Canal-BE 272

DATA CRC CRC CHECK OK

OK

Vers les couches supérieures

Demande de retransmission

FEC DECOD FEC

DATA CRC FEC •Amélioration BER/FER•Augmentation de l’efficacité spectrale

Page 69: Cours_codage

69

Amélioration : décodeurs « soft » et Chase Combining

24/08/2009 Codage Canal-BE 273

DATA CRC CRC CHECK OK

OK

Vers les couches supérieures

Demande de retransmission

FEC DECOD FEC

STOCKAGE

DATA CRC FEC CRC CHECK OK

OK

DECOD FEC

Émission HARQ Type II

24/08/2009 Codage Canal-BE 274

DATA CRC COD FEC POINÇONNAGE

PREMIÈRE ÉMISSION DATA CRC FEC1

FEC1 FEC2 FEC3 …

BITS DE PARITÉ

Réception HARQ Type II

24/08/2009 Codage Canal-BE 275

DATA CRC CRC CHECK OK

OK

Vers les couches supérieures

Demande de retransmission

FEC1 DECOD FEC

STOCKAGE

DATA CRC FEC2

OU FEC2

CRC CHECK OK

OK

DECOD FEC

REDONDANCE INCRÉMENTALE

Conclusion générale

� Codage canal : code correcteurs d'erreurs� Familles de codes étudiées : codes en blocs

linéaires, codes cycliques, codes convolutifs.� Applications :

� Transport de données � Stockage de données

24/08/2009 Codage Canal-BE 276

Page 70: Cours_codage

70

1. Introduction

2. Codes en blocs linéaires1. Matrice génératrice et matrice de contrôle de parité2. Exemples de codes en blocs linéaires particuliers3. Codes cycliques4. Décodage optimal soft-decision5. Décodage hard-decision 6. Opérations sur les codes

3. Codes convolutionnels4. Combinaisons de codes

24/08/2009 Codage Canal-BE 277

1. Codes en blocs linéaires

2. Codes convolutionnels1. Décodage optimal – algorithme de Viterbi2. Codes poinçonnés3. Concaténation série et parallèle de codes

3. Combinaisons de codes

24/08/2009 Codage Canal-BE 278