El código gray

8

Click here to load reader

description

educacion

Transcript of El código gray

Page 1: El código gray

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

Page 2: El código gray

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 2n>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

Page 3: El código gray

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

Page 4: El código gray

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

Page 5: El código gray

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

Page 6: El código gray

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

Page 7: El código gray

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.

Page 8: El código gray

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