Código de Hamming

4,486 views
4,462 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,486
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
125
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Código de Hamming

  1. 1. CÓDIGO DE HAMMING PARA DETECCIÓN Y CORRECCIÓN DE ERRORES ALVARO HUMBERTO CISNEROS ROSERO DANIEL SEPÚLVEDA NÚÑEZ INFORMACIÓN Y CODIFICACIÓN UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD DE INGENIERÍAMAESTRÍA EN CIENCIAS DE LA INFORMACIÓN Y LAS COMUNICACIONES BOGOTÁ 2012
  2. 2. TABLA DE CONTENIDOINTRODUCCIÓN 21. OBJETIVOS 31.1 GENERAL 31.2 ESPECÍFICOS 32. TÉCNICAS DE DETECCIÓN DE ERRORES 43. TÉCNICAS DE CORRECCIÓN DE ERRORES 54. RICHARD WESLEY HAMMING 65. CÓDIGO HAMMING 75.1. CONCEPTOS BÁSICOS 75.2. DISTANCIA DE HAMMING 75.3 VARIABLES PARA GENERACIÓN HAMMING 85.4. GENERACIÓN DEL CÓDIGO DE HAMMING 95.5. EL SÍNDROME Y DETECCIÓN SISTEMÁTICA DEL CÓDIGO DE 13HAMMING.5.6. DETECCIÓN Y EFICIENCIA SOBRE CANAL 156. EXTENSIÓN DEL CÓDIGO DE HAMMING. 177. TAREA 188. CONCLUSIONES 199. BIBLIOGRAFÍA 20
  3. 3. INTRODUCCIÓNDesde que Claude Shanon desarrollo su teoría de la información, la transmisiónde la información digital presenta un reto constante para los ingenieros decomunicaciones, puesto que los medios de transmisión pueden corromper y dañarlos datos, por ende es necesario crear un métodos que permitan detectar errores ymejor aún corregirlos, uno de estos métodos es el método de Hamming,desarrollado por Richard Wesley Hamming, este método será el pilar desarrolladoen este trabajo, pero para entender de una forma más concisa es necesarioconocer técnicas de corrección y detección de errores que las veremos en loscapítulos 2 y 3, veremos una breve historia sobre Richard Hamming que semuestra en el capítulo 4 y el capítulo 5 se desarrolla el código Hamming y unmétodo para lograr una mejor comprensión.El código Hamming permite detección y corrección de los datos enviados por uncanal susceptible a ruido, esté método se utiliza en canales donde la retransmisiónde un mensaje puede congestionar el canal, este método se utiliza comúnmenteen redes de Wi –Fi para la transmisión de mensajes, su estudio nos mostrarácomo detecta y corrige errores de un bit y como puede ser escalado para quedetecte más errores mejorando la eficiencia en el canal.
  4. 4. 1. OBJETIVOS1.1 GENERAL Estudiar y comprender los aspectos relacionados con el código Hamming.1.2 ESPECÍFICOSConocer las técnicas fundamentales para la detección y la corrección de erroresrelacionados con el código Hamming.Examinar y analizar el método de Hamming para la corrección y su posteriorcorrección de errores.Determinar un sistema para el análisis y comprensión del código Hamming.Indagar sobre sistemas de mayor complejidad como el método de HammingExtendido.Relacionar la eficiencia del código Hamming frente al aprovechamiento del canalde transmisión.
  5. 5. 2. TÉCNICAS DE DETECCIÓN DE ERRORESCódigos VRC (Vertical Redundancy Check).En esta técnica, un bit redundante, denominado bit de paridad, se añade al final decada bloque de datos.Código LRC (Longitudinal Redundancy Check).Esta técnica consiste en VRC de dos dimensiones, se agrupa un determinadonúmero de unidades de datos en un bloque, cada uno con su bit VRCcorrespondiente. Se calcula el bit de paridad entre cada bit de todas y cada una delas unidades de datos (primeros bits, segundos, etc.). Se reúnen los bits deparidad de todas las posiciones en una nueva unidad de datos y se añade al finaldel bloque.Comprobación de redundancia cíclica (CRC).Dado un bloque o mensaje de k bits, el transmisor genera una secuencia de n bits,denominada secuencia de comprobación de trama (FCS Frame Check Sequence),la trama resultante, de n + k bits sea divisible por algún número predeterminado(patrón de bits). El receptor dividirá la trama recibida por el mismo patrón de bits y,si el resto en la división (resto 0), indica que la transmisión ha sido correcta, sinerror.
  6. 6. 3. TÉCNICAS DE CORRECCIÓN DE ERRORESRequerimiento automático de repetición (ARQ)Pare y espere ( stop and wait ARQ ): Cuando el receptor recibe una trama procedea validarla, si no contiene errores envía una señal de confirmación hacia el emisorACK (acknowledge). Si hay error envía una señal de recepción errónea llamadaNAK (negative acknowledge).Envío continuo ( Continuos ARQ ): Presenta el inconveniente de reducir el tiempode utilización efectiva de los canales de comunicación dado que cada mensajedebe ser confirmado individualmente y todo se paraliza hasta que ello ocurre.Corrección de errores hacia adelante (FEC)Códigos de bloque: Un código de bloques convierte k bits de entrada en n bits desalida con n>k, este es un código sin memoria.Códigos de árbol: Un código de árbol es producido por un codificador conmemoria, a este grupo pertenecen los códigos convolucionales, los cuales tienencomo característica que a cada bit de una secuencia se le aplica una operaciónbinaria especifica.
  7. 7. 4. RICHARD WESLEY HAMMINGMatemático estadounidense de gran importancia en el área de la informática y delas telecomunicaciones, nació en Chicago, Illinois, el 11 de febrero de 1915.Estudio su licenciatura en la Universidad de Chicago en 1937, en 1939 realiza unmaster en la Universidad de Nebraska y se doctoró en la Universidad Urbana-Champaign de Illinois en 1942.Mientras se desarrollaba la Segunda Guerra Mundial, fue profesor en laUniversidad de Louisville, trabajo que abandonaría para integrarse en 1945 en elproyecto Manhattan. Allí desarrolló su trabajo programando una de las primerascalculadoras numéricas electrónicas, para determinar la solución a algunasecuaciones proporcionadas por los físicos del proyecto. El objetivo del programaera descubrir si la detonación de una bomba atómica podría incendiar laatmósfera. Entre los años 1946-1976, trabajó en los laboratorios Bell, en dondecolaboró con Claude E. Shannon. El 23 de julio de 1976 se trasladó a la NavalPostgraduate 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.
  8. 8. 5. CÓDIGO HAMMINGEs un código que se utiliza en la detección y corrección de errores que seproducen en la transmisión de códigos binarios, la palabra de código se conformapor los bits de comprobación y los bits de información.5.1. CONCEPTOS BÁSICOS:Para poder continuar con el desarrollo del código es necesario tener en cuentaalgunas generalidades y conceptos básicos: Código binario: Es una representación unívoca de las cantidades, de tal forma que a cada una de éstas se le asigna una combinación de símbolos binarios. Distancia entre dos combinaciones binarias: Viene dada por el número de bits que hay que cambiar en una de ellas para obtener la otra. Distancia mínima de un código: Es la menor de las distancias entre dos combinaciones binarias cualesquiera pertenecientes a dicho código.5.2. DISTANCIA DE HAMMINGEl código Hamming se genera a partir de una distancia mínima de 3, ya que unadistancia de 1 o 2 es inconveniente para poder generar un código para detectar unerror.La distancia mínima de Hamming está dada por la siguiente ecuación: Dm= 2X+1Donde Dm es la distancia mínima de un código para permitir la corrección de datosy X es las líneas de datos.Si se tuviese una distancia de 1 no tendríamos valores para saber si hay o no unerror.Si se tienen una distancia de 2 se podría lograr un sistema de corrección de errorcon un bit de paridad pero el problema que esto lleva es que un sistema condistancia 2 puede tener datos erróneos que pueden pasar como datos correctos.
  9. 9. Con la distancia de 3 se tiene que los códigos no van a tener datos o resultadossimilares por ende se puede detectar el error y se puede desarrollar un sistemapara su corrección como el Hamming5.3. VARIABLES PARA GENERACIÓN HAMMINGPara la generación del código Hamming se deben tener en cuenta tres variablesque mencionaremos a continuación:n: número de bits del código original que se pretende transmitir.p: número de bits de paridad par generados en el transmisor, o sea, número delíneas que añadimos al código inicial.c: número 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 transmisorcomo en el receptor debe ser la misma.El número de combinaciones que se pueden formar con los c bits detectores deparidad tiene que ser mayor o igual que el número de líneas del código original (n)más el número de líneas de paridad añadidas (p) más uno, este último paracontemplar el caso de no error.Esta ecuación nos muestra que existen unas combinaciones, estas no pueden serasignadas de forma aleatoria a un evento, para asignar estas combinaciones a unevento específico este debe estar en uno de los tres grupos diferenciados.1. Combinación asignada a la situación en que no haya error en la transmisión.2. Combinaciones asignadas a los bits de paridad generados en el transmisor.3. Combinaciones asignadas a los bits de datos del código original.Podemos tener un manejo de esta ecuación para poder obtener la cantidadmínima de bits de información que nosotros podemos enviar.
  10. 10. Si se despeja nTeniendo en cuenta que p =cSi contamos con los valores de bits de paridad podemos encontrar los bits deinformación que se pueden manejar.Para obtener el número de bits total de la cadena del mensaje (s) se deberealizar la siguiente operación:Ejercicio 1:Si deseo enviar un nibble cuantos bits de paridad necesito para enviar el mensajey poderlo corregir si existe un error.Nibble = 4 bitsSi c = 3 entoncesn=4Con 3 bits de paridad podríamos manejar y codificar un nibble de información.5.4. GENERACIÓN DEL CÓDIGO DE HAMMINGEl código Hamming plantea la generación de una tabla para poder asignar losvalores de las posibles combinaciones que generen los bits de paridad.A continuación manejaremos un código ASCII de 7 bits
  11. 11. Si se tienen 7 bits de información se necesitan entonces que c = 4, esto nosconlleva a que se generan 2c combinaciones y es igual a 24 = 16 combinaciones acontinuación se establece una tabla de 16 combinaciones con un rango de 0 a 15 # DE #b Combinaciones "1" 2^3 2^2 2^1 2^0 CORRESPONDENCIA SITUACION DE NO b0 0 0000 0 0 0 0 0 ERROR b1 1 0001 1 0 0 0 1 BIT DE PARIDAD "1" b2 2 0010 1 0 0 1 0 BIT DE PARIDAD "2" b3 3 0011 2 0 0 1 1 DATO 1 b4 4 0100 1 0 1 0 0 BIT DE PARIDAD "3" b5 5 0101 2 0 1 0 1 DATO2 b6 6 0110 2 0 1 1 0 DATO 3 b7 7 0111 3 0 1 1 1 DATO 4 b8 8 1000 1 1 0 0 0 BIT DE PARIDAD "4" b9 9 1001 2 1 0 0 1 DATO 5 b10 10 1010 2 1 0 1 0 DATO 6 NO SE USA EN EL b11 11 1011 3 1 0 1 1 EJEMPLO b12 12 1100 2 1 1 0 0 DATO 7 NO SE USA EN EL b13 13 1101 3 1 1 0 1 EJEMPLO NO SE USA EN EL b14 14 1110 3 1 1 1 0 EJEMPLO NO SE USA EN EL b15 15 1111 3 1 1 1 1 EJEMPLOTABLA 1. Generación código Hamming.Para la asignación de los eventos se realiza lo siguiente:1. Contar Número de unos en las combinaciones2. Si el número de unos es cero es una situación de no error y no se utiliza para enviar dato.
  12. 12. 3. Si el número de unos es 1, debemos empezar a organizar los bits de paridad desde el primero hasta el último y darles su respectiva asignación.4. Si el número 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 más datos esas líneas no son válidas y se omiten en el sistema de verificación.Los bits de paridad b1, b2, b4, b8, no tienen un valor fijo este valor se encuentrapor 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 endonde el bit de paridad es uno, por ejemplo el bit1 es el bit de paridad para lascombinaciones impares, se conforman de las combinaciones impares b3, b5, b7,b9, b11, b13, b15.A continuación se muestra una tabla para ver cómo se realiza la operación deEXOR
  13. 13. En la tabla se organizan y se suma para obtener los valores de b1, b2, b4, b8. #b 2^3 2^2 2^1 2^0 b8 b4 b2 b1 b1 b1 0 0 0 1 0 b2 b2 0 0 1 0 0 b3 d1 0 0 1 1 1 1 1 b4 b4 0 1 0 0 0 b5 d2 0 1 0 1 0 0 0 b6 d3 0 1 1 0 0 0 0 b7 d4 0 1 1 1 1 1 1 1 b8 b8 1 0 0 0 1 b9 d5 1 0 0 1 0 0 0 b10 d6 1 0 1 0 0 0 0 b11 1 0 1 1 0 0 0 b12 d7 1 1 0 0 1 1 1 b13 1 1 0 1 0 0 0 b14 1 1 1 0 0 0 0 b15 1 1 1 1 0 0 0 0 1 0 0 0 Tabla 2. Coeficientes de paridad.Terminada la tabla se procede a enviar el dato o la trama de datosLa cual sería00100011000100Los datos que no se utilizan por lo general se envían en cero.Para saber si existe un error en la transmisión o si el mensaje de transmitiócorrectamente se deber realizar una comprobación del sistema para esto serealiza con una codificación de los componentes c1, c2, c3, c4 de la siguientemanera: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;
  14. 14. c4 = b8 ⊕ b9 ⊕ b10 ⊕ b11 ⊕ b12 ⊕ b13 ⊕ b14 ⊕ b15;Los resultados que vemos aquí son calculados con los datos que llegan alreceptor, si los datos de c1, c2, c3, c4 nos dan cero en todos el mensaje setransmitió sin error pero si uno o varios de estos elementos se convierten en 1quiere 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 combinación b6por ende si hay un uno en esta posición quiere decir que el verdadero valor escero, entonces podemos cambiar el valor de este y corregir de esta manera elerror presentado.5.5. EL SÍNDROME Y DETECCIÓN SISTEMÁTICA DEL CÓDIGO DE HAMMING.Para el ejemplo anterior del código ASCII se tienen 7 bits de información paratransmitir, se observa el mismo dato que se envía en la tabla a en la tabla b seencuentra el dato recibido con un error DATOS TX DATOS RX #b b8 b4 b2 b1 b8 b4 b2 b1 b1 b1 0 b1 1 b2 b2 0 b2 1 b3 d1 1 1 1 d1 1 1 1 b4 b4 0 b4 1 b5 d2 0 0 0 d2 0 0 0 b6 d3 0 0 0 d3 0 0 0 b7 d4 1 1 1 1 d4 0 0 0 0 b8 b8 1 b8 1 b9 d5 0 0 0 d5 0 0 0 b10 d6 0 0 0 d6 0 0 0 b11 0 0 0 0 0 0 b12 d7 1 1 1 d7 1 1 1 b13 0 0 0 0 0 0 b14 0 0 0 0 0 0 b15 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 Tabla 3. Ejemplo trama de datos enviados y se recibe una trama con el dato 4 erróneo o bit 7.
  15. 15. Como se observa en la recepción hay un valor diferente de los datos transmitidos,si se realizan los valores de b1, b2, b4, b8, son distintos en ambos lados, ahora sise comparan con los valores de c1 c2, c3, c4 se obtiene que: bloque par 1 1 1 1 recibido bloque par 1 0 0 0 enviado 0 1 1 1 7 2^3 2^2 2^1 2^0 #b dato dañado Tabla 4. Detección del número del bit dañado.En la figura se suman los valores de bits de paridad encontrados en el receptorcon los valores de paridad envidados, se debe realizar una operación EXOR uno auno y el resultado que se obtiene son los valores de c1, c2, c3, c4, como vemos elresultado es 0111 si esto se pasa a decimal es 7 si vemos en la tabla del ejemploel dato que se encuentra erróneo se encuentra en la combinación 7 la cual es laasignada al dato 4.El síndromeAl cálculo que se realizó anteriormente de sumar cada bit de paridad en elreceptor se le denomina Síndrome, el síndrome se desarrolla bit a bit y se sumacon una función EXOR en módulo 2.
  16. 16. 5.6. DETECCIÓN Y EFICIENCIA SOBRE CANALSi m es igual a la distancia mínima de un código Haming podemos determinar queel factor de detección y corrección de un código depende de:Además sin = número de bits de la cadena de salidak = número de bits de informaciónLa eficiencia sobre el canal de transmisión será la siguiente: n/kCon estos datos se puede obtener la siguiente tablaTabla 5. Tabla de eficiencia, tomada del trabajo de Hamming desarrollado por:Luis Gabriel Clavijo Castro, Vivian Andrea Garcia Balaguera
  17. 17. Como vemos si la distancia de Hamming aumenta la longitud de la informaciónaumenta pero los bits de información de corrección serán menores que los dedetección , pero si vemos bien la tabla con una distancia de Hamming 3 lalongitud total del paquete son 7 y se transportan 4 bits de información, los otrosson de corrección, ahora si vemos el 10 la longitud total serían 1023 setransportan 1013 bits de información y el restante que son solo 10 bits se utilizanpara la detección y la corrección como vemos este es un proceso mucho máseficiente ya que podemos transportar 1013 bits de información procesando solo 10bits de detección y corrección, esto permite que los procesos de transporte dedatos se optimicen logrando tasas porcentuales realmente altas.
  18. 18. 6. EXTENSIÓN DEL CÓDIGO DE HAMMING.La extensión del código Hamming plantea ingresar a la tabla un número adicionalcon el propósito de encontrar más de un bit dañado, esto lo logra mediante eldesarrollo de matrices estas matrices se computan para poder detectar y corregirun bit dañado e informar cuando hay dos o más bit dañados en el proceso. Elproceso matricial es como lo desarrollaría realmente un sistema de cómputo.Como se mencionó el código Hamming extendido añade un símbolo adicional quecomputa todos los anteriores símbolos de la palabra de código, este tiene unadistancia de Hamming de 4, con esto se logra detectar todos los errores dobles yal mismo tiempo se corrigen todos los errores individuales. La decodificación serealiza así:Si el último dígito del síndrome es 2, entonces el número de errores debe serimpar. La corrección se realizaría de la manera habitual.Si el último dígito del síndrome es 0, pero el síndrome no es todo ceros, no haycorrección posible, porque se ha producido más de un error, pero los erroresdobles son detectados.
  19. 19. 7. TAREAEncontrar los valores de los bits de paridad para los siguientes datos:Dato a transmitir: 1100110011Dato a transmitir: 1001110110Dato a transmitir: 1010100011Si el síndrome que se obtuvo en el dato de transmisión es: bloque par 1 1 1 1 enviadoY el síndrome que se recibe en el receptor es: bloque par 0 0 1 0 recibidoEn que bit se presentó el daño de la información
  20. 20. 8. CONCLUSIONES La integración de código redundante permite realizar la corrección en cierta medida de los errores presentados en la transmisión; sin embargo hace menos eficiente el proceso de codificación, por lo cual se deberá lograr un equilibrio entre codificación redundante y eficiente dadas las características del canal. Aunque los parámetros de los códigos AG son mejores que los clásicos para códigos de longitud arbitrariamente grande, las aplicaciones técnicas no se han visto aún en la necesidad práctica de sustituir los códigos que actualmente se utilizan por otros de mayor longitud sin que se dispare simultáneamente el coste y la tasa de error. El Código Hamming, es un sistema de detección y corrección automática de errores en información electrónica, el cual asocia una serie de bits de validación o paridad a los bits de datos, de tal forma que una alteración en cualquiera de esos bits de datos pueda ser detectada y corregida adecuadamente. La distancia Hamming permite establecer el número de bits erróneos que pueden ser corregidos ó detectados mediante las formulas: Detección= (m-1) Corrección= (m-1)/2 El síndrome es una operación que relaciona los bits de paridad por medio de una función 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 más sencilla la elaboración del código 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 códigos Haming es muy utilizado en elementos como memorias y en comunicaciones en las tramas de Wifi.
  21. 21. 9. BIBLIOGRAFÍA Comunicaciones y Redes de Procesamiento de Datos. Nestor Gonzáles Sainz. Ed Mac Graw . 1987. Wikipedia.[online]. Algoritmos de Código de Redundancia Cíclica. <http://es.wikipedia.org/wiki/Algoritmo_de_los_C%C3%B3digos_de_Redundan cia_C%C3%ADclica> Tio Petros. [online]. Aritmética Modular. <http://tiopetrus.blogia.com/2005/060401-aritmetica-modular-4-.php> Códigos Detectores y Correctores de Errores. Códigos de Redundancia Cíclica. < http://www.argo.es/~jcea/pics/artic/ecc-crc.htm> MODIANO, Eytan. [online]. La capa de enlace de Datos: Entramado y Detección de Errores< http://mit.ocw.universia.net>. Demeter. Codificación de Señales. 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> Códigos Lineales. http://jungla.dit.upm.es/~trdt/apuntes

×