Sie sind auf Seite 1von 3

Tcnicas Digitales III

CRC

CRC
El Cyclic Redundancy Code (CRC) es uno de los cdigos ms usados en deteccin de errores porque permite detectar con una alta probabilidad los errores de transmisin incrementando la longitud del marco en pocos bits (en general no ms de 32, dependiendo del tipo de CRC). Para comprender cmo y por qu funciona debemos tener primero en cuenta que cada mensaje de n+1 bits representa a un polinomio de grado n, en el que el monomio de mayor n orden es de la forma (bn x x ) donde bn es el primer bit del mensaje transmitido. El CRC es un valor computado en funcin de un conjunto de datos. Muchas personas creen que CRC representan las siglas de Cyclic Redundancy Check (cdigo de redundancia cclica). Si esto es as entendido, entonces se estar usando en forma incorrecta este termino. Si as lo fuera, no se podra decir el CRC del programa es 12345678. Se dice normalmente que un determinado programa tiene chequeo de CRC, y no un chequeo del chequeo de redundancia cclica. Como conclusin: CRC ser un cdigo de redundancia cclica y NO un chequeo de redundancia cclica. La idea consiste en ver a un archivo como una cadena (string) de bits divididos por algn numero, que posee un acarreo. Este es justamente el CRC. Siempre se tiene un acarreo y este puede tomar inclusive el valor 0. Ejemplo: (9/3=3 resto=0) (9+2)/3=3 resto=2)

Para realizar un calculo de CRC necesitaremos seleccionar un divisor, este es un polinomio predefinido de orden n. El ancho W de un polinomio esta definido en funcin de la posicin del bit de mayor peso. Por ejemplo, el ancho del

U.T.N. - Facultad Regional Paran

Tcnicas Digitales III

CRC

polinomio 1001 es 3, y no 4. Notar que el bit de mayor peso tiene siempre valor 1. Si queremos calcular el CRC de una cadena de bits, deberemos asegurarnos que todos los bits sern procesados. De todas maneras, necesitaremos adosar W bits de cero hasta el final de la cadena de bits. Un ejemplo: Dato = 110101101 Polinomio = 10011, ancho W=4 Cadena de bits + W ceros = 110101101 + 0000 Dato final = 1101011010000

1101011010000 |10011 10011|||||||| -----|||||||| 10011||||||| 10011||||||| -----||||||| 00001|||||| 00000|||||| -----|||||| 00010||||| 00000||||| -----||||| 00101|||| 00000|||| -----|||| 01010||| 00000||| -----||| 10100|| 10011|| -----|| 01110| 00000| -----| 11100 10011 ----1111

U.T.N. - Facultad Regional Paran

Tcnicas Digitales III

CRC

El resto es 1111, este es el CRC, que se transmite junto con el dato. Podemos ver: 1. Solamente cuando el bit de mayor peso es uno en la cadena de bits, realizamos la XOR con el polinomio, de otra manera, solamente acarreamos la cadena de bits un bit a la izquierda. 2. El efecto en la cadena XOR es, que este es realizado con los W bits de menor peso. Al hacer esta operacin con los bits de mayor peso, dar siempre cero. Por lo tanto se enva al receptor el dato 110101101 y el CRC 1111, luego el dato es dividido por el mismo polinomio en la misma forma que en el transmisor para calcular el CRC, luego se compara el CRC recibido con el calculado para verificar si hubo error. En caso de error se retransmite el dato. Algunos de los polinomios mas usados son:
Denominacin

C(x)

CRC-8 CRC-10 CRC-12 CRC-16 CRC-CCITT CRC-32

x8 +x2 +x1 +1 x10 +x 9 +x 5 +x4 +x1 +1 X12 +x11 +x3 +x2 +1 x16 +x15 +x2 +1 X16 +x12 +x5 +1 x32 + x26 + x23 + x16 + x11 + x10 + x8 + x7 + x5 + x4 + x2 +1

U.T.N. - Facultad Regional Paran

Das könnte Ihnen auch gefallen