Práctico 4 - Departamento de Ciencias e Ingeniería de la

Anuncio
Organización de Computadoras
Departamento de Ciencias e Ingeniería de la Computación
Universidad Nacional del Sur
Segundo Cuatrimestre de 2016
Trabajo Práctico N◦ 4
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.
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)).
1
Trabajo Práctico N◦ 4
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)
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
2
Trabajo Práctico N◦ 4
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.
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:
3
Trabajo Práctico N◦ 4
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. PrentinceHall, 2000.
4
Descargar