Codice Gray
Da Wikipedia, l'enciclopedia libera.
Il codice Gray è un codice numerico binario.
Questo standard prevede che una qualunque coppia di bit adiacenti (appartenenti ad una sequenza di n bit rappresentanti un valore) differisca al suo interno di un solo bit.
Diversi dispositivi elettronici di acquisizione di posizione, tra cui gli encoder (lineari o rotativi, come - per esempio - i regolatori di volume digitali negli impianti Hi-Fi), codificano il valore digitale della posizione chiudendo o aprendo una serie di contatti elettrici o barriere ottiche. Il problema è che a causa delle tolleranze meccaniche è improbabile che due o più bit di una cifra possano commutare esattamente nello stesso istante. Viene a crearsi un periodo intermedio in cui è codificato un valore indesiderato, che può generare confusione nella successiva elaborazione.
Per questo scopo fu progettato e brevettato nel 1953 dal ricercatore Frank Gray dei laboratori Bell un apposito codice, il codice Gray.
Negli encoder che utilizzano questo codice, il passaggio da un valore al successivo o precedente comporta la commutazione di un unico circuito, eliminando ogni possibile valore equivoco.
Da notare che anche nel passaggio dall'ultima alla prima parola del codice cambia solamente un bit.
[modifica] Costruzione
Un codice Gray ad n-bit si costruisce attraverso un algoritmo ricorsivo, abbastanza semplice. Si parte dal primo bit, quello meno significativo, si mette uno 0 sopra ed un 1 sotto.
Al passo successivo, si mette una riga ad di sotto dell'1, come se fosse uno specchio, e si ricopiano le cifre invertendo l'ordine, con la riga che funge da specchio, appunto. Si termina inserendo uno 0 davanti alla sequenza costruita se questa è sopra la riga, altrimenti si aggiunge un 1. Ora siamo arrivati ad un codice con 2 bit.
Iterando i passi precedenti, si mette la riga, si specchia la sequenza e si aggiunge il bit più significativo, si costruiscono codici ad n-bit.
[modifica] Esempi
Codice Gray a 2 bit 00 01 11 10
Codice Gray a 3 bit 000 001 011 010 110 111 101 100
Codice Gray a 4 bit 0000 0001 0011 0010 0110 0111 0101 0100 1100 1101 1111 1110 1010 1011 1001 1000
Codice Gray a 5 bit 00000 00001 00011 00010 00110 00111 00101 00100 01100 01101 01111 01110 01010 01011 01001 01000 11000 11001 11011 11010 11110 11111 11101 11100 10100 10101 10111 10110 10010 10011 10001 10000