Vous êtes sur la page 1sur 6

Cours 243-648 Communications numériques

Détection et correction d’erreurs


1. Les erreurs existent
 Inductions électromagnétiques
 Qualité des composants
 Les lignes peuvent avoir un taux d’erreurs de 10 -7 à 10-5.

 Ces erreurs sont la plupart du temps inacceptables, évidemment.


 On peut protéger les données (blindage)
 On peut vérifier à la réception (par logiciel). C’est ce que nous voyons
dans cette section.

2. La parité (appelée parfois VRC, pour Vertical Redundancy Check)


Parité paire : on ajoute un bit (0 ou 1) pour que le nombre de 1 d’une
transmission soit pair.

Parité impaire : on ajoute un bit pour que le nombre de 1 d’une transmission


soit impair.

Ce système ne détecte qu’une partie des erreurs.

3. LRC (Longitudinal Redundancy Check)


En plus de la parité, on ajoute un mot de parités croisées longitudinales.

4. La somme de contrôle (Checksum)


On transmet une donnée supplémentaire. Cette donnée est la somme d’un
bloc de données (par exemple 255 données). Le récepteur fait le même
calcul et compare.
Si les checksums sont différents, le récepteur peut demander la
retransmission.

Si les erreurs se présentent en rafale, ce système n’est pas très fiable.

5. Cyclic Redundency Check (CRC)


5.1. Principe
Le contrôle de redondance cyclique consiste à protéger des blocs de
données, appelés trames (frames en anglais). A chaque trame est associé un
bloc de données, appelé code de contrôle (parfois CRC par abus de langage
ou FCS pour Frame Check Sequence dans le cas d'un code de 32 bits). Le
code CRC contient des éléments redondants vis-à-vis de la trame, permettant
de détecter les erreurs, mais aussi de les réparer.

243-648 Communications numériques Détection et correction d’erreurs 1/6


Le principe du CRC consiste à traiter les séquences binaires comme des
polynômes binaires, c'est-à-dire des polynômes dont les coefficients
correspondent à la séquence binaire. Ainsi la séquence binaire 0110101001 peut
être représentée sous la forme polynomiale suivante :

0*X9 + 1*X8 + 1*X7 + 0*X6 + 1*X5 + 0*X4 + 1*X3 + 0*X2 + 0*X1 + 1*X0

soit X8 + X7 + X5 + X3 + X0

ou encore X8 + X7 + X5 + X3 + 1

De cette façon, le bit de poids faible de la séquence (le bit le plus à droite)
représente le degré 0 du polynôme (X0 = 1), le 4ème bit en partant de la droite
représente le degré 3 du polynôme (X3)... Une séquence de n bits constitue donc
un polynôme de degré maximal n-1. Toutes les expressions polynomiales sont
manipulées par la suite avec une arithmétique modulo 2.
Dans ce mécanisme de détection d'erreur, un polynôme prédéfini (appelé
polynôme générateur et noté G(X)) est connu de l'émetteur et du récepteur. La
détection d'erreur consiste pour l'émetteur à effectuer un algorithme sur les bits
de la trame afin de générer un CRC, et de transmettre ces deux éléments au
récepteur. Il suffit alors au récepteur d'effectuer le même calcul afin de vérifier
que le CRC est valide.

5.2. Application pratique

Soit M le message correspondant aux bits de la trame à envoyer et M(X) le


polynôme associé. Appelons M' le message transmis, c'est-à-dire le message
initial auquel aura été concaténé le CRC de n bits. Le CRC est tel que
M'(X)/G(X)=0. Le code CRC est ainsi égal au reste de la division polynomiale de
M(X) (auquel on a préalablement concaténé n bits nuls correspondant à la
longueur du CRC) par G(X).
Le plus simple est encore de prendre un exemple : prenons le message M de 16
bits suivant : 1011 0001 0010 1010 (noté B1 en hexadécimal). Prenons G(X) = X3
+ 1 (représenté en binaire par 1001). Etant donné que G(X) est de degré 3, il
s'agit d'ajouter 4 bits nuls à M : 10110001001010100000. Le CRC est égal au
reste de la division de M par G :

243-648 Communications numériques Détection et correction d’erreurs 2/6


10110001001010100000
1001...,..,.,.,.....
----...,..,.,.,.....
0100..,..,.,.,.....
0000..,..,.,.,.....
----..,..,.,.,.....
1000.,..,.,.,.....
0000.,..,.,.,.....
----.,..,.,.,.....
10000,..,.,.,.....
1001,..,.,.,.....
----,..,.,.,.....
1111..,.,.,.....
1001..,.,.,.....
----..,.,.,.....
1100.,.,.,.....
1001.,.,.,.....
----.,.,.,.....
1101,.,.,.....
1001,.,.,.....
----,.,.,.....
1000.,.,.....
0000.,.,.....
----.,.,.....
10001,.....
1001,.,.....
----,.,.....
10000.,.....
1001.,.....
----
1111,.....
1001,.....
----,.....
1100.....
1001.....
----.....
1100....
1001....
----....
1010...
1001...
----...
0110..
0000..
----..
1100.
1001.
----.
1010
1001
----
0011

243-648 Communications numériques Détection et correction d’erreurs 3/6


Pour créer M' il suffit de concaténer le CRC ainsi obtenu aux bits de la trame à
transmettre :
M' = 1011000100101010 + 0011
M' = 10110001001010100011
Ainsi, si le destinataire du message effectue la division de M' par G, il obtiendra
un reste nul si la transmission s'est effectuée sans erreur :
10110001001010100011
1001...,..,.,.,...,,
----...,..,.,.,...,,
0100..,..,.,.,...,,
0000..,..,.,.,...,,
----..,..,.,.,...,,
1000.,..,.,.,.....
1001.,..,.,.,.....
----.,..,.,.,.....
0010,..,.,.,.....
0000,..,.,.,.....
----,..,.,.,.....
0101..,.,.,.....
0000..,.,.,.....
----..,.,.,.....
1010.,.,.,.....
1001.,.,.,.....
----.,.,.,.....
0110,.,.,.....
0000,.,.,.....
----,.,.,.....
1101.,.,.....
1001.,.,.....
----.,.,.....
1010,.,.....
1001,.,.....
----,.,.....
0111.,.....
0000.,.....
----
1110,.....
1001,.....
----,.....
1111.....
1001.....
----.....
1100....
1001....
----....
1010...
1001...
----...
0110..
0000..
----,,
1101,
1001,

243-648 Communications numériques Détection et correction d’erreurs 4/6


----,
1001
1001
----
0000

5.3. Polynômes générateurs


Les polynômes générateurs les plus couramment employés sont :
 CRC-12 : X12 + X11 + X3 + X2 + X + 1
 CRC-16 : X16 + X15 + X2 + 1
 CRC CCITT V41 : X16 + X12 + X5 + 1
(Ce code est notamment utilisé dans la procédure HDLC.)
 CRC-32 (Ethernet) : = X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 + X8 +
X7 + X 5 + X 4 + X 2 + X + 1
 CRC ARPA : X24 + X23+ X17 + X16 + X15 + X13 + X11 + X10 + X9 + X8 + X5 + X3
+1

Évidemment, les interlocuteurs doivent utiliser le même polynôme générateur.

5.4. Avantages
 Calculs relativement simples(par circuiterie ou par logiciel)
 Très efficace
Si on utilise un polynômes générateur de 16 bits, l’efficacité est de
o 100% pour une erreur d’un seul bit
o 100% pour une erreur sur 2 bits
o 100% pour un nombre impair d’erreurs
o 100% pour des rafalles d’erreurs allant jusqu’à 16 bits
o 99,97% pour des rafales de 17 bits
o 99,98 % pour des rafales supérieures à 18 bits
 Peu de données redondantes

6. Correction d’erreurs

L’idéal est de corriger les erreurs au moment de la réception. Différentes


façons ont été développées, pour corriger les erreurs à la réception sans trop
alourdir le message. De nombreuses recherches ont pour objectif de trouver
le code de détection et de correction idéal : c'est-à-dire qui n’alourdit pas trop
le message, et qui corrige un % suffisant d’erreurs. Citons notamment :
 Code BCH
 Code Reed-Solomon
 Code Hamming

243-648 Communications numériques Détection et correction d’erreurs 5/6


7. Retransmission

Une autre façon d’obtenir les bons codes est de seulement détecter une
mauvaise transmission, par une détection d’erreur(CRC), puis d’obtenir une
réémission.

7.1. Arrêt attente


Possible en semi-duplex.
 L’émetteur envoie un bloc de données.
 Le récepteur reçoit le bloc et calcule la validité(CRC)
 Le récepteur envoie un accusé de réception positif ou négatif.
 Si l’accusé de réception est positif, l’émetteur envoie le bloc
suivant, sinon, il renvoie le bloc erroné.
 C’est fiable, mais long.

7.2. Retransmission en continu


Nécessite full duplex
 L’émetteur envoie des blocs de données en continu, avec des
numéros de séquence.
 Le récepteur envoie, dès qu’il a vérifié, des accusés de réception
pour chaque bloc.
 Seuls les blocs erronés sont retransmis.
 Système rapide, flexible.
 Les numéros de séquence permettent au récepteur de réordonner
les blocs.
 Les blocs de données circulent en même temps que les accusés de
réception.
 Utilisé par TCP

243-648 Communications numériques Détection et correction d’erreurs 6/6