Técnicas de comunicación de datos digitales
3. Detección de errores
3.2. Internet Checksum
Uno de los códigos para la detección de errores más habitual y más potente son los de comprobación de redundancia cíclica (CRC, Cyclic Redundancy Check), que se pueden explicar de la siguiente manera.
Dado un bloque o mensaje de k-bits, el transmisor genera una secuencia de (n-k) bits, denominada secuencia de comprobación de la trama (FCS, Frame Check Sequence), de tal manera que la trama resultante, con n bits, sea divisible por algún número predeterminado.
Figura 1
El receptor dividirá la trama recibida entre ese número y si no hay resto en la división, supondrá que no ha habido errores.
Para explicar el por que vamos a asumir que podemos representar una secuencia de bits como un polinomio, por ejemplo:
Figura 2
En ese caso:
=> el orden de R es menor que P, Q es la parte entera de la división. RTx es el FCS que es lo se transmite luego del mensaje de orden n-k
Entonces la trama enviada es:
En extremo del Receptor :
Si realizamos la misma Operación de dividir por P.
En el caso de que R y R' sean iguales, si se suman con una XOR daría cero, esto indicaría que el Q sobre el que se calculó el cociente es el mismo y el mensaje llegó sin errores.
El polinomio expresado en la Figura 2, de manera general se puede escribir como:
Figura 3
Donde Ai vale 1 para el primer y último termino, y los valores intermedios pueden estar o no presentes dependiendo si son 1 o 0. Este es el polinomio utilizado para dividir y la división se puede realizar con un circuito de compuertas y registros de desplazamientos de manera que cuando vaya ingresando el Mensaje con los datos se pueda ir calculando el FCS y al finalizar se "acopla" al tren de bits del mensaje el del FCS.
Figura 4
Se deja al alumno interpretar el siguiente caso para el polinomio: X5 + X4 + X2 + 1 => 110100 serían los coeficientes del Polinomio.
La secuencia a transmitir es: 1010001101. En nuestro caso el orden de Mensaje es: 9. El orden del Polinomio es 5. El largo de la Trama será : 9+(5-1)=14.
Si personalizamos el circuito genérico para nuestro polinomio quedaría:
Figura 5
Figura 6