Hamming CodeDétection et correction d'erreurs avec exemples

⚡ Résumé intelligent

Le code de Hamming est un code correcteur d'erreurs linéaire qui ajoute des bits de parité redondants aux positions de puissance de deux, permettant à un récepteur de détecter jusqu'à deux erreurs de bits et de corriger automatiquement toute erreur d'un seul bit lors de la transmission de données.

  • 🧭 Objectif : Le code de Hamming détecte et corrige les erreurs de transmission en intégrant des bits de parité qui indiquent la position exacte d'un bit corrompu.
  • (I.e. Éléments redondants : Le nombre de bits de parité (p) satisfait la règle 2^p ≥ n + p + 1, où n est le nombre de bits de données.
  • 📍 Placement: Les bits de parité occupent les positions en puissance de deux — 1, 2, 4 et 8 — tandis que les bits de données remplissent les positions restantes.
  • 🧮 Hamming(7,4) : Une forme courante encode quatre bits de données en sept bits au total en utilisant trois bits de parité.
  • 🧯 Limitation: Le code de Hamming standard ne corrige que les erreurs sur un seul bit ; un bit de parité global supplémentaire ajoute la détection des erreurs doubles (SECDED).
  • 🤖 Aide à l'IA : Les décodeurs d'apprentissage automatique aident à repérer les canaux bruyants et les schémas d'erreurs que les codes fixes seuls pourraient manquer.

Détection et correction des erreurs du code de Hamming avec bits de parité

Qu'est-ce qu'une erreur ?

TransmitLes données transmises peuvent être corrompues. Elles sont susceptibles d'être affectées par des interférences externes ou d'autres défaillances matérielles. Dans ce cas, les données d'entrée ne peuvent correspondre aux données de sortie. Cette différence est appelée « erreur ».

Les erreurs de données peuvent entraîner la perte de données importantes ou confidentielles. La plupart des transferts de données dans les systèmes numériques s'effectuent par « transfert de bits », et même une petite modification d'un seul bit peut affecter les performances de l'ensemble du système. Dans une séquence de données, si un 1 est remplacé par un 0, ou inversement, on parle d'« erreur de bit ».

Types d'erreurs

Il existe principalement trois types d'erreurs de bits qui se produisent lorsque des données sont transmitLes données sont transmises de l'expéditeur au destinataire. Le schéma ci-dessous illustre l'influence de chaque type sur une séquence de données :

Diagramme comparant les erreurs sur un seul bit, sur plusieurs bits et en rafale dans une séquence de données binaires

  • Erreurs sur un seul bit
  • Erreurs sur plusieurs bits
  • Erreurs d'éclatement

Erreurs sur un seul bit

Une modification d'un seul bit dans l'ensemble de la séquence de données est appelée « erreur sur un seul bit ». Ce type d'erreur est relativement rare. Il se produit principalement dans un système de communication parallèle, car les données sont transférées bit à bit sur des lignes séparées ; il est donc plus probable qu'une ligne soit corrompue tandis que les autres restent intactes.

Erreurs sur plusieurs bits

Lorsque deux bits ou plus d'une séquence de données changent entre les transmitentre le récepteur et le terminal, on parle alors d’« erreur multibit ».

Ce type d'erreur se produit aussi bien dans les réseaux de communication de données en série que dans les réseaux en parallèle.

Erreurs d'éclatement

Une modification d'une série de bits consécutifs dans une séquence de données est appelée « erreur en rafale ». La longueur d'une erreur en rafale est mesurée entre le premier bit modifié et le dernier bit modifié.

Qu’est-ce que la détection et la correction d’erreurs ?

Dans un système de communication numérique, des erreurs peuvent survenir lors du transfert de données d'un appareil à un autre. Si ces erreurs ne sont pas détectées et corrigées, les données sont perdues. Pour une communication efficace, les données doivent être transférées avec une grande précision, ce qui s'obtient en identifiant d'abord les erreurs, puis en les corrigeant.

Détection d'erreur est une méthode permettant de détecter les erreurs présentes dans les données transmitted d'un transmitter à un récepteur dans un Communication de données système.

Les codes de redondance servent à détecter ces erreurs en ajoutant des bits supplémentaires aux données lorsqu'elles sont présentes. transmitextraits de la source. Ces bits supplémentaires sont appelés « codes de détection d’erreurs ». Les trois types de codes de détection d’erreurs les plus courants sont :

  • Contrôle de parité
  • Contrôle de redondance cyclique (CRC)
  • Contrôle de redondance longitudinale (LRC)

Contrôle de parité

  • On l’appelle également contrôle de parité.
  • Il offre un mécanisme rentable de détection des erreurs.
  • Dans cette technique, le bit redondant ajouté à chaque unité de données est appelé bit de parité. Il est configuré de sorte que le nombre total de 1 dans l'unité soit pair (parité paire) ou impair (parité impaire).

Vérification de la redondance longitudinale

Dans cette technique de détection d'erreurs, un bloc de bits est organisé dans un tableau. La méthode LRC calcule un bit de parité pour chaque colonne, et cet ensemble de bits de parité est transmis avec les données originales. Ce bloc de bits de parité permet au récepteur de vérifier la redondance et de détecter les erreurs.

Contrôle de redondance cyclique

Le contrôle de redondance cyclique ajoute une séquence de bits redondants à la fin de l'unité de données afin que l'unité de données résultante devienne exactement divisible par un deuxième nombre binaire prédéterminé.

À destination, les données entrantes sont divisées par un même nombre. Si le reste est nul, l'unité de données est considérée comme correcte et est acceptée. Dans le cas contraire, cela indique que l'unité de données a été endommagée lors de la transmission et elle doit être rejetée.

Qu'est-ce qu'un Hamming ? Code?

Le code de Hamming est un code linéaire utile pour détecter jusqu'à deux erreurs binaires immédiates et corriger les erreurs binaires isolées. Ce type de correction d'erreurs opère généralement au niveau de la couche liaison de données, en structurant les données et en vérifiant leur intégrité entre les nœuds adjacents.

En codage de Hamming, la source encode le message en ajoutant des bits redondants. Ces bits redondants sont insérés et générés à des positions spécifiques dans le message afin de réaliser le processus de détection et de correction d'erreurs.

Histoire de Hamming Code

  • Le code de Hamming est une technique mise au point par RW Hamming pour détecter et corriger les erreurs.
  • Elle peut être appliquée à des unités de données de toute longueur et utilise la relation entre les bits de données et les bits de redondance.
  • Hamming travailla sur le problème de la correction d'erreurs et développa un ensemble d'algorithmes de plus en plus performants.
  • En 1950, il publia le code de Hamming, qui est encore largement utilisé aujourd'hui dans des applications telles que la mémoire ECC.

Applications de Hamming Code

Voici quelques applications courantes du code de Hamming :

  • Satellites
  • Mémoire informatique (RAM ECC)
  • Modems
  • PlasmaCAM
  • Connecteurs ouverts
  • Fil blindé
  • Processeurs embarqués

Avantages de Hamming Code

  • Le code de Hamming est efficace sur les réseaux où les flux de données sont exposés à des erreurs sur un seul bit.
  • Il ne se contente pas de détecter une erreur de bit, mais vous aide également à identifier le bit qui contient l'erreur afin qu'il puisse être corrigé.
  • La facilité d'utilisation des codes de Hamming les rend parfaitement adaptés à la mémoire informatique et à la correction d'erreurs simples.

Inconvénients de Hamming Code

  • Il s'agit d'un code de détection et de correction d'erreurs au niveau d'un seul bit. Si plusieurs bits sont erronés, le résultat peut inverser un autre bit correct, corrompant ainsi davantage les données.
  • L'algorithme du code de Hamming ne peut résoudre que les problèmes à un seul bit.

Comment encoder un message en Hamming Code

Le processus utilisé par l'expéditeur pour encoder le message comprend les trois étapes suivantes :

  • Calculez le nombre total de bits redondants.
  • Déterminez la position des bits redondants.
  • Calculez la valeur de chaque bit redondant.

Lorsque les bits redondants sont intégrés au message, le mot de code complet est envoyé au destinataire.

Étape 1) Calculer le nombre total de bits redondants.

Supposons que le message contienne n bits de données et p bits redondants, ajoutés pour que 2p peut indiquer au moins (n ​​+ p + 1) états différents.

Ici, (n + p) représente la position d'une erreur dans chacune des (n + p) positions binaires, et un état supplémentaire indique l'absence d'erreur. Étant donné que p bits de parité peuvent indiquer 2p états, 2p doit être au moins égal à (n + p + 1).

Étape 2) Placez les bits redondants à leurs emplacements corrects.

Les p bits redondants sont placés à des positions de bits qui sont des puissances de 2 — par exemple, 1, 2, 4, 8 et 16. Ils sont appelés p1 (en position 1), p2 (en position 2), p3 (à la position 4), et ainsi de suite.

Étape 3) Calculez la valeur de chaque bit redondant.

Chaque bit redondant est un bit de parité qui rend le nombre de 1 dans son groupe pair ou impair. Les deux types de parité sont :

  • Même parité : Le nombre total de 1 dans les positions couvertes est rendu pair.
  • Parité impaire : Le nombre total de 1 dans les positions couvertes est rendu impair.

Chaque bit de parité couvre un ensemble spécifique de positions, déterminé par la représentation binaire des numéros de position :

  • p1 vérifie chaque position dont la valeur binaire a un 1 dans le bit de poids faible — positions 1, 3, 5, 7, 9, 11, et ainsi de suite.
  • p2 vérifie chaque position dont la valeur binaire a un 1 dans le deuxième bit à partir de la droite — positions 2, 3, 6, 7, 10, 11, et ainsi de suite.
  • p3 vérifie chaque position dont la valeur binaire a un 1 dans le troisième bit à partir de la droite — positions 4 à 7, 12 à 15, et ainsi de suite.

Exemple résolu (7,4) : Considérons les quatre bits de données 1011Trois bits de parité sont nécessaires (23 = 8 ≥ 4 + 3 + 1), ce qui donne un mot de code de sept bits disposé comme p1 p2 d1 p3 d2 d3 d4Le placement des données attribue aux positions 3, 5, 6, 7 les valeurs 1, 0, 1, 1. En utilisant une parité paire : p1 couvre les positions 1, 3, 5, 7 (bits 1, 0, 1 → p1 = 0); p2 couvre 2, 3, 6, 7 (bits 1, 1, 1 → p2 = 1); p3 couvre 4, 5, 6, 7 (bits 0, 1, 1 → p3 = 0). transmitLe mot de code ted est donc 0110011.

Comment décoder un message en Hamming Code

Le récepteur reçoit le message entrant et effectue des recalculs pour détecter et corriger les erreurs. Le processus de recalcul comprend les étapes suivantes :

  • Comptez le nombre de bits redondants.
  • Positionnez correctement tous les éléments redondants.
  • Effectuez le contrôle de parité.

Étape 1) Comptez le nombre de bits redondants. Utilisez la même formule que pour l'encodage : 2p ≥ n + p + 1, où n est le nombre de bits de données et p est le nombre de bits redondants.

Étape 2) Positionnez correctement tous les bits redondants. Chaque bit redondant se trouve à une position de bit qui est une puissance de 2 — par exemple, 1, 2, 4 et 8.

Étape 3) Effectuez le contrôle de parité. Les bits de parité sont recalculés à partir des bits de données et des bits redondants reçus :

  • p1 = parité(1, 3, 5, 7, 9, 11, …)
  • p2 = parité(2, 3, 6, 7, 10, 11, …)
  • p3 = parité(4–7, 12–15, 20–23, …)

Les bits de parité recalculés forment ensemble un nombre binaire. Si ce nombre est nul, aucune erreur n'est présente ; sinon, sa valeur indique la position exacte du bit corrompu, qui est alors inversé pour corriger le message.

FAQ

La distance de Hamming correspond au nombre de positions binaires qui séparent deux chaînes binaires de même longueur. Dans les codes correcteurs d'erreurs, la distance de Hamming minimale entre les mots de code valides détermine le nombre d'erreurs pouvant être détectées ou corrigées. Le code de Hamming standard a une distance minimale de trois.

L'algorithme Hamming(7,4) code quatre bits de données en un mot de code de sept bits en ajoutant trois bits de parité. Il corrige les erreurs sur un seul bit et détecte les erreurs sur deux bits. La notation (n, k) indique la longueur totale du mot de code n et le nombre de bits de données k.

Un seul bit de parité ne détecte qu'un nombre impair d'erreurs de bits et ne peut ni les localiser ni les corriger. Le code de Hamming utilise plusieurs bits de parité à des positions de puissance de deux, ce qui lui permet de repérer précisément le bit défaillant et de le corriger automatiquement.

Le code de Hamming de base corrige les erreurs sur un bit, mais peut mal corriger les erreurs sur deux bits. L'ajout d'un bit de parité global couvrant tout le mot de code crée le code SECDED (correction d'erreur simple, détection d'erreur double), ce qui porte la distance minimale à quatre et permet de détecter de manière fiable les erreurs sur deux bits.

La détection et la correction des erreurs se produisent principalement au niveau de la couche liaison de données. Modèle OSICe système encadre les données et vérifie leur intégrité entre les nœuds adjacents. Les protocoles de la couche transport ajoutent des contrôles de bout en bout, tandis que le support physique introduit le bruit contre lequel ces codes protègent.

Le code de Hamming est un code linéaire par blocs. Il traite un bloc de bits de taille fixe à la fois et ajoute des bits de parité, contrairement aux codes convolutifs qui codent un flux binaire continu en utilisant la mémoire des bits précédents. C'est ce qui rend le code de Hamming simple et rapide.

Les modèles d'apprentissage automatique analysent les caractéristiques du bruit d'un canal et prédisent les erreurs binaires probables, améliorant ainsi la précision du décodage par rapport aux méthodes classiques. Les décodeurs basés sur l'IA pour les codes LDPC et polaires assistent désormais les systèmes 5G et de stockage modernes, là où le code de Hamming classique est insuffisant.

Copilote GitHub Peut générer les fonctions d'encodage et de décodage, créer des masques de bits de parité et rédiger des tests unitaires à partir d'un court commentaire. Vérifie les calculs de position des bits et le groupe de parité.pingSoyez prudent, car un décalage d'indexation d'une unité est une source fréquente d'erreurs dans le code généré.

Résumez cet article avec :