circuitos logicos

12
El código binario reflejado o código Gray, nombrado así en honor del investigador Frank Gray, es un sistema de numeración binario en el que dos valores sucesivos difieren solamente en uno de sus dígitos. El código Gray fue diseñado originalmente para prevenir señales ilegales (señales falsas o viciadas en la representación) de los switches electromecánicos, 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. Pertenece a una clase de códigos llamada códigos de cambio mínimo en los cuales solo un bit del grupo de código cambia cuando pasa de una etapa a la siguiente. El código gray es un código sin valor, es decir, las posiciones de los bits en los grupos de código no tienen ningún valor específico. Debido a esto el código no se ajusta a las operaciones aritméticas sino que haya aplicación en dispositivos de entrada y salida y algunos tipos de convertidores de analógico al digital. La tabla siguiente es una lista del código Gray de cuatro bits para números decimales del 0 al 15. Los números binarios se muestran en la tabla como una referencia. Como los números binarios, el código Gray puede tener cualquier número de bits. Note el cambio de bit único entre los números sucesivos del código Gray. Por ejemplo, yendo del decimal 3 al 4, el código Gray cambia de 0010 a 0110, mientras que el binario cambio de 0011 a 0100, un cambio de tres bits. El único cambio de bit se origina en el tercer bit de la derecha en el código Gray; los otros permanecen iguales. DECIMA L BINAR IO GRA Y 0 0000 000 0 1 0001 000 1 2 0010 001 1

Upload: jhon-castellano

Post on 18-Jan-2016

11 views

Category:

Documents


0 download

DESCRIPTION

...

TRANSCRIPT

Page 1: circuitos logicos

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

El código Gray fue diseñado originalmente para prevenir señales ilegales (señales falsas o viciadas en la representación) de los switches electromecánicos, 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.

Pertenece a una clase de códigos llamada códigos de cambio mínimo en los cuales solo un bit del grupo de código cambia cuando pasa de una etapa a la siguiente. El código gray es un código sin valor, es decir, las posiciones de los bits en los grupos de código no tienen ningún valor específico. Debido a esto el código no se ajusta a las operaciones aritméticas sino que haya aplicación en dispositivos de entrada y salida y algunos tipos de convertidores de analógico al digital.

La tabla siguiente es una lista del código Gray de cuatro bits para números decimales del 0 al 15. Los números binarios se muestran en la tabla como una referencia. Como los números binarios, el código Gray puede tener cualquier número de bits. Note el cambio de bit único entre los números sucesivos del código Gray. Por ejemplo, yendo del decimal 3 al 4, el código Gray cambia de 0010 a 0110, mientras que el binario cambio de 0011 a 0100, un cambio de tres bits. El único cambio de bit se origina en el tercer bit de la derecha en el código Gray; los otros permanecen iguales.

DECIMAL

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

Page 2: circuitos logicos

9 1001 1101

10 1010 1111

11 1011 1110

12 1100 1010

13 1101 1011

14 1110 1001

15 1111 1000

Conversión De Binario A Código Gray

La conversión entre el código binario y el código Gray a veces es muy útil. Primeramente, mostraremos cómo convertir un número binario a un número de código Gray. Se aplican las siguientes reglas:

El bit más significativo(el más a la izquierda) en el código Gray es el mismo que el MSB correspondiente en el número binario,

yendo de izquierda a derecha, sume cada par adyacente de bits del código binario, para obtener el siguiente bit del código Gray. Descarte acarreos.

Ejemplo:

Paso 1. El digito del código Gray más a la izquierda es el mismo que el digito del código binario más a la izquierda.

1 0 1 1 0 Binario

1 Gray

Paso 2. Sume el bit de código binario más a la izquierda al bit adyacente.

1 + 0

1 1 0 Binario

1 1 Gray

Page 3: circuitos logicos

Paso 3. Sume el siguiente par adyacente.

1 0 + 1

1 0 Binario

1 1 1 Gray

Paso 4. Sume el siguiente par adyacente y descarte el acarreo.

1 0 1 + 1

0 Binario

1 1 1 0 Gray

Paso 5. Sume el último par adyacente.

1 0 1 1 +0 Binario

1 1 1 0 1 Gray

La conversión ha sido completada; el código Gray es 11101.

Conversión De Gray A Binario

Para convertir de código Gray a Binario, se utiliza un método similar, pero con algunas diferencias. Se aplican las siguientes reglas:

El bit más significativo (el más a la izquierda) es el código binario es el mismo que el bit correspondiente en el código Gray.

Sume cada bit generado del código binario al bit del código Gray en la siguiente posición adyacente. Descarte acarreos.

Ejemplo:

Paso 1. El digito del código binario más a la izquierda es el mismo que el digito del código Gray más a la izquierda.

1 1 0 1 1 Gray

1 Binario

Page 4: circuitos logicos

Paso 2. Sume el último bit del código binario que se acaba de generar al bit del código Gray en la siguiente posición. Descarte acarreos. (En negrilla bit que se suman).

1 1 0 1 1 Gray

1 0 Binario

Paso 3. Sume el último bit del código binario que se acaba de generar al bit del código Gray en la siguiente posición.

1 1 0 1 1 Gray

1 0 0 Binario

Paso 4. Sume el último bit del código binario que se acaba de generar al bit del código Gray en la siguiente posición.

1 1 0 1 1 Gray

1 0 0 1 Binario

Paso 5. Sume el último bit del código binario que se acaba de generar al bit del código Gray en la siguiente posición. Descarte acarreos.

1 1 0 1 1 Gray

1 0 0 1 0 Binario

Códigos alfanuméricos

Además de los datos numéricos, una computadora debe ser capaz de manear información no numérica. En otras palabras, una computadora debe reconocer códigos que representan letras de alfabeto, signos de puntuación y otros caracteres especiales, además de los números. Estos códigos se denominan códigos alfanuméricos. Un código completo de este tipo puede incluir 26 letras minúsculas, 26 letras mayúsculas, 10 dígitos, siete signos de puntuación y entre 20 y 40 caracteres más, como +, /, #, %, * y otros similares. Se puede afirmar que un código alfanumérico representa todos los caracteres y funciones diferentes que se encuentran en el teclado estándar de una máquina de escribir (o de una computadora).

Código ASCII

Page 5: circuitos logicos

El código alfanumérico más utilizado de las microcomputadoras y minicomputadoras y en muchos sistemas de cómputo grandes, es el Código Americano Estándar para el Intercambio de Información (ASCII, siglas de American Standard Code for Information Interchange). El código ASCII usa 7 beats, por lo tanto tiene 27= 128 grupos de código posibles. Esta cantidad es más que suficiente para representar todos los caracteres de un teclado estándar y las funciones de control (RETURN)(retroceso de carro) y (LINEFEED)(cambio de línea). La tabla 2-5 contiene una lista parcial de códigos ASCII.

Ejemplo:

El siguiente es un mensaje codificado en ASCII. ¿Cuál es el mensaje?

1001000 1000101 1001100 1010000

Solución

Primero de convierte cada código de siete beats en su equivalente hexadecimal. Los resultados son:

48 45 4C 50

Ahora se localizan en la tabla 2-5 estos valores hexadecimales y se determina el carácter que representa cada uno. Los resultados son:

H E L P (ayuda).

Page 6: circuitos logicos

El código ASCII se emplea para transferir información alfanumérica entre una computadora y dispositivos de entrada/salida para terminales o impresoras. Una computadora también lo emplea internamente para guardar la información que el operador proporciona mediante el teclado.

Método de paridad para la corrección de errores

La comunicación entre varias computadoras produce continuamente un movimiento de datos, generalmente por canales no diseñados para este propósito (línea telefónica), y que introducen un ruido externo que produce errores en la transmisión.

Por lo tanto, debemos asegurarnos que si dicho movimiento causa errores, éstos puedan ser detectados. El método para detectar y corregir errores es incluir en los bloques de datos transmitidos bits adicionales denominados redundancia.

Se han desarrollado dos estrategias básicas para manejar los errores:

Incluir suficiente información redundante en cada bloque de datos para que se puedan detectar y corregir los bits erróneos. Se utilizan códigos de corrección de errores.

Incluir sólo la información redundante necesaria en cada bloque de datos para detectar los errores. En este caso el número de bits de redundancia es menor. Se utilizan códigos de detección de errores.

Si consideramos un bloque de datos formado por m bits de datos y r de redundancia, la longitud final del bloque será n, donde n = m + r.

El bit de paridad

Es un bit extra que se agrega a un grupo de código que se transfieres de una localidad a otra. El bit de paridad es un 0 o un 1, según el número de unos que hay en el grupo de código. Para esto se emplean dos métodos diferentes.

En el método de paridad par, el valor de bit de paridad se escoge de manera que el número total de unos en el grupo de código (incluido el bit de paridad) sea un número par. Por ejemplo, supóngase que el grupo de código es 1000011. Este es el carácter c en ASCII. En el grupo de código tiene 3 unos. Por tanto, sumaremos un bit de paridad 1cpara hacer que el número total de unos sea un numero par. El nuevo grupo de código, incluyendo al bit de paridad, se convierte de este modo en

Si el grupo de código contiene un número par de unos, al bit de paridad se le asigna el valor de 0. Por ejemplo, si el grupo de código fuera 1000001 (el código ASCII para la “A”), el bit de paridad asignado seria 0; así el nuevo código, incluyendo al bit de paridad, seria 01000001.

El método de parida impar se utiliza exactamente en la misma forma excepto en que se escoge el bit de paridad para que el número total de unos (incluyendo al bit de paridad) sea un número impar. Por ejemplo, para el código de gripo 1000001, el bit de paridad asignado seria un 1. Para el grupo de código 10000011, el bit de paridad seria un 0.

Page 7: circuitos logicos

El bit de paridad se emplea para detectar cualquier error en un solo bit que ocurra durante la transmisión de un código de una localidad a otra (por ejemplo, de una computadora a una terminal).

Cuando se emplea el método de paridad, el trasmisor y el receptor deben ponerse de acuerdo con anticipación, sobre el tipo de paridad que se utilizara, par o impar. No existe ninguna ventaja de una sobre la otra, aunque parece ser que la que más se emplea es la paridad par. El transmisor debe colocar un bit apropiado de paridad en cada unidad de información que transmite. Por ejemplo, si el transmisor de encuentra enviando datos codificados en ASCII, debe adjuntar un bit de parida para cada grupo ASCII de siete bits. Cuando el receptor examina los datos que ha recibido del transmisor, verifica cada grupo de código para determinar que el número total de unos (incluido el bit de paridad) sea consistente con el tipo de paridad acordada. Este proceso recibe el nombre de verificación de la paridad de los datos. En caso de que se detecte un error, el receptor puede enviar un mensaje al transmisor solicitándole que vuelva a transmitir el último conjunto de datos. El procedimiento exacto que se sigue cuando se detecta un error depende del diseño particular del sistema.

Código para detección y corrección de errores

Las redes deben ser capaces de transferir datos de un dispositivo a otro con total exactitud, si los datos recibidos no son idénticos a los emitidos, el sistema de comunicación es inútil. Sin embargo, siempre que se transmiten de un origen a un destino, se pueden corromper por el camino. Los sistemas de comunicación deben tener mecanismos para detectar y corregir errores que alteren los datos recibidos debido a múltiples factores de la transmisión.

Detección.

Se conocen el tipo de errores que pueden existir, el problema es ser capaz de reconocerlos, dado que no se puede comparar el dato recibido con el original, sólo se podría saber que ha habido un error cuando se descodifique todo el mensaje y se vea que no tiene sentido. Sin embargo existen determinadas técnicas sencillas y objetivas para detectar los errores producidos en la transmisión:

Redundancia.

La redundancia consiste en enviar dos veces cada unidad de datos, de forma que el dispositivo receptor puede hacer una comparación bit a bit entre ambos datos y detectar si ha habido errores, para corregirlos con el mecanismo apropiado. Esta técnica es muy exacta pero enlentece la transmisión.

Sin embargo el concepto es aplicable añadiendo al flujo de datos un grupo pequeño de bits al final de cada unidad, siendo estos bits redundantes con una parte de la información, esos bits redundantes se descartan una vez comprobada la integridad de la transmisión.

En las comunicaciones de datos se usan cuatro tipos de comprobación de redundancia: verificación de redundancia vertical (VRC, Vertical Redundancy Check) conocida como verificación de paridad, verificación de redundancia longitudinal (LRC longitudinal Redundancy Check), verificación de redundancia cíclica (CRC Cyclic Redundandy Check) y suma de comprobación (Checksum). Las tres primeras se implementan habitualmente en el nivel físico para que pueda usarlo en nivel de enlace de datos, mientras que la suma de comprobación se usa en los niveles más altos.

Page 8: circuitos logicos

Corrección de errores

Los mecanismos explicados detectan errores pero no los corrigen. La corrección del error se puede conseguir de dos formas, en la primera, cuando de descubre un error el receptor puede pedir al emisor que retransmita toda la unidad de datos, con la segunda, el receptor puede usar un código de corrección de errores que corrija automáticamente determinados errores. En teoría es posible corregir automáticamente cualquier error en un código binario, sin embargo los códigos de corrección son más sofisticados que los de detección y necesitan más bits de redundancia, el número de bits necesarios es tan alto que su uso no es eficiente, por esa razón la mayoría de la corrección se limita a errores de tres bits o menos.

Corrección de errores de un único bit

El concepto de la corrección de errores se puede comprender con el caso más sencillo: el error de un único bit. Un error de un bit supone que un bit ha cambiado de un 0 a un 1 o de un 1 a un 0, para corregir el error, el receptor sólo tiene que invertir el valor del bit alterado, sin embargo, para hacer eso, el receptor debe saber en qué bit está el error, por lo que el secreto de la corrección de errores es localizar el bit o bits inválidos. La cuestión es el uso de los bits de redundancia para la corrección. Ahora bien ¿cuantos bits de redundancia usar?

Para calculas el número de bits de redundancia r necesarios para corregir un número de bits de datos m, es necesario encontrar una relación entre m y r.

Si a m de datos bits se le añaden r bits de redundancia, la unidad transmitida es m+r, los bits de redundancia r deben ser capaces de indicar todas las posibilidades de error de 1 bit posibles, incluyendo el no error, que en m+r bits es de m+r+1 posibilidades (no error, error en bit0, error en bit 1, etc), por ello r debe ser capaz de indicar todas esos estados. Dado que los r bits pueden representar 2r estados, entonces r debe ser tal que 2r ≥ m + r + 1.

Código Hamming

Se pueden utilizar los bits de redundancia para corregir errores, pero ¿cómo se manipulan esos bits para descubrir en qué posición se ha producido el error? R. W. Hamming desarrolló una técnica que proporciona una solución práctica. El código Hamming se puede aplicar a unidades de datos de cualquier longitud y usa la relación de bits de datos y de redundancia. En el código cada bit r es el bit de VRC (redundancia vertical) para una combinación de bits de datos. Por ejemplo, un dato de 7 bits necesita 4 bits de redundancia, los colocaremos en las posiciones 1, 2, 4 y 8, con lo que la secuencia transmitida es la que indica la figura.

Page 9: circuitos logicos

Detección y corrección.

El receptor recibe la transmisión, toma los datos y recalcula cuatro nuevos VRC usando el mismo conjunto de bits usados en el cálculo en el emisor, a continuación re ensambla los nuevos valores de paridad siguiendo el orden de la posición (r8, r4, r2, r1) la cifra resultante indica si ha habido error y en qué bit se ha producido. Si el resultado es 0000 no ha habido error, cualquier otro resultado indica error y bit erróneo. Una vez identificado el bit erróneo, el receptor puede cambiar el valor de ese bit para corregir el error.

Corrección de errores de ráfaga.

Se puede diseñar un código Hamming para corregir errores de ráfaga de una cierta longitud, sin embargo el número de bits de redundancia necesarios es muy elevado, porque los errores pueden ser de tantos bits pero pueden estar en cualquiera de los bits de la cadena transmitida.