Organización de Computadoras Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Segundo Cuatrimestre de 2019 Trabajo Práctico N◦ 6 Códigos Detectores y Correctores de Errores Ejercicios 1. Calcular el bit de paridad par asociado a las siguientes cadenas de 16 bits: a) 0111 0101 1100 1010 b) 1011 0110 0010 1001 c) 0101 1010 1101 1101 d) 0110 1010 1101 1100 e) 0101 1010 1110 1010 2. Rehacer el ejercicio anterior, utilizando en esta oportunidad paridad impar. 3. Considerando las siguientes cadenas de 16 bits y sus bits de paridad par asociados, determinar, en cada caso, si es que se ha producido algún error: a) 1 0101 0110 1010 1010 b) 0 0101 0111 1011 1011 c) 0 1011 0100 0010 0110 d) 0 0101 0111 1101 0101 e) 1 1010 0111 1001 1110 4. Suponiendo que se desea enviar un conjunto de caracteres, desde la A hasta la H, codificados en ASCII básico (7 bits), por un medio no muy confiable, el cual es capaz de introducir errores en la transmisión. a) Mostrar la codificación resultante de hacer uso de LRC para los cheksums, asumiendo que cada caracter constituye una fila y que se trabaja con paridad impar. Pista: Recordar que A se codifica 1000001, y así sucesivamente. b) Al momento del envio, todo parece indicar que el medio de transmisión afectó la transmisión, ya que del lado del receptor la H se transformó en una M. En base a esto, ¿cuál es la longitud del burst de error que se produjo? El checksum LRC, ¿fue capaz de detectarlo? 5. Al emplear CRCs para detectar errores en la transmisión de mensajes, pueden adoptarse dos políticas diferentes a la hora de transmirir el valor de CRC asociado al mensaje en consideración. La política más inmediata consiste en transmitir sólo el mensaje y enviar el CRC obtenido por separado. En este caso el receptor recomputa el CRC asociado al mensaje que recibió y luego lo coteja con el valor de CRC recibido. 1 Trabajo Práctico N◦ 6 Una segunda política, consiste en entretejer el CRC dentro del mensaje que se está transmitiendo. Para lograr esto, el emisor extiende el mensaje original (M(x)) con tantos ceros como indique el grado del polinomio clave (G(x)), obteniendo de esta manera xr ∗M(x). Luego se calcula el resto (R(x)) dividiendo xr ∗M(x) por G(x) usando ⊕ en las restas de la división. R(x) es sumado al mensaje extendido xr ∗M(x) obteniendo el mensaje que será transmitido (T(x)). Por su parte, el receptor (una vez recibido el mensaje) computa el CRC asociado al mensaje extendido que recibió, sabiendo que debe obtener una secuencia de ceros (es decir, será una división exacta resultando R(x)=0). De no ser así, sabe que se debe haber producido algún error durante la transmisión y puede solicitar el reenvío del mismo. En este contexto, suponiendo que el mensaje a transmitir sea M (x) = 1011 1110 0001 y que el polinomio clave o generador sea G(x) = 11001, realizar la detección o no del error, según corresponda, en los siguientes casos: a) Asumiendo un error en la transmisión que altere solo un bit. b) Asumiendo un error en transmisión que afecte a dos bits, con máxima separación entre ellos. c) Asumiendo un burst en error arbitrario, de longitud menor o igual que el grado de G(x). d) Asumiendo un burst en error de longitud cinco (grado de G(x) + 1), para los casos en que se presente un patrón de error E(x) arbitrario y alternativamente para el caso que el patrón de error E(x) se corresponda exactamente con G(x). 6. Computar el Código Cíclico Redundante (CRC) asociado a los siguientes mensajes, empleando los polinomios generadores indicados: a) M (x) = 1011, con G(x) = x3 + x + 1. b) M (x) = 1001011, con G(x) = x8 + x7 + x5 + x4 + x3 + x + 1. c) M (x) = 10010101100, con G(x) = x4 + x + 1. 7. Para cada uno de los T (x) resultantes en el ejercicio anterior verificar que el código adoptado (CRC) se comporta de manera cíclica. Para esto, rotar el mensaje entero a izquierda o derecha un cantidad finita de posiciones y verificar que el checksum sigue siendo válido (esto es, que el resto de la división sigue siendo cero). 8. A modo de verificación de la teoría de las probabilidades de que un error producto de un burst de longitud l sea o no sea detectado por el CRC, desarrollar todas las combinaciones posibles al enfrentar bursts de las longitudes indicadas, cuando se adopta un polinomio generador G(x) = 101. a) l = 2 b) l = r + 1 = 3 c) l = 4 Por último, contrastar los resultados observados con la estimación producto de la probabilidad calculada, donde: Errores que se Detec. = Total de Combinaciones en error×(1−Prob. de No Detectar el Error) 2 Trabajo Práctico N◦ 6 9. Demostrar que el código paridad par se corresponde con el CRC cuando el polinomio generador es G(x) = 11, para el caso en concreto 1001 1010. En el marco de esta comparativa, calcular el check-bit que acompaña al frame y analizar los casos de burst de error de longitud 1, 2, 3 y 4, en consonancia con lo demostrado en la teoría y considerando si se conserva o no la paridad. 10. Dado un dato de k bits de extensión, la cantidad de bits redundantes (denominada r) necesarios para detectar y corregir un bit en error es tal que: 2r ≥ k + r + 1 Análogamente, para detectar y corregir dos bits en error se tendrá: 2r ≥ k + r + (k + r)(k + r − 1) +1 2 Teniendo en cuenta estas relaciones, determinar: a) La cantidad de bits redundantes que se deben agregar para detectar y corregir un bit en error en datos de dos y de cuatro bytes. b) La cantidad de bits redundantes que se deben agregar para detectar y corregir dos bits en error en datos de dos y de cuatro bytes. 11. Un código de longitud n puede definirse formalmente como un subconjunto de todas las cadena posibles de n símbolos tomados de algún alfabeto Σ, por caso Σ = {0, 1}. En este contexto, cuando para todo par de miembros del código se observa que se modifican los bits en d posiciones, se dice que el código tiene distancia d. Es decir, podemos caracterizar un determinado código en base a la cantidad p de símbolos de su alfabeto, la distancia d entre los miembros válidos del código, y el número de cadenas válidas, que denominaremos m. En otras palabras, podemos denotar a un código C simplemente como C(p, d, m). Teniendo esto en cuenta, considerando el código compuesto por las siguientes secuencias de bits: 000 0001 000 1110 011 0010 011 1101 101 0100 101 1011 110 0111 110 1000 a) Determinar cuál es su distancia mínima. b) Analizar la capacidad de detección/corrección de errores del código. Pista: la capacidad de corrección de un bit en error se basa en contar con una única representación válida a distancia 1 (la representación correcta), y todas las restantes representaciones válidas a distancia dos o superior. 3 Trabajo Práctico N◦ 6 c) Utilizando el código anterior, transformar los siguientes datos de 7 bits a binario y determinar si se produjeron errores. En caso que se puedan corregir, determinar cuáles eran los datos iniciales correctos: 24, 62, 65, 84, 90, 104, 127 12. Para cada uno de los siguientes datos, calcular los bits de código asociados a un esquema mínima distancia 3 (Hamming básico), indicando el codeword resultante: a) 0010 1111 b) 1101 1000 c) 0111 0100 d) 1011 1101 e) 1111 0110 13. En el contexto de un código mínima distancia 4 (Hamming extendido), considerar los siguientes planteos: a) ¿Cuántos bits se deben agregar a un sistema que manipula información de 16 bits para poder implementar este código? b) ¿Qué posiciones han de ocupar los bits de control que se intercalan entre los datos? 14. Para cada uno de los siguientes codewords, recalcular los bits de paridad correspondientes a un código mínima distancia 4 (Hamming extendido), en base a paridad par, de izquierda a derecha, con el bit de paridad ocupando la posición extrema derecha, indicando las acciones a seguir tanto bajo una política de “detección de dos errores y corrección de uno” como bajo una política de “detección de tres errores”: a) 0011101101001 b) 1000110011011 c) 0010010110101 d) 1101101011100 e) 0010110100101 Referencias [Mar62] Marcus, M. P. Switching Circuits for Engineers. Prentince-Hall, 1962. [MH00] Murdocca, M. J., and Heuring, V. P. Principles of Computer Architecture. Prentince-Hall, 2000. 4