El ejemplo integral de la Unidad 6 · el mensaje 11001 codificado, tres errores en 2, 7 y 13, y el decodificador entero: seis síndromes, el algoritmo iterativo binario, la búsqueda de Chien y la corrección
El ejercicio recorre un decodificador BCH entero sobre un solo ejemplo. El código es el código BCH (15,5) con , sobre , cuyo polinomio generador es el MCM de los polinomios mínimos de , y :
con , y . Su distancia mínima es 7: es el mismo (15,5) de la clase práctica de la Unidad 5, visto ahora desde sus raíces. El cuerpo es el de la Tabla 1 del apunte, con y . Los vectores van con la posición 0 a la izquierda.
Planteado como ejercicio, el ejemplo integral del apunte pide:
Antes de resolver: qué se entrega. Seis cosas de forma distinta. Dos vectores binarios de quince bits, y . Seis elementos de , escritos como potencias de . Una tabla de filas que termina en un polinomio de grado a lo sumo 3 con coeficientes en el cuerpo. Tres posiciones. Y, al final, cinco bits que tienen que ser los del principio.
El mensaje, leído con la posición 0 a la izquierda, es
La Tabla 1. Todas las cuentas del decodificador son sumas y productos en . Se multiplica sumando exponentes módulo 15, porque ; se suma con el vector , bit a bit.
| Potencia | Polinomio | Vector | Potencia | Polinomio | Vector |
|---|---|---|---|---|---|
| 0000 | 1101 | ||||
| 1000 | 1010 | ||||
| 0100 | 0101 | ||||
| 0010 | 1110 | ||||
| 0001 | 0111 | ||||
| 1100 | 1111 | ||||
| 0110 | 1011 | ||||
| 0011 | 1001 |
Codificar es una división. Como en cualquier código cíclico, la paridad es el resto de correr el mensaje lugares y dividirlo por , y la palabra es la paridad seguida del mensaje:
Los síndromes son evaluaciones. Con y el patrón de error, el síndrome es evaluado en . Como las seis potencias son raíces de , la palabra no aporta nada:
La segunda igualdad es de los códigos binarios: elevar al cuadrado una suma es sumar los cuadrados. Sólo hay que evaluar , y . Lo explica la nota de los síndromes y el localizador.
El localizador. Si los errores están en , los números localizadores son y el polinomio localizador es
Sus raíces son los inversos de los localizadores, y su grado es la cantidad de errores.
El algoritmo iterativo binario. Es la versión de Berlekamp-Massey para códigos binarios: iteraciones, sólo sobre los síndromes impares. La fila guarda , su grado y la discrepancia, que mide cuánto le falta para generar el síndrome siguiente:
Si , el polinomio pasa igual a la fila siguiente. Si no, se busca entre las filas anteriores con discrepancia no nula la que tenga el mayor , y se corrige:
con grado . La tabla arranca con dos filas fijas: , con , y ; y , con y . Termina en la fila .
La búsqueda de Chien. Se evalúa en . Si es raíz, su inverso es un localizador, y la posición errada es . La búsqueda de Chien encadena las evaluaciones: el término pasa al siguiente multiplicado por .
Las dos comprobaciones. Antes de corregir: que el grado de no pase de , y que Chien encuentre tantas raíces distintas como ese grado. Si alguna falla, el decodificador declara falla de decodificación en vez de corregir.
Primero pensar. tiene grado 14 y grado 10: el cociente tiene grado 4 y la división, a lo sumo cinco pasos. Cada paso suma para matar el término de mayor grado, hasta que el resto baja de grado 10.
Después escribir.
Hubo tres pasos y no cinco, porque el cociente sólo tiene término donde el resto parcial lo pide. Después de el término más alto es y no , así que no hay en el cociente; y después de el resto ya tiene grado 8, así que tampoco hay término independiente. El cociente es y la paridad, como vector de diez posiciones, . La palabra es
de peso 7, el mínimo del código. El control: da exactamente , o, lo que es lo mismo, para .
Los errores son : el bit 2 pasa de 0 a 1, el 7 de 1 a 0 y el 13 de 0 a 1.
Primero pensar. El decodificador no conoce : evalúa , que tiene ocho términos. Para se suman las ocho potencias de con la Tabla 1. Para y conviene reducir antes los exponentes módulo 15: muchos se repiten y se cancelan de a pares.
Después escribir. , en vectores:
: los exponentes de las ocho posiciones son 3, 6, 18, 24, 30, 33, 39 y 42, que módulo 15 dan 3, 6, 3, 9, 0, 3, 9, 12. El aparece tres veces y queda una; el , dos, y se va:
: los exponentes son 5, 10, 0, 10, 5, 10, 5, 10. Tres dejan uno y cuatro se cancelan:
Los pares, elevando al cuadrado: , y .
El control. Con los tres errores a la vista, las mismas cuentas salen por otro camino, con tres términos en lugar de ocho: , y . Coinciden porque se anula en las seis raíces; si la palabra del punto 1 estuviera mal, acá no coincidirían.
Primero pensar. Con hay tres iteraciones, , y cada una usa un síndrome impar nuevo: , , . Si hay tres errores, el grado tiene que subir hasta 3. Si una discrepancia diera cero, el polinomio no cambiaría en ese paso.
Fila 0. , no nula. La única fila anterior con discrepancia no nula es . El corrimiento es y el factor :
Fila 1. La discrepancia usa , y el recién calculado:
Hay dos candidatas a : , con , y , con . Gana . El corrimiento es y el factor :
Fila 2. Con y :
Ahora hay tres candidatas, con igual a −1, 0 y 1: gana . Corrimiento , factor , y el que se suma es :
porque . El grado sube a , y con el algoritmo termina:
El control. Para el método de Peterson tiene fórmula cerrada, con otras cuentas: ; y , así que y . El mismo polinomio.
Primero pensar. Un polinomio de grado 3 sobre un cuerpo de 16 elementos se resuelve probando: hay quince candidatos no nulos. Si los errores son tres y es el correcto, exactamente tres de las quince evaluaciones dan cero.
Después escribir. Los tres registros arrancan en , y , y en cada paso se multiplican por , y . La suma con el 1 es :
| l | σ₁αˡ | σ₂α²ˡ | σ₃α³ˡ | σ(αˡ) | Posición |
|---|---|---|---|---|---|
| 0 | — | ||||
| 1 | — | ||||
| 2 | 13 | ||||
| 3 | — | ||||
| 4 | — | ||||
| 5 | — | ||||
| 6 | — | ||||
| 7 | — | ||||
| 8 | 7 | ||||
| 9 | — | ||||
| 10 | — | ||||
| 11 | — | ||||
| 12 | — | ||||
| 13 | 2 | ||||
| 14 | — |
La fila 2, sumada a mano:
Las raíces son , y . Sus inversos, , y , son los localizadores: los errores están en las posiciones 13, 7 y 2.
Cambiá el mensaje en cualquier etapa después de los síndromes: la palabra cambia, la recibida también, y los seis síndromes no se mueven. Después sacá el error de la posición 13 y mirá la fila 2: su discrepancia da cero, y el polinomio llega a la última fila con grado 2. Y por último agregá un cuarto error.
1. La paridad es el resto de por , , con cociente . La palabra es , o .
2. .
3. , , , , , . Los pares son los cuadrados de , y .
4. La tabla del algoritmo iterativo binario, la Tabla 8 del apunte:
| μ | σ⁽μ⁾(X) | d_μ | l_μ | 2μ − l_μ |
|---|---|---|---|---|
| 0 | −1 | |||
| 0 | 0 | 0 | ||
| 1 | 1 | 1 () | ||
| 2 | 2 | 2 () | ||
| 3 | — | 3 | 3 () |
Al lado de cada va la con la que se armó esa fila. .
5. se anula en , y . Los localizadores son , y : posiciones 13, 7 y 2.
6. El grado de es 3, que no pasa de , y Chien encontró tres raíces distintas: la decodificación es consistente. Con , , y las cinco últimas posiciones devuelven .
El síndrome no ve el mensaje. Los seis síndromes dependen sólo de los errores. Con los errores en 2, 7 y 13, los 32 mensajes posibles dan los mismos seis valores: desde los síndromes en adelante, la cuenta es la misma para cualquier mensaje. El mensaje de un ejercicio así sirve para armar y para comprobar el final, nada más.
El grado de cuenta los errores, y la discrepancia nula lo muestra. Con un solo error, en la posición 7, y . Con dos, en 2 y 13, y . En las dos tablas, recorridas con el decodificador, el polinomio deja de cambiar en cuanto su grado llega a la cantidad de errores. El atajo de terminar antes de la fila cuando las discrepancias siguientes son nulas sale de acá.
Peterson es el control para . La fórmula cerrada no comparte cuentas con el algoritmo iterativo: si los dos dan el mismo , la tabla está bien.
Con un error de más, el decodificador no siempre avisa. A los tres errores del ejemplo se les puede agregar un cuarto en doce posiciones. Recorridas las doce con el decodificador: en ocho declara falla, porque sale de grado 3 y Chien no le encuentra ninguna raíz; en las otras cuatro —1, 5, 12 y 14— corrige tres posiciones y entrega, sin aviso, la misma palabra equivocada. Esa palabra difiere de justo en , una palabra de peso 7 que contiene a las tres posiciones del ejemplo. Por qué la cuenta la hacen esas palabras es la tesis de pasado t, la cuenta la hacen las palabras livianas.
En hardware, la mitad de los síndromes no se calcula. El circuito evalúa , y , y los pares salen elevando al cuadrado, que en es lineal. Las tres etapas, con su costo, están en el decodificador BCH en hardware.
Las raíces no son las posiciones. se anula en , y . Leer esos exponentes como posiciones da 2, 8 y 13, y en este ejemplo dos de los tres coinciden con los errores verdaderos —2 y 13 son inversos entre sí, porque suman 15—, así que el error se esconde. La posición es : la raíz marca la posición 7, no la 8.
es la de mayor , no cualquiera. En la fila 2 hay dos filas anteriores con discrepancia , la 0 y la 1. Con el corrimiento sería , el factor , y saldría : grado 4, más que . El decodificador declararía falla sobre un patrón que sabe corregir.
El corrimiento es . En la versión binaria las filas avanzan de a dos síndromes. Por eso la primera corrección, desde , corre una posición, y las otras dos corren dos.
Los exponentes se reducen. es , y no está en la Tabla 1. Lo mismo con los y de los síndromes: reducirlos primero es lo que deja ver las cancelaciones.
El mensaje está al final de la palabra. En la forma sistemática del apunte la paridad ocupa las posiciones 0 a 9 y el mensaje las 10 a 14. Los cinco primeros bits de son 01000, y eso es paridad, no el mensaje.
La última fila no tiene discrepancia. En el algoritmo termina: no hay con qué calcularla, y la casilla queda vacía.