Códigos Detectores y Correctores de Errores
El error es la alteración del valor correcto en uno o más bits de información producida durante su almacenamiento, transmisión o manipulación.
Cuando se transmite información entre sistemas digitales, se puede producir pérdida de información debido a problemas de ruido, deformación de la señal (desadaptación de impedancias, ancho de banda, "crosstalk", etc.).
Los errores en un sistema de comunicaciones digitales se producen fundamentalmente por dos tipos de fallas:
• Eventos estáticos
• Eventos dinámicos
Los eventos estáticos (EE) son aquellos de comportamiento y existencia conocidos, como podría ser: distorsión de señal, pérdida por atenuación, “crosstalk”, etc.
Los eventos dinámicos (ED) son aquellos que ocurren en forma aleatoria, como sería los disturbios eléctricos producido por descargas atmosféricas, transitorios en líneas eléctricas de alimentación, etc, y todo aquello que por su naturales no se pueda prever su ocurrencia.
Aquellos provenientes de EE son más fáciles de manejar, ya que sus efectos son predecibles, no sucede lo mismo con los ED, cuya naturaleza aleatoria los hace impredecibles. Hay muchos métodos y códigos sofisticados, siendo posible en algunos casos recuperar la información transmitida. Para poder detectar o incluso corregir posibles errores en la información, es preciso añadir información redundante de comprobación.
La redundancia (R) es la información agregada a los datos (D) de acuerdo con alguna formulación matemática conocida. El proceso de detección de errores consiste en comprobar si el conjunto datos/redundancia (D,R) cumple o no dicho formulación, entonces:
• Si la formulación se cumple, se asume que la información es correcta.
• Si la formulación no se cumple, está claro que la información contiene errores.
Si la información redundante agregada permite conocer cuáles son los bits erróneos, es posible realizar la corrección de los mismos y reconstruir la información original.
Chequeo de Redundancia Cíclica (CRC)
Este método es mucho más efectivo que los anteriores en la detección de errores en los sistemas de comunicaciones. No permite la corrección de errores.
En este método, en forma similar a los anteriormente descriptos, se envía uno o más caracteres adicionales de redundancia denominados FCS ("frame check sequence") o BCC ("block check caracter"), que difieren fundamentalmente en la forma de calcularlo.
El CRC consiste en considerar a los bits a ser transmitidos como un polinomio en x (para n bits el orden es n-1) tal que la presencia de un término significa un "1", y la ausencia, un "0"; es decir: sean 1010101 los bits a transmitir, entonces el mensaje podrá ser considerado como un polinomio G(x) tal que:
G(x) = x7 + x5 + x3 + 1
Códigos Hamming
El código Hamming es un código de distancia 3, capaz de detectar errores dobles y corregir si hay un error simple. El código Hamming se forma por n bits de información (Mn, Mn-1, ... M1) y k bits de chequeo (Ck, Ck-1, ..... C1) de paridad par o impar. El mensaje codificado está formado por n + k bits, siendo k el menor entero que cumple que:
2k≥ n+k+1
(por ejemplo, si n = 7, entonces k = 4).
Hamming es un código capaz de corregir un error simple por lo tanto debe identificar un bit erróneo en una cadena de bits. Entonces la ecuación [7] nos dice que el número de combinaciones de los bits de chequeo (2
k) debe ser al menos igual al número de bits del mensaje más los bits de redundancia más una combinación extra para identificar que no hubo
errores.
Los bits de chequeo ocupan posiciones específicas en el mensaje codificado. Esas posiciones son potencias enteras de 2, es decir 1,2,4,8, .... 2
k-1, es decir que los bits de paridad se ubican en los posiciones que tienen un único bit a 1 en su ordinal.
La conversión de números enteros y fraccionarios decimales en binarios, se lleva a cabo por sucesivas divisiones y multiplicaciones, respectivamente, por la base (2). Números Enteros
Como resultado de la división de un número decimal por dos, se obtiene un cociente Q y un resto R. Los restos que se obtienen de las sucesivas divisiones son los bits del número binario. El resto R es siempre un número entero menor que el divisor (dos en este caso), por lo tanto R puede ser 0 ó 1.
Conversión Decimal-Hexadecimal
La conversión de números enteros y fraccionarios decimales a hexadecimales se lleva a cabo por sucesivas divisiones y multiplicaciones, respectivamente, por la base (16).