110 likes | 306 Views
CURSO SISTEMAS LÓGICOS Y COMPUTADORES, DIE - USACH. CODIGO DE HAMMING MATERIAL COMPLEMENTARIO.
E N D
CURSO SISTEMAS LÓGICOS Y COMPUTADORES, DIE - USACH CODIGO DE HAMMING MATERIAL COMPLEMENTARIO
Cuando un computador envía un mensaje a otro, normalmente lo hace en forma serie, es decir un bit detrás de otro, tal como se indica en la figura siguiente donde se ha enviado un byte de información(8 bits). El canal a través del cual se envía la información puede ser cable, fibra óptica, microondas o una combinación de estos medios. Es posible que durante la transmisión de un mensaje se produzcan errores debido a interferencias, ruido u otras causas. Por ejemplo, el computador A envió el byte 10100101(A5 en hexadecimal), pero el computador B recibió el byte 10100100(A4 en hexadecimal)), es decir, hubo un error en la transmisión del bit menos significativo. Se envió un 1 pero se recibió un 0. ¿Cómo saber si el mensaje que se recibe es correcto y no tiene errores?
Para responder a esta pregunta, se han ideado varias soluciones. Una de ellas consiste en agregar un bit al dato que se envía. Este bit es denominado bit de paridad. Paridad. ¿Qué es la paridad?. En términos simples la paridad de un mensaje se determina por la cantidad de bits 1´s que contiene y puede ser par o impar, si esa cantidad de 1´s es par o impar. Por ejemplo, el byte 10100100 tiene tres 1´s, es decir, tiene un número impar de 1´s y por lo tanto su paridad esimpar. En cambio, el byte 10100101 tiene cuatro 1´s, es decir, tiene un número par de 1´s y por tanto su paridad espar. Una forma de comunicarse entre computadores es enviar datos de modo tal que todos tengan la misma paridad, ya sea par o impar. Para lograr este objetivo, se agrega a cada dato un bit cuyo valor hará que el nuevo dato, con el bit de paridad incluido, tenga la paridad deseada. Supongamos que los computadores A y B van a comunicarse con paridad par. En la tabla siguiente se muestra el dato a transmitir y el dato con el bit de paridad incorporado.
Supongamos que los computadores A y B van a comunicarse con paridad par. En la tabla siguiente se muestra el dato a transmitir y el dato con el bit de paridad incorporado. Dato a transmitir Dato a transmitir sin bit de paridadcon bit de paridad(par) 01000101 101000101 01111000 001111000 11001101 111001101 El computador que recibe los datos contabiliza el número de 1´s del dato que llega y si hay un númeroparde 1´s considera que el dato que llegó es correcto. Si encuentra que hay un número impar de 1´s entonces significa que hubo un error en la transmisión. Obviamente este método permite detectar si hubo un bit del dato que cambio de estado por error de la transmisión. Si dos bits del dato cambiaran durante la transmisión, el error no se detectaría.
Supongamos ahora que los computadores se comunicarán con paridad impar. En la tabla siguiente se muestra el dato a transmitir y el dato con el bit de paridad incorporado. Dato a transmitir Dato a transmitir sin bit de paridadcon bit de paridad(impar) 01000101 001000101 01111000 101111000 11001101 011001101 El análisis es similar al realizado para la paridad par. Este método permite detectar si hubo o no error en la transmisión de un dato pero no permite identificar cual es el bit erróneo.
Código de Hamming En 1950, el ingeniero Richard Hamming inventó un método conocido como el Código de Hamming que permite detectar si hubo error en el dato transmitido e identificar cual es el bit erróneo. Para ello, este código utiliza no uno, sino varios bits de paridad. ¿Cuantos bits de paridad debe usarse? Depende del número de bits que contenga el dato. Debe cumplirse una condición expresada en: donde m = Nº de bits de información y p = Nº de bits de paridad ¿Dónde se ubican estos bits de paridad dentro del dato? ¿Al final, al principio? Los bits de paridad en el Código de Hamming se ubican en posiciones bien precisas que corresponden a potencias de 2.
Si se tiene 4 bits de información y elegimos 2 bits de paridad, se tiene que: m + p + 1 = 4 + 2 + 1 = 7 no se cumple 2p m+p+1 Por lo tanto, se necesitan 3 bits de paridad para 4 bits de información. ¿Dónde se ubican estos bits de paridad dentro del dato? ¿Al final, al principio? Los bits de paridad en el código de Hamming se ubican en posiciones bien precisas que corresponden a potencias de 2.
Los bits de paridad en el código de Hamming se ubican en posiciones bien precisas que corresponden a potencias de 2. P1,P2, M1, P3, M2, M3, M4 ¿Qué valor debe tener cada uno de los bits de paridad del Código de Hamming? La tabla siguiente permite visualizar la forma como se determina el valor de los bits de paridad. Obviamente al momento de efectuar una transmisión debe estar acordado o definido con que paridad se efectuará la comunicación.
ASIGNACION DE LOS BITS DE PARIDAD 1 2 3 4 5 6 7 El bit de paridad P1 se ubica en la posición 1(20). El bit P2 se ubica en la posición 2(21). El bit P3 se ubica en la posición 4(22). La posición del bit de paridad P1 es, en binario 001. Este número tiene el 1 a la derecha. Este bit de paridad chequea todos los bits que tienen un 1 a la derecha. Es decir, chequea las posiciones 3(011), 5(101) y la posición 7(111). La posición del bit de paridad P2 es, en binario 010. Este número tiene el 1 al centro. Este bit de paridad chequea todos los bits que tienen un 1 al centro. Es decir, chequea las posiciones 3(011), 6(110) y la posición 7(111). La posición del bit de paridad P3 es, en binario 100. Este número tiene el 1 a la izquierda. Este bit de paridad chequea todos los bits que tienen un 1 a la izquierda. Es decir, chequea las posiciones 5(101), 6(110) y la posición 7(111).
EJEMPLO Determinar el Código de Hamming para el número BCD 1001 utilizando paridad par. 1.- Número de bits de paridad 2.- Ubicación de los bits de paridad 3.- Determinación de los bits de paridad El bit P1 comprueba las posiciones 1, 3, 5 y 7 y debe ser 0 para que haya un número par de 1’s en este grupo. El bit P2 comprueba las posiciones 2, 3, 6 y 7 y debe ser 0 para que haya un número par de 1’s en este grupo. El bit P3 comprueba las posiciones 4, 5, 6 y 7 y debe ser 1 para que haya un número par de 1’s en este grupo. CODIGO RESULTANTE: 0011001
¿ Cómo detectar cuando se ha recibido un error y cual es el error? En el siguiente ejemplo se explicará la forma de hacerlo. Ejemplo:DETECCION Y CORRECCION DE UN ERROR Se envía: 0011001. Se recibe: 0011011 (paridad par)