You are on page 1of 3

FSE L3

COMMUNICATIONS NUMERIQUES Jan 2010


TP N2: Code dtecteurs et correcteurs d'erreurs D. Achvar

Un canal bruit, un CD ray, ou bien un trou lu ou non lu sur une carte perfore dans les annes
50, l'poque o Richard Hamming travaillait sur un calculateur de faible fiabilit produisent des
erreurs qui se manifestent par le changement d'un tat 0 en un 1 ou d'un 1 en un 0 lors
d'une transmission de donnes numriques. Il existe des mthodes de codage qui permettent de
dtecter la prsence d'une ou plusieurs erreurs dans un mot : il s'agit des codes dtecteurs
d'erreurs. Les mthodes de codages tudies ici permettent la dtection mais aussi la correction
d'erreurs se produisant lors de la transmission de donnes. Nous verrons plus exactement :

Le code de Hamming (version (7,4)) , fond sur un contrle de parit.


Le code convolutif NRNSC (7,5) fond sur une convolution non rcursive.

La premire mthode a dj t aborde en premire anne dans le cadre de son implmentation


sur un circuit logique combinatoire. Il sagit aujourdhui dapprofondir cette tude au niveau
algorithmique et dintroduire celles des codes convolutifs. Tous les fragments de programmes
ncessaires la conduite des manipulations sont disponibles sur Campus EFREI.

Le compte rendu du TP est dposer sur campus la fin de la sance. Le barme des rponses
rdiger est signal en marge du protocole et les questions thoriques (*) sont prparer avant la
sance. Ce barme est conditionn par les validations ponctuelles.

I. CODAGE DE HAMMING

CODAGE (7,4) Dune manire gnrale on associe un message de m bits, k bits de contrle de parit, ce qui
ET CONVENTIONS totalise m+k bits transmettre. Dans lhypothse dune seule erreur par mot de (m+k) bits il faut
SOUS MATLAB distinguer (m+k) possibilits ainsi que labsence derreur. Par consquent, il faut choisir k de sorte
que :
2k m+k+1.

Pour un message M de m=4 bits (b1,b2,b3,b4) il faut donc au moins k=3 bits de parit pour
distinguer m+k=7 occurrences derreur et 1 absence derreur.

Dans ce cas particulier du codage (7,4) le message


cod peut tre reprsent dans le format ci-contre : h1 h2 h3 b1 b2 b3 b4

Chaque bit de hamming hi contrle la parit dun


groupe de 3 bits. Le traitement de donnes sous
MATLAB (schma ci-contre) adopte la convention
suivante :
h1 examine la parit de (b1,b3,b4) h3
h2 examine la parit de (b1,b2,b3)
h3 examine la parit de (b2,b3,b4)

b2 b4
Le code associ au message M peut alors sexprimer
par une relation matricielle de la forme : b3
C= tG.M o :
Lopration daddition est ralise modulo 2 h1
h2 b1
M est le vecteur message de m=4 lignes
C est le vecteur code de n=7 lignes
G une matrice (mxn)

1 1
GENERATION Q0*. Dterminer lexpression thorique de la matrice G
DUN CODE qui gnre le code C partir du message M: C= tG.M.

Q1. Excuter le programme ci-contre et relever les


matrices G et H dans la fentre de commande.
Relever de la mme manire la valeur de G (=tG).
Relever la valeur de C dans la fentre de commande.
Justifier ce rsultat en calculant les bits de parit.
Comparer les vecteurs C1 et C2.
Comparer les vecteurs M et R0. Frag1 : Codage et dcodage

SYNDROME Q2. Le vecteur de syndrome est facilement obtenu avec le


ET CORRECTION produit matriciel Z=H.C.
Excuter le programme ci-contre et relever la valeur
de Z dans la fentre de commande. Commentaires. Frag2 : Dtection derreur, syndrome

3 pts Q3. Nous simulons loccurrence dune erreur sur chaque


bit du message cod C1 ou C2 avec frag3.
Quelle est lopration ralise la ligne 20 ?
Que reprsente le vecteur Z chaque itration ?
Frag3 : Dtection derreur, syndrome
Quelle est la diffrence entre les lignes 20 et 23 ?
Excuter frag3 et relever la valeur de la matrice Zn
dans la fentre de commande.
Comparer Zn et H. Que reprsente chaque colonne de cette matrice ?
Q4. Supposons larriv du code C=t[1 1 1 1 0 1 1] avec
une erreur vidente en b2 que nous souhaitons
intercepter au moyen de frag4. Dsignons le code
corrig par C_corrected.
Quelle est la valeur enregistre par test (ligne 31) ?
3 pts
Complter la ligne 34 et excuter frag4. ?
Relever les sorties C, Z, i, C_corrected et R dans la
fentre de commande. Commentaires.
Validation de Q0 et Q4. Frag4 : Exemple dapplication

CORRECTION PAR Q5. Nous souhaitons ici tabuler la position dune erreur dans les lignes dune matrice P(n+1,n) dont la
TABLE DE DECODAGE premire ligne, compose uniquement de zros indiquera naturellement labsence derreur.
4 pts Excuter le programme ci-contre et relever les
valeurs du scalaire z10. Comparer ces rsultats aux
valeurs de chaque colonne de Zn convertie en
binaire. (Se reporter la rubrique de help sur bi2de(.))
Relever la matrice T en sortie de la fonction
syndtable(.) de MATLAB. Comparer ce rsultat avec P. Frag5: Tabulation de syndromes

Q6. Nous nous plaons nouveau dans le cas de larriv


du code C=t[1 1 1 1 0 1 1] prsentant la mme erreur
en b2. Corrigeons cette erreur avec frag6.
Excuter ce programme et relever toutes ses sorties
dans la fentre de commande. Validation Q5 et Q6.
Frag6 : Exemple de correction par table

II. CODAGE CONVOLUTIF

CODAGE NRNSC (7,5) La structure et le u n vn


ET CONVENTIONS modle en treillis un

00
du codeur sont 00 00
reprsents sur 11
les figures ci-
contre. 01 11 01
Retard Retard
La reprsentation 00
bn unit bn-1 unit bn-2
graphique est un 10
outils trs 10 10
01
performant qui
nous aidera dans
la manipulation
01

10
vn 11 11
de lalgorithme de
dcodage. bn-1 bn-2 bn bn-1
Structure du codeur NRNSC (7,5) muni des polynmes
gnrateurs : G(x)=x2+x+1 et G(x)=x2+1 Modlisation en treillis du codeur NRNSC (7,5)
2 2
Q7*. Sur la structure du codeur, un et de vn dsignent les bn bn-1 bn-2 un vn
bits de contrle lordre n associs aux trois 0 0 0
derniers bits du message coder : bn, bn-1 et bn-2. 0 0 1
Ecrire lexpression de un et de vn en fonction des 0 1 0
chantillons bn, bn-1 et bn-2 du message coder.
0 1 1
Justifier le caractre Convolutif Non-Rcursif et Non-
1 0 0
Sparable de ce code.
Dresser la table de vrit de un et de vn. Comparaison 1 0 1
avec la modlisation en treillis. 1 1 0
Calculer le code thorique associ M=[1 0 0 1]. 1 1 1

Q8. La fonction poly2trellis() de MATLAB assure la conversion de la description mathmatique du code (polynmiale) en
treillis, plus facilement manipulable.
Relever les sorties de la fonction treillis=poly2trellis(3,[7,5]) dans la fentre de commande.
Relever de la mme manire treillis.outputs. Comparer les sorties du treillis celle du codeur (figure ci-dessus)?
Examiner dans la fentre de commande les messages derreur en sorties des fonctions : treillis=poly2trellis(2,[7,5])
et treillis=poly2trellis(4,[7,5]). Quelle est la longueur de contrainte du code ? Comment sont dfinis les polynmes
gnrateurs pour la fonction poly2trellis()?

CODAGE (7,5) Q9. Saisir Frag7 et relever ses sorties.


DECODAGE ET Justifier lencodage avec la fonction convenc().
CORRECTION
Justifier le rsultat du dcodage par application de
3 pts
lalgorithme de Viterbi : Dvelopper le treillis
(utiliser le modle ci-dessous) en faisant apparaitre
les distances de Hamming entre chaque branche et
les symboles un,vn reus squentiellement. Frag7 :
Codage convolutif et dcodage par la mthode de Viterbi

Egalement 00
disponible
Etat
en ligne initial

01

10

11

4 pts Q10. Nous simulons loccurrence dune erreur sur


chaque bit du message cod avec frag8.
Relever les sorties de frag8. Commentaires
Justifier le rsultat du dcodage dun code tel que
codefaux=[1 1 1 0 1 0 1 1] : Dvelopper le treillis en
faisant apparaitre les distances de Hamming comme Frag8 :
Codage convolutif et dcodage par la mthode de Viterbi
en Q9. Validation de Q10.

EXERCICE SUR UN Q11. Quel est le code thorique associ un message tel
MESSAGE PLUS LONG que : M=[1 1 1 0 0 0 0] ? (voir le cours).
3 pts Relever les sorties de frag9 et noter lemplacement
des erreurs dans le vecteur codefaux.
Justifier le rsultat du dcodage par application de
lalgorithme de Viterbi : Dvelopper le treillis
(utiliser le modle ci-dessous) en faisant apparaitre
les distances de Hamming entre chaque branche et Frag9:
Codage convolutif et dcodage par la mthode de Viterbi
les symboles un,vn reus squentiellement.

COMPLEMENT : Q12. Modifier le programme de Q9 pour le codage/dcodage NRNSC(7,6) du mme message. Relever les sorties de ce
CODAGE NRNSC (7,6) programme et justifier ces rsultats en sappuyant sur :
ET DECODAGE La structure du codeur ainsi que ses polynmes gnrateurs.
Le diagramme en treillis du codeur.

POUR EN http://en.wikipedia.org/wiki/Hamming_code
SAVOIR PLUS http://www2.rad.com/networks/1994/err_con/hamming.htm
ET http://fr.wikipedia.org/wiki/Code_correcteur
http://www.cnam.fr/elau/publi/leruyet/Cours/viterbi_animation.pdf
http://wcours.gel.ulaval.ca/2008/h/64486/default/7references/codage_convolutif.pdf

3 3

You might also like