Vous êtes sur la page 1sur 29

PASCAL DJIKNAVORIAN

Codes de Reed-Solomon
tude et simulation

GEL 66680
Thorie & Pratique
des
Codes Correcteurs

Facult des Sciences et de Gnie


UNIVERSIT LAVAL
QUBEC

AVRIL 2007

c
Pascal
Djiknavorian, 2007

Table des matires


Table des matires

ii

1 Introduction
1.1 Objectifs, structure et contenu . . . . . . . . . . . . . . . . . . . . . . .
1.2 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Quoi ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1
1
1
2

2 tudes de codes de Reed-Solomon


2.1 Thories, dfinitions, et proprits . . . . . . . . . . . . . . . . . .
2.2 Modle de communication avec codage . . . . . . . . . . . . . . .
2.2.1 Processus de communication . . . . . . . . . . . . . . . . .
2.2.2 Thorme de Shannon (Thorie de linformation) . . . . .
2.2.3 Problme principal du codage . . . . . . . . . . . . . . . .
2.3 Gnralits sur les codes de Reed-Solomon . . . . . . . . . . . . .
2.3.1 Avantages des codes de Reed-Solomon . . . . . . . . . . .
2.3.2 Proprits . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.3 Polynmes gnrateurs . . . . . . . . . . . . . . . . . . . .
2.4 Encodage de codes de Reed-Solomon . . . . . . . . . . . . . . . .
2.4.1 Circuit dun encodeur cyclique non binaire . . . . . . . . .
2.5 Dcodage de codes de Reed-Solomon . . . . . . . . . . . . . . . .
2.5.1 Calcul des syndromes . . . . . . . . . . . . . . . . . . . . .
2.5.2 valuation du polynme de locations derreurs . . . . . . .
2.5.3 valuation des racines du polynme de locations derreurs
2.5.4 Poids des erreurs dtectes (Algo de Forney) . . . . . . . .
2.6 Notions volues codes de Reed-Solomon . . . . . . . . . . . . . .
2.6.1 Codes de Reed-Solomon Gnraliss . . . . . . . . . . . . .
2.6.2 Codes de Reed-Solomon rduits . . . . . . . . . . . . . . .
2.6.3 Codes RS vue avec les transformes de fourier . . . . . . .
2.6.4 Codes RS avec alternance de codage . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

4
4
5
5
5
6
6
6
6
7
8
8
8
9
10
11
12
12
12
12
13
13

3 Simulations de codes de Reed-Solomon


3.1 La programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14
14

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

Table des matires


3.2

.
.
.
.
.
.
.

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

Objectifs, structure et contenu

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

Fig. 1.1 Sonde Voyager 2 de la NASA

Approximativement la mme poque, Reed et Solomon ont dvelopp et publi leurs


travaux sur une famille de codes qui portera leur noms : les codes de Reed-Solomon [5].
Les codes de Reed-Solomon aurait t dcouvert plustt dans le contexte des matrices
orthogonales par Bush en 1952 dans [4].
Les codes de Reed-Solomon ont trouvs applications dans le monde de la conservation dinformations numrique, ainsi que dans les systmes de communication. On
retrouve par exemple le code RS(255,233,33) qui est utilis par la NASA2 dans les
communications spatiales. Diffrentes versions sous le corps de galois binaire exposant
huit (GF (28 )) se retrouve dans les disques compacts, dvd, transmission HDTV, et puis
dautres versions sous (GF (27 )) sont retrouvs dans les modems cables entre autres.
Malgr larriv des codes Reed-Solomon, le monde pris bien du temps avant son utilisation, le problme de lpoque tait de trouver des algorithmes de dcodage efficace, ce
que Berlekamp fit [11], puis Massey fit quelques amliorations dans [13]. Peterson [15]
et Sugiyama [2] ont galement contribu avec leurs algorithmes de dcodages.

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

La photo 1.1 est de la NASA et est du domaine publique.

Chapitre 1. Introduction

communication affecte, de faon volontaire ou pas, de faon gnralement alatoire et


inconnu linformation que lon tente de transmettre. Il laffecte de faon faire que
lorsquun lecteur lira linformation au point B, il sy trouvera des erreurs avec une certaine probabilit3 . Le codage, en gnral, tente de solutionner les erreurs de dcodage
de linformation reu. La faon classique est de rajouter de linformation au message
envoy qui se trouve a tre le rsultat dune fonction mathmatique du contenu du
message que lon veut transmettre. Au plus simple, il peut tre une simple rptition
du message, et au plus complexe, bien, il ny a pas de limite la complexit du codage,
mais souhaitant transmettre un minimum de quantit dinformations, on se cr une
limite.
Les codes de Reed-Solomon peuvent tre vu comme tant un polynme reprsentant
linformation transmettre qui a subit un surchantillonnage, ce qui cr de linformation de redondance requise pour la correction derreurs. Ainsi, par le surchantillonnement, on a un surplus dinformations qui permettra de corriger les portions errones.
Les codes de Reed-Solomon sont bass sur un thorme dalgbre linaire disant que
lon peut dfinir de faon unique k points distinct par un polynme de degr k 1 au
plus.

Attention, on ne dit pas avec une probabilit certaine, mais bien une certaine probabilit.

Chapitre 2
tudes de codes de Reed-Solomon

2.1

Thories, dfinitions, et proprits

Information (message) : lment de connaissance susceptible dtre cod pour


tre conserv, trait ou communiqu.
Transmission : Envoie dune information dun point un autre ; communiquer.
Canal de communication : Voie par laquelle voyage linformation : moyen de
communication.
metteur : Station dmission de signaux porteurs dinformation.
Rcepteur : Appareil recevant un signal et le transformant en information.
Encodage : Transformation dun message en vue dune transmission de qualit.
Code : Un langage L sur un alphabet A est un code seulement sil nexiste pas
deux factorisations diffrentes dans lensemble des mots de A avec des mots de L.
Codage : Soit L et M deux langages ; un codage c de L dans M est un morphisme
injectif. En dautres termes, cest une fonction entre les mots de L et ceux M,
o tout mot de L est associ un unique mot de M et tel que le codage de la
concatne soit gale la concatne des codages.
Dcodage : Traduire, comprendre un message, une information encode.
Dtection derreur : Opration permettant de dterminer les erreurs quaurait
pu subir une information.
Correction derreur : Retrait des erreurs dtectes dans linformation.
Thorie de linformation : tude du processus de communication, des divers
facteurs qui rgissent la transmission et la rception de signaux.

Chapitre 2. tudes de codes de Reed-Solomon

Fig. 2.1 Modle de processus de communication

Transmetteur :

Encodeur :

envois dun
message

gnre un mot-code
partir du message

2.2
2.2.1

Rcepteur :

Dcodeur :

rception du
message

corrige les erreurs et


rtablis le message

Canal de
communication
des erreurs peuvent
survenir

Modle de communication avec codage


Processus de communication

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.

Canal de communication (Canal symmtrique binaire)


Le modle du canal symmtrique binaire est une modlisation dun canal o linformation y circulant sont des bits, ayant une probabilit p dtre mal interprt la
rception. Donc, une probabilit p que le bit en rception, soit linverse du bit mis.

2.2.2

Thorme de Shannon (Thorie de linformation)

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

Chapitre 2. tudes de codes de Reed-Solomon

2.2.3

Problme principal du codage

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

Gnralits sur les codes de Reed-Solomon


Avantages des codes de Reed-Solomon

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

Chapitre 2. tudes de codes de Reed-Solomon

Pour tout entier positif t, tel que t 2m 1, il existe un code RS en mesure de


corriger t symboles, pour des symboles parmi GF (2m ), et ayant les paramtres suivant :

n = 2m 1
n k = 2t
k = 2m 1 2t
= 2t + 1 = n k + 1

dmin

(2.1)

o n correspond au nombre de symbole dun mot code, k correspond au nombre de


symbole du segment de parit, et enfin, o dmin correspond la distance minimale.

2.3.3

Polynmes gnrateurs

Polynme gnrateur de mot code


Gnrateur de mots code sous forme algbrique (g(x)), sous reprsentation polynmiale, qui une fois multipli par la reprsentation polynmiale du message transmettre
(m(x)), gnrera le mot code correspondant au message (c(x)). Ainsi nous avons donc
la formulation suivante :

c(x) = g(x)m(x).

(2.2)

Polynme gnrateur pour RS


Lquation (2.3) correspond au polynme gnrateur de Reed-Solomon ainsi qu la
manire de le construire. En effet, il ny a qu prendre les produits des binmes pour
(x + i ), pour les i allant de 1 jusqu 2t. On note que dans cette construction, les i
correspondront aux racines du polynme g(x), et o les gi sont des symboles membre
de GF (2m ).

g(x) = (x + 1 )(x + 2 ) (x + 2t )
= g0 + g1 x + g1 x2 + + g2t1 x2t1 + x2t

(2.3)

Chapitre 2. tudes de codes de Reed-Solomon

2.4

Encodage de codes de Reed-Solomon

Pour un message m(x) = m0 +m0 x+ +mk1 xk1 o nous avons la reprsentation


polynmiale dun message encoder. Nous avons les mi GF (2m ) ainsi que k = n 2t.
Nous devons dabords multiplier m(x), le message transmettre, par x2t procdant
ainsi un dcallage. Ce dcallage permettra dinsrer le polynme de parit. Une fois
que lon a en main x2t m(x), nous procdont sa division par le polynme gnrateur
de mots codes g(x) trouv pralablement.
Nous avons donc maintenant lquation 2.4, o b(x) reprsente le reste.
x2t m(x) = a(x)g(x) + b(x)
b(x) = b0 + b1 x + + b2t1 x2t1

(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 :

b(x) + x2t1 m(x).

2.4.1

(2.5)

Circuit dun encodeur cyclique non binaire

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

Dcodage de codes de Reed-Solomon

Toutes les versions dalgorithme principal de dcodage des codes de Reed-Solomon


sont similaire lnumration suivante. Ce sera suivis dune version un peu plus mathmatique. Enfin, dans les sections subsquentes nous reverrons le tout avec quelques
dtails supplmentaires.

Chapitre 2. tudes de codes de Reed-Solomon

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

Calcul des syndromes

Pour un message reu r(x), o r(x) = r0 + r1 x1 + + rn1 xn1 , sachant que


le polynme gnrateur, tel que vu plus haut, comporte les racines 1 , 2 , , 2t , et
puisque c(i ) = m(i )g(i ) pour des i allant de 1 2t, nous avons la relation suivante :

Chapitre 2. tudes de codes de Reed-Solomon

r(i ) = c(i ) + e(i ) = e(i );


Pn1
e(i ) = j=0
ej ij .

10

(2.6)

Circuit dun valuateur de syndrmes pour codes RS


Il vous est possible de consulter [21] afin dy trouver en page 174 la figure 6.14,
deux shmas servant la structure dun circuit valuateur de syndrmes pour codes
de Reed-Solomon. Des explications dtailles vous sont prsents dans les pages aux
alentours selon le concept que vous souhaiteriez clairer.

2.5.2

valuation du polynme de locations derreurs

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 Peterson (RS binaire)


Tel que mentionn lors de la prsentation audio-visuelle, lalgorithme de Peterson
peut servir trouver le polynme locateur derreur. Toutefois, il est efficace que pour
des petit nombre derreurs pour r(x). La complexit de lalgorithme se trouverait
O(n3 ).
Il vous est possible de consulter le volume de T.K. Moon, [23] pour en dcouvrir
les dtails. Il se trouverait galement un exemple pour un cas simple dans les notes
de cours [18]. Rien de spcifique par rapport ces prsentations ne pourrait vous tre
rvl en supplment ici.

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-

Chapitre 2. tudes de codes de Reed-Solomon

11

tation, lauteur essay de trouver une autre mthodologie pour sa reprsentation,


cette dernire sera tir de la construction des LF SR, (Linear Feedback Shift Register ),
communment dsign par registre dcalage (RAD), dans la langue de Molire. On
mettra profit sa reprsentation polynmiale, et bien videmment on notera galement
que ce type de vision de lalgorithme est prfr dans les systmes implmentation
matrielle.

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

valuation des racines du polynme de locations derreurs

Lvaluation des racines du polynme de locations derreurs pour un code RS


grand nombre derreur corrigeable possible, cest dire lorsque le polynme de location
derreur est de degr lev, se fait prfrablement avec la Chien Search. Elle consiste
simplement prendre notre polynme de location derreur (x) et dessay des x = i

Chapitre 2. tudes de codes de Reed-Solomon

12

pour des i allant de 1 q m 1. Lorsque (i ) = 0, cest simplement que i correspond


une de nos racines. Plus de dtails sont disponibles en page 249 de [23].

2.5.4

Poids des erreurs dtectes (Algo de Forney)

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)

Notions volues codes de Reed-Solomon


Codes de Reed-Solomon Gnraliss

Selon la dfinition de code de Reed-Solomon Gnralis donne par [3], le code de


Reed-Solomon prsentement utilis et montr dans le prsent document prsent serait
dj un code de Reed-Solomon gnralis. Il est probable que la dfinition du code
Reed-Solomon utilise soit incluse dans la dfinition gnrale, mais possde quelques
particularits, ces dernires, si elles existent, nont pu tre trouv, et nont pas t
enseigns lauteur du prsent document.

2.6.2

Codes de Reed-Solomon rduits

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

et possibilit derreurs supplmentaires

Chapitre 2. tudes de codes de Reed-Solomon

2.6.3

13

Codes RS vue avec les transformes de fourier

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

Codes RS avec alternance de codage

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.

Chapitre 3. Simulations de codes de Reed-Solomon

3.2.1

15

Taux de SER en fonction du p du BSC pour diffrents cas

Cette premire simulation nous dmontrera lvolution du taux de SER (taux de


symboles en erreurs) en fonction de la probabilit derreur du canal symtrique binaire
qui sera vari de 0 0.99, par pas de 0.05, pour diffrent cas de codes RS. Ces derniers
sont tous pour des transmissions de 10 mots la fois dans le BSC pour des longeurs
variant selon m, (puisque n = 2m + 1 pour des mots pris parmi GF (2m ), et o K
est choisi. On peut obtenir la capacit de correction du code (t), via le calcul o t =
(n k)/2.
Nous avons diffrent cas pour des m allant de 3 5 seulement avec deux k diffrent
pour chacune des possibilits testes de m.

3.2.2

Taux de SER en fonction du p du BSC pour deux cas

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

Rsultats des simulations

3.4

Analyse des rsultats

3.4.1

Au sujet de la figure 3.1

On remarque trois points important au niveau de cette simulation : la position


relative des courbes de m diffrents, la position relative des courbes de m identique,
puis la position de la courbe m = 3, k = 5.

Chapitre 3. Simulations de codes de Reed-Solomon

16

Fig. 3.1 Taux de SER en fonction du p du BSC pour diffrents cas


SER en fonction du p du BSC

1
0.9

Taux derreur de symbol (Symbol error rate)

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

Probabilit derreur p du Canal Symtrique Binaire

Fig. 3.2 Taux de SER en fonction du p du BSC pour deux cas


SER en fonction du p du BSC pour deux cas avec un K = 3

0.01

Taux derreur de symbole (Symbol error rate)

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

Probabilit derreur p du BSC

0.35

0.4

0.45

0.5

Chapitre 3. Simulations de codes de Reed-Solomon

17

Pour expliquer le comportement de la courbe m = 3, k = 5, lauteur na trouv


dautre hypothse que celle que le grand nombre de symboles de parit par rapport
au nombre de symbole de message est lui aussi sujet des erreurs de transmission et
pourrait tre grandement affect de faon correctement empcher un dcodage de
qualit.
La position relative des courbes de m identique semble indiqu, daprs linterprtation de lauteur, simplement que la variation de la quantit de symboles de parit
pour ces cas prcis na pas deffet sur la qualit de la transmission. Ce qui rvle quil
vaudrait mieux dans ces cas prendre des matrices de parits de dimension infrieur pour
viter leur calculs. Par contre, tant donne la mthode pour calculer ces derniers, il
ny aurait pas davantage notable moins que le logiciel de simulation soit en mesure
dutilis quelques optimisations doprations matricielles1 .
Lauteur na pu expliquer ce moment-ci la position relative des courbes pour diffrents m, cest pourquoi il a prfr une seconde simulation dun cas simplifi minimal
(K = 3, nw = 1, p = 0 : 05 : 0.50) que lon retrouvera en la figure 3.2, et expliqu la
section suivante.

3.4.2

Au sujet de la figure 3.2

Deux problmatiques sont remarqus lors de la visualisation de cette figure : tout


dabords, les anomalies au niveau de la fluidit de la courbure, puis, la position dominante de la courbe pour m = 10 par rapport la courbe m = 3.
Le premier cas sexplique simplement dun compromis qu d tre fait tant donn
la dure de la simulation et le manque de temps2 : cest que lon a ralis un trop petit
nombre de simulation que ce qui aurait t requis. Donc si la simulation pourrait tre
refaite, ce serait un point revoir.
Concernant le second point, concernant la dominance de la courbe de m = 10 par
rapport m = 3 qui tait plustt innatendu daprs lauteur. Il lexplique par le fait
quayant maintenu la dimension du problme fixe, la matrice de parit na donc pas t
ajust pour un plus grand nombre de bits transmis. En effet, lors que m = 10, nous
avons des symboles choisis parmi GF (2m ), ce qui ncessite bien videmment plus de
ce qui est fort probablement le cas !
La simulation pour la figure prcdante avait pris une journe et mobilisant la totalit des ressources
de lordinateur : un celeron ! On ne pouvait se permettre autant une seconde fois afin de pouvoir faire
avancer le prsent rapport.
1
2

Chapitre 3. Simulations de codes de Reed-Solomon

18

bits. Et puisquayant plus de bits transmettre, il y a bien plus dutilisation du canal


symmtrique binaire, qui est en mesure daffect chacune des bits transmises avec une
probabilit p.
Notez que m = 10 nous donne un message de longeur 1023, ainsi un k = 3 lui
semblera peu significatif. Cest lhypothse qui prvaudra tant que lauteur ne sera pas
en mesure de procder une simulation supplmentaire. Si le temps le permettra, il
rajoutera une telle simulation rapidement en annexe.
Concernant le comportement globale de la courbe, il est comme attendu, similaire
celui prsent la figure 3.1, donc aucune suprise de ce ct.

Chapitre 4
Conclusion

4.1

Bilan

Les simulations demandes par le laboratoire 8 du volume de Moon [23], ne permet


pas de comprendre beaucoup sur les qualits des Codes de Reed-Solomon. En effet, il
ne comporte que limplantation dun encodeur et dcodeur de Reed-Solomon. Cela ne
permet pas de connaitre ses performances relatives par rapport dautres codes, son
efficacit relative, ses qualits et dfauts. Ces points ont t dcouvert par les multiples
lectures et recherches bibliographique sur le sujet des codes de Reed-Solomon. On en
cite dailleurs des qualits, points forts, particularits et applications au courant du
prsent rapport. Les simulations proprement dites raliss dans le cadre de ce projet
nont permis que de connatre les performances relatives que de quelques cas en faisant
varier le cadre du problme (ie. : GF (2m )), la longeur de K (dimension de la matrice
de parit), le nombre de mots envoys dans une transmission, ainsi que la probabilit
derreur du canal symmtrique binaire.
Concernant le cadre du projet : si lest permis de procder des suggestions, des
consignes plus clairs1 de ce qui est voulus ds le dbut aurait t grandement prfrable.
Cela aurait par exemple viter quun tudiant utilise Simulink pour dcouvrir lors de la
prsentation que le comit de correction nen voulait pas. Ou que dautres se dcourage
en voyant lampleur du travail2 ntant pas au fait des connaissances des outils disponibles en codage ne travaillant point dans ce domaine mais ayant tout de mme t trs
fortement encourag et incit suivre le cours.
1
2

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

Annexe A. Code Matlab

A.1

Code pour simulation 1 : main.m

for p = 0.00 : 0.05 : 0.99


serAtemps=0;
serBtemps=0;
serCtemps=0;
serDtemps=0;
serEtemps=0;
serFtemps=0;
fprintf(valeur de p : %f \n, p);
dt = datestr(now, mmmm dd, yyyy HH:MM:SS AM)
for i = 1:1000
%fprintf(valeur de p : %f, valeur de i : %d \n, p, i);
[dcA, NoERRA, SERA, IdERRA, num_errorsA] = simuRS(3,3,10,p);
[dcB, NoERRB, SERB, IdERRB, num_errorsB] = simuRS(3,5,10,p);
[dcC, NoERRC, SERC, IdERRC, num_errorsC] = simuRS(4,5,10,p);
[dcD, NoERRD, SERD, IdERRD, num_errorsD] = simuRS(4,7,10,p);
[dcE, NoERRE, SERE, IdERRE, num_errorsE] = simuRS(5,7,10,p);
[dcF, NoERRF, SERF, IdERRF, num_errorsF] = simuRS(5,9,10,p);
serAtemps = serAtemps +SERA;
serBtemps = serBtemps +SERB;
serCtemps = serCtemps +SERC;
serDtemps = serDtemps +SERD;
serEtemps = serEtemps +SERE;
serFtemps = serFtemps +SERF;
end
sseerrA(round(p*100+1))=serAtemps/1000;
sseerrB(round(p*100+1))=serBtemps/1000;
sseerrC(round(p*100+1))=serCtemps/1000;
sseerrD(round(p*100+1))=serDtemps/1000;
sseerrE(round(p*100+1))=serEtemps/1000;
sseerrF(round(p*100+1))=serFtemps/1000;
end
for i = 1:20
variableA(i) = sseerrA((i-1)*5+1);
variableB(i) = sseerrB((i-1)*5+1);
variableC(i) = sseerrC((i-1)*5+1);
variableD(i) = sseerrD((i-1)*5+1);
variableE(i) = sseerrE((i-1)*5+1);
variableF(i) = sseerrF((i-1)*5+1);
end
p = 0.00 : 0.05 : 0.99;

23

Annexe A. Code Matlab

24

figure;plot(p, variableA, -*, p, variableB, -x,...


p, variableC, -o, p, variableD, -p, p,...
variableE, -v, p, variableF, -^);grid on;

A.2

Code pour simulation 2 : main2.m

for p = 0.00 : 0.05 : 0.5


serAtemps=0;
serCtemps=0;
fprintf(valeur de p : %f \n, p);
dt = datestr(now, mmmm dd, yyyy HH:MM:SS AM)
for i = 1:10
i
[dcA, NoERRA, SERA, IdERRA, num_errorsA] = simuRS(3,3,1,p);
[dcC, NoERRC, SERC, IdERRC, num_errorsC] = simuRS(10,3,1,p);
serAtemps = serAtemps +SERA;
serCtemps = serCtemps +SERC;
end
sseerrA(round(p*100+1))=serAtemps/1000;
sseerrC(round(p*100+1))=serCtemps/1000;
end
for i = 1:20
variableA(i) = sseerrA((i-1)*5+1);
variableC(i) = sseerrC((i-1)*5+1);
end
p = 0.00 : 0.05 : 0.5;
figure;
plot(p, variableA(1:11), -o, p, variableC(1:11), -x);grid on;

A.3

Routine principale de CODEC RS : simuRS.m

function [dc, NoERR, SER, IdERR, num_errors] = simuRS(m,


%m = 3; % Nombre de bits par symb.
%k = 3; % longeur du message
%nw = 4; % Nombre de mots
%p = 0.01; % Probabilit derreur du BSC

k,

nw,

p)

Annexe A. Code Matlab

n = 2^m-1; % longeur mot de code


t = (n-k)/2; % Capacit de correction derreur du code
% Gnration alatoire dun message de K symboles, nw mots
% Encodage sous RS de ce message avec (N,K)
msgw = gf(randint(nw,k,2^m),m);
c = rsenc(msgw,n,k);

% PARTIE QUIVALENTE BSC.M


% VAR SORTIE UTILISEABLE :
% - err : matrice des erreurs binaires
% - num_errors : nombre derreurs binaires
% - msg_in_bruiyant : message encod ayant travers le BSC
array_r = c.x;
msg_coded_bin = (dec2bin(array_r));
err = double(rand(size(msg_coded_bin)) < p);
[hauteur, largeur] = size(msg_coded_bin);
for i = 1: hauteur
for j = 1 : largeur
msg_matrix_bin(i,j) = str2num(msg_coded_bin(i,j));
end
end
nData = double(xor(msg_matrix_bin, err));
for i = 1: hauteur
for j = 1 : largeur
msg_char_bin(i,j) = num2str(nData(i,j));
end
end
dec_in=bin2dec((msg_char_bin));%fliplr
msg_in=gf(dec_in,m);
[element, simpelcol] = size(msg_in);
[line_r, cole_r] = size(array_r);
count = 1;
for j = 1:line_r
for i = 1:cole_r
matrici = msg_in.x;
arraye(j,i) = matrici(count, 1);
count=count+1;
end

25

Annexe A. Code Matlab


end
msg_in_bruiyant = gf(arraye,m);
num_errors = sum(sum(err));
% DCODAGE DU MESSAGE RECU APRES
% ENCODAGE ET TRANSMISSION DANS BSC
[dc,nerrs,corrcode] = rsdec(msg_in_bruiyant,n,k);
% Test derreurs de symboles
% (ne vrifie pas, bits bits: par symboles!
% cest donc un SER, pas un BER que lon obtiens.
[NoERR,SER,IdERR] = symerr(dc.x, msgw.x);

26

Vous aimerez peut-être aussi