error crc y hamming

6
Universidad de las Fuerzas Armadas ESPE, Extensión Latacunga 2014, Barrera Llanga Kevin Iván (Simmons, 1992) (Peterson, 1961) (James, 2010)CÓDIGOS DE DETECCIÓN DE ERROR CRC Y HAMMING Barrera Llanga Kevin Iván Ingeniería Mecatrónica, Quinto “A” Universidad de las Fuerzas Armadas ESPE, Extensión Latacunga e-mail: [email protected] Abstract: This article describes that is the code error detection Hamming and CRC, each of its features, functions, s step by step procedure, applications developers and a brief example of each of these using the knowledge acquired throughout this document. Also some special characteristics of error detection codes will be discussed. Resumen: En este artículo se describe en que consiste el código de detección de error Hamming y CRC, cada una de sus características, funciones, s procedimiento paso a paso, aplicaciones, creadores y un breve ejemplo de cada una de estas utilizando los conocimientos adquiridos a lo largo de este documento. Además se expondrá algunas características especiales de los códigos de detección de error. PALABRAS CLAVE: CRC, Detección de error, Hamming, Sistemas Digitales. I. Introducción En todo sistema se presente una cantidad de error, por más mínima que esta sea se necesita una forma correctiva, para esta corrección en los sistemas digitales se utilizan códigos de detección de errores entre estos esta el chequeo de redundancia cíclica o CRC y los códigos Hamming. Estos poseen la capacidad de detectar diferentes errores de transmisión o perturbaciones producidos por factores como el ruido térmico, impulsivo, redondeo, cruce de líneas, etc. Corrigiéndolos y dándonos como resultado un sistema optimo, evitando la perdida de datos y comunicación en los sistemas digitales. (Andy, 2007) II. Código de detección de error Hamming 2.1 Richard Wesley Hamming R.W. Hamming [Fig.1] fue un matemático estadounidense que tubo un principal aporte en el campo de la informática y telecomunicaciones trabajando en temas relacionados con los mismos dando como resultado entre sus principales contribuciones el código Hamming, la distancia Hamming y la ventana Hamming. Nació en Chicago en 1915, entre sus aptitudes académicas obtuvo una licenciatura en la universidad de su ciudad de origen, una maestría en la Universidad de Nebraska y se doctoró en la Universidad Urbana- Champaign. Trabajo en el proyecto Manhattan más conocido como la primera bomba atómica. Fue fundador y presidente de la Asociación de Maquinaria en Informática. Murió en Monterey, California el 7 de enero de 1998. (James, 2010) Fig. 1. Richard Wesley Hamming [1] 1

Transcript of error crc y hamming

Page 1: error crc y hamming

Universidad de las Fuerzas Armadas ESPE, Extensión Latacunga 2014, Barrera Llanga Kevin Iván

(Simmons, 1992) (Peterson, 1961) (James, 2010)CÓDIGOS DE DETECCIÓN DE ERROR CRC Y HAMMING

Barrera Llanga Kevin IvánIngeniería Mecatrónica, Quinto “A”

Universidad de las Fuerzas Armadas ESPE, Extensión Latacungae-mail: [email protected]

Abstract: This article describes that is the code error detection Hamming and CRC, each of its features, functions, s step by step procedure, applications developers and a brief example of each of these using the knowledge acquired throughout this document. Also some special characteristics of error detection codes will be discussed.

Resumen: En este artículo se describe en que consiste el código de detección de error Hamming y CRC, cada una de sus características, funciones, s procedimiento paso a paso, aplicaciones, creadores y un breve ejemplo de cada una de estas utilizando los conocimientos adquiridos a lo largo de este documento. Además se expondrá algunas características especiales de los códigos de detección de error.

PALABRAS CLAVE: CRC, Detección de error, Hamming, Sistemas Digitales.

I. Introducción

En todo sistema se presente una cantidad de error, por más mínima que esta sea se necesita una forma correctiva, para esta corrección en los sistemas digitales se utilizan códigos de detección de errores entre estos esta el chequeo de redundancia cíclica o CRC y los códigos Hamming. Estos poseen la capacidad de detectar diferentes errores de transmisión o perturbaciones producidos por factores como el ruido térmico, impulsivo, redondeo, cruce de líneas, etc. Corrigiéndolos y dándonos como resultado un sistema optimo, evitando la perdida de datos y comunicación en los sistemas digitales. (Andy, 2007)

II. Código de detección de error Hamming

2.1 Richard Wesley Hamming

R.W. Hamming [Fig.1] fue un matemático estadounidense que tubo un principal aporte en el campo de la informática y telecomunicaciones trabajando en temas relacionados con los mismos dando como resultado entre sus principales contribuciones el código Hamming, la distancia Hamming y la ventana Hamming. Nació en Chicago en 1915, entre sus

aptitudes académicas obtuvo una licenciatura en la universidad de su ciudad de origen, una maestría en la Universidad de Nebraska y se doctoró en la Universidad Urbana- Champaign. Trabajo en el proyecto Manhattan más conocido como la primera bomba atómica. Fue fundador y presidente de la Asociación de Maquinaria en Informática. Murió en Monterey, California el 7 de enero de 1998. (James, 2010)

Fig. 1. Richard Wesley Hamming [1]

2.2 Código de detección de error Hamming

Los códigos Hamming son códigos de detección de error cuyo nombre proviene de su descubridor R.W. Hamming, es uno de los tipos de código de bloques más conocidos, entre sus características principales se puede decir que es un código de distancia numero 3, es capaz de detectar diferentes errores dobles y corregir errores si es un solo error simple es decir errores en un bit enviados por un canal que es sensible al ruido. Un ejemplo muy común de este método de corrección de errores seria en redes WI-FI para la transmisión de mensajes.

2.3 Distancia de Hamming

Como se decía este código se forma a partir de una distancia mínima de 3, esto es así ya que con distancias de 1 o 2 es incomodo para poder generar un código para la detección de su error ya que si se tuviera el valor de 1 no existiera ningún otro valor para realizar una comparación y si se tuviera una distancia de 2 puede tener una corrección de error al existir una sola comparación podrían pasar desapercibidos otros errores existentes. Cuando mayor sea la diferencia menor será

1

Page 2: error crc y hamming

Universidad de las Fuerzas Armadas ESPE, Extensión Latacunga 2014, Barrera Llanga Kevin Iván

la posibilidad de que un código se convierta en otro código por una serie de errores. Esta distancia está dada por la siguiente ecuación:Dm=2 X+1 [Ec.1. Distancia mínima de Hamming]En donde:Dm= Es la distancia mínima para la corrección de datos exceptuando 1 y 2 por motivos ya mencionados.X= Son las líneas de los datos.2 y 1= Son constantes utilizados en la ecuación. Ejemplo: ¿Cuál es la distancia de Hamming entre los números binarios 1011010 y 1001111?La distancia de Hamming seria de 3 ya que los valores son diferentes en 3 de sus dígitos. (Peterson, 1961)

2.4 Variables para la generación del código Hamming

Las variables que se toman a consideración para el código Hamming son:n: el número de bits que posee el código original.p: es el número de bits de paridad par generados en el transmisor. c: el número de bits de detectores de paridad par generados por el receptor.c=p ya que los bits de transmisor y receptor deben ser los mismos.

n=2c−c−1 [Ec.2. Combinaciones de Hamming] [2]

2.5 Generación del código Hamming

En esencia el código Hamming propone generar una tabla para asignar valores a las combinaciones que se generen en los bits de paridad tanto como de transmisor y receptor. El procedimiento es el siguiente:1.- Los bits de posición que sea potencia de dos se utilizan como bits de paridad, estas posiciones son 20= 1, 21= 2, 22= 4, 23= 8, 24= 16, 25= 32, etc.2. Los bits que sobran en las posiciones son utilizados como bits de datos.3. Los bits de paridad se obtiene calculando la paridad de alguno de los bits de datos. La posición del bit de paridad determina la secuencia de los bits que alternativamente comprueba y salta. (Simmons, 1992)

Tabla. 1. Código ASCII de 7 bits para generación del código Hamming [3]Ejemplo: Con un dato de 7 bits 1001110 calcule los bits del código Hamming.

El nuevo dato de paridad seria 10100010110

2.6 Extensión del código de Hamming

La extension consiste en colocar en la tabla un número adicional con el fin de encontrar más de un bit danado, esto lo logra mediante el desarrollo de matrices estas matrices se computan para poder detectar y corregir un bit danado e informar cuando hay dos o más bit danados en el proceso. Se pueden dar 3 casos:“1.- No hay error :Hamming =0, Paridad OK2.- Un bit de error :Paridad Fallo entoncesa) Hamming = 0, P = incorrecto, en este caso se cambia el valor del bit de paridad.b) Hamming <> 0, corrijo según Hamming.3.- Dos bit en error -> Paridad Ok, Hamming <> 0, por lo tanto informo, NO corrijo” [Ref. Introducción a los Sistemas Digitales, pág. 89] (Peterson, 1961)

III. Código de detección de error CRC

3.1 William Wesley Peterson

W. Wesley Peterson [Fig.2], nació en Michigan en 1924 fue un matemático y un científico, su pación fue la informática, conocido por inventar el método de comprobación de redundancia cíclica, por lo que fue galardonado con un Premio Japón en 1999. Fue profesor de Ciencias de la computación de la universidad Manoa. Escribió varios libros sobre códigos de corrección de errores, incluyendo la 2da edición revisada de: Código de Corrección de Errores. Además hizo investigaciones y publicaciones en los campos de lenguajes de programación, programación de sistemas y redes. Ganó el Premio Claude Shannon en 1981 y la medalla Centenaria de IEEE en 1984. Falleció en mayo de 2009 en Honolulu, Hawaii (James, 2010)

Fig. 1. W. Wesley Peterson [4]

3.2 Código de detección de error CRC

El código de detección de error CRC también conocido como verificación de redundancia cíclica es un código el cual permite detectar errores usándose

2

Page 3: error crc y hamming

Universidad de las Fuerzas Armadas ESPE, Extensión Latacunga 2014, Barrera Llanga Kevin Iván

mayormente en dispositivos por su simpleza de implementación como en los dispositivos de almacenamiento, telecomunicaciones y redes digitales, con el fin de detectar y controlar cambios en los datos, estos se generan en la mayoría de los casos de forma accidental.

Se encarga de la protección de los datos en bloques conocidos como tramas, el código de detección de error CRC contiene datos repetidos con la trama, de manera que los errores no sólo se pueden detectar sino que

además se pueden solucionar. Este método es muy efectivo en la detección de errores en los sistemas de comunicaciones, una de esas características es que no permite la corrección de errores ya que se envía uno o más caracteres adicionales de redundancia denominados FCS ("frame check sequence") o BCC ("block check caracter"), que difieren fundamentalmente en la forma de calcularlo. (Andy, 2007)

3.3 Definición de código de detección de error CRC

El código CRC consiste en considerar a los bits a ser transmitidos como un polinomio en x (para n bits el orden es n-1) tal que la presencia de un término significa un "1", y la ausencia, un "0", denotando polinomios cuyos coeficientes se correspondan con la secuencia binaria cuyo cálculo es una larga división de computación en el que se descarta el cociente y el resto se convierte en el resultado, con la diferencia que el arrastre se produce con bits formando una familia de códigos de bloques lineales.

3.4 Polinomio Generador Ideal

La aritmética con estos polinomios del CRC es de módulo 2 sin llevar, es decir la adición y la sustracción son equivalentes a la puerta XOR, la división la usa en lugar de sustracción y A se divide entre B si el número de bits es mayor de o igual a el número en A. Todos los polinomios correspondientes a las palabras del código cíclico, deben dividirse entre g(x) sin residuo siendo este un divisor de x – 1 el bit mayor y el menor del generador deben ser 1, es decir:

Si 110001 son los bits a transmitir, entonces el mensaje podrá ser considerado como un polinomio U(x) tal que: U(x) = X6+ X5+1

Un ejemplo a la inversa seria si G(x)= X4+ X3+ X+1 seria igual a 11011. (James,2010)

3.5 Polinomios Generadores más Comunes

CRC-12: X12 + X11 + X3 + X2 + X + 1 CRC-16: X16 + X15 + X2 + 1

CRC CCITT V41: X16 + X12 + X5 + 1 (este código se utiliza en el procedimiento HDLC)

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

3.6 Características principales de CRC

Se utiliza la división de números binarios. Tanto el emisor como el receptor conocen un

divisor común. Detecta todos los errores de 1 y 2 bits es decir

los errores simples y dobles. Detecta todos los errores de un “Burst” menor

que el grado de P(x) Detecta el 99 % de los errores de un “Burst”

mayor que el grado de P(x) Sirve para verificar la integridad, pero no para

saber si el mensaje es correcto. Cualquier bit se refleja en varios bits por un

tiempo considerable después que éste fue transmitido. (Peterson, 1961)

3.7 Cálculo de código de detección de error CRC

Pasos:1.- Comience con el mensaje a codificar:  110100111011002.- Esta se rellena primero con ceros correspondientes a la longitud n de bits de la CRC. Este es el primer cálculo para calcular una de 3 bits CRC:  11010011101100 0003.- Si el bit de entrada por encima del divisor poco más a la izquierda es 0, no haga nada. 4.- Si el bit de entrada por encima del divisor de bits más a la izquierda es 1, el divisor es XOR en la entrada. 5.- El divisor es entonces desplazado un poco hacia la derecha, y el proceso se repite hasta que el divisor alcanza el extremo de la derecha de la fila de entrada.

Todo el cálculo:  11010011101100 000.La validez de un mensaje recibido puede ser fácilmente verificado por realizar el cálculo anterior de nuevo, esta vez con el valor de comprobación anadido en lugar de ceros. El resto debe ser igual a cero si no hay errores detectables.  11010011101100 100

La aritmética en modulo 2 se considera así:Sumas binarias sin acarreos = Operación lógica XOR Restas binarias sin acarreos = Operación lógica XOR En donde:T= Trama de (k + n) bits a transmitir, con n<kn = Bits de comprobación M = Mensaje de k bits, los primeros k bits de T

3

Page 4: error crc y hamming

Universidad de las Fuerzas Armadas ESPE, Extensión Latacunga 2014, Barrera Llanga Kevin Iván

P= Patrón de n + 1 bits , este es el divisor elegido. Como mínimo el bit más significativo y el menos significativo debe ser 1.

T=2n∗MP

11010011101100 =entrada=M1011 =divisor (4 bits)=P-----------------------01100011101100 = resultado

00000000001110=resultado de la multiplicación 1011=divisor -----------------------00000000000101=resto (3 bits) (James, 2010)

3.8 Especificaciones de código de detección de error CRC

“A veces una prefijos implementación de un patrón de bits fija para el flujo de bits de comprobación.

Por lo general, una aplicación anexa n 0-bits a la corriente de bits de comprobación antes de que ocurra la división polinómica.

A veces, una aplicación exclusiva-Ors un patrón de bits fija en el resto de la división polinómica.

Orden de los bits: Algunos programas consideran que el bit de orden inferior de cada byte como "primero", el cual durante la división polinómica significa "izquierda", lo cual es contrario a nuestra comprensión habitual de "orden inferior".

Orden de bytes: Con CRC de varios bytes, no puede haber confusión sobre si el byte transmitido primero es el byte menos significativo o el byte más significativo.

La omisión del bit de orden del polinomio divisor: Puesto que el bit de orden superior es siempre 1, y puesto que un CRC de n bits debe ser definido por un divisor de bits que se desborda un registro de n bits, algunos autores suponen que se es innecesario mencionar bit de orden del divisor.”

[Ref.2. E-centro de Artigo, sección CRC, tema especificación de código de detección de error.](Simmons, 1992)

IV. Conclusiones

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.

El CRC es una función disenada para detectar cambios accidentales en datos de computadora y es comúnmente usada en redes digitales y dispositivos de

almacenamiento (como discos duros) el cual utiliza polinomios generadores y su medio de resolución es con divisiones sucesivas.

Estos métodos para la detección de error son muy útiles aunque cada uno se especializa en su campo, ambos son necesarios en los sistemas de control ya que gracias a estas correcciones de errores permite un sistema mas estable y optimo en los códigos digitales.

4

Page 5: error crc y hamming

Universidad de las Fuerzas Armadas ESPE, Extensión Latacunga 2014, Barrera Llanga Kevin Iván

V. BibliografíaSimmons, G. (1992). A survey of information Authentication. En G. Simmons, A survey of information Authentication (pág. 23). New York: IEEE Press.Peterson. (1961). Cyclic Codes for Error Detection. En Peterson, Cyclic Codes for Error Detection (pág. 281). Boston: ISSN.James, P. (2010). Introduccion de los sistemas Digitales. En P. James, Introduccion de los sistemas Digitales. Mc-Graw.Andy, B. (2007). Comunicacion Digitales. En B. Andy, Comunicacion Digitales. Marcombo.ezp1-espe.edu.ec:2050/lib/espesp/docDetail.action?DocID=10515233&p00=codigo+hamming

5