Códigos Binarios de Representación de Datos M. en C. Erika Vilches Parte 2 Detección de Errores Método de Paridad • Cualquier grupo de bits contiene un número par o impar de bits. • Un bit de paridad se añade a un grupo de bits para hacer el número total de 1s siempre par o siempre impar. • Un bit de paridad par hace el número total de 1s par. Un bit de paridad impar hace el número total de 1s impar. • Un sistema opera con una paridad u otra, pero nunca con las dos • Ejemplo: En un sistema de paridad par, se hace un chequeo en cada grupo de bits recibido, si el número total de bits es impar, ha ocurrido un error. Par Impar Código BCD con bits de paridad Detectando un Error • Un bit de paridad nos permite detectar un error de un solo bit (o un número impar de errores, lo que es muy improbable), pero NO puede verificar si han ocurrido dos errores en un grupo. • Se puede utilizar para cualquier número de bits • Ejemplo: Asumamos que queremos transmitir el código BCD 0101 con paridad par: Ahora asumamos que ocurre un error en el tercer bit desde la izquierda (el 1 se convierte en 0) Cuando se recibe este código, el circuito para chequeo del bit de paridad se da cuenta que la paridad es impar, e indica que existe un error Ejemplo Asigne el bit de paridad par apropiado a los siguientes grupos de código 1010 → 01010 1000111001001 → 01000111001001 111000 → 1111000 101101011111 → 1101101011111 101101 → 0101101 Ejercicio • Un sistema de paridad impar recibe los siguientes grupos de código: 10110, 11010, 110011, 110101110100 y 1100010101010. Determine qué grupos, en caso de existir, tienen error. • El siguiente caracter ASCII es recibido por un sistema de paridad impar: 00110111, es correcto? Código Hamming • Para corregir un error detectado, se requiere más información. • La posición del error debe ser identificada, para poder ser corregida. • Se requiere más de un bit de paridad para poder corregir un error detectado. • El código Hamming nos permite corregir errores unitarios. Número de bits de paridad: El número de bits de paridad se determina → Donde d es el número de bits de datos y p el número de bits de paridad Si tenemos 4 bits de datos, entonces → p se encuentra por ensayo y error: Se requieren 3 bits para proveer corrección de errores unitarios para 4 bits de datos. Posicionamiento de los bits de paridad en el código: El bit más a la izquierda se denominara bit 1, el siguiente bit 2, y así sucesivamente: Los bits de paridad se ubicarán en las posiciones numeradas de manera correspondiente con las potencias ascendentes de 2 (1, 2, 4, 8, ... ) Donde es un bit de paridad y es un bit de datos Asignación de valores a los bits de paridad: 1. Numerar la posición de cada bit en binario 2. Indicar la ubicación de los bits de paridad y de datos Note que el número en binario de la posición de la paridad P1, tiene un 1 en su bit menos significativo. Este bit de paridad verifica todas las posiciones (incluyéndose a si mismo) que tengan 1s en la misma ubicación. Esto se repite para cada bit de paridad. En cada caso, se le asigna al bit de paridad un número que haga la cantidad de 1s en el conjunto de bits que verifica ya sea par o impar, dependiendo de cuál se especifique. Ejemplo Determine el código Hamming para en número BCD 1001 (bits de datos), usando paridad par. 1. Encontrar el número de bits de paridad requerido. Para p = 3: 3 bits de paridad son suficientes. Bits totales del código: 4 + 3 = 7 2. Construir una tabla de posiciones de bits y meter los bits de datos. Los bits de paridad se determinarán en los siguientes pasos. 3. Determinar los bits de paridad como sigue: Bit P1 verifica las posiciones 1, 3, 5 y 7, y debe ser 0 para que haya un número par de 1s en este grupo. Bit P2 verifica las posiciones 2, 3, 6 y 7 y debe ser 0 para que haya un número par de 1s en este grupo. Bit P3 verifica las posiciones 4, 5, 6 y 7 y debe ser 1 para que haya un número par de 1s en este grupo. 4. Estos bits de paridad se insertan en la tabla y el resultado combinado es 0011001 Detectando y Corrigiendo un Error con Código Hamming • Cada bit de paridad, junto con su grupo correspondiente de bits debe tener una paridad correcta. • Si hay 3 bits de paridad en una palabra, se hacen 3 chequeos de paridad. • Cada chequeo de paridad puede dar un resultado bueno o malo. • El resultado total de todos los chequeos de paridad indica el bit que contiene un error en caso de existir. 1. Comenzar con el grupo verificado por P1 2.Verificar que el grupo tenga paridad correcta. Un 0 representa una verificación correcta, un 1 representa un error. 3. Repetir el paso 2 para cada grupo de paridad 4. El número binario formado por los resultados de todas las verificaciones de paridad indica la posición del error en el código. El primer chequeo de paridad genera el bit menos significativo. Si todos los chequeos son correctos, no hay error. Ejemplo • Asuma que 0011001 es transmitido y que en su lugar se recibe 0010001. El recibidor no sabe que fue transmitido y debe revisar las paridades para determinar si el código es correcto. Indique cualquier error que haya ocurrido en la transmisión si se utiliza paridad par. Hacer la tabla de posiciones Primera verificación de paridad: El bit P1 verifica las posiciones 1, 3, 5 y 7. Hay 2 1s en este grupo. La verificación de paridad es correcta. → Segunda verificación de paridad: El bit P2 verifica las posiciones 2, 3, 6 y 7. Hay 2 1s en este grupo. La verificación de paridad es correcta. → 0 Tercera verificación de paridad: El bit P3 verifica las posiciones 4, 5, 6 y 7. Hay 1 1s en este grupo. La verificación de paridad es incorrecta. → 1 (MSB) 0 (LSB) Resultado: El código de posición del error es 100 (4 en binario). Esto indica que el bit en la 4ta posición, tiene un error. Es un 0 y debería ser un 1. Código corregido: 0011001