Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Richard Hamming
1
Detección y Corrección de Errores
• Las redes deben garantizarnos que los
datos transmitidos lleguen con total
exactitud.
• En muchas aplicaciones es indispensable
que los datos recibidos sean
exactamente igual a los datos
transmitidos.
• Sin embargo los datos se pueden alterar
durante la transmisión.
2
Detección y Corrección de Errores
3
Tipos de Errores
• Cuando viaja una señal de un punto
a otro, se pueden producir diferentes
tipos de interferencias debidas a
fenómenos eléctricos externos,
magnetismo, calor, etc.
• Esta interferencia puede cambiar la
forma o el periodo de la señal.
4
Tipos de Errores
• Un error de bit cambiara el 0 por un 1 y
viceversa. (Ver figura 01)
• Cuando tenemos un error de ráfaga, se
cambian muchos bits.
• Por ejem en una ráfaga de 0.5 ms de
duración, en una Tx. con una velocidad de
600 Kbps, se podría cambiar hasta un
máximo de 300 bits.
5
ERROR DE BIT
0 cambia por 1
0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0
Enviado Recibido
6
Tipos de Errores
• Es muy poco probable que tengamos un
error de bit, lo que tendremos son
errores de ráfaga.
• En este caso al menos 2 unidades de
bits habrán cambiado. (Ver figura 02)
• En un error de ráfaga no se producirán
necesariamente, errores de bits
consecutivos.
• La longitud de la ráfaga se mide desde el
primer hasta el ultimo bit correcto.
7
ERROR DE RAFAGA
Enviado
1 1 0 0 0 1 0 0 0 1 0 0 1 0 0 1
Bits dañados
1 1 0 1 0 0 0 1 0 1 1 0 1 0 0 1
Recibido
Fig. 02.- Muestra el error de una ráfaga.
8
Métodos de Corrección.
• Como antecedentes tenemos desde
el Siglo IX la contribución de los
Matemáticos Árabes:
12
Métodos de Corrección.
• Actualmente existen 02 métodos
conocidos que son:
• La Corrección de errores “Hacia
delante” en donde el receptor
mediante algoritmos deberá predecir
(adivinar) el mensaje con el uso de
los bits redundantes.
• Esto será posible cuando el numero
de errores es pequeño.
13
Métodos de Corrección.
• También tenemos la Corrección de
errores por “Retransmisión” en
donde el receptor detecta la
existencia de un error y de inmediato
solicita al transmisor que vuelva a
retransmitir el mensaje.
• La retransmisión se repite hasta que
se considere libre de errores.
14
Codificación de Bloques.
• En la codificación de bloques se divide el
mensaje en bloques de “k” bits de datos
(PALABRAS de DATOS).
• Se añaden “r” bits redundantes a cada bloque,
consiguiendo una longitud de n = k + r, estos
bloques de “n” bits se denominan PALABRAS
de CODIGO. (Ver Fig. 03)
• Entonces con “k” bits se pueden crear una
combinación de 2k PALABRAS de DATOS.
• Con “n” bits se pueden crear una combinación
de 2n PALABRAS de CODIGO.
15
Codificación de bloques.
• Obviamente como n > k el numero
de palabras CODIGO es mayor que
el numero de palabras de DATOS.
• Luego tenemos 2n - 2k palabras
CODIGO que no se utilizan.
• Estas palabras CODIGO son
denominadas inválidos o ilegales.
16
Palabras de datos y palabras código
en la codificación de bloques
Codificador Decodificador
Extraer
Generador Generador
Descartar
20
Detección de errores.
Palabras de datos Palabras de código
00 000
01 011
10 101
11 110
21
Detección de errores.
• Por ejemplo si el emisor codifica la
palabra 01 y la envía al receptor como
011, se podrían tener los siguientes
casos:
• El receptor recibe el 011. Como es un
código valido, el receptor lo acepta y
extrae el dato 01.
• En el supuesto que el código se altera
en la transmisión y se recibe 111. El
código recibido no será valido y se
eliminara.
22
Detección de errores.
• Si el código se daña durante la
transmisión y se recibe un 000 . El
código recibido a pesar de la alteración
es recibido (erróneamente) por el
receptor.
• Luego el receptor extrae el dato 00.
Como es un código valido, el receptor
extrae el dato 00.
• Debido a los errores (en 2 bits de la
derecha) el error no será detectado.
23
Corrección de errores.
• Aquí el receptor deberá encontrar el
código originalmente enviado.
• Por esta razón es necesario añadir mas
bits redundantes para realizar la
corrección respecto a los bits
requeridos en la detección.
• El concepto es el mismo y se puede
apreciar un esquema en la fig. 06.
24
Estructura del codificador y decodificador
en la corrección de errores
Emisor Receptor
Codificador Decodificador
Corregir
Generador Comprobador
00 00000
01 01011
10 10101
11 11110
Territorio de x Territorio de y
Radio t Radio t
x y
dmin > 2t
36
Mínima distancia para Códigos de
Bloques Lineales
37
Códigos de Paridad
• Es un código muy utilizado, una palabra de
datos de “k” bits se convierte en un código de
“n” bits, con “n = k + 1”.
• El bit extra (BIT DE PARIDAD) se selecciona de
forma que la cantidad de “1”s en el código sea
PAR.
• La mínima distancia Hamming, en esta categoría
es:
d min = 2
• Esto significa que el código puede detectar
errores de 1 bit; no puede corregir cualquier
error.
38
Códigos de Paridad
En la figura 09, se muestra un ejemplo, de como se elaboran los códigos
de paridad en que k=5 y n=4 (Long. del dato y del código respectivo).
Codificador Decodificador
Palabras de datos Palabras de datos
a3 a2 a1 a0 a3 a2 a1 a0
Aceptar
Descartar
Lógica de
Síndrome
decisión
s0
Generador
Comprobador
Bit de paridad
Transmisión
a3 a2 a1 a0 r0 b3 b2 b1 b0 q0
no fiable
41
Fig. 10.- Codificador y decodificador para un código de Paridad
Códigos de Paridad
43
Códigos de Paridad de dos dimensiones
44
Fig. 11.- Código de paridad de dos
dimensiones
Diseño de paridades para filas y columnas
1 1 0 0 1 1 1 1
1 0 1 1 1 0 1 1
0 1 0 1 0 0 1 1
0 1 0 1 0 1 0 1
Paridades de las columnas
45
Fig. 11.- Código de paridad de dos
dimensiones
Un error afecta a dos paridades
1 1 0 0 1 1 1 1
1 0 1 1 1 0 1 1
0 1 0 1 0 0 1 1
0 1 0 1 0 1 0 1
1 1 0 0 1 1 1 1
1 0 1 1 1 0 1 1
0 1 0 1 0 0 1 1
0 1 0 1 0 1 0 1
1 1 0 0 1 1 1 1
1 0 1 1 1 0 1 1
0 1 0 1 0 0 1 1
0 1 0 1 0 1 0 1
1 1 0 0 1 1 1 1
1 0 1 1 1 0 1 1
0 1 0 1 0 0 1 1
0 1 0 1 0 1 0 1
Codificador Decodificador
Palabras de datos Palabras de datos
a3 a2 a1 a0 a3 a2 a1 a0
Síndrome Lógica de
decisión
s2 s1 s0
Generador
Comprobador
Transmisión
a3 a2 a1 a0 r2 r1 r0 no fiable
b3 b2 b1 b0 q2 q1 q0
55
Código de Hamming
Error no q0 q1 b2 q2 b0 b3 b1
56
Códigos Cíclicos
Codificador Decodificador
Palabras de datos Palabras de datos
a3 a2 a1 a0 a3 a2 a1 a0
0 0 0
Lógica de
Síndrome
decisión
Divisor
s2 s1 s0
Resto
Transmisión
a3 a2 a1 a0 r2 r1 r0 no fiable b3 b2 b1 b0 q2 q1 q0
63
FEC
• El FEC es adecuado, para sistemas sin retorno
o sistemas en tiempo real donde no se puede
esperar a la retransmisión para mostrar los
datos.
• Las Normas de Transmisión de Televisión
Digital usan Forward Error Correction.
• En la actualidad se utiliza para decodificar este
tipo de códigos el Algoritmo de Viterbi, por su
gran eficiencia en el consumo de recursos.
64
Códigos de Error
Concatenados
• Forman una clase de códigos de error de
corrección que se derivan de la combinación
de un Inner Code y un Outer Code.
• Es un súper código que permite decrecer
exponencialmente en la probabilidad de
error, aun cuando se incremente la longitud
de un bloque
65
Códigos de Error
Concatenados
• Fueron concebidos en 1966 por DAVE
FORNEY
SUPER CANAL
66
Códigos Reed-Solomon
67
Códigos Reed-Solomon
• Los códigos Reed-Solomon se utilizan para
corregir errores en varios sistemas incluyendo:
– Dispositivos de Almacenamiento (Cintas,
Discos Compactos, DVD, códigos de barras)
– Comunicaciones inalámbricas o móviles
(Telefonía celular, enlaces de microondas, etc.)
– Comunicaciones satelitales
– Televisión Digital/DVB
– Módem de alta velocidad como ADSL, xDSL,
etc.
68
Códigos Reed-Solomon
• Los códigos Reed-Solomon se desarrollaron en 1960 en
los laboratorios de Texas Instrument, por el aporte de los
PhD en Matemáticas; Irving Reed y Gustavo Solomon
ambos también investigadores del MIT.
• Las naves Voyager y Galileo usan en sus transmisiones
al código RS como detector de errores.
69
Códigos Reed-Solomon
• Las naves Voyager y Galileo hasta hoy
usan en sus transmisiones al código RS
como detector de errores.
La sonda espacial
robótica Voyager
1, fue lanzada el 5
de septiembre de
1977, desde Cabo
Cañaveral, Florida
Actualmente se
aleja del sistema
solar, ya paso la
orbita de Plutón.
70
Códigos Reed-Solomon
• Es un código de bloques, que separan el
flujo de datos en bloques de k-bits, y (n-k)
bits de chequeo son agregados en estos
bloques.
• Esto es referenciado como un bloque de
código (n,k). Por ejemplo un código
(15,11) tiene 15 palabras de código,
cuatro bits de paridad y el resto de bits de
datos.
71
Códigos Reed-Solomon
• El codificador R-S toma un bloque de
información digital y añade bits
redundantes.
• El decodificador procesa cada bloque e
intenta corregir los errores y recuperar la
información original.
• El número y tipo de errores que pueden
ser corregidos depende de las
características del código R-S.
72
Propiedades de los Códigos
Reed-Solomon
• Un código Reed-Solomon se especifica como
RS (n,k) con símbolos de “s” bits.
n
K 2t
DATA PARIDAD
74
Propiedades de los Códigos
Reed-Solomon
• Un código popular Reed-Solomon es
RS(255,223) con símbolos de 8 bits.
• Cada palabra de código contiene 255 bytes de palabra
de código, de los cuales 223 bytes son datos y 32 bytes
son paridad.
• Para este código se tiene:
• N = 255, k = 223, s = 8
• 2t = 32, t = 16
• El decodificador puede corregir cualquier error
de 16 símbolos en la palabra de código, es
decir, errores de hasta 16 bytes en cualquier
lugar de la palabra pueden ser automáticamente
corregidos.
75
INNER CODE
• Las normas DVB-S y DVB-T no consideran
suficiente el algoritmo RS, por consiguiente
ellos agregan (además de RS) otro sistema de
corrección, mucho más poderoso, llamado
"Inner Code”, en este caso el FEC.
• El “Inner Code" agrega datos de corrección
futura: por ejemplo agrega 1 bit de corrección
cada 7 bits (Code Rate 7/8), o 1 bit de
corrección cada 2 bits (Code Rate 2/3), y así
sucesivamente.
76
INNER CODE: FEC
• Code Rates altos (ej., 7/8) permite optimizar
el BW pero menor eficacia del FEC (la
posibilidad del receptor de corregir
pequeños errores en los datos).
77
NUEVOS CODIGOS: BCH y LDPC
• Para las nuevas técnicas de
transmisión de TV Digital tipo DTH en
el estándar DVD-S2 se tienen nuevos
códigos de corrección como el BCH
que concatenados con el LDPC,
permiten mayor robustez al sistema,
inclusive con relaciones S/N mucho
mas baja.
78
Código BCH (De bloque)
• Código BCH: es novedoso y muy importante
dado que existe para un amplio rango de tasas,
logrando una ganancia de código significativa y
pudiendo ser implementado aún en altas
velocidades. m− 1
n = 2 ;m ≥ 3
2m −1
El nº de errores que puede corregir: t<
2
Se puede generalizar para crear clases de
códigos no-binarios,
no-binarios que usan m bits por
símbolo de código.
79
CODIGOS LDPC
(Low Density Parity Codes)
• Son un tipo de códigos de paridad.
• Tienen un matriz de paridad dispersa
(es decir con pocos “unos” respecto a
los “ceros”).
• Para un código (n,k), H es una matriz
de chequeo de n-k por n.
• Solo unos pocos bits (4 a 6) participan
en cada ecuac. del chequeo de paridad
80
CODIGO LDPC (n.k)
CODIGOS LDPC
(Low Density Parity Codes)
• Estos proveen una mejor eficiencia en la
corrección de errores, en standares
como el:
– DVB-S2 – Comunicaciones Satelitales
– IEEE 802.3an (10GBASE-T)
– IEEE 802.16e (WiMAX)
– IEEE 802.11n/ac (Wi-Fi)
– Comunicaciones Móviles UMTS y LTE.
82