Principe et définitions

Principe

Il y a des altérations du message dues au canal de transmission (câble, transmission sans fil…). Par exemple, pour un taux d’erreur de = 1 bit erroné sur , donc pour une connexion à 1 Mo/s ↪ 8 bits erronés /seconde

⇒ Altération des données stockées due à la durée de vie du matériel (DVD, disque-dur, mémoire flash)

Le taux d’erreur varie énormément → compris entre et

Le principe général de détection et de correction des erreurs est donc :

  • d’ajouter de la redondance au message à transmettre → différentes manières de le faire
  • et à la réception d’effectuer l’opération inverse → les bits ajoutés sont contrôlés pour éviter les erreurs

Transmettre un numéro de téléphone avec une erreur

Message transmisMessage reçu
06541222350654122236

Solution → redondance (un chiffre est remplacé par plusieurs lettres) :

⇒ zero six cinquante-quatre douze deux deux trente-cilq (cilq cinq)

Donc : une information concise est difficile à corriger alors que dans une information redondante, on peut détecter et corriger les erreurs

Différents codes

  1. Code détecteur d’erreur → Détecte un certains nombre d’erreurs mais ne les corrige pas
  2. Code détecteur et correcteur d’erreur → Détecte et corrige un certain nombre d’erreurs.

Définitions

Taux d’erreur :

Débits :

  • Débit binaire (Db) = nombre de bits transmis/s
  • Débit symbole (Ds) = nombre de symboles transmis/s (en Baud)

code C(n,k) :

  • Nombre de bits du message : k bits
  • Nombre de bits du contrôle : r bits (= redondance)
  • Nombre de bits transmis : n = k+r bits

Rendement d’un code C(n,k) :

Choix d'un code

Pour une bonne détection/correction d’erreurs → redondance importante donc r grand

Pour un code économique, avec une transmission rapide (débit élevé) → r petit

⇒ Il existe donc un compromis entre l’efficacité de la détection/correction et l’efficacité de la transmission

Codage en bloc C(n,k)

Dans la pratique des codes correcteurs → codages par blocs

illustration

Codage systématique

Le mot à coder se trouve au début du mot codé

Il est nécessaire de rajouter bits de contrôle à la fin du mot à coder

  • k premiers symboles du mot codé → information
  • r derniers symboles du mot codé → redondance

Permet un décodage immédiat

codage systématique

Poids et distance de Hamming

Poids de Hamming : est le nombre de bits à 1

Distance de Hamming : nombre de positions où les bits sont différents entre 2 mots

[! check] Détection et correction d’erreurs avec la distance de Hamming

En connaissant la distance de Hamming minimale d’un code , il est alors possible de :

  • Détecter erreurs au maximum
  • Corriger erreurs au maximum (avec = partie entière de )

Codes simples et usuels

Code de parité

Emission

Principe

C’est un codage par bit de parité, qui est détecteur d’erreur, très simple et très utilisé

⇒ ajout d’un bit de parité (bit de contrôle) qui correspond au nombre pair de “1”

  • nombre pair de 1 ⇒ bit de parité = 0
  • nombre impair de 1 ⇒ bit de parité = 1

format du code de parité

Réception

Par exemple, pour le message reçu suivant :

Il y a 1 ou 3 erreurs commises car le nombre de bits est impair

Mais dans cet exemple :

Il peut y avoir 0, 2 ou 4 erreurs commises car le nombre de bits est pair

Performances du code de parité

Le code de parité ne détecte qu’un nombre impair d’erreur et la correction est impossible

  • Longueur des mots d’information : k
  • Redondance : r=1
  • Longueur des messages émis : n=k+1

Donc le rendement est tel que (assez fort)

Code de répétition

Emission

Principe du codage par répétition

  • Codage par répétition du bit à transmettre
  • Code détecteur et correcteur d’erreur, très simple et très utilisé
  • Code systématique

Ajout de r bits de contrôles → pour obtenir un nombre de bits impair

Noté tel que C(n,1) avec n = k+r (et n impair)

schéma du codage par répétition

Réception

Par exemple :

La correction se fait par la distance de Hamming minimale avec les mots possibles (il n’y a que 2 mots possibles), donc le mot décodé est 1.

Dans cet exemple, si il y a 2 ou 3 erreurs ⇒ mauvaise correction

Performances

Détection des erreurs (sauf si tous les bits sont faux), et correction de bits erronés au maximum

Rendement de donc rendement assez élevé

Code double parité

Emission

Principe du code double parité

Permet un double contrôle par rapport au codage par rapport au Code de parité, c’est un code détecteur et correcteur d’erreur

Par rapport à la simple parité, on va assembler plusieurs blocs de k bits pour effectuer le double contrôle

schéma du découpage en blocs de taille k

Par exemple :

Réception

A la réception, on peut donc comparer les bits de parités pour chaque ligne et pour chaque colonne. Le croisement des informations permet de repérer l’erreur :

illustration d'un tableau présentant une erreur au croisement de la deuxième ligne et troisième colonne

Performances

Détection de beaucoup d’erreur, mais correction d’une seule erreur

  • Redondance : 1+k+M (k correspond aux bits de VRC et M aux bits de LRC + le bit au croisement des 2)
  • Longueur des blocs émis :
  • Rendement

Donc meilleur rendement que le Code de répétition

Code de Hamming

Principe

Code de Hamming

Le code de Hamming est un codage par bit de parité.

C’est un code correcteur d’erreur grâce à l’utilisation de plusieurs bits de parité. Il permet de détecter la position d’une erreur et est donc auto-correcteur

⇒ pour un mot de k bits → ajout de r bits de contrôle, donc la longueur totale du message est (car le bit de parité se trouve sur les positions des puissances de 2)

On observe que le rendement augmente avec le nombre de bits de contrôle (de à par exemple pour 2 et 4), donc on a intérêt à augmenter le nombre de bits de contrôle.

Codage

Les bits de contrôle se trouvent sur les positions des puissances de 2. Par exemple, avec un mot à transmettre tel que :

Le mot codé sera :

Utilisation des bits de contrôle

Dans cet exemple :

  • vérifie tous les bits avec bit de position
  • vérifie tous les bits avec bit de position
  • vérifie tous les bits avec bit de position

On a donc :

Bit de paritéRangs des bits vérifiés
1,3,5,7
2,3,6,7
4,5,6,7

Décodage

Pour décoder, il suffit de re-calculer les bits de parité , et . On les compare avec , et et on attribue à , et les valeurs :

  • si égaux → 0
  • sinon → 1

La lecture de permet de connaître la position de l’erreur

Erreur
000Aucune erreur
001Position 1
010Position 2
011Position 3
100Position 4
101Position 5
110Position 6
111Position 7

avec les positions telles que :

Remarque sur la position des erreurs

On remarque que la valeur de donne la valeur en binaire de la position où se trouve l’erreur

Performances du code de Hamming

  • Longueur des mots d’information :
  • Redondance :
  • Longueur des messages émis :
  • Rendement : (rendement assez fort)

Code qui permet de détecter et de corriger une erreur

Code cyclique de redondance (CRC)

Principe

Les codes cycliques sont des codes utilisés dans certains cas qui ne corrigent pas les erreurs mais les détectent rapidement et efficacement

Les CRC1 sont utilisés dans les réseaux informatiques afin de détecter les erreurs groupées

Codage

Schéma général du principe du CRC :

schéma du principe du CRC

1. Représentation du mot par un polynôme

Le mot binaire de k bits est représenté par un polynôme de degré k-1 Par exemple :

  • mot =
  • polynôme associé :

Afin de coder le mot (donc en ajoutant des bits de contrôles), on effectue des opérations sur les polynômes en utilisant un polynôme générateur

2. Utilisation du polynôme générateur

Le polynôme générateur est de degré et est connu par l’émetteur et le récepteur

Calcul de ajouter fois au mot binaire

Exemple avec k=5

Le polynôme est de degré donc de degré 4

Soit le mot binaire : [1 0 1 1 1] →

Soit → degré

Donc, → 1011100

3. Calcul de (pas de signe < 0)

Exemple avec k=5

On calcule donc

Mais sans aucun signe négatif, donc on a :

Autre méthode

On peut aussi effectuer directement la division en utilisant les polynômes sous forme binaire et en divisant avec un ou exclusif :

4. Utilisation du reste pour construire

Le reste de la division de est représenté par un mot binaire de bits et ajouté à la fin du mot à transmettre ce qui correspond au polynôme cyclique

Exemple avec k=5

D’après l’étape précédente, le reste est

Comme le mot initial est , on y ajoute , donc le mot à transmettre est

Décodage

  1. Réception du message → représenté par un polynôme
  2. Opération est le polynôme générateur utilisé à l’émission
  3. Reste de la division :
  • 0 ⇒ pas d’erreur
  • 0 ⇒ erreur(s) ⇒ retransmettre le message

Exemple de décodage

  • Mot reçu : donc

  • → degré

    On effectue l’opération

    Le reste de la division est 0 donc pas d’erreur

Conclusion

Code détecteur d’erreurCode correcteur d’erreurs (et détecteur)
Code de paritéCode de répétition
Code CRCCode de double parité
Code de Hamming

Footnotes

  1. Cyclic Redundancy Check