# Codes détecteurs et correcteurs d'erreurs

8 min read
Table of Contents

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 10610^{6} = 1 bit erroné sur 10610^{6}, 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 10910^{-9} et 10410^{-4}

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

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

Définitions

Taux d’erreur : T=nombre de bits rec¸us erroneˊsnombre des bits total eˊmisT = \frac{\text{nombre de bits reçus erronés}}{\text{nombre des bits total émis}}

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) : R=kN=kk+r<1R=\frac{k}{N}=\frac{k}{k+r}<1

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 r=nkr = n-k 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 : pHp_H est le nombre de bits à 1

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

Codes simples et usuels

Code de parité

Emission

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

Code de répétition

Emission

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

Code double parité

Emission

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&#x27;un tableau présentant une erreur au croisement de la deuxième ligne et troisième colonne

Code de Hamming

Principe

On observe que le rendement augmente avec le nombre de bits de contrôle (de 13\frac{1}{3} à 1115\frac{11}{15} 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 :

Décodage

Pour décoder, il suffit de re-calculer les bits de parité p0p_{0}', p1p_{1}' et p2p_{2}'. On les compare avec p0p_{0}, p1p_{1} et p2p_{2} et on attribue à C0C_{0}, C1C_{1} et C2C_{2} les valeurs :

  • si égaux → 0
  • sinon → 1

La lecture de C2C1C0C_{2}C_{1}C_{0} permet de connaître la position de l’erreur

C2C1C0C_{2}C_{1}C_{0}Erreur
000Aucune erreur
001Position 1
010Position 2
011Position 3
100Position 4
101Position 5
110Position 6
111Position 7

avec les positions telles que :

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 = [bk1bk2...b0][b_{k-1}b_{k-2}...b_{0}]
  • polynôme associé : P(x)=bk1×xk1+bk2×xk2...b0×x0P(x)=b_{k-1}\times x^{k-1}+b_{k-2}\times x^{k-2}...b_{0}\times x^{0}

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 G(x)G(x) est de degré rr et est connu par l’émetteur et le récepteur

Calcul de P(x)×xrP(x)\times x^{r} \Leftrightarrow ajouter rr fois 00 au mot binaire

3. Calcul de P(x)×xrG(x)\frac{P(x)\times x^{r}}{G(x)} (pas de signe < 0)

4. Utilisation du reste pour construire T(x)T(x)

Le reste de la division de P(x)×xrG(x)\frac{P(x)\times x^{r}}{G(x)} est représenté par un mot binaire de rr bits et ajouté à la fin du mot à transmettre ce qui correspond au polynôme cyclique T(x)T(x)

Décodage

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

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

My avatar

Thanks for reading ! You can check my other posts or reach out by clicking on my name in the footer, or right here 😼


More Posts

# Codage et Compression

15 min read

Objectif de la compression ↪ réduire la longueur d’une séquence numérique (en binaire) sans affecter son contenu informatif (= conservation de l’information)

Read