Preparacin de Informes en formato IEE
DETECCIN DE ERRORES Y CDIGOS DE CORRECCINJulio David Escorza
Paredes
e-mail: [email protected] Andrs Garcs Albne-mail:
[email protected], Sexto, Universidad de las
Fueras Armadas ESPE-Extensin Latacunga, Mrquez de Maenza S/N
Latacunga, Ecuador.
Fecha de presentacin: 6 de noviembre de 2014.
RESUMEN: El presente documento tiene como finalidad definir los
cdigos de deteccin y correccin de errores de transmisin, en este
caso el cdigo CRC y el cdigo Hamming, mediante la recopilacin de
informacin especializada en el tema tomada de diferentes fuentes de
informacin. Despus del anlisis y la sntesis de la informacin, se
lleg a determinar que el cdigo CRC, siglas de cdigo de Comprobacin
de Redundancia Cclica, es un cdigo de deteccin de errores el cual
consiste en una serie de operaciones que tanto el emisor como el
receptor deben llevar a cabo para comprobar que la transmisin del
mensaje haya sido correcta. Mientras que el cdigo Hamming es un
cdigo de correccin de errores, el cual consiste en usar una
comparacin de paridad para determinar la posicin del error en el
mensaje y bajo los mismos principios de paridad se procede a
solucionar el error cambiando el dgito errneo.PALABRAS CLAVE:
cdigo, deteccin, correccin, error, bit.1 INTRODUCCIN
Cuando se quiere conectar dos o ms computadoras entre s para
transmitirse cierta informacin, es necesario conectarlas mediante
un soporte fsico de transmisin. Esta conexin puede ser local,
urbana, interurbana o internacional, y est constituida en base a un
cable de hilo, coaxial, enlace de radio, satlite, etc. Esta
variedad de medios aporta toda una diversidad de fenmenos que
dificultan la adecuada transmisin y por ende surge el llamado
error, el mismo que puede ser definido como una alteracin que
provoca que el mensaje recibido no sea una copia fiel del mensaje
transmitido. Debido a los numerosos problemas a la hora de realizar
la transmisin, es necesario utilizar tcnicas que permitan detectar
y corregir dichos errores. Estas tcnicas se basan siempre en la
idea de aadir cierta informacin redundante a la informacin que se
desea enviar. A partir de ella el receptor puede determinar, de
forma bastante fiable, si los bits recibidos corresponden realmente
a los enviados. 2 DESARROLLO2.1 TIPOS DE ERRORES
Las redes deben ser capaces de transmitir datos de un
dispositivo a otro con total exactitud, si los datos recibidos no
son idnticos a los emitidos, el sistema de comunicacin es intil.
Sin embargo, siempre que se transmiten datos de un origen a un
destino, se pueden corromper por el camino debido a numerosas
interferencias: calor, magnetismo, etc. [1]2.1.1 ERROR DE
BITnicamente un bit de una unidad de datos determinada cambia de 1
a 0 o viceversa alterando el significado del dato. [1]
Figura 1: Ilustracin del error de bit. Tomado de [2]2.1.2 ERROR
DE RAFAGAEl error de rfaga significa que dos o ms bits de la unidad
de datos han cambiado. Los errores de rfaga no significan
necesariamente que los errores se produzcan en bits consecutivos.
[1]
Figura 2: Ilustracin del error de rfaga. Tomado de [2]2.2 CDIGOS
DE DETECCIN DE ERRORES
2.2.1 CDIGO CRCEl CRC o llamado Comprobacin de Redundancia
Cclica, es un cdigo usado en la prctica para la deteccin de errores
en largas secuencias de datos. [3]La cadena de datos a ser
transmitida se la representa como un polinomio, en donde los
coeficientes del polinomio corresponden a la secuencia binaria.
El cdigo CRC Brinda ms fiabilidad y es ms fcil de implementar,
bsicamente en sus operaciones aritmticas.
Se basa en operaciones matemticas realizadas por el emisor antes
de enviar los datos para que luego el receptor realice una divisin
entre un polinomio generador que tanto el emisor como el receptor
deben conocer, si el resto es cero, la transmisin es correcta caso
contrario significar que se ha producido un error, durante la
transmisin y se puede solicitar nuevamente la retransmisin al
emisor. [4]2.2.2 ALGORITMO PARA CALCULAR EL CDIGO CRC. Conociendo
el cdigo de CRC y su longitud r y siendo de conocimiento que el
generador tiene (r+1) bits de longitud, aadimos estos r bits 0al
mensaje de envi.
Dividimos la serie de bits del mensaje para el polinomio
generador establecido.
El residuo final que se obtiene de la divisin son los bits de
valor de verificacin que irn adjuntos al mensaje de envi.
Finalmente en el destino de la transmisin se vuelve a dividir el
mensaje para el polinomio generador y si el resultado es cero el
mensaje no ha sufrido dao alguno [5].Ejemplo: La secuencia
binaria1010110001se puede representar como un polinomio, como se
muestra a continuacin.
1*X9 + 0*X8 + 1*X7 + 0*X6 + 1*X5 + 1*X4 + 0*X3 + 0*X2 + 0*X1 +
1*X0X9 + X7 + X5 + X4 + 1 Las operaciones de mdulo 2 se presentan a
continuacin:
0 + 0 = 0
0 0 = 0
0 + 1 = 1
0 1 = 1 (sin carreo)
1 + 0 = 1
1 0 = 1
1 + 1 = 0 (sin acarreo) 1 1 = 0Considerando que un polinomio
original M(x) tiene m bits, tanto emisor como receptor deben
conocer el polinomio generador G(x) de grado r, mediante el cual se
deber realizar el siguiente procedimiento:
Al polinomio original se le deber agregar ceros a su derecha en
cantidad igual a r, es decir al grado del polinomio generador,
formando un polinomio M(x) de m+r bits.
Realizamos una divisin de mdulo 2 entre el polinomio M(x) y el
polinomio generador G(x).
El residuo de la operacin anterior se lo sustrae del polinomio
M(x), mediante una resta de mdulo 2, obteniendo el polinomio a
transmitirse T(x).
Despus que T(x) se ha transmitido el emisor deber realizar la
divisin de mdulo 2 entre el polinomio recibido T(x) y el polinomio
generador G(x).
Si el residuo es cero, la transmisin ha sido correcta. Caso
contrario el receptor solicitar una retransmisin.
Los polinomios generadores ms comunes son:
CRC-12: X12+ X11+ X3+ X2+ X + 1 CRC-16: X16+ X15+ X2+ 1 CRC
CCITT V41: X16+ X12+ X5+ 1(este cdigo se utiliza en el
procedimientoHDLC)
CRC-32(Ethernet): = X32+ X26+ X23+ X22+ X16+ X12+ X11+ X10+ X8+
X7+ X5+ X4+ X2+ X + 1 CRC ARPA: X24+ X23+ X17+ X16+ X15+ X13+ X11+
X10+ X9+ X8+ X5+ X3+ 1 [6]CRC-12: Usado para transmitir flujos de 6
bits, junto a otros 12 de redundancia.
CRC-16: Para flujos de 8 bits, con 16 de redundancia. Usado en
USA, principalmente.
CRC-CCITT: Para flujos de 8 bits, con 16 de redundancia. Usado
en Europa, principalmente.
CRC-32: Da una proteccin extra sobre la que dan los CRC de 16
bits, que suelen dar la suficiente. Se emplea por el comit de
estndares de redes locales (IEEE-802) y en algunas aplicaciones del
Departamento de Defensa de USA.
Por ejemplo:
Se requiere transmitir el mensaje 110101. Siendo el polinomio
generador G(x) = x3 + 1.
Mensaje: 110101 Polinomio generador: G(x) = 1001 (r=3)
Se aaden 3 bits 0 al final del mensaje:
M(x) =110101000
Por lo tanto el polinomio trasmitido es:
T(x)= 110101011Comprobacin de TransmisinSi al realizar la
divisin de mdulo 2 entre el polinomio recibido T(x) y el polinomio
generador G(x) se obtiene un residuo equivalente a cero, entonces
la transmisin ha sido correcta. Caso contrario el receptor
solicitar una retransmisin as:
2.3 CDIGOS DE CORRECCIN DE ERRORES CODIGO DE HAMMING
Es un mtodo general propuesto por R. W Hamming que proporciona
un mtodo de correccin de un nico bit errneo. El mtodo emplea los
bits de paridad para detectar la posicin del bit errneo. [1]Permite
corregir un error en una palabra y detectar si se han producido dos
errores. En el rea prctica se implementa mediante matrices. La idea
general del cdigo de Hamming es introducir unos bits de redundancia
y distribuirlos de cierta manera a los largo de la palabra de forma
que si se producen errores se puedan corregirlos.
La nomenclatura general que se emplea es expresar el tipo de
cdigo de Hamming que se va a utilizar mediante dos nmeros entre
parntesis, los cuales expresan el nmero total de bits y el nmero de
bits de informacin.
(Nmero de bits totales, nmero de bits de informacin). Por
ejemplo:
(8,7) = 8 bits en total de los que 7 llevan informacin.
Realizando la resta de estos nmeros se pueden obtener el nmero
de paridad. En este ejemplo el nmero de paridad es 1.
2.3.1 FORMA MECNICA DE REALIZAR EL ALGORITMO DE HAMMING
Se realiza mediante una tabla en la cual por comodidad se las
posiciones y los datos en binario. El nmero final de bits est
indicado por el cdigo de Hamming concreto.
El nmero de bits de datos se designa por d, entonces el nmero de
bits de paridad se designa por p, y se determina mediante la
siguiente relacin:
2dd+p+1 (1)Es decir las posiciones potencia de 2 son bits de
paridad (20 = 1, 2, 4, 8,16), y el resto son datos.Una vez obtenido
el nmero de bits de paridad se procede a ubicarlos junto con los
bits de datos de izquierda a derecha. Los bits de paridad se los
ubica en las posiciones correspondientes a las potencias de 2 y los
bits de datos se ubican en las posiciones restantes.
Despus se procede a asignar el valor de 0 o 1 a cada bit de
paridad, para lo cual expresamos en binario el nmero
correspondiente a la posicin del bit. Por ejemplo, para un mensaje
de 7 bits se tiene 7 posiciones representadas de forma ordenada en
binario: 001, 010, 011, 100, 101, 110, y 111. Vase la Tabla 1.Tabla
1. Tabla de bits de paridad y datos.
Tomado de [9]Luego se procede a rellenar la palabra original de
datos (palabra a proteger frente a cualquier error) en los bits de
datos de izquierda a derecha.
Los bits de paridad se los obtiene de manera ordenada mediante
la siguiente manera:
Los valores de la palabra original (palabra sin paridad) a
proteger ubicadas en los bits de datos ocuparan la primera posicin
de paridad p1 si el bit menos significativo (LSB) del nmero binario
que representa la posicin del bit de dato es 1. Luego se verifica
la paridad completando con ceros o unos la paridad (p1-p1)
Los valores de la palabra original a proteger ubicadas en los
bits de datos ocuparan la segunda posicin de paridad p2 si el
segundo bit del nmero que representa la posicin del bit de dato es
1. Luego se verifica la paridad completando con ceros o unos la
paridad (p2-p2)
Los valores de la palabra original a proteger ubicadas en los
bits de datos ocuparan la segunda posicin de paridad p3 si el
tercer bit del nmero que representa la posicin del bit de dato es
1. Luego se verifica la paridad completando con ceros o unos la
paridad (p3-p3)
Los valores de la palabra original a proteger ubicadas en los
bits de datos ocuparan la segunda posicin de paridad p4 si el
tercer bit del nmero que representa la posicin del bit de dato es
1. Luego se verifica la paridad completando con ceros o unos la
paridad (p4-p4). [7] De esta manera se procede dependiendo del
cdigo de Hamming a proteger.
En La palabra cdigo se forma bajando los bits de datos y paridad
que se obtuvieron de la ltima paridad obtenida2.3.2 CODIFICACIN DE
HAMMING (LOCALIZACION DEL ERROR)De acuerdo a las especificaciones
de paridad establecidas se realizan n comprobaciones igual al nmero
de bits de paridad. Por ejemplo, si tenemos 3 bits de paridad se
harn 3 comprobaciones.
Cada bit de paridad se deber comprobar junto con su respectivo
grupo. Cada comprobacin de paridad dar un resultado bueno o malo.
El resultado total de todas las comprobaciones de paridad indica el
bit, si existe, en el que se encuentra el error de la siguiente
manera: Comience con el grupo comprobado por P1. Compruebe si el
grupo tiene la paridad correcta. Un 0 representa que la comprobacin
de paridad es correcta y un 1 que es incorrecta. Esto paso se
repite para cada grupo de polaridad. El nmero binario formado por
los resultados de todas las comprobaciones de paridad indica la
posicin del bit del cdigo que es errneo. Es el cdigo de posicin de
error. La primera comprobacin de paridad genera el bit menos
significativo (LSB). Si todas las comprobaciones son correctas, no
habr error. [8]2.3.3 EJEMPLOS DEL CODIGO DE CORRECIN DE ERRORES
HAMMING.2.3.3.1 Primer Ejemplo.
Consideremos como ejemplo la palabra de datos de 7 bits
"0110101". El cmo se generan y se utilizan los cdigos Hamming para
detectar un error, se puede entender de mejor manera en la tabla 2
y tabla 3 respectivamente. Se utiliza la d para indicar los bits de
datos y la p para los de paridad.En primer lugar los bits de datos
se insertan en las posiciones apropiadas y los bits de paridad
calculados en cada caso usando la paridad par.
Tabla 2. Posiciones de bits de paridad y datos.
Tomado de [9]La nueva palabra de datos (con los bits de paridad)
es ahora "10001100101". Vase la Tabla 3.
Tabla 3. Comprobacin de los bits de paridad (valor correcto)
Tomado de [9]Tomando en cuenta un error en el bit de la derecha,
es decir cambiando de 1 a 0. La nueva palabra de datos ser ahora
"10001100100". Si se analiza en la tabla anterior la paridad que se
debe obtener a la derecha tras la llegada del mensaje sin errores
debe ser siempre 0 (por cada fila), pero en el momento en que
ocurre un error esta paridad cambia a 1, de all el nombre de la
columna "prueba de paridad 1". Se observa que en la fila en que el
cambio no afect la paridad es cero y llega sin errores. Vase la
tabla 4.
Tabla 4. Comprobacin de los bits de paridad (valor errneo)
Tomado de [9]El paso final es evaluar los bits de paridad
(recuerde que el fallo se encuentra en d7). El valor entero que
representan los bits de paridad es 11 (si no hubieran ocurrido
errores este valor seria 0), lo que significa que el bit dcimo
primero de la palabra de datos (bits de paridad incluidos) es el
errneo y necesita ser cambiado. Vase la Tabla 5.Tabla 5. Evaluacin
de los bits de paridad
Binario1011
Decimal82111
Tomado de [9]Cambiando el bit dcimo primero 10001100100 se
obtiene de nuevo 10001100101. Eliminando los bits de patrn de la
paridad no se tienen en cuenta los bits de paridad. Si el error se
produjera en uno de ellos, en la comprobacin slo se detectara un
error, justo el correspondiente al bit de paridad causante del
mismo.2.3.3.2 Segundo Ejemplo.
Nmero de Hamming (11,7), 11 bits de los cuales 7 llevan
informacin
Datos= 0101001, paridad =4
Tabla 6. Bits de paridad y bits de datos.
Tomado de [7]De igual manera que el ejemplo anterior se procede
se procede a obtener los bits de paridad y bits de datos de cada
una de las posiciones de paridad (p1-p1, p2-p2,), hasta obtener la
palabra que se transmitir (palabra ms paridad). En este caso la
palabra almacenada o con paridad es: 10001011001. Vase la Tabla
6.Ahora introducimos un error deliberadamente en la cifra menos
significativa (LSB) y procedemos a obtener de igual manera la
palabra almacenada (palabra ms paridad). Ubicamos la paridad errnea
en la seccin de calidad de paridad, y la paridad almacenada en su
respectiva ubicacin. Luego se las compara y si son diferentes
producen un error. SI existe un error se lo marca como 1, si es
correcto se marca como un 0.Tabla 7. Comparacin
Tomado de [7] Para obtener la posicin donde se produjo el error,
al nmero producido mediante la comparacin se lo toma como nmero
binario y se lo pasa a decimal para obtener la posicin del error
contando desde la derecha de la palabra introducida mediante el
error. Vase la Tabla 7.Finalmente para solucionar el problema se
cambia 0 por 1 o 1 por 0 dependiendo el resultado. En este se
soluciona cambiando el 0 por 1.
3 CONCLUSIONES
El cdigo CRC es un cdigo que protege la integridad del dato o el
mensaje, ms no asegura que el mensaje recibido sea el que contenga
la informacin requerida ya que este pudo haberse originado de una
seal abierta. El cdigo CRC slo nos muestra la existencia de un
error en la transmisin, ms no su ubicacin, por lo que solicita una
retrasmisin de la informacin al emisor hasta que no exista error
alguno. Para la comprobacin de la transmisin mediante el cdigo CRC
es indispensable que el emisor y el receptor deban conocer
exactamente cul es el polinomio generador.
Para el cdigo CRC las operaciones a efectuarse, tanto para su
generacin como para su comprobacin, deben ser operaciones de mdulo
2, es decir, no existe acarreo de cifras.
El cdigo CRC que se genera se basa en la operacin XOR y el mismo
siempre debe ir adjunto al mensaje a transmitir para su posterior
verificacin. El cdigo Hamming nos muestra la existencia de un error
en la transmisin de datos, adems nos brinda la ubicacin del error y
la manera de solucionarlo.
El cdigo Hamming emplea los bits de paridad para realizar las
comprobaciones. El nmero de bits de paridad indica el nmero de
comprobaciones que se debern efectuar. Cada comprobacin de paridad
en el cdigo Hamming nos proporciona un dgito, el dgito 0 representa
una paridad correcta, mientras que el dgito 1 representa una
paridad incorrecta. Los dgitos conforman el cdigo de posicin del
error, con la condicin de que la primera comprobacin nos otorga el
bit menos significativo.4 REFERENCIAS
[1] Slideshare.net. Mtodos para la deteccin y correccin de
errores. (2013). Disponible en
http://www.slideshare.net/dhuertacruz/mtodos-para-la-deteccin-y-correccin-de-errores[2]Sistemas
de Multiplexado. Deteccin y correccin de errores. (2013) Disponible
en
https://sites.google.com/site/sistemasdemultiplexado/arquitecturas-de-las-redes-de--comunicacin-caractersticas/8--deteccin-y-correccin-de-errores[3]
UTT. Cdigo de Redundancia Cclica (crc). (2013). Disponible en
http://fernando526.tripod.com/mediosdetransmisionguiados/id4.html[4]
Gey.com. Cdigos de Redundancia Cclica (CRC). (2014). Disponible en
http://xn--gey-hoa.com/wp-content/uploads/propios/2013/S/CRC.pdf[5]
Slideshare.net. Deteccin y correccin de Errores. (2013). Disponible
en http://www.slideshare.net/carlosamayat/hamming-y-crc[6]
Kioskea.net. Verificacin de Errores. (2013). Disponible en
http://es.kioskea.net/contents/59-verificacion-de-errores[7] Borja
Vidal. Universidad Politcnica de Valencia Cdigos de Hamming.
(2011). Disponible en
https://www.youtube.com/watch?v=gQK9nROFX20[8] Thomas L. Floyd,
Fundamentos de Sistemas Digitales, 9na. ed, Pearson, Cap 2, pp.
109, Madrid 2006.
[9] Francis. B. A. and W. M. Wonham, The internal model
principle of control theory, Automatica. Vol. 12. pp. 457-465.
1976.
6