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.
- selezionare il bit più significativo del numero Gray e riportarlo
- effettuare l' XOR di questo bit con il secondo bit del numero e riportare il
risultato
- 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:
|