Professional Documents
Culture Documents
Définitions
Le codage est l'opération qui transforme une information (écriture décimal, position angulaire,
vitesse...) en écriture binaire dans un code de notre choix.
Un code est un est un langage composé de différents symboles ou mots.
Un mot est un ensemble de caractères numériques ou alphanumériques.
Le transcodage est le passage d'un code à un autre.
Ce code correspond au système de numération binaire et fait référence au code binaire naturel.
Les caractères sont des bits.
Les mots sont formés par une association ou combinaison de bits et avec n bits nous pouvons
former au maximum 2n mots.
Les transcodeurs sont des circuits qui convertissent les différents codes entre eux. D'une manière
générale, nous pouvons définir le transcodage comme étant la représentation d'un élément de
l'ensemble A par un ou plusieurs éléments pris dans un ensemble B d'éléments. Le rapport
entre les deux quantités est déterminé par une règle de correspondance.
La représentation numérique la plus connue et la plus répandue en technique numérique est le code
binaire. Pour une meilleur lisibilité, le code binaire peut être reproduit en code octal (chaque triplet
de chiffres binaire est écris en nombre décimal). Parmi les autres codes nous citerons : les nombres
BCD (nombres décimaux codés en binaire), le code Aiken, le code plus 3, le code Gray, le code 1
parmi 10...
Chaque code présente deux attributs caractéristiques : la longueur m et le nombre de mot de code
n possible.
Pour le code BCD, par exemple, la longueur est m=4 et le nombre de mots de code (mots utiles)
N=10.
Il faut prendre en considération la différence entre un code complet et un code incomplet. Le code
complet contient tous les mots de code binaire ou combinaisons possibles. Par contre, le code
incomplet n'utilise qu'une partie des combinaisons possibles.
Le code BCD fait donc partie du groupe des codes incomplets étant donné qu'il n'utilise que 10 mots
de code binaire possibles sur 16.
Selon leur mode de fonctionnement les transcodeurs sont subdivisés en décodeurs et en codeurs.
Les décodeurs convertissent un code d'entrée de longueur m en code de sortie de 1 parmi n.
Pour les lignes d'entrée codées en binaire, il y a 2m = n mots de code possibles et donc n lignes de
sortie.
Sur le circuit de décodage illustré ci-dessus, la sortie active délivre un niveau logique 1, toutes les
autres sorties étant de niveau logique 0.
Si nous souhaitons avoir une sortie active à l'état bas, il suffit de remplacer les quatre portes ET par
des portes NON ET (nand).
Les codeurs convertissent un code d'entrée 1 parmi n en un code de sortie de longueur m. Pour n
lignes d'entrée, il y a m lignes de sortie pour un signal codé en binaire.
La façon la plus simple de représenter les 10 chiffres décimaux par 4 variables binaires est de
prendre les 10 premières combinaisons des 4 variables du système binaire naturel.
Si nous affectons les poids 1, 2, 4, 8 à ces 4 variables, nous obtenons le tableau de correspondance
suivant :
Le fait d'affecter des poids aux variables binaires nous conduit à appeler le code obtenu "code
pondéré".
Ainsi le nombre le nombre 7 est représenté par la combinaison 0111 (7 = 0 + 4 + 2 + 1).
Le code 8421 (appelé aussi code 1248) est le plus simple des codes pondérés à 4 bits.
Voici quelques exemples de nombres représenté par le code 8421 :
Remarques :
Un code est dit «pondérés» quand il existe des nombres qui indiquent le poids des chiffres binaires.
En multipliant ces nombres par les chiffres binaires correspondants, on obtient l'équivalence
décimale.
Tous les autres codes dans lesquels on ne peut repérer le poids des chiffres binaires sont appelés
«non pondérés». Ils sont élaborés sur une base à développement mathématique complexe ou plus
simplement sont caractérisés par des tables faites spécialement.
Différents codes ont été imaginés, ayant diverses propriétés logiques et arithmétiques. Le choix de
l'un ou de l'autre type de code dépend exclusivement des applications auxquelles il est destiné.
Code Gray
Le code Gray est fréquemment utilisé dans les capteurs angulaires ou de positionnement, mais
aussi lorsque l'on désire une progression numérique binaire sans parasite transitoire.
Le code Gray sert également dans les tableaux de Karnaugh utilisés lors de la conception de
circuits logiques.
Le code Gray est un code construit de telle façon qu'a partir du chiffre 0 chaque nombre consécutif
diffère du précédent immédiat d'un seul digit.
En l'exprimant autrement nous pouvons également dire que l'on change un seul bit à la fois quand
un nombre est augmenté d'une unité.
De plus, on opère de telle manière que le digit de transformation soit d'un poids faible. Si une erreur
survient lors d'une transformation d'un nombre à un autre elle est ainsi minimisée.
Commençons par un exemple simple et établissons le code gray pour les 4 premiers chiffres
décimaux 0 à 3.
Deux bits suffisent et les combinaison en binaire BCD sont les suivantes :
Nous remarquons que pour aller du nombre (1)10 à (2)10 nous changeons les deux bits à la fois pour
passer de (01)2 à (10)2.
En code Gray, pour passer d'une ligne à la suivante, on inverse un seul bit de telle manière qu'il
soit le bit le plus à droite possible conduisant à un nouveau nombre.
Ce qui donne les combinaisons suivantes :
Le nom code binaire réfléchi vient d'une autre méthode de construction. Elle est plus pratique ou
plus visuelle quand au choix du bit à inverser lors du passage d'un nombre au suivant.
Soit un nombre N en binaire pur, pour obtenir son équivalent n en binaire réfléchi, il suffit
d'effectuer l'opération suivante :
Exemple :
soit N = 0111,
nous avons 2N = 1110 (pour multiplier par 2 on effectue un décalage de la droite vers la gauche).
On effectue maintenant l'opération OU Exclusif de N et 2N :
Puis nous divisons par 2 le résultat soit 1001 / 2 = 0100 (pour diviser par 2 on effectue un décalage
de la gauche vers la droite).
Nous avons alors :
pour N = 0111 en binaire pur correspond n = 0100 en code Gray.
Etablissons un diagramme de Karnaugh pour G1, G2, G3, G4 à partir de B1, B2, B3 et B4.
Nous pouvons remarquer que le passage du binaire pur au code Gray se fait en effectuant une
opération OU Exclusif.
Le circuit du transcodeur est très simple. En désignant par Bn (B1 = LSB) un bit quelconque en code
binaire pur et par Gn le bit recherché en code Gray, nous avons alors :
Pour la conversion du code Gray en code binaire la relation suivante s'apparente à l'équation vue
pour le convertisseur inverse.
Là encore les fonctions OU Exclusif sont de mise pour la réalisation du circuit de transcodage.
Ce code est surtout utilisé pour des capteurs de positions absolue , par exemple sur des règles
optiques ou un codeur angulaire solidaire d'un arbre.
En effet, si on utilise le code binaire pur, pendant le passage de la position cinq (101)2 à six (110)2
(changement simultané de 2 bits) il y a un risque de passage transitoire par quatre (100)2 ou
sept (111)2, ce que le code Gray évite.
On remarquera que le passage du maximum (quinze sur 4 bits) à zéro se fait également en ne
modifiant qu'un seul bit.
Ceci permet par exemple d'encoder un angle, comme la direction d'une girouette ou la position d'un
axe sur une machine automatique ou un robot.
Pour la construction d'un codeur angulaire solidaire d'un axe il faut de préférence établir des
ensembles de position angulaire multiples d'une puissance de 2 (2, 4, 8, 16, 32...) si l'on veut que le
changement du nombre le plus élevé du groupe vers le nombre le plus faible se fasse avec un seul
bit.
Pour une girouette à huit position (0=Nord, 1=Nord-Est, 2=Est, ... 7=Nord-Ouest) le passage de
Nord-Ouest à Nord se fait également sans problème en ne changeant qu'un seul bit.
Nous avons 16 positions angulaires détectées en 4 bits. La lecture s'effectue par 4 cellules
photosensibles.
Afin de pouvoir transmettre ou stocker tous les types de caractères alphanumériques ou autres, des
codes conventionnels ont été établis. Chaque caractère est associé à son équivalent en code
numérique. Il existe de nombreux codes et nous pouvons citer pour mémoire le code ASCII ,
l'EBCDIC, L'UNICODE, l'UTF8...
Le code ASCII
Exemple :
En écrivant GRAY en ASCII nous obtenons :
Parité
L'intérêt particulier des contrôles de parité est de vérifier qu'aucune erreur simple se produit lors du
transfert d'un mot d'une mémoire à une autre.
Exemple :
Y = 59 (hexadécimal)
Y = 101 1001
ACK = 06
Les codes 0 à 31 sont des caractères de contrôle car ils permettent de faire des actions telles que le
retour à la ligne (CR), un Bip sonore (BEL)...
les majuscules sont représentées par Les codes 65 à 90 et les minuscules par les codes 97 à 122.
En modifiant le 6ème bit nous passons de majuscules à minuscules, c'est-à-dire en ajoutant 32 au
code ASCII en base décimale.
Maintenant nous utilisons le code ASCII étendu. Il permet le codage de caractères sur 8 bits, soit
256 caractères possibles. Exemple d'une table de code étendu :