Codes Line Aires
Codes Line Aires
Codes Line Aires
Signal Transmission
Reconstruction Décodeur
Analogique
" message à coder : blocs de m bits " codés sur n bits (table) : n = m + r
" choix des mots valides : erreurs les + fréquentes " génèrent un mot non valide
parité
Canal de transmission
ou
support de mémorisation
" Mais : un nombre pair d'erreurs ne
pourra être détecté !
Décodeur
erreur
Codage de l’Information en Vue de sa Protection
« parité croisée » " Détecter deux erreurs ou en corriger une
" Transmettre le message par groupes de mots
" A chaque groupe de mot, on associe deux info de parité :
Bit de parité pour chaque mot + mot de parité à la fin de chaque groupe
" A la réception : contrôle horizontal + contrôle vertical
bits de parité
100111 0
groupe de 010010 0
5 mots 011110 0
Si nombre d'erreurs <= 2 : à protéger 101011 0
001101 1
Types de codes
" codes en bloc : calculés uniquement à partir des m bits du message source
" codes convolutionnels : calculés à partir des bits d'information de plusieurs blocs
m m m m
m m m m m m m m
r r r r
n n n n n n n n n n n n
• Code Systématique : yt = [ y1 y2 y3 L yn ] = [ x1 x 2 L xm a1 a2 L ar ]
Principe : m"n=m+r
∀ code ∋ 2n mots possibles, dont seuls 2 m sont valides
Définitions
• « distance de Hamming » : nombre de bits par lesquels deux mots de code diffèrent
• Deux mots de code distincts sont différents d'au moins un bit ( d min = 1 ) :
- si dm = 1 " erreur transforme un mot valide en un autre mot valide, détection impossible !
Ex : yt = 1010 ; zt = 1110
Si et = 0100 " yt + et = 1110 = zt
- si dm = 2 " une seule erreur transforme un mot valide en un mot invalide (diff. d’1 bit)
Ex : yt = 10101 ; zt = 11100
Si et = 01000 " yt + et = 11101 != zt
Possibilité de détection d'une erreur unique lorsque dm = 2 (ex : code avec vérif. de parité)
• Corriger une erreur " erreur positionnée sur chacun des n bits d'un mot de code valide
" n mots de code non valides, pour chacun des 2m mots valides
" chaque erreur provoque un mot invalide distinct ∀ mot valide, que l’on peut donc retrouver
Propriétés Générales des Codes Détecteurs et Correcteurs d’Erreurs
2 n ≥ (n + 1) • 2 m c.− à − d. 2r ≥ n + 1
# Condition non suffisante : 2 mots de codes ≠ ne doivent jamais aboutir à un même mot
en cas d’erreur, ce qui peut se produire si d < = 2e
Ex : yt = 10101 ; zt = 11100
Si et = 01000 ; ft = 00001 " yt + et = 11101 = zt + f t
• Rendement du code : d'autant plus grand que les mots de code sont longs
n−r r log2 (n + 1)
# R = m (m + r) = (n − r) n R=
n
= 1− = 1−
n n
"1 lorsque n " infini
" Conception d’un code : optimiser sa capacité à détecter (ou corriger) les erreurs les
plus probables
Les Codes Linéaires
" Opérations simples pour codage et décodage : « code en bloc linéaire systématique »
m m m
y t = x1 x2 L xm ∑p i ,1 • xi LL ∑ pi,r • xi aj = ∑ pi,j • xi ∀ j = 1, 2, L , r (modulo 2)
i =1 i= 1 i= 1
m bits r bits
avec xi et pi,j = 0 ou 1
d' information de redondance
Ex : code (7,4)
= x •H H (m× n) :
t t
y où
1 0 0 0 p1,1 p1,2 p1,3
p
= « matrice génératrice de code » 0 1 0 0 p2 ,2 p2 ,3
H = [Im P] = 2 ,1
0 0 1 0 p3 ,1 p3 ,2 p3 ,3
= matrice unité Im (m ×m) + matrice P (m×r)
0 0 0 1 p4 ,1 p4 ,2 p4 ,3
aj : = bit de vérification de parité portant sur les bits de xi qui correspondent à pi,j = 1
• Propriétés : - Tout mot de code valide est une combinaison linéaire des bits à coder
- La somme de deux mots de code valides est un mot de code valide
Code Linéaire Systématique : Principe du Codage
a1 = x1 + x2 + x3 a3 a2 a1
a3 = x1 + x2 + x4 (additions modulo2)
st = y t ⊕ • Gt = [s1 s2 L sr ] si erreur(s) : et = [ e1 e2 L en ] , y t ⊕ = yt + e t
st = (y t
)
+ et • G t = e t • Gt (car yt . Gt = 0, par definition)
• Erreur non détectée : si elle transforme un mot valide en un autre mot valide
les seules erreurs non détectées sont celles qui ont la configuration d'un mot de code valide
Code Linéaire Systématique : Principe de la Détection d’Erreurs
• Efficacité du code : code tel que les erreurs non détectées soient les moins probables,
compte tenu des caractéristiques de l'application
(canal de transmission, support de stockage)
• Code Linéaire Systématique " dm = poids le plus faible d'un mot de code non nul
(car un mot de code est toujours égal à la somme de deux autres mots de code)
"codes conçus pour assurer une protection raisonnable contre ces salves d’erreurs
" salve d’erreurs = vecteur de dim. k dans lesquels se trouvent confinées toutes les erreurs
du vecteur d'erreur du code de dimension n, avec n ≥ k
• possibilité de concevoir un code (n,m) qui corrige toutes les salves de longueur r / 2 ;
• pour simultanément corriger toutes les salves de long. ≤ l1 et détecter toutes les salves de long.
≤ l2 (l2 ≥ l1), un code linéaire doit vérifier r = l1 + l2 ;
Code Linéaire Systématique : Principe de la Correction d’Erreurs
Principe de la correction d'erreurs
Registre à décalage
⊕
Mot reçu
y⊕n y⊕n-1 y⊕ y⊕
" r bits du syndrome : 2 1
Calcul du syndrome simple, mais réalisation de 1'estimateur d'erreurs difficile (en général)
• Code de longueur de 7 bits " ∃ 7 config. différentes ∋ une erreur et une seule :
Chaque syndrome : correspond à une ligne de Gt (dont ttes les lignes sont ≠ par construction)
" les syndromes correspondant à toutes les configurations d'erreurs sont différents
Code Linéaire Systématique : Principe de la Correction d’Erreurs
3 +
l’add. et le bit de code corresp. + y3
s y⊕
y⊕
4 +
2 e4 4
+ y4
s y⊕
• Erreurs : Circuits ET , sur base des syndr. y⊕
5 +
3 e5
+
5
y5
y⊕
y⊕ e6 6
6
+ y6
m = n − r = 2r − r − 1 r 2 3 4 5 6 7
• ∀ code (n,m) : correction au max. de 2n-m = 2r config. d'erreurs ≠ ( ∋ config. sans erreur)
" Codes optima : toutes les erreurs qu’ils sont susceptibles de corriger
⇔ ensemble de toutes les erreurs simples
• Si n ≠ 2 − 1
r
" Code de Hamming Réduit : choisir r immédiatement > valeur désirée
Les Codes de Hamming
• r bits de parité " rangés dans le mot de code aux positions d’indice = puissance de 2
• m bits d’info. " rangés dans les autres positions du mot de code (ordre croissant des indices)
• Bit de parité ai " calcule la parité des bits du mot de code dont la position dans ce mot,
exprimée en binaire, contient le bit 2i
" vérifie la parité de x1, x3, x4, x6, x7, x10, x11 (positions 3,6,7,10,11,14,15 du mot de code),
dont les numéros de position contiennent le bit 21 = 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
↓ ↓ ↓ ↓
Mot de code émis y t 0 0 1 0 0 1 0 1 1 1 0 0 0 1 0
Erreur et 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
• Erreur sur le bit y5 " le bit y5 affecte les bits de contrôle de parité a0 et a2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
↓ ↓ ↓ ↓
Mot de code émis y t 0 0 1 0 0 1 0 1 1 1 0 0 0 1 0
Erreur et 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0
Mot reçu y t⊕ 0 0 1 0 1 1 1 1 1 1 0 0 0 1 0
• Extension à dm = 4 : ajout d’un bit de contrôle = bit de parité sur l'ensemble des bits du mot
" Au décodage : contrôle de parité " 0 si # pair ou pas d'erreurs, " 1 si # impair d'erreurs
Codeur de Hamming
Décodeur de Hamming Deux Erreurs
Erreur
y1 y2 y3 y4 y5 y6 y7 y8 x1 x2 x3 x4
" particulièrement adaptés aux mots dans les ordinateurs, microprocesseurs, mémoires
" « SECDED code » (Single Error, Correcting, Double Error Detecting code)
1 0 0 1 1 0
H = 0 1 0 1 0 1
Soit le codeur :
0 0 1 0 1 1
Bits de code Y1 Y2 Y3 Y4 Y5 Y6
Pos. Hamming base a0 a1 x1 a2 x2 x3
Pos. Systématique x1 x2 x3 a0 a1 a2
Code pos. base 3 5 6 1 2 4
Code pos. binaire 011 101 110 001 010 100
décodage a2’a1a0 a2a1’a0
Extension des Codes de Hamming
+ + +
a2 a1 a0
registre à décalage
y⊕
y⊕
1
e1 1
+ y
1
y⊕
y⊕ e
2
2
2
+ y2
+ + +
a0 = x + x + a
1 2 0 a y⊕
y⊕
0 e 3
3 + 3
+ + + +
a1 = x1 + x3 + a1
y3
a y⊕
+ + +
y⊕ + 1 e 4
a2 = x 3 + x 2 + a 2
4 4
+ y4
a y⊕
y⊕ + 2 e5 5
5
+ y
5
y⊕
y⊕
6
e6 6
+ y
6