> hamming | (7,4) | ecc <
// Code de Hamming – Code de correction d’erreurs pour une transmission fiable des données
Correction d’erreurs
Détecte et corrige automatiquement les erreurs d’un seul bit dans les données.
Détection de doubles erreurs
Peut détecter (mais pas corriger) les erreurs de deux bits dans chaque bloc.
Surcharge minimale
Seulement 3 bits de parité pour 4 bits de données (75 % d’efficacité).
>> informations techniques
Comment fonctionne le code de Hamming:
Le code Hamming(7,4) ajoute 3 bits de parité à chaque groupe de 4 bits de données pour former des blocs de 7 bits. Les bits de parité sont placés aux positions puissances de 2 (1, 2, 4). En cas d’erreur, le syndrome (résultat du contrôle de parité) indique directement la position du bit fautif.
Structure Hamming(7,4):
Données : 1011 (4 bits) Positions : P1 P2 D1 P3 D2 D3 D4 Hamming : 1 0 1 1 0 1 1 P1 = D1 ⊕ D2 ⊕ D4 = 1 ⊕ 0 ⊕ 1 = 0 P2 = D1 ⊕ D3 ⊕ D4 = 1 ⊕ 1 ⊕ 1 = 1 P3 = D2 ⊕ D3 ⊕ D4 = 0 ⊕ 1 ⊕ 1 = 0
Pourquoi utiliser le code de Hamming:
- >Correction d’erreurs mémoire
- >Communication par satellite
- >Systèmes de stockage de données
- >Transmission réseau
- >Matrices RAID
>> questions fréquentes
Qu’est-ce que le code de Hamming ?
Le code de Hamming est un code de correction d’erreurs inventé par Richard Hamming en 1950. Il ajoute des bits de parité aux données pour permettre la détection et la correction automatiques des erreurs d’un seul bit.
Que signifie (7,4) ?
Hamming(7,4) signifie 7 bits au total : 4 bits de données et 3 bits de parité. Il peut corriger toute erreur d’un seul bit dans le bloc de 7 bits. D’autres variantes existent, comme (15,11) ou (31,26).
Comment fonctionne la correction d’erreurs ?
À la réception, les bits de parité sont recalculés. S’ils ne correspondent pas, le syndrome (la différence) indique directement quel bit est erroné. L’erreur est corrigée en inversant ce bit.
Hamming vs autres codes ECC ?
Le code de Hamming est simple et efficace pour les erreurs d’un seul bit. Des codes plus complexes comme Reed-Solomon peuvent corriger plusieurs erreurs, mais avec un surcoût plus élevé. Hamming est idéal pour les canaux à faible bruit.
// Aide-mémoire
| Pos | bit | covered by |
|---|---|---|
| 1 | p1 | p1 |
| 2 | p2 | p2 |
| 3 | d1 | p1 p2 |
| 4 | p3 | p3 |
| 5 | d2 | p1 p3 |
| 6 | d3 | p2 p3 |
| 7 | d4 | p1 p2 p3 |
// Exemple détaillé
Data 1011 -> positions 3,5,6,7 = 1,0,1,1 p1 = d3^d5^d7 = 1^0^1 = 0 p2 = d3^d6^d7 = 1^1^1 = 1 p3 = d5^d6^d7 = 0^1^1 = 0 Codeword (pos 1..7) 0110011 Received 0110111 (bit 5 flipped) Syndrome s3 s2 s1 = 1 0 1 = 5 -> flip bit 5 -> 0110011 corrected
>> Autres questions
Q : Que signifie (7,4) pour le code de Hamming ?
R : 4 bits de données sont complétés par 3 bits de parité pour former un mot de 7 bits. Les bits de parité occupent les positions puissances de 2 : 1, 2 et 4. La distance minimale est 3 : une erreur est corrigée, deux erreurs sont détectées mais pas corrigées.
Q : Comment le syndrome indique-t-il la position de l’erreur ?
R : Chaque bit de parité contrôle les positions dont le numéro a le bit correspondant à 1. Les trois résultats forment en binaire la position du bit erroné (0 = aucune erreur). Dans l’exemple, 101 désigne la position 5.
Q : Qu’est-ce que le Hamming étendu (SECDED) ?
R : Un bit de parité globale transforme le (7,4) en (8,4) : corrige 1 erreur et en détecte 2. La mémoire ECC applique le même principe, généralement en (72,64) avec 8 bits de contrôle pour 64 bits de données.