Está en la página 1de 21

CDIGO DE HAMMING PARA DETECCIN

Y CORRECCIN DE ERRORES

ALVARO HUMBERTO CISNEROS ROSERO


DANIEL SEPLVEDA NEZ

INFORMACIN Y CODIFICACIN

UNIVERSIDAD DISTRITAL FRANCISCO JOS DE CALDAS


FACULTAD DE INGENIERA
MAESTRA EN CIENCIAS DE LA INFORMACIN Y LAS COMUNICACIONES
BOGOT
2012

TABLA DE CONTENIDO

INTRODUCCIN

1. OBJETIVOS

1.1 GENERAL

1.2 ESPECFICOS

2. TCNICAS DE DETECCIN DE ERRORES

3. TCNICAS DE CORRECCIN DE ERRORES

4. RICHARD WESLEY HAMMING

5. CDIGO HAMMING

5.1. CONCEPTOS BSICOS

5.2. DISTANCIA DE HAMMING

5.3 VARIABLES PARA GENERACIN HAMMING

5.4. GENERACIN DEL CDIGO DE HAMMING

5.5. EL SNDROME Y DETECCIN SISTEMTICA DEL CDIGO DE


HAMMING.
5.6. DETECCIN Y EFICIENCIA SOBRE CANAL

13

6. EXTENSIN DEL CDIGO DE HAMMING.

17

7. TAREA

18

8. CONCLUSIONES

19

9. BIBLIOGRAFA

20

15

INTRODUCCIN

Desde que Claude Shanon desarrollo su teora de la informacin, la transmisin


de la informacin digital presenta un reto constante para los ingenieros de
comunicaciones, puesto que los medios de transmisin pueden corromper y daar
los datos, por ende es necesario crear un mtodos que permitan detectar errores y
mejor an corregirlos, uno de estos mtodos es el mtodo de Hamming,
desarrollado por Richard Wesley Hamming, este mtodo ser el pilar desarrollado
en este trabajo, pero para entender de una forma ms concisa es necesario
conocer tcnicas de correccin y deteccin de errores que las veremos en los
captulos 2 y 3, veremos una breve historia sobre Richard Hamming que se
muestra en el captulo 4 y el captulo 5 se desarrolla el cdigo Hamming y un
mtodo para lograr una mejor comprensin.
El cdigo Hamming permite deteccin y correccin de los datos enviados por un
canal susceptible a ruido, est mtodo se utiliza en canales donde la retransmisin
de un mensaje puede congestionar el canal, este mtodo se utiliza comnmente
en redes de Wi Fi para la transmisin de mensajes, su estudio nos mostrar
como detecta y corrige errores de un bit y como puede ser escalado para que
detecte ms errores mejorando la eficiencia en el canal.

1. OBJETIVOS

1.1 GENERAL

Estudiar y comprender los aspectos relacionados con el cdigo Hamming.

1.2 ESPECFICOS
Conocer las tcnicas fundamentales para la deteccin y la correccin de errores
relacionados con el cdigo Hamming.
Examinar y analizar el mtodo de Hamming para la correccin y su posterior
correccin de errores.
Determinar un sistema para el anlisis y comprensin del cdigo Hamming.
Indagar sobre sistemas de mayor complejidad como el mtodo de Hamming
Extendido.
Relacionar la eficiencia del cdigo Hamming frente al aprovechamiento del canal
de transmisin.

2. TCNICAS DE DETECCIN DE ERRORES

Cdigos VRC (Vertical Redundancy Check).


En esta tcnica, un bit redundante, denominado bit de paridad, se aade al final de
cada bloque de datos.
Cdigo LRC (Longitudinal Redundancy Check).
Esta tcnica consiste en VRC de dos dimensiones, se agrupa un determinado
nmero de unidades de datos en un bloque, cada uno con su bit VRC
correspondiente. Se calcula el bit de paridad entre cada bit de todas y cada una de
las unidades de datos (primeros bits, segundos, etc.). Se renen los bits de
paridad de todas las posiciones en una nueva unidad de datos y se aade al final
del bloque.
Comprobacin de redundancia cclica (CRC).
Dado un bloque o mensaje de k bits, el transmisor genera una secuencia de n bits,
denominada secuencia de comprobacin de trama (FCS Frame Check Sequence),
la trama resultante, de n + k bits sea divisible por algn nmero predeterminado
(patrn de bits). El receptor dividir la trama recibida por el mismo patrn de bits y,
si el resto en la divisin (resto 0), indica que la transmisin ha sido correcta, sin
error.

3. TCNICAS DE CORRECCIN DE ERRORES

Requerimiento automtico de repeticin (ARQ)


Pare y espere ( stop and wait ARQ ): Cuando el receptor recibe una trama procede
a validarla, si no contiene errores enva una seal de confirmacin hacia el emisor
ACK (acknowledge). Si hay error enva una seal de recepcin errnea llamada
NAK (negative acknowledge).
Envo continuo ( Continuos ARQ ): Presenta el inconveniente de reducir el tiempo
de utilizacin efectiva de los canales de comunicacin dado que cada mensaje
debe ser confirmado individualmente y todo se paraliza hasta que ello ocurre.
Correccin de errores hacia adelante (FEC)
Cdigos de bloque: Un cdigo de bloques convierte k bits de entrada en n bits de
salida con n>k, este es un cdigo sin memoria.
Cdigos de rbol: Un cdigo de rbol es producido por un codificador con
memoria, a este grupo pertenecen los cdigos convolucionales, los cuales tienen
como caracterstica que a cada bit de una secuencia se le aplica una operacin
binaria especifica.

4. RICHARD WESLEY HAMMING

Matemtico estadounidense de gran importancia en el rea de la informtica y de


las telecomunicaciones, naci en Chicago, Illinois, el 11 de febrero de 1915.
Estudio su licenciatura en la Universidad de Chicago en 1937, en 1939 realiza un
master en la Universidad de Nebraska y se doctor en la Universidad UrbanaChampaign de Illinois en 1942.
Mientras se desarrollaba la Segunda Guerra Mundial, fue profesor en la
Universidad de Louisville, trabajo que abandonara para integrarse en 1945 en el
proyecto Manhattan. All desarroll su trabajo programando una de las primeras
calculadoras numricas electrnicas, para determinar la solucin a algunas
ecuaciones proporcionadas por los fsicos del proyecto. El objetivo del programa
era descubrir si la detonacin de una bomba atmica podra incendiar la
atmsfera. Entre los aos 1946-1976, trabaj en los laboratorios Bell, en donde
colabor con Claude E. Shannon. El 23 de julio de 1976 se traslad a la Naval
Postgraduate School, en donde trabaj como profesor adjunto hasta 1997,
llegando a ser Professor Emeritus.
Fue fundador y presidente de la Association for Computing Machinery.
Muri en Monterey, California el 7 de enero de 1998.

5. CDIGO HAMMING

Es un cdigo que se utiliza en la deteccin y correccin de errores que se


producen en la transmisin de cdigos binarios, la palabra de cdigo se conforma
por los bits de comprobacin y los bits de informacin.
5.1. CONCEPTOS BSICOS:
Para poder continuar con el desarrollo del cdigo es necesario tener en cuenta
algunas generalidades y conceptos bsicos:

Cdigo binario: Es una representacin unvoca de las cantidades, de tal forma


que a cada una de stas se le asigna una combinacin de smbolos binarios.
Distancia entre dos combinaciones binarias: Viene dada por el nmero de bits
que hay que cambiar en una de ellas para obtener la otra.
Distancia mnima de un cdigo: Es la menor de las distancias entre dos
combinaciones binarias cualesquiera pertenecientes a dicho cdigo.

5.2. DISTANCIA DE HAMMING


El cdigo Hamming se genera a partir de una distancia mnima de 3, ya que una
distancia de 1 o 2 es inconveniente para poder generar un cdigo para detectar un
error.
La distancia mnima de Hamming est dada por la siguiente ecuacin:
Dm= 2X+1
Donde Dm es la distancia mnima de un cdigo para permitir la correccin de datos
y X es las lneas de datos.
Si se tuviese una distancia de 1 no tendramos valores para saber si hay o no un
error.
Si se tienen una distancia de 2 se podra lograr un sistema de correccin de error
con un bit de paridad pero el problema que esto lleva es que un sistema con
distancia 2 puede tener datos errneos que pueden pasar como datos correctos.

Con la distancia de 3 se tiene que los cdigos no van a tener datos o resultados
similares por ende se puede detectar el error y se puede desarrollar un sistema
para su correccin como el Hamming
5.3. VARIABLES PARA GENERACIN HAMMING
Para la generacin del cdigo Hamming se deben tener en cuenta tres variables
que mencionaremos a continuacin:
n: nmero de bits del cdigo original que se pretende transmitir.
p: nmero de bits de paridad par generados en el transmisor, o sea, nmero de
lneas que aadimos al cdigo inicial.
c: nmero de bits detectores de paridad par generados por el receptor.
El valor de p = c, ya que los bits de paridad generados tanto en el transmisor
como en el receptor debe ser la misma.
El nmero de combinaciones que se pueden formar con los c bits detectores de
paridad tiene que ser mayor o igual que el nmero de lneas del cdigo original (n)
ms el nmero de lneas de paridad aadidas (p) ms uno, este ltimo para
contemplar el caso de no error.

Esta ecuacin nos muestra que existen unas combinaciones, estas no pueden ser
asignadas de forma aleatoria a un evento, para asignar estas combinaciones a un
evento especfico este debe estar en uno de los tres grupos diferenciados.
1. Combinacin asignada a la situacin en que no haya error en la transmisin.
2. Combinaciones asignadas a los bits de paridad generados en el transmisor.
3. Combinaciones asignadas a los bits de datos del cdigo original.
Podemos tener un manejo de esta ecuacin para poder obtener la cantidad
mnima de bits de informacin que nosotros podemos enviar.

Si se despeja n
Teniendo en cuenta que p =c
Si contamos con los valores de bits de paridad podemos encontrar los bits de
informacin que se pueden manejar.
Para obtener el nmero de bits total de la cadena del mensaje (s) se debe
realizar la siguiente operacin:

Ejercicio 1:
Si deseo enviar un nibble cuantos bits de paridad necesito para enviar el mensaje
y poderlo corregir si existe un error.
Nibble = 4 bits
Si c = 3 entonces

n=4
Con 3 bits de paridad podramos manejar y codificar un nibble de informacin.
5.4. GENERACIN DEL CDIGO DE HAMMING

El cdigo Hamming plantea la generacin de una tabla para poder asignar los
valores de las posibles combinaciones que generen los bits de paridad.
A continuacin manejaremos un cdigo ASCII de 7 bits

Si se tienen 7 bits de informacin se necesitan entonces que c = 4, esto nos


conlleva a que se generan 2c combinaciones y es igual a 24 = 16 combinaciones a
continuacin se establece una tabla de 16 combinaciones con un rango de 0 a 15

#b

Combinaciones

b0
b1
b2
b3
b4
b5
b6
b7
b8
b9
b10

0
1
2
3
4
5
6
7
8
9
10

0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010

b11
b12

11
12

1011
1100

b13

13

1101

b14

14

1110

b15

15

1111

# DE
"1"
2^3 2^2 2^1 2^0 CORRESPONDENCIA
SITUACION DE NO
0
0
0
0
0 ERROR
1
0
0
0
1 BIT DE PARIDAD "1"
1
0
0
1
0 BIT DE PARIDAD "2"
2
0
0
1
1 DATO 1
1
0
1
0
0 BIT DE PARIDAD "3"
2
0
1
0
1 DATO2
2
0
1
1
0 DATO 3
3
0
1
1
1 DATO 4
1
1
0
0
0 BIT DE PARIDAD "4"
2
1
0
0
1 DATO 5
2
1
0
1
0 DATO 6
NO SE USA EN EL
3
1
0
1
1 EJEMPLO
2
1
1
0
0 DATO 7
NO SE USA EN EL
3
1
1
0
1 EJEMPLO
NO SE USA EN EL
3
1
1
1
0 EJEMPLO
NO SE USA EN EL
3
1
1
1
1 EJEMPLO

TABLA 1. Generacin cdigo Hamming.

Para la asignacin de los eventos se realiza lo siguiente:


1. Contar Nmero de unos en las combinaciones
2. Si el nmero de unos es cero es una situacin de no error y no se utiliza para
enviar dato.

3. Si el nmero de unos es 1, debemos empezar a organizar los bits de paridad


desde el primero hasta el ltimo y darles su respectiva asignacin.
4. Si el nmero de unos es 2 en estos deben colocarse para los datos, si las
combinaciones de 2 unos no son suficientes para los datos debemos empezar
con los de 3 y luego los de 4 as sucesivamente, se prefiere que se coloquen
los datos primero en los grupos de 2.
5. Si no se tienen ms datos esas lneas no son vlidas y se omiten en el sistema
de verificacin.
Los bits de paridad b1, b2, b4, b8, no tienen un valor fijo este valor se encuentra
por las siguientes relaciones:
b1 = b3 b5 b7 b9 b11 b13 b15;
b2 = b3 b6 b7 b10 b11 b14 b15;
b4 = b5 b6 b7 b12 b13 b14 b15;
b8 = b9 b10 b11 b12 b13 b14 b15;
Esto se debe a que los bits de paridad se conforman de las combinaciones en
donde el bit de paridad es uno, por ejemplo el bit1 es el bit de paridad para las
combinaciones impares, se conforman de las combinaciones impares b3, b5, b7,
b9, b11, b13, b15.
A continuacin se muestra una tabla para ver cmo se realiza la operacin de
EXOR

En la tabla se organizan y se suma para obtener los valores de b1, b2, b4, b8.

#b
b1
b2
b3
b4
b5
b6
b7
b8
b9
b10
b11
b12
b13
b14
b15

b1
b2
d1
b4
d2
d3
d4
b8
d5
d6
d7

2^3 2^2 2^1 2^0


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

b8 b4 b2 b1
0
0
1
0
0
0
1
1
0
0
1

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

1
0

0
1

1
0

0
0
1
0
0
0
0

0
0

0
0
0

0
0

Tabla 2. Coeficientes de paridad.


Terminada la tabla se procede a enviar el dato o la trama de datos
La cual sera
00100011000100
Los datos que no se utilizan por lo general se envan en cero.
Para saber si existe un error en la transmisin o si el mensaje de transmiti
correctamente se deber realizar una comprobacin del sistema para esto se
realiza con una codificacin de los componentes c1, c2, c3, c4 de la siguiente
manera:
c1 = b1 b3 b5 b7 b9 b11 b13 b15;
c2 = b2 b3 b6 b7 b10 b11 b14 b15;
c3 = b4 b5 b6 b7 b12 b13 b14 b15;

c4 = b8 b9 b10 b11 b12 b13 b14 b15;


Los resultados que vemos aqu son calculados con los datos que llegan al
receptor, si los datos de c1, c2, c3, c4 nos dan cero en todos el mensaje se
transmiti sin error pero si uno o varios de estos elementos se convierten en 1
quiere decir que hay un error, por ejemplo si el resultado de los indicadores ci son:
c1 = 0, c2=1, c3=1, c4=0, esto quiere decir que hay un error en la combinacin b6
por ende si hay un uno en esta posicin quiere decir que el verdadero valor es
cero, entonces podemos cambiar el valor de este y corregir de esta manera el
error presentado.
5.5. EL SNDROME Y DETECCIN SISTEMTICA DEL CDIGO DE HAMMING.
Para el ejemplo anterior del cdigo ASCII se tienen 7 bits de informacin para
transmitir, se observa el mismo dato que se enva en la tabla a en la tabla b se
encuentra el dato recibido con un error
DATOS TX
#b
b1
b2
b3
b4
b5
b6
b7
b8
b9
b10
b11
b12
b13
b14
b15

DATOS RX

b8 b4 b2 b1
b1
b2
d1
b4
d2
d3
d4
b8
d5
d6

0
0
1
0
0
0
1
1
0
0

d7 1

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

1
0

0
1

1
0

0
0
1
0
0
0
0

b8 b4 b2 b1
b1
b2
d1
b4
d2
d3
d4
b8
d5
d6

1
1
1
1
0
0
0
1
0
0

0
d7 1
0

0
0
0

0
0

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

1
0

0
0

0
0

0
0
1
0
0
0
1

0
0

0
0
1

0
1

Tabla 3. Ejemplo trama de datos enviados y se recibe una trama con el dato 4
errneo o bit 7.

Como se observa en la recepcin hay un valor diferente de los datos transmitidos,


si se realizan los valores de b1, b2, b4, b8, son distintos en ambos lados, ahora si
se comparan con los valores de c1 c2, c3, c4 se obtiene que:

bloque
1 recibido

par

par

bloque
0 enviado

0
1
1
1
7
2^3 2^2 2^1 2^0 #b dato daado
Tabla 4. Deteccin del nmero del bit daado.
En la figura se suman los valores de bits de paridad encontrados en el receptor
con los valores de paridad envidados, se debe realizar una operacin EXOR uno a
uno y el resultado que se obtiene son los valores de c1, c2, c3, c4, como vemos el
resultado es 0111 si esto se pasa a decimal es 7 si vemos en la tabla del ejemplo
el dato que se encuentra errneo se encuentra en la combinacin 7 la cual es la
asignada al dato 4.
El sndrome
Al clculo que se realiz anteriormente de sumar cada bit de paridad en el
receptor se le denomina Sndrome, el sndrome se desarrolla bit a bit y se suma
con una funcin EXOR en mdulo 2.

5.6. DETECCIN Y EFICIENCIA SOBRE CANAL


Si m es igual a la distancia mnima de un cdigo Haming podemos determinar que
el factor de deteccin y correccin de un cdigo depende de:

Adems si
n = nmero de bits de la cadena de salida
k = nmero de bits de informacin
La eficiencia sobre el canal de transmisin ser la siguiente:
n/k
Con estos datos se puede obtener la siguiente tabla

Tabla 5. Tabla de eficiencia, tomada del trabajo de Hamming desarrollado por:


Luis Gabriel Clavijo Castro, Vivian Andrea Garcia Balaguera

Como vemos si la distancia de Hamming aumenta la longitud de la informacin


aumenta pero los bits de informacin de correccin sern menores que los de
deteccin , pero si vemos bien la tabla con una distancia de Hamming 3 la
longitud total del paquete son 7 y se transportan 4 bits de informacin, los otros
son de correccin, ahora si vemos el 10 la longitud total seran 1023 se
transportan 1013 bits de informacin y el restante que son solo 10 bits se utilizan
para la deteccin y la correccin como vemos este es un proceso mucho ms
eficiente ya que podemos transportar 1013 bits de informacin procesando solo 10
bits de deteccin y correccin, esto permite que los procesos de transporte de
datos se optimicen logrando tasas porcentuales realmente altas.

6. EXTENSIN DEL CDIGO DE HAMMING.

La extensin del cdigo Hamming plantea ingresar a la tabla un nmero adicional


con el propsito de encontrar ms de un bit daado, esto lo logra mediante el
desarrollo de matrices estas matrices se computan para poder detectar y corregir
un bit daado e informar cuando hay dos o ms bit daados en el proceso. El
proceso matricial es como lo desarrollara realmente un sistema de cmputo.
Como se mencion el cdigo Hamming extendido aade un smbolo adicional que
computa todos los anteriores smbolos de la palabra de cdigo, este tiene una
distancia de Hamming de 4, con esto se logra detectar todos los errores dobles y
al mismo tiempo se corrigen todos los errores individuales. La decodificacin se
realiza as:
Si el ltimo dgito del sndrome es 2, entonces el nmero de errores debe ser
impar. La correccin se realizara de la manera habitual.
Si el ltimo dgito del sndrome es 0, pero el sndrome no es todo ceros, no hay
correccin posible, porque se ha producido ms de un error, pero los errores
dobles son detectados.

7. TAREA

Encontrar los valores de los bits de paridad para los siguientes datos:
Dato a transmitir: 1100110011
Dato a transmitir: 1001110110
Dato a transmitir: 1010100011
Si el sndrome que se obtuvo en el dato de transmisin es:

bloque
1 enviado

par

Y el sndrome que se recibe en el receptor es:

bloque
0 recibido

En que bit se present el dao de la informacin

par

8. CONCLUSIONES

La integracin de cdigo redundante permite realizar la correccin en cierta


medida de los errores presentados en la transmisin; sin embargo hace menos
eficiente el proceso de codificacin, por lo cual se deber lograr un equilibrio
entre codificacin redundante y eficiente dadas las caractersticas del canal.

Aunque los parmetros de los cdigos AG son mejores que los clsicos para
cdigos de longitud arbitrariamente grande, las aplicaciones tcnicas no se han
visto an en la necesidad prctica de sustituir los cdigos que actualmente se
utilizan por otros de mayor longitud sin que se dispare simultneamente el
coste y la tasa de error.

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, de tal forma que una alteracin en
cualquiera de esos bits de datos pueda ser detectada y corregida
adecuadamente.

La distancia Hamming permite establecer el nmero de bits errneos que


pueden ser corregidos detectados mediante las formulas:

Deteccin= (m-1)
Correccin= (m-1)/2

El sndrome es una operacin que relaciona los bits de paridad por medio de
una funcin EXOR bit a bit, si este resultado es 0 en cada bit de paridad no
indica que el paquete de datos llego sin errores pero si nos indica un error o un
1 nos debe indicar el lugar donde se presenta dicho problema.

Para entender de una manera ms sencilla la elaboracin del cdigo se


utilizaron tablas pero por lo general se utilizan matrices y relaciones entre ellas
para poder lograr relaciones cruzadas y obtener los valores de bits de paridad.

El sistema de cdigos Haming es muy utilizado en elementos como memorias


y en comunicaciones en las tramas de Wifi.

9. BIBLIOGRAFA

Comunicaciones y Redes de Procesamiento de Datos. Nestor Gonzles Sainz.


Ed Mac Graw . 1987.
Wikipedia.[online]. Algoritmos de Cdigo de Redundancia Cclica.
<http://es.wikipedia.org/wiki/Algoritmo_de_los_C%C3%B3digos_de_Redundan
cia_C%C3%ADclica>
Tio
Petros.
[online].
Aritmtica
Modular.
<http://tiopetrus.blogia.com/2005/060401-aritmetica-modular-4-.php>
Cdigos Detectores y Correctores de Errores. Cdigos de Redundancia
Cclica. < http://www.argo.es/~jcea/pics/artic/ecc-crc.htm>
MODIANO, Eytan. [online]. La capa de enlace de Datos: Entramado y
Deteccin de Errores< http://mit.ocw.universia.net>.
Demeter. Codificacin de Seales. Ver. 1.1. 2 de Diciembre de 2003
knabe@ing.puc.cl. Apuntes de IIC 3512 -- El nivel de enlace. Dic. 1996.
<http://www.cs.virginia.edu/~knabe/iic3512/apuntes_4.html>
Cdigos Lineales. http://jungla.dit.upm.es/~trdt/apuntes

También podría gustarte