paper 1 codigos hamming y crc1

5
Universidad de las Fuerzas Armadas-ESPE. Lozada. Códigos de detección y corrección de errores. CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE ERRORES, CÓDIGOS HAMMING, CÓDIGOS CRC. Jonathan Samuel Lozada Pilco e-mail: [email protected] Integrante 2 e-mail: integrante2@institución Integrante 3 e-mail: integrante2@institución RESUMEN: En el presente documento se tratara los códigos de detección y corrección de errores tales como; códigos haming, códigos CRC. Se tocara temas como el método de paridad para la detección de errores que es un bit de paridad que indica el número de 1s es impar o par. El código Hamming el cual permite detectar errores de un único bit en una palabra de código, y también como determinar el nuero de bits de paridad, la colocación de los bits de paridad en el código y la asignación de los valores de los bits de paridad. Se tratara de explicar como detectar y corregir un error con el código haming. Se abordara el código CRC o código de redundancia cíclica. El cual es un código que el receptor emplea para determinar si un paquete contiene errores. Si en este paquete se encuentran errores, el receptor solicita volver a enviar el código. PALABRAS CLAVE: Códigos de detección de errores, códigos Hamming, códigos CRC. 1 CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE ERRORES Son códigos para detectar y corregir un error de un único bit, se tratara los siguiente métodos; el método de paridad para la detección de errores, el método de Hamming y también el método CRC o códigos de redundancia cíclica. 2 MÉTODO DE PARIDAD PARA LA DETECCIÓN DE ERRORES Este método es muy empleado por varios sistemas como medio para la detección de errores de un bit, a cualquier grupo de bits ya contengan un numero par o un número impar de 1s, se añade un bit de paridad para hacer que el número total de 1s en el grupo de bits sea par o impar siempre. “Un bit de paridad indica si el número de 1s es impar o par” [1]. Un bit de paridad par hace que el número de 1s de un grupo sea par, y un bit de paridad impar hace que el número de 1s en un grupo sea impar. Cualquier sistema puede funcionar con paridad par o impar, pero no con ambos. En la Tabla 1 se asocia el código BCD, tanto al caso de paridad par como paridad impar. Tabla 1. El código BCD con bits de paridad. Paridad par Paridad impar P BCD P BCD 0 0000 1 0000 1 0001 0 0001 1 0010 0 0010 0 0011 1 0011 1 0100 0 0100 0 0101 1 0101 0 0110 1 0110 1 0111 0 0111 1 1000 0 1000 0 1001 1 1001 Cuadro tomado de T. Floyd, “Fundamentos de Sistemas Digitales”. 1

Upload: jonathan-lozada

Post on 02-Jan-2016

58 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Paper 1 Codigos Hamming y Crc1

Universidad de las Fuerzas Armadas-ESPE. Lozada. Códigos de detección y corrección de errores.

CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE ERRORES, CÓDIGOS HAMMING, CÓDIGOS CRC.

Jonathan Samuel Lozada Pilcoe-mail: [email protected]

Integrante 2e-mail: integrante2@institución

Integrante 3e-mail: integrante2@institución

RESUMEN: En el presente documento se tratara los códigos de detección y corrección de errores tales como; códigos haming, códigos CRC. Se tocara temas como el método de paridad para la detección de errores que es un bit de paridad que indica el número de 1s es impar o par. El código Hamming el cual permite detectar errores de un único bit en una palabra de código, y también como determinar el nuero de bits de paridad, la colocación de los bits de paridad en el código y la asignación de los valores de los bits de paridad. Se tratara de explicar como detectar y corregir un error con el código haming. Se abordara el código CRC o código de redundancia cíclica. El cual es un código que el receptor emplea para determinar si un paquete contiene errores. Si en este paquete se encuentran errores, el receptor solicita volver a enviar el código.

PALABRAS CLAVE: Códigos de detección de errores, códigos Hamming, códigos CRC.

1 CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE ERRORES

Son códigos para detectar y corregir un error de un único bit, se tratara los siguiente métodos; el método de paridad para la detección de errores, el método de Hamming y también el método CRC o códigos de redundancia cíclica.

2 MÉTODO DE PARIDAD PARA LA DETECCIÓN DE ERRORES

Este método es muy empleado por varios sistemas como medio para la detección de errores de un bit, a cualquier grupo de bits ya contengan un numero par o un número impar de 1s, se añade un bit de paridad para hacer que el número total de 1s en el grupo de bits sea par o impar siempre.

“Un bit de paridad indica si el número de 1s es impar o par” [1].

Un bit de paridad par hace que el número de 1s de un grupo sea par, y un bit de paridad impar hace que el número de 1s en un grupo sea impar. Cualquier sistema puede funcionar con paridad par o impar, pero no con

ambos. En la Tabla 1 se asocia el código BCD, tanto al caso de paridad par como paridad impar.

Tabla 1. El código BCD con bits de paridad.

Paridad par Paridad imparP BCD P BCD

0 0000 1 0000

1 0001 0 00011 0010 0 00100 0011 1 00111 0100 0 01000 0101 1 01010 0110 1 01101 0111 0 01111 1000 0 10000 1001 1 1001

Cuadro tomado de T. Floyd, “Fundamentos de Sistemas Digitales”.

El bit de paridad se puede añadir ya sea al principio o al final del código. Esto depende del diseño del sistema. El bit de paridad se incluye cuando se cuenta para saber el número de 1s en el sistema.

2.1 DETECCIÓN DE UN ERROR

Este método facilita la detección de un único error de bit, pero no puede detectar dos errores dentro de un grupo.

Por ejemplo; el código total transmitido incluyendo el bit de paridad impar es:

Bit de paridad impar0111

Código BCD.

Se supone que existe un error se produce en el segundo bit de la derecha, el 1 se transmite como 0.

Bit de paridad impar0101

Bit erróneo.

Ya que el código recibido no aparece un número impar de 1s, esto indica que sea producido un error.

1

Page 2: Paper 1 Codigos Hamming y Crc1

Universidad de las Fuerzas Armadas-ESPE. Lozada. Códigos de detección y corrección de errores.

3 CÓDIGO HAMMING

Para corregir un error detectado se necesita conocer más información, como la posición del bit erróneo antes de poder corregirlo. Este código proporciona un método de corrección de un único bit erróneo.

3.1 CONSTRUCCIÓN DE UN CÓDIGO HAMMING

3.1.1 NÚMERO DE BITS DE PARIDAD

Si el número de bits de datos se designa por ,

entonces el número de bits de paridad, , se determina mediante la siguiente relación:

(1)

Se calcula por el método de prueba y error usando la ecu. 1.

3.1.2 COLOCACIÓN DE LOS BITS DE PARIDAD EN EL CÓDIGO

Enumeramos los bits de izquierda a derecha como se muestra.

Bit 1, bit 2, bit 3, bit 4, bit 5, bit 6, bit 7,…

Los bits de paridad se sitúan en las posiciones que se han numerado haciéndoles corresponder con las potencias de dos en sentido ascendente (1, 2, 4, 8,…), del modo siguiente:

1 2 3 4 5 6 7

El símbolo designa un determinado bit de

paridad y designa cada uno de los bits de datos.

3.1.3 ASIGNACIÓN DE LOS VALORES DE LOS BITS DE PARIDAD

Primero expresamos el número binario correspondiente a cada número decimal de posición, como se muestra en la Tab. 2. A continuación indicamos las posiciones de los bits de paridad y de datos.

Tabla 2. Tabla de posiciones de bits para un código de corrección de errores de 7 bits.

Designación de bits

P1 P2 D1 P3 D2 D3 D4

Posición de bitNumero de

1 2 3 4 5 6 7

posición en binarios

001 0101 011 100 101 110 111

Bits de datos (Dn)

Bits de paridad (Pn)

Cuadro tomado de T. Floyd, “Fundamentos de Sistemas Digitales”.

El bit de paridad P1, tiene un 1 como su digito más a la derecha, este comprueba las posiciones de bits 1, 3, 5, 7.

El bit de paridad P2, tiene un 1 en su posición intermedia, este comprueba las posiciones de bits 2, 3, 6, 7.

El bit de paridad P3, tiene un 1 como su digito más a la izquierda, este comprueba las posiciones de bits 4, 5, 6, 7.

“Este bit de paridad comprueba las posiciones de todos los bits, incluyéndose a sí mismo, que tienen 1s en la misma posición en el correspondiente número de posición en binario” [1].

Ejemplo: determinar el código Hamming para el numero BCD 1001 (utilizando de datos), utilizando par.

Paso 1. Hallar el número de bits de paridad requeridos. El número de bits de datos . Sea

, entonces:

Tres bits de paridad son suficientes.

Número total de bits de código = 4 + 3 = 7

Paso 2. Construir la Tab. 2., e introducir los bits de datos y determinar los bits de paridad.

Tabla 3. Tabla de posiciones de bits para un código de corrección de errores de 7 bits.

Designación de bits

P1 P2 D1 P3 D2 D3 D4

2

Page 3: Paper 1 Codigos Hamming y Crc1

Universidad de las Fuerzas Armadas-ESPE. Lozada. Códigos de detección y corrección de errores.

Posición de bitNumero de

1 2 3 4 5 6 7

posición en binarios

001 0101 011 100 101 110 111

Bits de datos 1 0 0 1

Bits de paridad 0 0 1Cuadro tomado de T. Floyd, “Fundamentos de Sistemas

Digitales”.

Paso 3. Determinar los bits de paridad:

El bit P1 comprueba las posiciones de bit 1, 3, 5 y 7, y debe ser igual a 0 para que haya un número par de 1s en este grupo.

El bit P2 comprueba las posiciones de bit 2, 3, 6 y 7, y debe ser igual a 0 para que haya un número par de 1s en este grupo.

El bit P3 comprueba las posiciones de bit 4, 5, 6 y

7, y debe ser igual a 1 para que haya un número par de 1s en este grupo.

Paso 4. El código combinado es 0011001.

3.2 COMO DETECTAR Y CORREGIR UN ERROR CON EL CÓDIGO HAMMING

Cada uno de los bits de paridad junto con su correspondiente grupo de bits debe comprobarse de acuerdo con la paridad que se vaya a utilizar.

Cada comprobación 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:

Paso 1. Comience con el grupo comprobado por P1.

Paso 2. Compruebe si el grupo tiene la paridad correcta. Un 0 representa que la comprobación de paridad es correcta y un a que es incorrecta.

Paso 3. Repita el paso 2 para cada grupo de paridad.

Paso 4. El número binario formado por las comprobaciones indica la posición del bit del código que es erróneo. Es el código de posición de error. La primera comprobación de paridad da el bit menos significativo. Si todas las comprobaciones son correctas no existe error.

Se debe indicar el tipo de paridad para poder determinar el error.

4 CÓDIGO CRC

El código CRC o código de redundancia cíclica es un método muy utilizado en redes de computadores.

Estos códigos también son considerados como códigos polinomiales. Ya que traza patrones polinomiales con los números binarios. Por ejemplo:

Un mensaje debe ser enviado como un código CRC calculado para que pueda ser verificado por el receptor. Para este cálculo del CRC se realiza atreves de una división sucesiva de números binarios.

4.1 CÁLCULO DE CRC

Un emisor D, desea enviar d bits de datos. A estos bits de datos se le debe anexar el código CRC con r bits de longitud.

D: d bits de datos R: r bits de CRC

Se utiliza un polinomio generador G de grado r. este polinomio esta predeterminado, y es el mismo en el emisor y el receptor. Este generador tiene (r+1) bits de longitud. Se recomienda que el bit más significativo de este generador sea 1.

La base para el cálculo de R (código CRC) es:

(2)

Es el desplazamiento de los bits de datos

hacia la izquierda.

Es la adicción de r bits 0s al final del bit de datos. Por ejemplo:

y entonces

Este polinomio se vuelve a dividir para el polinomio generador. Si el residuo de la división es cero se envía el dato, si el cociente es diferente de cero se corrige el error y se envía los datos [2].

El receptor recibe el mensaje del emisor y debe dividirlo para el polinomio generador. Si el residuo es cero, el mensaje ha llegado correctamente. Si el residuo es cero, el mensaje a llegado con error y hay que pedir una retransmisión.

Ejemplo: Se requiere transmitir 10011011.

Polinomio generador .

Mensaje: 10011011. Polinomio generador: 1001 (r=3) Se añade 3 bits 0 al final del mensaje:

10011011000

Se divide entre G.

3

Page 4: Paper 1 Codigos Hamming y Crc1

Universidad de las Fuerzas Armadas-ESPE. Lozada. Códigos de detección y corrección de errores.

10011011000 10011001 1000101000001011

1001 001000 1001 00010

La elección del polinomio generador es esencial si queremos detectar la mayoría de los errores que ocurra.

4.2 POLINOMIOS GENERADORES (ESTÁNDARES INTERNACIONALES)

CRC-32G(x)=X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 +

X8 + X7 + X5 + X4 + X2 + X1 + X0

CRC-16G(x)=X16 + X15 + X2 + X0

CRC-12G(x)=X12 + X3 + X1 + X0

CRC-8G(x)=X8 + X2 + X1 + X0

CRC-4G(x)=X4 + X0

5 REFERENCIAS

[1] T. Floyd, “Fundamentos de Sistemas Digitales”, 9na. ed., Prentice Hall, pp. 104-111, 2008.

[2] Kurose, J, “Redes de Computadores y Internet”, 3ra. Ed., Uma Abordagem Top-Down, pp. 340, 2006.

4