Está en la página 1de 8

EL CÓDIGO GRAY

Consiste en una ordenación de <math>2^n</math> números binarios de tal forma


que cada número sólo tenga un dígito binario distinto a su predecesor. Esta
técnica de codificación se originó cuando los circuitos lógicos digitales se
realizaban con válvulas de vacío y dispositivos electromecánicos. Los contadores
necesitaban potencias muy elevadas a la entrada y generaban picos de ruido
cuando varios bits cambiaban simultáneamente. El uso de código Gray garantizó
que en cualquier transición variaría tan sólo un bit. En la actualidad, el código Gray
se sigue empleando para el diseño de cualquier circuito electrónico combinacional
mediante el uso de un Mapa de Karnaugh, ya que el principio de diseño de buscar
transiciones más simples y rápidas entre estados sigue vigente, a pesar de que los
problemas de ruido y potencia se hayan reducido.

Hay varios algoritmos para generar una secuencia de código Gray (y varios
códigos posibles resultantes, en función del orden que se desee seguir), pero el
más usado consiste en cambiar el bit menos significativo que genera un nuevo
código. Este es un código gray de cuatro bits generado con dicho algoritmo:
Dígito decimal Código Gray Dígito decimal Código Gray
0 0000 8 1100
1 0001 9 1101
2 0011 10 1111
3 0010 11 1110
4 0110 12 1010
5 0111 13 1011
6 0101 14 1001
7 0100 15 1000

El primer uso documentado de un código de estas características fue en una


demostración del telégrafo del ingeniero francés Émile Baudot, en 1878. Pero no
fueron patentados hasta 1953 por Frank Gray (que dio nombre al sistema de
codificación), un investigador de los laboratorios Bell.

Diseño de circuitos combinacionales


El código Gray es otro tipo de código basado en un sistema binario pero de una
construcción muy distinta a la de los demás códigos. Su principal característica es
que 2 números sucesivos, cualesquiera, solo varían en 1 bit.

Esto se consigue mediante un proceso poco riguroso que consiste en:


0 0 0 00 Se escribe en una columna los dígitos 0 y 1
1 1 1 01 Se toma una línea imaginaria en la base de la columna
-- -- --- Se reproduce la columna bajo la línea como si de un espejo
1 11 se tratase
0 10 Se rellenan las dos zonas con 0s y con 1s
Por tanto, para un código Gray de n bits se toma el correspondiente Gray de n-1
bits, se le aplica simetría y se rellena su parte superior con 0s y la parte inferior de
1s.

Esta codificación no tiene nada que ver con un sistema de cuantificación. En


efecto, los términos 000, 101, etc no denotan un valor matemático real (a
diferencia de los demás códigos) sino uno de los X valores que puede tomar una
variable. Por lo tanto, se trata de hallar, partiendo de una variable que pueda
tomar X valores, se toma un n suficiente como para que 2 n>a X y ordenar estos
estados de la variable conforme a las normas de Gray de cambio entre dos
estados sucesivos.

Estos conceptos pueden ser difíciles en un principio de entender pero una vez
abordado el diseño de circuitos combinacionales todo se ve con mayor claridad.

BINARIO A GRAY
Para pasar un número binario al código binario Gray, hay una regla fácil de
implementar en un lenguaje de programación:
 Un número en binario siempre empieza en 1 --Los ceros a la izquierda no
cuentan--; Pues en Gray también. Ej: 1000011110000 en binario se escribe
1xxxxXXXXxxxx.
 Ahora nos fijamos en el segundo dígito. Si es igual al dígito anterior se pone un
0 (no cambia); Si es diferente --como es el caso, pues el dígito anterior era un
1 y el que observamos un 0-- se pondrá un 1 (cambia). Ej: El número del
ejemplo anterior será: 11xxxXXXXxxxx.
 En los casos sucesivos se repite el paso anterior, observando en el número
binario 'natural' el dígito anterior al que se evalúa. Ej: El número del ejemplo
anterior, pasado a código Gray será: 1100010001000.
Otros ejemplos:
1010 - 1111
111000 - 100100
011001 - 010101
110101010001 - 101111111001
Otra técnica sencilla para pasar de binario a Gray sin usar un lenguaje de
programación es esta:
 aplicar un XOR (disyunción exclusiva, también se puede sumar cada bit
individualmente descartando cualquier acarreo) del número a sí mismo pero
con un acarreo a la derecha
 eliminar el bit del extremo derecho
Ej: Pasar diez (1010) de binario a gray será 1111
1010
1010
-----
1111
OTROS EJEMPLOS

111000
111000
------
100100
110101010001
110101010001
------------
101111111001

GRAY A BINARI
Hacer el cambio contrario es simplemente invertir lo que hace el anterior, de forma
que si se encuentra un cero (siempre que no sea al principio) se debe poner la
cifra anterior; En cambio si pone un 1 es porque la cifra ha cambiado así que si
había un 0 ahora se pone un 1 y viceversa.

MOTIVACIÓN
Las computadoras antiguas indicaban posiciones abriendo y cerrando
interruptores. Utilizando tres interruptores como entradas usando Base 2, estas
dos posiciones estarían una después de la otra:
...
011
100
...

El problema con el código binario en base 2 es que con interruptores mecánicos,


es realmente difícil que todos los interruptores cambien al mismo tiempo. En la
transición de los dos estados mostrados arriba, tres interruptores cambian de sitio.
En el lapso en el que los interruptores están cambiando, se pueden presentar
salidas de información espurias. Si las salidas mencionadas alimentan un circuito
secuencial, probablemente el sistema presentará un error en entrada de datos.
El código gray resuelve este problema cambiando solamente un dígito a la vez, así
que no existe este problema:

Decimal Gray Binario


0 000 000
1 001 001
2 011 010
3 010 011
4 110 100
5 111 101
6 101 110
7 100 111
tienes que tener en cuenta que para convertir de binarios a Gray los valores que
deben ser sumados en base 2 toman los siguientes valores 1+1=0, 0+0=0 , 1+0=1
y 0+1=1 esta operación de forma vertical como se muestra en el siguiente ejemplo

1010
101
----
1111

Nótese que desde el 7 podría pasar a 0 con un solo cambio de switch (el más
significativo pasa a cero). Esta es la propiedad llamada "cíclica" del código de
Gray.

CONVERSIONES
Secuencia Binario Gray Secuencia Binario Gray

0 0000 0000 8 1000 1100

1 0001 0001 9 1001 1101

2 0010 0011 10 1010 1111

3 0011 0010 11 1011 1110

4 0100 0110 12 1100 1010

5 0101 0111 13 1101 1011

6 0110 0101 14 1110 1001


7 0111 0100 15 1111 1000
Base 2 a Gray
Para convertir un número binario (en Base 2) a código Gray, simplemente hemos
de aplicarle la puerta lógica XOR al mismo número, con un desplazamiento a la
derecha.
Además debemos considerar que no debemos tomar en cuenta el acarreo
Ejemplo: 1010 (Base 2) a gray

1010
101
----
1111

Otros ejemplos 0111(Base 2) a gray :

0111
011
------
0100

Podemos observar que no funciona el metodo


110101010001
11010101000
------------
101111111001

Gray a Base 2
Tenemos un vector conteniendo los dígitos en gray y otro vector destinado a
contener los dígitos en Base 2

es el dígito que se encuentra en el extremo izquerdo de la representación en


código gray

es el dígito de mayor peso y que se encuentra en el extremo izquerdo en la


representación en Base 2
tenemos que: con la excepción de que , la cual se
puede resumir como: el dígito de más a la izquierda en Base 2 es igual al dígito de
más a la izquierda en código gray

El primer bit empezando por la izquierda del digito del código gray se respetará
para la conversión a base 2, el resultado es obtener el mismo bit para el dígito
binario que el que tiene en gray, para conseguir el segundo bit del binario
sumaremos el primer bit del dígito del sistema binario por el segundo del sistema
gray, sin tener en cuenta los acarreos y respetando la tabla de suma para binarios:
0+0=0 ; 0+1=1 ; 1+0=1 ; 1+1=10

Ejemplo: Con el número 1001 Gray

El primero de base dos es igual al primero en gray que en este caso es ( 1 )

El segundo de base dos es igual a la suma del primero de base 2 con el segundo
de gray en este caso es (1)+(0)= (1)

El tercero de base dos es igual a la suma del segundo de base2 con el tercero de
gray en este caso es (1)+(0)= (1)

El cuarto de base dos es igual a la suma del tercero de base dos con el cuarto de
gray es este caso es (1)+(1)=10 tomamos el cero del 10 descartando el acarreo
por lo que tenemos (0)

Esto da como resultado 1110


EL CÓDIGO BCD
Código BCD (Binary-Coded Decimal (BCD) o Decimal codificado). Binario es un
estándar para representar números decimales en el sistema binario, en donde
cada dígito decimal es codificado con una secuencia de 4 bits.

Con esta codificación especial de los dígitos decimales en el sistema binario, se


pueden realizar operaciones aritméticas como suma, resta, multiplicación y
división de números en representación decimal, sin perder en los cálculos la
precisión ni tener las inexactitudes en que normalmente se incurren con las
conversiones de decimal a binario puro y de binario puro a decimal.

La conversión de los números decimales a BCD y viceversa es muy sencilla, pero


los cálculos en BCD se llevan más tiempo y son algo más complicados que con
números binarios puros.

FUNDAMENTOS
En BCD cada cifra que representa un dígito decimal (0, 1,...8 y 9) se representa
con su equivalente binario en cuatro bits (nibble o cuarteto) (esto es así porque es
el número de bits necesario para representar el nueve, el número más alto que se
puede representar en BCD).

CARACTERÍSTICAS

Ponderación
La mayoría de los sistemas de numeración actuales son ponderados, es decir,
cada posición de una secuencia de dígitos tiene asociado un peso. El sistema
binario es, de hecho, un sistema de numeración posicional ponderado. Sin
embargo, algunos códigos binarios, como el código Gray, no son ponderados, es
decir, no tienen un peso asociado a cada posición. Otros, como el mismo código
binario natural o el BCD natural sí lo son.

Distancia
Es una característica sólo aplicable a las combinaciones binarias. La distancia
entre dos combinaciones es el número de bits que cambian de una a otra. Por
ejemplo, si se tienen las combinaciones de cuatro bits 0010 y 0111,
correspondientes al 2 y al 7 en binario natural, se dirá que la distancia entre ellas
es igual a dos ya que de una a otra cambian dos bits.

Además, con el concepto de distancia se puede definir la distancia mínima de un


código. Ésta no es más que la distancia menor que haya entre dos de las
combinaciones de ese código.

Continuidad
Es una característica de los códigos binarios que cumplen que todas las posibles
combinaciones del código son adyacentes, es decir, que de cualquier combinación
del código a la siguiente cambia un sólo bit. En este caso se dice que el código es
continuo. Cuando la última combinación del código es, a su vez, adyacente a la
primera, se trata de un código cíclico.

Autocomplementariedad
El código binario es autocomplementario cuando el complemento a nueve del
equivalente decimal de cualquier combinación del código puede hallarse
invirtiendo los valores de cada uno de los bits (operación lógica unaria de
negación) y el resultado sigue siendo una combinación válida en ese código. Esta
característica se observa en algunos códigos BCD, como el código Aiken o el
código BCD exceso 3. Los códigos autocomplementarios facilitan las operaciones
aritméticas.

Aplicación
Electrónica
El BCD es muy común en sistemas electrónicos donde se debe mostrar un valor
numérico, especialmente en los sistemas digitales no programados (sin
microprocesador o microcontrolador).

Utilizando el código BCD, se simplifica la manipulación de los datos numéricos que


deben ser mostrados por ejemplo en un visualizador de siete segmentos. Esto
lleva a su vez una simplificación en el diseño físico del circuito (hardware).

Si la cantidad numérica fuera almacenada y manipulada en binario natural, el


circuito sería mucho más complejo que si se utiliza el BCD. Hay un programa que
se llama b1411 que sirve para dividir al sistema binario en dos combinaciones.
Una por ejemplo es la de sistemas digitales.

Representación
 Cada dígito decimal tiene una representación binaria codificada con 4 bits:
Decimal: 0 1 2 3 4 5 6 7 8 9
BCD: 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001
 Los números decimales, se codifican en BCD con los de bits que representan
sus dígitos.
Tabla del Código BCD

Ejemplo
 La codificación en BCD del número decimal 59237 es:
Decimal: 5 9 2 3 7
BCD: 0101 1001 0010 0011 0111

La representación anterior (en BCD) es diferente de la representación del mismo


número decimal en binario puro:
11100111 01100101

También podría gustarte