Sei sulla pagina 1di 7

Cdigo de redundancia cclica (CRC)

Deteccin de errores
Es una importante practica para el mantenimiento e integridad de los datos a travs de
diferentes procedimientos y dispositivos.
Redundancia
Es aquella parte del mensaje que seria innecesaria en ausencia de errores (es decir, no
aporta informacin nueva: solo permite detectar errores).
Tipos de comprobacin de redundancia.
Verificacin de redundancia vertical (VRC,Vertical Redundancy Check conociad como
verificacin de paridad)
Verifiacion de redundancia longitudinal (LRC) longitudinal Redundancy Check
Verifiacion de redundancia cclica (CRC) Cyclic Redundandy Check

La comprobacin de redundancia cclica es un cdigo de deteccin de errores usado


frecuentemente en redes digitales y en dispositivos de almacenamiento para detectar
cambios accidentales en los datos.
El CRC es un cdigo de deteccin de error cuyo clculo es una larga divisin de computacin
en el que se descarta el cociente y el resto se convierte en el resultado, con la importante
diferencia de que la aritmtica que usamos conforma que el clculo utilizado es el arrastre de
un campo, en este caso los bits. El tamao del resto es siempre menor que la longitud del
divisor, que, por lo tanto, determina el tamao del resultado. La definicin de un CRC
especifica el divisor que se utilizar, entre otras cosas. Aunque un CRC se puede construir
utilizando cualquier tipo de regla finita, todos los CRC de uso comn emplean una base
finita binaria, esta base consta de dos elementos, generalmente el 0 y 1. El resto de este
artculo se centrar en este tipo de composicin, es decir el mbito binario y los principios
generales de los CRC.

La CRC fue inventada y propuesta por W. Wesley Peterson en un artculo publicado en 1961.

El CRC son un potente sistema muy usado en comunicaciones y en dispositivos de hardware para
detectar si la informacin esta corrupta (daada)

Polinomios generadores

Los polinomios generadores mas utilizados son

CRC-12: x12+x11+x3+x2+x+1. Usado para transmitir flujos de 6 bits, juntos a otros 12 de


redundancia
CRC-16: x16+x15+x2+1. Para flujos de 8 bits, con 16 de redundancia. Usado en EUA principalmente

CRC-CCITT: x16+x12+x5+1. Para flujos de 8 bits, con 16 de redundancia. Usado en Europa,


principalmente.

CRC-32: x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1. Da una proteccin extra


sobre la que dan los CRC de 16 bits, que suelen dar la suficiente

Uno de los polinomios generadores que mas se suelen utilizar es el estndar CCITT:x16+x12+x5+1

Este polinomio permite la deteccin de:

100% de errores simples

100% de errores dobles

100% de errores de un nmero impar de bits

100% de errores en rfagas (en una serie sucesiva de bits) de 16 o menos bits.

99.99% de errores en rfagas de 18 no mas bits.

Cdigo CRC

El cdigo CRC o de comprobacin de redundancia cclica tiene como finalidad agregar bits
redundantes al final de la transmisin.

Los n bits que se transmitan se toman como los coeficientes un polinomio de grado n-1.
Funcionamientos de CRC

A cada bloque de datos le corresponde una secuencia fija de nmeros binarios conocida como
cogido CRC.

El cdigo CRC generado es diferente al cdigo original.

El CRC se utiliza como una deteccin de errores de cdigo, el cual tiene una serie de aplicaciones
usadas cuando se implementa mediante normas convirtindolo as en un sistema practico
Algunas de sus aplicaciones:

- Se usa un patrn de prefijos de bit para comprobar su autenticidad.


- Orden de los bits
- Omisin del orden del bit de mas peso del polinomio divisor

Otra informacin que encontr

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*X + 1*X + 1*X + 0*X + 1*X + 0*X + 1*X + 0*X + 0*X + 1*X
9 8 7 6 5 4 3 2 1 0

siendo
X + X + X + X + X
8 7 5 3 0

o
X + X + X + X + 1
8 7 5 3

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.

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,.,.....
----,.,.....
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,..,.,.,.....
----,..,.,.,.....
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

Potrebbero piacerti anche