Code CCITT (comité consultatif international télégraphique et téléphonique-) Ce code, encore appelé code
Baudot est utilisé pour la transmission sur le réseau télégraphique (TELEX). C’est un code à 5 bits qui ne
permet donc que 32 combinaisons
Code DCB (décimal code binaire) ce code à 6 bits a été très utilisé pour la transmission avec des terminaux
asynchrones. Il esiste aussi une variante à 4 bits.
Code CCITT n°5 à 7 bits, appelé aussi code ASCII (American Standard Code for Information Interchange)
ou encore alphabet international n°5 est très utilisé et permet de coder 128 caractères
Code EBCDIC ce code (Extended Binary Coded Decimal Interchange Code) à 8 bits et très utilisé du fait
que chaque caractère est représenté par un octet.
La transmission de données entre machines distantes s’effectue en général en série par bit et la communication
entre équipements informatiques donne lieu à l’échange de messages qui comportent un nombre variables de
bits. Les messages qui constituent la partie utile de l’information sont complétés par des informations de contrôle
et de supervision telles que l’adresse du destinataire et une séquence de contrôle d’erreurs.
Entete (header) + texte (text) + terminaison (trailer).
3.2- Problématique:
Nous avons vu dans le chapitre précédent que les lignes de transmission n’étaient pas parfaites et que des erreurs
pouvaient être introduites sur les symboles d’une suite binaire. Les origines de ces erreurs peuvent être recensées
et dépendent :
- du nombre de répéteur
- du support de transmission
- du débit, du type de codage, modulation ...
Ce taux varie de 10 -7 à 10 -9 .
L’objet de cette partie est de décrire les méthodes couramment utilisées pour protéger les informations émises
des erreurs de transmission. La stratégie d’utilisation du codeur et du décodeur dépend de l’ensemble du système
de transmission de données.
- Cette stratégie d’utilisation est une simple détection lorsque les symboles sont restitués au collecteur avec une
alarme dès que le décodeur détecte une erreur. Cette erreur peut faire l’objet d’une correction d’erreurs mais
deux cas apparaissent :
- Le décodeur corrige automatiquement certaines erreurs Correction d’erreur directe.
- Le décodeur ne peut que détecter les erreurs et il est donc nécessaire de retransmettre une partie des données
pour réaliser la correction. Cette stratégie est une correction par retransmission ARQ.
consiste à faire suivre le message d’une réplique du message d’origine, à la réception. Le récepteur compare
les deux copies, il est accepté que s’il y ‘a identité. Dans le cas contraire, il est demandé à l’émetteur de
retransmettre le message.
On peut améliorer cette méthode on procédant à la correction, on envoyant un nombre impaire de copies au
récepteur, le récepteur détermine le nombre majoritaire de copies identiques et les considère comme étant le
message d’origine ou au pire des cas renvoie une copie à l’émetteur pour vérification.
b) le mode Echoplex :
Ce mode permet dans le cas d’un mécanisme de transmission le plus élémentaire d’échanger des informations
entre deux machines informatiques avec un taux d’erreur nul. Lors d’une communication, les caractères transmis
d’une machine vers une autre sont retransmis à l’arrivée vers la machine émettrice. De ce fait, si une erreur
se produit dans la transmission ou la retransmission le caractère en erreur est automatiquement détecté et
retransmis. Le mécanisme des échanges est montré par la figure ci-dessous
3.4- Méthodes de corrections des erreurs par retransmission : concepts de base
Consiste à renvoyer à chaque réception d’un message de données M, un message court appelé « ACK » qui est
positif si le message ne comporte pas d’erreurs et négatifs sinon dans ce cas l’émetteur ré-émet le message.
Inconvénients:
Cas où l’ACK est perdu : dans ce cas on implémente un temporisateur qui s’enclenche dés que le message est
envoyé, si après « t » secondes l’ACK n’a pas été reçu, on conclue que le message a été perdu ou que l’ACK a
été perdu. On procède au renvoi du message.
Exemple: En utilisant un code 7 bits du CCITT (code n° 5), on peut utiliser le 8 ième bit comme bit de parité.
Suite binaire sur 7 bits Parité paire parité impaire
A 1000001 01000001 11000001
E 1010001 11010001 01010001
V 0110101 00110101 10110101
Cette solution permet de détecter une erreur simple sur chacun des mots transmis, mais dès que ce nombre est
excédé il est impossible de détecter des erreurs avec certitude.
Cette méthode ajoute 1 bit tous les 7 bits transmis. Le rendement de la transmission est donc de:
R = 7 = 87%
8
Exemple:
Sans erreur Avec 1 erreur Avec 2 erreurs Avec 3 erreurs
On veut transmettre A 1000001 1000001 1000001 1000001
Calcul du bit de parité 01000001 01000001 01000001 01000001
Transmission 01000001 01000001 01000001 01000001
Réception 01000001 01010001 01010000 01001111
Suppression du bit de 1000001 1010001 1010000 1001111
parité
Calcul le bit de parité 01000001 11000001 01010000 11001111
Les nombres sont égaux OK Erreur OK Erreur
Une amélioration à ce système peut être apportée en transmettant tous les n mots un mot de contrôle sur les n
précédents : Contrôle de parité vertical.
A 1000001 01000001
B 1000010 01000010
C 1000011 11000011
D 1000100 01000100
E 1000101 11000101
F 1000110 11000110
G 1000111 01000111
H 1001000 01001000
Contrôle 0001000 10001000
Cette méthode ajoute 1 bit tous les 7 bits transmis et 8 bits tous les 8 mots transmis. Le rendement de la
transmission est donc de :
R = 7*8 = 77 %
(7+ 1) * 8+ 8
Remarque: dans le cas d’une détection avec parité PAIRE le LRC de l’octet de contrôle du bloc (le VRC)
vérifie à la fois l’octet VRC et Les différents LRC.
Dans le cas d’une parité IMPAIRE il n’y a pas de correspondance.
Opérations :
somme modulo 2 0+0=0 0+1=1 1+0=1 1+1=0
multiplication 0.0=0 0.1=0 1.0=0 1.1=1
Définition 1: On appelle un code noté C(n,k) telle que n est la taille du code et k est la taille de l’information,
un ensemble de mots distincts construits sur l’ensemble {0,1}.
Exemple : un code C(4,2) : 0010 1000 0111 1110
Définition 2: On appelle
- Poids de Hamming : Le poids de Hamming d’un vecteur représente le nombre de 1 qu’il contient.
- Distance de Hamming : C’est le nombre de bits en lesquels 2 mots d’un code diffèrent (on peut dire aussi
que c’est le nombre de bits de leur somme modulo 2).
- Distance de Hamming minimal d’un code: C’est la plus petite distance de Hamming entre deux mots d’un
même code. Dmin = min{distance de Hamming entre u et v / u , v ∈ code}.
Exemple:
Les mots 01010101 et 00001111 ont une distance de 4 entre eux : somme = 0 1011010 nombre de 1=4 .
La distance de Hamming minimale du précédents code C(4,2) est égale à 2.
Théorème : Soit un code C(n,k) tel que sa distance de hamming minimale est égale à Dmin :
Si Dmin = 2d + 1 , alors la détection est d’ordre ≤ 2d et la correction est d’ordre ≤ d.
Définition 3 : Soit X le bloc émis et X’ le bloc reçu. On appelle vecteur d’erreur E = X ⊕ X ' . Si E = 0, pas
d’erreur. Si E ≠ 0, il y a une erreur, localisé sur les bits 1 de E.
Définition 4 : Soit p la probabilité d’avoir une erreur sur 1 bit. La probabilité qu’il n’y ait pas d’erreur est donc
1 – p (toujours pour 1 bit). La probabilité de bien recevoir n bits est donc
(1 − p )n et la probabilité pour qu’il y
1 − (1 − p ) .
n
ait au moins une erreur est
Définition : On appelle un code linéaire C(n,k) un code linéaire systématique un code tel que les (n-k) nits de
contrôle sont obtenues par combinaison linéaire des k bits d’info utile.
Formellement:
X = (x1 * x n ) le mot de code à générer
Soit
Soit A le vecteur de contrôle A= (a1,..an-k). alors ai= α1i u1+ α2i u1+..+ αki uk.
X=(u1,.....,uk,,a1,..,an-k)
1) Codage.
1 0 0 0 1 1
G = 0 1 0 1 0 1
0 0 1 1 1 0
Considérons le code (n = 6, k = 3) défini par la matrice. .
Considérons un bloc de données U décrivant toutes les entrées possibles :
0 0 0 0 0 0 0 0 0
0 0 1 0 0 1 1 1 0
U = X =
* * * * * * * * *
1 1 1 . On calcule 1 1 1 0 0 0
.
2) Décodage.
Le vecteur syndrome du vecteur Y est S(Y)=Y × H, tel que H est une matrice de dimension (n, n-k).
H est appelée matrice de décodage et est définie par :
P
H= In-k
On a S(Y)=0, (vecteur nul) si Y appartient au code. En revanche, si on introduit une erreur, Y = X +E
avec E le vecteur d’erreur, alors S(Y)= S(E) car S(X)=0.
Localisation d’erreur. Si S(Y)=0, alors il n’y a pas d’erreur et Y=X.
On peut localiser une erreur simple en recherchant la ligne identique à S(Y) dans la matrice H. La position
de l’erreur dans Y correspond au rang de la ligne trouvée. On peut ensuite la corriger.
0 1 1
1 0 1
1 1 0
HT =
1 0 0
0 1 0
0 0 1
Poursuivons notre exemple avec la matrice et Y = (0 0 1 1 1 0)..
On vérifie : S(Y)=(0,0,0) . Supposons qu’une erreur se produise sur le second bit, on reçoit
S(Y)=(0 1 1 1 1 0). On calcule alors le syndrome S(Y)=(1,0,1) qui correspond à la deuxième ligne de
H ; l’erreur est localisée et peut être corrigé.
Les coefficients an ne peuvent prendre que les valeurs 0 ou 1 en binaire et les xn sont les puissances successives
de 2. Si nous divisons ce polynôme par un autre polynôme binaire, le reste de la division constitue le caractère de
contrôle.
Exemple: Soit à transmettre le message 1011011. le polynôme correspondant à la forme: P(x)= x6+x4+ x3+ x +1
Si le polynôme diviseur est égal à : G(x) = x4+ x + 1
Ce qui donne en binaire : 10011
Il faut donc diviser 1011011 par 10011.
Formellement:
a- Codage:
Soit G(x) le polynôme générateur du code C (n,k) de degré r tel que r = (n-k) +1
Il faut multiplier Z(x) par xr r = (n-k) pour créer un décalage à gauche de r bits.
Donc on obtient le mot de code à envoyer comme suit: Y(x) = Z(x) xr +A(x) = Q(x) G(x)
Méthode manuelle:
- Nous ajoutons à sa droite, autant de 0 que le diviseur comporte de bit moins un (ici 5-1 =4) ce qui donne
10110110000.
- Puis nous exécutons la division par soustractions successives (soustractions grâce au OU-exclusif) :
10110110000
-10011
0010111
-10011
0010000
-10011
0001100
- la dernière ligne de la division donnera le reste donc le CRC (champs vérification); c'est lui qui sera ajouté au
message que l'on va transmettre. Y(x) 1011011 1100
b-Décodage
A la réception, un calcul semblable s'effectue sur le mot reçu, mais il faut, ici, que le reste soit nul. Dans le
cas contraire, c'est qu'une erreur est survenue en cours de route.
Pour procéder à la vérification nous effectuons comme suit :
On Calcule le syndrome : S(x)= ÿ(x) Mod( G(x)) = (Y(x) +E(x)) Mod( G(x)) = 0 + E(x) Mod( G(x))
Aucune erreur n’est détectée si le syndrome S(x) =0 sinon elle est détectée si S(x) <> 0
Pour qu’une erreur puisse être détectée : E(x) <> 0 il faut que G(x) ne divise pas E(x).
Exemple:
- Toute erreur simple est détectée si G(x) comporte plus d’un coefficient non nul
- Les erreurs doubles sont toutes détectées si G(x) ne divise pas xu+1 où u appartient à {1, n-1} n taille
du code
- L’erreur sur un message comportant un nombre impair d’erreur est toujours détectée si le polynome
générateur G est divisible par (x+1)
- Un code polynomial détecte toutes les salves (suite d’erreurs) de longueur inférieure ou égale à « r »
avec r degré de G.
Un code de hamming est un code tel que sa distance minimale est égale au moins à 3. Ce code peut corriger au
moins une erreur.
Principe :
00 010 Dmin =3 supposons une erreur simple ou double, elle est tout le temps détectée.
01 111
10 101
11 000
Une erreur simple peut être corrigée: 00 110 distance de Hamming (ÿ, y) minimale) c’est le mot de code 1 qui
est le vrai, car le plus proche en termes de distance par rapport au mot reçu.
Une trame valide comprend donc un minimum de 32 bits entre fanions. Les autres champs sont localisés
à leurs positions par rapport aux fanions. Pour éviter la simulation d’un fanion dans la trame, on utilise la
technique « d’insertion de zéro à l’émission, qui insère un zéro après 5 un consécutifs ; ces zéros seront
supprimés à la réception.
Le champ commande le type de trame, trois trames sont définies :
- Format d’information : Les trames de type I sont utilisées pour les transfert de données. Chaque trame
de type I est identifiée par un numéro de séquence NS.
0 NS P NR
- Format de supervision : Les trames de type S sont utilisées pour accuser réception.
1 0 S S P NR
- Format non numéroté : Les trames de type U sont utilisées pour la gestion de la liaison (établissement et
rupture logiques de la liaison etc)
1 1 M M P M M M
NS : est un compteur d’émission sur 3 bits, il indique le numéro (Modulo 8) de la trame de type I à envoyer
prochainement.
NR : est un compteur de réception sur 3 bits, il indique le numéro (Modulo 8) de la prochaine trame de type I à
recevoir.
P : est mis à un pour inviter le récepteur à accuser réception des trames de type I envoyées.
SS : permettent de coder quatre types d’accusés de reception :
RR : (Receive Ready) accuse de la bonne réception jusqu’à la trame numéroté NR-1, et informe son vis-
à-vis qu’il est prêt à recevoir pour sa part des trames de type I.
REJ: (Reject) demande à retransmettre toutes les trames envoyées à partir du numéro NR. Les autres ont
été correctement reçues.
RNR : (Receive not Ready) accuse de la bonne réception jusqu’à la trame numéroté NR-1, et demande
l’arrêt momentané de l’envoi de trames de type I. L’envoi de ces trames pourra reprendre lorsqu’il
signifiera son état avec RR.
SREJ: (Selective reject) demande à retransmettre seulement la trame portant le numéro NR. Les autres
ont été correctement reçues.
Le champ Information Ce champ est présent seulement dans les trames de type I et certaines trames de type U.
Le champs vérification contient le reste de la division ( 2 octets) champs (A, C, I) par le polynôme générateur
de degré 16 : X 16 + X12 + X5 +1.