Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Codigos de Errores
Codigos de Errores
Código: IT – 515 –M
Ing. Luis Degregori C.
Códigos de Errores
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
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 algunos 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
k
combinación de 2 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
Extraer
Generador Generador
Descartar
20
Detección de errores.
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
k bits Palabra de datos Palabra de datos k bits
Corregir
Generador Comprobador
00 00000
01 01011
10 10101
11 11110
29
Distancia Hamming.
• La distancia Hamming entre 02 palabras
(del mismo tamaño) es el NUMERO DE
DIFERENCIAS entre los bits
CORRESPONDIENTES.
• La distancia Hamming entre 02 palabras
x e y se simboliza como: d(x,y).
• La distancia Hamming se calcula
aplicando la operación XOR sobre las 2
palabras y contando el numero de bits
resultantes. Será un valor mayor que 0.
30
Mínima distancia Hamming.
• Para diseñar un código de errores, la
mínima distancia Hamming, es la
distancia mas pequeña entre todos los
pares posibles.
• Por ejemplo si la palabra 1100 se daña,
siendo el código recibido el 1011, se
puede determinar que tenemos 03 bits
con errores, luego la distancia Hamming
será:
d(1100,1011) = 3.
31
Mínima distancia Hamming para la
Detección de errores.
• Si queremos detectar “N” errores; la
distancia Hamming será “N”.
• Si queremos detectar hasta un máximo
de “N” errores, la distancia mínima entre
los códigos validos deberá ser “N+1”.
• Así aseguramos que el código recibido
(erróneo) no sea confundido con otro
código valido.
d min = N+1.
32
Mínima distancia Hamming para la
Corrección de errores.
• La función de corrección tiene una mayor
complejidad.
• Cuando se detecta un código erróneo; en el
receptor, se deberá determinar que código se
transmitió realmente.
• Esta decisión esta en función del territorio
requerido alrededor del código.
• Se asume que cada código valido tiene un
territorio circular de radio “t” y el código valido
esta en el centro.(Ver figura 08).
33
Fig. 08.- Concepto geométrico para encontrar la dmin en la
corrección de errores muestra un código para
la corrección de errores.
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).
40
Códigos de Paridad
Emisor Receptor
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
a3 a2 a1 a0 r0
Transmisión b3 b2 b1 b0 q0
no fiable
Palabras código Palabras código
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
0 1 1 1 0 0 1 0
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
0 1 1 1 0 0 1 0
0 1 0 1 0 0 1 1
0 1 0 1 0 1 0 1
1 1 0 0 1 1 1 1
0 1 1 1 0 0 1 0
0 1 0 1 0 0 1 1
0 1 0 1 0 1 0 1
1 1 0 0 1 1 1 1
0 1 1 1 0 0 1 0
0 1 0 1 0 0 1 1
0 1 0 1 0 1 0 1
1 1 0 0 1 1 1 1
0 1 1 1 0 0 1 0
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 b3 b2 b1 b0 q2 q1 q0
51
Código de Hamming
• Aquí el generador crea 03 bits de paridad a
partir de 3 de los 4 bits que componen la
palabra de datos.
• Por ejemplo el generador plantea la ecuación
mostrada (ver fig. 13):
• r0 = a2 + a1 + a0.
• r1 = a3 + a2 + a1.
• r2 = a3 + a1 + a0.
• Además el numero de “unos” en cada
combinación de 4 bits debe ser PAR (03 bit de
Dx. + 01 bit Paridad)
52
Código de Hamming
Palabra de datos Palabra de código Palabra de datos Palabra de código
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
s2 s1 s0
Divisor
Resto
Transmisión
a3 a2 a1 a0 r2 r1 r0 b3 b2 b1 b0 q2 q1 q0
no fiable
Palabras código Palabras código
60
Fig. 15.- Ejemplo de un diseño de Codificador y decodificador CRC
Códigos Cíclicos
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
Codigos 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
Codigos de Error
Concatenados
• Fueron concebidos en 1966 por DAVE
FORNEY
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
• Code Rates bajas (ej., 7/8) permite
posibilidades más bajas de FEC (la
posibilidad del receptor de corregir
errores eventuales en los datos).
77
CORRECCION 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, 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)
Probabilidades por Canal
= = = = = = = = = = = =
+ + + + + + + + +
82