[Link].
ec
UNIVERSIDAD TÉCNICA DEL
NORTE
FACULTAD DE INGENIERIA EN CIENCIAS APLICADAS (FICA)
CARRERA DE ELECTRÓNICA Y REDES DE COMUNICACIÓN
Cauja María José
Díaz John
Obando Jean Paul
Tobar Katherine
Ibarra, 17/11/2018
Códigos de detección y
corrección de errores
Introducción
• Los diseñadores de redes han desarrollado dos estrategias básicas
para manejar los errores. Ambas añaden información redundante a
los datos que se envían. Una es incluir suficiente información
redundante para que el receptor pueda deducir cuáles debieron ser
los datos transmitidos. La otra estrategia es incluir sólo suficiente
redundancia para permitir que el receptor sepa que ha ocurrido un
error (pero no qué error) y entonces solicite una retransmisión. La
primera estrategia utiliza códigos de corrección de errores; la
segunda usa códigos de detección de errores.
• El uso de códigos de corrección de errores por lo regular se conoce
como FEC (Corrección de Errores hacia Adelante, del inglés Forward
Error Correction).
Código de corrección de errores directa (FEC)
• La corrección de errores hacia adelante (en inglés, Forward Error Correction o
FEC ) es una técnica de procesamiento de señales digitales que se utiliza para
mejorar la confiabilidad de los datos.
• La FEC se utiliza en canales ruidosos puesto que las retransmisiones tienen la
misma probabilidad de ser tan erróneas como la primera transmisión.
• Se utiliza en sistemas sin retorno o sistemas entiempo real donde no se puede
esperar a la retransmisión para mostrar los datos. en las comunicaciones vía
satélite, en las grabadoras de DVD y CD o en las emisiones de TDT para terminales
móviles (estándar DVB-H)
•
FEC: Funcionamiento
• FEC agrega redundancia a la información transmitida usando un
algoritmo predeterminado. Los bits redundantes son funciones
complejas de los bits de información originales. Los bits se envían
varias veces(dos veces), porque puede aparecer un error en
cualquiera de las muestras transmitidas. Los códigos FEC
generalmente detectan el último conjunto de bits para determinar la
decodificación de un pequeño puñado de bits.
• Dos categorías importantes de códigos FEC son códigos convolucioles
y códigos de bloque.
FEC: Códigos de Bloques
• Un código de bloque es sistemático si las palabras de código se
pueden dividir en una parte de datos y en una parte redundante.
• En un código de bloque, los r bits de verificación se calculan
únicamente en función de los m bits de datos con los que se asocian,
como si los m bits se buscaran en una gran tabla para encontrar sus
correspondientes r bits de verificación.
FEC: Códigos Convolucionales
• Los códigos convolucionales se especifican en términos de su tasa de
• transmisión y su longitud de restricción.
• Los códigos convolucionales se utilizan mucho en las redes
implementadas; por ejemplo, como parte del sistema de telefonía
móvil GSM, en las comunicaciones de satélite y en 802.11.
• Los códigos convolucionales han sido populares en la práctica, ya que
es fácil ignorar la incertidumbre de que un bit sea 0 o 1 en la
decodificación.
Código de redundancia
cíclica
En informática, CRC hace referencia a cyclic redundancy check, también
llamado polynomial code checksum. En español, control de redundancia
cíclica o comprobación de redundancia cíclica.
CODIGO DE REDUNDANCIA CÍCLICA
• El CRC es una función diseñada para detectar cambios accidentales en
datos de computadora y es comúnmente usada en redes digitales
y dispositivos de almacenamiento (como discos duros).
El CRC fue creado por W. Wesley Peterson en 1961; el polinomio de
32 bits usado en funciones CRC de Ethernet (y otros estándares) fue
publicado en 1975.
El CRC es muy popular por su simpleza de implementación, fácil de
analizar matemáticamente y es muy bueno detectando errores
causados por ruidos en los canales de transmisión.
FUNCIONAMIENTO DEL CRC
• A cada bloque de datos le corresponde una secuencia fija de números binarios
conocida como código CRC (esto se calcula con una misma función para cada
bloque). Ambos se envían o almacenan juntos. Cuando un bloque de datos es leído
o recibido, dicha función es aplicada nuevamente al bloque, si el código CRC
generado no coincide con el código CRC original, entonces significa que el bloque
contiene un error. Eso hará que el dispositivo intente solucionar el error releyendo
el bloque o requiriendo que sea enviado nuevamente.
Si coinciden ambos códigos CRC, entonces se asume que el bloque no contiene
errores (existe una remota posibilidad de que haya un error sin detectar).
• El nombre "control/comprobación de redundancia cíclica" se debe a que se
"controla" (verificación de datos) un código redundante (no agrega nueva
información, el código CRC representa el mismo bloque de datos) y el
algoritmo está basado en códigos cíclicos.
Es importante destacar que el número de caracteres de entrada a la función
CRC puede tener cualquier longitud, pero siempre producirá un código CRC
de igual longitud.
•Se añaden tantos ceros como grado tenga el polinomio generador.
•Se divide el polinomio obtenido por el polinomio generador.
•La división se realiza en módulo 2, que es igual que la división binaria, con dos excepciones:
1 + 1 = 0 (no hay acarreo)
0 - 1 = 1 (no hay acarreo, ni prestamos)
•Las operaciones se hacen con un OR Exclusivo (EXOR)
•Se dice que un divisor “cabe” en un dividendo si el dividendo tiene tanto bits como el divisor.
•El trasmisor y el receptor deben acordar un polinomio generador G(x), por adelantado. Tanto los bit
mayor como menor del generador deben ser 1.
•Y se añade el resto de la división al polinomio original.
Funcionamiento de CRC.
El destinatario Divide el Mensaje Codificado por el mismo Divisor y si el resto
da 0 el mensaje es correcto.
Código Hamming
Los códigos Hamming se utilizan para insertar información de corrección de
errores en los flujos de datos. Los códigos están diseñados de manera que un
error no sólo se pueda detectar, sino que sea corregido. La suma de
información de corrección de errores incrementa la cantidad de datos, sin
embargo, aumenta la fiabilidad de las comunicaciones en medios con altas
tasas de error.
Código Hamming
• La codificación Hamming puede ser difícil de implementar, sin embargo, puede
ser muy rápida utilizando trucos aritméticos a nivel de bits. Esto hace que sea un
sistema de corrección de errores útil para aplicaciones embebidas y de alta
velocidad.
• Publicado en 1950 por Richard Hamming
• Se puede detectar un error en un bit y corregirlo
• Para errores en dos bits se utiliza Hamming Extendido (Pero no corrige)
• Se utiliza para reparar errores en la transmisión de datos, donde haber perdidas.
Bits pariedad/Bis datos
• Bits de pariedad: Bits cuya posición es potencia 2 (1,2,4,8,16,32….)
• Bits de datos: Bits del resto de posiciones (3,5,6,7,9,10,11,12…..)
Ejemplo: 0110101
P1 P2 D1 P3 D2 D3 D4 P4 D5 D6 D7
0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011
Palab 0 1 1 0 1 0 1
ra
P1 1 0 1 0 1 0 1
P2
P3
P4
P1 P2 D1 P3 D2 D3 D4 P4 D5 D6 D7
0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011
Palab 0 1 1 0 1 0 1
ra
P1 1 0 1 0 1 1
P2 0 0 1 0 0 1
P3
P4
P1 P2 D1 P3 D2 D3 D4 P4 D5 D6 D7
0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011
Palab 0 1 1 0 1 0 1
ra
P1 1 0 1 0 1 1
P2 0 0 1 0 0 1
P3 0 1 1 0
P4
P1 P2 D1 P3 D2 D3 D4 P4 D5 D6 D7
0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011
Palab 0 1 1 0 1 0 1
ra
P1 1 0 1 0 1 0 1
P2 0 0 1 0 0 1
P3 0 1 1 0
P4 0 1 0 1
P1 P2 D1 P3 D2 D3 D4 P4 D5 D6 D7
0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011
Palab 0 1 1 0 1 0 1
ra
P1 1 0 1 0 1 0 1
P2 0 0 1 0 0 1
P3 0 1 1 0
P4 0 1 0 1
Palab 1 0 0 0 1 1 0 0 1 0 1
ra
Comprobando error
• Ahora supongamos que el 3° bit de derecha a izquierda cambia de 1 a
0, la nueva palabra seria:
• 10001100101 => 10001100001
P1 P2 D1 P3 D2 D3 D4 P4 D5 D6 D7 BIT PARIEDAD
0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011
Palab 0 1 1 0 0 0 1
ra
0 1 1
P1 1 0 1 0 0
0 1 0
P2 0 0 1 0
P3 0 1 1 0 0
P4 0 0 1 1
0
Palab 1 0 0 0 1 1 0 0 0 0 1
ra
Corrigiendo error
• Los bits de parada nos dicen que el error esta en la posición
1001 = 9
• El error esta en el 9° bit
10001100001
REED SALOMON
INTRODUCCION
• Es un código cíclico no binario y constituye una subclase de los códigos BCH.
Los códigos cíclicos son una subclase de los códigos de bloque estándar de
detección y corrección de errores que protege la información contra errores
en los datos transmitidos sobre un canal de comunicaciones.
• Este tipo de código pertenece a la categoría FEC (Forward Error Correction),
es decir, corrige los datos alterados en el receptor y para ello utiliza unos bits
adicionales que permiten esta recuperación a posterior.
• En la actualidad, los códigos Reed-Solomon se utilizan para corregir errores
en varios sistemas incluyendo los dispositivos de almacenamiento: cintas,
discos compactos, DVD, códigos de barras, etc.
• comunicaciones inalámbricas o móviles –telefonía celular, enlaces de
microondas, etc
• Los códigos Reed-Solomon se basan en un área especialista de la
Matemática llamada campos Galois (GF) o campos finitos. Un campo
finito tiene la propiedad de que las operaciones aritméticas (+,-
,x,/,etc.) en elementos del campo siempre tienen un resultado en el
campo. Un codificador o decodificador Reed-Solomon debe ser capaz
de realizar estas operaciones aritméticas.
COMO FUNCIONA REED- SALOMON
• El codificador Reed-Solomon toma un bloque de información digital y añade
bits redundantes.
• Los errores pueden ocurrir durante la transmisión o almacenamiento de
información por varios motivos (p. Ej. Ruido o interferencia, ralladuras en los
discos compactos etc.).
El decodificador Reed-Solomon 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 Reed-Solomon
PROPIEDADES DE LOS CÓDIGOS
REED- SALOMON
• Los códigos Reed-Solomon son bloques de códigos lineales. Un código
Reed-Solomon es representado como RS(n,k) con símbolos s-bits.
Lo que significa que el codificador toma k símbolos de información de s bits
cada uno y añade símbolos de paridad para hacer una palabra clave de
símbolo n. Hay n-k símbolos de paridad de s bits cada uno.
• Un decodificador Reed-Solomon puede corregir hasta t símbolos que
contengan errores en una palabra clave, donde 2t = n-k.
EJEMPLO
Búsqueda del polinomio generador g(X)
Cálculo de la palabra
código ( n=15)
ERRORES
PRODUCIDOS
EN LA
TRANSMISIÓN
Calculo del Síndrome
CÁLCULO DEL POLINOMIO LOCALIZADOR DE ERROR
O~(X)
DETERMINACIÓN
DE LAS POSICIONES
ERRÓNEAS
Bibliografía
• [Link]
• [Link]
• [Link]
errores/
• [Link]
• [Link]
24e1bddfbc83706da8049f2/138/1/contenido/contenido/cod_hammi
[Link]
• Redes de computadoras; Andrew S. TANENBAUM Y DAVID J.
Wetherall; Pearson Educación, México, 2012
Bibliografía
• [Link]
r/BCH/[Link]
• Comunicaciones Digitales; Antonio A. Rodríguez y Fernando Pérez
González; 2012.
• [Link]
correction-fec