Communication Numérique - Codes correcteurs d - Xymaths

Transcription

Communication Numérique - Codes correcteurs d - Xymaths
Communication Numérique
Communication Numérique
Codes correcteurs d’erreurs
Yoann Morel
http://xymaths.free.fr/Signal/Communication-Numerique-cours-TP.php
Communication Numérique
1
Introduction
Définition
Position du problème
Exemples
2
Généralités sur les codes
Canal binaire symétrique sans mémoire
Paramètres d’un code
3
Codes en bloc linéaires
Définition
Forme systématique d’un code
Caractérisation d’un mot code
Décodage par le syndrôme
Code de Hamming
4
Autres codes
Codes cycliques
Communication Numérique
Introduction
1
Introduction
Définition
Position du problème
Exemples
2
Généralités sur les codes
Canal binaire symétrique sans mémoire
Paramètres d’un code
3
Codes en bloc linéaires
Définition
Forme systématique d’un code
Caractérisation d’un mot code
Décodage par le syndrôme
Code de Hamming
4
Autres codes
Codes cycliques
Communication Numérique
Introduction
Définition
1
Introduction
Définition
Position du problème
Exemples
2
Généralités sur les codes
Canal binaire symétrique sans mémoire
Paramètres d’un code
3
Codes en bloc linéaires
Définition
Forme systématique d’un code
Caractérisation d’un mot code
Décodage par le syndrôme
Code de Hamming
4
Autres codes
Codes cycliques
Communication Numérique
Introduction
Définition
Introduction
Définition
Un code correcteur d’erreurs est une technique de codage basée
sur la redondance de l’information, destinée à détecter, voire
corriger, les erreurs qui peuvent-être générées par un canal de
communication peu fiable.
Communication Numérique
Introduction
Définition
Introduction
Définition
Un code correcteur d’erreurs est une technique de codage basée
sur la redondance de l’information, destinée à détecter, voire
corriger, les erreurs qui peuvent-être générées par un canal de
communication peu fiable.
La détection d’une erreur dans un message peut sembler naturelle ; sa
localisation précise et sa correction sont quant à elles moins évidentes.
Communication Numérique
Introduction
Définition
Introduction
Définition
Un code correcteur d’erreurs est une technique de codage basée
sur la redondance de l’information, destinée à détecter, voire
corriger, les erreurs qui peuvent-être générées par un canal de
communication peu fiable.
La détection d’une erreur dans un message peut sembler naturelle ; sa
localisation précise et sa correction sont quant à elles moins évidentes.
L’origine de la théorie des codes peut-être située en 1947 par Richard
W. Hamming, utilisant un ordinateur développé aux laboratoires Bell,
“Two weekends in a row I came in and found that all my stuff had been
dumped and nothing was done. I was really aroused and annoyed because I
wanted those answers and two weeks had been lost. And so I said,
“Damn it, if the machine can detect an error, why can’t it locate the
position of the error and correct it ?””
Communication Numérique
Introduction
Position du problème
1
Introduction
Définition
Position du problème
Exemples
2
Généralités sur les codes
Canal binaire symétrique sans mémoire
Paramètres d’un code
3
Codes en bloc linéaires
Définition
Forme systématique d’un code
Caractérisation d’un mot code
Décodage par le syndrôme
Code de Hamming
4
Autres codes
Codes cycliques
Communication Numérique
Introduction
Position du problème
Introduction
Le rôle du correcteur d’erreurs peut-être limité à la simple
détection (et localisation . . .) d’erreurs.
La correction s’effectue alors par une nouvelle requête de
transmission du message, ou seulement des parties erronées.
• Cas du protocole TCP
• sommes de contrôle (checksum)
• Cela peut se révéler insuffisant, ou inadapté suivant le
contexte (GSM par exemple)
Communication Numérique
Introduction
Position du problème
Introduction
Deux situations principales peuvent se présenter :
• Présence de petites erreurs relativement fréquentes et isolées.
,→ Ex : Télécommunication, communication perturbée par
un bruit additif aléatoire
• Présence d’erreurs peu fréquentes, mais plus volumineuses
,→ Ex : CD : norme Philips permet de corriger jusqu’à 4096
bits erronés consécutifs (rayure de environ 1 mm
de large)
• Effacement de caractère(s) : un bit n’est pas altéré, mais
simplement supprimé.
Communication Numérique
Introduction
Exemples
1
Introduction
Définition
Position du problème
Exemples
2
Généralités sur les codes
Canal binaire symétrique sans mémoire
Paramètres d’un code
3
Codes en bloc linéaires
Définition
Forme systématique d’un code
Caractérisation d’un mot code
Décodage par le syndrôme
Code de Hamming
4
Autres codes
Codes cycliques
Communication Numérique
Introduction
Exemples
1er exemple : Code à répétitions
Il s’agit de la manière la plus “naı̈ve” d’aborder le problème :
si la transmission d’un mot peut-être entachée d’erreur(s), il n’y a
qu’à le transmettre directement plusieurs fois !
Supposons que l’on ait 4 messages à envoyer : 00, 01, 10 et 11 (ou
que l’on ait préalablement découpé le message initial en blocs de 2
bits).
Pour augmenter nos chances de recevoir un message correct, on
peut encoder nos 4 mots suivant :
mot original
00
01
10
11
mot codé
00 00 00
01 01 01
10 10 10
11 11 11
Communication Numérique
Introduction
Exemples
1er exemple : Code à répétitions
S’il survient une erreur dans la transmission, elle n’affectera pas les
trois couples formant le mot du code.
Le décodage peut donc se faire par vote majoritaire sur les 3
couples de bits.
Pour ce code à répétition, le taux d’information est seulement 33 %
(33 % des bits transmis correspondent à de l’information), tandis
que 66 % ont pour seul but la protection de cette information.
Communication Numérique
Introduction
Exemples
2ème exemple : Code à répétition amélioré
Un autre exemple de codage
est le suivant :
mot original
00
01
10
11
mot codé
00 000
01 101
10 110
11 011
Communication Numérique
Introduction
Exemples
2ème exemple : Code à répétition amélioré
Un autre exemple de codage
est le suivant :
Supposons que le mot reçu soit y = 01001.
mot original
00
01
10
11
mot codé
00 000
01 101
10 110
11 011
Communication Numérique
Introduction
Exemples
2ème exemple : Code à répétition amélioré
Un autre exemple de codage
est le suivant :
Supposons que le mot reçu soit y = 01001.
mot original
00
01
10
11
Ce mot ne correspond à aucun mot du code :
il comporte donc une, ou plusieurs, erreurs.
mot codé
00 000
01 101
10 110
11 011
Communication Numérique
Introduction
Exemples
2ème exemple : Code à répétition amélioré
Un autre exemple de codage
est le suivant :
Supposons que le mot reçu soit y = 01001.
mot original
00
01
10
11
mot codé
00 000
01 101
10 110
11 011
Ce mot ne correspond à aucun mot du code :
il comporte donc une, ou plusieurs, erreurs.
L’idée de la correction est de rechercher parmi tous les mots du
code celui qui est le “plus proche” :
Ecart mot reçu/mot du code
y − 00 000 = 01001
y − 01 101 = 00100
y − 10 110 = 11111
y − 11 011 = 10010
Poids de l’erreur
2
1
5
2
Communication Numérique
Introduction
Exemples
2ème exemple : Code à répétition amélioré
Un autre exemple de codage
est le suivant :
Supposons que le mot reçu soit y = 01001.
mot original
00
01
10
11
mot codé
00 000
01 101
10 110
11 011
Ce mot ne correspond à aucun mot du code :
il comporte donc une, ou plusieurs, erreurs.
L’idée de la correction est de rechercher parmi tous les mots du
nc
code celui qui est le “plus proche” :
do
it
Ecart mot reçu/mot du code Poids de l’erreur
et
ois n
h
,
c
o
1
y − 00 000 = 01001
2
ati 10
On stim 01 1
y − 01 101 = 00100
1
0
l’e =
=
y − 10 110 = 11111
5
x̂
ŷ nc
y − 11 011 = 10010
2
do
Communication Numérique
Introduction
Exemples
2ème exemple : Code à répétition amélioré
Remarques :
• Si on avait eu 2, ou plus, erreurs de même poids, on n’aurait
pas été en mesure de déterminer le mot le plus proche.
• En regardant d’un peu plus près, tous les mots du code
diffèrent d’au moins 3 bits, et ce code permet donc de corriger
de manière certaine une erreur unique.
• On ne peut pas corriger avec ce code des mots contenant 2
erreurs, et encore moins 3 erreurs (qui peuvent alors n’être
même pas détectées !)
• Le coût de ce code est de 3/5 = 60 % d’occupation à la
protection de l’information
(le taux d’information est de 2/5 = 40 %)
Communication Numérique
Introduction
Exemples
3ème exemple : Code de parité
Supposons que l’on ait des mots de 7 bits à envoyer (code ASCII
par exemple), et que l’on s’intéresse simplement à la détection
d’une erreur.
Un moyen et de coder chacun des mots sur 8 bits, en ajoutant un
8ème bit, appelé bit de parité, de telle sorte que dans tous les
mots le nombre de 1 soit pair.
1011001 est codé 10110010
Par exemple,
0110100 est codé 01101001
Communication Numérique
Introduction
Exemples
3ème exemple : Code de parité
Supposons que l’on ait des mots de 7 bits à envoyer (code ASCII
par exemple), et que l’on s’intéresse simplement à la détection
d’une erreur.
Un moyen et de coder chacun des mots sur 8 bits, en ajoutant un
8ème bit, appelé bit de parité, de telle sorte que dans tous les
mots le nombre de 1 soit pair.
1011001 est codé 10110010
Par exemple,
0110100 est codé 01101001
D’une manière générale, un mot du code est de la forme
x = [u1 u2 u3 u4 u5 u6 u7 p]
X
ui = u1 + u2 + u3 + u4 + u5 + u6 + u7 + p ≡ 0 [2]
X
ou encore
p≡
ui [2]
où
Communication Numérique
Introduction
Exemples
3ème exemple : Code de parité
Supposons que l’on ait des mots de 7 bits à envoyer (code ASCII
par exemple), et que l’on s’intéresse simplement à la détection
d’une erreur.
Un moyen et de coder chacun des mots sur 8 bits, en ajoutant un
8ème bit, appelé bit de parité, de telle sorte que dans tous les
mots le nombre de 1 soit pair.
1011001 est codé 10110010
Par exemple,
0110100 est codé 01101001
• Ce code permet de détecter une erreur, ou 3 erreurs ou 5
erreurs, ou 7 erreurs, mais pas 2, 4 ou 6 erreurs.
• De plus, ce code ne permet pas la localisation de l’erreur, et
donc pas sa correction.
• Par contre, ce code permet de rétablir un caractère effacé !
Communication Numérique
Introduction
Exemples
4ème exemple : Code ISBN
Le code ISBN (International Standard Book Number) est un code
permettant d’identifier un livre.
Il utilise l’alphabet {0; 1; 2; 3; 4; 5; 6; 7; 8; 9; X}
Seuls les 9 premiers caractères permettent d’identifier le livre, le
10ème servant à contrôler la validité du code (de même que la clé
d’un RIB, où les 2 derniers chiffres d’un numéro de sécurité sociale,
ou encore pour un numéro de carte bancaire . . .)
Par exemple, le premier caractère permet d’identifier la langue de
l’ouvrage (0 pour l’anglais, 2 pour le français . . .), tandis que les
deux numéros suivants identifient l’éditeur.
Communication Numérique
Introduction
Exemples
4ème exemple : Code ISBN
Le 10ème caractère se détermine suivant :
c10 ≡
9
X
i ci [11] ou encore,
i=1
10
X
i ci ≡ 0 [11]
i=1
Le code ISBN permet de :
• détecter s’il y a au moins une erreur dans le numéro
• retrouver un numéro effacer
• détecter une transposition de 2 caractères
Communication Numérique
Introduction
Exemples
4ème exemple : Code ISBN
Le 10ème caractère se détermine suivant :
c10 ≡
9
X
i ci [11] ou encore,
i=1
10
X
i ci ≡ 0 [11]
i=1
Le code ISBN permet de :
• détecter s’il y a au moins une erreur dans le numéro
• retrouver un numéro effacer
• détecter une transposition de 2 caractères
Ex : Le numéro ISBN suivant est-il valide ? 2 - 70 - 42 1030 - 6
Ex : Retrouver le chiffre manquant : 0 - 201 - 1 ? - 502 - 7
Communication Numérique
Introduction
Exemples
4ème exemple : Code ISBN
Le 10ème caractère se détermine suivant :
c10 ≡
9
X
i ci [11] ou encore,
i=1
10
X
i ci ≡ 0 [11]
i=1
Le code ISBN permet de :
• détecter s’il y a au moins une erreur dans le numéro
• retrouver un numéro effacer
• détecter une transposition de 2 caractères
Ex : Le numéro ISBN suivant est-il valide ? 2 - 70 - 42 1030 - 6
Ex : Retrouver le chiffre manquant : 0 - 201 - 1 3 - 502 - 7
Communication Numérique
Généralités sur les codes
1
Introduction
Définition
Position du problème
Exemples
2
Généralités sur les codes
Canal binaire symétrique sans mémoire
Paramètres d’un code
3
Codes en bloc linéaires
Définition
Forme systématique d’un code
Caractérisation d’un mot code
Décodage par le syndrôme
Code de Hamming
4
Autres codes
Codes cycliques
Communication Numérique
Généralités sur les codes
Canal binaire symétrique sans mémoire
1
Introduction
Définition
Position du problème
Exemples
2
Généralités sur les codes
Canal binaire symétrique sans mémoire
Paramètres d’un code
3
Codes en bloc linéaires
Définition
Forme systématique d’un code
Caractérisation d’un mot code
Décodage par le syndrôme
Code de Hamming
4
Autres codes
Codes cycliques
Communication Numérique
Généralités sur les codes
Canal binaire symétrique sans mémoire
Canal binaire symétrique sans mémoire
Bruit AGB
Codage
Xk
Filtre adapté
kT
Décision
?
- h(t)
-
L
- h(−t)
Yk
@
@ -
-
Xk et Yk prennent leurs valeurs dans l’alphabet {0, 1}
La probabilité d’erreurs est :
r
p = P (Yk = 1|Xk = 0) = P (Yk = 0|Xk = 1) = erfc
εb
N0
La probabilté d’erreur ne dépend pas de l’instant k d’utilisation du
canal : le canal est dit sans mémoire
Communication Numérique
Généralités sur les codes
Canal binaire symétrique sans mémoire
Canal binaire symétrique sans mémoire
On peut alors représenter la chaı̂ne de transmission entre Xk et Yk
par le schéma :
1−p
HH
*
Xk
H p Yk
HHH
j
-
1−p
Tout se passe comme si Xk était soumis à un bruit additif et que
l’observation Yk s’écrivait :
Yk = Xk ⊕ Bk
où ⊕ désigne l’addition modulo 2 (ou exclusif) et Bk est une suite
de variables aléatoires à valeurs dans {0, 1}, indépendantes et
identiquement distribuées avec,
P (Bk = 1) = p
Communication Numérique
Généralités sur les codes
Canal binaire symétrique sans mémoire
Probabilité d’erreur. Distance
Notons c = [c1 c2 . . . cn ] le mot transmis, et y = [y1 y2 . . . yn ] le mot
reçu, alors
Prob (y|c) =
Qn
i=1 Prob (yi |ci )
= (1 − p)card{i/yi =ci } pcard{i/yi 6=ci }
card{i/yi 6=ci }
p
n
= (1 − p)
1−p
Un décodeur par maximum de vraisemblance doit choisir de
renvoyer le mot ĉ qui maximise la fonction : c 7→ Prob (y|c).
Comme p/(1 − p) < 1, maximiser cette probabilité revient à
minimiser le nombre d’erreurs : card {i/yi 6= ci }
Communication Numérique
Généralités sur les codes
Canal binaire symétrique sans mémoire
Distance et poids de Hamming
Soit x = [x1 x2 . . . xn ] et y = [y1 y2 . . . yn ] sont deux messages de
longueur n.
Définition
La distance de Hamming entre x et y est le nombre d(x, y) de
composantes où x et y diffèrent.
Le poids de Hamming de x est le nombre w(x) de composantes
non nulles de x.
Ex : Si x = 10110 et y = 00101, alors d(x, y) = 4 et w(x) = 3 et
w(y) = 2.
Communication Numérique
Généralités sur les codes
Paramètres d’un code
1
Introduction
Définition
Position du problème
Exemples
2
Généralités sur les codes
Canal binaire symétrique sans mémoire
Paramètres d’un code
3
Codes en bloc linéaires
Définition
Forme systématique d’un code
Caractérisation d’un mot code
Décodage par le syndrôme
Code de Hamming
4
Autres codes
Codes cycliques
Communication Numérique
Généralités sur les codes
Paramètres d’un code
Codeur : Dispositif qui associe à une suite de k bits d’information
une suite de n bits.
Code : Un code est un ensemble de mots de n bits.
Distance et poids d’un code : Soit C un code :
• la distance minimum de C est le nombre
d∗ = Min {d(x, y)/x, y ∈ C, x 6= y}
• le poids minimum de C est le nombre :
w∗ = Min {w(x)/x ∈ C, x 6= 0}
Communication Numérique
Généralités sur les codes
Paramètres d’un code
Codeur : Dispositif qui associe à une suite de k bits d’information
une suite de n bits.
Code : Un code est un ensemble de mots de n bits.
Distance et poids d’un code : Soit C un code :
• la distance minimum de C est le nombre
d∗ = Min {d(x, y)/x, y ∈ C, x 6= y}
• le poids minimum de C est le nombre :
w∗ = Min {w(x)/x ∈ C, x 6= 0}
Ex :
mot original
00
01
10
11
mot codé
00 000
01 101
10 110
11 011
n=5; k=2
d∗ = 3
w∗ = 3
Communication Numérique
Généralités sur les codes
Paramètres d’un code
Le taux d’information d’un code est le nombre r = k/n.
r < 1 : ajout d’information
r = 1 : pas d’information supplémentaire
r > 1 : compression de donnée . . .
Un code est dit t-correcteur si il permet de corriger toute erreur
de au plus t caractères.
On a la caractérisation :
C est t-correcteur ⇐⇒ d∗ ≥ 2t + 1
ou encore, comme d∗ = w∗ ,
∗
∗
d −1
w −1
t=E
=E
2
2
Communication Numérique
Généralités sur les codes
Paramètres d’un code
Ex :
mot original
00
01
10
11
mot codé
00 000
01 101
10 110
11 011
n=5; k=2
d∗ = 3
w∗ = 3
On dit que le code C est de paramètres (5, 2, 3). Un tel code a :
• un taux d’information : r = 2/5 (ou un taux de
redondance de 3/5).
• un pouvoir de correction de 1 bit, on dit qu’il est
1-correcteur.
Communication Numérique
Généralités sur les codes
Paramètres d’un code
Autre exemple : Code de parité Ce code ajoute un bit, appelé bit
de parité, à une suite de k bits d’information de façon à ce que le
nombre total de 1 du mot code ainsi formé soit pair.
Ex : Pour k = 3, on a n = 4 et, par exemple :
000 → 0000
010 → 0101
111 → 1111
C’est un code (4, 3) dont le taux d’information est r =
On a d∗ = w∗ = 2, et donc t = 0 :
Ce code ne permet aucune correction.
3
= 75 %.
4
Communication Numérique
Codes en bloc linéaires
1
Introduction
Définition
Position du problème
Exemples
2
Généralités sur les codes
Canal binaire symétrique sans mémoire
Paramètres d’un code
3
Codes en bloc linéaires
Définition
Forme systématique d’un code
Caractérisation d’un mot code
Décodage par le syndrôme
Code de Hamming
4
Autres codes
Codes cycliques
Communication Numérique
Codes en bloc linéaires
Définition
1
Introduction
Définition
Position du problème
Exemples
2
Généralités sur les codes
Canal binaire symétrique sans mémoire
Paramètres d’un code
3
Codes en bloc linéaires
Définition
Forme systématique d’un code
Caractérisation d’un mot code
Décodage par le syndrôme
Code de Hamming
4
Autres codes
Codes cycliques
Communication Numérique
Codes en bloc linéaires
Définition
Codes linéaires
Code linéaire : si c1 et c2 désignent les mots codes respectifs des
deux suites d’information de k bits d1 et d2 , alors à la suite
d’information de k bits d1 ⊕ d2 est associé le mot code c1 ⊕ c2 .
(
d1 → c1
alors , d1 ⊕ d2 → c1 ⊕ c2
d2 → c2
où ⊕ est l’addition bit à bit modulo 2.
Communication Numérique
Codes en bloc linéaires
Définition
Codes en blocs
Code en bloc : Dans un code en bloc, les n éléments binaires des
mots code sont calculés uniquement avec les k bits d’information
du bloc courant.
[ d1 d2 . . . dk ] → [ c1 c2 . . . cn ]
Au besoin, le message initial est découpé en paquets, ou blocs, de
taille k.
Communication Numérique
Codes en bloc linéaires
Définition
Codes en blocs
Code en bloc : Dans un code en bloc, les n éléments binaires des
mots code sont calculés uniquement avec les k bits d’information
du bloc courant.
[ d1 d2 . . . dk ] → [ c1 c2 . . . cn ]
Au besoin, le message initial est découpé en paquets, ou blocs, de
taille k.
Pour un code en bloc linéaire, le mot code c s’obtient à partir du
mot d’information d par une expression matricielle de la forme :
c=dG
où, d est un vecteur ligne de taille 1 × k, c est un vecteur ligne de
taille 1 × n et G est une matrice de taille k × n appelée
matrice génératrice du code.
Communication Numérique
Codes en bloc linéaires
Définition
Exemple du code parité :
Le taux d’information est r =
taille (n − 1) × n est :
n−1
, et sa matrice génératrice, de
n


G =  In−1

1
.. 
. 
1
avec In−1 la matrice identité de taille n − 1.
Communication Numérique
Codes en bloc linéaires
Définition
Exemple du code parité :
Le taux d’information est r =
taille (n − 1) × n est :
n−1
, et sa matrice génératrice, de
n


G =  In−1

1
.. 
. 
1
avec In−1 la matrice identité de taille n − 1.


1 0 0 1
Ex : Pour n = 3, on a un code (4,3,2),
G =  0 1 0 1 .
de matrice génératrice
0 0 1 1
Par exemple, le mot u = [101] est codé par :
c = uG = [1012] ≡ [1010] [2]
Communication Numérique
Codes en bloc linéaires
Définition
Code à répétition : Ce code associe à k = 1 bit d’information les
mots code :
d = 0 → c = 0| 0 {z
. . . 0}
n
d = 1 → c = 1| 1 {z
. . . 1}
n
Communication Numérique
Codes en bloc linéaires
Définition
Code à répétition : Ce code associe à k = 1 bit d’information les
mots code :
d = 0 → c = 0| 0 {z
. . . 0}
n
d = 1 → c = 1| 1 {z
. . . 1}
n
Le code à répétition est donc un code (n, 1, n). Son taux
1
d’information est r = . Sa distance est n : il peut corriger jusqu’à
n
n−1
t=E
erreurs.
2
Communication Numérique
Codes en bloc linéaires
Définition
Code à répétition : Ce code associe à k = 1 bit d’information les
mots code :
d = 0 → c = 0| 0 {z
. . . 0}
n
d = 1 → c = 1| 1 {z
. . . 1}
n
Le code à répétition est donc un code (n, 1, n). Son taux
1
d’information est r = . Sa distance est n : il peut corriger jusqu’à
n
n−1
t=E
erreurs.
2
h
i
Sa matrice génératrice est : G =
1
1
.
.
.
1
| {z }
n
Communication Numérique
Codes en bloc linéaires
Forme systématique d’un code
1
Introduction
Définition
Position du problème
Exemples
2
Généralités sur les codes
Canal binaire symétrique sans mémoire
Paramètres d’un code
3
Codes en bloc linéaires
Définition
Forme systématique d’un code
Caractérisation d’un mot code
Décodage par le syndrôme
Code de Hamming
4
Autres codes
Codes cycliques
Communication Numérique
Codes en bloc linéaires
Forme systématique d’un code
Forme systématique d’un code
Un code est entièrement déterminé par sa matrice génératrice G.
Les vecteurs-ligne de G sont eux-même des mots-code, et sont
supposés linéairement indépendants.
Cela revient à imposer que :
si d1 6= d2 , alors c1 = d1 G 6= c2 = d2 G :
des mots d’information différents ne peuvent pas être
identiquement codés.
En d’autres termes, la matrice G est de rang k.
On montre de plus que les combinaisons linéaires sur les lignes de
G ainsi que les permutations sur les colonnes de G laissent
inchangées la probabilité d’erreur par mot code :
la distance (ou le poids) du code est inchangé.
Communication Numérique
Codes en bloc linéaires
Forme systématique d’un code
Forme systématique d’un code
D’après ces propriétés, la matrice génératrice G peut s’écrire sous
la forme (Pivot de Gauss) :
e = Ik |Pk×(n−k)
G
où Ik est la matrice identité de taille k, et la matrice P est appelée
la matrice de parité du code.
Lorsque G est sous sa forme systématique, les mots code
commencent par k bits d’information et sont complétés par
(n − k) bits de redondance :
si d = [d1 d2 . . . dk ] alors,
c = d G = [d1 d2 . . . dk p1 p2 . . . pn−k ]
Communication Numérique
Codes en bloc linéaires
Forme systématique d’un code
Par exemple, le code linéaire (7, 4)
génératrice :

1 1 0
 0 1 1
G=
 0 0 1
0 0 0
défini par sa matrice
0
0
1
0

0
0 

0 
1
peut se mettre sous la forme systématique :

1 0 0 0 1 1
 0 1 0 0 0 1
e=
G
 0 0 1 0 1 1
0 0 0 1 1 0

0
1 

1 
1
1
0
1
1
0
1
0
1
Communication Numérique
Codes en bloc linéaires
Forme systématique d’un code

1
 0
e=
G
 0
0
0
1
0
0
0
0
1
0
0
0
0
1
1
0
1
1
1
1
1
0

0
1 

1 
1
Ainsi, si un bloc c = [c1 c2 c3 c4 ], est codé en
d = cG = [c1 c2 c3 c4 p1 p2 p3 ]
où,

 p1 = c1 + c2 + c4
p2 = c1 + c2 + c3

p3 = c2 + c3 + c4
Communication Numérique
Codes en bloc linéaires
Forme systématique d’un code

1
 0
e=
G
 0
0
0
1
0
0
0
0
1
0
0
0
0
1
1
0
1
1
1
1
1
0

0
1 

1 
1
Ainsi, si un bloc c = [c1 c2 c3 c4 ], est codé en
d = cG = [c1 c2 c3 c4 p1 p2 p3 ]
où,

 p1 = c1 + c2 + c4
p2 = c1 + c2 + c3

p3 = c2 + c3 + c4
Tout se passe comme si, le codage consistait simplement en
l’ajout de (n − k) bits de redondance.
Communication Numérique
Codes en bloc linéaires
Forme systématique d’un code
Majoration de la distance d’un code :
On a vu que la distance d’un code d∗ est aussi égale au poids de ce
code w∗ .
Une fois la matrice génératrice du code mise sous forme systématique,


1 0 ... 0


..
 0 1
. Pk×(n−k) 
e


G = Ik | Pk×(n−k) =  .

..
 ..

. 0
0 ... 0 1
on peut dénombrer au plus (n − k + 1) zéros sur chaque ligne.
Ainsi d∗ = w∗ ≤ n − k + 1, et on a la propriété :
La distance d∗ d’un code (n, k, d∗ ) est majorée par n − k + 1.
n−k
Le pouvoir correcteur t d’un tel code vérifie donc t ≤ E
.
2
Communication Numérique
Codes en bloc linéaires
Caractérisation d’un mot code
1
Introduction
Définition
Position du problème
Exemples
2
Généralités sur les codes
Canal binaire symétrique sans mémoire
Paramètres d’un code
3
Codes en bloc linéaires
Définition
Forme systématique d’un code
Caractérisation d’un mot code
Décodage par le syndrôme
Code de Hamming
4
Autres codes
Codes cycliques
Communication Numérique
Codes en bloc linéaires
Caractérisation d’un mot code
Caractérisation d’un mot code
Matrice de contrôle de parité : On considère un code linéaire C
de matrice génératrice G.
On appelle matrice de contrôle de parité une matrice H de
dimension (n − k) × n et de rang (n − k) qui vérifie :
H GT = 0
Caractérisation d’un mot code : Si c est un bloc, de mot code
d = cG, alors, on doit avoir :
H dT = H (c G)T = H GT cT = H GT cT = 0
On a ainsi la propriété : le bloc d reçu est un mot code (donc jugé
non erroné) si et seulement si
H dT = 0
Communication Numérique
Codes en bloc linéaires
Caractérisation d’un mot code
Construction d’une matrice de contrôle de parité : Soit un
code linéaire dont la matrice G est mise sous forme systématique
G = Ik | Pk×(n−k)
Alors, la matrice de contrôle de parité a pour expression :
H=
(P T )(n−k)×k | In−k
Communication Numérique
Codes en bloc linéaires
Caractérisation d’un mot code
Construction d’une matrice de contrôle de parité : Soit un
code linéaire dont la matrice G est mise sous forme systématique
G = Ik | Pk×(n−k)
Alors, la matrice de contrôle de parité a pour expression :
H=
1
0
1
1
1
1
1
0
(P T )(n−k)×k | In−k
Ex :

1
 0
G=
 0
0
0
1
0
0
0
0
1
0
0
0
0
1



0
1 0 1 1 1 0 0

1 
et, H =  1 1 1 0 0 0 1 
1 
0 1 1 1 0 0 1
1
Communication Numérique
Codes en bloc linéaires
Décodage par le syndrôme
1
Introduction
Définition
Position du problème
Exemples
2
Généralités sur les codes
Canal binaire symétrique sans mémoire
Paramètres d’un code
3
Codes en bloc linéaires
Définition
Forme systématique d’un code
Caractérisation d’un mot code
Décodage par le syndrôme
Code de Hamming
4
Autres codes
Codes cycliques
Communication Numérique
Codes en bloc linéaires
Décodage par le syndrôme
Décodage par le syndrôme
Syndrôme : Soit un code linéaire de matrice de contrôle de parité
H, c un mot envoyé, et y = c + b le mot reçu.
Alors, on a : Hy T = H(c + b)T = HcT + Hbt = HbT
Ainsi, le vecteur s = H y T , ne dépend que du bruit et non pas du
mot envoyé.
On l’appelle le syndrôme associé à y.
Communication Numérique
Codes en bloc linéaires
Décodage par le syndrôme
Décodage par le syndrôme
Syndrôme : Soit un code linéaire de matrice de contrôle de parité
H, c un mot envoyé, et y = c + b le mot reçu.
Alors, on a : Hy T = H(c + b)T = HcT + Hbt = HbT
Ainsi, le vecteur s = H y T , ne dépend que du bruit et non pas du
mot envoyé.
On l’appelle le syndrôme associé à y.
Le syndrôme se calcule à partir du mot reçu et de la matrice de
contrôle de parité, et ne dépend que du bruit et non pas du mot
code émis.
A partir de la connaissance de H et de y, on peut donc espérer
déterminer le bruit b, car s = Hy T = HbT .
Une fois le bruit connu, c se déduit simplement par c = y ⊕ b.
Communication Numérique
Codes en bloc linéaires
Décodage par le syndrôme
Décodage par le syndrôme
Dans l’exemple précédent, le code est 1-correcteur : il ne peut
corriger qu’une seule erreur.
Supposons qu’une erreur e se soit effectivement glissée dans la
transmission d’un mot c, codé par le mot d = cG, et receptionné
selon y = d + e.
L’erreur écrit alors e = [0 . . . 0 1 0 . . . 0], le 1 étant à la j ème
position. Le syndrôme est
s = Hy T = H(y + e)T = HdT + HeT = HeT = Hj ,
où Hj est la j ème colonne de la matrice de contrôle H.
On connaı̂t ainsi la position de l’erreur, et il n’y a plus qu’a corriger
le mot reçu.
Communication Numérique
Codes en bloc linéaires
Code de Hamming
1
Introduction
Définition
Position du problème
Exemples
2
Généralités sur les codes
Canal binaire symétrique sans mémoire
Paramètres d’un code
3
Codes en bloc linéaires
Définition
Forme systématique d’un code
Caractérisation d’un mot code
Décodage par le syndrôme
Code de Hamming
4
Autres codes
Codes cycliques
Communication Numérique
Codes en bloc linéaires
Code de Hamming
Les codes de Hamming forment une classe particulière de codes
linéaires.
Pour un entier m, les paramètres d’un code de Hamming sont de
la forme (2m − 1, 2m − m − 1, 3).
Par exemple,
• (7, 4, 3) pour m = 3 (cf. TP)
• (128, 120, 3) pour m = 7 (minitel).
Ces codes sont parfaits : pour tout mot reçu, il existe un mot du
code à une distance stictement inférieure à d/2.
Autrement dit, tout mot reçu peut-être décodé.
Communication Numérique
Codes en bloc linéaires
Code de Hamming
Les codes de Hamming forment une classe particulière de codes
linéaires.
Pour un entier m, les paramètres d’un code de Hamming sont de
la forme (2m − 1, 2m − m − 1, 3).
Par exemple,
• (7, 4, 3) pour m = 3 (cf. TP)
• (128, 120, 3) pour m = 7 (minitel).
Ces codes sont parfaits : pour tout mot reçu, il existe un mot du
code à une distance stictement inférieure à d/2.
Autrement dit, tout mot reçu peut-être décodé.
Malheureusement si 2, ou plus, erreurs se sont glissées dans le
message reçu, ce code propose toujours une correction qui va être
elle aussi erronée...
Communication Numérique
Codes en bloc linéaires
Code de Hamming
Code de Hamming étendu :
Pour palier cet inconvénient, le code de Hamming est souvent étendu :
A chaque bloc de 4 bits est ajouté les trois bits de redondance du
code de Hamming. Ces 7 bits sont alors complétés par un bit de
parité. Ainsi, le décodage se fait suivant :
Communication Numérique
Codes en bloc linéaires
Code de Hamming
Code de Hamming étendu :
Pour palier cet inconvénient, le code de Hamming est souvent étendu :
A chaque bloc de 4 bits est ajouté les trois bits de redondance du
code de Hamming. Ces 7 bits sont alors complétés par un bit de
parité. Ainsi, le décodage se fait suivant :
• S’il n’y a aucune erreur le syndrome est nul.
Communication Numérique
Codes en bloc linéaires
Code de Hamming
Code de Hamming étendu :
Pour palier cet inconvénient, le code de Hamming est souvent étendu :
A chaque bloc de 4 bits est ajouté les trois bits de redondance du
code de Hamming. Ces 7 bits sont alors complétés par un bit de
parité. Ainsi, le décodage se fait suivant :
• S’il n’y a aucune erreur le syndrome est nul.
• Si une unique erreur s’est produite sur les sept premiers bits,
le syndrome donne la position de l’erreur. L’existence d’un
nombre d’erreur impair est confirmée par le huitième bit.
Communication Numérique
Codes en bloc linéaires
Code de Hamming
Code de Hamming étendu :
Pour palier cet inconvénient, le code de Hamming est souvent étendu :
A chaque bloc de 4 bits est ajouté les trois bits de redondance du
code de Hamming. Ces 7 bits sont alors complétés par un bit de
parité. Ainsi, le décodage se fait suivant :
• S’il n’y a aucune erreur le syndrome est nul.
• Si une unique erreur s’est produite sur les sept premiers bits,
le syndrome donne la position de l’erreur. L’existence d’un
nombre d’erreur impair est confirmée par le huitième bit.
• Si deux erreurs se sont produites, le syndrome n’est pas nul.
Le huitième bit indique une parité exact, signal d’un nombre
pair d’erreurs. Une retransmission est nécessaire.
Communication Numérique
Codes en bloc linéaires
Code de Hamming
Code de Hamming étendu :
Pour palier cet inconvénient, le code de Hamming est souvent étendu :
A chaque bloc de 4 bits est ajouté les trois bits de redondance du
code de Hamming. Ces 7 bits sont alors complétés par un bit de
parité. Ainsi, le décodage se fait suivant :
• S’il n’y a aucune erreur le syndrome est nul.
• Si une unique erreur s’est produite sur les sept premiers bits,
le syndrome donne la position de l’erreur. L’existence d’un
nombre d’erreur impair est confirmée par le huitième bit.
• Si deux erreurs se sont produites, le syndrome n’est pas nul.
Le huitième bit indique une parité exact, signal d’un nombre
pair d’erreurs. Une retransmission est nécessaire.
• Si une erreur s’est produite sur le huitième bit, l’absence
d’erreur indiqué par le syndrome permet de localiser l’erreur et
le message est validé.
Communication Numérique
Autres codes
1
Introduction
Définition
Position du problème
Exemples
2
Généralités sur les codes
Canal binaire symétrique sans mémoire
Paramètres d’un code
3
Codes en bloc linéaires
Définition
Forme systématique d’un code
Caractérisation d’un mot code
Décodage par le syndrôme
Code de Hamming
4
Autres codes
Codes cycliques
Communication Numérique
Autres codes
Codes cycliques
1
Introduction
Définition
Position du problème
Exemples
2
Généralités sur les codes
Canal binaire symétrique sans mémoire
Paramètres d’un code
3
Codes en bloc linéaires
Définition
Forme systématique d’un code
Caractérisation d’un mot code
Décodage par le syndrôme
Code de Hamming
4
Autres codes
Codes cycliques
Communication Numérique
Autres codes
Codes cycliques
Code cyclique
Les codes cycliques forment une sous-classe des codes linéaires.
Un code C est dit cyclique si
a = [a1 a2 . . . an ] ∈ C ⇐⇒ a0 = [an a1 . . . an−1 ] ∈ C
Les codes cycliques sont des codes dont l’algorithme d’encodage
est facile à implanter grâce à des registres à décalages.
L’algorithme de décodage est quant-à lui plus difficile à mettre en
œuvre.
L’encodage et le décodage de codes cycliques reposent sur la
notion de polynômes sur un corps fini, dont la théorie
mathématique dépasse largement l’ambition de ce cours.
Communication Numérique
Autres codes
Codes cycliques
Code cyclique
Les codes cycliques les plus utilisés à l’heure actuelle sont les codes
de Reed-Solomon.
Ces codes sont optimums, dans le sens où ils nécessitent un
nombre minimum de redondance (n − k) pour obtenir une distance
minimale donnée, et donc un nombre maximum d’erreurs qui
n−k
peuvent être corrigées : t =
2
Pour les modems ADSL, le code utilisé est RS(240,224,8)
Communication Numérique
Autres codes
Codes cycliques
Ces codes peuvent-êtres utilisés comme base de codes entrelacés :
les CIRC (Cross-Interleaved Reed Solomon Code), utilisés
notamment sur les supports d’enregistrement du type CD ou DVD)
L’entrelacement consiste à mélanger les blocs afin de “diluer”
l’information. Cette procédure permet en particulier de minimiser
l’effet d’une bouffée d’erreurs (rayure sur un CD . . .).
Communication Numérique
Autres codes
Codes cycliques
Codage avec un code CIRC :
L’idée du codage CIRC est de coder avec un premier code C1 , puis
d’entrelacer les blocs, et enfin, de coder dans la foulée avec un
deuxième code C2 .
Décodage d’un code CIRC :
Pour décoder, on peut alors s’appuyer sur le double codage : on
décode avec C2 , on désentrelace, puis on décode avec C1 .
L’apport important de ce code réside dans le traitement itératif du
décodage :
C1 permet de corriger certaines erreurs, C2 ensuite en corrige
d’autres. Le message peut alors à nouveau être décodé par C1 . . .
Communication Numérique
Autres codes
Codes cycliques
Codage avec un code CIRC :
L’idée du codage CIRC est de coder avec un premier code C1 , puis
d’entrelacer les blocs, et enfin, de coder dans la foulée avec un
deuxième code C2 .
Décodage d’un code CIRC :
Pour décoder, on peut alors s’appuyer sur le double codage : on
décode avec C2 , on désentrelace, puis on décode avec C1 .
L’apport important de ce code réside dans le traitement itératif du
décodage :
C1 permet de corriger certaines erreurs, C2 ensuite en corrige
d’autres. Le message peut alors à nouveau être décodé par C1 . . .
Voir aussi à ce sujet les turbo codes . . .

Documents pareils