Portada » Informática » Detección y Corrección de Errores en Sistemas de Comunicación
Cada tipo de aplicación requiere un determinado nivel de fiabilidad: las transacciones bancarias no toleran errores, mientras que las aplicaciones de video y voz pueden tolerar algunos. Si los sistemas de transmisión no alcanzan los requisitos necesarios, se utilizan técnicas de control de errores para mejorar su comportamiento. Estas técnicas se dividen en dos categorías principales: detección de errores y retransmisión (ARQ, Automatic Repetition Request) y corrección de errores avanzada (FEC, Forward Error Correction).
Cualquier mecanismo de detección o corrección de errores necesita que la información sea redundante. Esto significa que se transmitirán bits adicionales que no serían necesarios para transmitir únicamente la información. La redundancia permite detectar y corregir errores introducidos durante la transmisión.
La información del usuario se codifica de manera que el mensaje cumple con unas determinadas características o patrón. Esto se consigue añadiendo bits redundantes a la información. Si el bloque recibido no presenta el patrón esperado (no es una palabra código válida), significa que se han producido errores y se puede alertar al emisor, rechazarla, etc.
La distancia entre dos palabras es el número de diferencias entre los bits de la misma posición. La distancia mínima de Hamming de un código es la distancia más pequeña que hay entre todas las parejas de palabras código. Para que un código permita detectar hasta n errores, la distancia mínima (dmin) debe ser n+1. Para que corrija hasta n errores, dmin debe ser 2n+1.
dmin = 2. Detectará todos los errores de 1 bit. Caracter: 7 + 1 bit de paridad, código ASCII. Añade 1 bit de redundancia para cada k bits de información. Overhead = 1/(k+1). Detecta todos los errores de un número impar de bits, pero no detecta los pares. Cualquier técnica de detección de errores fallará en la detección de algunos errores, concretamente en aquellos donde los errores convierten una palabra código válida en otra palabra código válida.
Se mide como la probabilidad de que el sistema falle en la detección de un error. Hay que conocer las condiciones en que se producen errores. Dependen de las características particulares del canal de comunicación.
Suponemos que se transmite una palabra código de n bits. Se define el vector de error e = (e1, e2…en) donde ei=1 si se produce un error en la transmisión del bit i y ei=0 en otro caso. El modelo del vector de error aleatorio considera que los 2n posibles vectores de error son equiprobables. En este modelo, la probabilidad de e no depende del número de errores que contiene. En el sistema de paridad simple, se producirán errores en la detección de errores siempre que el número de bits erróneos del vector de error sea par, por tanto, la probabilidad de error en la detección de error es 1/2.
En este modelo, los errores en cada bit se producen con una probabilidad p y de forma independiente los unos de los otros. La probabilidad de un vector de error con j errores es pj(1-p)n–j, para cualquier canal de interés p 1. Esto significa que la probabilidad de cada vector de error se reduce a medida que aumenta el número de bits que contiene. Los patrones con 1 error son más probables que los de dos, estos que los de 3, y así sucesivamente.
Para mejorar la cobertura, se insertan más bits de paridad. La información se dispone en columnas, se añade un bit de paridad simple a cada fila y cada columna. Se usaba en los primeros sistemas de control de errores. Todos los errores de 1, 2 y 3 bits son detectables, pero no lo son todos los patrones de 4 o más.
Representamos las palabras código mediante polinomios y no vectores. Se usa aritmética polinómica en lugar de las sumas de comprobación. Se implementan mediante registros de desplazamiento. También se llaman códigos de redundancia cíclica (CRC). Los usan la mayoría de los estándares de comunicación para la detección de errores. Son la base de métodos de corrección de errores más potentes. Uno de los motivos para la utilización de estos códigos en sistemas de detección de errores es la facilidad de su implementación mediante circuitos formados a partir de registros de desplazamiento.
El receptor acepta una palabra si el residuo de la división r(x)/g(x) es cero. Por tanto, como b(x) es divisible por g(x) por construcción, si e(x) es también divisible por g(x), no se detectará el error. Para poder detectar una mayoría de los errores, habrá que seleccionar un polinomio generador que no sea divisor de los patrones de error más probables.
: algunos protocolos de internet (IP,TCP,UDP) usan bits de comprobación para detectar errores. En el caso del protocolo IP se calcula una suma de comprobación para el contenido de la cabecera y se inserta en un campo especial. Como la suma de comprobación se debe recalcular en cada encaminador, el algoritmo escogido lo es más porque permite una implementación en software sencilla y no tanto por sus capacidades detectoras.