Vous êtes sur la page 1sur 31

Partie 2

Protection contre les erreurs


Codes par Bloc:

le codage/décodage d’un bloc dépend


uniquement des informations de ce bloc

Deux grandes familles


de codes

Codes Convolutionnels:

le codage/décodage d’un bloc dépend


des informations d’autres blocs
(généralement de blocs précédemment
transmis)
1
Protection contre les erreurs

On préfère généralement le codage par bloc dans les applications téléinformatiques


classiques :
- le codage/décodage est plus simple et il y a moins de délai

Les différents codes par bloc :


- codes linéaires systématique
- codes polynômiaux
- codes simples
- codes linéaires de Hamming
- codes cycliques

2
Protection contre les erreurs
Lors de la transmission d'un train de bits, des erreurs peuvent se produire, c'est à dire
qu'un "1" peut être transformé en un "0" ou réciproquement. On définit le taux d'erreur
par le rapport :

Suivant le type d'application, une erreur peut avoir des conséquences importantes et c'est
pourquoi il convient souvent de mettre en œuvre des dispositifs permettant de détecter les
erreurs et si possible de les corriger.
Il convient de noter à ce sujet que le taux d'erreur dépend de la qualité du support de
transmission (notamment son immunité au bruit).

Les statistiques indiquent que 90% des erreurs proviennent d'un seul bit erroné, c'est à dire
que ce bit erroné est entouré de bits corrects ; 10% des erreurs proviennent de deux bits
adjacents erronés.

On voit donc que le problème prioritaire à résoudre est la détection d'un seul bit erroné
et, si possible, sa correction automatique.
3
Protection contre les erreurs

Dans cet ordre d'idées, on utilise des codes détecteurs d'erreurs :

l'information utile est encodée de manière à lui ajouter de l'information de contrôle ; le


récepteur effectué le décodage et à l'examen de l'information de contrôle, considère que
l'information est correcte ou erronée ; dans le dernier cas, une demande de répétition de la
transmission est effectuée.

4
Protection contre les erreurs

Les codes détecteurs d'erreurs se classent en 2 catégories :

● codes en bloc : Si le bloc est composé de deux partie distinctes (information utile et
information de contrôle) le code est dit systématique.

● codes convolutionnels ou récurrents : la détection des erreurs dans un bloc dépend


des blocs précédents.

5
Protection contre les erreurs

Une notion importante dans la recherche de codes détecteurs ou correcteurs est celle de
distance de Hamming.

•Considérons une information utile constituée de mots de m bits : on peut donc construire 2m
mots distincts au total.

•Définissons l'information de contrôle sous la forme de r bits déduis de manière unique à partir
des m bits utiles . L'information "habillée" en résultant est constituée de n=m+r bits.

•Cependant, avec n bits, on peut avoir 2n mots différents. La différence 2n-2m indique le nombre
de mots erronés.

6
Protection contre les erreurs
La distance de Hamming de deux mots : d(m1, m2) est le nombre de bits différents de
même rang

exemple : m1 = 10110010 m2 = 10000110  d(m1,m2) = 3

2 mots de code seront d'autant moins confondus que leur distance de Hamming sera
plus grande ; on peut définir une distance minimum dmin ; si d(m1, m2) > dmin, alors
m2 est une copie erronée de m1.

7
Protection contre les erreurs
Intéressons-nous maintenant à la correction des erreurs jusqu'à un ordre q ; chaque mot
de code et ses copies "admissibles" doivent être dans des sphères non sécantes :

exemple : la correction des erreurs simples nécessite d min > 2

8
Protection contre les erreurs
Exemples simples de codes par bloc
1). Le contrôle de parité
Parité paire (impaire) : le poids de Hamming des mots du code est pair
(impair)
C’est un code systématique (m, m+1) dans lequel un bit (le bit de parité)
est ajouté au mot initial pour assurer la parité. Son rendement est faible
lorsque m est petit.

Remarque:
Le poids de Hamming d’un mot est le nombre de bits à 1 qu’il contient.
- Exemple : poids_de_Hamming(01001100) = 3

9
Protection contre les erreurs
Exemple :
Transmission de caractères utilisant un code de représentation
(le code ASCII sur 7 bits).
Lettre Code ASCII Mot Codé Mot Codé
(Parité Paire) (Parité Impaire
)
A 01000001 010000010 010000011

C 01000011 010000111 010000110

T 01010100 010101001 010101000


• Ce code est capable de détecter toutes les erreurs en
nombre impair. Il ne détecte pas les erreurs en nombre
pair.

10
Protection contre les erreurs
2). Parité longitudinale et transversale
Association d’un double codage de la parité :
- LRC : “Longitudinal Redundancy Check” et VRC : “Vertical …”
Le bloc de données est disposé sous une forme matricielle (m=a.b). On applique la
parité (uniquement paire) sur chaque ligne et chaque colonne. On obtient une matrice
(a+1, b+1).

11
Protection contre les erreurs
• Capacité de détection et d’autocorrection
– Principe : Une erreur simple modifie simultanément la parité
d’une ligne et d’une colonne.
– Correction : inverser le bit situé à l’intersection de la ligne et
de la colonne ayant une parité incorrecte.

1 0 1 0 0 0 1 1
0 1 1 0 1 0 1 0
1 0 0 0 1 0 1 0

0 1 0 0 1 0 1 1
12
Protection contre les erreurs

Le rendement est faible : a.b / (a+1).(b+1).


Le délai de codage et décodage important : il faut recevoir tout le

bloc

Attention : une erreur triple peut faire croire à une erreur simple et sa correction

sera inadaptée !

Exemple :
10100011
01101010
10001010
01001011

13
Protection contre les erreurs
3).Les codes linéaires

Les codes linéaires sont des codes dont chaque mot du code (noté c) est obtenu après
transformation linéaire des bits du mot initial (noté i).
Ces codes sont caractérisés par leur matrice G(m, n) (appelée matrice génératrice)
telle que :

i . G =c 101 1
10 1 010 1 = 011 0
Exemple : .
110 1

La matrice H(n-m, n) (appelée matrice de contrôle) permet de savoir si un mot reçu


est un mot du code, en calculant son syndrome. Si le syndrome du mot est nul, ce mot
appartient au code.
Syndrome du mot reçu c’ : c’. HT = 0(n-m) <==> c’  C(m, n)

L’équation G . HT = 0 définit la relation entre les deux matrices.

14
Protection contre les erreurs
Si un code linéaire est systématique, sa matrice génératrice s’écrit :
- G(m, n) = [Id(m), P(m, n-m)]
alors sa matrice de contrôle s’écrit : H(n-m, n) = [PT , Id ]
(n-m,m) (n-m)

Exemples :
10001 0
. Soit le code C1(4, 6) de matrice G1 = 01000 1 .
00101 0
00000 1

- Le mot de code c associé au mot initial i= 101 1 1


est le mot c=i.G1 = 10100 1 1
1
. Le code C2(7, 8) associé à la parité paire a pour matrice de contrôle H2 T = 1 .
1
1
1
1

15
Protection contre les erreurs

16
Protection contre les erreurs

17
Protection contre les erreurs

18
Protection contre les erreurs

19
Protection contre les erreurs

20
Protection contre les erreurs

21
Protection contre les erreurs

22
Protection contre les erreurs

23
Protection contre les erreurs
4) Codes de Hamming

24
Protection contre les erreurs
Exemple :
111010 0
- Code de Hamming C4(4, 7) tel que sa matrice de contrôle H 4(3, 7) = 011101 0 .
101100 1

Calculez la matrice génératrice G4 puis les syndromes de c1 = 00101 1 1 ,


de c2 = 0 0 1 0 1 1 0 et de c3 = 0 0 0 1 1 1 1 .
1 0 1
1 1 0
1 0 0 0 1 0 1
T 1 1 1
Le code est systématique, la transposée de H4 : H4 = 0 1 1 donc G4 = 0 1 0 0 1 1 0
0 0 1 0 1 1 1
1 0 0
c1. H4 T = 00 0 --> i1 = 001 0 0 1 0
0 0 0 1 0 1 1

T 0 0 1
c2. H4 = 00 1 --> erreur sur le dernier bit --> i2 = 001 0
T
c3. H4 = 10 0 --> erreur sur le 5ème bit --> i3 = 000 1

25
Protection contre les erreurs
5)Les codes cycliques

Un code cyclique (m, n) est un code linéaire (m, n) tel que toute permutation circulaire d’un mot
du code est encore un mot du code.

Exemple :
• Un code cyclique (1, 2) possède les mots de code suivants : {01, 10} ou {00, 11}, mais pas {01,
11}.
• Un code cyclique (1, 3) possède les mots de code suivants : {000, 111}.
On appelle période du polynôme H(x) le plus petit entier u tel que H(x) divise xu+1.

Un polynôme est irréductible s’il ne possède aucun diviseur de degré supérieur à zéro.

Si la période d’un polynôme irréductible est égale à n-m alors le polynôme est dit primitif.

26
Protection contre les erreurs
Propriétés/autocorrection
Un code cyclique (m, n) est un code polynômial dont le polynôme générateur divise xn + 1. Les

dispositifs de codage et de décodage sont identiques à ceux des codes polynômiaux.

Les codes cycliques sont principalement utilisés pour leur capacité de correction.

Les codes cycliques (m, n) dont le polynôme générateur est primitif et tel que n=2n-m+ 1, sont des
codes de Hamming.

Codes correcteurs performants


Les codes BCH (Bose-Chaudhuri-Hocquenghem) sont ceux qui ont la plus grande capacité de cor-
rection d’erreurs indépendantes pour une redondance et une longueur données. Leur rendement n’est pas
très élevé. Ce sont une extension des codes cycliques, ils sont non pas construit sur un alphabet binaire
mais un alphabet composé d’un grand ensemble de symboles.

Les codes RS (Reed-Solomon) sont des codes correcteurs très puissants. Ils peuvent être présentés
comme des codes BCH dans lequel chaque bit des mots du code est remplacé par un entier défini mo-
dulo 2v (avec n=2v-1). La distance d’un code RS(m, n) est égale à n-m+1.

27
Protection contre les erreurs
6)Autres techniques de correction d’erreurs

Entrelacement

On peut illustrer le principe qui sous-tend l’entrelacement par une technique simple. L’idée est de
répartir les bits consécutifs des blocs formant le message à transmettre dans des paquets différents.
Ainsi grâce à cet entrelacement, un groupe d’erreurs (affectant un paquet) affecte uniquement
quelques bits dans plusieurs blocs. La technique de protection contre les erreurs appliquée aux blocs
est à même de corriger indépendamment ces quelques bits erronés dans chacun de ces blocs.

28
Protection contre les erreurs
7)Techniques de contrôle d’erreur par retransmission
Techniques de détection des erreurs

L’écho permet de s’assurer que le récepteur a reçu correctement les informations émises.

Exemple : technique utilisée sur les liaisons (asynchrones) entre les ordinateurs et les périphéri-
ques par caractères !
écran
alphanumérique

écho
clavier

ordinateur
caractère

Actuellement, peu utilisé car très mauvais rendement et délai important.

Technique d’autocorrection par répétition

Les informations à transmettre sont répétés plusieurs fois. Au moins un des exemplaires (redon-
dants) sera correctement reçu.

Très mauvais rendement.

29
Protection contre les erreurs
Technique de correction par retransmission
Principe de fonctionnement
- L’émetteur conserve une copie des données qu’il envoie.
- Le récepteur détecte les erreurs grâce à la présence d’un champ de contrôle d’erreur (code
polynômial) dans les paquets de données.
- Le récepteur informe l’émetteur de la bonne (resp. mauvaise) réception en lui retournant un
paquet spécifique :
. acquittement positif (resp. négatif) souvent appelé ACK (resp. NACK)
- Dans le cas d’un acquittement négatif, l’émetteur doit réémettre le paquet erroné.
- Sinon il peut émettre le prochain paquet.

--> Protocole “Send and wait”

Un temporisateur bornant la durée d’attente des acquittements est nécessaire pour assurer la cor-
rection du mécanisme lors des pertes de paquets de données.

L’identification des paquets (de données et d’acquittement) est nécessaire pour assurer la correc-
tion du mécanisme lors des pertes d’acquittement : au moins numérotation modulo 2.

--> Protocole “du bit alterné”

30
Protection contre les erreurs
Exemple de fonctionnement

Fonctionne à l’alternat : Emetteur --> Récepteur


Emetteur <données, 0> Récepteur Emetteur Récepteur
<données, 0>

<ack,1> <ack,1>
<données, 1> <données, 1>
! temporisateur !
<(n)ack,1> erreur ! <(n)ack,1> perte!
retransmission <données, 1>
retransmission <données, 1>
<ack,0>
<ack,0>
temps temps

Communication bidirectionnelle : x 2 !

Son rendement très faible :


- si le temps de transmission Tt est faible vis-à-vis du temps de propagation Tp.
- car la liaison est inutilisée lorsque l’émetteur attend l’acquittement.
- R = Tt/ (2Tp + Tt)

--> Optimisation : mécanisme de la fenêtre coulissante (“sliding window”) !

31

Vous aimerez peut-être aussi