Está en la página 1de 48

Tema 4:

Detección y Corrección de Errores

Escuela Politécnica Superior


Ingeniería Informática
Universidad Autónoma de Madrid

1
Detección y Corrección de Errores

O
B Conocer cómo pueden detectarse y
prevenirse errores que puedan TEMA 4: DETECCIÓN Y
J CORRECCIÓN DE
E aparecer en los distintos ERRORES
T intercambios de información que 4.1 Control de errores
I realiza el ordenador. usando paridad
4.2 Códigos de autochequeo
V Aplicar distintos métodos de y autocorrectores
O detección y corrección de errores.
S

Bibliografía Tema 4:
- Introduction to Computer Hardware and Data Communications.
P.-A. GOUPILLE. (Prentice Hall, 1993). Cap. 5.

2
Conceptos previos

• Concepto de Código:

- De un conjunto de palabras (por ejemplo: Posibles


palabras binarias de una longitud determinada),
código es un subconjunto
- Ejemplo:
• Código: Palabras de tres bits con sólo un dígito a 1
• En las palabras binarias de longitud 3:
{000, 001, 010, 011, 100, 101, 110, 111}

Escuela Politécnica Superior 3


Necesidad del tratamiento de errores
• Posibilidad de errores
- En informática (entre varios ordenadores o en el
interior de ellos) la información circula entre
diferentes dispositivos y reposa en ciertos dispositivos
- Posibles errores:
• Ruidos en las comunicaciones
• Defectos en las superficies de los discos, etc.
- Los errores consisten en la modificación de la
información desde que se emite (o almacena) hasta
que se recibe (o se recupera)
• Cambio de valor de algunos bits (0 ⇔ 1)

Escuela Politécnica Superior 4


Necesidad del tratamiento de errores
• Tipos de errores
- Aislados: Bit afectado rodeado de bits correctos
• Simples: 1 bit afectado
• Múltiples: Más de 1 bit afectado
- Ráfagas de errores: Secuencia de bits contiguos con
errores

Información de partida: 1 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0
Error aislado simple: 1 0 0 0 1 0 1 1 0 0 0 0 0 1 1 0
Errores aislados triples: 1 0 1 0 1 0 1 1 0 0 0 0 0 0 1 0
Ráfaga de error: 1 0 0 1 0 1 0 1 1 1 1 1 0 1 1 0
Escuela Politécnica Superior 5
Tipos de códigos
de tratamientos de errores
• En lugar de manipular la información, se definen
códigos en los que se incluye la información que
permite detectar y/o corregir errores

• Códigos correctores de errores


- Uso:
• Se recibe la información, si se detecta el error se
corrige

- Situaciones:
• Cuando no es conveniente retransmitir la información

Escuela Politécnica Superior 6


Tipos de códigos
de tratamientos de errores

• Códigos detectores de errores


- Uso:
• Se recibe la información, si se detecta el error se
solicita la retransmisión

- Situaciones:
• Suele ser más costoso corregir que detectar
• Cuando es posible la retransmisión, se solicita

Escuela Politécnica Superior 7


Conceptos asociados a errores
• Distancia de Hamming entre dos palabras
- Nº de bits que difieren dos palabras
- Ejemplo:

0 1 0 1 0 1 0 1
Distancia Hamming = 4
0 0 0 0 1 1 1 1

Se necesitan 4 errores para transformar una palabra en


la otra

Escuela Politécnica Superior 8


Conceptos asociados a errores
• Distancia de Hamming de un código
- Distancia mínima entre las palabras que componen el
código
- Ejemplo: {100, 111, 011}

mín{d(100, 111), d(100, 011), d(111, 011)} = mín{2, 3, 1} = 1

Escuela Politécnica Superior 9


Conceptos asociados a errores
• Propiedades para la detección de errores
- Para detectar d errores de un bit entre dos
palabras, es necesario un código con una distancia de
Hamming de al menos d+1
- De otra forma: Con una distancia de Hamming de d se
pueden detectar d-1 errores
- Ejemplo: C = {001, 010, 100}, d. Hamming = 2
• Un error aislado siempre se detecta
- Un error en 001 ⇒ 101, 011, 000, ∉ C
• Dos errores aislados no se detectan
- Dos errores en 001 ⇒ 111, 010, 100. Dos pertenecen a C
Escuela Politécnica Superior 10
Conceptos asociados a errores
• Propiedades para la corrección de errores
- Para corregir d errores de un bit entre dos
palabras es necesario un código con una distancia de
Hamming de al menos 2d+1
- De otra forma: Con una distancia de Hamming de d se
pueden corregir (d-1)/2 errores
- Ejemplo: C = {0000000000, 0000011111, 1111100000,
1111111111}, d. Hamming = 5
Se pueden detectar d-1 = 5-1 = 4 errores
Se pueden corregir (d-1)/2 = 4/2 = 2 errores

Escuela Politécnica Superior 11


Códigos para tratamiento de errores
• Comprobación de paridad
• Paridad vertical, longitudinal y cruzada
• Código i en n
• Códigos de redundancia cíclica (CRC) (Cyclic
Redundancy Codes)

Escuela Politécnica Superior 12


Códigos para tratamiento de errores
• Comprobación de paridad
- VRC (Vertical Redundancy Checking)
- La información se coloca en bloques de longitud fija
- A los bloques se les añade un bit llamado de paridad
y que, normalmente, precede a la información
- Criterios para la paridad
• Bit de paridad par:
- Nº total de “1” par: Bit de paridad = 0
- Nº total de “1” impar: Bit de paridad = 1

• Bit de paridad impar:


- Nº total de “1” par: Bit de paridad = 1
- Nº total de “1” impar: Bit de paridad = 0
Escuela Politécnica Superior 13
Códigos para tratamiento de errores
• Comprobación de paridad
- Ejemplo:

Información Criterio Código


0 1 1 1 0 0 1 Paridad par 0 0 1 1 1 0 0 1

0 1 1 1 0 0 1 Paridad impar 1 0 1 1 1 0 0 1

Escuela Politécnica Superior 14


Códigos para tratamiento de errores
• Comprobación de paridad
- Ejercicio: Completar el bit de paridad con criterio
impar (1) y par (2)

1 2 Información
1 0 0 0 0 0 1
0 1 0 1 1 1 1
1 1 0 1 0 0 0
1 1 1 0 1 1 1
1 0 1 0 0 0 1
0 1 1 1 1 1 1
0 1 1 1 0 0 1
0 0 0 1 1 0 1

Escuela Politécnica Superior 15


Códigos para tratamiento de errores
• Paridad vertical, longitudinal y cruzada
- La información se coloca en grupos de (m) bloques de
longitud fija (k) como matriz kxm o mxk
1 2 k
1
2

Escuela Politécnica Superior 16


Códigos para tratamiento de errores
• Paridad vertical, longitudinal y cruzada
- Cada bloque:
• 1 bit para VRC
• 1 bit para la paridad 1 2 k
Bits de
perpendicular o LRC 1 VRC
(Longitudinal Redundancy 2
Checking)
• 1 bit de paridad cruzada
m
que comprueba paridades

Bits de Bit de
LRC paridad
cruzada
Escuela Politécnica Superior 17
Códigos para tratamiento de errores
• Paridad vertical, longitudinal y cruzada
- Ejemplo: Se quiere enviar la información “PAG” en
ASCII (7 bits):

50 41 4716

(101 0000 100 0001 100 0111) (k = 7, m = 3, matriz 7x3)

• Se añade:
- Bit para VRC criterio par (verde, primera fila)
- Bit para LRC criterio par (azul, última columna)
- Bit de paridad cruzada criterio par (rosa)
Escuela Politécnica Superior 18
Códigos para tratamiento de errores
• Paridad vertical, longitudinal y cruzada
- Ejemplo 1:
VRC 0 0 0 0 Paridad
1 1 1 1 cruzada
0 0 0 0
1 0 0 1
En hexadecimal se 0 0 0 0
envía (columnas):
0 0 1 1
50 41 47 5616 0 0 1 1
0 1 1 0

LRC

Escuela Politécnica Superior 19


Códigos para tratamiento de errores
• Paridad vertical, longitudinal y cruzada
- Evaluación del código
• Distancia Hamming del código: 4
- Las dos palabras del código más cercanas difieren en un bit de
datos
- Un cambio en un bit de datos implica (para que la palabra sea
correcta):
» Cambio en un bit de VRC
» Cambio en un bit de LRC
» Cambio en el bit de paridad cruzada
- ⇒ Un cambio mínimo implica 4 bits
• Capacidad de detección y corrección:
- Detecta todos los errores simples, dobles y triples
- Corrige todos los errores simples
Escuela Politécnica Superior 20
Códigos para tratamiento de errores
• Paridad vertical, longitudinal y cruzada
- Evaluación del código
• Uso:
- Emisión:
» Disposición de datos como matrices
» Se añaden las paridades VRC, LRC y cruzada
- Recepción:
» Comprobación de paridad cruzada (requisito)
» Comprobación de VRC y LRC: Las posiciones de error
en VRC y LRC marcan filas y columnas en cuyas
intersecciones puede haber error. Dependiendo del
tipo de errores se pueden o no detectar y corregir.

Escuela Politécnica Superior 21


Códigos para tratamiento de errores
• Paridad vertical, longitudinal y cruzada
- Ejemplo 2: Detección y no corrección de errores triples
• Error triple en el caso anterior (rojo) (se supone que no afecta
a las paridades)

0 0 0 0
1 1 1 1
Errores 0 1 0 0
0 0 0 1
0 0 0 0
0 0 1 1
0 0 1 1
0 0 1 0
Escuela Politécnica Superior 22
Códigos para tratamiento de errores
• Paridad vertical, longitudinal y cruzada
- Ejemplo 2: Detección y no corrección de errores triples
• Detección mediante errores en bits de paridad

0 0 0 0
Cruzada
VRC 1 1 1 1 correcta
errónea
0 1 0 0
0 0 0 1
LRC
0 0 0 0 errónea
0 0 1 1
0 0 1 1
0 0 1 0
Escuela Politécnica Superior 23
Códigos para tratamiento de errores
• Paridad vertical, longitudinal y cruzada
- Ejemplo 2: Detección y no corrección de errores triples
• Imposibilidad de corrección: Error en las posiciones sospechosas

Bits
sospechosos 0 0 0 0
1 1 1 1
0 1 0 0
0 0 0 1
0 0 0 0
0 0 1 1
0 0 1 1
0 0 1 0
Escuela Politécnica Superior 24
Códigos para tratamiento de errores
• Paridad vertical, longitudinal y cruzada
- Ejemplo 3: Detección y no corrección de errores dobles
• Error doble en el caso anterior (rojo) (se supone que no afecta a
las paridades)

0 0 0 0
1 0 1 1
Errores 0 0 0 0
1 0 0 1
1 0 0 0
0 0 1 1
0 0 1 1
0 1 1 0
Escuela Politécnica Superior 25
Códigos para tratamiento de errores
• Paridad vertical, longitudinal y cruzada
- Ejemplo 3: Detección y no corrección de errores dobles
• Detección mediante errores en bits de paridad

0 0 0 0 Cruzada
1 0 1 1 correcta
VRC 0 0 0 0
errónea
1 0 0 1 LRC
1 0 0 0 errónea
0 0 1 1
0 0 1 1
0 1 1 0
Escuela Politécnica Superior 26
Códigos para tratamiento de errores
• Paridad vertical, longitudinal y cruzada
- Ejemplo 3: Detección y no corrección de errores dobles
• Imposibilidad de corrección: No todas las posiciones
sospechosas son erróneas

Bits
sospechosos 0 0 0 0
1 0 1 1
0 0 0 0
1 0 0 1
1 0 0 0
0 0 1 1
0 0 1 1
0 1 1 0
Escuela Politécnica Superior 27
Códigos para tratamiento de errores
• Paridad vertical, longitudinal y cruzada
- Ejemplo 4: Detección y corrección de error simple
• Error simple en el caso anterior (rojo) (se supone que no
afecta a las paridades)

0 0 0 0
1 1 1 1
0 0 0 0
1 0 0 1
Error 1 0 0 0
0 0 1 1
0 0 1 1
0 1 1 0
Escuela Politécnica Superior 28
Códigos para tratamiento de errores
• Paridad vertical, longitudinal y cruzada
- Ejemplo 4: Detección y corrección de error simple
• Detección mediante errores en bits de paridad

VRC
0 0 0 0 Cruzada
errónea 1 1 1 1 correcta
0 0 0 0
1 0 0 1 LRC
1 0 0 0 errónea
0 0 1 1
0 0 1 1
0 1 1 0
Escuela Politécnica Superior 29
Códigos para tratamiento de errores
• Paridad vertical, longitudinal y cruzada
- Ejemplo 4: Detección y corrección de error simple
• La identificación inequívoca del bit erróneo permite su corrección

Bit
sospechoso 0 0 0 0
y erróneo 1 1 1 1
0 0 0 0
1 0 0 1
1 0 0 0
0 0 1 1
0 0 1 1
0 1 1 0
Escuela Politécnica Superior 30
Códigos para tratamiento de errores
• Códigos i en n
- O códigos de verificación de cuenta fija
- El código i en n está formado por las palabras
binarias de n bits que tienen i bits igual a 1
- Observaciones:
• Número de palabras posibles de n bits: Variaciones con
repetición de 2 elementos tomados de n en n: 2n
• Número de palabras del código: Permutaciones de n
elementos. 1 se repite i veces y 0 n-i veces
n!
i! (n - i)!

Escuela Politécnica Superior 31


Códigos para tratamiento de errores
• Códigos i en n
- Ejemplo: Código 4 en 8
• 4 en 8 está formado por palabras binarias de 8 bits con 4
bits igual a 1
0 0 0 0 1 1 1 1
0 0 0 1 0 1 1 1
0 0 0 1 1 0 1 1
0 0 0 1 1 1 0 1
0 0 0 1 1 1 1 0
0 0 1 0 1 1 1 0

1 1 1 1 0 0 0 0
Escuela Politécnica Superior 32
Códigos para tratamiento de errores
• Códigos i en n
- Ejemplo: Código 4 en 8
• Sobre un total de 28 = 256, sólo permite 70: 8! = 70

4! 4!

- Evaluación del código


• Su distancia de Hamming es 2: Un cambio mínimo de 1 bit
(0 ⇔ 1) obliga a cambiar otro para ajustar el número de
bits igual a 1
• Sólo detecta errores simples que no es capaz de corregir

Escuela Politécnica Superior 33


Códigos para tratamiento de errores
• Códigos polinómicos o de redundancia cíclica
- Conceptos previos
• Es natural contar de forma cíclica

- LOS GRADOS: Supongamos que contamos un número de


grados entero.
El orden es:
0, 1, 2, ..., 45, ..., 180, ..., 357, 358, 359, 360=0, 1, etc.
90º

180º 0º=360º

270º
Escuela Politécnica Superior 34
Códigos para tratamiento de errores

• Códigos polinómicos o de redundancia cíclica


- Conceptos previos
- LOS GRADOS:
Es fácil operar

» El siguiente a 359 es 0
» El anterior a 0 es 359
» Tres más que 358 es 1
» Cinco menos que 2 es 357

Escuela Politécnica Superior 35


Códigos para tratamiento de errores

• Códigos polinómicos o de redundancia cíclica


- Conceptos previos
- LAS HORAS DEL DÍA
El orden es
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 0, 1, ...
6h

12h 0h=24h

Y operar es como antes 18h


Escuela Politécnica Superior 36
Códigos para tratamiento de errores
• Códigos polinómicos o de redundancia cíclica
- Conceptos previos
• El conjunto de los enteros módulo 2
- {0, 1}
- Su orden cíclico
1 0

- Las operaciones pueden representarse con tablas

+ 0 1 - 0 1 * 0 1
1+1=0
0-1=1 0 0 1 0 0 1 0 0 0
1 1 0 1 1 0 1 0 1
Escuela Politécnica Superior 37
Códigos para tratamiento de errores
• Códigos polinómicos o de redundancia cíclica
- Conceptos previos
• Observaciones sobre los polinomios Q[x]
- División de polinomios con coeficientes racionales (Q)
Ejemplo: D = 6x4 + 9x3 + 5x + 2 y d = 2x2 - 1
6x4 +9x3 +0x2 +5x +2 2x2 +0x -1
6x4 +0x3 -3x2 3x2 +(9/2)x +(3/2)
0x4 +9x3 +3x2 +5x
+9x3 +0x2 -(9/2)x
0x3 +3x2 +(19/2)x +2
+3x2 +0x -(3/2)
0x2 +(19/2)x +(7/2)

Se obtiene: q = 3x2 + (9/2)x + (3/2) y r = (19/2)x + (7/2)


Escuela Politécnica Superior 38
Códigos para tratamiento de errores
• Códigos polinómicos o de redundancia cíclica
- Conceptos previos
• Observaciones sobre los polinomios Q[x]
Ejemplo:
Se puede representar abreviadamente:
6 9 0 5 2 2 0 -1
6 0 -3
3 9/2 3/2
0 9 +3 5
9 0 -(9/2)
0 3 +(19/2) 2
3 0 -(3/2)
0 (19/2) +(7/2)

Escuela Politécnica Superior 39


Códigos para tratamiento de errores
• Códigos polinómicos o de redundancia cíclica
- Conceptos previos
• Polinomios con coeficientes enteros módulo 2
- Se puede demostrar (no objeto de este curso) que esta
división también es posible cuando los coeficientes son
enteros módulo 2 siempre que las operaciones (resta,
productos, etc.) sean definidas en ese conjunto
- Ejemplo: D = x13 + x12 + x10 + x8 + x7 + x5 + x4 y d = x4 + x + 1
1 1 0 1 0 1101 1 0 000 10011
1 00 1 1 1100001010
01 0 0 1 1
1 00 1 1
000 001 0 1 1 0
1 00 1 1
0 01 0 1 0 0
1 00 1 1
0 0 1 1 10
Resultado: q = x9 + x8 + x3 + x y r = x3 + x2 + x
Escuela Politécnica Superior 40
Códigos para tratamiento de errores
• Códigos polinómicos o de redundancia cíclica
- Presentación de la técnica
• Se interpretan las cadenas de 1’s y 0’s como coeficientes
enteros módulo 2 de polinomios
• Los k bits de cada mensaje se tratan como si fueran los
coeficientes de un polinomio M(x), de orden k-1, en el que las
operaciones se hacen en módulo 2
• Si el mensaje fuese: 10010110
el polinomio considerado sería:
M(x) = 1 • x7 + 0 • x6 + 0 • x5 + 1 • x4 + 0 • x3 + 1 • x2 + 1 • x1 + 0 • x0 =
= x7 + x4 + x2 + x
• Se utiliza un polinomio generador G(x) de grado r. Este polinomio
está predeterminado, y es el mismo en el emisor y el receptor

Escuela Politécnica Superior 41


Códigos para tratamiento de errores
• Códigos polinómicos o de redundancia cíclica
- Presentación de la técnica
• Operaciones en módulo 2:

0+ 0= 0
0+ 1= 1
1+ 0= 1
1+ 1= 0 (sin acarreo)

0– 0= 0
0– 1= 1 (sin acarreo)
1– 0= 1
1– 1= 0

Escuela Politécnica Superior 42


Códigos para tratamiento de errores
• Códigos polinómicos o de redundancia cíclica
- Presentación de la técnica
• Objetivo del procedimiento: Añadir r bits al mensaje de k bits,

de forma tal que el polinomio resultante, T(x), correspondiente

a los k+r bits, sea divisible por G(x)

• El receptor verifica si T(x) es divisible por G(x), y si no lo es

hay un error en la transmisión

Escuela Politécnica Superior 43


Códigos para tratamiento de errores
• Códigos polinómicos o de redundancia cíclica
- Uso de la técnica
• Emisor (algoritmo a seguir):
- Añadir r bits 0 al extremo de menor orden del mensaje. El
polinomio correspondiente será xr • M(x)
- Dividir (módulo 2) xr • M(x) entre G(x): xr • M(x) = C(x) + R(x)
G(x) G(x)
C(x) es el cociente y R(x) el resto

- Restar a xr • M(x) el valor del resto R(x) (esto es equivalente


a añadir al mensaje original M(x) el resto R(x))
T(x) = xr • M(x) - R(x)
- Se obtiene así T(x), cuyos coeficientes (unos o ceros)
sustituyen el mensaje a transmitir. T(x) es siempre divisible
por G(x)
Escuela Politécnica Superior 44
Códigos para tratamiento de errores
• Códigos polinómicos o de redundancia cíclica
- Uso de la técnica
• Receptor:
- Recibe el mensaje T’(x) del emisor
- Divide T’(x) entre G(x)
- Si el resto es cero, el mensaje ha llegado correctamente
(T’(x) = T(x))
- Si el resto no es cero, el mensaje ha llegado con error y hay
que pedir una retransmisión (T’(x) ≠ T(x))

Escuela Politécnica Superior 45


Códigos para tratamiento de errores
• Códigos polinómicos o de redundancia cíclica
- Ejemplo: Se requiere transmitir 10011011. Polinomio
generador G(x) = x3 + 1
• Mensaje: 10011011
• Polinomio generador: 1001 (r=3)
• Se añaden 3 bits 0 al final del mensaje: 10011011000
• Se divide x3 • M(x) entre G(x):

1 0 0 1 10 1 1000 1001
1 00 1 10001010
0 0001 0 1 1
1 00 1
001 0 0 0
1 00 1
0 00 1 0
• Se transmite 10011011010 (4DA16)
Escuela Politécnica Superior 46
Códigos para tratamiento de errores
• Códigos polinómicos o de redundancia cíclica
- El polinomio generador
• La selección del polinomio generador es esencial si queremos
detectar la mayoría de los errores que ocurran
• Se puede demostrar (no objeto de este curso) que los polinomios
generadores son más potentes con el primer y último bits a 1
• Ejemplos de polinomios generadores (estándares
internacionales):

- CRC-12: x12 + x11 + x3 + x2 + x + 1


- CRC-16: x16 + x15 + x2 + 1
- CRC-CCITT: x16 + x12 + x5 + 1
» 100% errores simples
» 100% errores dobles
» 100% errores en un número impar de bits
» 100% errores en ráfagas de igual a o menos de 16 bits
» 99.997% errores de ráfagas de 17 bits
» 99.998% de errores en ráfagas de 18 o más bits
Escuela Politécnica Superior 47
Códigos para tratamiento de errores
• Códigos polinómicos o de redundancia cíclica
- Ejercicio: Utilizando el polinomio generador G = x3 + 1,
determinar los valores hexadecimales que se
transmitirán para mandar el mensaje binario 10110110

(Solución: 5B216)

Escuela Politécnica Superior 48

También podría gustarte