Vous êtes sur la page 1sur 12

CRC (Cyclic Redundancy Check)

 Redondance cyclique CRC : appelé aussi


contrôle polynomial, ou encore FCS (Frame
Check Sequence)
 Il représente la principale méthode de
détection d'erreurs utilisée dans les
télécommunications.

CRC (Cyclic Redundancy Check)

 Principe :
– Considère le bloc de N bits à transmettre comme
un polynôme de degré N −1 : P(x)
– Ce polynôme est divisé par un autre, dit polynôme
générateur G(x) selon les règles de l’arithmétique
booléenne ou arithmétique modulo 2.
– Le reste de cette division R(x) constitue le CRC

1
CRC (Cyclic Redundancy Check)

 Emetteur : T(x) = P(x) . Xk +R(x) où k : le plus


grand degré de G(x)
 Récepteur : si le reste de T(x)/G(x) égale à 0,
alors pas d’erreur

CRC (Cyclic Redundancy Check)

 Le CRC calculé est transmis à la suite du bloc


de données.

2
Exemple 1: CRC (division polynomiale)

 Données à transmettre : 110111.


 le polynôme correspondant est :
P(x) = x5 + x4 + x2 + x1 + 1
 Soit le polynôme générateur suivant :
G(x) = x2 + x + 1
 La division de x2 * P(x) par G(x) donne le
polynôme reste :
R(x) = (x2 *P(x)) mod G(x) = x+ 1

Exemple 1: CRC (division polynomiale)

 L'information redondante à ajouter en fin de


trame est donc : 11.
 T(x) = x7 + x6 + 0x5 + x4 + x3 + x2+ x + 1
 Le message envoyé contient donc :
11011111

3
Exemple 2: CRC (division polynomiale)

 Données à transmettre : 1101011011.


 le polynôme correspondant est :
P(x) = x9 + x8 + x6 + x4 + x3 + x1 + 1
 Soit le polynôme générateur suivant :
G(x) = x4 + x + 1
 La division de x4 * P(x) par G(x) donne le
polynôme reste :
R(x) = (x4 *P(x)) mod G(x) = x3 + x2 + x

Exemple 2: CRC (division polynomiale)

 L'information redondante à ajouter en fin de


trame est donc : 1110.
 Le message envoyé contient donc :
11010110111110

4
Exemple 2: CRC par division binaire

Normalisation

Plusieurs polynômes ont fait l’objet d’une norme


car possédant de bonnes propriétés
CRC 12 = x12 + x11 + x3 + x2 + x +1

CRC 16 = x16 + x15 + x2 + 1

CRC CCITT = x16 + x12 + x5 + 1


(Ce code est notamment utilisé dans HDLC.)

CRC-32 (Ethernet) : = X32 + X26 + X23 + X22 + X16 + X12 +


X11 + X10 + X8 + X7 + X5 + X4 + X2 + X + 1

5
Les codes autocorrecteurs

 Principe d'un code autocorrecteur

Les codes autocorrecteurs

 Dans les systèmes autocorrecteurs, on


substitue au mot à transmettre (mot naturel)
un nouveau mot (mot code), tel que deux
mots codes successifs diffèrent de d bits, où d
est appelé distance de Hamming.

6
Distance de Hamming de 2 mots

 Il s’agit du nombre de bits qui diffèrent entre


deux mots de code x et y.

1000 1001
10 110001
= 0011 1000

 Donc Dist(x,y) = 3

Distance de Hamming d’un code


Soit C un code (détecteur et/ou correcteur)

 Distance de Hamming du code C

Distmin(C) = min { Dist(x,y) } tel que xC , yC et x≠y

Il s’agit du minimum des distances de Hamming entre les


mots du code

– Tous les mots du code sont au moins à une distance Dist(C)

7
Capacité d’un code

 Pour qu’un code soit capable de détecter k


erreurs, sa distance de Hamming doit être égal
à k+1.

 Pour qu’un code soit capable de corriger k


erreurs, sa distance de Hamming doit être égal
à 2*k+1.

Exemple :

 Distance de Hamming = 3

– peut détecter 1 ou 2 erreurs


– peut corriger 1 erreur

8
Code de Hamming
 Considérons un mot binaire de données de taille
n
d=(d1,d2,d3,...,dn)

 Insertion dans d de k bits de contrôle pi aux


positions
20, 21, 22, 23, ... c'est-à-dire 1, 2, 4, 8, ...
 Soit s le mot à transmettre de taille m=n+k
s = (s1,s2,s3,...,sj,..., sn+k ) = (p1,p2,d1,p3,d2,d3,...,pi,...,dn)
 Le nombre de bits de contrôle est le premier
entier k supérieur à log2(m).
– Ex. : log2(11) < 4 donc k=4 et n=7

Code de Hamming
 Calcul des bits de contrôle
– Le bit de donnée sj est contrôlé par les bits dont les
positions sont les coefficients de la décomposition
binaire de j.
– Le bit de contrôle pi (en position i) est choisi de telle
sorte que la somme des bits qu'il contrôle (ainsi que
lui-même) fasse 0 modulo 2 (contrôle de parité).
 Détection et correction d'erreur
– à la réception d'un message, on effectue le contrôle
de parité sur le bits de contrôle
– si pa et pb (qui correspondent respectivement à sA et
sB )sont faux, alors il y a une erreur sur le bit sA+B qui
peut être corrigée !

9
Code de Hamming

 Exemple de calcul des bits de parités dans le


code de Hamming (11,7)

Exemple

10
Code de Hamming

Exercice : Code de Hamming (11,7)


 Quels sont les bits qui contrôlent s11 ?
 Quels sont les bits contrôlés par p1, par p4 ?
 Calculer le code de Hamming du mot 1101011
?

Code de Hamming

Correction
 le bit s11= d7 est contrôlé par p1, p2 et p4 (11 =
1 + 2 + 8)
 p1 contrôle s3+s5+s7+s9+s11 ; p4 contrôle
s9+s10+s11
 d = 1101011 ; s = p1.p2.1.p31.0.1.p4.0.1.1 =
00101010011

11
Code de Hamming

Exercice : Code de Hamming (11,7)


 Quels sont les bits qui contrôlent s11 ?
 Quels sont les bits contrôlés par p1, par p4 ?
 Calculer le code de Hamming du mot 1101011
?
 On reçoit le message suivant 11111011100 ?
– Y-a-t-il une erreur ? Si oui, corriger cette erreur !

Code de Hamming

Correction
 s' = 11111011100 (après réception)
– p1 faux, p2 faux, p3 faux et p4 ok
– erreur sur le bit d'indice 1+2+4=7
– s = 11111001100 (après correction)
– d = 1100100 (mot reçu)

12

Vous aimerez peut-être aussi