La tercera y ms potente tcnica de verificacin de redundancia es la verificacin de redundancia
cclica (CRC). A diferencia de VRC y LRC, que se basan en la suma, la CRC se basa en la divisin binaria. Con la CRC, en lugar de sumar los bits juntos para conseguir una paridad determinada, se aade una secuencia de bits redundantes, denominados CRC o residuo CRC, al final de la unidad de datos de forma que los datos resultantes sean divisibles exactamente por un nmero binario predeterminado. En el destino, la unidad de datos que se recibe es dividida por este mismo nmero. Si en este paso no hay residuo, se asume que la unidad de datos es intacta y se acepta. La existencia de un residuo indica que la unidad de datos ha sufrido daos durante el trnsito y que debe ser rechazada. Los bits de redundancia usados en la CRC se obtienen dividiendo la unidad de datos por un divisor determinado; el residuo es la CRC. Para que sea vlida, una CRC debe tener dos cualidades: debe tener exactamente un bit menos que el divisor y aadirlo al final de la tira de datos debe hacer que el resultado sea exactamente divisible por el divisor.
Tanto la teora como la aplicacin de la deteccin de error con CRC son inmediatas. Su nica complejidad es la obtencin de la CRC. Comenzaremos con una introduccin para clarificar este proceso e iremos aadiendo complejidad a medida que se avanza. La figura 4.48 muestra un esquema con los tres pasos bsicos. 1. En primer lugar, se aade una tira de n ceros a la unidad de datos. El nmero n es uno menos que el nmero de bits en el divisor predefinido, que tiene n + 1 bits. 2. En segundo lugar, la nueva unidad de datos se divide por el divisor usando un proceso denominado divisin binaria. El residuo resultante de esta divisin es la CRC. 3. En tercer lugar, la CRC de n bits obtenida en el paso 2 sustituye a los ceros aadidos al final de la unidad de datos. Observe que la CRC puede estar formada por ceros.
Figura 4.48 Generador y comprobador de CRC La unidad de datos llega al receptor en primer lugar, seguida por la CRC. El receptor trata toda la tira como una unidad y la divide por el mismo divisor que se us para hallar el residuo de la CRC. Si la tira llega sin error, el comprobador de CRC obtiene un residuo 0 y la unidad de datos se acepta. Si la tira ha cambiado durante la transmisin, la divisin "arroja un residuo no nulo y la unidad de datos no se acepta. El generador de la CRC Un generador de la CRC usa divisin mdulo 2. La figura 4.49 muestra este proceso. En el primer paso, el divisor de cuatro bits se resta de los primeros cuatro bits del dividendo. Cada bit del divisor se resta del bit correspondiente del dividendo sin afectar al bit que hay a continuacin. En el ejemplo, el divisor 1101 se resta de los cuatro primeros bits del dividendo, 1001, arrojando 100 (el 0 inicial del residuo se descarta). A continuacin se arrastra el siguiente bit sin usar del dividendo para hacer que el nmero de bits del residuo sea igual al nmero de bits del divisor. Por tanto, el paso siguiente es 1000 - 1101, lo que arroja 101, continuando el proceso de esta misma forma. Figura 4.49 Divisin binaria en un generador de CRC En este proceso, el divisor siempre comienza con 1; el divisor se resta de una porcin de la divisin dividendo/residuo anterior que sea igual en longitud; el divisor solamente se puede restar de las divisiones dividendo/residuo cuyo bit ms a la izquierda es 1. Siempre que el bit ms a la izquierda de la divisin dividendo/residuo es 0, una tira de ceros de la misma longitud que el divisor reemplaza al divisor en ese paso del proceso. Por ejemplo, si el divisor tiene cuatro bits, se sustituye por cuatro ceros. (Recuerde que estamos trabajando con patrones de bits, no con valores cuantitativos; 0000 no es lo mismo que 0.) Esta restriccin significa que, en cualquier paso, la resta ms a la izquierda ser 0 - 0 o 1 - 1, ambas igual a 0. Por tanto, despus de la resta, el bit ms a la izquierda del residuo ser siempre 0, por lo que se descarta, y se arrastra el siguiente bit sin usar del dividendo para completar el residuo. Observe que nicamente se descarta el primer bit del residuo: si el segundo bit es tambin 0, se mantiene, y el siguiente paso de la divisin dividendo/residuo comenzar con un 0. Este proceso se repite hasta que se ha utilizado todo el dividendo.
El comprobador de CRC Un comprobador de CRC funciona igual que el generador. Despus de recibir los datos y la CRC, hace la siguiente divisin mdulo 2. Si todo el residuo son ceros, la CRC se descarta y se aceptan los datos; en cualquier otro caso, el flujo de bits recibido se descarta y se retransmiten los datos. La figura 4.50 muestra el proceso de divisin en el receptor. Se asume que no hay error. Por tanto, todo el residuo son ceros y se aceptan los datos.
Figura 4.50 Divisin binaria en el comprobador de CRC Polinomios El generador de la CRC (el divisor) no se suele representar a menudo como una tira de unos y ceros, sino como un polinomio algebraico (vase la figura 4.51). El formato polinomial es til por dos razones: es corto y se puede usar para demostrar conceptos matemticamente
Figura 4.51 Un polinomio La relacin de un polinomio con su correspondiente representacin binaria se muestra en la figura 4.52.
Figura 4.52 Un polinomio que representa un divisor Se debera seleccionar un polinomio que tenga al menos las siguientes propiedades: No debera ser divisible por x. Debera ser divisible por (x + 1). La primera condicin garantiza que se pueden detectar todos los errores de rfaga de una longitud igual al grado del polinomio. La segunda condicin garantiza que se detectan todos los errores de rfaga que afectan a un nmero impar de bits (la demostracin est fuera del mbito de este libro.
Prestaciones
CRC es un mtodo de deteccin de errores muy efectivo. Si se elige el divisor de acuerdo a las reglas mencionadas anteriormente, 1. CRC puede detectar todos los errores de rfaga que afectan a un nmero impar de bits. 2. CRC puede detectar todos los errores de rfaga de longitud menor que o igual que el grado del polinomio. 3. CRC puede detectar con probabilidad muy alta errores de rfaga con longitud mayor que el grado del polinomio.
CDIGO HAMMING Es un cdigo que se utiliza en la deteccin y correccin de errores que se producen en la transmisin de cdigos binarios, la palabra de cdigo se conforma por los bits de comprobacin y los bits de informacin. 5.1. CONCEPTOS BSICOS: Para poder continuar con el desarrollo del cdigo es necesario tener en cuenta algunas generalidades y conceptos bsicos: a cada una de stas se le asigna una combinacin de smbolos binarios. hay que cambiar en una de ellas para obtener la otra. combinaciones binarias cualesquiera pertenecientes a dicho cdigo. 5.2. DISTANCIA DE HAMMING El cdigo Hamming se genera a partir de una distancia mnima de 3, ya que una distancia de 1 o 2 es inconveniente para poder generar un cdigo para detectar un error. La distancia mnima de Hamming est dada por la siguiente ecuacin: Dm= 2X+1 Donde Dm es la distancia mnima de un cdigo para permitir la correccin de datos y X es las lneas de datos. Si se tuviese una distancia de 1 no tendramos valores para saber si hay o no un error. Si se tienen una distancia de 2 se podra lograr un sistema de correccin de error con un bit de paridad pero el problema que esto lleva es que un sistema con distancia 2 puede tener datos errneos que pueden pasar como datos correctos. 5.3. VARIABLES PARA GENERACIN HAMMING Para la generacin del cdigo Hamming se deben tener en cuenta tres variables que mencionaremos a continuacin: n: nmero de bits del cdigo original que se pretende transmitir. p: nmero de bits de paridad par generados en el transmisor, o sea, nmero de lneas que aadimos al cdigo inicial. c: nmero de bits detectores de paridad par generados por el receptor. El valor de p = c, ya que los bits de paridad generados tanto en el transmisor como en el receptor debe ser la misma. El nmero de combinaciones que se pueden formar con los c bits detectores de paridad tiene que ser mayor o igual que el nmero de lneas del cdigo original (n) ms el nmero de lneas de paridad aadidas (p) ms uno, este ltimo para contemplar el caso de no error.
Esta ecuacin nos muestra que existen unas combinaciones, estas no pueden ser asignadas de forma aleatoria a un evento, para asignar estas combinaciones a un evento especfico este debe estar en uno de los tres grupos diferenciados. 1. Combinacin asignada a la situacin en que no haya error en la transmisin. 2. Combinaciones asignadas a los bits de paridad generados en el transmisor. 3. Combinaciones asignadas a los bits de datos del cdigo original. Podemos tener un manejo de esta ecuacin para poder obtener la cantidad mnima de bits de informacin que nosotros podemos enviar. Si se despeja n
Teniendo en cuenta que p =c Si contamos con los valores de bits de paridad podemos encontrar los bits de informacin que se pueden manejar. Para obtener el nmero de bits total de la cadena del mensaje (s) se debe realizar la siguiente operacin:
GENERACIN DEL CDIGO DE HAMMING El cdigo Hamming plantea la generacin de una tabla para poder asignar los valores de las posibles combinaciones que generen los bits de paridad. A continuacin manejaremos un cdigo ASCII de 7 bits Si se tienen 7 bits de informacin se necesitan entonces que c = 4, esto nos conlleva a que se generan 2c combinaciones y es igual a 24 = 16 combinaciones a continuacin se establece una tabla de 16 combinaciones con un rango de 0 a 15
Para la asignacin de los eventos se realiza lo siguiente: 1. Contar Nmero de unos en las combinaciones 2. Si el nmero de unos es cero es una situacin de no error y no se utiliza para enviar dato.
3. Si el nmero de unos es 1, debemos empezar a organizar los bits de paridad desde el primero hasta el ltimo y darles su respectiva asignacin. 4. Si el nmero de unos es 2 en estos deben colocarse para los datos, si las combinaciones de 2 unos no son suficientes para los datos debemos empezar con los de 3 y luego los de 4 as sucesivamente, se prefiere que se coloquen los datos primero en los grupos de 2. 5. Si no se tienen ms datos esas lneas no son vlidas y se omiten en el sistema de verificacin.
Los bits de paridad b1, b2, b4, b8, no tienen un valor fijo este valor se encuentra por las siguientes relaciones: b1 = b3 b5 b7 b9 b11 b13 b15; b2 = b3 b6 b7 b10 b11 b14 b15; b4 = b5 b6 b7 b12 b13 b14 b15; b8 = b9 b10 b11 b12 b13 b14 b15; Esto se debe a que los bits de paridad se conforman de las combinaciones en donde el bit de paridad es uno, por ejemplo el bit1 es el bit de paridad para las combinaciones impares, se conforman de las combinaciones impares b3, b5, b7, b9, b11, b13, b15. A continuacin se muestra una tabla para ver cmo se realiza la operacin de EXOR. En la tabla se organizan y se suma para obtener los valores de b1, b2, b4, b8.
Terminada la tabla se procede a enviar el dato o la trama de datos La cual sera 00100011000100 Los datos que no se utilizan por lo general se envan en cero. Para saber si existe un error en la transmisin o si el mensaje de transmiti correctamente se deber realizar una comprobacin del sistema para esto se realiza con una codificacin de los componentes c1, c2, c3, c4 de la siguiente manera: c1 = b1 b3 b5 b7 b9 b11 b13 b15; c2 = b2 b3 b6 b7 b10 b11 b14 b15; c3 = b4 b5 b6 b7 b12 b13 b14 b15; c4 = b8 b9 b10 b11 b12 b13 b14 b15; Los resultados que vemos aqu son calculados con los datos que llegan al receptor, si los datos de c1, c2, c3, c4 nos dan cero en todos el mensaje se transmiti sin error pero si uno o varios de estos elementos se convierten en 1 quiere decir que hay un error, por ejemplo si el resultado de los indicadores ci son: c1 = 0, c2=1, c3=1, c4=0, esto quiere decir que hay un error en la combinacin b6 por ende si hay un uno en esta posicin quiere decir que el verdadero valor es cero, entonces podemos cambiar el valor de este y corregir de esta manera el error presentado. 5.5. EL SNDROME