Vous êtes sur la page 1sur 68

Codage Canal

Par: Dr. Anouar DALLI


E-mail: anouar_dalli@yahoo.fr
Plan

1 Introduction
2 Généralités sur les codes
3 Codes en bloc linéaires
4 Code CRC

2
Partie 1

1 Introduction
 Historique
 Définition et principe
 Exemples

3
Historique

4
Positionnement du codage correcteur dans
une chaîne de transmission générale

5
Codage de canal: Définition
 Quelque soit la qualité des supports de communication et les
performances des techniques de transmission utilisées, des
perturbations vont se produire entraînant des erreurs sur les
données transmises.
 D’où la nécessité d’une mise en œuvre de techniques de
protection contre les erreurs de transmission.
 À l’émission, la séquence émise est remplacée par une autre
séquence plus longue, par ajout de symboles supplémentaires.
 A la réception, une opération de détection ou/et correction des
erreurs est effectuée.
 On dit qu’on fait le codage de canal (codage de protection).

6
Types du Codage
Codage de la source: Réduction de la redondance
 Le codage de source contient en général le nombre minimal de symboles permettant
la transcription de tous les caractères possibles de la source.
 Codage réversible (Hoffmann, …)
 Codage irréversible (compression avec perte,…)

Codage du canal: Introduction de redondance


 Le codage de contrôle d’erreur (ou codage de canal ou de protection) va modifier le
codage de source en apportant une certaine redondance d’information.
 Codage correcteur : Protection contre les erreurs par l’introduction de
redondance.
 Codage de la ligne : Adaptation du signal portant l’information (Redondance
physique).
 Cette redondance permet de prévenir les erreurs de transmission dues au bruit sur le
canal, par détection et éventuellement correction d’erreurs.
7
Principe (1)
 Prenons l’exemple d’un message simple à transmettre, du
type "01234". Si l’on transmet directement la suite de
chiffres, l’information sera compacte, délivrera
l’information, mais une erreur en réception du type "01134"
sera indétectable.
 Au contraire, une transmission du type "zéro un deux trois
quatre" est (trop) riche, contient la même information, mais
une erreur en réception du type "zéro un deux trois quatre"
sera détectée et correctible.
 Ce principe de redondance permet de construire les codes
correcteurs d’erreurs.

8
Principe (2)
 En pratique, les messages sont transmis sur un canal sous la
forme d’une suite de bits (des 0 et de 1).
 Les canaux de transmission imparfaits entraînent des erreurs
lors des échanges de données (un zéro qui devient un 1 ou
inversement).
Exemple:
 la probabilité d’erreur sur une ligne téléphonique est de
l’ordre 10-6.
 Avec un tel taux d’erreur et une connexion à 1 Mo/s, en
moyenne 8 bits erronés sont transmis chaque seconde.

9
Principe (3)

 Le principe général des codes correcteurs d’erreur est alors


le suivant :
 Chaque suite de bits à transmettre est augmentée par une autre
suite de bits dite de redondance ou de contrôle.
 Pour chaque suite de k bits transmise, on ajoute r bits. On dit
alors que l’on utilise un code C(n; k) avec n = k + r.
 À la réception, les bits ajoutés permettent d’effectuer des
contrôles

10
Stratégie de codage correction d’erreur
 Selon la nature du canal ainsi que les considérations de coût,
diverses stratégie peuvent être envisagées protection pour la
détection ou la correction des erreurs.

11
1er exemple : Code à répétitions

12
1er exemple : Code à répétitions

13
2eme exemple : Code de parité

14
Application
 Coder les lettres suivantes en utilisant le code de parité:

15
2eme exemple : Code de parité

16
4eme exemple: Code à parité entrelacée

17
4eme exemple: Code à parité entrelacée

18
Application
 Coder le mot en utilisant le code de parité entrelacé:

19
Familles de codes correcteurs
Deux grandes familles de codes :
 Les codes en bloc (linéaires, cycliques ou non) : le
codage/décodage d’un bloc dépend uniquement des
informations de ce bloc.
 Les codes en treillis (convolutifs, récursifs ou non) : le
codage/décodage d’un bloc dépend des informations
d’autres blocs (généralement de blocs précédemment
transmis).
 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.

20
Familles de codes correcteurs
 Il existe deux catégories de codes :
 les codes détecteurs d’erreurs,
 les codes correcteurs d’erreurs.
 Dans ce chapitre, nous allons nous intéresser principalement
aux codes blocs suivants:
 Le code de Hamming : un code détecteur et correcteur
d’erreurs.
 Le CRC (Cycle Redundancy Check) : uniquement un code
détecteur d’erreurs mais extrêmement fiable.

21
Partie 2

2 Généralités sur les codes

22
Distance et poids de Hamming

23
Application

Déterminer:
 Poids_de_Hamming(01001100)
 Distance_de_Hamming(01001100, 01010101)
 Distance_de_Hamming({01001100, 01010101, 00000000})

24
Paramètres d'un code

Déterminer n, k, d, w
25
Paramètres d'un code

26
Théorème de Hamming
 Si on veut :
 Détecter p erreurs isolées alors il faut d >=p+1.
 Corriger t erreurs isolées alors il faut d > =2t+1.

27
Paramètres d'un code

Déterminer le taux d’information et le pouvoir correcteur


de ce code.

28
Paramètres d'un code

Déterminer le taux d’information et la capacité de


correction de ce code.

29
Partie 3

3 Codes en bloc linéaires


 Définition
 Forme systématique d'un code
 Caractérisation d'un mot code
 Décodage par le syndrome
 Code de Hamming

30
Codes linéaires

31
Application

 On considère les deux codes contenant les vecteurs suivants:


 C1 = {c1 = 0000, c2 = 0110, c3 = 1001, c4 =1111}.
 C2 = {c1 = 0001, c2 = 0111, c3 = 1000, c4 = 1110}.
 Est-ce que ces codes sont linaires?
 Déterminer le poids des mots de code linaire.
 Déterminer la distance entre les mots de code linéaire.
Déduire la distance minimale.

32
Codes en blocs

33
Exemple de matrice génératrice (1)

34
Application

On veut coder le mot u=[101] en utilisant le code de parité.


1- Déterminer la matrice génératrice du code utilisé.
2- Coder le mot u en utilisant cette matrice

35
Application

 Quel est le taux d’information de ce code?


 Quel est la capacité de correction d’erreur de ce code?
 Trouver la matrice génératrice de ce code.

36
Code systématique / non systématique

37
Forme systématique d'un code

38
Remarque

 Les opérations élémentaires suivantes ne changent pas la


structure d’un code en blocs:
 La permutation de deux lignes
 La multiplication d’une ligne avec un scalaire non nul
 L ’addition d’une ligne à une autre

39
Application

 Mettre cette matrice sous la forme systématique

40
Forme systématique d'un code

41
Matrice de contrôle de parité

42
Matrice de contrôle de parité

 Exemple: Déterminer la matrice de contrôle de parité

43
Exemple

44
Décodage par le syndrome

 La matrice H (matrice de contrôle de parité) 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 <=> c’ ∈C(n, k)

45
Application
 On considère le code de matrice génératrice suivante:

 Déterminer la matrice H de contrôle de parité.


 Soit c1 le mot associé au mot i = [1 0 1 1]. déterminer c1,
calculer son syndrome
 On a reçu le mot c2 = [1 0 1 0 0 1], est ce que c’est un mot
de code correct?

46
Code de Hamming (Principe)

 Le code de Hamming se base sur un contrôle de parité, sous


la forme de bits de parité répartis dans le message à
transmettre.
 Chaque bit est vérifié par un sous-ensemble distinct des bits
de validation.
 Une erreur sur un bit provoque une erreur de parité pour
chaque bit de validation du sous-ensemble correspondant.
 Le codage de Hamming vérifie la propriété suivante:
n = 2n-k - 1 et r = n - k = 2n-k - 1 - k

47
Principe du codage

 Un code de Hamming se compose de k bits du message à


transmettre et de r bits de contrôle de parité. La longueur
totale du message est de 2n-k-1 et donc r=(2n-k-1)-k.
 Les bits de contrôle de parité Ci sont en position 2i, i>=0, et
les bits du message Dj occupent le reste du code.
 Exemple:
La structure d’un code (7,4) est D3D2D1C2D0C1C0

48
Détection d’erreur

 Pour retrouver l’erreur dans un code de Hamming, on vérifie


les bits de parité.
 Par exemple, dans le cas précédent: si C2C1C0 ont tous la
bonne valeur, il n’y a pas d’erreur.
 Dans le cas contraire, la valeur des bits de contrôle indique la
position entre 1et 7.

49
Détection d’erreur

 Pour connaitre quels bits sont vérifiés par chacun des bits de
contrôle de parité, il est utile de construire un tableau où: les
lignes sont numérotées dans la dernières colonne de 1 à 2n-k-1,
chaque nombre est converti en binaire et l’on écrit chaque bit
dans les colonnes de gauche.

50
Détection d’erreur
 On colorie de la couleur de Ci les
nombres de droite s’il y a un 1 dans la
colonne Ci.
 Par exemple, 5 sera annoté en vert et en
rouge, car sur la ligne du 5, il y a un 1
dans les colonnes C2 et C0.
 Les bits de contrôle d’une couleur
donnée vérifient les bits du message qui
portent la même couleur.
 Chaque bit de données est coloré d’une
manière différente ce qui permet de
retrouver la position d’une erreur

51
Correction d’erreur
 Ainsi, si l’on souhaite envoyer 1010, le calcul des bits de parité
amène à envoyer le message 1010010. Si le message effectivement
reçu est 0010010:
 C0 a la mauvaise valeur, car 1+1+0+1 est impair, donc il y a une
erreur en position 7,5,3, ou 1.
 C1 a la mauvaise valeur car 0+0+0+1 est impair, donc il y a une
erreur en position 7,6,3 ou 2.
 C2 a la mauvaise valeur car 0+0+1+0 est impair, donc il y a une
erreur en position 7,6,5 ou 4.
 On écrit le nombre binaire C2C1C0 ou Ci vaut 0 si le bit de
contrôle Ci a la bonne valeur et 1 sinon. On obtient alors 111, ce
qui correspond à 7 en binaire.
 Le bit erroné est le numéro 7.

52
Correction d’erreur

 Si un des bits de parité Ci est altéré, la technique fonctionne


encore. Pas exemple, si le message reçu est 1010011:
 C0 a la mauvaise valeur, car 0+1+0+0 est impair, donc il y a
une erreur en position 7,5,3 ou 1.
 C1 a la bonne valeur, car 1+0+0+1 est pair. Il n’y a pas
d’erreur en position en position 7,6,3 et 2.
 C2 a la bonne valeur, car 1+0+1+0 est pair. Il n’y a pas
d’erreur en position 7,6,5 et 4. et C2C1C0=001

53
Exercice 1

En utilisant le codage de Hamming:


 On veut envoyer le mot 1011, quels bits, je doit lui adjoindre
et quelle séquence je transmettrai alors ?
 y a-t-il une erreur dans le mot suivant 1101101?

54
Exercice 2

55
Partie 4

 Code CRC (Cyclic Redundancy Check)


 Introduction générale
 Codage
 Décodage

56
Introduction
 Le code CRC (Cyclic Redundancy Check) est utilisé pour la
détection des erreurs dans des longues séquences binaires.
 Un CRC est une courte séquence binaire de taille fixe,
comme valeur de test. Elle est ajoutée à la fin d'une séquence
de données. L'ensemble donne un mot de code.
 A la réception d'un mot de code, on effectue le calcul de
CRC sur le mot de code et on compare le résultat avec une
constante.
 Si on trouve une correspondance la transmission est sans
erreur.

57
étude du code CRC
 Représentation sous forme polynomiale des suites de bits à
transmettre:
 Le mot: M=m1m2…mn
 Peut être représenté par le polynôme :
I(x)=mn+mn-1x+….+m1xn-1
 Exemple:
 La suite 1100101 est représentée par le polynôme:
x6+x5+0x4+0x3+x2+0x+1=x6+x5+x2+1

58
étude du code CRC

 La création du code CRC implique l'utilisation d'un code:


générateur polynomial.
 Ce polynôme est un diviseur et les données (message) sont le
dividende, le reste de la division est le résultat.
 La longueur du reste est inférieure à la longueur du
générateur; elle détermine la longueur du résultat.

59
Polynômes générateurs

60
Principe d’émission d’un mot code CRC

 On transforme le polynôme générateur en un mot binaire.


 Exemple: Avec le polynôme générateur x4+x2+x on obtient
10110.
 On ajoute m zéros au mot binaire à transmettre ou m est le
degré du polynôme générateur.
 Exemple: on souhaite transmettre le mot 11100111 en
utilisant le polynôme générateur x4+x2+x, on obtient alors
111001110000.

61
Principe d’émission d’un mot code CRC

 On va ajouter itérativement à ce mot, le mot correspondant


au polynôme générateur jusqu’à ce que ce mot obtenu soit
inférieur au polynôme générateur.
 Ce mot obtenu correspond au CRC à ajouter au mot avant
de l’émettre.
 L’opération est équivalente à effectuer une division
euclidienne dans laquelle on ne tient pas compte du quotient.

62
Exemple: calcul du code CRC
 Le message à encoder:
11010011101100
 Supposons que le polynôme générateur du code utilisé est:
x3+x +1
 Ce message doit être complété par n zéros où n est le
longueur code CRC (ici 3 bits). :

63
Exemple: calcul du code CRC

64
Calcul du code CRC

 La validité du message en réception peut être facilement


vérifiée par le même calcul avec les derniers bits complétés
par le code CRC.
 Pour une transmission sans erreur le reste de la division doit
être égale à zéro.

65
Exemple

 Si on reçoit le mot: 111001111110, en utilisant le polynôme


générateur suivant: x4+x2+x, vérifier que le message reçu ne
contient pas d’erreur.

66
Exemple: Réception d’un mot

67
Exercice

68

Vous aimerez peut-être aussi