Está en la página 1de 48

Tema 4:

Deteccin y Correccin de Errores


Escuela Politcnica Superior
Ingeniera Informtica
Universidad Autnoma de Madrid

Deteccin y Correccin de Errores


O
B
J
E
T
I
V
O
S

Conocer cmo pueden detectarse y


TEMA 4: DETECCIN Y
prevenirse errores que puedan
CORRECCIN DE
aparecer en los distintos
ERRORES
intercambios de informacin que
4.1 Control de errores
usando paridad
realiza el ordenador.
Aplicar distintos mtodos de
deteccin y correccin de errores.

4.2 Cdigos de autochequeo


y autocorrectores

Bibliografa Tema 4:

- Introduction to Computer Hardware and Data Communications.


P.-A. GOUPILLE. (Prentice Hall, 1993). Cap. 5.

Conceptos previos
Concepto de Cdigo:
- De un conjunto de palabras (por ejemplo: Posibles
palabras binarias de una longitud determinada),
cdigo es un subconjunto
- Ejemplo:
Cdigo: Palabras de tres bits con slo un dgito a 1
En las palabras binarias de longitud 3:
{000, 001, 010, 011, 100, 101, 110, 111}

Escuela Politcnica Superior

Necesidad del tratamiento de errores

Posibilidad de errores
- En informtica (entre varios ordenadores o en el
interior de ellos) la informacin 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 modificacin de la


informacin desde que se emite (o almacena) hasta
que se recibe (o se recupera)
Cambio de valor de algunos bits (0 1)

Escuela Politcnica Superior

Necesidad del tratamiento de errores


Tipos de errores
- Aislados: Bit afectado rodeado de bits correctos
Simples: 1 bit afectado
Mltiples: Ms de 1 bit afectado

- Rfagas de errores: Secuencia de bits contiguos con


errores
Informacin de partida:

0 0

1 0

1 0 0 0 0 0 0

1 0

Error aislado simple:

0 0

1 0

1 1 0 0 0 0 0

1 0

Errores aislados triples:

0 1

1 0

1 1 0 0 0 0 0

1 0

Rfaga de error:

0 0

0 1

0 1 1 1 1 1 0

1 0

Escuela Politcnica Superior

Tipos de cdigos
de tratamientos de errores
En lugar de manipular la informacin, se definen
cdigos en los que se incluye la informacin que
permite detectar y/o corregir errores

Cdigos correctores de errores


- Uso:

Se recibe la informacin, si se detecta el error


corrige

se

- Situaciones:

Cuando no es conveniente retransmitir la informacin

Escuela Politcnica Superior

Tipos de cdigos
de tratamientos de errores
Cdigos detectores de errores
- Uso:

Se recibe la informacin, si se detecta el error


solicita la retransmisin

se

- Situaciones:

Suele ser ms costoso corregir que detectar


Cuando es posible la retransmisin, se solicita

Escuela Politcnica Superior

Conceptos asociados a errores


Distancia de Hamming entre dos palabras
- N de bits que difieren dos palabras
- Ejemplo:
0

1 0

0 1

0 1

0 0

1 1

1 1

Distancia Hamming = 4

Se necesitan 4 errores para transformar una palabra en


la otra

Escuela Politcnica Superior

Conceptos asociados a errores


Distancia de Hamming de un cdigo
- Distancia mnima entre las palabras que componen el
cdigo
- Ejemplo: {100, 111, 011}
mn{d(100, 111), d(100, 011), d(111, 011)} = mn{2, 3, 1} = 1

Escuela Politcnica Superior

Conceptos asociados a errores

Propiedades para la deteccin de errores


- Para detectar d errores de un bit entre dos

palabras, es necesario un cdigo 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 Politcnica Superior

10

Conceptos asociados a errores

Propiedades para la correccin de errores


- Para corregir d errores de un bit entre dos
palabras es necesario un cdigo 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 Politcnica Superior

11

Cdigos para tratamiento de errores


Comprobacin de paridad
Paridad vertical, longitudinal y cruzada
Cdigo i en n
Cdigos de redundancia cclica (CRC) (Cyclic
Redundancy Codes)

Escuela Politcnica Superior

12

Cdigos para tratamiento de errores

Comprobacin de paridad

- VRC (Vertical Redundancy Checking)


- La informacin se coloca en bloques de longitud fija
- A los bloques se les aade un bit llamado de paridad
y que, normalmente, precede a la informacin
- 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 Politcnica Superior

13

Cdigos para tratamiento de errores

Comprobacin de paridad
- Ejemplo:

Informacin

Criterio

Cdigo

0 1 1 1 0 0

1 Paridad par

0 0 1 1 1 0 0

0 1 1 1 0 0

1 Paridad impar 1 0 1 1 1 0 0

Escuela Politcnica Superior

14

Cdigos para tratamiento de errores

Comprobacin de paridad

- Ejercicio: Completar el bit de paridad con criterio


impar (1) y par (2)

Informacin
1
0
1
1
1
0
0
0

Escuela Politcnica Superior

0
1
1
1
0
1
1
0

0
0
0
1
1
1
1
0

0
1
1
0
0
1
1
1

0
1
0
1
0
1
0
1

0
1
0
1
0
1
0
0

1
1
0
1
1
1
1
1
15

Cdigos para tratamiento de errores

Paridad vertical, longitudinal y cruzada

- La informacin se coloca en grupos de (m) bloques de


longitud fija (k) como matriz kxm o mxk
1

1
2
m

Escuela Politcnica Superior

16

Cdigos para tratamiento de errores

Paridad vertical, longitudinal y cruzada


- Cada bloque:
1 bit para VRC

1 bit para la paridad


perpendicular o LRC
(Longitudinal Redundancy
Checking)
1 bit de paridad cruzada
que comprueba paridades

1
2

Bits de
VRC

m
Bits de
LRC

Escuela Politcnica Superior

Bit de
paridad
cruzada
17

Cdigos para tratamiento de errores

Paridad vertical, longitudinal y cruzada

- Ejemplo: Se quiere enviar la informacin PAG en


ASCII (7 bits):
50 41 4716

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


Se aade:
- Bit para VRC criterio par (verde, primera fila)
- Bit para LRC criterio par (azul, ltima columna)
- Bit de paridad cruzada criterio par (rosa)
Escuela Politcnica Superior

18

Cdigos para tratamiento de errores

Paridad vertical, longitudinal y cruzada


- Ejemplo 1:

VRC

En hexadecimal se
enva (columnas):
50 41 47 5616

0
1
0
1
0
0
0
0

0
1
0
0
0
0
0
1

0
1
0
0
0
1
1
1

0
1
0
1
0
1
1
0

Paridad
cruzada

LRC
Escuela Politcnica Superior

19

Cdigos para tratamiento de errores

Paridad vertical, longitudinal y cruzada

- Evaluacin del cdigo


Distancia Hamming del cdigo: 4
- Las dos palabras del cdigo ms 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 mnimo implica 4 bits

Capacidad de deteccin y correccin:


- Detecta todos los errores simples, dobles y triples
- Corrige todos los errores simples

Escuela Politcnica Superior

20

Cdigos para tratamiento de errores


Paridad vertical, longitudinal y cruzada
- Evaluacin del cdigo
Uso:
- Emisin:

Disposicin de datos como matrices


Se aaden las paridades VRC, LRC y cruzada
- Recepcin:
Comprobacin de paridad cruzada (requisito)
Comprobacin 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 Politcnica Superior

21

Cdigos para tratamiento de errores


Paridad vertical, longitudinal y cruzada

- Ejemplo 2: Deteccin y no correccin de errores triples


Error triple en el caso anterior (rojo) (se supone que no afecta
a las paridades)

Errores

Escuela Politcnica Superior

0
1
0
0
0
0
0
0

0
1
1
0
0
0
0
0

0
1
0
0
0
1
1
1

0
1
0
1
0
1
1
0
22

Cdigos para tratamiento de errores


Paridad vertical, longitudinal y cruzada

- Ejemplo 2: Deteccin y no correccin de errores triples


Deteccin mediante errores en bits de paridad
VRC
errnea

Escuela Politcnica Superior

0
1
0
0
0
0
0
0

0
1
1
0
0
0
0
0

0
1
0
0
0
1
1
1

0
1
0
1
0
1
1
0

Cruzada
correcta
LRC
errnea

23

Cdigos para tratamiento de errores


Paridad vertical, longitudinal y cruzada

- Ejemplo 2: Deteccin y no correccin de errores triples


Imposibilidad de correccin: Error en las posiciones sospechosas
Bits
sospechosos

Escuela Politcnica Superior

0
1
0
0
0
0
0
0

0
1
1
0
0
0
0
0

0
1
0
0
0
1
1
1

0
1
0
1
0
1
1
0
24

Cdigos para tratamiento de errores


Paridad vertical, longitudinal y cruzada

- Ejemplo 3: Deteccin y no correccin de errores dobles


Error doble en el caso anterior (rojo) (se supone que no afecta a
las paridades)

Errores

Escuela Politcnica Superior

0
1
0
1

0
0
0
0
0

0
1
0
0
0

0
1
0
1
0

0
0
0

0
0
1

1
1
1

1
1
0
25

Cdigos para tratamiento de errores


Paridad vertical, longitudinal y cruzada

- Ejemplo 3: Deteccin y no correccin de errores dobles


Deteccin mediante errores en bits de paridad

VRC
errnea

Escuela Politcnica Superior

0
1
0
1

0
0
0
0
0

0
1
0
0
0

0
1
0
1
0

0
0
0

0
0
1

1
1
1

1
1
0

Cruzada
correcta
LRC
errnea

26

Cdigos para tratamiento de errores


Paridad vertical, longitudinal y cruzada

- Ejemplo 3: Deteccin y no correccin de errores dobles


Imposibilidad de correccin: No todas las posiciones
sospechosas son errneas

Bits
sospechosos

Escuela Politcnica Superior

0
1
0
1
1
0
0
0

0
0
0
0
0
0
0
1

0
1
0
0
0
1
1
1

0
1
0
1
0
1
1
0
27

Cdigos para tratamiento de errores


Paridad vertical, longitudinal y cruzada

- Ejemplo 4: Deteccin y correccin de error simple


Error simple en el caso anterior (rojo) (se supone que no
afecta a las paridades)

Error

Escuela Politcnica Superior

0
1
0
1
1
0
0
0

0
1
0
0
0
0
0
1

0
1
0
0
0
1
1
1

0
1
0
1
0
1
1
0
28

Cdigos para tratamiento de errores


Paridad vertical, longitudinal y cruzada

- Ejemplo 4: Deteccin y correccin de error simple


Deteccin mediante errores en bits de paridad

VRC
errnea

Escuela Politcnica Superior

0
1
0
1

0
1
0
0
0

0
1
0
0
0

0
1
0
1
0

0
0
0

0
0
1

1
1
1

1
1
0

Cruzada
correcta
LRC
errnea

29

Cdigos para tratamiento de errores


Paridad vertical, longitudinal y cruzada

- Ejemplo 4: Deteccin y correccin de error simple


La identificacin inequvoca del bit errneo permite su correccin

Bit
sospechoso
y errneo

Escuela Politcnica Superior

0
1
0
1
1
0
0
0

0
1
0
0
0
0
0
1

0
1
0
0
0
1
1
1

0
1
0
1
0
1
1
0
30

Cdigos para tratamiento de errores

Cdigos i en n

- O cdigos de verificacin de cuenta fija


- El cdigo i en n est formado por las palabras
binarias de n bits que tienen i bits igual a 1
- Observaciones:
Nmero de palabras posibles de n bits: Variaciones con
repeticin de 2 elementos tomados de n en n: 2n
Nmero de palabras del cdigo: Permutaciones de n
elementos. 1 se repite i veces y 0 n-i veces

n!
i! (n - i)!
Escuela Politcnica Superior

31

Cdigos para tratamiento de errores

Cdigos i en n

- Ejemplo: Cdigo 4 en 8
4 en 8 est formado por palabras binarias de 8 bits con 4
bits igual a 1

0
0

0
0

0
0

0
1

1
0

1 1
1 1

1
1

0 1

0 0
0 0

0 1 1 1 0 1
0 1 1 1 1 0

0 1

1 1

0 0

Escuela Politcnica Superior

32

Cdigos para tratamiento de errores

Cdigos i en n

- Ejemplo: Cdigo 4 en 8
Sobre un total de 28 = 256, slo permite 70: 8!

70

4! 4!

- Evaluacin del cdigo


Su distancia de Hamming es 2: Un cambio mnimo de 1 bit
(0 1) obliga a cambiar otro para ajustar el nmero de
bits igual a 1
Slo detecta errores simples que no es capaz de corregir

Escuela Politcnica Superior

33

Cdigos para tratamiento de errores

Cdigos polinmicos o de redundancia cclica


- Conceptos previos

Es natural contar de forma cclica


- LOS GRADOS: Supongamos que contamos un nmero de
grados entero.
El orden es:
0, 1, 2, ..., 45, ..., 180, ..., 357, 358, 359, 360=0, 1, etc.

90
180

0=360
270

Escuela Politcnica Superior

34

Cdigos para tratamiento de errores


Cdigos polinmicos o de redundancia cclica
- Conceptos previos
- LOS GRADOS:
Es fcil operar
El siguiente a 359 es 0
El anterior a 0 es 359
Tres ms que 358 es 1
Cinco menos que 2 es 357

Escuela Politcnica Superior

35

Cdigos para tratamiento de errores


Cdigos polinmicos o de redundancia cclica
- Conceptos previos

- LAS HORAS DEL DA


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
Y operar es como antes
Escuela Politcnica Superior

0h=24h
18h
36

Cdigos para tratamiento de errores


Cdigos polinmicos o de redundancia cclica
- Conceptos previos
El conjunto de los enteros mdulo 2
- {0, 1}
- Su orden cclico

- Las operaciones pueden representarse con tablas


1+1=0
0-1=1

Escuela Politcnica Superior

+ 0
0 0
1 1

1
1
0

0
1

0
0
1

1
1
0

*
0
1

0
0
0

1
0
1
37

Cdigos para tratamiento de errores


Cdigos polinmicos o de redundancia cclica

- Conceptos previos
Observaciones sobre los polinomios Q[x]
- Divisin de polinomios con coeficientes racionales (Q)
Ejemplo: D = 6x4 + 9x3 + 5x + 2 y d = 2x2 - 1

6x4

+9x3 +0x2 +5x

6x4
0x4

+0x3 -3x2
+9x3 +3x2

+2

2x2 +0x -1
3x2 +(9/2)x +(3/2)

+5x

+9x3 +0x2 -(9/2)x


0x3 +3x2

+(19/2)x +2

+3x2

+0x

0x2

+(19/2)x +(7/2)

-(3/2)

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


Escuela Politcnica Superior

38

Cdigos para tratamiento de errores


Cdigos polinmicos o de redundancia cclica
- Conceptos previos
Observaciones sobre los polinomios Q[x]

Ejemplo:
Se puede representar abreviadamente:

-3

+3

-(9/2)

+(19/2)

-(3/2)

(19/2)

+(7/2)

Escuela Politcnica Superior

9/2

-1
3/2

39

Cdigos para tratamiento de errores

Cdigos polinmicos o de redundancia cclica


- Conceptos previos

Polinomios con coeficientes enteros mdulo 2

- Se puede demostrar (no objeto de este curso) que esta


divisin tambin es posible cuando los coeficientes son
enteros mdulo 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
10011
1 1 0 1 0 1101 1 0 000
1 00 1 1
01 0 0 1 1
1 00 1 1
000 001 0 1
1 00
0 01
1
0

1100001010

1 0
1 1

0 1 0 0

00 1 1
0 1 1 10

Resultado: q = x9 + x8 + x3 + x y r = x3 + x2 + x
Escuela Politcnica Superior

40

Cdigos para tratamiento de errores


Cdigos polinmicos o de redundancia cclica
- Presentacin de la tcnica

Se interpretan las cadenas de 1s y 0s como coeficientes


enteros mdulo 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 mdulo 2
Si el mensaje fuese: 10010110
el polinomio considerado sera:
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 Politcnica Superior

41

Cdigos para tratamiento de errores


Cdigos polinmicos o de redundancia cclica
- Presentacin de la tcnica
Operaciones en mdulo 2:
0+
0+
1+
1+

0=
1=
0=
1=

0
1
1
0 (sin acarreo)

0
0
1
1

0=
1=
0=
1=

0
1 (sin acarreo)
1
0

Escuela Politcnica Superior

42

Cdigos para tratamiento de errores


Cdigos polinmicos o de redundancia cclica
- Presentacin de la tcnica
Objetivo del procedimiento: Aadir 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 transmisin

Escuela Politcnica Superior

43

Cdigos para tratamiento de errores

Cdigos polinmicos o de redundancia cclica


- Uso de la tcnica

Emisor (algoritmo a seguir):


- Aadir r bits 0 al extremo de menor orden del mensaje. El
polinomio correspondiente ser xr M(x)
- Dividir (mdulo 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 aadir 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 Politcnica Superior

44

Cdigos para tratamiento de errores


Cdigos polinmicos o de redundancia cclica
- Uso de la tcnica
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 retransmisin (T(x) T(x))

Escuela Politcnica Superior

45

Cdigos para tratamiento de errores


Cdigos polinmicos o de redundancia cclica

- Ejemplo: Se requiere transmitir 10011011. Polinomio


generador G(x) = x3 + 1

Mensaje: 10011011
Polinomio generador: 1001 (r=3)
Se aaden 3 bits 0 al final del mensaje: 10011011000
Se divide x3 M(x) entre G(x):
1 0 0 1 10 1 1000
1 00 1
0 0001 0 1 1
1 00 1

1001
10001010

001 0 0 0
1 00 1
0 00 1 0

Se transmite 10011011010 (4DA16)


Escuela Politcnica Superior

46

Cdigos para tratamiento de errores

Cdigos polinmicos o de redundancia cclica


- El polinomio generador

La seleccin del polinomio generador es esencial si queremos


detectar la mayora de los errores que ocurran
Se puede demostrar (no objeto de este curso) que los polinomios
generadores son ms potentes con el primer y ltimo bits a 1
Ejemplos de polinomios generadores (estndares
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 nmero impar de bits
100% errores en rfagas de igual a o menos de 16 bits
99.997% errores de rfagas de 17 bits
99.998% de errores en rfagas de 18 o ms bits

Escuela Politcnica Superior

47

Cdigos para tratamiento de errores


Cdigos polinmicos o de redundancia cclica
- Ejercicio: Utilizando el polinomio generador G = x3 + 1,
determinar los valores hexadecimales que se
transmitirn para mandar el mensaje binario 10110110

(Solucin: 5B216)

Escuela Politcnica Superior

48

También podría gustarte