jueves, 7 de abril de 2011

2.- Detección de Errores

 Introducción

Cuanto mayor es la trama que se transmite, mayor es la probabilidad de que contenga algún error. Para detectar errores, se añade un código en función de los bits de la trama de forma que este código señale si se ha cambiado algún bit en el camino. Este código debe de ser conocido e interpretado tanto por el emisor como por el receptor.

1.- Comprobación de paridad
Se añade un bit de paridad al bloque de datos (por ejemplo, si hay un número par de bits 1, se le añade un bit 0 de paridad y si son impares, se le añade un bit 1 de paridad). Pero puede ocurrir que el propio bit de paridad sea cambiado por el ruido o incluso que más de un bit de datos sea cambiado, con lo que el sistema de detección fallará.

Paridad simple (paridad horizontal)

Consiste en añadir un bit de más a la cadena que queremos enviar, y que nos indicará si el número 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.

El receptor ahora, repite la operación de contar la cantidad de “unos” que hay (menos el último bit) y si coincide, es que no ha habido error.

Problemas de este método:
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 números en la transmisión en vez de uno.

Paridad cruzada (paridad horizontal-vertical)

Para mejorar un poco el método 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 más claro este método, se suelen agrupar los bits en una matriz de N filas por K columnas, luego se realizan todas las paridades horizontales por el método anterior, y por último, se hace las misma operación de calcular el número 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 número par errores ya no es cero, como en el caso anterior. Aun así, existen todavía una gran cantidad de errores no detectables.
 
2.- Comprobación de redundancia cíclica (CRC)
Dado un bloque de n bits a transmitir, el emisor le sumará los k bits necesarios para que n+k sea divisible (resto 0) por algún número conocido tanto por el emisor como por el receptor. Este proceso se puede hacer bien por software o bien por un circuito hardware (más rápido).

Intentando mejorar los códigos que sólo controlan la paridad de bit, aparecen los códigos cíclicos. Estos códigos utilizan la aritmética modular para detectar una mayor cantidad de errores, se usan operaciones en módulo 2 y las sumas y restas se realizan sin acarreo (convirtiéndose en operaciones de tipo Or-Exclusivo o XOR). Además, para facilitar los cálculos se trabaja, aunque sólo teóricamente, con polinomios.

La finalidad de este método es crear una parte de redundancia la cual se añade al final del código a transmitir (como en los métodos de paridad) que siendo la más pequeña posible, detecte el mayor número de errores que sea posible.

Pero además de esto, debe ser un método sistemático, es decir, que con un mismo código a transmitir (y un mismo polinomio generador) se genere siempre el mismo código 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 sólo incrementa la longitud en un aproximado 1,6%:




Referencia:
http://www.mailxmail.com/curso-redes-transmicion-datos-1/transmision-datos-deteccion-control-errores
http://es.wikipedia.org/wiki/Detecci%C3%B3n_y_correcci%C3%B3n_de_errores

No hay comentarios:

Publicar un comentario