You are on page 1of 5

Verificacin de redundancia cclica

La verificacin de redundancia cclica (abreviado, CRC ) es un mtodo de control de


integridad de datos de fcil implementacin. Es el principal mtodo de deteccin de
errores utilizado en las telecomunicaciones.

Concepto
La verificacin de redundancia cclica consiste en la proteccin de los datos en
bloques, denominados tramas. A cada trama se le asigna un segmento de datos
denominado cdigo de control (al que se denomina a veces FCS, secuencia de
verificacin de trama, en el caso de una secuencia de 32 bits, y que en ocasiones se
identifica errneamente como CRC). El cdigo CRC contiene datos redundantes con la
trama, de manera que los errores no slo se pueden detectar sino que adems se
pueden solucionar.

El concepto de CRC consiste en tratar a las secuencias binarias como polinomios


binarios, denotando polinomios cuyos coeficientes se correspondan con la secuencia
binaria. Por ejemplo, la secuencia binaria 0110101001 se puede representar como un
polinomio, como se muestra a continuacin:
0*X9 + 1*X8 + 1*X7 + 0*X6 + 1*X5 + 0*X4 + 1*X3 + 0*X2 + 0*X1 +
1*X0
siendo
X8 + X7 + X5 + X3 + X0
o
X8 + X7 + X5 + X3 + 1
De esta manera, la secuencia de bits con menos peso (aquella que se encuentra ms a
la derecha) representa el grado 0 del polinomio (X0 = 1), (X0 = 1), (X0 = 1), el 4 bit de
la derecha representa el grado 3 del polinomio (X3), y as sucesivamente. Luego, una
secuencia de n- bits forma un polinomio de grado mximo n-1. Todas las expresiones
de polinomios se manipulan posteriormente utilizando un mdulo 2.
1

En este proceso de deteccin 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 deteccin 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 clculo a
fin de verificar la validez del CRC.

Aplicaciones prcticas
Digamos que M es el mensaje que corresponde a los bits de la trama que se enviar, y
que M(X) es el polinomio relacionado. Supongamos que M' es el mensaje transmitido,
por ejemplo, el mensaje inicial al que se concatena un CRC de n bits. El CRC es el
siguiente: M'(X)/G(X)=0. Por lo tanto, el cdigo CRC es igual al remanente de la divisin
polinomial de M(X) (X) (al que se le ha anexado los n bits nulos que corresponden a la
longitud del CRC) entre G(X).
Por ejemplo: tomemos el mensaje M con los siguientes 16 bits: 1011 0001 0010 1010
(denominado B1 en hexadecimal). Tomemos G(X) = X3 + 1 (representado en el sistema
binario por 1001). Siendo que G(X) tiene un grado 3, el resultado es aadirle a M 4 bits
nulos: 10110001001010100000. El CRC es igual al remanente de M dividido por G :
10110001001010100000
1001...,..,.,.,.....
----...,..,.,.,.....
0100..,..,.,.,.....
0000..,..,.,.,.....
----..,..,.,.,.....
1000.,..,.,.,.....
0000.,..,.,.,.....
----.,..,.,.,.....
1000.,..,.,.,.....
1001,..,.,.,.....
----,..,.,.,.....
1111..,.,.,.....
1001..,.,.,.....
----..,.,.,.....
1100.,.,.,.....
1001.,.,.,.....
----.,.,.,.....
1101,.,.,.....
1001,.,.,.....
----,.,.,.....
1000.,.,.....
0000.,.,.....
----.,.,.....
10001......
1001,.,.....
----,.,.....
2

10000.,.....
1001.,.....
---1111,.....
1001,.....
----,.....
1100.....
1001.....
----.....
1100....
1001....
----....
1010...
1001...
----...
0110..
0000..
----..
1100.
1001.
----.
1010
1001
---0011
Para crear M' se debe concatenar el CRC resultante con los bits de la trama que se va a
transmitir:
M' = 1011000100101010 + 0011
M' = 10110001001010100011
Por lo tanto, si el destinatario del mensaje divide M' por G, obtendr un remanente de
cero si la transmisin ocurri sin errores.
10110001001010100011
1001...,..,.,.,...,,
----...,..,.,.,...,,
0100..,..,.,.,...,,
0000..,..,.,.,...,,
----..,..,.,.,...,,
1000.,..,.,.,.....
1001.,..,.,.,.....
----.,..,.,.,.....
0010,..,.,.,.....
0000,..,.,.,.....
----,..,.,.,.....
3

0101..,.,.,.....
0000..,.,.,.....
----..,.,.,.....
1010.,.,.,.....
1001.,.,.,.....
----.,.,.,.....
0110,.,.,.....
0000,.,.,.....
----,.,.,.....
1101.,.,.....
1001.,.,.....
----.,.,.....
1010,.,.....
1001,.,.....
----,.,.....
0111.,.....
0000.,.....
---1110,.....
1001,.....
----,.....
1111.....
1001.....
----.....
1100....
1001....
----....
1010...
1001...
----...
0110..
0000..
----,,
1101,
1001,
----,
1001
1001
---0

Polinomios generadores
Los polinomios generadores ms comunes son:
CRC-12: X12 + X11 + X3 + X2 + X + 1
CRC-16: X16 + X15 + X2 + 1
CRC CCITT V41: X16 + X12 + X5 + 1 (este cdigo se utiliza en el procedimiento
HDLC)
CRC-32 (Ethernet): = X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 + X8 + X7 + X5
+ X4 + X2 + X + 1
CRC ARPA: X24 + X23+ X17 + X16 + X15 + X13 + X11 + X10 + X9 + X8 + X5 + X3 + 1