Ejercicio Cálculo de CRC
El código CRC contiene datos redundantes con la trama, de manera que los errores no sólo se pueden detectar sino que además se pueden solucionar.
En este proceso de detección de errores, un polinomio predeterminado (denominado polinomio generador y abreviado G(X)) es conocido tanto por el remitente como por el destinatario. El remitente, para comenzar el mecanismo de detección de errores, ejecuta un algoritmo en los bits de la trama, de forma que se genere un CRC, y luego transmite estos dos elementos al destinatario. El destinatario realiza el mismo cálculo a fin de verificar la validez del CRC.
Por ejemplo: tomemos el mensaje M con los siguientes 14 bits: 11110000011. Tomemos G(X) = X3 +X1+ 1 (representado en el sistema binario por 1011). Siendo que G(X) tiene un grado 3, el resultado es añadirle a M 3 bits nulos: 11110000011000. El CRC es igual al remanente de M dividido por G :
Los pasos:
1) Calcular polinomio generador, se usa el polinomio más alto.
2) La división se realiza:
El número binario (CRC a transmitir) más los bits nulos del grado; en el dividendo, dividiendo por el polinomio generador (divisor).
Se realiza la división si el resto parcial es 1 se copia el divisor, si el resto parcial es 0 es todo a 0.
Se resta utilizando XOR, basicamente es 0-0=0 1-1=0 0-1=1 1-0=1
Quitamos el primer cero del resto parcial y el siguiente número sea 1 ó 0 va en el cociente.
La división termina cuando no se pueda dividir más por el divisor.
El resto es el resultado a comparar con el control CRC enviado.