Tutorials - Informatica

 

Il Codice Gray

l codice Gray è un codice binario, composto da un qualsiasi numero di bit maggiore di due, nel quale il passaggio da un numero rappresentato al successivo (o precedente) comporta la variazione di un solo bit.

Decimale Binario Gray
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

 

 

 

 

 

 

 

 

 

 

 

Se realizziamo una tabella di confronto tra una numerazione binaria ed una Gray possiamo vedere con facilità in cosa consista questa codifica.

Se prendiamo ad esempio il passaggio da 1 a 2 vediamo che gli equivalenti binari sostituiscono DUE cifre contemporaneamente:

Decimale Binario Gray
1 01 01
2 10 11

Nel codice Gray, invece, solamente una cifra viene cambiata. E vediamo questo applicato a tutti i successivi numeri della sequenza.

Questa caratteristica permette al progettista di eseguire il controllo degli errori in operazioni con dispositivi elettronici che trattano sequenze binarie provenienti da dispositivi esterni al calcolatore, come ad esempio codificatori elettromeccanici, encoder, trasmissioni seriali di dati, ecc.

La codifica diventa essenziale per trattare sequenze di valori binari, dato che il passaggio da un numero al successivo deve presentare una sola variazione di bit ed è quindi possibile identificare se si è verificato un errore di input al momento dell' acquisizione della sequenza.

Numerosi sistemi, come gli encoder rotativi, usati in sostituzione di potenziometri e commutatori in strumentazione, regolazione di volume in apparecchi audio, sintonia in ricevitori radio, ecc, codificano il valore digitale della posizione chiudendo o aprendo due o più contatti elettrici. A causa di tolleranze meccaniche, rimbalzi dei contatti, disturbi, è possibile che ci si trovi con un passaggio di posizione in cui i commutatori non agiscono tutti nello steso momento, originando situazioni intermedie.  In questi casi verrebbe a crearsi una configurazione fisica che si trasforma in un valore indesiderato tra due passi e che, nel sistema computerizzato, darebbe origine ad errori nel conteggio della posizione.
Negli encoder che utilizzano il codice Gray, il passaggio da un valore al successivo o precedente comporta la commutazione di un unico circuito, eliminando ogni possibile errore dovuto a codifiche binarie intermedie.

Ugualmente l' uscita di encoder in quadratura è una codifica Grey.

Il codice Gray non è un codice pesato, ovvero non c'è relazione tra il valore (peso) di un bit e la sua posizione nel numero, che deriva da un algoritmo particolare (basato su aritmetica a modulo 2).

Questo significa che i numeri così codificati sono ben poco pratici da utilizzare direttamente in operazioni matematiche e vanno convertiti.


Convertire il binario in Gray

Per convertire un numero binario in codice Gray è molto semplice: si utilizza la funzione XOR, che è definibile come una somma in modulo 2.

Si effettua l' XOR tra il numero binario e se stesso shiftato di una posizione verso destra. Ad esempio:

binario 1011
XOR  1011
Gray 1110

Da notare che la prima cifra del codice Gray è la stessa del numero binario.

Se effettuassimo l' operazione con porte logiche, la configurazione sarebbe questa:



Convertire il Gray in binario 

L' operazione opposta è sempre basata sulla funzione XOR, ma è più laboriosa.

  1. selezionare il bit più significativo del numero Gray e riportarlo
  2. effettuare l' XOR di questo bit con il secondo bit del numero e riportare il risultato
  3. ripetere l' operazione ad esaurimento delle cifre con XOR tra il riporto e la successiva cifra
Gray 1110

Operazione

  1 riportare la prima cifra
XOR 10 XOR di questa con la seconda cifra e riportare
XOR 101 XOR del riporto con la terza cifra e riportare
XOR 1011 XOR del riporto con la quarta cifra e riportare
Gray 1011  

Se effettuassimo l' operazione con porte logiche, la configurazione sarebbe questa:


Argomenti collegati:

 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 08/05/11.