(Code de communication 10 [Mode de compatibilité])
Transcription
(Code de communication 10 [Mode de compatibilité])
Chapitre 3 Notion sur les codes de communication 1001001 Emetteur 02.02.12 CANAL DE COMMUNICATION 1001001 Récepteur 1 Chapitre 3 : Généralités Il s’agit de représenter des données ou messages, par des combinaisons de chiffres ou de mots. Une telle combinaison est donc utilisée comme un moyen d’identifier un message. Un message peut être de plusieurs natures : • numérique, alphanumérique, • signe typographique, • ordre de commande pour une machine (imprimante,…). On s’intéresse ici aux codes qui utilisent des combinaisons de n digits, n étant constant. Ce sont des « codes de blocs ». Avec n chiffres de la base B, il est possible de former Bn combinaisons (Mots) différentes permettant de constituer (Bn)! codes différents. En effet, si il y a autant de messages que de codes, il y a Bn façons de coder M1, ensuite Bn-1 façon de coder M2, … Rq : Si le nombre de message est inférieur au nombre de code il est possible d’utiliser les codes en trop pour détecter les erreurs de transmissions. 02.02.12 2 Chapitre 3 : Codage Les codes adjacents : Dans un système de base B, deux mots sont dit adjacents s’il diffèrent d’une unité modulo B. Ainsi deux mots consécutifs sont dit adjacents (0 et B-1). Pour un nombre de n mots, il existe 2.n mots adjacents. Par exemple les six mots adjacents au mots 395 (codé en décimal) sont : 295 02.02.12 495 385 305 394 396 3 Chapitre 3 : Codage Naturel Code naturel et Code réfléchi : Les codes réfléchis sont caractérisés par le fait que deux nombres consécutifs ne diffèrent que d’un seul digit (adjacence). On qualifie un code d’adjacent cyclique si en plus le dernier code et adjacent au premier : 02.02.12 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Réfléchi:Gray53 0000 0001 0011 0010 0110 0111 0101 0100 1100 1101 1111 1110 1010 1011 1001 1000 4 Chapitre 3 : Codage Application du code binaire réfléchi : codeur de position angulaire Code naturel Passage de 011 à 100 111 000 1 LSB 0 110 001 MSB LSB t 1 0 t 101 010 1 MSB 0 100 011 t 011 100 001 Commutation de plusieurs contacts électriques à la fois 02.02.12 000 Loupe temporelle 5 Chapitre 3 : Codage Application du code binaire réfléchi : codeur de position angulaire Code de Gray 100 000 101 001 Deux portions voisines du codeurs donnent deux codes adjacents 111 011 110 010 Commutation d’un seul contact électrique à la fois 02.02.12 6 Chapitre 3 : Codage Application du code de Gray : codeur de position angulaire 8 bits MSB 02.02.12 LSB 7 Chapitre 3 : Codage Les codes pondérés décimaux : Les codes pondérés décimaux sont des codes où chaque digit de la représentation décimale du nombre est codé sur n bits (n>=4). Le Code Décimal Codé Binaire (Binary-Coded-Decimal) : 8421 0 1 2 3 4 5 6 7 8 9 10 (A) 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 0001 0000 11 (B) 12 (C) 0001 0001 0001 0010 13 (D) 0001 0011 14 (E) 0001 0100 0001 0101 15 (F) 02.02.12 8 Chapitre 3 : Généralités BRUIT 1001001 Emetteur 1000001 CANAL DE COMMUNICATION REEL Récepteur • Comment le récepteur peut-il détecter l’erreur ? • Comment le récepteur peut-il localiser une erreur ? • Comment le récepteur peut-il corriger une erreur ? 02.02.12 9 Chapitre 3 : Généralités Approche Naïve : la répétition BRUIT 1001001 1001001 1000001 1001001 Emetteur Récepteur Échantillons différents : détection d’une erreur Correction de l’erreur impossible Pour corriger l’erreur : envoi de trois exemplaires, les deux identiques identifie le bon message… 02.02.12 10 Chapitre 3 : Généralités Remarques : • La détection et la correction des erreurs entraînent une augmentation de la longueur du code à transmettre. (REDONDANCE D’INFORMATION) • Certaines erreurs ne peuvent pas être détectées • Certaines erreurs détectées ne peuvent pas être corrigées • La répétition du message n’est pas une bonne solution (trop coûteuse en longueur de code). En se limitant à la détection et en redemandant une émission en cas d’erreur, on limite cet inconvénient. • Les codes détecteurs sont plus souvent utilisés que les codes correcteurs mais : lorsque le canal est unidirectionnel lorsque la distance est élevée (satellite) lorsque les erreurs sont isolées les codes correcteurs peuvent (ou doivent) être utilisés. 02.02.12 11 Chapitre 3 : Codage Les codes détecteurs d’erreurs : Code avec contrôle de parité. On ajoute au message un digit de parité tel que le nombre total de 1 du message complet soit par exemple toujours impair ou pair. Si la donnée à transmettre est : • • Bit de parité 1 0 1 1 0 on transmettra pour avoir une parité impaire 1 0 1 1 0 0 1 0 1 1 0 on transmettra pour avoir une parité paire 101101 A la réception, la présence d’un nombre pair ou impair de 1 décèlera une erreur. Ce code est utilisé dans les transmissions série (RS232). 02.02.12 12 Chapitre 3 : Codage Codes détecteurs d’erreurs. Le Code N parmi P : Code 2 parmi 5 Code pondéré (63210) Décimal détecteur d’erreur Il a la particularité de toujours avoir 2 bits à 1 par code. On remarque que seul le code zéro ne respecte pas les pondérations assignée à chaque bit. 02.02.12 0 00110 1 00011 2 00101 3 01001 4 01010 5 01100 6 10001 7 10010 8 10100 9 11000 13 Chapitre 3 : Codage Exemple de code détecteur d’erreur : Les codes à barres qui utilisent un codage N parmi P L’un des codes les plus répandus dans l’industrie est le code ‘3 parmi 9, encore appelé ‘39’. Dans ce code, chaque barre et chaque intervalle peut être soit large soit étroit. Large est associé à la valeur binaire 1 et étroit à 0. 1 1 1 02.02.12 14 Chapitre 3 : Codage Chaque chiffre ou lettre est codé par un ensemble de 5 barres et 4 intervalles, soit 9 digits qui forme un mot de 5 digits correspondant au codage de la largeur des barres et un mots de 4 digits correspondant au codage de la largeur des intervalles. Barres : 01001 Intervalles : 0010 B Dans le code barre ‘3 parmi 9’, on dénombre 3 éléments larges exactement (barre ou intervalle), soient 3 valeurs 1 parmi 9. Le code ‘39’ de toutes les valeurs alphanumériques est donné dans le transparent suivant. Les différentes variables alphanumériques codées sont listées dans le tableau donné dans le transparent suivant : 02.02.12 15 Chapitre 3 : Codage Caractère 1 2 3 4 5 6 7 8 9 0 A B C D E F G H I J K L Code des barres 10001 01001 11000 00101 10100 01100 00011 10010 01010 00110 10001 01001 11000 00101 10100 01100 00011 10010 01010 00110 10001 01001 02.02.12 Code des intervalles 0100 0100 0100 0100 0100 0100 0100 0100 0100 0100 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0001 0001 Code d’erreur 1 2 3 4 5 6 7 8 9 0 10 11 12 13 14 15 16 17 18 19 20 21 Caractère M N O P Q R S T U V W X Y Z . Espace * $ / + % Code des barres 11000 00101 10100 01100 00011 10010 01010 00110 10001 01001 11000 00101 10100 01100 00011 10010 01010 00110 00000 00000 00000 00000 Code des intervalles 0001 0001 0001 0001 0001 0001 0001 0001 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1110 1101 1011 0111 Code d’erreur 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 16 Chapitre 3 : Codage Le codage à barre d’une pièce consiste à lui affecter un code alphanumérique appelé message, BK5 par exemple, puis à le transformer en une succession de barres et d’intervalles conformément à l’état binaire associé à chacune des valeurs B, K, 5 pour notre exemple. Ce code souvent complété par un caractère de contrôle égal à la somme modulo 43 de la valeur du message. La valeur de contrôle de chaque chiffre ou lettre est donnée dans les colonnes 4 et 8 du tableau (code d’erreur). B K 5 contrôle - La valeur de la somme de B,K et 5 correspond à l’addition suivante : 11 + 20 + 5 =36. On retrouve bien sur ces 5 dernières barres le code correspondant au tiret dont la valeur de contrôle est égale à 36. 02.02.12 17 Chapitre 3 : Codage Autre exemple : le code postal Opération de reconnaissance optique de caractères par traitement OCR, puis traduction en code à barres sous la forme de bâtonnets fluorescents imprimés sur le courrier postal. Le code est un 3 parmi 5 : séparateur 02.02.12 11010 18 Chapitre 3 : Codage Autres codes : Code numérique très dense, mais dont la moins bonne fiabilité intrinsèque oblige à l'utiliser soit en longueur fixe, soit avec une clé de contrôle. Le code 2 parmi 5 entrelacé utilise la même codification des caractères que le code 2 parmi 5, mais en entrelaçant les caractères deux par deux. Le premier caractère est codé avec les barres, tandis que le deuxième utilise les espaces de la même zone, et ainsi de suite. Les chiffres de rang impair sont donc codés avec les barres, tandis que les chiffres de rang pair sont codés avec les espaces. La conséquence est que le code 2 parmi 5 entrelacé encode toujours un nombre pair de caractères. Ce code utilise pour chaque caractère cinq éléments, dont 2 sont larges, d'où son nom. Code numérique très dense spécifié par le GENCOD pour les applications de la grande distribution. Les symboles EAN codent 12 ou 8 chiffres, le cas le plus normal étant 12 caractères (toujours numériques). En plus de ces caractères, est toujours encodée une clé de contrôle. Pour certaines applications particulière de ce code, des caractères supplémentaires sont ajoutés à la droite du symbole de base, séparés de celui ci par un espace (identification des journaux et magazines). 02.02.12 19 Chapitre 3 : Codage Le Code ASCII (American Standard Code for Information Interchange). Code utilisé pour un ensemble de caractères utilisés en bureautique (lettre minuscules, majuscules, chiffres) ainsi que des caractères spéciaux. C’est le code retenu pour stocker les données d’un fichier texte (*.txt). Initialement codé sur 7 bits, le code ASCII étendu est utilisé maintenant sur 8 bits pour prendre en compte plus de caractères utilisés (en particulier les caractères accentués). Les codes de 0 à 31 ne sont pas des caractères mais des codes de contrôle (retour à la ligne,…..); Les codes de 65 à 90 représentent les minuscules et les majuscules de 97 à 122 (+32 ou modification du 5ème bit)); Pour couvrir tous les alphabets, il faut utiliser d’autre code : unicode (16 bits). 02.02.12 20 Chapitre 3 : Codage 02.02.12 21 Chapitre 3 : Codage Les codes détecteur/correcteurs d’erreurs : Code de Hamming Ce code permet de détecter et de corriger, certaines erreurs affectant leur transmission. La structure d’un mot codé avec un code (n,k) est la suivante : b0 b1 .. bn-k-1 m0 m1 .. .. .. mk-1 Contrôle sur n-k bits B=[b0 b1 …bn-k-1] Message sur k bits M=[m0 m1 …mk-1] Pour obtenir la partie contrôle, il faut utiliser une matrice génératrice de code : G = [ Pk ,n − k | I k ,k ] tel que C=(MG)(2) I k ,k : matrice identité de rang k qui assure la recopie de M dans C Pn − k , k : matrice dite de parité qui sert à générer les bits de contrôle. 02.02.12 22 Chapitre 3 : Codage Exemple du code de Hamming (7,4) : le mot complet de code n =7 bits et le message de k =4 bits, le contrôle se fait sur n-k=3 bits. Ce code permet de détecter et corriger des erreurs simples (erreur sur 1 bit). 1 1 0 1 0 0 0 0 1 1 0 1 0 0 C= 1 0 0 1 0 1 1 G= M= 1 0 1 1 1 1 1 0 0 1 0 1 0 1 0 0 0 1 Cette structure particulière permet de détecter les erreurs de transmissions. Pour cela, on utilise une matrice de contrôle H tel que H soit orthogonale à G : GH T = 0 La structure de la matrice H découle de celle de G : H = I n − k | PkT,n − k 1 0 0 1 0 1 1 H = 0 1 0 1 1 1 0 0 0 1 0 1 1 1 On peut remarquer que H est une matrice binaire à k lignes et n colonnes : les colonnes contiennent les représentations binaires des entiers entre 1 et n. 02.02.12 23 Chapitre 3 : Codage Avec la propriété d’orthogonalité, pour un mot de code C, on a : CH T = MGH T = 0 A la réception d’un code erroné : Y= C+E, le résultat précédent devient : YH T = MGH T + EH T = EH T = S S est appelé syndrome de l’erreur. Ce syndrome peut être calculé et tabulé ce qui peut permettre, au final de corriger, un certain nombre d’erreurs. Cette phase de correction d’erreur se déroule de la manière suivante : • Réception du message corrompu : Y, • Calcul du syndrome : S, • Identification de E, • En sachant que (E ⊕ E)(2)=0, reconstruction de C= Y⊕ E. 02.02.12 24 Chapitre 3 : Codage Exemple avec G et H définies précédemment: a ] Compléter le tableau tabulant le syndrome S : Erreur E Syndrome S= E HT 000 0000 000 000 0001 101 000 0010 111 000 0100 110 000 1000 110 001 0000 110 010 0000 010 100 0000 001 b ] On veut envoyer le message suivant M = [1 0 0 1]. Construire le mot code C. c ] Après transmission le message reçu est Y = [0 1 0 1 0 0 1]. Calculer le syndrome S. d ] Reconstituer le message corrigé. 02.02.12 25