Detección de errores de comunicación

Ingeniería electrónica y de sistemas. Comunicaciones. Transmisión de datos. ECC. Paridad. Redundancia cíclica

  • Enviado por: Rataxx
  • Idioma: castellano
  • País: Venezuela Venezuela
  • 14 páginas
publicidad
publicidad

Detección y Corrección de Errores:

Los aspectos relacionados con módem, multiplexores, etc. Constituyen la parte física de las comunicaciones. Estas están formadas también por una parte lógica; tareas tales como la comprobación de una transmisión libre de errores, la adecuación de las capacidades de las partes implicadas en la comunicación son ejemplos claros de esos otros aspectos que se han denominado lógicos.

Cuando se quiere conectar dos o más computadoras entre sí para transmitirse la información, es necesario conectarlas mediante un soporte físico de transmisión. Esta conexión puede ser local, urbana, interurbana o internacional, y esta constituida en base a un cable de hilo, coaxial, enlace de radio, satélite, etc.

Esta variedad de medios aporta toda una diversidad de fenómenos que dificultan la adecuada transmisión.

Se denomina error a toda alteración que provoca que un mensaje recibido no sea una copia fiel del mensaje transmitido.

Debido a los defectos existentes en los medios físicos utilizados para la transmisión, pueden producirse errores en la información transmitida, caracterizándose la calidad de la información por la tasa de errores. La tasa de errores depende de las condiciones de los elementos del soporte físico utilizado en la transmisión y se expresa como la relación entre el numero de bits erróneos recibidos y el numero total transmitidos. La calidad de la información es incompatible, en algunos casos, con los niveles de seguridad necesarios, en las aplicaciones informáticas, por lo que es necesario disponer de unos equipos que permitan detectar o incluso corregir los errores producidos por la transmisión.

Los errores que se producen en la transmisión tienden a agruparse en ráfagas, en lugar de producirse aisladamente. Este aspecto supone una ventaja, pues facilita la detección de los errores, dado que, de esta forma, afecta sólo a un subconjunto de la información transmitida y es, por tanto, posible reconstruir este subconjunto a partir del resto.

En todos los casos, la protección contra los errores consiste en insertar en cada extremo del enlace un dispositivo, un codificador y un decodificador.

La protección contra los errores consiste en añadir, en el codificador, a la información a transmitir una redundancia para que cuando ésta llega al destino permita detectar o identificar los errores. La redundancia consiste en añadirle unos bits, llamados de redundancia, a los del mensaje, de forma que delate o que identifique los errores cuando se producen. El tipo de redundancia y el modo de obtenerla son los factores que determinan el código de protección frente a errores. La redundancia puede ser utilizada indistintamente para detectar o corregir los errores. Asimismo, un código también puede ser más adecuado para protegerse de un tipo de errores que de otros. En efecto, hay códigos adecuados para corregir un máximo de “t” errores estadísticamente independientes (en cualquier posición del mensaje de datos), o bien para errores en ráfagas , agrupados en un subconjunto de bits, etc. Existe una teoría matemática que describe y relaciona todos estos conceptos, caracterizando a los códigos mediante la denominada distancia de Hamming. La distancia de Hamming entre los dos elementos codificados se define como el numero de elementos de codificación diferentes que presentan; así la distancia de Hamming entre vaca y casa es 2, ya que estas palabras se diferencian en dos letras. Aplicado al tema que nos ocupa, la distancia de Hamming de un Código se define como el mínimo número de bits que diferencia a dos elementos codificados. Por ejemplo el código binario convencional tiene una distancia de Hamming de 1, pues aunque la diferencia entre dos elementos puede ser tan grande como se desee, la mínima es 1. Uno de los resultados más importantes de esta teoría establece lo siguiente: un código con distancia de Hamming “ t + d +1 ” sólo es capaz de corregir “t” errores y detectar “n” (siendo n > t). La importancia de esta característica de los códigos permitirá comprobar la adecuación del código de cada problema concreto.

Códigos detectores de Errores:

Los métodos más utilizados son:

  • Los basados en la paridad, tanto lineal como en bloque.

  • Los de redundancia cíclica.

  • Métodos basados en la paridad:

Un bit de paridad es un bit que se añade a un dato con el fin de protegerlo contra los errores. El tipo de paridad más sencillo es la paridad lineal o de carácter, y consiste en añadir un bit de la derecha de cada carácter a transmitir de modo que el número de bit a “uno” en el conjunto carácter + bit extra sea par o impar, lo cual se habrá establecido de antemano. Cuando el valor del bit de paridad se ajusta para que el número de bits con valor “uno” sea par, se tiene paridad par e impar en el otro caso. Este método es muy simple pero poco robusto. Debe notarse que es imposible detectar un número par de errores de los datos transmitidos. Además transmitiendo bloques mayores de cierta longitud deja de ser eficaz. En código ASCII la representación es muy sencilla:

b1

b2

b3

b4

b5

b6

b7

b8

+

P

1

0

0

1

1

0

0

1

0

1

0

0

1

1

0

0

1

1

Para los caracteres del código ASCII, el uso de un bit de paridad soló disminuye en un 12% la capacidad del canal.

Los métodos de paridad se pueden extender agrupando varios datos, por ejemplo, varios bytes en forma de matriz rectangular y calcular la paridad, tanto en vertical como en horizontal. Estos métodos se denominan método de cálculo de paridad por bloques. Evidentemente, proporcionan una mayor protección para los datos, aunque son algo más complejos y menos eficientes.

Cuando se trabaja en entornos síncronos no es rentable la utilización de métodos basados en paridad, debido a la deficiente utilización del ancho de banda del canal. Además, se precisa una protección más fuerte sin consumir demasiados recursos en el proceso de detección apropiadamente. Está cada vez más extendido el uso de métodos de redundancia cíclica como respuesta a estas necesidades.

  • Métodos basados en el uso de códigos de redundancia cíclica:

El codificador es un dispositivo que asigna a cada bloque de K bits de la fuente, un bloque de longitud N.

Es conveniente reducir la complejidad del codificador utilizando unas reglas de codificación sencillas, siempre que no se degraden las posibilidades del código resultante. Para ello se utilizan códigos con sencillez de codificación o códigos líneas.

Se basan estos métodos en las propiedades de la aritmética modular. Los códigos polinomiales o de redundancia cíclica se construyen en base a polinomios de coeficientes binarios, esto es, en base 2 (0 ó 1). El proceso, muy simplificadamente, se basa en considerar la información binaria a transmitir como los coeficientes de un polinomio de orden “n-1”, siendo “n” el número de bits a transmitir. El cálculo de la redundancia se produce al añadir a los “m” bits de mensaje “r” bits de redundancia calculados mediante el polinomio generador G(x).

Por ejemplo, si se envía la cadena 100111001, se considera que esto equivale al polinomio X6 + X5 + X4 + X3 + 1. El polinomio que se emplea como divisor es el otro elemento clave, de cuya elección depende la potencia del código. Este polinomio es el que se conoce como polinomio generador G(x). Interesa que los polinomios representativos de los errores más frecuentes no sean divisibles por G(x). El algoritmo para calcular la redundancia es el siguiente:

  • Sea r el grado de G(x). Agregar r bits a cero al extremo de orden inferior de la trama, de tal manera que ahora contenga m + r bits, y corresponda al polinomio x M(x).

  • Dividir la serie de bits correspondientes a x M(x) entre la serie de bits correspondientes a G(x), empleando la división en el módulo 2.

  • Restar el resto (que siempre tiene r o menos bits) de la serie de bits correspondientes a x M(x), empleando la resta en mpodulo 2. El resultado es el mensaje listo para transmitir. Llámese T(x) a este polinomio que deberá ser divisible por G(x).

  • ¿Qué tipo de errores se detectarán? Imagínese que ocurre un error en una transmisión, así que, en lugar de recibir el polinomio T(x), llega T(x)+E(x). Cada bit con valor de 1 en E(x) corresponde a un bit erróneo (invertido). Si hay K bits a 1 en E(x), habrán ocurrido K errores de un solo bit. Una sola ráfaga de errores se caracteriza por tener un 1 inicial, mezcla de 0 y 1, y un 1 final, con el resto de los bits teniendo un valor 0. Una vez que se recibe el mensaje con la redundancia, el receptor la divide entre G(x), si el resto es 0 aquellos errores que se produzcan pasarán inadvertidos; en caso contrario, todos los demás errores quedarán detectados. Estos códigos permiten detectar más del 99% de los errores (simples, dobles, impares y a ráfagas) que podrían llegar a producirse. En particular, el polinomio generador G(x) utilizado es el propuesto por el UIT, G(x) = x. La principal desventaja está relacionada con la limitación en la longitud del mensaje. Para el polinomio anterior, ésta es como máximo 65.535, pudiendo utilizarse otros polinomios (CRC-24) para mensajes mayores.

    Códigos Correctores de Errores:

    Los sistemas de corrección de errores se basan en la idea de reconstruir la información original a partir de los datos recibidos, que están compuestos por los datos originales más la redundancia. Luego, la recuperación de la información tiene lugar en el equipo receptor.

    El modelo más popular de sistemas de corrección es el basado en los códigos de Hamming. Los códigos de Hamming se basan en añadir a cada una de las palabras de información que se van a transmitir un conjunto de bits de redundancia; el conjunto de bits de información y de bits de redundancia constituyen una palabra del código Hamming que se esté utilizando. La particularidad de los códigos Hamming se encuentra que a partir de los bits de redundancia se pueden detectar las posiciones de los bits erróneos y corregirlos; corregir un bit erróneo es invertirlo.

    Un número máximo de errores que se pueden corregir depende de la distancia de Hamming para ese código. El diseño del sistema es específico según el número de bits que se quieran corregir. En todos los casos ocurre, además, que un código de Hamming capaz de corregir los errores que aparezcan en n bits puede detectar n+1 bits erróneos. Por ejemplo, los códigos Hamming que corrigen un bit erróneo también son capaces de detectar errores dobles.

    Una desventaja de los códigos de Hamming es el número de bits adicionales que se emplean, de modo que reducen notablemente la capacidad efectiva del canal. Por este motivo, a menudo se utilizan mecanismos de envio repetidos, como resultados de la detección de un error por alguno de los métodos descritos. Lógicamente esto será tanto más rentable cuanto menor sea la frecuencia de error. En caso contrario, o cuando se exige gran fiabilidad, los códigos correctores son más adecuados.

    Control de Flujo:

    Resulta necesario asegurar que la computadora de destino de la información se encuentra en disposición de recibir los datos. Para esto, existen técnicas que permiten al destinatario de la información controlar al emisor, para que envié ésta en el momento idóneo. A estos mecanismos se les conoce como técnicas de control de flujo. Cuando dos computadoras se comunican, una envía datos mientas la otra las recibe y los va almacenando en algún sitio en espera de ser evaluados. Este espacio donde se guarda la información puede ser memoria principal o secundaria. Esto es, pudiera tratarse de un disquete, un disco duro o también memoria RAM. Evidentemente, siempre se tratará de una cantidad finita de espacio. Si el emisor continua enviando información, podría llegar a sobrepasar la capacidad del espacio destinado al almacenamiento. Esto originaría la pérdida de datos que no pudieran almacenarse. Naturalmente se trata de una situación a evitar siempre que sea posible.

    ¿Cómo se puede evitar este problema? La solución más sencilla consistiría en reservar más espacio para almacenar mensajes. Pero si las demás condiciones no varían (el emisor sigue enviando mensajes) y el receptor no es capaz de procesar la información suficientemente rápido, sólo será cuestión de tiempo, hasta que de nuevo se plantee el problema.

    Para resolverlo, hay que atacar a alguna de las dos condiciones anteriormente descritas. No sirve como solución aumentar la capacidad de procesamiento de la computadora destino, ya que resulta una solución local y no resuelve el problema, ya que en otro momento se convertirá en emisor de información y se producirá el mismo problema en la computadora que inicialmente emitía. Así, sólo se podrá evitar el problema si se consigue que la computadora origen deje de transmitir el tiempo suficiente como para que el receptor pueda procesar los mensajes, liberando así el espacio donde almacenar más información.

    El control de flujo asegura que una computadora que disponga de dispositivos de transmisión rápidos no inundará con datos a otra que no sea capaz de igualarla en rapidez. El esquema general de esta técnica consiste en enviar a la computadora origen un mensaje donde se le indica la imposibilidad de continuar recibiendo datos durante algún tiempo. La computadora de destino enviará el mensaje en el momento en el que detecte una disminución preocupante de su capacidad de almacenaje de mensajes.

    Existen diferentes opciones, a la hora de realizar control de flujo. Las más destacables son:

    • Sistemas Síncronos:

    -Parada y espera:

    El método de parada y espera funciona de la siguiente manera: cuando una computadora desea transmitir, envía un conjunto de bits (también llamada trama) que no puede exceder de una longitud determinada. Cuando la computadora destino recibe la información, envía una confirmación indicando que ha recibido la trama. La computadora de origen deberá esperar a recibir la confirmación, para poder continuar enviando más tramas. El nombre de esta técnica corresponde a la obligación de la computadora que emite, de esperar tras la emisión de una trama, hasta enviar la siguiente, o la misma en caso de una recepción errónea. Las ventajas de esta técnica son la relativa simplicidad de la misma. Por el contrario, se hace una uso ineficiente del sistema, sobre todo en medios con elevado tiempo de propagación de las señales. La computadora esperará inútilmente la confirmación de la trama recibida, ya que en circunstancias normales de funcionamiento la recepción de datos será adecuada.

    • Ventana deslizante:

    Este método suple los aspectos negativos de la técnica anterior, ya que permite el envío de tramas mientras se espera la recepción de confirmación. El mecanismo es el siguiente: tanto el emisor como el receptor tiene un espacio igual donde almacenar una cantidad N de mensajes. LA computadora origen puede enviar, uno tras otro, hasta la mitad de capacidad de mensajes de almacén, cada uno de los cuales ha de ir etiquetado con un número que sirve para obtener más tarde confirmación individual de cada trama. Mientras no llegue ninguna confirmación, el emisor no puede enviar más datos.

    El receptor debe confirmar cada trama según vaya llegando correctamente. De esta manera, mientras se envían las confirmaciones, el emisor puede estar mandando más información y, de esta forma se consigue un uso más apropiado de la conexión. Si las computadoras disponen de capacidad de almacenamiento de N mensajes, se dice que posee ventajas de tamaño N. La computadora receptora de mensajes va confirmando los mensajes en orden y ese espacio queda disponible para otros. En cierta medida los huecos libres se van desplazando para recibir nuevos mensajes, de ahí el nombre de esta técnica.

    • Sistemas Asíncronos:

    Los sistemas asíncronos son aquellos en los que la sincronización de los datos se hace carácter a carácter. Son los sistemas más sencillos. Los métodos utilizados en estos sistemas son:

    • Control de flujo por software X-ON/X-OFF: Se suele utilizar con módem (RS-232). Cuando el terminal no puede recibir más datos envía un carácter X-OFF. Una vez procesados los mensajes, avisa a la computadora origen, enviando el mensaje X-ON. Dadas las características de esta técnica se suele implementar con software.

    • Control de Flujo por hardware: Existen determinadas interfaces que disponen señales propias, implementadas físicamente. Como ejemplo, la interfaz RS-232 dispone de las señales RTS/CTS.

    Introducción:

    Desde tiempos muy remotos han existido múltiples formas de comunicación, como son las señales de humo de los indios y los tambores de los negros, hasta que se inventó en 1794, el primer instrumento denominado telegrafo por C. Chappe, este sistema se extendió rápidamente cubriendo en poco tiempo una longitud de 5000 km. El cual permitía la transmisión de información. Fue en 1837 cuando Samuel Morse inventó el alfabeto capaz de transmitir cualquier palabra, la cual codificó cada letra de una forma distinta.

    A través de los años se han implementado nuevas técnicas de telecomunicación la cual constituye una exitosa extensión de la electrónica digital a nuevas áreas de aplicación.

    El principal problema en la mayoría de los sistemas de comunicación, es la transmisión de información en forma de mensajes o datos desde alguna fuente de información, hasta algún destino o receptor. El método de transmisión es frecuentemente empleo de señales eléctricas, más o menos bajo el control del emisor.

    Estas señales se transmiten a través de un canal. Existe probabilidad de que un mensaje pueda detectarse errores. Sin embargo, debido a las limitaciones del canal y del ruido, se recibe en el destino de la información una versión perturbada. Generalmente se desea minimizar la distorsión provocada por las imperfecciones del canal y del ruido, y maximizar el número de mensajes enviados a través del canal en un tiempo dado.

    Estos dos requisitos están relacionados, ya que, un incremento de la velocidad de transmisión del mensaje acrecienta la distorsión o error, es por ello que se crearon los detectores de errores y los correctores y para ello es necesario disponer de unos equipos que permitan estos tipos de procesos.

    Cuando se realiza el proceso de detección de error, esto sólo se encuentran agrupados y de esta manera afecta a un subconjunto de la información transmitida y por tanto es posible construir este subconjunto a partir del resto.

    Por su parte, la protección de errores consiste en insertar en cada extremo del enlace un dispositivo, un codificador y un decodificador.

    Conclusión:

    Los factores que más afectan en el rendimiento de las comunicaciones son los errores y, por supuesto el manejo de información repetida.

    La presencia de problemas en la comunicación traducidos en errores en la información recibidas exige el reenvió de la información errónea. Esto permite reducir la información total de enviar, asignando (recodificando) un nuevo código de longitud menor a la secuencia que se repite. Estas técnicas se implementan mediante una serie de normas de protocolos, de manera que todos los módem capaces de realizarlas se benefician de ellas.

    La meta de la codificación es producir códigos con propiedades de decodificabilidad única para una fuente dada con alfabeto y un conjunto de prioridades.

    Un tratamiento general de códigos detectores y correctores de errores requiere que la estructura del código sea modelada en una forma matemática relativamente intrínseca. El procedimiento más habitual es identificar las letras códigos con los elementos de un campo finito.

    Para canales de transmisión existen teoremas de codificación los cuales garantiza la existencia de un código que permitirá la transmisión a cualquier velocidad menor que la capacidad del canal con probabilidad de error arbitrariamente pequeña. Igualmente las propiedades de códigos detectores de errores sencillos, es decir, códigos que pueden ser usados para elevar la fiabilidad de la transmisión, permiten corregir algunos de los errores que ocurren, reduciendo de este modo la fiabilidad de error.

    Bibliografía:

    “Enciclopedia Informática de Personal” Tomo II

    Fink, Donald y Donald Christiansen “Enciclopedia de Ing. Electronical”

    Volumen I

    “ECC Código De Error-Correcting”

    http://www.ora.com/reference/dictionary/terms/E/Error-Correcting_Code.htm

    “Cuál es ECC?”

    http://www.corsairmicro.com/ecc.htm