domingo, 13 de octubre de 2013

Errores: Detección y Corrección

Detección y corrección de errores

 

En una comunicación en un medio real existe una cierta probabilidad de que ocurran errores,
una alteración de la información transmitida por distintas causas, normalmente debidas a dos
tipos de fenómenos:
a. Interferencias electromagnéticas que producen ruido en el medio físico.
b. Funcionamiento incorrecto del equipo de comunicaciones.
La calidad del canal se suele medir basándose en la tasa de error o BER (Bit Error Rate), que
se calcula como el resultado de dividir el número de bits recibidos erróneos entre el de bits transmitidos.
La detección y corrección de errores se realiza gracias a un protocolo que establece un conjunto de reglas
para ordenar y sincronizar los distintos bloques básicos de información (tramas), a la vez que define
procedimientos para determinar cuándo se ha producido un error de transmisión y cómo debe corregirse.
Existen algunos métodos de detección de errores muy sencillos (paridad, checksum, etc.) y otros más complejos
que permiten, además, la corrección de errores (Hamming, CRC, etc.).

Métodos de detección ( NO corrigen errores)

 

Paridad

 

En la comunicación asíncrona; consiste en enviar un bit junto con los bits de datos con el fin de hacer par o impar
el número de unos total del grupo. Puede detectar el error producido en uno de los bits de datos, pero no sabe
en cuál (no lo puede corregir).

Checksum

 

Mediante este método el transmisor envía, inmediatamente después de los n bytes o paquetes de datos en los que
se divide la información, un valor adicional (checksum) como resultado de la suma de los mismos (podéis ver la figura).
El receptor efectúa la misma operación y compara el valor suma obtenido con el valor suma recibido para detectar,
si son distintos, la ocurrencia de un error. Puede detectar errores en los bits de datos, pero no puede corregirlos.


Métodos de detección y corrección

 

Hamming

 

Está basado en la adición de p bits a un código de distancia unidad de n bits, con lo que se obtiene un nuevo
código de n + p bits. En este nuevo código se realizan p detecciones de paridad en bits seleccionados del mismo,
de modo que se obtiene un bit de paridad uno o cero según el número de bits sea par o impar. El conjunto de los p
bits de paridad forma un número en binario natural, cuyo equivalente decimal indica la posición del bit erróneo. El
número p de bits añadidos debe ser suficiente para permitir la detección de error y la ausencia de error en las n + p
posiciones. Dado que con p bits se obtienen 2p combinaciones, se debe cumplir la relación:
2 ³ n + p +1p

CRC (Cyclic Redundancy Code)

 

Es un código en el que se tratan los datos que hay que codificar como un polinomio (M). El polinomio es
multiplicado por una potencia de dos (2n # M) y luego dividido por otro polinomio generador de menor grado (P). El
transmisor envía finalmente el código resultante 2n # M + R, donde R es el resto de la división.
El CRC o código de redundancia cíclica es uno de los códigos más empleados, con distintos protocolos, para la
detección de errores, reemplazando al método checksum o suma de comprobación. Su mecanismo es muy simple:
se trata de una división de polinomios con coeficientes 0 o 1 y exponentes desde el número de orden del bit más
significativo hasta el menos significativo; el código CRC viene dado por los coeficientes del polinomio que resulte
como resto de esta división. Existen distintas variantes, tales como el CRC-16 y CRC-32, según la longitud de los
bits de comprobación.

No hay comentarios:

Publicar un comentario