Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Codes de Reed-Solomon
tude et simulation
GEL 66680
Thorie & Pratique
des
Codes Correcteurs
AVRIL 2007
c
Pascal
Djiknavorian, 2007
ii
1 Introduction
1.1 Objectifs, structure et contenu . . . . . . . . . . . . . . . . . . . . . . .
1.2 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Quoi ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1
1
2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4
4
5
5
5
6
6
6
6
7
8
8
8
9
10
11
12
12
12
12
13
13
14
14
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
14
15
15
15
15
15
17
4 Conclusion
4.1 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
19
Bibliographie
20
A Code Matlab
A.1 Code pour simulation 1 : main.m . . . . . . . . . . . . . . . . . . . . .
A.2 Code pour simulation 2 : main2.m . . . . . . . . . . . . . . . . . . . . .
A.3 Routine principale de CODEC RS : simuRS.m . . . . . . . . . . . . . .
22
23
24
24
3.3
3.4
La simulation . . . . . . . . . .
3.2.1 Taux de SER en fonction
3.2.2 Taux de SER en fonction
Rsultats des simulations . . . .
Analyse des rsultats . . . . . .
3.4.1 Au sujet de la figure 3.1
3.4.2 Au sujet de la figure 3.2
iii
. .
du
du
. .
. .
. .
. .
.
p
p
.
.
.
.
. .
du
du
. .
. .
. .
. .
. . . . . . . . . . . . . .
BSC pour diffrents cas
BSC pour deux cas . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Chapitre 1
Introduction
1.1
Le prsent travail a pour but de faire un tour de la thorie des codes correcteurs de
Reed-Solomon [5], de son fonctionnement, des algorithmes principaux de dcodage, et
enfin de deux simulations.1
Nous procderons tout dabords par une revue des notions requises par le codage de
Reed-Solomon. Nous aurons donc alors besoin de notions de base de communication, de
la thorie de linformation de Shannon, du principal problme du codage. Ces notions
seront suivis de notions de codage, plus particulirement des principes de codage de
base, de dfinitions. Nous continuerons ensuite avec les codes de Reed-Solomon. Nous y
verrons, aprs avoir vu des notions de base, les particularits principales. Nous aurons
donc une revue du dcodage et ainsi des diffrents algorithmes utilises
1.2
Historique
Les codes Reed-Solomon sont considrs comme tant un sous groupe de codes
cycliques de la famille des codes BCH. Ces derniers ont t mis au jour par Hocquenghem
[7] autour de 1960, et de faon indpendante par Bose et Ray-Chaudhuri [8, 9]. Les
codes BCH furent gnraliss tous les corps fini par Gorenstein et Zierler dans [10].
Le projet navait pour indication que de ralis le laboratoire 8 du livre [23], mais ce dernier ne
demande que de programmer un codec RS.
1
Chapitre 1. Introduction
1.3
Quoi ?
"Cest quoi les codes Reed-Solomon ?" serait probablement votre premire question
si vous ne savez pas ce que cest. Voici un faon simple de comprendre ce que cest avant
dentammer la version pouss de la rponse cette question. Notez que cela ne constitu
quun aperu de rponse, la rponse clair, complte et dtaill est constitu de la totalit
du prsent document.
Lorsque lon veut transmettre une information dun point A au point B, il transite par ce que lon dsigne comme tant un canal de communication. Ce canal de
2
Chapitre 1. Introduction
Attention, on ne dit pas avec une probabilit certaine, mais bien une certaine probabilit.
Chapitre 2
tudes de codes de Reed-Solomon
2.1
Transmetteur :
Encodeur :
envois dun
message
gnre un mot-code
partir du message
2.2
2.2.1
Rcepteur :
Dcodeur :
rception du
message
Canal de
communication
des erreurs peuvent
survenir
Le modle du processus de communication tel que reprsent la figure 2.1 est une
vue simplifi dun modle globale pouvant atteindre un haut niveau de complexit. Il
est simplifi dans le sens o nous y avons uniquement reprsent le strict ncessaire
concernant les communications avec encodage du message transmettre, puis dcodage
du message reu.
2.2.2
Trs brivement, C.E. Shannon aurait tablis, avec son prdcesseur scientifique,
R.A. Fisher, que plus une information1 est probable, moins elle contiendra dinformation. videmment, linverse, moins une observation sera probable, plus elle comportera
dinformation.
linformation tant dfinit dans ce cas comme tant une vnement possible parmi toutes les
possibilits dvvement dans un contexte prcis.
1
2.2.3
Le but du codage est de trouver le code ayant le plus grand choix de mots codes
de longeur dtermin avec une distance minimal donn maximis pour un alphabet
donne GF (q m ). Notons que dans notre cas, les codes Reed-Solomon, nous avons des
codes MDS2 , soit des codes o la distance minimale est maximis. Cest dailleurs pour
cela, entre autre, que ces codes sont apprcis.
2.3
2.3.1
Pour des corps de Galois GF (q), lorsque lon a besoin de coder des messages de
longeur infrieur q, lencodage de RS est facilement utilisable. Puisque ce sont
des codes MDS, la distance minimum est maximis.
Ils peuvent tre combin ou ajout autres codes afin de raliser des codes plus
efficaces.
Lencodage est assez facile.
Ils sont trs efficace pour la correction derreurs conscutives, quils soient utiliss
seuls ou en conjonction avec dautres codes.3 Bien entendu, cela est valide pour
les cas o le nombre derreur demeure en dea de la capacit de correction du
code employ.
Leurs algorithmes de dcodages sont trs dvelopps.
Pour des corps de Galois GF (q = 2r ), on peut les reprsenter par des codes
binaires puisque chacun des lments de ce corps de Galois peuvent tre reprsent
par une squence binaire de longeur r.
2.3.2
Proprits
Nous poserons tel qutant un lment primitif dans GF (2m ). Notez que lon
travaillera avec des codes RS ayant leurs symboles de GF (2m ).
MDS : Maximum distance separable, i.e. : des codes parfait, ou des codes maximisant la distance
entre les mots codes et ainsi abaissant la probabilit de confusion lors de dcision lors de dcodage.
3
Ce serait dailleurs un des avantages majeurs qui aurait contribu grandement la popularit de
ce code.
2
n = 2m 1
n k = 2t
k = 2m 1 2t
= 2t + 1 = n k + 1
dmin
(2.1)
2.3.3
Polynmes gnrateurs
c(x) = g(x)m(x).
(2.2)
g(x) = (x + 1 )(x + 2 ) (x + 2t )
= g0 + g1 x + g1 x2 + + g2t1 x2t1 + x2t
(2.3)
2.4
(2.4)
Ce reste que lon vient de trouver reprsente en fait le polynme de parit recherch.
Pour le message m(x), le polynme de parit est donc reprsent par b(x), et le message
cod, soit le mot de code, c(x) correspondra :
2.4.1
(2.5)
Il vous est possible de consulter [21] afin dy trouver en page 172, la figure 6.13,
un shma dun circuit dencodage pour un code cyclique non binaire. Des explications
dtaills vous sont prsents dans les pages aux alentours de la figure selon le concept
que vous souhaiteriez clairer.
2.5
1. Calculer les 2t syndromes s0 , s1 , , s2t1 o lon a que les si = r(i ), o r(x) est
le polynme reu. Notez que s0 = 1, et que le polynme des syndrmes s(x) =
s0 + s1 x1 + + s2t1 x2t1 .
2. Le rang de la matrice P nous donne le degr du polynme localisateur derreur.
La matrice P tant la matrice des coefficients lorsque lquation du polynme des
syndromes est vue matriciellement en relation avec les i .
3. valuer le polynme localisateur derreur partir des informations en main.
4. valuer les racines du polynme localisateur derreur. Ces racines, lorsque lon a
leur rciproque, nous donnent les positions des erreurs.
5. La matrice des positions derreurs par la matrice de leur intensit nous donnera
les syndrmes, il nous faudra donc rsoudre ce systme matriciel pour obtenir
lintensit des erreurs.
Considrant le code c(x) = c0 + c1 x + + cn1 xn1 , o ci GF (2m ) que lon envoi
dans un canal de communication, puis le code reu r(x) = r0 + r1 x + + rn1 xn1 , o
ri GF (2m ).
Le polynme derreur est donc alors e(x) = r(x) c(x) o e(x) = e0 + e1 x + +
en1 xn1 o ei = ri ci GF (2m ).
Faisant lhypothse que r(x) comporte l erreurs, le polynme e(x) comportera les
erreurs aux locations xj1 , xj2 , xjl , et donc e(x) = ej1 xj1 , ej2 xj2 , ejl xjl .
Les positions des locations derreurs sont alors Zji = ji pour des i allant de 1
l. Les valeurs de ces erreurs sont de eji , encore une fois pour des i allant de 1 l. Les
codes de Reed-Solomon ont donc en plus des procdures des codes BCH dterminer
la valeur des erreurs trouves.
Sil y a p erreurs deffacement et q erreurs dans le polynme reu r(x), alors un
dcodeur RS(n, k) pourra corriger ces erreurs si on a 2q + p d 1 = n k. Pour
un polynme derreurs deffacement e (x), nous auront donc en rception le polynme
r(x) = c(x) + e(x) + e (x).
2.5.1
10
(2.6)
2.5.2
Avant daller dans la rsolution par les algorithmes possibles dcrits ci-bas, il faut
valuer le nombre derreurs dtects par le code. Ceci peut tre fait par lvaluation
du rang de la matrice des coefficients du systme dquation permettant lobtention
du polynme de locations derreurs. Cette tape nest pas toujours prsent dans la
littrature, ce qui occasionne bien des maux.
Algorithme de Berkelamp-Massey
Connaissant dj lalgorithme prsent par le volume de [23] et ayant constat lors
de la prsentation audiovisuelle que le comit de correction napprcie par sa prsen-
11
Pour i = 0:n
d = P(X) AND s
%bit bit
si d != 0 alors
T(X)=P(X)
P(X)=P(X) XOR Q(X)X^^{i-m}
si 2\lambda <= i alors
\lambda = i + 1 - \lambda
m = i
Q(X)=T(X)
Algorithme de Sugiyama
Lalgorithme de Sugiyama, que vous pouvez retrouver [2], ou, aux pages 182-183
de [23] sest inspir de lalgorithme Euclidien que lon retrouve [2], ainsi quen algorithme 5.1 de [23]. Cest simplement une reprsentation algorithmique dune rsolution
matricielle tel que demand par le point 2 et 3 des tapes dun dcodage de code de
Reed-Solomon. La version matricielle, tant donne les capacits oprationnelles matricielles de Matlab serait prvilgier avec cet outil de calculs mathmatique. Noter
quun algorithme de Sugiyama est galement connu en thorie des graphs, d la diffrence de notations entre les diffrents domaines de la science, lauteur na pu tre en
mesure de dterminer, avec preuve, dans le court laps de temps si cest effectivement le
mme algorithme, mais cest fort probable selon lui.
2.5.3
12
2.5.4
Lalgorithme de Forner tel que dcrit par [23] en page 263, require toutes les informations trouvs prsent, du polynme localisateur derreur ((x)), au polynme des
syndrmes (S(x)), en passant par les racines et leurs rciproques pour (x) ainsi que la
driv sous galois de ce dernier. Lalgorithme se droule grossirement en les deux tapes
reprsents par les deux quations suivante dont la premire permettant de trouver le
polynme valuateur derreur, puis la seconde de dterminer les poids derreurs.
(x) = S(x)(x)(modx2t )
1
eik = (X1
k )/ (Xk )
2.6
2.6.1
(2.7)
2.6.2
Les codes de Reed-Solomon rduit sont en fait des codes o lon a, avant la transmission, regroup et retir les zros, et ainsi viter leur transmission4 . La rception le
saura et rajoutera l o lest requis les 0 ncessaire.
4
2.6.3
13
Blahut [22] aurait t celui qui nonca le premier une telle ide. En fait, ce quil
propose cest quau lieu davoir une reprsentation de n k lment membre du corps
de galois, de reprsenter tout les lment non nul seulement. Cela aura pour effet de
rduire la longeur du code, les dimensions des matrices, le niveau de complexit5 , et
ainsi par le fait mme, la qualit du code.
2.6.4
Les codes de Reed-Solomon avec alternance est en fait une technique amliorant la
capacit de correction de flot conscutif derreur par lalternance de codes pour diffrents
mots cods conscutifs. Ainsi sil y a trois mots cods transmettre, on enverra dabords
le premier symbole du premier mot, suivis du premier symbole du second mot, puis du
premier symbole du troisime, sen suivra le second symbole du premier mot, puis le
second symbole du second mot, et ainsi de suite. Ce exemple dalternance est qualifi
dune profondeur de 3.
temps de travail
Chapitre 3
Simulations de codes de Reed-Solomon
Dans la prsente partie nous aller brivement voir ce que lon a simuler, les rsultats
de simulation, et enfin une courte analyse de ces rsultats de simulations. La programmation est plustt simple, quelques boucles et fonctions appels, il suffira de consulter
lannexe A pour en savoir plus sur ce point particulier.
3.1
La programmation
Le code dvelopp est prsent en lannexe A. Il est bref, simple et efficace et permet
la simulation de quelques cas dont les rsultats sont prsents dans les sections suivantes
avec une simple analyse que lon peut en tirer. Aucune particularit digne de mention
sy prsente, on procde tel quil y est mentionn lappelle des fonctions requises
pour lencodage et le dcodage. On moyenne les taux derreurs, puis on affiche les taux
derreurs de symboles moyens.
3.2
La simulation
Nous avons procd deux simulations dont les rsultats sont prsents aux figures
3.1 et 3.2.
3.2.1
15
3.2.2
Pour cette simulation nous avons restraint les cas essays. Nous voulions plus particulirement visualiser le comportement de lvolution du taux de SER en fonction de
la probabilit derreur du BSC en comparant un cas ayant des mots de code parmi
un petit corps de Galois, avec un cas ayant des mots de code dont les symboles sont
tirs dun corps de galois de plus grande ampleur. Plus particulirement, nous y avons
comparer le comportement dun cas o m = 3, et m = 10. Inutile de vous dire que la
complexit calculatoire tait terriblement augmenter puisque les symboles du second
mot de code sont tirs de GF (210 ), ce qui offre clairement un nombre terriblement lev
de 1024 possibilites.
3.3
3.4
3.4.1
16
1
0.9
0.8
0.7
0.6
0.5
m = 3, k = 3
0.4
m = 3, k = 5
m = 4, k = 5
0.3
m = 4, k = 7
m = 5, k = 7
0.2
m = 5, k = 9
0.1
0
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0.01
0.009
0.008
0.007
0.006
0.005
0.004
0.003
m=3
m=10
0.002
0.001
0
0
0.05
0.1
0.15
0.2
0.25
0.3
0.35
0.4
0.45
0.5
17
3.4.2
18
Chapitre 4
Conclusion
4.1
Bilan
avec les outils permis, ou pas, ainsi que ce qui est notre disposition ou pas
3000 lignes de codes selon [17]
Bibliographie
[1] Wikipedia Avril 2007, Reed-Solomon error correction,
http://en.wikipedia.org/wiki/Reed-Solomon_error_correction
[2] US NAVY, Euclidean Algorithm,
http://web.usna.navy.mil/~wdj/book/node64.html
[3] Hall, J.I., Generalized Reed-Solomon, Michigan State University
http://www.mth.msu.edu/~jhall/classes/codenotes/GRS.pdf
[4] Bush, K. A., Orthogonal arrays of index unity, Ann. Math. Stat. 23, 1952.
[5] Reed, I. S. and Solomon, G., Polynomial codes over certain finite fields, J. Soc.
Ind. Appl. Math., vol. 8, pp. 300304, 1960.
[6] Shannon, C., A Mathematical Theory of Communication, Bell Syst. Tech. J., vol.
27, pp. 379423 and 623656, 1948.
[7] Hocquenghem, A., Codes correcteurs derreurs, Chiffres (Paris) 2 (1959), 147156.
[8] Bose, R. C. and Ray-Chaudhuri, D. K., On a class of error correcting binary group
codes, Inf. Control., vol. 3, pp. 6879, March 1960.
[9] Bose, R. C. and Ray-Chaudhuri, D. K., Further results on error correcting binary
group codes, Inform. and Control 3, pp. 279290, 1960.
[10] Gorenstein, D. C., and Zierler, N., A class of error-correcting codes in pm symbols,
J. SIAM, 9 pp. 207214., 1961.
[11] Berlekamp, E. R., On decoding binary BoseChaudhuriHocquenghem codes, IEEE
Trans. Inf. Theory, vol. IT-11, pp. 577580, October 1965.
[12] Chien, R. T., Cyclic decoding procedure for the BoseChaudhuriHocquenghem
codes, IEEE Tans. Inf. Theory, vol. IT-10, pp. 357363, October 1964.
[13] Massey, J. L., Step-by-step decoding of the BoseChaudhuriHocquenghem codes,
IEEE Trans. Inf. Theory, vol. IT-11, pp. 580585, October 1965.
[14] Forney, G. D., Jr., On decoding BCH codes, IEEE Trans. Inf. Theory, vol. IT-11,
pp. 59557, October 1965.
[15] Perterson,W.W. and Wledon, E. J., Jr., Error-Correcting Codes, 2nd Edition, MIY
Press, Cambridge, Massachusetts, 1972.
Bibliographie
21
[16] Sugiyama, Y., Kasahara, Y., Hirasawa, S., and Namekawa, T., A Method for Solving Key Equation for Goppa Codes, Inf. Control, vol. 27, pp. 8799, 1975.
[17] Annamalai, M., Study and simulation of BCH decoding, Department of Electrical
Engineering, UT Arlington, December 15, 2005.
[18] Chouinard, J.-Y., Notes de Cours - GEL-66680 Thorie et pratique des codes correcteurs, Dpartement de gnie lectrique, U Laval, Janvier, 2007.
[19] Castineira Moreira, J. and Guy Farrell, P., ESSENTIALS OF ERROR-CONTROL
CODING, John Wiley & Sons Ltd, England, 2006.
[20] Morelos-Zaragoza, R. H., The Art of Error Correcting Coding, Second Edition,
John Wiley & Sons Ltd, England, 2006.
[21] Lin, S., Costello D.J. Jr., Error Control Coding : Fundamentals and Applications,
New Jersey : Prentice Hall Inc., 1983.
[22] Blahut, R.E., Algebraic Codes for Data Transmission, Cambridge University Press,
2003.
[23] Moon, T.K., ERROR CORRECTION CODING, Mathematical Methods and Algorithms, New Jersey : John Wiley & Sons, Inc., 2005.
Annexe A
Code Matlab
Mme si cela serait utile pour la comprhension du code, tant donn que le comit de
correction a laiss savoir quil napprcie pas la transcription malgr un rfrencement
et des remerciements, vous tes pri de consulter par vos propres moyens les codes
sources des fonctions Matlab utiliss ainsi que les algorithmes des rfrences montrs en
la section bibliographique. Notez particulirement [17] qui a dvelopp un code complet1
de 3000 lignes pour le ncessaire lencodage, la transmission et le dcodage de codes
BCH simuls. Heureusement que des collgues2 de lauteur lui ont indiqus quelques
fonctions Matlab nbuleuses qui ont fait laffaire pour les Codes RS, sinon il naurait
certainement pas entamm une telle implantation quaurait t inutile3 .
Notez tout de mme que lauteur comprend bien le fonctionnement des routines
Matlab ayant pris soin de lire soigneusement leur contenu. Par exemple, il sait que le
dcodage RS de Matlab utilise lalgoritme de Berkelamp, quil gre les versions Shortened de codes Reed-Solomon, que Matlab possde enfin de compte son propre format
de variable fonctionnant pour les corps de Galois avec tout un ensemble doprateurs
et de proprits, que Matlab a tir son algorithme de Mme Kwong dans un volume de
1995, je vous laisse le soin daller consulter le fichier de Matlab pour lalgorithme et
dcouvrir de vous mme la rfrence. Son code est trs bien crit et trs bien comment,
sa reprise, copie, reproduction est inutile, do lutilisation simple du code fournis par
Matlab.
Le verbose de la sortie en console est plutt long et inutile puisquil nindique que
les temps et numro ditration. Cest pourquoi il na pas inutilement t inclut ici.
qui ne semble pas fonctionn selon mes tests
Mercis cher collgues !
3
la connaissance de lauteur, il nest pas inscrit dans un cours de programmation !
1
2
A.1
23
24
A.2
A.3
k,
nw,
p)
25
26