Bibliografía:
- “Digital communication, fundamentals and applications”. Bernard Sklar.
Prentice Hall. International 1985.
- “Wireless Digital Communication” Dr. Kamilo Feher. Prentice Hall. 1995.
- “Equipos electrónicos para la transmisión de datos” Juan V. Lorenzo Ginari
- “Transmisión de datos, teleprocesamiento y redes de computadoras”
Eduardo Mejía Torres.
- “Error Correcting Codes” Peterson and Weldon. 1972.
Ejemplo:
100101 110010 011001
Las principales ventajas que ofrecen los códigos cíclicos (por lo que se usan
ampliamente en la práctica):
- Es posible diseñar códigos cíclicos para detectar o corregir errores de la
multiplicidad que se desee, empleando la cantidad adecuada de bits
redundantes.
- Los códigos cíclicos son capaces de detectar ráfagas de errores.
Ráfagas: Consisten en un grupo de errores que tienen lugar
concentrados en cierto período de tiempo. (Producidas por canales
con ruido impulsivo).
- Los circuitos codificadores y decodificadores son sencillos.
Es usual, en el trabajo con códigos cíclicos, representar las palabras binarias
mediante polinomios.
Las palabras binarias se representan por medio de polinomios. Si a la aparición
de un 1 en determinada posición i de la palabra de código se asocia el término x i
partiendo de que para el bit menos significativo i = 0.
Ejemplos:
i=5 i=0
Al representar las palabras de código de esta forma es posible realizar
operaciones algebraicas con palabras completas utilizando los polinomios
correspondientes.
Ejemplos de operaciones:
x5 +x4 + x3 + x x2 +1
5
x x3 x3 + x2 +1 Cociente de la división
4
x +x (1101)
x4 + x2
x2+ x
2
x + 1
x+1 Resto de la división
(11)
Esta división se puede hacer empleando de forma abreviada los propios dígitos de
la secuencia binaria. Retorno al segundo paso.
111010 101
101 1101 Cociente de la división
100
101 No cabe, bajo el otro dígito
110
101
11 Resto de la división
Las sumas son módulo 2 (que son restas) y se divide de igual forma, mucho más
sencillo y compacto.
La regla anterior tiene una implicación, por propiedades de las operaciones con
polinomio, si F1(x) y F2(x) son dos palabras válidas del código (divisibles ambas
por el polinomio generador P(x)) entonces F1 x F2 x también será una
palabra válida del código.
O sea: la suma módulo 2 de dos palabras válidas del código dan como resultado
otra palabra válida del código.
Ejemplo:
Si F(x) = 10011 y se necesita B(x) con un error en la tercera posición.
B(x) = 10111
E x F x B x E(x) 00100 (palabra que indica con un 1 la posición donde está
el error)
Ejemplo de codificación:
Palabra de 10 bitios de información, k = 10.
Para obtener palabras de código de longitud, n = 15.
Codifiquemos la palabra: 1000100101.
Emplearemos el polinomio generador: P(x) = x5 + x4 + x2 + 1. (110101).
Primer paso:
k = 10, n = 15, por lo que b = n-k, b = 5.
Observar que la cantidad de bits de chequeo coincida con el grado del polinomio
generador P(x).
La palabra a codificar es: 1000100101
Cuyo polinomio G(x) correspondiente es: G(x) = x9 + x5 + x2 +1.
Armamos el producto: G x x b = (x9 + x5 + x2 +1). x5.
G x x b = x14 + x10 + x7 + x5 que corresponde a la palabra binaria:
G(x).x5 = 100010010100000
NOTAR QUE: multiplicar G x x b equivale a adicionar b ceros (5 en este caso) a
continuación de la secuencia representada por G(x).
Segundo paso:
G x x b
Obtención del residuo R(x) de la división de para sumárselo (módulo 2) a
P x
F x G x x b R x y armar de esta forma la palabra codificada.
G x x b x 14 x 10 x 7 x 5
5
P x x x4 x2 1
Dividiéndolo de la forma sintética, como hicimos en el ejemplo de la división.
Entonces dividiríamos:
100010010100000 entre 110101, dando como residuo 11.
Para conformar la palabra codificada debemos sumar módulo 2:
F x G x x b R x
de forma binaria es más sencillo, los términos de R(x) se colocan en las
posiciones menos significativas.
G x x b = 100010010100000
R x = 11
F(x) = 100010010100011
Los últimos b dígitos (cinco en este caso) representan el residuo R(x) añadido.
Para la detección de errores en códigos cíclicos.
Se recibe la palabra B(x) que será B x F x E x .
Si B(x) no es divisible por P(x), entonces se detecta que ha ocurrido un error.
Si B(x) es divisible por P(x), entonces el error o los errores serán indetectables.
B x E x
Q x
P x P x
E x
Donde sería el residuo, que igual a cero no ocurrió error o no se detectó y
P x
si es diferente de cero entonces ocurrió error.
Anexo
Propiedades y teoremas asociados a los polinomios generadores de los
códigos cíclicos.
Un código perfecto es aquel que satisface de forma exacta el límite de Hamming.
2 3
2 b 1 n n n ... n
k
b: Número de bits de chequeo.
k: Multiplicidad del error que se desea corregir.
n: Longitud total de la palabra de código.
Como j-i < n y n < e por condición del teorema, entonces j-i < e, y como P(x)
pertenece a e, entonces:
( xe + 1) es el polinomio de menor grado divisible por P(x) como j-i < e, entonces
( xj-i + 1)no será divisible por P(x) por lo que habrá un residuo diferente de cero y
se detectará el error doble si P(x)pertenece a e y la longitud de las palabras es
n e.
Dice el teorema:
Cualquier código cíclico generado por una un polinomio de grado b, es capaz de
detectar todas las ráfagas de longitud b o menor. L b.
Demostración:
En caso de ocurrencia de ráfagas de error, la palabra de error puede ser
descompuesta en factores:
E(x)=xi. E1(x)
i: número de orden del bitio que aparece en la posición de error menos
significativa.
Si la longitud de la ráfaga es L, el grado de E 1(x) será L-i .
Parta que al ráfaga sea detectada E(x) no puede ser divisible por P(x), como P(x)
tiene más de un término, xi no será divisible por P(x).
Entonces para detectar la ráfaga basta con que E 1(x) no sea divisible por P(x).
Como, por condición del teorema L b, entonces L-i < b, y este sería el grado de
E1(x).
Como el grado de P(x) es b, entonces E1(x) no es divisible por P(x)