Saltar la navegación

Código Gray

El código Gray o código binario reflejado, nombrado así en honor del investigador Frank Gray, es un sistema de numeración binario en el que dos números consecutivos difieren solamente en uno de sus dígitos.

De un valor en código Gray al siguiente solo hay un cambio de un bit, como puede apreciarse en la siguiente tabla. Se han incluido en ella las expresiones BCD, que ya son conocidas.

Observa también que los bits son simétricos respecto a la línea en la que se cambia de color.

DECIMAL BCD GRAY 2 BITS GRAY 3 BITS GRAY 4 BITS
0 0000 00 000 0000
1 0001 01 001 0001
2 0010 11 011 0011
3 0011 10 010 0010
4 0100   110 0110
5 0101   111 0111
6 0110   101 0101
7 0111   100 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 puede ver que el código Gray es también cíclico, ya que cuando llegamos al número más alto, con un solo cambio de bit se vuelve al inicio.

El código Gray fue diseñado originalmente para prevenir señales falsas o viciadas de los relés que se empleaban en las primeras computadoras, y actualmente es usado para facilitar la corrección de errores en los sistemas de comunicaciones, tales como algunos sistemas de televisión por cable y la televisión digital terrestre.

En robótica, es utilizado principalmente en sistemas de posición (encoders), ya sea angular o lineal. Sus aplicaciones principales se encuentran en la industria y en robótica. Se suelen utilizar unos discos codificados para dar la información de posición que tiene un eje en particular. Esta información se da en código GRAY.

Una aplicación adicional, no la podemos olvidar, es la que se da en los diagramas de Karnaugh, para la simplificación de funciones lógicas.

ALGORITMOS DE CONVERSIÓN

Para convertir entre Gray y binario, basta con seguir uno de estos algoritmos, según proceda.

Conversión de binario a Gray

  1. Fijamos el "1" inicial, que será el mismo.
  2. Sumamos las cifras del número binario de dos en dos, empezando desde la izquierda, por parejas, y sin tener en cuenta los acarreos. Es decir, aplicaremos: 1 + 1 = 0; 1 + 0 = 1; 0 + 0 = 0. Si te fijas bien, es la suma a través de una puerta XOR.
  3. Colocamos el resultado de la operación tras el "1" inicial.
  4. Repetimos la operación hasta que se acaben las posibles parejas.

Un ejemplo: convertir 1100B) a Gray:

1) Ponemos el primer "1"

2) Hacemos 1⊕1 = 0 y lo colocamos tras el 1 anterior. Ya tenemos "10".

3) Hacemos 1⊕0 = 1 y lo colocamos tras el "10". Ya tenemos "101".

4) Finalmente, hacemos 0⊕0 = 0, y lo colocamos tras el "101". Hemos formado el "1010"

Podemos comprobar en la tabla que, efectivamente, se corresponden ambos valores.

Conversión de Gray a binario

En este caso, el algoritmo consiste en estos pasos:

  1. Ponemos el "1" inicial.
  2. Sumamos (sin llevada, es decir, con la suma XOR) la (n-1)-ésima cifra Gray a la n-ésima binaria y la ponemos como (n-1)-ésima cifra del número binario ya convertido.
  3. Repetimos hasta acabar con todas las cifras.

Vamos a hacer la conversión inversa del 1010GRAY).

1) Ponemos el "1" inicial.

2) Sumamos "0" (tercera cifra Gray) con "1" (cuarta cifra binaria). Nos da "1", que colocamos tras el "1" que teníamos, y habremos formado "11".

3) Sumamos "1" (segunda cifra Gray) con "1" (tercera cifra binaria). Nos da "0", que colocamos tras el "11", y ya habremos formado "110".

4) Finalmente, sumamos "0" (primera cifra Gray) con "0" (segunda cifra binaria). Nos da "0", que es la primera cifra binaria: hemos formado el número "1100", como ya sabíamos.

Creado con eXeLearning (Ventana nueva)