Professional Documents
Culture Documents
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)
0.8
0.6
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
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).
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
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)
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
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
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
3. Codes convolutionnels
1990 : décodage itératif et turbo-codes (Berrou-
Glavieux). 4. Combinaisons de codes
2000 : codes LDPC (Low Density Parity Check).
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}
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
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.
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
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
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
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
cmj
24/08/2009 Codage Canal-BE 53 24/08/2009 Codage Canal-BE 54
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
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
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
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
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
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
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
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
21
Construction d’un code Plan du cours
0 0 0 0
Introduction
Les lignes de Mn et
1.
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
C = [11] ⇒ C (p ) = p + 1
degré n si cn-1=1.
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
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
( )( )
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
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
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 )
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]
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
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
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
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
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.
30
Conclusion sur les codes
cycliques Plan du cours
Introduction
Xm CODEUR Cm 1.
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
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
32
Densité de probabilité des Densité de probabilité gaussienne
échantillons de bruit n=[n0 … nn] du vecteur r r=[r0 … rn]
= (π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
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
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 )
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
Ci j =1 Ci
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
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
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.
Pmc
PROPRIÉTÉ Pb ≈ si n >> 1
2
Conclusion sur le
décodage «soft decision» Plan du cours
Introduction
Décodage = estimation du mot de 1.
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
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
É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
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
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 )
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).
( )
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).
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
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.
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
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
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
L A x P H
R A x E
E S x N
O x C O
D x E
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
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 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
g 3 = [111]
somme,
0 sinon.
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]
g 2 = [1101]
Entrée 0 Sortie 001 sortie
Entrée 1 Sortie 100
g 3 = [1010 ]
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.
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
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
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.
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
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
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
∑ r (2c ( ) − 1)
n
µ (j i ) = jm
i
jm Cas du hard decision 01
Distance euclidienne : m =1
10
101
(i )
n
(i )
µ1(0 ) = 2 01
µ j = ∑ y jm ⊕ c jm 111
m =1
µ1(1) = 1 10
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
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
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
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
01 011 10
111 001 111
10 11
Transition 3
11
56
Sélection des chemins à
Conséquence supprimer
Réduction 00
importante du 01
nombre de 00
métriques à 01
10
calculer. 10
11
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
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
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
01
10
11
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
00 00
01 01
10 10
11 11
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
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
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.
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
…0011
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
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)
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
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
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
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).
Demande de OK Demande de OK
retransmission retransmission
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
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
70