Bonjour,
Pour protéger la transmission d’une donnée, on peut utiliser le code de Hamming . Suivant sa complexité, on peut la protéger pour pouvoir détecter (et corriger) une ou plusieurs erreurs de transmission . Le but de ce tuto n’est pas de faire la théorie (Il y a toutes la théorie mathématique sur le WEB) mais de montrer que ça marche et comment on peut le faire sans utiliser de matrices à deux dimensions .
En résumé :
- avec 4 bits de plus, on peut détecter et corriger une erreur sur une donnée de 11 bits (l’objet de ce tuto)
- avec 5 bits de plus, on peut détecter et corriger une erreur sur une donnée de 26 bits
On insère 4 clefs (K1 K2 K4 et K8) a des endroits stratégiques de la données à transmettre. La valeur de ces clefs est donnée par la parité de certain groupe de bits de la trame de 4+11=15 bits de la trame transmise
Dessin 1.jpg
Soit à protéger les données (D1 à D11) : 11010010101
Dessin 2.JPG
On calcule la parité du Mot D3+D5+D7+D9+D11+D13+D15 . Soit K1=0
On calcule la parité du Mot D3+D6+D7+D10+D11+D14+D15 . Soit K2=0
On calcule la parité du Mot D5+D6+D7+D12+D13+D14+D15 . Soit K4=0
On calcule la parité du Mot D9+D10+D11+D12+D13+D14+D15 . Soit K8=1
On calcule la parité globale du Mot K1+K2+D1+D2+D3+D4+K8+D5+D6+D7+ D8+D9+D10+D11+D12+D13+D14+D15 . Soit P=1
Le message à transmettre est alors : 0010101100101011
Dessin 3.JPG
A la réception du mot de 16 bits.
On contrôle la parité globale :
Elle est égale à 0 :. Soit il n’y a pas d’erreur soit il y en a 2
Elle est égale à 1 : il y une erreur . On va calculer sa position !
Supposons que l’on reçoive 0010101101101011
Dessin 4.JPG
On calcule les parités des quatre groupes avec la même règle qu’à l’émission mais en incorporant cette fois les clefs transmises
Groupe 1 =0
Groupe 2 =1
Groupe 4 =0
Groupe 8 =1
La position du bit erroné est alors [Groupe 8]x8+[Groupe 4]x4+[Groupe 2]x2+[Groupe 1]x1= 10
Donc, on a reçu un 1 , on l’inverse …… la bonne valeur du bit 10 est 0 !
CQFD
PS : Il faut noter que l’erreur peut intervenir sur un bit de donné ou sur une clef . Si c’est une clef qui est erronée, on récupère les données tout simplement
-----