Bitácora · FEC · Concepto

Los códigos acortados

Unidad 4 · Las familias · sacar columnas de H para llegar al largo que pide el sistema, lo que se conserva, los síndromes que quedan libres, el (192,184) y el (128,119) del OIF-400ZR

Los códigos de Hamming vienen en largos 7, 15, 31, 63, 127, 255: cada uno casi el doble del anterior. Un sistema que arma bloques de 192 bits, o de 128, no encuentra ninguno que le sirva. Acortar es la manera de llegar a cualquier largo intermedio, y cuesta poco: la tasa baja un poco, la distancia mínima no baja nada y el código deja de ser perfecto. Lo último suena a pérdida, y es justo lo que después se aprovecha.

01 · La definición

Dado un código (n,k) y un entero 0<ℓ<k, el código acortado en ℓ posiciones son las palabras de código cuyas primeras ℓ posiciones de información valen cero, con esas posiciones suprimidas. Como valen cero siempre, no hace falta transmitirlas: el receptor ya las conoce. Queda un código

(n−ℓ,k−ℓ)

con la misma cantidad de bits de paridad, (n−ℓ)−(k−ℓ)=n−k. Lo que se pierde son bits de información, nada más.

En la forma sistemática G=[IP] la cuenta se ve entera. Fijar u0=…=uℓ−1=0 es no usar las primeras ℓ filas de G; las filas que quedan tienen ceros en las primeras ℓ posiciones, y al suprimirlas sale una G de (k−ℓ)×(n−ℓ) que sigue siendo [IP′], con P′ las últimas k−ℓ filas de P. Del Hamming (15,11) acortado en 3 sale un (12,8), y su matriz de paridad es la del (15,11) sistemático —las columnas de peso ≥ 2 en orden creciente, después la identidad— sin sus tres primeras columnas:

H′=( 110101011000 101100110100 100011110010 011111110001 )

Cuatro filas, como antes, y doce columnas: ocho de información y la identidad de la paridad al final.

02 · Acortar es sacar columnas de H

Que la H del acortado sea la del original sin unas columnas no es casualidad del ejemplo. Sea L el conjunto de las ℓ posiciones que se suprimen y hi la columna i de H.

Paso 1: el criterio de pertenencia, por columnas. Como en el síndrome, vHT es la suma de las columnas donde v tiene un 1:

vHT=∑i:vi=1hi=0

Paso 2: las columnas de L no entran nunca. Una palabra del acortado tiene ceros en L, así que ninguna hi con i∈L aparece en su suma. La ecuación sigue valiendo con H′, que es H sin esas columnas, aplicada a la palabra sin esas posiciones.

Paso 3: y al revés. Un vector de n−ℓ bits que cumple la ecuación con H′, completado con ceros en L, la cumple con H: es una palabra del original con ceros en L. Los dos conjuntos son el mismo, y el acortado es exactamente el código cuya matriz de paridad es H′.

Paso 4: la cuenta de dimensiones. L son posiciones de información, así que las columnas de la identidad siguen en H′ y sus n−k filas siguen siendo independientes. El código tiene dimensión (n−ℓ)−(n−k)=k−ℓ, la que daba la definición.

Leído así, acortar es elegir qué columnas de H se usan. La definición dice «las primeras ℓ de información», pero cualquier conjunto de posiciones de información sirve, y la elección no es indiferente: es el tema de la sección 04.

03 · Lo que conserva y lo que pierde

La distancia mínima no baja. Hay dos razones, y son la misma vista de dos lados. Por las palabras: salvo los ceros suprimidos, el acortado es un subconjunto del original, y el menor peso no nulo de un subconjunto no puede ser menor que el del conjunto entero. Por las columnas: dmin es la menor cantidad de columnas de H que suman cero, y sacar columnas no crea dependencias nuevas.

La tasa baja. La paridad queda igual y la información se achica:

k−ℓn−ℓ<kn⟺ℓk<ℓn

que vale siempre, porque k<n. Del (15,11) al (12,8), R pasa de 0,733 a 0,667.

La perfección se pierde. Con m=n−k bits de síndrome hay 2m síndromes. En el Hamming se reparten justo: el cero para «sin error» y los 2m−1 restantes, uno por posición. Por eso es un código perfecto. El acortado tiene los mismos 2m síndromes y sólo n−ℓ posiciones: quedan ℓ síndromes libres, uno por cada columna sacada. El (12,8) usa 13 de sus 16.

Un síndrome libre es el síndrome de un error en una posición que no se transmite. Si aparece, el receptor sabe que no hubo un error simple. Es lo que pide la decodificación incompleta, que en el Hamming entero no tiene dónde avisar: en un código perfecto, la bandera no se levanta. Un error doble da ha+hb, que en el Hamming siempre era una tercera columna. Si esa tercera se sacó, el doble cae en un síndrome libre y queda avisado. Si no, se corrige mal, como antes. En el (12,8) de la definición, con la H de arriba, 18 de los 66 dobles caen en síndromes libres y los otros 48 se corrigen mal.

El decodificador no cambia. Se reinsertan los ceros en L, se calcula el síndrome con la H original y se busca la columna: si apunta a una posición de L, el error no es simple y se declara falla en vez de corregir.

Taller Las columnas que se sacan — las quince columnas de H del (15,11) en orden natural: cada una, leída de arriba abajo, es el número de su posición contada desde 1, y es el síndrome de un error ahí. Tocá una columna de información para sacarla; las cuatro de peso 1 son la paridad y se quedan. Debajo de cada ficha, cuántos errores dobles dan ese síndrome. Hay 330 maneras de sacar siete columnas, y una sola lleva d_min a 4.
Columnas de H

debajo: dobles que se corrigen mal · dobles avisados por un síndrome libre

código — tasa — d_min — síndromes libres — dobles avisados — dobles corregidos mal —

Arranca con el (15,11) entero: cero síndromes libres y los 105 dobles corregidos mal, siete por cada columna. Sacá una cualquiera y su ficha queda libre con siete dobles avisados: cada columna del Hamming es la suma de exactamente siete pares. La línea de d_min muestra tres columnas que suman cero; mientras exista alguna, la distancia sigue en 3.

04 · Qué columnas se sacan

Sobre el (15,11), recorriendo todas las elecciones de columnas de información: con ℓ=1 se avisan siempre 7 de los 91 dobles, saque la que saque; con ℓ=3, entre 15 y 18 de 66 según cuáles. Y la distancia queda en 3 en todas las elecciones de hasta seis columnas. Con siete, de las 330 maneras hay una sola que la sube a 4: sacar las seis columnas de peso 2 y la de peso 4. Quedan las ocho de peso impar —las cuatro de la identidad y las cuatro de peso 3— y sale un (8,4) con dmin=4 que avisa los 28 dobles.

La razón es de paridad. La suma de tres columnas de peso impar tiene peso impar, así que nunca es cero: ninguna terna suma cero y la distancia es por lo menos 4. Es la construcción SEC-DED por acortamiento, y el (8,4) que sale tiene los parámetros del extendido del (7,4). Elegir entre las columnas de peso impar las que dejan menos unos y filas parejas es el criterio de los códigos de Hsiao.

Hasta el final, con ℓ=10, queda una sola columna de información además de la identidad, y la distancia depende de cuál: 3 si es de peso 2, 4 si es de peso 3, y 5 si es la 1111. Ese último es la repetición (5,1): la única palabra no nula es 11111. Acortar puede subir dmin bastante, pero a costa de casi toda la tasa: 0,2.

05 · El (192,184)

El ejemplo del apunte parte del Hamming (255,247), con m=8, y lo acorta en 63 posiciones: (255−63,247−63)=(192,184). Los mismos 8 bits de paridad, la tasa baja de 0,969 a 0,958, y quedan 63 de los 255 síndromes no nulos libres.

El apunte dice dmin≥3. Es exactamente 3, y no hay elección de las 63 columnas que la suba. Un código con dmin=4 y r bits de paridad no puede ser más largo que 2r−1: si se borra una de sus posiciones en todas las palabras, queda un (n−1,k) con r−1 bits de paridad y distancia por lo menos 3, y ése tiene a lo sumo 2r−1−1 columnas distintas y no nulas. Con r=8 el techo es 128, y 192 se pasa. Para un SEC-DED de 184 bits de información hace falta un noveno bit de paridad.

Los síndromes libres sí avisan algo. Sacando, como dice la definición, las 63 primeras columnas de información de la H sistemática —las de peso ≥ 2 en orden creciente de valor—, 5562 de los 18 336 dobles caen en un síndrome libre: el 30,3 %. El resto se corrige mal.

06 · El (128,119) del OIF-400ZR

El código interior del esquema C-FEC del OIF-400ZR es un Hamming extendido acortado (128,119). Tiene 128−119=9 bits de paridad: los 8 de un Hamming con m=8 más el de paridad global de la extensión. El extendido de ese Hamming es el (256,247), y acortado en 128 posiciones da

(256−128,247−128)=(128,119)

Lo mismo sale en el otro orden: el (255,247) acortado en 128 es un (127,119), y extendido es el (128,119). La tasa es 0,930.

Su distancia es exactamente 4. No baja de 4 porque el extendido la tenía y acortar no la baja. No llega a 5 por la cota de Hamming: corregir dos errores en 128 posiciones pediría un síndrome distinto para cada patrón de peso ≤ 2, que son 1+128+8128=8257, y con 9 bits hay 512. Quedan 512−1−128=383 síndromes libres, y con dmin=4 ningún par de columnas suma una tercera: los 8128 dobles caen todos en ellos. Contado sobre las últimas 128 columnas de la H del (256,247), de los 8128 pares ninguno suma otra columna.

Se puede leer también como un Hamming de m=9 acortado, pero con cuidado con el largo. Nueve bits de paridad dan el (511,502), no un código de 512, y acortarlo en 383 posiciones también da un (128,119). Con columnas cualesquiera, ese acortado sólo garantiza dmin≥3. Llega a 4 porque las 128 se eligen de una mitad: las que tienen un 1 en la fila de la paridad global, que son las 256 columnas del extendido. Es el mismo principio de la sección 04, a escala.

En la cadena del 400ZR el (128,119) va adentro, decodificado con decisión blanda, después de un intercalador convolucional y debajo de un código exterior tipo producto. Su tarea no es entregar datos limpios: es bajar la tasa de error lo suficiente para que el exterior trabaje dentro de su capacidad.

07 · Lo que acortar no arregla

No agrega redundancia. Acortar sólo saca columnas; los bits de paridad son los mismos. Lo que m bits no alcanzan a hacer en un largo dado, ninguna elección de columnas lo hace: el (192,184) no puede ser SEC-DED con 8 bits, y el (128,119) no puede corregir dos errores con 9. Las cotas mandan sobre el acortado igual que sobre cualquier código.

Acortar mucho es caro. La paridad no se achica con el largo. Llevar el (15,11) a 8 posiciones deja la mitad de la palabra en paridad, y a 5, cuatro quintos. Si el bloque del sistema es mucho más corto que 2m−1, conviene un m más chico: el acortamiento rinde cuando el largo pedido queda entre 2m−1 y 2m−1, como 192 entre 128 y 255.

Los síndromes libres no son una garantía. Sin elegir las columnas, avisan los dobles que caen en ellos por azar de la construcción: el 30,3 % en el (192,184), 18 de 66 en el (12,8). Para que avisen todos hay que elegir columnas sin ternas que sumen cero, y eso sólo cabe hasta 2m−1 columnas.

Para tener a mano

  1. Acortar en ℓ: fijar en cero ℓ posiciones de información y no transmitirlas. (n,k)→(n−ℓ,k−ℓ), con los mismos n−k bits de paridad.
  2. En matrices: G pierde ℓ filas y ℓ columnas; H pierde ℓ columnas.
  3. dmin no baja: sacar columnas no crea dependencias. Puede subir, según qué columnas queden: con sólo columnas de peso impar, llega a 4.
  4. La tasa baja: (k−ℓ)/(n−ℓ)<k/n.
  5. Un Hamming acortado en ℓ deja de ser perfecto y tiene ℓ síndromes libres. Un síndrome libre declara falla: avisa los dobles que caen ahí.
  6. Con r bits de paridad, dmin=4 sólo cabe hasta n=2r−1.
  7. (192,184) = (255,247) acortado en 63: dmin=3 exacta, 63 síndromes libres. (128,119) = (256,247) acortado en 128: dmin=4, 383 libres, todos los dobles avisados.
← Anterior Siguiente → Inicio
Relacionados Los códigos de Hamming El Hamming extendido y el SEC-DED Los códigos de Hsiao El intercalado La matriz de paridad y el código dual Las cotas de Singleton y de Hamming En un código perfecto, la bandera no se levanta Los CRC y los códigos cíclicos acortados