103 Introducción a los Códigos de Hamming Emiliano Aldabas, Montserrat Corbalán y José María Cisa XII Jornades de Conferències JCEE’06 Escola Universitària de Enginyeria Tècnica Industrial de Terrassa, EUETIT “L’Escola Industrial” Colom,1 08222 TERRASSA Barcelona Universitat Politècnica de Catalunya (UPC) Resumen En el presente trabajo se presenta una introducción al algoritmo publicado por el profesor Richard Wesley Hamming en 1950 para detectar y corregir un bit erróneo dentro de una palabra binaria de datos. En primer lugar se definen los conceptos previos necesarios para comprender el alcance del problema, a continuación se describe paso a paso la forma en que trabajan los ya denominados códigos de Hamming. Para finalizar se comentan unos ejemplos prácticos de su aplicación. 1. Introducción En el año 1950, el profesor Richard W. Hamming [1] publicó un artículo sobre detección y corrección de errores [2]. Este trabajo supuso el comienzo de una nueva área de investigación dentro de la teoría de la información. Actualmente, los códigos de Hamming son fundamentales en la teoría de la codificación y tienen una gran cantidad de aplicaciones prácticas. En concreto, los códigos correctores de errores tienen un papel esencial en la vida cotidiana y son usados por modems, memorias e incluso en comunicaciones vía satélite. La teoría de los códigos de Hamming es madura, difícil y con una orientación matemática. Sin embargo, hay multitud de artículos y libros que tratan este tema [3]-[8]. En cualquier caso, en los cursos de electrónica digital básica es difícil encontrar los códigos de Hamming [5] por falta de tiempo y porque es necesario introducir al alumno en conceptos más elementales que son ineludibles. Con el uso generalizado de internet, los alumnos tienen una importante fuente de información, y los códigos de Hamming no son una excepción. En cualquier caso, el presente trabajo pretende animar a los estudiantes de electrónica digital a que se introduzcan en este fascinante tema, y si ya lo conocen, a que vean en él alguna nueva faceta que les pasó desapercibida cuando lo estudiaron por primera vez. Antes de comenzar el razonamiento para describir los códigos de Hamming es necesario tener presente las siguientes definiciones: 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. En base a estas definiciones se concluye que un código binario debe tener al menos la distancia mínima igual a 1 para garantizar que una combinación no represente a varias cantidades o valores. Los códigos son continuos cuando las combinaciones correspondientes a números decimales consecutivos difieren solamente en un bit. En el caso de que también se cumpla que la última combinación sea adyacente a al primera se está ante los códigos cíclicos. Los códigos ponderados asignan a cada bit un valor o peso en función del lugar que ocupan. Los códigos de Hamming usan puertas XOR para tres tareas diferentes: generador de paridad par, inversor programable y detector de paridad par (figura 1).