Code Gray


L'utilisation du binaire pur étant peu pratique il a été développé d'autres représentations des nombres binaires comme le BCD plus 3, le BCD 8421, l'octal, l'hexadécimal ...
Le code Gray est un code qui présente la particularité de ne modifier qu'un seul bit à chaque incrémentation.
Le code Gray n d'un nombre binaire N, est donné par la relation n = (N ⊕2.N) / 2.
Exemple :
N = 0111.
2.N = 1110 (Pour multiplier un nombre binaire par 2, on fait un décalage à gauche).
N ⊕2.N = 1001 (Ou exclusif entre 0111 et 1110)
n = 0100 (Pour diviser un nombre binaire par 2, on fait un décalage à droite).

  Décimal Binaire Gray  

Un autre intérêt du code Gray est que les circuits de conversion binaire ⇒ code Gray ou code Gray ⇒ binaire pur sont simples à réaliser.

Conversion du binaire en code Gray :
Les sorties d'un compteur binaire 4 bits (codage BCD 8421) sont reliées à 3 portes XOR (ou exclusif) afin d'obtenir une sortie en code Gray.
Dans l'exemple utilisé, le compteur est incrémenté pour chaque front descendant du signal d'horloge.
Vérifier qu'un seul bit est modifié à chaque changement d'état du compteur.

Conversion du code Gray en binaire pur :
A la sortie d'un dispositif qui délivre l'information sous forme de code Gray, il suffit d'un simple circuit de décodage constitué de trois portes Ou exclusif (XOR) pour obtenir la valeur sous forme de binaire pur.

  0 0000 0000  
  1 0001 0001  
  2 0010 0011  
  3 0011 0010  
  4 0100 0110  
  5 0101 0111  
  6 0110 0101  
  7 0111 0100  
  8 1000 1100  
  9 1001 1101  
  10 1010 1111  
  11 1011 1110  
  12 1100 1010  
  13 1101 1011  
  14 1110 1001  
  15 1111 1000  

Roue codeuse en code Gray
La roue est constituée par un disque transparent dont des secteurs sont rendus opaques.
On présente ici un encodeur 4 bits pour une girouette capable de repérer 16 secteurs angulaires. L'état éclairé ou non des 4 cellules photoélectriquesen fonction de la position du disque est converti en niveaux logiques "0" ou "1".
Le circuit de décodage transforme le code Gray en binaire pur.
Pour l'affichage final "N", "NNE", "NE", "ENE" ... il faut utiliser un autre circuit de décodage.