Vous êtes sur la page 1sur 6

CRC

COMPROBACION DE REDUNDANCIA CICLICA


Mientras que los controles de paridad son tiles para velocidades de datos bajas y mensajes asncronos donde los espacios entre bytes sucesivos, a veces grandes, hacen la recopilacin de datos en un bloque imposible, para asegurar la fiabilidad de los datos es necesario un esquema de deteccin de errores mucho ms robusto. La comprobacin de redundancia cclica o CRC es uno de esos mecanismos y requiere que los datos estn divididos en bloques, por lo que se denomina un cdigo de bloque.

Qu es un CRC?
Los CRC son una funcin hash que detecta cambios accidentales en los datos informticos, estos cdigos son utilizados en las redes de telecomunicaciones digitales y dispositivos de almacenamiento tales como unidades de disco duro. Esta tcnica fue inventada por W. Wesley Peterson en 1961 y desarrollada por el CCITT (Comit Consultatif International Tlgraphique et Tlphonique). Los CRC son muy simples de implementar en hardware y pueden ser fcilmente analizados matemticamente. Es una de las mejores tcnicas en la deteccin de errores de transmisin comnmente utilizadas. Funcin Hash: una funcin hash (o un algoritmo hash) es una funcin que produce una salida de longitud fija para cualquier valor de entrada. La probabilidad de que dos entradas diferentes produzcan una misma salida es muy baja.

El perro

Funcion Hash

ARFTGYHUJIJD

El perro negro

Funcion Hash

FTREDSYUIJHG

El perro negro camina solo

Funcion Hash

DTYHJIUTREDS

CRC

Funcionamiento
Dado un bloque o mensaje de k-bits, el transmisor genera una secuencia de bits, denominada secuencia de comprobacin de la trama (FCS, Frame Check Sequence), de tal manera que la trama resultante, con n bits, sea divisible por algn nmero predeterminado. El receptor dividir la trama recibida entre ese nmero y si no hay residuo en la divisin, supondr que no ha habido errores.

M=Bloque de k
bits
T=Trama Resultante
El objetivo es que la divisin , donde P es el patrn de

F=FCS de n-k bits

(este es el divisor

elegido), no tenga residuo alguno. Es evidente que:

Es decir, multiplicar D por

en realidad equivale a desplazar hacia la izquierda

bits,

aadiendo ceros al resultado. Finalmente, en la obtencin de T, al sumar F lo que estamos haciendo es, en realidad, concatenar D y F. El objetivo es hacer T divisible entre P. Supngase que se divide entre P:

Hay un cociente y un residuo, el residuo ser siempre al menos un bit ms corto que el divisor, ya que la divisin es mdulo 2. La secuencia de comprobacin de la trama, o FCS, ser igual al resto de la divisin. Entonces:

El patrn P se elige con un bit ms que la longitud de la FCS deseada. El patrn elegido en particular, depender del tipo de errores que se espera sufrir. Como mnimo, el bit ms significativo y el menos significativo de P deben ser 1. Hay un mtodo conciso para detectar la presencia de uno o ms errores. Un error provocar que se invierta un bit. Esto es equivalente a calcular la funcin XOR entre el bit y 1. Por tanto, los errores en una trama de n bits se pueden representar mediante una palabra de n bits, teniendo 1 en aquellas posiciones que coincidan con un error. La trama Tr resultante se puede expresar como:

CRC

Donde: T= trama transmitida. E= patrn de errores con 1 en las posiciones donde haya un error. Tr= trama recibida. Si ha habido un error (E0), el receptor fallar en la deteccin si, y solamente si, Tr es divisible entre P, lo que es equivalente a que E sea divisible entre P. Intuitivamente, esto parece que es un evento improbable.

Polinomios Generadores: Una segunda forma de ver el proceso de CRC es expresar todos los valores como polinomios de una variable X, con coeficientes binarios. Los coeficientes correspondern con los bits del nmero en binario. As, si: , se tendr que , se tiene que De nuevo, las operaciones se realizan en aritmtica mdulo 2. El procedimiento de CRC se puede describir de la siguiente manera:

Un error E(X) no se detectar solamente si es divisible entre P(X). Es ms, se puede demostrar que si todos los patrones de error son equiprobables, entonces, para una rfaga de errores con longitud r+1, la probabilidad de que no se detecte un error es rfagas mayores, la probabilidad es , donde r es la longitud de la FCS. Una comprobacin de redundancia cclica tambin se aplica a los dispositivos de almacenamiento como discos duros. En este caso, los bits de control se asignan a cada bloque en el disco duro. Cuando un archivo corrupto o incompleto es ledo por el ordenador, se informa del error de redundancia cclica. Este puede ser de otro dispositivo de almacenamiento o desde CD o DVD. Las razones ms comunes para los errores son fallas del sistema, archivos incompletos o corruptos, o archivos con gran cantidad de errores. , y para

CRC

Los diseos polinomios para un CRC dependen de la longitud del bloque a proteger, las caractersticas de proteccin contra errores, los recursos para la implementacin del CRC y el rendimiento deseado. Es frecuente utilizar alguna de las cuatro definiciones siguientes para P(X): Nombre Comn CRC-12 CRC-16 CRC-CCITT CRC-32 r 12 16 16 32 Generador Polinomio Hex 80F 800F 1021 04C1 1DB7

Implementacin por Hardware


Para implementar un circuito de hardware para el clculo de la suma de comprobacin CRC, se reduce el proceso de divisin polinomios de sus elementos esenciales. El procedimiento CRC se puede representar, y de hecho implementar, con un circuito divisor formado por compuertas XOR y un registro de desplazamiento. El registro de desplazamiento es una cadena de elementos de memoria de 1 bit. Cada elemento tiene una lnea de salida que contendr el valor actualmente almacenado, adems de una lnea de entrada. A instantes discretos de tiempo, establecidos por una seal de reloj, el valor almacenado en el elemento de memoria se reemplaza por el valor que se encuentre en la lnea de entrada. Todo el registro utiliza una seal de reloj comn, que provoca un desplazamiento de un bit a lo largo de todo el registro. El circuito de para la implementacin por hardware de un CRC puede ser descrito de manera informal como sigue: 1. El registro contendr 2. Hay bits, igual a la longitud de la FCS.

compuertas XOR.

3. La presencia o ausencia de una compuerta corresponder con la presencia o ausencia del trmino correspondiente en el polinomio divisor, P(X), excluyendo a los trminos 1 y

CRC

La siguiente figura nos muestra una arquitectura genrica para la realizacin de un cdigo de CRC mediante un registro de desplazamiento para el polinomio:

Arquitectura genrica de una CRC para implementar la divisin entre

Donde

, y todos los otros

son iguales a 0 o 1. Es habitual mostrar el registro

del procedimiento CRC con desplazamientos hacia la derecha, lo cual es contrario a la divisin binaria. Debido a que los nmeros binarios se representan habitualmente con el bit ms significativo a la izquierda, es ms apropiado usar un registro de desplazamiento a la izquierda como el aqu usado. El mismo circuito se utiliza tanto para la creacin y de verificacin de la CRC. Cuando la creacin de la FCS, el circuito acepta los bits de la trama sin procesar y luego una secuencia de ceros. La longitud de la secuencia es la misma que la longitud de la FCS. El contenido del registro de desplazamiento ser el FCS para anexar. Al comprobar la FCS, el circuito acepta los bits de la trama recibida. El contenido del registro de desplazamiento debe ser cero o de lo contrario hay errores.

CRC

Bibliografa
Black, R. (18 de Febrero de 1994). Bluebook. Obtenido de University of Cambridge Computer Laboratory Systems Research Group: http://www.cl.cam.ac.uk/research/srg/bluebook/21/crc/crc.html Houghton, A. (1996). The Engineer's Error Coding Handbook. Sheffield (UK): CHAPMAN & HALL. Martin Stigge, H. P.-P. (24 de 05 de 2006). Humboldt University Berlin. Obtenido de Reversing CRC Theory and Practice: http://sar.informatik.huberlin.de/research/publications/SAR-PR-2006-05/SAR-PR-2006-05_.pdf

Vous aimerez peut-être aussi