ELE1300 Circuits logiques Les codes représentatifs Code Ascii Le
Transcription
ELE1300 Circuits logiques Les codes représentatifs Code Ascii Le
Les codes représentatifs Qu’est-ce que le code? Un code est une règle pour convertir de l'information (mot, image...) sous une autre forme de représentation. On utilise des codes au quotidien (alphabet, chiffres) En quoi les codes représentatifs sont représentatifs? ELE1300 Circuits logiques Codes et contrôle des erreurs On va appeler code représentatif un code qui ne renvoie pas à une valeur numérale. Un exemple commun (la représentation de l’alphabet) Codes et contrôle des erreurs Code Ascii Le code Ascii (…) Le Code ASCII (acronyme de Américan Standard Code for Information Interchange) est l’un des plus anciens et certainement code représentatif. Dans sa première version, le code Ascii comportait 7 bits. Il fut ensuite élargi à 8 bits. Il est largement supplanté aujourd’hui par des codes plus modernes comme le code Unicode (16 bits) Codes et contrôle des erreurs 2 3 L\H 0 1 2 3 4 5 6 7 0 NUL DLE SP 0 @ P ` p 1 SOH DC1 ! 1 A Q a q 2 STX DC2 " 2 B R b r 3 ETX DC3 # 3 C S c s 4 EOT DC4 $ 4 D T d t 5 ENQ NAK % 5 E U e u 6 ACK SYN & 6 F V f v 7 BEL ETB ' 7 G W g w 8 BS CAN ( 8 H X h x 9 HT EM ) 9 I Y i y A LF SUB * : J Z j z B VT ESC + ; K [ k { | C FF FS , < L \ l D CR GS − = M ] m } E SO RS . > N ^ n ~ F SI US / ? O _ o DEL Codes et contrôle des erreurs 4 Code BCD Code BCD (…) Le Code BCD (acronyme de Binary Coded Decimal) est très répandu pour représenter les chiffres décimaux. Une façon simple de procéder : représenter chaque chiffre par le code binaire à 4 bits qui lui est associé (code BCD 8421) : 0000 0001 0010 0011 0100 0 1 2 3 4 0101 0110 0111 1000 1001 125 105 536 749 5 6 7 8 9 Codes et contrôle des erreurs v0(t) Nombre observé : 0010 0000 0011 0100 0101 0101 0110 1001 : : : : 000100100101 000100000101 010100110110 011101001001 6 Code de Gray (…) (CAS IDÉAL) v1(t) 0001 0001 0101 0111 Codes et contrôle des erreurs Problématique : v2(t) : : : : 5 Code de Gray Comment représenter un nombre en code BCD8421? On associe à chaque chiffre le code binaire correspondant: Problématique (…) : (CAS RÉEL) 0 0 0 0 1 1 1 1 v2(t) 0 0 0 0 1 1 1 1 t 0 0 1 1 0 0 1 1 v1(t) 0 0 1 1 0 0 1 1 t 0 000 1 001 0 010 1 011 0 100 1 101 0 110 1 v0(t) 0 1 0 000 001 010 111 Nombre observé : 011 Codes et contrôle des erreurs 1 0 1 0 011 100 101 110 1 t 7 111 Codes et contrôle des erreurs 101 111 111 8 Code de Gray (…) Code de Gray (…) Le problème vient du fait que dans la représentation usuelle des nombres, il arrive que deux bits ou plus changent de valeur en même temps. Frank Gray (Bell Labs) propose au début des années 1950 une solution : celle d’un code où les transitions d’un nombre au suivant n’impliquent le changement que d’un seul bit à la fois. Le code de Gray est ainsi né Solution : (CAS RÉEL) v2(t) v1(t) v0(t) Nombre observé : Codes et contrôle des erreurs Itération 1 0 1 00 01 11 10 0 1 1 1 1 t 0 1 0 1 1 1 0 0 t 0 1 1 000 001 011 0 0 1 1 010 110 111 101 0 t 100 Codes et contrôle des erreurs 10 Problème de base en communication : Itération 2 résultat précédent des 0 0 Détection et correction d’erreurs Il est possible de construire le code de Gray de façon itérative : debut 0 9 Code de Gray (…) 0 résultat précédent des 0 0 00 0 01 0 11 0 10 1 10 1 11 1 01 1 00 mirroir des 1 v(t) ÉMETTEUR mirroir v(t) + BRUIT CANAL RÉCEPTEUR … BRUIT des 1 Codes et contrôle des erreurs 11 Codes et contrôle des erreurs 12 Détection et correction d’erreurs (…) Problème de base en communication (…) : 1 0 1 0 0 1 0 1 Détection et correction d’erreurs (…) 0 Notion de distance de Hamming : 0 t J’envoie Je reçois 0 1 00 10 000 001 Est-ce? 0? 1? 00? 10? 11? 000? 001? 010? 100? t 1 0 1 0 1 1 ERREUR 0 0 0 0 ERREUR Codes et contrôle des erreurs 13 Détection et correction d’erreurs (…) La réponse serait peut-être évident si certains mots étaient impossibles dans un code: Je reçois 001 010 100 000 010 001 111 011 Codes et contrôle des erreurs Remarque : C’est le fait qu’on ne trouve pas deux mots du code qui soient différents par un seul bit qui permet de détecter l’erreur sur un bit 2 bits diff. 000 Erreur? OUI OUI OUI NON OUI OUI OUI NON 2b its d iff. 2 sd bit 2 bits diff. 101 15 14 Détection et correction d’erreurs (…) Code : {000,011,101,110} Mots impossibles : {001,010,100,111} J’envoie 000 000 000 000 011 011 011 011 Codes et contrôle des erreurs 011 iff. 2 bits diff. 2 bits diff. Codes et contrôle des erreurs 110 16 Comment détecter, et corriger Distance de Hamming La distance de Hamming qui sépare deux mots est le nombre de bits différents entre le premier mot et le second 0000 0000 0101 0101 0101 1101 0111 0100 <> <> <> <> <> <> <> <> 0010 0011 1010 0010 1110 1010 0110 0010 m m m m m m m m = = = = = = = = Théorie de la détection d’erreurs C + D = M – 1 où C < D 1 2 4 3 ? ? ? ? C : Nombre de bits erronés pouvant être corrigé D : Nombre de bits erronés pouvant être détectés M : Distance minimale entre deux codes C <D: Il faut pouvoir détecter une erreur avant de la corriger Codes et contrôle des erreurs 17 Codes et contrôle des erreurs Codes connus Codes connus (…) 1. Bit de parité (vu précédemment) 2. parité orthogonale bn bn −1 " b3 b2 b1 n bits d’information INFORMATION : p bit de parité Assure d’avoir M = 2 C + D = 2 – 1=1 où C < D => D=1 C=0 Il est possible de détecter une erreur, mais impossible de la corriger BITS ÉMIS : Codes et contrôle des erreurs 19 110 111 1 1 0 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 1 0 1100 1111 18 100 000 1001 0000 Codes et contrôle des erreurs 1010 20 Codes connus (…) Codes connus (…) 2. parité orthogonale (…) 2. parité orthogonale (…) BITS ÉMIS : 1100 1111 1001 0000 1010 BITS REÇUS : 1100 1011 1001 0000 1010 Assure d’avoir M = 3 C + D = 3 – 1=0 où C < D => Vérification : D=2 C=1 ou D=1 C=1 Il est possible de détecter une erreur et de la corriger; L’ERREUR EST CORRIGIBLE Il est possible de détecter deux erreurs, mais 1 1 0 0 1 0 1 1 1 0 0 1 0 0 0 0 1 0 1 0 impossible de les corriger PARITÉ NON VÉRIFIÉE Codes et contrôle des erreurs 21 Codes et contrôle des erreurs Codes connus (…) Codes connus (…) 3. Code de Hamming (…) 3. Code de Hamming (…) Information (4 bits) : b4 b3 b2 b1 POSITION Bits de parité (3 bits) : p3 p2 p1 7 Disposition des bits après le codage (7 bits) : b4 6 5 b3 b2 4 PARITÉ NON VÉRIFIÉE 3 p3 b1 2 1 p2 p1 22 Assure d’avoir M = 3 C + D = 3 – 1=0 où C < D => D=2 C=1 ou D=1 C=1 • Le but du code de Hamming est que la vérification des bits de parité permettent d’identifier la position d’une erreur de transmission dans le cas d’une seule et unique erreur. • Les bits de parité p3, p2 et p1 sont le résultat d’un calcul de parité avec les autres bits : le bit de parité p1 est associé aux bits d’information b1 , b2 et b4 Il est possible de détecter deux erreurs, mais le bit de parité p2 est associé aux bits d’information b1 , b3 et b4 le bit de parité p3 est associé aux bits d’information b2 , b3 et b4 Codes et contrôle des erreurs Il est possible de détecter une erreur et de la corriger; impossible de les corriger 23 Codes et contrôle des erreurs 24 Codes connus (…) Codes connus (…) 3. Code de Hamming (…) 3. Code de Hamming (…) 7 Mot de code reçu (7 bits) : 6 ' 4 b 5 ' 3 4 ' 2 b b 3 ' 3 2 ' 1 p b POSITION 1 ' 2 ' 1 p p Exemple : INFORMATION À TRANSMETTRE : 0110 BITS ÉMIS : 0110011 (Hypothèse : aucune ou une seule erreur) 7 BITS REÇUS : Vérification : ⎧0 , si la parité de b4' b3' b2' p3' est vérifiée c3 = ⎨ ⎧0 , si la parité de b4' b3' b1' p2' est vérifiée ⎩1 , autrement c2 = ⎨ ⎩1 , autrement ⎧0 , si la parité de b4' b2' b1' p1' est vérifiée c1 = ⎨ ⎩1 , autrement ⎧ position de l'erreur ( 2 ) , s'il y a une erreur c3c2 c1 = ⎨ 000 , s'il n'y a aucune erreur ⎩ On peut démontrer que : Codes et contrôle des erreurs 25 Encoder le nombre : 1001001111011001 0 1 1 1 0 0 1 0 0 0 1 1 1 1 0 1 1 1 0 0 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0 1 1 0 1 0 1 1 1 0 0 1 1 1 1 1 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 1 1 0 1 0 0 1 0 1 0 1 27 POSITION c3 = 1, c2 = 0, c1 = 1 c3 c2 c1 = 101 Dans l’hypothèse où il n’y a qu’une seule erreur, elle est à la position 101(2) = 5 dans le bloc binaire reçu Codes et contrôle des erreurs 3. Code de Hamming [+ que 4 bits] (…) Codes et contrôle des erreurs CONCLUSION : 1 BLOC CORRIGÉ : Codes connus (…) VÉRIFICATION : 6 5 4 3 2 0100011 0110011 26