SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
Théorie de l’information
Chap : Codes Cycliques
Rhouma Rhouma
https://sites.google.com/site/rhoouma
École Supérieure d’Économie Électronique
Avril 2015
1 / 29
Plan
1 Codage
2 Contrôle de Parité
3 Décodage
4 Matrice génératrice d’un code cyclique
5 Codes cycliques usuels
6 Erreurs en Rafales
2 / 29
Codage
Plan
1 Codage
2 Contrôle de Parité
3 Décodage
4 Matrice génératrice d’un code cyclique
5 Codes cycliques usuels
6 Erreurs en Rafales
3 / 29
Codage
Propriétés
Les codes cycliques sont des codes linaires : la somme de deux
mots de code est un mot de code.
toute rotation circulaire d’un mot de code est un mot de code
le message binaire m est noté d’une façon polynomiale m(x). Ex :
m= (101) est décrit par m(x) = 1 · x0 + 0 · x1 + 1 · x2 = 1 + x2
de même le mot de code C de longueur k est décrit par C(x) de
degré n-1
Polynôme générateur g(x) de degré n − k factorise tous les mots
de code et est décrit :
g(x) = xn−k
+ gn−k−1 · xn−k−1
+ gn−k−2 · xn−k−2
+ . . . + g1 · x + 1
4 / 29
Codage
Codage d’un code cyclique
le mot de code C s’écrit sous forme systématique :
C = [b0b1 . . . bn−k−1m0m1 . . . mk−1]
C est décrit polynomialement par : C(x) =
b0+b1·x+bn−k−1·xn−k−1+m0·xn−k +m1·xn−k+1+. . .+mk−1·xn−1
le polynôme générateur g(x) factorise tous les mots de codes
donc : C(x) = Am(x) · g(x)
On peut écrire xn−k · m(x) = Am(x) · g(x) + b(x) avec
b(x) = b0 + b1 · x + . . . + bn−k−1 · xn−k−1
c’est comme si b(x) était le reste d’une division euclidienne du
polynôme xn−k · m(x) par g(x).
5 / 29
Codage
Algorithme de codage
1 multiplier m(x) par xn−k
2 diviser par g(x). il reste b(x)
3 ajouter b(x) à xn−k · m(x) pour trouver C(x)
6 / 29
Contrôle de Parité
Plan
1 Codage
2 Contrôle de Parité
3 Décodage
4 Matrice génératrice d’un code cyclique
5 Codes cycliques usuels
6 Erreurs en Rafales
7 / 29
Contrôle de Parité
Contrôle de Parité
On définit un polynôme de parité h(x) qui vérifie :
g(x) · h(x) mod (xn
+ 1) = 0
Parmi tous les polynômes h(x) possibles, on choisit celui qui a le
degré minimal :
g(x) · h(x) = xn
+ 1
Puisque le degré de g(x) est n-k, donc le degré de h(x) = k
Choix des polynômes g(x) et h(x) :
1 factorisation : pour un code(n,k), on factorise xn
+ 1 en polynôme
primitifs : xn
+ 1 = P1(x)P2(x) . . .
2 choix de g(x) : on forme le polynôme g(x) de degré n-k
3 le reste des produits des polynômes est h(x) de degré k
8 / 29
Contrôle de Parité
Exemple
pour un code ( 7 ,4 ) :
x7 + 1 = (x + 1)(x3 + x2 + 1)(x3 + x + 1)
Nous avons ici deux possibilités de choix de g(x) et donc de h(x) :
1 g(x) = (x3
+x2
+1) =⇒ h(x) = (x+1)(x3
+x+1) = (x4
+x3
+x2
+1)
2 g(x) = (x3
+x +1) =⇒ h(x) = (x +1)(x3
+x2
+1) = (x4
+x2
+x +1)
9 / 29
Contrôle de Parité
Syndrome
En cas d’erreur de transmission, nous recevons un mot de code
Y(x) qui ne correspond à aucun message.
Y(x) = C(x) + E(x) où E(x) est le polynôme de l’erreur.
Syndrome :
S(x) = Y(x) · h(x)mod(xn
+ 1) = E(x) · h(x)mod(xn
+ 1)
Une table des erreurs permet de remonter au polynôme d’erreur
de transmission et la correction des erreurs se fait toujours au
sens du maximum de vraisemblance : C∗(x) = Y(x) + E∗(x).
10 / 29
Contrôle de Parité
exemple
En poursuivant avec l’exemple déjà utilisé code (7,4) et :
g(x) = 1 + x + x3
h(x) = 1 + x + x2 + x4
et m = [1011] =⇒ m(x) = 1 + x2 + x3 =⇒ C(x) =
1 + x3 + x5 + x6 =⇒ C = [1001011]
vérification :
C(x) · h(x) = (1 + x3 + x5 + x6) · (1 + x + x2 + x4) =
1 + x3 + x5 + x6
+x + x4 + x6 + x7
+x2 + x5 + x7 + x8
+x4 + x7 + x9 + x10 = 0 mod (x7 + 1)
11 / 29
Contrôle de Parité
Supposons une erreur de transmission
E = [0001000] =⇒ Y = [1000011] =⇒ Y(x) = 1 + x5 + x6
calcul du syndrome :
Y(x) · h(x) = (1 + x5 + x6).(1 + x + x2 + x4) = 1 + x + x2 + x4
+x5 + x6 + x7 + x9
+x6 + x7 + x8 + x10 = 1 + x3 + x4 + x5 = S(x)
= E(x) · h(x) = x3 · (1 + x + x2 + x4)
on voit bien que le syndrome dépend seulement de l’erreur et non
du message ou mot de code : S(x) = E(x) · h(x) = Y(x) · h(x)
on peut dessiner une table d’erreur/syndrome pour accélérer la
décision du récepteur.
donc même Alg de décodage que les codes de bloc linéaire,
seulement le calcul est polynomial
12 / 29
Contrôle de Parité
Remarque à propos du syndrome
Le syndrome est décrit par :
S(x) = Y(x) · h(x)mod(xn
+ 1) = E(x) · h(x)mod(xn
+ 1)
on peut utiliser un autre syndrome équivalent si on divise toute
l’égalité par le polynôme h(x) :
le nouveau syndrome est noté S0(x) :
S0
(x) = Y(x) mod g(x) = E(x) mod g(x)
on peut travailler avec l’une des deux définitions
on définit donc deux algorithmes de décodage : l’un avec S(x) et
l’autre avec S0(x).
13 / 29
Décodage
Plan
1 Codage
2 Contrôle de Parité
3 Décodage
4 Matrice génératrice d’un code cyclique
5 Codes cycliques usuels
6 Erreurs en Rafales
14 / 29
Décodage
Algorithme de décodage 1
1 Reception d’un mot de code Y(x).
2 calcul du syndrome associe S(x) = Y(x) · h(x)mod(xn + 1).
3 construction d’une table d’erreur/syndrome par
S(x) = E(x) · h(x)mod(xn + 1)
4 avec la table d’erreurs et le syndrome calculée à l’étape 2), calcul
de l’erreur la plus vraisemblable E∗(x).
5 calcul du mot de code le plus vraisemblable :
C∗(x) = Y(x) + E∗(x) et donc sous forme binaire C∗
6 Extraction du message X∗ de C∗.
15 / 29
Décodage
Algorithme de décodage 2
1 Reception d’un mot de code Y(x).
2 calcul du syndrome associe S(x) = Y(x) mod g(x).
3 construction d’une table d’erreur/syndrome par
S(x) = E(x) mod g(x)
4 avec la table d’erreurs et le syndrome calculée à l’étape 2), calcul
de l’erreur la plus vraisemblable E∗(x).
5 calcul du mot de code le plus vraisemblable :
C∗(x) = Y(x) + E∗(x) et donc sous forme binaire C∗
6 Extraction du message X∗ de C∗.
16 / 29
Décodage
Exemple avec algorithme de décodage 2
1 Reception de Y(x) = 1 + x5 + x6
2 Calcul du syndrome : S0(x) = Y(x) mod g(x) = x + 1
3 table d’erreur :
Position Erreur Syndrome
0 1 1
1 x x
2 x2 x2
3 x3 x + 1
4 x4 x2 + x
5 x5 x2 + x + 1
6 x6 x2 + 1
4 D’après la table d’erreur, S0(x) = x + 1 correspond à E∗(x) = x3
5 Le mot de code correct est C∗(x) = Y(x) + E∗(x) = 1 + x3 + x5 + x6. D’où
C∗ = [1001011]
6 le message est donc les k=4 derniers bits m∗ = 1011
17 / 29
Matrice génératrice d’un code cyclique
Plan
1 Codage
2 Contrôle de Parité
3 Décodage
4 Matrice génératrice d’un code cyclique
5 Codes cycliques usuels
6 Erreurs en Rafales
18 / 29
Matrice génératrice d’un code cyclique
Matrice génératrice d’un code cyclique
Puisque le décalage circulaire d’un mot de code est un mot de
code, on peut générer une matrice génératrice G∗ d’un polynôme
générateur g(x) :
G∗
=








← g(x) →
← x · g(x) →
← x2 · g(x) →
← x3 · g(x) →
. . .
. . .








comme exemple avec g(x) = 1 + x + x3 :
G∗
=




1 1 0 1 0 0 0
0 1 1 0 1 0 0
0 0 1 1 0 1 0
0 0 0 1 1 0 1




19 / 29
Matrice génératrice d’un code cyclique
pour faire apparaître un code systématique, faire une combinaison
linéaire des lignes de G∗ :
Ligne 1 ←− Ligne 1
Ligne 2 ←− Ligne 2
Ligne 3 ←− Ligne 3 + Ligne 1
Ligne 4 ←− Ligne 4 + Ligne 1 + Ligne 2
Ce qui va donner
G =




1 1 0 1 0 0 0
0 1 1 0 1 0 0
1 1 1 0 0 1 0
1 0 1 0 0 0 1




on peut verifier que g(x) et G génèrent le même mot de code
C(x) = 1 + x3 + x5 + x6 ou C = [1001011] du message m=[1011]
ou m(x) = 1 + x2 + x3
20 / 29
Codes cycliques usuels
Plan
1 Codage
2 Contrôle de Parité
3 Décodage
4 Matrice génératrice d’un code cyclique
5 Codes cycliques usuels
6 Erreurs en Rafales
21 / 29
Codes cycliques usuels
Code de Golay
c’est un code (n,k) = (23,12)
x23
+ 1 = (1 + x)(1 + x + x5
+ x6
+ x7
+ x9
+ x11
)(1 + x + x4
+ x5
+ x6
+ x10
+ x11
)
le polynôme générateur est :
g(x) = 1 + x + x5
+ x6
+ x7
+ x9
+ x11
sa distance minimale dmin = 7
il peut donc détecter et corriger les erreurs triples !
le code de Golay est unique dans son groupe et ne peut être généralisé
22 / 29
Codes cycliques usuels
Codes BCH (Bose-Chaudrui-Hocquenqhem)
code avec n = 2m − 1 basé sur le calcule dans le corps de Galois
k est choisi de façon à que k ≥ n − m · t avec t est le nombre des
erreurs détéctables et corrigeables
la distance minimale sera toujours dmin ≥ 2t + 1
Ces codes permettent des longueurs de code très variées et
offrent de nombreuses possibilités d’efficacité de code k/n.
. Les coefficients des polynômes générateurs sont tabulés dans
de nombreux ouvrages, la longueur des polynômes générateur
devenant très grande, ces tables fournissent les jeux de
coefficients en utilisant un format octal par ordre décroissant
Exemple : code (31,26 ), t = 1 , coefficients 45 en octal soit 100
101 donc g(x) = x5 + x2 + 1
utilisé dans les CD, DVD, disque dur, les codes à bare
23 / 29
Codes cycliques usuels
Codes RS (Reed-Solomon)
Codes non binaire
n=k+2t et n = 2m − 1. avec m : nombre de bits par symbole et k :
nb de symbole d’information. 2t=nombre de symboles de controle
Reed solomon peut corriger (n-k)/2 erreurs
utilisé dans le stockage de données en CD avec RS(32, 28) et en
DVD avec RS(182,172)
utilisé en transmission par satellite en DVB avec RS( 204,188)
utilisé en ADSL avec RS(204,188)
24 / 29
Erreurs en Rafales
Plan
1 Codage
2 Contrôle de Parité
3 Décodage
4 Matrice génératrice d’un code cyclique
5 Codes cycliques usuels
6 Erreurs en Rafales
25 / 29
Erreurs en Rafales
Erreurs en Rafales
Les codes de bloc linéaires et cycliques sont efficaces pour
corriger des erreurs simples ou doubles dans un mot de code
et ils peuvent corriger des erreurs multiples dans un mot de code
Mais si pendant la transmission (ou dans un CD erroné ) il peut y
arriver des erreurs en rafale (burst errors), tout le mot de code est
erroné ou effacé : canal sans fils avec évanouissement, cassure
ou brûlure dans un CD. Les corrections des bits simples ou
doubles ne peuvent pas trop aider
26 / 29
Erreurs en Rafales
Solution : entrelacement
ne pas transmettre les données dans leur ordre normal
dans la fig à gauche, les bits sont transmis séquentiellement. et
donc des erreurs en rafales (B-its) vont domager tout le mot de
code transmis en continu (B Bits erronés)
dans la fig à droite, le fait d’entrelacer les bits des mots de codes
va séparer les erreurs en rafales en des erreurs simples (1 seule
erreur dans B mot de codes differents chacun) !
27 / 29
Erreurs en Rafales
Interleaving : Entrelacement
Autre utilisation de l’entrelacement entre le codage canal et la modulation
le canal mobile présente deux caractéristiques :
présence de Rafale d’erreurs (burst)
le codeur de convolution ne peut gérer les burst d’erreurs (due au
fading multi-trajets, ou disque défectueux ds le cas de CDROM)
entrelacer ou brasser l’ordre des bits encodés après le codeur canal pour rompre les burst
d’erreurs durant la transmission.
28 / 29
Erreurs en Rafales
Demonstration de l’effet de linterleaving sur un burst d’erreurs
29 / 29

Contenu connexe

Similaire à Inf_theory_lect3.pdf

Performances dans la segmentation d’images médicales
Performances dans la segmentation d’images médicalesPerformances dans la segmentation d’images médicales
Performances dans la segmentation d’images médicalesEL-Hachemi Guerrout
 
Les Filtres Numeriques
Les Filtres NumeriquesLes Filtres Numeriques
Les Filtres NumeriquesSAHELAicha
 
T. Masrour - cours dynamique des systèmes - vibrations -chapitre2-n ddl (1)
T. Masrour - cours dynamique des systèmes - vibrations -chapitre2-n ddl (1)T. Masrour - cours dynamique des systèmes - vibrations -chapitre2-n ddl (1)
T. Masrour - cours dynamique des systèmes - vibrations -chapitre2-n ddl (1)tawfik-masrour
 
Cours gestion de la production Pr Falloul
Cours gestion de la production Pr FalloulCours gestion de la production Pr Falloul
Cours gestion de la production Pr FalloulProfesseur Falloul
 
Chapitre 2 plus court chemin
Chapitre 2 plus court cheminChapitre 2 plus court chemin
Chapitre 2 plus court cheminSana Aroussi
 
Corrigées TD 9 de Module Analyse 3 pour les étudiants de la filière Mathémati...
Corrigées TD 9 de Module Analyse 3 pour les étudiants de la filière Mathémati...Corrigées TD 9 de Module Analyse 3 pour les étudiants de la filière Mathémati...
Corrigées TD 9 de Module Analyse 3 pour les étudiants de la filière Mathémati...AbdoFreedom
 
Complexité_ENSI_2011.ppt
Complexité_ENSI_2011.pptComplexité_ENSI_2011.ppt
Complexité_ENSI_2011.pptMbarkiIsraa
 
Résolution numérique de l'équation de Black Scholes en python
Résolution numérique de l'équation de Black Scholes en pythonRésolution numérique de l'équation de Black Scholes en python
Résolution numérique de l'équation de Black Scholes en pythonAli SIDIBE
 
Chapitre 3 NP-complétude
Chapitre 3 NP-complétudeChapitre 3 NP-complétude
Chapitre 3 NP-complétudeSana Aroussi
 
Traitement des données massives (INF442, A4)
Traitement des données massives (INF442, A4)Traitement des données massives (INF442, A4)
Traitement des données massives (INF442, A4)Frank Nielsen
 
Into_GA.ppt
Into_GA.pptInto_GA.ppt
Into_GA.pptbetadir
 
Algebre1 s1 par www.etudecours.com
Algebre1 s1 par www.etudecours.comAlgebre1 s1 par www.etudecours.com
Algebre1 s1 par www.etudecours.cometude cours
 
Signatures numériques
Signatures numériquesSignatures numériques
Signatures numériquesAdbo Ellah
 
Un algorithme de chiffrement a flot base sur le probleme des 3 corps.
Un algorithme de chiffrement a flot base sur le probleme des 3 corps.Un algorithme de chiffrement a flot base sur le probleme des 3 corps.
Un algorithme de chiffrement a flot base sur le probleme des 3 corps.Samir Crypticus
 

Similaire à Inf_theory_lect3.pdf (20)

transparents-Algo-correction.pdf
transparents-Algo-correction.pdftransparents-Algo-correction.pdf
transparents-Algo-correction.pdf
 
Performances dans la segmentation d’images médicales
Performances dans la segmentation d’images médicalesPerformances dans la segmentation d’images médicales
Performances dans la segmentation d’images médicales
 
Les Filtres Numeriques
Les Filtres NumeriquesLes Filtres Numeriques
Les Filtres Numeriques
 
T. Masrour - cours dynamique des systèmes - vibrations -chapitre2-n ddl (1)
T. Masrour - cours dynamique des systèmes - vibrations -chapitre2-n ddl (1)T. Masrour - cours dynamique des systèmes - vibrations -chapitre2-n ddl (1)
T. Masrour - cours dynamique des systèmes - vibrations -chapitre2-n ddl (1)
 
transparents-Algo-complexite.pdf
transparents-Algo-complexite.pdftransparents-Algo-complexite.pdf
transparents-Algo-complexite.pdf
 
Cours gestion de la production Pr Falloul
Cours gestion de la production Pr FalloulCours gestion de la production Pr Falloul
Cours gestion de la production Pr Falloul
 
Ch1 reponses
Ch1 reponsesCh1 reponses
Ch1 reponses
 
Chapitre 2 plus court chemin
Chapitre 2 plus court cheminChapitre 2 plus court chemin
Chapitre 2 plus court chemin
 
Video
VideoVideo
Video
 
01 lois-à-densité
01 lois-à-densité01 lois-à-densité
01 lois-à-densité
 
Corrigées TD 9 de Module Analyse 3 pour les étudiants de la filière Mathémati...
Corrigées TD 9 de Module Analyse 3 pour les étudiants de la filière Mathémati...Corrigées TD 9 de Module Analyse 3 pour les étudiants de la filière Mathémati...
Corrigées TD 9 de Module Analyse 3 pour les étudiants de la filière Mathémati...
 
Complexité_ENSI_2011.ppt
Complexité_ENSI_2011.pptComplexité_ENSI_2011.ppt
Complexité_ENSI_2011.ppt
 
Résolution numérique de l'équation de Black Scholes en python
Résolution numérique de l'équation de Black Scholes en pythonRésolution numérique de l'équation de Black Scholes en python
Résolution numérique de l'équation de Black Scholes en python
 
Chapitre 3 NP-complétude
Chapitre 3 NP-complétudeChapitre 3 NP-complétude
Chapitre 3 NP-complétude
 
Traitement des données massives (INF442, A4)
Traitement des données massives (INF442, A4)Traitement des données massives (INF442, A4)
Traitement des données massives (INF442, A4)
 
cours algorithme
cours algorithmecours algorithme
cours algorithme
 
Into_GA.ppt
Into_GA.pptInto_GA.ppt
Into_GA.ppt
 
Algebre1 s1 par www.etudecours.com
Algebre1 s1 par www.etudecours.comAlgebre1 s1 par www.etudecours.com
Algebre1 s1 par www.etudecours.com
 
Signatures numériques
Signatures numériquesSignatures numériques
Signatures numériques
 
Un algorithme de chiffrement a flot base sur le probleme des 3 corps.
Un algorithme de chiffrement a flot base sur le probleme des 3 corps.Un algorithme de chiffrement a flot base sur le probleme des 3 corps.
Un algorithme de chiffrement a flot base sur le probleme des 3 corps.
 

Plus de kohay75604

Chapitre1_Introduction_res_sans_fils_mobiles.pdf
Chapitre1_Introduction_res_sans_fils_mobiles.pdfChapitre1_Introduction_res_sans_fils_mobiles.pdf
Chapitre1_Introduction_res_sans_fils_mobiles.pdfkohay75604
 
catalogue PFE 2023.pdf
catalogue PFE 2023.pdfcatalogue PFE 2023.pdf
catalogue PFE 2023.pdfkohay75604
 
Chap 2 - Etudiant.pdf
Chap 2 - Etudiant.pdfChap 2 - Etudiant.pdf
Chap 2 - Etudiant.pdfkohay75604
 
Chap 1 - Etudiant.pdf
Chap 1 - Etudiant.pdfChap 1 - Etudiant.pdf
Chap 1 - Etudiant.pdfkohay75604
 
res_mobiles_ch4.pdf
res_mobiles_ch4.pdfres_mobiles_ch4.pdf
res_mobiles_ch4.pdfkohay75604
 
application SSL_TLS.pptx
application SSL_TLS.pptxapplication SSL_TLS.pptx
application SSL_TLS.pptxkohay75604
 
Inf_theory_lect2.pdf
Inf_theory_lect2.pdfInf_theory_lect2.pdf
Inf_theory_lect2.pdfkohay75604
 
Business Template with Transitions by Slidesgo.pptx
Business Template with Transitions by Slidesgo.pptxBusiness Template with Transitions by Slidesgo.pptx
Business Template with Transitions by Slidesgo.pptxkohay75604
 
S2-00-HTTP.pptx
S2-00-HTTP.pptxS2-00-HTTP.pptx
S2-00-HTTP.pptxkohay75604
 
S2-02-PHP-objet.pptx
S2-02-PHP-objet.pptxS2-02-PHP-objet.pptx
S2-02-PHP-objet.pptxkohay75604
 
S2-01-PHP.pptx
S2-01-PHP.pptxS2-01-PHP.pptx
S2-01-PHP.pptxkohay75604
 

Plus de kohay75604 (16)

crypto1.pdf
crypto1.pdfcrypto1.pdf
crypto1.pdf
 
Chapitre1_Introduction_res_sans_fils_mobiles.pdf
Chapitre1_Introduction_res_sans_fils_mobiles.pdfChapitre1_Introduction_res_sans_fils_mobiles.pdf
Chapitre1_Introduction_res_sans_fils_mobiles.pdf
 
catalogue PFE 2023.pdf
catalogue PFE 2023.pdfcatalogue PFE 2023.pdf
catalogue PFE 2023.pdf
 
Chap 3.pdf
Chap 3.pdfChap 3.pdf
Chap 3.pdf
 
Chap 2 - Etudiant.pdf
Chap 2 - Etudiant.pdfChap 2 - Etudiant.pdf
Chap 2 - Etudiant.pdf
 
Chap 1 - Etudiant.pdf
Chap 1 - Etudiant.pdfChap 1 - Etudiant.pdf
Chap 1 - Etudiant.pdf
 
res_mobiles_ch4.pdf
res_mobiles_ch4.pdfres_mobiles_ch4.pdf
res_mobiles_ch4.pdf
 
docker.pptx
docker.pptxdocker.pptx
docker.pptx
 
application SSL_TLS.pptx
application SSL_TLS.pptxapplication SSL_TLS.pptx
application SSL_TLS.pptx
 
SSL.TLS.pptx
SSL.TLS.pptxSSL.TLS.pptx
SSL.TLS.pptx
 
Inf_theory_lect2.pdf
Inf_theory_lect2.pdfInf_theory_lect2.pdf
Inf_theory_lect2.pdf
 
NFV.pdf
NFV.pdfNFV.pdf
NFV.pdf
 
Business Template with Transitions by Slidesgo.pptx
Business Template with Transitions by Slidesgo.pptxBusiness Template with Transitions by Slidesgo.pptx
Business Template with Transitions by Slidesgo.pptx
 
S2-00-HTTP.pptx
S2-00-HTTP.pptxS2-00-HTTP.pptx
S2-00-HTTP.pptx
 
S2-02-PHP-objet.pptx
S2-02-PHP-objet.pptxS2-02-PHP-objet.pptx
S2-02-PHP-objet.pptx
 
S2-01-PHP.pptx
S2-01-PHP.pptxS2-01-PHP.pptx
S2-01-PHP.pptx
 

Inf_theory_lect3.pdf

  • 1. Théorie de l’information Chap : Codes Cycliques Rhouma Rhouma https://sites.google.com/site/rhoouma École Supérieure d’Économie Électronique Avril 2015 1 / 29
  • 2. Plan 1 Codage 2 Contrôle de Parité 3 Décodage 4 Matrice génératrice d’un code cyclique 5 Codes cycliques usuels 6 Erreurs en Rafales 2 / 29
  • 3. Codage Plan 1 Codage 2 Contrôle de Parité 3 Décodage 4 Matrice génératrice d’un code cyclique 5 Codes cycliques usuels 6 Erreurs en Rafales 3 / 29
  • 4. Codage Propriétés Les codes cycliques sont des codes linaires : la somme de deux mots de code est un mot de code. toute rotation circulaire d’un mot de code est un mot de code le message binaire m est noté d’une façon polynomiale m(x). Ex : m= (101) est décrit par m(x) = 1 · x0 + 0 · x1 + 1 · x2 = 1 + x2 de même le mot de code C de longueur k est décrit par C(x) de degré n-1 Polynôme générateur g(x) de degré n − k factorise tous les mots de code et est décrit : g(x) = xn−k + gn−k−1 · xn−k−1 + gn−k−2 · xn−k−2 + . . . + g1 · x + 1 4 / 29
  • 5. Codage Codage d’un code cyclique le mot de code C s’écrit sous forme systématique : C = [b0b1 . . . bn−k−1m0m1 . . . mk−1] C est décrit polynomialement par : C(x) = b0+b1·x+bn−k−1·xn−k−1+m0·xn−k +m1·xn−k+1+. . .+mk−1·xn−1 le polynôme générateur g(x) factorise tous les mots de codes donc : C(x) = Am(x) · g(x) On peut écrire xn−k · m(x) = Am(x) · g(x) + b(x) avec b(x) = b0 + b1 · x + . . . + bn−k−1 · xn−k−1 c’est comme si b(x) était le reste d’une division euclidienne du polynôme xn−k · m(x) par g(x). 5 / 29
  • 6. Codage Algorithme de codage 1 multiplier m(x) par xn−k 2 diviser par g(x). il reste b(x) 3 ajouter b(x) à xn−k · m(x) pour trouver C(x) 6 / 29
  • 7. Contrôle de Parité Plan 1 Codage 2 Contrôle de Parité 3 Décodage 4 Matrice génératrice d’un code cyclique 5 Codes cycliques usuels 6 Erreurs en Rafales 7 / 29
  • 8. Contrôle de Parité Contrôle de Parité On définit un polynôme de parité h(x) qui vérifie : g(x) · h(x) mod (xn + 1) = 0 Parmi tous les polynômes h(x) possibles, on choisit celui qui a le degré minimal : g(x) · h(x) = xn + 1 Puisque le degré de g(x) est n-k, donc le degré de h(x) = k Choix des polynômes g(x) et h(x) : 1 factorisation : pour un code(n,k), on factorise xn + 1 en polynôme primitifs : xn + 1 = P1(x)P2(x) . . . 2 choix de g(x) : on forme le polynôme g(x) de degré n-k 3 le reste des produits des polynômes est h(x) de degré k 8 / 29
  • 9. Contrôle de Parité Exemple pour un code ( 7 ,4 ) : x7 + 1 = (x + 1)(x3 + x2 + 1)(x3 + x + 1) Nous avons ici deux possibilités de choix de g(x) et donc de h(x) : 1 g(x) = (x3 +x2 +1) =⇒ h(x) = (x+1)(x3 +x+1) = (x4 +x3 +x2 +1) 2 g(x) = (x3 +x +1) =⇒ h(x) = (x +1)(x3 +x2 +1) = (x4 +x2 +x +1) 9 / 29
  • 10. Contrôle de Parité Syndrome En cas d’erreur de transmission, nous recevons un mot de code Y(x) qui ne correspond à aucun message. Y(x) = C(x) + E(x) où E(x) est le polynôme de l’erreur. Syndrome : S(x) = Y(x) · h(x)mod(xn + 1) = E(x) · h(x)mod(xn + 1) Une table des erreurs permet de remonter au polynôme d’erreur de transmission et la correction des erreurs se fait toujours au sens du maximum de vraisemblance : C∗(x) = Y(x) + E∗(x). 10 / 29
  • 11. Contrôle de Parité exemple En poursuivant avec l’exemple déjà utilisé code (7,4) et : g(x) = 1 + x + x3 h(x) = 1 + x + x2 + x4 et m = [1011] =⇒ m(x) = 1 + x2 + x3 =⇒ C(x) = 1 + x3 + x5 + x6 =⇒ C = [1001011] vérification : C(x) · h(x) = (1 + x3 + x5 + x6) · (1 + x + x2 + x4) = 1 + x3 + x5 + x6 +x + x4 + x6 + x7 +x2 + x5 + x7 + x8 +x4 + x7 + x9 + x10 = 0 mod (x7 + 1) 11 / 29
  • 12. Contrôle de Parité Supposons une erreur de transmission E = [0001000] =⇒ Y = [1000011] =⇒ Y(x) = 1 + x5 + x6 calcul du syndrome : Y(x) · h(x) = (1 + x5 + x6).(1 + x + x2 + x4) = 1 + x + x2 + x4 +x5 + x6 + x7 + x9 +x6 + x7 + x8 + x10 = 1 + x3 + x4 + x5 = S(x) = E(x) · h(x) = x3 · (1 + x + x2 + x4) on voit bien que le syndrome dépend seulement de l’erreur et non du message ou mot de code : S(x) = E(x) · h(x) = Y(x) · h(x) on peut dessiner une table d’erreur/syndrome pour accélérer la décision du récepteur. donc même Alg de décodage que les codes de bloc linéaire, seulement le calcul est polynomial 12 / 29
  • 13. Contrôle de Parité Remarque à propos du syndrome Le syndrome est décrit par : S(x) = Y(x) · h(x)mod(xn + 1) = E(x) · h(x)mod(xn + 1) on peut utiliser un autre syndrome équivalent si on divise toute l’égalité par le polynôme h(x) : le nouveau syndrome est noté S0(x) : S0 (x) = Y(x) mod g(x) = E(x) mod g(x) on peut travailler avec l’une des deux définitions on définit donc deux algorithmes de décodage : l’un avec S(x) et l’autre avec S0(x). 13 / 29
  • 14. Décodage Plan 1 Codage 2 Contrôle de Parité 3 Décodage 4 Matrice génératrice d’un code cyclique 5 Codes cycliques usuels 6 Erreurs en Rafales 14 / 29
  • 15. Décodage Algorithme de décodage 1 1 Reception d’un mot de code Y(x). 2 calcul du syndrome associe S(x) = Y(x) · h(x)mod(xn + 1). 3 construction d’une table d’erreur/syndrome par S(x) = E(x) · h(x)mod(xn + 1) 4 avec la table d’erreurs et le syndrome calculée à l’étape 2), calcul de l’erreur la plus vraisemblable E∗(x). 5 calcul du mot de code le plus vraisemblable : C∗(x) = Y(x) + E∗(x) et donc sous forme binaire C∗ 6 Extraction du message X∗ de C∗. 15 / 29
  • 16. Décodage Algorithme de décodage 2 1 Reception d’un mot de code Y(x). 2 calcul du syndrome associe S(x) = Y(x) mod g(x). 3 construction d’une table d’erreur/syndrome par S(x) = E(x) mod g(x) 4 avec la table d’erreurs et le syndrome calculée à l’étape 2), calcul de l’erreur la plus vraisemblable E∗(x). 5 calcul du mot de code le plus vraisemblable : C∗(x) = Y(x) + E∗(x) et donc sous forme binaire C∗ 6 Extraction du message X∗ de C∗. 16 / 29
  • 17. Décodage Exemple avec algorithme de décodage 2 1 Reception de Y(x) = 1 + x5 + x6 2 Calcul du syndrome : S0(x) = Y(x) mod g(x) = x + 1 3 table d’erreur : Position Erreur Syndrome 0 1 1 1 x x 2 x2 x2 3 x3 x + 1 4 x4 x2 + x 5 x5 x2 + x + 1 6 x6 x2 + 1 4 D’après la table d’erreur, S0(x) = x + 1 correspond à E∗(x) = x3 5 Le mot de code correct est C∗(x) = Y(x) + E∗(x) = 1 + x3 + x5 + x6. D’où C∗ = [1001011] 6 le message est donc les k=4 derniers bits m∗ = 1011 17 / 29
  • 18. Matrice génératrice d’un code cyclique Plan 1 Codage 2 Contrôle de Parité 3 Décodage 4 Matrice génératrice d’un code cyclique 5 Codes cycliques usuels 6 Erreurs en Rafales 18 / 29
  • 19. Matrice génératrice d’un code cyclique Matrice génératrice d’un code cyclique Puisque le décalage circulaire d’un mot de code est un mot de code, on peut générer une matrice génératrice G∗ d’un polynôme générateur g(x) : G∗ =         ← g(x) → ← x · g(x) → ← x2 · g(x) → ← x3 · g(x) → . . . . . .         comme exemple avec g(x) = 1 + x + x3 : G∗ =     1 1 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1     19 / 29
  • 20. Matrice génératrice d’un code cyclique pour faire apparaître un code systématique, faire une combinaison linéaire des lignes de G∗ : Ligne 1 ←− Ligne 1 Ligne 2 ←− Ligne 2 Ligne 3 ←− Ligne 3 + Ligne 1 Ligne 4 ←− Ligne 4 + Ligne 1 + Ligne 2 Ce qui va donner G =     1 1 0 1 0 0 0 0 1 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 0 1     on peut verifier que g(x) et G génèrent le même mot de code C(x) = 1 + x3 + x5 + x6 ou C = [1001011] du message m=[1011] ou m(x) = 1 + x2 + x3 20 / 29
  • 21. Codes cycliques usuels Plan 1 Codage 2 Contrôle de Parité 3 Décodage 4 Matrice génératrice d’un code cyclique 5 Codes cycliques usuels 6 Erreurs en Rafales 21 / 29
  • 22. Codes cycliques usuels Code de Golay c’est un code (n,k) = (23,12) x23 + 1 = (1 + x)(1 + x + x5 + x6 + x7 + x9 + x11 )(1 + x + x4 + x5 + x6 + x10 + x11 ) le polynôme générateur est : g(x) = 1 + x + x5 + x6 + x7 + x9 + x11 sa distance minimale dmin = 7 il peut donc détecter et corriger les erreurs triples ! le code de Golay est unique dans son groupe et ne peut être généralisé 22 / 29
  • 23. Codes cycliques usuels Codes BCH (Bose-Chaudrui-Hocquenqhem) code avec n = 2m − 1 basé sur le calcule dans le corps de Galois k est choisi de façon à que k ≥ n − m · t avec t est le nombre des erreurs détéctables et corrigeables la distance minimale sera toujours dmin ≥ 2t + 1 Ces codes permettent des longueurs de code très variées et offrent de nombreuses possibilités d’efficacité de code k/n. . Les coefficients des polynômes générateurs sont tabulés dans de nombreux ouvrages, la longueur des polynômes générateur devenant très grande, ces tables fournissent les jeux de coefficients en utilisant un format octal par ordre décroissant Exemple : code (31,26 ), t = 1 , coefficients 45 en octal soit 100 101 donc g(x) = x5 + x2 + 1 utilisé dans les CD, DVD, disque dur, les codes à bare 23 / 29
  • 24. Codes cycliques usuels Codes RS (Reed-Solomon) Codes non binaire n=k+2t et n = 2m − 1. avec m : nombre de bits par symbole et k : nb de symbole d’information. 2t=nombre de symboles de controle Reed solomon peut corriger (n-k)/2 erreurs utilisé dans le stockage de données en CD avec RS(32, 28) et en DVD avec RS(182,172) utilisé en transmission par satellite en DVB avec RS( 204,188) utilisé en ADSL avec RS(204,188) 24 / 29
  • 25. Erreurs en Rafales Plan 1 Codage 2 Contrôle de Parité 3 Décodage 4 Matrice génératrice d’un code cyclique 5 Codes cycliques usuels 6 Erreurs en Rafales 25 / 29
  • 26. Erreurs en Rafales Erreurs en Rafales Les codes de bloc linéaires et cycliques sont efficaces pour corriger des erreurs simples ou doubles dans un mot de code et ils peuvent corriger des erreurs multiples dans un mot de code Mais si pendant la transmission (ou dans un CD erroné ) il peut y arriver des erreurs en rafale (burst errors), tout le mot de code est erroné ou effacé : canal sans fils avec évanouissement, cassure ou brûlure dans un CD. Les corrections des bits simples ou doubles ne peuvent pas trop aider 26 / 29
  • 27. Erreurs en Rafales Solution : entrelacement ne pas transmettre les données dans leur ordre normal dans la fig à gauche, les bits sont transmis séquentiellement. et donc des erreurs en rafales (B-its) vont domager tout le mot de code transmis en continu (B Bits erronés) dans la fig à droite, le fait d’entrelacer les bits des mots de codes va séparer les erreurs en rafales en des erreurs simples (1 seule erreur dans B mot de codes differents chacun) ! 27 / 29
  • 28. Erreurs en Rafales Interleaving : Entrelacement Autre utilisation de l’entrelacement entre le codage canal et la modulation le canal mobile présente deux caractéristiques : présence de Rafale d’erreurs (burst) le codeur de convolution ne peut gérer les burst d’erreurs (due au fading multi-trajets, ou disque défectueux ds le cas de CDROM) entrelacer ou brasser l’ordre des bits encodés après le codeur canal pour rompre les burst d’erreurs durant la transmission. 28 / 29
  • 29. Erreurs en Rafales Demonstration de l’effet de linterleaving sur un burst d’erreurs 29 / 29