Anda di halaman 1dari 13

Deteccin y correccin de errores

Consiste en aadir un bit de ms a la cadena que queremos enviar, y que nos indicar si el nmero de unos (bits puestos a 1) es par o es impar. Si es par incluiremos este bit con el valor = 0, y si no es as, lo incluiremos con valor = 1.
Ejemplo de generacin de un bit de paridad simple: Queremos enviar la cadena 1110100: 1 Contamos la cantidad de unos que hay: 4 unos 2 El nmero de unos es par por tanto aadimos un bit con valor = 0 3 La cadena enviada es 11101000

El receptor ahora, repite la operacin de contar la cantidad de unos que hay (menos el ltimo bit) y si coincide, es que no ha habido error. Problemas de este mtodo: Hay una alta probabilidad de que se cuelen casos en los que ha habido error, y que el error no sea detectado, como ocurre si se cambian dos nmeros en la transmisin en vez de uno. Para mejorar un poco el mtodo anterior, se realiza una paridad que afecte tanto a los bits de cada cadena o palabra como a un conjunto de todos ellos. Siempre se utilizan cadenas relativamente cortas para evitar que se cuelen muchos errores. Para ver ms claro este mtodo, se suelen agrupar los bits en una matriz de N filas por K columnas, luego se realizan todas las paridades horizontales por el mtodo anterior, y por ltimo, se hace las misma operacin de calcular el nmero de unos, pero ahora de cada columna. La probabilidad de encontrar un solo error es la misma, pero en cambio, la probabilidad de encontrar un nmero par errores ya no es cero, como en el caso anterior. Aun as, existen todava una gran cantidad de errores no detectables
Un ejemplo de paridad cruzada (o de cdigo geomtrico) 1 Tenemos este cdigo para transmitir: 1100101111010110010111010110 2 Agrupamos el cdigo en cada una de las palabras, formando una matriz de N x K: 1100101 1110101 1001011 1010110 3 Aadimos los bits de paridad horizontal: 1100101 1110101 1001011 1010110 0 1 0 0

4 Aadimos los bits de paridad vertical: 1100101 1110101 1001011 1010110 0 1 0 0

0001101 1

Una vez creada la matriz, podemos enviar sta por filas, o por columnas. Enviando las palabras por columnas aumentamos la posibilidad de corregir una palabra que haya sufrido un error de rfaga (errores que afectan a varios bits consecutivos, debidos a causas generalmente electrnicas, como chispazos, y que haran que se perdiera toda una palabra completa). Intentando mejorar los cdigos que slo controlan la paridad de bit, aparecen los cdigos cclicos. Estos cdigos utilizan la aritmtica modular para detectar una mayor cantidad de errores, se usan operaciones en mdulo 2 y las sumas y restas se realizan sin acarreo (convirtindose en operaciones de tipo Or-Exclusivo o XOR). Adems, para facilitar los clculos se trabaja, aunque slo tericamente, con polinomios. La finalidad de este mtodo es crear una parte de redundancia la cual se aade al final del cdigo a transmitir (como en los mtodos de paridad) que siendo la ms pequea posible, detecte el mayor nmero de errores que sea posible. Pero adems de esto, debe ser un mtodo sistemtico, es decir, que con un mismo cdigo a transmitir (y un mismo polinomio generador) se genere siempre el mismo cdigo final. El polinomio generador: es un polinomio elegido previamente y que tiene como propiedad minimizar la redundancia. Suele tener una longitud de 16 bits, para mensajes de 128 bytes, lo que indica que la eficiencia es buena. Ya que slo incrementa la longitud en un aproximado 1,6%:
(16bits / (128bytes * 8bitsporbyte )) * 100 = 1,5625

Un ejemplo de polinomio generador usado normalmente en las redes WAN es: g(x) = x16 + x12 + x5 + 1 Los clculos que realiza el equipo transmisor para calcular su CRC son:
1. Aade tantos ceros por la derecha al mensaje original como el grado del polinomio generador 2. Divide el mensaje con los ceros incluidos entre el polinomio generador 3. El resto que se obtiene de la divisin se suma al mensaje con los ceros incluidos 4. Se enva el resultado obtenido

Estas operaciones generalmente son incorporadas en el hardware para que pueda ser calculado con mayor rapidez, pero en la teora se utilizan los polinomios para facilitar los clculos.

Ejemplo de obtencin del CRC: Datos: Mensaje codificado en binario: 1101001 Polinomio generador: x4 + x + 1 Operaciones: 1 Obtener el polinomio equivalente al mensaje: x6 + x5 + x3 + 1

2 Multiplicar el mensaje por x4 (aadir 4 ceros por la derecha): x10 + x9 + x7 + x4 3 Dividir en binario el mensaje por el polinomio generador y sacar el resto: x2 + 1 4 Concatenar el mensaje con el resto (en mdulo 2 tambin): x7 + x4 + x2 + 1 5 Transmitir el mensaje x10 + x9 +

El equipo receptor debe comprobar el cdigo CRC para detectar si se han producido o no errores.
Ejemplo de los clculos del receptor: 1 Mediante el protocolo correspondiente acuerdan el generador 2 Divide el cdigo recibido entre el polinomio generador 3 Comprueba el resto de dicha operacin 3.1 Si el resto es cero, no se han producido errores 3.2 Procesar el mensaje 3.1 Si el resto es distinto de cero, significa que se han producido errores 3.2 Reenviar el mensaje 3.2 Intentar corregir los errores mediante los cdigos correctores polinomio

En resumen, este mtodo requiere de un polinomio generador que, elegido correctamente, puede llegar a detectar gran cantidad de errores:
y y y y y

Errores simples: todos Errores dobles: todos Errores en las posiciones impares de los bits: todos Errores en rfagas con una longitud menor que el grado del polinomio generador: todos Otras rfagas: un porcentaje elevado y cercano al 100%

Es un mtodo sencillo pero eficiente slo con cadenas de palabras de una longitud pequea, es por esto que se suele utilizar en cabeceras de tramas importantes u otras cadenas importantes y en combinacin con otros mtodos. Funcionalidad: consiste en agrupar el mensaje a transmitir en cadenas de una longitud determinada L no muy grande, de por ejemplo 16 bits. Considerando a cada cadena 1. A como un nmero entero numerado segn el sistema de numeracin 2L

continuaci n se suma el valor de todas las palabras en las que se divide el mensaje, y se aade el resultado al mensaje a transmitir, pero cambiado de si no. Con esto, el receptor lo nico que tiene que hacer es sumar todas las cadenas, y si el resultado es 0 no hay errores.
Ejemplo: Mensaje 101001110101 1 Acordar la longitud de cada cadena: 3 2 Acordar el sistema de numeracin: 23 1 = 7 3 Dividir el mensaje: 101 001 110 101 4 Corresponder a cada cadena con un entero: 5 1 6 5 5 Sumar todos los valores y aadir el nmero cambiado de signo:-17 6 Enviar 5 1 6 5 -17 codificado en binario El receptor: 1 Suma todos los producido un error. valores si = 0 procesa el mensaje sino se ha

ste mtodo al ser ms sencillo es ptimo para ser implementado en soft are ya que se puede alcanzar velocidades de clculo similares a la implementacin en hardware
[editar] Distancia de Hamming basada en comprobacin

Si queremos detectar d bit errneos en una palabra de n bits, podemos aadir a cada palabra de n bits d+1 bits predeterminados al final, de forma que quede una palabra de n+d+1 bits con una distancia mnima de Hamming de d+1. De esta manera, si uno recibe una palabra de n+d+1 bits que no encaja con ninguna palabra del cdigo (con una distancia de Hamming x <= d+1 la palabra no pertenece al cdigo) detecta correctamente si es una palabra errnea. An ms, d o menos errores nunca se convertirn en una palabra vlida debido a que la distancia de Hamming entre cada palabra vlida es de al menos d+1, y tales errores conducen solamente a las palabras invlidas que se detectan correctamente. Dado un conjunto de m*n bits, podemos

Hipe c

binario de dimensin c atro.

detectar x <= d bits errores correctamente usando el mismo mtodo en todas las palabras de n bits. De hecho, podemos detectar un mximo de m*d errores si todas las palabras de n bits son transmitidas con un mximo de d errores.
Ejemplo

Palabras a enviar:
1. 000001 2. 000001 3. 000010

Codificadas con distancia mnima de Hamming = 2 000001 0000


000001 0011 000010 1100

Estr tegi s
Se han diseado dos estrategias diferentes para el tratamiento de los errores:
y

Cdigos detectores de error: Consiste en incluir en los datos transmitidos, una cantidad de bits redundantes de forma que permita al receptor detectar que se ha producido un error, pero no qu tipo de error ni donde, de forma que tiene que solicitar retransmisin. Cdigos correctores de error: Consiste en la misma filosofa que el anterior, incluir informacin redundante pero en este caso, la suficiente como para permitirle al receptor deducir cual fue el carcter que se transmiti, por lo tanto, el receptor tiene capacidad para corregir un nmero limitado de errores.

Hasta el momento, los mecanismos que hemos estudiado se encuadran dentro de los mtodos de deteccin de errores, con capacidad de deteccin pero no de correccin. A continuacin vamos a desarrollar los mtodos de correccin de errores. La correccin de errores se puede tratar de dos formas:
y y

Cuando se detecta el error en un determinado fragmento de datos, el receptor solicita al emisor la retransmisin de dicho fragmento de datos. El receptor detecta el error, y si estn utilizando informacin redundante suficiente para aplicar el mtodo corrector, automticamente aplica los mecanismos necesarios para corregir dicho error. Bits redundantes. Tericamente es posible corregir cualquier fragmento de cdigo binario automticamente. Para ello, en puesto de los cdigos detectores de errores utilizando los cdigos correctores de errores, de mayor complejidad matemtica y mayor nmero de bits redundantes necesarios. La necesidad de mayor nmero de bits redundantes hace que a veces la correccin de mltiples bits sea inviable e ineficiente por el elevado nmero bits necesarios. Por ello normalmente los cdigos correctores de error se reducen a la correccin de 1,2 3 bits.

Distancia Hamming. La distancia Hamming H entre dos secuencias binarias S1yS2 de la misma longitud, viene definida por el nmero de bits en que difieren. Cdigo Hamming. Cdigo corrector de errores, desarrollado por R.W. Hamming en 1950, y se basa en los conceptos de bits redundantes y Distancia Hamming.

Un Hamming puede utilizarse en mensajes de caracteres de cualquier longitud, aunque ilustraremos su utilizacin con caracteres ASCII de 7 bits y paridad par. Necesitamos 4 bits (24 > 7 + 4 + 1), que se situaran en las posiciones 1,2,4 y 8 (posiciones potencia de 2). Nos referimos a los bits redundantes como r1,r2,r4 y r8.
y

En este apartado vamos a centrarnos en un tipo concreto de cdigo corrector de errores: los cdigos Reed-Solomon

El codificador Reed-Solomon toma un bloque de informacin digital y aade bits redundantes. Los errores pueden ocurrir durante la transmisin o almacenamiento de informacin por varios motivos (p. Ej. Ruido o interferencia, ralladuras en los discos compactos etc.). El decodificador Reed-Solomon procesa cada bloque e intenta corregir los errores y recuperar la informacin original. El nmero y tipo de errores que pueden ser corregidos depende de las caractersticas del cdigo Reed-Solomon. El cdigo Reed-Solomon es un subconjunto de los cdigos BCH y son de bloques lineales. Un cdigo Reed-Solomon se especifica como RS(n,k) con smbolos de s bits. Lo anterior significa que el codificador toma k smbolos de los s bit y aade smbolos de paridad para hacer una palabra de cdigo de n smbolos. Existen n-k smbolos de paridad de s bits cada uno. Un decodificador puede corregir hasta t smbolos que contienen errores en una palabra de cdigo, donde 2t=n-k. El siguiente diagrama muestra una tpica palabra de cdigo Reed -Solomon (este se conoce como un cdigo sistemtico puesto que los datos se dejan inalterados y los smbolos de paridad se anexan): Ejemplo: Un cdigo popular Reed-Solomon es RS(255,223) con smbolos de 8 bits. Cada palabra de cdigo contiene 255 bytes de palabra de cdigo, de los cuales 223 bytes son datos y 32 bytes son paridad. Para este cdigo se tiene:
y y N=255, k=223, s=8 2t=32, t=16

El decodificador puede corregir cualquier error de 16 smbolos en la palabra de cdigo, es decir, errores de hasta 16 bytes en cualquier lugar de la palabra pueden ser automticamente corregidos. Dado un tamao de smbolo s, la mxima longitud de la palabra de cdigo (n) para un cdigo Reed-Solomon es n=2s 1. Por ejemplo, la mxima longitud de un cdigo con smbolos de 8 bits (s=8) es de 255 bytes. Los cdigos Reed-Solomon pueden ser acortados haciendo un nmero de smbolos de datos igual a cero en el codificador, no transmitiendo estos, y reinsertando stos en el decodificador.

El cdigo (255,223) descrito anteriormente puede ser acortado a (200,168). El codificador toma un bloque de 168 bytes de datos aade 55 bytes cero, crea una palabra de cdigo de (255,223) y transmite solo los 168 bytes de datos y 32 bytes de paridad. La cantidad de poder de procesamiento para codificar y decodificar cdigos ReedSolomon se relaciona con el nmero de smbolos de paridad por palabra de cdigo. Un valor grande de t significa que un gran nmero de errores pueden ser corregidos pero requiere mayor poder computacional que un valor pequeo de t.

Un error de smbolo ocurre cuando al menos un bit de un smbolo es errneo. RS(255,223) pude corregir 16 errores de smbolos. En el peor caso, errores de 16 bits pueden ocurrir, cada uno en un smbolo distinto (byte) de forma que el decodificador corrige errores de 16 bits. En el mejor caso, 16 errores de byte completos ocurren de tal forma que el decodificador corrige 16x8 errores de bit. Los cdigos Reed-Solomon son particularmente tiles para corregir burst error (cuando una serie de bits en el cdigo de palabra se reciben con error). Los procedimientos algebraicos de decodificacin de Reed-Solomon pueden corregir errores y datos perdidos. Un "borrado" ocurre cuando la posicin de un smbolo errado es conocido. Un decodificador puede corregir hasta t errores o hasta 2t "borrados". Informacin sobre los "borrados" puede ser frecuentemente otorgada por el demodulador en un sistema de comunicacin digital, es decir, el demodulador "marca" los smbolos recibidos que con probabilidad contienen errores. Cuando una palabra de cdigo es decodificada, existen tres posibilidades:
1. Si 2s + r < 2t (s errores, r "borrados") entonces la palabra de cdigo original transmitida puede ser siempre recuperada. 2. El decodificador detectar que no puede recuperar la palabra de cdigo original e indicar este hecho. 3. El decodificador decodificar errneamente y recuperar una palabra de cdigo incorrecta sin indicacin.

La probabilidad de ocurrencia de cada una de las tres posibilidades anteriores depende del cdigo Reed-Solomon en particular y en el nmero y la distribucin de errores. La ventaja de utilizar cdigos Reed-Solomon es que la probabilidad de que quede un error en los datos decodificados es, usualmente, mucho menor que la probabilidad de ocurrencia de un error si Reed-Solomon no es utilizado. Esto se conoce usualmente como ganancia de codificacin. Ejemplo: Un sistema digital de comunicaciones se disea para operar a un BER de 10e9, es decir, no mas de uno en 10e9 bits (1000 millones de bits) se recibe con error. Esto puede ser obtenido aumentando la potencia del transmisor o aadiendo cdigos correctores de errores. Reed-Solomon permite al sistema obtener este BER con una

potencia de salida menor del transmisor. El "ahorro" de potencia dado por el cdigo Reed-Solomon (en decibeles) es la ganancia de cdigo. La codificacin y decodificacin Reed-Solomon puede ser llevada a cabo por software o hardware de propsito especial. Los cdigos Reed-Solomon se basan en un rea especialista de la Matemtica llamada campos Galois o campos finitos. Un campo finito tiene la propiedad de que las operaciones aritmticas (+,-,x,/,etc.) en elementos del campo siempre tienen un resultado en el campo. Un codificador o decodificador Reed-Solomon debe ser capaz de realizar estas operaciones aritmticas. Una palabra de cdigo Reed-Solomon es generada usando un polinomio especial. Todas las palabras de cdigo vlidas son divisibles exactamente por el polinomio generador. La forma general de este polinomio es: y la palabra de cdigo se construye utilizando: c(x) = g(x)i(x) donde g(x) es el polinomio generador, i(x) es el bloque de informacin, c(x) es una palabra de cdigo vlida y a se conoce como un elemento primitivo del campo. Ejemplo: Generador para RS(255,249) Los 2t smbolos de paridad en una palabra de cdigo sistemtico Reed-Solomon estn dados por: El siguiente diagrama muestra una arquitectura para un codificador sistemtico RS(255,249): Cada uno de los seis registros contiene un smbolo (8bits). Los operadores aritmticos llevan la suma o multiplicacin de campo finito en un smbolo completo. La arquitectura general para decodificar cdigos Reed-Solomon se muestra en el siguiente diagrama: Donde:
y y y y y y y

r(x)= Palabra de cdigo recibida Si = Sndromes L(x)= Polinomio localizador de errores Xi = Localizacin de errores Yi = Magnitud de errores c(x)= Palabra de cdigo recuperada v = Nmero de errores

La palabra recibida r(x) es la original (transmitida) c(x) ms los errores:

Un decodificador Reed-Solomon intenta identificar la posicin y magnitud de hasta t errores (o 2t "borrados") y corregir los errores o "borrados".

Este es un clculo similar al clculo de paridad. Un cdigo de palabra Reed-Solomon tiene 2t sndromes que dependen solamente de los errores (no de la palabra transmitida). Los sndromes pueden ser calculados al sustituir las 2t races del polinomio generador g(x) en r(x). Encontrar el lugar del smbolo errneo implica resolver de forma simultnea ecuaciones con t incgnitas. Varios algoritmos rpidos existen para realizar lo anterior. Estos algoritmos toman ventaja de la estructura matricial especial de los cdigos ReedSolomon y reducen de gran forma el esfuerzo computacional requerido. En general dos pasos se requieren:
1. Encontrar un polinomio localizador de error: Esto se puede lograr utilizando el algoritmo Berlekamp-Massey o el algoritmo de Euclides. El algoritmo de Euclides tiende a ser el ms utilizado en la prctica debido a que es ms fcil de implementar, sin embargo el algoritmo Berlekamp-Massey tiende a llevar a una implementacin hardware y software ms eficientes. 2. Encontrar las races del polinomio anterior. Esto se hace con el algoritmo de bsqueda de Chien. 3. Encontrando los valores del smbolo errneo. Nuevamente, esto implica resolver ecuaciones con t incgnitas. Un algoritmo usado ampliamente es el

algoritmo de Forney. Existe una cantidad implementaciones hardware. Muchos de estos sistemas utilizan circuitos integrados comerciales que codifican y decodifican cdigos Reed -Solomon. Estos circuitos integrados soportan un cierto grado de programacin (p. Ej. RS(255,k) donde t=1 a 16 smbolos). Una tendencia reciente es hacia VHDL o diseos Verilog. Estos tienen una cantidad importante de ventajas sobre los circuitos integrados estndar. Estos diseos pueden ser integrados con otros VHDL o diseos Verilog y ser sintetizados en un FPGA (Field Programmable Gate Array) o ASIC (Application Specific Integrated Circuit). lo que permite diseos "Sistemas sobre Chip" donde mltiples mdulos pueden ser combinados en un solo circuito integrado. Dependiendo en los volmenes de produccin los diseos anteriores pueden llevar a reducir costos en comparacin con los circuitos integrados usuales. Con lo anterior se evita que un usuario deba comprar "de por vida" un mismo circuito integrado. Hasta hace poco implementacin en software para aplicaciones en tiempo real requera demasiado poder computacional para todos excepto los ms simples cdigos ReedSolomon (es decir, cdigos con pequeos valores de t). El mayor problema de implementar los cdigos Reed-Solomon en software es que procesadores de propsito general no soportan aritmtica de campo de Galois. Por ejemplo, para implementar un campo de Galois que multiplique en software requiere un test de cero, dos revisiones en tablas logartmicas, sumatoria en mdulo, y bsqueda en tabla de antilogaritmo. Sin embargo con el aumento en el rendimiento de los procesadores y un diseo cuidadoso significa que implementacin en software pueden trabajar con tasas de bits relativamente altas. La siguiente tabla muestra un ejemplo de pruebas hechas en un Pentium de 166Mhz PC:

Estas tasas de datos son solamente para decodificacin, para la codificacin se vuelve mucho ms rpido debido a que requiere menos clculos...

Introduccin

La comunicacin entre varias computadoras produce continuamente un movimiento de datos, generalmente por canales no diseados para este propsito (lnea telefnica), y que introducen un ruido externo que produce errores en la transmisin. Por lo tanto, debemos asegurarnos que si dicho movimiento causa errores, stos puedan ser detectados. El mtodo para detectar y corregir errores es incluir en los bloques de datos transmitidos bits adicionales denominados redundancia. Se han desarrollado dos estrategias bsicas para manejar los errores:
y

Incluir suficiente informacin redundante en cada bloque de datos para que se puedan detectar y corregir los bits errneos. Se utilizan cdigos de correccin de errores. Incluir slo la informacin redundante necesaria en cada bloque de datos para detectar los errores. En este caso el nmero de bits de redundancia es menor. Se utilizan cdigos de deteccin 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.

Conclusin

En matemticas, computacin y teora de la informacin, la deteccin y correccin de errores es una importante prctica para el mantenimiento e integridad de los datos a travs de canales ruidosos y medios de almacenamiento poco confiables. Los cdigos detectores y correctores de error se refieren a los errores de transmisin en las lneas se deben a mucho a diversos factores, como el ruido trmico, ruido impulsivo y ruido de intermodulacin. Dependiendo del medio de transmisin y del tipo de codificacin empleado, se pueden presentar otros tipos de anomalas como ruido de redondeo y atenuacin, as como cruce de lneas y eco.

Bibliografa

http://es.wikipedia.org/wiki/Detecci%C3%B3n_y_correcci%C3%B3n_de_errores www.google.com www.wikipedia.com

Anda mungkin juga menyukai