DOI:
https://doi.org/10.14483/2322939X.4271Publicado:
2012-12-02Número:
Vol. 9 Núm. 2 (2012)Sección:
ArtículosDETECCIÓN Y CORRECCIÓN DE ERRORES MEDIANTE EL CÓDIGO HAMMING
Palabras clave:
Hamming, detección de errores, corrección de errores, transmisión de información, codificación de canal. (es).Descargas
Referencias
A. S. Tanenbaum, Redes de computadores. Ámsterdam: Pearson, 2003.
A. Llano Palacios, Codificación Hamming. Barcelona: McGraw-Hill, 2000.
W. Tomasi, Sistemas de comunicaciones electrónicas. Phoenix: Pearson, 2003.
S. Mckinley, The Hamming Codes and Delsarte’s Linear Programming Bound (tesis de maestría). Poland State University, 2003.
E. Aldabas, M. Corbalán y J. Cisa. Introducción a los Códigos de Hamming. XII Jornades de Conferències JCEE’06, Escola Universitària de Enginyeria Tècnica Industrial de Terrassa, EUETIT “L’Escola Industrial”. Barcelona: Universitat Politècnica de Catalunya, 2006.
Cómo citar
IEEE
ACM
ACS
APA
ABNT
Chicago
Harvard
MLA
Turabian
Vancouver
Descargar cita
Visitas
Descargas
DETECCION Y CORRECCION DE ERRORES MEDIANTE EL CODIGO HAMMING
ERROR DETECTION AND CORRECTION USING HAMMING
Héctor Arturo Flórez Fernández
Ingeniero electrónico e ingeniero de sistemas, Universidad El Bosque. Magíster en Ciencias de la Información y las Comunicaciones, Universidad Distrital Francisco José de Caldas. Especialista en Alta Gerencia y magíster en Gestión de Organizaciones, Universidad Militar Nueva Granada. Estudiante de doctorado en Ingeniería, Universidad de los Andes. Docente Universidad Distrital Francisco José de Caldas. hectorarturo@yahoo.com
Norberto Novoa Torres
Ingeniero de sistemas, Universidad Distrital Francisco José de Caldas. Magíster en Ciencias de la Educación con énfasis en Informática Educativa y especialista en Gerencia Educativa, Universidad Libre. Docente Universidad Distrital Francisco José de Caldas. Correo electrónico: nnovoat@gmail.com
Resumen
En un proceso de transmisión de datos digitales existe la posibilidad de pérdida de información debido a circunstancias como disipación de niveles de energía, efectos magnéticos externos sobre el canal de datos, deficiencias de acoplamiento entre terminales de los canales de datos, entre otros. En el caso de que un receptor reciba información incorrecta, debe realizarse un proceso de retransmisión de la información. Este proceso de retransmisión, generalmente, no es muy apropiado debido a que genera uso adicional del canal de datos, lo cual conlleva otros inconvenientes. En el presente artículo se muestra una técnica que permite la detección de errores y la corrección respectiva. Esta técnica requiere incorporar metainformación a los datos para poder identificar los errores. Sin embargo, el tamaño de la metainformación no es proporcional al tamaño del mensaje, lo que indica que un mensaje muy grande tiene una metainformación relativamente pequeña.
Palabras Clave:
Hamming, detección de errores, corrección de errores, transmisión de información, codificación de canal.
Abstract:
In a process of digital data transmission, there is the possibility of permanent loss of information due to different circumstances such us dissipation levels energy, external magnetic effects on the data channel, poor coupling between terminals of the data channels, among others. In the event that a recipient receives incorrect information, it should make a process of relaying information. This relay process is generally not very suitable because it generates additional use of the data channel which leads to other problems. This article shows a technique that allows detection of errors and based on it allows the correction of errors detected. This technique requires adding meta information to data to identify errors. However, the size of the meta information is not proportional to the size of the message, indicating that a very large message has relatively small meta information.
Key words
Hamming, error detection, error correction, information transmission, channels coding.
1. Introducción
En el proceso de transmisión de la información se puede presentar distorsión sobre las señales que llevan esa información, lo cual da origen a múltiples errores [1]. Estas distorsiones en muchos casos se generan por variables externas en el medio de comunicación. Entonces, debido a que estas señales son alteradas en dicho proceso, existe la posibilidad de que la información en el receptor sea diferente a la información en el transmisor. Este problema se soluciona mediante la aplicación de diferentes algoritmos, en los cuales la clave es adicionar redundancia a la cadena de transmisión que permita analizar los datos en dicha cadena [2].
Los diseñadores de redes han desarrollado dos estrategias básicas para manejar los errores. Una es dividir la cadena de datos en bloques e incluir suficiente información redundante en cada bloque de datos transmitido, para que el receptor, a partir de lo anterior, pueda deducir la información transmitida. La otra estrategia es incluir suficiente redundancia para que el receptor pueda determinar que ha ocurrido un error y entonces solicite una retransmisión. Así, la capacidad del código de detectar y corregir errores está determinada por la cantidad de símbolos redundantes [1], [3].
2. Detección de errores
Para detectar un error, en el caso de un código binario, se debe agregar un símbolo binario (0 o 1) a cada cadena de datos de K símbolos de información, de forma que la cantidad total de unos en la cadena codificada sea par, es decir, que la cadena tenga paridad par. La distorsión de algún símbolo traslada la palabra codificada permisible al conjunto de las palabras prohibidas, lo que se detecta en el extremo receptor, debido a la cantidad impar de unos [1], [2], [4].
Las propiedades de detección y corrección de errores de un código dependen de su distancia de Hamming. Esta representa la cantidad de símbolos en los que una cadena de datos se diferencia de otra cadena y se simboliza con la letra “d”. Para determinar la cantidad de bits diferentes, en el caso de una cadena binaria, basta aplicar una operación OR exclusivo a las dos cadenas y contar la cantidad de bits 1 en el resultado; por ejemplo:
En el caso anterior se muestra que la distancia de Hamming es d=3 y la longitud de la cadena de datos es N=8.
La manera de saber si una cadena recibida tiene errores es identificando si dicha cadena es un código permisible. Entonces, si se tiene un código con longitud N=3, indica que se tiene el siguiente código binario:
Del código anterior se puede aplicar una distancia d=2; esto indica que el código anterior se divide en un código permisible y un código prohibido.
El decodificador después de la recepción puede realizarse de forma que la palabra codificada recibida se identifique con la palabra permisible que se encuentre con ella. Si el receptor encuentra que el código que llegó es una palabra prohibida, detecta que hubo un error y pide retransmisión [5].
3. Interpretación geométrica de los códigos correctores
Cualquier palabra codificada binaria de n posiciones puede ser interpretada como el vértice de una figura geométrica n-dimensional con una longitud de arista unitaria. Para N=2, las palabras codificadas se ubican en los vértices de un cuadrado. Para N=3, las palabras codificadas se ubican en los vértices de un cubo unitario. Para N=4, las palabras codificadas se ubican en los vértices de un cubo tetradimensional (figura 1).
En general, el cubo unitario n-dimensional tiene 2n vértices que es igual a la mayor cantidad posible de palabras del código. Este código brinda una interpretación geométrica sencilla a la distancia entre diferentes palabras del código, que corresponde a la menor cantidad de aristas del cubo unitario por las que es necesario pasar para ir de una palabra a otra.
4. Corrección de errores
Hamming es un método de codificación en el que la información se toma por bloques a los que se les añaden bits redundantes [4]. La cantidad de bits redundantes depende de la siguiente fórmula establecida por Hamming:
N=2k-1
donde N es el número total de bits por transmitir, k es el número de bits de redundancia y k-N el número de bits de datos. Entonces, de acuerdo con lo anterior, se tienen las siguientes combinaciones de códigos:
(7,4): indica que se transmiten bloques de 7 bits donde 4 son de datos y 3 de redundancia.
(15,11): indica que se transmiten bloques de 15 bits donde 11 son de datos y 4 de redundancia.
(31,26): indica que se transmiten bloques de 31 bits donde 26 son de datos y 5 de redundancia.
Suponiendo que se desea trabajar con el código (7,4), la información que se desea enviar son 4 bits (D0, D1, D2, D3), a los que se añaden 3 bits redundantes. Hamming define una matriz generadora la cual está conformada por la matriz identidad I y por la matriz de Hamming H que tiene las siguientes características:
- Cada fila de la matriz debe tener paridad par.
- Cada columna de la matriz debe tener la cantidad de unos mayor que la de ceros.
Con esta matriz se puede generar la palabra de código a transmitir, ya que esta palabra es un vector resultante de la multiplicación de la matriz generadora transpuesta y el vector de código de datos (D0, D1, D2, D3).
donde (P0, P1, P2) son los bits de redundancia. Estos bits se calculan mediante la OR exclusiva de los bits a la que corresponden como se indica en la matriz anterior.
La ubicación de cada uno de estos bits corresponde a una potencia de 2:
- P0 = 20 = 1
- P1 = 21 = 2
- P2 = 22 = 4
Entonces, si se desea transmitir el código 1000, los bits de redundancia serán:
- P0 =D1 +D2 +D3 = 0+0+0 = 0
- P1 =D0 +D2 +D3 = 1+0+0 = 1
- P2 =D0 +D1 +D3 = 1+0+0 = 1
Lo cual da como resultado la siguiente cadena por transmitir:
En el receptor se debe construir la siguiente matriz y realizar la OR exclusiva entre los bits de las columnas:
Si se recibe correctamente la información transmitida, la matriz queda construida de la siguiente manera:
El código resultante fue 000, lo cual indica que el código recibido no tuvo errores. Si se tiene el siguiente código transmitido y recibido:
Se construye la siguiente matriz:
El código resultante es 011, lo que indica que el tercer bit de la cadena de recepción tuvo un error. Entonces el receptor corrige dicho bit y forma la cadena correcta.
El bloque de datos recibido después de la decodificación es:
Ahora, si se tiene el siguiente código transmitido y recibido:
Se construye la siguiente matriz:
El código resultante es 101, lo que indica que el quinto bit de la cadena de recepción tuvo un error.
El bloque de datos recibido después de la decodificación es:
5. Conclusiones
- En un sistema de transmisión de datos la información es muy vulnerable y propensa a errores. Los métodos de detección de errores permiten conocer si hubo o no un error en la cadena de datos recibidos, pero no están en condiciones de subsanar dichos errores. Entonces, cuando se detecta un error por medio de un método de detección de errores, la manera de reparar la información es que el receptor pida una retransmisión de la información.
- Por medio del código de corrección de errores de Hamming es posible no solo detectar, sino también enmendar los errores ocurridos sobre la cadena de información en el receptor. La detección y corrección de errores en un sistema de transmisión de información depende de la inclusión de redundancia sobre la cadena de transmisión, es decir, a los datos se les añade información que permite dar una pequeña descripción de los mismos datos. La cantidad de errores a detectar o corregir en un sistema con código de Hamming depende de la distancia de Hamming “d”.
6. Referencias
[1] A. S. Tanenbaum, Redes de computadores. Ámsterdam: Pearson, 2003.
[2] A. Llano Palacios, Codificación Hamming. Barcelona: McGraw-Hill, 2000.
[3] W. Tomasi, Sistemas de comunicaciones electrónicas. Phoenix: Pearson, 2003.
[4] S. Mckinley, The Hamming Codes and Delsarte’s Linear Programming Bound (tesis de maestría). Poland State University, 2003.
[5] E. Aldabas, M. Corbalán y J. Cisa. Introducción a los Códigos de Hamming. XII Jornades de Conferències JCEE’06, Escola Universitària de Enginyeria Tècnica Industrial de Terrassa, EUETIT “L’Escola Industrial”. Barcelona: Universitat Politècnica de Catalunya, 2006.