Вы находитесь на странице: 1из 6

MTODO DE COMPROBACIN DE ERRORES POR REDUNDANCIA CCLICA

CRC: Cyclic Redundancy Check



Por ING. J os de J ess J imnez Medina

1. Introduccin

La integridad de los datos, es uno de los asuntos ms importantes y prioritarios, de todo sistema que
involucre en su concepto, el intercambio de informacin entre las entidades que lo componen. El transporte de
datos entre los dispositivos inteligentes de un sistema, debe tener un alto grado de transparencia, para que el
sistema cumpla con los estndares de eficiencia ofrecidos por sus diseadores.

A travs de los aos, se han elaborado diferentes mtodos para detectar los inevitables errores que
suceden, al llevar informacin de un lugar a otro. La paridad y el checksum son mtodos sencillos utilizados
para detectar errores, pero su probabilidad de xito es baja y el mtodo en s tiene una gran posibilidad de
generar errores. Sin embargo, los algoritmos de estas formas simples, dieron la pauta para disear frmulas
complejas que permiten por una parte, tener un alto porcentaje de confiabilidad, y por otra, una baja
probabilidad de insercin de errores por el mtodo mismo.

Uno de los mtodos ms confiables, por su alta sensibilidad para detectar errores, y que se ha convertido
en la referencia obligada de los sistemas de telecomunicaciones contemporneos, es el mtodo conocido
como Cyclic Redundancy Check, CRC por sus siglas en ingls, que permite mantener tasas de error
extremadamente bajas. Existen varios modelos del mtodo CRC, y dependiendo de la mtrica de las tramas
que manejan, son conocidos como: CRC-8, CRC-16, CRC-32, CRC-CCITT, etc.

En el sistema de procesamiento radar, utilizado por SENEAM para el control de trnsito areo, la tasa de
error permisible de los canales de comunicacin de datos, es de uno entre cien millones de bits. Es decir que,
los datos enviados por los sensores de radar hacia los centros de procesamiento, deben llegar con una
rgimen de error no mayor a 1 x 10
-8
. El modelo que se utiliza es el CRC-CCITT de 16 bits.


2. Descripcin del mtodo del CRC

El mtodo del CRC, consiste bsicamente en aplicar un procesamiento a la trama de bits que son enviados
por un canal, y el resultado de ese procesamiento, es agregado a la misma trama, colocndolo al final. En la
parte de recepcin, se aplica el mismo procesamiento a toda la trama, incluido el resultado del CRC agregado
por el emisor, y si el resultado es igual a cero, lo ms probable es que la transferencia de informacin fue
hecha sin errores.

Todos los mtodos de CRC tienen la misma mecnica, la diferencia est solamente en las variables que
intervienen en el procesamiento de la informacin. En las figuras 1 y 2, se muestra el algoritmo que sigue un
mtodo de CRC.
Informacin

Emisor
t0
CRC-tx
Informacin CRC-tx
t0

Receptor
CRC-rx = 0
El Rx aplica el procesamiento a toda
la trama incluido el CRC agregado
por el tx, si los datos llegan sin
errores, el CRC calculado por el rx
debe ser igual a cero.
Fig. 1: Mecnica de comprobacin de errores por redundancia cclica
1
2

En al figura 3 se presenta un ejercicio sencillo, que incluye una trama de 8 bits y el polinomio x
2
+1, la
mtrica es igual a 2. En el ejemplo se muestra la divisin de la trama formada por los 8 bits de informacin ms
el relleno de ceros igual a la mtrica, por el polinomio generador. El resultado del CRC es igual a 01. En la





figura 4 se muestra el procesamiento de la trama original, ms el resultado del CRC que se muestra en la
figura 3, ms el relleno de ceros segn la mtrica. Como se puede observar el resultado de aplicar el mtodo,
es que se tiene un residuo igual a cero. La operacin de la figura 3 es realizada por el emisor, el residuo se
enva al final de la trama. La operacin de la figura 4 es realizada por el receptor, si todos los bits llegaron sin
error y el CRC enviado es correcto, el resultado del clculo debe ser cero, si no, es que hubo errores en el
envo-recepcin de la trama.
figura 4 se muestra el procesamiento de la trama original, ms el resultado del CRC que se muestra en la
figura 3, ms el relleno de ceros segn la mtrica. Como se puede observar el resultado de aplicar el mtodo,
es que se tiene un residuo igual a cero. La operacin de la figura 3 es realizada por el emisor, el residuo se
enva al final de la trama. La operacin de la figura 4 es realizada por el receptor, si todos los bits llegaron sin
error y el CRC enviado es correcto, el resultado del clculo debe ser cero, si no, es que hubo errores en el
envo-recepcin de la trama.
Informacin
CRC
Fig. 2: Algoritmo de clculo del CRC
Polinomio CCITT
Cociente
relleno
El residuo de la divisin
es el resultado del
clculo del CRC que es
agregado al final de la
trama
El dividendo se forma
con todos los bits de la
trama ms un nmero de
0 1 segn la mtrica
del polinomio
Nmero binario con una longitud y
valor fijos.
El cociente se descarta
16 12
Polinomio CCITT-16 bits: x + x + x
5
+1

El polinomio CCITT-16 es un nmero binario formado por 17
bits, donde x
n
representa la posicin donde un bit es 1.

El polinomio CCITT-16 =10001000000100001
2
=11021
hex

En algunos textos se menciona como el polinomio 1021
Fig.3. Clculo del CRC por el emisor Fig.4. Clculo del CRC por el receptor
3. El mtodo del CRC a base de registros

Como se conoce, la divisin binaria se puede realizar haciendo corrimientos de los bits del dividendo, segn
sea la potencia n de la base 2 del divisor, 2
n
.

En el caso de un polinomio, como el del ejemplo anterior, dado que el residuo es del mismo tamao que el
polinomio (2 bits), se utiliza un registro de corrimiento, para introducir los bits del dividendo, pero se inserta una
operacin OR exclusiva, a la salida del registro n, donde el polinomio presenta una potencia de x. Las entradas
de cada OR exclusiva, son la salida del registro correspondiente y la salida del registro de x
n
, donde n es
mxima. En la figura 5 se muestra el arreglo para la operacin de las figuras 3 y 4.
Resultado del
CRC (LSB-MSB) Or exclusiva
X
2
+x
0
Bits de entrada
LSB MSB (01011011)
Fig.5. Clculo del CRC en base a registros

En la figura 6 se muestra un ejemplo utilizando un entero de 16 bits, al que se le calcula un CRC con el
polinomio CCITT-16 =x
16
+ x
12
+ x
5
+ 1. El nmero de 16 bits transmitido es 400C
hex
,

3
X
16
+ X
12
+ X
5
+ 1
Secuencia de entrada

4 0 0 C
0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0
MSB LSB

El CRC de 400C =EBA4
Fig. 6. Clculo del CRC del nmero 400C
hex
LSB MSB
4
Como se observa en ambos ejemplos, los bits de la trama sometida al clculo ms el relleno de 0 segn la
mtrica del polinomio, son introducidos uno tras otro al arreglo de registros, empezando por el bit menos
significativo. Despus de aplicar el nmero de corrimientos segn el nmero de bits de la trama, ms el nmero
de 0 de relleno, el nmero que quede en el grupo de registros, arreglados del MSB al LSB segn se observa
en la figura, ser el resultado del CRC. Segn el arreglo de registros y compuertas OR exclusiva, se advierte
que un valor de 1 en la salida del registro x
16
, provocar la inversin de los bits de la otra entrada de cada
compuerta OR exclusiva, mientras que un 0, en la salida del mismo registro, permitir un corrimiento
transparente de los bits.

Por lo tanto, a partir de este modelo, se puede hacer el clculo del CRC de cualquier nmero, utilizando
registros y compuertas (hardware), -de hecho, los controladores de comunicaciones incluyen en su lgica el
clculo del CRC- y a travs de un algoritmo de software, con operaciones de rotacin y OR-X.

Es importante sealar, que el primer modelo del clculo del CRC no precisaba si el relleno debiera ser de 0 o
de 1, ni tampoco si los bits debieran entrar por el registro de menos peso o por el de ms peso. Como
consecuencia de esto, surgieron dos vertientes, que aplicando el mismo mtodo, arrojan resultados de CRC
diferentes para un mismo nmero de entrada. En todo caso, no importa que forma se use, siempre y cuando
tanto el emisor como el receptor apliquen la misma, sin embargo es necesario conocer cul de las dos se
aplica, cuando se trate de acoplar un receptor y/o monitor a un enlace establecido. Al final del documento, se
agregan las direcciones de las pginas web donde se puede estudiar con ms detalle, cada una de las formas.


5
4. Aplicando la teora

En este tema se aplica una prueba de escritorio, para explicar el clculo del CRC del nmero del ejemplo de la
figura 6.

En el siguiente listado se muestra el estado de los registros que forman el modelo del CRC. El registro inicia
con ceros y los bits de la trama, iniciando con el LSB, son introducidos en cada corrimiento. Los corrimientos
estn numerados del 0 al 31, que corresponden a 32 bits, 16 para los bits de la trama y 16 del relleno de ceros.

Cuando el bit del registro 16 (x
16
) es 1, entonces se ejecuta una operacin OR exclusiva entre el valor del
grupo de registros y el valor del polinomio. El CRC es el valor que queda en los registros, al finalizar el
corrimiento de todos los bits, incluyendo los 16 ceros de relleno al final. Los bits del CRC son ordenados de
acuerdo a la figura 6.

Cl cul o del CRC- CCI TT de 16 bi t s de l a t r ama: 0c40

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1

3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1

4 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0

5 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0

6 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0

7 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 C

8 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0

9 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0

10 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0

11 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0

12 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0

13 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0

14 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1

15 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 40

16 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0

17 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0

18 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
Pol 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Or X 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1

19 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0
Pol 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Or X 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 1

20 0 1 1 0 0 0 0 0 1 0 0 0 0 1 1 0

21 1 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0

22 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0
Pol 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Or X 1 0 0 1 0 0 1 0 0 0 1 1 1 0 0 1

23 0 0 1 0 0 1 0 0 0 1 1 1 0 0 1 0 0
Pol 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Or X 0 0 1 1 0 1 0 0 0 1 0 1 0 0 1 1

24 0 1 1 0 1 0 0 0 1 0 1 0 0 1 1 0

25 1 1 0 1 0 0 0 1 0 1 0 0 1 1 0 0

26 1 0 1 0 0 0 1 0 1 0 0 1 1 0 0 0
Pol 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Or X 1 0 1 1 0 0 1 0 1 0 1 1 1 0 0 1

27 0 1 1 0 0 1 0 1 0 1 1 1 0 0 1 0
Pol 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Or X 0 1 1 1 0 1 0 1 0 1 0 1 0 0 1 1

28 1 1 1 0 1 0 1 0 1 0 1 0 0 1 1 0

29 1 1 0 1 0 1 0 1 0 1 0 0 1 1 0 0
Pol 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Or X 1 1 0 0 0 1 0 1 0 1 1 0 1 1 0 1

30 1 0 0 0 1 0 1 0 1 1 0 1 1 0 1 0
Pol 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Or X 1 0 0 1 1 0 1 0 1 1 1 1 1 0 1 1

31 0 0 1 1 0 1 0 1 1 1 1 1 0 1 1 0 0
Pol 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Or X 0 0 1 0 0 1 0 1 1 1 0 1 0 1 1 1

======================================
CRC 1 1 1 0 1 0 1 1 1 0 1 0 0 1 0 0 EBA4
===================================


5. Programa: cal_CRC.exe

Una aplicacin, conocida como calculadora de CRC para el polinomio CCITT-16, acompaa a este documento
para ayudar en el clculo rpido de cualquier trama de datos.

En la figura 7 se muestra la interfaz grfica de la calculadora. Esta pequea aplicacin, funciona en una
plataforma de W9x, W2K WXP.

La ventana de datos permite ingresar un mximo de 256 caracteres, en formato hexadecimal o en formato
ASCII. La trama de datos se forma a partir del primer byte ingresado, el cual es el byte menos significativo, y al
final del clculo, el CRC formado de 16 bits es ordenado con el mismo criterio, es decir, el byte de menos peso
es puesto primero, de izquierda a derecha, en la ventana del resultado CRC: .

Al activar la caja de la opcin Archivo CRC, la calculadora genera un archivo con la prueba detallada del CRC
de la trama de datos.



Fig. 7. Calculadora de CRC, CCITT-16
Ventana para
ingresar datos
(mximo 256)
Permite generar un
archivo de texto con
el clculo del CRC
Botn para
calcular el CRC
de la trama
ingresada
Limpia la ventana
de datos y de
resultado
Ventana de
resultado
Selecciona el
formato de
datos en ASCII
Selecciona el
formato de
datos en HEX




Enlaces web con informacin sobre el mtodo CRC:

http://www.macs.hw.ac.uk/~pjbk/nets/crc/
http://www.ece.msstate.edu/~reese/EE4743/crcexplained.htm
http://www.zorc.breitbandkatze.de/crc.html
http://www.joegeluso.com/software/articles/ccitt.htm






6

Вам также может понравиться