ELE1300 Circuits logiques
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? 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 2
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) 3
Le code Ascii ( ) 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 4
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 0 0101 5 0001 1 0110 6 0010 2 0111 7 0011 3 1000 8 0100 4 1001 9 5
Code BCD ( ) Comment représenter un nombre en code BCD 8421? On associe à chaque chiffre le code binaire correspondant: 125 : 0001 0010 0101 : 000100100101 105 : 0001 0000 0101 : 000100000101 536 : 0101 0011 0110 : 010100110110 749 : 0111 0100 1001 : 011101001001 6
Code de Gray Problématique : (CAS IDÉAL) v 2 (t) v 1 (t) v 0 (t) Nombre observé : 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 000 001 010 011 100 101 110 111 t t t 7
Code de Gray ( ) Problématique ( ) : (CAS RÉEL) v 2 (t) 0 0 0 0 1 1 1 1 v 1 (t) 0 0 1 1 0 0 1 1 v 0 (t) 0 1 0 1 0 1 0 1 Nombre observé : 000 001 010 011 100 101 110 111 011 111 101 111 8
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é 9
Code de Gray ( ) Solution : (CAS RÉEL) v 2 (t) v 1 (t) v 0 (t) Nombre observé : 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 0 1 1 0 0 1 1 0 000 001 011 010 110 111 101 100 t t t 10
Code de Gray ( ) Il est possible de construire le code de Gray de façon itérative : debut 0 1 des 0 des 1 Itération 1 Itération 2 0 0 0 1 1 1 1 0 résultat précédent mirroir des 0 des 1 0 00 0 01 0 11 0 10 1 10 1 11 1 01 1 00 résultat précédent mirroir 11
Détection et correction d erreurs Problème de base en communication : v(t) v(t) + BRUIT ÉMETTEUR CANAL RÉCEPTEUR BRUIT 12
Détection et correction d erreurs ( ) Problème de base en communication ( ) : 1 0 1 0 0 1 0 1 0 0 t t 1 0 1 0 1 1 0 0 0 0 ERREUR ERREUR 13
Détection et correction d erreurs ( ) Notion de distance de Hamming : J envoie Je reçois Est-ce? 0 1 0? 1? 00 10 00? 10? 11? 000 001 000? 001? 010? 100? 14
Détection et correction d erreurs ( ) La réponse serait peut-être évidente si certains mots étaient impossibles dans un code: Code : {000,011,101,110} Mots impossibles : {001,010,100,111} J envoie Je reçois Erreur? 000 001 OUI 000 010 OUI 000 100 OUI 000 000 NON 011 010 OUI 011 001 OUI 011 111 OUI 011 011 NON 15
Détection et correction d 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 011 2 bits diff. 2 bits diff. 101 110 2 bits diff. 16
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 <> 0010 m = 1 0000 <> 0011 m = 2 0101 <> 1010 m = 4 0101 <> 0010 m = 3 0101 <> 1110 m =? 1101 <> 1010 m =? 0111 <> 0110 m =? 0100 <> 0010 m =? 17
Comment détecter, et corriger Théorie de la détection d erreurs C + D = M 1 où C < D 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 18
Codes et détection d erreur 1. Bit de parité (vu précédemment) b b b b b p n n-1 3 2 1 n bits d information 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 19
Codes correcteurs d erreurs 2. parité orthogonale INFORMATION : 1 1 0 1 1 1 1 0 0 0 0 0 1 1 0 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 1 0 BITS ÉMIS : 1 1 0 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 1 0 20
Codes correcteurs d erreurs 2. parité orthogonale ( ) Assure d avoir M = 3 C + D = M 1 = 3 1= 2 où C < D => D=2 C=0 ou D=1 C=1 Il est possible de détecter une erreur et de la corriger; Il est possible de détecter deux erreurs, mais impossible de les corriger 21
Codes correcteurs d erreurs 2. parité orthogonale ( ) BITS ÉMIS : 1 1 0 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 1 0 BITS REÇUS : 1 1 0 0 1 0 1 1 1 0 0 1 0 0 0 0 1 0 1 0 Vérification : 1 1 0 0 1 0 1 1 PARITÉ NON VÉRIFIÉE 1 0 0 1 L ERREUR EST CORRIGIBLE 0 0 0 0 1 0 1 0 PARITÉ NON VÉRIFIÉE 22
Codes correcteurs d erreurs 3. Code de Hamming ( ) Information (4 bits) : Bits de parité (3 bits) : b4 b3 b2 b1 p3 p2 p1 Disposition des bits après le codage (7 bits) : 7 6 5 4 3 2 1 b4 b3 b2 p3 b1 p2 p1 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 : POSITION le bit de parité p 1 est associé aux bits d information b 1, b 2 et b 4 le bit de parité p 2 est associé aux bits d information b 1, b 3 et b 4 le bit de parité p 3 est associé aux bits d information b 2, b 3 et b 4 23
Codes correcteurs d erreurs 3. Code de Hamming ( ) Assure d avoir M = 3 C + D = 3 1=0 où C < D => D=2 C=1 ou D=1 C=1 Il est possible de détecter une erreur et de la corriger; Il est possible de détecter deux erreurs, mais impossible de les corriger 24
Codes correcteurs d erreurs 3. Code de Hamming ( ) ' ' ' ' ' ' ' Mot de code reçu (7 bits) : b4 b3 b2 p3 b1 p2 p1 Vérification : 7 6 5 4 3 2 1 POSITION (Hypothèse : aucune ou une seule erreur) c c 3 1 ' ' ' ' 0, si la parité de b b b p est vérifiée 4 3 2 3 1, autrement ' ' ' ' 0, si la parité de b b b p est vérifiée 4 2 1 1 1, autrement c 2 ' ' ' ' 0, si la parité de b b b p est vérifiée 4 3 1 2 1, autrement On peut démontrer que : c c c 3 2 1 position de l'erreur, s'il y a une erreur 2 0 0 0, s'il n'y a aucune erreur 25
Codes correcteurs d erreurs 3. Code de Hamming ( ) Exemple : INFORMATION À TRANSMETTRE : 0 1 1 0 BITS ÉMIS : 0 1 1 0 0 1 1 BITS REÇUS : 7 6 5 4 3 2 1 POSITION 0 1 0 0 0 1 1 VÉRIFICATION : c 3 = 1, c 2 = 0, c 1 = 1 CONCLUSION : c 3 c 2 c 1 = 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 BLOC CORRIGÉ : 0 1 1 0 0 1 1 26
Codes correcteurs d erreurs 3. Code de Hamming ( ) Positions des bits 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Bits de données p1 p2 d1 p4 d2 d3 d4 p8 d5 d6 d7 d8 d9 d10 d11 p16 d12 d13 d14 d15 p1 x x x x x x x x x x Couverture du bit de parité p2 x x x x x x x x x x p4 x x x x x x x x x p8 x x x x x x x x p16 x x x x x Par exemple, dans l hypothèse ou 1 seul bit est erroné, si les bits de parité p2 et p8 indiquent une erreur (parités non-vérifiées), alors on en déduit que le bit 10 (d6) est inversé. 27
Codes correcteurs d erreurs Le code de Hamming et le code par parité orthogonale sont des codes correcteur d erreurs. Il en existe d autres (Reed- Solomon, Codes convolutionnels, ). L information rajoutée qui rapporte: La correction d erreurs de 1-bit est souvent moins couteuse qu une retransmission Lorsque les données sont emmagasinées en mémoire, la correction d erreur permet d éviter la corruption des données pouvant mener à des pannes dans un programme (crash). 28