Académique Documents
Professionnel Documents
Culture Documents
AU 2019-2020 54
Codes de bloc Linéaires: Algo de codage
On considère un code dont la matrice génératrice est :
AU 2019-2020 55
Codes de bloc Linéaires: Algo de codage
Proposition : Tout code linéaire C(n,k) est équivalent à un code linéaire
sous forme systématique C'(n,k) avec
Ik Pt
G' et H' càd matrice de contrôle P I n -k
P I n -k
Dem : par combinaisons linéaires des colonnes de G on peut trouver une matrice
identité d'ordre k (puisque le rang est k), ce qui ne change pas le sous-espace
vectoriel. Par une permutation des lignes on peut placer la matrice identité dans
les k premières colonnes. Les lignes de H' sont orthogonales aux lignes de G'.
Comme elles sont linéairement indépendantes alors H' peut être considéré
comme la matrice de contrôle de C'.
AU 2019-2020 56
Passage au code systématique
101 100
011 011
G=
010 1/ On remplace la troisième colonne G'= 0 1 0
111 par la somme de la 1ere et de la 3eme 110
001 001
110 111
100 011
010 Ik 111 Pt
001
G'= 0 1 1 H'= 1 0 1
100
P
110 010 In-k
111 001
AU 2019-2020 57
Codes de bloc Linéaires: le syndrome
AU 2019-2020 58
Codes de bloc Linéaires:
Lien entre distance minimale et matrice de parité
AU 2019-2020 59
Codes de bloc Linéaires:
Correction des erreurs et distance de Hamming (revisitée)
AU 2019-2020 60
Codes de bloc Linéaires:
Algorithme de Correction des erreurs par syndrome
AU 2019-2020 61
Codes de bloc Linéaires:
Exemple1
AU 2019-2020 62
Codes de bloc Linéaires:
Exemple1
AU 2019-2020 63
Codes de bloc Linéaires:
Exemple1
AU 2019-2020 64
Codes de bloc Linéaires:
Exemple2
AU 2019-2020 65
Codes de Hamming
Codes de Hamming (canaux bruités)
Code de Hamming (1948):
• 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 2019-2020 67
Codes de Hamming (canaux bruités)
Rendement
H a donc pour colonnes tous les vecteurs de taille m sauf le vecteur nul
AU 2019-2020 68
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 2019-2020 69
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 2019-2020 70
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 2019-2020 71
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 2019-2020 72
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 2019-2020 73
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 2019-2020 74
Codes Polynômiaux
Codes polynômiaux
Suite de bits 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 2019-2020 76
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 2019-2020 77
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 2019-2020 78
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 2019-2020 79
Exemple: C(5,3)
AU 2019-2020 80
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 2019-2020 81
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 2019-2020 82
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 2019-2020 84
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 2019-2020 85
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 2019-2020 86
Codes polynômiaux: capacité de détection
AU 2019-2020 87
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 2019-2020 88
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 2019-2020 89
Codes cycliques
CODES CYCLIQUES CRC(Cyclic Redundancy Check)
Notation
k , c C k(c) C, où k est une rotation de k
positions
AU 2019-2020 91
Exemple de code C(4,3) cyclique
AU 2019-2020 92
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 2019-2020 93
Forme polynomiale d'un code cyclique
AU 2019-2020 94
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 2019-2020 95
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 2019-2020 96
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 2019-2020 97
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 2019-2020 98
Exemples de codes cycliques
AU 2019-2020 99
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 2019-2020 100
Rappels mathématiques
Groupes
AU 2019-2020 102
Groupes
AU 2019-2020 103
Groupes
AU 2019-2020 104
Groupes
AU 2019-2020 105
Anneaux
AU 2019-2020 106
Anneaux
AU 2019-2020 107
Anneaux
AU 2019-2020 108
Corps
AU 2019-2020 109
Corps
AU 2019-2020 110
Corps
AU 2019-2020 111
Corps de Galois
AU 2019-2020 112
Corps de Galois
AU 2019-2020 113
Exemple (corps Galois d’ordre premier)
AU 2019-2020 114
Utilisation des corps de Galois
AU 2019-2020 115
Ordre d’un élément
AU 2019-2020 116
Construction d’un corps de Galois
AU 2019-2020 117
Construction d’un corps de Galois
AU 2019-2020 118
Exemple (addition sur le corps CG(pm)
AU 2019-2020 120
Opération sur les corps de Galois
AU 2019-2020 121
Exemple (multiplication sur le corps CG(pm)
AU 2019-2020 122
Factorisation de polynômes
AU 2019-2020 123
Factorisation de polynômes
AU 2019-2020 124
Factorisation de polynômes
AU 2019-2020 125
Codes BHC
Introduction
AU 2019-2020 127
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 2019-2020 128
Distance minimale d’un code BCH
AU 2019-2020 129
Distance minimale d’un code BCH
AU 2019-2020 130
Distance minimale d’un code BCH
AU 2019-2020 131
Construction d’un code BCH
AU 2019-2020 132
Codes Reed Solomon
Codes Reed-Solomon
AU 2019-2020 134
Ex: classes cyclotomiques d’un corps de Galois
AU 2019-2020 135
Ex: classes cyclotomiques d’un corps de Galois
AU 2019-2020 136
Construction des codes Reed-Solomon
AU 2019-2020 137
Construction des codes Reed-Solomon
AU 2019-2020 138
Construction des codes Reed-Solomon
i=1
AU 2019-2020 139
Exemple (code Reed-Solomon de longueur n = 7)
AU 2019-2020 140
Exemple (code Reed-Solomon de longueur n = 7)
AU 2019-2020 141
Exemple (code Reed-Solomon de longueur n = 7)
AU 2019-2020 142
Construction des codes Reed-Solomon
AU 2019-2020 143
Codes convolutifs
Introduction
AU 2019-2020 145
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 2019-2020 146
Introduction
Y j Y j1 ......Y jm0 . Contrôle
AU 2019-2020 147
Codeur convolutif et
décodeur dans un canal de transmission bruité
AU 2019-2020 148
Exemple: code convolutif de rendement R = 1/2
AU 2019-2020 149
Exemple: code convolutif de rendement R = 2/3
AU 2019-2020 150
Exemple: code convolutif de rendement R = 2/3
AU 2019-2020 151
Codeur convolutif et
décodeur dans un canal de transmission bruité
AU 2019-2020 152
Codeur convolutif et
décodeur dans un canal de transmission bruité
AU 2019-2020 153
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 2019-2020 156
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.
AU 2019-2020 157
Codes catastrophiques
Définition
AU 2019-2020 159
Exemple (code convolutif catastrophique)
AU 2019-2020 160
Exemple (code convolutif catastrophique)
AU 2019-2020 161
Exemple (code convolutif catastrophique)
AU 2019-2020 162
Exemple (code convolutif catastrophique)
AU 2019-2020 163
Exemple (code convolutif catastrophique)
AU 2019-2020 164
Exemple (code convolutif catastrophique)
AU 2019-2020 165
Exemple (code convolutif catastrophique)
AU 2019-2020 166
Conclusion
AU 2019-2020 167