Está en la página 1de 5

ESCUELA POLITCNICA DEL EJRCITO EXTENSIN LATACUNGA

CDIGOS DE DETECCIN DE ERROR HAMMING Y CRC.


Geovani VicenteDaz Cuichn
Carrera Ingeniera Mecatrnica, Sexto Nivel, Escuela Politcnica del Ejrcito Extensin Latacunga, Mrquez
de Maenza S/N Latacunga, Ecuador.
e-mail:geovanivdiaz91@gmail.com
Fecha de presentacin: 02/09/2013.

saber si la informacin recibida es la misma que se


transmiti originalmente.

RESUMEN:El error es la alteracin del valor


correcto en uno o ms bits de informacin producida
durante
su
almacenamiento,
transmisin
o
manipulacin,
no
existe
ningn
sistema
de
comunicacin de datos que pueda impedir que ocurran
errores durante la transmisin, aunque la mayora de
estos pueden detectarse mediante diseos apropiados
que permiten saber si la informacin recibida es la
misma que se transmiti originalmente.
Un cdigo Hamming es un cdigo de bloque capaz de
identificar y corregir cualquier error de bit simple que
ocurra dentro de l.
El mtodo de redundancia cclica (CRC Cyclic
Redundancy Check) es otra tcnica muy usada para
deteccin de errores, son capaces de detectar la
presencia de errores en una secuencia de bits ms no
pueden corregirlos.

2.1 TIPOS DE ERRORES


Interferencias, calor, magnetismo, etc, influyen en
una seal electromagntica, esos factores pueden
alterar la forma o temporalidad de una seal. Si la seal
transporta datos digitales, los cambios pueden modificar
el significado de los datos. Los errores posibles son:

2.1.1

ERROR DE BIT

nicamente un bit de una unidad de datos determinada


cambia de 1 a 0 o viceversa.

PALABRAS CLAVE: Cdigos de deteccin de error,


Cdigo Hamming, Cdigo de deteccin de error CRC.
Figura 1: Error de bit.
Un error de bit altera el significado del dato. Son el
tipo de error menos probable en una transmisin de
datos serie, puesto que el intervalo de bit es muy breve
(1/frecuencia) el ruido tiene que tener una duracin muy
breve. Sin embargo si puede ocurrir en una transmisin
paralela, en que un cable puede sufrir una perturbacin
y alterar un bit de cada byte.

1. INTRODUCCIN
La comunicacin entre varias computadoras
produce continuamente un movimiento de datos,
generalmente por canales no diseados para este
propsito (lnea telefnica), y que introducen un ruido
externo que produce errores en la transmisin.
Por lo tanto, debemos asegurarnos que si dicho
movimiento causa errores, stos puedan ser detectados.
El mtodo para detectar y corregir errores es incluir en
los bloques de datos transmitidos bits adicionales
denominados redundancia.

2. CDIGOS
DE
DETECCIN
CORRECCIN DE ERRORES

2.1.2

ERROR DE RFAGA.

El error de rfaga significa que dos o ms bits de la


unidad de datos han cambiado. Los errores de rfaga
no significa necesariamente que los errores se
produzcan en bits consecutivos. La longitud de la rfaga
se mide desde el primero hasta el ltimo bit correcto,
algunos bits intermedios pueden estar bien.

En matemticas, computacin y teora de la


informacin, la deteccin y correccin de errores es una
importante prctica para el mantenimiento e integridad
de los datos a travs de diferentes procedimientos y
dispositivos como medios de almacenamiento
confiables.
No existe ningn sistema de comunicacin de datos
que pueda impedir que ocurran errores durante la
transmisin, aunque la mayora de estos pueden
detectarse mediante diseos apropiados que permiten

Figura 2: Error de rfaga.

ESCUELA POLITCNICA DEL EJRCITO EXTENSIN LATACUNGA


.
Los errores de rfaga es ms probable en transmisiones
serie, donde la duracin del ruido es normalmente
mayor que la duracin de un bit, por lo que afectara a un
conjunto de bits. El nmero donde bits afectados
depende de la tasa de datos y de la duracin del ruido.

par de bits a la vez, ya que un nmero par de errores no


afecta a la paridad final de los datos.
Por tanto, el mtodo de paridad puede detectar un
nmero impar de errores de transmisin. Siguiendo los
ejemplos anteriores, y alterando dos bits en la
transmisin, tenemos:

3. MTODO DE PARIDAD PARA LA


DETECCIN DE ERROES

Paridad par: se recibe 00110101 en vez de


00111001. Al comprobar el nmero de unos nos salen 4
(par), y no detecta los errores.
Paridad impar, se recibe 10110101 en vez de
10111001. Al comprobar el nmero de unos nos salen 5
(impar), y no detecta los errores.

Un bit de paridad es un dgito binario que indica si


el nmero de bits con un valor de1 en un conjunto de
bits es par o impar. Los bits de paridad conforman el
mtodo de deteccin ms simple.

Adems de esta paridad simple, vase tambin los


cdigos de paridad de bloques para detectar y corregir
errores en un bloque de datos transmitidos.

Los cdigos de paridad se usan en


Telecomunicaciones para detectar, y en algunos casos
corregir, errores en la transmisin. Para ellos se aade
en origen un bit extra llamado bit de paridad a los n bits
que forman el carcter original [3].

4. CDIGO HAMMING

Este bit de paridad se determina de forma que el


nmero total de bits 1 a transmitir sea par (cdigo de
paridad par) o impar (cdigo de paridad impar).

El cdigo Hamming debe su nombre a su


desarrollador y descubridor Richard Hamming en 1950.
Un cdigo Hamming es un cdigo de bloque capaz de
identificar y corregir cualquier error de bit simple que
ocurra dentro de l.
Los cdigos Hamming fueron la primera clase de
cdigos ideados para correccin de errores. Estos
cdigos y sus variaciones han sido ampliamente usados
para control de errores en comunicacin digital y en
sistemas de almacenaje de informacin.[3]
Para cualquier entero positivo m>=3, existe un cdigo
Hamming con los siguientes parmetros:

3.1 CDIGO DE PARIDAD PAR


El bit de paridad ser un 0 si el nmero total de 1 a
transmitir es par.
3.2 CDIGO DE PARIDAD IMPAR
El bit de paridad ser un 1 si el nmero total de 1
es impar.
Normalmente el bit de paridad se aade a la
izquierda del carcter original.
Tenemos el carcter original 0111001. Vemos que
la trama a transmitir tiene un nmero par de unos (4). Al
aadir el bit de paridad obtendremos el siguiente
carcter, que es el que se transmitir a destino:
Si usamos paridad par, ya hay un nmero par de
unos, por tanto se aade un 0, y transmitiremos
00111001
Si usamos paridad impar, como hay un nmero par
de unos, hemos de aadir otro 1 para conseguir un
nmero impar, y transmitiremos 10111001
Si se enva un dato y durante la transmisin se
produce un nico error, el destinatario puede detectarlo
al comprobar la paridad en destino. Usando los
ejemplos anteriores, y alterando un solo bit de la trama
transmitida, nos quedara.

Longitud del Cdigo:

n=2m-1

Nmero de smbolos de informacin:

k=2m-m-1

Nmero de smbolos de comprobacin


de paridad:

n-k=m

Capacidad de correccin de errores:

t=1(dmin=3)

Ejemplo:
Mensaje 101001110101

Paridad par: se recibe 00110001 en vez de


00111001. Al comprobar el nmero de unos nos salen 3
(impar), luego se ha producido un error.
Paridad impar, se recibe 10110001 en vez de
10111001. Al comprobar el nmero de unos nos salen 4
(par), luego se ha producido un error.
Este mtodo, aunque resulta satisfactorio en
general, slo es til si los errores no cambian un nmero

1 Acordar la longitud de cada cadena: 3


2 Acordar el sistema de numeracin:
3 Dividir el mensaje: 101 001 110 101
4 Asociar cada cadena con un entero: 5 1 6 5

ESCUELA POLITCNICA DEL EJRCITO EXTENSIN LATACUNGA


.

4.2 DISTANCIA DE HAMMING

5 Sumar todos los valores y aadir el nmero cambiado


de signo: -17

La distancia de Hamming es el nmero de bits en


que difieren dos palabras del cdigo. Si dos palabras
estn separadas una distancia d, se requerirn de
errores simples para convertir una en la otra. La mnima
es la distancia del cdigo. En general hay 2m mensajes
vlidos pero no todos los 2n lo son. La idea de
similaridad es ms consistente debido a la definicin de
la distancia Hamming.[3]

6 Enviar 5 1 6 5 -17 codificado en binario


El receptor:
1 Suma todos los valores; si la suma es 0, procesa el
mensaje; si no, se ha producido un error.
El cdigo de Hamming agrega tres bits adicionales de
comprobacin por cada cuatro bits de datos del
mensaje.

4.3 TIPO DE CODIFICACIN

El algoritmo de Hamming puede corregir cualquier error


de un solo bit, y detecta todos los errores de dos bits.
Para un ambiente en el que el ruido pueda cambiar
como mximo 2 bits de 7, el cdigo Hamming es
generalmente el de prdida mnima. El medio tendra
que ser muy ruidoso para que se perdieran ms de 2
bits de cada 7 (casi el 45% de los bits transmitidos), y
habra que considerar seriamente cambiar a un medio
de transmisin ms fiable.

El mtodo Hamming es un tipo de codificacin por


bloques, que trabaja de la siguiente manera: cada vez
que, y solamente cuando llegan al codificador k
smbolos (mensaje), este enva al siguiente bloque, l
smbolos (palabra cdigo), dependientes nicamente de
los k recibidos (una palabra cdigo asociada a cada
mensaje), con l > k. [1]

4.4 EFICIENCIA

El algoritmo es simple:

Para disear un buen cdigo, se trata de asegurar


que la distancia Hamming entre posibles cdigos
sea
ms larga que la distancia Hamming proveniente del
error. Por lo que el decodificar puede describirse como:
Elegir la palabra de cdigo con la mnima distancia
Hamming de la palabra recibida. Un cdigo con todas
las palabras distintas debe tener al menos una distancia
de Hamming mnima. Las prestaciones de un cdigo
continuo no slo dependen de un buen algoritmo de
codificacin, tambin dependen de las propiedades de
distancia del cdigo.

1. Todos los bits cuya posicin es potencia de dos se


utilizan como bits de paridad (posiciones 1, 2, 4, 8, 16,
32, 64, etc.).
2. Los bits del resto de posiciones son utilizados como
bits de datos (posiciones 3, 5, 6, 7, 9, 10, 11, 12, 13, 14,
15, 17, etc.).
3. Cada bit de paridad se obtiene calculando la paridad
de alguno de los bits de datos. La posicin del bit de
paridad determina la secuencia de los bits que
alternativamente comprueba y salta, a partir de ste, tal
y como se explica a continuacin.

La importancia de este parmetro en un cdigo


reside en que la probabilidad de error de decodificacin
es menor cuanto mayor es la distancia Hamming. Esto
es porque, cuanto mayor sea la distancia, ms
variaciones deber producir el canal en la secuencia
transmitida, para que en la decodificacin se produzca
un error al confundir la secuencia de entrada que
generar la secuencia codificada.

Posicin 1: comprueba 1, salta 1, comprueba 1, etc.


Posicin 2: comprueba 1, salta 2, comprueba 2,
salta 2, comprueba 2, etc.
Posicin 4: comprueba 3, salta 4, comprueba 4,
salta 4, comprueba 4, etc.
Posicin 8: comprueba 7, salta 8, comprueba 8,
salta 8, comprueba 8, etc.
Posicin 16: comprueba 15, salta 16, comprueba
16, salta 16, comprueba 16, etc.

4.5 DEFICIENCIA
Los Cdigo Hamming tienen la misma dificultad que
los cdigos de bloque, pues slo ofrecen proteccin
contra errores de bit simple, es decir errores de grado 1,
y ofrecen una pequea proteccin contra errores
dispersos. Adems el decodificador, denominado de
decisin remanente (harddecision), recibe la seal
cuantificada del demodulador sin importar cun grande
fue el error de la seal analgica recibida. En otras
palabras, el decodificador se limita a corregir los errores
introducidos por el demodulador en la toma de decisin.
Es evidente que durante el proceso de decodificacin
ser indistinto el grado de error de la seal recibida,
producindose una prdida irreversible de informacin.

4.1 ERRORES
Primero se debe conocer que es un error, que no es
ms que un dato que tiene m bits y se le agregan r bits
de redundancia o de chequeo, por tanto, los bits a
transmitir sern n = m + r. Existen mtodos que detectan
errores y otros que corrigen errores o ambos a la vez.
Uno de esos mtodos es el mtodo de Hamming, el cual
corrige y detecta errores de grado x.[3]

ESCUELA POLITCNICA DEL EJRCITO EXTENSIN LATACUNGA


.
un "1", y la ausencia, un "0"; es decir: sean 1010101 los
bits a transmitir, entonces el mensaje podr ser
considerado como un polinomio G(x) tal que: G(x) = x7 +
x5 + x3 + 1. Un mensaje de cdigo cclico consiste en
un nmero de bits de datos y el BCC. Sea n el nmero
total de bits y k el nmero de bits de datos, por lo tanto,
el nmero de bits del BCC es n - k. El cdigo del
mensaje (BCC) se obtiene de 2 polinomios:

5. CDIGO DE REDUNDANCIA CCLICA


El CRC o mtodo de rfaga es un cdigo de
deteccin de errores en una cadena de datos, 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. [4]
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.[2]

Polinomio generador P(x)


Mensaje Polinomial G(x) (bits de datos).
Dados:
P(x): polinomio generador
G(x): polinomio de mensaje de datos
Se desea hallar F(x), cdigo del mensaje Polinomial,
como sigue:
Multiplicar el mensaje G(x) por x, siendo n - k el
nmero de bits del BCC para dar lugar al BCC
(multiplicar por x, es lo mismo que desplazar el
mensaje polinomial de datos n-k lugares
completando con ceros a la derecha).
G(x) * xn-k
Dividir el producto resultante G(x) * xn-k por el
polinomio generador P(x).
G(x) * xn-k = Q(x) P(x) + C(x)
Despreciar el cociente y sumarle a G(x) * xn-k el
resto C(x) de la divisin para producir el cdigo de
mensaje polinomial F(x).
F(x) = G(x) * xn-k + C(x); Mensaje Polinomial a
Transmitir.[2]
Los clculos que realiza el equipo transmisor para
calcular su CRC son:

5.1 LA INTEGRIDAD DE LOS DATOS


FRENTE A LA CODIFICACIN
Es til para deteccin de errores, pero, en
condiciones de seguridad, no podemos confiar en que el
CRC puede verificar plenamente que los datos son los
correctos en caso de que se hayan producido cambios
deliberados y no aleatorios.
A menudo se piensa que s, cuando llega un
mensaje, ste y su CRC coinciden, quiere decir que el
mensaje no ha podido ser alterado durante su
transmisin, aunque se haya transmitido por un canal
abierto.
Cuando un CRC se calcula, el mensaje se conserva
(no cifrado) y la constante de tamao CRC se sita
hacia el final (es decir, el mensaje puede ser tan fcil
como leer antes de la posicin que ocupa el CRC).
Adems, la longitud del CRC es por lo general
mucho ms pequea que la longitud del mensaje, es
imposible para una relacin de 1:1 entre la CRC y el
mensaje.

1.

Aade tantos ceros por la derecha al mensaje


original como el grado del polinomio generador

2.

Divide el mensaje con los ceros incluidos entre


el polinomio generador

3.

El resto que se obtiene de la divisin se suma


al mensaje con los ceros incluidos

4.

Se enva el resultado obtenido

Caractersticas ms significativas del CRC:

La CRC sirve para verificar la integridad, pero no


para saber si el mensaje es correcto.

Por el contrario, un medio eficaz para proteger a los


mensajes contra la manipulacin intencional es el uso
de un cdigo de autenticacin de mensajes como
HMAC.

Detecta todos los errores de 1 y 2 bits (errores


simples y dobles).
Detecta todos los errores de un Burst menor que
el grado de P(x)
Detecta el 99 % de los errores de un Burst mayor
que el grado de P(x)

5.2 CLCULO DE CRC

5.3 MATEMTICAS DEL CRC

El CRC consiste en considerar a los bits a ser


transmitidos como un polinomio en x (para n bits el
orden es n-1) tal que la presencia de un trmino significa

Este apartado se refiere al anlisis matemtico de


este proceso de divisin, como pone de manifiesto la
manera de elegir un divisor que garantiza la deteccin

ESCUELA POLITCNICA DEL EJRCITO EXTENSIN LATACUNGA


.
de errores buenas propiedades. En este anlisis, los
dgitos de las cadenas de bits son considerados como
los coeficientes de un polinomio en algunos variables
x/coeficientes, que son elementos del campo finito
binario en lugar de los nmeros decimales. Este
polinomio forma unas cadenas de bits que pueden
observarse como elementos de un anillo.

cada uno tendr un convenio conjunto de lectura y


posicionamiento de paquetes para el envi a la
capa siguiente.
Omisin del orden del bit de ms peso del
polinomio divisor: algunos escritores proponen
omitir esto, puesto que el bit mayor peso es
siempre 1, y ya que el bit CRC debe ser definido
por un (n + 1) bits del divisor, es innecesario
mencionar el divisor mayor peso en el mensaje y
en el CRC.

Un anillo es, hablando en trminos generales, un


conjunto de elementos, es decir como los nmeros que
pueden ser operados por una operacin semejante pero
no idntica a la de la suma y adems alguna otra
operacin semejante a la multiplicacin, estas
operaciones poseen muchas de las propiedades de la
aritmtica conmutatividad, asociativa, y distributiva.

6. CONCLUSIONES

5.4 APLICACIONES DE UN CRC


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

Estas son algunas de las aplicaciones:

Se usa un patrn de prefijos de bit para comprobar


su autenticidad. Esto es til cuando la trama podra
tener errores en los bits de delante de un mensaje,
una alteracin que, de otro modo dejara sin
cambios al CRC. A veces un envo agrega n bits (n
es el tamao de la CRC) al mensaje que se debe
controlar ya que se cogera un polinomio que no
sera el correcto para la divisin. Esto tiene la
conveniencia de que el CRC del mensaje original
con el CRC adjunto es exactamente cero, por lo
que el CRC se puede comprobar simplemente por
la divisin polinmica y comparando con el resto
cero. A veces se realiza una implementacin del
CRC con OR exclusivos en el resto de la divisin
polinmica.

Cdigo de redundancia cclica es la tcnica


muy usada para deteccin de errores y cuando
se emplea el mtodo del cdigo polinmico, el
emisor y el receptor debern estar de acuerdo
respecto a un polinomio generador.
El Cdigo Hamming, es un sistema de deteccin
y correccin automtica de errores en
informacin electrnica, el cual asocia una serie
de bits de validacin o paridad a los bits de
datos.
Para la aplicacin del cdigo Hamming se
necesita conocer sobre los mtodos de paridad
par e impar.

7. REFERENCIAS
[1] Gonzles Sainz. 1987. Disponible en:

http://codigohammingud.wikispaces.com/file/view/C
%C3%93DIGO+DE+HAMMING+2012.pdf/345893984/C
%C3%93DIGO%20DE%20HAMMING%202012.pdf
Wikipedia.[online]. Algoritmos de Cdigo de
Redundancia
Cclica.
Disponible
en:http://es.wikipedia.org/wiki/Algoritmo_de_los_C
%C3%B3digos_de_Redundancia_C%C3%ADclica
[3] D. Gajski, Principios de diseo digital , 2nd. ed., Prentice
Hall, NJ, pp. 30-47, 1996.
[4]Echaiz (2013, Abril 24) Networks (2nd ed.)Disponible

Orden de los bits: en ocasiones, el orden en el que


se envan las tramas de datos no corresponden
exactamente con la posicin que tendrn los bits en
la divisin polinmica; es decir, que puede que el
primer bit enviado sea el de ms peso o viceversa.
Este convenio tiene sentido cuando las tramas a
enviar se envan por puertos series ya que el CRC
es comprobado por el hardware de cada mquina, y

en:http://cs.uns.edu.ar/~jechaiz/organizacion/clases
/clases/17-Codigos2%20BW.pdf