• code linéaire
Théorème
Propriétés
1/ distance minimale 3
2/ capacité de correction 1
3/ parfait c-à-d toute erreur à distance 1 (c-à-d une erreur sur un seul bit) d'un
code est corrigée
AU 2021-2022 66
Codes de Hamming (canaux bruités)
Rendement
H a donc pour colonnes tous les vecteurs de taille m sauf le vecteur nul
AU 2021-2022 67
Codes de Hamming (canaux bruités)
Ce sont des codes (n,k,d)=(2m-1, 2m-m-1,3) avec m = la redondance
• En pratique, on fixe la redondance m, ce qui donne k et n
On code donc chaque bloc de k=2m-m-1bits par un bloc de n=2m-1 bits
rem : la valeur de m est au moins 2 (si m=1, alors n=1, pas de sens)
m 2 3 4 5 6 7
n = 2m-1 3 7 15 31 63 127
k = n-m 1 4 11 26 57 120
codes H(3,1) H(7,4) H(15,11) H(31,26) H(63,57) H(127,120)
AU 2021-2022 68
Codes de Hamming : en pratique
Obtenus par la matrice de contrôle
H contient tous les vecteurs sauf le vecteurs nul
Par exemple la matrice de contrôle H de H(15,11) (m=4) est:
000000011111111
000111100001111
011001100110011
101010101010101
AU 2021-2022 69
Codes de Hamming : en pratique
Rappel : les codes de Hamming permettent de coder des mots de longueur 1= (22-1-2)
ou 4 (23-1-3) ou11 = (24-1-4) ou 26 = (25-1-5) ou 57 = (26-1-6) ou120 = (27-1-7),…
On effectue le codage sur la nouvelle forme, puis on fixe dans l'expression des bits de
code la valeur de v0 choisie.
AU 2021-2022 70
Codes de Hamming : en pratique
Par exemple, on fixe la valeur de v0 à 0 et on utilise un code de Hamming séparable
v0
v1
v1
v2
v2
v3
G.V'=C' = v3 C=
v0= 0 v1 + v2 + v3
v1 + v2 + v3
v2 + v3
v0 + v2 + v3
v1 + v3
v0 + v1 + v3
AU 2021-2022 71
Codes de Hamming : en pratique
En codage : la première colonne de G ajoute les termes en v0.
1 0 0 0 0
0
0 1 0 0 v1
v1
V :=
0 0 1 0 v2
v2
G := 0 0 0 1 v3
v3
0 1 1 1 v1 + v2 + v3
1 0 1 1 v2 + v3
1 1 0 1 v1 + v3
1 0 0 v1
0 1 0 v2
v1
G := 0 0 1 v3
V := v2
1 1 1 v1 + v2 + v3
v3
0 1 1 v2 + v3
1 0 1 v1 + v3
AU 2021-2022 72
Codes de Hamming : en pratique résumé
Pour des mots d'information de longueur k autre que 4,11,26, etc.., on considère
un codage de Hamming séparable pour des mots de longueur k' = 4,11, 26
immédiatement supérieure (on "ajoute" k'-k bits).
Le nombre de bits de redondance est le même que pour des mots d'information
de longueur k' :
- pour des mots de longueur 2 ou 3, on ajoute 3 bits comme pour des mots
de 4 bits
- pour des mots de longueur 5,6,7,8,9,10, on ajoute 4 bits comme pour des
mots de 11 bits
- etc…
AU 2021-2022 73
Codes Polynômiaux
Codes polynômiaux
Suite de p bits : a1,a2,…,ap coefficients du polynôme
a1x(p-1)+a2x(p-2)+…+ap
Il faut faire attention à la numérotation des coef.
Ex : 1011 x3+x+1
Pp-1 (ensemble des polys de degré < p)
degré du poly = p-1 pour une suite de p bits
Base canonique : { xp-1, xp-2,…..,x2,x,1}
Division polynomiale
P(x) = D(x).Q(x)+R(x) avec R(x)≠0 où deg(R)<deg(D)
Ex : x3+x2+x=(x+1)(x2+1)+1
(1 1 1 0) = (0 0 1 1) (0 1 0 1) + (0 0 0 1)
AU 2021-2022 75
Codes polynômiaux
Codage : polynôme de Pk-1 polynôme de Pn-1
Définition :
code linéaire
tous les mots de code sont des multiples de l'un d'eux noté g(x) (au
sens produit de polynômes)
AU 2021-2022 76
Codes polynômiaux
Fonction de codage
soit g(x) de degré s, Pk-1 l'ensemble des mots d'information i(x), et
l'espace vectoriel Ps+k-1
soit f:
f est linéaire et injective
f est donc une application de codage de Pk-1 dans Ps+k-1; le code est :
linéaire de longueur n = (s+k)
engendré par g(x) de degré s= n-k
Polynôme générateur
l'unique polynôme de degré minimal, (n-k) qui est
le polynôme codant i(x) = 1 (càd 0.x(k-1)+0x(k-2)+…0x+1)
AU 2021-2022 77
Codes polynômiaux: codage
Soit à coder les mots de Pk-1
Si le degré s de g(x) est fixé, il détermine la longueur du code :
n=s+k
Si la longueur n du code est fixée, tout polynôme de degré s=n-k
engendre un code Cn,k
AU 2021-2022 78
Exemple: C(5,3)
AU 2021-2022 79
Codes polynômiaux: matrice génératrice
En codant la base canonique de Pk-1 par la fonction de codage, on obtient
une base de Pn-1 => matrice génératrice caractéristique (très facile à
obtenir)
Ce qui donne :
xk-1 codé en xk-1.g(x),
......
x codé en x.g(x)
1 codé en g(x)
AU 2021-2022 80
Codes polynômiaux: matrice génératrice
Les polynômes de code obtenu forment une base du code, sous-
espace vectoriel de dimension k de Pn-1, chacun représente une des
k colonnes d'une matrice génératrice G(g) que l'on peut écrire
Les colonnes de G sont les vecteurs formés par les coef. des polys
AU 2021-2022 81
Codes polynômiaux: matrice génératrice
La matrice G(g) est donc de la forme
1 0 ……………….....0
gk+1 1 0 …………………0
gk+2 gk+1 1 0 …………..0
……………………………
gn ………………… gk+1 1
0 ……………………….gk+1
……………………………… Coefficients du
……………………………… poly générateur
0……………………….0 gn
AU 2021-2022 83
Codes polynômiaux: capacité de détection
Possibilités de détection liées au poly. générateur
Soit m(x) un message erroné provenant du code c(x), m(x) = c(x) + e(x)
où e(x) = e1xn-1+e2xn-2+..+en poly d'erreur de transmission
Un message erroné est reconnu comme tel ssi e(x) n'est pas un
polynôme du code càd si g(x) ne divise pas e(x)
Erreurs de poids 1
La détection de tous les messages ayant une erreur de poids 1 est
assurée si le poly générateur a au moins 2 termes non nuls
une erreur de poids 1 correspond à un poly e(x) = xl, càd un monome
un poly avec deux termes non nuls ne pouvant diviser un monôme, g(x)
ne peut diviser e(x) de la forme xl
AU 2021-2022 84
Codes polynômiaux: capacité de détection
Erreurs de poids 2
La détection de tous les messages ayant une erreur de poids 2 est
assurée si le poly générateur ne divise aucun poly de la forme xj+xk
pour tout j et k tels que 1 j-k n-1
une erreur de poids 2 correspond à un poly e(x) = xj+xk = xk (xj-k+1). Il faut
donc que g(x) ne divise aucun poly de cette forme pour toute valeur de j
et k, càd 0 ≤ k < j ≤ n-1 càd j-k ≤ n-1
AU 2021-2022 85
Codes polynômiaux: capacité de détection
AU 2021-2022 86
Codes polynômiaux: en résumé
Codage :
par multiplication :
c(x) = i(x).g(x)
par division (si code systématique)
c(x) = xn-k.i(x) + R(x) avec R(x)= Reste (xn-k.i(x) / g(x))
Contrôle :
par division par g(x)
AU 2021-2022 87
Codes polynômiaux: en résumé
Détection d’erreur
dépend de la nature du poly. générateur
Correction
capacité de correction dépend de la distance, difficile à
déterminer
particulariser p(x) pour évaluer rapidement la capacité de
correction => codes cycliques
choisir g(x) pour obtenir une capacité de correction
minimum garantie => codes BCH
AU 2021-2022 88
Codes cycliques
CODES CYCLIQUES CRC(Cyclic Redundancy Check)
Notation
k , c C k(c) C, où k est une rotation de k
positions
AU 2021-2022 90
Exemple de code C(4,3) cyclique
AU 2021-2022 91
Forme polynomiale d'un code cyclique
c*(x) est soit nul si c(x) est nul soit de degré inférieur ou égal à n => c*(x) est le
reste de la division euclidienne de x.c(x) par (xn+1) càd
x.c(x) mod (xn+1) = c*(x) C
AU 2021-2022 92
Forme polynomiale d'un code cyclique
AU 2021-2022 93
Codes cycliques : Piégeage des erreurs corrigibles
Une erreur est corrigible si son poids est inférieur à t (capacité de
correction). Principe "piéger" les erreurs lorsqu'elles sont corrigibles.
Remarques
un message m présente une erreur sur la première composante ssi
son vecteur d'erreur e (inconnu mais de même syndrome) possède
le chiffre 1 en 1ere position.
si un message m provient du mot de code c, avec une erreur de
poids k, tout permuté j(m) provient de j(c) avec une erreur de
même poids est égale à j(e) (évident puisque j() est linéaire)
Donc si m a une erreur e, un de ses permutés a une erreur
commençant par le chiffre 1
rappel : chaque erreur e corrigible est unique et de poids minimum
AU 2021-2022 94
Codes cycliques : Piégeage des erreurs corrigibles
Algorithme 1
On ne retient du tableau standard que :
les erreurs corrigibles et commençant par 1
leurs syndromes => Table de correction
Le message m étant corrigible, lui ou l'un de ses
permutés j(m) a une erreur commençant par 1 figurant
dans la table (seule erreur de poids minimum dans sa
classe de syndrome).
L'erreur e* étant repérée, l'erreur se déduit par
e(m)= n-j(e*)
AU 2021-2022 95
Codes cycliques : Piégeage des erreurs corrigibles
Exemple : soit le code cyclique C(5,1) de polynôme générateur x4+x3+x2+x+1, il
correspond au codage : 0 -> (0 0 0 0 0) ; 1 -> (1 1 1 1 1). La distance minimale
étant 5 sa capacité de correction est 2 (5-1/2).
Table de correction : on rassemble toutes les erreurs de poids inférieur à 2,
commençant par 1 et leur syndrome, calculées par exemple comme le reste de la
division de e(x) par g(x) càd S(e)= e(x) mod (x4+x3+x2+x+1)
AU 2021-2022 96
Codes cycliques : en résumé
Codage :
par multiplication :
c(x) = i(x).g(x)
par division (si code systématique)
c(x) = xn-k.i(x) + R(x) avec R(x)= Reste (xn-k.i(x) / g(x))
Décodage :
par division
g(x)
xn+1
AU 2021-2022 97
Exemples de codes cycliques
AU 2021-2022 98
Erreurs unidirectionnelles
Pour l'instant on a supposé que les "1" pouvaient devenir des "0" et les
"0" des "1".
Définition : une erreur est dite unidirectionnelle si les "1" sont changés en
"0" (ou les "0" en "1") mais pas les deux à la fois
0 1 0 1 1 -> 0 0 0 1 0 est unidirectionnelle
0 1 0 1 1 -> 1 0 0 0 1 n'est pas unidirectionnelle
Soient X et Y deux k-uplets. On note N(X,Y) les nombre de changement
1->0 de X à Y.
X = 1 0 1 0 1 0 et Y = 1 1 0 1 0 1, N(X,Y) =2 et N(Y,X)=3
N(X,Y)+N(Y,X) = distance de Hamming entre X et Y
AU 2021-2022 99
Rappels mathématiques
Groupes
AU 2021-2022 101
Groupes
AU 2021-2022 102
Groupes
AU 2021-2022 103
Groupes
AU 2021-2022 104
Anneaux
AU 2021-2022 105
Anneaux
AU 2021-2022 106
Anneaux
AU 2021-2022 107
Corps
AU 2021-2022 108
Corps
AU 2021-2022 109
Corps
AU 2021-2022 110
Corps de Galois
AU 2021-2022 111
Corps de Galois
AU 2021-2022 112
Exemple (corps Galois d’ordre premier)
AU 2021-2022 113
Utilisation des corps de Galois
AU 2021-2022 114
Ordre d’un élément
AU 2021-2022 115
Construction d’un corps de Galois
AU 2021-2022 116
Construction d’un corps de Galois
AU 2021-2022 117
Opération sur les corps de Galois
AU 2021-2022 118
Exemple (addition sur le corps CG(pm)
AU 2021-2022 119
Opération sur les corps de Galois
AU 2021-2022 120
Exemple (multiplication sur le corps CG(pm)
AU 2021-2022 121
Factorisation de polynômes
AU 2021-2022 122
Factorisation de polynômes
AU 2021-2022 123
Factorisation de polynômes
AU 2021-2022 124
Codes BHC
Introduction
AU 2021-2022 126
Distance minimale d’un code BCH
Les codes BCH sont des codes cycliques. Les codes BCH originaux étaient
des codes binaires : ceux-ci ont été par la suite généralisés aux corps de
Galois CG(pm) (où p est un nombre premier).
Les codes BCH sont des codes de correction d’erreur très efficaces, pouvant
être facilement conçus avec une distance minimale de conception en
imposant des conditions sur les polynômes générateurs afin de pouvoir
garantir une distance minimale dmin.
Nous verrons par la suite que les codes RS (Reed-Solomon) font partie de la
famille des codes BCH non binaires avec la caractéristique additionnelle
qu’ils sont des codes à distance maximale de séparation (MDS : “Maximum
Distance Separable”).
AU 2021-2022 127
Distance minimale d’un code BCH
AU 2021-2022 128
Distance minimale d’un code BCH
AU 2021-2022 129
Distance minimale d’un code BCH
AU 2021-2022 130
Construction d’un code BCH
AU 2021-2022 131
Codes Reed Solomon
Codes Reed-Solomon
AU 2021-2022 133
Ex: classes cyclotomiques d’un corps de Galois
AU 2021-2022 134
Ex: classes cyclotomiques d’un corps de Galois
AU 2021-2022 135
Construction des codes Reed-Solomon
AU 2021-2022 136
Construction des codes Reed-Solomon
AU 2021-2022 137
Construction des codes Reed-Solomon
i=1
AU 2021-2022 138
Exemple (code Reed-Solomon de longueur n = 7)
AU 2021-2022 139
Exemple (code Reed-Solomon de longueur n = 7)
AU 2021-2022 140
Exemple (code Reed-Solomon de longueur n = 7)
AU 2021-2022 141
Construction des codes Reed-Solomon
AU 2021-2022 142
Codes convolutifs
Introduction
AU 2021-2022 144
Introduction
• Généralités
• Les symboles sont traités de manière continue (flux)
k
n
• Utilisation:
Radio numérique
Téléphones mobiles
Bluetooth
Comm. Satellites
AU 2021-2022 145
Introduction
Y j Y j1 ......Y jm0 . Contrôle
AU 2021-2022 146
Codeur convolutif et
décodeur dans un canal de transmission bruité
AU 2021-2022 147
Exemple: code convolutif de rendement R = 1/2
AU 2021-2022 148
Exemple: code convolutif de rendement R = 2/3
AU 2021-2022 149
Exemple: code convolutif de rendement R = 2/3
AU 2021-2022 150
Codeur convolutif et
décodeur dans un canal de transmission bruité
AU 2021-2022 151
Codeur convolutif et
décodeur dans un canal de transmission bruité
AU 2021-2022 152
Diagramme d’état
Introduction
L' « état » d'un système est l'ensemble des paramètres internes (mémoires, aussi
appelées « registres ») requis pour calculer la sortie correspondant à un bloc
d'entrée donné. Pour le codeur de la figure suivante par exemple, l'état au temps i
est le contenu actuel des deux mémoires c.-à-d. Si=(ui-1, ui-2,).
Le diagramme d'état d'un codeur est un graphe dont les nœuds sont tous les états
internes possibles du codeur. Un arc entre un nœud Si et un nœud Sj dans ce
graphe représente le fait qu'il existe une entrée qui, lorsqu'elle est reçue dans l'état
Si met le codeur dans l'état Sj. Ces arcs sont habituellement étiquetés avec le(s)
symbole(s) d'entrée et les symboles de sortie correspondants.
AU 2021-2022 155
Définition
Le diagramme d'état d'un codeur est un graphe dont les nœuds sont tous les états
internes possibles du codeur. Un arc entre un nœud Si et un nœud Sj dans ce
graphe représente le fait qu'il existe une entrée qui, lorsqu'elle est reçue dans l'état
Si met le codeur dans l'état Sj. Ces arcs sont habituellement étiquetés avec le(s)
symbole(s) d'entrée et les symboles de sortie correspondants.
où chaque nœud représente l'état du codeur
c.-à-d. l'état des deux mémoires internes, le
label bleu est l'entrée qui provoque le
changement d'état , et le rouge les symboles
de sortie correspondants. Si par exemple,
dans l'état 01, un 1 est reçu comme symbole
d'entrée, l'état devient alors 10 et les deux
symboles de sortie sont 00.
AU 2021-2022 156
Codes catastrophiques
Définition
AU 2021-2022 158
Exemple (code convolutif catastrophique)
AU 2021-2022 159
Exemple (code convolutif catastrophique)
AU 2021-2022 160
Exemple (code convolutif catastrophique)
AU 2021-2022 161
Exemple (code convolutif catastrophique)
AU 2021-2022 162
Exemple (code convolutif catastrophique)
AU 2021-2022 163
Exemple (code convolutif catastrophique)
AU 2021-2022 164
Exemple (code convolutif catastrophique)
AU 2021-2022 165
Conclusion
AU 2021-2022 166