Está en la página 1de 547

Codificación para el

control de errores
Codificación para el
control de errores

Jorge Castiñeira Moreira


Universidad de Mar del Plata, Argentina

Patricio Guido Farrell


Universidad de Lancaster, Reino Unido
Castiñeira Moreira, Jorge
Codificación para el control de errores / Jorge Castiñeira Moreira y Patricio Guido Farrell. - 1a ed. -
Mar del Plata : EUDEM, 2012.
544 p. ; 25x17 cm.

ISBN 978-987-1371-89-1

1. Ingeniería de la Información. 2. Tecnología de la Información. 3. Información Digital. I. Farrell,


Patricio Guido II. Título
CDD 621.390 711

Queda hecho el depósito que marca la Ley 11.723 de Propiedad Intelectual. Prohibida su
reproducción total o parcial por cualquier medio o método, sin autorización previa de los
autores.

Este libro fue evaluado por el Dr. Jorge M. Finochietto

Primera edición: Marzo de 2012

ISBN 978-987-1371-89-1

© 2012 Jorge Castiñeira Moreira y Patricio Guido Farrel

© 2012, EUDEM
Editorial de la Universidad Nacional de Mar del Plata
Formosa 3485 (B7602FWQ)
Mar del Plata / Argentina

Arte y Diagramación: D.I. Luciano Alem

Impreso en: Imprenta El Faro, Dorrego 1401, Mar del Plata


Dedicamos este libro a:

Mi hijo Santiago José,


Melisa y Belén,
Isabel, Alejandra y Daniel,
y a la memoria de mi Padre,
a la memoria de mi Madre.

J. C. M.

y a todos mis familiares y amigos,

P. G. F
Agradecimientos

Estamos muy agradecidos por toda la ayuda, el apoyo y el estímulo que


hemos recibido durante el proceso de escritura de este libro, y queremos expresar
nuestro agradecimiento a nuestros colegas del presente y del pasado, a muchas
generaciones de estudiantes y asistentes de investigación, a los revisores, y a
nuestras familias y amigos. Particularmente queremos agradecer a: Damián Levin y
Leonardo Arnone, por sus contribuciones a los capítulos 7 y 8 respectivamente, a
Mario Blaum, Rolando Carrasco, Evan Ciner, Bahram Honary, Garik Markarian, y
Robert McEliece por sus estimulantes comentarios y discusiones, y por el valioso y
apreciado apoyo recibido; y a los representantes de la Editorial Eudem, quienes
llevaron pacientemente a cabo la edición final de este libro.
Prefacio

El tema central de este libro es la detección y corrección de errores en la


información digital. Tales errores ocurren inevitablemente en la transmisión,
almacenamiento y procesamiento de la información de tipo digital,
generalmente en su forma binaria, debido fundamentalmente al efecto del ruido
y la interferencia presentes en el canal de comunicaciones, o debido a
imperfecciones en los medios de almacenamiento, por ejemplo.
La protección de la información digital empleando adecuadas técnicas de
control de errores, permite una eficiente detección y corrección de los mismos.
Los códigos de control de errores se utilizan en casi todo tipo de sistema de
comunicaciones y de procesamiento y almacenamiento de datos. Los enormes
avances en el campo de la electrónica y los dispositivos ópticos han permitido la
implementación de códigos de control de errores verdaderamente poderosos,
con funcionamiento cercano a los óptimos en cuanto a la tasa de error registrada.
Además recientemente se han propuesto nuevas técnicas de control de errores
que involucran nuevos tipos de código y de técnicas de decodificación, las
cuales se encuentran en proceso de aplicación a los sistemas actuales.
Sin embargo, la codificación para el control de errores es compleja, y no del
todo bien comprendida y apreciada. Este libro desarrolla una clara descripción
de este tema, con una cobertura completa y actualizada de la mayoría de los
códigos más útiles y sus mecanismos de decodificación.
El libro enfatiza el desarrollo de los temas desde el punto de vista de la
ingeniería y tecnología de la información, pero incluye material teórico que
fundamente los aspectos básicos de los diferentes esquemas. Existen a su vez
descripciones de sistemas prácticos, y un elaborado juego de ejemplos y
problemas, con sus soluciones.
El libro es un texto avanzado orientado a estudiantes de postgrado y estudiantes
del curso final de grado en Ingeniería de las telecomunicaciones y electrónica,
redes de datos, tecnología de los sistemas de información, procesamiento digital
de señales y matemática aplicada, así también como para ingenieros e
investigadores que trabajan en estas áreas.
El libro esta diseñado para ofrecer el basamento de todos los temas en forma
auto contenida. En el mismo se incluyen los fundamentos teóricos de la teoría

9
de la información y de señales, así como la matemática específica necesaria
para la fundamentación de algunas técnicas de control de errores, que permita la
completa comprensión de los temas desarrollados.
El capítulo 1 proporciona una introducción a la teoría de la información, y cómo
dicha teoría se relaciona con la codificación para el control de errores. En esta
teoría se define el concepto de información y se determinan límites para la
capacidad de un canal de transmisión. El capítulo 2 describen los conceptos
básicos en la detección y corrección de errores, y la codificación y
decodificación de algunos códigos de bloques relativamente simples. Los
códigos de bloques fueron los primeros en ser descubiertos, en la década de
1940 a 1950. Las dos formas básicas de aplicar el control de errores son
descriptas en este capítulo: La corrección en sentido directo y el control de
errores por repetición. Un tipo muy particular y útil de código de bloques es el
código de bloques cíclico, descripto en el capítulo 3, juntamente con un ejemplo
de aplicación práctica, el código cíclico de control de redundancia, conocido
con su sigla en inglés como CRC, el cual es utilizado en el estándar de Internet.
Los capítulos 4 y 5 describen un tipo muy eficiente y ampliamente usado de
códigos cíclicos. Estos son los códigos BCH (Bose-Chaudhuri-Hocquenghem) y
los códigos RS (Reed-Solomon), denominados así en honor a sus inventores.

Los códigos BCH pueden ser binarios o no binarios, siendo los códigos RS un
tipo particular de códigos BCH de naturaleza no binaria, utilizados en diferentes
sistemas de control de error en la práctica. Una de estas aplicaciones es
precisamente descripta en el capítulo 5, y es la codificación para control de
errores utilizada en el sistema del compact disc, (CD).
Luego de los códigos de bloques se produjo la aparición de otra familia de
códigos, llamados al principio códigos recurrentes y luego códigos
convolucionales.
La codificación y decodificación de códigos convolucionales aun poderosos,
involucra la aplicación de procedimientos cuasi-continuos de naturaleza
bastante simple y repetitiva, que se aplican sobre una representación gráfica del
código, resultando en un mecanismo de operación más simple, si se lo compara
con un código de bloques de similar capacidad. Esto los hace relativamente
simples en la aplicación de la decodificación por máxima probabilidad usando
decisión no rígida con respecto a la misma técnica aplicada a códigos de
bloques, la cual se implementa utilizando el algoritmo óptimo de Viterbi. En el
capítulo 6 se desarrolla el tema de los códigos convolucionales, sus
representaciones gráficas, la decodificación usando la decisión no rígida, el
algoritmo de Viterbi, así como también se introducen los códigos con
eliminación selectiva de salidas y los de tasa variable.
Sin embargo y a pesar de su eficiencia, los códigos convolucionales no lograron
alcanzar los límites de funcionamiento predichos por Shannon, el Padre de la

10
Teoría de la Información, en 1948. Esto tampoco fue logrado haciendo uso de
combinaciones complejas de códigos de bloques y convolucionales construidos
en forma concatenada. Un paso trascendental se da en el año 1993, cuando
Berrou, Glavieux y Thitimajshima introducen los así llamados códigos turbo,
una forma especial de concatenado de códigos convolucionales que hace uso del
mezclado aleatorio de datos, y de una decodificación no rígida e iterativa de la
información recibida.

Todos los aspectos de este tipo tan eficiente de código, llamado código turbo
debido a la aplicación de la decodificación iterativa, se describen
detalladamente en el capítulo 7.
El capítulo final retorna al tema de los códigos de bloques, en la forma de los
códigos llamados de control de paridad de baja densidad, identificados con su
sigla en inglés como códigos LDPC. Los códigos de bloques pueden ser
también representados en la forma en que se hace la representación de un
código convolucional, por lo cual pueden ser decodificados utilizando la
decisión no rígida, alcanzando en este caso un funcionamiento tan eficiente
como el que tienen los códigos convolucionales. Por esta razón, también pueden
utilizarse en esquemas de codificación turbo. Sin embargo, la complejidad
aparece como un problema importante, pero una familia relativamente simple
de códigos, inicialmente descubiertos por Gallager en 1962, ofrecen
características de funcionamiento tan buenas o mejores que los turbo códigos,
otra vez empleando la decodificación iterativa.
Todos los aspectos constructivos, de codificación, decodificación y
funcionamiento de los códigos LDPC se describen detalladamente en el capítulo
8, junto con varias alternativas de estos códigos que aparecen como muy
efectivos para su aplicación en la redes de datos.
El apéndice A esta destinado a mostrar el cálculo de la probabilidad de error
para señales transmitidas en el canal de ruido blanco, aditivo y Gaussiano, y el
apéndice B introduce las nociones de la matemática discreta. Ambos son
seguidos de una lista de respuestas a problemas que se ofrecen al final de cada
capítulo. Las soluciones detalladas están disponibles en el sito de Internet:

http://elaf1.fi.mdp.edu.ar/Error_Control/

El sitio Web contiene también material adicional, que será regularmente


actualizado en respuesta a los comentarios y preguntas de los lectores.

11
1
Teoría de la Información y de la Codificación

En su clásico trabajo “A Mathematical Theory of Communication” Claude


Shannon [1948] introdujo los conceptos y principales teoremas de lo que hoy
se conoce como la teoría de la información. Dentro de esta teoría se introducen
las definiciones de los modelos de dos elementos importantes como son la
fuente binaria (FB) y el canal simétrico binario (CSB). La fuente binaria es un
dispositivo que emite uno de dos posibles símbolos '0' y '1' a una velocidad de
r símbolos por segundo. Estos símbolos se denominan bits, (binary digits) y
son emitidos en forma aleatoria.
El canal simétrico binario (CSB) es un medio por el cual se puede transmitir
un bit por unidad de tiempo. Sin embargo el canal no es confiable y existe la
probabilidad p de que la salida no sea igual a la entrada, siendo 0 d p d 1 / 2 .
La condición de simetría expresada para este canal implica que la probabilidad
de error es la misma para los dos símbolos involucrados.
La teoría de la información intenta establecer un análisis de la comunicación
entre un transmisor y un receptor efectuada sobre un canal no confiable, y para
ello plantea por un lado el estudio de las fuentes, en particular la cantidad de
información que las mismas pueden emitir, y por el otro la forma mas adecuada
de transmitir esta información, al enfrentar un canal no confiable, de forma de
hacer que la transmisión se transforme en una comunicación confiable.
Existen en esta teoría básicamente tres conceptos:

1. El primero es la medida de la información, o sea cuál variable o expresión


matemática es útil para definir la información. Esta definición de la
información debe ser consistente con las características físicas de la misma.
2. El segundo concepto plantea que la información estará relacionada con las
fuentes que la generan. En este caso se habla de la medición de la
información de la fuente. El tratamiento de la información a este nivel
implica el uso de técnicas de codificación conocidas como la compresión y
el encriptamiento.

13
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

3. El tercero se plantea el problema de relación entre la información y el canal


en que va a transmitirse. La medida de la información descripta en función
de los problemas surgidos en su transmisión a través de un dado canal da
lugar a un parámetro muy importante que se denomina capacidad de
información del canal. Asociado a este concepto, surge el tratamiento de la
información conocido como la codificación para el control de errores.
La codificación es en general un proceso que se empleará frecuentemente con el
fin de utilizar convenientemente la capacidad de información del canal. La
codificación es normalmente una asignación biyectiva entre el conjunto de
mensajes que se desea transmitir y las palabras de código que para ese fin se
van a emplear. Se utiliza entonces una tabla en la que se representa a los
símbolos del mensaje por palabras de código. Ver ejemplo en tabla 1.1.

Símbolos del mensaje Palabras del código


s1 101
s2 01
s3 110
s4 000

Tabla 1.1 Codificación de mensajes

En la tabla 1.1 pueden verse cuatro palabras de código usadas para representar
cuatro mensajes diferentes. En esta simple asignación puede notarse que la
longitud de las palabras varía. Una característica de esta tabla es que debe ser
construida de forma que las palabras sean decodificables, es decir, que al armar
secuencias con dichas palabras, exista una única forma de interpretar esa
secuencia. Esto es necesario cuando la longitud del código es variable. Si el
código de la tabla 1.1 se compara con uno de asignación natural que requeriría
de las 4 palabras de 2 bits, 00 , 01,10 ,11 se ve que agrega redundancia.
Asumiendo que los cuatro mensajes tienen la misma probabilidad de ocurrencia,
el número de bits promedio emitidos por símbolo en este código sería 2.75. Sin
embargo si el símbolo s 2 tuviera por ejemplo una probabilidad de ocurrencia
del 76%, siendo los otros símbolos igualmente probables con probabilidad de
ocurrencia del 8%, entonces la fuente que empleara este código emitiría un
promedio de 2,24 bits. Este efecto de compresión relativo se produce cuando la
estadística de la fuente es no uniforme.

14
Capítulo I: Teoría de la Información y de la Codificación

La medida de la información de la fuente, la medida de la capacidad del canal y


la codificación, se encuentran relacionados por un teorema, cuyo enunciado es
el siguiente:

Si la velocidad de información de una fuente no excede la capacidad de


comunicación de un canal, entonces existe una técnica de codificación que
permite que la información sea transmitida sobre ese canal con una
probabilidad de error arbitrariamente pequeña, a pesar de la presencia de
ruido.

Esto significa que se tiene la posibilidad de realizar una transmisión libre de


errores aun cuando el canal sea no confiable o ruidoso. Esto se obtiene a través
de la técnica de codificación para el control de errores. El enunciado anterior se
debe a Claude Shannon, y establece los límites de la comunicación en un canal
ruidoso, presentándose como solución al problema la aplicación de la técnica de
la codificación. Lo que no queda formalmente establecida es como debe
implementarse esa técnica.
El diagrama en bloques del sistema planteado es el siguiente:

Fuente Codificador Codificador


de Fuente de Canal

Canal con
ruido

Destino Decodificador Decodificador


de Fuente de Canal

Figura 1.1 Modelo del canal de comunicaciones y esquemas de codificación

En el sistema existen dos tipos de codificadores. El codificador del canal realiza


la tarea de codificar la información para realizar el control de errores,
intentando transformar al canal para que se comporte como un canal sin ruido.
Por otro lado existe la codificación de fuente cuyo objeto es hacer que la fuente

15
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

se adapte al canal equivalente sin ruido, de manera que la velocidad de


información de la fuente se aproxime a la capacidad del canal.
En las siguientes secciones se introducen algunos conceptos relativos a la
transmisión de información discreta.

1.1 Información
1.1.1 Medida de la Información

El concepto definido como información no es exactamente identificable con lo


que se llama conocimiento, sino que en realidad esta relacionado con el proceso
de la comunicación entre fuente y destino.
El valor cuantitativo de la información ha de medirse en cuanto a su
disponibilidad en destino. La información en destino será mayor cuanto más
improbable sea el evento a ocurrir en destino. En este sentido la información
estará relacionada con la probabilidad del evento y lo hará de manera
inversamente proporcional.
Asumiendo que se tiene un mensaje arbitrario x i que es uno de los posibles
mensajes del conjunto que proviene de una fuente discreta y llamando a su
probabilidad de ocurrencia P( x i ) Pi , la salida de la fuente se puede
interpretar como una variable aleatoria X que adopta posibles valores x i de
forma que P( X x i ) Pi . Shannon definió la medida de la información para
el evento x i empleando la función logarítmica en base b :

I i {  log b Pi log b §¨ 1 ·¸
© Pi ¹
(1.1)

el valor de la información I i depende solamente de la probabilidad del evento y


no de su contenido.
Teniendo en cuenta la conversión de base logarítmica:

1
log a ( x ) log b ( x )
log b ( a )
(1.2)

se puede expresar la medida de la información en referencia a cualquier otra


base a . Cuando el logaritmo se toma en base 2, la unidad de la información se

16
Capítulo I: Teoría de la Información y de la Codificación

denomina bit. Si la base elegida es el logaritmo natural, la información se mide


en nat. Como ejemplo, si la probabilidad del evento es Pi 1 / 2 , la
información es I i 1 bit . Puede decirse entonces que un bit es la información
obtenida de un evento que presenta dos alternativas igualmente probables. Es
importante diferenciar este bit del anteriormente descripto dígito binario. El bit
actúa aquí como unidad de medida de la información.
De la definición misma de la medida de la información se deducen algunas de
sus propiedades:

Ii t 0 0 d Pi d 1

Ii o 0 si Pi o 1

Ii ! I j si Pi  Pj

para dos fuentes que generan mensajes independientes x i y xj de


probabilidades Pi y Pj respectivamente, y con probabilidad conjunta
P( x i , x j ) Pi Pj , la información de los dos mensajes es la suma de la
información de cada mensaje:

1 1 1
I ij log b log b  log b Ii  I j
Pi Pj Pi Pj

1.2 Entropía y velocidad de la información


Considérese una fuente de información que emite un conjunto de M símbolos
diferentes. Los símbolos representan a la variable aleatoria X que adopta
valores en el rango A ^x1 , x 2 ,..., x M ` . Cada símbolo x i tiene una
probabilidad de ocurrencia Pi y contiene una información I i . Las
probabilidades de los símbolos están de acuerdo con la condición de que al
menos uno de ellos ocurre:

M
¦ Pi 1
i 1
(1.3)

17
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

La fuente es estacionaria, de modo que las probabilidades son constantes en el


tiempo. Los símbolos son estadísticamente independientes y se emiten a una
velocidad de r símbolos por segundo. Esta es la descripción de la Fuente
Discreta Sin Memoria (FDSM).
x i , x j ,...

Fuente
discreta sin
memoria

Figura 1.2 Esquema de una fuente discreta sin memoria

Dado que cada símbolo contiene una información I i , el conjunto ^I1 ,I 2 ,..., I M `
se puede interpretar como una variable aleatoria discreta de la que se puede
obtener su valor medio:

M M
§1 ·
Hb ( X ) ¦ Pi I i ¦ P log
i b
¨¨ ¸¸
i 1 i 1 © Pi ¹
(1.4)

la función definida se denomina Entropía de la fuente. Cuando la base es


b 2 , la entropía se mide en bits por símbolo:

M M §1·
H( X ) ¦ Pi I i ¦ Pi log2 ¨¨ P ¸¸ bits/símbolo.
i 1 i 1 © i¹
(1.5)

El caso Pi 0 genera una indefinición, por lo que se establece para esa


situación que I i f si Pi 0 . Por lo tanto Pi log2 1 P i 0 (regla de
L’Hopital) si Pi 0 . Por otra parte sucede también que Pi log 1 P i 0 si
Pi 1.

18
Capítulo I: Teoría de la Información y de la Codificación

Ejemplo 1.1:

Suponga tener una fuente de información donde el rango de X es


A ^x1 , x2 , x3 , x4 ` siendo
P X x1 1 / 2; P X x2 P X x3 1 / 8; P X x4 1 / 4 .
Se calcula la entropía:

M §1 · 1 1 1 1
H( X ) ¦ Pi log2 ¨¨ P
¸¸
2
log 2 ( 2 )  log 2 ( 8 )  log 2 ( 8 )  log 2 ( 4 )
8 8 4
i 1 © i¹
1.75 bits / simbolo

Ejemplo 1.2:

Una fuente caracterizada en el dominio de la frecuencia por tener un ancho de


banda W 4000 Hz es muestreada a la velocidad de Nyquist generando una
secuencia de valores que se adoptan de un alfabeto A ^ 2,  1, 0,1, 2` con las
correspondientes probabilidades: ^1 / 2,1 / 4,1 / 8,1 / 16 ,1 / 16`. Determine la
velocidad de la fuente en bits/segundo.
Se obtiene la entropía:

M §1 · 1 1 1 1
H( X ) ¦ Pi log 2 ¨¨ P
¸¸
2
log 2 ( 2 )  log 2 ( 4 )  log 2 ( 8 )  2
4 8 16
log 2 (16 )
i 1 © i¹
15
bits / muestra
8

de acuerdo al teorema de muestreo, la señal ha de ser muestreada mínimamente


a la velocidad de 8000 muestras por segundo, por lo cual la velocidad de la
información es de 15 Kbits / segundo .
La entropía puede calcularse en una base diferente utilizando la siguiente
expresión:

H( X )
Hb ( X )
log 2 ( b )
(1.6)

la entropía H( X ) puede interpretarse como el valor medio de la información


por símbolo suministrada por la fuente o bien el valor medio de la

19
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

incertidumbre de un observador antes de conocer la salida de la fuente. En otro


sentido, la entropía mide la aleatoriedad de la fuente. La función entropía tal
como se ha definido mide estos parámetros con precisión y constituye una
buena definición en términos físicos.
Otra manera de entender la entropía es asumir que si se transmiten n !! 1
símbolos la información total transferida es de nH ( X ) bits. Dado que la fuente
produce r símbolos por segundo, la duración en tiempo de toda la secuencia
transmitida es n / r segundos. La información entonces se tiene que transferir a
una velocidad:

nH ( X )
bits por segundo
(n / r )
(1.7)

la velocidad de información entones será igual a:

R rH( X ) bits por segundo


(1.8)

el teorema de Shannon establece que la información obtenida de cualquier


fuente discreta sin memoria se puede codificar con dígitos binarios y
transmitirse sobre un canal equivalente y libre de ruido a una velocidad:

rb t R símbolos o dígitos binarios por segundo

recordando particularmente en esta expresión tener en cuenta que bit es la


unidad de información en base 2, mientras que el símbolo o dígito binario es
uno de los dos posibles símbolos o señales ' 0' o '1' comúnmente denominado
también bit.

Teorema 1.1:

Sea la variable aleatoria X que adopta valores en el rango A ^x1 , x2 ,..., xM `


y representa la salida de una fuente. Entonces se cumple que:

0 d H( X ) d log2 ( M )
(1.9)

además:

20
Capítulo I: Teoría de la Información y de la Codificación

H( X ) 0 si y solo si Pi 1 para algún i

H( X ) log2 ( M ) si y solo si Pi 1M para todo i


(1.10)

el valor inferior de la desigualdad puede probarse sabiendo que:

Pi log2 (1 / Pi ) o 0 si Pi o 0
el límite superior se puede evaluar de la siguiente forma:
Se introducen valores cualesquiera de probabilidad Q1 ,Q2 ,...,QM
correspondientes a otro conjunto, y se reemplaza el término 1 / Pi por Qi / Pi
en la definición de entropía (ecuación 1.5). Posteriormente se hace uso de la
desigualdad:

ln( x ) d x  1

donde se ve que la igualdad se produce si x 1 (Figura 1.3)

y1=x-1
0.5

y1,
y2 -0.5

-1
y2=ln(x)
-1.5

-2
0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x

Figura 1.3 Inecuación ln( x ) d x  1

luego de convertir la definición de la variable calculada a logaritmo natural:

M §Q · 1 M §Q ·
¦ Pi log2 ¨¨ Pi ¸¸ ¦
ln( 2 ) i 1
Pi ln¨¨ i ¸¸
i 1 © i ¹ © Pi ¹

21
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Qi
si x
Pi

M §Q · M § Qi · M M
¦ Pi ln¨¨ Pi ¸¸ d ¦ Pi ¨¨  1 ¸¸ ¦Qi  ¦ Pi
i 1 © i ¹ i 1 © Pi ¹ i 1 i 1

(1.11)

Como los coeficientes Qi adoptados cumplen con la condición de ser valores de


M M
probabilidad, luego ¦ Qi d 1 y además se tiene que ¦ Pi 1.
i 1 i 1

Entonces:

M §Q ·
¦ Pi log2 ¨¨ Pi ¸¸ d 0
i 1 © i ¹
(1.12)

si para las probabilidades Q i se adoptan valores equiprobables Qi 1M,

M § 1 · M §1 · M
¦ Pi log2 ¨¨ P M ¸¸ ¦ Pi log2 ¨¨ P ¸¸  ¦ Pi log 2 ( M ) H( X )  log 2 ( M ) d 0
i 1 © i ¹ i 1 © i¹ i1

H( X ) d log2 ( M )
(1.13)

en la condición anterior se registra el signo igualdad si se produce que


§1 · 1
log 2 ¨¨ ¸¸ log 2 ( M ) . O bien, Pi .
© Pi ¹ M
El valor máximo de la entropía es log 2 ( M ) y se verifica cuando todos los
símbolos de la fuente son equiprobables. La distribución uniforme corresponde
a la máxima entropía.
Para el caso de la fuente binaria ( M 2 ), y asumiendo valores de las
probabilidades de los símbolos:

P0 α P1 1α
(1.14)

22
Capítulo I: Teoría de la Información y de la Codificación

la entropía adopta la forma:

§1 · § 1 ·
H( X ) Ω( α ) α log 2 ¨ ¸  (1  α ) log 2 ¨ ¸
©α ¹ ©1  α ¹
(1.15)

expresión que se grafica en la figura 1.4:

0.9

0.8

0.7

0.6

H(X) 0.5

0.4

0.3

0.2

0.1

0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
D
Figura 1.4 Función entropía para la FB

El máximo de esta función se encuentra cuando α 1  α , o bien, α 1 / 2 ,


de forma que la entropía resulta ser H( X ) log2 2 1 bit por símbolo. (Es
decir un bit por símbolo binario o dígito binario).
Cuando α o 1 , la entropía tiende a cero. La función denominada Ω( α )
representará a la entropía para la fuente binaria, calculada empleando el
logaritmo en base 2.

Ejemplo 1.3:

Se tiene una fuente que emite r 3000 símbolos/segundo de un alfabeto de 4


símbolos, de manera que, con la siguiente tabla de probabilidades:

23
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

xi Pi Ii
A 1/3 1.5849
B 1/3 1.5849
C 1/6 2.5849
D 1/6 2.5849

Tabla 1.2 Ejemplo 1.3.

se calcula la entropía como:

1 1
H( X ) 2 log 2 ( 3 )  2 log 2 ( 6 ) 1.9183 bits/símbolo
3 6

el valor es cercano al máximo posible, que es log2 ( 4 ) 2 bits/símbolo. La


velocidad de la información es igual a:

R rH ( X ) (3000)1.9183 5754.9 bits/seg.

1.3 Extensión de una fuente discreta sin memoria


En ciertos casos será más adecuado considerar a la información como agrupada
en bloques de símbolos. La agrupación de estos símbolos sigue la forma
habitual de la información binaria.
Para una fuente de memoria nula, con elementos ^x1 , x 2 ,..., x M ` , siendo Pi la
probabilidad del símbolo x i , la extensión de orden n del alfabeto es una
fuente discreta sin memoria que tiene M n símbolos ^y1 , y 2 ,..., y Mn ` . El
símbolo y i corresponde a una secuencia de n símbolos x ij . La probabilidad de
y i , P( Y y i ) , es la probabilidad de la secuencia correspondiente
x i1 , x i 2 ,..., x in ;

P( Y yi ) Pi1 .Pi 2 ....Pin


(1.16)

siendo y i el símbolo del alfabeto extendido que corresponde a la secuencia


x i1 , x i 2 ,..., x in , entonces:

24
Capítulo I: Teoría de la Información y de la Codificación

1
H( X n ) ¦n P( y i ) log2 P( y )
y x i
.
(1.17)

Ejemplo 1.4:

Conforme la extensión de orden 2 de la fuente del ejemplo 1.1, y calcule su


entropía. Los símbolos del alfabeto original tienen probabilidades
P X x1 1 / 2; P X x 2 P X x 3 1 / 8; P X x 4 1 / 4 .
La tabla de probabilidades de la extensión de orden 2 de la fuente considerada
es presentada en la tabla 1.3:

Símbolo Probabilidad símbolo Probabilidad símbolo Probabilidad símbolo Probabilidad

x1 x1 0.25 x 2 x1 0.0625 x 3 x1 0.0625 x 4 x1 0.125


x1 x 2 0.0625 x2 x2 0.015625 x3 x2 0.015625 x4 x2 0.03125
x1 x 3 0.0625 x2 x3 0.015625 x3 x3 0.015625 x4 x3 0.03125
x1 x 4 0.125 x2 x4 0.03125 x3 x4 0.03125 x4 x4 0.0625

Tabla 1.3 Símbolos de la fuente extendida de orden 2 del Ejemplo 1.4 y sus
probabilidades

Se calcula la entropía:

M2 §1 ·
H( X 2 ) ¦ Pi log2 ¨¨ P
¸¸ 0.25 log 2 ( 4 )  2 x0.125 log 2 ( 8 )  5 x0.0625 log 2 (16 ) 
i 1 © i¹
4 x0.03125 log 2 ( 32 )  4 x0.015625 log 2 ( 64 ) 3.5 bits / simbolo

como puede verse, la entropía de la fuente extendida de orden 2 es el doble de la


entropía de la fuente original. Puede demostrarse que para una fuente discreta
sin memoria, sus extensiones de orden n cumplen con la condición
H( X n ) nH ( X )

25
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

1.4 Canales e información mutua


1.4.1 Transmisión de información en canales discretos

Luego de definir el concepto de información de una fuente y proporcionar una


medida para dicho parámetro, se comenzará a analizar las características de la
transmisión de esa información, es decir, a caracterizar al denominado canal de
transmisión. Se pone atención sobre el proceso de la transmisión mas que de la
generación de la información.
El canal es en general un medio donde la información puede sufrir del efecto de
errores. En este sentido se tendrá una cierta probabilidad de que un determinado
símbolo transmitido, se transforme en otro. A través del segundo teorema de
Shannon se analizará de que forma se puede realizar una transmisión confiable
en un canal no confiable.

1.4.2 Canales de Información

Definición 1.1: un canal de información está determinado por un alfabeto de


entrada ^x1 , x 2 ,..., xU ` , un alfabeto de salida ^y1 , y 2 ,..., yV ` , y un conjunto de
probabilidades condicionales P( y j / x i ) que identifican las relaciones entre
símbolos de entrada y salida. Esta probabilidad P( y j / x i ) es la de recibir a la
salida del canal el símbolo y j cuando se transmitió x i .

P ( y 1 / x1 ) y1

x1 P (y 1 / x 2 )
P ( y 2 / x1 )
y2
P (y 2 / x 2 )
x2
P ( y 3 / x1 )

P (y 3 / x 2 ) y3

Figura 1.5 Canales de transmisión discretos

26
Capítulo I: Teoría de la Información y de la Codificación

El canal queda completamente caracterizado por el conjunto de probabilidades


P( y j / x i ) , de manera que se puede configurar una matriz con estos datos,
denominada matriz Pch .

Pij P( y j / x i )

ª P( y 1 / x1 ) P( y 2 / x1 )  P( y V / x1 ) º
« P( y / x ) P( y / x )  P( y / x ) »
« 1 2 2 2 V 2 »
Pch
«    »
« »
¬P( y 1 / xU ) P( y 2 / xU )  P( y V / xU )¼
(1.18)
ª P11 P12  P1V º
«P
« 21 P22  P2V »»
Pch
«    »
« »
¬PU1 PU 2  PUV ¼
(1.19)

Cada fila de la matriz corresponde a una entrada, y cada columna a una salida.
La suma de los términos de cada fila es igual a 1. Esto se debe a que una vez
emitido algún símbolo x i debe recibirse algún y j en la salida del canal.
Luego se tiene que:

V
¦ Pij 1; i 1,2 ,...,U
j 1
(1.20)

Ejemplo 1.5: El canal simétrico binario (CSB)

El CSB se caracteriza por tener una probabilidad p de que un símbolo binario


se convierta en el otro símbolo (Figura 1.6). Los símbolos tienen a su vez una
probabilidad de ocurrencia α y 1  α respectivamente. En términos de la
nomenclatura usada:

x1 0, x 2 1, y1 0, y 2 1

27
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

1 p
P (0) D 0 0
p

p
P (1) 1  D 1 1
1 p

Figura 1.6 Canal simétrico binario

la matriz de probabilidad para el CSB es igual a:

ª1  p p º
Pch « p 1  p»
¬ ¼
(1.21)

Ejemplo 1.6: El canal binario de borrado (CBB)

En su forma mas clásica, y en la transmisión de información binaria utilizando


señales que identifican a los símbolos ‘0’ y ‘1’, dos formas de onda diferentes
se envían con el propósito de señalizar esta información. Del lado receptor se
realiza normalmente una operación optimizada que permite decidir de la mejor
manera, si la señal que se está recibiendo, afectada por el filtrado y el ruido del
canal, corresponde a un ‘0’ o a un ‘1’. En esta operación, que típicamente es lo
que se denomina recepción por filtro óptimo pueden suceder
indeterminaciones. Cuando la certeza acerca del símbolo recibido no es alta,
puede ser preferible determinar que lo recibido es de naturaleza dudosa. En este
caso se procede a borrar el símbolo recibido. En estos casos normalmente otra
parte del sistema se encargará de determinar el valor del símbolo borrado, por
otros medios.
En otras ocasiones la información esta codificada, por lo que es posible detectar
si hay o no errores en un bit o bien en un paquete de información. En estos
casos también es posible aplicar el concepto de borrado de datos. Esto es así por
ejemplo en el sistema concatenado del Compact Disk, donde al recibir la
información, un primer código detecta errores, y en caso de detección positiva
del error, decide “marcar” o borrar un grupo de símbolos, realizando una
operación tal que al segundo decodificador del sistema le permite corregir los
errores en las posiciones detectadas. Otra ejemplo de canal de borrado se

28
Capítulo I: Teoría de la Información y de la Codificación

produce en la transmisión de paquetes en internet. En algunos protocolos se


aplican algoritmos de repetición de la información, que se produce cuando el
lado receptor avisa (en general, por un canal de retorno paralelo) al transmisor,
que un determinado paquete ha sido descartado, por haberse detectado con
errores, y necesita ser retransmitido.
En general, el efectuar esta operación de borrado modifica la naturaleza del
canal binario, y surge así lo que se denomina el canal binario de borrado. Este
canal se representa en la Figura 1.7.

1 p
P (0) D x1 0 0 y1
p

? y2

p
P (1) 1  D x2 1 y3
1
1 p

Figura 1.7. Canal binario de borrado

En este canal, se cumple que 0 d p d 1/2 . Esta es la probabilidad de realizar un


borrado. El canal posee dos entradas y tres salidas. Cuando se desconoce el
valor recibido, o se detecta su error, la decisión recae en el símbolo
desconocido, identificado como ? . La matriz de probabilidad para el CBB es la
siguiente:

ª1  p p 0 º
Pch « 0
¬ p 1  p»¼
(1.22)

29
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

1.5 Relaciones entre las probabilidades de un canal


Un canal de U símbolos de entrada y V símbolos de salida esta caracterizado
por su matriz de probabilidad Pch , que es de orden UxV . Los símbolos de
entrada están regidos por el conjunto de sus probabilidades
^P( x1 ),P( x2 ),...,P( xU )`, mientras que los símbolos de salida se relacionan
con el conjunto de probabilidades ^P( y1 ),P( y 2 ),..., P( yV )`.

ª P11 P12  P1V º


«P
« 21 P22  P2V »»
Pch
«    »
« »
¬PU1 PU 2 PuV ¼

La relación entre las probabilidades de entrada y salida se establece de la


siguiente forma. El símbolo y1 se puede recibir en U modos diferentes. En
efecto este símbolo puede ser recibido con probabilidad P11 si efectivamente se
había enviado el símbolo x1 , con probabilidad P21 si efectivamente se había
transmitido el símbolo x 2 y así sucesivamente. Depende de los diferentes U
símbolos de entrada que por efecto del canal pueden convertirse en el símbolo
y1 . El evento de aparición o recepción del símbolo y1 tiene una probabilidad
P( y1 ) dada entonces por P( y1 ) P11P( x1 )  P21P( x 2 )  ...  PU1P( xU ) . En
general para el conjunto de símbolos de salida se puede plantear el siguiente
sistema de ecuaciones:

P11 P( x1 )  P21 P( x 2 )  ...  PU1 P( xU ) P( y1 )


P12 P( x1 )  P22 P( x 2 )  ...  PU 2 P( xU ) P( y 2 )
(1.23)
  
P1V P( x1 )  P2V P( x 2 )  ...  PUV P( xU ) P( y V )

las ecuaciones previas definen las probabilidades de los símbolos de salida


conociendo las probabilidades de los símbolos de entrada y la matriz de
probabilidades condicionales P( y j / x i ) . Sin embargo es de notar que aun
conociendo las probabilidades de salida P( y j ) y las condicionales P( y j / x i )
no es posible determinar las probabilidades P( x i ) de manera unívoca,

30
Capítulo I: Teoría de la Información y de la Codificación

invirtiendo el sistema de ecuaciones, ya que hay muchas distribuciones de


probabilidad que determinan la misma distribución de salida.
Las probabilidades condicionales se rigen por la ley de Bayes, que aplicada a
este caso permitiría estimar la probabilidad condicional de una entrada x i
cuando se recibe una salida y j :

P( y j / x i )P( x i )
P( x i / y j )
P( y j )
(1.24)

teniendo en cuenta las expresiones del sistema de ecuaciones (1.23) la expresión


anterior se convierte en:

P( y j / x i )P( x i )
P( x i / y j ) U
¦ P( y j / x i )P( x i )
i 1
(1.25)

las probabilidades condicionales P( y j / x i ) se suelen denominar


probabilidades en sentido directo mientras que las probabilidades condicionales
P ( x i / y j ) son conocidas como probabilidades en sentido inverso. Por otro
lado el numerador de las expresiones anteriores describe la probabilidad de
evento simultaneo:

P( x i , y j ) P( y j / x i )P( x i ) P( x i / y j )P( y j )
(1.26)

Ejemplo 1.7:

Considere el canal binario con alfabetos de entrada y salida A { 0 ,1 } cuya


matriz de probabilidades de transición esta dada por:

ª3 / 4 1 / 4 º
P «1 / 8 7 / 8 »
¬ ¼

el gráfico de la figura 1.8 presenta esquemáticamente al canal:

31
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

3/4
P(0) 4/5 0 0

1/4 1/8
X Y

P(1) 1/5 1 1
7/8

Figura 1.8 Ejemplo 1.7

La probabilidad de suceso de los símbolos de entrada depende de la estadística


de la fuente y en este caso sucede que P( X 0 ) 4 / 5 y P( X 1 ) 1 / 5 .
De acuerdo a la matriz de probabilidades:

P(Y 0/ X 0) 3/4 P(Y 1/ X 0) 1/ 4


P(Y 0/ X 1) 1 / 8 P(Y 1/ X 1) 7 / 8

con esto pueden calcularse las probabilidades de los símbolos de salida:

34 11 25
P(Y 0) P(Y 0/ X 0 )P( X 0 )  P(Y 0/ X 1 )P( X 1) 
45 85 40

14 71 15
P(Y 1) P(Y 1/ X 0 )P( X 0 )  P( Y 1/ X 1 )P( X 1) 
45 85 40

se cumple que P(Y 0 )  P(Y 1 ) 1 .


Con estos valores se pueden calcular las probabilidades condicionales en
sentido inverso:

P(Y
0 / X 0 )P( X 0 ) ( 3 / 4 )( 4 / 5 ) 24
P( X 0/Y 0)
P(Y 0 ) ( 25 / 40 ) 25
P(Y 1 / X 0 )P( X 0 ) (1 / 4 )( 4 / 5 ) 8
P( X 0 / Y 1)
P(Y 1 ) (15 / 40 ) 15
P(Y 1 / X 1 )P( X 1 ) (7 / 8 )(1 / 5 ) 7
P( X 1 / Y 1)
P(Y 1 ) (15 / 40 ) 15

32
Capítulo I: Teoría de la Información y de la Codificación

P(Y 0 / X 1 )P( X 1) (1 / 8 )(1 / 5 ) 1


P( X 1/ Y 0)
P(Y 0 ) ( 25 / 40 ) 25

1.6 Entropías a priori y a posteriori


La probabilidad de suceso de un símbolo determinado y j es el valor calculado
P( y j ) según las expresiones (1.23), pero si se tiene información de que el
símbolo transmitido es x i , la probabilidad asociada al símbolo y j cambia y es
igual a P( y j / x i ) . De la misma forma, la estimación de la probabilidad de
entrada cambia si se conoce la salida del canal. Así sabiendo que el símbolo y j
aparece como salida del canal, entonces la probabilidad de la entrada x i ,
P( x i ) , cambia y es igual a P( x i / y j ) .
La probabilidad P( x i ) es conocida como la probabilidad a priori, es decir,
caracteriza al símbolo de entrada antes de tener la presencia de algún símbolo
de salida del canal. Normalmente esta probabilidad es la que tiene el símbolo
x i de ser emitido por la fuente que lo genera. La probabilidad P( x i / y j ) es
una estimación del evento x i luego de que la salida y j se haya producido, y se
denomina probabilidad a posteriori.
Como se ha definido, la entropía es el valor promedio de la información:

§ 1 ·
H( X ) ¦ P( x i ) log2 ¨¨ P( x ¸
) ¸¹
i © i

como esta definida será denominada entropía a priori. La entropía a posteriori


queda entonces descripta por la expresión:

§ 1 ·
H( X / y j ) ¦ P( x i / y j ) log 2 ¨ ¸ i 1,2,...,U
¨ P( x i / y j ) ¸¹
i ©
(1.27)

Ejemplo 1.8: Determine las entropías a priori y a posteriori para el canal del
ejemplo 1.7.
La entropía a priori es:

33
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

4 §5 · 1
H( X ) log 2 ¨ ¸  log 2 ( 5 ) 0.7219 bit
5 ©4¹ 5

suponiendo que se recibió un cero en la salida del canal:

24 § 25 · 1
H( X / 0 ) log2 ¨ ¸ log2 25 0.2423 bit
25 © 24 ¹ 25

en caso de recibir un uno a la salida del canal:

8 § 15 · 7 § 15 ·
H( X / 1 ) log2 ¨ ¸  log2 ¨ ¸ 0.9967 bit
15 © ¹8 15 ©7 ¹

así, si se recibe un ´0´ la entropía disminuye, si se recibe un ´1´ la entropía


aumenta.

1.7 Información Mutua


De acuerdo a la descripción del canal de figura 1.5 se tiene que P( x i ) define la
probabilidad de que el símbolo x i sea emitido por la fuente, P( y j ) determina
la probabilidad de que el símbolo y j aparezca a la salida, P( x i , y j ) es la
probabilidad conjunta del evento de tener a x i en la entrada y a y j en la salida,
P( y j / x i ) es la probabilidad de que el canal convierta al símbolo emitido x i
en y j , mientras que P( x i / y j ) es la probabilidad de que x i haya sido
transmitido cuando se recibe y j .

1.7.1 Información Mutua. Definición

La información mutua mide la información transferida cuando se envía x i y se


recibe y j , y esta definida como:

P( x i / y j )
I( x i , y j ) log 2 bits
P( x i )
(1.28)

34
Capítulo I: Teoría de la Información y de la Codificación

Si se estuviera en presencia de un canal sin ruido, entonces cada y j tendría una


única conexión con el correspondiente x i siendo entonces para ese par entrada-
1
salida P( x i / y j ) 1 , e I ( x i , y j ) log 2 bits , es decir la información
P( x i )
transferida es igual a la auto-información correspondiente a x i . Si por el
contrario el canal fuera totalmente ruidoso, la salida y j estaría totalmente
descorrelacionada de x i , ocurriendo entonces que P( x i / y j ) P( x i ) y
además I( x i , y j ) 0 , es decir, no existe transferencia de información. En
general un determinado canal se encontrará entre estos dos límites de operación.
La información mutua esta definida entre una entrada y una salida de
determinado canal. Un promedio sobre todos los pares de símbolos de entrada y
salida, respectivamente, del canal, conocido como información mutua promedio
es:

§ P( x i / y j ) ·
I( X ,Y ) ¦ P( x i , y j )I( x i , y j ) ¦ P( x i , y j ) log2 ¨¨ ¸ bits / simbolo
¸
i ,j i,j © P( x i ) ¹
(1.29)

la sumatoria se realiza sobre los alfabetos de entrada y salida. De alguna manera


la información mutua promedio mide la cantidad promedio de información de
fuente que se obtiene por símbolo de salida.
La expresión de la información mutua se puede modificar haciendo uso de
expresiones conocidas:

P( x i , y j ) P( x i / y j )P( y j ) P( y j / x i )P( x i )
P( y j ) ¦ P( y j / x i )P( x i )
j

P( x i ) ¦ P( x i / y j )P( y j )
j
entonces:
§ 1 ·
I ( X ,Y ) ¦ P( x i , y j )I( x i , y j ) ¦ P( x i , y j ) log 2 ¨¨ P( x ¸
) ¸¹
i,j i,j © i

§ 1 ·
¦ P( x i , y j ) log 2 ¨¨ P( x ¸
) ¸¹
i,j © i / yj

(1.30)

35
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

§ 1 · ª º 1
¦ P( x i , y j ) log 2 ¨¨ P( x ¸
) ¸¹
¦ «¦ P ( x i / y j )P( y j )» log 2
P( x i )
i,j © i i ¬ j ¼
1
¦ P( x i ) log 2 P( x ) H( X )
i i

(1.31)
I( X ,Y ) H( X )  H( X / Y )

1
donde el término H( X / Y ) ¦ P( x i , y j ) log2 P( x
y se denomina
i,j i / yj )
usualmente equivocación. En cierto sentido, la equivocación representa la
información perdida en el canal ruidoso, y es función de la probabilidad
condicional en sentido inverso.
La observación de un símbolo de salida proporciona H( X )  H( X / Y ) bits de
información. Esta diferencia es la información mutua del canal.

1.7.2 Propiedades de la Información Mutua

Como se cumple la igualdad:

P( x i / y j )P( y j ) P( y j / x i )P( x i ) ,

entonces la información mutua cumple con la condición:

I( X ,Y ) I (Y , X )

con lo cual intercambiando entrada y salida, también es cierto que:

I( X ,Y ) H( Y )  H( Y / X )
(1.32)

donde:

1
H (Y ) ¦ P( y j ) log2 P( y )
j j

que es la entropía en destino o a la salida del canal

36
Capítulo I: Teoría de la Información y de la Codificación

1
H(Y / X ) ¦ P( x i , y j ) log2 P( y
i,j j / xi )
(1.33)

este último término se denomina entropía de ruido.


La información transferida por el canal es la entropía en destino menos la
entropía de ruido. En otras palabras puede decirse que la información mutua del
canal es el número de bits necesario para determinar un símbolo de entrada
antes de conocer el símbolo de salida correspondiente, menos el número de bits
necesario para especificar un símbolo de entrada después de conocer el símbolo
de salida, I( X ,Y ) H( X )  H( X / Y ) .
En vista de su expresión analítica pareciera ser posible que la información
mutua pudiera adoptar valores negativos. Sin embargo y a pesar de que en algún
caso el valor de H( X / y j ) es mayor que H( X ) para algún y j , en promedio
sobre todas las salidas esto no es posible.

P( x i / y j ) P( x i , y j )
¦ P( x i , y j ) log2 P( x i )
¦ P( x i , y j ) log2 P( x )P( y j )
i,j i ,j i

entonces

P( x i )P( y j )
 I( X ,Y ) ¦ P( x i , y j ) log2 P( x i , y j )
d0
i,j

por ser una expresión de la forma:

M §Q ·
¦ Pi log2 ¨¨ Pi ¸¸ d 0
i 1 © i ¹
(1.34)

que es la expresión (1.12) empleada para demostrar el teorema 1.1. Esta


relación puede aplicarse porque el factor P( xi ) P( y j ) es el producto de dos
probabilidades, por lo cual se comporta como la variable Qi , que en dicha
expresión es una variable fantasma que cumple con la condición de
normalización ¦ Qi d 1 . Puede concluirse entonces que la información mutua
i
promedio es positiva o nula. La información mutua promedio es nula cuando la
entrada y la salida son independientes.

37
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

También suele definirse la entropía afín, que esta dada por la expresión:

1
H ( X ,Y ) ¦ P( x i , y j ) log 2 P( x
i,j i ,y j )

P( x i )P( y j ) 1
¦ P( x i , y j ) log 2 P( x i , y j )
 ¦ P( x i , y j ) log 2
P( x i )P( y j )
i,j i,j

(1.35)

esta expresión da lugar al gráfico de la figura 1.9:

H(Y / X )
H( X / Y )

H( X )
H(Y )

I( X ,Y )

Figura 1.9 Relación entre las entropías

Los círculos definen las regiones H( X ) y H(Y ) , la zona de intersección es la


información mutua I( X ,Y ) , mientras que las diferencias entre las entropías de
entrada y de salida respecto de la información mutua son las equivocaciones
H( X / Y ) y H(Y / X ) respectivamente. La unión de los conjuntos es la
entropía afín H( X ,Y ) .

Ejemplo 1.9: Entropías para el canal simétrico binario (CSB)

El canal simétrico binario esta definido por un alfabeto de dos entradas y dos
salidas del conjunto A { 0 ,1 } con probabilidad de símbolos P( x1 ) α y
P( x 2 ) 1  α y probabilidades de transición P( y1 / x 2 ) P( y 2 / x1 ) p , y
P( y1 / x1 ) P( y 2 / x 2 ) 1  p . Esto representa a un canal binario con
probabilidad de error p igual para cada símbolo. La probabilidad de error
promedio es:

P P( x1 )P( y 2 / x1 )  P( x 2 )P( y1 / x 2 ) α( p )  (1  α )p p

38
Capítulo I: Teoría de la Información y de la Codificación

1 p
P ( x1 ) D x1 y1

p
X Y
p

P (x 2 ) 1  D x 2 y2
1 p

Figura 1.10 Ejemplo 1.9

se puede calcular la información mutua como:

I( X ,Y ) H( Y )  H( Y / X )

se considera que la salida Y tiene dos símbolos y1 e y 2 tales que


P( y 2 ) 1  P( y1 ) . Dado que:

P( y 1 ) P( y1 / x1 )P( x1 )  P( y1 / x 2 )P( x 2 ) (1  p )α  p(1  α )


α  pα  p  pα α  p  2αp
(1.36)

la entropía de destino es:

1 1
H(Y ) P( y 1 ) log 2  1  P( y 1 ) log 2 Ω( P( y 1 ))
P( y1 ) 1  P( y1 )
Ω α  p  2αp
(1.37)

resta calcular la entropía de ruido H(Y / X ) :

1 1
H (Y / X ) ¦ P( x , y ) log
i, j
i j 2
P( y j / xi )
¦ P( y
i, j
j / xi ) P( xi ) log 2
P( y j / xi )

39
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

ª 1 º
¦ P( x i ).«¦ P( y j / x i ) log 2 »
P ( y j / x i ) »¼
i ¬« j

ª 1 1 º
P ( x1 ).«P( y 2 / x1 ) log 2  P ( y 1 / x1 ) log 2 »
¬ P ( y 2 / x1 ) P ( y 1 / x1 ) ¼
ª 1 1 º
P ( x 2 )«P( y 2 / x 2 ) log 2  P ( y 1 / x 2 ) log 2 »
¬ P( y 2 / x 2 ) P( y1 / x 2 ) ¼

ª 1 1 º ª 1 1º
α .« p. log 2  (1  p ) log 2 »  (1  α ).«(1  p ) log 2  p log 2 »
¬ p (1  p ) ¼ ¬ (1  p ) p¼
1 1
p log 2  (1  p ) log 2 Ω( p )
p (1  p )
(1.38)

Nótese que en el caso del canal simétrico la entropía de ruido es determinada


solamente por las probabilidades condicionales del canal, siendo independiente
de las probabilidades de la fuente. Esto facilitará el cálculo de la capacidad en la
siguiente sección.
Finalmente:

I( X ,Y ) H( Y )  H( Y / X ) Ω( α  p  2αp )  Ω( p )
(1.39)

la información mutua promedio del canal simétrico binario depende de la


probabilidad de fuente α y de la probabilidad de error en el canal p .
Cuando la probabilidad de error p es pequeña, entonces:

I( X ,Y ) | Ω( α )  Ω( 0 ) | Ω( α ) H( X )

esto significa que la información mutua promedio, que representa la


información transferida, es igual a la entropía de la fuente. En el caso contrario
si la probabilidad de error adopta su valor máximo p | 1 / 2 , entonces:

I( X ,Y ) Ω( α  1 / 2  α )  Ω(1 / 2 ) 0

la información mutua detecta la no transferencia de información entre entrada y


salida.

40
Capítulo I: Teoría de la Información y de la Codificación

Ejemplo 1.10: Entropías para el canal binario de borrado (CBB)

El canal binario de borrado esta definido por un alfabeto de dos entradas y tres
salidas, con probabilidad de símbolos P( x1 ) α y P( x 2 ) 1  α y
probabilidades de transición P( y1 / x1 ) 1  p , y P( y 2 / x1 ) p ,
P( y 3 / x1 ) 0 y P ( y 1 / x 2 ) 0 , y P ( y 2 / x 2 ) p , P( y 3 / x 2 ) 1  p .
Para calcular nuevamente la información mutua como
I( X ,Y ) H(Y )  H(Y / X ) se determinan los valores de:

P( y1 ) P( y1 / x1 )P( x1 )  P( y1 / x 2 )P( x 2 ) α(1  p )


P( y 2 ) P( y 2 / x1 )P( x1 )  P( y 2 / x 2 )P( x 2 ) p
P( y 3 ) P( y 3 / x1 )P( x1 )  P( y 3 / x 2 )P( x 2 ) (1  α )(1  p )

De esta forma la entropía de la salida es igual a:

1 1 1 1
H (Y ) P( y 1 ) log 2  P( y 2 ) log 2  P( y 3 ) log 2 α (1  p ) log 2
P( y1 ) P( y 2 ) P( y 3 ) α (1  p )
1 1
 p log 2  (1  α )(1  p ) log 2 (1  p )Ω( α )  Ω( p )
p (1  α )(1  p )

resta calcular la entropía de ruido H (Y / X ) :


1 1 1
H (Y / X ) ¦ P( y j / x i )P( x i ) log 2
P( y j / x i )
p log 2
p
 (1  p ) log 2
(1  p )
Ω( p )
i,j

Con lo cual la información mutua resulta finalmente igual a:

I( X ,Y ) H(Y )  H(Y / X ) (1  p )Ω( α )

1.8 Capacidad de un Canal Discreto


Una vez definido el concepto de información mutua promedio, se puede
entonces definir la variable que caracteriza al canal y que se denomina
capacidad, que es básicamente el valor máximo que adopta la información
mutua promedio:

Cs max I( X ,Y ) bits / simbolo


P ( xi )
(1.40)

41
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

se hace notar que la definición de la capacidad del canal depende no solo del
canal en si sino también parece implicar la fuente y su estadística. Sin embargo
la capacidad del canal depende exclusivamente de las probabilidades
condicionales y no de las probabilidades de los símbolos fuente, dado que la
capacidad es el valor de la información mutua promedio cuando los símbolos
fuente adoptan ciertos valores determinados.
Su significado es que representa a la máxima cantidad de información por
símbolo que se transfiere en ese canal. Como se sabe, el valor mínimo de la
información mutua es cero.
En el caso del canal simétrico binario maximizar la información mutua significa
tomar el máximo de la expresión:

Cs max I ( X ,Y ) max ^H(Y )  H(Y / X )` max ^Ω( α  p  2αp )  Ω( p )`


P ( xi ) P ( xi ) P ( xi )

1  Ω( p ) 1  H( p )

(1.41)

que se da cuando α 1  α 1 / 2 .
En el caso del canal binario de borrado maximizar la información mutua
significa tomar el máximo de la expresión:

Cs max I( X ,Y ) max^H(Y )  H(Y / X )` max(1  p ): ( D ) 1  p


P( xi ) P( xi ) P( xi )
(1.42)

que también se produce cuando α 1  α 1 / 2 .

Si se conoce la velocidad máxima s de símbolos por segundo que permite el


canal entones la capacidad por unidad de tiempo es:

C sCs bits/segundo
(1.43)

que como se verá representa a la máxima velocidad de transferencia de la


información en el canal analizado.

42
Capítulo I: Teoría de la Información y de la Codificación

1.9 Teoremas de Shannon


1.9.1 Teorema de la codificación de fuente

El teorema de la codificación de fuente, junto con el de la capacidad de un


canal, constituyen los dos grandes enunciados establecidos por Shannon [1, 2].
El Teorema de la codificación de fuente determina un límite fundamental en el
grado de compresión de una señal. Las definiciones previas acerca de la
entropía, y en particular la entropía de una fuente serán aplicadas dentro de este
teorema.
La entropía de la información tiene una interpretación intuitiva [1, 6]. Si se hace
que la fuente discreta y sin memoria emita un número grande n f de símbolos
que son tomados de un alfabeto A { x1 , x 2 ,..., x M } generando entonces
secuencias de n f símbolos, el símbolo x1 aparecerá nf P( x1 ) veces, el
símbolo x 2 lo hará nf P( x 2 ) veces, y el símbolo x M , nf P( x M ) veces. A
estas secuencias se las llama secuencias típicas. Estas secuencias tienen una
probabilidad:

M
P | – >P( x i )@
nf P ( x i )
(1.44)
i 1
como:

P( x i ) 2 log2 >P ( xi )@

M; M M
P | – >P( x i )@ – 2 log ([( x )] n P ( x ) – 2 n log
nf P ( x i ) 2 i f i f 2 [ P ( x i )] P ( x i )

i 1 i 1 i 1
(1.45)
M
nf ¦ p( xi ) log2 [ P ( xi )]
2 i 1
2 nf H ( X )

por secuencias típicas se entiende a aquellas secuencias que son las que tienen
la mayor probabilidad de emerger de la fuente. El resto de las secuencias, las no
típicas, son de probabilidad despreciable. Esto significa que del total posible del
alfabeto A { x1 , x 2 ,..., x M } de secuencias, que es M n f solo emergen de la
fuente una cantidad 2 nf .H ( X ) secuencias. Se comete entonces un error de
magnitud H al suponer que en lugar del total posible de secuencias solo
emergen de la fuente estas 2 nf H ( X ) secuencias típicas que se hace

43
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

arbitrariamente pequeño si nf o f . Esta es la esencia de la compresión de


datos. Esto significa que la información de la fuente puede ser representada con
un número considerablemente menor de secuencias que las que tienen en teoría
posibilidad de emerger. Al tenerse entonces solo 2 nf H ( X ) secuencias, y si se
emplea un formato binario para representar la información, se precisaran
entonces nf H( X ) bits para darle forma. Como las secuencias están formadas
por símbolos, entonces se precisarán solo H( X ) bits por símbolo para una
representación adecuada de la información. Esto significa que la entropía de la
fuente es la cantidad de información por símbolo de la fuente.
Para una fuente discreta sin memoria se puede afirmar entonces que existirá
posibilidad de compresión si la función densidad de probabilidad de esa fuente
no es uniforme, o dicho de otra forma, si los símbolos del alfabeto de esa fuente
no son igualmente probables. Como se ha visto, para una fuente con M
símbolos equiprobables se tiene que:

H( X ) log2 M , 2 nf H( X ) 2 nf log2 M M nf
(1.46)

El número de secuencias típicas de una fuente discreta sin memoria que tiene
símbolos equiprobables en su alfabeto es igual al máximo número posible de
secuencias que emergen de la fuente. Hasta aquí se presenta el concepto de la
compresión de datos. Sin embargo el objetivo de este capítulo es introducir las
nociones de la codificación para el control de errores, que está relacionado con
el segundo teorema de Shannon.

1.9.2 Capacidad del canal y codificación

La comunicación entre dos puntos pretende el envío de información de uno a


otro a través de un canal de transmisión que se suele denominar el canal de
comunicaciones. Los canales de comunicaciones ya han sido modelados
convenientemente por empleo de su matriz de probabilidades condicionales de
entradas y salidas, a través de las cuales puede determinarse la situación y
establecer la confiabilidad de que la información arribe correctamente al lado
receptor. Un importante resultado enunciado por Shannon al respecto establece
que aun en presencia de un canal ruidoso, es posible, por aplicación de alguna
adecuada regla de codificación de la información, realizar sobre ese canal
ruidoso una transmisión libre de errores, en la medida que la velocidad de
transmisión no sea mayor que el parámetro que fue definido como capacidad del
canal. El límite impuesto por el teorema está entonces definido no sobre la
confiabilidad sino sobre la velocidad de transmisión.

44
Capítulo I: Teoría de la Información y de la Codificación

En lo que sigue se considerará al canal binario simétrico y sobre el la aplicación


de secuencias de n bits asumidas como bloques, de forma que la entrada estará
representada por n-uplas o vectores definidos sobre las extensiones X n e Y n , y
se utilizarán las probabilidades condicionales:

n
P( X / Y ) – P( x i / yj )
i 1

las palabras de entrada y salida X e Y son palabras de n bits. Al ser


transmitido un vector X , y teniendo en cuenta que el número n de bits es
relativamente grande la probabilidad de error p del canal binario simétrico
determina que la palabra o vector de salida Y que aparece en este canal diferirá
de X en np posiciones.
Por otro lado el número de secuencias de n bits que tengan diferencias en np
posiciones esta dado por:

§n ·
¨¨ ¸¸
© np ¹
(1.47)

haciendo uso de la aproximación de Stirling [6]

n! | n n e n 2πn
(1.48)

se puede demostrar que:

§n ·
¨¨ ¸¸ | 2 nΩ( p )
© np ¹
(1.49)

este resultado indica que para cada bloque de entrada de n bits existen 2 nΩ( p )
posibles correspondientes salidas como resultado de la dispersión ocasionada
por el canal ruidoso.
Por otra parte la salida del canal puede ser considerada una fuente discreta de
manera que se tendrán 2 nH ( Y ) posibles secuencias típicas. La cantidad:

45
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

2 nH ( Y )
M 2 n >H ( Y ) Ω( p )@
2 nΩ( p )
(1.50)
representa al máximo número de entradas posibles que pueden ser enviadas de
manera que al pasar por el canal produzcan salidas que tengan entre si bajo
solapamiento. Cuanto menor sea la probabilidad de error del canal mayor será
este número de entradas posibles sin solapamiento. Aplicando la función
logarítmica en base 2:

log2 M n>H(Y )  Ω( p )@

y luego:

log2 M
Rs H(Y )  Ω( p ) (1.51)
n

la función densidad de probabilidad de la variable aleatoria Y depende de la


función densidad de probabilidad del mensaje y de las propiedades estadísticas
del canal. Se puede buscar la función densidad de X que maximice H (Y ) . Si
la entrada es de una función densidad de probabilidad uniforme para el caso del
CSB, la salida tiene una distribución también uniforme y una entropía
maximizada H(Y ) 1 . Esto lleva a la expresión anterior a su máximo valor
posible:

Rs 1  Ω( p )

expresión válida para el canal simétrico binario. Este es precisamente el


parámetro que fue definido como capacidad del canal. Esta será entonces la
velocidad máxima de transmisión posible en el canal simétrico binario si se
pretende tener, usando alguna técnica de codificación adecuada, una
transmisión libre de errores en ese canal. La cantidad definida para el canal
simétrico binario Cs 1  Ω( p ) se grafica a continuación:

46
Capítulo I: Teoría de la Información y de la Codificación

0.9

0.8

0.7

0.6

C 0.5

0.4

0.3

0.2

0.1

0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
p

Figura 1.11 Capacidad del CSB

la capacidad del canal es la velocidad máxima de transmisión sobre ese canal


para una transmisión confiable. El peor caso se produce para p 1 / 2 dado
que el extremo p 1 es en definitiva una transmisión confiable donde los roles
de las variables están invertidos.
Hasta aquí se ha dado una visión del teorema de codificación del canal
analizando al sistema como una transferencia que distorsiona las secuencias que
emergen de la fuente. El teorema de la codificación del canal se enuncia a
continuación.

1.9.3 Teorema de la codificación del canal

Dada la definición de la capacidad de un canal discreto sin memoria,

Cs max I ( X ,Y ) bits / símbolo


P ( xi )
(1.52)
y teniendo en cuenta que C sCs , si la velocidad de transmisión es tal que
R  C , entonces para cualquier valor arbitrario ε ! 0 , existe un código con
una longitud de bloque n que hace que la probabilidad de error en la
transmisión sea menor que ε . Si R ! C entonces no puede garantizarse que la
probabilidad de error quede acotada por el valor arbitrariamente pequeño ε . El
límite para este valor arbitrario de ε es cero.

47
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Ejemplo 1.11:

Determine la capacidad del canal de la figura 1.12, si los símbolos del alfabeto
de entrada son equiprobables.

x1 y1

X x2 y2 Y

x3 y3

Figura 1.12 Ejemplo 1.11

En este caso, debido a la simetría del canal:

P( y1 / x1 ) P( y 2 / x 2 ) P( y 3 / x 3 ) 0.5
P( y1 / x 2 ) P( y1 / x 3 ) 0.25
P( y 2 / x1 ) P( y 2 / x 3 ) 0.25
P( y 3 / x1 ) P( y 3 / x 2 ) 0.25

para determinar la capacidad del canal se debe calcular la información mutua y


maximizar esa cantidad buscando la función distribución de probabilidad que
haga máxima la entropía de salida o destino. En este caso la función densidad
de probabilidad uniforme de entrada hace que también la función densidad de
probabilidad de la salida o destino sea uniforme. Sin embargo esto no es
siempre así. Se debe buscar la función densidad de probabilidad de Y que
maximice la información mutua.
Se calcula entonces:

H(Y / X ) P( x1 )H(Y / X x1 )  P( x 2 )H(Y / X x 2 )  P( x 3 )H(Y / X x3 )

48
Capítulo I: Teoría de la Información y de la Codificación

como
1 1 1
H (Y / X x1 ) H (Y / X x2 ) H (Y / X x3 ) log 2 ( 4 )  log 2 ( 4 )  log 2 ( 2 )
4 4 2
0.5  0.5  0.5 1.5

H(Y / X ) 1.5

luego:

I( X ,Y ) H(Y )  1.5

la entropía de destino es máxima para un alfabeto de salida con símbolos


equiprobales de manera que:

1 1 1
H (Y ) log 2 ( 3 )  log 2 ( 3 )  log 2 ( 3 ) log 2 ( 3 ) 1.585
3 3 3

entonces:

Cs 1.585  1.5 0.085 bits / simbolo

esta muy baja capacidad se da como consecuencia de que cada símbolo de


entrada tiene probabilidad 1/2 de salir del canal con error.

1.10 Espacios de Señales y el Teorema de la Capacidad de


un Canal
La teoría vectorial se puede aplicar al tratamiento de señales en comunicaciones
y resulta muy útil para la demostración de la segunda ley de Shannon.
Si se tiene en cuenta un canal continuo en banda base de ancho de banda B se
puede decir que en ese canal una señal es, de acuerdo al teorema de muestreo,
representable como:

x( t ) ¦ x k sinc( 2Bt  k )
k
(1.53)

49
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

donde:
1
xk x( kTs ) y Ts
2B
(1.54)

xk x( kTs ) son las muestras de la señal obtenidas a una velocidad de


muestreo 1 .
Ts
Las señales en general tendrán una restricción de potencia que se puede
expresar en términos estadísticos en función de las muestras x k :

P x2 x k2
(1.55)

considerando que la señal entera tiene una duración T se puede establecer que
T
la señal queda representada por un número de muestras n 2BT . Esto
Ts
implica que los n números x1 , x 2 ,..., x n representan esta señal. Por el teorema
de muestreo, la señal puede ser reconstruida exactamente con estas n muestras.
Se puede convertir al conjunto de muestras en un vector que es representativo
de la señal y cuyo conocimiento será suficiente para regenerarla, de acuerdo a la
expresión:

x( t ) ¦ x( kTs ) sinc( fs t  k )
k

1
fs t 2W
Ts
(1.56)

donde W es el ancho de banda de la señal, debiendo cumplirse que:

W d B d fs  W
(1.57)

este vector representativo de x( t ) será X ( x1 , x 2 ,..., x n ) siendo


n 2BT 2WT . La expresión de x( t ) esta dada en función de señales que
forman una base ortogonal, como los son las funciones sin c desplazadas
adecuadamente.

50
Capítulo I: Teoría de la Información y de la Codificación

En este sentido, el vector representativo de la señal configura un vector de un


espacio n- dimensional. La norma de este vector es:

n
|| X ||2 x12  x 22  ...  x n2 ¦ x i2
i 1
(1.58)

teniendo en cuenta un intervalo de tiempo largo, formarán parte del vector un


número grande de muestras n !! 1 con lo cual:

1 1 n 2
n
|| X ||2 ¦ xi
ni 1
x k2 P

(1.59)

|| X || nP 2BTP
(1.60)

la norma del vector o señal es proporcional a la potencia de la misma. Variando


las componentes de X en todas las combinaciones posibles se formará una
hiperesfera con radio || X || y todos los vectores posibles terminarán en la
superficie de esta hiperesfera. El volumen de esta esfera es Vn K n || X ||n .
El ruido puede ser también interpretado como una señal mas, dado que luego de
pasar por el filtro de ancho de banda B y ser muestreado, será representado por
un vector N ( N1 ,N2 ,..., Nn ) de manera que si la potencia de ruido es PN el
vector de ruido tiene norma || N || nPN . Las señales tienen de esta manera
una representación vectorial.

|| N || nPN
|| X || nP

Figura 1.13 Representación de señales como vectores

51
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

El ruido que se considera es aditivo, y por ser por otra parte independiente o no
correlacionado con la señal, en el proceso de la transmisión de la señal o vector
X generará un vector Y por efecto del ruido cuya norma será
|| Y || || X  N || n( P  PN ) debido a la suma de potencias.

nPN

nP

n( P  PN )

Figura 1.14 Suma de señales y ruido

1.10.1 Capacidad del canal Gaussiano

El canal Gaussiano resultante del muestreo de la señal es un canal discreto que


se caracteriza por el esquema de la figura:

Canal Gaussiano, todas las


N señales son variables reales
X
Y X N
1 n 2
¦ xi d P
ni 1

Figura 1.15 Canal Gaussiano

la variable N representa las muestras de una señal aleatoria Gaussiana y es una


variable aleatoria también Gaussiana con varianza al cuadrado PN . La señal
tiene potencia acotada por P . Considerando bloques de longitud n a la entrada
se tiene la relación de señales en versión vectorial:

52
Capítulo I: Teoría de la Información y de la Codificación

Y X N
(1.61)

considerando que n es de un valor alto se puede establecer el valor de la


potencia de ruido como la sumatoria de las muestras de ruido entrantes:

1 n 2 1 n
¦ Ni
ni 1
¦
ni 1
| Y  X |2 d PN

(1.62)

lo cual implica que:

| Y  X |2 d nPN
(1.63)

esto se interpreta como la esfera de ruido que se encuentra alrededor del vector
X y que representa al vector recibido Y en el entorno del transmitido o
verdadero X , cuyo radio evidentemente es nPN , que es proporcional a la
potencia de ruido entrante. Como el ruido y la señal son variables no
correlacionadas:

1 n 2 1 n 2 1 n 2
¦yi
ni 1
¦ x i  n ¦ Ni d P  PN
ni 1 i 1
(1.64)

luego:

| Y |2 d n( P  PN )
(1.65)

las secuencias de salida se encuentran en esferas n-dimensionales de radios


n( P  PN ) centradas en el origen.

53
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Esfera de
radio nPN

Esfera n-
dimensional de
radio
n(P  PN )

Figura 1.16 Relación de esferas a la salida del canal

La situación planteada por el gráfico de la figura 1.16 se puede interpretar de la


siguiente manera. La transmisión de un vector X genera una esfera en su
entorno que tiene un radio en proporción a la potencia de ruido presente en el
canal, cuyo valor es nPN . Por otra parte los vectores a la salida del canal
definen un espacio vectorial que es interpretado también como una hiperesfera
cuyo radio es igual a n( P  PN ) . El problema entonces consiste en saber
cuantas esferas de radio nPN pueden entrar, y por lo tanto evitar el
solapamiento entre ellas, en una esfera de radio n( P  PN ) . El volumen de
una hiperesfera n-dimensional de radio Re es:

Vol ,n K n Ren
(1.66)

donde K n es una constante y R e es el radio de la esfera. El número de


mensajes que se pueden transmitir confiablemente, es decir sin solapamiento en
este canal es:

54
Capítulo I: Teoría de la Información y de la Codificación

K n >n(P  PN )@
n/2
n/2
§ P  PN ·
M ¨¨ ¸¸
K n (nPN )n / 2 © PN ¹
(1.67)

como la capacidad del canal se relaciona con el número de señales posibles y la


dimensión del vector transmitido según la expresión:

1 1n § P · 1 § P ·
Cs log 2 ( M ) log 2 ¨¨1  ¸¸ log 2 ¨¨1  ¸¸
n n2 © PN ¹ 2 © PN ¹
(1.68)

para un canal continuo en el tiempo, limitado en banda, con potencia de ruido


cuya densidad espectral es N0 / 2 , con una potencia por muestra restringida
P , que tiene un ancho de banda B , se puede dar forma a un canal discreto en
el tiempo muestreando a la velocidad de Nyquist. La potencia por muestra de
ruido es igual a:

B
PN ³ N0 / 2 df N0 B
B
(1.69)

entonces:

1 § P ·
Cs log 2 ¨¨1  ¸ (1.70)
2 © N0 B ¸¹

una señal de ancho de banda W que sea transmitida por este canal y
muestreada a la velocidad de Nyquist lo hará de forma que W B y estará
representada por una cantidad de muestras por segundo igual a 2W 2B . La
capacidad del canal en bits por segundo se evalúa multiplicando Cs , que es la
capacidad por símbolo o muestra, por el número de muestras por segundo de la
señal:

§ P ·
C 2BCs B log2 ¨¨1  ¸¸ bits / segundo
© N0B ¹
(1.71)

55
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

el razonamiento para definir la ecuación de Shannon es entonces considerar que


para transmitir señales confiables e identificables desde el receptor se deben
elegir los vectores de transmisión tales que teniendo en cuenta que las esferas de
ruido que los afecten no se solapen entre si y pueda realizarse la identificación
de forma adecuada. Existirán entonces M mensajes codificados de longitud
T , o equivalentemente compuestos por n componentes que resultan de
calcular cuantas esferas de radio nPN entran en el espacio vectorial entero de
salida cuyo radio es n( P  PN ) :

n n/ 2
ª n( P  PN ) º § P ·
M « » ¨¨1  ¸¸
«¬ nPN »¼ © PN ¹

si ahora en el tiempo T se supone que se envían r símbolos por segundo,


siendo el símbolo uno de μ posibles, la cantidad de señales diferentes
construidas de esta forma es:

M μ rT
(1.72)

en caso particular de emplear señales binarias, μ 2 , las señales posibles sin


rT
solapamiento son M 2 .
La capacidad del canal como fue definida por Shannon es la cantidad de
información máxima que éste puede transmitir por unidad de tiempo. El
teorema de Shannon especifica la cantidad de información que se puede
transmitir en forma segura a través de un canal. La cantidad de mensajes de
longitud T que son transmitidos de forma segura por ser lo suficientemente
diferentes es M . Desde este punto de vista la combinación de fuente y canal
puede ser vista como una fuente de salida Y que es discreta y de tamaño M .
La máxima entropía producida por esta fuente destino esta dada para el caso de
que los valores de salida sean equiprobables y es igual a log2 M , que es la
cantidad de información en símbolos proveniente de esta fuente destino. La
máxima velocidad en símbolos por segundo que se tendría en este caso en que
1
se considera a la salida del canal como una fuente es log 2 M . La capacidad
T
del canal se mide como esta cantidad llevada al límite de la longitud del
mensaje:

56
Capítulo I: Teoría de la Información y de la Codificación

1
C lim log 2 M bits / segundo
T of T

(1.73)

reemplazando con los valores considerados anteriormente:

1 1 rT
C lim log2 M lim log2 ( μ rT ) lim log2 μ r log2 μ bits / segundo
T of T T of T T of T
(1.74)

esto se evalúa considerando que el canal no tiene ruido. En ese caso y por
ejemplo para el canal binario, μ 2 y C r . Considerando ahora la cantidad
de señales distinguibles o para transmisión confiable

n/ 2
§ P ·
M d ¨¨1  ¸¸ con n 2BT
© PN ¹
(1.75)

n/2
1 1 § P · 2 BT § P ·
C lim log 2 M lim log 2 ¨¨1  ¸¸ log 2 ¨¨1  ¸¸
T of T T of T
© PN ¹ 2T © PN ¹
§ P ·
C B log 2 ¨¨1  ¸¸ bits / segundo
© PN ¹
(1.76)

Ejemplo 1.12: Encuentre la capacidad del canal telefónico, asumiendo que la


relación señal ruido mínima de las instalaciones es de §¨ P ·
¸ 30 dB y el
© PN ¹ dB

ancho de banda de transmisión y de la señal transmitida es de W 3Khz .

§ P · § P ·
Como ¨¨ ¸¸ 30 dB ; ¨¨ ¸¸ 1000
© PN ¹ dB © PN ¹

C 3000. log2 1  1000 | 30 Kbits / segundo

57
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

1.11 Codificación para el control de errores


En el esquema de la figura 1.17, la fuente produce símbolos de información a
una tasa R . El canal es simétrico binario y tiene una capacidad Cs 1  Ω( p )
y velocidad de transmisión de símbolos s . La información mutua es
maximizada haciendo una previa codificación de la fuente para emitir bits
equiprobables. Luego un codificador toma bloques de bits y los codifica como
símbolos M-arios equiprobables [1, 2] que transportan cada uno log2 M bits
por símbolo. De esta manera, la información adopta un formato que puede
adecuarla a las condiciones del canal. El codificador para el CSB representa
cada palabra o símbolo con un vector o palabra de n símbolos binarios.

Fuente

Codificador Conversión Codificador Canal


de Fuente binaria a para CSB Binario
binario M-aria Simétrico

Figura 1.17 Sistema de codificación

Cada palabra de longitud n transporta una cantidad de información igual a


log 2 M
. Como se transmiten s símbolos por segundo, la velocidad de
n
información de fuente codificada es:

s log 2 M
R
n
(1.77)

el teorema de Shannon exige que se cumpla:

R dC sCs lo cual implica en este caso:

log 2 M
d Cs
n

58
Capítulo I: Teoría de la Información y de la Codificación

log2 M d nCs
(1.78)

M 2 n( Cs δ )
(1.79)

0 d δ  Cs
(1.80)
δ podrá ser arbitrariamente pequeña, en cuyo caso R o C .

Considérese ahora que las palabras o vectores codificados de n bits se


encuentran dentro de un espacio n-dimensional. Si estos vectores adoptan
representación binaria las coordenadas serán siempre de valor cero o uno en
cada dimensión. En este caso para medir la distancia entre vectores se puede
contar la cantidad de componentes diferentes que ellos tienen. Así si c es un
vector, válido del código y c' es un vector que difiere en l posiciones respecto
de c , la distancia entre c y c' es l , una variable aleatoria que tiene valor
entre 0 y n . Si el valor de n es muy grande, el vector c' cae siempre en una
esfera de radio d  n . El decodificador decidirá que c fue el vector
transmitido al recibirse c' si el vector recibido cae en la esfera de radio d y
ninguno de los restantes M  1 vectores de código esta dentro de esa esfera. En
caso contrario se producirá un error de decodificación, es decir si la palabra
recibida tiene tantos errores que se sale de la esfera del correspondiente vector
transmitido para ingresar a la de otro del código o bien si al caer dentro de la
esfera de radio d alguno de los M  1 restantes vectores del código queda
incluido dentro de esa esfera, entonces habrá un error al decodificar. La
probabilidad de error total es:

Pe Ple  Pce
(1.81)

donde Ple es la probabilidad de error resultante del hecho que el vector recibido
cae fuera de la esfera de radio d , y Pce es la probabilidad de error de código,
es decir, la probabilidad de que dos o más palabras del código caigan dentro de
la misma esfera. Recuérdese en este razonamiento considerar que se está
aplicando codificación en forma aleatoria, de manera que es posible que algún
otro vector de código quede dentro de la esfera definida, de radio d .
Ple es la probabilidad del evento de error l t d . Los errores de transmisión son
estadísticamente independientes y ocurren con una probabilidad p  1 / 2 , y el

59
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

número de errores l es una variable aleatoria gobernada por la función


distribución binomial:

l np ; σ 2 n(1  p )p
(1.82)

si el radio de la esfera se adopta con valor:

d nβ p  β 1/ 2
(1.83)
el radio de la esfera se elige algo mayor que la cantidad de bits errados por
palabra que se esperan. La probabilidad de error Ple es entonces:

2
§ σ · p(1  p )
Ple P l t d d ¨ ¸
©d l ¹ n( β  p )2
(1.84)

bajo la condición de la expresión (1.83) sucede que Ple o 0 si n o f .


Por otro lado, y para evaluar la probabilidad de error de código, se define m
como el número de palabras o vectores que quedan dentro de la esfera de radio
d que se describe en el entorno de alguna de las M palabras de código. Para
resolver este problema, Shannon asumió un mecanismo aleatorio de
codificación para el control de errores. En este sentido las restantes M  1
palabras de código se encuentran dentro del espacio n-dimensional, de manera
que la probabilidad de que el vector elegido aleatoriamente en el proceso de
codificación caiga en la esfera con m vectores es:

m
2n
(1.85)

aparte del vector código elegido como centro del análisis, existen otros M  1
vectores, de manera que, usando la ecuación (1.79):

Pce ( M  1 )m2 n  Mm2 n  m.2 n 2 n( Cs δ )


m2 n 2 n(1 Ω( p )δ ) m2 n( Ω( p )δ )
(1.86)

60
Capítulo I: Teoría de la Información y de la Codificación

la característica de los m vectores que están dentro de la esfera de radio d


definida en el entorno del vector de código c es la de tener d posiciones
diferentes respecto del vector de código o menos. La cantidad de posibles
palabras con d posiciones diferentes respecto del vector de código es igual a
§n ·
¨¨ ¸¸ . En general el número de palabras m dentro de la esfera de radio d es:
©d ¹

d§n· §n· §n· §n ·


m ¦ ¨¨ i ¸¸ ¨¨ ¸¸  ¨¨ ¸¸  ...  ¨¨ ¸¸ , d nβ
i 0© ¹ © 0 ¹ ©1 ¹ ©d ¹
(1.87)
§n ·
entre todos los términos de la combinatoria, el término ¨¨ ¸¸ es el mayor, y se lo
©d ¹
puede considerar cota de la suma de los d  1 términos de la misma haciendo:

§n · n!
m d ( d  1 )¨¨ ¸¸ ( d  1)
©d ¹ ( n  d )! d !
(1.88)

Dado que d nβ empleando la ecuación de Stirling para el factorial de un


número n , que es de la forma n! | n n e n 2πn si n !! 1 :

§n · nβ  1
m d ( d  1 )¨¨ ¸¸ 2 nΩ( β )
©d ¹ 2πnβ(1  β )

y combinando con la expresión de la probabilidad buscada, expresión (1.86):

nE  1 nE  1
Pce d 2 n>G  :( p )  :( E )@ 2 n>G ( :( E )  :( p )) @
2SnE (1  E ) 2SnE (1  E )
(1.89)

la expresión anterior indica que la probabilidad de error de código Pce tiende a


cero si se adopta un valor de δ ! Ω( β )  Ω( p ) que es función del parámetro
p , definida como la probabilidad de error del canal en el caso del CSB, y si
n o f . Una vez mas si la longitud de palabra de código tiende a un valor alto,
la probabilidad de error tiende a cero. El valor del parámetro δ es el nivel de
sacrificio de la capacidad del canal y debe ser un número tal que 0 d δ  Cs .

61
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Finalmente reemplazando los dos términos de probabilidad de error,


correspondientes al efecto del ruido y al error de codificación aleatoria:

p(1  p ) nβ  1
Pe Ple  Pce d 2
 2 n>δ ( Ω( β ) Ω( p )) @
n( β  p ) 2πnβ(1  β )
(1.90)

para un determinado valor de p , si se adopta el valor de β acorde a la


condición (1.83) y de manera de cumplir con la condición δ ! Ω( β )  Ω( p ) ,
entonces δ' δ  Ω( β )  Ω( p ) ! 0 y la probabilidad de error es:
K K
Pe Ple  Pce d 1  nK 2 2 nK3  4 2 nK3
n n
(1.91)

donde K1 K 2 , K 3 y K 4 son constantes de valor positivo. Claramente, los


términos primero y tercero de la expresión tienden a cero si n o f , y lo mismo
nK 2
sucede con el termino nK 2 2 nK3 si se lo analiza con el teorema
2 nK3
de L’ Hopital. Por lo tanto Pe o 0 en la medida que n o f , y se tiene
transmisión libre de errores en un canal simétrico binario con R  C .

1.12 Consecuencias de los límites en comunicaciones


En los sistemas de comunicaciones donde el ruido es blanco y gaussiano y
existe limitación del ancho de banda, las leyes de Nyqusit y Shannon son
suficientes para proporcionar el marco teórico para el diseño de tales sistemas
[5, 7].
Podría decirse que un sistema de comunicaciones ideal caracterizado por una
P S
relación señal ruido y de ancho de banda B es aquel que consigue
PN N
§ S·
transmitir libre de errores a la velocidad R B log2 ¨1  ¸ . El sistema ideal,
© N¹
definido por Shannon es como se ve en la figura:

62
Capítulo I: Teoría de la Información y de la Codificación

Figura 1.18 Sistema de comunicaciones ideal

La información proporcionada por la fuente es agrupada durante un periodo de


tiempo T y codificada en una de las M posibles señales de forma de cumplir
log 2 M
con R . Se tiene un conjunto posible de señales M 2 RT . La señal
T
y ( t ) x( t )  n( t ) es una versión ruidosa de la señal x (t ) que es alterada por
pasar por un canal con ruido blanco gaussiano limitado en banda. El teorema de
Shannon establece que:

log 2 M § S·
lim lim B log 2 ¨1  ¸
Pe o0 T of T © N ¹
(1.92)

la velocidad del sistema tiende a ser la capacidad del canal, R o C , si el


retardo del proceso de codificación tiende a infinito, T o f , con lo cual, desde
este punto de vista, no es realizable.

§ S·
En base a la expresión C B log 2 ¨1  ¸ se observa que el ancho de banda de
© N¹
transmisión y la relación señal-ruido están en producto constante, con lo cual
son intercambiables para mejorar el funcionamiento de un sistema.
Si se grafica esta expresión:

63
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

C/B bits/s/Hz
10

2 Region de los sistemas


realizables

-1
10
0 1 2 4 6 8 10 12 14 16 18 20
S/N [dB]

Figura 1.19 Regiones viables y no viables

En un sistema limitado a una banda de frecuencias de ancho B y en presencia


de ruido blanco, la potencia de ruido viene dada por N N0 B , donde N0 es la
densidad espectral de potencia de ruido del canal. Entonces:

C § S ·
log 2 ¨¨1  ¸
B © N0 B ¸¹

la relación señal ruido tiene una expresión equivalente que involucra la energía
promedio por bit E b y la velocidad de transmisión R .
Si R C entonces

Eb S S
N0 N0 R N0 C
(1.93)

C § E C· Eb § C ·
log 2 ¨¨1  b ¸¸ ; 2 C / B 1 ¨ ¸
B © N0 B ¹ N0 © B ¹
(1.94)

64
Capítulo I: Teoría de la Información y de la Codificación

Eb
N0 C
2
B C/B
1
(1.95)

se puede analizar ahora el límite de Shannon partiendo de la ecuación:

C § E C·
log 2 ¨¨1  b ¸¸
B © N0 B ¹
(1.96)

haciendo uso de la expresión lim(1  x )1 / x e


x o0

Eb §C ·
siendo en este caso x ¨ ¸
N0 ©B¹

como log 2 (1  x ) x
1
x
log 2 (1  x ) > @
x log 2 (1  x )1 / x [7]
N0 B
C C Eb § E C · CEb
log 2 ¨¨1  b ¸¸ Ÿ
B B N0 © N0 B ¹
N0 B
Eb § E C · CEb
1 log 2 ¨¨1  b ¸¸
N0 © N0 B ¹
(1.97)
C
si o 0 , tendencia que se logra haciendo B o f :
B

Eb 1
0.693 o bien
N0 log 2 e

§ Eb ·
¨¨ ¸¸ 1.59dB
© N0 ¹ dB
(1.98)

este valor se denomina el valor límite de Shannon. Es el valor de la relación


Eb
que los sistemas de codificación complejos, que trabajan con una longitud
N0

65
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

de palabra n muy larga, tienen como limite de funcionamiento. Esto significa


E
que si la relación b permanece por encima de este valor, es posible tener
N0
transmisión libre de errores empleando tales sofisticadas técnicas de
codificación.

De la ecuación:

Eb § C ·
2C / B 1 ¨ ¸
N0 © B ¹
(1.99)

se puede definir la curva que grafica el ancho de banda normalizado B / C


Eb
( Hz /(bits / seg ) ) en función de . Para una velocidad menor de
N0
transmisión:

Eb §R·
2R / B d 1  ¨ ¸
N0 ©B¹
(1.100)

t¨ ¸2
N0 © R ¹

Eb § B · R / B
1
(1.101)

La expresión (1.100) puede ser representada gráficamente, y define dos regiones


de uso, una de tipo práctico, y otra no útil o no realizable [1, 2, 5, 7]. La misma
se muestra en la figura 1.20, donde se grafica el cociente R / B en función del
parámetro E b / N0 . El contorno límite corresponde a la expresión (1.99), es
decir a R C . Esta curva muestra la tendencia al valor límite de Shannon
cuando R / B o 0 . Sin embargo, para cada valor de R / B existe un valor
límite diferente, que se puede obtener de esta curva.

66
Capítulo I: Teoría de la Información y de la Codificación

100
R/B
Región no útil

10

Región de uso
práctico
Límite -
1.59 dB
1
-10 0 10 20 30 40 50
Eb/No, [dB]

0.10

Figura 1.20 Regiones de operación práctica y no útil. Límite de Shannon

67
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

´Bibliografía y referencias
1 Shannon, C. E., “A Mathematical Theory of Communication,” Bell Syst.
Tech. J. vol. 27, págs. 379-423, 623-656, Julio y Octubre 1948.

2 Shannon, C. E., “Communications in the presence of noise,” Proc. of the


IEEE, vol. 86, no. 2, págs. 447-458, Febrero 1998.

3 McEliece, R. J., The Theory of Information and Coding, Addison-Wesley


Publishing Company, Massachusetts, 1977.

4 Abramson, N., Information theory and coding, McGraw Hill, New York,
1963.

5 Carlson, B., Communication Systems. An Introduction to Signals and


Noise in Electrical Communication, Third Edition, Mc-Graw Hill Book
Company, 1986.

6 Proakis, J. G. and Salehi, M., Communication Systems Engineering,


Prentice Hall, 1993.

7 Sklar, B., Digital Communications, Fundamentals and Applications,


Prentice Hall, 1993.

8 Proakis, J. G., Digital Communications, 2nd. Edition, Mc Graw Hill, New


York, 1989.

9 Adámek, J., Foundations of coding: Theory and Applications of Error-


Correcting Codes with an Introduction to Cryptography and Information
Theory, Wiley- Interscience, New York, 1991.

68
Capítulo I: Teoría de la Información y de la Codificación

Problemas
1.1) Una fuente discreta sin memoria produce símbolos con las siguientes
probabilidades:

A 0.4
B 0.2
C 0.2
D 0.1
E 0.05
F 0.05

Tabla P.1.1 Probabilidades de los símbolos de una fuente discreta sin memoria

a) Encuentre la auto información asociada a cada símbolo, y la entropía de


la fuente.
b) Calcule la máxima entropía de la fuente y luego determine la eficiencia
de esta fuente.

1.2)
a) Calcule la entropía de una fuente discreta sin memoria que genera 5
símbolos ^A,B,C,D,E` con probabilidades PA 1 / 2 , PB 1 / 4 , PC 1 / 8 ,
PD 1 / 16 , PE 1 / 16 .
b) Determine la información que contiene la secuencia emitida DADED .

1.3) Calcule la entropía de la fuente, la transinformacion I( X ,Y ) , y la


capacidad del canal simétrico binario (CSB) definido en la figura P.1.1:

1 p 0.75
P( 0 ) D 0.02 0

p 0.25 p 0.25

P(1 ) 1  D 01.8 1
1 p 0.75
Figura P.1.1 Un CSB

1.4) Muestre que para el CSB, la entropía es máxima cuando todos los
símbolos de la fuente discreta sin memoria son igualmente probables.

69
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

1.5) Una fuente binaria de símbolos independientes con probabilidades 0.25


y 0.75 se transmite en un CSB que tiene una probabilidad de transicion (error)
p 0.01 . Calcule la equivocación H( X / Y ) y la transinformacion I( X ,Y ) .

1.6) Cual es la capacidad de los siguientes CSBs conectados en cascada?

0.9 0.9
P( 0 ) D 0 0

0.1 0.1 0.1 0.1

P(1 ) 1  D 1 1
0.9 0.9

Figura P.1.2 Dos CBSs en cascada

1.7) Considere un canal binario con alfabetos de entrada y salida de tipo


binario ^0 ,1` que posee la siguiente matriz de probabilidades de transición:

ª3 / 5 2 / 5 º
Pch «1 / 5 4 / 5 »
¬ ¼

Determine la entropía a priori y las dos entropías a posteriori de este canal.

1.8) Encuentre las probabilidades condicionales P( x i / y j ) del canal


binario de borrado (CBB) con una probabilidad de borrado de 0.469, cuando las
probabilidades de la fuente son 0.25 y 0.75. Encuentre luego la equivocación, la
transinformacion y la capacidad del canal.

1.9) Calcule la transinformacion y estime la capacidad del siguiente canal de


borrado no simétrico:

70
Capítulo I: Teoría de la Información y de la Codificación

0.9
D 0.3 x1 0 0

0.1
E
0.2

1 D 0.7 x2 1 1
0.8
Figura P.1.3 Un canal de borrado no simétrico

1.10) La siguiente figura muestra un canal binario no simétrico. Muestre que


en este caso I( X ,Y ) Ω>q  (1  p  q )α @  αΩ( p )  (1  α )Ω( q ) .

1 p
P( 0 ) D 0 0
q

p
P(1 ) 1  D 1 1
1q

Figura P.1.4 Un canal binario no simétrico

1.11) Encuentre la transinformacion, la capacidad y la eficiencia de canal del


siguiente canal simétrico de borrado y error:

71
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

0.9
D 0.25 0 0
0.08
0.02
E
0.02

0.08
1 D 0.75 1 1
0.9
Figure P.1.5 Un canal simétrico de borrado y error

1.12) Considere la transmisión en un canal telefónico que tienen un ancho de


banda B 3KHz . Este canal puede ser considerado como un canal analógico
en el que la relación señal ruido (RSR) es de al menos 30 dB
a) ¿Cuál es la capacidad de este canal, en las condiciones anteriormente
descriptas?
b) ¿Qué relación RSR se necesita para transmitir una señal con M
símbolos que transporte 19,200 bits por segundo?

1.13) Un canal analógico es afectado por ruido blanco y gaussiano y tiene un


ancho de banda B 25 KHz y una RSR de 18 dB. ¿Cuál es la capacidad de
este canal en bits por segundo?

72
2
Códigos de Bloques

2.1 Codificación y control de error


Una de las predicciones originadas por el segundo teorema de Shannon es que
una suficientemente sofisticada técnica de codificación puede llevar a la
transmisión sobre un canal ruidoso a operar como si se tratara de una
transmisión sobre un canal libre de ruido. El teorema de Shannon demuestra que
la transmisión puede ser libre de errores utilizando una técnica de codificación
de naturaleza aleatoria. En este proceso, las palabras de mensaje constituidas
típicamente por bloques de k bits, son asignadas de forma aleatoria a palabras
de código de n bits en una asignación o función biyectiva que produce
redundancia, y que permite decodificar unívocamente cada mensaje, bajo ciertas
condiciones. Esta codificación propuesta por Shannon es esencialmente una
codificación en bloques.
Sin embargo, lo que no queda totalmente definido por el teorema es algún
método constructivo para diseñar la sofisticada técnica de codificación. Existen
básicamente dos técnicas de codificación que difieren en la mecánica de la
generación de redundancia. Estas dos técnicas básicas son la de la codificación
en bloques, y la convolucional. En este capítulo se analiza la codificación en
bloques.
Los errores podrán ser detectados o corregidos. En general, para un dado
código, la capacidad de detección de errores es mas amplia que la capacidad de
corregirlos, ya que para esto último se necesita conocer la posición y magnitud
del error.

2.2 Detección y corrección de errores


La codificación orientada a la detección del error es siempre más simple que la
diseñada para corregirlos. El diseño de códigos especializados en detección o
corrección depende de las características del sistema en donde se lo piensa
aplicar.
Cuando el sistema tiene la posibilidad de la comunicación duplex, es decir que
existen los dos sentidos de la transmisión (como el caso de la línea telefónica)

73
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

los códigos pueden ser diseñados solo para detectar los errores, ya que la
corrección de los mismos se realiza por requerimiento de repetición. Este
esquema de transmisión se denomina de Corrección por Retransmisión (CR)
que en Inglés se conoce como “Automatic Repeat reQuest” (ARQ). En todo
sistema ARQ existe la posibilidad de requerir retransmisión. Cuando el sistema
es de un solo sentido (como en el caso del “paging” o envío de mensajes por
radiofrecuencia) no existe posibilidad de solicitud de retransmisión, por lo que
la codificación empleada necesita corregir errores en el lado receptor. Esta
forma de transmisión se denomina Corrección en Directa (CD) que en Inglés se
conoce como “Forward Error Correction” (FEC).

2.2.1 Códigos simples. El código de repetición

Una forma simple de realizar una codificación es sencillamente repetir el


símbolo transmitido una determinada cantidad de veces n . En la transmisión de
símbolos binarios el bit ‘1’ se representa por una secuencia de n ‘1’s , mientras
el símbolo ‘0’ se representa por una secuencia de n ‘0’s.
En general se dirá que si los errores ocurren aleatoriamente con probabilidad
Pe p (como en el CSB), la función binomial expresa la probabilidad de tener
i errores en una palabra de n bits:

§n· §n·
P(i,n) = ¨¨ ¸¸ p i (1 - p )n - i # ¨¨ ¸¸ p i p << 1
©i ¹ ©i ¹
§n· n!
¨¨ ¸¸ =
© i ¹ i! (n - i)!
(2.1)

En general el valor de la probabilidad p siempre será lo suficientemente


pequeño como para validar la aproximación hecha en la ecuación (2.1).

Por otro lado, y debido a la misma causa, siendo p  1 será también cierto que
se tiene mayor probabilidad de tener i errores que i  1 errores, esto es,
P( i  1, n )  P( i , n ) .
Para el caso de un código de repetición n 3 por ejemplo, las palabras
pertenecientes al código son (111) y (000) . La primera típicamente representa
al uno, mientras que la segunda representa al cero. Existirá detección de error
cuando se reciba cualquier otra palabra de las ocho posibles que se tienen que
no sean las del código. Así se sabrá de uno o dos errores si se recibe por
ejemplo la palabra (110) . Codificar significa básicamente ampliar la

74
Capítulo II: Códigos de Bloques

dimensión del sistema en que se trabaja para elegir en un espacio de vectores


mayor, ciertas palabras como válidas, mientras otras no pertenecen al código.
En este caso se usan ocho vectores de los cuales solo dos pertenecen al código.
Los otros seis patrones posibles de ser recibidos corresponden a patrones de
error. Se dice entonces que el sistema es capaz de detectar uno o dos errores.
Considerando que la probabilidad de un error es mayor que la de tener dos
errores, los patrones:

(110 ),(101 ) y ( 011 )

se considerarán secuencias de tres unos con un error. De acuerdo a este criterio,


al recibir estas palabras el sistema corregirá el error asignándolo al hecho que
un ‘1’ fue el vector transmitido. De la misma forma, los patrones:

( 001 ),( 010 ) y (100 )

se considerarán secuencias de tres ceros que sufrieron un error. La corrección


establecerá que el vector transmitido fue el de tres ‘0’s por lo que el bit
transmitido es el ‘0’. El sistema no podrá corregir dos errores.
Desde el punto de vista de la detección, el código no podrá darse cuenta de la
presencia de tres errores, que hacen por ejemplo que una secuencia de tres ceros
se convierta en otra de tres unos. Al recibir esta secuencia el sistema creerá que
la palabra pertenece al código y lo recibirá erróneamente como un uno. La
probabilidad de error es entonces:

Pw e = P(3,3) = p 3

Desde el punto de vista de la corrección la probabilidad de error esta fijada por


la aparición de dos o mas errores.

Pwe = P(2,3) + P(3,3) = 3 p 2 (1  p )  p 3 = 3 p 2  2 p 3

En todos los casos Pe p , es la probabilidad de error sin codificación, es decir


la probabilidad de error que el sistema de comunicación tiene originariamente,
antes de codificar. Para el caso del CSB esta es la probabilidad de transición
cruzada entre símbolos. La probabilidad de error es siempre mejorada, pero en
la versión codificada se requiere que cada bit sea transmitido con tres bits. Al
final del capítulo se realizarán las consideraciones necesarias para efectuar una
comparación justa entre un sistema codificado y uno no codificado.
La eficiencia del código se mide como la relación entre los bits de información
y los bits de la palabra entera que se transmite:

75
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

k
Rc =
n
(2.2)

Los códigos de repetición tienen gran capacidad de corrección de errores, pero


baja eficiencia de velocidad. Se analizarán a lo largo del texto diferentes
técnicas de codificación que obtienen una mayor capacidad de corrección de
errores manteniendo la tasa del código en niveles más razonables.
Este simple ejemplo del código de repetición permite diferenciar la detección de
la corrección de errores.

2.3 Códigos de Bloques. Introducción y parámetros


asociados
Cuando se emplea codificación en bloques la información a codificar,
esencialmente presentada en formato digital binario, es segmentada en bloques
de k bits, que son los denominados bits de mensaje, que en conjunto
constituyen 2 k posibles mensajes. El codificador transforma cada bloque de
datos en un bloque normalmente mas largo, de n ! k bits, denominados bits
codificados o de la palabra código. En este esquema se observa que existen
entonces ( n  k ) bits que el codificador agrega a la palabra original, y que se
denominan bits de redundancia o de control de paridad. Como se explicó en el
capítulo anterior, el proceso de codificación para el control de errores necesita
de algún mecanismo de agregado de redundancia a la palabra original. Este
proceso de redundancia se realiza de diferentes maneras operando sobre la
información de mensaje de forma que aplicando la operación inversa del lado
receptor sea posible recuperar el mensaje original. En este sentido, en la
operación final de recepción o decodificación, los bits de redundancia son
descartados, ya que no contienen información de mensaje. Este tipo de códigos
se denomina código de bloques C b ( n, k ) . Asociada a estos códigos aparece lo
que se denomina la tasa del código k / n , que mide el nivel de redundancia
empleado en la codificación, significando el porcentaje de bits codificados que
contienen información de mensaje.
Este concepto tiene relación con el ancho de banda empleado en la transmisión,
cuando se utiliza codificación.
Si por ejemplo se emplea una codificación en bloques de tasa k / n 2 / 3
entonces se debe tener en cuenta que en el mismo tiempo T en que
originalmente y sin codificar se alojan las dos señales que representan a los dos
bits, se tiene ahora que poder alojar a tres señales con la misma ocupación

76
Capítulo II: Códigos de Bloques

temporal, de manera que el tiempo de duración de cada señal pasa a ser de


T / 2 a T / 3 , y la ocupación espectral es en consecuencia mayor. Un
concepto equivalente en el caso del almacenamiento de datos digitales es que la
información codificada requerirá de mayor espacio físico para ser almacenada.
Por estas razones será entonces conveniente mantener la tasa del código en
niveles razonables, a pesar de que este objetivo va a estar en compromiso con la
capacidad de corrección del código.
Dado que los 2 k mensajes son transformados en palabras de n bits, se puede
interpretar este procedimiento como la aplicación de una expansión del espacio
vectorial de dimensión 2 k a otro de dimensión mayor 2 n , del cual se eligen de
forma conveniente solo 2 k vectores. Los códigos de bloques pueden ser
analizados empleando la teoría de espacio vectorial.

2.4 El espacio vectorial sobre el campo binario


Un espacio vectorial V es en esencia un conjunto de vectores que cumplen
determinadas propiedades, que son verificadas realizando operaciones sobre sus
vectores integrantes, operaciones que se suelen definir dentro de un campo F .
El espacio vectorial V esta constituido por un conjunto de elementos sobre los
cuales esta definida la operación binaria † llamada suma. Si F es un campo, la
operación producto simbolizada x se define entre los elementos del campo F
y del espacio vectorial V [4-9]. Se dice que V es un espacio vectorial sobre el
campo F si sucede que:

x V es un grupo conmutativo para la adición


x Para cualquier elemento a  F y cualquier u  V sucede que
a xu  V
x Para cualesquiera u,v  V y a, b  F
a x (u  v ) a x u  a x v
y además ( a  b ) x ( u ) a x u  b x u
x Para cualquier u  V y a, b  F se cumple que
( a x b ) x u a x ( b x u)
x Si 1 es el elemento unitario en F entonces
1 x u u para cualquier u  V

En este tipo de espacio vectorial se cumple también que:

x Para cualquier u  V , si 0 es el elemento nulo en F , se verifica

77
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

0 xu 0

x Para cualquier escalar c  F


c x0 0
x Para cualquier escalar c  F y cualquier vector u  V ,
( c ) x u c x ( u ) ( c x u )
siendo ( c ) x u c x ( u ) el inverso aditivo de c x u .

Un espacio vectorial que resulta muy útil en la descripción de los códigos de


bloques es el definido sobre el campo de Galois GF( 2 ) , que suele llamarse
también campo binario. Los campos de Galois GF( q ) existen para todos
valores de q que sean números primos o potencias de primos. El campo de
Galois GF( 2 ) es un caso particular para cuando q 2 . Considere una
secuencia ordenada de n componentes a0 , a1 ,..., an 1 donde cada
componente a i es un elemento del campo GF( 2 ) , es decir adopta uno de dos
posibles valores, 0 o 1 .
Esta secuencia será denominada vector de n componentes. Se pueden
construir 2 n diferentes vectores de este tipo. El espacio vectorial constituido
por estos vectores será denominado Vn . La operación adición † se define para
este espacio vectorial de la siguiente manera: si u (u0 , u1,...un 1 ) y
v (v 0,v1,...v n 1 ) son vectores de Vn , entonces:

u †v (u0 †v 0,u1†v 2 ,..., un 1†v n 1 )


(2.3)

donde † significa suma en módulo-2. Dado que el vector suma también es un


vector de n componentes, este vector pertenece a Vn , de manera que este
espacio vectorial es cerrado bajo esta operación. La suma de dos vectores de Vn
es otro vector del mismo espacio vectorial.
Las operaciones en el campo binario son la multiplicación y la suma en
módulo-2. Estas operaciones se describen a continuación:

Suma en Módulo-2

0†0 0
0 †1 1
1† 0 1
1† 1 0

78
Capítulo II: Códigos de Bloques

Multiplicación en Módulo-2

0x0 0
0 x1 0
1x 0 0
1x 1 1

En realidad Vn es un grupo conmutativo bajo la operación adición. Existe el


vector nulo 0 ( 0,0,...,0 ) que es la identidad aditiva:

u †0 (u0 † 0, u1 † 0,..., un 1 † 0) u
(2.4)

y además:

u †u (u0 † u0 , u1 † u1,..., un 1 † un 1 ) 0
(2.5)

es decir, cada vector del espacio vectorial es su propio inverso aditivo. Puede
demostrarse que este espacio vectorial definido sobre GF( 2 ) es un grupo
conmutativo de forma que se cumplen las leyes asociativa y conmutativa,
siendo posible definir el producto entre un vector del espacio u  V y un
escalar del campo a  GF( 2 ) como:

a xu (a x u0 , a x u1,..., a x un 1 )
(2.6)

Donde la operación a x u i es la multiplicación en modulo-2. Es posible


demostrar que la adición vectorial y la multiplicación escalar satisfacen las
leyes conmutativa, asociativa y distributiva de forma que el conjunto de
vectores Vn que opera sobre el campo GF( 2 ) es un espacio vectorial definido
sobre GF( 2 ) .

Ejemplo 2.1:

El espacio vectorial de vectores de 4 componentes esta constituido por 2 4 16


vectores:

79
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

V4 {( 0000 ),( 0001 ),( 0010 ),( 0011 ),( 0100 ),( 0101 ),( 0110 ),( 0111 )
(1000 ),(1001 ),(1010 ),(1011 ),(1100 ),(1101 ),(1110 ),(1111 )}

La suma de dos cualesquiera de estos vectores es otro vector que pertenece al


mismo espacio vectorial:

(1011) † (0010) (1001)

Las posibles multiplicaciones por elementos del campo en este caso son solo
dos:

0 x (1011) (0000)
1x (1011) (1011)

2.4.1 Subespacios vectoriales

Dado un espacio vectorial V que opera sobre un campo F es posible encontrar


un subconjunto de vectores dentro de V que sea también un espacio vectorial
sobre F . Este subconjunto S se denomina subespacio de V . Para que este
subconjunto no vacío S del espacio V sea un subespacio se debe cumplir que:

x Para cualesquiera dos vectores de S u,v  S el vector suma


u  v  S
x Para cualquier elemento a  F y cualquier vector u  S el vector
resultante del producto por un escalar pertenece al subespacio,
a xu S.

Ejemplo 2.2:

El siguiente subconjunto es un subespacio vectorial del espacio vectorial V4 :

S {( 0000 ),(1001 ),( 0100 ),(1101 )} .

Por otro lado, si {v 0 ,v1 ,..., v k -1 } es un conjunto de vectores del espacio


vectorial V sobre F , y a0 , a1,..., ak 1 son k escalares del campo F , a la suma

a0 x v 0 † a1 x v1 † ... † ak 1 x v k -1
(2.7)

80
Capítulo II: Códigos de Bloques

se la denomina combinación lineal de los vectores {v 0 ,v1 ,..., v k -1 } . La suma


de combinaciones lineales y el producto de una combinación lineal por un
elemento del campo F son también combinaciones lineales de los vectores
{v 0 ,v1 ,..., v k -1 } .

Teorema 2.1: Si {v 0 ,v1 ,..., v k -1 } son k vectores del espacio vectorial V


definido sobre F , el conjunto de todas las combinaciones lineales posibles de
{v 0 ,v1 ,..., v k -1 } forman un subespacio S de V .

Ejemplo 2.3:

Tomando los vectores (1001 ) y ( 0100 ) del espacio vectorial V4 sus


combinaciones lineales forman el subespacio S del ejemplo anterior:

0 x (1001 ) † 0 x ( 0100 ) ( 0000 )


0 x (1001 ) † 1 x ( 0100 ) ( 0100 )
1 x (1001 ) † 0 x ( 0100 ) (1001 )
1 x (1001 ) † 1 x ( 0100 ) (1101 )

Un conjunto de k vectores {v 0 ,v1 ,..., v k -1 } se dice linealmente dependiente si


y solo si existen k escalares del campo F , no todos iguales a cero, tales que la
combinación lineal resulta igual al vector nulo:

a0 x v 0 † a1 x v1 † ... † ak 1 x v k -1 0
(2.8)

Si el conjunto de vectores no es linealmente dependiente, entonces se dice que


ese conjunto es linealmente independiente.

Ejemplo 2.4:

Los vectores (1001 ),( 0100 ) y (1101 ) son linealmente dependientes porque:

1 x (1001 ) † 1 x ( 0100 ) † 1 x (1101 ) ( 0000 )

Un conjunto de vectores se dice que genera un espacio vectorial V si cada


vector de ese espacio vectorial es una combinación lineal de esos vectores.

81
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

En cualquier espacio o subespacio vectorial existe al menos un conjunto Bli de


vectores linealmente independientes que generan dicho espacio o subespacio.

Para el espacio vectorial Vn sobre GF( 2 ) el siguiente conjunto de vectores:

e0 (1,0 ,...0 )
e1 ( 0 ,1,...,0 )

e n 1 ( 0 ,0 ,...,1 )
(2.9)

es el grupo de vectores e i que solo tienen una única componente distinta de


cero en la posición i . Este conjunto de vectores es linealmente independiente.
Cualquier vector de este espacio vectorial se puede escribir entonces como:

( a0 , a1 ,..., an 1 ) a0 x e0  a1 x e1  ...  an 1 x e n1


(2.10)

Este conjunto de vectores linealmente independiente ^e0 ,e1 ,.., e n 1 ` genera el


espacio vectorial Vn , cuya dimensión es n . Siendo k  n , el conjunto de
vectores linealmente independientes {v 0 ,v1 ,..., v k -1 } genera un subespacio
vectorial S de Vn por medio de todas sus combinaciones lineales posibles, que
son de la forma:

u c0 x v 0 † c1 x v1 † ... † ck 1 x v k -1
(2.11)

El subespacio formado es de dimensión k y esta constituido por 2 k vectores,


numero de combinaciones que surge del hecho que los coeficientes
c i  GF( 2 ) y adoptan solo dos posibles valores 0 o 1 .
Otra operación de interés es el denominado producto interno entre dos vectores.
Dados los vectores u (u0 ,u1,...un 1 ) y v (v 0 ,v1,...v n 1 ) se define el
producto interno como:
u $v u0 x v 0 † u1 x v1 † ... † un-1 x v n1
(2.12)

82
Capítulo II: Códigos de Bloques

donde las operaciones producto y suma son en módulo-2. Este producto interno
cumple con las leyes conmutativa, asociativa y distributiva. Cuando sucede que
u $ v 0 se dice que los vectores u (u0 ,u1,...un 1 ) y v (v 0 ,v1,...v n 1 )
son ortogonales.

2.4.2 Subespacio dual

Si S es un subespacio k -dimensional del espacio vectorial n -dimensional


Vn , el conjunto S d de vectores v para los cuales se cumple que para cualquier
u  S y v  Sd u $ v 0 se denomina espacio dual de S . Se puede
demostrar que este espacio dual es también un subespacio de Vn . También es
posible demostrar que si la dimensión del subespacio S es k , entonces la
dimensión del subespacio dual es (n  k ) . Dicho de otra manera:

dim( S )  dim( Sd ) n
(2.13)

Ejemplo 2.5:

Para el espacio vectorial V 4 sobre GF( 2 ) los siguientes vectores


S {( 0000 ),( 0011 ),( 0110 ),( 0100 ),( 0101 ),( 0111 ),( 0010 ),( 0001 )}
constituyen un espacio 3 -dimensional S de V 4 para el cual el subespacio 1 -
dimensional de los vectores Sd {( 0000 ),(1000 )} es el espacio dual S d de
S.

2.4.3 Forma Matricial

Los vectores linealmente independientes que generan un determinado


subespacio o espacio vectorial pueden ser organizados como vectores fila de
una matriz. Dicha matriz de dimensión kxn definida sobre GF( 2 ) es un
arreglo rectangular de k filas y n columnas:

83
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

ª g 00 g 01  g 0 ,n 1 º
« g g11  g1,n 1 »»
G « 10
«    »
« »
¬«g k 1,0 g k 1,1  g k 1,,n 1 ¼»
(2.14)

Cada elemento de esta matriz pertenece al campo GF( 2 ) , g ij  GF( 2 ) . Cada


una de sus filas se puede interpretar como un vector de dimensión 1xn . Si las
k filas de esta matriz son linealmente independientes, se pueden considerar
como una base que genera 2 k combinaciones lineales posibles que como
conjunto constituyen un subespacio vectorial k -dimensional del espacio
vectorial Vn . Este subespacio generado se denomina el espacio fila de G . Si
bien sobre esta matriz se pueden realizar operaciones lineales y permutación de
filas por otras o por sumas de filas, el espacio generado por la matriz
modificada G' es el mismo que el generado por G .

Ejemplo 2.6:

En la matriz G se reemplaza la tercera fila por la suma de segunda y tercera y


se intercambian filas primera y segunda, formando la matriz G' .

ª1 0 1 1 0 º ª0 1 0 0 1 º
G «0 1 0 0 1 » G' «1 0 1 1 0 »
« » « »
«¬1 1 0 1 1 »¼ «¬1 0 0 1 0 »¼

Pero ambas generan el mismo subespacio:

0 x (10110 ) † 0 x ( 01001 ) † 0 x (11011 ) ( 00000 )


0 x (10110 ) † 0 x ( 01001 ) † 1 x (11011 ) (11011 )
0 x (10110 ) † 1 x ( 01001 ) † 0 x (11011 ) ( 01001 )
1 x (10110 ) † 0 x ( 01001 ) † 0 x (11011 ) (10110 )
0 x (10110 ) † 1 x ( 01001 ) † 1 x (11011 ) (10010 )
1 x (10110 ) † 1 x ( 01001 ) † 0 x (11011 ) (11111 )
1 x (10110 ) † 0 x ( 01001 ) † 1 x (11011 ) ( 01101 )
1 x (10110 ) † 1 x ( 01001 ) † 1 x (11011 ) ( 00100 )

84
Capítulo II: Códigos de Bloques

En ambos casos se tiene un subespacio vectorial 3 -dimensional del espacio


vectorial V5 .

2.4.4 Matriz del Subespacio dual

Si se tiene al subespacio vectorial S , que es el espacio fila de la matriz G con


k filas linealmente independientes, y siendo S d el espacio dual de S , se sabe
entonces que la dimensión del espacio dual es n  k . La matriz G se puede
escribir en forma abreviada considerando a sus filas como vectores de
dimensión 1xn :

ª g0 º
« g »
G « 1 »
«  »
« »
¬g k 1 ¼
(2.15)

Sean h0 , h1 ,..., hnk 1 los vectores fila linealmente independientes


correspondientes a la matriz de quien S d es espacio fila. Estos vectores generan
S d . Se puede entonces construir una matriz de dimensión ( n  k )xn que se
denomina H utilizando estos vectores h0 , h1 ,..., hnk 1 como filas:

ª h0 º ª h00 h01  h0 ,n 1 º
« h » « h h11  h1,n 1 »»
H « 1 » « 10
«  » «    »
« » « »
¬hn - k 1 ¼ ¬«hn k 1,0 hn k 1,1  hn k 1,n 1 ¼»
(2.16)

El espacio fila de H es S d , es decir el subespacio dual de S , que es el espacio


fila de G . Dado que cada vector fila g i de G es vector de S , y cada vector
fila h j de H es vector de S d , el producto interno entre ellos es nulo,
gi $ h j 0 . El espacio fila de G es el espacio dual del espacio fila de H . Se
puede decir que para cada matriz G de dimensión kxn con k vectores
linealmente independientes existe una matriz H de dimensión ( n  k )xn con

85
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

n  k vectores linealmente independientes de manera que para cada vector fila


g i de G y cada vector fila h j de H se cumple que g i $ h j 0 [4].
Ejemplo 2.7:

Dada la matriz:

ª1 0 1 1 0 º
G «0 1 0 0 1 »
« »
«¬1 1 0 1 1 »¼

las filas de esta matriz generan el subespacio formado por:


S {( 00000 ),(11011 ),(10110 ),( 01001 ),(10010 ),(11111 ),( 01101 ),( 00100 )}

La matriz

ª0 1 0 0 1 º
H «1 0 0 1 0 »
¬ ¼

tiene vectores fila que generan el espacio fila S d constituido por los vectores

Sd {( 00000 ),( 01001 ),(10010 ),(11011 )}

que es el espacio dual de S . En efecto se verifica que g i $ h j 0:

(10110 ) $ ( 01001 ) 0
(10110 ) $ (10010 ) 0
( 01001 ) $ ( 01001 ) 0
( 01001 ) $ (10010 ) 0
(11011 ) $ ( 01001 ) 0
(11011 ) $ (10010 ) 0

2.5 Códigos de Bloques Lineales


Los conceptos anteriormente presentados serán útiles para la descripción de este
tipo de códigos.

86
Capítulo II: Códigos de Bloques

La información a codificar se organiza en grupos de k bits que constituyen un


vector de mensaje genérico m m0 , m1 ,..., mk 1 , del cual existen 2 k
posibles combinaciones. El codificador toma este mensaje y crea un vector de
código c c0 , c1 ,..., c n 1 de n componentes, donde normalmente n ! k , es
decir, se aplica redundancia. Esto es básicamente una asignación biyectiva entre
los 2 k vectores del espacio vectorial de mensaje y 2 k de los posibles 2 n
vectores del espacio vectorial codificado.
Cuando los valores de k y n son pequeños, la asignación puede realizarse a
través de una tabla, pero cuando la magnitud de estas cantidades es grande, es
necesario encontrar un método o mecanismo de generación del código. En este
sentido la linealidad de las operaciones de este mecanismo simplifica
grandemente el proceso de codificación.
Definición 2.1: Un código de bloques de longitud n y 2 k palabras de mensaje
se denomina código de bloques lineal C b ( n, k ) si las 2 k palabras de código
forman un subespacio vectorial de dimensión k , del espacio vectorial Vn de
todos los vectores de longitud n y componentes del campo GF( 2 ) [3, 4, 6].

Codificar significa básicamente tomar las 2 k palabras binarias de k bits que se


pretende codificar, y asignarlas a algunos de los 2 n vectores de n bits. Esto se
realiza como una función unívoca entre los 2 k vectores y los 2 n vectores.
Siendo regularmente k  n existen más vectores de n bits que los que se
tienen de k bits, con lo que la elección de los vectores de n bits debe hacerse
empleando la menor redundancia, y maximizando la distancia o separación
entre las palabras. El conjunto de 2 k palabras constituye un subespacio
vectorial del conjunto de vectores de n palabras. Como consecuencia de la
definición, se puede establecer entonces que la suma de dos palabras
cualesquiera del código será también otra palabra o vector del código.

2.5.1 Matriz generadora de un código de bloques G

Dado que un código lineal de bloques C b ( n, k ) es un subespacio vectorial del


espacio vectorial Vn , será posible encontrar k vectores linealmente
independientes que son a su vez palabras del código g0 , g1 ,..., g k 1 de manera
que cada palabra c del código es una combinación lineal de estos vectores:

c m0 x g0 † m1 x g1 † ... † mk 1 x g k -1
(2.17)

87
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Estos vectores linealmente independientes se pueden organizar en la forma de


una matriz, llamada matriz generadora:
ª g 0 º ª g 00 g 01  g 0 ,n 1 º
« g » « g g11  g1,n 1 »»
G « 1 » «
10
«  » «    »
« » « »
¬g k 1 ¼ ¬«g k 1,0 g k 1,1  g k 1,n 1 ¼»
(2.18)

De esta forma se establece un mecanismo matricial para la generación de las


palabras del código. Si el vector de mensaje se expresa como
m m0 , m1 ,..., mk 1 , entonces la palabra o vector de código se obtiene
haciendo:

ª g 00 g 01  g 0 ,n 1 º
« g g11  g1,n 1 »»
c m $ G m0 , m1 ,..., m k 1 $ «
10
«    »
« »
«¬g k 1,0 g k 1,1  g k 1,n 1 »¼
ª g0 º
« g »
m0 , m1 ,..., mk 1 $ « 1 » m0 x g 0 † m1 x g1 † ... † m k 1 x g k -1
«  »
« »
¬g k 1 ¼
(2.19)

Nótese que el símbolo ‘ $ ‘ representa el producto interno entre vectores o


matrices, mientras que el símbolo ‘ x ‘ es el producto entre un escalar del campo
GF( 2 ) y un vector del espacio o subespacio vectorial utilizado.
Puede decirse que las filas de la matriz G generan el código lineal de bloques
C b , ( n, k ) o dicho de otra forma, las k filas linealmente independientes de G
especifican completamente el código.

Ejemplo 2.8:

Considere la siguiente matriz de generación de dimensión 4 x7 y obtenga la


palabra de código que le corresponde a la palabra o vector de mensaje
m 1001 .

88
Capítulo II: Códigos de Bloques

ªg 0 º ª1 1 0 1 0 0 0º
«g » «0 1 1 0 1 0 0 »»
G « 1» «
«g 2 » «1 1 1 0 0 1 0»
« » « »
¬g 3 ¼ ¬1 0 1 0 0 0 1¼

El vector de código correspondiente es:

c m $ G 1 x g0 † 0 x g1 † 0 x g2 † 1 x g 3 (1101000 ) † (1010001 ) ( 0111001 )

La tabla 2.1 muestra el código generado por la matriz G del ejemplo 2.8:

Mensaje Vector de código


0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 0 1 0 0 0 1
0 0 1 0 1 1 1 0 0 1 0
0 0 1 1 0 1 0 0 0 1 1
0 1 0 0 0 1 1 0 1 0 0
0 1 0 1 1 1 0 0 1 0 1
0 1 1 0 1 0 0 0 1 1 0
0 1 1 1 0 0 1 0 1 1 1
1 0 0 0 1 1 0 1 0 0 0
1 0 0 1 0 1 1 1 0 0 1
1 0 1 0 0 0 1 1 0 1 0
1 0 1 1 1 0 0 1 0 1 1
1 1 0 0 1 0 1 1 1 0 0
1 1 0 1 0 0 0 1 1 0 1
1 1 1 0 0 1 0 1 1 1 0
1 1 1 1 1 1 1 1 1 1 1

Tabla 2.1 Vectores de código de un código lineal de bloques (7,4)

2.5.2 Forma sistemática de un código de bloques

En la tabla precedente se puede ver que los últimos cuatro bits de cada palabra
de código coinciden con los bits de mensaje, o mejor dicho el mensaje aparece
tal como es dentro de la palabra codificada. En este caso los tres primeros bits

89
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

de la palabra de código son los llamados bits de redundancia o paridad. A esta


característica estructural de los vectores de código se la denomina forma
sistemática. En esta forma, los vectores de código aparecen constituidos por
( n  k ) bits de paridad seguidos por los k bits del vector mensaje.

n  k bits de paridad k bits de mensaje

Figura 2.1 Formato sistemático de la palabra codificada

Esta forma de organizar la palabra codificada podría ser hecha al revés, es decir
ubicando los bits de mensaje al principio de la palabra, y los de paridad al final.
La manera en que esto sea hecho no modifica las propiedades de los códigos de
bloques, aunque algunas expresiones matemáticas de las operaciones de
codificación adoptan lógicamente una forma diferente en cada caso. En la
bibliografía existente puede encontrarse el planteo de la forma sistemática de
un código de bloques hecho alternativamente en cualquiera de las dos forma
descriptas.
Un código lineal sistemático de bloques (n, k ) esta especificado unívocamente
por la matriz generadora de la forma:

ª g0 º ª p00 p01  p0 ,n k 1 1 0 0  0 º
« g » « p p11  p1,n k 1 0 1 0  0 »»
G « 1 » « 10
«  » «       »
« » « »
¬g k 1 ¼ ¬« pk 1,0 pk 1,1  pk 1,,n k 1 0 0 0  1 ¼»




Sub- matriz P kx( n k ) Sub- matriz I kxk
(2.20)

Una notación mas abreviada es:

G >P Ik @
(2.21)

Cuando se realiza la codificación en forma sistemática es posible establecer la


relación analítica entre los bits de mensaje y los de paridad. Siendo el vector de
mensaje m m0 , m1 ,..., mk 1 y el vector codificado c c0 , c1 ,..., c n 1 los

90
Capítulo II: Códigos de Bloques

bits de paridad dentro de la palabra codificada se obtienen como función de los


bits de mensaje con la expresión:

c n k  i mi
cj m0 x p0 j  m1 x p1 j  ...  mk 1 x pk 1, j
0 d j  nk
(2.22)

Estas n  k ecuaciones son las llamadas ecuaciones de paridad.

Ejemplo 2.9: Considérese la matriz generadora del código de bloques lineal


(7 ,4 ) ya visto en el ejemplo anterior, y exprese las condiciones de paridad para
este caso.

ª1 1 0 1 0 0 0º
«0 1 1 0 1 0 0 »»
c m $G ( m0 , m1 , m2 , m3 ) $ «
«1 1 1 0 0 1 0»
« »
¬1 0 1 0 0 0 1¼

Las ecuaciones de paridad adoptan la forma:

c0 m0 † m 2 † m 3
c1 m0 † m1 † m2
c2 m1 † m2 † m3
c3 m0
c4 m1
c5 m2
c6 m3

2.5.3 Matriz de paridad H

Como se ha dicho en secciones previas la matriz generadora G contiene k


vectores fila linealmente independientes que generan el subespacio vectorial S
del espacio vectorial Vn , que a su vez tiene asociado un subespacio vectorial

91
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

dual S d del mismo espacio vectorial Vn , que es generado por las filas de una
matriz H . Cada vector del espacio fila de la matriz G es ortogonal a las filas de
la matriz H y viceversa.
Las 2 n k combinaciones lineales de las filas de la matriz H generan el código
C bd ( n, n  k ) que es el espacio dual del código C b generado por la matriz
G . La forma sistemática de la matriz de paridad H del código C b generado
por la matriz G es:

ª1 0  0 p00 p10  p k 1,0 º


« p k 1,1 »»
H «0 1  0 p01
«   
p11


 »
>I n k PT @
« »
¬«0 0  1 p0 ,n k 1 p1,n k 1  p k 1,n k 1 ¼»






Sub- matriz I (n - k)x(n- k) Submatriz PT (n - k)xk
(2.23)

P T es la traspuesta de la submatriz de paridad P . La matriz H esta construida


de manera que el producto interno entre un vector fila g i de G y un vector fila
h j de H sean ortogonales:

gi $ h j pij † pij 0
(2.24)

esto tiene como consecuencia que:

G $ HT 0
(2.25)

Se puede verificar que las ecuaciones de paridad también surgen de la matriz


H , que en consecuencia también especifica completamente al código. Dado que
un vector de código en forma sistemática es:

c c0 ,c1 ,..., c nk 1 , m0 , m1 ,..., mk 1


(2.26)

entonces siendo c $ H T m $ G $ HT 0
(2.27)

92
Capítulo II: Códigos de Bloques

para la fila j de H

c j † p0 j x m0 † p1 j x m1 † ... † pk 1, j x mk 1 0
(2.28)

o bien:

cj p0 j x m0 † p1 j x m1 † ... † pk 1, j x mk 1
0 d j  nk
(2.29)

Ejemplo 2.10:

Determine la matriz de paridad para el código lineal de bloques C b (7 ,4 )


generado por la matriz:

ª1 1 0 1 0 0 0º
«0
« 1 1 0 1 0 0 »»
G
«1 1 1 0 0 1 0»
« »
¬1 0 1 0 0 0 1¼

Como:

ª1 1 0 1 0 0 0º
«0 1 1 0 1 0 0 »»
G «
«1 1 1 0 0 1 0»
« »
¬1 0 1 0 0 0 1¼





Sub- Matriz P Sub matriz I

la matriz de paridad se configura con estas sub-matrices de la forma:

ª1 0 0 1 0 1 1 º
H «0 1 0 1 1 1 0 »
« »
«¬0 0 1 0 1 1 1 »¼

93
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

La implementación práctica de estos códigos se da con el empleo de lógica


digital, de forma de generar las ecuaciones de paridad correspondientes.

2.6 Detección de errores por síndrome


Para un código lineal de bloques C b ( n, k ) se han definido las correspondientes
matrices de generación G y paridad H y se ha visto que estando definido sobre
el campo GF( 2 ) , el vector de código es de la forma c c0 , c1 ,..., c n 1 ,
donde los c i  GF( 2 ) . Como consecuencia de la transmisión de este vector a
través del canal se produce el efecto del ruido y los elementos del vector son
decodificados con posibles errores. Se denomina r r0 , r1 ,..., rn 1 al vector
recibido con posibles errores, donde también los ri  GF( 2 ) . Aparece entonces
el vector error e e0 , e1 ,..., en 1 cuyas componentes pertenecen al campo
binario, ei  GF( 2 ) , y que esta relacionado con los vectores anteriores por la
ecuación:

e r †c
(2.30)

El vector error tiene componentes distintas de cero solo en las posiciones donde
se produjo algún error.
Una vez conocido el patrón de error, se puede, en función del vector recibido y
este vector de error, corregir la recepción y determinar una estimación valedera
para la palabra recibida:

c r †e
(2.31)

Dado que toda palabra o vector de código debe cumplir con la condición:

c $ HT 0

se puede implementar un mecanismo de detección de error basado en la


operación:

S r $ HT S0 ,S1 ,..., Snk 1


(2.32)

94
Capítulo II: Códigos de Bloques

vector que se denomina síndrome. La operación de detección se basa en el


hecho que operando sobre el vector recibido, el vector síndrome debiera ser un
vector nulo para que tal vector recibido sea integrante del código.

Dado que r c †e

S r $ HT (c † e) $ H T c $ HT † e $ HT e $ HT
(2.33)

Si el patrón de error es el vector nulo, el vector síndrome también será el vector


nulo. Cuando este vector sea distinto del vector nulo, se estará en presencia de
un vector recibido con errores. Existe sin embargo la posibilidad de que el
vector síndrome sea el vector nulo aun cuando haya habido errores. En efecto si
el número y posición de errores hace que un vector del código se transforme en
otro vector del mismo código esta operación no estará en condiciones de
detectar ese problema. En este caso se esta en presencia de un patrón de error no
detectable, y por lo tanto fuera de la capacidad del código para operar
convenientemente.

Los patrones de error no detectables son aquellos que cumplen con la condición
S e $ H T 0 , es decir, aquellos patrones de error cuya forma coincide con
vectores de código (Es decir e c ). Existen por lo tanto 2 k  1 patrones de
error no nulos que no son detectables.
De acuerdo a la operación indicada para la detección y cálculo del vector
síndrome, los bits de este vector se pueden calcular como:

S0 r0 † r n k x p00 † r n k 1 x p10 † ... † r n 1 x pk 1,0


S1 r1 † r n k x p01 † r n k 1 x p11 † ... † r n 1 x pk 1,1

S n k 1 r n k 1 † r n k x p0 ,n k 1 † r n k 1 x p1,n k 1 † ... † r n 1 x pk 1,n k 1
(2.34)

El vector síndrome es de dimensión 1x( n  k ) .

Ejemplo 2.11:

Para el código lineal de bloques C b (7 ,4 ) visto en los ejemplos anteriores


obtenga la expresión analítica de los bits del vector de síndrome:

95
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Si r r0 , r1 , r2 , r3 , r4 , r5 , r6
Entonces;

ª1 0 0º
«0 1 0 »»
«
«0 0 1»
S S0 ,S1 ,S2 r0 , r1 , r2 , r3 , r4 , r5 , r6 $ ««1 1 0»
»
«0 1 1»
« »
«1 1 1»
«1 0 1 »¼
¬

S0 r 0 † r 3 † r 5 † r6
S1 r1 † r3 † r4 † r5
S2 r 2 † r 4 † r 5 † r6

El vector de síndrome no depende del vector recibido sino del vector de error.
Luego el siguiente sistema de ecuaciones:

S0 e0 † en k x p00 † en k 1 x p10 † ... † en 1 x pk 1,0


S1 e1 † en k x p01 † en k 1 x p11 † ... † en 1 x pk 1,1

S n k 1 en k 1 † en k x p0 ,n k 1 † en k 1 x p1,n k 1 † ... † en 1 x pk 1,n k 1
(2.35)

permitiría evaluar al vector de error resolviendo tal sistema, de manera que al


conocer el vector error se pueda definir el verdadero vector transmitido. Sin
embargo este sistema de ( n  k ) ecuaciones no tiene una única solución, sino
que en realidad presenta 2 k soluciones. Existen de hecho 2 k patrones de error
que resultan en el mismo síndrome. A pesar de esto y debido a que la potencia
de ruido actúa de manera mínima, el patrón de error con el menor número de
dígitos distintos de cero será la verdadera solución a este sistema.

96
Capítulo II: Códigos de Bloques

Ejemplo 2.12:

Para el código lineal de bloques C b (7 ,4 ) del ejemplo anterior se tiene un


vector de código transmitido c 0011010 que al pasar por el canal ruidoso
se transforma en el vector recibido r 0001010 . Al calcular el síndrome
resulta: S 001 , que en términos de las ecuaciones anteriores se transforma
en el siguiente sistema:
0 e 0 † e 3 † e 5 † e6
0 e1 † e3 † e4 † e5
1 e2 † e4 † e5 † e6

Existen 2 4 16 diferentes patrones de error que satisfacen las ecuaciones


anteriores:

e0 e1 e2 e3 e4 e5 e6
0 0 1 0 0 0 0
1 1 1 1 0 0 0
1 0 0 0 0 0 1
0 1 0 1 0 0 1
0 0 0 1 0 1 0
1 1 0 0 0 1 0
0 1 1 0 0 1 1
1 0 1 1 0 1 1
0 1 0 0 1 0 0
1 0 0 1 1 0 0
1 1 1 0 1 0 1
0 0 1 1 1 0 1
1 0 1 0 1 1 0
0 1 1 1 1 1 0
1 1 0 1 1 1 1
0 0 0 0 1 1 1

Tabla 2.2 Patrones de error que satisfacen ecuaciones del ejemplo 2.12

Dado que los errores en una palabra de n bits están regidos por la probabilidad
binomial, es mas probable tener en esa palabra i errores que i  1 errores, por
lo cual, para este tipo de canales como el CSB el patrón de error con menor
número de dígitos distintos de cero será el patrón de error verdadero. En este

97
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

caso de las 16 posibilidades se adopta el patrón de error e 0010000 de


manera que:

c r †e 0011010 0001010 † 0010000

2.7 Distancia mínima de un código de bloques


Uno de los parámetros de un código y en particular de los códigos de bloques es
lo que se denomina la distancia mínima del código d min . Previo a la definición
de este parámetro se dan algunas definiciones útiles de parámetros relacionados
con la distancia mínima [3, 4].

Definición 2.2: Dado un vector c c0 , c1 ,..., c n 1 de dimensión (1xn ) se


denomina peso (también conocido como peso de Hamming) del vector w ( c ) a
la cantidad de componentes c i z 0 no nulas de ese vector. En caso de estar
definido sobre el campo GF( 2 ) el peso del vector es el número de unos '1' que
tiene ese vector.

Definición 2.3: Se define la distancia de Hamming entre dos vectores


c1 c01 , c11 ,..., c n 1,1 y c2 c02 , c12 ,..., c n 1,2 , d ( c1 ,c 2 ) como el
número de posiciones en que las componentes de cada vector son diferentes.
Por ejemplo si c1 0011010 y c2 1011100 , entonces d( c1 ,c2 ) 3 .

De acuerdo a las anteriores definiciones, se pude ver que se cumple que:

d ( c i ,c j ) w ( c i † c j )
(2.36)

Para un dado código se puede establecer la distancia mínima que existe entre
todos sus vectores integrantes. Este valor de mínima distancia calculada sobre
todo el código es lo que se denomina la distancia mínima del código d min :

d min ^
min d( c i ,c j ); ci ,c j  Cb ; c i z c j `
(2.37)

98
Capítulo II: Códigos de Bloques

Dado que el código es lineal, cualesquiera de dos vectores dentro del código
sumados generan otro vector del código. Desde este punto de vista se puede
decir que un vector del código siempre es igual a la suma de otros dos. Como la
distancia de Hamming es el peso de la suma de los dos vectores entre quienes
se calcula la distancia, entonces el peso de un vector de código es la distancia de
Hamming de otros dos vectores del mismo código. De esta manera, calcular la
distancia mínima es equivalente a determinar el peso mínimo de todos los
vectores del código.

d min ^
min w( c i † c j ); c i ,c j  Cb ; ci z c j ` min^w( c m ); c m  Cb ; cm z 0`
(2.38)

Se puede afirmar entonces que la distancia mínima de un código lineal de


bloques C b ( n, k ) es el mínimo valor de peso de los vectores del código no
nulos.
Como un ejemplo, el código lineal de bloques C b (7 ,4 ) analizado en ejemplos
anteriores tiene como valor de distancia mínima d min 3 dado que ese es el
valor de peso mínimo entre sus vectores código no nulos (ver tabla 2.1).

2.7.1 Distancia mínima y estructura de la matriz H

Existe otra relación importante entre la distancia del código y la matriz de


control de paridad H de ese código.

Teorema 2.2: Sea un código lineal de bloques C b ( n, k ) que queda


determinado por su matriz de paridad H . Por cada vector de código de peso de
Hamming pH , existen pH columnas de la matriz H que sumadas resultan en
el vector nulo. Igualmente puede decirse que si en la matriz H existen pH
columnas que sumadas resultan en el vector nulo, entonces existe en el código
un vector de peso pH [4].
Para ver esto se describe a la matriz H de la siguiente forma:

H >h0 , h1 ,..., hn1 @


(2.39)

donde hi es la i -esima columna de la matriz. Si un vector de código


c c0 , c1 ,..., c n 1 tiene peso pH entonces existen pH componentes no nulas

99
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

en ese vector c i1 ci 2 ... cipH 1 para las cuales


0 d i1  i 2  ...  i pH d n  1 .
Como debe cumplirse que

c $ HT 0

c 0 x h0 † c1 x h1 † ... † c n 1 x hn-1
c i1 x hi1 † c i 2 x hi2 † ... † c ipH x hipH
hi1 † hi2 † ... † hipH
(2.40)

De la misma forma se puede dar demostración a la segunda parte del teorema.


Se deriva del mismo el siguiente corolario:

Corolario 2.1: Sea un código lineal de bloques C b ( n, k ) que queda


determinado por su matriz de paridad H . El peso mínimo o distancia mínima de
este código es igual al menor número de columnas de esa matriz que sumadas
resultan en el vector nulo 0 .

Ejemplo 2.13:

Para el código lineal de bloques C b (7 ,4 ) que se analizó en el ejemplo anterior,


cuya matriz de paridad es de la forma:

ª1 0 0 1 0 1 1 º
H «0 1 0 1 1 1 0 »
« »
«¬0 0 1 0 1 1 1 »¼

determine la distancia mínima del código.


Se puede observar que la suma de las columnas 1era, 3era y 7ma resulta en el
vector nulo 0 . Por lo tanto y debido a que ese resultado no puede ser obtenido
sumando dos columnas, se puede afirmar que la distancia mínima del código es
d min 3 .

100
Capítulo II: Códigos de Bloques

2.8 Capacidad de corrección de errores en un código de


bloques C b ( n, k )
La distancia mínima del código es el número mínimo de componentes que de
ser alteradas por el ruido convierten a un vector de código en otro vector del
mismo código. Esto es si habiéndose transmitido un vector de código c el ruido
transformó a este vector en el vector recibido r , la distancia entre c y r es el
peso del patrón de error d( c, r ) w( e ) l que es igual al número de
posiciones que cambiaron en el vector original por efecto del ruido.
Si el ruido modifica d min posiciones, entonces es posible que el vector de
código se transforme en otro del mismo código, y al ser recibido no se pueda
identificar el evento de error. Si el número de posiciones que el ruido altera es
d min  1 , se podrá garantizar que a pesar del ruido, el vector recibido se
modifica pero no llega a convertirse en otro vector de código. De esta manera se
dice que la capacidad de detectar errores en un código lineal de bloques
C b ( n, k ) de distancia mínima d min es d min  1 . Este cálculo tiene en cuenta el
peor caso, que es aquel donde el evento de error de magnitud d min se produce
sobre un vector que tiene ese valor de peso de Hamming. Sin embargo habría
otros patrones de error detectables aun teniendo esta magnitud de error. En
función de este análisis se dice que la capacidad de detección de errores del
código se mide con la probabilidad de error de que el código falle al determinar
la palabra recibida, que se evalúa con la función distribución de peso del
código. Dado que un error se produce cuando el patrón de error coincide con
alguna palabra de código no nula, entonces:

n
PU ( E ) ¦ Ai p i (1  p )n i
i 1
(2.41)

donde Ai es el número de palabras de código de peso i y p la probabilidad de


error en el canal simétrico binario, para el cual vale este análisis. Cuando la
distancia mínima es d min , los valores A1 hasta Admin 1 son nulos, Pu(E) es la
probabilidad del error no detectado.

Ejemplo 2.14:

Para el código lineal de bloques C b (7 ,4 ) que se analizó en el ejemplo anterior,


los valores de la función de distribución de peso son:

101
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

A0 1; A1 A2 0; A3 7 ; A4 7 ; A5 A6 0; A7 1

La probabilidad de error no detectado es:

n
PU ( E ) ¦ Ai p i (1  p )ni 7 p 3 (1  p )4  7 p 4 (1  p )3  p7 | 7 p 3
i 1

dado que la probabilidad de error del canal simétrico binario es en general un


número p  1 .

Para establecer la capacidad de corrección de un código de bloques lineal


C b ( n, k ) se considera un número entero t que cumple con la condición:

2t  1 d d min d 2t  2
(2.42)

Si habiéndose transmitido un vector de código c1 el ruido transformó a este


vector en el vector recibido r , entonces respecto a otro vector del código c 2 se
cumplirá la siguiente desigualdad:

d( c1 , r )  d( c2 , r ) t d( c1 ,c2 )
(2.43)

Se supone un patrón de error de t' errores, entonces d( c1 , r ) t' . Por ser


vectores del código d( c1 ,c2 ) t d min t 2t  1 , y combinando estas ecuaciones:

d( c2 , r ) t 2t  1-t'
(2.44)

Si se adopta t' d t
d( c2 , r ) ! t
(2.45)

Esto significa que si se produce un patrón de errores de peso t o menor la


distancia entre cualquier integrante del código c 2 y el vector recibido r es
mayor que la que hay entre el vector de código c1 y el vector recibido r , que
es t' d t . Esto significa también que la probabilidad P( r / c1 ) sea mayor que la
probabilidad P( r / c2 ) para cualquier otro vector del código c 2 . Este es el

102
Capítulo II: Códigos de Bloques

planteo de la decodificación por máxima probabilidad y en esta operación, se


decodifica al vector recibido r como el vector de código c1 . De esta manera el
código es capaz de corregir cualquier patrón de error que sea de peso t siendo
«d 1» d 1
t « min » donde ¬ ¼ significa el entero más grande no mayor a min .
¬ 2 ¼ 2
Igualmente que en el caso de la detección, para la corrección de errores también
sucede que hay mas patrones posibles de ser corregidos que los que establece el
valor t . Para un código lineal de bloques C b ( n, k ) con capacidad de
corrección de t errores se puede decir que existen 2 n k patrones de error que
son corregibles entre los cuales se encuentran incluidos los patrones de t o
menos errores.

Si un código lineal de bloques C b ( n, k ) que es capaz de corregir todos los


patrones de error de peso t o menor es empleado en un CSB con probabilidad
de error p la probabilidad de error esta determinada por:

n §n· i
Pw e ¦ ¨¨ i ¸¸ p (1  p ) n i
i t 1 © ¹
(2.46)

En los esquemas híbridos donde parte de los errores son corregidos y parte
detectados, se suele emplear este tipo de códigos donde se procede a la
corrección de λ errores y se detectan sin corregir l ! λ . Cuando el patrón de
error es de λ o menos errores el sistema los corrige, si el patrón de error es de
más de λ errores pero de menos de l  1 errores el sistema los detecta sin
corregir. Para esto debe cumplirse que d min t l  λ  1 .
Si por ejemplo la distancia mínima de un código es d min 7 , este código se
podría emplear para corregir patrones de error de λ 2 o menos errores y
detectar patrones de l 4 o menos errores.

2.9 Detección por síndrome y arreglo estándar


Para un código lineal de bloques C b ( n, k ) los vectores que lo componen
constituyen una asignación biyectiva entre los 2 k vectores de mensaje y el
conjunto c1 ,c 2 ,..., c 2 k . Estos vectores son transmitidos a través del canal y se

103
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

convierten en un vector recibido r que esencialmente es uno cualquiera de los


2 n vectores que existen en el espacio vectorial de Vn definido sobre GF( 2 ) .
Cualquier técnica de decodificación será esencialmente una regla de decisión
por medio de la cual se hace una partición del espacio vectorial Vn definido
sobre GF( 2 ) en 2 k posibles conjuntos disjuntos D1 , D2 ,..., D2 k tal que el
vector c i esta contenido en Di . Cada conjunto Di se corresponde
unívocamente con el vector c i . Si el vector recibido r se encuentra dentro de
Di será decodificado como el vector c i .
El armado del arreglo estándar es un método que realiza esta operación. Para
dar forma a este arreglo se procede de la siguiente manera:

se construye una fila de vectores del código, comenzando con el vector nulo
0,0,...,0 . Esta fila contiene 2 k vectores tomados entre los 2 n posibles.
c1 ( 0,0,...0 ) c2 c3 ... c2 k
(2.47)

Luego se elige de los restantes vectores un patrón de error e 2 que es ubicado


debajo de c1 (el vector nulo) y luego debajo del vector de código c i se ubica
el vector suma e i † e 2 . Esto se realiza con todos los patrones de error que
surgen del espacio vectorial que restan alojar, en total 2 n k vectores.

c1 ( 0 ,0 ,...0 ) c2 ... ci ... c2k


e2 c 2 † e2 ... c i † e2 ... c2k † e2

e2 n-k c 2 † e2 n - k ... c i † e2 n - k ... c 2 k † e 2 n- k
(2.48)

En este arreglo la suma de dos cualesquiera vectores de la misma fila es un


vector del código. Existen solo 2 n / 2 k filas disjuntas en el arreglo estándar.
Estas filas son los denominados co-conjuntos o en Inglés “cosets”, del código
C b . El vector que inicia cada co-conjunto es denominado vector líder de ese
co-conjunto, y puede ser cualquiera de los vectores integrantes de esa fila.

Ejemplo 2.15:

104
Capítulo II: Códigos de Bloques

Para el código lineal de bloques C b ( 5 ,3 ) generado por la matriz:

ª0 1 0 0 1 º
G «1 0 1 1 0 »
« »
«¬1 0 0 1 0 »¼

00000 11011 10110 01001 10010 11111 01101 00100


10000 01011 00110 11001 00010 01111 11101 10100
00010 11001 10100 01011 10000 11101 01111 00110
00001 11010 10111 01000 10011 11110 01100 00101

se tiene en este caso 2 k 23 8 columnas del arreglo y 2 n k 22 4 filas.

Tabla 2.3 Arreglo Estándar para el código del ejemplo 2.15.

Visto de otra forma el arreglo estándar esta constituido por 2 k columnas


disjuntas cada unas de las cuales obtienen 2 n k vectores cuyo primer vector es
un vector de código.
Estas 2 k columnas disjuntas D1 , D2 ,..., D2 k pueden utilizarse en un
procedimiento de decodificación. Si habiendo sido enviado el vector c i se
recibe el vector r , este vector recibido estará dentro de Di si el patrón de
errores producido es su líder de co-conjunto. En este caso el vector recibido
será decodificado correctamente. Si el patrón de error no fuera un líder de co-
conjunto se producirá un error en la decodificación. Por esta razón los 2 n k
líderes de los co-conjuntos incluyendo el patrón todos ceros son los patrones de
error corregibles. De esto se deduce que un código lineal de bloques C b ( n, k )
tiene la capacidad de corregir 2 n k patrones de error.
Para llevar a la probabilidad de error a su valor mínimo debería suceder que los
patrones de error corregibles, que son los líderes de los co-conjuntos Di sean
los más probables en su ocurrencia. En el caso de transmitir sobre el CSB los
patrones mas probables son los de menor peso posible. De esta forma cada líder
de co-conjunto tendrá el menor peso posible entre los integrantes de esa fila. La
decodificación realizada de esta manera termina siendo la decodificación por
máxima similitud o decodificación por distancia mínima, es decir el vector
elegido como decodificado es aquel que esta a la mínima distancia respecto del
recibido.

105
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

A modo de conclusión se dirá que un código lineal de bloques C b ( n, k ) es


capaz de detectar 2 n  2 k patrones de error y de corregir 2 n k patrones de
error.

De lo visto puede afirmarse que:

Para un código lineal de bloques C b ( n, k ) con distancia mínima d min todos


« d min  1 »
los vectores de peso t « 2 » o menor pueden ser usados como líderes de
¬ ¼
co-conjunto. Esto esta de acuerdo con que no todos los patrones de peso t  1
pueden ser corregibles, aun cuando algunos de ellos si.
Por otro lado todos los vectores que son parte del mismo co-conjunto tienen el
mismo síndrome. Los síndromes para co-conjuntos diferentes son diferentes.

Tomando como base al líder del co-conjunto e i cualquier vector de este co-
conjunto es la suma del vector líder con el vector de código c i .
Para este caso el síndrome se calcula como:

ci † ei $ H T ci $ H T † ei $ H T ei $ H T
(2.49)

El síndrome para cualquier vector del co-conjunto es igual al síndrome para el


líder de ese co-conjunto. Todos tienen el mismo síndrome.
El síndrome es un vector de ( n  k ) componentes que tiene una
correspondencia uno a uno con los co-conjuntos.
A cada co-conjunto le corresponde un síndrome diferente o bien para cada
patrón de error corregible hay un síndrome distinto.
De este razonamiento surge un procedimiento de decodificación mas simple que
consiste en confeccionar una tabla donde se define cada patrón de error
corregible y su correspondiente síndrome de manera que cuando éste es
calculado se puede recurrir a esta tabla para identificar cual ha sido el patrón de
error y así corregir la palabra recibida. El procedimiento consiste entonces en
una vez confeccionada la tabla S o e calcular el síndrome en funciona del
vector recibido como S r $ H T , luego localizar en tabla el síndrome
calculado y determinar por tabla el vector patrón de error e i de forma de
decodificar el vector recibido haciendo c i r † e i . Esto puede emplearse
cuando la construcción de la tabla no se hace impráctica.

106
Capítulo II: Códigos de Bloques

Ejemplo 2.16:

Considerando el código lineal de bloques (7 ,4 ) cuya matriz de paridad es:

ª1 0 0 1 0 1 1 º
H «0 1 0 1 1 1 0 »
« »
«¬0 0 1 0 1 1 1 »¼

se tienen 2 4 16 vectores de código y 2 7 4 8 co-conjuntos o patrones


corregibles. La distancia mínima ya fue calculada y es d min 3 con lo cual el
código corrige todo posible patrón de 1 error. En este caso el número total de
patrones corregibles es igual al número de patrones que el código puede
corregir, habiendo 7 patrones de un error corregibles y el patrón de no error
como posibles. La tabla de patrones de error y síndromes es la siguiente:

Patrones de error Síndrome


1 0 0 0 0 0 0 1 0 0
0 1 0 0 0 0 0 0 1 0
0 0 1 0 0 0 0 0 0 1
0 0 0 1 0 0 0 1 1 0
0 0 0 0 1 0 0 0 1 1
0 0 0 0 0 1 0 1 1 1
0 0 0 0 0 0 1 1 0 1

Tabla 2.4 Patrones de error y síndromes

Supóngase que el vector originalmente transmitido fue c 1010001 y se


recibe r 1010011 el síndrome resulta ser r $ H T
111 con lo que el
líder de co-conjunto correspondiente es 0000010 y
c 1010001 1010011 † 0000010 .

2.10 Códigos de Hamming


Una clase de códigos de bloques ampliamente utilizada es la de los códigos de
Hamming [11].
Para cualquier entero positivo m t 3 existe un código de Hamming con las
siguientes características:

107
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Longitud n 2 m 1
Nº de bits de mensaje k 2 m  m 1
Nº de bits de control de paridad nk m
Capacidad de corrección de errores t 1 ( d min 3 )

La matriz de paridad de estos códigos H se forma con las columnas de m bits


no nulas que puede ser implementada en la forma sistemática:

H >I m Q@

donde la submatriz identidad es de mxm y la submatriz Q consiste de


2 m  m  1 columnas formadas con vectores de peso 2 o mayor.
Para el caso más simple donde m 3 :

n 2 3 1 7
k 2 3  3 1 4
nk m 3
t 1 ( d min 3 )

ª1 0 0 1 0 1 1 º
H «0 1 0 1 1 1 0 »
« »
«¬0 0 1 0 1 1 1 »¼

que es el código lineal de bloques (7,4) que ha sido analizado en este capítulo.
La matriz generadora se obtiene de acuerdo a la siguiente expresión para la
forma sistemática del código:

G >Q T
I 2 m 1 @
En la matriz H la suma de tres columnas da como resultado el vector nulo, con
lo cual la distancia mínima de estos códigos es d min 3 , de forma que pueden
ser utilizados para corregir patrones de error de un bit o detectar cualquier
patrón de error de dos bits. En este caso también existen 2 m  1 patrones de
error corregibles, y por otro lado existen 2 m co-conjuntos, con lo cual el
numero de patrones de error corregibles posibles coincide con el número de
síndromes distintos. En este caso se habla de códigos perfectos.
El código del ejemplo 2.10 es un código de Hamming.

108
Capítulo II: Códigos de Bloques

2.11 Filosofías de corrección. Sistemas de corrección de


error FEC y ARQ
2.11.1 Sistemas de corrección directa o FEC

Como se ha dicho los sistemas que emplean la filosofía de corrección FEC


tienen la limitación de no poder contar con requerimiento de repetición, por lo
que toda la potencia del código usado se emplea para la corrección de error. La
fuente de información genera una señal binaria de símbolos equiprobables que
tiene una velocidad de transmisión r b , de forma que el codificador toma tal
información agrupada en k bits, para agregarle n  k bits de corrección,
constituyendo un código de bloque C b ( n, k ) cuya relación de eficiencia es
Rc k / n , siendo Rc  1 .
Rc = k/n r=rb/Rc Gn(f) = N0/2

r=
Cod. Trans. canal Rec. Dec.
+

Pe = p

Figura 2.2 Sistema FEC

La velocidad sobre el canal debe ser mayor que la velocidad de señalización rb :

§n· r
r = ¨ ¸ rb = b
©k ¹ Rc
(2.50)

El código utilizado tiene una distancia mínima d min 2t  1 . Se analiza la


respuesta del sistema frente a ruido blanco y Gaussiano con un canal con una
probabilidad de error p  1 . La información de fuente tiene una energía de bit
promedio E b , de forma que la energía promedio por bit de código es Rc E b . La
relación de energía a densidad de potencia de ruido es entonces:

§ Eb · Rc Eb § E ·
¨¨ ¸¸ = Rc ¨¨ b ¸¸
N
© 0 ¹C N0 © N0 ¹
(2.51)

109
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Como se ha visto en el capítulo relativo a la teoría de la información, el cociente


entre la energía por bit E b y la densidad espectral de ruido N 0 juega un papel
muy importante en la caracterización de los sistemas de comunicaciones, y será
utilizado como parámetro de comparación. En este caso se diferencia su valor
entre la situación codificada y la no codificada.
Se calcula la probabilidad de error de los bits de mensaje, que se denomina Pbe ,
para distinguirla de la probabilidad de error por paquete de información Pw e . El
código corrige hasta t errores por paquete de información. La probabilidad de
error del paquete de información decodificado esta limitada superiormente por:
n
Pw e d ¦ P(i,n)
i = t+1
(2.52)

Suponiendo que la probabilidad de error del canal es pequeña puede hacerse la


aproximación:

§ n ·
Pw e # P(t+1,n) # ¨¨ ¸¸ p t+1
© t+1¹
(2.53)

que básicamente significa que una paquete de información no corregido tiene


§k ·
t  1 errores. En cada paquete de información no corregido existen ¨ ¸ t  1
©n¹
errores de bits de mensaje promedio. Si se transmiten Nk bits de información
de fuente, siendo N !! 1 , la probabilidad de error es igual a:

§k ·
¨ ¸ t  1 NPw e
n 1
Pbe= © ¹ = t+1 Pw e
kN n
(2.54)

§ n-1 · t+1
Pbe # ¨¨ ¸¸.p
© t ¹
(2.55)

Cuando el sistema opera en presencia de ruido blanco y Gaussiano, de densidad


espectral de potencia Gn ( f ) N0 / 2 y esta diseñado de forma que se ha

110
Capítulo II: Códigos de Bloques

empleado filtro adaptado y señalización polar, la probabilidad de error Pe está


dada por (ver Apéndice A):

§ E ·
Pe = Q ¨ 2 b ¸
¨ N 0 ¸¹
©
(2.56)

Luego:

§ §E ·
p= Q ¨ 2¨¨ b
·
¸ ¸ = Q§¨ 2R E b ·¸
¨ N ¸ ¸ ¨ c
N 0 ¸¹
© © 0 ¹C ¹ ©
(2.57)

La probabilidad binaria de error de un sistema FEC es entonces:

t 1
§ n-1 · ª §¨ E ·º
Pbe # ¨¨ ¸¸ «Q 2 R c b ¸»
© t ¹ «¬ ¨© N 0 ¸¹»
¼
(2.58)

Un sistema no codificado tendrá una probabilidad de error:

§ E ·
Pbe # Q¨ 2 b ¸
¨ N 0 ¸¹
©
(2.59)

De la comparación del resultado de las expresiones (2.58) y (2.59) se puede


establecer si existe realmente una mejora en el sistema por aplicación de la
técnica de codificación para el control de errores. Esta comparación depende de
los valores de t y R c que la técnica de codificación ofrece. Cuando el sistema
trabaja con una tasa de ruido grande puede suceder que la respuesta del mismo
frente al ruido sea peor que la del sistema sin codificar. La comparación entre
esquemas codificados y no codificados no es realmente justa si se la efectúa
como en el ítem 2.2.1, cuando se presentó el código de repetición, ya que en ese
caso no se tiene en cuenta que al repetir, se esta empleando el triple de la
energía por bit, hecho que debe ser tenido en cuenta si se pretende analizar
justamente las dos situaciones.

111
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Ejemplo 2.17. El código de repetición triple.

Por empleo de las expresiones (2.58) y (2.59) determine si el código de


repetición tiene eficiencia aceptable, comparando las curvas de probabilidad de
error expresadas en función del cociente E b N0 .
La siguiente curva de probabilidad de error describe la probabilidad de error
binaria del sistema codificado con el código de repetición n 3 , que se
observa en líneas punteadas (curva teórica usando la aproximación (2.58), y
curva obtenida por simulación), respecto a la transmisión binaria sin codificar,
que describe la curva en trazo lleno, en todos los casos empleando formato polar
( A r1 ). Se puede observar que el código de repetición n 3 es incluso
peor que la transmisión sin codificar. Esto es debido a que la tasa del código de
repetición es demasiado baja respecto de la capacidad de corrección de dicho
código.
0
10

Pbe -1
10

-2
10

-3
10

-4
10

-5
10

-6
10
-2 0 2 4 6 8 10 12
Eb/No [dB]

Transmisión binaria no codificada

Código de repetición triple. Curva Teórica

Código de repetición triple. Simulación


usando decisión rígida (Hard decision).

Figura 2.3 Probabilidad de error binaria para el código de repetición triple

112
Capítulo II: Códigos de Bloques

En capítulos posteriores se presentarán códigos más eficientes que el de


repetición.

2.11.2 Sistemas de detección o ARQ

La técnica de transmisión con repetición o ARQ se basa en la codificación para


la detección de errores, y la posterior retransmisión de los bloques o paquetes de
información que se detectan equivocados. En este caso como se ha dicho, es
necesario un segundo vínculo de transmisión para la solicitud de las
retransmisiones. En general el sistema de transmisión con repetición ARQ
genera mejor respuesta que su contrapartida FEC, debido a que la misma
potencia de código se destina completamente a detectar errores, más que a
corregirlos. Por otra parte es necesario el vínculo de retorno. Además existen
operaciones adicionales de reconocimiento y repetición de la señal, que
producen una reducción en la velocidad del sistema. El diagrama en bloques del
sistema se ve en la figura 2.4.

Figura 2.4 Sistemas de transmisión con repetición o ARQ

Cada paquete de información codificado es almacenado y luego transmitido de


manera que el decodificador observa los errores. Se retransmite una señal de
reconocimiento positivo (RP) o en Inglés “Positive Acknowledgement” (ACK)
si no hubo errores detectados, o bien una señal de reconocimiento no válido
(RNV) o en Inglés “Negative Acknowledgement” (NAK) si se detectaron
errores. Una señal NAK obliga al codificador a retransmitir de la memoria del
transmisor el paquete de información que llego con error.
Respecto del sistema FEC, el sistema ARQ representa una velocidad de
señalización reducida por el proceso de repetición, y por otro lado, se esta
considerando siempre que la probabilidad de error en el canal de retransmisión
es despreciable. De esta manera todo paquete de información detectado es

113
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

corregido y por lo tanto los errores se producen cuando el error en el paquete de


información no ha podido ser detectado. Para este caso la distancia mínima del
código se destina a la detección de errores, por lo que d min l  1 . La
probabilidad de error se establece de acuerdo a la imposibilidad de detectar
errores:

n § n ·
Pw e = ¦ P(i,n) # P(l+1,n) # ¨¨ ¸¸ p l+1
i=l+1 © l+1 ¹
(2.60)

Luego la probabilidad de error binaria es:

§ l +1· § n-1 · l+1


Pbe = ¨ ¸Pw e # ¨¨ ¸¸ p
© n ¹ © l ¹
(2.61)

Las expresiones son similares a las dadas para la transmisión FEC, solo que
reemplazando t por l .
El proceso de retransmisión puede ser también caracterizado desde el punto de
vista de la probabilidad. El decodificador acepta paquetes de información sin
error, o bien con más errores de los que son posibles detectar, por lo que la
probabilidad de retransmisión Pret esta dada por:

Pret = 1 - P( 0,n)+Pwe
(2.62)
Como normalmente Pwe  P( 0, n ) :

Pret # 1 -P( 0,n) = 1 - (1 - p) n # np


(2.63)
2.11.3 Esquemas de sistemas ARQ

2.11.3.1 Parada y espera

El esquema de parada y espera requiere que el sistema se detenga en cada


paquete de información, para esperar el reconocimiento de la misma. La
memoria en el lado transmisor necesita almacenar solo un paquete de
información, pero el tiempo de espera D puede ser muy extenso, y queda
limitado por el retardo t d de transmisión, siendo D t 2t d .

114
Capítulo II: Códigos de Bloques

Transmis Receptor

ACK
2

2 NA

Figura 2.5 Esquema ARQ de parada y espera

2.11.3.2 Esquema de retroceso de N paquetes de información

El esquema de retroceso de N paquetes de información tiene una transmisión


continua. Cuando el receptor envía una señal NAK el transmisor retrocede N
paquetes de información en la memoria del transmisor y comienza a retransmitir
nuevamente desde el paquete de información supuesto erróneo. El receptor
descarta las N  1 paquetes de información aunque sean correctos para
preservar la secuencia. El gráfico de la figura 2.6 explica este proceso:
Transmisor Receptor

1
1
ACK
2
2
ACK
3
3
NAK
4
4 ½
3
ACK ¾se descar tan
3 ¿
4
4

Figura 2.6 Sistema de retroceso de N paquetes de información

115
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

En la figura 2.6 se observa un sistema de retroceso de N paquetes de


información con N 2 . Los paquetes de información recibidos luego del aviso
de error son descartados.

2.11.3.3 Esquema de repetición selectiva

El esquema de repetición selectiva intenta optimizar el proceso de repetición.


Para ello el requerimiento de memoria en el transmisor es el mayor entre los
sistemas analizados. El paquete de información retransmitido es
convenientemente identificado dentro de la secuencia de forma que sea
adecuadamente recibido en el receptor.

Transmisor Receptor

1
1
ACK
2
2
ACK
3
3
NAK
4
4
ACK
3
3
ACK
5

Figura 2.7 Sistema de repetición selectiva

Para el análisis mas adecuado de la eficiencia del código R c se deben tener en


cuenta las estadísticas y tiempos de retardo de estos esquemas de repetición.

2.11.4 Eficiencia de los esquemas ARQ más conocidos

Para determinar la eficiencia de la transmisión de esquemas ARQ se evalúa, en


el cálculo de la tasa de transmisión del esquema, los efectos de las repeticiones
o retransmisiones realizadas en cada caso.
En los esquemas de repetición de un único paquete de información, el número
total de retransmisiones es una variable aleatoria m gobernada por la
probabilidad de los eventos:

116
Capítulo II: Códigos de Bloques

P( m 1 ) 1  Pret , P( m 2) Pret (1  Pret ),etc...

El número promedio de paquetes de información transmitidos por paquete de


información aceptado es:

2
m = 1( 1 - Pret ) + 2Pret .( 1 - Pret ) + 3 Pret ( 1 - Pret )+...
2 1
= ( 1 - Pret )( 1+2Pret+3Pret  ...) =
1 - Pret
(2.64)

En promedio el sistema debe transmitir nm bits para mandar k bits de


mensaje. La eficiencia del sistema es entonces:

k k k
Rc' = = (1  Pret ) (1  p) n
n.m n n
(2.65)

La velocidad binaria de transmisión directa r b y r se relacionan como:

rb
r=
R c'
(2.66)

La probabilidad de error p se calcula con la expresión conocida (como por


ejemplo la ecuación 2.57) usando R c' en vez de R c . Las expresiones anteriores
se aplican a sistemas donde se produce la retransmisión de un único paquete. En
la forma descripta en las ecuaciones (2.65) y (2.66) se caracteriza al esquema
ARQ de repetición selectiva. Sin embargo, en el caso del esquema de parada y
espera, los tiempos de espera entre las transmisiones reducen la velocidad en un
Tw
factor donde D t 2t d . El tiempo t d es el retardo del canal, y Tw es la
Tw +D
duración del paquete de información, luego:

n k
Tw = d
r rb
(2.67)

117
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Luego la eficiencia en el esquema ARQ de parada y espera es:

k (1  Pret ) § k · (1  Pret )
R c' = d ¨ ¸
n 1  D/Tw © n ¹ § 2 t d rb ·
¨¨1+ ¸
© k ¸¹
(2.68)

D
El cociente puede acotarse en función de parámetros fijos del sistema:
Tw

D 2 t d rb
t
Tw k
(2.69)

Un sistema ARQ de retroceso de N paquetes no presenta tiempos


desperdiciados, pero debe realizar una retransmisión cuando hay errores. Para
este caso el valor medio de las transmisiones es:

2 2 3
m = 1( 1-Pret )+(1+N)Pret ( 1-Pret )+ ( 1+2N)Pret ( 1-Pret )+... = ( 1-Pret )[ 1+Pret+Pret +Pret +...
2 ª 1 NPret º NPret
+NPret ( 1+2Pret+3Pret +...)] = ( 1-Pret )« + 2»
= 1+
¬1-Pret ( 1-Pret ) ¼ 1-Pret
(2.70)

y la velocidad de transmisión queda afectada entonces por un factor:

k (1  Pret ) §k · (1  Pret )
Rc' = d ¨ ¸
n 1  Pret +NPret ©n¹§ §2 t r · ·
¨¨1-Pret +¨ d b ¸Pret ¸¸
© © k ¹ ¹
(2.71)

donde se hizo uso de la expresión:

2td
N t
Tw
(2.72)

118
Capítulo II: Códigos de Bloques

A diferencia de la repetición selectiva, los sistemas de parada y espera y de


retroceso de N paquetes de información tienen una eficiencia dependiente del
retardo del canal.
El valor de eficiencia R c' en estos casos se considera aceptable si 2t d r b  k .
Aun así, si 2t d r b ! k , el sistema de retroceso de N paquetes de información
tiene mejor funcionamiento que el de parada y espera, si el valor de p es
pequeño.

Figura 2.8. Eficiencia relativa a k / n para los sistemas ARQ de parada y espera,
retroceso en N y repetición selectiva, con rb 262 , k 262 , n 524 , con N 4 ,
32 y 128 (retroceso en N) y para t d 10 2 , 10 1 y 1 (Parada y espera, expresión
2.68)

La figura 2.8 muestra las eficiencias relativas a k / n de los tres mas conocidos
esquemas de transmisión ARQ. El más eficiente de ellos es el esquema de
repetición selectiva, en el cual se asume que la memoria del transmisor es
infinita. Los sistemas de retroceso de N paquetes de información también
muestran una buena eficiencia si el retardo del canal no es elevado. El efecto del

119
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

retardo del canal se ve que es determinante en el caso del esquema de parada y


espera, donde retardos importantes le dan al esquema una eficiencia inaceptable.
El sistema ARQ de repetición selectiva es la mejor opción en los casos en que
haya exigencias tales como altas velocidades de transmisión de datos e
importantes retardos del canal.

2.11.5 Esquemas ARQ híbridos

Se han descripto hasta el momento cuales son las características de la


transmisión FEC y ARQ. La diferencia esencial radica en la posibilidad de tener
o no un vínculo de retorno para la transmisión de los reconocimientos positivos
o negativos de la información que se esta recibiendo, y para la solicitud de una
retransmisión. Desde el punto de vista del funcionamiento, los sistemas FEC
poseen una tasa fija de transmisión, pero al no contar con un camino de retorno
para solicitar una retransmisión, la decisión acerca de la información debe ser
tomada contando solamente con el vector recibido. En la primera descripción de
estos sistemas se remarcó el hecho de que para un mismo código utilizado,
caracterizado por su distancia mínima d min , la capacidad de corrección de error
t ¬( d min  1 ) / 2 ¼ es menor que la capacidad de detección l d min  1 . En
términos de las mas recientes y eficientes técnicas de codificación, como los
códigos turbo y los códigos de paridad de baja densidad, se necesita utilizar
códigos de gran longitud de palabra para una eficiente operación de corrección
de errores. La complejidad es normalmente alta. Por otro lado, los sistemas
ARQ poseen una eficiencia de código que varia con las condiciones de ruido.
Además, aun los eventos de error leves o de baja magnitud obligan a una
retransmisión y por ende a una pérdida de eficiencia.
En este sentido, los esquemas FEC resguardan la tasa del código al corregir
estos eventos leves de error sin solicitar retransmisión. Sin embargo la
posibilidad de solicitar la retransmisión hace que la confiabilidad de la
transmisión sea mucho más alta. En la situación opuesta, en que se usa un
esquema FEC, existe la posibilidad de realizar un error en la decodificación.
Dependiendo entonces de la situación del canal es que la eficiencia de la técnica
usada es mejor o peor según el caso. Esto sugiere que una combinación de estas
técnicas operaria más eficientemente que cada una de ellas por separado,
cuando esto sea posible. Esta combinación de esquemas ARQ y FEC es
denominado esquema ARQ híbrido. En un esquema ARQ híbrido un sistema
FEC opera inicialmente para corregir los eventos de error más leves, que por
otro lado son también los más probables. Dado que se pretende corregir un
número de errores por paquete de pequeña magnitud, el código correspondiente
no posee una complejidad muy alta. El sistema FEC intenta la corrección y si el

120
Capítulo II: Códigos de Bloques

cálculo de síndrome evaluado sobre el paquete corregido define al mismo como


un vector de código valido, entonces se acepta el paquete corregido. En caso de
que el vector de síndrome evaluado sobre el paquete corregido detecte error,
entonces se estará con gran probabilidad en presencia de un evento de error de
mayor envergadura, que el esquema ARQ que contiene al esquema FEC se
encarga de resolver, solicitando la retransmisión.
Existen dos esquemas ARQ híbridos, denominados esquemas ARQ híbridos
tipo 1 y tipo 2.
El esquema ARQ híbrido tipo 1 esta basado en el uso de un código que es
típicamente de bloques y que puede ser utilizado en parte para corregir, y en
parte para detectar errores, rigiéndose por la expresión d min t l  λ  1 . Así por
ejemplo, un código de distancia mínima d min 11 podría ser utilizado para
corregir patrones de error de hasta λ 3 errores, y también para detectar
cualquier patrón de error de hasta l 7 errores. Debe recordarse que la
expresión anterior se aplica siempre con l ! λ .
Como se verá en capítulos próximos, la decodificación de un código de bloques
puede realizarse muchas veces resolviendo un sistema de ecuaciones. Esto
permite tener control del número de errores de los patrones de error que podrían
ser corregidos en un determinando caso, construyendo ese sistema de
ecuaciones de manera adecuada, que permita corregir todo patrón de error de
hasta λ errores. El código puede tener adicionalmente una capacidad mayor,
que se puede destinar a la detección de errores. El decodificador intentará
entonces corregir hasta λ errores por paquete de información, y recalculará el
vector síndrome sobre el vector decodificado. Si el síndrome resulta ser igual a
cero aceptará el paquete, de lo contrario solicitará retransmisión. En general y
comparativamente con un esquema ARQ tradicional, la tasa del código utilizado
k / n en el esquema híbrido será menor que en el esquema tradicional. Esto
reduce la eficiencia para bajos valores de la probabilidad de error. Sin embargo,
para altos valores de probabilidad de error la eficiencia del esquema tradicional
se reducirá más rápidamente que en el caso del esquema híbrido.

El esquema ARQ híbrido tipo 2 genera una mejora en la eficiencia de la


transmisión enviando los bits de paridad para corrección de errores solo en el
caso en que sea necesario hacerlo. La técnica utilizada hace uso de dos tipos de
códigos, uno es un código C0 ( n, k ) que es de alta eficiencia, destinado a la
detección de errores solamente, y el otro es un código de tasa ½ C1 ( 2 k , k ) ,
que tiene la particularidad de que los bits de información pueden ser obtenidos a
partir de los bits de paridad por un proceso de inversión, por lo cual se lo
denomina código invertible. En lo que sigue, una palabra de código será
descripta en su forma sistemática como un vector donde los bits de paridad se

121
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

denotan como una función de los bits de mensaje


c f ( m0 , m1 ,..., mk 1 ),m0 , m1 ,..., mk 1 f ( m ),m .
El funcionamiento del esquema ARQ híbrido tipo 2 puede observarse en los
diagramas de la figuras 2.9 y 2.10. En estos diagramas la notación utilizada es
tal que por ejemplo, c ~ ~
f ( m ),m
~ es la versión recibida (afectada por el canal
y con posibles errores) de c f ( m ),m . Por otra parte, f ( m ) es la
redundancia obtenida usando el código C0 , mientras que q( m ) es la
redundancia obtenida usando el código C1 . El esquema ARQ híbrido tipo 2
funciona realizando repeticiones alternativas descriptas en los diagramas de
flujo de las figuras 2.9 y 2.10 respectivamente. En esta alternancia, la
retransmisión se produce enviando la codificación producida por el código C0
del mensaje en si, m , o de la redundancia originada por el código C1 , q( m ) .
En esta alternancia el receptor almacena la versión recibida del mensaje, o bien
de la redundancia, según la iteración que esta siendo llevada a cabo. Con el
mensaje y la redundancia generada por el código C1 , el receptor puede aplicar
corrección de error. Dado que la redundancia y el mensaje son del mismo
tamaño, la retransmisión alternada no genera perdidas de eficiencia con respecto
a un sistema que siempre retransmitiera el mensaje m , y por otro lado permite
al receptor aplicar una decodificación adicional y así controlar errores.
El proceso continua hasta lograr la correcta decodificación de los bits de
mensaje. Para mayores detalles de esquemas mas elaborados de transmisión, y
en particular el detalle de los códigos invertibles usados en el esquema tipo 2, se
refiere al libro de Lin y Costello [4].

122
Capítulo II: Códigos de Bloques

Figura 2.9 Primera instancia de la repetición alternada en esquemas


ARQ híbridos tipo 2

123
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Figura 2.10 Segunda instancia de la repetición alternada en esquemas ARQ híbridos


tipo 2

124
Capítulo II: Códigos de Bloques

Bibliografía y Referencias
1 Shannon, C. E., “A Mathematical Theory of Communication,” Bell Syst.
Tech. J. vol. 27, págs. 379-423, 623-656, Julio y Octubre 1948.

2 Shannon, C. E., “Communications in the presence of noise,” Proc. of the


IEEE, vol. 86, no. 2, págs. 447-458, Febrero 1998.

3 Carlson, B., Communication Systems. An Introduction to Signals and


Noise in Electrical Communication, Third Edition, Mc-Graw Hill Book
Company, 1986.

4 Lin, S. and Costello, D. J., Jr., Error Control Coding: Fundamentals and
Applications, Prentice Hall, inc. Englewood Cliffs, New Jersey, Ed. 1983
and 2004.

5 MacWilliams, F. J. and Sloane, N. J. A., The Theory of Error-Correcting


Codes, North-Holland, Amsterdam, 1977.

6 Sklar, B., Digital Communications, Fundamentals and Applications,


Prentice Hall, 1993.

7 Berlekamp, E. R., Algebraic Coding Theory, McGraw-Hill, Ney York,


1968.

8 Peterson, W. W. and Weldon, E. J., Jr., Error-Correcting Codes, 2nd.


Edition, MIY Press. Cambridge, Mass., 1972.

9 Hillma, A. P. and Alexanderson, G. L., A First Undergraduate Course in


Abstract Algebra, Second Edition, Wadsworth Publishing Company, Inc.
Belmont, California, 1978.

10 Allenby, R. B. J., Rings, Fields and Groups. An Introduction to Abstract


Algebra, Edward Arnold Publishers ltd, London, 1983.

11 Hamming, R. W., “Error detecting and error correcting codes,” Bell. Syst.
Tech. J., 29, pags. 147-160, Abril 1950.

12 Proakis, J. G. and Salehi, M., Communication Systems Engineering,


Prentice Hall, 1993.

125
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

13 Proakis, J. G., Digital Communications, 2nd. Edition, Mc Graw Hill, New


York, 1989.

14 McEliece, R. J., The Theory of Information and Coding. Addison-Wesley


Publishing Company. Massachusetts, 1977.

15 Adámek, J., Foundations of coding: Theory and Applications of Error-


Correcting Codes with an Introduction to Cryptography and Information
Theory, Wiley- Interscience, New York, 1991.

16 Slepian, D., “Group codes for the Gaussian channel,” Bell. Syst. Tech. J.,
vol. 47, pags. 575-602, 1968.

17 Caire, G. and Biglieri, E., “Linear block codes over cyclic groups,” IEEE
Trans. Inform. Theory, vol. 41, no. 5, pags. 1246-1256, Sept. 1995.

18 Forney, G. D., Jr., “Coset codes-Part I: Introduction and geometrical


classification,” IEEE Trans. Inform. Theory, vol. 34, no. 5, pags. 1123-
1151, Sept. 1988.

126
Capítulo II: Códigos de Bloques

Problemas
2.1) Para el código de bloques de repetición Cb ( 3 ,1 ) generado utilizando la sub-
matriz de control de paridad P >1 1@ , construya la tabla de todos los
posibles vectores a recibir, y calcule los correspondientes vectores de síndrome
S r x H T para determinar los patrones de error detectables y corregibles, de
acuerdo a la capacidad de control de errores de este código.

2.2) La distancia de Hamming mínima de un código de bloques es d min 11 .


Determine la capacidad de detección y de corrección de errores de este código.
2.3)
a) Determine la distancia de Hamming mínima de un código de longitud
n cuya capacidad de control de errores sea tal que detecte patrones de error de
6 errores y corrija patrones de error de 4 errores in una transmisión sobre el
CSB.
b) Si el mismo código se utiliza en un CBB, ¿cuántos elementos borrados
en un bloque puede detectar? ¿cuantos puede corregir?
c) ¿Cuál es la longitud de bloque mínima que un código con esta distancia
mínima puede tener?

2.4) Un código de bloques binario presenta los siguientes vectores de código en


forma sistemática:

0 0 0 0 0 0
0 1 1 1 0 0
1 0 1 0 1 0
1 1 0 1 1 0
1 1 0 0 0 1
1 0 1 1 0 1
0 1 1 0 1 1
0 0 0 1 1 1

Tabla P.2.1 Tabla de un código de bloques

a) ¿Cuál es la tasa del código?


b) Escriba las matrices generadora y de control de paridad de este código
en la forma sistemática.
c) ¿Cuál es la distancia de Hamming mínima de este código?
d) ¿Cuántos errores puede corregir, y cuantos detectar?

127
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

e) Calcule el vector de síndrome para el vector recibido r 101011 y


luego determine la posición de algún posible error.

2.5)
a) Construya un código de bloques lineal Cb ( 5 ,2 ) maximizando su
distancia de Hamming mínima.
b) Determine las matrices generadora y de control de paridad de este
código.

2.6) Un código de bloques lineal binario tiene la siguiente matriz generadora en


forma sistemática:
ª1 1 0 1 1 0 0 1 1 0 1 0 0 º
G ««1 0 1 1 0 1 0 1 0 1 0 1 0 »»
«¬1 1 1 0 0 0 1 1 1 1 0 0 1 »¼

a) Encuentre la matriz de control de paridad H y luego escriba las


ecuaciones de control de paridad.
b) Encuentre la distancia de Hamming mínima de este código.

2.7) La matriz generadora de un código de bloques lineal binario es la siguiente:


ª1 1 0 0 1 1 1 0 º
G « »
¬0 0 1 1 1 1 0 1 ¼

a) Escriba las ecuaciones de control de paridad del código;


b) Determine la tasa del código y su distancia de Hamming mínima;
c) Si la probabilidad binaria de error a la entrada de este código es 10 3 ,
estime la probabilidad binaria de error a la salida del decodificador.

2.8) El código lineal de bloques de de Hamming Cb (15 ,11 ) tiene la siguiente


sub-matriz de control de paridad:

128
Capítulo II: Códigos de Bloques

ª0 0 1 1º
«0
« 1 0 1 »»
«1 0 0 1»
« »
«0 1 1 0»
«1 0 1 0»
« »
P «1 1 0 0»
«0 1 1 1»
« »
«1 1 1 0»
« »
«1 1 0 1»
«1 0 1 1»
« »
¬1 1 1 1¼

a) Construya la matriz de control de paridad de este código.


b) Construya la tabla patrón de error-vector síndrome;
c) Aplique la decodificación por síndrome al vector recibido
r 011111001011011 .

2.9) Un código lineal binario de Hamming de capacidad de corrección de error


simple tiene una longitud de código n 10 . Cual es:
a) ¿El número de dígitos de información k ?
b) ¿El número de dígitos de control de paridad n  k ?
c) ¿La tasa del código?
d) ¿Las ecuaciones de control de paridad?
e) ¿El vector de código correspondiente al mensaje todos-unos?
f) ¿El vector de síndrome si el error ocurre en el séptimo bit de un vector
de código?

2.10) Errores aleatorios ocurren con probabilidad p 10 3 en un CSB y son


corregidos por un código de bloques que tiene n 15 , k 11 , d min 3 .
¿Cuál es la tasa de eficiencia total y la probabilidad de error por bloque
cuando el código se utiliza:
a) En la modalidad de corrección directa (FEC), y
b) En la modalidad de retransmisión (ARQ)?

2.11) Un sistema FEC opera en un canal de ruido blanco, aditivo y Gaussiano, y


debiera funcionar con una tasa binaria de error Pbe  10 4 utilizando la

129
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

mínima potencia transmitida. Los siguientes códigos lineales de bloques son


opciones para este esquema:

n k d min
31 26 3
31 21 5
31 16 7

Tabla P.2.2 Opciones para el problema 2.11


a) Determine la mejor si lo que se requiere es tener la mínima potencia de
transmisión;
b) Calcule la ganancia del código a la tasa binaria de error deseada Pbe en
comparación con la transmisión sin codificar.

2.12) Un sistema ARQ opera en un canal de ruido blanco, aditivo y Gaussiano, y


debiera funcionar con una tasa binaria de error Pbe  10 5 . Los siguientes
códigos lineales de bloques son opciones para este esquema:

n k d min
12 11 2
15 11 3
16 11 4

Tabla P.2.3 Opciones para el problema 2.12


a) Determine para cada caso el valor requerido de rb / r ;
b) Determine para cada caso el valor requerido de E b / N0 .

2.13) Muestre que la matriz generadora de un código lineal de bloques puede ser
derivada de las ecuaciones de control de paridad del código.

130
3
Códigos Cíclicos
Los códigos cíclicos son una clase importante de códigos lineales de bloques
cuya característica de estructura es que pueden ser finalmente implementados
empleando registros de desplazamiento o bien lógica secuencial.

3.1 Descripción
Para un vector de n componentes c ( c 0 , c1 ,..., c n 1 ) la rotación cíclica a la
derecha de sus componentes genera un vector diferente. Si esta operación de
rotación cíclica a la derecha se repite i veces se tendrá la versión rotada del
vector original c (i) ( c n i , c n i 1 ,..., c n 1 , c0 , c1 ,..., c n i 1 ) .
Se dice entonces que un código lineal de bloques es cíclico si para cada uno de
sus vectores la rotación cíclica i -esima resulta en otro vector que también
pertenece al código [1-3]. Se debe recordar además que por ser lineal y de
bloques, la suma de dos cualquiera de los vectores del código también pertenece
al código.
Como un ejemplo, el código Cb (7 ,4 ) que fue descripto en el capítulo 2
también tiene la propiedad de ser cíclico.

3.2 Representación polinómica de palabras de código


Las palabras código de un código cíclico pueden ser convenientemente
representadas por polinomios. Estos polinomios serán definidos sobre un
determinado campo de Galois GF( 2 m ) , y se prestará particular atención a los
polinomios definidos sobre el campo binario, GF( 2 ) .
Un polinomio es una expresión determinada en una variable X , que esta
formada por términos del tipo c i X i , donde el coeficiente c i es un elemento del
campo GF( 2 m ) sobre el que se define el polinomio, y el exponente es un
número entero que puede ser identificado por ejemplo con la posición de un bit
en un vector de código. Un polinomio será de la forma:

131
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

c( X ) c0  c1X  ...  cn 1X n 1 ; c i  GF( 2 m )


(3.1)

Los polinomios definidos en un campo particular operan como habitualmente lo


hacen los elementos o coeficientes de los términos polinómicos, obedeciendo a
las reglas de operación en ese campo particular. Si c n 1 1 el polinomio se
denomina mónico.
En el caso de los polinomios definidos sobre el campo binario GF( 2 ) , las
operaciones son la adición y multiplicación módulo-2, que se describieron en el
capitulo de códigos de bloques. La suma de dos polinomios definidos en el
campo binario c1 ( X ) y c 2 ( X ) es entonces la adición en módulo-2 entre los
coeficientes que afectan términos X i del mismo exponente i . Si:

c1 ( X ) c01  c11 X  ...  c n 1,1 X n 1


y
(3.2)
n 1
c2 ( X ) c02  c12 X  ...  c n1,2 X

entonces la suma de estos polinomios es igual a:

c1 ( X ) † c 2 ( X ) c01 † c02  c11 † c12 X  ...  c n 1,1 † c n 1,2 X n 1


(3.3)

En este caso, el grado del polinomio, es decir el exponente de la variable X


más alto, es n  1 , para los dos polinomios involucrados en la suma. Sin
embargo dicha suma puede definirse igualmente como lo indica la expresión
(3.3) aun cuando los grados de los polinomios no coincidan.
El producto de dos polinomios se realiza también respetando la suma y
multiplicación módulo-2. Si por ejemplo se opera calculando el producto de
c1 ( X ) x c 2 ( X ) el resultado es:

c1 ( X ) x c2 ( X ) c01 x c02  c01 x c12 † c02 x c11 X  ...  c n1,1 x c n1,2 X 2( n1 )
(3.4)

Las operaciones en la expresión (3.4) son adiciones y multiplicaciones módulo-


2.
Los polinomios definidos sobre el campo binario en función de las operaciones
descriptas cumplen con las propiedades conmutativa, asociativa y distributiva.

132
Capítulo III: Códigos cíclicos

Por otro lado es posible también definir el cociente de dos polinomios. Sean dos
polinomios definidos en el campo binario c1 ( X ) y c 2 ( X ) , de la forma
expresada en ecuación (3.2), y siendo c 2 ( X ) z 0 un polinomio no nulo, la
división entre estos polinomios resulta en dos polinomios únicos dentro del
mismo campo binario, q( X ) y r ( X ) , denominados polinomio cociente y
polinomio resto respectivamente, que están de acuerdo con la siguiente
expresión:

c1 ( X ) q( X ) x c 2 ( X ) † r ( X )
(3.5)

Características adicionales de los polinomios definidos sobre un campo de


Galois GF * ( 2 m ) se pueden consultar en el Apéndice B.
En lo que sigue, y por simplicidad, las operaciones suma y producto serán
denotadas como ‘ . ’ y ‘  ’ en lugar de emplear los símbolos de operaciones
en modulo-2, ‘ x ’ y ’ † ’ .
En función de los polinomios definidos sobre un determinado campo de Galois,
y en particular aquellos definidos sobre el campo binario GF( 2 ) , se puede
realizar un análisis mas adecuado de los códigos cíclicos si se considera la
representación polinomial de las palabras de código, donde la variable X esta
afectada por un exponente j que es identificado como un termino X j que de
existir, indica que en la posición j -esima hay un uno '1' , mientras que su
ausencia indica en la posición j -esima la existencia de un cero '0' . Entonces la
representación polinomial del vector c ( c0 ,c1 ,..., c n1 ) será de la forma de la
expresión (3.1):

c( X ) c0  c1X  ...  cn 1X n 1

De esta forma el polinomio que describe una palabra de n componentes es un


polinomio que tiene a lo sumo grado n  1 . Equivalentemente se referirá a los
integrantes del código como vectores de código o polinomios código.

3.3 Polinomio Generador de un código cíclico


La versión rotada cíclicamente i posiciones del vector de código c tiene la
siguiente expresión polinomial:

133
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

c(i )( X ) c n i  c n i 1 X  ...  c n i 1 X n 1
(3.6)

Existe una relación entre la versión rotada cíclicamente y la versión sin rotar del
polinomio código c( X ) que es de la forma:

X i c( X ) q( X )( X n  1 )  c ( i ) ( X )
(3.7)

Expresión de la que se deduce que la versión rotada cíclicamente de c (X )


puede evaluarse como:

c( i )( X ) X i c( X ) mod( X n  1 )
(3.8)

siendo mod la función módulo es decir, la operación que toma el resto del
cociente entre X i c( X ) y ( X n  1 ) .
Entre todos los polinomios código que pueden formar parte de un código
cíclico, existirá entre ellos algún polinomio código que será de grado mínimo
[1]. Este polinomio debiera garantizar un cierto grado r , que será el grado
mínimo, de forma que en su expresión polinómica el término correspondiente al
factor Xr debe ser uno. Luego se podrá expresar como
g( X ) g 0  g1 X  ...  X r . De existir otro polinomio del mismo grado pero
con diferentes componentes, tendría que tener la forma
r
g1 ( X ) g10  g11 X  ...  X . Sin embargo y debido a que el código es lineal,
la suma de estos polinomios código debiera ser otro polinomio del código, que
terminaría teniendo un grado ( r  1 ) , lo cual contradice la suposición inicial de
que el grado mínimo de cualquier polinomio código es r . Esto permite asegurar
que el polinomio de grado mínimo no nulo de un código cíclico es único.
También puede demostrarse que el polinomio de grado mínimo no nulo en un
código cíclico tiene su coeficiente g 0 1 . Finalmente será de la forma:

g( X ) 1  g1 X  ...  g r 1 X r 1  X r
(3.9)

Por otra parte los polinomios de la forma Xg ( X ) , X 2 g( X ) , ..., X n r 1 g( X )


son todos polinomios de grado menor que n , por lo cual si se hace uso de la

134
Capítulo III: Códigos cíclicos

expresión (3.7), se tendrá que el cociente es en todos los casos q( X ) 0 , es


decir:

Xg ( X ) g (1 ) ( X )
X 2 g( X ) g (2 )( X )

X ( n r 1 ) g ( X ) g ( n r 1 ) ( X )
(3.10)

Por ser rotaciones cíclicas del polinomio código de grado mínimo, son también
polinomios código. Al ser Ccicl ( n, k ) un código lineal de bloques cíclico, una
combinación lineal de estos polinomios será también polinomio código:

c( X ) m0 g( X )  m1 Xg ( X )  ...  mn r 1 X nr 1 g( X )

c( X ) m 0
 m1X  ...  mn r 1X n r 1 g( X )
(3.11)

siendo g( X ) el polinomio código no nulo de grado mínimo expresado en (3.9).


La expresión (3.11) determina que un polinomio código c( X ) es tal que es
múltiplo del polinomio no nulo de grado mínimo. Esta propiedad es muy útil
para codificar y decodificar los códigos cíclicos, simplificándolo en
comparación con los códigos de bloques no cíclicos.
En la expresión (3.11) los coeficientes mi , i 0,1,2,..., n  r  1 son elementos
del campo de Galois GF( 2 ) , es decir, son ceros o unos. Existirán entonces
2 n r polinomios de grado n  1 o menor que son múltiplos de g( X ) . Por
tratarse de todas las combinaciones lineales posibles estos polinomios forman
el código Ccicl ( n, k ) . Esto significa que para desarrollar una asignación
biyectiva entre el espacio de vectores de mensaje y de código se tiene que
cumplir que existan 2 k combinaciones posibles. Luego, 2 nr 2 k , o bien
r n  k . Esto significa que el nivel de redundancia de estos códigos es r , que
es igual al grado del polinomio código no nulo de grado mínimo.
Entonces, el polinomio código no nulo de grado mínimo es de la forma:

g( X ) 1  g1 X  ...  g n k 1 X n k 1  X n k
(3.12)

135
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Resumiendo, en un código cíclico Ccicl ( n, k ) , lineal y de bloques, existe un


único polinomio código no nulo de grado mínimo del cual todo otro polinomio
código es múltiplo. El polinomio no nulo de grado mínimo es de grado r , todo
otro polinomio código de Ccicl ( n, k ) será de grado n  1 o menor
cumpliéndose:

c( X ) m( X )g( X ) m 0
 m1X  ...  mk 1X k 1 g( X )
(3.13)

donde mi , i 1,2,..., k  1 son los dígitos de la palabra de mensaje a ser


codificada.
Dado que el polinomio código no nulo de grado mínimo g (X ) determina
totalmente el código cíclico, se lo denomina polinomio generador.

Ejemplo 3.1:

Describa las palabras de código que corresponden a los mensajes


m0 ( 0000 ) , m1 (1000 ) , m2 ( 0100 ) , y m3 (1100 ) del código
cíclico Ccicl (7 ,4 ) del cual se sabe es posible generarlo a través del polinomio
generador g( X ) 1  X  X 3 .

Mensaje m Vector código c Polinomio código c( X )


0000 0000000 0 0 g( X )
1000 1101000 1 X  X3 1g( X )
0100 0110100 XX X 2 4
Xg ( X )
1100 1011100 1 X2  X3  X4 (1  X )g( X )

Tabla 3.1 Polinomios código de un código cíclico Ccicl (7 ,4 )

Respecto del polinomio generador y su relación con el término X n  1 se


tienen dos resultados importantes. El primero es que si g( X ) es un polinomio
generador de un código cíclico Ccicl ( n, k ) , entones es factor del término
X n  1 . Esto puede demostrarse de la siguiente forma. Al multiplicar al
polinomio generador, que es de grado r , por el termino X k se obtendrá un
polinomio de grado n , ya que n k  r . Si se aplica la expresión (3.8) se

136
Capítulo III: Códigos cíclicos

tendrá un cociente en la división que es igual a 1, ya que se dividen dos


polinomios mónicos del mismo grado. Entonces:

X k g( X ) ( X n  1)  g ( k ) ( X ) ( X n  1 )  a( X )g( X )

X k

 a( X ) g( X ) ( X n  1)
(3.14)

debido a que g ( k ) ( X ) es un polinomio código por ser rotación cíclica k -esima


de g (X ) . Así entonces, g( X ) es factor de X n  1 .
En forma inversa puede afirmarse entonces que si se tiene un polinomio de
grado r n  k , y este polinomio divide al término ( X n  1 ) , entonces ese
polinomio puede generar un código cíclico Ccicl ( n, k ) . Cualquier factor del
término ( X n  1 ) es un polinomio generador de algún código cíclico.

3.4 Forma sistemática de un código cíclico


La manera hasta el momento presentada para la generación de un código cíclico
se basa en la definición de un polinomio generador g( X ) que es suficiente para
dar forma a todas las palabras de código del código cíclico Ccicl ( n, k ) por
multiplicación entre este polinomio y el polinomio mensaje m( X ). Sin
embargo este método de generación es esencialmente no sistemático. Para un
polinomio generador g( X ) que tiene las condiciones para generar un código
cíclico, y siendo el polinomio mensaje de la forma:

m( X ) m0  m1X  ...  mk 1X k 1


(3.15)

se puede obtener una versión de código sistemática realizando las siguientes


operaciones:

Se forma el polinomio X n k m( X ) m0 X n k  m1X n k 1  ...  mk 1X n 1 ,


que se divide por el polinomio generador g (X ) :

137
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

X n k m( X ) q( X )g( X )  p( X )
(3.16)

Aquí p( X ) es el polinomio resto de la división expresada, que debe ser de


grado n  k  1 o menor dado que g( X ) es de grado n  k . Reordenando la
expresión (3.16):

X n k m( X )  p( X ) q( X )g( X )

donde se observa que el polinomio X n k m( X )  p( X ) es un polinomio código


ya que es factor de g( X ) . En este polinomio el termino X nk m( X ) es la
expresión polinómica del mensaje tal cual es, desplazado n  k posiciones,
mientras que p( X ) es el polinomio resto de esta división y opera como el
polinomio de bits de redundancia, ocupando las posiciones de exponente mas
bajo en función de X . La palabra o polinomio código c( X ) así construida
adopta la forma sistemática:

c( X ) X n  k m( X )  p( X )
p0  p1X  ... pn  k 1X n  k 1  m0 X n  k  m1X n  k 1  ...  mk 1X n 1
(3.17)

que expresado como vector código es igual a:

c p0 , p1 ,..., pnk 1 ,m0 , m1 ,..., mk 1


(3.18)

Ejemplo 3.2:

Para el código cíclico Ccicl (7 ,4 ) con polinomio generador


3
g( X ) 1  X  X , obtenga el polinomio código en forma sistemática para el
mensaje de entrada m (1010 ) .

El polinomio mensaje es de la forma m( X ) 1  X 2 , y siendo


n k 7 4 3 , y entonces X m( X ) 3
X  X . Se realiza la división
3 5

polinómica:

138
Capítulo III: Códigos cíclicos

X5  X3 | X3  X 1
X5  X3  X2 X2

X2 p( X )

Luego:

c( X ) p( X )  X 3m( X ) X2  X3  X5

c ( 0011010 )

La tabla 3.2 muestra el código cíclico Ccicl (7 ,4 ) generado por


3
g( X ) 1  X  X , y es coincidente con el código Cb (7 ,4 ) presentado en el
capítulo 2.

Mensaje m Vector código c


0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 0 1 0 0 0 1
0 0 1 0 1 1 1 0 0 1 0
0 0 1 1 0 1 0 0 0 1 1
0 1 0 0 0 1 1 0 1 0 0
0 1 0 1 1 1 0 0 1 0 1
0 1 1 0 1 0 0 0 1 1 0
0 1 1 1 0 0 1 0 1 1 1
1 0 0 0 1 1 0 1 0 0 0
1 0 0 1 0 1 1 1 0 0 1
1 0 1 0 0 0 1 1 0 1 0
1 0 1 1 1 0 0 1 0 1 1
1 1 0 0 1 0 1 1 1 0 0
1 1 0 1 0 0 0 1 1 0 1
1 1 1 0 0 1 0 1 1 1 0
1 1 1 1 1 1 1 1 1 1 1

Tabla 3.2 Código cíclico Ccicl (7 ,4 )

139
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

3.5 Matriz generadora para códigos cíclicos


Como se ha visto el código cíclico Ccicl ( n, k ) lineal y de bloques generado por
el polinomio g( X ) 1  g1 X  ...  g n k 1 X n k 1  X n k es expandido por los
k polinomios código g( X ), Xg ( X ),..., X nk g( X ) que pueden ser
presentados como vectores fila de una matriz generadora de dimensión kxn :

ªg 0 g1 g2  g n k 0 0  0 º
«0
« g0 g1  g n k 1 g n k 0  0 »»
G
«      »
« »
¬0 0  g0 g1 g2  g n k ¼
(3.19)

Siendo g 0 g n k 1

Esta matriz generadora no tiene la forma sistemática. En general sin embargo es


posible obtener una matriz generadora sistemática para un dado código
empleando operaciones sobre filas.

Ejemplo 3.3:

Para el código cíclico Ccicl (7 ,4 ) generado por el polinomio


3
g( X ) 1  X  X obtenga la matriz generadora correspondiente.
En este caso la matriz adopta la forma:

ª1 1 0 1 0 0 0º
«0
« 1 1 0 1 0 0 »»
G
«0 0 1 1 0 1 0»
« »
¬0 0 0 1 1 0 1¼

Si bien esta matriz no tiene la forma sistemática se puede obtener una versión de
ese tipo con operaciones sobre filas. Estas operaciones se realizan en suma y
producto sobre el campo GF( 2 ) . Así reemplazando la fila tercera por la suma
de la primera y la tercera se obtiene:

140
Capítulo III: Códigos cíclicos

ª1 1 0 1 0 0 0º
«0
« 1 1 0 1 0 0 »»
G'
«1 1 1 0 0 1 0»
« »
¬0 0 0 1 1 0 1¼

Y con el reemplazo de la fila cuarta por la suma de primera, segunda y cuarta:

ª1 1 0 1 0 0 0º
«0
« 1 1 0 1 0 0 »»
G"
«1 1 1 0 0 1 0»
« »
¬1 0 1 0 0 0 1¼

Esta última matriz G " genera el mismo código que la matriz G , pero con una
asignación distinta de la tabla entre mensajes y palabras de código. Obsérvese
que es la misma que la del código (7,4) en forma sistemática que se presentó en
el capítulo códigos de bloques, y genera el código presentado en tabla 1.
Formalizando el proceso anterior, para obtener la forma sistemática de los
códigos cíclicos, y las expresiones correspondientes se opera de la siguiente
manera: Se divide X n k i por el polinomio generador, siendo
i 0,1,2,..., k  1 :

X n k  i qi ( X )g( X )  pi ( X )
(3.20)

donde pi ( X ) es el resto de la división:

pi ( X ) pi 0  pi1 X  ...  pi ,n k 1 X n k 1
(3.21)

como X n k i  pi ( X ) q i ( X )g( X ) es divisible por g( X ) entonces es un


polinomio código. Ordenando sus coeficientes en una matriz:

141
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

ª p00 p01  p0 ,n k 1 1 0 0  0º
« p p11  p1,n k 1 0 1 0  0 »»
G « 10
«         »
« »
¬« pk 1,0 pk 1,1  pk 1,n k 1 0 0 0  1 ¼»
(3.22)

Esta es la matriz generadora del código cíclico de forma sistemática. De la


misma manera se puede encontrar la matriz de control de paridad H :

ª1 0  0 0 p00 p10  pk 1,0 º


«0 1  0 0 p01 p11  pk 1,1 »»
H «
«       »
« »
¬«0 0  0 1 p0 ,n k 1 p1,n k 1  pk 1,n k 1 ¼»
(3.23)
Ejemplo 3.4:

El polinomio X 7  1 tiene la siguiente expresión en factores:

X 7 1 (1  X )(1  X  X 3 )(1  X 2  X 3 )

Como n 7 , los polinomios g 2 ( X ) 1  X  X 3 y g 3 ( X ) 1  X 2  X 3


que son de grado r n  k 3 , generan ambos, dos códigos cíclicos
Ccicl (7 ,4 ) . Igualmente el polinomio
g 4 ( X ) (1  X )(1  X  X 3 ) 1  X 2  X 3  X 4 genera un código cíclico
Ccicl (7 ,3 ) .
Debido a que la descomposición en factores de X 7  1 es única, y es la
expresada anteriormente, se pueden identificar los posibles códigos que son
generados como códigos cíclicos, que tienen longitud de palabra n 7 .
El código generado por el polinomio generador g1 ( X ) 1  X es un código de
paridad par. Esto es debido a que su matriz generadora es igual a:

142
Capítulo III: Códigos cíclicos

ª1 1 0 0 0 0 0 º
«0 1 1 0 0 0 0 »
« »
«0 0 1 1 0 0 0 »
G1 « »
«0 0 0 1 1 0 0 »
«0 0 0 0 1 1 0 »
« »
¬«0 0 0 0 0 1 1 ¼»
que convertida por operaciones sobre filas a formato sistemático es igual a:

ª1 1 0 0 0 0 0º
«1 0 1 0 0 0 0 »»
«
«1 0 0 1 0 0 0»
G1' « »
«1 0 0 0 1 0 0»
«1 0 0 0 0 1 0»
« »
¬«1 0 0 0 0 0 1 ¼»

donde se observa claramente que la suma de cualquier número de filas resulta


en palabras con un número par de unos.
El polinomio generador g 2 ( X ) 1  X  X 3 corresponde a un código cíclico
de Hamming, presentado en el ejemplo 3.2. El polinomio generador
g 3 ( X ) 1  X 2  X 3 también corresponde a un código cíclico de Hamming
cuya matriz equivalente de forma sistemática es igual a:

ª1 0 1 1 0 0 0º
«1
« 1 1 0 1 0 0 »»
G3'
«1 1 0 0 0 1 0»
« »
¬0 1 1 0 0 0 1¼

en la cual puede verse que la sub-matriz P tiene filas con al menos dos unos
cada una, lo que la configura como una matriz generadora de un código de
Hamming (7 ,4 ) .
Los polinomios generadores
3 2 3 4
g 4 ( X ) (1  X )(1  X  X ) 1  X  X  X y
g 5 ( X ) (1  X )(1  X 2  X 3 ) 1  X  X 2  X 4 generan ambos, dos
códigos cíclicos Ccicl (7 ,3 ) . El polinomio generador:

143
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

g6 ( X ) (1  X  X 3 )(1  X 2  X 3 ) 1  X  X 2  X 3  X 4  X 5  X 6
corresponde a un código de repetición n 7 , cuya matriz generadora es:

G7 >1 1 1 1 1 1 1@

3.6 Cálculo de síndrome y detección de errores


De manera similar a lo presentado en el capítulo 2, se define al vector recibido,
resultado de posibles errores al pasar por el canal, como r r0 , r1 ,..., rn 1 que
tendrá en este caso una forma polinomial:

r ( X ) r0  r1 X  r2 X 2  ...  rn 1 X n 1
(3.24)

Al dividir este polinomio por g( X ) se obtiene:

r( X ) q( X )g( X )  s( X )
(3.25)

donde el resto de esta división es un polinomio de grado n  k  1 o menor. En


este planteo se recurre al hecho conocido de que un polinomio código es
múltiplo de g( X ) por lo cual si el resto de esta división es cero, entonces el
polinomio recibido pertenece al código. De resultar distinto de cero, entonces se
detecta un patrón de error en el polinomio recibido. El vector síndrome vuelve a
tener n  k componentes que son los coeficientes del polinomio
s( X ) s0  s1 X  ...  sn k 1 X nk 1 .
Se puede enunciar, respecto del polinomio síndrome, el siguiente teorema:

Teorema 3.1: Si el polinomio recibido r ( X ) r0  r1 X  r2 X 2  ...  rn 1 X n 1


genera el síndrome s( X ) , entonces una rotación cíclica del polinomio recibido
r (1 ) ( X ) genera el polinomio síndrome s (1 ) ( X ) .

De la ecuación (3.7) se puede decir que:

Xr ( X ) rn 1( X n  1)  r (1) ( X )
(3.26)

144
Capítulo III: Códigos cíclicos

O bien:

r (1 ) ( X ) rn 1 ( X n  1 )  Xr ( X ) .
(3.27)

Si toda esta expresión se divide por g( X ) :

f ( X )g( X )  t ( X ) rn 1 g( X )h( X )  X >q( X )g( X )  s( X )@


(3.28)

donde t ( X ) es el síndrome de r (1 ) ( X ) . Si se reordena esta ecuación:

Xs( X ) >f ( X )  rn1h( X )  Xq( X )@g( X )  t( X )


(3.29)

es decir t ( X ) es el resto de dividir Xs( X ) por g( X ) o sea que


t( X ) s (1 ) ( X ) . Esto se puede extender por inducción y establecer que
s ( i ) ( X ) es el síndrome de r ( i ) ( X ) .

De la misma forma que en códigos de bloques, se puede decir que si


c( X ) c0  c1X  ...cn 1X n 1 es un polinomio código, y
e( X ) e0  e1 X  ...  en 1 X n 1 es el patrón de error en forma polinómica, se
tiene que;

r( X ) c( X )  e( X ) q( X )g( X )  s( X )
(3.30)

luego:

e( X ) c( X )  q( X )g( X )  s( X ) f ( X ).g( X )  q( X )g( X )  s( X )


>f ( X )  q( X )@g( X )  s( X )
(3.31)

Si el polinomio recibido r ( X ) se divide por el polinomio g( X ) se obtiene un


resto que es el correspondiente síndrome s( X ) .

145
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

3.7 Decodificación de códigos cíclicos


Para la decodificación de códigos cíclicos se recurre al mismo procedimiento
que se emplea en códigos de bloques, es decir, se establece una tabla S o e
entre síndromes y patrones de error, en función del polinomio recibido r ( X )
se calcula el síndrome como el resto de la división de este polinomio por g( X )
y por intermedio de la tabla construida se puede conocer el patrón de error, que
es útil para realizar la corrección del error según la expresión (3.31). El
siguiente es un ejemplo basado en el código cíclico Ccicl (7 ,4 ) .

Ejemplo 3.5:

El código lineal de bloques cíclico Ccicl (7 ,4 ) generado por


3
g( X ) 1  X  X , que tiene una distancia mínima de d min 3 , puede
corregir los patrones de error de un bit. Existen 7 patrones de error de este tipo,
al que además se le incluye el patrón de no-error correspondiente al síndrome
nulo. La tabla de polinomios patrones de error y polinomios síndromes es
presentada a continuación:

Patrones de error en forma Polinomios síndrome Forma vectorial


polinómica
e6 ( X ) X 6 s( X ) 1  X 2 101
e5 ( X ) X5 s( X ) 1  X  X 2 111
e4 ( X ) X4 s( X ) X  X 2 011
e3 ( X ) X3 s( X ) 1  X 110
e2 ( X ) X2 s( X ) X 2 001
e1 ( X ) X1 s( X ) X 010
e6 ( X ) X0 s( X ) 1 100

Tabla 3.3 Patrones de error y síndromes

Nuevamente sucede, como en códigos de bloques, que se puede construir una


tabla con los polinomios patrones de error y sus correspondientes polinomios
síndrome para efectuar la corrección de errores. También vuelve a suceder que
si el patrón de error es un polinomio código, el error es indetectable.
El teorema 3.1 justifica el funcionamiento de varios decodificadores diseñados
para decodificar los códigos cíclicos [1]. Entre ellos se encuentra el

146
Capítulo III: Códigos cíclicos

decodificador Meggitt [5]. Este decodificador se basa en la propiedad de


rotación de los síndromes y la correspondiente palabra recibida. Opera
básicamente bit a bit, analizando si el bit más significativo tiene un error o no, y
luego rotando la palabra, y el correspondiente síndrome, para analizar los
siguientes bits de la palabra recibida. De esta manera, el algoritmo analiza si el
bit de posición más significativa tiene error o no, observando si el síndrome
calculado sobre la palabra corresponde al síndrome del patrón de error en la
posición más significativa (Ver sección siguiente, 3.7). De suceder esto el
algoritmo opera cambiando el bit, y corrigiendo el síndrome de forma
correspondiente. De esta forma todos los bits de la palabra se alojan por
rotación en la posición más significativa, y son analizados uno a uno. El
algoritmo acepta la palabra corregida como valida si al final de las correcciones
sobre el síndrome inicial, se observa que este es igual al polinomio nulo. Al
realizar la operación de decodificación sobre el bit más significativo, solo se
necesita guardar en memoria el síndrome que le corresponde a ese patrón de
error, reduciendo así el tamaño de la tabla S o e .
El hecho de efectuar la corrección de errores bit a bit, realizando
desplazamientos, justifica la capacidad de los códigos cíclicos de corregir
ráfagas de error, sea que se produzcan en la parte interior de la palabra de
código o bien tomando parte inicial y final de la misma. En este caso el patrón
de error es de la forma e( X ) X j B( X ) , siendo 0 d j d n  1 y B( X )
polinomio de grado igual o menor a n  k  1 , que no será divisible por g( X ) .
Una variación del decodificador Meggitt es el decodificador de atrape de
errores, en Inglés “Error-trapping decoder”. Este algoritmo es particularmente
eficiente en la decodificación de errores simples, ciertos patrones de error
dobles, y los errores en ráfaga. Su eficiencia decae en otros casos.
El método de atrape de errores se aplica a patrones de error con ciertos
condicionamientos. Un patrón de error importante es el de la secuencia de
n  k bits, en particular ubicados en las posiciones más significativas. En este
caso puede demostrarse que si la palabra recibida tiene una secuencia de errores
en los n  k bits más significativos el patrón de error e( X ) es igual a
X k s ( n k ) ( X ) , donde s ( n k ) ( X ) es el síndrome de la versión rotada
cíclicamente n  k posiciones del polinomio recibido r ( X ) . Esta propiedad
hace más simple la corrección de ese evento de error, ya que solo hace falta
calcular s ( n k ) ( X ) y sumar X k s ( n k ) ( X ) a r ( X ) . De manera similar se
puede realizar la corrección de patrones de n  k errores aun que no se
encuentren en las posiciones más significativas, surgiendo lo que se denomina
el atrape de errores. En este procedimiento puede demostrarse que para un
código cíclico de capacidad de corrección de t errores, el atrape de errores se

147
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

produce si el peso del vector síndrome es menor o igual a t . Detalles de este


algoritmo pueden ser analizados en [1].

3.8 Ejemplo de aplicación. Código CRC del estándar de


Ethernet
Un ejemplo de aplicación de los códigos cíclicos es el código de control cíclico
de redundancia (CRC, Cyclic Redundancy Check) que emplea el protocolo de
Ethernet. El código es almacenado en la secuencia de control de paquete, (FCS,
Frame Check Sequence) que continua la porción de datos del paquete de datos,
y está constituido por un código cíclico de 32 bits de redundancia. Este código
cíclico se genera empleando el polinomio generador:

g( X ) X 32  X 26  X 23  X 22  X 16  X 12  X 11  X 10  X 8  X 7  X 5  X 4  X 2  X  1

Una de las características importantes de los códigos cíclicos es que el grado de


redundancia está dado por el grado del polinomio generador. Así entonces
independientemente del largo del paquete de bits de datos a codificar, en este
caso el código cíclico siempre agrega 32 bits de redundancia.
En el caso del estándar del protocolo de Ethernet el paquete de datos codificado
varia su longitud de n 512 a n 12144 bits. Los k bits de información
configuran la primera parte de esta secuencia de datos, que es interpretado como
un polinomio m( X ) , que es seguido de los n  k 32 bits de redundancia que
resultan de dividir en esquema sistemático al polinomio X nk m( X ) por
g( X ) . En el receptor se realiza el cálculo de control sobre el conjunto de bits
de mensaje y si este control coincide con la secuencia presente en el FCS, que
almacena la redundancia, entonces el paquete es aceptado como válido. El
pedido de repetición se origina si esto no sucede.
Para reducir las dimensiones del ejemplo ténganse en cuenta el caso el código
cíclico Ccicl (7 ,4 ) presentado en el ejemplo 3.3. Supóngase que se tiene el
mensaje m (1010 ) , que al ser codificado configura la palabra de código
c (0011010 ) , palabra en la cual se remarca la redundancia resultante de la
aplicación de la codificación. Una forma de decodificar sería repetir el cálculo
de la porción redundante en el decodificador generando la operación sobre los
cuatro bits de mensaje m (1010 ) , verificando que la redundancia coincide
con el FCS, que es en este caso (001) . Otro método equivalente es el del
cálculo de síndrome, operando sobre la palabra completa c (0011010 ) , que

148
Capítulo III: Códigos cíclicos

debiera resultar en un síndrome igual al vector o polinomio nulo, para la


aceptación del paquete como válido. En el caso del protocolo Ethernet la
operación se realiza como en el primer método, es decir, se repite en el
decodificador la operación de codificación sobre los k bits de mensaje, y se
compara el resultado con el contenido del FCS, que es la redundancia impresa al
paquete original de datos. La redundancia calculada en el decodificador debe
coincidir con el contenido del FCS, para la aceptación del paquete como válido.
La longitud de palabra codificada varía en el protocolo de Ethernet. Esto hace
que la capacidad de detección de errores sea también dependiente de este factor.
Se encuentra calculada la distancia mínima del código como función de la
longitud de palabra n para el caso particular del estándar de Ethernet. La
siguiente tabla describe los valores de distancia mínima en rangos de longitud
de palabra [6]:

Longitud n Distancia de Hamming mínima d H


De 3007 a 12144 4
301 a 3006 5
204 a 300 6
124 a 203 7
90 a 123 8

Tabla 3.4 Distancia mínima para diferentes configuraciones de paquete en el estándar


Ethernet

Para el caso del estándar de Ethernet entonces se podrá estar en la situación


descripta en los dos primeros valores de la tabla, pudiéndose entonces detectar 3
o cuatro bits errados por paquete, según el caso.

149
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Bibliografía y Referencias
1 Lin, S. and Costello, D. J., Jr., Error Control Coding: Fundamentals and
Applications, Prentice Hall, inc. Englewood Cliffs, New Jersey, 1983.

2 Carlson, B., Communication Systems. An Introduction to Signals and


Noise in Electrical Communication, Tercera Edición, Mc-Graw Hill Book
Company, 1986.

3 Sklar, B., Digital Communications, Fundamentals and Applications,


Prentice Hall, 1993.

4 Berlekamp, E. R., Algebraic Coding Theory, McGraw-Hill, Ney York,


1968.

5 Meggitt, J. E., “Error correcting codes and their implementation,” IRE


Trans. Inf. Theory, IT-7, págs. 232-244, Octubre 1961.

6 Adámek, J., Foundations of coding: Theory and Applications of Error-


Correcting Codes with an Introduction to Cryptography and Information
Theory, Wiley Interscience, New York, 1991.

7 Peterson, W. W. and Weldon, E. J., Jr., Error-Correcting Codes, Segunda


Edición, MIY Press. Cambridge, Mass., 1972.

8 McEliece, R. J., The Theory of Information and Coding. Addison-Wesley


Publishing Company. Massachusetts. 1977.

9 MacWilliams, F. J. and Sloane, N. J. A., The Theory of Error-Correcting


Codes, North-Holland, Amsterdam, 1977.

10 Baldini, R. , Flh., ”Coded Modulation Based on Ring of Integers,” Tesis


Doctoral, Univ. de Manchester, Manchester, 1992.

11 Baldini, R., Flh., and Farrell, P. G., “Coded modulation based on rings of
integers modulo-q. Part 1: Block codes,” IEE Proc-commun., vol. 141, no.
3, pags.129-136, Junio 1994.

12 Piret, P., “Algebraic Construction of Cyclic Codes over Z with a Good


Euclidean Minimum Distance,” IEEE Trans. On Inform. Theory, Vol 41,
no 3, Mayo 1995.

150
Capítulo III: Códigos cíclicos

13 Hillma, A. P. and Alexanderson, G. L., A First Undergraduate Course in


Abstract Algebra, Segunda Edición. Wadsworth Publishing Company, Inc.
Belmont, California, 1978.

14 Allenby, R. B. J., Rings, Fields and Groups. An Introduction to Abstract


Algebra, Edward Arnold Publishers ltd, London, 1983.

151
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Problemas

3.1) Determine si el polinomio 1  X  X 3  X 4 es un polinomio


generador de un código de bloques lineal y cíclico con longitud de código
n d7 .

3.2) Verifique que el polinomio generador g( X ) 1  X  X 2  X 3


genera un código de bloques lineal y cíclico Ccicl ( 8,5 ) y determine el
polinomio código para el vector de mensaje m 10101 en forma
sistemática.

3.3) Un código de bloques lineal y cíclico Ccicl ( n, k ) tiene una longitud de


código n 7 y un polinomio generador g( X ) 1  X 2  X 3  X 4 :
a) Encuentre la tasa del código, las matrices generadora y de control de paridad
en forma sistemática, y su distancia mínima de Hamming;
b) ¿Cual es el vector de código que le corresponde a la palabra de mensaje
todos unos?
c) Encuentre el vector de síndrome que le corresponde a un evento de error que
afecta al primer símbolo de información, y muestre como este código puede
corregir ese error.
3.4) Defina que entiende por código de control de errores cíclico.

3.5) Un código binario de bloques lineal y cíclico Ccicl ( n, k ) tiene una


longitud de palabra de código n 14 y un polinomio generador
g( X ) 1  X 3  X 4  X 5 :
a) ¿Cuál es el vector de código que le corresponde a la palabra de mensaje
todos unos?
b) Encuentre el vector de síndrome correspondiente a un evento de error que
afecta al último símbolo de información. ¿Puede este código corregir este
evento de error?
c) ¿Puede un código cíclico ser no lineal?

3.6)
a) Determine la tabla de vectores de código de un código de bloques lineal y
cíclico Ccicl ( 6,2 ) generado por el polinomio g( X ) 1  X  X 3  X 4 .
b) Calcule la distancia mínima de Hamming del código y su capacidad de
control de error.

152
Capítulo III: Códigos cíclicos

3.7) Un código de bloques lineal y cíclico con longitud de palabra n 14 es


generado por el polinomio generador g( X ) 1  X 2  X 6 . Determine:
a) El número de bits de información y de control de paridad en cada vector de
código;
b) El número de vectores de código en el código;
c) Las matrices generadora y de control de paridad del código;
d) La distancia mínima de Hamming del código;
e) La capacidad de corrección de errores en ráfaga del código;
f) Describa brevemente como codificar y decodificar este código.

3.8) Para un código de bloques lineal y cíclico Ccicl (15 ,11 ) generado por el
polinomio g( X ) 1  X  X 4 :
a) Determine el vector de código en forma sistemática para el vector de
mensaje m 1100110101 1
b) Decodifique el vector recibido r 0000100011 01011

153
4
Códigos BCH
Los códigos BCH (Bose, Chaudhuri [1], Hocquenghem [2]) constituyen una
clase de códigos de bloques lineales y cíclicos que aparecen como una
generalización de los códigos de Hamming, de manera de poder diseñar un
código de este tipo determinando cualquier valor deseado de la capacidad de
corrección de errores t . Existe la versión binaria de estos códigos, definida
sobre el campo binario GF( 2 ) así como la no binaria, definida sobre el campo
de Galois GF( q ) , de cuyo grupo los mas importantes son los llamados códigos
Reed-Solomon (RS), que serán presentados en el capítulo 5 [3].

4.1 Introducción. El polinomio mínimo


Como se ha visto en el capítulo anterior, los códigos cíclicos pertenecen a la
familia de los códigos de bloques y poseen la particularidad de que las
rotaciones cíclicas de las palabras de código pertenecen también al mismo
código. En particular se presentó el ejemplo del código de bloques de Hamming
Ccicl (7 ,4 ) del cual se pudo verificar que se trata también de un código cíclico
generado por el polinomio generador g( X ) 1  X  X 3 . Una de las
características de los códigos cíclicos es que sus palabras o vectores código son
generados multiplicando un determinado polinomio por el polinomio g( X ) , de
tal manera que en el formato no sistemático el polinomio que multiplica a
g( X ) es el polinomio mensaje m( X ) mientras que en el formato sistemático,
el polinomio que multiplica a g( X ) es un polinomio equivalente q( X ) . Como
todo polinomio, g( X ) ha de poseer raíces, que son en número igual al grado
del polinomio. Estando definido con coeficientes en el campo binario GF( 2 ) ,
es posible que el polinomio no posea todas sus raíces dentro de ese campo, por
lo cual deberá encontrar raíces en un campo extendido. Se hace referencia en
este punto, y se recomienda por otra parte su lectura, al apéndice B, donde como
un ejemplo de campo extendido se describe al campo de Galois
GF( 2 3 ) GF( 8 ) .

155
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Teniendo en cuenta al código de Hamming Ccicl (7 ,4 ) , que es cíclico y de


bloques, se podrá analizar entonces cuales son las raíces del polinomio que lo
genera. De esta forma, y siendo cada palabra del código un múltiplo de ese
polinomio generador, se podrá asegurar que cada polinomio código posee
entonces las mismas raíces que el polinomio generador g( X ) g1 ( X ) . De
esta manera podrá entonces plantearse un conjunto de ecuaciones de síndrome
dado que los polinomios código tienen raíces o ceros conocidos.
Recurriendo a la tabla del campo de Galois extendido GF( 8 ) puede verse que
α es un elemento primitivo de ese campo, y también una raíz del polinomio
primitivo (ver Apéndice B) p( X ) 1  X  X 3 , que no debiera confundirse
con el polinomio generador del código g1 ( X ) , a pesar de que en este caso y
por coincidencia son iguales. De esta forma se puede asegurar que α es raíz de
g1 ( X ) dado que (Ver Tabla 3 del Apéndice B):

g1 ( α ) 1  α  α 3 1  α 1  α 0

Este hecho permite aseverar que cualquier polinomio código del código de
Hamming Ccicl (7 ,4 ) tiene a α como raíz o cero, generando una primera
ecuación de síndrome s1 r ( α ) . Restan por lo tanto encontrar dos raíces más
del polinomio generador. Si se efectúa el reemplazo del elemento α 2 del campo
extendido GF( 8 ) se tiene:

g1 ( α 2 ) 1  α 2  α 6 1  α 2 1  α 2 0

se verifica entonces que α 2 es también raíz del polinomio generador del código
de Hamming Ccicl (7 ,4 ) , y por lo tanto también de cada uno de sus polinomios
código, generando así una segunda ecuación de síndrome s2 r ( α 2 ) . Por este
método de reemplazo puede verificarse que la raíz restante de g1 ( X ) es α 4 , y
que los elementos del campo extendido 1, α 3 , α 5 y α 6 no son raíces de
g1 ( X ) . Por ser α ,α 2 y α 4 raíces del polinomio generador g1 ( X ) se cumple
que:

g1 ( X ) ( X  α )( X  α 2 )( X  α 4 ) X 3  ( α  α 2  α 4 )X 2  ( α 3  α 5  α 6 )X 1
X 3  X 1

156
Capítulo IV: Códigos BCH

Dado que el polinomio generador g1 ( X ) tiene como raíces a α y α 2 , se tiene


un sistema de dos ecuaciones que permite resolver dos incógnitas, que son la
posición y el valor de un error por palabra o polinomio código. Esto coincide
con el hecho de que por tratarse de un código de Hamming, la distancia mínima
es d min 3 y la capacidad de corrección es de patrones de t 1 errores. Si se
deseara una capacidad de corrección mayor, es decir por ejemplo corregir todos
los patrones de t 2 errores, se precisarían cuatro ecuaciones. El polinomio
generador solo tiene una raíz adicional, que es α 4 y por lo tanto solo una
ecuación de síndrome adicional s4 r ( α 4 ) . Por lo tanto no es posible con este
código corregir todos los patrones de t 2 errores.
Las restantes raíces pueden dar forma a otros polinomios generadores. Por
ejemplo el polinomio que tiene como raíces a α 3 ,α 5 y α 6 es de la forma:

g2 ( X ) ( X  α 3 )( X  α 5 )( X  α 6 ) X 3  ( α 3  α 5  α 6 )X 2  ( α  α 2  α 4 )X  1
X 3  X 2 1

Este polinomio también genera un código cíclico Ccicl (7 ,4 ) , como se vió en el


ejemplo 3.2 del capítulo códigos cíclicos, por ser factor del polinomio X 7  1 .
Por otro lado puede verse que g1 ( X ) y g 2 ( X ) son factores de X 7  1 , y que
para obtener la factorización total de este término resta incluir al polinomio
g 3 ( X ) X  1 , que tiene como raíz al elemento 1 del campo extendido
GF( 8 ) . De esta forma todos los elementos no nulos del campo extendido
GF( 8 ) son las raíces del polinomio X 7  1 .
Al polinomio g( X ) Φ1 ( X ) se lo denomina polinomio mínimo de los
elementos α ,α 2 y α 4 , y es esencialmente un polinomio para el cual los
elementos citados son ceros o raíces [4]. De la misma manera el polinomio
g 2 ( X ) Φ2 ( X ) es polinomio mínimo de los elementos α 3 ,α 5 y α 6 , y
g 3 ( X ) Φ3 ( X ) es el polinomio mínimo de la raíz 1 .
Dado que el código de Hamming Ccicl (7 ,4 ) tiene un polinomio generador que
no posee suficientes raíces para garantizar la corrección de todo patrón de error
de por ejemplo t 2 errores, se podría adicionar la raíz faltante, que es α 3 ,
multiplicando los polinomios Φ1 ( X ) y Φ2 ( X ) . La operación mas apropiada
sin embargo sería la de tomar el mínimo común múltiplo entre esos polinomios,
de manera de evitar raíces múltiples, que solo agregarían redundancia a la
codificación sin aumentar la capacidad de corrección. Recuérdese que el grado

157
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

del polinomio generador es el nivel de redundancia que el código agrega. Sin


embargo, al obtener el mínimo común múltiplo entre Φ1 ( X ) y Φ2 ( X ) , se
adicionan automáticamente las restantes raíces, α 5 y α 6 . De esta manera el
polinomio generador es de la forma:

g4 ( X ) Φ1 ( X )Φ2 ( X ) ( X 3  X  1 )( X 3  X 2  1 )
X 6  X 5  X 4  X 3  X 2  X 1

que como se ha visto en el ejemplo 3.4 del capítulo códigos cíclicos es el


polinomio generador de un código cíclico de repetición n 7 , Ccicl (7 ,1 ) , con
distancia mínima d min 7 , capaz de corregir todo patrón de t 3 errores,
hecho que concuerda con que para este código existen 6 ecuaciones de síndrome
que resultan de que g 4 ( X ) posee como raíces a α ,α 2 ,α 3 ,α 4 ,α 5 y α 6 .
Basada en esta introducción se dará a continuación una definición más formal
de los códigos BCH.

4.2 Descripción de los códigos cíclicos BCH


Para construir un código que pueda ser diseñado partiendo de un dado valor de
la capacidad de corrección por palabra t , se definen los códigos BCH, que
surgen como una generalización de los códigos de Hamming, donde se extiende
la capacidad de corrección de t 1 a cualquier valor genérico de t . El método
esta basado en la composición de polinomios mínimos, como se describió en la
sección anterior.

Para cualquier entero positivo m t 3 y t  2 m1 existe un código binario BCH


CBCH ( n, k ) con las siguientes propiedades:

Longitud de palabra: n 2 m 1
Nº dígitos control de paridad n  k d mt
Distancia mínima: d min t 2t  1
Capacidad de corrección de error: t errores por palabra de código

Estos códigos son capaces de corregir patrones de error de t o menos errores en


palabras de n dígitos, siendo n 2 m  1 .
El polinomio generador de estos códigos se describe en términos de sus raíces
tomadas del campo de Galois GF( 2 m ) .

158
Capítulo IV: Códigos BCH

Si α es un elemento primitivo en GF( 2 m ) el polinomio generador g( X ) de


un código BCH corrector de t errores de longitud de palabra n 2 m  1 es el
polinomio de menor grado sobre GF( 2 ) que tiene a α ,α 2 ,..., α 2 t como sus
raíces:

g( α i ) 0; i 1,2,...,2t
(4.1)

De esta manera g( X ) tiene a α i y su conjugado (ver Apéndice B) como


raíces.
Si Φi ( X ) es el polinomio mínimo de α i entonces el polinomio mínimo común
múltiplo (mcm) de Φ1 ( X ),Φ2 ( X ),...,Φ2 t ( X ) es el polinomio generador
g( X ) :

g( X ) mcm^Φ1 ( X ),Φ2 ( X ),...,Φ2 t ( X )`


(4.2)

Sin embargo y debido a la repetición de raíces conjugadas, puede verificarse


que solo los polinomios mínimos de índice impar constituyen el generador
g( X ) [4]:

g( X ) mcm^Φ1 ( X ),Φ3 ( X ),...,Φ2 t 1 ( X )`


(4.3)

como el grado de cada polinomio mínimo es menor o igual que m , el grado de


g( X ) es a lo sumo mt . Esto significa que por tratarse de ser códigos cíclicos,
el valor de n  k será a lo sumo mt .
El código de Hamming es un caso particular de la familia de los códigos BCH,
para el cual el polinomio generador es g( X ) Φ1 ( X ) . El código BCH con
t 1 es un código de Hamming. Dado que α es un elemento primitivo de
GF( 2 m ) , Φ1 ( X ) es un polinomio de grado m .

159
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Ejemplo 4.1:

Sea α un elemento primitivo de GF( 2 4 ) dado por la tabla 4 del apéndice B,


de forma que 1  α  α 4 0 . De la tabla 5 del Apéndice B se deduce que los
polinomios mínimos de α ,α 3 y α 5 son respectivamente:

Φ1 ( X ) 1  X  X 4
Φ3 ( X ) 1  X  X 2  X 3  X 4
Φ5 ( X ) 1  X  X 2

Se obtiene un código binario BCH de longitud n 2 4  1 15 , con capacidad


para corregir t 2 errores, y que tiene como polinomio generador a:

g( X ) mcm^Φ1 ( X ),Φ3 ( X )`

Como Φ1 ( X ),Φ3 ( X ) son dos polinomios distintos e irreducibles:

g( X ) )1( X )) 3 ( X ) (1  X  X 4 )(1  X  X 2  X 3  X 4 )
1 X 4  X 6  X 7  X 8

Este es un código CBCH (15 ,7 ) con d min t 5 . Dado que el polinomio generador
es un polinomio de peso 5 la distancia mínima del código por él generado es
d min 5 .
Si se deseara corregir t 3 errores el código seria un código lineal binario
BCH CBCH (15 ,5 ) con d min t 7 para el cual el polinomio generador es:

g( X ) )1( X )) 3 ( X )) 5 ( X ) (1  X  X 4 )(1  X  X 2  X 3  X 4 )(1  X  X 2 )


1  X  X 2  X 4  X 5  X 8  X 10

polinomio generador que por ser de peso 7 permite decir que para este código
d min 7 .
Por la definición misma de un código lineal binario BCH CBCH ( n, k ) corrector
de patrones de error de hasta t errores, de longitud n 2 m  1 , se puede decir
que sus polinomios código tendrán a α ,α 2 ,..., α 2 t y sus conjugados como

160
Capítulo IV: Códigos BCH

raíces, dado que los polinomios código son múltiplos del polinomio generador
g( X ) y por lo tanto lo serán también de los polinomios mínimos
Φ1 ( X ),Φ2 ( X ),...,Φ2 t ( X ) . Para un polinomio código
c( X ) c0  c1 X  ...  cn 1 X n 1 de un código lineal BCH CBCH ( n, k )
corrector de patrones de error de hasta t errores, de longitud n 2 m  1 , se
tiene entonces que α i es raíz de ese polinomio:

n 1)
c(D i ) c0  c1D i  ...  cn 1D i ( 0
(4.4)

o bien expresándolo en forma matricial:

ª1 º
« i »
«α »
«
c 0 , c1 ,..., c n 1 $ «α 2i » 0
»
« »
« ( n 1 )i »
«¬α »¼
(4.5)

El producto interno del vector de código c0 ,c1 ,..., c n1 con el vector
1,α ,α
i 2i
,..., α ( n 1 )i
es cero. Se puede dar forma entonces a la siguiente
matriz:

ª1 α α2 α3  α n 1 º
«
«1 α
2
α α
2 2 2 3

α2
n 1 »
»
H «1 α 3
«
α α
3 2 3 3

α 3 n 1 »
»
«     »
«1 α 2 t
¬ α α
2t 2 2t 3
 α 2t
n 1 »
¼
(4.6)

de manera tal que si c es una palabra de código tendrá que cumplirse entonces
que:

c $ HT 0
(4.7)

161
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

El código BCH CBCH ( n, k ) es el espacio dual fila de la matriz H que por lo


tanto se transforma en su matriz de paridad.
Si sucede que para algún i y algún j α j es el conjugado de α i entonces se
sabe que c( α j ) 0 . Esto significa que el producto interno entre
c c0 ,c1 ,..., c n 1 la i -ésima fila de H es cero, lo es también con la j -esima
fila, que por lo tanto se puede omitir, haciendo que la matriz H quede de la
forma:

ª1 α α2 α3  α n 1 º
«
«1 α
3
α
3 2
α
3 3
 α
3 n 1 »
»
H «1 α 5
«
α
5 2
α
5 3
 α5 n 1
»
»
«     »
«1 α 2 t 1
¬ α α
2 t 1 2 2 t 1 3

α
2 t 1 n 1 »
¼
(4.8)

Cada elemento de la matriz H es un elemento del campo GF( 2 m ) que puede


representarse como un vector de m componentes tomadas del campo GF( 2 )
ordenada en forma de columna, de forma de construir la misma matriz en
formato binario.

Ejemplo 4.2:

Para el caso del código BCH CBCH (15 ,7 ) de longitud n 2 4  1 15 con


capacidad de corrección t 2 , siendo α un elemento primitivo de GF( 2 4 )
entonces la matriz de control de paridad de este código es:

ª1 α α2 α3 α4 α5 α6 α7 α8 α9 α 10 α 11 α 12 α 13 α 14 º
H « 3 »
¬1 α α6 α9 α 12 α0 α3 α6 α9 α 12 α0 α3 α6 α9 α 12 ¼

que se puede llevar al formato binario de acuerdo a la conversión de la tabla 4


del apéndice B.

162
Capítulo IV: Códigos BCH

ª1 0 0 0 1 0 0 1 1 0 1 0 1 1 1º
«0 1 0 0 1 1 0 1 0 1 1 1 1 0 0 »»
«
«0 0 1 0 0 1 1 0 1 0 1 1 1 1 0»
« »
«0 0 0 1 0 0 1 1 0 1 0 1 1 1 1»
H «              »
«1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 »
«0 0 0 1 1 0 0 0 1 1 0 0 0 1 1»
« »
«0 0 1 0 1 0 0 1 0 1 0 0 1 0 1»
« »
¬0 1 1 1 1 0 1 1 1 1 0 1 1 1 1¼

4.2.1 Cota para la capacidad de corrección de error de códigos BCH.


Determinante de Vandermonde

Se puede probar que un código BCH CBCH ( n, k ) definido por su matriz H


tiene que tener una distancia mínima d min t 2t  1 , para lo cual se tendría que
verificar que su matriz H debe tener 2t  1 columnas que sumadas den como
resultado el vector nulo. Si existiera una palabra en este código lineal y de
bloques cuyo peso fuera pH d 2t con c j1 , c j 2 ,..., c jph se tendría que:

ª α j1
« j2
α
2 j1
 α
2 t j1 º
»
c j1 , c j 2 ,..., c jph «α

α
2 j2
α
2t j 2
»
0
»
«    »
«¬α jpH α
2 jpH
 α 2t
jpH
»¼
(4.9)
Haciendo uso de:

α α
2 t ji ji 2 t
y siendo pH d 2t

ª α j1
« j2
α
j1 2
 α j1 pHº
»
c j1 , c j 2 ,..., c jph «α

α
j2 2
α
j 2 pH
»
0
»
«    »
«¬α jpH α
jpH 2

α jpH
pH
»¼
(4.10)

163
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

que se constituye en una matriz de dimensión pH xpH que tendrá el resultado


indicado en la ecuación (4.10) solo si el determinante es cero:

α j1 α j1 2
 α
j1 pH

α j2 α j2 2
α
j 2 pH
0
  
α jpH α jpH 2
 α
jpH pH

(4.11)

Sacando un factor común en cada fila:

1 α j1  α
j1 ( pH 1 )

α j1 j 2 ... jpH 1 α j2 α


j 2 ( pH 1 )
0
  
1 α jpH  α
jpH ( pH 1 )

(4.12)

Este determinante, llamado de Vandermonde, es no nulo [4, 5]. Como


consecuencia de esto la suposición pH d 2t no es válida, y la distancia mínima
del código binario BCH es en consecuencia 2t  1 o mayor. La demostración
referida al determinante de Vandermonde se demora hasta el capítulo siguiente
“Códigos Reed-Solomon”.
El parámetro 2t  1 es la distancia mínima de diseño pero podría suceder que el
código tuviera una distancia mayor que ese valor.
Por otro lado se pueden construir códigos binarios BCH cuya longitud de
palabra sea distinta de 2 m  1 de forma similar a los construidos cumpliendo
con ese valor de longitud de palabra n .
Si β es un elemento de orden n en el campo GF( 2 m ) entonces n es factor
de 2 m  1 . Sea g ( X ) el polinomio binario de grado mínimo que tiene a
β, β 2 ,..., β 2 t como raíces. Sean por otro lado Φ1 ( X ),Φ2 ( X ),...,Φ2 t ( X ) los
polinomios mínimos de β, β 2 ,..., β 2 t respectivamente. Luego:

g( X ) mcm^Φ1 ( X ),Φ2 ( X ),...,Φ2 t ( X )`


(4.13)

164
Capítulo IV: Códigos BCH

Dado que β n 1 , entonces β, β 2 ,..., β 2 t son raíces de X n  1 . Luego el


código cíclico generado por g( X ) es un código de longitud n . Puede probarse
al igual que en el caso de los códigos de longitud n 2 m  1 que el número de
dígitos de control de paridad es no mayor que m y que la distancia mínima del
código es al menos d min t 2t  1 .
En base a lo visto se puede plantear una definición más general de los códigos
BCH CBCH ( n, k ) [4].
Siendo β un elemento de GF( 2 m ) y u 0 un entero no negativo, entonces el
código BCH con distancia de diseño mínima d 0 generado por el polinomio
g( X ) de grado mínimo que tiene como raíces las potencias de β :
β, β n0 1 ,..., β n0 d0 2 , con 0 d i  d 0  1 y siendo Φi ( X ) el polinomio
mínimo de β u0 i y n i su orden:

g( X ) ^ `
mcm Φ1 ( X ),Φ2 ( X ),...,Φd0 2 ( X )
(4.14)

Es generador de un código cíclico, mientras que el código generado tiene una


longitud de palabra n :

n ^
mcm n1 , n2 ,..., nd0 2 `
(4.15)

El código BCH así generado tiene una distancia mínima de al menos d 0 ,


presenta una cantidad máxima de m d 0  1 dígitos de paridad y puede corregir
«d 1»
patrones de hasta « 0 » errores.
¬ 2 ¼

Haciendo u0 1 entones d 0 2t  1 y si β es un elemento primitivo de


m
GF( 2 ) entonces la longitud de palabra del código BCH correspondiente es
n 2 m  1 . En este caso el código BCH CBCH ( n, k ) se denomina primitivo.
Haciendo u0 1 y siendo d 0 2t  1 , si β no es un elemento primitivo de
GF( 2 m ) entonces la longitud de palabra del código BCH correspondiente es
n z 2 m  1 y es el orden de β . En este caso el código BCH se denomina no
primitivo.

165
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Al requerir que las d 0  1 potencias de β sean raíces de g( X ) se garantiza


que el código tenga una distancia de al menos d 0 .

4.3 Decodificación de códigos BCH


Como ya se ha dicho el polinomio código, el polinomio error y el polinomio
recibido tienen la siguiente relación:

r( X ) c( X )  e( X )
(4.16)

Siendo códigos cíclicos y de bloques, los códigos BCH se pueden decodificar


empleando la decodificación por síndrome recordando que si un polinomio es
polinomio código entonces c( α i ) 0 :
Como se sabe:

c $ HT 0
(4.17)

si esta expresión se emplea junto a la de evaluación del síndrome:

S ( s0 , s1 ,.., s2 t ) r $ HT

Se obtiene el conjunto de condiciones:

si r(α i ) e( α i ) r0  r1 ( α i )  ...  rn 1 ( α i ) n 1
(4.18)

con 1 d i d 2t

Que permiten la evaluación de la componente i -ésima del vector síndrome


reemplazando la raíz α i en el polinomio recibido r ( X ) .
Los elementos componentes del vector síndrome son elementos del campo
GF( 2 m ) . Otro método para evaluar estas componentes es procediendo de la
siguiente manera:
Se divide el polinomio recibido r ( X ) por Φi ( X ) , que es el polinomio mínimo
que corresponde a D i . Esto implica que Φi ( α i ) 0 . Entonces:

166
Capítulo IV: Códigos BCH

r ( X ) ai ( X ))i ( X )  bi ( X )
(4.19)

o bien y reemplazando por α i :

r(α i ) bi ( α i )
(4.20)

Ejemplo 4.3:

Para el código de bloques, binario y cíclico BCH CBCH (15 ,7 ) capaz de corregir
cualquier patrón de error de hasta t 2 , si el vector recibido es:

r 1000000010 00000 que en forma polinómica es r ( X ) 1  X 8


determine el vector de síndrome;

s1 r(α ) 1  α 8 α2
s2 r(α 2 ) 1  α α4
s3 r(α 3 ) 1  α9 1 α  α3 α7
s4 r(α 4 ) 1  α 2 α8

4.4 Polinomios de localización de error y de evaluación de


error
Reordenando la expresión (4.16) La relación entre los polinomios c( X ) , r ( X )
y e( X ) es:

c( X ) r ( X )  e( X )
(4.21)

Los coeficientes de estos polinomios pertenecen al campo GF( 2 ) . En lo que


sigue se hace la suposición de que el vector error posee τ elementos no nulos
representado un patrón de error de τ errores ubicados en posiciones
X j1 , X j 2 ,..., X jτ , siendo 0 d j1  j 2  ...  jτ d n  1 .

Se define entonces el número de localización de error:

167
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

βl α jl donde l 1,2,3,...,τ
(4.22)

El calculo de los síndromes es el mismo que el ya planteado y se realiza


evaluando r ( X ) en las raíces α i con i 1,2,...,2t . Se cumple una vez más
que:

si r(α i ) c( α i )  e( α i ) e( α i )
(4.23)

Surge así un sistema de 2 t ecuaciones:

s1 r(α ) e( α ) e j1 β1  e j 2 β2  ...  e jτ βτ
2 2
s2 r(α ) e( α ) e j1 β12  e j 2 β22  ...  e jτ βτ2

s2t r ( α 2t ) e( α 2 t ) e j1 β12 t  e j 2 β22 t  ...  e jτ βτ2 t
(4.24)

Las variables β1 , β2 ,..., βτ son desconocidas. Un algoritmo que resuelva este


conjunto de ecuaciones es un algoritmo decodificador de un código BCH
CBCH ( n, k ) . Las variables desconocidas son las posiciones de error. En general
existen 2 k diferentes soluciones para este sistema pero aquella solución de
patrón de error que tenga el peso mínimo será la verdadera solución, cuando los
errores son aleatorios.
Para la decodificación de códigos cíclicos BCH es conveniente definir los
siguientes dos polinomios:

El polinomio localizador de errores:


W
V ( X ) ( X  D  j 1 )( X  D  j 2 )....( X  D  jW ) –( X  D
l 1
 jl
)

(4.25)
y el polinomio evaluador de errores:

W W
W(X) ¦e –( X  D
l 1
jl
i 1
 ji
)
i zl

(4.26)

168
Capítulo IV: Códigos BCH

Este último polinomio es necesario en el caso no binario ( q t 3 ), ya que en el


caso binario el valor de error es siempre 1.
Se puede demostrar que el valor del error se calcula como:

W ( α  jl )
e jl
σ' ( α  jl )
(4.27)

siendo σ' ( X ) la derivada de σ ( X ) .

Los polinomios σ ( X ) y W ( X ) son primos relativos, ya que por la propia


definición no tendrán raíces comunes. Ciertamente si α  jh es raíz de σ ( X )
entonces:

W W W
W (D  jh
) ¦ e – (D
l 1
jl
i 1
 jh
D  ji
) e jh – (D  jh  D  ji ) z 0
i 1
i zl i zl

Por otra parte el polinomio derivado σ' ( X ) es igual a:

W W
V'(X ) ¦ – ( X  D  ji )
l 1 i 1
i zl
(4.28)
reemplazando en el valor de la raíz D  jh
:

τ
σ ' ( α  jh ) – ( α  jh  α  ji )
i 1
i zh

(4.29)

De las ecuaciones anteriores se obtiene que:

W ( α  jh )
e jh
σ' ( α  jh )

169
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

El conocimiento de los polinomios σ ( X ) y W ( X ) permite realizar la


evaluación de las posiciones de error y luego la del valor del error por empleo
de la ecuación (4.27).

Adicionalmente se define el polinomio síndrome de grado gr ( S( X )) d 2t  1


como:

2t 1
S( X ) s1  s2 X  s3 X 2  ...  s2t X 2t 1 ¦s
j 0
j 1 Xj

(4.30)

la condición S( X ) 0 indica que el polinomio recibido pertenece al código.

4.5 La ecuación clave


Existe una relación entre los polinomios σ ( X ) , S( X ) y W ( X ) que se
denomina la ecuación clave, y cuya resolución es un método de decodificación
de un código BCH.
La relación entre los citados polinomios la determina el siguiente teorema:

Teorema 4.1: Existe un polinomio μ( X ) tal que los polinomios σ ( X ) , S( X )


y W ( X ) satisfacen la ecuación clave:

V ( X )S( X ) W ( X )  P( X ) X 2t
(4.31)

Esto equivale a decir que:

^σ( X )S( X )  W ( X ) ` mod( X 2t ) 0


(4.32)

De la definición del polinomio S( X ) :

¦ ( ¦ e jiD ji( j 1 ) ) X j ¦ e jiD ji ¦ D ji X


2 t 1 2 t 1 W W 2 t 1
j
S( X ) ¦ s j 1 X j
j 0 j 0 i 1 i 1 j 0

170
Capítulo IV: Códigos BCH

W
D X  1 e D X
ji 2t W ji 2t
1
S( X ) ¦ e jiD ji D X  1 ¦ X  D
ji ji  ji
i 1 i 1
(4.33)

Luego;

σ ( X )S( X )
τ
¦ e ji
α X ji 2t
1
– ( X  α  jl ) ¦ e ji ª«¬ α ji X
τ τ 2t τ
 1º– ( X  α  jl )
i 1 X  α  ji l 1 i 1
»¼ l 1
l zi

τ τ
ªτ τ
º
« ji ( 2 t )  jl »
¦ e ji – ( X  α  jl
)  «¦ e ji α – ( X  α )» X 2 t
i 1 l 1 i 1 l 1
l zi «¬ l zi »¼
W ( X )  μ( X ) X 2 t
(4.34)

La ecuación clave ofrece un método de decodificación para códigos BCH. Uno


de los métodos de solución para esta ecuación es el algoritmo Euclidiano, que
no solo es aplicable a números, sino también a polinomios. Un detalle mayor
acerca de la ecuación clave se presentará en el capítulo “Códigos Reed
Solomon”. Por otra parte, esta ecuación esta también relacionada con otros
métodos de decodificación que son aplicables a la decodificación de los códigos
BCH, como a los Reed-Solomon [5]. Entre ellos se encuentra el algoritmo de
Berlekamp-Massey [8, 9], que será descripto en detalle en el capítulo 5.

4.6 Decodificación de códigos BCH utilizando el algoritmo


de Euclides
Dados dos números o polinomios A y B el algoritmo Euclidiano permite
conocer el máximo común divisor entre A y B , C MCD( A,B ) . El algoritmo
también permite encontrar dos polinomios o números enteros S y T tales que:

C SA  TB
(4.35)

171
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Se pretende emplear este algoritmo para resolver la ecuación clave que


involucra a los polinomios anteriormente definidos:

 μ( X ) X 2 t  σ( X )S( X ) W ( X )
(4.36)
2t
donde X hace las veces de A y el polinomio síndrome S( X ) hace las veces
de B .

4.6.1 Algoritmo de Euclides

Sean A y B dos números enteros o polinomios de forma que A t B o


equivalentemente gr ( A ) t gr ( B ) . La condición inicial es que r 1 A y
r0 B . Si se realiza un cálculo recursivo se tendrá en la recursion i -ésima que
r i se obtiene como residuo de la división de ri 2 por ri 1 , es decir que:

ri 2 qi ri 1  ri
(4.37)

siendo ri  ri 1 o bien para los polinomios gr ( ri )  gr ( ri 1 ) .


La ecuación recursiva es entonces:

ri ri 2  q i ri 1
(4.38)

Se obtienen también expresiones para s i y t i que hacen que

ri si A  t i B
(4.39)

Siendo la ley recursiva igualmente válida para ellos:

si s i 2  q i s i 1
ti t i 2  q i t i 1
(4.40)

172
Capítulo IV: Códigos BCH

Luego:

r 1 A (1 )A  ( 0 )B
r0 B ( 0 )A  (1 )B
(4.41)

Se establecen como condiciones iniciales:

s 1 1, t 1 0 (4.42)

Ejemplo 4.4: aplique el algoritmo Euclidiano a los números A 112 y


B 54 .

112 / 54 2 con resto 4 . Luego:

4 112  ( 2 )x54
r1 r 1  q1 r0
r 1 112 , r0 54 , r1 4

54 / 4 13 con resto 2 .
2 54  ( 13 )x 4
r2 r0  q 2 r1

r2 2

4/ 2 2 con resto 0 .

Luego 2 es el MCD entre 112 y 54 .

Este algoritmo se puede implementar por medio de una tabla:

i ri ri 2  q i ri 1 qi si s i 2  q i s i 1 ti t i 2  q i t i 1
1 112 1 0
0 54 0 1
1 4 2 1 2
2 2 13  13 27

Tabla 4.1 Algoritmo de Euclides para calcular el MCD entre dos números enteros

173
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

El MCD es 2 porque el próximo resto en el proceso de la tabla es 0 . En cada


paso de la recursión sucede que:

112 (1 )x112  ( 0 )x54


54 ( 0 )x112  (1 )x54
4 (1 )x112  ( 2 )x54
2 ( 13 )x112  ( 27 )x54

Se aplica ahora este procedimiento a la ecuación clave:

 μ( X ) X 2 t  σ( X )S( X ) W ( X )

El método opera sobre los polinomios X 2t y S(X) y la recursión i -ésima tiene


la forma:

ri (X) s i (X)X 2t  t i (X)S(X)


(4.43)

Multiplicando por una constante λ la ecuación (4.43):

λri (X) λs i (X)X 2t  λt i (X)S(X) -W(X) - μ(X)X 2t  σ( X )S( X )


(4.44)

siendo gr ri ( X ) d t  1
(4.45)

Entonces:

W(X)  λr i (X)
(4.46)
σ(X) λt i (X)

donde λ es una constante que hace que el polinomio sea mónico.

Ejemplo 4.5: Para el código de bloques, cíclico y binario BCH CBCH (15 ,7 ) con
t 2 , si el vector recibido es r 1000000010 00000 , que en forma

174
Capítulo IV: Códigos BCH

polinómica es r ( X ) 1  X 8 , (caso presentado en el ejemplo 4.3), determine


por el algoritmo de Euclides la palabra decodificada correspondiente.

De acuerdo al patrón recibido:

r( X ) 1  X 8

Las componentes del vector síndrome fueron calculadas en el ejemplo 4.3 y


son:

s1 r(α ) α2
s2 r(α 2 ) α4
s3 r(α 3 ) α7
s4 r(α 4 ) α8

Luego el polinomio síndrome adopta la forma:

S( X ) α 8 X 3  α 7 X 2  α 4 X  α 2

Ha de recordarse que al operar sobre un campo de Galois, el inverso aditivo de


un elemento es ese mismo elemento (ver Apéndice B), con lo que los signos “-“
en las ecuaciones (4.36), (4.44) y (4.46) pasan a ser signos “+”. Se aplica
entonces el método de Euclides conformando la siguiente tabla:

i ri ri 2  q i ri 1 qi ti t i 2  q i t i 1
1 X 2t X4 0
0 S( X ) α 8 X 3  α7 X 2  α 4 X  α 2 1
1 α 4 X 2  α 13 X  α 8 α7 X  α 6 α7 X  α 6
2 α5 α4 X  α8 α 11 X 2  α 5 X  α 3

Tabla 4.2 Algoritmo de Euclides para la ecuación clave, ejemplo 4.5.

Si la columna ri ( X ) tiene grado menor que la columna t i ( X ) se detiene el


proceso recursivo. Se tiene entonces:

ri ( X ) α5

175
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

ti ( X ) α 11 X 2  α 5 X  α 3

Luego se procede a multiplicar por un factor λ  GF( 2 4 ) para convertir a


t i ( X ) en un polinomio mónico. Este valor de λ es λ α 4 . Luego
W( X )  λri ( X ) λri ( X ) α 4α 5 α9

σ( X ) λt i ( X )
α 4 α 11 X 2  α 5 X  α 3 X 2  α 9 X  α7

Se procede a la búsqueda de las raíces del polinomio localizador de errores por


reemplazo de los elementos del campo en ese polinomio, algoritmo denominado
de Chien [6]. Una forma simple de determinar las raíces del polinomio σ ( X )
es reemplazando la variable X por 1, α , α 2 ,..., α n 1 siendo n 2 m  1 . Como
α n 1 y α h α n h entonces si α h es raíz del polinomio σ ( X ) , α n h es el
correspondiente número de localización de error, que define al dígito rn h como
un dígito con error. En el caso binario esta información es suficiente para
realizar la corrección ya que habiendo solo dos valores posibles, rn h será
cambiado en valor para corregirlo.
Aplicando el algoritmo descripto para el caso del ejemplo analizado se
encuentra que las raíces del polinomio son α  j1 1 y α  j 2 α 7 . Luego como:

α0 α  j1 α 0

j1 0
y
α7 α  j 2 α 8

j2 8

Los errores se encuentran en posiciones j1 0 y j 2 8 . Para establecer el


valor de los errores se necesita conocer el polinomio derivado:

σ' ( X ) α9

176
Capítulo IV: Códigos BCH

En realidad, el valor de los errores es previamente conocido, dado que operando


con coeficientes en el campo binario GF( 2 ) , dicho valor de error debe ser 1 .
Se puede verificar sin embargo que esto es cierto, aplicando la expresión (4.27):

W ( α  j1 ) W(α0 ) α9
e j1 1
σ' ( α  j1 ) σ' ( α 0 ) α9

W(α  j2 ) W (α7 ) α9
e j2 1
σ' ( α  j 2 ) σ' ( α 7 ) α9

El polinomio error es entonces:

e( X ) X0  X8 1 X8

Se corrige el vector recibido resultando como consecuencia que el mensaje


enviado fue la palabra todos ceros.

177
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Bibliografía y Referencias
1. Bose, R. C. and Ray-Chaudhuri, D. K., “On a class of error correcting
binary group codes,” Inf. Control, 3, Págs. 68-79, Marzo 1960.

2. Hocquenghem, A., “Codes correcteurs d´erreurs,” Chiffres, 2, págs. 147-


156, 1959.

3. Reed, I. S. and Solomon, G., “Polynomial codes over certain finite fields,”
J. Soc. Ind. Appl. Math., 8, pags. 300-304, 1960.

4. Lin, S. and Costello, D. J., Jr., Error Control Coding: Fundamentals and
Applications, Prentice Hall, inc. Englewood Cliffs, New Jersey, 1983.

5. Blaum, M., A course on error correcting codes, 2001.

6. Chien, R. T., “Cyclic decoding procedure for the Bose-Chaudhuri-


Hocquenghem codes,”, IEEE Tans. Inf. Theory, IT-10, págs. 357-363,
Octubre 1964.

7. Forney, G. D., Jr., “On decoding BCH codes,” IEEE Trans. Inf. Theory,
IT-11, págs. 59-557, Octubre 1965.

8. Berlekamp, E. R., “On decoding binary Bose-Chaudhuri-Hocquenghem


codes,” IEEE Trans. Inf. Theory, IT-11, pags. 577-580, Octubre 1965.

9. Massey, J. L., “Step-by-step decoding of the Bose-Chaudhuri-


Hocquenghem codes,” IEEE Trans. Inf. Theory, IT-11, pags. 580-585,
Octubre 1965.

10. Sloane, N. J. A. and Peterson, W. W. , The Theory of Error-Correcting


Codes, North-Holland, 1998.

11. Berlekamp, E. R., Algebraic Coding Theory, McGraw-Hill, Ney York,


1968.

12. Perterson, W. W. and Wledon, E. J., Jr., Error-Correcting Codes, Segunda


Edición, MIT Press. Cambridge, Mass., 1972

13. Wicker, S. B. and Bhargava, V. K., Reed-Solomon Codes and Their


Applications.

178
Capítulo IV: Códigos BCH

14. Shankar, P., “On BCH codes over arbitrary integer rings,” IEEE Trans.
Inform. Theory, vol. IT-25, pags. 480-483, pags. 965-975, Julio 1979.

179
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Problemas

4.1) Verifique que el polinomio p( X ) 1  X 2  X 5 es irreducible. Este


polinomio puede también ser un polinomio primitivo. ¿Cuáles son las
condiciones a cumplir para que eso ocurra?

4.2) Construya el campo finito o de Galois GF( 2 5 ) generado por


p( X ) 1  X 2  X 5 mostrando una tabla con las representaciones
polinomiales y binarias de cada elemento del campo.

4.3) Determine los polinomios mínimos de los elementos del campo de


Galois GF( 2 5 ) construido en el problema 4.2.

4.4) Determine el polinomio generador de un código binario BCH


CBCH ( 31,16 ) capaz de corregir patrones de error de hasta t 3 errores.

4.5) Determine el polinomio generador de un código BCH binario de


longitud de código n 31 capaz de corregir patrones de error de hasta
t 2 errores. Determine también el valor de k y la distancia de Hamming
mínima del código.

4.6) Un código BCH binario y cíclico CBCH ( n, k ) tiene una longitud de


código n 15 y un polinomio generador

g( X ) ( X  1 )(1  X  X 4 )(1  X  X 2  X 3  X 4 ) :

a) ¿Cuál es la distancia mínima del código?


b) Describa un algoritmo de decodificación para este código y describa su
operación por medio de un ejemplo.
Nota: Utilice el campo de Galois GF )( 2 4 ) mostrado en el Apéndice B, Tabla
B.4

4.7) Muestre que el código BCH binario y cíclico de longitud mas corta que
tiene como polinomio generador

g( X ) (1  X  X 4 )(1  X  X 2  X 3  X 4 ) :

180
Capítulo IV: Códigos BCH

a) Tiene longitud de código n 15 y distancia de Hamming mínima


d min 5 ;
b) Describa el decodificador Meggitt u otro decodificador algebraico aplicable
al código del inciso a);
c) Utilice el método de decodificación que ha descripto en el inciso b) para
mostrar como es posible corregir errores en las dos primeras posiciones del
vector recibido.

4.8) Utilice la cota de códigos BCH para mostrar que la distancia de


Hamming mínima de un código cíclico con longitud de bloque n 7 y
polinomio generador g( X ) ( X  1 )(1  X  X 3 ) es 4;
a) ¿Cuál es la distancia de Hammming mínima si n 14 y por que?

4.9) Un código BCH binario y cíclico CBCH (15,7 ) puede corregir patrones
de hasta t 2 errores, y tiene un polinomio generador
g( X ) (1  X  X 4 )(1  X  X 2  X 3  X 4 ) 1  X 4  X 6  X 7  X 8
, que opera sobre el campo de Galois GF( 2 4 ) (Apéndice B, Tabla B.4).
Suponga que el vector recibido es r 1000000010 00000 y
decodifíquelo utilizando los algoritmos de Berlekamp-Massey y de Euclides.

4.10) Muestre que para un código cíclico de corrección de errores dobles:

s3 s12  s12 βl  s1 βl2 donde βl α jl

Luego encuentre los errores en el vector recibidlo


r 0001001111 11011 teniendo en cuenta que la palabra de mensaje fue
codificada usando el código BCH binario y cíclico CBCH (15 ,7 ) generado
por g( X ) (1  X  X 4 )(1  X  X 2  X 3  X 4 ) .

4.11) Para el código BCH binario CBCH ( 31,21) obtenido en el problema


4.5, realice la decodificación de los polinomios recibidos:
a) r1 ( X ) X 7  X 30 ;
b) r2 ( X ) 1  X 17  X 28 .

181
5
Códigos Reed-Solomon
Los códigos Reed-Solomon (RS) son una familia de códigos de bloques
lineales, no-binarios y cíclicos [1]. En el capítulo anterior fueron presentados
los códigos BCH, que pueden ser generalizados si operan sobre un campo de
Galois GF( q ) donde q es una potencia cualquiera de un número primo
m
p primo , q p primo , siendo q un entero positivo [2, 3]. A este tipo de códigos se
los suele llamar q -arios debido a que en su alfabeto existen q elementos
tomados del campo GF( q ) . Esta denominación lo diferencia de los códigos
binarios donde las palabras de código poseen elementos del campo GF( 2 ) . Por
esta razón se los llama también códigos no-binarios.
Todos los conceptos y propiedades vistas para los códigos BCH son válidos
para estos códigos no binarios.

5.1 Introducción
Un código de bloques Cb ( n, k ) definido sobre GF( q ) es un subespacio de
dimensión k del espacio vectorial Vn de los vectores de n componentes
definidos sobre GF( q ) .
Un código q -ario cíclico sobre GF( q ) está generado por un polinomio de
grado n  k con coeficientes de GF( q ) que divide a X n  1 . La codificación
de los códigos q -arios es similar a la de los binarios BCH. La generalización de
los códigos binarios BCH se realiza de la siguiente forma: Para dos números
enteros positivos cualesquiera v y t existe un código q -ario de longitud
n q v  1 que es capaz de corregir patrones de t o menos errores que se
construye con al menos 2vt elementos de control de paridad. Siendo α un
elemento primitivo del campo de Galois GF( q v ) , el polinomio generador de
un código q -ario de corrección de t errores BCH es el polinomio de menor
grado con coeficientes tomados de GF( q ) para el cual α , α 2 ,..., α 2 t son
raíces. Si φi ( X ) es el polinomio mínimo de α i :

183
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

g( X ) mcm^φ1 ( X ),φ2 ( X ),...,φ2 t ( X )`


(5.1)

El grado de cada polinomio mínimo es v o menor. El grado del polinomio


g( X ) es a lo sumo 2vt con lo que el número máximo de elementos de control
de paridad es 2vt . Para q 2 esta definición corresponde a los ya presentados
códigos binarios BCH. Una clase muy especial de códigos BCH q -arios se da
para v 1 y son los llamados códigos Reed-Solomon en honor a sus
descubridores.
Un código de corrección Reed-Solomon de t errores definido sobre el campo
GF( q ) tiene como parámetros:

Longitud de palabra n q 1
Elementos de control de paridad n  k 2t
Distancia mínima d min 2t  1
Capacidad de corrección de t errores por palabra de código

Siendo α un elemento primitivo de GF( q ) se cumple que α q 1 1 . Un


código de longitud n q  1 y dimensión k es un código cíclico generado por:

g( X ) X  α X  α 2 ... X  α n k X  α X  α 2 ... X  α 2 t
g0  g1 X  g2 X 2  ...  g2 t 1 X 2 t 1  g2 t X 2 t
(5.2)

La diferencia en la definición de los códigos RS respecto de los BCH es que los


coeficientes g i pertenecen al campo extendido GF( q ) . Por otra parte los
polinomios mínimos son ahora de la forma más simple posible, es decir,
Φi ( X ) X  α i .
En particular se dará más atención a los códigos definidos sobre campos de
Galois de la forma GF( 2 m ) .
Cada termino α i es raíz del polinomio X  α i de manera que X  α i divide a
X n  1 . En este sentido g( X ) divide a X n  1 y por lo tanto es un polinomio
generador de un código cíclico con elementos tomados de GF( q ) . En realidad,
y dado que las operaciones en el campo de Galois son en módulo- q , decir que
α i es raíz del polinomio X  α i es lo mimo que decir que es raíz del polinomio

184
Capítulo V: Códigos Reed-Solomon

X  α i , dado que en un campo de Galois, el inverso aditivo de un elemento es


ese mismo elemento.
Un modo equivalente de definir a los códigos RS es decir que se trata del
conjunto de polinomios c( X ) sobre GF( q ) de grado gr ^c( X )` d n  1 que
tienen como raíces a α , α 2 ,..., α n k , o bien que c( X )  CRS si y solo si:

c( α ) c( α 2 ) c( α 3 ) ... c( α 2 t ) 0 siendo gr ^c( X )` d n  1 .


(5.3)

Esta definición está de acuerdo con que el polinomio generador tiene a


α ,α 2 ,..., α n k como raíces debido a que cualquier polinomio código será
múltiplo del polinomio generador. Entonces si:

c( X ) c0  c1X  ...  cn 1X n 1 CRS y siendo 1 d i d n  k se cumple


que:

c(D i ) c0  c1D i  ...  cn 1 D i n 1


c0  c1D i  ...  cn 1D ( n 1)i 0
(5.4)

5.2 Capacidad de corrección de error de un código RS.


Determinante de Vandermonde
El producto interno del vector de código c0 ,c1 ,..., c n1 con el vector
1,α ,αi 2i
,..., α ( n 1 )i

es cero, siendo 1 d i d n  k . Estos vectores son entonces
las filas de la matriz de paridad H :

ª1 α α2 α3  α n 1 º
«
«1 α
2
α 2 2
α 2 3
 α
2 n 1 »
»
H «1 α 3
«
α 3 2
α 3 3
 α
3 n 1 »
»
«     »
«1 α n k
¬ α α
n k 2 n k 3
 α
n  k n 1 »
¼
(5.5)

En esta matriz, cualquier grupo de n  k o menos columnas es linealmente


independiente. Para demostrar esto considérese un conjunto de n  k columnas

185
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

ij
i1 , i 2 ,..., i n k con 0 d i1  i 2  ..  i n k d n  1 . Se denomina α j α donde
1 d j d n  k . Las columnas i 1 , i 2 ,..., i n k son linealmente independientes si y
solo si el determinante es no nulo [2]:

α1 α2  α n k
α1 2
α 2 2
 α n k 2
z0
  
α1 n k α 2 n k  α n k n k
(5.6)

este determinante se puede convertir en:

1 1  1
D1 D2  Dn k
D1D 2...D n  k D1D 2...D n  kV (D1,D 2,..., D n  k ) z 0
  
D1 n k 1 D 2 n k 1  D n k n k 1

(5.7)

donde V ( α1 , α 2 ,..., α n k ) es el denominado determinante de Vandermonde.


Dado que los α i z 0 entonces será suficiente probar que si
V ( α1 , α 2 ,..., α n k ) z 0 las n  k columnas de la matriz H son linealmente
independientes.
Para n  k 2 se tiene:

1 1
α 2  α1 z 0
α1 α2

si se construye el polinomio:

186
Capítulo V: Códigos Reed-Solomon

1 1  1
X α2  α n k
f( X )
  
X n  k 1
α 2 n  k 1
 α n k n k 1
(5.8)

se puede ver que α i es raíz del polinomio si 2 d i d n  k dado que se


repetirán dos columnas de este determinante al hacer el reemplazo de X por α i
de forma que f ( α i ) 0 . Entonces:

n k
 1 c– D j  X
n  k 1
f ( X ) c( X  D 2 )( X  D3 )...( X  D n k )
j 2
(5.9)
donde c es una constante. Por otro lado también sucede que:

f ( α1 ) V ( α1 , α 2 ,..., α n k )
(5.10)

y por propiedades de los determinantes sucede que la constante c es igual a:

1 1  1
α2 α3  α n k
c  1 n k 1  1 n k 1V ( α 2 , α 3 ,..., α n k )
  
α 2 n k 2 α 3 n k 2  α n k n k 2

(5.11)
Por inducción se obtiene entonces el valor de c :

n k
c  1 n k 1 – D j  Di
2d i  j d n  k
(5.12)

Reemplazando X por α1 y el valor de la constante c de la ecuación anterior:

187
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

V ( α1 , α 2 ,..., α n k ) – α j  αi
1di  j dn k
(5.13)

Como los α i α ji y siendo D elemento primitivo de GF( q ) entonces se


cumple siempre que α i z α j si i z j con lo cual V ( α1 ,α 2 ,..., α nk ) z 0 . Dado
que esto es cierto, entonces existen n  k  1 columnas que pueden ser
linealmente dependientes, es decir, que sumadas dan el vector nulo, con lo cual
se concluye que un código RS CRS ( n, k ) tiene como distancia mínima
d min n  k  1 2t  1 .
Los códigos RS son de máxima separación en distancia, dado que el límite de
Singleton d min d n  k  1 se cumple con la igualdad, d min n  k  1 .

Ejemplo 5.1: Configure el campo de Galois GF( 8 ) generado por el polinomio


irreducible pi ( X ) 1  X 2  X 3 .

Siendo pi ( α ) 1  α 2  α 3 0 , entonces α 3 1  α 2 . El campo GF( 2 3 )


se puede construir entonces haciendo uso de la relación anterior. Así por
ejemplo α 4 = αα 3 = α(1 + α 2 ) = α + α 3 = 1 + α + α 2 .

Representación Exp. Representación Polinómica Representación


binaria
0 0 0 0 0
1 1 1 0 0
α α 0 1 0
α2 α 2
0 0 1
α3 1 +α 2
1 0 1
α4 1 +α +α 2
1 1 1
α5 1 +α 1 1 0
α6 α +α 2
0 1 1

Tabla 5.1 Campo de Galois GF( 2 3 ) generado por pi ( X ) 1 X2  X3

Este campo puede compararse con el generado por pi ( X ) 1  X  X 3 ya


descripto en el Apéndice B. Lo que se modifica es la representación polinómica
y binaria (vectorial) de cada elemento.

188
Capítulo V: Códigos Reed-Solomon

Ejemplo 5.2: Configure el código RS CRS (7 ,5 ) sobre el campo de Galois


GF( 2 3 ) que emplea el polinomio primo pi ( X ) 1  X 2  X 3 . El código es
capaz de corregir t 1 error. Luego el polinomio generador se construye como:

g( X ) ( X  α )( X  α 2 ) X 2  ( α  α 2 )X  α 3 X 2 α 6 X  α 3

5.3 Forma sistemática de un código RS


Los códigos generados por el polinomio generador g( X ) son códigos RS
CRS ( n, n  2t ) que son cíclicos y están constituidos por los polinomios c( X )
de grado n  1 o menor. Los coeficientes de estos polinomios se toman del
campo GF( 2 m ) y los polinomios código son múltiplos de g (X ) conteniendo
por lo tanto todas sus raíces.

Siendo el mensaje de la forma:

m( X ) m0  m1 X  ...  mk 1 X k 1
(5.14)

en el mensaje los coeficientes también son tomados del campo GF( 2 m ) . La


codificación sistemática se realiza de la misma manera que en códigos BCH
binarios, es decir se opera obteniendo el polinomio resto de la división de
X nk m( X ) por g (X ) :

X n  k m( X ) q( X )g( X )  p( X )
(5.15)

Ejemplo 5.3: Obtenga el vector codificado en forma sistemática para el código


del ejemplo 5.2 si el mensaje a enviar es 001 101 111 010 011 .

El mensaje se representa de manera polinómica:

m( X ) α 2  α 3 X  α 4 X 2  αX 3  α 6 X 4

189
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

se obtiene

X n k m( X ) X 7 5 m( X ) >
X 2 α 2  α 3 X  α 4 X 2  αX 3  α 6 X 4 @
α 2 X 2  α 3 X 3  α 4 X 4  αX 5  α 6 X 6
En forma sistemática:

D 6 X 6  DX 5  D 4 X 4  D 3 X 3  D 2 X 2 | X 2 D6X D3
__________ _____
D6X 6 D5X 5 D2X 4 D6X 4  X 3 D3X 2 D2X
____________________________
X 5 D5X 4 D3X 3 D2X 2
X 5 D6X 4 D3X 3
__ ____________________
D 3 X 4  0X 3  D 2 X 2
D3X 4 D2X 3 D6X 2
__________ _________
D 2 X 3  DX 2
D 2 X 3  DX 2  D 5 X
__________ ________
p( X) D5X

El polinomio codificado es entonces:

c( X ) α 5 X  α 2 X 2  α 3 X 3  α 4 X 4  αX 5  α 6 X 6

que en formato binario se representa por:

000 110 001 101 111 010 011

190
Capítulo V: Códigos Reed-Solomon

Se puede verificar que esta es una palabra de código o bien un polinomio


código, reemplazando en c( X ) a X por α y α 2 :

c( α ) α6  α4  α6  α  α6  α5 α  α5  α4  α6 1 1 0
2 6 2 5 4 4 6 2 5
c( α ) 1  α  α  α  α  α 1α α α α4  α4 0

5.4 Decodificación por síndrome


Como ya se ha dicho el polinomio

c( X ) c 0  c1 X  ...  c n 1 X n 1

es transmitido y se convierte en el polinomio recibido

r(X) r0  r1X  ...  rn 1X n 1

que tiene relación con el polinomio error y el polinomio código:

e( X ) e0  e1 X  ...  en 1 X n 1

r( X ) c( X )  e( X )
(5.16)

Los coeficientes de estos polinomios pertenecen al campo GF( 2 m ) . Se supone


que el vector error posee τ elementos no nulos representando un patrón de τ
errores ubicados en posiciones X j1 , X j2 ,..., X jτ , siendo
0 d j1  j 2  ...  j τ d n  1 .
En el caso de la codificación no binaria las palabras de código y los patrones de
error están constituidos por elementos del campo GF( 2 m ) . Por esta razón y
para corregir el evento de error no solo hacen falta conocer la posición sino
también el valor del error, que será uno cualquiera de los elementos del campo
GF( 2 m ) .
Se vuelve a definir entonces el número de localización de error:

191
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

βi α ji donde i 1,2,3,...,τ
(5.17)

El cálculo de los síndromes es el mismo que el ya planteado y se realiza


evaluando r ( X ) en las raíces α i con i 1,2,...,2t . Se cumple una vez más
que:

r(α i ) c( α i )  e( α i ) e( α i )
(5.18)

Surge así un sistema de ecuaciones:

s1 r(α ) e( α ) e j1 β1  e j2 β2  ...  e jτ βτ
s2 r(α2 ) e( α 2 ) e j1 β12  e j2 β22  ...  e jτ βτ2

s2 t r ( α 2t ) e( α 2 t ) e j1 β12 t  e j2 β22 t  ...  e jτ βτ2 t
(5.19)

Para el caso de los códigos RS CRS ( n, n  2 ) con capacidad de corrección


t 1 error, el cálculo de los síndromes involucra a dos ecuaciones que tienen
una solución medianamente simple:

s1 r(α ) e( α ) e j1 β1 e j1 α j1
s2 r(α2 ) e( α 2 ) e j1 β12 e j1 α 2 j1
(5.20)

luego:

e j1 α 2 j1 s2
j1
α j1 ;
e j1 α s1
s2
s1 e j1 α j1 e j1
s1
(5.21)
s12
e j1
s2

192
Capítulo V: Códigos Reed-Solomon

Se pueden calcular tanto la posición de error como el valor del mismo ya que
hay dos ecuaciones con dos incógnitas.

Ejemplo 5.4: Para el caso del código RS del ejemplo 5.3 supóngase que el
vector recibido es

r 001 101 111 111 011 r 0 α 5 α 2 α 3 α 4 α 4 α 6 . Calcule la
posición y el valor del error que se produjo en la transmisión.

s1 r(α ) α6  α4  α6  α  α2  α5 α2  α6 α
2 6 2 5 4 4 6
s2 r ( α ) 1  α  α  α 1  α 1α α

s2 α6
α j1 α5
s1 α

s12 α2
e j1 α 4 α3
s2 α6
por lo tanto el polinomio de error es :

e( X ) α3 X5

c( X ) e( X )  r ( X ) α 5 X  α 2 X 2  α 3 X 3  α 4 X 4  ( α 4  α 3 )X 5  α 6 X 6
α 5 X  α 2 X 2  α 3 X 3  α 4 X 4  αX 5  α 6 X 6

5.5 Algoritmo de Euclides. Polinomios de localización y


evaluación de error
Dado que es necesario no solo conocer la posición sino también el valor del
error, se definen los siguientes dos polinomios [2, 3]:

El polinomio localizador de errores:

τ
σ( X ) ( X  α  j1 )( X  α  j2 )...( X  α  jτ ) –( X  α  j l
)
l 1
(5.22)
y el polinomio evaluador de errores:

193
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

τ τ
W( X ) ¦ e j –( X  α  j
l
i
)
l 1 i 1
i zl

(5.23)

Se puede demostrar que el valor del error se calcula como:

W ( α  jl )
e jl
σ' ( α  j l )
(5.24)

siendo V ' ( X ) la derivada de σ ( X ) .

Los polinomios σ ( X ) y W ( X ) son primos relativos, ya que por la propia


definición no tendrán raíces comunes. Ciertamente si α  j h es raíz de σ ( X )
entonces:

τ τ τ
W ( α  jh ) ¦ e j –( α  j
l
h
 α  ji ) e jh – ( α  j h  α  j i ) z 0
l 1 i 1 i 1
i zl i zl

Por otra parte el polinomio derivado σ' ( X ) es igual a:

τ τ
σ' ( X ) ¦ –( X  α  j i
)
l 1 i 1
i zl

(5.25)
 jh
reemplazando en el valor de la raíz α :

τ
σ ' ( α  jh ) –( α  j h
 α  ji )
i 1
i zh

(5.26)

De las ecuaciones anteriores se obtiene que:

W ( α  jh )
e jh
σ' ( α  j h )

194
Capítulo V: Códigos Reed-Solomon

El conocimiento de los polinomios σ ( X ) y W ( X ) permite realizar la


evaluación de las posiciones de error y luego la del valor del error, por empleo
de la ecuación anterior.

Adicionalmente se define el polinomio síndrome de grado


gr ( S( X )) d n  k  1 como:

n k 1
S( X ) s1  s 2 X  s 3 X 2  ...  s n k X n k 1 ¦ s j 1 X j
j 0
(5.27)

de forma que para decir que para que el polinomio recibido pertenezca al código
Reed-Solomon, r ( X )  CRS ( n, k ) se tendrá que cumplir que S( X ) 0 .
Al igual que en el caso de los códigos binarios BCH, existe una relación entre
los polinomios σ ( X ) , S( X ) y W ( X ) que se denomina la ecuación clave, y
cuya resolución es un método de decodificación de un código RS.
La relación entre los citados polinomios la determina el siguiente teorema:

Teorema 5.1: Existe un polinomio μ( X ) tal que los polinomios σ ( X ) , S( X )


y W ( X ) satisfacen la ecuación clave:

σ( X )S( X ) W ( X )  μ( X ) X n k
(5.28)

La demostración de este teorema fue hecha en el capítulo 4 para los códigos


binarios BCH.

Como un ejemplo considérese la familia de códigos RS CRS ( n, n  4 ) que


posee una capacidad de corrección sobre patrones de error de t 2 o menos
errores. Tales errores se encuentran en posiciones:

0 d j1  j 2 d n  1

El polinomio recibido se evalúa en las raíces del sistema para dar como
resultado las 4 ecuaciones con 4 incógnitas que se dan en este caso:

195
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

s1 r(α ) e( α ) e j1 α j1  e j2 α j2
s2 r(α 2 ) e( α 2 ) e j1 α 2 j1  e j2 α 2 j2
s3 r(α 3 ) e( α 3 ) e j1 α 3 j1  e j2 α 3 j2
s4 r(α4 ) e( α 4 ) e j1 α 4 j1  e j2 α 4 j2

el sistema de ecuaciones es no lineal pero tiene solución. Se calculan los


polinomios:

σ( X ) ( X  α  j1 )( X  α  j2 )

W( X ) e j1 ( X  α  j2 )  e j2 ( X  α  j1 )

Estos polinomios son co-primos y tienen a 1 como máximo común divisor.


Los ceros de σ ( X ) no son ceros de W ( X ) y no tienen un factor común. La
magnitud de los errores esta dada por;

W ( α  j1 )
e j1
σ' ( α  j1 )

W ( α  j2 )
e j2
σ' ( α  j2 )

σ ' ( X ) ( X  α  j1 )  ( X  α  j2 )

luego:

σ ' ( α  j1 ) α  j1  α  j2

σ ' ( α  j2 ) α  j2  α  j1

y además;

W ( α  j1 ) e j1 ( α  j1  α  j2 )

196
Capítulo V: Códigos Reed-Solomon

W ( α  j2 ) e j2 ( α  j2  α  j1 )

El polinomio síndrome adopta la forma:

¦ >e j1 α ( j 1 ). j1 @
3 3
S( X ) s1  s 2 X  s 3 X 2  s 4 X 3 ¦ s j 1 X j  e j2 α ( j 1 ). j 2 X j
j 0 j 0

¦ α j2 X
3 i 3 i
e j1 α j1 ¦ α j1 X  e j2 α j2
j 0 j 0

y haciendo uso de la expresión:

τ
X τ 1  1
¦X j X 1
j 0

S( X ) e j1 α j1 α X
j1 4
1
 e j2α j2 α j2
X
4
1
e j1
α 4 j1 X 4  1
 e j2
α 4 j2 X 4  1
α j1 X  1 α j2 X  1 X  α  j1 X  α  j2

e j1 e j2 ª α 4 j1 α 4 j2 º
S( X )    X 4 «e j1  e j2 »
X  α  j1 X  α  j2 ¬ X  α  j1 X  α  j2 ¼

Multiplicando S( X ) por σ ( X ) :

σ( X ).S( X )
e j1 X  α  j2  e j2 X  α  j1  X 4 μ( X ) W ( X )  X 4 μ( X )

quedando expresada de la forma indicada por el teorema de la ecuación clave.

5.6 Decodificación de códigos RS utilizando el algoritmo de


Euclides
Un ejemplo simple de aplicación del algoritmo de Euclides a la factorización de
dos números fue presentado en el capítulo anterior. Se aplica ahora este
procedimiento a la ecuación clave definida para códigos Reed-Solomon:

197
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

σ( X )S( X )  μ( X ) X n-k W( X )

El método opera sobre los polinomios X n k y S(X) y la recursion i -ésima


tiene la forma:
ri (X) s i (X)X n k  t i (X)S(X)
(5.29)

«n  k »
y gr(ri (X)) d « » 1
¬ 2 ¼
(5.30)

Por otra parte:

W(X)  λr i (X)
(5.31)
σ(X) λt i (X)

donde λ es una constante que hace que el polinomio sea mónico.

Ejemplo 5.5: Para un código RS CRS (7,3) sobre GF(8) generado por el
polinomio primo pi ( X ) 1  X 2  X 3 y siendo la palabra recibida
000 000 011 000 111 000 000 determine por el algoritmo de Euclides la
solución y corrección del vector recibido.

De acuerdo al patrón recibido:

r( X ) α6 X 2  α4 X 4

Las componentes del vector síndrome son;

s1 r(α ) α8  α8 0
2 3 5
s2 r(α ) α α α6
s3 r(α3 ) α5  α2 α4
s4 r(α4 ) 1  α6 α4

Luego el polinomio síndrome adopta la forma:

198
Capítulo V: Códigos Reed-Solomon

S( X ) α 6 X  α 4 X 2  α 4 X 3

Se aplica el método de Euclides conformando la tabla 5.2:

i ri ri 2  q i ri 1 qi ti t i 2  q i t i 1
1 X n k
X 4 0
0 S( X ) α 4 X 3  α 4 X 2  α 6 X 1
1 α3 X 2  α2 X α3 X  α3 α3 X  α3
2 α4 X αX  α 5 α4 X 2  α3 X  α5

Tabla 5.2 Algoritmo de Euclides para la ecuación clave, ejemplo 5.3.

Si la columna ri ( X ) tiene grado menor que la columna t i ( X ) se detiene el


proceso recursivo. También sucede que α 4 X divide a α 3 X 2  α 2 X . Se tiene
entonces:

W1 ( X ) α 4 X

σ1 ( X ) α 4 X 2  α 3 X  α 5

Luego se procede a multiplicar por un factor λ  GF( 2 3 ) para convertir a


σ1 ( X ) en un polinomio mónico. Este valor de λ es λ α 3 . Luego:

W ( X ) λW1 ( X ) α 3 α 4 X X
y

σ( X ) λσ 1 ( X ) α 3 α 4 X 2  α 3 X  α 5 X 2  α6 X  α

Se procede a la búsqueda de las raíces del polinomio localizador de errores por


reemplazo de los elementos del campo en ese polinomio, algoritmo denominado
de Chien:

Se encuentra que las raíces del polinomio son α 3 y α 5 . Luego como:

α3 α  j1 α 4

j1 4

199
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

y
α5 α  j2 α 2

j2 2
Los errores se encuentran en posiciones j1 4 y j2 2 . El polinomio:

σ' ( X ) α6

El valor de los errores se determina con las correspondientes expresiones:

W ( α  j1 ) W(α3 ) α3
e j1 α 3 α4
σ' ( α  j1 ) σ' ( α 3 ) α6

W ( α  j2 ) W(α5 ) α5
e j2 α 1 α6
σ' ( α  j2 ) σ' ( α 5 ) α6

El polinomio error es entonces:

e( X ) α6 X 2  α4 X 4

Se corrige el vector recibido resultando como consecuencia que el mensaje


enviado fue la palabra todos ceros.

5.6.1 Etapas en el empleo del Algoritmo de Euclides

Para un código RS CRS ( n, k ) que posee una capacidad de corrección de


patrones de hasta t errores, y siendo entonces 2t d n  k para el polinomio
recibido r ( X ) el algoritmo de decodificación consiste en:

1) Calcular los síndromes s j r ( α j ) , 1 d j d n  k y luego conformar el


n k
polinomio síndrome S( X ) ¦ s j X j 1
j 1
(5.32)
2) Si S( X ) 0 la palabra recibida se considera como válida ya que
pertenece al código.
3) Si sucede que S( X ) z 0

200
Capítulo V: Códigos Reed-Solomon

Se procede a realizar la inicialización:

r1 ( X ) X n k
r0 S( X )
t 1 ( X ) 0

t0 ( X ) 1
i 1
(5.33)
4) Se evalúan los paramentos de la recursión

ri ( X ) ri 2 ( X )  q( X )ri 1 ( X ) y
(5.34)

ti ( X ) t i 2 ( X )  q( X )t i 1 ( X )
(5.35)

Mientras que se cumpla que gr ri ( X ) t t se procede a realizar la recursión


según se indica en el paso 4)

5) Si sucede que gr ri ( X )  t se obtiene un numero λ  GF( 2 l ) tal que


λt i ( X ) es un polinomio mónico, y se calculan:

σ( X ) λt i ( X )
(5.36)

W( X )  λri ( X )
(5.37)

6) Se obtienen las raíces de σ ( X ) por el algoritmo de Chien


7) Se calculan los valores del error según la expresión:

W ( α  jh )
e jh
σ' ( α  j h )

8) Se conforma el patrón de error

201
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

e( X ) e j1 X j1  e j2 X j2  ...  e jl X j l
(5.38)

9) Se verifica la corrección estimando que si;

e( α i ) z r ( α i ) para algún i
(5.39)

se desestima la corrección debido a que hubo un patrón de error que supero la


capacidad del código para corregir.

Si e( α i ) r ( α i ) para todo i
(5.40)

c( X ) r ( X )  e( X )

5.7 Decodificación de códigos BCH y RS con el algoritmo


de Berlekamp-Massey
El algoritmo de Berlekamp-Massey [2, 6, 7] puede ser aplicado para decodificar
los códigos BCH y los códigos Reed-Solomon. En el caso de los códigos
binarios BCH, la magnitud de los errores no es relevante, ya que siendo
diseñados en GF( 2 ) , es suficiente con conocer la localización de los errores
para determinar la corrección de los mismos. Esto es diferente en el caso BCH
no binario y los códigos RS, donde además de tener que determinar la
localización de error se necesita evaluar también la magnitud del mismo.
En el caso de los códigos BCH las ecuaciones (4.16) y (4.18) siguen siendo
aplicables al caso, es decir, la decodificación por síndrome involucra la
evaluación de las 2 t componentes del vector de síndrome:

S = (s1 , s2 , .... , s2t )

En su forma polinómica la evaluación del vector síndrome se realiza


reemplazando la variable X por la diferentes raíces D i , i 1,2,..., 2t , en la
expresión polinómica del vector recibido, r ( X ) .

202
Capítulo V: Códigos Reed-Solomon

El síndrome depende entonces solo del evento de error. Si se supone que el


patrón de error contiene τ errores en las posiciones X j1 , X j2 , …, X jτ
entonces el patrón de error en forma polinómica queda expresado como:

e(X) = X j1 + X j2 + .... + X jτ

Teniendo en cuenta que el síndrome se evalúa dependiendo del patrón de error:

s1 = α j1 + α j2 + ... + α jν
s 2 = ( α j1 )2 + ( α j2 )2 + ... + ( α jτ )2

s 2t = ( α j1 )2t + ( α j2 )2t + ... + ( α jτ )2 t
(5.41)

Los valores de α ji son desconocidos. La resolución de este sistema de


ecuaciones puede considerarse un método de decodificación de los códigos
BCH. La ecuación (5.19) es el caso equivalente para los códigos RS. La
determinación de los valores de α j1 , α j2 , …, α jτ permite conocer las
posiciones de los errores j1 , j 2 ,..., j τ que en el caso de los códigos binarios
BCH son suficientes para determinar la corrección del error. Para resolver este
sistema de ecuaciones se suelen definir los números de localización de errores:

βi α ji

con lo cual el sistema de ecuaciones de síndrome es similar al descrito en la


ecuación (4.24). En rigor de verdad, para el caso de los códigos binarios BCH,
los coeficientes e ji son todos iguales a uno, e ji 1 :

s1 = β1 + β2 + ... + βτ
s 2 = ( β1 )2 + ( β2 )2 + ... + ( βτ )2

s 2t = ( β1 )2t + ( β2 )2t + ... + ( βτ )2 t
(5.42)

Una definición levemente diferente del polinomio localizador de errores es la


siguiente:

203
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

σ BM (X) = (1 + β1 X)(1+ β2 X)...(1 + βτ X)


= σ 0 + σ1 X + ... + σ τ X τ
(5.43)
La raíces de este polinomio son β11 , β21 ,…, βτ1 ,
las inversas de los números
de localización de error. Esta forma es levemente diferente de la que se utilizó
en el desarrollo del método de Euclides. Sin embargo esta forma modificada del
polinomio de localización de error permite una descripción matemática mas
adecuada de las ecuaciones que serán utilizadas en el algoritmo de Berlekamp-
Massey.
Los coeficientes de este polinomio pueden ser expresados de la siguiente
manera:

V0 =1
V 1 = E1 + E 2 + ... + EW
V 2 = E1E 2 + E 2 E3 + ... + EW -1EW

V W = E1E 2 ... EW
(5.44)

Este conjunto de ecuaciones se conoce como el conjunto de funciones


simétricas elementales.
Puede verse entonces que este conjunto de ecuaciones se relaciona con la
ecuación (5.42) de la siguiente forma:

s1 + σ1 = 0
s 2 + σ1 s1 = 0
s 3 + σ1 s 2  σ 2 s1  σ 3 = 0

sτ +1 + σ1 sτ + .... + σ τ 1 s 2 + σ τ s1 = 0
(5.45)

que son las denominadas identidades de Newton. Así por ejemplo,

s2  σ1s1 = ( β1 )2 + ( β2 )2 + ... + ( βτ )2  ( β1 + β 2 + ... + βτ )( β1 + β 2 + ... + βτ ) 0

204
Capítulo V: Códigos Reed-Solomon

dado que en un campo de Galois GF( q ) , los productos cruzados


βi β j  β j βi 0 . De la misma forma pueden deducirse el resto de las
ecuaciones o identidades de Newton.

5.7.1 Algoritmo iterativo de Berlekamp-Massey para la solución del


polinomio localizador de errores

El procedimiento de decodificación Berlekamp-Massey es descripto en forma


aplicada [6, 7]. La demostración de su fundamento puede consultarse en [4]. El
método consiste básicamente en determinar los coeficientes del polinomio
localizador de errores σ1 ,σ 2 ,..., σ τ para que luego puedan encontrarse sus
raíces β1 , β2 ,..., βτ que determinan las posiciones de error. De esta manera,
primero se evalúan las 2 t componentes del vector de síndrome
S = (s1 , s2 , .... , s2t ) , luego se determinan los coeficientes del polinomio
localizador de errores σ1 ,σ 2 ,..., σ τ , cuyas raíces son los números de
localización de error β1 , β2 ,..., βτ . El paso final en un código binario BCH será
el de realizar la corrección de errores en las posiciones calculadas. Para un
código RS (o BCH no binario), se debe previamente a esto, determinar la
magnitud de los errores en esas posiciones.

El algoritmo de Berlekamp-Massey es un método iterativo para determinar los


coeficientes del polinomio localizador de errores σ1 ,σ 2 ,..., σ τ [2]. El primer
paso en el algoritmo de Barlekamp-Massey es la determinación de un
(1 )
polinomio de grado mínimo σ BM ( X ) que satisfaga la primera identidad de
Newton que se ve en la ecuación (5.45). A continuación se verifica si los
coeficientes de este primer polinomio satisfacen la segunda identidad de
Newton. Si este primer polinomio satisface ambas identidades, entonces se hace
(2) (1 )
σ BM ( X ) σ BM ( X ) . De lo contrario se agrega un término de corrección sobre
(1 ) (2)
σ BM ( X ) para dar forma a un polinomio σ BM ( X ) capaz de satisfacer ambas
(3)
identidades. De la misma forma se procede con el polinomio σ BM (X) y
( 2t )
siguientes, hasta el polinomio σ BM ( X ) . Una vez obtenido el polinomio
( 2t )
σ BM ( X ) , se adopta este último como el polinomio de localización de error
σ BM ( X ) , debido a que satisface el total de las identidades de Newton
expresadas en (5.45).
Este procedimiento deriva en la estimación del patrón de error de peso mínimo
que resuelve el conjunto de ecuaciones (5.45) del vector de síndrome. Este será

205
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

el verdadero patrón de error producido si el número de errores en el vector


recibido esta dentro de la capacidad de corrección de error del código, τ d t .

El procedimiento puede ser implementado en forma iterativa. Si el polinomio de


grado mínimo obtenido en la μ -ésima iteración, que es descripto como
(μ)
σ BM ( X ) , y que satisface las primeras μ identidades de Newton, es igual a:

(μ) lμ
σ BM (X) = 1 + σ1( μ ) X + σ 2( μ ) X 2 + ... + σ l(μμ ) X
(5.46)

(μ)
donde l μ es el grado del polinomio σ BM ( X ) . Entonces para determinar el
polinomio mínimo del siguiente paso de la iteración se estima primero la
cantidad d μ que se denomina la discrepancia μ -ésima, con la siguiente
expresión:

d P = s P+1 + V 1( P )s P + V 2( P )s P -1 + ... + V l(PP )s P+1-l P


(5.47)

Si esta cantidad es igual a cero, d μ 0 , entonces el polinomio mínimo


(μ)
σ BM ( X ) satisface las μ  1 identidades de Newton y puede ser utilizado como
( μ 1 )
σ BM ( X ):

( μ 1 ) (μ)
σ BM (X) = σ BM (X)
(5.48)

Si la discrepancia μ -ésima es distinta de cero, d μ z 0 , significa que el


(μ)
polinomio mínimo σ BM ( X ) no satisface las μ  1 identidades de Newton y es
necesario calcular un término de corrección.
Para determinar la corrección se recurre a un paso previo p de la iteración
respecto al paso P donde se verifique que d p z 0 y además que p  l p sea el
( p)
de máximo valor. El número l p es el grado del polinomio σ BM (X).

206
Capítulo V: Códigos Reed-Solomon

Luego:

( μ+1)
σ (X) = σ ( μ ) (X) + d μ d p-1 X ( μ - p) σ ( p) (X)
(5.49)

este polinomio de grado mínimo satisface las μ  1 identidades de Newton.


El procedimiento descripto puede ser presentado en la forma de una tabla.

μ (μ)
σ BM (X) dμ lμ μ  lμ
1 1 1 0 1
0 1 s1 0 0
1
.
.
2t

Tabla 5.3 Algoritmo para determinar el polinomio localizador de errores de Berlekamp-


Massey

(μ)
Una vez estimado el polinomio de grado mínimo σ BM ( X ) de la iteración μ -
ésima, el correspondiente a la siguiente iteración μ  1 se evalúa de la siguiente
forma:

( μ 1 ) (μ)
Si d μ 0 entonces σ BM (X) = σ BM (X) , l μ 1 lμ .

Si d μ z 0 , se necesita encontrar otra fila de la tabla previa a la que se esta


calculando, llamada fila p donde se cumpla que d p z 0 y además que p  l p
sea de valor máximo. Una vez identificada esta fila, entonces:

( μ 1) (μ)
σ BM (X) = σ BM (X) + d μ d p-1 X ( μ- p) σ ( p) (X) ,

l μ+1 = max( l μ , l p + μ - p) ,

d μ 1 = s μ+2 + σ1( μ 1 )s μ 1  ... + σ l(μμ!1 )s μ+2 - l μ 1


(5.50)

207
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Una vez recorridas las 2 t filas de la tabla, el polinomio de grado mínimo final
( 2t )
σ BM (X) σ BM ( X ) se adopta como la solución del algoritmo en la búsqueda
del polinomio localizador de errores. Si el grado de este polinomio es mayor
que t , las raíces del mismo no son generalmente las que localizan
adecuadamente los errores, porque se está en presencia de un evento de error de
magnitud mayor que la que el código puede corregir.
El paso final es la búsqueda de las raíces de este polinomio, que puede lograrse
de la misma forma que se hizo en el caso del algoritmo de Euclides, aplicando
el algoritmo de Chien, que consiste en sustituir 1,D ,D 2 ,..., D q 2 en el
polinomio localizador buscando cumplen V BM ( D i ) 0.

Ejemplo 5.6: Resuelva el caso descripto en el ejemplo 4.3 para un código


binario BCH CBCH (15 ,7 ) con t 2 aplicando el algoritmo de Berlekamp-
Massey. El vector recibido es de la forma r ( X ) 1  X 8 .

Las componentes del vector síndrome fueron calculadas en el ejemplo 4.3 y


son:
s1 r ( α ) α 2
s2 r(α 2 ) α4
s3 r(α 3 ) α7
s4 r(α 4 ) α8

De acuerdo al método de Berlekamp-Massey para la determinación del


polinomio localizador de errores se da forma a la siguiente tabla:

μ (μ)
σ BM (X) dμ lμ μ  lμ p

1 1 1 0 1
0 1 α 2 0 0
1 1α X 2 0 1 0 1
2 1 α2 X α 10 1 1
3 1  α2 X  α8 X 2 0 2 1 0
4 1  α2 X  α8 X 2

Tabla 5.4 Tabla Berlekamp-Massey del Ejemplo 5.6

208
Capítulo V: Códigos Reed-Solomon

Como un ejemplo, la fila μ  1 1 se obtiene de la información presente en la


fila μ 0 haciendo:

l1 = max( l 0 , l -1 + 0 - (-1)) 1

V BM
(1)
(X) = V BM
(0)
(X) + d0d-1
-1 X V (X) 1  D 211 X 11 1  D 2 X
(0 -(-1)) ( 1)

d1 = s2 + σ1(1 )s1 α 4  α 2α 2 0

así, en el siguiente paso en la fila μ 1 , cuya información sirve para


determinar la fila μ  1 2 , y dado que la discrepancia es cero, d1 0 , luego:

(2) (1 )
σ BM (X) = σ BM (X) , l μ 1 l μ , d 2 = s3 + σ1( 2 )s2 α7  α 2α 4 α 10

Finalizando el proceso con μ 4 , el polinomio localizador de errores resulta


ser:

(4)
σ BM (X) σ BM (X) = 1 + α 2 X + α 8 X 2

cuyas raíces puede verificarse son β11 1 α0 α  j1 y


 j2
β21 α 7
α 8
α , con lo cual las posiciones de error son j1 0 y
j2 8.
El polinomio localizador σ BM (X) = 1 + α 2 X + α 8 X 2 es obtenido en función
3 5 11 2
del polinomio localizador σ(X) = α + α X + α X hallado usando el
algoritmo de Euclides en el ejemplo 4.5, tabla 4.2, multiplicando
σ(X) = α 3 + α 5 X + α 11 X 2 por α 12 . Por lo tanto ambos polinomios poseen las
mismas raíces. La corrección del error en este ejemplo implica que el vector
transmitido había sido el vector todos ceros.

209
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

5.7.2 Decodificación de códigos RS utilizando el algoritmo de Berlekamp


Massey

La naturaleza no binaria de los códigos RS hace que exista la necesidad no solo


de determinar la posición de los errores sino también cual es la magnitud de los
mismos, es decir el valor del alfabeto del campo discreto de Galois que
reproduce el efecto del error. Aun no siendo obviamente una demostración
rigurosa, los siguientes ejemplos mostrarán que de alguna manera, el polinomio
localizador de errores no depende de la magnitud de los mismos, con lo cual el
algoritmo de Berlekamp-Massey para determinar el polinomio localizador de
errores se aplica a los códigos RS de la misma forma que en el caso de los
códigos binarios BCH. El algoritmo resuelve el sistema de ecuaciones que
representa la decodificación de un código BCH o RS agrupando t de los 2 t
grados de libertad de tal sistema de ecuaciones para definir las t posiciones de
error que son incógnitas. Por lo tanto, el sistema de ecuaciones descripto en
(5.42), representa al sistema de ecuaciones a resolver para localizar los errores
utilizando un código RS, cuyo sistema completo es de la forma de la ecuación
(5.19). La diferencia entre estos dos sistemas de ecuaciones esta en tener en
cuenta la magnitud del error con su valor especifico (ecuaciones 5.19), o
considerar la existencia de error como un evento de error de magnitud 1
(ecuaciones 5.42). Una vez definidas las posiciones de error, es posible utilizar
las ecuaciones (5.22), (5.23) y (5.24) para determinar el valor de los errores.
Una forma equivalente para hacer esto es descripta por Berlekamp [2]. Para tal
fin se define el polinomio:

Z( X ) 1  s1  σ1 X  s2  σ1s1  σ 2 X 2  ...  sτ  σ1sτ 1  σ 2 sτ 2  ...  στ X τ

(5.51)

La magnitud del error cuya posición es βi α ji se determina utilizando la


expresión:

Z( βi1 )
e ji
– 1  βk βi1
τ

k 1
k zi

(5.52)

210
Capítulo V: Códigos Reed-Solomon

Ejemplo 5.7: Realice la decodificación de la palabra recibida


r 000 000 011 000 111 000 000 , para un código RS CRS (7,3) sobre
GF(8) generado por el polinomio primo pi ( X ) 1  X 2  X 3 (Ejemplo 5.5).

De acuerdo al patrón recibido:

r( X ) α6 X 2  α4 X 4

Las componentes del vector síndrome son:

s1 r(α ) 0
s2 r(α2 ) α6
s3 r(α3 ) α4
s4 r(α4 ) α4

La aplicación del algoritmo de Barlekamp-Massey deriva en la tabla 5.5:

μ (μ)
σ BM (X) dμ lμ μ  lμ p

1 1 1 0 1
0 1 0 0 0
1 1 α6 1 0 1
2 1α X 6 2
α 4 2 0 1
3 1  α5 X  α6 X 2 0 2 1
4 1  α5 X  α6 X 2

Tabla 5.5 Tabla Berlekamp-Massey del ejemplo 5.7

El polinomio localizador de errores es entonces:

(4)
σ BM (X) σ BM (X) = 1 + α 5 X + α 6 X 2

cuyas raíces puede verificarse son β11 α3 α 4 α  j1 y


 j2
β21 α 5
α 2
α , con lo cual las posiciones de error son j1 4 y
j2 2.

211
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

El polinomio localizador σ BM (X) = 1 + α 5 X + α 6 X 2 es obtenido en función


5 3 4 2
del polinomio localizador σ1 (X) = α + α X + α X hallado usando el
algoritmo de Euclides en el ejemplo 5.5, tabla 5.2, multiplicando
σ1 (X) = α 5 + α 3 X + α 4 X 2 por α 2 . Por lo tanto ambos polinomios poseen las
mismas raíces.

La magnitud de los errores requiere de la evaluación del polinomio:

Z( X ) 1  s1  V1 X  s2  V 1s1  V 2 X 2
1 D 5 X  D 6  D 5 0  D 6 X 2 1 D 5 X

Luego:

Z( β11 ) 1  α5α 3 α5
e j1 α4
– 1  βk β11
2
(1  α 5 α 3 ) α
k 1
k z1

Z( β21 ) 1  α5α5 α2
e j2 α6
– 1  βk β21
2
(1  α 3 α 5 ) α3
k 1
k z2

Ejemplo 5.8: Realice la decodificación de la palabra recibida


r 000 000 100 000 100 000 000 , para un código RS (7,3) sobre
GF(8) generado por el polinomio primo pi ( X ) 1  X 2  X 3 . En este
ejemplo, el evento de error tiene las mismas posiciones que en el ejemplo
anterior, pero la magnitud de los dos errores es de 1.
De acuerdo al patrón recibido:

r( X ) X2  X4

Las componentes del vector síndrome son:

s1 r (D ) D 5
s2 r (D 2 ) D 3
s3 r (D 3 ) D 3
s4 r (D 4 ) D 6

212
Capítulo V: Códigos Reed-Solomon

La aplicación del algoritmo de Barlekamp-Massey deriva en la tabla 5.6:

P (P)
V BM (X) dP lP P  lP p
1 1 1 0 1
0 1 D 5 0 0 1
1 1D5 X 0 1 0
2 1D5 X D4 1 1 1
3 1D5 X D6 X2 0 2 1 0
4 1D5 X D6 X2

Tabla 5.6 Tabla Berlekamp-Massey del ejemplo 5.8

El polinomio localizador de errores es entonces:

V BM (X) V BM
(4)
(X) = 1 + D 5 X + D 6 X 2

es decir, el mismo que en el ejemplo anterior, donde el evento de error coincide


en las posiciones de error pero no en la magnitud de cada error.
Las raíces de este polinomio son E11 D 3 D 4 D  j1 y
E 21 D5 D 2 D  j2 , con lo cual las posiciones de error son j1 4 y
j2 2 .
La magnitud de los errores requiere de la evaluación del polinomio:

Z( X ) 1  s1  V 1 X  s2  V 1s1  V 2 X 2
1  D 5  D 5 X  D 3  D 5D 5  D 6 X 2
1D6 X 2

Luego:

Z ( E11 ) 1  D 6D 6 D
e j1 1
– 1  E E
2
1 (1  D 5D 3 ) D
k 1
k 1
k z1

213
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Z ( E 21 ) 1  D 6D 10 D3
ej2 1
– 1  E E
2
1 (1  D 3D 5 ) D3
k 2
k 1
k z2

5.7.3 Relaciones entre los polinomios localizadores de error en los


algoritmos de Euclides y de Berlekamp-Massey

Los polinomios localizadores de error en los dos algoritmos son prácticamente


iguales. Si se toma el caso de códigos de capacidad de corrección t 2 ,
entonces para el algoritmo de Euclides, el polinomio localizador de errores es:

σ( X ) ( X  α  j1 )( X  α  j2 ) ( X  α  j1 )( X  α  j2 ) ( X  β11 )( X  β21 )
(1  β1 X )(1  β2 X ) /( β1 β2 ) σ BM ( X ) /( β1 β2 )

En general se puede decir que:

σ BM ( X )
σ( X ) τ
– βi
i 1

Es evidente que si las raíces de estos polinomios localizan las posiciones de


error, para el mismo evento de error y código, y como se pudo observar en los
anteriores ejemplos, ambos polinomios tienen que tener las mismas raíces.

5.8 Aplicación práctica: Sistema de codificación del


Compact Disk (CD)
5.8.1 Características

El sistema de codificación del disco compacto o “compact disk” (CD) es una de


las aplicaciones mas interesantes de los códigos RS. Este sistema fue diseñado
desde el punto de vista de un sistema de comunicaciones, donde el transmisor es
el proceso de grabado del disco, el canal es el disco, y el receptor es la lectora
de estos discos [8]-[15].
El proceso requiere de una conversión analógica- digital (A/D) que se realiza
sobre los dos canales de audio, izquierdo y derecho, de la señal estéreo. La

214
Capítulo V: Códigos Reed-Solomon

frecuencia de muestreo elegida es de 44.1 Khz, permitiendo entonces que el


ancho de banda de audio de calidad, que es aproximadamente 20 Khz, sea
respetado. La cuantificación se produce en 16 bits, haciendo que la relación
señal ruido de cuantificación sea de aproximadamente 90 dB. La distorsión
alcanza entonces a ser de 0.005 %. El valor de la frecuencia de muestreo fue
elegido en términos de parámetros de la señal de TV:

(625 - 37)/625 x 3 x 15625 = 44.1 Khz.

donde 625 es el número de líneas en el sistema PAL, 37 es el número de líneas


no usadas, 3 es el número de muestras de audio grabadas por línea y 15,625 es
la frecuencia de línea [8]-[14].
La información digitalizada es luego protegida por aplicación de codificación
Reed-Solomon, usando dos codificadores similares con capacidad de corrección
t 2 cada uno.
El canal en este caso es típicamente de errores en ráfaga, efecto que puede ser
reducido fuertemente empleando el entrelazado de datos o “interleaving”.
Los dos codificadores empleados esta separados por un entrelazador, dando
forma al así llamado código Reed-Solomon de entrelazado cruzado (en inglés
“Cross Interleave Reed Solomon Code”, CIRC). La información es digitalizada
agrupando seis muestras de audio, cada una conteniendo el canal derecho e
izquierdo respectivamente. El bloque de seis muestras genera así un grupo de 12
palabras de 16 bits cada una, es decir, de 24 bytes. La información es
primeramente procesada por un entrelazador, luego ingresada al primer
codificador, que es un código RS de versión acortada CRS ( 28 ,24 ) . La salida
de este codificador es una palabra de 28 bytes que es nuevamente procesada por
un entrelazador, que entrega palabras de 28 bytes a un segundo codificador RS
de versión acortada CRS ( 32 ,28 ) . El proceso de acortamiento de la longitud del
código se explica mas adelante en la sección 5.9. Cada codificador adiciona 4
bytes de redundancia, y son códigos Reed-Solomon de versión acortada
pertenecientes al código RS CRS ( 255 ,251 ) que se diseña sobre GF( 2 8 ) .
Previo a su impresión sobre la superficie del disco, se adiciona un byte mas que
contiene información de sincronismo, y se lo modula, a través de un proceso
conocido como modulación de 8 a 14, o en Inglés "Eight to Fourteen
Modulation", EFM. Esta modulación se aplica por un lado porque es
conveniente que la información no contenga componentes de baja frecuencia,
para no interferir con los sistemas de control de seguimiento mecánico del
disco, y por el otro porque el formato de transmisión debe ser auto-
sincronizable, permitiendo a un sistema de sincronismo sostener el enganche,
evitando secuencias largas de ceros. En este caso particular existe un límite
superior de 10 de ceros en secuencia continua. El proceso de modulación es una

215
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

conversión de palabras de 8 bits a palabras de 14 bits, de forma que se pueda


controlar las secuencias de datos, haciendo que entre dos unos, existan al menos
dos ceros, y que nunca haya una secuencia de mas de diez ceros. Este proceso
requiere condiciones en el concatenado de las palabras, para que esto siga
cumpliéndose, haciendo finalmente que los 8 bits terminen siendo codificados
con 17, dado que aparecen secuencias de enlace entre palabras para conservar
las condiciones de secuencias de unos y ceros. Estas condiciones sobre las
secuencias se diseñan aplicando codificación RLL (del Inglés “Run Length
Limited”). El resultado final del proceso de codificación, información adicional
y modulación es que el grupo de 6 muestras de audio estéreo se transforman en
un conjunto de 588 bits. La información es transferida a la superficie del disco a
una velocidad de 4.332 Mb/s.

5.8.2 Características del canal

El disco sobre el que se imprime la información digital es de plástico y con un


recubrimiento de aluminio, que tiene un diámetro de 120 mm, un espesor de 1.2
mm, y un espesor de isla de impresión de 1.6 Pm. La lectora de CD posee un
láser de AlGaAs de 0.8 Pm de longitud de onda que recorre las islas impresas
para detectar el tipo de dato realizando la operación a una velocidad constante
de 1.25m/s, de modo que la velocidad de rotación varia entre 8 a 3.5
revoluciones por segundo. Esto consigue mantener la tasa de información a
velocidad constante. El proceso de codificación hace posible la fabricación de
un disco donde han de esperarse errores en la impresión de datos debido a
imperfecciones del proceso [10]-[14].

5.8.3 Procedimiento de codificación

Como se describió en la sección anterior, el proceso de codificación es una


combinación de códigos RS y entrelazadores. La estructura base es un arreglo
de 6 muestras de audio que originan 16 bits cada una, dando forma con los
canales derecho e izquierdo a una palabra de mensaje de 24 bytes

216
Capítulo V: Códigos Reed-Solomon

v(t)

Figura 5.1 Muestras de la señal de audio

6 muestras se convierten en una palabra como la que se ve en la figura 5.2,


donde se identifica la muestra del canal izquierdo o derecho.

24 bytes para 6 muestras de audio

Figura 5.2 Formato de la palabra de mensaje

El entrelazador E1 elige las muestras numeradas par para cada canal estéreo y
las separa de los grupos impares, moviéndolas dos ventanas de tiempo y
ocupando las ventanas liberadas con grupos previos de datos.
El codificador C1 es un código Reed-Solomon de versión acortada
CRS ( 28 ,24 ) que agrega 4 bytes a la información inicial, generando una
palabra de 28 bytes. Este es el denominado código externo.
El entrelazador E2 genera un retardo de 4 bytes sobre cada palabra de forma
acumulativa, respecto del anterior, realizando entonces una mezcla variable para
cada posición, pero con un retardo relativo entre posiciones constante. El
codificador C2 es un codificador RS CRS ( 32 ,28 ) que es también una versión
acortada del código CRS ( 255 ,251 ) y que adiciona 4 bytes a la palabra recibida
desde el entrelazador E2, la cual es de 28 bytes. La palabra resultante es de 32
bytes. Este es el denominado código interno. El entrelazador E3 realiza retardos
intercalados de una palabra e inversión de ciertos elementos de la salida para
facilitar un proceso de interpolación que tiene lugar luego del bloque corrector

217
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

de errores, que hace imperceptibles sobre la señal de audio resultante algunos


errores reportados por el decodificador total [8]-[10].

Entrelazador Codificador Entrelazador Codificador Entrelazador


E1 C1 E2 C2 E3

Figura 5.3 Codificación en el CD

El proceso de decodificación realiza estas operaciones de modo inverso.

5.9 Codificador para los códigos RS (255, 251), RS (28, 24)


y RS (32, 28)
Como se ha explicado anteriormente la longitud de un código cíclico RS que se
diseña con elementos del campo de Galois GF( 2 m ) , es de n 2 m  1 . Una
aplicación típica interesante consiste en el diseño de códigos sobre el campo
finito GF( 2 8 ) GF( 256 ) , dado que permite la codificación de palabras de 8
bits, o bytes, que serán en este caso elementos del campo elegido. Si por
ejemplo se decidiera darle al código una capacidad de corrección de dos
elementos o bytes, t 2 , el código RS CRS ( n, k ) en este caso seria el código
RS CRS ( 255 ,251 ) . La magnitud de un código de esta naturaleza hace
imposible enumerar o tabular las palabras que lo componen. Si se hiciera tal
tabulación, se vería que las primeras palabras de este código tendrían todos sus
elementos mas significativos iguales a cero, mientras los menos significativos
adoptan valores que son elementos del campo finito GF( 2 m ) . Por lo tanto es
posible operar con una parte o “página” de la tabla completa del código, que se
denomina código RS de versión acortada, cuyas palabras son precisamente mas
cortas, por asumir que los elementos mas significativos son todos ceros. El
polinomio generador y la capacidad de error permanecen iguales a la del código
original no acortado. De esta manera es posible trabajar con longitudes de
palabra mas cortas, no necesariamente fijadas en n 2 m  1 . Así, del código
RS CRS ( 255 ,251 ) se obtienen varios códigos de versión acortada que corrigen
hasta t 2 errores, como por ejemplo el RS CRS ( 28 ,24 ) y el RS
CRS ( 32 ,28 ) que son los códigos constituyentes del mecanismo de codificación
del CD. Así entonces en el caso del código RS CRS ( 32 ,28 ) de versión
acortada se descartan los primeros 223 ceros de cada palabra. En el caso del

218
Capítulo V: Códigos Reed-Solomon

código RS CRS ( 28 ,24 ) de versión acortada se descartan los primeros 227


ceros de cada palabra. La eliminación de esos ceros no afecta la capacidad de
corrección de error del código reducido, que permanece igual a t 2 bytes por
palabra.
Para el código no acortado RS (255, 251) se tiene entonces:

q 2m 28
n 2 m 1 255
n  k 2t 255  251 4
d min 2t  1 5

Las versiones acortadas del código RS CRS ( 255 ,251 ) que se eligen en este
ejemplo, los códigos RS CRS ( 28 ,24 ) y el RS CRS ( 32 ,28 ) , tienen parámetros
similares al anterior, pero ahora n 28 y k 24 , para el primero, y n 32 y
k 28 para el segundo. En el sistema real de codificación del CD se emplea
entre ambos la técnica denominada “interleaving”, que consiste en la
distribución desplazada en posición de los bytes de una palabra. De esta manera,
una palabra de 24 bytes es codificada para generar otra de 28 bytes, luego se
distribuyen por desplazamiento los bytes en palabras de la misma magnitud que
ingresan a un codificador de código RS CRS ( 32 ,28 ) , que agrega cuatro bytes
mas a la palabra, generando así una palabra final de 32 bytes.
Se presenta aquí un ejemplo del funcionamiento de esos códigos. La
codificación es sistemática. El vector de mensaje, expresado en forma
polinómica m( X ) , es multiplicado por X 2 t X 4 , generando el polinomio
X 4 m( X ) , que se divide por el polinomio generador g( X ) correspondiente.
Este polinomio generador es el siguiente: Si t 2 , entonces:

g(X) = (X + α )(X + α 2 )(X + α 3 )(X + α 4 )


g(X) = (X2 + D 26 X + D 3 )(X2 + D 28 X + D 7 )
g(X) = X 4 + ( α 26 + α 28 )X 3 + ( α 7 + α 54 )X 2 + ( α 31 + α 33 )X + α10
g(X) = X 4 + α 76 X 3 + α 251 X 2 + α 81 X + α10
(5.53)

Los elementos y operaciones realizadas en la determinación del polinomio


generador son las definidas para el campo de Galois GF( 256 ) .
El polinomio generador es exactamente el mismo para los códigos RS
CRS ( 255 ,251 ) , RS CRS ( 28 ,24 ) y RS CRS ( 32 ,28 ) . El método de

219
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

codificación consiste en dividir X 4 m( X ) por g( X ) . El resto de esta división


es un polinomio de grado 2t  1 o menor, que representa los cuatro bytes de
paridad que cada código agrega. En el concatenado de los códigos RS
CRS ( 28 ,24 ) y RS CRS ( 32 ,28 ) es necesario alterar la palabra resultante del
primer código para que sea codificada por el segundo código de manera
adecuada. Esto es consecuencia de estar empleando versiones acortadas del
código original. De hecho, luego de tomar los primeros 24 bytes y realizar la
división para obtener los 4 bytes de paridad, la palabra codificada resultante
pertenece al código generado por g( X ) . Se puede asegurar que tal palabra es
múltiplo de g( X ) . Dado que el segundo código en el proceso de concatenado
tiene el mismo polinomio generador que el primero, la palabra resultante de 28
bytes que será codificada por el segundo código es multiplicada por X 4 y debe
ser dividida por g( X ) para la obtención de los nuevos 4 bytes que se agregan
para formar la palabra de 32 bytes. Sin embargo la palabra de 28 bytes es
múltiplo de g( X ) , y su desplazamiento en 2 t posiciones pertenece al código,
por lo que la división del segundo codificador tiene resultado cero. Por esta
razón, los bytes de paridad resultantes del codificador del código RS
CRS ( 28 ,24 ) se ubican en el medio de la palabra.

12 Bytes más significativos 12 Bytes menos significativos

4 Bytes de paridad

Figura 5.4 Palabra generada por el código RS CRS ( 28 ,24 )

Ejemplo 5.9: Se muestra aquí una palabra m arbitraria, de 24 bytes, que es


codificada por el codificador del código RS CRS ( 28 ,24 ) :

m α 100
α 90 α 80 α 70 α 0 0 0 α 70 α 60 α 50 α 200 α 100 α 2 α 1 α 0 0 α 4 α 3 α 2 α 1 α 40 α 30 α 20 α 10

220
Capítulo V: Códigos Reed-Solomon

En este caso, el elemento del campo de Galois GF( 256 ) más significativo se
encuentra a la izquierda, y el menos significativo a la derecha. La palabra esta
representada con elementos del campo finito GF( 256 ) . El elemento de
GF( 256 ) α 2 por ejemplo, representa la secuencia de bits ( 00100000 ) .
La palabra codificada resultante de la salida del código RS CRS ( 28 ,24 ) es:

c1 α 100
α 90 α 80 α 70 α 0 0 0 α 70 α 60 α 50 α 200 α 100 α 89 α139 α 249 α 228 α 2 α 1 α 0 0 α 4 α 3 α 2 α 1 α 40 α 30 α 20 α 10

Parte de la división polinómica realizada para esta codificación puede verse en


la siguiente expresión:

X 4 + D 76 X 3 + D 251 X 2 + D 81 X + D 10 D 100 X 27 + D 90 X 26 + D 80 X 25 + D 70 X 24 + D 0 X 23 + 0X 22 + 0X 21 + D 70 X 20 ......


D 100
X 27 + D 176 X 26 + D 96 X 25 + D 181 X 24 + D 110 X 23
-----------------------------------------
+ D 77 X 26 + D 225 X 25 + D 61 X 24 + D 126 X 23
+ D 77 X 26 + D 153 X 25 + D 73 X 24 + D 158 X 23 + D 87 X 22
---------------------------------
+ D 93 X 25 + D 188 X 24 + D 161 X 23 + D 87 X 22
.
.
.
La división se realiza hasta que el grado del polinomio resto es menor o igual
que 3 , esto es luego de 23 operaciones. La última parte de la división se
presenta en la siguiente expresión:

α 218 X 4 + α 41 X 3 + α 83 X 2 + α 251 X
α 218 X 4 + α 39 X 3 + α 284 X 2 + α 44 X + α 228
----------------------------------
+ α 89 X 3 + α 139 X 2 + α 249 X + α 228

El polinomio resto de la división configura la redundancia, que como se dijo es


alojada en el medio de la palabra original de 24 bytes.
El segundo codificador dentro de este esquema concatenado, el RS
CRS ( 32 ,28 ) , codifica la palabra de 28 bytes generada por el primer
codificador, y opera de la misma forma que éste, para calcular los 4 bytes de

221
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

paridad a agregar. El número de pasos en la división ahora es 27, en lugar de 23.


Finalmente la palabra codificada resulta ser:
c 2 ( α 100 α 90 α 80 α 70 α 0 0 0 α 70 α 60 α 50 α 200 α 100 α 89 α139 α 249 α 228
α 2 α 1 α 0 0 α 4 α 3 α 2 α 1 α 40 α 30 α 20 α 10 α144 α 68 α 240 α 5 )

Ahora los bytes de control de paridad se ubican en las posiciones menos


significativas. Recuérdese que en realidad en el sistema de codificación del CD
existe un mecanismo de entrelazado de datos entre los codificadores.
Es ciertamente imposible enumerar la tabla de palabras de código de este tipo
de métodos de codificación, aun en el caso de las versiones acortadas. La
palabra de mensaje es de 24 bytes, y en cada posición puede alojarse uno de los
256 diferentes elementos del campo de Galois utilizado en este caso. El número
de posibilidades es:

2 km = 2 24 x8 = 6.27710x10 57

Este es el número de palabras a ser codificada. El codificador interno RS


CRS ( 28 ,24 ) por su parte expande este conjunto de palabras sobre un espacio
con:

2 nm = 2 28x8 = 2.69599x10 67

La relación de estas cantidades es:

2 nm / 2 km = 2 28 x8 / 2 24 x8 = 2 32 = 4.29x10 9

Lo cual da una idea del proceso de expansión del método de codificación usado.

5.10 Decodificación de los códigos RS (28, 24) y RS (32, 28)


5.10.1 Decodificador Berlekamp-Massey para los códigos RS
CRS ( 28 ,24 ) y RS CRS ( 32 ,28 )

En el caso del ejemplo analizado, la capacidad de corrección es t 2 , de modo


que el patrón de error es de la forma:

e(X) = e j1 X j1 + e j2 X j2
(5.54)

222
Capítulo V: Códigos Reed-Solomon

donde e j1 , e j2 , j1 y j 2 son variables desconocidas. Existen entonces 4


variables desconocidas, lo cual requiere de un sistema de 4 ecuaciones
independientes para ser resuelto, y así decodificar el evento de error
adecuadamente. Como se explicó en la sección anterior, el algoritmo de
Barlekamp-Massey [6, 7] es útil para la obtención del polinomio localizador de
errores, que junto con las expresiones (5.51) y (5.52) permiten determinar la
posición y la magnitud de los errores.
En este caso particular, ambos códigos RS poseen la misma capacidad de
corrección de error, es decir corrigen cualquier evento de error con t 2 o
menos errores. La tabla del algoritmo de Barlekamp-Massey va entonces de
μ 1 hasta μ 4 .

El polinomio localizador de errores para los códigos RS CRS ( 28 ,24 ) y RS


CRS ( 32 ,28 ) es de la forma:

σ(X) = 1 + σ1 X + σ 2 X 2
(5.55)

La función necesaria para el cálculo de la magnitud de los errores es:

Z(X) = 1 + (S1 + σ )X + (S2 + σ1S1 + σ 2 )X 2


(5.56)

y luego:

Z( β11 )
e j1
– 1  βk β11
2

k 1
k z1

Z( β21 )
e j2
– 1  βk β21
2

k 1
k z2

(5.57)

Una vez conocido el evento de error descripto por la ecuación (5.54), la


corrección del error se logra sumando esta expresión al vector recibido r ( X ) .

223
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Ejemplo 5.10: Decodificación del conjunto de códigos RS CRS ( 28 ,24 ) y RS


CRS ( 32 ,28 ) de una palabra codificada de 32 bytes. El vector recibido contiene
dos errores en las posiciones 8 y 16. Particularmente el error consiste en el
borrado de los elementos en esas posiciones, que es representado sobre el vector
recibido como un símbolo 0 * * .
El vector recibido r es el vector codificado calculado en el ejemplo 5.9
afectado por el evento de error descripto:

r (α 100 α 90 α 80 α 70 α 0 0 0 α 70 α 60 α 50 α 200 α 100 α 89 α 139 α 249 0 **


α 2 α 1 α 0 0 α 4 α 3 α 2 0 ** α 40 α 30 α 20 α 10 α 144 α 68 α 240 α 5 )

El cálculo del vector de síndrome arroja el siguiente resultado:

s1 α 31
s2 α 132
s3 α 121
s4 α 133

Con los valores conocidos del vector de síndrome se puede aplicar entonces el
algoritmo de Barlekamp-Massey. El resultado de la aplicación de este algoritmo
se ve en la tabla 5.7.

μ (μ)
σ BM (X) dμ lμ μ  lμ
1 1 1 0 1
0 1 α 31 0 0
1 1  α 31 X α 126 1 0
2 1  α 101 X α 128 1 1
3 1  α 101 X  α 97 X 2 α 32 2 1
4 1  α 208 X  α 24 X 2 α 168 2 2

Tabla 5.7 Tabla Berlekamp-Massey del ejemplo 5.10

De esta manera, el polinomio localizador de errores es igual a:

224
Capítulo V: Códigos Reed-Solomon

σ BM (X) = 1 + σ1 X + σ 2 X 2 = 1 + α 208
X + α 24 X 2

cuyas raíces son:

β11 α 239
β21 α 247

y las posiciones de error son:

β1 α 239 α 255 239 α16 α j1


β2 α 247 α 255247 α8 α j2

Luego:

j1 16
j2 8

El polinomio Z( X ) en este caso es:

Z(X) = 1 + (s1 + σ )X + (s2 + σ1s1 + σ 2 )X 2 = 1 + α 165 X + α 138 X 2

y los errores evaluados en esas posiciones son de valores:

Z( β11 )
e j1 α 128
– 1  βk β11
2

k 1
k z1

Z( β21 )
e j2 α1 α
– 1 
2
βk β21
k 1
k z2

Debido a que el primer decodificador encuentra el patrón de error


adecuadamente, corrige la palabra adicionando al vector recibido el vector o
polinomio:

225
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

e(X) = e j1 X j1 + e j2 X j2 α 128 X 16  αX 8

convirtiendo al vector recibido:

r (α 100 α 90 α 80 α 70 α 0 0 0 α 70 α 60 α 50 α 200 α 100 α 89 α 139 α 249 0 **


α 2 α 1 α 0 0 α 4 α 3 α 2 0 ** α 40 α 30 α 20 α 10 α 144 α 68 α 240 α 5 )

en el vector:

c (α 100 α 90 α 80 α 70 α 0 0 0 α 70 α 60 α 50 α 200 α 100 α 89 α 139 α 249 α 128


α 2 α 1 α 0 0 α 4 α 3 α 2 α 1 α 40 α 30 α 20 α 10 α 144 α 68 α 240 α 5 )

La operación del primer decodificador finaliza truncando la redundancia


correspondiente y transmitiendo al segundo decodificador el vector:

c, (α 100 α 90 α 80 α 70 α 0 0 0 α 70 α 60 α 50 α 200 α 100 α 89 α 139 α 249 α 128


α 2 α 1 α 0 0 α 4 α 3 α 2 α 1 α 40 α 30 α 20 α 10 )

Este vector produce un síndrome igual a cero, y es decodificado correctamente


por el segundo decodificador, que no necesita aplicar el algoritmo de
decodificación de Berlekamp-Massey. Este ejemplo pone en evidencia que el
concatenado de dos códigos RS no tiene demasiado sentido si ambos son de
similares características, ya que la capacidad de error del conjunto es similar a
la de uno solo de los códigos. Solo pocos casos de patrones de error permitirían
operar al segundo decodificador con eficiencia. Es aquí donde también se
enfatiza la importancia del entrelazador de datos utilizado realmente en el
sistema de codificación del CD. Finalmente la palabra decodificada es el
verdadero mensaje transmitido:

ˆ (α 100 α 90 α 80 α 70 α 0 0 0 α 70 α 60 α 50 α 200 α 100 α 2 α 1 α 0 0 α 4 α 3 α 2 α 1 α 40 α 30 α 20 α 10 )


m

226
Capítulo V: Códigos Reed-Solomon

5.10.2 Decodificador alternativo para los códigos RS CRS ( 28 ,24 ) y RS


CRS ( 32 ,28 )

El decodificador para un código RS es sencillamente un algoritmo que resuelve


el sistema de ecuaciones (5.19). Un conocido método de cálculo para tal fin es
el denominado algoritmo de Euclides, presentado en secciones anteriores. En el
caso del ejemplo analizado, la capacidad de corrección es t 2 errores por
palabra, de modo que el patrón de error es de la forma de la ecuación (5.54), en
la que e j1 , e j 2 , X j1 y X j 2 son las variables desconocidas, que identifican al
valor y la posición de los dos posibles errores. Dado que el número de variables
desconocidas es 4, se necesita un sistema de cuatro ecuaciones para definir
unívocamente estos valores. El sistema de ecuaciones necesario proviene de la
evaluación del vector síndrome, cuyas componentes se obtienen calculando el
polinomio vector recibido en las raíces α , α 2 , α 3 y α 4 . El vector recibido es
considerado vector válido si los cuatro valores calculados son iguales a cero. De
otra manera, se deduce que existe al menos un error. Si el número de errores
iguala a la distancia mínima del código, en este caso d min 5 , el vector
recibido se modifica de manera tal que se transforma en otro vector válido del
código. En este caso, se esta por encima de la capacidad de corrección del
código. Los más conocidos métodos de resolución del sistema de ecuaciones de
síndromes son los ya vistos en secciones anteriores como el denominado
algoritmo de Euclides, y el de Berlekamp-Massey [2, 4, 6, 7] pero existen otros
métodos similares. Entre ellos puede citarse el método de decodificación usando
procesamiento en un dominio transformado. En esta sección se propone la
resolución del sistema de ecuaciones correspondiente, dado que el número de
símbolos del campo finito a corregir, t 2 es pequeño.

5.10.3 Decodificación de los códigos RS CRS ( 28 ,24 ) y RS CRS ( 32 ,28 )


resolviendo el sistema de ecuaciones de síndrome

Si el número de elementos a corregir es relativamente pequeño, como en el caso


analizado, la resolución del sistema de ecuaciones en forma directa puede ser
una alternativa diferente a los algoritmos de decodificación conocidos. En el
caso analizado, el sistema de ecuaciones a resolver es el siguiente:

227
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

s1= e( α ) = e j1 β1+e j2 β2
s 2 = e( α 2 ) = e j1 β12+e j2 β22
s 3 = e( α 3 ) = e j1 β13+e j2 β23
s 4 = e( α 4 ) = e j1 β14+e j2 β24
(5.58)

donde:
β1 = α j1
β2 = α j2
(5.59)

De las ecuaciones (5.58), se derivan expresiones para las relaciones

s1 s 3  s 22
s1 s 4  s 2 s 3
s 2 s 4  s 32
(5.60)

y multiplicando estas por β12 , β1 y 1 , respectivamente, se puede verificar la


ecuación

s s
1 3
 s22 β12  s1s4  s2 s3 β1  s2 s4  s32 0

De la misma manera, pero multiplicando las relaciones por β22 , β2 y 1 ,


respectivamente, se comprueba la ecuación

s s
1 3
 s22 β22  s1s4  s2 s3 β2  s2 s4  s32 0

Estas últimas dos ecuaciones son idénticas salvo en las variables β1 y β2 . Esto
implica que se pueden combinar en una sola ecuación:

s s
1 3
 s22 β 2  s1s4  s2 s3 β  s2 s4  s32 0
(5.61)

228
Capítulo V: Códigos Reed-Solomon

donde β β1 , β2 , son las dos raíces de la ecuación (5.61). La ecuación se


puede resolver recorriendo los posibles valores de β (algoritmo de Chien), que
son las posiciones numeradas 0 a 31 ( α 0 a α 31 ) para el caso del código
CRS ( 32 ,28 ) y 0 a 27 ( α 0 a α 27 ) para el caso del código CRS ( 28 ,24 ) , dando
así las dos raíces β1 y β2 . Una vez conocida una de las raíces, otra alternativa
es determinar la segunda raíz con la ecuación

s1s4  s2 s3
β2 β1 
s1s3  s22
(5.62)

que surge de la conocida relación de la suma de las raíces de una ecuación


cuadrática.
Volviendo a las ecuaciones (5.58), y ya conociendo las posiciones de los
errores, es fácil resolverlas para determinar los valores de los errores. Primero
se ve que

s2+s1 β2 = e j1 (β12+β1 β2 )

dando e j1 = (s2+s1 β2 )/(β12+β1 β2 )


(5.63)

De la misma manera se ve que

s2+s1 β1 = e j2 (β22+β1 β2 )

dando e j2 = (s 2+s1 E1 )/(E 22+E1 E 2 )


(5.64)

Si el número de errores en la palabra es 2, la solución es única. La palabra


recibida es corregida sumando en el álgebra del campo finito que se emplea el
vector error y el vector recibido. La complejidad de este algoritmo es menor
respecto del algoritmo de Euclides, dado que la ecuación (5.61) se determina
directamente con los valores de los síndromes calculados, y sus ceros son las
posiciones o números localizadores de error β1 y β2 que permiten resolver el
problema. No es necesario aplicar el algoritmo para determinar σ ( X ) . Resulta
que la parte izquierda de la ecuación (5.61) es en cierto sentido el “polinomio

229
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

localizador” de este método de decodificación, ya que si se reemplaza β por


1 / X y se normaliza para hacer que el polinomio sea mónico, se obtiene el
polinomio localizador del algoritmo de Euclides (ver ejemplos 5.5 y 5.7).
Si el número de errores no es exactamente 2, es probable que el sistema se
resuelva incorrectamente. Por lo tanto se debe adoptar un criterio de corrección
que evalúa tres situaciones de forma secuencial. Primero se calculan los cuatro
valores del vector síndrome. Si las componentes calculadas son todas iguales a
cero, el vector recibido se considera vector válido. Si existe algún valor no nulo,
el decodificador decide analizar si existe un error. Para ello se basa en el
sistema de ecuaciones (5.21), que definen la situación en que hay solo un error
en la palabra.
El cálculo para la determinación de un error es muy simple. Se decide asumir
que existe un solo error, se lo calcula de acuerdo a las expresiones (5.21), se
corrige el vector recibido usando la expresión (5.16) y se recalculan los
síndromes para el vector corregido. Si las cuatro componentes de vector
síndrome son nulas después de la corrección del error simple, entonces la
palabra recibida tenía efectivamente un único error. Si la verificación no resulta
válida, entonces se procede a corregir un patrón de dos errores, resolviendo por
algoritmo de Chien la ecuación (5.61). El vector recibido es sumado al patrón
de dos errores calculado, y se procede otra vez a verificar los valores del vector
síndrome. Si éste es el vector nulo la corrección de dos errores se adopta como
válida. Si alguna componente sigue siendo no nula, la palabra original se deja
tal cual se recibió.
Ejemplo 5.11: Determine la corrección del error para el caso del ejemplo 5.5,
empleando las expresiones (5.61) a (5.64).

De acuerdo al patrón recibido:

r( X ) α6 X 2  α4 X 4

Las componentes del vector síndrome son:

s1 r(α ) α8  α8 0
s2 r(α2 ) α3  α5 α6
s3 r(α3 ) α5  α2 α4
s4 r(α4 ) 1  α6 α4

La ecuación (5.61) adopta la forma:

230
Capítulo V: Códigos Reed-Solomon

( s1 s 3  s 22 )β 2  ( s1 s 4  s 2 s 3 )β  s 2 s 4  s 32
«¬
º»¼ β  >0.α
ª0.α 4  α 6 2 2 4
@
 α6α 4 β 

α6α 4  α 4 2
α5 β2  α3 β  α 4 0

Esta ecuación tiene dos raíces, β1 α 2 y β2 α 4 .


Entonces el primer error esta en la posición j1 2 , y la segunda en la posición
j2 4 .
Se determinan los valores de los errores usando las ecuaciones (5.48) y (5.49):

(s2+s1 β2 ) α 6  0.α 4
e j1 = α6
(β12+β1 β2 ) α 4  α 2α 4

(s2+s1 β1 ) α 6  0.α 2
e j2 = α4 .
(β22+β1 β2 ) α 8  α 2α 4

El polinomio de error es entonces:

e( X ) α6 X 2  α4 X 4

y la palabra transmitida fue el vector nulo.

5.11 La importancia del entrelazado de datos


El concatenado de códigos RS no es eficiente si no se emplea el entrelazado de
datos o “interleaving” [8, 9, 15]. Los eventos de error en ráfaga son muy
comunes en el sistema del CD, dado que el disco posee la información impresa
en modo digital sobre su superficie, como una línea en espiral continua, y
cualquier deterioro de dicha superficie, sea por rayado, rotura, mancha u otro
efecto, se evidencia como una ráfaga de errores. Ante la presencia de eventos de
ruido en ráfaga, el mecanismo de entrelazado de datos o “interleaving” es de
crucial importancia.
En principio, del proceso de concatenado presente en el sistema de codificación
del CD se deduciría que la capacidad de corrección de error es de cuatro bytes
por palabra, ya que el primer código agrega 4 bytes de paridad para corregir dos
errores, y el segundo código agrega cuatro bytes más para corregir otros dos

231
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

errores. En este sentido, si se desea corregir 4 errores, se necesitaría resolver un


sistema de ocho ecuaciones, que permita determinar cuatro posiciones y cuatro
valores de error. Sin embargo, la forma mas tradicional de decodificar en
concatenado serie es efectuar primero la operación del primer decodificador, y
luego pasar su resultado al segundo decodificador. En este caso, al producirse
un evento de error de mas de dos bytes, el primer decodificador,
correspondiente al código RS CRS ( 32 ,28 ) , no puede resolver adecuadamente
su sistema de ecuaciones, con lo que se ve obligado a pasar este evento de error
al segundo de codificador, que tampoco puede corregir tal evento, con lo que en
realidad el concatenado no resulta ser capaz de corregir cuatro errores por
palabra. Es aquí donde se observa la importancia del proceso de entrelazado de
datos, que hace que el evento de error en ráfaga sea distribuido
convenientemente sobre diferentes y en general consecutivas palabras, cada una
de las cuales contiene un número repartido de bytes en error. Así por ejemplo
un evento de error de tres bytes sobre la palabra recibida, que en el caso del
concatenado sin entrelazado decodificado en procesamiento en serie, no es
posible en general corregir, se convierte por efecto del proceso de entrelazado
de datos en un evento con tres palabras que poseen cada una solo un byte
errado, haciendo posible así que la ráfaga sea corregida, ya que los códigos
involucrados pueden ahora controlar el evento de un byte errado por palabra.
Esta es la esencia del “interleaving”, es decir, de alguna manera el entrelazado
de datos aleatoriza y distribuye sobre varias palabras del código, un evento de
ráfaga de errores.
Valiéndose del entrelazado de datos, la forma más tradicional de operación de
decodificación concatenada del sistema de codificación del CD emplea al
primer decodificador en una operación no de corrección, sino de detección y
borrado (en Inglés “erasure”) de eventos de error. En este caso el primer
decodificador solo se usa para detectar errores.

232
Capítulo V: Códigos Reed-Solomon

0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
E‘i 12 12 Ei
13 13
14 14
15 15
16 16
17 17
18 18
19 19
20 20
21 21
22
22
23 23
24 24
25 25
26 26
27 27
28
29
30
31

Bytes de paridad del código RS (28,24)


Bytes de paridad del código RS (32,28)

Figura 5.5 Relación de posiciones entre los códigos RS CRS ( 28 ,24 ) y RS


CRS ( 32 ,28 )

Si encuentra errores en la palabra recibida el decodificador marca todas las


posiciones de la palabra como equivocadas, literalmente las borra, y
aprovechando el mecanismo de entrelazado, le comunica al segundo
decodificador las posiciones de error de los bytes de cada palabra borrada. De
esta forma el segundo decodificador sabe los números localizadores de error, y

233
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

entonces cuatro ecuaciones de síndrome son suficientes para determinar cuatro


valores de error, ya que las posiciones de error son variables conocidas. De esta
forma el sistema concatenado puede corregir hasta 4 bytes.
La relación entre posiciones de las palabras en el sistema concatenado del CD
se muestra en la figura 5.5.
La palabra de 32 bytes ingresa al primer decodificador. Luego de calcular el
síndrome y detectar errores, la reordena, quitando los cuatro bytes de paridad de
posiciones 0, 1, 2 y 3, correspondientes a la palabra de 32 bytes, y entrega al
segundo decodificador, perteneciente al código RS CRS ( 28 ,24 ) una palabra de
28 bytes. El segundo decodificador aplica la corrección y le quita los bytes de
posiciones 0, 1, 2 y 3, de la palabra de 28 bytes reordenada, para obtener la
palabra original de 24 bytes. Este procedimiento se debe realizar teniendo en
cuenta que en el sistema real de codificación del CD existe entre los dos
decodificadores el entrelazador de datos E2.
Dado que el primer decodificador borra las palabras que encuentra con error, y
comunica las posiciones del borrado al segundo decodificador, se puede
entonces encontrar a la altura de este decodificador, el correspondiente al
código RS (28,24), un patrón de error de hasta t 4 errores. Esto se logra
resolviendo un sistema de ecuaciones de la forma:

s1= r(α ) = e j1 β1 + e j2 β2  e j3 β3 +e j4 β4

2
s 2 = r(α 2 ) = e j1 β1 +e j2 β2
2

2
 e j3 β3 +e j4 β4
2

s 3 = r(α 3 ) = e j1 β +e β
1
3
j2 2
3
 e j3 β +e β
3
3
j4 4
3

s 4 = r(α 4 ) = e j1 β +e β
1
4
j2 2
4
 e j3 β +e β
3
4
j4 4
4

(5.65)

donde las posiciones βi = α j i ; 0 d j i <28 son conocidas, y proporcionadas por


el primer decodificador al segundo. Solo resta definir y resolver los valores de
e ji .
El proceso de entrelazado le da al sistema una alta capacidad de corrección de
error. Esto se analiza brevemente con la figura 5.6.

234
Capítulo V: Códigos Reed-Solomon

Byte borrado que hace colapsar la


capacidad de corrección del sistema
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

1
2
3
4
5
6
7
8
9

Evento de error en ráfaga límite

Figura 5.6 Evento de error en ráfaga límite para el sistema de codificación del CD

En el gráfico el eje horizontal es el orden secuencial temporal de los bytes


transmitidos, mientras que verticalmente se lee la palabra reordenada por el
segundo decodificador RS CRS ( 32 ,28 ) . Se numeran solo 17 etapas del
“interleaving”, y solo nueve bytes de cada palabra de 28. El sistema completo
posee 112 columnas y 28 filas. Como tal sería el arreglo de palabras que el
primer decodificador comunica al segundo. Cada palabra es desplegada
colocando sus bytes con desplazamientos de 4D, siendo D la longitud de cada
byte. La primer palabra proveniente del código RS CRS ( 32 ,28 ) por ejemplo se
ubica en las posiciones numeradas (1,1), (2,5), (3,9), (4,13) etc. indicadas con
un rayado oblícuo. Aquí se realiza el truncamiento y descarte de los 4 bytes de
redundancia. En un evento de dos palabras de 32 bytes con error detectado, la
segunda palabra con error, y por lo tanto borrada, se ubicaría en las posiciones
numeradas (1,2), (2,6), (3,10), (4,14), etc., y así sucesivamente.
Cuando el primer decodificador, el del código RS CRS ( 32 ,28 ) , recibe una
palabra de 32 bytes, le aplica el cálculo del síndrome, y si lo encuentra distinto
de cero, en lugar de corregir, anula los 32 elementos. De esta manera, y como a
continuación debe aplicar el proceso de entrelazado de datos, aloja 28 de los 32
elementos, pensados como una columna de 28 bytes, en 28 diferentes palabras,
de manera que como se explicó anteriormente, el primer byte va a ser el primer
byte de la palabra 1, el segundo byte es el segundo byte de la palabra 5, el tercer
byte es tercero en la palabra 9, y así sucesivamente. Los 28 bytes de la palabra
de 32 bytes recibida ocupan uno de los 28 bytes en cada una de las 28 diferentes
palabras, al producirse el truncado de los 4 bytes de redundancia agregados por
el primer codificador. Si el evento de error fuera una ráfaga de 32 bytes, este

235
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

evento, que en principio no es corregible por el sistema, se transformaría gracias


al entrelazado de datos en una serie de 28 palabras que tienen cada una, un
único byte errado, siendo así corregibles por la acción del segundo
decodificador CRS ( 28 ,24 ) . El procedimiento de borrado de palabras con error
no es muy eficiente si en esa palabra solo había unos pocos errores, porque el
primer decodificador anula bytes válidos, pero si efectivamente hubo una ráfaga
de errores, el procedimiento si es eficaz.
Cuando sucede una ráfaga de 17 palabras equivocadas, cada una de 32 bytes,
que puede visualizarse como un evento de error sobre las 17 primeras columnas
de la figura 5.6, se produce el borrado de cinco bytes a la altura de la columna
17 del arreglo, que pertenecen a la misma palabra a ser decodificada por el
segundo de- codificador. Esa columna esta constituida por los primeros bytes de
las palabras numeradas 1, 5, 9, 13 y 17. El decodificador del código RS
CRS ( 28 ,24 ) no puede corregir ese evento de error. Luego se concluye que el
sistema es capaz de corregir una ráfaga de 16 palabras de error, de 32 bytes cada
una, que se transforman en una cantidad de bits de mensaje igual a:

16x24x8 3072bits

Como se observa, el mecanismo de entrelazado de datos le permite al sistema


desplegar su alta capacidad de corrección de errores. Esto se diferencia del caso
en que los dos códigos, el RS CRS ( 32 ,28 ) y el RS CRS ( 28 ,24 ) se concatenen
sin este proceso en medio de ellos. En este caso, como se explicó anteriormente,
si la palabra recibida de 32 bytes tiene mas de dos errores, hace colapsar al
primer decodificador, el cual comunica una palabra de 28 bytes, que es una
versión truncada, pero intacta respecto de la recibida, al segundo decodificador,
pero si los errores no estaban en la parte truncada, sino en la relevante, sigue
habiendo mas de dos errores en la palabra que tiene que decodificar el segundo
decodificador, que también entonces colapsa en su accionar. Así el sistema tiene
una capacidad similar a la de cada uno de los componentes de la concatenación.
Los códigos Reed-Solomon demuestran una fuerte capacidad de corrección,
especialmente útil en sistemas donde el ruido se produce en ráfagas, como el
caso de los sistemas de transmisión móviles o el proceso de lectura del CD. La
naturaleza no binaria de sus componentes permite la corrección de un gran
número de bits, dado que la misma se efectúa sobre un elemento del
correspondiente campo de Galois, es decir, sobre un grupo entero de bits. Esta
capacidad de corrección de errores aumenta enormemente si los códigos se usan
en configuración concatenada, y combinados con la técnica de entrelazado de
datos o “interleaving”, que tiene la particularidad de hacer que el ruido en
ráfagas sea distribuido en diferentes sucesivas palabras, y adopte así un
comportamiento gaussiano.

236
Capítulo V: Códigos Reed-Solomon

Bibliografía y Referencias
1 Reed, I. S. y Solomon, G., “Polynomial codes over certain finite fields,” J.
Soc. Ind. Appl. Math., 8, págs. 300-304, 1960.

2 Lin, S. y Costello, D. J., Jr., Error Control Coding: Fundamentals and


Applications, Prentice Hall, inc. Englewood Cliffs, New Jersey, 1983.

3 Blaum, M., A course on error correcting codes, 2001.

4 Berlekamp, E. R., Algebraic Coding Theory, McGraw-Hill, New York,


1968.

5 Chien, R. T., “Cyclic decoding procedure for the Bose-Chaudhuri-


Hocquenghem codes,” IEEE Tans. Inf. Theory, IT-10, Págs. 357-363,
Octubre 1964.

6 Massey, J. L., “Step-by-step decoding of the Bose-Chaudhuri-


Hocquenghem codes,” IEEE Trans. Inf. Theory, IT-11, Págs. 580-585,
Octubre 1965.

7 Berlekamp, E. R., “On decoding binary Bose-Chaudhuri-Hocquenghem


codes,” IEEE Trans. Inf. Theory, IT-11, Págs. 577-580, Octubre 1965.

8 Sklar, B., Digital Communications, Fundamentals and Applications,


Prentice Hall, 1993.

9 Wicker, S. B. and Bhargava, V. K., Reed-Solomon Codes and Their


Applications.

10 Peek, J. B. H., “Communications Aspects of the Compact Disc Audio


System," IEEE Communications Magazine, Vol. 23, No 2, Febrero 1985.

11 Hoeve, H., Timmermans, J. and Vries, L. B., “Error correction and


concealment in the Compact Disc system," Philips tech. Rev. 40, No 6,
Págs. 166-172,1982.

12 Immink, K. A. S., Coding Techniques for Digital Recorders, Englewood


Cliffs, N. J.: Prentice Hall Internacional,1991.

237
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

13 Heemskerk, J. P. J. y Immink, K.A.S., "Compact Disc: System Aspects


and Modulation,".Philips Technical Review, Vol. 40, Págs. 157-164,1982.

14 Immink, K. A. S, Nijboer, J.G., Ogawa, H. y Odaka, K., “Method of


Coding Binary Data,” United States Patent 4,501,000. Febrero 1985.

15 J. Castiñeira Moreira, G. Markarian, B. Honary, An Improvement of


Write/Read Characteristics in Optical Storage Systems (E. G. Compact Discs
and CD-Roms), Tesis de Maestría, Universidad de Lancaster, Lancaster,
Reino Unido, 1996.

16 Blahut, R. E., “Transform techniques for error control codes,” IBM J. Res.
Dev. 23 (3), Mayo 1979.

17 Sloane, N. J. A. y Peterson, W. W. , The Theory of Error-Correcting


Codes, North-Holland, 1998.

18 Adámek, J., Foundations of coding: Theory and Applications of Error-


Correcting Codes with an Introduction to Cryptography and Information
Theory, Wiley Interscience, 1991.

19 Massey, J. L., Blahut, R. E., Communications and cryptography: Two


sides of one tapestry, Kluwer Academic Publishers, 1994.

238
Capítulo V: Códigos Reed-Solomon

Problemas
5.1) Un código cíclico definido sobre GF( 4 ) tiene como polinomio
generador g( X ) X  1 , y una longitud de código n 3 . Los elementos
del campo finito son generados según la ecuación polinomial
2
α  α  1 0 . Encuentre la matriz generadora del código en forma
sistemática, determine la distancia de Hamming mínima de este código, y el
vector de síndrome si el vector recibido es r ( α α α ) .
5.2)
a) Determine el polinomio generador de un código RS CRS ( n, k ) que opera
sobre el campo finito GF( 2 4 ) y que tiene una capacidad de corrección de
patrones de error de hasta t 2 errores.
b) Para el código RS del inciso a) decodifique el polinomio recibido
r ( X ) αX 3  α 11 X 7 utilizando el algoritmo de Euclides.
c) Para el código RS del inciso a) decodifique el polinomio recibido
r( X ) α8 X 5 .

5.3)
Determine el polinomio generador de un código RS CRS ( n, k ) que opera
sobre el campo finito GF( 2 4 ) y que tiene una capacidad de corrección de
patrones de error de hasta t 3 errores.

a) Determine los valores de n y k .

5.4) Para el código RS del problema 5.3, decodifique el vector recibido



r 000 α 7 00α 3 00000 α 4 00 utilizando los algoritmos de Euclides y de
Berlekamp-Massey.

5.5) Considere el código RS que opera sobre GF( 2 3 ) , con tres símbolos de
información k 3 , longitud de código n 7 , y polinomio generador
g( X ) ( X  α 2 )( X  α 3 )( X  α 4 )( X  α 5 ) , donde α es raíz del
polinomio primitivo p( X ) 1  X  X 3 usado para representar los
elementos del campo finito GF( 2 3 ) .
a) ¿Cuántos símbolos en error puede corregir este código?
b) Decodifique el vector recibido r 0110111 para determinar cual fue el
vector de código transmitido.

239
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

5.6) Los símbolos de redundancia de un código RS de tasa ½ que opera


sobre GF( 5 ) y que tiene una longitud de código n 4 están dados por las
expresiones:

c1 4 k1  2 k 2
c2 3 k1  3 k 2

a) Encuentre el número de vectores de código, la matriz generadora y la


distancia de Hamming mínima del código;
b) Muestre que el vector 1134 no es vector del código, y encuentre el vector
de código mas próximo a este vector.

5.7) Un código RS extendido definido sobre GF ( 2 2 ) tiene la siguiente


matriz generadora:
ª1 α 1 0 0 º
G ««1 α 2 0 1 0 »»
«¬1 1 0 0 1 »¼

a) ¿Cuál es la tasa del código, y su distancia de Hamming mínima?



b) ¿Es r α 2 α α 0 1 un vector de este código?
c) El vector recibido r 0
α 1 α2 0 contiene un error simple.
Encuentre su posición y valor.

5.8) Considere un código RS acortado CRS ( 8,4 ) que opera sobre el campo
de Galois GF ( 2 4 ) y que tiene una capacidad de corrección de errores
t 2.
a) Obtenga su polinomio generador, y luego el vector de código que le

corresponde al vector de mensaje m α 4 α 7 0 α 5 ;
b) Considere ahora que este vector de código ingresa a un segundo código
acortado RS CRS (12 ,8 ) , que opera también sobre el mismo campo finito, y
con el mismo polinomio generador y capacidad de corrección de error que el
código acortado RS CRS ( 8,4 ) . Determine el vector concatenado resultante;
c) Utilice el algoritmo de decodificación de Euclides o bien el de Berlekamp-
Massey para decodificar el vector concatenado resultante del inciso b)
cuando es afectado por el patrón de error e( X ) X 3  X 10  X 11 o el
patrón de error e( X ) X  X6  X9 .

240
Capítulo V: Códigos Reed-Solomon

5.9) El sistema concatenado del problema 5.8 es construido ahora utilizando


entre los codificadores usados un entrelazador convolucional como el que se
ve en la figura P.5.1. Luego de aplicar el primer codificador sobre una
palabra de mensaje se genera una palabra de código de 8 elementos El
primer elemento de esta palabra codificada es ubicado en la primera posición
de la primera columna del mezclador de datos, el segundo elemento de esta
palabra es ubicado segunda occisión de la segunda columna del mezclador
de datos, y así sucesivamente. Las palabras resultantes son ingresadas al
segundo codificador para generar una palabra final de 12 elementos.
Determine la capacidad de control de errores incrementada del sistema
concatenado con entrelazador respecto del sistema concatenado directamente
implementado en el problema 5.8.

1 ½ 1
° Palabra
2 ° 2 entrante al
código RS
°
Palabra de 3 ° 3 (12,8)
código °
generada 4 4 Ÿ
por el
°° Ÿ
código RS 5 ¾ 5
(8,4) °
6 ° 6
7 °
° 7
8 ° 8
°

Figure P.5.1 Entrelazador convolucional para ser usado en el concatenado de dos


códigos RS

241
6
Códigos Convolucionales

Una segunda forma de aplicación de la codificación es la denominada


codificación convolucional [1]-[6]. En este tipo de codificación la información
codificada no se agrupa en bloques, sino que se genera como resultado de una
secuencia entrante que produce una secuencia de salida, donde los elementos de
la misma están de alguna manera relacionados. La secuencia de mensaje origina
una secuencia de código. Esta última posee un grado de redundancia que es
utilizada por el receptor para conocer la secuencia de mensaje, contrarrestando
el efecto del ruido en el canal. Las secuencias de código en su conjunto forman
al código convolucional Cconv , existiendo una relación biyectiva entre las
secuencias de mensaje y las secuencias de código. Como las secuencias de
mensaje se forman dentro de un espacio vectorial menor que el que le
corresponde a las secuencias de código, entonces existen más combinaciones de
secuencias de código que de secuencias mensaje, produciendo un nivel de
redundancia que permite la corrección de errores. Las secuencias de código
serán en general mas largas que las de mensaje, y dentro de ese conjunto de
secuencias válidas que pueden ser consideradas como integrantes de la tabla del
código, se elige por medio de un algoritmo adecuado cual es la secuencia de
mensaje correspondiente.
En general el proceso de codificación se realiza de manera que la decodificación
pueda ser implementada de forma estructurada, con el fin de simplificar este
proceso. En general se recurre a códigos convolucionales lineales. El alfabeto
fuente se compone de elementos que pertenecen a un campo de Galois GF( q ) .
La secuencia de mensaje se divide en vectores (trozos, subsecuencias o
segmentos) de k elementos que entran simultáneamente al codificador. Cada
vez que ingresa un vector de k elementos, el codificador emite un vector de n
elementos, siendo normalmente n ! k , que pertenecen entonces a un espacio
vectorial >GF( q )@ definido sobre GF( q ) .
n

Otra diferencia a notar entre la codificación por bloques y la convolucional es


que en esta última la información contiene memoria relativa a datos anteriores
al dato actual, de manera que los n elementos que forman la secuencia de
código no solo dependen de los k elementos presentes en el mensaje en ese
instante, sino también de grupos de k elementos anteriores. Cuanto mayor sea

243
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

el nivel de memoria, mayor será la complejidad del sistema y mayor su


capacidad de corrección de errores.
Por ser códigos lineales, los códigos convolucionales serán un subespacio de
dimensión k dentro del espacio vectorial >GF( q )@n , definido sobre un campo
de Galois GF( q ) . En la gran mayoría de los casos los elementos de entrada y
codificados pertenecen al campo binario GF( 2 ) , y los valores k 1 , n 2
son muy usados.

6.1 Circuitos secuenciales lineales


Los circuitos secuenciales lineales son empleados para la codificación
convolucional. Estos circuitos se construyen básicamente con unidades de
memoria o retardo, sumadores que operan dentro del campo de Galois GF( q ) ,
y multiplicadores de escala que multiplican según las reglas de operación del
campo de Galois GF( q ) . Estos circuitos secuenciales lineales también son
conocidos como máquinas secuenciales de estados finitos (MSEFs) [7].
La cantidad de retardos de estos circuitos define el grado de memoria del código
convolucional Cconv y su capacidad de corrección de errores. A cada unidad de
memoria le corresponde un estado de la máquina. Las variables pueden ser bits,
o grupos de bits interpretados como elementos de algún campo, grupo o anillo
donde normalmente es posible encontrar una representación binaria de los
mismos.
La caracterización de las máquinas secuenciales de estados finitos se realiza a
través de una función racional G( D ) P( D ) Q( D ) de expresiones
polinomiales desarrolladas en la variable retardo D , donde también es posible
representar las secuencias de mensaje M( D ) y las de salida o codificadas
C( D ) . En estructuras con mayor complejidad la relación entre entrada y salida,
o mensaje y código esta dada por una matriz función transferencia racional
G( D ) .
Un codificador convolucional será básicamente una estructura construida con
máquinas secuenciales de estados finitos, o circuitos secuenciales, que para una
dada secuencia de mensaje generan una secuencia código. El conjunto de todas
las secuencias código será el código convolucional Cconv .

244
Capítulo VI: Códigos Convolucionales

6.2 Definición de codificadores y códigos convolucionales

Un codificador convolucional toma una k -upla del mensaje m i como entrada y


genera una n -upla c i como salida para el mismo instante i , que no solo
depende de la k -upla entrante m i sino de varias k -uplas previas m j j  i .
c (1 )

m (1 )

c(2)

m( 2 )

c(3)

Figura 6.1 Estructura de un codificador convolucional

En la figura 6.1 se observa la estructura de un codificador convolucional que


toma dos elementos de entrada y genera tres elementos de salida en cada
instante i . Los bloques rectangulares simbolizan unidades de memoria o retardo
de duración D , que se define como la unidad de tiempo de la máquina, y que
normalmente coincide con la duración de un elemento del campo de Galois
GF( q ) . Las salidas están normalmente asociadas a sumadores, que en general
operan aplicando la suma del correspondiente campo de Galois GF( q ) . En
ambos casos, el campo de Galois GF( q ) es aquel sobre el que la máquina de
estados finitos esta definida. En general se puede decir que existen
codificadores equivalentes, es decir, estructuras diferentes de codificadores
convolucionales que generan el mismo código convolucional.
La relación entre el número de elementos de la secuencia entrante k y el
número de elementos de la secuencia saliente n define lo que se llama la tasa
del código k / n . Para el codificador de la figura 6.1 este valor es k / n 2 / 3 .
Otro tipo de codificador convolucional es por ejemplo el de la figura 6.2, donde
la estructura se dice que es sistemática, porque los símbolos de entrada aparecen
inalterados en la salida del codificador, y la tasa del código es k / n 1 / 2 .

245
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

c (1 )

c(2)

Figura 6.2 Estructura de un codificador convolucional sistemático de tasa


k / n 1/ 2

Para analizar las características de este tipo de codificación considérese por


ejemplo el código generado por el siguiente codificador convolucional.

c (1 )

m S1 S2

c(2)

Figura 6.3 Codificador convolucional para un código de tasa k / n 1/ 2

En este codificador las operaciones son las definidas en el campo GF( 2 ) y la


k -upla de entrada es simplemente 1 bit de mensaje m en cada instante i que
genera como salida un vector con dos bits c i(1 ) y c i( 2 ) . Se tiene entonces una
secuencia de entrada mi ( m0 , m1 , m2 ,...) que provoca a la salida dos
secuencias c i(1) ( c 0(1 ) , c1(1 ) , c 2(1 ) ,...) y c i(2) ( c0( 2 ) , c1( 2 ) , c 2( 2 ) ,...) que pueden
ser obtenidas como convolución entre la secuencia de entrada y las dos
respuestas impulsivas del codificador asociadas a cada salida. Las respuestas
impulsivas se pueden obtener aplicando el mensaje de entrada m (1,0,0,...) y
observando las secuencias de salida. En general el codificador tiene K unidades
de memoria, contando unidades en paralelo (que ocurre cuando k ! 1 ) como
una sola unidad, por lo cual las respuestas impulsivas ocupan como máximo
K  1 unidades de tiempo y son secuencias que se describen como:

246
Capítulo VI: Códigos Convolucionales

g (1 ) ( g 0(1 ) , g1(1 ) , g 2(1 ) ,..., g K(1 ) )


g(2 ) ( g 0( 2 ) , g1( 2 ) , g 2( 2 ) ,..., g K( 2 ) )
(6.1)

Se puede aplicar este cálculo al codificador de la figura 6.3, considerando que el


sistema se inicia en el estado todos ceros ( 00 ) . El estado del codificador para
cualquier instante se describe con el vector de estado S1 ( s01 ,s11 ,s21 ,...) y
S2 ( s02 ,s12 ,s22 ,...) . La evolución del codificador frente a esta entrada de
datos puede verse en la siguiente tabla:

i m S1 S2 c (1 ) c(2 )
0 1 0 0 1 1
1 0 1 0 0 1
2 0 0 1 1 1
3 0 0 0 0 0

Tabla 6.1 Secuencias generadoras

La expresión K  1 se denomina el alcance (“constraint length”) del código


convolucional, expresado en unidades de tiempo, por ser el mayor número de
unidades de tiempo que un bit de la secuencia de entrada del codificador puede
influir las secuencias de salida.
En caso de ingresar con la entrada impulsiva, entonces c (1 ) g (1 ) y
c( 2 ) g ( 2 ) . Para este ejemplo:

g (1 ) (101 )
g( 2 ) (111 )

se puede ver que la forma de la respuesta describe las conexiones de la


estructura del codificador, habiendo un ´1´ cuando la variable esta conectada a
la salida, mientras que la conexión ausente se representa con un ´0´.
Las respuestas impulsivas se conocen como secuencias generadoras del código.
En este sentido las ecuaciones de codificación adoptan la forma:

c (1 ) u g (1 )

247
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

c( 2 ) u g(2 )
(6.2)

donde el operador denota convolución discreta operada en módulo 2. Esto


significa que para un número entero l t 0 :

st
c l( j ) ¦ ml i g i( j ) ml g 0( j ) ml 1 g1( j )  ...  ml K g K( j )
i 0
(6.3)

Para el caso particular del ejemplo visto:

2
c l(1 ) ¦ ml i g i(1 ) m l  m l 2
i 0
2
c l( 2 ) ¦ ml i g i( 2 ) ml  ml 1  ml 2
i 0

Las dos secuencias codificadas se concatenan en una única secuencia que es la


secuencia de salida o secuencia de código

(1 ) ( 2 ) (1 ) ( 2 ) (1 ) ( 2 )
c c 0 c 0 , c1 c1 , c 2 c 2 ,... .

6.3 Descripción en el plano transformado D


Un modo mas conveniente de describir la operación de los códigos
convolucionales es operando en un dominio transformado espectral en donde la
convolución en el dominio del tiempo ( ) pase a ser una multiplicación. En este
dominio transformado donde la variable de descripción es el retardo D , las
secuencias tienen expresiones polinómicas donde el exponente de la variable D
indica la posición del elemento dentro de la secuencia, y la operación
convolución discreta en el campo correspondiente pasa a expresarse como un
producto. La secuencia de mensaje m (l) ( m0( l ) , m1( l ) , m2( l ) ,...) se ve
representada por la expresión polinómica:

M(l )(D) m0( l )  m1( l ) D  m2( l ) D 2  ....


(6.4)

248
Capítulo VI: Códigos Convolucionales

El retardo D significa el desplazamiento del elemento en el tiempo y actúa de


manera similar al término Z 1 de la transformada Z .
De la misma forma para las respuestas impulsivas:

g i(j) ( g i(0j ) , g i(1j ) , g i(2j ) ,...)


(6.5)

G(j)
i (D) g i(0j )  g i(1j ) D  g i(2j ) D 2  ...
(6.6)

Las secuencias de salida en forma polinómica se pueden obtener de las


expresiones anteriores. Así para el caso del código convolucional del ejemplo
de la figura 6.3:

C (1 )(D) M( D )G (1 )(D) M( D )(1  D 2 ) c 0(1 )  c1(1 ) D  c 2(1 ) D 2  ...


C ( 2 )(D) M( D )G ( 2 )(D) M( D )(1  D  D 2 ) c0( 2 )  c1( 2 ) D  c 2( 2 ) D 2  ...
(6.7)

La multiplexación de los polinomios de salida C (1 )(D) y C ( 2 )(D) permite


evaluar la secuencia código:

Cm (D) C(1) (D2 )  DC( 2) (D2 )


(6.8)

En las expresiones que corresponden a las respuestas impulsivas se vuelve a


notar que el término en el correspondiente registro conectado se representa con
un ´1´ en la expresión polinómica, mientras que la ausencia de conexión indica
que el término en la potencia de D correspondiente no existe (esto corresponde
a un cero ´0´). Las expresiones polinómicas de las respuestas impulsivas pueden
considerarse las expresiones de polinomios generadores de la secuencia de la
correspondiente salida.
En el caso de estructuras de codificadores convolucionales donde existe mas de
una entrada y salida, la relación entre la entrada i y la salida j esta dada por la
expresión de la correspondiente función transferencia Gi( j ) ( D ) . En esa
conexión, la cantidad de registros o retardos D existentes se denomina la
longitud del registro. Ese valor de longitud de registro es igual al orden del
polinomio generador que corresponde al par entrada-salida que se analiza.
Debido a que para que tenga sentido de existir el último registro debe estar

249
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

conectado a al menos una salida, se define la longitud K i del i -ésimo registro


como [1]:

Ki ^
max grado g i( j ) ( D )
1d j dn
` 1di dk
(6.9)

En función de la definición anterior se determina el orden de memoria del


codificador K como:

K max K i
1di dk 1d j dn
^
max grado g i( j ) ( D ) `
1di dk
(6.10)

Si M ( i ) ( D ) es la secuencia de entrada en forma polinómica que representa a la


entrada i y C( j )( D ) el polinomio que representa a la secuencia
correspondiente a la salida j , el polinomio Gi( j ) ( D ) es la función transferencia
que vincula a la entrada i con la salida j . En una estructura mas general, y
habiendo k entradas y n salidas para el codificador convolucional, habrá
entonces kn funciones transferencia que se pueden ordenar en forma matricial.

ªG1(1 ) ( D ) G1( 2 ) ( D )  G1( n ) ( D )º


« (1 ) (2) (n) »
G( D ) «G2 ( D ) G2 ( D )  G2 ( D )»
«    »
« (1 ) (2) (n)
»
¬«Gk ( D ) Gk ( D )  Gk ( D )»¼
(6.11)

Un código convolucional Cconv ( n, k , K ) tiene como secuencia de código en


forma polinómica a la secuencia:

C( D ) M( D )G( D )
(6.12)

donde:

M( D ) M (1 )

( D ),M ( 2 ) ( D ),...,M ( k ) ( D )
(6.13)

250
Capítulo VI: Códigos Convolucionales

C( D ) C (1)
( D ),C ( 2 ) ( D ),...,C ( n ) ( D )
(6.14)

de forma tal que luego de realizar el multiplexado:

Cm ( D ) C(1) ( D n )  DC (2) ( D n )  ...  D n 1C(n) ( D n )


(6.15)

Ejemplo 6.1. Para el código convolucional Cconv ( 2,1,2 ) que genera el


codificador de la figura 6.3, determine la expresión polinómica de la salida, si la
entrada es la secuencia m (100011 ) .
La secuencia de entrada en formato polinómico es:

M( D ) 1  D 4  D 5

La matriz de transferencias generadoras es:

G( D ) >1  D 2
1  D  D2 @
Luego:

C( D ) C (1 )
(D) C(2 )(D) >1  D 4
@>
 D5 1  D2 1  D  D2 @
>1  D 2 4
D D D D 5 6 7
1DD D D 2 4 7
@
c (1 ) 10101111

c( 2 ) 11101001
la secuencia codificada será:

c 11,01,11,00,11,10,10,11 .
Es de notar que las secuencias de salida del codificador tienen K bits mas que
la secuencia de entrada, y que las secuencia codificada tiene 2K mas. La razón
es que la determinación de las secuencias involucra los polinomios generadores
del código, que a su vez son los polinomios que representan las respuestas

251
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

impulsivas del generador. Es como si se hubieran añadido K ceros al fin de la


secuencia de entrada.

Pasando ahora al codificador convolucional que genera un código Cconv ( 3 ,2 ,1 )


que se muestra en la figura 6.4, para el cual un vector de entrada de dos bits que
ingresa al codificador al mismo tiempo genera un vector de salida de tres bits
en ese mismo instante de tiempo. La memoria esta constituida por una celda en
cada rama de la estructura.

c (1 )

m (1 ) S1( 1 )

c(2)

m( 2 )

c(3)

Figura 6.4 Codificador convolucional de un código de tasa k / n 2/ 3

El vector de entrada es de la forma:

m m (1 )
0
m0( 2 ) , m1(1 ) m1( 2 ) , m2(1 ) m2( 2 ) ,...
(6.16)

construido con las secuencias de entrada:

m (1) m (1 ) (1 ) (1 )
0 , m1 , m2 ,... y
m (2) m (2) (2) (2)
0 , m1 , m2 ,...
(6.17)

las respuestas al impulso serán descriptas como:

252
Capítulo VI: Códigos Convolucionales

g i( j ) g ( j) ( j) ( j)
i ,0 , g i ,1 ,..., g i ,st
(6.18)

que relacionan la entrada i con la salida j . Estas respuestas al impulso se


obtienen como resultado de la entrada impulsiva:

i m (1 ) s1(1 ) s1( 2 ) c (1 ) c(2) c(3)

0 1 0 0 1 1 1
1 0 1 0 1 1 0
2 0 0 0 0 0 0

Tabla 6.2 Respuestas al impulso m (1 )

en este caso la otra entrada es nula, mi( 2 ) 0 , i .

i m( 2 ) s1(1 ) s1( 2 ) c (1 ) c ( 2 ) c ( 3 )

0 1 0 0 0 0 1
1 0 1 0 1 0 1
2 0 0 0 0 0 0

Tabla 6.3 Respuestas al impulso m ( 2 )

En este caso la otra entrada es nula, mi(1 ) 0 , i .

Luego:

g1(1 ) 1 1 g1( 2 ) 1 1 g1( 3 ) 1 0


g 2(1 ) 0 1 g 2( 2 ) 0 0 g 2( 3 ) 1 1
y las ecuaciones de codificación se expresan como:

c l(1 ) ml(1 )  ml(11)  ml(21)

253
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

c l( 2 ) ml(1 )  ml(11)
c l( 3 ) ml(1 )  ml( 2 )  ml(21)

siendo la secuencia de salida de la forma:

c c (1 )
0
c0( 2 ) c0( 3 ) ,c1(1 ) c1( 2 ) c1( 3 ) ,c 2(1 ) c 2( 2 ) c 2( 3 ) ,...

las expresiones en el dominio transformado D para los polinomios generadores


son:

G1(1 ) ( D ) 1  D G1( 2 ) ( D ) 1  D G1( 3 ) ( D ) 1


G2(1 ) ( D ) D G2( 2 ) ( D ) 0 G2( 3 ) ( D ) 1  D

Entonces si por ejemplo el vector de entrada fuera:

m (1 ) 101 m( 2 ) 011
La representación polinómica es:

M(1 ) ( D ) 1  D 2 M( 2 ) ( D ) D  D2

C (1 ) ( D ) M (1 ) ( D )G1(1 ) ( D )  M ( 2 ) ( D )G2(1 ) ( D ) (1  D 2 )(1  D )  ( D  D 2 )D 1  D

C(2 )(D ) M (1 ) ( D )G1( 2 ) ( D )  M ( 2 ) ( D )G2( 2 ) ( D )


(1  D 2 )(1  D )  ( D  D 2 )0 1  D  D2  D3
C ( 3 ) ( D ) M (1 ) ( D )G1( 3 ) ( D )  M ( 2 ) ( D )G2( 3 ) ( D )
(1  D 2 )(1 )  ( D  D 2 )(1  D ) 1  D  D 2  D 3

La secuencia de salida es entonces:

c 111,111,011,011
La estructura del codificador puede ser variada y contener diferentes niveles de
memoria en cada rama del mismo, siendo cada uno de valor K i . En este caso la

254
Capítulo VI: Códigos Convolucionales

memoria del sistema la define la máxima de las longitudes de los registros. Si


K i es el valor de la longitud del registro i -ésimo, el orden de la memoria se
define como [1]:

K max K i
1di dk
(6.19)

En un código convolucional Cconv ( n, k , K ) el vector de entrada representa una


secuencia de kL bits de información y la palabra de código contiene
N nL  nK n( L  K ) bits. Los nK bits agregados se relacionan con la
memoria del codificador. La cantidad

nA n( K  1 )
(6.20)

es interpretada como el número máximo de bits de salida que un bit entrante


puede afectar, siendo n A el alcance del código expresado en bits.
Debido a que en estos codificadores se ingresa una vector de k bits que se
codifica con un vector de n bits, la tasa del código convolucional se dice que es
k / n . Para una secuencia de mensaje finita de longitud L sin embargo la
secuencia de salida tendrá n( L  K ) bits, requiriendo el ingreso de ceros luego
de que los L vectores de k bits hayan ingresado para producir el vaciado de los
registros. En este sentido el código operaría como un código de bloques en cuyo
caso la tasa sería:

kL
n( L  K )
(6.21)

que tiende a ser igual a k / n si se cumple que L !! K .

255
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

6.4 Representaciones para los codificadores


convolucionales
6.4.1 Representación de conexiones

Como se ve en la figura 6.3, que representa un codificador convolucional


Cconv ( 2,1,2 ) , cada uno de los m bits de la secuencia de entrada se desplaza a
los registros en cada cambio de reloj, y la salida es muestreada dos veces
generando los valores de la secuencia de salida. Los valores de la salida
dependen de la forma en que las conexiones están realizadas. La secuencia de
salida será diferente si las conexiones de los registros se cambian. Una
descripción de un código convolucional emplea un conjunto de vectores
conexión donde la existencia de la misma se representa con un uno ´1´, mientras
que la ausencia de conexión se representa con un cero ´0´. Por ejemplo para el
codificador de la figura 6.3 los vectores de conexión g (1) y g (2) que describen
las ramas superior e inferior son respectivamente:

g (1) = 1 0 1
g (2) = 1 1 1

La secuencia de salida para un dado vector de entrada se analiza en la tabla 6.4.


El vector de entrada es m (100011 ) , y se analizan los valores de los
contenidos del registro, el estado actual, el estado siguiente o próximo y las
secuencias de salida c (1 ) y c ( 2 ) :

entrada m i estado en t i estado en t i 1 c (1 ) c(2 )


- 00 00 - -
1 00 10 1 1
0 10 01 0 1
0 01 00 1 1
0 00 00 0 0
1 00 10 1 1
1 10 11 1 0
0 11 01 1 0
0 01 00 1 1
0 00 00 0 0

Tabla 6.4 Secuencias de salida, codificador de la figura 6.3

256
Capítulo VI: Códigos Convolucionales

La secuencia de salida es entonces c (1101110011 101011 ) . La tabla 6.5


permite la evaluación adecuada del diagrama de estados del sistema.

entrada m i estado en t i estado en t i 1 c (1 ) c(2 )


- 00 00 - -
0 00 00 0 0
1 00 10 1 1
0 01 00 1 1
1 01 10 0 0
0 10 01 0 1
1 10 11 1 0
0 11 01 1 0
1 11 11 0 1

Tabla 6.5 Secuencias para la construcción del diagrama de estados

6.4.2 Representación por diagrama de estados

El estado de un código convolucional 1 / n se define como el contenido de los


K registros de estado. El próximo estado de ese registro se establece
desplazando una unidad a la derecha el registro actual y reemplazando el
registro vaciado con el valor del bit de entrada. El diagrama de estados es una
forma de representación de la evolución de las secuencias de estado para estos
códigos. El codificador analizado en este ejemplo tiene un diagrama de estados
como el que se ve en la figura 6.5 [2, 4].
0/00

1/1 1 Sa = 0 0 0/1 1

1/0 0
Sb = 1 0 Sc = 0 1
0/0 1

Sd = 1 1 0/1 0
1/1 0

1/0 1
Figura 6.5 Diagrama de estados para un codificador convolucional

257
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

El sistema se analiza considerando que existen cuatro estados representados por


Sa 00 ,Sb 10 ,Sc 01 y Sd 11 . Existen solo dos transiciones que
emergen de cada estado y que tienen que ver con las dos posibilidades de
entrada binaria existentes, ‘1’ o ‘0’. La convención empleada para describir la
transición entre estados es de la forma entrada/salida.
Una característica importante de estos códigos se observa en el diagrama de
estado. No es posible pasar de un estado a otro, en forma arbitraria. Esto resulta
del mecanismo de memoria que el sistema tiene. Este grado de memoria será
útil para definir las secuencias que son del código y las que no lo son,
permitiendo la corrección de errores.

6.4.3 Representación por Trelis (“Trellis”) para un código


convolucional

Una forma adicional de representación para sistemas que emplean máquinas


secuenciales de estados finitos es la denominada representación por árbol [1, 2,
4]. En esta representación se pone en evidencia la manera en que la máquina
comienza la secuencia, pero no es sin embargo muy adecuada para describir la
estructura repetitiva de la misma. Una propiedad importante de los códigos
convolucionales es que precisamente tienen un inicio particular, luego del cual
comienza a producirse una estructura de transiciones repetitiva. La estructura
del sistema se repite después de K  1 transiciones, donde K  1 es el alcance
asociado a estos códigos. La descripción del diagrama de estados es buena para
poner en evidencia la estructura repetitiva, pero no la fase inicial. Por el
contrario la descripción en árbol define claramente la fase inicial, pero no es
buena para evidenciar la estructura repetitiva. Una representación que es capaz
de evidenciar ambos comportamientos es el denominado trelis, (un diagrama en
forma enrejada, llamado “trellis” en Inglés). La figura 6.6 es la representación
en trelis del código convolucional Cconv ( 2,1,2 ) estudiado en este ejemplo:

258
Capítulo VI: Códigos Convolucionales

t1 t2 t3 t4 t5 t6
0/00 0/00 0/00 0/00 0/00
Sa = 00
1/11 1/11 1/11 1/11 1/11

0/11 0/11 0/11


Sb = 10 1/00 1/00 1/00

0/01 0/01 0/01 0/01

Sc = 01

1/10 0/10 0/10 0/10


1/10 1/10 1/10

Sd = 11
1/01 1/01 1/01

Figura 6.6 Trelis para el código convolucional de figura 6.3

Se utiliza la misma convención para la descripción de las transiciones que se


empleó en el diagrama de estados. Existen 2 K posibles estados para ser
representados. Como se observa, la estructura se torna periódica después del
instante t 3 . Existen también dos ramas que emergen de cada estado
pertenecientes a las dos posibilidades de bits de entrada, y dos ramas que
arriban a cada estado.

6.5 Códigos convolucionales de forma sistemática


En todo código sistemático el mensaje se visualiza en la secuencia de salida, es
decir:

c( i ) m( i ) , i 1,2,..., k
(6.22)

§1 j i
g i( j ) ¨¨
©0 j zi
(6.23)

La función transferencia para un código convolucional sistemático es de la


forma:

259
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

ª1 0  0 G1( k 1 ) ( D ) G1( k 2 ) ( D )  G1( n ) ( D )º


« ( k 1 ) ( k 2 ) »
«0 1  0 G2 ( D ) G2 ( D )  G2( n ) ( D )»
G( D )
«      »
« ( k 1 ) ( k 2 ) (n)
»
«¬0 0  1 Gk ( D ) Gk ( D )  Gk ( D )»¼
(6.24)

Ejemplo 6.2: obtenga la función transferencia del código convolucional


sistemático de la figura 6.7 y la secuencia de salida para la secuencia de entrada
m (1101 ) .

c (1 )

c(2 )

Figura 6.7 Codificador convolucional sistemático

La función transferencia es de la forma:

G( D ) >1 D  D @
2

Mientras que la secuencia de salida para la secuencia de entrada dada, que en


forma polinómica es m( D ) 1  D  D 3 , se evalúa haciendo:

C(1) (D) M(D)G(1) (D) 1  D  D3


C( 2) (D) M(D)G( 2) (D) 1 D  D . D  D
3 2
D  D3  D4  D5

Luego:

c 10,11,00,11,01,01

260
Capítulo VI: Códigos Convolucionales

En el caso de los códigos convolucionales de forma sistemática no es necesario


tener un decodificador inversor que deduzca la secuencia de entrada. Para los
códigos de forma no sistemática debe suceder que exista una matriz nxk
G 1 ( D ) de manera que se cumpla que:

G(D) $ G 1 (D) Ik Dl para algún l t 0 ,


(6.25)

donde I k es la matriz identidad kxk .


Para un código convolucional Cconv ( n,1, K ) se puede verificar que su matriz
G( D ) tiene inversa G 1 ( D ) si y solo si [16]:

^ `
MCD G(1 ) ( D ),G( 2 ) ( D ),...,G( n ) ( D ) Dl ; l t0
(6.26)

Un código convolucional que esta caracterizado por su matriz transferencia


G( D ) que tiene matriz inversa G 1 ( D ) tiene también como propiedad el
hecho de ser no catastrófico.

Ejemplo 6.3: Verifique que el siguiente código convolucional Cconv ( 2,1,2 ) es


catastrófico.

g (1 ) ( D ) 1  D
g ( 2 ) ( D ) 1  D2

Dado que:

^
MCD G(1 ) ( D ),G( 2 ) ( D ) ` 1  D z Dl ; l t0

y considerando como entrada al sistema la secuencia infinita:

1
1  D  D 2  ...
1D

Las salidas de este codificador serán:

c (1 ) ( D ) 1

261
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

c(2 )(D) 1  D

que resulta en la salida finita c 11,01 .


De esta manera si habiéndose transmitido por ejemplo la secuencia anterior,
c 11,01 , que resulta ser la salida de una secuencia de entrada infinita, y
como consecuencia de los errores en el canal la secuencia transmitida se
transformara en la secuencia todos ceros, el sistema decodificará esta secuencia
como c 00 ,00 , cometiendo entonces un número infinito de errores. Una
característica adicional de los códigos catastróficos es que en su diagrama de
estados presentan lazos de peso nulo constituidos por estados diferentes del que
conforma al lazo Sa Sa .
Una característica muy importante de los códigos convolucionales lineales y
sistemáticos es que son inherentemente no catastróficos [16].

6.6 Estructura general de máquinas secuenciales de estados


finitos con respuesta impulsiva finita e infinita
6.6.1 Máquinas secuenciales de estados finitos de respuesta impulsiva
finita

La estructura general de un bloque de respuesta impulsiva finita que forma parte


de los codificadores convolucionales (generalmente de forma no sistemática) es
como el que se ve en la figura 6.8:

a1 a2 a2 an

m S0
S1 S2 Sn

Figura 6.8 Maquina secuencial de estados finitos y respuesta impulsiva finita

262
Capítulo VI: Códigos Convolucionales

Los coeficientes de la estructura pertenecen en general al campo donde se


definen las operaciones del codificador, ri  GF( q ) . En un caso particular por
ejemplo adoptarán valores 0 o 1, si dicho campo es el campo binario GF( 2 ) .
La función transferencia para este bloque de respuesta impulsiva finita puede
demostrarse que es igual a:

C( D )
G( D ) a0  a1 D  a2 D 2  ...  an D n
M( D )
(6.27)

La función transferencia de un caso particular de esta estructura se deduce en la


próxima sección. El método demostrativo para obtener la ecuación anterior es
fácilmente generalizado en función de ese caso particular.

6.6.2 Máquinas secuenciales de estados finitos de respuesta impulsiva


infinita

En el caso de las máquinas de respuesta impulsiva infinita se adicionan a la


estructura de respuesta impulsiva finita coeficientes de realimentación sobre
cada estado de la misma. El esquema general es el que se muestra en la figura
6.9:

a0 a1 a2 an
m S0
S1 S2 Sn

f1 f2 fn

Figura 6.9 Máquina secuencial de estados finitos y respuesta impulsiva infinita

263
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Puede demostrarse que la función transferencia de este bloque es la siguiente:

C( D ) a0  a1 D  a2 D 2  ...  an D n
G( D )
M( D ) 1  f1 D  f2 D 2  ...  f n D n
(6.28)

Las máquinas secuenciales de estados finitos forman parte de la estructura de


los codificadores convolucionales. Entre los codificadores convolucionales, se
encuentran los que generan códigos convolucionales de forma sistemática y no
sistemática. Existe una relación entre estas dos formas para el mismo código
convolucional.

6.7 Matriz función transferencia de estados. Obtención de


la función transferencia
6.7.1 Máquina de estados de respuesta impulsiva finita

De la misma manera que se define la función transferencia en el plano


transformado D , puede también definirse la función transferencia de estados,
para un codificador convolucional o una máquina secuencial de estados finitos.
Para introducir este concepto se utiliza como ejemplo una máquina secuencial
de estados finitos que forma parte del codificador de la figura 6.3, representada
en la figura 6.10, con una notación diferente, que describe las variables en el
dominio discreto del tiempo.

c (1) ( k )

s0 ( k ) s1 ( k ) s2 ( k )
m( k ) s0 ( k  1 ) s0 ( k  2 )

Figura 6.10 Máquina de secuencias de estados finitos con respuesta impulsiva finita,
dominio del tiempo

264
Capítulo VI: Códigos Convolucionales

En este máquina secuencial:

m( k ) s0 ( k )

c (1 ) ( k ) s0 ( k )  s 2 ( k ) s0 ( k )  s0 ( k  2 )

En el dominio transformado:

C (1 ) ( D ) S0 ( D )  D 2 S0 ( D ) (1  D 2 )S0 ( D ) (1  D 2 )M( D )

S0 ( D ) M( D )

siendo

s1 ( k ) s0 ( k  1 )
s 2 ( k ) s0 ( k  2 )

S1 ( D ) DS0 ( D ) DM( D )
S2 ( D ) D 2 S0 ( D ) D 2 M( D )

La función transferencia es:

C (1 ) ( D )
G( D ) 1  D2
M( D )

y la función transferencia de estados es:

S( D ) >S0 ( D ) / M( D ) S1 ( D ) / M( D ) S2 ( D ) / M( D )@ >1 D D2 @
Frente a la excitación impulsiva M( D ) 1 , la función transferencia de estados
describe las transiciones del sistema en ese caso, siendo en general cierto que si
la estructura del codificador es de respuesta impulsiva finita, esta respuesta
define además la secuencia de transiciones mas corta del sistema. El estado de
la máquina lo define el par S1 ( D ) S2 ( D ) . En este caso, analizando la
respuesta impulsiva:

>S0 ( D ) S1 ( D ) S2 ( D )@ >1 @
D D 2 x M( D )

265
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

>S0 ( D ) S1 ( D ) S2 ( D )@ >1 D D 2 x1 @ >1 D D2 @


S0 1,0,0,0,0,0,....
S1 0,1,0,0,0,0,....
S2 0,0,1,0,0,0,....
Por lo tanto la máquina tiene una transición de estados
S1 S2 ( 00,10,01,00,00...) que equivale a su transición mas corta, que
también coincide con la secuencia mas corta en el trelis de figura 6.6
correspondiente a la secuencia de estados Sa SbSc Sa . La secuencia de salida de
la máquina secuencial esta dada por:
C (1 ) ( D ) (1  D 2 )m( D ) 1  D 2

Esta salida es de peso 2.


La función de transferencia de estados permite el estudio de las secuencias de la
maquina codificadora. Para el caso de las estructuras de respuesta impulsiva
finita, dado que el estado S0 describe la historia de la máquina, se deduce que
por ser S0 ( D ) M( D ) la secuencia de entrada determina directamente como
es la secuencia de estados.

6.7.2 Máquina de estados de respuesta impulsiva infinita

Considérese la máquina de estados finitos de la figura 6.11, que como se verá en


la próxima sección, forma parte del codificador convolucional de forma
sistemática equivalente al codificador de la figura 6.3. En este gráfico se
describen las variables en el dominio del tiempo discreto.

266
Capítulo VI: Códigos Convolucionales

c( k )

m( k )
s0 ( k  1 ) s0 ( k  2 )

s0 ( k ) s1 ( k ) s2 ( k )

Figura 6.11 Máquina secuencial con respuesta impulsiva infinita

Un análisis similar al caso de las máquinas secuenciales de respuesta finita es el


siguiente:

s0 ( k ) m( k )  s2 ( k )

siendo

s1 ( k ) s0 ( k  1 )
s 2 ( k ) s0 ( k  2 )

c( k ) s0 ( k )  s0 ( k  1 )  s0 ( k  2 )

En el dominio transformado:

S1 ( D ) DS0 ( D )
S2 ( D ) D 2 S0 ( D )

S0 ( D ) M( D )  S2 ( D ) M( D )  D 2 S0 ( D )

S0 ( D )  D 2 S0 ( D ) M( D )

267
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

M( D )
S0 ( D )
1  D2

M( D )
C( D ) S0 ( D )  DS0 ( D )  D 2 S0 ( D ) (1  D  D 2 )S0 ( D ) (1  D  D 2 )
1  D2

La función transferencia es:

C( D ) 1  D  D2
G( D )
M( D ) 1  D2

y la función transferencia de estados es:

ª 1 D D2 º
S( D ) >S0 ( D ) / M( D ) S1 ( D ) / M( D ) S2 ( D ) / M( D )@ « 2 »
¬1  D 1  D2 1  D2 ¼

En este caso la respuesta impulsiva es infinita, y no corresponde a la secuencia


de estados mas corta de la máquina secuencial. Sin embargo la función
transferencia de estados permite decir que si la entrada a la máquina secuencial
de respuesta impulsiva infinita es, en este caso, M( D ) 1  D 2 , la secuencia
correspondiente de estados es:
ª D2 º
>S0 ( D ) S1 ( D ) S2 ( D )@ « 1 2 D
» x M( D )
¬1  D 1  D2 1  D2 ¼
ª 1
« 2
D
2
D2 º
2 »

x 1  D2 >
1 D D2 @
¬1  D 1  D 1  D ¼

que coincide con la secuencia mas corta de la máquina secuencial de estados


finitos de respuesta impulsiva finita ya vista en el ejemplo anterior.

Para una máquina secuencial de estados finitos con K registros, de una entrada
y una salida, se define la matriz de transferencia de estados como:

S( D ) >S0 ( D ) / M( D ) S1 ( D ) / M( D )  SK ( D ) / M( D )@
(6.29)

268
Capítulo VI: Códigos Convolucionales

6.8 Relación entre la forma sistemática y la no sistemática


La representación matricial con la función transferencia permite realizar la
transformación de un código de forma no sistemática, a su equivalente de forma
sistemática [7]. En términos generales, la condición para lograr la
transformación de un código de forma no sistemática a su equivalente de forma
sistemática es que la matriz transferencia, expresada de modo general por la
ecuación (6.11) pueda ser llevada por operaciones matriciales permitidas a la
forma de la función transferencia de la ecuación (6.24).

Ejemplo 6.4. Obtenga la forma sistemática equivalente para el código


convolucional generado por la función transferencia:

G( D ) Gns ( D ) >1  D 2
1  D  D2 @
El codificador convolucional descripto por la función transferencia dada es el de
la figura 6.3. Para efectuar la transformación a la forma sistemática equivalente
se procede a llevar a esta función transferencia a la forma de la ecuación (6.24).
En este caso el procedimiento es simple, y consiste en dividir los dos
polinomios constituyentes de la función transferencia dada, por 1  D 2 . En este
proceso, el codificador convolucional original, construido con funciones
transferencia de tipo de respuesta impulsiva finita, pasan a utilizar funciones
transferencia de tipo de respuesta impulsiva infinita.

ª 1  D  D2 º
Gs ( D ) «1 »
¬ 1  D2 ¼

De acuerdo a la expresión de la función transferencia, se deduce que el


codificador no sistemático esta construido con una máquina de estados finitos
de respuesta impulsiva finita, que al ser convertido a su forma sistemática
recurre a una máquina de estados finitos de respuesta impulsiva infinita, como
la de la figura 6.11. De hecho la función transferencia 1  D  D 2 / 1  D 2 es
de la forma de la ecuación (6.28), donde
a0 a1 a2 f2 1, f1 0, ai fi 0 para i ! 2 , y es sintetizada por una
máquina secuencial de estados finitos como la de la figura 6.11. El diagrama en
bloques del codificador convolucional sistemático equivalente se muestra en la
figura 6.12.

269
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

c (1 )

c(2 )
m

Figura 6.12 Codificador convolucional sistemático equivalente al de figura 6.3

La siguiente tabla permite la evaluación adecuada del diagrama de estados del


sistema.

entrada m i estado en t i estado en t i 1 c (1 ) c(2 )


- 00 00 - -
0 00 00 0 0
1 00 10 1 1
0 01 10 0 0
1 01 00 1 1
0 10 01 0 1
1 10 11 1 0
0 11 11 0 1
1 11 01 1 0

Tabla 6.6 Secuencias para la construcción del diagrama de estados del codificador de
figura 6.12

El trelis que surge de la tabla es el siguiente:

Figura 6.13 Trelis para el código convolucional de figura 6.12

270
Capítulo VI: Códigos Convolucionales

Puede verificarse que en el trelis correspondiente al codificador convolucional


de la figura 6.3, que se ve en la figura 6.6, las salidas están asignadas de la
misma forma que en el trelis correspondiente al codificador sistemático
equivalente, mostrado en la figura 6.13. La diferencia entre la forma sistemática
y la no sistemática es la relación entrada-salida, es decir, qué entrada esta
asociada a las transiciones en cada caso. Al igual que en los códigos de bloques,
la matriz equivalente de modo sistemático genera el mismo código que el
código no sistemático correspondiente, pero la diferencia se encuentra en la
asignación de entrada -salida entre los dos tipos de código.
Para la estructura del codificador sistemático que corresponde a este caso,
graficado en la figura 6.12, las funciones transferencia y transferencia de
estados son respectivamente:

ª 1  D  D2 º
G( D ) «1 »
¬ 1  D2 ¼

ª 1 D D2 º
S( D ) « 2 »
¬1  D 1  D2 1  D2 ¼

La secuencia de estados mas corta para el caso sistemático, caracterizado por


funciones transferencia de respuesta impulsiva infinita, no corresponde a la
entrada impulsiva, que genera una secuencia infinita en este caso. La entrada
que provoca la secuencia mas corta se deduce de la función transferencia de
estados, dado que si la entrada es de la forma M( D ) 1  D 2 , el sistema
recorre la secuencia de estados S1 S2 ( 00 ,10 ,01,00 ,00...) , es decir la
secuencia mas corta en el trelis de la figura 6.13. La salida que corresponde a
este caso es:

C (1 ) ( D ) 1.M( D ) 1  D 2

1  D  D2
C( 2 )( D ) M( D ) 1  D  D 2
1  D2

que es una salida de peso 5 .

En un caso mas general, los codificadores de respuesta impulsiva infinita de


tasa k / n 1 / 2 son de la forma mostrada en la figura 6.14:

271
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

c (1)
c ( 2)

a0 a1 a2 an

m S0
S1 S2 Sn

f1 f2 fn

Figura 6.14 Estructura general de codificadores sistemáticos de tasa k / n 1/ 2


basados en máquinas secuenciales de respuesta impulsiva infinita

Los coeficientes de la estructura pertenecerán en general al campo donde se


definen las operaciones del codificador, ai  GF( q ) y f j  GF( q ) . En un
caso particular por ejemplo serán de valores 0 o 1, si dicho campo es el campo
binario GF( 2 ) . La función transferencia para esta estructura sistemática de tasa
k / n 1 / 2 puede demostrarse que es igual a [15]:

ª a0  a1 D  a2 D 2  ...  an D n º
G( D ) «1 »
«¬ 1  f1 D  f2 D 2  ...  f n D n »¼
(6.30)

6.9 Propiedades de distancia de los códigos convolucionales


Una de las características de todo sistema de codificación es el parámetro
distancia mínima, que resulta ser el menor entre todos los valores de distancia

272
Capítulo VI: Códigos Convolucionales

medida de a pares para todas las secuencias del código. Para el caso de los
códigos lineales esa distancia puede tenerse en cuenta calculando la distancia
mínima entre cada vector y el vector “todos ceros”, que en definitiva es el peso
de dicho vector [1, 2, 4, 5].
En cierto sentido se ha visto que la distancia mínima del código evidencia el
evento de error mas desfavorable en el cual el número de bits errados es tal que
convierte a una palabra de código en otra del mismo código. En el caso de los
códigos convolucionales se debe adecuar este razonamiento y considerar
cuantos errores debe haber sobre una secuencia de código para que se convierta
en otra del mismo código. Como el código es lineal se puede analizar este
problema tomando a la secuencia transmitida todos ceros como representativa
de todas las secuencias del código. Esto debe hacerse tomando el caso de
mínima cantidad de errores que sobre la secuencia todos ceros debe haber para
que suceda la conversión a otra secuencia valida. Analizando esto en un
diagrama o trelis del código se tiene que ver que secuencia que parte del estado
todos ceros Sa , diverge del mismo para retornar tras una serie de instantes a ese
mismo estado. Si se pretende medir la distancia de Hamming para este evento,
se tendrá que calcular el peso mínimo entre las secuencias que divergen del
estado todos ceros Sa y retornan a él luego de un número finito de instantes.
Para analizar las propiedades de distancia de estos códigos se modifica el
diagrama de estados de manera de poder visualizar una secuencia que se inicie
en el estado Sa y termine en ese mismo estado, obviando el bucle que le
corresponde normalmente a ese estado. En este diagrama modificado los tramos
o secuencias desde y hacia ese estado son descriptos por ramas denotadas con el
término X i , donde i es el peso del vector de salida que le corresponde a esa
transición.
Para el caso del ejemplo ya visto, el código convolucional Cconv ( 2,1,2 ) , el
diagrama modificado de estados se muestra en la figura 6.15:

273
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Sd
X X
X2
X2
Sa Sb Sc Sa
X

X0

Figura 6.15 Diagrama de estados modificado

Los recorridos desde Sa y hasta Sa tienen un peso que puede ser calculado
sumando los exponentes de los términos X i correspondientes. Existe en este
caso un camino de peso 5 que es Sa SbSc Sa , otro de peso 6 SaSbSd Sc Sa .
El resto de los caminos incluyen los lazos Sd Sd y Sb Sc Sb que solo agregan
peso a los recorridos descriptos anteriormente. Por lo tanto la distancia mínima
en este caso es 5 y se la denomina distancia libre mínima d f 5 . Se llama
distancia libre por no haber ningún límite en la longitud del recorrido de tramos
en el diagrama de estados, o en el recorrido de ramas en el correspondiente
trelis.
En caso de códigos de estructura mas elaboradas el cálculo no es tan simple. Sin
embargo los grafos son resueltos por la aplicación de la regla de Mason sobre la
denominada función generante T ( X ) (Ver desarrollo detallado en [1]). Esta
función generante se define como:

T( X ) ¦ Ai X i
i
(6.31)
donde Ai es el número de secuencias de peso i .

Un enfoque simple para encontrar la función generante se aplica sobre el


ejemplo que viene siendo estudiado, el código convolucional Cconv ( 2,1,2 ) . Si
se supone que la entrada al diagrama de estados modificado es 1 , entonces la
salida de este diagrama de estados es la función generante T ( X ) . Se procede a
emplear al nombre de los estados como variables fantasma para estimar dicha

274
Capítulo VI: Códigos Convolucionales

función para el diagrama de estados del ejemplo considerado. En lo que sigue se


comete abuso de notación, de manera que Sb ,Sc y Sd , que son los estados,
son en este caso consideradas como variables para el cálculo de la transferencia.

Sb X 2  Sc
Sc XSb  XSd Sd XSb  XSd
2
T( X ) X Sc

Resolviendo:

XSb Sc  XSd Sc (1  X )
Sc (1  X )
Sb
X
Luego:

Sc (1  X )
X 2  Sc
X
O bien:

X3
Sc
12X

Entonces:

X5
T( X )
12X
(6.32)

X5 12X
-X 5  2 X 6 X 5  2 X 6  4 X 7  ...
________
2X6
 2X6  4X7
__________ __
4X7

275
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

La expresión de T ( X ) X 5  2 X 6  4 X 7  ... indica que hay un camino en


el diagrama modificado de estados con peso 5 , dos con peso 6 , cuatro con
peso 7 y así sucesivamente. La distancia libre de este código será entonces
df 5 .

6.10 Distancia libre mínima de un código convolucional


El parámetro que define las propiedades de un código convolucional es la
distancia libre mínima, que se define como:

df ^
min d( ci , c j ) : mi z m j `
(6.33)

donde c i , c j son dos secuencias del código correspondientes a los mensajes


mi z m j . La distancia libre se define como el mínimo valor de la distancia
entre dos cualesquiera secuencias del código convolucional.
Debido a la linealidad del código convolucional y suponiendo que la
transmisión se realiza con un conjunto de señales que forman un espacio
geométrico uniforme [17]-[26], calcular la distancia entre dos secuencias
cualesquiera del código equivale a obtener el peso de la suma entre dos
cualesquiera secuencias:

df ^
min w( ci † c j ) : mi z m j ` min^w( c ) : mi z 0`
(6.34)

Es decir la secuencia todos ceros es representativa de toda otra del código para
la evaluación del mismo frente al ruido y los errores.
Esto también implica que la distancia mínima libre del código es el peso
mínimo de todas las secuencias que difieren de la de todos ceros, c z 0 .

Ejemplo 6.5: Determine la distancia libre del código convolucional


Cconv ( 2 ,1,2 ) analizado en ejemplos anteriores empleando el procedimiento de
calculo sobre el correspondiente trelis.

276
Capítulo VI: Códigos Convolucionales

0 0 0 0 0 0 0 0 0 0
t t t t t t t
Sa = 00 1 2 3 4 5 6 7

2 2 2 2 2

Sb = 10 2 2 2
0 0 0
1
0 1 1
Sc = 01

1 1 1 1 1 1 1

Sd = 11
1 1 1

Figura 6.16 Secuencia de distancia mínima sobre un trelis

De todas las secuencias se observa que la descripta por la transición de estados


Sa SbSc Sa que se encuentra remarcada en la figura 6.16 es la secuencia de
peso mínimo e igual a 5 . También se observan las secuencias SaSbSc SbSc Sa
y SaSbSd Sc Sa que son de peso 6 . El resto de las secuencias serán de mayor
peso, pudiendo concluir entonces en que la distancia libre mínima de este
código es d f 5 .
Para el caso de los códigos convolucionales la distancia entre vectores no es tan
claramente definida, debido a que la transmisión no es por bloques, sino mas
bien por secuencias con cierto contenido de memoria. Sin embargo se puede
suponer que el sistema esta fuera de posibilidad de corregir errores cuando
estando en el estado “todos ceros”, la secuencia originalmente emitida es de
ceros consecutivos, y por efecto del ruido la secuencia se aparta de ser una
cadena de ceros, y se transforma en otra secuencia válida del código. Este
evento será el de error no detectable. Esto es similar al caso de los códigos de
bloque, donde la distancia mínima es aquella cantidad de bits que debe haber en
error para que una palabra válida se convierta en otra válida del código y sea
indetectable. Luego, la secuencia que tenga el mínimo peso, y que partiendo del
estado cero, retorna a él después de una serie de transiciones, será la secuencia
que define la distancia mínima del código. Esta distancia se la denomina
distancia libre mínima, d f . La capacidad de corrección del sistema, o sea el
numero t de errores que puede corregir, estará dada entonces por la expresión:

277
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

« d 1 »
t= « f »
¬ 2 ¼
(6.35)

Suponiendo una separación entre eventos de error de por lo menos el alcance


(medido en bits) del código.

6.11 Decodificación por máxima probabilidad (MLD:


“Maximum Likelihood Detection”)
Para una cierta secuencia de salida de un código convolucional c existe una
secuencia recibida, denominada s r , que resulta de la aparición de errores por
efecto del ruido sobre la secuencia original c . El decodificador óptimo es tal
que compara las probabilidades condicionales P( s r / c' ) de que la secuencia
recibida s r corresponda a una secuencia conocida c ' y toma la decisión de
elegir la secuencia que tiene la mayor probabilidad de coincidir con s r :

P ( s r /c´ ) = max P( s r /c )
todo c
( 6.36)

Este es el criterio de máxima probabilidad. Esta obviamente de acuerdo con el


hecho intuitivo de asignar la secuencia conocida en el decodificador que más se
parece a la recibida.
La aplicación de este criterio a los códigos convolucionales enfrenta el hecho
que se debe considerar un gran número de secuencias posibles en este cálculo.
Para una secuencia codificada de L bits se tienen 2 L posibilidades. El
decodificador de máxima probabilidad elige una secuencia c ' del conjunto
posible, que tenga la mayor probabilidad de parecerse al vector recibido.
Si el canal no tiene memoria y el ruido es aditivo blanco y Gaussiano, cada
símbolo esta afectado de una forma independiente de los otros. Para un código
convolucional de velocidad 1 / n la función probabilidad que mide la similitud
respecto del vector recibido es:

f f n
P (s r /c) =– P (s ri /c i ) = – .– P(s r , ji /c ji )
i=1 i=1 j=1
(6.37)

278
Capítulo VI: Códigos Convolucionales

donde s r i es la i-ésima rama de la secuencia recibida s r , c i es la i-ésima


rama de la secuencia de una palabra de código c , s r , ji es el j-ésimo símbolo de
código de s r i , y c ji es el j-ésimo símbolo de código de c i donde cada rama
esta constituida por n símbolos de código. El proceso de decodificación
consiste en la elección de una secuencia que haga máxima la función
probabilidad (6.37). Este proceso es desarrollado por el algoritmo de
decodificación convolucional de Viterbi.

6.12 Algoritmo de decodificación convolucional de Viterbi


El algoritmo de decodificación de Viterbi realiza la detección por máxima
probabilidad. Para eso utiliza las propiedades del trelis de un código
convolucional. El algoritmo intenta reducir la complejidad del cálculo evitando
tener en cuenta la totalidad de las secuencias posibles. El procedimiento
consiste en calcular la distancia entre la señal recibida en el instante t i y los
caminos o ramas entrantes del trelis en ese instante en el estado analizado. En la
medida que este criterio se va aplicando se evalúa la secuencia que tiene la
menor distancia respecto de la recibida, de forma que la secuencia de máxima
probabilidad finalmente aparece. El camino o secuencia de máxima
probabilidad, que es al mismo tiempo aquel que presenta la menor distancia
respecto del recibido, y si la transmisión se hace sobre el canal de ruido blanco
y Gaussiano, se denomina camino o secuencia sobreviviente. Decir entonces
que la secuencia es la de máxima probabilidad, es también decir que se trata de
aquella secuencia que tiene la menor distancia respecto de la recibida.
Se analiza un ejemplo para una mejor comprensión del mecanismo de
decodificación. Se emplea el criterio de distancia denominado de Hamming. Es
decir, la distancia entre dos palabras será el número de elementos diferentes que
entre ellas exista.

Ejemplo 6.6: Dada la secuencia recibida s r 11 01 01 00 11...


correspondiente al código convolucional de la figura 6.3, se aplica el algoritmo
de Viterbi para decodificarla. El primer paso de este proceso es determinar la
distancia de Hamming entre el vector recibido y la salida correspondiente a cada
estado del sistema.

Secuencia de mensaje: 10101


Secuencia código: 11 01 11 00 11
Secuencia recibida: 11 01 01 00 11

279
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

11 01 01 00 11
t1 t2 t3 t4 t5 t6 t7
2 1 1 0 2
Sa = 00
0 1 1 2 0

Sb = 10 1 2 0
1 0 2
0
0 1 1

Sc = 01

2 2 2 1 1 1 1

Sd = 11
0 1 1

Figura 6.17 Calculo de distancias sobre un trelis

Una de las dos ramas que arriban a cada estado puede ser eliminada por tener
mayor distancia acumulada que la otra. Las decisiones comienzan a tomarse
cuando dos secuencias diferentes arriban al mismo estado por dos o mas
caminos distintos. Por ejemplo, esto se realiza en el instante t 4 .

Figura 6.18 Decisión del camino sobreviviente en un trelis

En el instante t 4 se toman decisiones sobre los caminos que arriban a cada


estado, ya que a cada uno de ellos llegan dos caminos o trayectorias diferentes,
eliminándose siempre uno de las dos trayectorias que llegan a dicho estado, que

280
Capítulo VI: Códigos Convolucionales

es la que tiene mayor distancia acumulada entre las dos. El procedimiento se


repite sucesivamente en cada estado, teniendo en cuenta las decisiones previas,
lo que simplifica el proceso de selección. La secuencia detectada se ve en la
figura 6.19. Puede verse que en el instante t 5 , en el punto correspondiente al
estado S b , se presenta el caso en que debe decidirse por dos ramas que arriban
al mismo acumulando la misma cantidad de distancia. En este caso la decisión
es aleatoria, y aquí se ha adoptado el criterio de elegir la rama superior como la
verdadera. En general, si el evento de error es controlable, la decisión sobre la
secuencia final o sobreviviente no se producirá a través de este estado. Distinto
es el caso si el evento de ruido supera a la capacidad de corrección de error del
código.
1 0 0 0 1
t2 t3 t4 t5
t1
2 1 3 t6
Sa = 00 dacu 2
3 2
0 1
3 1
Sb = 10 1 dacu 1
0 4
3 2 4
Sc = 01
3
dacu 3
2 2 4
2 3
Sd = 11 dacu 3

Figura 6.19 Algoritmo de Viterbi. Estado de la decisión en t 6

Figura 6.20 Algoritmo de Viterbi. Secuencias decodificada en t 8

281
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

La decisión tomada en el instante t 6 permite conocer la secuencia codificada


que originó la secuencia recibida. La secuencia elegida es aquella que tiene la
menor distancia acumulada. Observando entonces la secuencia decodificada, y
por inspección de la información del trelis proporcionada en figura 6.6, se puede
determinar si la entrada fue un '1' o un ' 0' .
La secuencia decodificada es entonces 10101 ... , y el decodificador realizó la
corrección de un error en la secuencia de entrada s r . En este sentido puede
notarse que el procedimiento decide directamente la información de mensaje,
haciendo innecesaria la utilización de una tabla de decodificación. Por otro lado
el proceso de corrección de errores se produce también automáticamente, sin
necesidad de decodificar por síndrome y empleo de tablas de error. La
codificación convolucional es particularmente adecuada en los sistemas que
emplean corrección de error, en lugar de la detección de error.
En el ejemplo anterior se pudo elegir al camino de máxima probabilidad por
tener una sola instancia de valor mínimo de distancia acumulada en el instante
t 6 . Pero puede darse el caso de tener mas de una instancia del valor mínimo, al
momento que se decide truncar la longitud para realizar la estimación final. Para
evitar esto el algoritmo opera de la siguiente manera. Es de notar en la figura
6.19 que los caminos sobrevivientes coinciden en la primera etapa ( t1 a t 2 ) del
trelis. Esto indica con alta probabilidad que los dos primeros bits de la secuencia
transmitida fueron 11 , correspondiendo al bit de mensaje 1 . Aunque los
caminos sobrevivientes coinciden también en la segunda etapa, luego se pierde
la coincidencia. Pero si las secuencias de mensaje, codificada y recibida, son de
suficiente longitud, se puede demostrar que los caminos sobrevivientes
coinciden con alta probabilidad en la etapa t i , y la correspondiente decisión es
correcta, si los caminos se extienden hasta el instante t i  J , donde J es la
longitud de decodificación, medida en unidades de tiempo. Por simulación, y de
manera empírica, se puede verificar que la potencia de corrección de errores del
código convolucional se maximiza cuando J tiene un valor aproximadamente
igual a cinco veces el alcance del código, es decir J | 5( K  1 ) . Esto implica,
primero, que los códigos convolucionales son de mas utilidad en mensajes
largos; y segundo, que para no perder potencia de corrección de error en la parte
final del mensaje es necesario agregar kK ceros al fin del mensaje. Este último
proceso hace que el trelis termine en el estado s a , dejando un solo camino
sobreviviente, como se ve en la figura 6.20, confirmando la decisión previa.

282
Capítulo VI: Códigos Convolucionales

6.13 Diagrama de estados modificado extendido


El diagrama de estados modificado extendido contiene la información necesaria
para la evaluación de los códigos convolucionales. Para esto se emplea la
variable X i cuyo exponente indica el peso de la rama analizada, la variable Y j
para determinar la longitud del camino j y la variable Z , que existe solo
cuando la bifurcación o camino analizado haya sido generado por un uno '1' a
la entrada del sistema. De esta forma surge la función generante modificada
T ( X ,Y , Z ) , que es de la forma:

T ( X ,Y , Z ) ¦ Ai , j ,l X iY j Z l
i , j ,l
(6.38)

donde Ai , j ,l es el número de caminos con peso i , que son de longitud j y que


surgen como consecuencia de una entrada de peso l .
Para el caso del ejemplo visto, el código convolucional Cconv ( 2,1,2 ) , el
diagrama de estados modificado extendido es el que se observa en la figura
6.21:

XYZ

Sd
XYZ XY
2
X YZ X 2Y
Sa Sb Sc Sa
XY

1.YZ
Figura 6.21 Diagrama de estados modificado extendido

siendo la variable fantasma Sa 1:

Sb X 2YZSa  YZSc , pero Sa 1,

283
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Sb X 2YZ  YZSc
Sc XYS b  XYS d
Sd XYZSd  XYZS b
T ( X ,Y , Z ) X 2YSc

Operando sobre estas expresiones algebraicas, donde se recuerda que los


nombres de las variables fantasma se igualaron a los nombres de los estados, se
obtiene:

X 5Y 3 Z
T ( X ,Y , Z )
1  XYZ (1  Y )

X 5Y 3 Z 1  XY (1  Y )Z
-X 5Y 3 Z  X 6Y 4 Z 2 (1  Y ) X 5Y 3 Z  X 6Y 4 Z 2 (1  Y )  ...
__________ _________
X 6Y 4 Z 2 (1  Y )
 X 6Y 4 Z 2 (1  Y )  X 7Y 5 Z 3 (1  Y ) 2
__________ __________ __________ _
X 7Y 5 Z 3 (1  Y ) 2

Así la transferencia analizada tiene la forma:

T ( X ,Y , Z ) X 5Y 3 Z  X 6Y 4 Z 2 (1  Y )  X 7Y 5 Z 3 (1  Y )2  ...
(6.39)

Se observa que el camino de peso 5 tiene longitud 3 (tres transiciones) y es originado


por una entrada de '1' , que los dos caminos de peso 6 son X 6Y 4 Z 2 y X 6Y 4 Z 2Y ,
es decir, se producen por el efecto de dos '1' de entrada y son uno de 4 transiciones y
el otro de 5 transiciones.

6.14 Análisis probabilidad de error para códigos


convolucionales
Se emplea el análisis de probabilidad de error para determinar la capacidad de
estos códigos. En general se prefiere la descripción de funcionamiento del

284
Capítulo VI: Códigos Convolucionales

código en términos de la probabilidad de error por bit, pero se inicia el análisis


determinando la probabilidad de error llamada probabilidad de error por nodo
[1, 2, 4].
Como se dijo previamente la secuencia de salida todos ceros identifica a
cualquier secuencia del código en términos de los eventos de error, y las
secuencias que emergen de y terminan en el estado Sa son aquellas que por
efecto del ruido han resultado de la transformación de la secuencia todos ceros
en otra del código. La probabilidad de error por nodo se refiere a la probabilidad
del evento en que la secuencia emergente en ese nodo se elige como valida.
Para que esto ocurra el camino emergente tiene que tener una acumulación en
su métrica que sea mayor que la métrica acumulada sobre el verdadero camino.
Si el camino incorrecto supera en la decisión al correcto es porque el número de
coincidencias entre la secuencia recibida s r y el camino incorrecto es mayor
que respecto al camino correcto, en este caso el camino todos ceros. Los
caminos incorrectos son los que define la función generante modificada
T ( X ,Y , Z ) . Para el caso del ejemplo analizado se tendrá un error de nodo si de
las 5 posiciones en que el camino correcto e incorrecto difieren, 3 o mas de
ellos en la secuencia recibida s r están más cercanos a la secuencia incorrecta
que a la correcta. Esto indica que el peso del vector recibido sea 3 o mayor. En
el caso del canal binario simétrico con probabilidad de error p la probabilidad
Pe es igual a:

Pe P( 3 o mas '1' en el vector recibido)


5 §5 ·
¦ ¨¨ e ¸¸ p e (1  p )5 e
e 3© ¹

Para uno de los caminos de longitud 6 que es un número par, el evento con 3
errores la convierte en una secuencia que puede ser elegida como correcta o
incorrecta con igual probabilidad. Las secuencias con peso 4 o mayor serán
decodificadas erróneamente.
§6 · 6 §6 ·
Pe ¨¨ ¸¸ p 3 (1  p )3  ¦ ¨¨ ¸¸ p e (1  p )6 e
©3 ¹ e 1©e¹

En general para un camino incorrecto de peso d :

285
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

­ d §d · e
° ¦ ¨¨ ¸¸ p (1  p )
d e
d impar
e
°e ( d 1 ) / 2 © ¹
Pd ®
° 1 §¨ d · d/2 §d · e
d
¸
° 2 ¨ d / 2 ¸ p (1  p )
d/2
 ¦ ¨¨ ¸¸ p (1  p ) d e d par
¯ © ¹ e d / 2 1 © e ¹

(6.40)
La probabilidad de error por nodo queda limitada por el límite superior que
significa la unión de todos los eventos posibles de este tipo incluyendo a todos
los posibles caminos incorrectos en el nodo j que estará acotada por:

f
Pe ( j ) d ¦ Ad Pd
d df

(6.41)

siendo Ad el número de palabras de código de peso d , dado que hay Ad


caminos de ese peso de Hamming respecto de la secuencia todos ceros. En
realidad esta cota es independiente de j , con lo cual define la probabilidad
buscada Pe ( j ) Pe .
El límite planteado puede ser acotado superiormente. Para d impar:

d §d · e d §d · d §d ·
Pd ¦ ¨¨ ¸¸ p (1  p ) d e  ¦ ¨¨ ¸¸ p d / 2 (1  p ) d / 2 p d / 2 (1  p ) d / 2 ¦ ¨¨ ¸¸ 
e ( d 1 ) / 2 © e ¹ e ( d 1 ) / 2 © e ¹ e ( d 1 ) / 2 © e ¹
d §d ·
 p d / 2 (1  p ) d / 2 ¦ ¨¨ ¸¸ 2 d .p d / 2 (1  p ) d / 2
e 0©e ¹

(6.42)

expresión que puede demostrarse es válida para d par también. Con esta cota
se puede expresar una cota para la probabilidad de error de nodo como [1, 2, 4]:

¦ Ad >2 @
f d
Pe  (1  p )p
d df

(6.43)

286
Capítulo VI: Códigos Convolucionales

f
Esta expresión tiene relación con la de la función generante T ( X ) ¦ Ad X d
d df

de manera que:

Pe  T ( X )
X 2 (1  p )p
(6.44)
En general la probabilidad de error del canal simétrico binario será un número
pequeño p  1 , con lo cual la sumatoria de la ecuación anterior puede
aproximarse con su primer término:

>
Pe  Adf 2 p(1  p ) @
df
Adf 2 df >p(1  p )@
df / 2
| Adf 2 df p df / 2
(6.45)

Ejemplo 6.7: Para el caso del código convolucional Cconv ( 2,1,2 ) ya analizado
se tiene d f 5 , Adf 1 , así por ejemplo p 10 2 , entonces:

Pe  Adf 2df p df / 2
25 102 2,5
| 3.10 4.

Así analizada la probabilidad de error Pe es la probabilidad de error del evento,


que puede ser empleada para obtener una expresión de la probabilidad de error
por bit. Para eso se verá que en cada evento de error existe un número de bits
equivocados que será igual al número de bits que tiene el camino incorrecto
elegido. Si se afecta entonces al término Pd por el numero total de unos '1' que
tienen todas las secuencias de peso d se puede tener una estimación total del
numero de bits errados en una unidad de tiempo. Si se divide por k que es el
numero de bits de mensaje enviados en esa unidad de tiempo se tiene:

1 f
Pb  ¦ Bd Pd
k d df
(6.46)

siendo Bd el numero total de bits '1' que tienen todas las secuencias de peso
d.
Como se ha definido, la función generante modificada es una expresión como la
siguiente:

287
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

T ( X ,Y , Z ) ¦ Ai , j ,l X iY j Z l
i , j ,l

donde Ai , j ,l es el número de caminos con peso i , que es de longitud j y que


surge como consecuencia de una entrada de peso l .
La expresión anterior puede modificarse para ser presentada como:

f f
T ( X ,Z ) ¦ ¦ Ad ,b X d Z b
d df b 1

(6.47)

y evaluar su derivada respecto de Z

wT ( X , Z ) f f f

wZ Z 1
¦ ¦ bAd ,b X d ¦ Bd X d
d df b 1 d df

(6.48)
siendo

f
Bd ¦ bAd ,b
b 1
(6.49)

Empleando la expresión cota de Pd

Pd 2 d p d / 2 (1  p )d / 2
(6.50)

Pb 
1 f
¦ Bd Pd
k d df
1 f
>
¦ Bd 2 p(1  p )
k d df
@
d 1 wT ( X , Z )
k wZ
Z 1
X 2 p(1  p )
(6.51)

La expresión anterior puede ser simplificada suponiendo que el termino


dominante es el primero de la suma sugerida, así que:

288
Capítulo VI: Códigos Convolucionales

1
Pb | Bd 2 d f p d f /2
k f
(6.52)

Ejemplo 6.8: Para el caso del código Cconv ( 2,1,2 ) ya analizado se tiene
df 5 , Bdf 1 , dado que T ( X ,Y , Z ) X 5Y 3 Z 1  ... así entonces si por
ejemplo p 10 3 , la probabilidad de error por bit es
Pb  Bdf 2 df p df / 2
2 5 10 3
2 ,5
| 1.01x10 6 .

6.15 Decisiones rígidas y no-rígidas


Hasta el momento en la mayoría de las técnicas de decodificación vistas se ha
utilizado un mecanismo de decisión que suele denominarse decisión rígida o
dura (en inglés “hard decisión”), consistente en considerar que la señal
transmitida que representa a la palabra de código, es muestreada en los instantes
de tiempo adecuados, considerando sincronismo perfecto proporcionado por
otra parte del sistema, de forma que el valor de la muestra luego se compara con
un valor de umbral, para finalmente determinar si la señal recibida se interpreta
como representativa de un uno o un cero. Este procedimiento es el que se
denomina rígido, es decir, la información del canal es convertida a una de dos
posibilidades si se esta operando en el campo binario, o una entre M , si se esta
utilizando algún esquema no-binario. A partir de esta decisión, y en la mayoría
de los códigos ya estudiados, se evaluó la distancia teniendo en cuenta cuantas
posiciones distintas tienen dos determinadas palabras involucradas en la
recepción, una de ellas del código y la otra la recibida, utilizando la así llamada
distancia de Hamming d H . Sin embargo, cuando una se refiere a la palabra
distancia, resulta más natural pensar en términos geométricos, y hablar de la
distancia que contemplamos en un espacio tridimensional. Una generalización
de este concepto de distancia a un espacio vectorial de dimensión n es lo que se
denomina la distancia Euclidiana d . En este caso, y dados dos vectores c1 y
c 2 , se entiende por distancia a la norma del vector diferencia d || c1  c2 ||
que existe entre esos dos vectores.
La decisión rígida, de alguna manera, pierde información presente en el canal.
Por ejemplo, el valor de un muestreo puede caer cerca o lejos del umbral de
decisión (ver sección 6.16.2). Para interpretar la diferencia entre la decisión
rígida y no rígida, o suave, se puede analizar el problema utilizando la
representación vectorial de los códigos de bloques de repetición y de paridad

289
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

par con n 3 . Si se representa a cada bit con una determinada señal, como por
ejemplo un pulso rectangular de amplitud normalizada configurado en formato
polar ( r 1 ), las palabras de código pueden interpretarse como señales, y por
ende adoptan también una interpretación vectorial, en cuyo caso la distancia
Euclidiana puede ser evaluada. Así por ejemplo, tanto el código de repetición
como el de paridad par, ambos con n 3 , tienen una representación vectorial
en un espacio vectorial de dimensión n 3 , y pueden ser representados por los
correspondientes vectores de código en la figura 6.22, donde el formato binario
de las palabras se reemplaza con el formato polar ( 1 o 1 , 0 o 1 ). Las
proyecciones sobre los ejes x, y, z son iguales a r 1 .

Figura 6.22 Representación vectorial de las palabras en un espacio vectorial de


dimensión n 3

En este gráfico se puede ver la representación vectorial del espacio vectorial con
n 3 . Así por ejemplo, la distancia Euclidiana entre los dos vectores del
código de repetición ( ( 000 ) y (111 ) ) en este formato polar sería igual a 2 3 .
Para una dada señal recibida, las muestras tomadas sobre la misma se
interpretan como las coordenadas del vector recibido, que permite representarlo
en el espacio de la figura, y también evaluar la distancia Euclidiana respecto a
los vectores del código en cuestión.

290
Capítulo VI: Códigos Convolucionales

Ejemplo 6.9: Determine la distancia que existe respecto de los vectores de


código de paridad par con n 3 , para la transmisión de la palabra (101 ) , si la
señal recibida, afectada por ruido Gaussiano, es de la forma de la figura 6.23.

1.6875
1.5

0.5

0
-0.1072
-0.5

-1
-1.0504

-1.5

6.23 Señal ruidosa resultante de la transmisión de la palabra (101 )


Figura -2
0 10 20 30 40 50 60 70 80 90

En la figura 6.23 puede verse que se transmitió la palabra (101 ) en formato


polar, que es una de las palabras del código de paridad par con n 3 , que por
efecto del ruido se encuentra alterada. Esta señal x( t ) es muestreada en los
instantes medios de cada intervalo para obtener las muestras:

x(15 ) 0.1072

x( 45 ) 1.0504

x(75 ) 1.6875

Luego el vector recibido sería r  0.1072  1.0504  1.6875 . Los


vectores de código libres de ruido son c1  1  1  1 ,
c2  1  1  1 , c 3  1  1  1 , y c 4  1  1  1
Si se realizara una decisión rígida, la palabra, transmitida en formato polar, sería
decodificada como ( 001 ) , de manera que el código de paridad par habría

291
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

detectado un error y solicitaría repetición de la misma para su correcta


recepción.
Sin embargo, si se calculara la distancia Euclidiana que existe entre el vector
recibido y los posibles vectores del código, se tendría:
d( r,c1 ) ( 0.1072  1 )2  ( 1.0504  1 )2  (1.6875  1 )2 2.8324

Igualmente:

d( r,c2 ) 2.3396
d( r,c 3 ) 1.3043
d( r,c 4 ) 3.5571

Al considerar como más probable a la secuencia que presenta menor distancia,


el decodificador en este caso adoptará una decisión adecuada decodificando
correctamente la palabra, que es c 3 .

Esta diferencia en el proceso de decodificación es la existente ente las


denominadas decisión rígida o dura (en Inglés “hard decisión”) y decisión no
rígida o suave (en Inglés “soft decisión”).
En esencia, haciendo una relación con lo visto en el capítulo 1, se puede decir
que la decisión rígida es aquella que tiene que ver con el canal simétrico
binario, donde los símbolos, 0 o 1 poseen una probabilidad p de resultar en
error, y donde el alfabeto de salida es también binario. Este planteo lleva a
técnicas de decodificación que emplean algoritmos que operan sobre el campo
binario, como la detección y/o corrección de errores por síndrome. El canal
simétrico binario, caracterizado por ser discreto y sin memoria, aparte de
simétrico, puede ser extendido de manera tal que se interprete que cada símbolo
transmitido, sea 0 o 1 , es enviado como una señal que finalmente se muestrea,
obteniéndose un valor numérico de la muestra que es parte de un alfabeto
continuo, de rango  f,f . A este canal se lo denomina Gaussiano, y en el se
cumple también que es sin memoria. Tanto en el caso que el decodificador o
demodulador realice una operación sobre un canal continuo, como cuando opere
sobre una versión cuantificada con valores discretos, mientras se cumpla que el
canal resultante posea una salida con mas de dos niveles posibles, se dirá que se
realiza una decisión no rígida.
En términos generales, la decisión no rígida producirá una menor tasa de errores
que la rígida, pero involucrará una complejidad de cálculo mayor. No existe
restricción alguna en cuanto a la aplicación de la decisión no rígida, siendo
posible tanto para códigos de bloque como convolucionales. Sin embargo, si un
código de bloques es de dimensión extensa, la cantidad de cálculos involucrados

292
Capítulo VI: Códigos Convolucionales

hace de la decisión no rígida una cuestión de difícil implementación práctica.


En el caso de los códigos convolucionales tal complejidad también existe, pero
algoritmos como el ya visto de Viterbi, reducen considerablemente dicha
complejidad, siendo en general algoritmos de funcionamiento óptimo. Por esta
razón, los códigos de bloques son llevados a una representación gráfica como el
trelis, para ser luego oportunamente decodificados con algoritmos como el de
Viterbi [31]. En este sentido se puede efectuar la decodificación por trelis de un
código de bloques, y la decodificación no rígida por trelis de un código de
bloques, diferenciando entre la decodificación hecha sobre el trelis, combinada
o no con la decisión no rígida.

6.15.1 Criterio de máxima probabilidad para el canal Gaussiano

Como se vió en la sección 6.12, la decodificación óptima de códigos


convolucionales se relaciona con el algoritmo de máxima probabilidad, que
esencialmente busca la secuencia mas probable entre las posibles, en función de
la secuencia recibida.
En el criterio de máxima similitud se supone que los bits que generaron la
información no codificada son igualmente probables. Si se asume que de un
conjunto de señales { s i ( t )} , con i 0,1,..., M  1 se transmite alguna señal
s i ( t ) , y se recibe una forma de onda r ( t ) s i ( t )  n( t ) . En el instante de
muestreo T se obtiene un valor numérico que representa a la señal recibida y
que es igual a:

y (T ) ai (T )  n(T ) .
(6.53)

donde ai (T ) representa al valor que se obtiene de la señal representativa del


símbolo en ausencia de ruido, y n( t ) es una variable aleatoria Gaussiana de
valor medio cero.
Dado que lo que se busca es definir el valor transmitido más probable en
función de lo que se ha recibido, y teniendo en cuenta el caso binario, donde
solo hay dos señales transmitidas por ejemplo, el criterio puede plantearse
como:

P(s1 /y)>P(s 0 /y) se adopta la hipótesis H1


P(s0 /y)>P(s1 /y) se adopta la hipótesis H 0
(6.54)

293
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Cuando se haya enviado un uno ‘1’, se hablará entonces de la hipótesis H1 ,


mientras que si lo que se transmitió fue un cero ‘0’, se hablará de la hipótesis
H0 .
Estas probabilidades condicionales pueden ser expresadas de la siguiente forma,
si se utiliza la relación de Bayes:
p(y/s1 )P(s1 )>p(y/s 0 )P(s0 ) se adopta la hipótesis H1
p(y/s1 )P(s1 )<p(y/s 0 )P(s0 ) se adopta la hipótesis H 0
(6.55)

también expresada de la forma:

p(y/s1 ) P(s0 )
> se adopta la hipótesis H1
p(y/s 0 ) P(s1 )

p(y/s1 ) P(s 0 )
< se adopta la hipótesis H 0
p(y/s 0 ) P(s1 )
(6.56)

conocida como la relación de probabilidad. Se asume que los símbolos enviados


son igualmente probables, por lo que la expresión anterior se transforma en:

p(y/s1 )
>1 se adopta la hipótesis H1
p(y/s 0 )

p(y/s1 )
<1 se adopta la hipótesis H 0
p(y/s 0 )
(6.57)
Se supone que se utilizaron dos símbolos s1 y s 0 , de forma que las variables
recibidas después del muestreo son las variables aleatorias y (T ) a1  n ,
y (T ) a0  n . Si se adopta ruido de tipo blanco y Gaussiano, la función
densidad de probabilidad será:
2
1§ n ·
1  ¨ ¸
2© V ¹
p(n) = e
V 2S

Cuando el símbolo transmitido resulta en un valor muestreado distinto de cero,


la función densidad de probabilidad que caracteriza a la transmisión de cada

294
Capítulo VI: Códigos Convolucionales

símbolo es también una función Gaussiana, pero con un valor medio centrado
en el valor de muestreo en cada caso.
La relación de similitud se puede expresar en términos de esta densidad de
probabilidad, que caracteriza la recepción de cada símbolo transmitido:
2
1 § y  a1 ·
1  ¨
2© V ¹
¸
.e
V 2π P(s0 )
2
! se adopta la hipótesis
1 
1 § y  a0 ·
¨ ¸ P(s1 )
2© V ¹
e
V 2π
H1 (6.57)

Simplificando:

1 ª § y a1 § y a0 · º»
2 2
·
 «¨ ¸  ¨¨ ¸¸ »
2 «© σ ¹ © σ ¹ ¼ P(s 0 )
e ¬
! se adopta la hipótesis H1
P(s1 )
(6.58)

y tomando logaritmo sobre ambos lados de la desigualdad:


2V
1
2
> y  a 1
2
 y  a0 ! ln¨¨
2
@
§ P(s 0 ) ·
¸¸ se adopta la hipótesis H1
© P(s1) ¹

Suponiendo que los símbolos son equiprobables, esta expresión se reduce a:

y  a1 2  y  a0 2 se adopta la hipótesis H1
(6.59)

La decisión de máxima probabilidad equivale a tener en cuenta la mínima


distancia posible entre el valor muestreado de la señal recibida y los valores que
corresponden a cada símbolo, cuando se esta en presencia del canal Gaussiano.
Esta decisión se toma sobre la palabra de código.
En general se puede decir que el criterio de máxima similitud se reduce a la
decisión de considerar cual de los vectores de código esta mas cerca, o sea
posee la menor distancia, respecto del recibido.

295
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

En el caso de un código de bloques, donde puede hablarse de una palabra de


código c i , el vector recibido es c i si:
d(r, c i ) = ^
min d(r, c j ) `
sobre todo c j
(6.60)

Cuando se trata de un código convolucional, la noción de bloque se pierde, dado


que la transmisión consiste en el envío de secuencias.
Para una cierta secuencia de salida de un código convolucional c existe una
secuencia recibida, denominada s r , que resulta de la aparición de errores por
efecto del ruido sobre la secuencia original c . El decodificador óptimo es tal
que compara las probabilidades condicionales P( s r / c' ) de que la secuencia
recibida s r corresponda a una secuencia conocida c ' y toma la decisión de
elegir la secuencia que tiene la mayor probabilidad de coincidir con s r :

P (s r /c' ) = max P( s r /c )
todo c
(6.61)

6.15.2 Limites de la decisión no rígida

Un canal simétrico que define una decisión no rígida es por ejemplo el que se ve
en la Figura 6.24.

Salida muy
0 confiable para 0

0 1 Salida poco
confiable para 0

Salida poco
2 confiable para 1
1

Salida muy
3 confiable para 1
Figura 6.24 Canal de transmisión empleando decisión no rígida

296
Capítulo VI: Códigos Convolucionales

El conjunto de símbolos del alfabeto de salida de un canal discreto puede


aumentarse hasta convertirse en un canal continuo. Si por ejemplo en una
estructura de canal simétrico y discreto como el de la figura 6.24, se utilizara un
alfabeto de salida de 8 niveles, que se denominarían niveles 0 a 7 , entonces
cuando el decodificador o demodulador entregue una salida 7 , estará dando
una información que se interpreta como que el bit recibido es altamente
probable que corresponda a la transmisión de un uno, cuando al decodificar un
nivel como 4 , estaría dando la indicación de que se había transmitido también
un uno, pero otorgando una estimación poco confiable de la decodificación
hecha. Esto constituye mayor información que la decisión rígida, que consistiría
simplemente en determinar, sin mas, en estos dos casos anteriormente citados,
que el bit transmitido había sido un uno. Si los bits se encuentran codificados,
es decir básicamente relacionados con otros en una palabra de mayor tamaño
que la de un bit, la información adicional proporcionada por un esquema de
decisión no rígida correspondiente a los demás bits con que el que se decodifica
esta relacionado, podría ayudar a mejorar la estimación del mismo. Esto es lo
que se puso en evidencia en el ejemplo, que se presentó para el caso de un canal
continuo.
Se puede demostrar que existe una ganancia de codificación de hasta 2.2 dB, si
se emplea decisión no rígida con un alfabeto continuo. Si en cambio solo se
realiza una discretización del alfabeto de salida del canal en 8 niveles, tal
ganancia es de aproximadamente 2 dB. Por lo tanto, no se observa mejoría
apreciable para una cuantificación del alfabeto de salida del canal por encima de
8 niveles.
La siguiente figura muestra la curva de error que ya se había presentado en el
capítulo códigos de bloques y que corresponde a una simulación del código de
repetición con n 3 decodificado utilizando la decisión rígida, comparada con
la misma transmisión decodificada utilizando la decisión no rígida. Puede verse
que asintóticamente la diferencia o ganancia de código para el caso de la
decisión no rígida tiende a 2.2 dB.

297
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

0
10

-1
10

-2
10

-3
10

Pb

-4
10

-5
10

Código de repetición, decisión suave


Código de repetición, decisión rígida
Transmision no codificada
-6
10

-7
10
-2 2 4 6 8 10 12 14
Eb/No [dB]

Figura 6.25 Decodificación del código de repetición n 3 utilizando decisión rígida,


no rígida y sin codificación

Como se había puntualizado en el capítulo códigos de bloques, el código de


repetición n 3 produce un deterioro grande de la velocidad de transmisión
( k / n 1 / 3 ), que lo hace ineficiente en términos comparativos con la
transmisión sin codificar, en particular decodificado utilizando la decisión
rígida. La figura 6.25 muestra un fenómeno curioso y es que si se lo decodifica
utilizando la decisión no rígida, el código de repetición n 3 tiene una curva
de error que coincide con la de la transmisión sin codificar. Esto es debido a que
en definitiva, repetir el bit tres veces por ejemplo, significa enviar a un uno o un
cero con una energía tres veces mayor de símbolo transmitido. La
decodificación no rígida tiene en cuenta esta energía, de manera que la
repetición provoca el efecto equivalente de un aumento en el número de niveles
del alfabeto de la salida del canal que utiliza la decodificación no rígida. Como
se indicó anteriormente, no hay mejora sustancial con el aumento exagerado del

298
Capítulo VI: Códigos Convolucionales

número de niveles del alfabeto de salida del canal. Así, el código de repetición
equivale a la transmisión sin codificar, si se penaliza al proceso de redundancia
teniendo en cuenta la tasa del código, es decir el incremento de energía.
Visto de otra manera, utilizar el código de repetición es equivalente a realizar la
transmisión sin codificar, donde cada bit es decodificado muestreando tres
veces la señal transmitida correspondiente, en una decodificación no rígida que
evalúe la distancia para un canal Gaussiano con esas tres muestras.
Sin embargo, en esquemas de codificación mas eficientes que el código de
repetición, la decisión no rígida otorga una ganancia de código al esquema en
cuestión.

6.15.3 Ejemplo de decodificación no rígida para códigos convolucionales

En el siguiente ejemplo se observan nuevamente las diferencias entre la


decodificación rígida y no rígida, usando el código convolucional de la figura
6.12, con su trelis de la figura 6.13. Como resultado de la transmisión de la
secuencia de entrada m 10101 , y efectuando una transmisión en formato
polar, se genera la secuencia transmitida
c  1  1  1  1  1  1  1  1  1  1 . Si la secuencia recibida es
s r  1.35  0.15  1.25  1.40  0.85  0.10  0.95  1.75  0.5  1.30
aplique el algoritmo de Viterbi para decodificarla. Compare con la
decodificación hecha usando decisión rígida.
El primer paso de este proceso es determinar la distancia Euclidiana entre el
vector recibido y la salida correspondiente a cada estado del sistema.

Secuencia mensaje: m 10101


Secuencia código: c 1  1  1  1  1  1  1  1  1  1
Secuencia recibida:
sr 1.35  0.15  1.25  1.40  0.85  0.10  0.95  1.75  0.5  1.30

Si se efectuara la decodificación usando decisión rígida, la secuencia de valores


muestreados del canal sería convertida según la decisión rígida para el formato
polar normalizado a los valores r 1 , que toma como umbral el valor cero.
Entonces, la secuencia recibida que se toma como base para la aplicación del
algoritmo de Viterbi es 10 01 00 00 11 , que respecto de la secuencia verdadera
11 01 11 00 11 contiene 3 bits errados. Al realizar la decodificación por trelis
usando decisión rígida, la situación es tal que en la decisión tomada en el
instante t 4 , el decodificador comete el error de descartar la secuencia
verdadera, de manera que cometerá un error de decodificación. Esto puede
verse en la figura 6.26.

299
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

10 01 00
t1 t2 t3 t4
1 2 2
Sa = 00
3 Decisión
1 2 erronea
4
Sb = 10 1
1
3
Sc = 01 4

3 3
4
Sd = 11

Figura 6.26 Decodificación rígida del ejemplo de sección 6.15.3

Aun continuando la decodificación, el decodificador ya equivoca inicialmente la


primera parte de la secuencia, con lo que en general decodificará erróneamente
el mensaje.
Si se efectúa sin embargo la decodificación por trelis utilizando la decisión no
rígida, el correspondiente trelis podría graficarse ahora designando las
transiciones con los valores de salida de canal en formato polar. Se omiten los
valores de la entrada en la representación por trelis de la figura 6.27.

t1 t2 t3 t4 t5
-1-1 -1-1 -1-1 -1-1 -1-1
Sa = 00
+1+1 +1+1 +1+1 +1+1 +1+1

+1+1 +1+1 +1+1


Sb = 10 -1-1 -1-1 -1-1

-1+1 -1+1 -1+1 -1+1


Sc = 01

+1-1 +1-1 +1-1 +1-1


+1-1 +1-1 +1-1

Sd = 11
-1+1 -1+1 -1+1

Figura 6.27 Trelis descripto para salidas en formato polar. Se omite el valor de entrada
que genera la transición

300
Capítulo VI: Códigos Convolucionales

Para efectuar el cálculo de distancias en la decisión no rígida se emplea la


distancia Euclidiana, evaluada al cuadrado. Esto permite realizar la acumulación
de distancias por simple suma. Las trayectorias o caminos en el trelis van
entonces acumulando una suma de distancias al cuadrado que corresponden a
los diferentes instantes de tiempo. En general, en un código convolucional de
tasa 1 / n se tendrán 2 n posibles salidas asignadas a las diferentes transiciones
del trelis, que se pueden describir como c0 , c1 ,..., c 2 n 1 . Estos vectores por

transición tendrían n componentes, adoptando la forma


ck c k( 0 ) , c k(1 ) ,..., c k( n 1 ) . En el caso particular del ejemplo estos vectores
serían
c0 (-1 - 1), c1 (-1  1),c2 ( 1  1),c3 ( 1  1) . De la misma forma la
secuencia recibida estaría ordenada tomando grupos de n muestras de señal,
que se denominan s r(i 1)
s r( (0i)1 ) , s r(1( i)1 ) ,..., s r( (ni11)) . La distancia al cuadrado
entre las muestras agrupadas s r(i 1) s (0 ) (1 ) ( n 1 )
r ( i 1 ) , s r ( i 1 ) ,..., s r ( i 1 ) para un dado
instante t i , que define el valor para la transición i  1 , y alguno de los k
posibles valores de salida de dicha transición, se calculo como

n 1
d (2i 1 ) ( s r(i -1) , c k ) ¦ ( s r( (ji)1 )  c k( j ) )2
j 1
(6.62)

Para una secuencia de U caminos en el trelis, la distancia al cuadrado


acumulada se calcula como:

U 1
d U2 ¦ d v21 ( s r(v -1) , c k )
v 2
(6.63)

donde k adopta diferentes valores de acuerdo a la transición evaluada.

En lo que sigue se realiza el cálculo y decodificación de la secuencia recibida


utilizando ahora la decisión no rígida, para el ejemplo analizado.
En el instante t 2 se determina la distancia al cuadrado de la transición del
estado S a a ese mismo estado S a , como:

d12 (( 1.35 ,0.15 ),( 1,1 )) (1.35  1 )2  ( 0.15  1 )2 6.245

301
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

De la misma forma pueden calcularse todas las distancias al cuadrado asociadas


a las diferentes transiciones del trelis, para luego determinar las distancias al
cuadrado acumuladas en cada estado e instante.

+1.35 -0.15 -1.25 +1.40 -0.85 –0.10

t1 t2 t3 t4
6.245 12.0675 12.900
Sa = 00
6.299
1.445 11.467
16.7
Sb = 10
2.499
1.667
12.699
Sc = 01
16.499

12.267 15.699
Sd = 11
13.499

Figura 6.28 Decisión del camino sobreviviente en un trelis, instante t 4 , decisión no


rígida

+1.35 -0.15 -1.25 +1.40 -0.85 –0.10 -0.95 –1.75

t1 t2 t3 t4 t5
6.245 12.0675 6.864
Sa = 00
6.299
24.064
1.445 11.467
17.664
Sb = 10 2.499
13.264
1.667
10.064
Sc = 01 12.699
17.864

12.267 6.864
Sd = 11
13.499 21.064

Figura 6.29 Decisión del camino sobreviviente en un trelis, instante t 5 , decisión no


rígida

302
Capítulo VI: Códigos Convolucionales

+1.35 - -1.25 -0.85 – -0.95 – +0.50


t t t t t t
6.24 6.86 14.40
Sa = 1 2 3 4 5 6
6.29
00 10.40
1.44 11.46
13.26 7.20
Sb = 2.49
10 17.60
1.66
15.60
Sc = 12.69
10.06 12.40
01
12.26 18.80
Sd = 6.86
13.49 9.20
11

Figura 6.30 Decisión del camino sobreviviente en un trelis, instante t 6 , decisión no


rígida

Si se adopta una decisión a la altura del instante t 6 , la secuencia recibida es


decodificada correctamente, considerando la mínima distancia Euclidiana
acumulada, que se registra en ese instante en la trayectoria que finaliza en el
estado Sb 10 , y que es igual a d acum _ min 7.204 , como se ve en la figura
6.31.

Figura 6.31 Decisión final del camino sobreviviente en un trelis, decisión no rígida

303
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

A través del ejemplo previo vuelven a notarse las diferencias en favor de la


decodificación no rígida, respecto de la rígida. En este caso particular, la
decodificación consigue recuperar la verdadera secuencia en el instante t 4 , y
luego con valores de muestra que registran un nivel de ruido que favorecen a la
decodificación acertada, consigue finalmente decodificar la palabra sin errores.
Como se verificó en el mecanismo de decodificación rígida para este caso, el
fracaso de la decodificación en el instante t 4 produce una decodificación
errónea.
Por otra parte, al utilizarse distancias Euclidianas, es ciertamente improbable
que dos caminos que arriban al mismo estado registren distancias exactamente
iguales.
Finalmente, y si se optara por utilizar en este ejemplo la decisión rígida, se
produciría un error que normalmente sucede como una ráfaga. Esto es típico de
la decodificación convolucional cuando el evento de error supera la capacidad
de corrección del código. En estos casos, y por esta razón, los códigos
convolucionales suelen utilizarse como el código interno de un esquema
concatenado serie de codificación, acompañados normalmente por un código
externo con alta capacidad de corrección de ráfagas, tal como un código Reed-
Solomon, y un proceso de entremezclado de datos intermedio, similar al
utilizado en la codificación del CD. De esta manera, el código externo junto con
el entrelazado de datos resuelve el problema del colapso del decodificador
interno convolucional. Esta combinación concatenada de códigos RS (externos)
y convolucionales (internos) se encuentra implementada en varios esquemas de
transmisión digital satelital y de espacio interplanetario.

6.16 Códigos Convolucionales con eliminación selectiva de


salidas. Códigos convolucionales de tasa compatible
Los códigos convolucionales con eliminación selectiva de salidas son códigos
de tasa de transmisión modificada por un proceso en el cual, y de acuerdo a una
determinada ley de selección, se omite la transmisión de determinados símbolos
de salida del codificador. El procedimiento se aplica sobre un código base que
tiene una tasa de transmisión menor que la del que se desea construir, de manera
que para una misma cantidad de bits de entrada k se transmiten no la totalidad,
sino solo una cantidad reducida de bits codificados, que es menor que la que se
transmite en el codificador base. Esta técnica fue introducida por Cain, Clark y
Geist [30], y es conocida en Inglés como “punctured convolutional codes”.
En general el código base es un código convolucional de tasa k / n 1 / 2 que
permite la construcción de códigos de tasa ( n  1 ) / n , siendo n t 3 . La idea
principal en la construcción de estos códigos con eliminación selectiva de

304
Capítulo VI: Códigos Convolucionales

salidas es que el trelis correspondiente tenga sus transiciones construidas de la


misma forma que en un código de tasa k / n 1 / 2 , con solo dos ramas
entrantes o salientes de cada estado del trelis (como en el caso de la figura 6.6
por ejemplo). Esto diferencia al código convolucional con eliminación selectiva
de salidas de tasa ( n  1 ) / n del código de tasa equivalente construido de
forma tradicional, con una máquina secuencial de estados finitos que requiere
de n  1 entradas en paralelo, que hacen que el correspondiente trelis presente
n  1 ramas entrando o saliendo de cada estado del trelis. El procedimiento
reduce así la complejidad de los algoritmos de decodificación tales como el
algoritmo de Viterbi, o como se verá en el capítulo 7, el algoritmo BCJR, que
requieren de evaluación de cantidades asociadas a distancia o estimación
probabilística hechas sobre cada rama del trelis. De esta forma el trelis del
código convolucional con eliminación selectiva de salidas posee menor número
de estas ramas que el correspondiente trelis del código construido de forma
tradicional.
Una aplicación interesante de los códigos con eliminación selectiva de salidas
se verá en la construcción de códigos turbo, en el capítulo siguiente.
En la construcción del código con eliminación selectiva de salidas, se debe
definir la ley de selección de salidas que eliminará u omitirá transmitir un
determinado bit codificado. En general la operación de eliminación selectiva
puede describirse utilizando una matriz que define la forma en que se realiza
esta operación. En esta matriz, denominada Pp , la presencia de un 1 indica que
el dato se transmite, mientras que un 0 indica que el dato se elimina u omite en
la transmisión. El procedimiento de eliminación selectiva de salidas tiene un
periodo de repetición, conocido como el período de eliminación selectiva de
salidas T p , tal que la matriz de eliminación selectiva es de dimensión 2xTp . En
la matriz de eliminación selectiva de salidas, y viendo la figura 6.7, por
ejemplo, la primera fila define los bits codificados que se transmiten (‘1’s) o no
(‘0’s) provenientes de la salida c (1 ) y la segunda fila define los bits codificados
que se transmiten o no provenientes de la salida c ( 2 ) . Leída en forma de
columnas, la matriz dice para cada transición, si la salidas c (1 ) y/o c ( 2 ) son
transmitidas o no.

Ejemplo 6.10

Construya un código convolucional con eliminación selectiva de salidas de tasa


Rc 2 / 3 tomando como base el código convolucional de tasa Rc 1 / 2 de
la figura 6.3. La figura 6.32 muestra este código convolucional con eliminación
selectiva de salidas de tasa Rc 2 / 3 .

305
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Borrado u
omisión de
cb(1) las salidas c (1 )
cb( 1 ) y cb( 2 )
del código
m S1 S2 convolucional
base
siguiendo una
determinada
cb( 2 ) ley de c(2)
selección

Figura 6.32 Código de tasa Rc 2 / 3 construido con un código base de tasa


Rc 1 / 2

Para construir un código de tasa Rc 2 / 3 es necesario pensar en el largo de


las secuencias codificadas producidas por el código base cuando la entrada es
k 2 , y diseñar una regla de eliminación de salidas tal que de las 4 salidas
generadas por el código base solo queden n 3 . Esto requiere evidentemente
en este caso de la eliminación de 1 bit cada 4 , y por lo tanto de un período de
eliminación selectiva de salidas de Tp 2 . La matriz de eliminación selectiva
de salidas podría ser entonces:

ª1 1 º
Pp «1 0 »
¬ ¼

Esto significa que en la primera transición, las dos salidas del codificador base
de la figura 6.3 son transmitidas, y en la siguiente transición, la salida c (1 ) es
transmitida, pero la salida c ( 2 ) no. De esta manera dos bits de entrada generan
tres bits de salida.
El trelis del código de tasa Rc 2 / 3 construido usando eliminación selectiva
de salidas del código base de la figura 6.3 es mostrado en la figura 6.33.

306
Capítulo VI: Códigos Convolucionales

t1 t2 t3 t4 t5 t6
0/00 0/0 0/00 0/0 0/00
Sa = 00
1/11 1/1 1/11 1/1 1/11

0/11 0/1 0/11


Sb = 10 1/00 1/0 1/00

0/0 0/01 0/0 0/01

Sc = 01

1/1 0/10 0/1 0/10


1/10 1/1 1/10

Sd = 11
1/01 1/0 1/01

Figura 6.33 Trelis de un código de tasa Rc 2 / 3 construido con un código base de


tasa Rc 1/ 2

En el trelis de la figura 6.33 se observa que en las transiciones iniciadas en


instantes de tiempo de subíndice par, la salida c ( 2 ) no es transmitida. También
puede verse que debido al proceso de eliminación selectiva de salidas sobre un
código base, inicialmente de distancia mínima libre d free 5 , resulta un código
de tasa Rc 2 / 3 con una distancia mínima libre de d free 3 . El evento que
determina esta distancia mínima se remarca en línea gruesa en la figura 6.33. La
reducción de la distancia es un proceso lógico ocasionado por la eliminación
selectiva de salidas, pero en este caso lleva al código de tasa Rc 2 / 3 a tener
el valor máximo de la distancia mínima libre de un código con esa tasa de
transmisión. Esto sin embargo no es cierto en general para códigos de tasa
( n  1 ) / n . En este sentido el código de tasa Rc 2 / 3 construido por
eliminación selectiva de salidas posee las mismas propiedades que el construido
en forma tradicional, pero con la ventaja de presentar una complejidad de
decodificación menor.

307
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Figura 6.34 Trelis de un código convolucional de tasa de transmisión Rc 2/ 3


construido de forma tradicional

En la figura 6.34 se observan las dos primeras transiciones del trelis del código
convolucional de tasa de transmisión Rc 2 / 3 construido de forma
tradicional que corresponde al codificador de la figura 6.4, donde puede
observarse que la complejidad de decodificación aumenta respecto al trelis de la
figura 6.33. La complejidad no solo aumenta porque hay 4 ramas arribando y
saliendo de cada estado, sino también porque el número de bits por rama para
evaluar la distancia o realizar las estimaciones también es mayor en el trelis de
la figura 6.34.
El procedimiento de eliminación selectiva de salidas resulta entonces muy útil
para diseñar códigos de diferente tasa de transmisión, dado que el proceso solo
requiere de la definición apropiada de la matriz de eliminación selectiva, y de la
construcción de un único código base de tasa Rc 1 / 2 . En este sentido si
sobre un código base se define una matriz de eliminación selectiva Pp
dimensión fija 2xTp y se opera sobre dicha matriz convirtiendo en su versión
inicial algunos ‘1’s en ‘0’s, se tendrán diferentes tasas del código resultante

308
Capítulo VI: Códigos Convolucionales

mayores que la inicial sin mas modificaciones que las definidas por los cambios
hechos sobre Pp . Por otra parte, el codificador y decodificador utilizan la
información de trelis del mismo codificador base, y pueden usarse para
codificar y decodificar cualquier versión con eliminación selectiva de salidas
del código base. Esto configura un esquema denominado codificación
convolucional de tasa compatible (en Inglés, RCPC, “Rate-Compatible
Punctured Convolutional codes”). Este tipo de transmisión de tasa variable es
útil en esquemas de repetición de la información, para optimizar la tasa de
transmisión total del sistema, de manera que los códigos de alta tasa de
transmisión operan en condiciones de bajo ruido, mientras que los códigos de
baja tasa de transmisión, y por ende de mayor capacidad de corrección de error,
operan en condiciones de mayor ruido. El esquema inicia la transmisión en alta
tasa de error, y retransmite en una tasa mas baja cuando se producen reiterados
pedidos de repetición.

309
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Bibliografía y Referencias
1 Lin, S. y Costello, D. J., Jr., Error Control Coding: Fundamentals and
Applications, Prentice Hall, inc. Englewood Cliffs, New Jersey, 1983.

2 Sklar, B., Digital Communications, Fundamentals and Applications,


Prentice Hall, 1993.

3 Viterbi, A. J., “Error bounds for convolutional codes and an


asymptotically optimum decoding algorithm,” IEEE Trans. Inf. Theory,
IT-13, Págs. 260-269, Abril 1967.

4 Viterbi, A. J. y Omura, J. K., Principles of digital communication and


coding, McGraw-Hill, New York, 1979.

5 Carlson, B., Communication Systems. An Introduction to Signals and


Noise in Electrical Communication, tercera edición, Mc-Graw Hill Book
Company, 1986.

6 Proakis, J. G. and Salehi, M., Communication Systems Engineering,


Prentice Hall, 1993.

7 Heegard, C. y Wicker, S., Turbo Coding, Kluwer Academic Publishers,


1999.

8 Massey, J. L. y Mittelholzer, T., “Codes over rings - practical necessity,”


AAECC Symposium, Toulouse, Francia, Junio 1989.

9 Massey, J. L. y Mittelholzer, T., “Convolutional codes over rings,” Proc.


Fourth Joint Swedish-Soviet International workshop on Inf. Theory.
Gottland-Sweden, 27 de Agosto al 1 de Septiembre de 1989.

10 Baldini, R., Flh., Coded Modulation Based on Ring of Integers, Tesis


doctoral, Univ. de Manchester, Manchester, 1992.

11 Baldini, R., Flh., y Farrell, P. G., “Coded modulation based on ring of


integers modulo-q. Part 2: Convolutional codes,” IEE Proc-commun., vol.
141, no. 3, Págs.137-142, Junio 1994.

12 Ahmadian-Attari, M., Efficient ring-TCM Coding Schemes for Fading


Channels, Tesis doctoral, Univ. de Manchester, 1997.

310
Capítulo VI: Códigos Convolucionales

13 Lopez, F. J., Optimal Design and Application of Trellis Coded Modulation


Techniques Defined over the Ring of Integers, Tesis doctoral, Univ. de
Staffordshire, Stafford, 1994.

14 Ahmadian-Attari, M. y Farrell, P. G., “Multidimensional ring-TCM codes


for fading channels,” IMA Conf. on Cryptography & Coding, Cirencester,
18-20, Págs. 158-168, Diciembre 1995.

15 Castiñeira Moreira, J., Signal space coding over rings, Tesis doctoral,
Univ. de Lancaster, Lancaster, 2000.

16 Massey, J. L. y Sain, M. K., “Inverse of linear sequential circuits,” IEEE


Trans. Comput., vol. C17, Págs. 330-337, Abril 1988.

17 Forney, G. D., Jr., ”Geometrically uniform codes,” IEEE Trans. Inform.


Theory, vol. 37, no. 5, Págs. 1241-1260, Septiembre 1991.

18 Forney, G. D., Jr., “Coset codes-Part I: Introduction and geometrical


classification,” IEEE Trans. Inform. Theory, vol. 34, no. 5, Págs. 1123-
1151, Septiembre 1988.

19 Forney, G. D., Jr., and Wei, L. -F., “Multidimensional constellations- Part I:


Introduction, figures of merit, and generalised cross constellations,” IEEE
Select. Areas Commun., vol. 7,no. 6, Págs. 877-892, Agosto 1989.

20 Forney, G. D., Jr., and Wei, L. -F., “Multidimensional constellations- Part


II: Voronoi constellations,” IEEE Select. Areas Commun., vol. 7,no. 6,
Págs. 941-956, Agosto 1989.

21 Ungerboeck, G., “Channel coding with multilevel /phase signals,” IEEE


Trans. Inform. Theory, vol. IT-28, Págs. 56-67, Enero 1982.

22 Divsalar, D. and Yuen, J. H., “Asymmetric MPSK for trellis codes,”


GLOBECOM’84, Atlanta, GA, Págs. 20.6.1-20.6.8, Noviembre 1984.

23 Benedetto, S., Garello, R., Mondin, M. y Montorsi, G., “Geometrically


uniform partitions of LxMPSK cosntellations and related binary trellis
codes,” IEEE Trans. Inform. Theory, vol. 42, no. 2/3/4, Págs. 1995-1607,
Abril 1994.

311
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

24 Forney, G. D., Jr., “Coset codes-Part II: Binary lattices and related codes,”
IEEE Trans. Inform. Theory, vol. 34, no. 5, Págs. 1152-1187, Septiembre
1988.

25 Castiñeira Moreira, J., Edwards, R., Honary, B. y Farrell, P. G., “Design of


ring-TCM schemes of rate m/n over N-dimensional constellations,” IEE
Proceedings-Communications, Vol. 146, Págs. 283-290, Octubre 1999.

26 Benedetto, S., Garello, R. and Mondin, M., "Geometrically uniform TCM


codes over groups based on LxMPSK constellations," IEEE Trans. on
Inform. Theory, Vol. 40, No. 1, Págs. 137-152, Enero 1994.

27 Biglieri, E., Divsalar, D., McLane, P. J. y Simon, M. K., Introduction to


Trellis-Coded Modulation with Applications, McMillan Publishing
Company, N. York, 1991.

28 Viterbi, A., “Convolutional codes and their performance in Communication


systems,” IEEE Trans. Commun., Technol., vol. COM-19, no. 5, Págs. 751-
772, Octubre 1971.

29 Omura, J. K., “On the Viterbi decoding algorithm,” IEEE Trans. on Inform.
Theory, IT-15, Págs. 177-179, Enero 1969.

30 Cain, J. B., Clark, G. C. and Geist, J. M., “Punctured convolutional codes of


rate (n-1)/n and simplified Maximum Likelihood decoding,” IEEE Trans.
on Inform. Theory, IT-25, Págs. 97-100, Enero 1979.

31 Honary B., Markarian G., Trellis Decoding of. Block Codes: a Practical
Approach, Kluwer Academic Publishers, USA, 1997.

312
Capítulo VI: Códigos Convolucionales

Problemas
6.1)
a) Determine el trelis y el diagrama de estados de un código convolucional con
K 2 , tasa de código Rc 1 / 3 y generadores de secuencias dados por los
siguientes polinomios:
g ( D ) D  D2 , g ( 2 ) ( D ) 1  D y g ( 3 ) ( D ) 1  D  D2 ;
(1 )

b) ¿Cuál es la distancia libre mínima del código?


c) Proporcione un ejemplo para mostrar que este código puede corregir eventos
de errores dobles;
d) ¿Es este código catastrófico?

6.2) Un código de control de error binario y convolucional tiene los


siguientes parámetros: k 1 , n 3 , K 2 , g (1 ) ( D ) 1  D 2 ,
g ( 2 ) ( D ) D y g ( 3 ) ( D ) D  D2
a) Dibuje el circuito del codificador y su diagrama trelis y calcule su distancia
libre mínima.
b) ¿Es este código sistemático o no sistemático?

6.3) Para el codificador convolucional de la figura P.6.1:


a) Determine los polinomios generadores del codificador;
b) ¿Es este código catastrófico? Justifique la respuesta
c) Determine la secuencia de salida codificada correspondiente al mensaje de
entrada m 101 .

c (1)

c(2)

Figura P.6.1 Codificador convolucional del Problema 6.3

313
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

6.4) Dibuje el diagrama trelis del siguiente codificador convolucional


binario para el cual Rc 1 / 3 .
a) ¿Cuál es el alcance y la distancia libre mínima del código generado por este
codificador?
b) Dibuje el camino recorrido a través del diagrama de trelis extendido que le
corresponde a la secuencia de entrada m 1110100 comenzando en el
estado todos-ceros y determine la secuencia de salida.

c (1 )

c(2)

m c(3)

Figura P.6.2 Codificador convolucional del problema 6.4

6.5)
a) Dibuje el diagrama de trelis del código convolucional binario generado por
el codificador de la figura P.6.3 y determine su distancia libre mínima.
b) Obtenga la respuesta impulsiva del codificador y su relación con lo
calculado en el inciso a);
c) Confirme el valor de la distancia libre mínima del código utilizando el
enfoque de la función generante.
d) ¿Cuál es la probabilidad de error de nodo para este código en un CSB que
tiene p 10 3 ?

c (1 )

c(2)
Figura P.6.3 Codificador convolucional del Problema 6.5

314
Capítulo VI: Códigos Convolucionales

6.6) La secuencia recibida sr 01 11 00 01 11 00 00... es aplicada a la


entrada del decodificador del código convolucional binario generado por el
codificador de la figura P.6.4;
a) Determine la correspondiente secuencia de entrada usando el algoritmo de
decodificación de Viterbi suponiendo que el estado inicial fue el estado
todos-ceros.

c (1 )

c(2)

Figura P.6.4 Codificador convolucional del Problema 6.6

6.7) El diagrama de trelis de un codificador de control de error


convolucional binario es mostrado en la figura P.6.5:

0 / 00 0
0

1 / 11 0 / 01

1 1
1 / 10

Figure P.6.5 Diagrama de trelis del problema 6.7

315
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Una secuencia emitida por el codificador es transmitida sobre un canal que sufre
de errores aleatorios, y es recibida como la secuencia:

sr 11 10 11 00 11... .
a) Encuentre la secuencia mas probable de haber sido transmitida utilizando el
algoritmo de decodificación de Viterbi, y luego determine las posiciones de
los errores que podrían haber ocurrido en la transmisión.
b) Una secuencia generada por el codificador del inciso a) es transmitida sobre
un canal de ruido aditivo, blanco y Gaussiano, es recibida como la
secuencia:

sr 33 10 23 00 33...

Luego de haber sido detectada usando decisión no rígida con cuatro niveles de
decisión. Encuentre el patrón de error mas probable en la secuencia recibida.

6.8) El codificador convolucional de tipo IIR y tasa de código Rc 1 / 2


que se ve en la figura P.6.6, opera con coeficientes en el campo binario
GF( 2 ) . Determine las matrices de función transferencia y función
transferencia de estados de este código.
c (1 )
c(2)

a0 a1 a2
m S0
S1 S2

f1 f2

316
Capítulo VI: Códigos Convolucionales

Figura P.6.6 Codificador convolucional del problema 6.8


6.9) Un código de control de errores convolucional y binario tiene k 1 ,
n 2 , K 2 , g (1 ) ( D ) 1  D  D 2 , and g ( 2 ) ( D ) D  D 2 :
a) Dibuje el circuito codificador y el diagrama de trelis, y determine la tasa y la
distancia mínima del código.
b) ¿Es este código sistemático o no sistemático?

6.10) Una secuencia de información codificada usando el codificador del


problema 6.9 se transmite a través de un canal que presenta errores
aleatorios, y la secuencia recibida correspondiente es :

sr 10 01 00 01 11 11 10

¿Cuál fue la secuencia de información transmitida?

317
7
Códigos turbo
El esquema de control de errores original presentado por Berrou, Glavieux y
Thitimajshima [1] en 1993 revolucionó el tema de la decodificación
proponiendo un mecanismo iterativo que proporciona ganancias de código
óptimas, las cuales llevan al sistema a trabajar en cercanía del límite de
Shannon. En esta estructura inicial dos codificadores convolucionales se
ordenan en una configuración de concatenado paralelo involucrando también un
permutador de datos pseudo aleatorio, de manera que cada dato de entrada es
codificado dos veces con la ayuda del permutador aleatorio, cuyo efecto es el de
independizar estadísticamente las dos secuencias de datos generadas. En este
sentido se prefiere denominar de ahora en adelante “permutador” al entrelazador
de datos que es utilizado clásicamente en un código turbo [2, 3]. En la forma
más usual, la estructura del codificador turbo esta basada en la utilización de
dos codificadores convolucionales. Estos son construidos con máquinas
secuenciales de estados finitos de respuesta impulsiva infinita, conocidos como
codificadores convolucionales sistemáticos recursivos (CCSR), que
generalmente son de tasa Rc 1 / 2 . Si las secuencias de redundancia son
transmitidas junto con los bits de mensaje, la tasa del código turbo resulta ser en
este caso Rc 1 / 3 . Sin embargo y frecuentemente se emplea la técnica de
eliminación selectiva de salidas, donde alguno de los datos de redundancia es
omitido de acuerdo a una ley conocida que permite entonces mejorar la tasa del
código, tal como se vió en el capítulo 6, de manera que la tasa del código turbo
puede ser modificada y mejorada. En el proceso iterativo de decodificación la
información comunicada de uno a otro decodificador es una estimación de los
datos, de manera que los decodificadores empleados en estos esquemas deben
operar con estimaciones a la entrada y a la salida del sistema, aplicando lo que
se conoce como decisión suave o no rígida sobre la información [3]. En el
mecanismo iterativo, el primer decodificador adopta un conjunto de
estimaciones para los bits a decodificar y comunica lo que se llama una salida
extrínseca o información extrínseca que será proporcionada al segundo
decodificador, que emplea la información como una información a priori, que
conjuntamente con la información propuesta por los bits de entrada y la
estructura de codificación, le permite realizar su estimación y proporcionar su
información extrínseca, que será empleada por el primer decodificador como
información a priori para su nueva estimación. Esta información proveniente del
segundo decodificador es empleada por el primer decodificador para generar

319
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

una estimación más adecuada, permitiéndole así corregir más errores de los que
había corregido en primera instancia.
En forma iterativa este procedimiento genera una estimación cada vez mas
adecuada de la información transmitida, pero normalmente la mejora en la
estimación decrece con el número de iteraciones, haciendo que dicho número se
establezca en un valor razonable donde la mejora generada no se incrementa
tanto para justificar la continuación del proceso iterativo.
Como procedimiento de decodificación que procesa estimaciones de entrada y
salida aparece el algoritmo de máxima Probabilidad A Posteriori (MPA)
conocido como algoritmo BCJR (Bahl, Cocke, Jelinek, Raviv, 1974) [4].
Posteriores optimizaciones de este algoritmo llevaron a la aplicación de
algoritmos similares de menor complejidad, como el algoritmo de Viterbi con
decisión suave, conocido de sus siglas en Inglés como algoritmo SOVA, y el
algoritmo MPA con estimaciones logarítmicas, llamado normalmente algoritmo
LOG MPA [2].

7.1 Codificador turbo


La estructura de un codificador turbo obedece a la de dos codificadores
organizados en concatenación paralela y asistidos por un bloque de permutación
de datos, así como de un procesador de multiplexado y eliminación selectiva de
salidas, tal como el que se ve en la figura 7.1.

m Codif. C1
c1
Permutador
Multiplexor y c (m,c1' , c'2 )
selector de datos
de datos

Codif. C2
c2

Figura 7.1 Esquema del codificador turbo

320
Capítulo VII: Códigos turbo

En la estructura mas tradicional los codificadores en la figura denominados 1 y


2 son CCRS de tasa k / n 1 / 2 de manera que c1' c1 , c 2' c 2 y la
longitud de las secuencias c1' y c '2 , c1 y c 2 son todas iguales, y la tasa del
esquema de codificación es Rc 1 / 3 . Para mejorar el valor de esta tasa de
código se aplica la selección de los datos de redundancia provenientes de los
codificadores, de manera que por ejemplo, y como es muy comúnmente usado,
si se elimina alternativamente una u otra de las salidas de paridad de cada
codificador CCRS del esquema, se logra que las secuencias c1' y c '2 tengan una
longitud que es la mitad de las secuencias c1 y c 2 respectivamente, y la tasa
del código pasa a ser Rc 1 / 2 . No se aplica selección a los bits de
información por que esto reduce la tasa del esquema.
Dos de las partes más importantes en el esquema de un codificador turbo son el
permutador de datos, en particular su dimensión o longitud, y la naturaleza
recursiva (empleo de máquinas secuenciales de estados finitos de respuesta
impulsiva infinita) de los codificadores componentes del esquema [2, 3]. El
excelente funcionamiento de estos códigos es función de la naturaleza pseudo-
aleatoria y la longitud del permutador. Por otra parte esta longitud no
incrementa demasiado la complejidad de la decodificación, pero si agrega un
retardo, que en algunas aplicaciones puede ser una desventaja.

7.2 Decodificación de códigos turbo


7.2.1 El decodificador turbo

Los códigos turbo adoptan esta denominación debido al proceso iterativo de


decodificación que los caracteriza. La esencia de la decodificación turbo es la
iteración de información entre los decodificadores, que se asiste de la
independencia estadística de las dos secuencias que han sido generadas por cada
bit de información. La estructura del decodificador es como la que se ve en la
figura 7.2:

321
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Figura 7.2. Esquema del decodificador turbo

En el proceso de decodificación cada decodificador emplea información


provista desde el canal relativa al dato sistemático y de paridad correspondiente,
junto con la información a priori proporcionada por el otro decodificador. Sin
embargo el decodificador no realiza una decisión rígida como en el caso del
decodificador Viterbi tradicional, sino que entrega una estimación acerca de la
información decodificada al otro decodificador del sistema. Esta información da
una estimación de la posibilidad de que el dato decodificado sea un 1 o un 0.
Esta información se suele medir en forma logarítmica, a través de lo que se
conoce como la relación logarítmica de probabilidad, que será definida mas
adelante. Esta medición es muy adecuada por que resulta ser un número con
signo, de manera que su polaridad indica si el bit es 1 (positiva) o 0 (negativa),
mientras que su magnitud da una idea de cuán probable es el evento medido.
Existen varios algoritmos que operan resolviendo estimaciones y entregando
como salida también estimaciones, entre los cuales se encuentra el algoritmo
BCJR [4]. Para presentar este algoritmo, se darán primero algunas nociones de
medición de estimaciones y probabilidades [3].

7.2.2 Definición de probabilidades y estimaciones

Si se tiene una variable aleatoria discreta X cuyos posibles valores se adoptan


de un alfabeto de símbolos A X , la descripción de esta variable aleatoria se
realiza con la llamada función distribución de probabilidad (que representada
gráficamente suele denominarse histograma), que es la función que para cada
valor de la variable le asigna la probabilidad de que ese valor ocurra. En el caso

322
Capítulo VII: Códigos turbo

de un alfabeto continuo función distribución de probabilidad se convierte en la


función densidad de probabilidad. La función distribución de probabilidad se
describe entonces como:

P( X x) p( x ) t 0 y ¦ p( x ) 1.
xAX

(7.1)

En una función distribución de probabilidad se asigna un número no negativo


p( x ) a cada evento de la variable aleatoria x  A X . Una medida equivalente
para los algoritmos de detección lo constituye lo que se denomina una medida o
estimación μ( x ) del mismo evento. Una estimación del evento x  A X es una
generalización de la función distribución de probabilidad donde se elimina la
restricción de que la sumatoria sobre todo el alfabeto sea igual a 1 . En función
de esto puede decirse que:

μ( x )
p( x )
¦ μ( x )
xA
(7.2)

la estimación del evento cumple con propiedades similares a las que presenta la
función distribución de probabilidad La estimación marginal de x  AX se
obtiene sumando sobre los eventos de una variable aleatoria asociada Y :

μ( x ) ¦ μ( x , y )
y AY

(7.3)

donde μ( x , y ) es la estimación conjunta para un par de variables aleatorias X


e Y . La regla de Bayes también se aplica a la estimación conjunta:

μ( x , y ) μ( y / x )μ( x )
(7.4)

Con el objeto de mantener las operaciones en el nivel de suma, en lugar de


producto, se suele adoptar una estimación en formato logarítmico, que será
denominada métrica de la variable:

323
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

L( x )  ln( μ( x ))
(7.5)

μ( x ) e  L( x )
(7.6)

Se puede decir entonces que:

L μ( x )  μ( y ) >
 ln e L( x )  e L( y ) @
(7.7)

L μ( x )μ( y ) L( x )  L( y )
(7.8)

7.2.3 Detección por símbolo

La detección de símbolos se relaciona con el problema de la recepción y


decodificación y esta planteada de forma que se busca determinar el valor de
una determinada variable aleatoria X por observación de los eventos de una
variable aleatoria relacionada Y . Así por ejemplo una variable aleatoria X que
toma valores sobre un alfabeto discreto AX ^0,1` puede ser la entrada a un
CSB de probabilidad de error p y la variable de salida de este canal, que es Y ,
adopta también valores dentro del alfabeto AY ^0,1`
Como otro ejemplo una variable aleatoria X que adopta valores dentro del
alfabeto polar AX ^ 1,1` produce al pasar por un canal afectado por ruido
blanco y Gaussiano una variable aleatoria Y que adopta valores dentro del
conjunto de los números reales AY ƒ . En términos generales se dice que se
realiza una decodificación dura sobre X si al observar la variable Y se
determina una decisión directa que elige uno de los dos posibles valores dentro
del alfabeto de X , AX ^ 1,1` que será x̂ . Este es el caso de la
decodificación que toma muestra de la señal recibida para compararla con un
umbral de tensión y decidir por cero o uno de acuerdo a la comparación hecha.
En contraposición con este procedimiento, si el decodificador asigna una
estimación μ( x ) de X basada en la observación de Y , se dice que se realiza
una decisión suave.

324
Capítulo VII: Códigos turbo

Existen numerosas formas de asignar una decisión no rígida sobre X pero las
dos mas significativas son las provistas por los métodos de máxima similitud y
máxima probabilidad a posteriori.
En el procedimiento de asignación por máxima similitud la decisión no rígida
para la estimación basada en el evento de la variable y  AY esta dada por la
densidad de probabilidad condicional [3]:

p( x , y )
μ MS ( x ) p( y / x )
p( x )
(7.9)

En el caso del procedimiento de máxima probabilidad a posteriori la estimación


viene dada por:

p( x , y )
μ MPA ( x ) p( x / y )
p( y )
(7.10)

La estimación de máxima similitud no es una función densidad de probabilidad


por que la suma sobre todo el alfabeto de X , A X , no necesariamente resulta ser
1 . Sin embargo la estimación de máxima probabilidad a posteriori si es una
función densidad de probabilidad por cumplir con la condición de
normalización.
La estimación a posteriori es proporcional a la probabilidad conjunta. Como:

μMPA ( x ) v p( x , y )
(7.11)

entonces:

μMPA ( x ) v μMS ( x )p( x )


(7.12)

7.2.4 Relación de probabilidad logarítmica

La relación de probabilidad logarítmica, en Inglés "Log Likelihood Ratio"


(LLR), es la información que utiliza cada decodificador para comunicarle al
otro la información considerada extrínseca. La relación de probabilidad
logarítmica para el bit bi se denota L( bi ) , y se define como el logaritmo

325
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

natural del cociente entre las probabilidades de que el bit adopte valor uno '1' o
cero ' 0' . Debido a que esta relación esta caracterizada por que el signo define
uno u otro valor del bit, será mas convenientemente definida como el cociente
de las probabilidades de que el bit adopte valor  1 o  1 ( formato polar), lo
que significará que se realiza la operación no sobre la información binaria, sino
sobre las señales en el canal  1 o  1 que representan esa información.
Entonces:

§ P ( bi 1 ) ·
L( bi ) ln¨¨ ¸
© P ( bi 1 ) ¸¹
(7.13)

esta forma de definir la relación de probabilidades logarítmica será útil mas


adelante, cuando se describa el algoritmo de decodificación, que se ve
simplificado por uso del signo propio de esta relación.

Relación de probabilidad logaritmica


8

-2

-4

-6

-8
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
P(bk=+1)

Figura 7.3. Relación de probabilidad logarítmica como función de la probabilidad del


símbolo  1

326
Capítulo VII: Códigos turbo

En la figura 7.3 se puede observar la variación de la relación de probabilidad


logarítmica, que adopta signo positivo si la probabilidad P( bi 1 ) ! 0.5 (el
símbolo '1' es mas probable que el símbolo ' 0' ), y signo negativo en caso
contrario, si P( bi 1 )  0.5 (el símbolo ' 0' es mas probable que el símbolo
'1' ). El módulo de este número es proporcional a la certeza de que el bit adopte
uno u otro valor.
De la definición de la relación de probabilidad logarítmica, y teniendo en cuenta
que P( bi 1 ) 1  P( bi 1 ) se pueden obtener otras expresiones útiles
[5]:

P( bi 1 )
e L( bi )
1  P( bi 1 )
(7.14)

y también:

e L( bi ) 1
P ( bi 1 )
1e L( bi )
1  e L( bi )
(7.15)

e L( bi ) 1
P ( bi 1 ) L( bi )
1e 1  e L( bi )
(7.16)

que pueden quedar resumidas en la siguiente expresión:

e L( bi ) / 2 e L( bi ) / 2
P ( bi r1 ) L( bi )
.e r L( bi ) / 2 L( bi )
.e bi L( bi ) / 2
1e 1e
(7.17)

dado que el bit bi r1 .

7.3 Canales discretos y fuentes de Markov


Como se ha visto en el capítulo 1 un canal discreto queda caracterizado por su
matriz de probabilidades de transición. En general se suele considerar al canal
discreto sin memoria, es decir a aquel canal donde al aplicarse una secuencia de

327
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

entrada X1 , X 2 , X 3 ,... se genera una secuencia de salida Y1 ,Y2 ,Y3 ,... con
valores que provienen de un alfabeto discreto y que son estadísticamente
independientes entre si, debido a que los elementos de entrada también lo son.
Con esta condición la densidad de probabilidad de salida condicional esta dada
por el producto de las probabilidades de transición del canal:

n
p( Y / X ) – R j (Y j / Xj )
j 1
(7.18)

siendo R j (Y j / X j ) la probabilidad de transición del canal p( y j / x j ) para el


símbolo transmitido x j . En esta notación x j significa el valor de la señal en el
instante j , X j es una variable aleatoria que representa a x j y que adopta
valores del alfabeto Ax , al cual pertenece x j , y X X1n ^X1 , X 2 ,..., X n ` es
una secuencia descripta en forma de vector de variables aleatorias. La diferencia
entre X j y x j es que la primera es una variable aleatoria de la cual la segunda
es un valor particular que ésta adopta. En general el canal será estacionario y la
probabilidad de transición no dependerá del tiempo, siendo la misma para toda
transmisión de X j . La fuente de datos tiene una función densidad de
probabilidad o histograma que generalmente se adopta como uniforme o
equiprobable, que se denomina la función densidad marginal de fuente p( X j ) .
En general si la fuente se considera formada por secuencias de datos
independientes se dice que la fuente es discreta y sin memoria. Sin embargo ese
modelo no es el adecuado para las fuentes de datos codificados cuando estos
son la salida de un codificador por trelis. En este caso el modelo de una fuente
de Markov discreta oculta es mucho mas adecuado.
Una secuencia de entrada a un canal se considera modelada como una fuente
discreta oculta de Markov si sus elementos son elegidos de una conjunto
discreto o alfabeto discreto, y si las probabilidades conjuntas de los bloques de
símbolos son de la forma:

n
p( X ) p( X1 )– Q j ( X j / X j 1 )
j 2
(7.19)

donde se identifican a las probabilidades de transición de fuente como:

328
Capítulo VII: Códigos turbo

p( X j 1 , X j )
Q( X j / X j 1 )
p( X j 1 )
(7.20)

que son las probabilidades que describen el nivel de dependencia entre los
símbolos de la fuente discreta de Markov. Una de las características de una
fuente de Markov es que las funciones densidad de probabilidad cumplen con la
condición:

p( X j ) ¦ p( X j 1 ).Q j ( X j / X j 1 )
x j 1AX j 1

(7.21)

La característica notoria de las fuentes de Markov es que en cualquier instante


j , conocer al símbolo correspondiente X j permite a los eventos o secuencias
del pasado y futuro X1J 1 ^X1 , X 2 ,...X j 1 ` y X nj 1 ^X j 1 , X j 2 ,...X n ` ser
independientes. Esto a su vez deriva en la descomposición de la función
densidad de probabilidad de la secuencia en tres factores:

p( X ) p( X 1j 1 , X j , X nj 1 ) p( X 1j 1 / X j )p( X j )p( X nj 1 / X j )
(7.22)

expresión en la cual se identifican los términos del pasado, presente y futuro de


la secuencia y su independencia estadística, como consecuencia del modelo de
fuente de Markov. Esta propiedad será demostrada en las siguientes secciones.
Una fuente discreta oculta de Markov es un modelo ideal para describir la
operación de un codificador por trelis que genera símbolos relacionados o
dependientes que son entrada a un canal discreto sin memoria. Considerando
entonces la secuencia B1 , B2 , B3 ,... que podría identificar las ramas de un trelis
empleado para diseñar un codificador, que adoptan valores de un alfabeto
discreto AB y siendo las salidas al canal una función que asigna elementos del
alfabeto AB al alfabeto A X de manera que X j es la variable de salida
asignado al elemento B j , la secuencia X1 , X 2 , X 3 ,... se puede modelar como
una fuente discreta oculta de Markov. Como consecuencia de la relación entre
los símbolos de entrada y salida del canal discreto sin memoria, la secuencia de
salida Y1 ,Y2 ,Y3 ,... es también una fuente discreta oculta de Markov.

329
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Como un ejemplo particular de una cadena discreta oculta de Markov se puede


citar la operación de las ramas o transiciones del trelis que describe a una
máquina de estados finitos que es básicamente un codificador por trelis (esté
este relacionado con un código de bloques o convolucional). En este caso el
evento Br j br j es descripto por el valor de entrada m j al codificador que
provoca la transición o rama del trelis, la salida X j que le corresponde a esa
transición, y los estados anterior y actual S j 1 y S j que determinan la
transición. En general los datos de entrada a la máquina de estados finitos se
suponen independientes de manera que la función densidad de probabilidad
n
conjunta de un bloque de estos datos de entrada es igual al producto – p( m j ) .
j 1
De esta manera las probabilidades de transición de fuente son:

­
°p( m j ) transcion S j 1 o S j asociada a m j ,X j
Q j ( br j / br j 1 ) ®
°̄0 transcion S j 1 o S j no existe
(7.23)

El problema central en la operación de cadenas de Markov ocultas es determinar


la estimación de las variables de entrada al sistema en función de la observación
de la salida del canal Y . Una solución iterativa para este problema es el
algoritmo de Baum y Welch, que fue aplicado a la solución de la decodificación
de códigos convolucionales por Bahl, Cocke, Jelinek y Raviv, (BCJR) dando
forma a otro algoritmo denominado entonces BCJR. El objetivo es calcular una
estimación o medida no rígida para el término j , X j , de la cadena oculta de
Markov por observación de la secuencia de salida Y del canal discreto sin
memoria al que la secuencia X había ingresado. Así por observación de la
secuencia de salida del canal Y Y1n ^Y1 ,Y2 ,...,Yn ` se realiza una medida o
estimación por máxima probabilidad a posteriori:

μMPA ( X j ) p( X j ,Y )
(7.24)

donde Y es un vector que contiene los valores de observación de la salida Y .


La estimación o medida de máxima similitud sería:

330
Capítulo VII: Códigos turbo

p( X j ,Y )
μ MS ( X j )
p( X j )
(7.25)

El algoritmo se propone determinar la probabilidad conjunta p( X j ,Y ) que


define a cualquiera de las dos medidas o estimaciones y que puede factorizarse
de la forma dada en la ecuación (7.22).
Para obtener esta expresión serán útiles las siguientes propiedades relativas a
eventos correlacionados, que se utilizarán juntamente con la regla de Bayes:

Para dos variables aleatorias X y Y , la probabilidad conjunta de X e Y ,


P( X ,Y ) , se puede expresar en función de la probabilidad condicional de X
dado Y , P( X / Y ) como (regla de Bayes):

P( X ,Y ) P( X / Y )P(Y )
(7.26)

Si ahora se considera como variable al evento conjunto V ^X ,Y ` , se puede


aplicar la regla de Bayes de la ecuación anterior de la siguiente forma:

P (V , Z ) P( X ,Y , Z )
P( ^X ,Y ` / Z ) P (V / Z )
P( Z ) P( Z )
P( X ,W ) P( X / W )P( W )
P( Z ) P( Z )
(7.27)

P( Y , Z )
P( ^X ,Y ` / Z ) P( X / ^Y , Z`) P( X / ^Y , Z`)P(Y / Z )
P( Z )
(7.28)

por otra parte, y por aplicación de las propiedades de las cadenas de Markov y
las características estadísticas del canal discreto sin memoria, se puede decir
que:

^
p(Y j / X j ,Y1j 1 )` p(Y j / X j )
(7.29)

331
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

^ `
p(Y jn1 / Y j , X j ,Y1j 1 ) p(Y jn1 / X j )
(7.30)

7.4 Algoritmo BCJR. Caso de un codificador por trelis y el


canal discreto sin memoria
Como se ha visto, el problema relacionado con la decodificación de un código
turbo es el de realizar la estimación de las probabilidades a posteriori de los
estados y las transiciones en un modelo de fuente de Markov observada a través
de un canal discreto sin memoria, de acuerdo al gráfico de la figura 7.4:

Fuente de Canal Receptor


Markov discreto sin
memoria

Figura 7.4. Modelo del sistema para la aplicación del algoritmo BCJR

La fuente de Markov en el sistema es una fuente discreta de estados finitos, es


decir por ejemplo un código convolucional o una máquina de estados finitos.
Se asume que este sistema o fuente de Markov tiene U estados
u 0,1,2,...,U  1 . El estado de la fuente en el instante i se denota con S i y su
salida es X i . Una secuencia de estados desde el instante i al instante j será
descripta como Si j ^Si ,Si 1 ,..., S j ` que se acompaña de una secuencia de
salidas X ij ^X i , X i 1 ,..., X j `. X i es el i -ésimo símbolo de salida tomado
del alfabeto discreto.
Las transiciones entre estados se rigen por las probabilidades de transición:

pi ( u / u' ) P( Si u / Si 1 u' )
(7.31)

y las salidas por las probabilidades:

q i ( X / ^u' ,u`) P( X i x / ^Si 1 u' ,Si u`)


(7.32)

donde x pertenece al alfabeto discreto de salida.

332
Capítulo VII: Códigos turbo

La fuente de Markov produce una secuencia de salida X 1n que se inicia en el


estado S0 0 y finaliza en el estado Sn 0 . La salida de la fuente de Markov
X 1n es la entrada a un canal discreto sin memoria ruidoso que genera la
secuencia de salida Y1n ^Y1 ,Y2 ,...,Yn `. Las probabilidades de transición de
un canal discreto sin memoria se definen como R(Y j / X j ) de manera que para
todo instante 1 d i d n se tiene que:

i
P(Y1i / X1i ) – R(Y j / Xj )
j 1
(7.33)

El término R(Y j / X j ) indica la probabilidad de que en el instante j , el


símbolo de salida Y j es la salida del canal si a la entrada estaba presente el
símbolo X j . Esto sucederá con una probabilidad de transición P( y j / x j ) de
que el símbolo x j se convierte en el símbolo y j .
El decodificador de este proceso tendrá que estimar la probabilidad a posteriori
de los estados y las salidas de la fuente de Markov por observación de la
secuencia Y1n ^Y1 ,Y2 ,...,Yn `. Esto significa que debe evaluar las
probabilidades:


P Si u / Y1n
P Si u ,Y1n
P(Y1n )
(7.34)


P ^Si 1 u' ,Si u` / Y1n
P Si 1 u' ,Si u ,Y1n
P(Y1n )
(7.35)

Para aclarar los términos utilizados en función de conceptos conocidos, el


estado descripto por S i define en un trelis el estado en el instante i mientras
que el valor particular que tenga ese estado se obtiene del alfabeto de estados U
del trelis, u 0,1,2,...,U  1 . En este esquema de trelis, la secuencia
Y1n ^Y1 ,Y2 ,...,Yn ` es representada por un único camino dentro del mismo.
Referido a la estructura de un trelis y asociado a cada nodo o estado del mismo
aparece la correspondiente probabilidad a posteriori:

333
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

P Si u / Y1n
(7.36)

y asociado a cada rama del trelis existe la probabilidad a posteriori:


P ^Si 1 u' ,Si u` / Y1n
(7.37)

El decodificador calculará estas probabilidades por observación de la secuencia


Y1n ^Y1 ,Y2 ,...,Yn `. El decodificador puede evaluar las probabilidades
conjuntas:

λi ( u ) P Si u ,Y((1n) )
(7.38)
y

σ i ( u' ,u )
P Si 1 u' ,Si u,Y1n
(7.39)

y dado que para una determinada secuencia Y1n ^Y1 ,Y2 ,...,Yn ` la

probabilidad P Y1n es constante se puede dividir por este valor a λi ( u ) y
σ i ( u ,u' ) para estimar las probabilidades a posteriori que interesa calcular.
Se obtiene entonces un método para evaluar las probabilidades λi ( u ) y
σ i ( u ,u' ) . Para eso se definen las funciones de probabilidad:

αi (u ) P Si u,Y1i
(7.40)

βi ( u )
P Yi n1 / Si u
(7.41)

γ i ( u' ,u ) P ^Si u,Yi ` / Si 1 u'


(7.42)
entonces:

λi ( u ) P Si u,Y1n P S i ^
u,Y1i P Yi n1 / Si u,Y1i `
(7.43)

334
Capítulo VII: Códigos turbo

donde


P Yi n1 / Si ^ u ,Y1i ` P Si u ,Yi n1 ,Y1i
P Si u ,Y1n
P Si u ,Y1i P S i u ,Y1i
(7.44)

pero como α i ( u ) P Si
u,Y1i , luego

λi ( u )
P Si
u,Y1i P Yi n1 / Si ^ u,Y1i `
α i ( u )P Yi n1 / Si u
(7.45)

La anterior simplificación se basa en una propiedad de las fuentes de Markov


que dice que si se conoce el evento caracterizado por el estado S i , entonces los
eventos posteriores a ese instante no dependen de la secuencia definida hasta
ese momento Y((1i)) .
Entonces como βi ( u )
P Yi n1 / Si u :
λi ( u )
α i ( u )P Yi n1 / Si u α i ( u )β i ( u )
(7.46)

igualmente puede desarrollarse una expresión para σ i ( u' ,u ) :

σ i ( u' , u )
P S i 1 u' , S i u ,Y1n
P / ^S u' ,S
Yi n1 i 1 i u ,Y1i 1 ,Yi ` P( S i 1 u' , S i u ,Y1i 1 ,Yi )
P Y / S u P( S
n
i 1 i i 1 u' , S i u ,Y1i 1 ,Yi )
P S u' ,Y P ^S
i 1 1
i 1
i u ,Yi ` / S i 1
u' P Yi n1 / S i u
(7.47)

P Yi n1 / Si
u P ^Yi ,Si ^
u` / Si 1 ` ^
u' ,Y1i 1 P Si 1 u' ,Y1i 1 `
P Y n
i 1 / S1 u P ^S i u ,Yi ` / Si 1
u' P Si 1 u' ,Y1i 1
entonces:

σ i ( u' , u )
P S i 1 u' ,Y1i 1 .P ^S i u ,Yi ` / S i 1
u' P Yi n1 / S i u
α i 1 ( u' )γ i ( u' , u )β i ( u )
(7.48)

335
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

7.5 Cálculo Iterativo de los coeficientes


7.5.1 Cálculo Iterativo de los coeficientes α i ( u ) y βi ( u )

Se calculan los valores de α i ( u ) , βi ( u ) en función de los valores de


γ i ( u' ,u ) de manera iterativa:

Para i 0,1,2,..., n y considerando la definición de α i 1 ( u' ) se puede describir


el término D i ( u ) como:
αi (u ) P( S i u,Y1i ) P( S i u,Y1i 1 ,Yi ))
(7.49)

¦ P Si 1
U 1
αi (u ) u' , Si u ,Y1i 1 ,Yi
u' 0

¦ P Si 1 ^ `
U 1
u' ,Y1i 1 P ^S i u ,Yi ` / S i 1 u' ,Y1i 1
u' 0
(7.50)

¦ P Si 1 u' ,Y1i 1 .P ^Si


U 1 U 1
Di (u ) u ,Yi ` / Si 1 u' ¦D i 1 ( u ).J i ( u' ,u ) .
u' 0 u' 0

(7.51)

Para i 0 se tienen las condiciones de contorno α0 ( 0 ) 1 y


α 0 ( u ) 0; u z 0 . Igualmente para i 1,2,..., n  1

¦ P ^Si 1 `
U 1 U 1
βi ( u ) u' ,Yi n1 / Si u ¦ P ^Si 1 u' ,Yi 1 ` / Si u P Yi n2 / Si 1 u'
u' 0 u' 0

U 1
Ei (u ) ¦
u' 0
E i 1 ( u' )J i 1 ( u' ,u )
(7.52)

Para i n se tienen las condiciones de contorno βn ( 0 ) 1 y


βn ( u ) 0; u z 0 . Esto es cierto si el trelis finaliza en el estado 0 . Si esto no
es cierto entonces en general βn ( u ) 1 u .
Por otra parte se calcula también el valor de γ i ( u' ,u ) :

336
Capítulo VII: Códigos turbo

γ i ( u' , u ) ¦ P Si u / S i 1 u' P , X i x / ^Si 1 u' ,Si u` P Yi / X i


AX

γ i ( u' , u ) ¦ pi ( u / u' )q i ( X / ^u' ,u`)R(Yi / Xi )


AX

(7.53)

La suma en la expresión anterior se extiende a todo el alfabeto de entrada Ax .


El procedimiento que realiza el decodificador para establecer los valores de
λi ( u ) y σ i ( u' ,u ) se basa en:

1) Establecer las condiciones iniciales α 0 ( 0 ) 1 y α 0 ( u ) 0; u z 0 , y


βn ( 0 ) 1 y βn ( u ) 0; u z 0 para u 0,1,2,...,U  1
2) Cuando se recibe Yi el decodificador calcula γ i ( u' ,u ) con la ecuación
(7.53) y α i ( u ) con la ecuación (7.51). Los valores obtenidos se almacenan
para todo i y todo u .
3) Después de recibir toda la secuencia Y1n el decodificador calcula
recursivamente los valores de βi ( u ) empleando la expresión (7.52). Una
vez conocidos los valores de βi ( u ) estos pueden ser multiplicados por
α i ( u ) y γ i ( u' ,u ) para determinar los valores de λi ( u ) y σ i ( u' ,u ) de
acuerdo a las expresiones (7.46) y (7.48).

Cualquier evento que sea función de los estados del trelis podrá ser evaluado
empleando la suma de las probabilidades λi ( u ) y cualquier evento que sea
función de las transiciones del trelis podrá ser evaluado sumando las
probabilidades σ i ( u' ,u ) .
El cálculo de los valores α i ( u ) se denomina recursión directa, mientras que el
de los valores βi ( u ) es la recursión inversa. La probabilidad de la información
de entrada se relaciona con la suma de los valores λi ( u ) , la probabilidad de la
información codificada se relaciona con la suma de los valores σ i ( u' ,u ) .

Ejemplo 7.1:

Se aplica el algoritmo BCJR para la decodificación de un código de bloques


Cb ( 5 ,3 ) de distancia mínima de Hamming d min 2 generado por la matriz:

337
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

ª1 0 1 0 0 º
G «0 1 0 1 0 »
« »
«¬0 0 1 1 1 »¼

En este código se tienen 8 palabras. Para obtener la matriz de paridad se


necesita llevar a la matriz original a la forma sistemática y para eso se realizan
conversiones sobre la matriz original que consisten básicamente en sumar las
tres filas y reemplazar la tercera de las filas por esta suma:

ª1 0 1 0 0 º
G' «0 1 0 1 0 »
« »
«¬1 1 0 0 1 »¼

de esta conversión se ve que:

ª1 0 º
P' «0 1 »
« »
«¬1 1 »¼

H' >I q /P'


T
@ ª1 0 1 0 1º
«0 1 0 1 1» H
¬ ¼

Entonces debiera verificarse que:

ª1 0º
« 1 »»
ª1 0 1 0 0 º «0 ª0 0 º
G$H T «0 1 0 1 0 » «1 0» «0 0 » 0
« »« » « »
«¬0 0 1 1 1 »¼ «0 1» «¬0 0 »¼
«¬1 1 »¼

La matriz H es la matriz de paridad del código. Se pueden obtener las 8


palabras del código si se conoce la matriz de generación G :

Palabras del código

338
Capítulo VII: Códigos turbo

0 0 0 0 0
1 1 0 0 1
0 1 0 1 0
1 0 0 1 1
1 0 1 0 0
0 1 1 0 1
1 1 1 1 0
0 0 1 1 1

Tabla 7.1. Palabras del código de bloques Cb ( 5 ,3 )

Se observa que el peso mínimo calculado sobre las palabras del código de la
tabla es pH d min 2 .
En base a la tabla del código se puede construir un trelis para un código de
bloques. Ese trelis se grafica a continuación para este código particular:

Figura 7.5. Trelis para el código de bloques Cb ( 5 ,3 )

Se supone que los bits de información de entrada al codificador son


equiprobables. Se planteara la acción de este código sobre un canal simétrico
discreto empleado en la denominada decodificación por decisión no rígida o
suave ("soft decision") que se observa en la figura 7.6, con dos entradas y
cuatro salidas, dos de ellas muy confiables, y otras dos de baja confiabilidad:

339
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Salida muy
0 confiable para 0

0 1 Salida poco
confiable para 0

Salida poco
2 confiable para 1
1

Salida muy
3 confiable para 1

Figura 7.6. Canal de transmisión empleando decisión suave

P( y / x )
x , y 0 1 2 3
0 0.5 0.3 0.15 0.05
1 0.05 0.15 0.3 0.5

Tabla 7.2: Probabilidades de transición del canal de decisión no rígida del ejemplo 7.1

Se supone en este ejemplo que la palabra transmitida es c ( 00000 ) y la


recibida es r (10200 ) . Se listan en la siguiente tabla las probabilidades de
transición que se registran para el cero y para el uno en cada símbolo recibido.

j 1 2 3 4 5
P (y j / 0), P (y j / 1) ( 0.3,0.15 ) ( 0.5 ,0.05 ) ( 0.15 ,0.3 ) ( 0.5 ,0.05 ) ( 0.5 ,0.05 )

Tabla 7.3: probabilidades de transición para la palabra recibida en el ejemplo 7.1.

Se estiman entonces los valores de γ i ( u' ,u ) y luego los de valores α i ( u ) y


βi ( u ) :

340
Capítulo VII: Códigos turbo

Los primeros valores se describen en detalle:

γ 1 ( 0 ,1 ) ¦ P( S1 1 / S0 0 ).P( X 1 x /{ S0 0 , S1 1 })P(Y1 / X 1 x)
xAx

P( S1 1 / S0 0 )P( X 1 0 /{ S0 0 , S1 1 })P(Y1 / X 1 0)
 P( S1 1 / S0 0P( X1 1 /{ S0 0 , S1 1 })P(Y1 / X 1 1) 0.5 x0 x0.3  0.5 x1x0.15
0.075

γ 2 ( 0 ,0 ) ¦ P ( S2 0 / S1 0 )P( X 2 x /{ S1 0 , S2 0 })P(Y2 / X 2 x)
xAx

P( S2 0 / S1 0 )P( X 2 0 /{ S1 0 ,S2 0 })P(Y2 / X 2 0)


 P( S2 0 / S1 0 )P( X 2 1 /{ S1 0 ,S2 0 })P(Y2 / X 2 1) 0.5 x1x0.5  0.5 x0 x0.05
0.25

γ 2 ( 0 ,1 ) P( S2 1 / S1 0 )P( X 2 0 /{ S1 0 , S2 1 })P(Y2 / X 2 0)
 P( S2 1 / S1 0 )P( X 2 1 /{ S1 0 , S2 1 })P(Y2 / X 2 1) 0 x0 x0.5  0 x0 x0.05
0

γ 2 ( 0 ,2 ) P ( S2 2 / S1 0 )P( X 2 0 /{ S1 0 , S2 2 })P(Y2 / X 2 0)
 P( S2 2 / S1 0 )P( X 2 1 /{ S1 0 , S2 2 })P(Y2 / X 2 1) 0.5 x0 x0.5  0.5 x1x0.05
0.025

γ 2 ( 0 ,3 ) P ( S2 3 / S1 0 )P( X 2 0 /{ S1 0 , S2 3 })P(Y2 / X 2 0)
 P ( S2 3 / S1 0 )P( X 2 1 /{ S1 0 , S2 3 })P(Y2 / X 2 1) 0 x0 x0.5  0 x0 x0.05
0

De la misma forma se calculan los siguientes valores:

J 2 (1,0 ) 0 x0 x0.5  0 x0 x0.05 0


J 2 (1,1 ) 0.5 x1x0.5  1x0 x0.05 0.25
J 2 (1,2 ) 0 x0 x0.5  0 x0 x0.05 0
J 2 (1,3 ) 0.5 x0 x0.5  0.5 x1x0.05 0.025

J 3 ( 0,0 ) 0.5 x1x0.15  0.5 x0 x0.3 0.075


J 3 ( 0,1 ) 0 x0 x0.15  0 x0 x0.3 0
J 3 ( 0,2 ) 0.5 x0 x0.15  0.5 x1x0.3 0.15
J 3 ( 0,3 ) 0 x0 x0.15  0 x0 x0.3 0

341
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

J 3 (1,0 ) 0.5 x0 x0.15  0.5 x1x0.3 0.15


J 3 (1,1 ) 0 x0 x0.15  0 x0 x0.3 0
J 3 (1,2 ) 0.5 x1x0.15  0.5 x0 x0.3 0.075
J 3 (1,3 ) 0 x0 x0.15  0 x0 x0.3 0

J 3 ( 2,0 ) 0 x0 x0.15  0 x0 x0.3 0


J 3 ( 2,1 ) 0.5 x1x0.15  0.5 x0 x0.3 0.075
J 3 ( 2,2 ) 0 x0 x0.15  0 x0 x0.3 0
J 3 ( 2,3 ) 0.5 x0 x0.15  0.5 x1x0.3 0.15

J 3 ( 3,0 ) 0 x0 x0.15  0 x0 x0.3 0


J 3 ( 3,1 ) 0.5 x0 x0.15  0.5 x1x0.3 0.15
J 3 ( 3,2 ) 0 x0 x0.15  0 x0 x0.3 0
J 3 ( 3,3 ) 0.5 x1x0.15  0.5 x0 x0.3 0.075

J 4 ( 0,0 ) 1x1x0.5  1x0 x0.05 0.5


J 4 ( 0,1 ) 0 x0 x0.5  0 x0 x0.05 0

J 4 (1,0 ) 1x0 x0.5  1x1x0.05 0.05


J 4 (1,1 ) 0 x0 x0.5  0 x0 x0.05 0

J 4 ( 2,0 ) 0 x0 x0.5  0 x0 x0.05 0


J 4 ( 2,1 ) 1x0 x0.5  1x1x0.05 0.05
J 4 ( 3,0 ) 0 x0 x0.5  0 x0 x0.05 0
γ 4 ( 3,1 ) 1x1x0.5  1x0 x0.05 0.5

γ 5 ( 0,0 ) 1x1x0.5  1x0 x0.05 0.5


γ 5 (1,0 ) 1x0 x0.5  1x1x0.05 0.05

La recursión que permite la evaluación de los factores D i ( u ) se inicia con la


condición α 0 ( 0 ) 1 , α 0 ( m ) 0; m z 0 :

342
Capítulo VII: Códigos turbo

U 1 1
α1 ( 0 ) ¦ α 0 ( u' )γ1 ( u' ,u ) ¦ α 0 ( u' )γ1 ( u' ,u ) α 0 ( 0 )γ 1 ( 0 ,0 )  α 0 (1 )γ 1 (1,0 )
u' 0 u' 0

1x0.5  0 x0 0.15

α1 (1 ) α 0 ( 0 )γ1 ( 0,1 )  α 0 (1 )γ1 (1,1 ) 1x0.075  0 x0 0.075

α 2 ( 0 ) α1 ( 0 )γ 2 ( 0,0 )  α1 (1 )γ 2 (1,0 ) 0.15 x0.25  0.075 x0 0.0375


D 2 (1 ) D1 ( 0 ).J 2 ( 0,1 )  D1 (1 ).J 2 (1,1 ) 0.15 x0  0.075 x0.25 0.01875
α 2 ( 2 ) α1 ( 0 )γ 2 ( 0,2 )  α1 (1 )γ 2 (1,2 ) 0.15 x0.025  0.075 x0 0.0375
α 2 ( 3 ) α1 ( 0 )γ 2 ( 0,3 )  α1 (1 )γ 2 (1,3 ) 0.15 x0  0.075 x0.025 0.001875

α3 (0 ) α 2 ( 0 )γ 3 ( 0,0 )  α 2 (1 )γ 3 (1,0 ) 0.0375 x0.075  0.01875 x0.15 0.005625


α 3 (1 ) α 2 ( 0 )γ 3 ( 0 ,1 )  α 2 (1 )γ 3 (1,1 )  α 2 ( 2 )γ 3 ( 2 ,1 )  α 2 ( 3 )γ 3 ( 3 ,1 )
0.0375 x0  0.01875 x0  0.00375 x0.075  0.001875 x0.15 0.0005625

α3 ( 2 ) α 2 ( 0 )γ 3 ( 0 ,2 )  α 2 (1 )γ 3 (1,2 )  α 2 ( 2 )γ 3 ( 2 ,2 )  α 2 ( 3 )γ 3 ( 3 ,2 )
0.0375 x0.15  0.01875 x0.075  0.00375 x0  0.001875 x0 0.00703125

α3 ( 3 ) α 2 ( 2 )γ 3 ( 2 ,3 )  α 2 ( 3 )γ 3 ( 3 ,3 ) 0.0375 x0.15  0.001875 x0.075


0.000703125

α4 (0 ) α 3 ( 0 )γ 4 ( 0 ,0 )  α 3 (1 )γ 4 (1,0 )  α 3 ( 2 )γ 4 ( 2 ,0 )  α 3 ( 3 )γ 4 ( 3 ,0 )
0.005625 x0.5  0.0005625 x0.05  0.00703125 x0  0.000703125 x0
0.002840625
α 4 (1 ) α 3 ( 0 )γ 4 ( 0 ,1 )  α 3 (1 )γ 4 (1,1 )  α 3 ( 2 )γ 4 ( 2 ,1 )  α 3 ( 3 )γ 4 ( 3 ,1 )
0.005625 x0  0.0005625 x0  0.00703125 x0.05  0.000703125 x0.5
0.000703125

α5 ( 0 ) α 4 ( 0 )γ 5 ( 0 ,0 )  α 4 (1 )γ 5 (1,0 ) 0.002840625 x0.5  0.000703125 x0.05


0.0014554687 5

Los valores de los coeficientes βi ( u ) que forman la recursión inversa, también


se obtienen en forma iterativa, y partiendo de las condiciones iniciales
β5 ( 0 ) 1 , β5 ( m ) 0; m z 0 :

343
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

β4 ( 0 ) β5 ( 0 )γ 5 ( 0,0 ) 1x0.5 0.5


β4 (1 ) β5 ( 0 )γ 5 (1,0 ) 1x0.05 0.05

β3 ( 0 ) β4 (1 )γ 4 ( 0,1 )  β4 ( 0 )γ 4 ( 0,0 ) 0.05 x0  0.5 x0.5 0.25


β3 (1 ) β4 ( 0 )γ 4 (1,0 )  β4 (1 )γ 4 (1,1 ) 0.5 x0.05  0.05 x0 0.025
β3 ( 2 ) β4 ( 0 )γ 4 ( 2,0 )  β4 (1 )γ 4 ( 2,1 ) 0.5 x0  0.05 x0.05 0.0025
β3 ( 3 ) β4 ( 0 )γ 4 ( 3,0 )  β4 (1 )γ 4 ( 3,1 ) 0.5 x0  0.05 x0.5 0.025

β2 ( 0 ) β3 ( 0 )γ 3 ( 0 ,0 )  β3 (1 )γ 3 ( 0 ,1 )  β3 ( 2 )γ 3 ( 0 ,2 )  β3 ( 3 )γ 3 ( 0 ,3 )
0.25 x0.075  0.025 x0  0.0025 x0.15  0.025 x0 0.019125
β2 (1 ) β3 ( 0 )γ 3 (1,0 )  β3 (1 )γ 3 (1,1 )  β3 ( 2 )γ 3 (1,2 )  β3 ( 3 )γ 3 (1,3 )
0.25 x0.15  0.025 x0  0.0025 x0.075  0.025 x0 0.0376875
β2 ( 2 ) β3 ( 0 )γ 3 ( 2 ,0 )  β3 ()γ 3 ( 2 ,1 )  β3 ( 2 )γ 3 ( 2 ,2 )  β3 ( 3 )γ 3 ( 2 ,3 )
0.25 x0  0.025 x0.075  0.0025 x0  0.025 x0.15 0.005625
β2 ( 3 ) β3 ( 0 )γ 3 ( 3 ,0 )  β3 (1 )γ 3 ( 3 ,1 )  β3 ( 2 )γ 3 ( 3 ,2 )  β3 ( 3 )γ 3 ( 3 ,3 )
0.25 x0  0.025 x0.15  0.0025 x0  0.025 x0.075 0.005625

β1 ( 0 ) β2 ( 0 )γ 2 ( 0 ,0 )  β2 (1 )γ 2 ( 0 ,1 )  β2 ( 2 )γ 2 ( 0 ,2 )  β2 ( 3 )γ 2 ( 0 ,3 )
0.019125 x0.25  0.0376875 x0  0.005625 x0.025  0.005625 x0
0.004921875

β1 (1 ) β2 ( 0 )γ 2 (1,0 )  β2 (1 )γ 2 (1,1 )  β2 ( 2 )γ 2 (1,2 )  β2 ( 3 )γ 2 (1,3 )


0.0019125 x0  0.0376875 x0.25  0.005625 x0  0.005625 x0.025
0.0095625

β0 ( 0 ) β1 ( 0 )γ 1 ( 0 ,0 )  β1 (1 )γ 1 ( 0 ,1 ) 0.004921875 x0.15  0.0095625 x0.075


0.0024554687 5

Conocidos los valores de γ i ( u' ,u ) , α i ( u ) y βi ( u ) se puede calcular los


valores de λi ( u ) y σ i ( u' ,u ) :

λ1 ( 0 ) α1 ( 0 )β1 ( 0 ) 0.15 x0.004921675 0.0007382812 5


λ1 (1 ) α1 (1 )β1 (1 ) 0.075 x0.0095625 0.0007171875
λ2 ( 0 ) α 2 ( 0 )β2 ( 0 ) 0.075 x0.0095625 0.0007171875
λ2 (1 ) α 2 (1 )β2 (1 ) 0.01875 x0.0376875 0.0007066406 25

344
Capítulo VII: Códigos turbo

λ2 ( 2 ) α 2 ( 2 )β2 ( 2 ) 0.00375 x0.005625 0.0000210937 5


λ2 ( 3 ) α 2 ( 3 )β2 ( 3 ) 0.001875 x0.005625 0.0000105468 75

Luego se puede estimar los valores de los nodos con el conocimiento de los
coeficientes calculados. Esto define los valores para el cero y para el uno de
cada paso i de la palabra decodificada. Cuando al nodo del trelis arriba una
transición que unívocamente define el valor se procede al cálculo con estos
coeficientes. Esto sucede en los nodos λ1 ( 0 ) , λ1 (1 ) , λ2 ( 0 ) , λ2 (1 ) , λ2 ( 2 ) y
λ2 ( 3 ) :

λ1 ( 0 )
0.5072 Estimación para el cero
λ1 ( 0 )  λ1 (1 )
posición 1
λ1 (1 )
0.4928 Estimación para el uno
λ1 ( 0 )  λ1 (1 )
posición 1

λ2 ( 0 )  λ2 (1 )
0.97826 Estimación para el cero
λ2 ( 0 )  λ2 (1 )  λ2 ( 2 )  λ2 ( 3 )
posición 2

λ2 ( 2 )  λ2 ( 3 )
0.0217 Estimación para el uno
λ2 ( 0 )  λ2 (1 )  λ2 ( 2 )  λ2 ( 3 )
posición 2

Cuando las transiciones arriban al nodo y tiene salidas diferentes asociadas, se


debe emplear para el cálculo los coeficientes σ i ( u' ,u ) que se calculan a
continuación:

σ 3 ( 0,0 ) α 2 ( 0 )γ 3 ( 0,0 )β3 ( 0 ) 0.0375 x0.075 x0.25 0.000703125


σ 3 (1,0 ) α 2 (1 )γ 3 (1,0 )β3 ( 0 ) 0.01875 x0.15 x0.25 0.000703125
σ 3 ( 0,2 ) α 2 ( 0 )γ 3 ( 0,2 )β3 ( 2 ) 0.0375 x0.15 x0.0025 0.0000140625
σ 3 (1,2 ) α 2 (1 )γ 3 (1,2 )β3 ( 2 ) 0.01875 x0.075 x0.0025 0.0000035156 25

σ 3 ( 2,1 ) α 2 ( 2 )γ 3 ( 2,1 )β3 (1 ) 0.015 x0.075 x0.00625 0.0000070312 5


σ 3 ( 3,1 ) α 2 ( 3 )γ 3 ( 3,1 )β3 (1 ) 0.001875 x0.15 x0.025 0.0000070312 5

345
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

σ 3 ( 2,3 ) α 2 ( 2 )γ 3 ( 2,3 )β3 ( 3 ) 0.00375 x0.15 x0.025 0.0000140625


σ 3 ( 3,3 ) α 2 ( 3 )γ 3 ( 3,3 )β3 ( 3 ) 0.001875 x0.075 x0.025 0.0000035156 25

σ 4 ( 0,0 ) α 3 ( 0 )γ 4 ( 0,0 )β4 ( 0 ) 0.005625 x0.5 x0.5 0.00140625


σ 4 (1,0 ) α 3 (1 )γ 4 (1,0 )β4 ( 0 ) 0.0005625 x0.05 x0.5 0.0000140625
σ 4 ( 2,1 ) α 3 ( 2 )γ 4 ( 2,1 )β4 (1 ) 0.00703125 x0.05 x0.05 0.0000175781 25

σ 4 ( 3,1 ) α 3 ( 3 )γ 4 ( 3,1 )β4 (1 ) 0.000703125 x0.5 x0.05 0.0000175781 25

σ 5 ( 0,0 ) α 4 ( 0 )γ 5 ( 0,0 )β5 ( 0 ) 0.002840625 x0.5 x1 0.0014203125


σ 5 (1,0 ) α 4 (1 )γ 5 (1,0 )β5 ( 0 ) 0.000703125 x0.05 x1 0.0000351562 5

Luego los eventos que dependen de las transiciones pueden estimarse con estos
valores calculados:

Para la posición i 3 los valores de probabilidades de transición asociados al


cero son:

σ 3 ( 0 ,0 )  σ 3 (1,2 )  σ 3 ( 2 ,1 )  σ 3 ( 3 ,3 )
σ 3 ( 0 ,0 )  σ 3 (1,0 )  σ 3 ( 0 ,2 )  σ 3 (1,2 )  σ 3 ( 2 ,1 )  σ 3 ( 3 ,1 )  σ 3 ( 2 ,3 )  σ 3 ( 3 ,3 )
0.49275

Que es la estimación para el cero de posición 3. La estimación para el uno en


posición 3 es 1  0.49275 0.5072 . Para la posición i 4 la estimación se
realiza viendo que transiciones están asociadas al elemento 0 :

σ 4 ( 0 ,0 )  σ 4 ( 3 ,1 )
0.97826
σ 4 (1,0 )  σ 4 ( 0 ,0 )  σ 4 ( 2 ,1 )  σ 4 ( 3 ,1 )

Para el elemento 1 de posición i 4:

V 4 (1,0 )  V 4 ( 2 ,1 )
0.021739
V 4 (1,0 )  V 4 ( 0 ,0 )  V 4 ( 2 ,1 )  V 4 ( 3 ,1 )

346
Capítulo VII: Códigos turbo

Para la posición i 5 la estimación se realiza viendo que transiciones están


asociadas al elemento 0 :

σ 5 ( 0 ,0 )
0.97584
σ 5 ( 0 ,0 )  σ 5 (1,0 )

Para el elemento 1 de posición i 5:

σ 5 (1,0 )
0.02415
σ 5 ( 0 ,0 )  σ 5 (1,0 )

El decodificador decidirá que la palabra decodificada es d ( 00100 ) , que no


es una palabra de código. Las palabras de código mas cercanas a esta
decodificada son c ( 00000 ) y c (10100 ) . Para analizar este problema se
calculan las distancias de las palabras de código respecto de la palabra recibida
r (10200 )

Palabras del código Pesos de las palabras

Vector recibido 1 0 2 0 0 d
0 0 0 0 0 0 0 0 0 0 3
1 0 0 1 1 3 0 0 3 3 10
0 1 0 1 0 0 3 0 3 0 9
1 1 0 0 1 3 3 0 0 3 10
0 0 1 1 1 0 0 3 3 3 8
1 0 1 0 0 3 0 3 0 0 3
0 1 1 0 1 0 3 3 0 3 8
1 1 1 1 0 3 3 3 3 0 9

Tabla 7.3. Distancias de las palabras de código a la palabra recibida medidas sobre el
canal de decisión no rígida

En la última columna se observa la distancia medida sobre el canal de decisión


no rígida y puede verse que las dos palabras de código que se asemejan a la
detectada c ( 00000 ) y c (10100 ) , tienen la misma distancia respecto del
vector recibido r (10200 ) , por lo cual se entiende la imposibilidad de
detectar correctamente este patrón recibido. Sin embargo las estimaciones de los
bits de la palabra recibida pueden ser valores empleados en forma iterativa para
realizar la decodificación si se aplican en un esquema de decodificación turbo.

347
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Ejemplo 7.2. Resuelva la decodificación del ejemplo 7.1 utilizando el algoritmo


de Máxima Similitud, basado en el algoritmo de Viterbi, asignando a las
transiciones las probabilidades del canal que se usa en este caso.

La decodificación empleando el algoritmo de Viterbi puede ser usada en el caso


del ejemplo 7.1, asignando a las transiciones del trelis las probabilidades que el
canal en este ejemplo determina, respecto de los elementos 0 y 1 . De esta
forma, el cálculo procedería según la figura 7.7, donde a la altura del instante
determinado t 3 ya pueden tomarse decisiones de descarte de una de las dos
trayectorias que llegan a cada nodo:

Figura 7.7. Algoritmo de Viterbi en el instante de tiempo t 3 , ejemplo 7.2

En el instante de tiempo t 3 y para el valor de ese estado del trelis ' 0' , se tienen
dos trayectorias que arriban al mismo con las siguientes probabilidades:
­b1 o 0.3 x0.5 x0.15 0.0225 (*)
ins tan te t , estado 0 Ÿ ®
¯b2 o 0.15 x0.5 x0.3 0.0225
3

En este instante t 3 no aparece un sobreviviente definido, así que se decide


arbitrariamente por la trayectoria superior. Esta decisión “de tiro de moneda”
influirá finalmente en la determinación que el algoritmo tome en este caso, que

348
Capítulo VII: Códigos turbo

fortuitamente adoptará la decisión correcta. La decisión tomada se indica con un


asterisco (*) .
De la misma forma se procede a definir las decisiones para el mismo estado, y
los restantes valores que puede adoptar:

­b1 o 0.3 x0.05 x0.15 0.00225 (*)


instante t 3 , estado 1 Ÿ ®
¯b2 o 0.15 x0.05 x0.3 0.00225

Una vez más en el valor del estado '1' la decisión se adopta aleatoriamente,
definiendo la trayectoria superior como la sobreviviente. Esta situación esta
poniendo en evidencia que el evento de error, como se explicó anteriormente, es
tal que la palabra recibida se encuentra equidistante a dos palabras del código.

­b1 o 0.3 x0.5 x0.3 0.045 (*)


instante t 3 , estado 2 Ÿ ®
¯b2 o 0.15 x0.5 x0.15 0.01125
­b1 o 0.3 x0.05 x0.3 0.0045 (*)
instante t 3 , estado 3 Ÿ ®
¯b2 o 0.15 x0.05 x0.15 0.001125

Como consecuencia del descarte de trayectorias realizado en el instante de


tiempo t 3 , se presenta la situación resultante en el trelis parcial de la figura 7.8:

1 0 2 0

t0 t1 t2 t3 t4
0.3 0.5 0.15 0.5
0
0.05
0.05
1 0.3
0.05
0.15
2
0.5
0.3
3

Figura 7.8. Algoritmo de Viterbi en el instante de tiempo t 4 , ejemplo 7.2

349
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

A pesar de no ser necesario recalcular los productos, se describe a cada


trayectoria que arriba a cada estado como el producto de las probabilidades de
las correspondientes transiciones para una mejor identificación de las mismas.
Así, en el instante de tiempo t 4 se adoptan las siguientes decisiones:
­b1 o 0.3 x0.5 x0.15 x0.5 0.01125 (*)
instante t 4 , estado 0 Ÿ ®
¯b2 o 0.3 x0.05 x0.15 x0.05 0.0001125
­b1 o 0.3 x0.5 x0.3 x0.05 0.00225 (*)
instante t 4 , estado 1 Ÿ ®
¯b2 o 0.3 x0.05 x0.3 x0.5 0.00225

La decisión adoptada en el instante de tiempo t 4 define las trayectorias


sobrevivientes en la decisión parcial que se ven en el trelis de la figura 7.9:

1 0 2 0 0
t0 t1 t2 t3 t4 t5
0.3 0.5 0.15 0.5 0.5
0

0.3 0.05
1
0.05

Figura 7.9. Algoritmo de Viterbi en el instante de tiempo t 5 y decisión final, ejemplo


7.2

La decisión final es adoptada en el instante de tiempo t 5 :


­b1 o 0.3 x0.5 x0.15 x0.5 x0.5 0.005625 (*)
instante t 5 , estado 0 Ÿ ®
¯b2 o 0.3 x0.5 x0.3 x0.05 x0.05 0.0001125

La trayectoria sobreviviente es aquella que aparece como la más probable, y


queda descripta en la figura 7.9 con el trazo remarcado. De esta forma el
algoritmo decide por la palabra ( 00000 ) que es la correcta. Esta decisión ha
sido resultado de definir en los nodos críticos, es decir, en aquellos donde el
cálculo de la probabilidad de la trayectoria resulta en dos valores iguales para

350
Capítulo VII: Códigos turbo

los dos caminos que arriban al mismo, que la trayectoria sobreviviente sea la
que corresponde a la rama superior. Sin embargo, si por convención se hubiera
definido en estos nodos críticos que la trayectoria decidida fuera la de la rama
inferior, la palabra que el algoritmo adoptaría como decodificada sería
(10100 ) , es decir, la palabra del código que junto con ( 00000 ) , es
equidistante respecto del vector recibido.
En la decodificación iterativa, este acierto fortuito en la decisión se pone en
evidencia luego de varias iteraciones, donde el algoritmo comienza a fluctuar
entre los dos vectores posibles, dando uno u otro como solución
alternativamente. Así, y en función de cuando se decide cortar la secuencia de
iteraciones, es que fortuitamente puede arribarse en este ejemplo y caso
particular, a la decisión acertada. La probabilidad de que esto suceda es 0.5 .
A través de este simple ejemplo se observa la diferencia de complejidad en el
cálculo entre el algoritmo BCJR y el de Viterbi. En el ejemplo 7.3 quedará sin
embargo mas claro que a pesar de esta mayor complejidad, el algoritmo BCJR
MPA utilizado en la decodificación iterativa posee una alta capacidad de
corrección de errores. En este sentido, se puede decir que la aplicación sobre los
códigos constituyentes del código turbo del algoritmo BCJR MPA, sería menos
compleja que la aplicación de algoritmo de Viterbi sobre el trelis del código
turbo completo, especialmente para grandes longitudes del permutador del
esquema.

7.6 Algoritmo MPA (BCJR) y la relación de probabilidad


logarítmica
La relación de probabilidad logarítmica también puede ser definida para
probabilidades condicionales. De hecho en los algoritmos de máxima
probabilidad a posteriori se realiza la estimación de un determinado bit basando
esa estimación en la condición de que una secuencia Y ha sido recibida. En
este sentido se estará interesado en calcular la relación de probabilidad
logarítmica L( bi / Y ) definida como [2, 5]:

§ P( bi 1 / Y ) ·
L( bi / Y ) ln¨¨ ¸
© P( bi 1 / Y ) ¸¹
(7.54)

Esta estimación esta basada en las probabilidades a posteriori del bit bi que son
las que evalúan los algoritmos de decodificación con decisión no rígida a la
entrada y salida de cada decodificador, en el esquema de decodificación turbo.

351
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Otra relación de probabilidad logarítmica condicional que será útil es la que se


basa en la probabilidad de que la salida del decodificador optimo empleado en
la recepción de la señal entrante sea y i siendo el bit transmitido x i uno que
adopte alguno de sus dos posibles valores  1 o  1 . En su forma logarítmica
esta relación se describe como:

§ P( y i / x i 1 ) ·
L( y i / x i ) ln¨¨ ¸
© P( y i / x i 1 ) ¸¹
(7.55)

En el caso del canal Gaussiano blanco aditivo y teniendo en cuenta una


transmisión en formato polar x i r1 recibido empleando el receptor óptimo,
las probabilidades condicionales descriptas en ecuación (7.55) son iguales a:

Eb
( y i 1 )2
1 2
P( y i / x i 1 ) e 2σ
2π σ
(7.56)
Eb 2
( y i 1 )
1 2
P( y i / x i 1 ) e 2σ
2π σ
(7.57)

§ Eb2 ( y i 1 )2 ·
¨ e 2σ ¸  Eb Eb Eb
L( y i / x i ) ln¨ E ¸
2
( y i  1 )2  2
( y i  1 )2 2 yi Lc y i
¨ b ( y 1 )2
¸ 2σ 2σ σ2
¨ e 2σ 2 i ¸
© ¹

(7.58)

De esta manera puede verse que la relación de probabilidad logarítmica


condicional analizada es proporcional al valor detectado por el receptor óptimo,
siendo la constante de proporción Lc 2E b / σ 2 un número que es función de
la relación señal ruido.

352
Capítulo VII: Códigos turbo

7.6.1 Algoritmo MPA (BCJR) en función de la relación de probabilidad


logarítmica. Método de cálculo

El algoritmo presentado por Bahl, Cocke, Jelinek y Raviv [4] fue implementado
para decodificar códigos de bloques y convolucionales sobre la base de su
posible construcción por trelis, y en un principio, siendo comparado con el
algoritmo de Viterbi, no ofrecía demasiadas ventajas en cuanto al
funcionamiento, siendo por otro lado más complejo que aquel. Sin embargo, su
inherente principio de operación que emplea entradas y salidas “suaves” o no
rígidas fue la clave para la implementación de la decodificación turbo. En lo que
sigue se describe el algoritmo de decodificación de máxima probabilidad a
posteriori o BCJR, en términos de la relación de probabilidad logarítmica.
Debido al efecto del logaritmo, y la determinación del valor estimado como un
cociente, varios términos constantes se eliminan y no necesitan ser calculados
en esta forma de implementar el algoritmo.
El algoritmo de decodificación de máxima probabilidad a posteriori determina
la probabilidad de que el bit transmitido haya sido un uno  1 o un cero  1 de
acuerdo a la secuencia recibida Y Y1n . Esto puede ser resumido en el cálculo
de la relación de probabilidad logarítmica L( bi / Y ) , que define ambas
situaciones con un único número:

§ P( bi 1 / Y ) ·
L( bi / Y ) ln¨¨ ¸
© P( bi 1 / Y ) ¸¹
(7.59)
Por empleo de la regla de Bayes esta expresión puede ser escrita como:

§ P( bi 1,Y ) ·
L( bi / Y ) ln¨¨ ¸
© P( bi 1,Y ) ¸¹
(7.60)

Figura 7.10. Transiciones del trelis del código de bloque Cb ( 5 ,3 )

353
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

En la figura 7.10 se observa el conjunto de transiciones del tramo central del


trelis de la figura 7.5. En el mismo se ha descripto al símbolo cero por la señal
correspondiente transmitida en el canal  1 , y al símbolo uno como la señal
transmitida correspondiente  1 . Como se dijo anteriormente utilizando la
relación de probabilidad logarítmica es mas conveniente representar la
información de fuente con las señales correspondientes  1 y  1 que se
transmiten en el canal en formato polar, dado que esos valores representan los
valores decodificados normalizados empleando el receptor optimo con ese
formato. En este esquema se puede decir que en la transición del estado S 2 al
estado S 3 la probabilidad de que por ejemplo b3 1 esta dada por la
probabilidad de que la transición del estado S 2 al estado S 3 sea una de las
cuatro posibles transiciones que en este trelis se dan cuando b3 1 . Por lo
tanto la probabilidad de que en este caso, por ejemplo, b3 1 , la define la
suma de las probabilidades de todas las transiciones asociadas al bit de
información  1 .
En términos generales se hablará de la transición entre el estado Si 1 y el
estado S i , en correspondencia con la estimación del bit bi de información,
asignado a esa transición. De esta manera la ecuación (7.60) se puede expresar
como:

¨ ^u' ,u `¦ ¨ ^u' ,u `¦
§ P( Si 1 u' ,Si u ,Y ) · § P( Si 1 u' ,Si u ,Y1n ) ·
Ÿ bi 1
¸ Ÿ bi 1
¸
L( bi / Y ) ln¨ ¸ ln¨ ¸
¨ ¦ P( Si 1 u' ,Si u ,Y ) ¸ ¨¨ ¦ P( Si 1 u' ,Si u ,Y1n ) ¸¸
© ^u' ,u `Ÿ bi 1 ¹ © ^u' ,u `Ÿ bi 1 ¹

(7.61)

donde ^u' ,u` Ÿ bi 1 es el conjunto de todos las transiciones que


corresponden al bit de mensaje bi 1 . Lo mismo sucede con
^u' ,u` Ÿ bi 1 para el bit bi 1 . Los términos
σ i ( u' ,u ) P( Si 1 u' ,Si u,Y1n ) pueden ser llevados a la forma:

σ i ( u' ,u ) P( Si 1 u' , Si u ,Y1n )



P Si 1
u' ,Y1i 1 P ^S i u ,Yi ` / S i 1
u' P Yi n1 / Si u
α i 1 ( u' )γ i ( u' ,u )β i ( u )
(7.62)

354
Capítulo VII: Códigos turbo

entonces:

¨ ^u' ,u `¦
§ P ( S i 1 u' , S i u ,Y1n ) ·
Ÿ bi 1
¸
L( bi / Y ) L( bi / Y1n ) ln¨ ¸
¨¨ ¦ P( Si 1 u' , S i u ,Y1n ) ¸¸
© ^u' ,u `Ÿ bi 1 ¹

¨ ^u' ,u `¦
§ α i -1 ( u' )γ i ( u' , u )β i ( u ) ·
Ÿ bi 1
¸
ln¨ ¸
¨ ¦ α i -1 ( u' )γ i ( u' , u )β i ( u ) ¸
© ^u' ,u `Ÿ bi 1 ¹
(7.63)

7.6.2 Cálculo de los coeficientes γ i ( u' ,u )

Dado que los coeficientes α i 1 ( u' ) y βi ( u ) se determinan en forma recursiva


en función de los coeficientes γ i ( u' ,u ) , la aplicación del algoritmo BCJR esta
basada en la determinación de estos coeficientes.
Reescribiendo la ecuación (7.42), que define estos coeficientes, y aplicando las
propiedades descriptas en ecuaciones (7.26) a (7.30):

γ i ( u´,u ) P ^Si u ,Yi ` / Si 1 u'


P(Yi / ^u' , u`).P( u / u' )
P(Yi / ^u' , u`).P( bi )
(7.64)

la probabilidad del bit de la transición i -ésima se puede evaluar usando la


expresión (7.17):

e L( bi ) / 2
P( bi ) P( bi r1 ) L( bi )
e bi L( bi ) / 2 C1 e bi L( bi ) / 2
1e
(7.65)

Por otra parte el término P Yi / ^u' ,u` equivale a calcular la probabilidad


P(Yi / X i ) , siendo X i la palabra asociada a la transición del trelis entre los
estados Si 1 u' y Si u , que en general podrá tener n bits. Si el canal no
posee memoria, entonces:

355
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

m
P(Yi / ^u' ,u`) P(Yi / X i ) – P( y ik / x ik )
k 1
(7.66)
donde y ik y x ik son los bits individuales de las palabras recibida y transmitida
respectivamente Yi y X i . Si la transmisión se realiza en formato polar sobre un
canal Gaussiano blanco y aditivo, entonces los bits transmitidos x ik adoptan en
forma normalizada los valores  1 o  1 , y [2]:

¨ ^u' ,u `¦
§ α i -1 ( u' )γ i _ extr ( u' , u )β i ( u ) ·
Ÿ bi 1
¸
Le ( b i ) ln¨ ¸
¨ ¦ α i -1 ( u' )γ i _ extr ( u' ,u )βi ( u ) ¸
© ^u' ,u `Ÿ bi 1 ¹
(7.67)

n
Eb
n
1  ¦ y ik  xik 2
P(Yi / ^ú' ,u`)
2
– e 2σ k 1

k 1 2π σ
(7.68)

¦ y ik2  xik2 σ 2b ¦ y ik xik


n n
Eb E Eb n
1 
2σ 2 2 ¦ y ik xik
e k 1
e k1 C2 e σ k 1

2π σ
n

(7.69)

Eb n
¦ y ik xik 2
donde solo el factor eσ k 1
es importante ya que los otros dos factores son
constantes.
Finalmente la expresión de los coeficientes γ i ( u' ,u ) resulta ser:

Eb n
bi L( bi ) / 2 2 ¦ y ik xik
γ i ( u' , u ) C.e eσ k 1 , C C1C2
(7.70)

De esta manera es posible aplicar el algoritmo MPA (BCJR) sobre la base de la


información que proviene del canal, Lc y ik , y la información a priori para cada
decodificador L( bi ) . Con la información del canal y la información a priori,
que en el algoritmo de decodificación turbo es la información extrínseca
proporcionada por el otro decodificador, el algoritmo determina los valores de

356
Capítulo VII: Códigos turbo

γ i ( u' ,u ) para todas las transiciones del trelis. Los valores de los coeficientes
α i 1 ( u' ) pueden ser calculados en forma recursiva conociendo los valores de
γ i ( u' ,u ) , en la medida que la información es recibida. Al finalizar la recepción
de toda la secuencia Y1n , los valores de los coeficientes βi ( u ) también pueden
ser evaluados. Con los valores de α i 1 ( u' ) , γ i ( u' ,u ) y βi ( u ) se puede
establecer el valor de la estimación L( bi / Y1n ) .
En el caso del ejemplo analizado, donde se tiene un código de bloques
Cb ( 5 ,3 ) , las transiciones están asociadas a un único bit, que esta definido en el
trelis correspondiente. En términos generales, y para el caso de los códigos
convolucionales, cada transición esta asociada a uno o mas bits de entrada, y a
uno o mas bits de salida. En los códigos usualmente utilizados en esquemas
turbo, los codificadores son convolucionales de tasa Rc 1 / 2 , con lo cual
existe un único bit de entrada que provoca la transición. En este caso en el
cálculo del coeficiente γ i ( u' ,u ) se puede discernir entre la información de
fuente y la redundancia.

Lc n Lc n

bi L( bi ) / 2
¦ y ik xik
2 k 1

bi L( bi ) / 2
Lc
y i1 xi1 2
¦ y ik xik
γ i ( u' ,u ) Ce e Ce e2 e k 2
n
Lc
Lc ¦ y ik xik
bi L( bi ) / 2 2 y i1bi 2 k 2

bi L( bi ) / 2
Lc
y i 1bi
Ce e e Ce e2 γ i _ extr ( u' ,u )
(7.71)

En esta ecuación y i1 es el bit recibido que corresponde al bit transmitido


x i1 bi , el bit de información o fuente que aparece en la palabra codificada
como primer bit, si se adopta codificación sistemática.
Teniendo esto en cuenta, y recordando que en la expresión de L( bi / Y1n ) los
términos de la sumatoria del numerador están asociados a bi 1 , mientras
que los términos de la sumatoria del denominador están asociados a bi 1 , la
expresión adopta la forma:

357
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

¨ ^u' ,u `¦
§ α i -1 ( u' )γ i ( u' , u )β i ( u ) ·
Ÿ bi 1
¸
L( bi / Y1n ) ln¨ ¸
¨ ¦ α i -1 ( u' )γ i ( u' , u )β i ( u ) ¸
© ^u' ,u `Ÿ bi 1 ¹

¨ ^u' ,u `¦
§ α i -1 ( u' )e  L( bi ) / 2 e  Lc y i1 / 2 γ _ extri ( u' , u )β i ( u ) ·
Ÿ bi 1
¸
ln¨ ¸
¨ ^u' ,u `¦ α i -1 ( u' )e L( bi ) / 2 e Lc y i1 / 2 γ i _ extr ( u' , u )β i ( u ) ¸¸
¨
© Ÿ bi 1 ¹
L( bi )  Lc y i1  Le ( bi )
(7.72)

donde:

¨ ^u' ,u `¦
§ α i -1 ( u' )γ i _ extr ( u' , u )βi ( u ) ·
Ÿ bi 1
¸
Le ( bi ) ln¨ ¸
¨ ¦ αi -1( u' )γ i _ extr ( u' , u )βi ( u ) ¸
© ^u' ,u `Ÿ bi 1 ¹
(7.73)

es la denominada estimación o relación de probabilidades logarítmica


extrínseca, la información que cada decodificador proporciona al otro respecto
al bit de información bi , conteniendo información del canal relativa a los bits
asociados a bi que es distinta para cada codificador. Esto es, el bit bi ha sido
codificado por el codificador 1 del esquema turbo con un grupo de bits
diferentes de los que fueron codificados junto a bi por el codificador 2. Por lo
tanto cada decodificador comunica al otro la relación de probabilidades
logarítmica extrínseca:

Le ( bi ) L( bi / Y1n )  L( bi )  Lc y i1
(7.74)

Que contiene información considerada a priori por el decodificador actuante, y


que proviene de una secuencia codificada que sufrió un evento de ruido
diferente al de la secuencia que el decodificador actuante emplea, obtenida del
canal.

358
Capítulo VII: Códigos turbo

7.7 Decodificación turbo


Hasta el momento se ha presentado el algoritmo MPA (BCJR) que se emplea
usualmente en la decodificación turbo. La decodificación turbo es normalmente
un proceso iterativo donde las dos partes que intervienen producen una
estimación de los bits de mensaje sobre la base de la secuencia recibida y la
información a priori, que comunican al otro decodificador, quien utiliza esta
información como a priori, para mejorar la estimación a realizar en la siguiente
instancia de la iteración. Por información a priori se entiende aquella que utiliza
el decodificador que no esta relacionada ni con la información del canal (bits
recibidos) ni con la información de las restricciones de la codificación utilizada.
El primer decodificador no posee información a priori de los bits de mensaje
para la primera iteración, que aparecen en primera instancia como
equiprobables. Por esta razón la información a priori L( bi ) para la primera
estimación del primer decodificador es usualmente igual a cero, como se ve en
figura 7.3, correspondiendo al punto para el cual
P( bi 1 ) P( bi 1 ) 0.5 .
El primer decodificador entonces considera la información a priori descripta y
la información provista por los bits recibidos del canal, que son afectados por el
factor Lc . Esta secuencia Lc Y1(1) esta constituida por los bits recibidos
correspondientes a los bits sistemáticos o de mensaje, y los bits de paridad. En
la forma de uso más típica existe un único bit sistemático y normalmente
también un único bit de paridad, si se utilizó un selector de datos a la salida del
codificador turbo. Como se verá en el ejemplo siguiente, el proceso del selector
de datos obliga a completar con ceros los valores que han sido descartados en la
selección. Con la información a priori y la información del canal, el primer
decodificador produce la primera estimación de probabilidad logarítmica
L1(1 ) ( bi / Y ) , donde el subíndice identifica al primer decodificador, mientras
que el superíndice identifica el orden de la iteración. Esta estimación como se
ha visto consiste en calcular los coeficientes γ i ( u' ,u ) , que luego permiten en
forma recursiva estimar los coeficientes α i 1 ( u' ) y βi ( u ) , con los que se da a
lugar a la relación de probabilidad logarítmica L1(1 ) ( bi / Y ) . Aquí surge como
elemento importante lo que se denomina la información extrínseca. Por
información extrínseca se entiende aquella parte de la estimación que no incluye
la información a priori utilizada para su cálculo, ni la información del canal
correspondiente al bit sistemático o de mensaje que esta siendo estimado.
Haciendo uso de la ecuación (7.74) se obtiene la información extrínseca
L(e11) ( bi ) . El segundo decodificador entonces puede ya operar sobre la base de

359
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

la información existente. Considera así la secuencia recibida Lc Y2(1) que


contiene a los bits de mensaje pero permutados, acompañados de los bits de
paridad que el segundo codificador generó con esos bits de mensaje
permutados. Si existió eliminación selectiva de salidas, entonces la secuencia se
completa con ceros donde se alojen los bits eliminados en el proceso de
selección. El segundo decodificador considera como información a priori la
información extrínseca L(e11) ( bi ) que el primer decodificador generó, para cada
bit de mensaje bi . Sin embargo y como existe un proceso de permutación de
datos (“interleaving”), la información extrínseca proporcionada por el primer
decodificador tiene que ser reordenada de la misma forma, antes de ser
considerada por el segundo decodificador. Si la operación de permutación se
denota con el operador I {.} , entonces L(21 ) ( bi ) I { L(e11) ( bi )} . Siendo entonces
L(21 ) ( bi ) la información a priori que el segundo decodificador considera en su
primera iteración, y con la información del canal LcY2(1) , el segundo
decodificador produce la estimación o relación de probabilidad logarítmica
L(21 ) ( bi / Y ) , necesaria para la obtención, por medio de la ecuación (7.74), de la
información extrínseca L(e12) ( bi ) . Como las estimaciones extrínsecas L(e12) ( bi )
correspondientes a los bits de mensaje bi se encuentran permutadas, ya que el
segundo decodificador recibió la versión permutada de los mismos, se tiene que
realizar la operación inversa de permutación, para así ordenar los bits de la
forma que el primer de codificador los considera. Denotando a la operación
inversa con el operador I 1 {.} , la información extrínseca proporcionada por el
segundo decodificador es reordenada para convertirse en la información a priori
del primer decodificador, dispuesto a realizar la segunda iteración. Así,
L1( 2 ) ( bi ) I 1 { L(e12) ( bi )} . En la segunda iteración, el primer decodificador
utiliza nuevamente la información del canal de que dispone, Lc Y1(1) , pero ahora
la información a priori no es nula, sino que se mejora con la información
extrínseca proporcionada por el segundo decodificador en su primer acción. De
esta manera surge una estimación mejorada de los bits producida por el primer
decodificador L1( 2 ) ( bi / Y ) . El gráfico de la figura 7.11 describe el proceso
iterativo de la decodificación turbo

360
Capítulo VII: Códigos turbo

Ejemplo 7.3:

Se recurre en este ejemplo a un esquema de codificación turbo donde cada


codificador convolucional de respuesta impulsiva infinita es un codificador de
forma sistemática como el que fue mostrado en el capitulo 6, cuya estructura se
observa en el diagrama en bloques de la figura 7.12.

c (1 ) x1
Modula-
dor
formato
polar
x2
m (2 )
c

Figura 7.12. Codificador convolucional de un código sistemático con respuesta


impulsiva infinita

361
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Figura 7.11. Proceso de decodificación iterativa

362
Capítulo VII: Códigos turbo

El trelis correspondiente a este codificador es el siguiente:


Si 1 Si
0/00
00

1/11 1/11

10
0/00

0/01
01

1/10
1/10
11
0/01

Figura 7.13. trelis del codificador convolucional de un código sistemático con respuesta
impulsiva infinita

Para cada codificador sistemático que será utilizado como el componente


Codificador 1 y Codificador 2 de la estructura del codificador turbo del
ejemplo, la función transferencia es:
ª 1  D  D2 º
G( D ) «1 »
¬ 1  D2 ¼

Este código convolucional sistemático tiene una distancia mínima libre igual a
d f 5 . Dado que es más conveniente para la aplicación del algoritmo emplear
los valores de las señales transmitidas y recibidas, se describe la estructura
central del trelis de la figura 7.13 en función de los valores de las señales en el
canal, x1 y x 2 , en un formato polar.

363
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Si 1 Si
-1/-1 -1
00
+1/+1 +1
+1/+1 +1

10
-1/-1 -1

-1/-1 +1

01

+1/+1 -1
+1/+1 -1
11

Figura 7.14. trelis descripto en función de las señales en el canal, formato polar

Cada codificador en el esquema de codificación turbo obedece al trelis de la


figura 7.14. En general suele describirse este tipo de códigos con una notación
corta, que en formato octal, determina cuales son las conexiones que el
codificador convolucional recursivo tiene. En este caso por ejemplo, el código
se escribe como un codificador convolucional recursivo (111,101) o bien (7,5).
Se utiliza un mecanismo de eliminación selectiva de salidas de manera que la
tasa del código turbo es Rc 1 / 2 , debido a que cada codificador es de la
forma de la figura 7.12, con tasa Rc 1 / 2 , pero el proceso de eliminación
selectiva de salidas o “puncturing” genera a la salida en forma alternativa un bit
de paridad tomado de uno u otro de los codificadores respectivamente. Los bits
de mensaje no son quitados por el proceso de selección. El esquema de
codificación turbo puede verse en la figura 7.15.

364
Capítulo VII: Códigos turbo

Figura 7.15. Codificador de un código turbo

El proceso de selección de salidas se realiza transmitiendo alternativamente una


u otra de las salidas de redundancia de los codificadores constituyentes. En este
caso, la salida sistemática c1(1 ) es siempre transmitida y acompañada
alternativamente de las salidas c1( 2 ) y c 2( 2 ) . Por lo tanto el proceso de
eliminación selectiva de salidas estaría en este caso caracterizado por una matriz
que para cada codificador constituyente, determina el modo de eliminación:

ª1 1 º
Pp1 «1 0 »
¬ ¼
ª0 0 º
Pp2 «0 1 »
¬ ¼

El permutador de datos puede ser un permutador de bloques o uno aleatorio. En


el caso del ejemplo 7.3 se utiliza un permutador de bloques de NxN 4 x4 .
Las secuencias serán entonces de 16 bits de entrada, siendo los últimos dos bits
determinados en el codificador 1 de forma que la secuencia a ser transmitida
tenga un arribo al final de la misma al estado 00. Si bien esto puede garantizarse
suceda en el codificador 1, al realizarse la operación de permutación de datos no
hay garantía de que lo mismo suceda en la secuencia codificada por el
codificador 2. El proceso de eliminación selectiva de salidas es tal que los bits
de paridad de posiciones impares del primer codificador y los bits de paridad de
posiciones pares del segundo codificador son los bits de paridad
alternativamente transmitidos. De esta manera existen 14 bits de mensaje y dos

365
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

bits adicionales utilizados para llevar a la secuencia codificada por el primer


codificador a finalizar en el estado todos ceros.

1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

Tabla 7.4. Permutador de bloques

La secuencia de salida permutada se obtiene leyendo el arreglo de la figura


columna por columna. Así la permutación que la representa en este caso sería:

§1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ·
I {.} ¨¨ ¸¸
©1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 ¹

La operación inversa consiste en el armado del arreglo de las posiciones ya


permutadas, que se leen nuevamente columna a columna:

1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16

Tabla 7.5. Permutador de bloques. Operación inversa

Verificándose que la permutación directa y la inversa obedecen a la misma


regla. Por lo tanto la inversión de la permutación se realiza simplemente
aplicando I {.} sobre la secuencia ya inicialmente permutada. Si a la secuencia
ya permutada:

1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16

se le aplica I {.} sucede que el primer elemento queda en ese lugar, el segundo
va a la posición 5, el tercero a la 9 y así sucesivamente, resultando la secuencia
original no permutada:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

366
Capítulo VII: Códigos turbo

Se analiza entonces la operación del código turbo. La tabla describe la


secuencia de entrada, las de paridad de cada codificador, la secuencia de salida,
y las secuencias consideradas por los dos decodificadores. La transmisión se
realiza sobre un canal de ruido blanco, aditivo y Gaussiano, con dispersión de
ruido σ 1.2 .

Tabla 7.6. Secuencias de entrada, salida y recibidas para el esquema de turbo


codificación del ejemplo 7.3

Una vez realizada la primera evaluación del algoritmo BCJR por parte del
decodificador 1 (Identificado como Dec1 en la tabla, en correspondencia con el
codificador 1, identificado como Cod1 en la tabla), la estimación
correspondiente a los 16 bits L1(1 ) ( bi / Y ) se presenta en la tabla 7.7.

367
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Posición L1(1 ) ( bi / Y ) Bits Bits


de bi estimados de mensaje
1 0.786280 +1 +1
2 -0.547963 -1 +1
3 0.499806 +1 -1
4 0.689170 +1 +1
5 0.641047 +1 +1
6 -0.584477 -1 -1
7 2.082215 +1 +1
8 1.987796 +1 +1
9 0.295812 +1 -1
10 2.808172 +1 +1
11 -0.050543 -1 +1
12 1.831479 +1 +1
13 -1.987958 -1 -1
14 0.165691 +1 +1
15 -2.243063 -1 -1
16 -2.247578 -1 -1

Tabla 7.7. Valores estimados por el primer decodificador, primera iteración

En esta primera evaluación hecha por el decodificador 1 se presentan cuatro


errores en la secuencia estimada respecto a la secuencia de información de
entrada al decodificador turbo sise utilizara decisión rígida, que están
remarcados en negro en la tabla 7.7.
El primer decodificador también evalúa la relación de probabilidad logarítmica
extrínseca L(e11) ( bi ) , que se tabula a continuación. Recuérdese que esta
información esta afectada por el proceso de permutación de datos, y debe
aplicarse la permutación para ingresar como información a priori al segundo
decodificador.

368
Capítulo VII: Códigos turbo

L(e11) ( bi )
0.490347
-0.032905
0.306964
-0.025372
-0.107293
0.001045
-0.046297
-0.036260
-0.152547
-0.008128
0.524750
-0.227359
0.374643
0.409279
-1.046018
-0.972807

Tabla 7.8. Valores de información extrínseca proporcionados por el primer


decodificador, primera iteración

Estos valores estimados para cada bit por parte del primer codificador son
utilizados por el segundo codificador como información a priori, y junto con la
información del canal determina el valor de la relación de probabilidad
logarítmica L(21 ) ( bi / Y ) para cada bit. La información a priori es la estimación
extrínseca proveniente del primer decodificador modificada por el proceso de
permutación correspondiente, que como se dijo, se realiza aplicando la función
de permutación directa porque el permutador es un permutador de bloques. Una
vez realizado el cálculo de la relación de probabilidad logarítmica el
decodificador 2 en su primera iteración establece los siguientes valores:

369
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Posición L(21 ) ( bi / Y ) Bits Bits


de bi estimados de mensaje
1 0.768221 +1 +1
2 0.784769 +1 +1
3 -0.207484 -1 -1
4 -1.748824 -1 +1
5 -0.186654 -1 +1
6 -0.373027 -1 -1
7 2.820018 +1 +1
8 0.309994 +1 +1
9 0.473731 +1 -1
10 2.068479 +1 +1
11 0.012778 +1 +1
12 -2.510279 -1 +1
13 1.363218 +1 -1
14 2.492216 +1 +1
15 2.181300 +1 -1
16 -2.559998 -1 -1

Tabla 7.9. Valores estimados por el segundo decodificador, primera iteración

En esta instancia el decodificador 2 estaría todavía cometiendo 6 errores en la


estimación de los bits de mensaje. Luego de realizar el cálculo de L(21 ) ( bi / Y )
puede también establecer la información extrínseca L(e12) ( bi ) , que se muestra en
la tabla 7.10.

370
Capítulo VII: Códigos turbo

L(e12) ( bi )
-0.018059
0.143722
-0.503296
0.239134
0.361309
0.211449
0.011845
0.144303
-0.026075
-0.013736
0.063321
-0.267216
0.674047
0.504420
0.349821
-0.312420

Tabla 7.10. Valores de información extrínseca proporcionados por el segundo


decodificador, primera iteración

Esta información, reordenada por el proceso de inversión de permutación,


ingresa como información a priori para que el primer decodificador efectúe la
estimación siguiente, en la iteración número 2. La tabla 7.11 muestra esta
estimación.

371
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Posición L1( 2 ) ( bi / Y ) Bits Bits


de bi estimados de mensaje
1 0.840464 +1 +1
2 -0.031009 -1 +1
3 0.044545 +1 -1
4 1.404301 +1 +1
5 0.846298 +1 +1
6 -0.406661 -1 -1
7 2.170691 +1 +1
8 2.562218 +1 +1
9 -0.343457 -1 -1
10 2.874132 +1 +1
11 0.431024 +1 +1
12 2.316240 +1 +1
13 -1.982660 -1 -1
14 0.550832 +1 +1
15 -2.811396 -1 -1
16 -2.825644 -1 -1

Tabla 7.11. Valores estimados por el primer decodificador, segunda iteración

Como puede verse la estimación mejora con respecto a la iteración número 1,


gracias a la información provista por el segundo decodificador, de manera que
se reduce el número de errores.
En un proceso repetido, el primer decodificador proporciona la información
extrínseca al segundo, que la toma como información a priori, determinando
una nueva estimación de los bits de mensaje, así como también nuevos valores
de la información extrínseca que el primer decodificador utilizará para efectuar
la estimación de la iteración número 3. La información extrínseca que evalúa el
segundo decodificador en la iteración número 2 se muestra en la tabla 7.12.

372
Capítulo VII: Códigos turbo

L(e21 ) ( bi )
0.064426
0.173966
-0.588380
0.189984
0.529265
-0.034277
0.052512
0.233310
-0.130874
0.026234
0.111812
-0.308991
0.756415
0.561614
0.380584
-0.336884

Tabla 7.12. Valores de información extrínseca proporcionados por el segundo


decodificador, segunda iteración

Con esta información reordenada para ser usada como información a priori, el
primer decodificador en la iteración 3 define las siguientes estimaciones:

373
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Posición L1( 3 ) ( bi / Y ) Bits Bits


de bi estimados de mensaje
1 0.981615 +1 +1
2 0.318157 +1 +1
3 -0.289548 -1 -1
4 1.543603 +1 +1
5 0.982070 +1 +1
6 -0.716361 -1 -1
7 2.273836 +1 +1
8 2.660691 +1 +1
9 -0.554936 -1 -1
10 2.969750 +1 +1
11 0.662567 +1 +1
12 2.407738 +1 +1
13 -2.161687 -1 -1
14 0.773773 +1 +1
15 -2.923458 -1 -1
16 -2.934754 -1 -1

Tabla 7.13. Valores estimados por el primer decodificador, tercera iteración

De esta manera en la iteración número 3 el primer decodificador consigue


decodificar con éxito la secuencia de entrada. Esta tendencia se mantiene en las
siguientes iteraciones. Lo que normalmente sucede es que el valor en módulo de
la estimación aumenta considerablemente, provocando en algunos casos
problemas numéricos de cálculo. Esta es la razón por la cual surgieron versiones
logarítmicas del algoritmo que reducen estos efectos.

7.7.1 Condiciones iniciales de los factores α i 1 ( u' ) y βi ( u )

Como se indico en la sección 7.5.1 los coeficientes D i 1 ( u' ) y E i ( u ) se


obtienen de forma iterativa, con lo que es necesario determinar los valores que
adoptan en la inicialización para así poder evaluar el conjunto completo de sus
valores. Cuando el trelis es llevado a finalizar su trayectoria en el mismo estado
en que comenzó, generalmente el estado todos ceros, se conoce que la
trayectoria del trelis finaliza precisamente en ese estado, de manera que se
pueden descartar todas las trayectorias que arriban a cualquier estado distinto de
cero haciendo α 0 ( 0 ) 1 y α 0 ( u ) 0; u z 0 . Para i n se tienen las
condiciones de contorno βn ( 0 ) 1 y βn ( u ) 0; u z 0 . Esto es cierto si el

374
Capítulo VII: Códigos turbo

trelis finaliza en el estado 0 . Si esto no es cierto entonces en general


βn ( u ) 1 u , dado que esto iguala las probabilidades de finalizar la
trayectoria en cualquier estado. Si bien en general la transmisión se organiza de
forma que el trelis sea terminado, es decir, finalice su trayectoria en el mismo
estado en que comenzó, esto es solo posible en general para el codificador 1, ya
que debido al proceso de permutación de datos, la entrada al codificador 2 no
necesariamente esta armada de manera que el trelis finalice en el mismo estado
que el inicial. Esto sucede típicamente en el codificador 2. El decodificador 2
entonces ha de evaluar los coeficientes βn ( u ) con la condición
βn ( u ) 1 u .

7.8 Opciones para la construcción de códigos turbo


7.8.1 Permutación de datos

La permutación de datos es un procedimiento muy usado en sistemas de


comunicaciones y de almacenamiento de datos. Un permutador de datos toma
una secuencia de los mismos y los presenta en un orden temporal diferente. La
función básica del permutador es aleatorizar la secuencia de datos, y cuando se
emplea como herramienta para combatir el ruido de datos en ráfaga, el efecto
del permutador es el de transformar la estadística del error de datos seriados en
errores distribuidos con mayor aleatoriedad [3, 7]. La situación del error en
ráfaga es clásica en ciertos canales, como el inalámbrico, y también se da como
consecuencia de la operación de códigos concatenados, donde el primer
decodificador puede producir errores en secuencia si no opera correctamente.
Los permutadores se clasifican en permutadores en bloque y convolucionales.
En el permutador en bloques los datos se imprimen sobre las filas de una matriz,
que luego es leída columna a columna.
El permutador pseudo aleatorio es una variante del de bloques donde los datos
son impresos en un determinado orden en un registro y luego leídos en forma
pseudo aleatoria.

7.8.2 Permutador de bloques

El permutador de bloques más común es aquel que configura los datos dentro de
una matriz que es llenada fila por fila, y que es luego leída columna por
columna. Se debe esperar al llenado de la matriz para luego proceder a su
lectura. El sistema construye una matriz M I xNI . La operación puede también

375
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

realizarse por llenado en forma de columna a columna, y por lectura fila por
fila. Como un ejemplo véase el permutador de bloques que se utilizó en el
ejemplo 7.3, dentro del sistema de codificación turbo presentado en ese caso.
Luego de la aplicación de estas permutaciones, los eventos de error en ráfaga de
longitud menor que M I quedarán aislados entre si por al menos N I símbolos
[3]. Si en la secuencia del ejemplo se produce una ráfaga de 3 errores
1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 , los mismos
queda distanciados por 4 elementos.

1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

La secuencia invertida de permutación es en este caso igual a


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 , donde
puede verse que los símbolos con error se encuentran separados por NI 4
símbolos.
En general y en una aplicación en sistemas de corrección de errores el
permutador es elegido de manera que el número de filas supere la longitud de
ráfaga de ruido esperada. En general el otro parámetro de la matriz, que es el
número de columnas depende del esquema de codificación utilizado, siendo
recomendado que supere la longitud de palabra en códigos de bloques por
ejemplo. De esta manera una ráfaga de longitud N I generará un solo error por
palabra de código. Para códigos con capacidad de corregir t errores por
palabra, N I puede elegirse de forma que supere el valor de la ráfaga de ruido
dividida por t .

7.8.3 Permutadores convolucionales

El permutador convolucional realiza el proceso de permutación con un conjunto


de N registros ordenados de forma multiplexada de manera que en cada uno de
ellos se almacenan L símbolos mas que en el registro precedente. El registro de
orden cero no tiene retardo y se lo transmite directamente. Existe un
conmutador que recorre los registros, de manera que mientras un nuevo símbolo
se ingresa al registro se egresa un símbolo anterior que existía en ese registro
[7]. El esquema del permutador convolucional se ve en la figura 7.16:

376
Capítulo VII: Códigos turbo

( N  1 )L

L 
Canal
2L
2L

( N  1 )L

Figura 7.16. Permutador convolucional

Otro nombre común para el permutador convolucional es el de permutador


multiplexado.

en general puede decirse que un permutador tiene una descripción genérica dada
por la expresión de la permutación descripta sobre un conjunto de N números
enteros ΖN ^0,1,..., N  1`:

§ 0 1  N 1 ·
¨¨ ¸
©π { 0 } π { 1 } π { N  1 } ¸¹
(7.75)

Para que la permutación describa a un permutador se debe cumplir que la


operación sobre el conjunto ^π { 0 },π { 1 },...,π { N  1 }` :

^π { 0 },π {1 },...,π { N  1 }` módulo N


sea el conjunto de números enteros ΖN ^0,1,..., N  1`.
7.8.4 Permutadores aleatorios

Los permutadores aleatorios se basan en la permutación originada por la


secuencia descripta por un generador aleatorio. El generador aleatorio forma un
vector de ruido de longitud M i xNi en el cual se imprime el orden de la

377
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

secuencia a permutar. Este vector de ruido aleatorio puede ser construido por un
generador pseudo-aleatorio.
El requerimiento de memoria por bloque es M i xNi pero por la naturaleza
misma de la operación se necesitan dos de estos bloques (mientras una es
llenado el otro es vaciado), con lo cual se precisa entonces memoria de tamaño
2MI xNI símbolos.
Con relación a su uso en el esquema de un código turbo, el permutador juega un
rol esencial en el funcionamiento del mismo. En términos generales, la tasa de
error se reduce considerablemente si la longitud o tamaño del permutador
aumenta. En general pueden utilizarse tanto los permutadores de bloques
tradicionales, como los permutadores aleatorios. Puede verificarse que los
permutadores de bloques tradicionales otorgan un mejor funcionamiento al
código turbo que los de naturaleza aleatoria [2], si el tamaño o largo del
permutador M I xNI es mediano o pequeño. Esto puede verse en la figura 7.17.
Lo inverso sucede cuando el tamaño de permutador es grande. Este problema se
relaciona con el terreno de aplicación de los códigos turbo, ya que si bien un
incremento en el tamaño del permutador permite al código turbo bajar
significativamente la tasa de error, hasta convertirlo en una de las mas eficaces
técnicas de control de errores conocidas, por otra parte dicho efecto es
perjudicial en términos de la operación del sistema, ya que introduce un retardo,
muchas veces inaceptable para la aplicación particular. Por lo tanto el estudio de
códigos turbo con permutadores de pequeño y mediano tamaño es importante en
función de estas aplicaciones, entre las cuales se encuentra la transmisión de
señal de voz por ejemplo, que sufre del problema del retardo. También se
verifica en [2] que los permutadores de bloques funcionan mejor si son de
forma cuadrada, y de dimensión impar (es decir siendo de la forma M I xNI , es
conveniente que MI NI , y que ambos sean un numero impar).

378
Capítulo VII: Códigos turbo

0
1
0

-
1 1
0

-
1 2
0

P -
b 1 3
0

-
1 4
0

-
1 5
0

-
1 6
0 0 0. 1 1. 2 2. 3
5 5
Eb/No 5
[dB]

Perm. Bl. 13x13 y 4476 bloques transmitidos

Perm. Al. 13x13=169 y 4476 bloques transmitidos

Perm. Bl. 31x31 y 787 bloques transmitidos

Perm. Al. 31x31=961 y 787 bloques transmitidos

Perm. Bl. 81x81 y 115 bloques transmitidos

Perm. Al. 81x81=6561 y 115 bloques transmitidos

Perm. Bl. 123x123 y 50 bloques transmitidos

Perm. Al. 123x123=15129 y 50 bloques transmitidos

Figura 7.17 Tasa de error en función del tamaño y tipo de permutador

379
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

7.8.5 Permutadores lineales

Otro tipo de permutador utilizado en códigos turbo es el permutador lineal. Una


característica interesante de este tipo de permutador es que puede ser generado a
través de una ley matemática, lo cual evita el hecho de tener que guardar en
memoria la estructura del mismo, como sucede en el caso de los permutadotes
aleatorios.
En general los códigos turbo poseen una buena tasa de error en la región
denominada de catarata, pero están caracterizados también, como se verá, por el
hecho de poseer en esa curva de tasa de error, una región denominada de piso,
esencialmente dependiente del hecho de que en general, los códigos turbo
poseen una distancia mínima relativamente baja. La región denominada de piso,
depende precisamente de las características de distancia del código turbo [2]. En
general también puede afirmarse que el permutador ejerce una importante
influencia en la distancia mínima del código turbo.
Una solución a este problema es provista por medio de los denominados
Códigos Turbo Múltiples. Estos códigos son una variación de la estructura
clásica del código turbo, donde en general se tiene solo un permutador, y dos
codificadores constituyentes. En un código turbo múltiple existen J MTC ! 2
códigos convolucionales constituyentes y J MTC  1 permutadores.
El permutador lineal de longitud LI puede interpretarse como una ley de
asignación de la forma:

§ 0 1  LI  1 ·
¨¨ ¸
©π { 0 } π { 1 } π { LI  1 } ¸¹
(7.76)

donde

π( i ) ipMTC  sMTC mod LI


(7.77)

en esta expresión pMTC , 0 d pMTC d LI  1 , es un parámetro denominado


coeficiente angular, y s MTC , 0 d sMTC d LI  1 es un coeficiente denominado
desplazamiento inicial. También se cumple que el mayor común divisor entre
pMTC y LI es mcd( pMTC , LI ) 1 . Esta definición es extraída de [10], donde se
realiza un análisis del efecto de los permutadores lineales en las propiedades de
distancia mínima de códigos turbo múltiples. En general se observa que
mientras la distancia mínima de un código turbo se demuestra que crece

380
Capítulo VII: Códigos turbo

logaritmicamente con el tamaño del permutador en la configuración clásica de


dos códigos constituyentes y un único permutador, este crecimiento es mayor en
general y del orden de T ( JMTC 2 ) / JMTC para el caso de códigos turbo múltiples.
Los permutadotes lineales se presentan como una alternativa de simple
construcción que ofrecen al código turbo propiedades de distancias similares y
hasta mejores que las obtenidas por el uso de otros permutadotes, tales como los
permutadotes DRP ( Dithered Relative Prime) [11] o los permutadores S [12].

7.8.6 Métodos de concatenado de códigos

El concatenado de códigos [8] consigue construir un sistema de codificación de


alta eficiencia componiendo el efecto de dos o más códigos de mediana
complejidad que actúan de manera conjunta. Al concatenar dos o más
componentes en el sistema se logra que el conjunto tenga la misma eficiencia y
menor complejidad que un código único de similares características. Al
constituir al sistema con dos o más códigos el decodificador realiza su
operación aprovechando la estructura compuesta del mismo, de manera que la
complejidad de su operación se reduce porque se descompone en dos o más
decodificadores que comparten la información de decodificación.
Existen básicamente dos formas de concatenado, la forma mas tradicional, en
serie, y la recientemente aparecida, en paralelo. Ambas formas de concatenado
permiten la decodificación iterativa. La concatenación paralelo se introduce
juntamente con la presentación de los así llamados códigos turbo.

7.8.6.1 Códigos Concatenados en Serie

El concepto de codificación concatenada serie fue introducida por David


Forney, Jr [8]. En el esquema concatenado serie un bloque de datos de k
elementos se codifica primeramente por medio de un código C1 ( n1 , k )
llamado el código externo, que genera una palabra de n1 elementos que son
luego codificados por un segundo código C 2 ( n2 , n1 ) llamado código interno.
El esquema de concatenado serie de dos códigos es mostrado en la figura 7.18.
El decodificador opera en dos etapas, realizando primero la decodificación
sobre el código C 2 y luego sobre el código C1 . La complejidad de la operación
de decodificación en dos etapas es mucho menor que la que se tendría si se
operara con un código único de la misma eficiencia.
Un ejemplo típico de concatenado serie que utiliza un permutador o
entrelazador convolucional es el implementado en el esquema de codificación
del compact disk (CD), visto en el capitulo 5.

381
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

k n1 n2
Codif. C1 Codif. C 2
( n1 , k ) ( n2 , n1 )

Canal

k n1 n2
Decodif. C1 Decodif. C 2
( n1 , k ) ( n2 , n1 )

Figura 7.18. Códigos concatenados en serie

7.8.6.2 Códigos concatenados en paralelo

La concatenación paralela de códigos fue introducida por Berrou, Glavieux y


Thitimajshima [1], en su trabajo introductorio a los llamados códigos turbo.
Este concepto es junto con la decodificación iterativa, un concepto crucial para
la construcción de códigos turbo. Una estructura simple de un código
concatenado en paralelo se muestra en la figura 7.19, donde se tiene un esquema
de tasa Rc 1 / 3 .
m m

MSEF del
Codif. C1
c (1)
c (m,c (1) , c (2) )
Permutador
de datos

MSEF del
Codif. C 2

c (2)
Figura 7.19 Códigos concatenados en paralelo

382
Capítulo VII: Códigos turbo

Un bloque de bits de mensaje m es ingresado a la Máquina Secuencial de


Estados Finitos (MSEF) que forma parte de uno de los codificadores
componentes C1 del código turbo generando una secuencia de salida c1 . Por
otro lado la misma secuencia es primero permutada y luego ingresa a la MSEF
que forma parte del otro codificador componente C 2 generando una secuencia
de salida c 2 . Las salidas de cada codificador son multiplexadas con la entrada
para dar forma a la secuencia de salida c . El esquema de un código
concatenado en paralelo es observado en la figura 7.19. De esta forma la
estructura tiene una tasa Rc 1 / 3 . La tasa del código puede ser modificada
aplicando selección de salida, como se describió en secciones anteriores de este
capítulo. En general ambas estructuras son útiles en la construcción de códigos
turbo, y en el caso particular del concatenado paralelo, se presenta la ventaja de
un mejor funcionamiento si se utilizan mas de dos códigos componentes.

Ejemplo 7.4: Determine la curva de tasa de error en función de la relación


E b / N0 para un código turbo de tasa Rc 1 / 2 que se construye usando los
codificadores convolucionales constituyentes de tasa ½ (5, 7), en una
configuración de concatenado paralelo como la descripta en la figura 7.20,
empleando el mismo mecanismo de eliminación selectiva de salidas del ejemplo
7.3, esto es transmitiendo siempre el bit sistemático o de información
acompañado en forma alternante por las salidas c1( 2 ) y c 2( 2 ) , que utiliza un
permutador aleatorio de tamaño T NxN 100 x100 10000 .

Figura 7.20 Codificador turbo con permutador de bloques o aleatorio de tamaño NxN

383
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

0
10

-1
10

-2
10

-3
10
Pb

-4
10

-5
10

-6
10
0 0.5 1 1.5 2 2.5 3
Eb/No [dB]

Figura 7.21 Respuesta de la tasa de error (BER) para un código turbo. Codificadores
convolucionales recursivos (5,7), código turbo de tasa Rc 1 / 2 con eliminación
selectiva de salidas, y permutador aleatorio de tamaño T NxN 10000 , 8
iteraciones en la decodificación con un decodificador LOG MPA (BCJR)

La simulación presentada en la figura 7.21 se realizó con la transmisión de 400


bloques de 10000 bits de información cada uno. En esta curva comienza a
notarse que existen tres regiones de diferente comportamiento [13]. Una zona
inicial donde la relación E b / N0 es muy baja, y el código solo produce una
pérdida de energía por bit que le da una respuesta peor que si no se utilizara
codificación para el control de errores. Luego se observa la región denominada
de “catarata”, donde la turbo decodificación tiene su más impresionante efecto,
y luego la región denominada de piso, donde hay un alto valor de E b / N0 , que
en general presenta unos pocos errores.

7.8.7 Respuesta de tasa de error para códigos turbo en función del tipo y
tamaño de permutador utilizado

Un código turbo de estructura típica se diseña utilizando una configuración de


concatenado paralelo, empleando dos códigos convolucionales constituyentes
cuyas salidas son convenientemente afectadas por un proceso de selección de

384
Capítulo VII: Códigos turbo

salida para controlar la tasa del código. El esquema utilizado es el que se


describe en la figura 7.20. Este esquema emplea el codificador convolucional
recursivo (5,7) como código constituyente, adoptando el esquema de
eliminación selectiva de salidas que se utilizó en el ejemplo 7.3. El
decodificador es un decodificador LOG MPA (BCJR) que realiza 8 iteraciones.
El permutador es el parámetro de la simulación en cuanto a su tipo y tamaño.
Las simulaciones realizadas involucran la transmisión de un numero de bloques
que dependiendo del tamaño del permutador utilizado, resulta en una
transmisión total de alrededor de 1.5 Mbits de información en cada caso. Los
resultados se muestran en la figura 7.17.

7.9 Algoritmos de decodificación para códigos turbo


El algoritmo presentado en este capítulo, que ha sido denominado algoritmo
BCJR MPA, o bien, en forma más resumida algoritmo MPA, resulta ser el
optimo para la decodificación de códigos turbo. Sin embargo, su complejidad es
bastante alta, y por otra parte y por involucrar sumas y productos que requieren
ser memorizados, resulta también que se generan problemas de sobre dimensión
y sub dimensión numérica, lo que en Inglés se conoce como “overflow” y
“underflow” respectivamente, que ocasionan problemas adicionales en la
implementación real de la decodificación turbo [2, 9]. Por esta razón es que ha
surgido la versión logarítmica del mismo algoritmo, que reduce los productos a
sumas, y resuelve el logaritmo de una suma haciendo uso de la expresión:

ln( e A  e B ) max( A, B )  ln(1  e |AB| ) max( A, B )  fc(| A  B |)


(7.78)

donde fc (| A  B |) es un factor de corrección que puede ser tanto tabulado,


como calculado exactamente, según se cuente o no con el conocimiento de A y
B.
Implementado en versión logarítmica, los problemas de sobre y sub dimensión
numérica se reducen fuertemente. En esta versión el algoritmo se denomina Log
MPA. El término de corrección se implementa en la práctica por medio de una
tabla. Cuando es omitido su cálculo, se realiza la determinación del valor
buscado usando la función de maximización, dando lugar entonces al algoritmo
Max Log MPA. Con análisis detallado se demuestra en [2] que el algoritmo
Max Log MPA, junto con el algoritmo denominado SOVA (Soft Output Viterbi
Algorithm) son los de menor complejidad, pero con degradación del
funcionamiento respecto al algoritmo Log MPA o el MPA, que ofrecen un
funcionamiento óptimo. De esta manera y como es habitual, la complejidad de

385
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

la decodificación se pone en relación inversa con el funcionamiento en términos


de la tasa de error. Esta degradación ronda los 0.6dB y se verifica entre el
mejor decodificador, que utiliza el algoritmo MPA, y el de funcionamiento mas
degradado, que es el del decodificador que utiliza el algoritmo SOVA.

7.10 Curvas de transferencia de Información Extrínseca


Un herramienta de análisis introducida por Stephan ten Brink [13, 14]
especialmente orientada a los decodificadores iterativos, es la llamada Curva de
Transferencia de Información Extrínseca (CTIE), en Inglés, Extrinsic
Information Transfer Chart (EXIT Chart). Esta herramienta de análisis permite
observar el proceso iterativo en decodificadores que emplean información no
rígida de entrada y de salida. El proceso de intercambio de esta información se
presenta en un gráfico de transferencias de información mutua entre la
información a priori que utilizan tales decodificadores, y la información
extrínseca que los mismos producen luego de la decodificación.
La técnica aparece como derivada de otra anterior, conocida como evolución de
la densidad, en Inglés “density evolution” [28], pero resulta mas grafica y fácil
de interpretar que ésta [13]-[20].
El análisis de la transferencia de información observa el proceso de
transferencia entre la información que se denomina a priori, representada en el
caso del algoritmo LOG MPA (BCJR) como el descripto en la sección 7.6, por
la información denominada L( bi ) , que actúa como información de entrada al
algoritmo logarítmico de decodificación, y la información extrínseca producida
por el decodificador, que para este caso fue descripta como Le ( bi ) . Tanto la
información a priori como la información extrínseca son analizadas usando
como variable de medición la información mutua existente entre estas
cantidades y la información de los bits sistemáticos o de fuente. Estas variables
están relacionadas por la ecuación (7.74). Siguiendo una notación similar a la
introducida por S. Brink [13, 14] esta ecuación se escribiría como:

Le ( bi ) L( bi / Y1n )  L( bi )  Lc y i1 E i1 Di1  Ai1  Yi1


(7.79)

En esta notación la letra A identifica la información a priori, la letra E


identifica la información extrínseca, y la letra Y la información del canal. En
general, la información es de tipo logarítmico, es decir, las cantidades
anteriormente descriptas son relaciones de probabilidad logarítmicas como las
expresadas por la ecuación (7.59). En forma vectorial, el vector E se usará para

386
Capítulo VII: Códigos turbo

definir el conjunto de valores E i , y de la misma forma se denotará a las otras


variables.

7.10.1 Introducción a las curvas de transferencia de información extrínseca

En la tasa de error (BER) de un esquema de codificación con decodificación


iterativa, usualmente descripta como la probabilidad binaria de error Pbe en
función de la relación E b / N0 , se pueden distinguir tres regiones:
x Una región es la de muy bajo valor de E b / N0 , donde la reducción de
los errores por el proceso iterativo es no significativa, y el sistema
codificado posee peor tasa de error que si no se usara codificación,
x una región intermedia de relativo bajo a medio valor de E b / N0 , donde
la decodificación iterativa produce una significativa reducción de los
errores que aumenta, aunque no linealmente, con el número de las
iteraciones, región que suele denominarse de “catarata”,
x y una región de piso, donde el valor de E b / N0 es medianamente alto,
y donde los errores se reducen con pocas iteraciones.

El proceso de decodificación iterativa en la región de “catarata” puede


analizarse por empleo de la CTIE. Estas curvas se basan en la transferencia de
información extrínseca entre los decodificadores de un decodificador LOG
MPA para códigos de naturaleza iterativa. La transferencia mide la información
mutua que existe entre la información a priori y la información de mensaje, y
entre la información extrínseca y la información de mensaje.
El análisis de CTIE permite entre otras cosas definir el número de iteraciones
que podrían ser consideradas suficientes en la decodificación de un código
turbo, por ejemplo, teniendo en cuenta que si bien los errores disminuyen a
medida que se efectúan mas iteraciones en el decodificador correspondiente,
esta reducción de errores no es lineal, sino que disminuye progresivamente con
el incremento en número de tales iteraciones.

7.10.2 Generación de la CTIE

Para considerar la construcción de la CTIE, se tomará en cuenta un código turbo


con concatenado paralelo, decodificado usando el algoritmo LOG MPA BCJR,
tal como el presentado en el ejemplo 7.4, donde los codificadores
convolucionales constituyentes son del tipo recursivo (5,7), el mezclador de
datos es aleatorio, y de tamaño NxN 10000 , se utiliza la eliminación

387
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

selectiva de salidas, de forma de diseñar el código para que tenga tasa


Rc 1 / 2 , y el primer codificador sea terminado en el estado todos ceros, tal
como lo hecho en el ejemplo 7.3.
La figura 7.22 muestra el esquema de operación de iteraciones en una iteración
intermedia, para un código turbo como el descripto anteriormente.

A1 E2 D2
Permutador
Inverso

Primer decodificador Segundo


LOG MPA (Algoritmo decodificador LOG
BCJR) MPA (Algoritmo
BCJR)

E1 A2

D1 Permutador

Y1 Y2
Permutador

paridad del Información paridad del


codificador 1 codificador 2

Figura 7.22 Informaciones extrínseca, a priori y del canal en un decodificador LOG


MPA (BCJR)

388
Capítulo VII: Códigos turbo

El proceso de decodificación se inicia normalmente en el primer decodificador


que tomando la información transmitida sistemáticamente y los bits de paridad
originados por el primer codificador, produce un vector de valores conteniendo
la estimación no rígida de cada bit de información, D1 , un vector de
componentes Di L( bi / Y1 ) . A partir de este valor obtenido, el primer
decodificador genera la información extrínseca que pasa al segundo
decodificador, para el cual esa información se convierte en la información a
priori de la iteración luego de realizar el correspondiente proceso de
permutación. Esta información extrínseca de los bits de información conforma
un vector E1 D1  A1  Y1 de manera que
Ei1 Le1 ( bi ) L1 ( bi / Y1 )  L1 ( bi )  Lc y i1 Di1  Ai1  Yi1 , tal como se
describe en la figura 7.11.
El segundo decodificador utiliza la información sistemática enviada, afectada
por el proceso de permutación, y la información de paridad originada por el
segundo codificador, como su información de canal Y2 para que juntamente
con la información a priori A2 recibida desde el primer decodificador, se
pueda generar el vector de información extrínseca E 2 D2  A2  Y2 , cuyas
componentes son de la forma
Ei 2 Le2 ( bi ) L2 ( bi / Y2 )  L2 ( bi )  Lc y i 2 Di 2  Ai 2  Yi 2 tal como se
describe en la figura 7.11. Esta información extrínseca se convierte en la
información a priori A1 de la siguiente iteración, para el primer decodificador.
Las curvas de transferencia de información extrínseca analizan la información
mutua entre la información a priori y los bits de información, y entre la
información extrínseca y los bits de información.
Para un canal de ruido blanco aditivo y Gaussiano, la relación entre la señal
recibida y la señal transmitida, interpretadas ambas como variables aleatorias,
esta dada por:

Y X n

o bien,

y xn
(7.80)

donde X denota a la variable aleatoria que simboliza a los bits de información


x que pueden adoptar dos posibles valores x 1 o x 1 , Y denota a la
variable aleatoria resultante del muestreo de la señal recibida, y n describe a la
variable aleatoria del ruido.

389
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

La función densidad de probabilidad que caracteriza a este canal es de la forma


de la distribución normal, y fueron expresadas en las ecuaciones (7.56) y (7.57).
La ecuación (7.58) determina como es obtenido el valor logarítmico de
probabilidad para la variable en cuestión [14].

Eb 2
L( y / x ) 2 2
y y
σ σ2
(7.81)
dado que la energía promedio por bit es en el caso de usar un alfabeto
normalizado igual a E b 1 . Esta expresión da lugar al cálculo de la variable
aleatoria Y , que representa los valores logarítmicos de probabilidad asociados
a las observaciones del canal y que se pueden representar de la forma:

2 2
Y y ( x  n)
σ2 σ2
(7.82)

que se rescribe como:

2
Y y μY x  nY
σ2
(7.83)

siendo

μY 2 / σ2
(7.84)

y nY es una variable aleatoria de valor medio cero y dispersión:

σY2 4 / σ2
(7.85)

El valor medio y la dispersión están relacionados como:

μY σY2 / 2
(7.86)

390
Capítulo VII: Códigos turbo

Esta relación será útil en el cálculo de las CTIE. La operación que efectúa el
segundo decodificador es esencialmente la misma que la del primero. Sin
embargo, hay una diferencia entre ambos, y es que los códigos constituyentes
correspondientes son levemente distintos, ya que para el primer decodificador el
código es terminado, mientras que esto no necesariamente es cierto para el
segundo. Si la longitud de la secuencia utilizada en el análisis es lo
suficientemente larga, entonces el efecto del código terminado es despreciable,
y ambos decodificadores serían prácticamente iguales, con lo cual es suficiente
realizar el análisis de CTIE sobre alguno de los dos decodificadores, por
ejemplo sobre el primer decodificador.

7.10.3 Características de transferencia de los decodificadores constituyentes

Las CTIE se establecen observando la conducta de uno de los decodificadores


de los códigos que constituyen el código turbo. Dado que el planteo matemático
del decodificador LOG MPA BCJR es de complejidad elevada, el análisis se
basa en observaciones obtenidas por simulación sobre los parámetros de interés.
Así entonces, es posible afirmar que los valores de estimación a priori A son
independientes y descorrelacionados de las observaciones del canal Y . Por otra
parte, la función densidad de probabilidad de las estimaciones extrínsecas E es
de tipo Gaussiano. Estas estimaciones se constituyen en valores de estimación a
priori A para la próxima iteración.
En la siguientes figuras se presentan histogramas desnormalizados (que en el
caso de un alfabeto continuo pasan a ser una función densidad de probabilidad)
para la distribución de los valores de la estimación extrínseca obtenidas por
simulación para el decodificador LOG MPA BCJR de un código turbo como el
del ejemplo 7.4, que utiliza un permutador aleatorio de tamaño NxN 10000 ,
con 8 iteraciones en la decodificación. En la figura 7.23 puede observarse el
histograma desnormalizado para las estimaciones cuando la entrada es ‘0’, que
es proporcional a la función que será denominada pE ( ξ / x 1 ) , y en la
figura 7.24 puede observarse el histograma desnormalizado para las
estimaciones cuando la entrada es ‘1’, que es proporcional a la función que será
denominada pE ( ξ / x 1 ) . Las figuras muestran estos histogramas para
distintos valores de la relación Eb / N0 0.5 ,1.0,1.5 y 2.0 dB .

391
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

2500

Eb / N0 0.5 dB

2000

1500
E b / N0 1dB

E b / N0 1.5 dB
1000
E b / N0 2dB

500

0
80 90 100 110 120 130 140

Figura 7.23 Histograma desnormalizado para la estimación extrínseca correspondientes


a entradas ‘0’ de un código turbo en función de la relación E b / N0

392
Capítulo VII: Códigos turbo

3000

2500
E b / N0 0.5 dB

2000

1500 E b / N0 1dB

E b / N0 1.5 dB
1000

500 E b / N0 2dB

0
80 90 100 110 120 130 140

Figura 7.24 Histograma desnormalizado para la estimación extrínseca correspondientes


a entradas ‘1’ de un código turbo, en función de la relación E b / N0

Las figuras 7.23 y 7.24 muestran que las estimaciones extrínsecas tienen un
histograma o función densidad de probabilidad de características Gaussianas.
Mostradas sobre el mismo eje, ambas tienen un desplazamiento que se acentúa
con el incremento de E b / N0 , que es hacia la izquierda en el caso de las
estimaciones correspondientes a entradas ‘0’ y hacia la derecha para las que
corresponden a entradas ‘1’.
Estas simulaciones realizadas por el método de Monte Carlo permiten afirmar
que la información extrínseca E que genera el decodificador puede ser
modelada como una variable aleatoria independiente de tipo Gaussiano nE que
tiene una varianza σ E2 y valor medio cero, que se suma al valor transmitido o
bit sistemático x multiplicado por μE . Esto pude afirmarse para cada grupo de
estimaciones, es decir, para aquellas que son realizadas para el ´0´, como para el
grupo de estimaciones realizadas para el ´1´. Puede decirse entonces que:

393
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

E(0 ) μ E 0 x  nE 0
(1 )
E μE1 x  nE1
(7.87)

siendo

μE 0 σ E2 0 / 2 y
μE1 σ E21 /2
(7.88)

Una observación interesante que resulta de las simulaciones se deduce de la


figura 7.25, donde se muestra un detalle de los histogramas desnormalizados
obtenidos por simulación para el código del ejemplo 7.4, de los valores de la
estimación extrínseca para el ´0´ y para el ´1´. En este gráfico se muestran en
línea llena los histogramas correspondientes a las estimaciones extrínsecas para
el ´1´, y en línea punteada, los histogramas de las estimaciones extrínsecas para
el ´0´. Los histogramas de mayor valor absoluto corresponden a una valor de
E b / N0 0.2dB , y los histogramas para valores Eb / N0 0.3, 0.4, 0.5 y
0.6dB son los que gradualmente van adoptando valores pico menores. Se
destacan en la figura con líneas con marcas de círculo los histogramas
correspondientes al las estimaciones extrínsecas para el ´0´ y para el ´1´ cuando
E b / N0 0.6dB , que es el primer valor en el que el máximo del histograma
ocurre para argumentos del eje horizontal distintos. A partir de este valor de
E b / N0 comienza la región denominada de “catarata”, en coincidencia con lo
que determina la curva de la figura 7.21. Este inicio puede darse también desde
E b / N0 0.5dB según sea la simulación observada. Para valores de E b / N0
por debajo de este límite, los histogramas de las estimaciones extrínsecas para el
´0´ y para el ´1´ presentan sus valores máximos para el mismo valor del
argumento, como puede observarse en la figura 7.25.

394
Capítulo VII: Códigos turbo

2000

1800

1600

1400

1200

1000

800

600

400

200

0
490 492 494 496 498 500 502 504 506 508 510

Figura 7.25. Histogramas de las estimaciones extrínsecas para el ´0´ y para el ´1´ del
código turbo del ejemplo 7.4

La coincidencia de los valores máximos en los argumentos de la función se


debe a efectos de cuantificación del cálculo del histograma. De todas maneras
esto indica que μE 0 y μ E1 son cantidades muy parecidas entre si. El valor pico
del histograma corresponde al valor registrado de la correspondiente función
densidad de probabilidad en el argumento igual a μE 0 para los histogramas de
las estimaciones extrínsecas para el ´0´ representativas de la función densidad
de probabilidad pE ( ξ / X 1 ) que adopta la forma
pE ( ξ / X 1 ) e

 ξ  μ
E0 E0
x 2 / 2 σ 2
2π σ E 0 , e igual a μ E1 para los
histogramas de las estimaciones extrínsecas para el ´1´ representativas de la
función densidad de probabilidad pE ( ξ / X 1 ) que adopta la forma
pE ( ξ / X 1 ) e

 ξ  μ
E1 E1
x 2 / 2 σ 2
2π σ E1 . Puede afirmarse que cuando los
valores de μE 0 y μ E1 son similares, el código esta en la región no útil del
control de errores, aquella para la cual la tasa de error es peor que si no se
codifica. Cuando los valores μE 0 y μ E1 comienzan a diferenciarse, el código
turbo entre en la región de “catarata” en la curva de tasa de error BER.
Estas simulaciones también permiten afirmar, debido a que estas estimaciones
extrínsecas en definitiva se convierten en estimaciones a priori de la próxima

395
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

iteración, que las estimaciones a priori A que operan como entradas al


decodificador pueden ser modeladas como una variable aleatoria independiente
de tipo Gaussiano n A que tiene una varianza σ A2 y valor medio cero, que se
suma al valor transmitido o bit sistemático x multiplicado por μ A . Debe
notarse que el proceso inverso de permutación que debe hacerse en la
conversión de las estimaciones extrínsecas en estimaciones a priori de la
próxima iteración, no cambian la estadística de tales estimaciones. Puede
decirse entonces que [13, 14]:

A μA x  nA
(7.89)

siendo

μA σ A2 / 2
(7.90)

De esta manera, la función densidad de probabilidad para esta variable aleatoria


es de la forma:

§
2
¨ ξ  σ A
©
2· 2
/ 2 x ¸ / 2σ A
¹
e
pA ( ξ / X x)
2π σ A
(7.91)

Para determinar los contenidos de información de esta estimación a priori se


utiliza la información mutua entre los bits sistemáticos de información
representados por la variable aleatoria X y la estimación a priori A . Esta
información mutua puede calcularse utilizando la siguiente expresión [22]:

1 f 2.p A ( ξ / X x )
IA I( X ; A )
2x
¦ ³f p A ( ξ / X x ) log 2
p A ( ξ / X 1 )  p A ( ξ / X 1 )

1,1

(7.92)
de manera que 0 d I A d 1

esta expresión puede combinarse con (7.91) resultando:

396
Capítulo VII: Códigos turbo

f e
2
 ξ σ A 2
/ 2 / 2σ A
IA 1  ³f log 2 (1  e ξ )dξ
2π σ A
(7.93)

La información extrínseca también puede ser analizada utilizando una medición


de la información mutua entre esta estimación y los bits sistemáticos de
información:

1 f 2 pE ( ξ / X x )
IE I( X ; E )
2x
¦ ³f pE ( ξ / X x ) log 2
pE ( ξ / X 1 )  pE ( ξ / X 1 )

1,1

(7.94)

de manera que 0 d I E d 1 .

Con el conocimiento de la información mutua ente los bits sistemáticos y la


información a priori, I A , y la información mutua entre los bits sistemáticos y la
información extrínseca que produce el decodificador, I E , se puede describir
para cada valor de la relación E b / N0 , la característica de transferencia de
información extrínseca. Esta transferencia se define como [14]:

IE Tr ( I A ,Eb / N0 )
(7.95)

El cálculo de esta transferencia necesita determinar el valor de I E que se


produce para un determinado valor de I A , evaluados ambos para el mismo valor
de E b / N0 . El cálculo asume una estimación a priori A caracterizada por las
expresiones (7.89) y (7.90), con una función densidad de probabilidad como la
descripta por (7.91), que deriva en un determinado valor de I A , obtenido por
ejemplo usando la expresión (7.93). Esta información a priori se aplica al
decodificador juntamente con un evento de transmisión de palabras de código
afectadas por ruido blanco y Gaussiano acorde al valor de E b / N0 para el cual
se realiza el cálculo de la CTIE. El decodificador LOG MPA BCJR generará un
vector de estimaciones extrínsecas E , para el cual se tendrá un dado valor de
I E . Este valor es convenientemente determinado por simulación usando el
método de Monte Carlo, efectuando mediciones del histograma correspondiente

397
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

de las estimaciones extrínsecas E , que hará las veces de la función


pE ( ξ / X x ) en la expresión (7.94).
Todas las estimaciones que pertenezcan a bits sistemáticos de información ‘0’
formarán el histograma histE ( ξ / X 1 ) que será utilizado como
pE ( ξ / X 1 ) , mientras que todas las estimaciones extrínsecas que
pertenezcan a bits sistemáticos de información ‘1’ formarán el histograma
histE ( ξ / X 1 ) que será utilizado como pE ( ξ / X 1 ) . De esta manera,
la cantidad de información mutua I E I( X ; E ) puede ser determinada.
El procedimiento se describe gráficamente a continuación sobre la base del
ejemplo 7.4. Haciendo uso de las expresiones (7.89) y (7.90) se genera un
vector de estimaciones a priori A de tamaño NxN 10000 para el caso del
ejemplo analizado para un dado valor de σ A . Al mismo tiempo se da forma a
un bloque del mismo tamaño de bits de información que codificados con una
tasa de código Rc 1 / 2 se transmiten como un grupo de 2NxN 20000
bits codificados que se afectan por el ruido presente en el canal de manera que
por ejemplo Eb / N0 1dB .
El decodificador realiza la decodificación y genera un vector de estimaciones
extrínsecas E de tamaño NxN 10000 . La figura 7.26 presenta este proceso
para Eb / N0 1dB y dos valores de σ A , esto es, para σ A 2 y σ A 4.5 . El
gráfico muestra los histogramas desnormalizados para la información a priori
A , y para la estimación extrínseca E que el decodificador LOG MPA BCJR
genera a partir de esta información a priori y del evento de ruido simulado.

398
Capítulo VII: Códigos turbo

2.5

VA 2 VA 2
2

1.5

VA 4.5 VA 4.5
1

0.5

0
1230 1235 1240 1245 1250 125 1260 1265 127 1275

Histograma desnormalizado para estimaciones a priori A aplicadas cuando


el bit de información es ´1´

Histograma desnormalizado para estimaciones a priori A aplicadas cuando


el bit de información es ´0´

Histograma desnormalizado para estimaciones extrínsecas E resultantes


cuando el bit de información es ´1´

Histograma desnormalizado para estimaciones extrínsecas E resultantes


cuando el bit de información es ´0´

Figura 7.26 Histogramas de información a priori A aplicadas y de las informaciones


extrínsecas E generadas por el decodificador LOG MPA BCJR para el ejemplo 7.4

Estos histogramas permiten el cálculo de las informaciones mutuas que


determinan la forma de las CTIE. El valor de I A puede ser establecido con la
expresión (7.93) evaluada numéricamente, y el valor de I E correspondiente se
obtiene también por integración numérica utilizando los histogramas calculados

399
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

por simulación como los que se observan el la figura 7.26 por ejemplo, usando
la expresión (7.94) en la forma:

1 ª f 2.histE ( ξ / X 1 )
2 ¬ ³f
IE I( X ; E ) .« histE ( ξ / X 1 ).log 2 dξ 
histE ( ξ / X 1 )  histE ( ξ / X 1 )
f 2.histE ( ξ / X 1 ) º
³f histE ( ξ / X 1 ).log 2
histE ( ξ / X 1 )  histE ( ξ / X
dξ »
1 ) ¼

(7.96)

donde histE ( ξ / X 1 ) hace las veces de pE ( ξ / X 1 ) e


histE ( ξ / X 1 ) hace las veces de pE ( ξ / X 1 ) . Las integrales indicadas
en (7.96) se resuelven como sumatorias sobre las funciones descriptas en esa
expresión en términos de los correspondientes histogramas.
Los valores de I A e I E pueden variar levemente de acuerdo al evento de ruido
simulado. De todas maneras, si se realiza un cálculo para diferentes valores de
σ A , teniendo como parámetros fijos el evento de error transmitido y el valor de
E b / N0 , se puede determinar la curva CTIE correspondiente a dicho valor de
E b / N0 . Luego pueden también darse diferentes valores de E b / N0 para
mostrar como las CTIE dependen de ese parámetro. Esto es representado en la
figura 7.27. La CTIE es una representación cartesiana donde la información
mutua I E se grafica como función de la información mutua I A .

400
Capítulo VII: Códigos turbo

IE 1

0.9

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

IA
CTIE a Eb/No= -0.75 dB
CTIE a Eb/No= 0 dB

CTIE a Eb/No= 0.75 dB


CTIE a Eb/No= 1.5 dB

CTIE a Eb/No= 2.25 dB

CTIE a Eb/No= 3 dB

Figura 7.27 CTIE para el código del ejemplo 7.4 y diferentes valores de E b / N0

Esto también permite realizar una gráfica para la obtención de la transferencia


de información, convirtiendo la información extrínseca de un decodificador en
la información a priori del otro. Para esto, se realiza una gráfica donde la CTIE
es mostrada de forma que sea I E función de I A , y a su vez I A función de I E ,
superpuesta sobre la anterior, significando así que la información extrínseca de
un decodificador pasa a ser la información a priori del otro. De esta forma
puede visualizarse la transferencia de información extrínseca. Esto se muestra

401
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

en la figura 7.28, donde se observa con claridad como se produce el proceso


iterativo. El procedimiento comienza cuando la información a priori es cero,
partiendo de un dado valor de I E que resulta ser función de los parámetros del
decodificador y la relación E b / N0 . Luego este valor pasa a ser el valor de
información a priori del otro decodificador, al cual se supuso de iguales
características que el primero. De aquí surge la simetría de la figura 7.28. El
proceso continua siendo que para cada valor actualizado de I A , se obtiene el
siguiente valor de I E (flechas en sentido vertical), y luego ese valor de I E se
convierte en el próximo valor de I A para el otro decodificador (flechas en
sentido horizontal).

1
IE ; I A
0.
9

0.
8

0.
7

0.
6

0.
5

0.
4

0.
3

0.
2

0.
1

0
0 0. 0. 0. 0. 0. 0. 0. 0. 0. 1
1 2 3 4 5 6 7 8 9

IE ; I A
CTIE a Eb/No= 1 dB
CTIE a Eb/No= 2 dB

Figura 7.28 Proceso de decodificación iterativa analizado usando CTIE

402
Capítulo VII: Códigos turbo

La figura 7.28 muestra este proceso para dos valores de E b / N0 ,


Eb / N0 1dB y Eb / N0 2dB , donde puede verse que el número de
iteraciones significativas es mayor en el caso Eb / N0 1dB . La conducta de
la decodificación para estos dos valores de E b / N0 determina que el
decodificador esta pasando de la región de catarata a la región de piso de la tasa
de error BER, es decir, desde una región donde las iteraciones son significativas
y muchas, a otra donde las iteraciones son pocas y se reducen rápidamente.
El proceso iterativo de decodificación pierde sentido a partir el momento en que
la curva I E Tr ( I A ,Eb / N0 ) y su versión de ejes revertidos
I A Tr ( I E ,Eb / N0 ) se intersectan. Esto se muestra para el caso de la relación
E b / N0 0.5dB en la figura 7.29.

IE
0.9

0.8

0.7

0.6

0.5

0.4

0.3 E b / N0 0.5dB
0.2

0.1

0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

Figura 7.29 CTIE para el código del ejemplo 7.4 cuando E b / N0 0.5dB
IA

Como se observó en las figuras 7.21 y 7.25, el valor de E b / N0 0.5dB


determina aproximadamente el inicio de la región de catarata para el caso del
código turbo del ejemplo 7.4, pero se encuentra aún en una zona de la curva de
tasa de error BER en la que el código no opera adecuadamente. La CTIE
evidencia este efecto de la forma observada en la figura 7.29 [28].

403
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Bibliografía y Referencias
1 Berrou, C., Glavieux, A. y Thitimajshima, P., “Near Shannon limit error-
correcting coding and decoding: turbo codes,” Proc.1993 IEEE
International Conference on Communications, Geneva, Suiza, Págs.1064-
1070,Mayo 1993.

2 Hanzo, L., Liew, T. H. y Yeap, B. L., Turbo Coding, Turbo Equalisation


and Space-Time Coding, for Transmission over Fading Channels, IEEE
Press, Wiley, 2001.

3 Heegard, C. y Wicker, S, Turbo Coding, Kluwer Academic Publishers,


1999.

4 Bahl, L., Cocke, J., Jelinek, F. y Raviv, J., “Optimal decoding of linear
codes for minimising symbol error rate,” IEEE Transactions on
Information Theory, vol. IT–20, Págs. 284–287, Marzo 1974.

5 Hagenauer, J., Offer, E., y Papke, L., "Iterative decoding of binary block
and convolutional codes,” IEEE Trans. on Inf. Theory, Vol. 42, I. 2, Págs.
429-445, Marzo 1996.

6 Cain, J. B., Clark, G. C. y Geist, J. M., “Punctured convolutional codes of


rate (n-1)/n and simplified Maximum Likelihood decoding,” IEEE Trans.
on Inf. Theory, IT-25, Págs. 97-100, Enero 1979.

7 Sklar, B., Digital Communications, Fundamentals and Applications,


Prentice Hall, 1993.

8 Forney, G. D., Jr., Concatenated Codes, Cambridge, MA, USA, MIT


press, 1966.

9 Woodard, J.P. y Hanzo, L., “Comparative Study of Turbo Decoding


Techniques,” IEEE Transaction on Vehicular Technology, Vol 49, Nq6,
Noviembre 2000.

10 He, Ch., Lentmaier, M., Costello, D. J., Jr., Zigangirov, K. Sh., “Designing
linear interleavers for multiple turbo codes,” Proceedings of the 8th
International Symposium on Communications Theory and Applications,
St. Martin’s College, Ambleside, UK, Págs. 252-257, Julio 2005.

404
Capítulo VII: Códigos turbo

11 Crozer, S. y Guinand, P., “Distance upper bounds and true minimum


distance results for turbo-codes designed with DRP interleavers,” in Proc.
3rd. Internatioal Sympsium on Turbo Codes and Related Topics, (Brest,
Francia), Págs. 169-172, Septiembre 2003.

12 Dolinar, S. y Divsalar, D., “Weight distributions for turbo codes using


random and nonrandom permutations,” JPL TDA Progress Report, Págs.
56-65, Agosto 1995.

13 Ten Brink, S., “Convergence behaviour of iteratively decoded parallel


concatenated codes,” IEEE Trans. On Comm., vol. 49, pags. 1727-1737,
Octubre 2001.

14 Ten Brink, S., “Convergence of iterative decoding,” Electron. Lett., Vol.


35, (10), Mayo 1999.

15 Ten Brink, S., Speidel, J. y Yan, R., “Iterative demapping and decoding
for multilevel modulation,” Proc. IEEE Globecom Conf. 98, Sydney,
NSW, Australia, Págs. 579-584, Noviembre 1998.

16 Ten Brink, S., “Exploiting the chain rule of mutual information for the
design of iterative decoding schemes,” Proc. Of the 39th Allerton Conf.,
Monticello, IL, Octubre 2001.

17 Tuchler, M., ten Brink, S., and Hagenauer, J., “Measures for tracing
convergence of iterative decoding algorithms,” Proc. 4th IEEE/ITG Conf.
on source and channel coding, Berlín, Alemania, Págs. 53-60, Enero 2002.

18 Ten Brink, S., Kramer, G. y Ashikhmin, A., “Design of Low-Density


Parity-Check codes for Modulation and detection,” IEEE Trans. on Comm.
Vol. 52, No 4, Abril 2004

19 Ashikhmin, A., Kramer, G. y ten Brink, S., “Extrinsic information transfer


functions: A model and two properties,“ Proc. conf. Information Sciences
and systems, Princeton, NJ, Págs. 742-747, Marzo 20-22, 2002.

20 Sharon, E., Ashikhmim, A. y Litsyn, S., “EXIT functions for the Gaussian
channel,” Prov. 40th Annu. Allerton Conf. Communication, Control,
Computers, Allerton, IL, pags. 972-981, Octubre 2003.

405
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

21 Battail, G., “A conceptual framework for understanding turbo codes,”


IEEE Journal on Selected Areas in Communications, Vol. 16, Nº 2, pags.
245-254, Febrero 1998.

22 Hamming, R. W., Coding and Information Theory, Prentice-Hall, New


Jersey, 1986.

23 Benedetto, S. y Montorsi, G., “Unveiling Turbo Codes: Some results on


parallel concatenated coding schemes,” IEEE Trans. on Information
Theory ,vol.42, no.2, Págs. 409-428, Marzo 1996.

24 Divsalar, D., Dolinar, S. y Pollara, F., “Iterative turbo decoder analysis


based on gaussian density evolution,” Proceedings MILCOM 2000, Vol.
1, pags. 202-208, Los Angeles, CA, USA, Octubre 2000.

25 Ashikhmin, A., Kramer, G. y ten Brink, S., “Extrinsic information transfer


functions: Model and erasure channel properties,“ IEEE Trans. on
Information Theory , vol.50, no.11, Págs.. 2657-2672, Noviembre 2004.

26 Meyerhans, G., Interleave and code design for parallel and serial
concatenated convolutional codes, Tesis Doctoral, Instituto Federal Suizo
de Tecnología, Universidad de Notre Dame, 1996.

27 Barbulescu, S. A. y Pietrobon, S. S., “Interleaver design for turbo codes,”


Electron. Lett., vol. 30, No. 25, Págs. 2107–2108, Diciembre 1994.

28 Schlegel, Ch. y Perez, L., Trellis and Turbo Coding, John Wiley & Sons
Canadá, Ltd. Hoboken, N.J., Marzo 2004.

29 Honary B., Markarian G., Trellis Decoding of. Block Codes: a Practical
Approach,
Kluwer Academic Publishers, USA, 1997.

406
Capítulo VII: Códigos turbo

Problemas
Códigos concatenados:

7.1) La palabra de salida de un código de bloques Cb ( 6,3 ) generado por la


siguiente matriz generadora G ingresa a un código convolucional como el que se
muestra en la figura P.7.1, operando en modalidad pseudos-bloque. Esto significa
que luego del ingreso de los 6 bits de entrada que forman parte de la palabra
codificada por el código de bloques, se ingresan bits adicionales para vaciar los
registros del codificador convolucional.

c (1 )
ª1 1 0 1 0 0 º
G «0 1 1 0 1 0 »
« »
«¬1 0 1 0 0 1 »¼

c(2 )

Figura P.7.1. Concatenado de un código de bloques con un código convolucional

Determine:
a) La matriz traspuesta de control de paridad del código de bloques, la tabla
síndrome-patrón de error, el trelis del código convolucional y su distancia libre
mínima.
b) Determine la distancia mínima del código concatenado.
c) Decodifique la secuencia recibida U 01 10 10 00 11 11 00 00 para
encontrar posibles errores, y también cual fue la secuencia transmitida.

7.2) El código cíclico C cyc( 3 ,1 ) generado por el polinomio generador


g( X ) 1  X  X 2 es aplicado en sentido horizontal sobre un bit, y luego un
segundo código cíclico C cyc(7 ,3 ) generado por el polinomio
g( X ) 1  X  X 2  X 4 es aplicado en sentido vertical sobre la palabra
inicialmente codificada, en un formato de código en arreglos, como se ve en la
figura P.7.2.
a) Determine la tasa del código en arreglo y su capacidad de corrección de
errores;

407
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

b) ¿Cual es la relación entre la capacidad de corrección de errores del código en


arreglo y la capacidad de corrección de errores de cada uno de los códigos cíclicos
que forman parte del arreglo?
n1

k1

k2
n2

Figura P.7.2. Código en arreglo

c) Construya el código en arreglo del inciso anterior aplicando primero el código


cíclico C cyc(7 ,3 ) y luego el código cíclico C cyc( 3 ,1 ) para realizar una
comparación con el resultado obtenido en el inciso b).

Códigos Turbo:

7.3) El siguiente y simple código en arreglo binario (también conocido como


código producto) tiene palabras de código de longitud n 8 y longitud de palabra
de mensaje k 4 que adopta el siguiente formato:

1 2 5

3 4 6

7 8

Figura P.7.3. Un código producto

Los símbolos 1, 2, 3 y 4 son los bits de información o mensaje, los símbolos 5 y 6


son los bits de paridad fila, y los símbolos 7 y 8 son los bits de paridad columna.
De esta manera los bits 1, 2, 5 y 3, 4, 6, forman dos palabras de código fila de

408
Capítulo VII: Códigos turbo

paridad simple, y los bits 1, 3, 7 y 2, 4, 8 forman dos palabras de código columna


de paridad simple, donde cada código constituyente es un código de bloques de
paridad simple Cb ( 3 ,2 ) .
Este código producto o arreglo puede ser interpretado como un código turbo de
forma simple. En función de la estructura del código que se muestra en la figura
P.7.4 los codificadores constituyentes concatenados en forma paralela determinan
las paridades de las palabras en sentido horizontal y vertical calculando los bits de
paridad fila y columna del código producto, mientras que el permutador altera el
orden en el que los bits de mensaje entran al codificador columna de {1,2,3,4} a
{1,3,2,4}. El bloque de multiplexado combina los bits de mensaje y de paridad para
darle forma final a la palabra de código.

Bits de mensaje

Bits de paridad fila


Codif. Fila

Permutador Multiplexador

Codif. Columna

Bits de paridad columna

Figura P.7.4. Código producto interpretado como un código turbo

a) ¿Cuál es la tasa y distancia de Hamming mínima de este código?


b) Una palabra de este código es modulada, transmitida sobre un canal simétrico,
discreto y sin memoria que opera usando decisión no rígida como el que se ve en la
figura P.7.5, cuyas probabilidades condicionales se detallan en la tabla T.7.1, y es
recibido como el vector r 10300000 . Haciendo uso del el algoritmo iterativo
de decodificación MAP, determine los bits de información que fueron transmitidos.

409
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Salida muy
0 confiable para el 0

0 1 Salida poco
confiable para el 0

Salida muy
2 confiable para el 1
1

Salida muy
3 confiable para el 1

Figura P.7.5. Canal simétrico, discreto y sin memoria que opera en modo no rígido.

P( y / x )
x , y 0 1 2 3
0 0.4 0.3 0.2 0.1
1 0.1 0.2 0.3 0.4

Tabla P.7.1. Probabilidades de transición del canal de la figura P.7.5

7.4) Determine la distancia libre mínima de cada uno de los códigos


constituyentes del código turbo de tasa 1/3 que se muestra en la figura P.7.6.
Luego, determine la distancia libre mínima de este código turbo.

410
Capítulo VII: Códigos turbo

c (1 )

m
c(2)

permutador
aleatorio de 3 c(3)
bits

Figura P.7.6. Un código turbo de tasa 1/3

§1 2 3 ·
El permutador aleatorio tiene como regla de permutación ¨¨ ¸¸ .
©3 1 2 ¹

7.5) Para el código turbo de la figura 7.20, con un permutador de bloques de


tamaño NxN 4 x4 como el que se utilizó en el ejemplo 7.3, construido usando
codificadores convolucionales (5,7), de tasa ½ , y una regla de selección de datos
de salida igual a la empleada en el ejemplo 7.3, el vector de mensaje a codificar es:
m  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1
. Este vector de entrada hace que la secuencia codificada por el primer codificador
sea no terminada.
a) Determine la entrada al segundo codificador, y la correspondiente salida del
código turbo.
b) Luego de ser transmitida y modificada a través de un canal con ruido blanco,
aditivo y Gaussiano, de dispersión σ 1.1 , la secuencia recibida que aparece
tabulada en la tabla .7.2 es aplicada al decodificador:

411
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Secuencia de Entrada Secuencia recibida


-1 -0.5290 -0.3144
-1 -0.01479 -0.1210
-1 -0.1959 +0.03498
+1 1.6356 -2.0913
-1 -0.9556 + 1.2332
+1 1.7448 -0.7383
-1 -0.3742 -0.1085
-1 -1.2812 -1.8162
+1 +0.5848 +0.1905
+1 +0.6745 -1.1447
-1 -2.6226 -0.5711
+1 +0.7426 + 1.0968
+1 1.1303 -1.6990
-1 -0.6537 -1.6155
+1 2.5879 -0.5120
-1 -1.3861 -2.0449

Tabla P.7.2. Secuencia de mensaje y recibida, problema 7.5

Utilice el algoritmo de decodificación BCJR para determinar la secuencia


decodificada. Estime el número de iteraciones necesarios para decodificar
correctamente la secuencia en este caso particular.

412
8
Códigos de paridad de baja densidad
Los límites de la técnica de corrección de errores fueron establecidos por
Shannon [1] en su trabajo sobre el modelo matemático para las comunicaciones
presentado en 1949, y luego de este planteo surgieron una serie de técnicas de
codificación que no encontraron un acercamiento notorio a los límites predichos
hasta la aparición en 1993 de los códigos turbo que introdujeron Berrou,
Gavieux y Titimajshima [3]. Posteriormente David J. C. Mackay y R. M. Neal
(1996) [4, 5] redescubrieron los llamados códigos Gallager introducidos en
1962 [6], que por años permanecieron ocultos, a pesar de su excelente
funcionamiento.
Los códigos Gallager, también conocidos como códigos de paridad de baja
densidad, que en Inglés son descriptos como “low-density parity-check codes”
(LDPC) son códigos de bloques lineales, que se construyen sobre la base de una
matriz de paridad H que tiene como característica ser de baja densidad (en
Inglés, “Sparse Matrix”), es decir, en el caso binario contiene pocos elementos
'1' dispersos entre un gran número de elementos ' 0' . El diseño propuesto por
Gallager [6] presenta el método constructivo, el algoritmo probabilístico
iterativo, y los elementos principales de su desarrollo, pero la carencia de
procesamiento de cálculo poderoso para esa época (año 1962) no permitió
mostrar la eficacia de estos códigos, a pesar del intento de Tanner por revivirlos
en 1981 [7].
Los códigos LDPC o Gallager fueron inicialmente concebidos por construcción
de una matriz con un número fijo de '1' s en filas y columnas. En este caso se
habla de códigos LDPC regulares. Sin embargo el número de '1' s de filas y
columnas puede ser variado, en la construcción que se denomina irregular.
El funcionamiento de los códigos LDPC es comparable a la de los códigos
turbo. Versiones modificadas del esquema original, de estructura irregular,
basadas en construcciones sobre campos de Galois extendidos GF( q ) , con
q 4 , 8 y 16 [8] presentan un funcionamiento cercano al límite de Shannon
tal y como lo hacen los códigos turbo. Una de las características comunes a los
códigos LDPC y los códigos turbo es la existencia de un proceso pseudo-
aleatorio que forma parte de la construcción de los mismos. De hecho la
construcción mas adecuada del permutador del código turbo, y de la matriz de
control de paridad de los códigos LDPC, es realizada utilizando procesos
pseudo aleatorios.

413
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

8.1 Diferentes formas sistemáticas para un código de


bloques
Como se ha visto en el capítulo 2 un código lineal sistemático de bloques
C b ( n, k ) esta especificado unívocamente por la matriz generadora, y cuando el
código tiene forma sistemática dicha matriz es de la forma:

ª g0 º ª p00 p01  p0 ,n k 1 1 0 0  0º
« g » « p p11  p1,n k 1 0 1 0  0 »»
G « 1 » « 10
«  » «         »
« » « »
¬g k 1 ¼ «¬ p k 1,0 p k 1,1  p k ,n k 1 0 0 0  1 »¼





Sub- matriz p kx(n- k) Sub- matriz I kxk
(8.1)

Una notación mas abreviada es:

G >P Ik @ (8.2)

donde P es la sub-matriz de paridad e I k la sub-matriz identidad de dimensión


kxk . En este esquema la palabra de mensaje aparece al final de la palabra
codificada.
La forma sistemática de la matriz de paridad H del código Cb ( n, k ) generado
por la matriz G es:

ª1 0  0 p00 p10  pk 1,0 º


« pk 1,1 »»
H «0 1  0 p01
«   
p11


 »
>I n k PT @
« »
¬«0 0  1 p0 ,n k 1 p1,n k 1  pk 1,n k 1 ¼»







Sub- matriz I (n - k)x(n- k) Submatriz PT (n - k)xk
(8.3)

donde P T es la traspuesta de la sub-matriz de paridad P . La matriz H esta


construida de manera que el producto interno entre un vector fila g i de G y un

414
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

vector fila h j de H sea igual a cero, es decir, que estos vectores sean
ortogonales. Esto tiene como consecuencia que:

G $ HT 0 (8.4)

entonces
c $ HT m $ G $ HT 0
(8.5)

Como se verá en una sección siguiente los códigos LDPC son generados o
diseñados partiendo de la forma de la correspondiente matriz H , de la cual se
obtiene una matriz equivalente de forma sistemática, con la que se construye la
matriz generadora G . En este sentido se puede modificar el planteo de las
ecuaciones de manera de trasponer la matriz generadora, y calcular la ecuación
de síndrome con la matriz H , y no con H T . Entonces la palabra codificada se
genera como:

c GT $ m (8.6)

Dado que G T es una matriz de dimensión nxk , y el vector de mensaje m es


un vector de dimensión kx1 , el resultado es un vector de código c de
dimensión nx1 , que si bien aparece como un vector columna, puede ser
también interpretado como un vector fila, tal como se ha hecho usualmente. Si
la generación es realizada de acuerdo a la ecuación (8.6), la decodificación por
síndrome se basa en el cálculo del vector síndrome S de acuerdo a la
expresión:

S H $c (8.7)

que significa que toda palabra de código válida cumple con la condición:

H $c 0 (8.8)

y que la ecuación (8.4) adopta la forma:

H $ GT 0 (8.9)

415
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

verificándose que la matriz H es de dimensión ( n  k )xn , y G T es de


dimensión nxk resultando una condición que se iguala a una matriz nula de
dimensión ( n  k )xk .
Esta forma modificada de presentación de un código de bloques pone en
evidencia que la matriz H contiene toda la información del mismo, y por otro
lado, en especial la expresión (8.9) será útil para el diseño del esquema de
decodificación iterativa basada en el algoritmo suma-producto, como se verá en
secciones siguientes.

8.2 Descripción de un código LDPC


Los códigos de paridad de baja densidad son códigos de bloques lineales y
binarios en la mayoría de los casos. En estos códigos, como se ha visto, existe
una matriz de generación G que convierte a los vectores de mensaje m en
vectores de código c . Asociada a la matriz G se encuentra la matriz de paridad
H , que tiene como característica estar formada por vectores fila que son una
base linealmente independiente que genera el subespacio dual del generado por
los vectores fila de G . Esto significa que todo vector de código cumple con la
condición H $ c 0 . La construcción de estos códigos se basa en el diseño de
la matriz H correspondiente, cuya característica más importante es que sus
elementos son mayoritariamente ceros. De acuerdo a la definición de Gallager,
un código LDPC se define como CLDPC ( n, s,v ) donde n es la longitud de las
palabras de bloque, de forma que la matriz de paridad correspondiente posee s
'1' s por columna y v '1' s por fila, siendo normalmente s t 3 .
v s
Si las filas de la matriz son independientes entonces la tasa del código es
v
n  s'
[4]. De no cumplirse esta condición esta tasa es igual a donde s' es la
n
dimensión del espacio fila de la matriz H . Esta relación surge contando el total
de los 1´s en la matriz de paridad H , primero por fila y luego por columna.
Resulta entonces que ns ( n  k )v y el manejo algebraico de esta ecuación
lleva a la deseada relación de la tasa del código. Si el código es de construcción
irregular, los valores de s y/o de v no son fijos, y se reemplazan por valores
promedios para calcular la tasa.
La construcción de Gallager le permitió mostrar las propiedades de estos
códigos, entre las cuales se demuestra que la probabilidad de error decrece
exponencialmente con la longitud de la palabra de código, y la distancia del
mismo aumenta con el aumento de ese parámetro.

416
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

Tanner [7] generalizó la construcción de Gallager, definiendo los grafos


bipartitos, donde las ecuaciones de cada grafo son generalizadas empleando
codificación independiente sobre cada condición del grafo, en vez de ser
simplemente condiciones de paridad.

8.3 Construcción de un código LDPC


8.3.1 Caso códigos LDPC regulares

El método constructivo planteado por Gallager es el de fijar el número de unos


sobre filas y columnas de manera de realizar una construcción aleatoria de la
misma conservando estas condiciones. Dichas condiciones pueden ser
levemente suavizadas proponiendo como tal la condición de tener por columna
un número s ! 2 de unos.
Las condiciones utilizadas en la construcción de la matriz H de un código
LDPC regular y binario son [9]:

x que la correspondiente matriz H posea un número constante v de unos por


fila
x que la correspondiente matriz H posea un número constante s de unos por
columna
x que el solapamiento de unos por fila y por columna sea a lo sumo de un
uno. Esta condición garantiza la ausencia de ciclos en el correspondiente
grafo bipartito
x que las constantes s y v sean pequeñas respecto del tamaño de la palabra
de código.

No es posible sin embargo exigir que se cumpla la tercera condición si se


pretende construir códigos LDPC con óptimos o buenos parámetros, dado que
es inevitable que el grafo bipartito de un código LDPC de alto rendimiento
contenga ciclos [18].
Normalmente luego de esta construcción, la matriz H resultante no estará en
formato sistemático, con lo cual es conveniente por operaciones sobre filas,
utilizando el método de Gauss, dar forma a una matriz equivalente
H' > @
I n- k P T , donde I n- k es la matriz identidad de dimensión
( n  k )x( n  k ) . La matriz inicialmente diseñada será entonces la matriz H
del código LDPC, para la cual existe una matriz G de la forma G >P I k @ .
El método consiste entonces en generar una matriz H >A B@ que
normalmente estará en forma no sistemática, de manera tal que las sub-matrices

417
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

A y B son también matrices de baja densidad. La sub-matriz A es una matriz


cuadrada de dimensión ( n  k )x( n  k ) que de ser no singular posee matriz
inversa A 1 . La sub-matriz B es de dimensión ( n  k )xk . Cuando se aplica el
método de Gauss sobre la matriz H >A B@, utilizando operaciones en el
campo binario, se lleva a la matriz a la forma H ' >I k A 1 B @ >I k @
PT .
Esta operación equivale a premultiplicar a la matriz H >A B@ por A . Una 1

'
vez formada la matriz H del código LDPC, se puede construir la matriz
generadora G empleando las sub-matrices calculadas G >P I k @ . De esta
manera el codificador queda también diseñado. La matriz de utilidad sin
embargo, es la matriz H .

En general y en función del método constructivo de la correspondiente matriz


H , los códigos LDPC pueden clasificarse en [11]:

x Códigos de construcción aleatoria


x Códigos LDPC de construcción estructurada

Aun cuando los códigos de construcción aleatoria pueden tener mejor


funcionamiento que los de construcción estructurada, estos últimos son más
adecuados en términos de la complejidad constructiva del codificador. La
construcción propuesta por D. Mackay [4, 5] por ejemplo es de naturaleza
aleatoria, mientras otros enfoques como el de Shu Lin [10] se basan en
consideraciones geométricas, o bien otros en la conformación de la matriz con
propiedades cíclicas o cuasi-cíclicas. También existe otro planteo dentro de los
códigos LDPC de construcción estructurada que se basa en matemática
combinatoria (denominada diseño en bloques incompleto balanceado) [11].

8.3.2 Caso códigos LDPC irregulares

Teniendo en cuenta la definición de un código LDPC regular binario, en el cual


se determina que en la correspondiente matriz H exista un número fijo de unos
por fila y por columna, se puede hablar también de códigos LDPC irregulares,
en los cuales se tiene como condición que el número de unos por fila y/o por
columna puede variar. En general se encuentra que los códigos irregulares
pueden funcionar mejor que los regulares. También existen diferentes métodos
[9] para la construcción de un código LDPC irregular.

418
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

8.3.3 Decodificación de los códigos LDPC

Al realizar la codificación de las palabras de mensaje m por medio de la


T T ªP T º
operación matricial c G $ m donde G « » se propone un mecanismo
¬ Ik ¼
de decodificación de orden diferente al visto en el caso de los códigos de
bloques. El vector transmitido se afecta por el ruido y resulta ser el vector
recibido r c  n que es utilizado en los métodos de decodificación
tradicionales basados en el cálculo de síndrome para estimar ese vector como
S H $ r H $ (GT $ m  n) H $ n . La esencia de la decodificación es la
estimación del vector d que cumpla con la condición H $ d 0 . El algoritmo
de decodificación a presentar realiza esta estimación.
Este algoritmo es conocido como el algoritmo de suma-producto, o algoritmo
de propagación de la confiabilidad. Este algoritmo estima la probabilidad a
posteriori de cada símbolo en función de la señal recibida, de las ecuaciones de
paridad y de las características del canal. El algoritmo se describe sobre la base
de un grafo bipartito que se define de acuerdo a la matriz H en el cual se
grafica la relación entre dos tipos de nodos, los nodos representativos de los
símbolos de transmisión, y los nodos representativos de las ecuaciones de
paridad que vinculan a los símbolos [7]. Las filas de la matriz H describen a los
símbolos que se encuentran involucrados en determinada ecuación de paridad.
De esta forma la conexión entre el nodo símbolo d j y la ecuación de paridad
hi existirá siempre y cuando el correspondiente elemento de la matriz H sea
uno, H ij 1 . El estado de los nodos de paridad depende de los nodos símbolo
a los cuales están vinculados. En general los nodos de paridad vinculados a un
nodo símbolo se denominan nodos hijo y los nodos de símbolo vinculados a uno
de paridad se denominan nodos padre.

419
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

d1 d2 d3 d4 dn Nodos
símbolo


x
Q34

Nodos de
h1 h2 h3 hm paridad

Figura 8.1 Grafo bipartito. Nodos símbolo y de paridad

En el algoritmo de suma-producto cada nodo símbolo d j envía al nodo hijo de


paridad hi la información probabilística Qijx basada en la información
proporcionada por los otros nodos hijo relacionados con el nodo símbolo, de
que el nodo de paridad se encuentre en el estado x . Por otro lado cada nodo de
paridad hi envía la información R ijx a cada nodo padre d j informando sobre la
probabilidad de que la paridad del nodo i se satisfaga, suponiendo que el nodo
padre se encuentra en el estado x , tomando la información proporcionada por
todos los otros nodos padre. Este proceso de intercambio de información entre
nodos es iterativo, y se detiene si se cumple que la condición de síndrome es
satisfecha, con lo cual se procede a una decodificación, o bien si el número de
iteraciones establecido es alcanzado sin que la ecuación de síndrome se cumpla,
generando en ese caso una palabra decodificada donde cada símbolo de la
misma ha sido decodificado de manera óptima. En este sentido el algoritmo de
suma-producto, al igual que el algoritmo BCJR, define la mejor estimación
posible de cada símbolo de la palabra recibida, pero no necesariamente la mejor
estimación posible de la palabra de código que había sido transmitida. Esta
diferencia en el proceso de decodificación deriva del hecho que el algoritmo de
suma-producto es un algoritmo MPA, mientras que otros algoritmos como el de
Viterbi, optimizan la decodificación de la palabra de código por tratarse de
algoritmos de decodificación del tipo MS.
En general el proceso iterativo converge a la solución adecuada de la
decodificación. Cuando el grafo bipartito contiene la estructura de un árbol, la
convergencia es segura. La presencia de ciclos relativamente cortos en el grafo
(de longitudes 4, 6, 8 etc.) , inevitable si los parámetros del código son buenos,

420
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

es preferentemente evitada, pero su mal efecto es muy reducido cuando la


longitud de bloque del código es grande (> 1000 bits).

8.4 Algoritmo de suma-producto


Esta sección describe el algoritmo de suma-producto. El algoritmo es
inicializado con los valores de Qijx que se ajustan en un principio a la
probabilidad a priori de los símbolos que se denota con f jx , que es la
probabilidad de que el j -ésimo símbolo sea x . Esta información es
dependiente del canal que se emplee en el modelo. Para el caso del canal
Gaussiano esta probabilidad se estima con la función distribución de
probabilidad Gaussiana.
Luego de este proceso inicial se evalúan los mensajes entre nodos de forma
iterativa. El mensaje R ijx que cada nodo de paridad i envía a sus nodos padre j
es la probabilidad de que el nodo de paridad i se satisface (es decir la ecuación
de paridad que le corresponde a este nodo se satisface) cuando el nodo padre
esta en el estado x . Que el nodo se satisfaga significa que esta de acuerdo con
la ecuación del síndrome del nodo hi . Este valor es igual a:

P hi / d j x ¦ P hi / d P d / d j x (8.10)
d :d j x

La probabilidad es calculada sobre todos los valores del vector decodificado d


para los que el control de paridad se satisface con la condición de que el nodo
padre este en el valor x . Para el nodo de paridad hi la información actualizada
a transmitir al nodo de símbolo d j se calcula para cada valor de estado x y es
igual a:

R ijx ¦ P hi / d –Qikdk (8.11)


d :d j x kN ( i )\ j

En esta expresión, N( i ) representa el conjunto de subíndices de todos los


nodos padre del nodo de paridad hi , mientras que la notación N( i ) \ j indica la
exclusión del nodo j de ese conjunto.
La probabilidad P hi / d de que el control de paridad se satisface es 0 o 1
para un dado valor de d .

421
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

El mensaje probabilístico Qijx que el nodo símbolo j envía a sus nodos hijo o
de paridad i , es la estimación que el nodo tiene de que está en el estado x de
acuerdo a la información proveniente de los otros nodos hijo. Luego, y
utilizando la regla de Bayes:

P dj x /^hi `i M ( j ) \ i P d j
x P ^hi `i M ( j ) \ i / d j x
P ^h ` (8.12)
i i M ( j ) \ i

La información que el nodo símbolo j envía a sus nodos hijo de paridad i es


entonces:

Qijx α ij f jx – Rkja (8.13)


kM ( j )\ i

donde M( j ) representa el conjunto de subíndices de todos los nodos hijo del


nodo símbolo d j , mientras que la notación M( j ) \ i indica la exclusión del
nodo i de ese conjunto. El factor f jx es la probabilidad a priori de que d j este
en el estado x .
La constante de normalización α ij se evalúa de forma que se cumpla
¦ Qijx 1.
x

De esta manera, el conocimiento del valor de los coeficientes Qijx permite


determinar los valores de los coeficientes R ijx con los cuales se puede realizar
una estimación para cada valor del índice j , que identifica a los símbolos y
estados posibles x , que es la cantidad:

d̂ j arg max f jx
x
– Rkjx (8.14)
kM ( j )

que constituye la estimación de la decodificación para el valor del símbolo en


posición j . Si este vector decodificado y estimado confirma la ecuación de
síndrome, H $ dˆ S (en general de la forma H $ dˆ 0 ) entonces se considera
vector valido de código y decodificación acertada. De otra manera, sucederá
que la decodificación optimizará de acuerdo al criterio MPA la estimación
hecha sobre cada bit, pero no necesariamente se producirá la decodificación
acertada de la palabra de código que había sido efectivamente transmitida.

422
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

8.5 Algoritmo suma-producto para códigos LDPC. Un


ejemplo
Supóngase tener la siguiente matriz de paridad H de dimensión 8 x12 que
caracteriza a un código de bloques lineal Cb (12 ,4 ) , de tasa Rc 1 / 3 , que es
un código LDPC irregular, cuya matriz de generación de forma sistemática
asociada es la matriz G :

ª0 1 0 1 0 1 1 1 0 0 0 1º
«1 0 1 1 0 0 0 0 1 0 0 0 »»
«
«0 1 0 0 1 0 1 0 0 0 0 1»
« »
H «1 0 0 1 0 0 0 0 0 1 1 0»
«0 0 1 0 1 1 0 0 0 1 0 0»
« »
«1 0 1 0 0 0 1 1 0 0 1 0»
«0 1 0 0 0 1 0 1 1 1 0 0»
« »
«¬0 0 0 0 1 0 0 0 1 0 1 1 »¼

ª1 1 1 1 1 0 0 0 1 0 0 0º
«0
« 0 1 1 0 0 0 1 0 1 0 0 »»
G
«1 1 1 0 1 0 0 1 0 0 1 0»
« »
¬1 0 0 1 1 1 0 1 0 0 0 1¼

El procedimiento de generación de las palabras de código adoptado es el


tradicional, basado en la multiplicación del vector de mensaje c m $ G , de
forma que la palabra codificada debe cumplir con la ecuación de síndrome
c $ H T 0 . Como se explicó anteriormente, existe equivalencia entre este
procedimiento y el de efectuar las operaciones c GT $ m y H $ c 0 .
En este ejemplo la palabra de mensaje es m 1 0 0 0 que resulta en la
palabra codificada c 1 1 1 1 1 0 0 0 1 0 0 0 .
Esta palabra codificada se transmite como el vector
t  1  1  1  1  1  1  1  1  1  1  1  1 . Como
consecuencia de la transmisión de esta palabra en formato polar, en presencia de
ruido aditivo, blanco y Gaussiano, con un valor de dispersión σ 0.8 , se
produce la recepción de un vector:

423
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

r  1.3129  2.6584  0.7413  2.1745  0.5981  0.8323  0.3962  1.7586  1.4905  0.4084  0.9290  1.0765

Adoptando una decisión rígida la palabra decodificada es:

1 1 1 1 1 0 0 0 1 1 0 1

y se comprueba que el canal ha introducido dos errores, en posiciones 10 y 12.


Dado que la transmisión sucede en un canal Gaussiano, se pueden obtener los
factores f jx que resultan del vector recibido, aplicando la expresión de la
función distribución de probabilidad Gaussiana. De esta manera:

f j0
1
e

 r j 1 2 / 2 σ 2
(8.15)
2π σ
f j1
1
e

 r j 1 2 / 2 σ 2
(8.16)
2π σ

Como puede verse esta estimación requiere del conocimiento del valor de σ , la
dispersión del ruido que existe en el canal.
Evaluando estos coeficientes se obtienen los siguientes resultados, que se
muestran en la tabla 8.1:

1 2 3 4 5 6 7 8 9 10 11
j 12

r +1.3129 +2.6584 +0.7413 +2.1745 +0.5981 -0.8323 -0.3962 -1.7586 +1.4905 +0.4084 -0.9290 +1.0765

t +1 +1 +1 +1 +1 -1 -1 -1 +1 -1 -1 -1

0 0.0076 0.0000 0.0467 0.0002 0.0678 0.487 0.3751 0.3181 0.0039 0.1059 0.4967 0.0172
f j

0.4619 0.0582 0.473 0.1697 0.4396 0.0362 0.1088 0.0013 0.4132 0.3794 0.0272 0.4964
f j1

x
Tabla 8.1 Valores del vector recibido y los correspondientes a los factores f j

En estas tablas como en las siguientes, es importante notar que los valores están
redondeados a 4 cifras decimales, por lo que si se realiza el cálculo iterativo con
los valores redondeados, se observarán leves diferencias a lo largo de la

424
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

iteración. En la tabla 8.1 por ejemplo, el valor preciso de f 20 es pequeño,


( 1.43 x10 5 ) y por eso su valor redondeado en la tabla es cero. Los cálculos
han sido hechos con mayor precisión que la mostrada, utilizando el programa
MATLAB“ versión 5.3.

La información proveniente del canal queda determinada por estos factores f jx .


Los coeficientes de la iteración se calculan teniendo en cuenta el grafo bipartito,
que se obtiene directamente de las ecuaciones de paridad. Así, sea que se
exprese como H $ c 0 , o como c $ H T 0 , lo cierto es que de estas
expresiones se deduce que las filas de la matriz H multiplicadas por el vector
código c (realizando las operaciones en el campo binario GF( 2 ) ) deben dar
cero. Por lo tanto se podrían escribir las ecuaciones de paridad en este caso
como:

c 2 † c 4 † c6 † c7 † c8 † c12 0
c1 † c 3 † c 4 † c9 0
c 2 † c5 † c7 † c12 0
c1 † c 4 † c10 † c11 0
c 3 † c5 † c6 † c10 0
c1 † c 3 † c7 † c8 † c11 0
c 2 † c6 † c8 † c9 † c10 0
c5 † c9 † c11 † c12 0

Esta información se representa gráficamente en lo que se denomina un grafo


bipartito, que se observa para este ejemplo en la figura 8.2:

425
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Figura 8.2 Grafo bipartito para el ejemplo analizado en la sección 8.5

Cada fila de la matriz H se corresponde con un nodo de paridad. Cada bit de


mensaje se corresponde con un nodo símbolo. Así entonces los nodos hijo del
nodo padre 2 son los nodos de paridad 1, 3 y 7 , mientras que los nodos padre
del nodo hijo 1 son los nodos símbolo 2, 4, 6, 7 , 8 y 12 .
La inicialización del algoritmo de suma-producto se realiza ajustando los
coeficientes de información de nodo símbolo a nodo de paridad Qij0 y Q 1ij a los
valores dados por la probabilidad de transición del canal f j0 y f j1 . De esta
manera se tiene:

0 1
Q12 0.0000 Q12 0.0582
0 1
Q14 0.0002 Q14 0.1697
0 1
Q16 0.4878 Q16 0.0362
0 1
Q17 0.3751 Q17 0.1088
0 1
Q18 0.3181 Q18 0.0013
Q10,12 0.0172 Q11,12 0.4964

0 1
Q21 0.0076 Q21 0.4619
0 1
Q23 0.0467 Q23 0.4733
0 1
Q24 0.0002 Q24 0.1697

426
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

0 1
Q29 0.0039 Q29 0.4132

0 1
Q32 0.0000 Q32 0.0582
0 1
Q35 0.0678 Q35 0.4396
0 1
Q37 0.3751 Q37 0.1088
Q30,12 0.0172 Q31 ,12 0.4964

0 1
Q41 0.0076 Q41 0.4619
0 1
Q44 0.0002 Q44 0.1697
Q40,10 0.1059 Q41 ,10 0.3794
Q40,11 0.4967 Q41 ,11 0.0272

0 1
Q53 0.0467 Q53 0.4733
0 1
Q55 0.0678 Q55 0.4396
0 1
Q56 0.4878 Q56 0.0362
Q50,10 0.1059 Q51 ,10 0.3794

0 1
Q61 0.0076 Q61 0.4619
0 1
Q63 0.0467 Q63 0.4733
0 1
Q67 0.3751 Q67 0.1088
0 1
Q68 0.3181 Q68 0.0013
Q60,11 0.4967 Q61,11 0.0272

0 1
Q72 0.0000 Q72 0.0582
0 1
Q76 0.4878 Q76 0.0362
0 1
Q78 0.3181 Q78 0.0013
0 1
Q79 0.0039 Q79 0.4132
Q70,10 0.1059 Q71,10 0.3794
0 1
Q85 0.0678 Q85 0.4396
0 1
Q89 0.0039 Q89 0.4132
Q80,11 0.4967 Q81,11 0.0272

427
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Q80,12 0.0172 Q81,12 0.4964

Con estos valores de inicialización se calculan los coeficientes R ij0 y R 1ij , que
resultan ser los valores que van a ser iterativamente actualizados, en este caso,
correspondiente a la estimación que el nodo de paridad, comunica al nodo
0
símbolo. Así por ejemplo, el factor R12 es la información que el nodo hijo 1 le
envía al nodo padre 2 , que obtiene de suponer que la ecuación de paridad que
le corresponde, es decir c 2 † c 4 † c6 † c7 † c8 † c12 0 , se cumple con el
bit o símbolo 2 en el estado c 2 0 , de manera que se presentan varias
posibilidades, que resultan de las 16 combinaciones de los bits o símbolos c 4 ,
c 6 , c7 , c 8 y c12 que configuran en total un número par de unos:

0 0 0 0 0
R12 Q14 Q16 Q17 Q18 Q10,12  Q14
0 0
Q16 0
Q17 1
Q18 Q11,12  Q14
0 0
Q16 1
Q17 0
Q18 Q11,12  Q14
0 0
Q16 1
Q17 1
Q18 Q10,12 
0 1 0 0
Q14 Q16 Q17 Q18 Q11,12  Q14
0 1
Q16 0
Q17 1
Q18 Q10,12  Q14
0 1
Q16 1
Q17 0
Q18 Q10,12  Q14
0 1
Q16 1
Q17 1
Q18 Q11,12 
1 0 0 0
Q14 Q16 Q17 Q18 Q11,12  Q14
1 0
Q16 0
Q17 1
Q18 Q10,12  Q14
1 0
Q16 1
Q17 0
Q18 Q10,12  Q14
1 0
Q16 1
Q17 1
Q18 Q11,12 
1 1 0 0
Q14 Q16 Q17 Q18 Q10,12  Q14
1 1
Q16 0
Q17 1
Q18 Q11,12  Q14
1 1
Q16 1
Q17 0
Q18 Q11,12  Q14
1 1
Q16 1
Q17 1
Q18 Q10,12 0.0051

1
De la misma forma, el factor R12 es la información que el nodo hijo 1 le envía
al nodo padre 2 , que obtiene de suponer que la ecuación de paridad que le
corresponde, es decir c 2 † c 4 † c6 † c7 † c8 † c12 0 , se cumple con el bit
o símbolo 2 en el estado c 2 1 , de manera que se presentan varias
posibilidades, que resultan de las 16 combinaciones de los bits o símbolos c 4 ,
c 6 , c7 , c 8 y c12 que configuran en total un número impar de unos:

1 0 0 0 0
R12 Q14 Q16 Q17 Q18 Q11,12  Q14
0 0
Q16 0
Q17 1
Q18 Q10,12  Q14
0 0
Q16 1
Q17 0
Q18 Q10,12  Q14
0 0
Q16 \
Q17 1
Q18 Q11,12 
0 1 0 0
Q14 Q16 Q17 Q18 Q10,12  Q14
0 1
Q16 0
Q17 1
Q18 Q11,12  Q14
0 1
Q16 1
Q17 0
Q18 Q11,12  Q14
0 1
Q16 1
Q17 1
Q18 Q10,12 
1 0 0 0
Q14 Q16 Q17 Q18 Q10,12  Q14
1 0
Q16 0
Q17 1
Q18 Q11,12  Q14
1 0
Q16 1
Q17 0
Q18 Q11,12  Q14
1 0
Q16 1
Q17 1
Q18 Q10,12 
1 1 0 0
Q14 Q16 Q17 Q18 Q11,12  Q14
1 1
Q16 0
Q17 1
Q18 Q10,12  Q14
1 1
Q16 1
Q17 0
Q18 Q10,12  Q14
1 1
Q16 1
Q17 1
Q18 Q11,12 0.0020

428
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

El flujo de información en este caso se puede visualizar en la figura 8.3:

0 1
Figura 8.3 Calculo de los coeficientes R12 y R12

El nodo al que se comunica la estimación no participa en el valor calculado.


Esto hace posible la convergencia del cálculo. Evidentemente, cuanto mayor sea
el número de unos por fila de la matriz de paridad, mas posibilidades se
combinan en el cálculo de los coeficientes R ij0 y R 1ij . En las tablas 8.2 y 8.3,
se presentan los valores calculados de estos coeficientes, en la forma de una
matriz, donde las filas corresponden al índice i , y las columnas al índice j . La
tabla 8.2 representa los coeficientes R ij0 , es decir a las estimaciones para el
valor del bit o símbolo x 0 , y la tabla 8.3 los coeficientes R 1ij , es decir a las
estimaciones para el valor del bit o símbolo x 1 .

1 2 3 4 5 6 7 8 9 10 11 12
1 0.0051 0.0017 0.0002 0.0001 0.0004 0.0006
2 0.0036 0.0009 0.0113 0.0043
3 0.0868 0.0109 0.0024 0.0100
4 0.0325 0.0889 0.0390 0.0088
5 0.0875 0.0925 0.0423 0.1049
6 0.0126 0.0100 0.0348 0.0431 0.0270
7 0.0250 0.0008 0.0016 0.0035 0.0037
8 0.1022 0.1101 0.0179 0.0912

0
Tabla 8.2 Valores de R ij , primera iteración

429
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

1 2 3 4 5 6 7 8 9 10 11 12
1 0.0020 0.0007 0.0006 0.0008 0.0009 0.0002
2 0.0332 0.0324 0.0906 0.0372
3 0.0393 0.0035 0.0128 0.0043
4 0.0107 0.0305 0.0028 0.0299
5 0.0416 0.0398 0.0857 0.0333
6 0.0295 0.0280 0.0060 0.0188 0.0107
7 0.0089 0.0029 0.0046 0.0012 0.0003
8 0.0101 0.0264 0.0908 0.0197

Tabla 8.3 Valores de R 1ij , primera iteración

El factor R40,10 0.0390 se verifica para i 4 y j 10 por ejemplo. Una vez


evaluados los coeficientes R ij0 y R ij1 , es posible establecer una primera
estimación de los bits decodificados, empleando la expresión (8.14).

Así entonces,

­
°0̂ o f1 xR21 xR41 xR61 1.13 x10 ½
0 0 0 0 8
°
d̂1 ® 6 ¾
Ÿ '1'
°̄1̂ o f1 xR21 xR41 xR61 4.85 x10 °
1 1 1 1
¿
­
°0̂ o f2 xR12 xR32 xR72 1.58 x10 ½
0 0 0 0 10
°
d̂ 2 ® 8 ¾ Ÿ '1'
1 1 1 1
°̄1̂ o f2 xR12 xR32 xR72 4.06 x10 °
¿
­ 0 0 0
°0̂ o f3 xR23 xR53 xR63
0
3.59 x10 8 ½
°
d̂ 3 ® 5 ¾
Ÿ '1'
°̄1̂ o f3 xR23 xR53 xR63 1.785 x10 °
1 1 1 1
¿
­ 0 0 0
°0̂ o f4 xR14 xR24 xR44
0
3.31x10 10 ½
°
d̂ 4 ® 7 ¾ Ÿ '1'
°̄1̂ o f4 xR14 xR24 xR44 3.19 x10
1 1 1 1
°
¿
­ 0 0 0
°0̂ o f5 xR35 xR55 xR85
0
7.007 x10 6 ½
°
d̂ 5 ® 7 ¾ Ÿ ' 0'
1 1 1 1
°̄1̂ o f5 xR35 xR55 xR85 6.20 x10 °
¿
­ 0 0 0
°0̂ o f6 xR16 xR56 xR76
0
3.39 x10 9 ½
°
d̂ 6 ® 9 ¾ Ÿ '1'
1 1 1 1
°̄1̂ o f6 xR16 xR56 xR76 5.34 x10 °
¿
­ 0 0 0
°0̂ o f7 xR17 xR37 xR67
0
2.73 x10 9 ½
°
d̂7 ® 9 ¾ Ÿ '1'
1 1 1 1
°̄1̂ o f7 xR17 xR37 xR67 6.37 x10 °
¿

430
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

­
°0̂ o f8 xR18 xR68 xR78 7.96 x10 ½
0 0 0 0 9
°
d̂ 8 ® 10 ¾
Ÿ ' 0'
1 1 1 1
°̄1̂ o f8 xR18 xR68 xR78 1.03 x10 °
¿
­ 0 0 0
°0̂ o f9 xR29 xR79 xR89
0
6.52 x10 9 ½
°
d̂ 9 ® 7 ¾ Ÿ '1'
1 1 1 1
°̄1̂ o f9 xR29 xR79 xR89 4.98 x10 °
¿
­ 0 0 0 0
°0̂ o f10 xR4 ,10 xR5 ,10 xR7 ,10 1.62 x10 6 ½
°
d̂10 ® 8 ¾ Ÿ ' 0'
1 1 1 1
°̄1̂ o f10 xR4 ,10 xR5 ,10 xR7 ,10 1.17 x10 °
¿
­ 0 0 0 0
°0̂ o f11 xR4 ,11 xR6 ,11 xR8 ,11 2.12 x10 6 ½
°
d̂11 ® 7 ¾ Ÿ ' 0'
1 1 1 1
°̄1̂ o f11 xR4 ,11 xR6 ,11 xR8 ,11 7.91x10 °
¿
­ 0 0 0 0
°0̂ o f12 xR1,12 xR3 ,12 xR8 ,12 9.23 x10 9 ½
°
d̂12 ® 9 ¾ Ÿ ' 0'
1 1 1 1
°̄1̂ o f12 xR1,12 xR3 ,12 xR8 ,12 8.87 x10 °
¿

La primera estimación de la palabra decodificada resulta ser


d 1 1 1 1 0 1 1 0 1 0 0 0 que contiene 3 errores respecto
de la transmitida c 1 1 1 1 1 0 0 0 1 0 0 0 . La iteración
continua, dado que el síndrome para el vector decodificado d es distinto de
cero.
Para realizar la siguiente iteración se precisan calcular los coeficientes Qij0 y
Q ij1 . Estos coeficientes se evalúan teniendo en cuenta la expresión (8.13), donde
existen coeficientes que normalizan los valores de estos factores, que cumplen
con la condición Qij0  Q1ij 1 . Así por ejemplo, el factor Q120
es la información
que el nodo hijo 1 recibe del nodo padre 2 , que obtiene teniendo en cuenta las
conexiones del grafo bipartito que arriban al nodo padre 2 , a través del
producto de los factores de la forma R k02 , exceptuando la proveniente del nodo
1
hijo 1 . De la misma forma, el factor Q12 es la información que el nodo hijo 1
recibe del nodo padre 2 , que obtiene teniendo en cuenta las conexiones del
grafo bipartito que arriban al nodo padre 2 , a través del producto de los
factores de la forma R 1k 2 , exceptuando la proveniente del nodo hijo 1 . En este
cálculo k es el número del nodo hijo, es decir, el índice de los nodos de paridad
que están conectados al nodo padre 2 . Los coeficientes son convenientemente
normalizados y afectados por una constante.

431
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

0 1
El cálculo de los coeficientes Q12 y Q12 para el caso particular del ejemplo
planteado sería entonces hecho de la siguiente forma:

0
Q12 α12 f 20 R32
0 0
R72
1
Q12 α12 f21 R32
1 1
R72

donde
1
α12
f 20 R 32
0 0
R72  f 21 R 32
1 1
R72

La forma en que se realiza el cálculo, y los factores que intervienen en el mismo


0 1
para el caso particular de los coeficientes Q12 y Q12 se pueden ver en la figura
8.4.

0 1
Figura 8.4 Determinación de los coeficientes Q12 y Q12

Las tablas 8.4 y 8.5 presentan los valores calculados para el ejemplo de los
coeficientes Qij0 y Q1ij respectivamente.

432
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

1 2 3 4 5 6 7 8 9 10 11 12
1 0.0015 0.0004 0.6601 0.7898 0.9950 0.2731
2 0.0209 0.0691 0.0083 0.1014
3 0.0018 0.7843 0.6946 0.3068
4 0.0008 0.0004 0.9091 0.9008
5 0.0010 0.8294 0.5620 0.9777
6 0.0054 0.0056 0.0688 0.9710 0.5147
7 0.0014 0.6847 0.9954 0.0046 0.9239
8 0.5273 0.0031 0.9316 0.1838

Tabla 8.4 Valores de Qij0 para la segunda iteración

1 2 3 4 5 6 7 8 9 10 11 12
1 0.9985 0.9996 0.3399 0.2102 0.0050 0.7269
2 0.9791 0.9309 0.9917 0.8986
3 0.9982 0.2157 0.3054 0.6932
4 0.9992 0.9996 0.0909 0.0992
5 0.9990 0.1706 0.4380 0.0223
6 0.9946 0.9944 0.9312 0.0290 0.4853
7 0.9986 0.3153 0.0046 0.9954 0.0761
8 0.4727 0.9969 0.0684 0.8162

Tabla 8.5 Valores de Q 1ij para la segunda iteración

Con los valores actualizados de los coeficientes Qij0 y Q1ij , se ingresa en la


siguiente iteración, donde se pueden calcular ahora los nuevos valores de los
coeficientes R ij0 y R 1ij . Estos valores actualizados permitirán así efectuar otra
estimación de los bits, definiendo un nuevo valor del vector decodificado d ,
sobre el cual se efectúa el cálculo de síndrome para saber si pertenece o no al
código, y así declarar una decodificación válida, en el caso de que el síndrome
sea igual a cero, o bien continuar con la siguiente iteración, si esto último no
sucede. El mecanismo de iteración se detendrá entonces luego de un número
predefinido de iteraciones, o bien antes, si encuentra alguna solución con
síndrome cero.
En el caso del ejemplo analizado, luego de 3 iteraciones, el proceso encuentra la
verdadera palabra y permite la corrección de los errores, en este caso, de dos
errores presentes en la palabra recibida, si fuera utilizada la decisión rígida
sobre la misma. En este ejemplo se da la particularidad de que los errores están
en la parte significativa o de mensaje, es decir en dos de los cuatro bits de
mensaje que se truncan al decodificar. El proceso iterativo realiza la corrección
de esos dos errores. Las siguientes tablas presentan a modo ilustrativo los
valores de los coeficientes involucrados en el cálculo en las siguientes
iteraciones, hasta arribar al resultado final. En estas tablas como en las

433
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

anteriores, es importante notar que los valores están redondeados a 4 cifras


decimales, por lo que si se realiza el cálculo iterativo con los valores
redondeados, se observarán leves diferencias a lo largo de la iteración. Los
cálculos han sido hechos con mayor precisión que la mostrada, utilizando el
programa MATLAB“ versión 5.3.

1 2 3 4 5 6 7 8 9 10 11 12
1 0.5416 0.5415 0.3704 0.4284 0.4581 0.5915
2 0.1622 0.1244 0.1709 0.0940
3 0.4572 0.5750 0.6095 0.3897
4 0.1723 0.1726 0.8999 0.9081
5 0.5390 0.4409 0.1859 0.4593
6 0.5118 0.5118 0.5135 0.4876 0.1027
7 0.3463 0.9150 0.6547 0.3453 0.6808
8 0.7713 0.4851 0.5172 0.4766

Tabla 8.6 Valores de R ij0 , segunda iteración

1 2 3 4 5 6 7 8 9 10 11 12
1 0.4584 0.4585 0.6296 0.5716 0.5419 0.4085
2 0.8378 0.8756 0.8291 0.9060
3 0.5428 0.4250 0.3905 0.6103
4 0.8277 0.8274 0.1001 0.0919
5 0.4610 0.5591 0.8141 0.5407
6 0.4882 0.4882 0.4865 0.5124 0.8973
7 0.6537 0.0850 0.3453 0.6547 0.3192
8 0.2287 0.5149 0.4828 0.5234

1
Tabla 8.7 Valores de R ij , segunda iteración

Los valores actualizados de los coeficientes R ij0 y R 1ij permiten realizar una
estimación de los bits decodificados. Esta estimación es la segunda que se
realiza en este cálculo, y resulta ser como se muestra en la tabla 8.8:

434
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

r +1.3129 +2.6584 +0.7413 +2.1745 +0.5981 -0.8323 -0.3962 -1.7586 +1.4905 +0.4084 -0.9290 +1.0765

t +1 +1 +1 +1 +1 -1 -1 -1 +1 -1 -1 -1
0.0001 0.0000 0.0016 0.0000 0.0133 0.0307 0.0503 0.0465 0.0001 0.0298 0.0240 0.0019
d 0j

0.1564 0.0095 0.0933 0.0534 0.0239 0.0016 0.0118 0.0001 0.1262 0.0066 0.0011 0.0648
d 1j

Tabla 8.8 Estimación hecha en la segunda iteración

De acuerdo a estas estimaciones, el vector decodificado es entonces


d 1 1 1 1 1 0 0 0 1 0 0 1 , es decir, respecto a la palabra
transmitida presenta solo un error en el último bit. Esta palabra genera un
síndrome distinto de cero, por lo que el cálculo procede a la siguiente iteración.
Para eso, se actualizan los coeficientes Qij0 y Q1ij , que se presentan en las tablas
8.9 y 8.10.

1 2 3 4 5 6 7 8 9 10 11 12
1 0.0001 0.0000 0.9707 0.8503 0.9977 0.0197
2 0.0036 0.1078 0.0003 0.0047
3 0.0002 0.2909 0.7318 0.0436
4 0.0033 0.0003 0.3358 0.6910
5 0.0145 0.4130 0.9884 0.8426
6 0.0007 0.0161 0.8013 0.9974 0.9948
7 0.0002 0.6442 0.9949 0.0009 0.6807
8 0.1413 0.0005 0.9538 0.0310

0
Tabla 8.9 Valores de Qij para la tercera iteración

1 2 3 4 5 6 7 8 9 10 11 12
1 0.9999 1.0000 0.0293 0.1497 0.0023 0.9803
2 0.9964 0.8922 0.9997 0.9953
3 0.9998 0.7091 0.2682 0.9564
4 0.9967 0.9997 0.6642 0.3090
5 0.9855 0.5870 0.0116 0.1574
6 0.9993 0.9839 0.1987 0.0026 0.0052
7 0.9998 0.3558 0.0051 0.9991 0.3193
8 0.8587 0.9995 0.0462 0.9690

1
Tabla 8.10 Valores de Q ij para la tercera iteración

Una vez mas, con estos coeficientes actualizados se recalculan los nuevos
valores de los coeficientes R ij0 y R 1ij para efectuar la siguiente estimación. Los
valores de estos coeficientes actualizados se ven en las tablas 8.11 y 8.12:

435
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

1 2 3 4 5 6 7 8 9 10 11 12
1 0.8153 0.8153 0.1651 0.0501 0.1833 0.8282
2 0.1117 0.0085 0.1143 0.1109
3 0.5885 0.7115 0.3092 0.5969
4 0.5627 0.5623 0.6896 0.3370
5 0.4418 0.1750 0.5579 0.5825
6 0.2129 0.2037 0.9758 0.7882 0.7897
7 0.4485 0.6784 0.5520 0.4485 0.6424
8 0.9252 0.8053 0.1639 0.8252

Tabla 8.11 Valores de R ij0 , tercera iteración

1 2 3 4 5 6 7 8 9 10 11 12
1 0.1847 0.1847 0.8349 0.9499 0.8167 0.1718
2 0.8883 0.9915 0.8857 0.8891
3 0.4115 0.2885 0.6908 0.4031
4 0.4373 0.4377 0.3104 0.6630
5 0.5582 0.8250 0.4421 0.4175
6 0.7871 0.7963 0.0242 0.2118 0.2103
7 0.5515 0.3216 0.4480 0.5515 0.3576
8 0.0748 0.1947 0.8361 0.1748

Tabla 8.12 Valores de R 1ij , tercera iteración

Estos valores se utilizan para la estimación nueva del vector decodificado. Los
valores de las estimaciones se observan en la tabla 8.13:

r +1.3129 +2.6584 +0.7413 +2.1745 +0.5981 -0.8323 -0.3962 -1.7586 +1.4905 +0.4084 -0.9290 +1.0765

t +1 +1 +1 +1 +1 -1 -1 -1 +1 -1 -1 -1
0 0.0001 0.0000 0.0000 0.0000 0.0077 0.0305 0.0057 0.0254 0.0002 0.0273 0.0217 0.0070
d j

0.1412 0.0024 0.2086 0.0122 0.0078 0.0043 0.0017 0.0001 0.0394 0.0176 0.0032 0.0060
d 1j

Tabla 8.13 Estimación hecha en la tercera iteración

Con estas estimaciones, el vector decodificado resulta ser el transmitido


d c 1 1 1 1 1 0 0 0 1 0 0 0 , y el síndrome calculado es
cero, con lo que la palabra de mensaje decodificada es entonces:

m 1 0 0 0

436
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

La decodificación iterativa ha podido en este ejemplo corregir dos errores en


una palabra de 12 bits. La distancia de Hamming mínima del código estudiado
es d min 4 , calculada como el peso mínimo en la tabla del código, o bien
deducida del hecho que existen cuatro columnas (Columnas 3, 4, 8 y 10 por
ejemplo) en la matriz H que sumadas resultan ser el vector nulo. De esta forma
se puede decir que el código puede corregir todo patrón de un error, existiendo
un residuo de capacidad de corrección para otros patrones de error. Sin embargo
la tasa del código es Rc 1 / 3 , y de acuerdo a una estimación bastante simple,
el producto ( k / n )( t  1 ) da una idea de la utilidad del código, es decir, si
frente a la transmisión no codificada, la aplicación del control de errores con ese
código implica o no una mejora. Para que eso suceda, el producto debe cumplir
con la condición ( k / n )( t  1 ) ! 1 . En este caso, ese producto resulta ser igual
a (1 / 3 )x2 0.667 , indicando que este código en particular no produce
mejoras frente a la transmisión no codificada. Este ejemplo ha sido presentado
por su simplicidad, en cuanto a que existe cierta dificultad en generar una matriz
H de dimensión reducida que pueda tener tres unos por columna, y un número
no demasiado grande de unos por fila, que en general sería deseable que fuera el
número de unos por columna dividido por la tasa del código. Otra condición
importante que debe cumplir esta matriz es que en esta red de Bayes formada
por los nodos de símbolo y los de paridad, no se produzcan ciclos. Los ciclos de
longitud 4 por ejemplo son evitados si la matriz H no contiene patrones de
distribución de unos de la forma “rectangular” remarcada en negro en el
siguiente ejemplo [13]:

ª1 1 0 1 0 1 1 1º
«1 0 1 1 1 1 0 1 »»
«
H «0 1 1 0 0 0 1 0»
« »
«1 1 0 0 1 1 0 1»
«¬0 0 1 1 1 0 1 0 »¼

Prestando atención al mismo fenómeno en la matriz H del ejemplo anterior, se


confirma en su grafo bipartito que se observa en la figura 8.2, que existen
muchos ciclos de longitud 4.
Para dar un segundo ejemplo de aplicación, se presentan los resultados de una
simulación realizada con un código de bloques lineal Cb ( 60 ,30 ) de tasa
Rc 1 / 2 , que es un código LDPC irregular. Los resultados muestran el efecto
del incremento en el número de iteraciones del proceso de decodificación
iterativa.

437
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Figura 8.5 Probabilidad de error para un código de bloques lineal Cb ( 60 ,30 ) de tasa
Rc 1 / 2 (código LDPC irregular) en función de las iteraciones

El funcionamiento de estos códigos mejora en la medida que la dimensión de


los mismos se incrementa, de manera que para valores elevados de n , longitud
de la palabra codificada, la respuesta en función del incremento de las
iteraciones tiende al límite de Shannon.

8.6 Simplificaciones del algoritmo de suma producto


La esencia del algoritmo de decodificación es encontrar el vector d , el cual es
una estimación del vector x , que cumpla con la condición:

H $d 0

438
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

Como se describió en la sección 8.3.3, en el algoritmo de suma-producto cada


nodo símbolo d j envía al nodo hijo de paridad hi la información probabilística
Qijx basada en la información proporcionada por los otros nodos hijo
relacionados con el nodo símbolo, de que el nodo de paridad se encuentre en el
estado x . Por otro lado cada nodo de paridad hi envía la estimación R ijx a cada
nodo padre d j informando sobre la probabilidad de que la paridad del nodo i
se satisfaga, suponiendo que el nodo padre se encuentra en el estado x ,
tomando la información proporcionada por todos los otros nodos padre.
Una manera equivalente de determinar la información del canal es haciendo uso
de la expresión:

1
f j1 2 Ay j
(8.17)

1e σ2

f j0 1  f j1 (8.18)

donde y j es la salida del canal en el tiempo j , y donde se transmiten datos


binarios en el formato r A . En general se ha utilizado en este texto el formato
polar r 1 .
Como se observó en el ejemplo de la sección 8.5, los coeficientes R ij0 y R 1ij se
determinan en función de los coeficientes Qij0 y Q1ij de forma de tener en
cuenta el cumplimiento de la ecuación de paridad correspondiente. D. J. C.
MacKay y R. M. Neal introducen en su trabajo [4] un método que evita tener en
cuenta todas las combinaciones que surgen del armado de la expresión de
cálculo correspondiente, de los casos posibles de la ecuación de paridad
aplicada. El proceso de inicialización es igual al que se presentó en el ejemplo
de la sección 8.5, es decir:

Qij0 f j0 y Q1ij f j1 (8.19)

El procedimiento continúa luego con el denominado paso horizontal, que


consiste en calcular la cantidad δQij como:

δQij Qij0  Q1ij (8.20)

439
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Esto permite determinar una cantidad equivalente para cada par de valores i y
j que se calcula como:

δ R ij – δQij c (8.21)
j cN i \ j

se recuerda en esta expresión que N i representa el conjunto de subíndices de


todos los nodos símbolo d j que participan del nodo de paridad f i , mientras
que N i \ j indica la exclusión del nodo j de ese conjunto.
Los coeficientes R ij0 y R 1ij se calculan en función de la expresión anterior
como:

Rij0 1
2 1  δ Rij (8.22)

R1ij 1
2 1  δRrij (8.23)

En el denominado paso vertical, se produce la actualización de los coeficientes


Qij0 y Q1ij calculados para cada i , j , y para todos los posibles valores de x , en
el caso binario x 0 o x 1:

Qijx α ij f jx – Rixcj (8.24)


i cM j \ i

donde se recuerda que M( j ) representa el conjunto de subíndices de todos los


nodos hijo del nodo símbolo d j , mientras que la notación M( j ) \ i indica la
exclusión del nodo i de ese conjunto. El factor f jx es la probabilidad a priori de
que d j este en el estado x . La constante α ij es elegida de forma tal que se
cumpla que Qij0  Q1ij 1.

Para realizar la estimación correspondiente a la iteración en curso, se realiza una


estimación a posteriori de las probabilidades Q 0j y Q1j , con la expresión:

440
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

Q jx α j f jx – Rijx (8.25)
i M j

donde α j se la elige de forma tal que se cumpla con Q 0j  Q1j 1.


Por último se puede realizar una estimación para cada para cada valor de
símbolo d j usando:


dj
max Q jx (8.26)
es decir:
 
dj 0 si Q 0j ! Q1j sino d j 1 (8.27)

Ejemplo 8.1. Aplique el algoritmo simplificado de MacKay-Neal al ejemplo de


la sección 8.5 para observar la equivalencia entre ambos algoritmos

El procedimiento simplificado de cálculo evita tener que determinar las


situaciones para las cuales la ecuación de paridad se cumple, y en las que el
correspondiente término participa de la expresión del cálculo del coeficiente en
cuestión.
El método simplificado posee la misma inicialización que la vista en el ejemplo
de la sección 8.5. Una vez realizada la inicialización, adjudicando los valores de
la tabla 8.1 por ejemplo de forma que Qij0 f j0 y Q1ij f j1 , se pueden
confeccionar dos matrices conteniendo esta información:

ª 0 0
Q12 0 0
Q14 0 0
Q16 0
Q17 0
Q18 0 0 0 Q10,12 º
« 0 0 0 0 »
«Q21 0 Q23 Q24 0 0 0 0 Q29 0 0 0 »
« 0 0
Q32 0 0 0
Q35 0 0
Q37 0 0 0 0 Q30,12 »
« 0 0
»
«Q41 0 0 Q44 0 0 0 0 0 Q40,10 Q40,11 0 »
H Q0 « 0 0 0
Q53 0 0
Q55 0
Q56 0 0 0 Q50,10 0 0 »
« 0 0 0 0
»
«Q61 0 Q63 0 0 0 Q67 Q68 0 0 Q60,11 0 »
« 0 0 0 0 »
« 0 Q72 0 0 0 Q76 0 Q78 Q79 Q70,10 0 0 »
«¬ 0 0 0 0 0
Q85 0 0 0 0
Q89 0 Q80,11 Q8 ,12 »¼
0

441
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

ª 0 1
Q12 0 1
Q14 0 1
Q16 1
Q17 1
Q18 0 0 0 Q11,12 º
« 1 1 1 1 »
«Q21 0 Q23 Q24 0 0 0 0 Q29 0 0 0 »
« 0 1
Q32 0 0 1
Q35 0 1
Q37 0 0 0 0 Q3 ,12 »
1
« 1 1
»
«Q41 0 0 Q44 0 0 0 0 0 Q41 ,10 Q41 ,11 0 »
H Q1 « 0 0 1
Q53 0 1
Q55 1
Q56 0 0 0 Q51 ,10 0 0 »
« 1 1 1 1
»
«Q61 0 Q63 0 0 0 Q67 Q68 0 0 Q61 ,11 0 »
« 1 1 1 1 »
« 0 Q72 0 0 0 Q76 0 Q78 Q79 Q71,10 0 0 »
«¬ 0 0 0 0 1
Q85 0 0 0 1
Q89 0 Q81 ,11 Q81 ,12 »¼

la resta de estas dos matrices da forma a la matriz de diferencias:

ª 0 δQ12 0 δQ14 0 δQ16 δQ17 δQ18 0 0 0 δQ1,12 º


« »
«δQ21 0 δQ23 δQ24 0 0 0 0 δQ29 0 0 0 »
« 0 δQ32 0 0 δQ35 0 δQ37 0 0 0 0 δQ3 ,12 »
« »
«δQ41 0 0 δQ44 0 0 0 0 0 δQ4 ,10 δQ4 ,11 0 »
H δQ « 0 0 δQ53 0 δQ55 δQ56 0 0 0 δQ5 ,10 0 0 »
« »
«δQ61 0 δQ63 0 0 0 δQ67 δQ68 0 0 δQ6 ,11 0 »
« »
« 0 δQ72 0 0 0 δQ76 0 δQ78 δQ79 δQ7 ,10 0 0 »
« 0 0 0 0 δQ85 0 0 0 1
δQ89 0 δQ8 ,11 δQ8 ,12 »¼
¬

Para dar un ejemplo de la equivalencia entre los algoritmos se realiza el cálculo


a la altura de la segunda ecuación de paridad utilizando los coeficientes de la
segunda fila de la matriz H δQ . Así por ejemplo, el coeficiente δR21 se calcula
de la siguiente forma:

GR21 GQ23GQ24GQ29 Q 0
23  Q23
1

0
Q24  Q24
1 0
Q29  Q29
1

Q 0
23
0
Q24  Q23
0 1
Q24  Q23
1 0
Q24  Q23
1
Q Q1
24
0
29 Q 1
29
0
Q23 0
Q24 0
Q29  Q23
0 1
Q24 0
Q29  Q23
1 0
Q24 0
Q29  Q23
1 1
Q24 0
Q29  Q23
0 0
Q24 1
Q29  Q23
0 1
Q24 1
Q29
 Q23
1 0
Q24 1
Q29  Q23
1 1
Q24 1
Q29

teniendo en cuenta que:

0 1 0 1
Q24 1  Q24 y Q29 1  Q29

entonces:

442
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

0
R21 1 / 2 1  δR21 1 / 2 1  Q230 Q240 Q290  Q230 Q241 Q290  Q231 Q240 Q290  Q231 Q241 Q290  Q230 Q240 Q291
0 1 1
 Q23 1
Q24Q29  Q23 0 1
Q24 1 1 1
Q29  Q23Q24Q29
1 / 2 > 0
1  Q23 0
Q24 0
Q29 0
 Q23 1  Q Q  Q 1  Q Q
0
24
0
29
1
23
1
24
0
29
1
 Q23 1
Q24 0
Q29 0
 Q23 1
1  Q24 1
Q29
0
 Q23 1
Q24 1
Q29 1
 Q23 0
Q24 1
Q29  Q 1  Q Q @
1
23
0
24
1
29

1 / 2 >1  Q230 Q240 Q290  Q230 Q290  Q230 Q240 Q290  Q23
1 0
Q29 1
 Q23 1
Q24 0
Q29 1
 Q23 1
Q24 0
Q29 0
 Q23 1
Q29
0
 Q23 1
Q24 1
Q29 0
 Q23 1
Q24 1
Q29 1
 Q23 0
Q24 1
Q29 1
 Q23 1
Q29 1
 Q23 0
Q24 1
Q29 @

1 / 2 >2Q230 Q240 Q290 1


 2Q23 1
Q24 0
Q29 0
 2Q23 1
Q24 1
Q29 1
 2Q23 0
Q24 1
Q29
0
 1  Q23 0
Q29 1
 Q23 0
Q29 0
 Q23 1
Q29 1
 Q23 1
Q29 @
1 / 2 >2Q230 Q240 Q290  2Q23
1 1
Q24 0
Q29 0
 2Q23 1
Q24 1
Q29 1
 2Q23 0
Q24 1
Q29
0
 1  Q23 0
Q29 1
 Q29 1
 Q23 0
Q29 1
 Q29 @ 0
Q23 0
Q24 0
Q29 1
 Q23 1
Q24 0
Q29 0
 Q23 1
Q24 1
Q29 1
 Q23 0
Q24 1
Q29

1
de la misma forma se puede verificar el cálculo del coeficiente R 21 que resulta
ser:

1
R21 1 / 2 1  δR21 0
Q23 1
Q24 0
Q29 1
 Q23 0
Q24 0
Q29 0
 Q23 0
Q24 1
Q29 1
 Q23 1
Q24 1
Q29

Con lo cual se verifica por medio de un ejemplo la equivalencia de los


algoritmos tradicional y simplificado, o de MacKay-Neal.

8.7 Algoritmo de decodificación logarítmico para un


código LDPC
La simplificación del algoritmo de decodificación recurre al plano del cálculo
logarítmico, para convertir productos o cocientes en sumas o restas. Sin
embargo se debe resolver el problema del logaritmo calculado sobre la suma de
dos cantidades. El algoritmo de decodificación logarítmico se aplica sobre el
algoritmo simplificado presentado por MacKay y Neal, y es esencialmente una
reducción logarítmica del algoritmo de suma-producto. Se verá que la
complejidad del algoritmo se reduce considerablemente [12].
Una de las expresiones a utilizar se basa en el supuesto que si un número z es
menor que uno se puede escribir de la forma:

443
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

ln z
 lz
z e o lz (8.28)

También serán útiles las siguientes expresiones, que permitirán junto a la


anterior, resolver el logaritmo de una suma o una resta:


ln e m  e n
max( m, n )  ln 1  e |mn| (8.29)


ln e m  e n
max( m, n )  ln 1  e |mn| ; m ! n (8.30)

El algoritmo logarítmico recorre los mismos pasos que el algoritmo de suma-


producto simplificado presentado en la sección 8.6.

8.7.1 Inicialización

Los valores de Qijx se ajustan en un principio a la probabilidad a priori de los


símbolos f jx , que es la probabilidad de que el j -ésimo símbolo sea x . En este
caso, las variables Qij0 y Q1ij son inicializadas con los valores f j0 y f j1
respectivamente.
Como f jx es un número menor que uno, es posible escribirlo como:

f jx e
 Lf jx
o Lf jx
ln f jx (8.31)

y
Qijx e
 LQijx
o LQijx
ln Qijx (8.32)

8.7.2 Paso horizontal

La ecuación (8.20) puede escribirse como:

 LδQij  LQij0  LQ1ij


e e e (8.33)

en realidad esta cantidad puede ser de signo positivo o negativo, entonces,


reorganizando este último término se tiene que:

444
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

 LQij0  LQ1ij
δQij  1 sij e
 LδQij
 1 sij e e (8.34)

donde:

s ij 0 si LQij0 d LQ1ij

o
sij 1 si LQij0 ! LQ1ij (8.35)

la expresión (8.30) utilizada para este caso adoptaría la forma:


ln e |m|  e |n| min(| m |,| n |) | ln 1  e ||m||n|| |
luego LδQij se puede aproximar como:

LδQij §
min LQij0 , LQ1ij  ln¨¨1  e
 LQij0  LQ1ij ·
¸
¸ (8.36)
© ¹

esto puede ser escrito de la siguiente forma:

LδQij
min LQij0 , LQ1ij  f  LQij0  LQ1ij (8.37)

donde f  es una tabla de búsqueda con entradas LQij0 y LQ1ij


la expresión (8.21) puede escribirse de la forma:

–  1  1 ¦ sij c –
 LδRij s ij c
 Lδ Qij c  Lδ Qij c
δ Rij e e e (8.38)
j cN i \ j j cN i \ j

entonces es posible obtener:

Lδ Rij ¦ LδQij c (8.39)


j cN i \ j

sδ Rij ¦ s ij c (8.40)
j cN i \ j

445
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

es decir:

δ R ij  1 sδRij e
 LδRij
(8.41)

con los valores de δ R ij y haciendo uso de las ecuaciones (8.22) y (8.23) se


pueden obtener los valores de Rij0 y Rij1 , que en forma logarítmica son iguales
a:


ln Rij0
§
ln¨1   1 ij e
 LR ij0
sδR  Lδ Rij ·
¸  ln 2 (8.42)
© ¹
si sδ R ij es par, se tiene:

LR ij0
§
ln 2  ln¨1  e
©
 Lδ Rij ·
¸
¹

ln 2  f  Lδ R ij (8.43)

si sδRrij es impar, se tiene:

LR ij0
§
ln 2  ln¨1  e
©
 Lδ Rij ·
¸
¹

ln 2  f  Lδ R ij (8.44)

donde f  LδRrij
y f  Lδ Rij son valores obtenidos en tablas de búsqueda.
De forma similar, si sδ R ij es par, se tiene:

LR 1ij
§
ln 2  ln¨1  e
©
 Lδ Rij ·
¸
¹

ln 2  f  Lδ R ij (8.45)

y si sδ R ij es impar:

LR 1ij
§
ln 2  ln¨1  e
©
 LδRij ·
¸
¹

ln 2  f  Lδ Rij (8.46)

8.7.3 Paso vertical

En el paso vertical, y para resolver la ecuación (8.24) se define para x 0,1 la


constante:

c ijx f jx – Rixcj (8.47)


i cM j \ i

446
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

cuya expresión logarítmica es:


ln c ijx
§  Lc x
ln¨¨ e ij
·
¸¸
§  Lf x
ln¨¨ e j
·
¸¸  ¦ ln¨¨ e i cj
§  LR x ·
¸¸ (8.48)
© ¹ © ¹ i cM j \ i © ¹

o bien:

| c ijx | | Lf jx | 
'
¦ | LR ix' j | (8.49)
i M ( j )\ i

entonces:

α ij
1 / c ij0  c1ij (8.50)

por lo tanto:
 Lcij0
 LQij0 e
Qij0 e (8.51)
 Lcij0  Lc1ij
e e

de esta ecuación es posible obtener LQij0 como:

LQij0
Lc ij0  min Lc ij0 , Lc 1ij  f  | Lc ij0 |  | Lc 1ij | (8.52)

De forma similar:

LQ1ij
Lc 1ij  min Lc ij0 , Lc 1ij  f  | Lc ij0 |  | Lc 1ij | (8.53)

En cada iteración el decodificador realiza una estimación de los bits de entrada


o información, en base a los cálculos estimados en esa iteración, utilizando la
expresión (8.27). De la misma forma que en paso vertical, para facilitar el
proceso se introducen dos constantes auxiliares, observando que:

Q jx α j f jx – Rijx α j f jx Rijx – Rixcj


i M j i cM j \ i

Se define la constante evaluada para x 0,1

447
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

|Lc xj |
c xj e f jx – Rijx (8.54)
i M j

de forma que:

| Lc xj | | Lc ijx |  | LRijx | (8.55)

en forma no logarítmica se obtendría el valor de:

 Lc 0j
 LQ0j e
Q 0j e
 Lc 0j  Lc1j
e e
(8.56)

que es igual a:

LQ 0j
Lc 0j  min Lc 0j , Lc 1j  f  Lc 0j  Lc 1j (8.57)

de idéntica manera se tiene:

LQ1j
Lc 1j  min Lc 0j , Lc 1j  f  Lc 0j  Lc 1j (8.58)

por último se puede realizar una estimación para cada valor de símbolo d j
determinando que:
 
dj 0 si Q 0j ! Q1j sino d j 1 (8.59)

y como:

 LQ0j  LQ1j
Q 0j e y Q1j e

en forma logarítmica el procedimiento es:


 
dj 0 si LQ 0j  LQ1j , sino d j 1 (8.60)

448
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

8.7.4 Resumen del procedimiento de decodificación.

 Lf jx
Inicialización: El valor de probabilidad a priori f jx e es la probabilidad de
que el j -ésimo símbolo adopte el valor x . En la inicialización los valores LQijx

se ajustan a ser iguales a los valores de probabilidad a priori Lf jx .

Paso horizontal: Se calculan los valores de LR ij0 y LR 1ij para cada i , j , con
(8.39) a (8.46).
Paso vertical: Para cada i , j se determinan las cantidades LQij0 y LQ1ij . que
adoptan el nuevo valor actualizado con (8.49), (8.52) y (8.53).
Estimación del símbolo decodificado: En el final de la iteración, se establece una
estimación para el valor del símbolo o bit de información d̂ j . Para esto se
utilizan las cantidades LQ 0j y LQ1j calculadas con (8.55), (8.57) y (8.58), y la

determinación final realizada con (8.60). Si H $ d 0 entonces la decodificación
se detiene, de lo contrajo continua con la próxima iteración.

8.7.5 Construcción de las tablas de búsqueda

La tasa de error BER de un código LDPC depende del algoritmo de


decodificación utilizado. En este caso, el uso de un algoritmo de tipo
logarítmico genera la necesidad de construir las tablas que se denominaron
f z1 , z2 y f z1 , z2 . El máximo número de bits usado en estas tablas, que
son de tamaño discreto, es c , de forma que el máximo número de entradas en
estas tablas es Nt 2 c . El efecto de la cuantificación de estas tablas se observa
en las figuras 8.6 y 8.7 donde se realiza la simulación de la tasa de error BER
para dos códigos LDPC. Uno es de mediano tamaño, con una matriz de paridad
H1 de 30 filas y 60 columnas, mientras que el segundo caso corresponde a una
matriz H 2 de 504 filas y 1008 columnas, obtenida por gentileza de D. C. J.
MacKay de su sitio de Internet. Las tablas de búsqueda se confeccionaron con
una representación numérica que usa c 16 teniendo entonces un máximo de
entradas de Nt 2 c 65536 . Las simulaciones muestran que se pueden
utilizar tablas de 256 entradas sin que se registren pérdidas en la tasa de error
considerables.

449
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Figura 8.6 Decodificador logarítmico para un código LDPC Cb ( 60 ,30 )

Figura 8.7 Decodificador logarítmico para un código LDPC Cb (1008,504 )

450
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

Un análisis de complejidad determina que si n es el número de columnas que


tiene la matriz H , y s es el número promedio de unos por columna de esta
matriz, el algoritmo suma-producto requiere de 6 ns productos y 5 ns sumas.
En el caso del algoritmo logarítmico se requieren 14 ns sumas y 3 ns restas.
Puede verse que el número de sumas es mayor en el caso logarítmico pero debe
tenerse en cuenta que los productos son eliminados, y en si esconden un gran
número de sumas en su calculo. En definitiva la complejidad del algoritmo de
decodificación logarítmico es considerablemente menor que la del tradicional
algoritmo de suma-producto.

8.8 Curva de Transferencia de Información Extrínseca


para códigos LDPC
8.8.1 Introducción

Un mecanismo de decodificación adecuado para un código LDPC es, como se


ha visto, el algoritmo de suma-producto, que es esencialmente una técnica de
decodificación iterativa, y puede ser efectuada como se describió en secciones
anteriores de diferentes maneras, es decir, en su versión original, su versión
modificada por MacKay-Neal, y en la versión logarítmica que se presentó en la
sección 8.7. El algoritmo de decodificación iterativo opera con la actualización
convergente de estimaciones que se comunican entre los llamados nodos de
símbolo y los nodos de control de paridad. En lo que sigue se adopta como
convención:

' 0' o 1
'1' o 1

por que simplifica las expresiones matemáticas a utilizar.


Se tendrá en cuenta un código LDPC C b ( n, k ) , de tasa Rc k / n donde
existirán entonces n nodos de símbolo y n  k nodos de control de paridad,
relacionados por las conexiones descriptas en el correspondiente grafico
bipartito. El bit d j participa de d v( j ) ecuaciones de paridad, lo cual significa
que en el grafico bipartito, este nodo de símbolo esta conectado a s ( j ) d v( j )
nodos de control de paridad, donde s ( j ) es el número de unos por columna de
la matriz H .
De la misma forma el nodo de control de paridad hi relaciona d c( i ) nodos de
símbolo o bits a través de la ecuación de paridad correspondiente, de manera

451
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

que en el gráfico bipartito este nodo de paridad estará conectado a v ( i ) d c( i )


nodos de símbolo. En un código LDPC regular las cantidades s ( j ) d v( j ) y
v (i ) d c( i ) son constantes a lo largo de las filas y columnas respectivamente.

Ejemplo 8.2 Forme una matriz de paridad H de un código regular LDPC


Cb (14 ,7 ) de tasa Rc 1 / 2 para el cual dv 3 y d c 6 .
Una matriz para este caso tendría la forma:

ª1 1 0 1 0 0 0 1 0 1 0 0 0 1º
«0 1 1 0 1 0 0 0 1 0 0 0 1 1 »»
«
«0 0 1 1 0 1 0 1 0 0 0 1 1 0»
« »
H «0 0 0 1 1 0 1 0 0 0 1 1 0 1»
«1 0 0 0 1 1 0 0 0 1 1 0 1 0»
« »
«0 1 0 0 0 1 1 0 1 1 0 1 0 0»
«1 0 1 0 0 0 1 1 1 0 1 0 0 0 »¼
¬

El ejemplo 8.2 es ilustrativo, y puede verse que existen patrones de ‘1’s que
determinan la presencia de ciclos, uno de los cuales, de longitud 4, se remarca
en la figura 8.8. El grafico bipartito para este caso sería como el que se ve en la
figura 8.8.

Figura 8.8 Grafico bipartito para un código LDPC regular

452
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

Como se ve en la figura 8.8, de cada nodo símbolo emergen tres conexiones, y a


cada nodo de paridad arriban seis conexiones. Este mismo gráfico puede
permitir la interpretación del proceso de conexiones entre nodos como el de la
acción de un permutador de conexiones

Figura 8.9 Permutación de conexiones para un código LDPC regular


Esta representación gráfica permite interpretar también a un código LDPC como
si estuviera construido usando dos codificadores, para cada uno de los cuales
existe un decodificador, uno vinculado a los nodos símbolo, y el otro vinculado
a los nodos de paridad, que se encuentran relacionados por el accionar de un
permutador de conexiones como el que se ve en la figura 8.9. Este permutador
actúa en el proceso iterativo de la decodificación, que consiste básicamente en
el intercambio de estimaciones o informaciones no rígidas entre el
decodificador de nodos de símbolo (DNS), y el decodificador de nodos de
control de paridad (DNCP).

453
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Figura 8.10 Intercambio de relaciones de probabilidad logarítmicas en un código LDPC

Desde este punto de vista el código LDPC se puede interpretar como una
mezcla de códigos de repetición internos y de una mezcla de códigos de paridad
simple externos, que operan en un modo similar a un código concatenado en
serie [14]. Esto también permite comprender la similitud entre los códigos
LDPC y otros códigos de descodificación iterativa, como los códigos turbo
vistos en el capítulo 7.
Un decodificador de probabilidad a posteriori convierte información del canal e
información recibida como una relación de probabilidad logarítmica a priori, en
relaciones de probabilidad logarítmica a posteriori. Tanto el DNS como el
DNCP realizan esta operación, generando información de probabilidad
logarítmica en sus salidas (Figura 8.10). A los valores de relación de
probabilidad logarítmica a posteriori se les puede restar la relación
probabilística logarítmica a priori, para obtener la relación de probabilidad
logarítmica extrínseca, que a su vez es considerada la información a priori del
otro decodificador en la próxima iteración.

8.8.2 Decodificación iterativa para códigos de bloques

La expresión de la relación de probabilidad logarítmica fue descripta en la


ecuación (7.3) y se rescribe aquí por claridad:

454
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

§ P( bi 1 ) ·
L( bi ) ln¨¨ ¸
© P( bi 1 ) ¸¹

se recuerda que el signo de esta cantidad define el valor en decisión rígida, y la


magnitud de esta cantidad es la confiabilidad de esa decisión. De esta definición
se deduce que:

P( bi 1 ) P( bi 1 )
e L( bi )
P( bi 1 ) 1  P( bi 1 )

o bien

e L( bi )
P( bi 1 ) y (8.61)
1  e L( bi )

1
P( bi 1 ) (8.62)
1  e L( bi )

Cuando la decisión se toma en forma condicional a alguna otra variable, como


un vector Y , la relación de probabilidad logarítmica adopta la forma que se
describió para este caso en la ecuación (7.54), y en función la relación descripta
en (7.55) se puede decir que:

§ P( bi 1 / Y ) · § P( bi 1 ) · § P( y i / bi 1 ) ·
L( bi / Y ) ln¨¨ ¸ ln¨¨ ¸¸  ln¨¨ ¸
© P( bi 1 / Y ) ¸¹ © P( bi 1 ) ¹ © P( y i / bi 1 ) ¸¹
(8.63)

Dado que el decodificador para un código LDPC como el de suma-producto


tiene que tener en cuenta las ecuaciones de paridad, será útil poder establecer
una relación de probabilidad logarítmica para la suma en OR-Exclusiva de dos o
más bits. Para determinar esa cantidad se evalúa:

P( b1 † b2 1 ) P( b1 1 )P( b2 1 )  (1  P( b1 1 ))(1  P( b2 1 ))
(8.64)

P( b1 † b2 1 ) P( b1 1 )P( b2 1 )  (1  P( b1 1 ))(1  P( b2 1 ))
(8.65)

455
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

donde P( bi 1 ) esta dada por la ecuación (8.61).


Se puede verificar que si los bits b1 y b2 se generaron como variables
aleatorias independientes, entonces:
1  e L( b1 ) e L( b2 )
P( b1 † b2 1 ) (8.66)

1  e L( b1 ) 1  e L( b2 )
e L( b1 )  e L( b2 )
P( b1 † b2 1 ) (8.67)

1  e L( b1 ) 1  e L( b2 )
y luego [15]:

ª P( b1 † b2 1 ) º ª1  e L( b1 ) e L( b2 ) º
L( b1 † b2 ) ln« » ln« L( b1 ) »
¬ P( b1 † b2 1 ) ¼ ¬e  e L( b2 ) ¼
| sign( L( b1 ).sign( L( b2 ) min | L( b1 ) |,| L( b2 ) |
(8.68)

en [15] se define para esta operación un símbolo especial, que en este texto
tendrá la forma >†@ :

L( b1 )>†@L( b2 ) L( b1 † b2 ) (8.69)

En general esta operación de relación logarítmica puede tener que ser calculada
frente a valores limites, por lo cual se adicionan las siguientes reglas:

L( b1 )>†@f L( b1 ) (8.70)

L( b1 )>†@  f L( b1 ) (8.71)

L( b1 )>†@0 0 (8.72)

Por otra parte, y generada por inducción, la relación puede extenderse a más de
dos bits sumados en OR-Exclusiva:

456
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

J § J · «
ª J L( b j )
– e  1  –
J
L( b )
e j 1 » º

¦ >†@L( b j ) L¨¨ ¦ †b j ¸¸ ln« J »


j 1 j 1
(8.73)
j 1 ©j 1 ¹ «
«– e L( b j )
J
1  – e L( b j )
»
1 »
¬j 1 j 1 ¼

J §J · ªJ º
¦ >†@L( b j ) L¨¨ ¦ †b j ¸¸ | «– sign( L( b j ))». min | L( b j ) | (8.74)
j 1 ©j 1 ¹ ¬j 2 ¼ j 1...J

Haciendo uso de la equivalencia:

eb 1
tanh( b / 2 )
eb 1
se obtiene:

ª º
«1  – tanh L( b j ) / 2 »
J

§ J · § J ·
2 tanh 1 ¨¨ – tanh L( b j ) / 2 ¸¸
J
¦ >†@L( b j ) L¨¨ ¦ †b j ¸¸ ln« »
j 1
« »
«1  – tanh L( b j ) / 2 »
J
j 1 ©j 1 ¹ ©j 1 ¹
¬ j 1 ¼
(8.75)
Que finalmente es aproximada por la expresión:

J § J · § J ·
¦ >†@L( b j ) L¨¨ ¦ †b j ¸¸ | ¨¨ – sign( L( b j ))¸¸ min | L( b j ) | (8.76)
j 1 ©j 1 ¹ ©j 1 ¹ j 1...J

8.8.3 Construcción de las curvas de transferencia de información extrínseca


para códigos LDPC

Para la determinación de las curvas de transferencia de información extrínseca


CTIE para códigos LDPC, se estudia la transferencia de información que existe
entre los nodos de símbolo y los nodos de control de paridad. Para simplificar el
análisis se tendrá en cuenta un código LDPC regular, es decir, uno para el cual
el número de ‘1’s por columna y por fila es, respectivamente, constante. Un
ejemplo de un código de este tipo es el del ejemplo 8.2, cuyo gráfico bipartito se
muestra en las figuras 8.8 y 8.9.
La notación a utilizar es la misma que se empleó en el caso de los códigos
turbo, es decir I A describirá la información mutua entre los bits

457
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

correspondientes a los nodos de símbolo, sobre los cuales se realizan las


estimaciones, y la información a priori, en ambos casos expresadas como
relaciones de probabilidad logarítmica, y de la misma forma I E describirá la
información mutua entre los bits correspondientes a los nodos de símbolo, sobre
los cuales se realizan las estimaciones, y la información extrínseca [19]-[22].
Las curvas CTIE de los decodificadores DNS y DNCP de un código LDPC será
descriptas en términos de la función de información mutua, que fue introducida
en el capítulo 7, y que se detalla en la siguiente sección.

8.8.4 Función de información mutua

Para el caso del canal de ruido blanco aditivo y Gaussiano y teniendo en cuenta
el valor normalizado de la relación E b / N0 1 , donde R es la tasa del
2Rσ n2
código y σ n2 N0 / 2 la dispersión al cuadrado del ruido, la relación de
probabilidad logarítmica del canal Lch L(ch0 ) es igual a:

p( y / x 1 ) 2 2
Lch ln y ( x  n) (8.77)
p( y / x 1 ) σ n2 σ n2

donde

2
/ 2 σ n2
e ( y  x )
p( y / X x)
2π σ n2

se puede determinar la varianza de esta cantidad como:

2
§ 2 · 4 Eb
2
σ ch ¨ σ ¸ 8R (8.78)
¨σ 2 n ¸ σ n2 N0
© n ¹

Recordando la expresión analítica de I A , presentada en el capítulo 7:

f e
2
 ξ σ A 2
/ 2 / 2σ A
IA I A ( σ A ) 1  ³f log 2 (1  e ξ )dξ
2π σ A

se utiliza la siguiente notación abreviada:

458
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

J( σ ) IA(σA σ) (8.79)

de manera que

lim J( σ ) 0; lim J( σ ) 0; σ ! 0
σ o0 σ of

Esta función es monolíticamente creciente e invertible, por lo cual se puede


calcular también el valor de σ A :

σA J 1 ( I A ) (8.80)

En [14] se realiza una aproximación polinómica a las funciones J ( σ ) y


J 1 ( I ) .
Teniendo en cuenta que la entrada y la salida del canal de ruido aditivo blanco y
Gaussiano están relacionadas como Y X  n , con n variable aleatoria de
tipo Gaussiano de varianza σ n2 y valor medio cero. La relación de probabilidad
logarítmica expresada en la ecuación (8.77) es función de y . Por otra parte
Lch (Y ) esta condicionada a la variable X r1 de manera que pasa a tener una
2 2 4
distribución Gaussiana de valor medio μ ch r 2 y varianza σ ch ,
σn σ n2
2
σ ch
cumpliéndose que μ ch r
. Denominando a la información mutua entre las
2
estimaciones de probabilidad logarítmicas Lch (Y ) y la entrada:

J( σ ch ) I( X ; Lch (Y ))
(8.81)

entonces:

f e
2
 ξ σ ch 2
/ 2 / 2 σ ch
J ( σ ch ) H( X )  H( X / Lch (Y )) 1  ³f log 2 (1  e ξ )dξ
2π σ ch
(8.82)

donde H( X ) es la entropía de la entrada al canal X y H( X / Lch (Y )) es la


entropía de X condicionada a Lch (Y ) . En realidad J( σ ch ) I( X ; Lch (Y )) es

459
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

igual a I( X ; Y ) por lo que la capacidad del canal de ruido blanco aditivo y


Gaussiano Y X  n es igual a J( σ ch ) J( 2 / σ n ) [14, 23].
S. ten Brink G. Kramer, y A. Ashikhmin [14] proponen una aproximación
polinómica a las funciones J ( σ ) y J 1 ( I ) . Para J ( σ ) se tiene:

­ 0.0421061 σ 3  0.209252 σ 2  0.00640081 σ 0 d σ d 1.6363


°
°
J ( σ ) | ®1  e 0.00181491 σ  0.142675 σ  0.0822054 σ 0.0549608
3 2
1.6363  σ  10
°1 σ t 10
°
¯
(8.83)

Para la función inversa J 1 ( I ) :

° 1.09542 I 2  0.214217 I  2.33727 I


­ 0 d I d 0.3646
J 1 ( I ) | ®
°̄ 0.706692 ln> 0.386013 (1  I )@  1.75017 I 0.3646  I  1
(8.84)

8.8.5 CTIE para el decodificador interno de nodos de símbolo (DNS)

Dado que el análisis se restringe a códigos regulares LDPC, el número de


ecuaciones de paridad de las que un símbolo participa es d v . Para el caso del
ejemplo 8.2 por ejemplo este número es dv 3 . La información o relación de
probabilidad logarítmica que cada nodo de símbolo d j le envía al nodo de
control de paridad hi en la iteración número it , será denominada Z ij( it ) ,
mientras que la información que el nodo de control de paridad hi le envía al
nodo de símbolo d j en la iteración número it , será denominada L(ijit ) .
Cada nodo de símbolo recibe una estimación o relación de probabilidad
logarítmica de valor Lch L(ch0 ) desde el canal y un valor de relación de
probabilidad logarítmica L( 'it ) de cada nodo de control de paridad al cual esta
i j

conectado. Con esta información, el nodo de símbolo determina la cantidad


Z ij( it ) para los d v nodos de control de paridad a los que esta conectado, de
acuerdo a la expresión:

460
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

Z ij( it ) Lch 
'
¦ L( 'it ')
i j
(8.85)
i M ( j )\ i

En esta ecuación, los valores de relación de probabilidad logarítmica L( 'it )


i j

constituyen la relación de probabilidad logarítmica a priori que recibe el


decodificador, Z ij( it ) es la relación de probabilidad logarítmica extrínseca
generada por el decodificador interno o de nodos de símbolo, y Lch L(ch0 ) el la
relación de probabilidad logarítmica del canal.
Al terminar esta iteración, el decodificador determina también una estimación a
posteriori que es una relación de probabilidad logarítmica, necesaria para
realizar la estimación de los bits decodificados en esa iteración. Esta estimación
a posteriori es igual a:

Aij( it ) Lch  ¦ L( it' )


ij
(8.86)
iM ( j )

La estimación logarítmica es Z ij( it ) | Lc ij1 |  | Lc ij1 | determinada usando


(8.49). La curva de transferencia de información extrínseca del DNS es
determinada por el valor que adopta la función de información mutua para la
dispersión de la variable Z ij( it ) descripta por la ecuación (8.85).
El algoritmo de suma-producto en su versión logarítmica describe la operación
del decodificador de nodos de símbolo del proceso iterativo a través de las
ecuación (8.85), que determina una relación lineal entre las variables
involucradas. Dado que existe independencia entre los valores provenientes del
canal y las estimaciones a priori en esa ecuación, la varianza de la cantidad:

Z ij( it ) Lch 
'
¦ L( 'it ')
i j
i M ( j )\ i

es [14]:
σ Z2ij 2
σ ch  d v  1 σ A2 8R
Eb
N0
>
 d v  1 J 1 ( I A )@2
(8.87)

conocida la dispersión de las estimaciones extrínsecas que produce el


decodificador de nodos símbolo DNS, entonces, la información mutua entre
estas relaciones de probabilidad extrínsecas y las de los bits o símbolos es
obtenida por utilización directa de la expresiones (8.79) y (8.83) con
σ A σ σ Zij :

461
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

I E ,DNS ( I A , d v , E b / N0 , R ) J §¨ σ ch
2
 d v  1 σ A2 ·¸ (8.88)
© ¹

8.8.6 CTIE para el decodificador externo de nodos de control de paridad


(DNCP)

Los nodos de control de paridad representan una ecuación de paridad, es decir,


realizan las estimaciones teniendo en cuenta que dicha ecuación se cumple. La
relación de probabilidad logarítmica que generan estos nodos esta dada por la
ecuación (8.73), en su versión exacta, o bien por (8.74), en su versión
simplificada, que adaptadas al caso, resultan ser iguales a:

ª I' § Z (' it 1 ) · I' § Zi(' itj 1 ) ·º


«– e ¨ i j
 1¸  – ¨ e  1¸ »
« i ' 1 ¨© ¸ ' ¨ ¸»
L(ijit 1 ) ln« ¹ i 1© ¹
»
« ¨ e i' j  1 ·¸  §¨ e Zi ' j  1 ·¸ »
I § Z ( it 1 ) I ( it 1 )

«– ¨ ¸ – ¨ ¸»
¬ i' 1 © ¹ i' 1 © ¹¼
(8.89)

ª I' º
L(ijit 1 ) | «– sign( Z (' it 1 ) )». min | Z (' it 1 ) | (8.90)
i j ' i j
«¬i ' 1 »¼ i 1...I

En estas expresiones se tiene en cuenta que el proceso de cálculo adopta los


valores a priori que provienen de la iteración anterior. También debe recordarse
que siguiendo la definición hecha en [15], el ‘0’ se representa como la señal  1
y el ‘1’ con la señal  1 , con lo cual el argumento dentro del logaritmo natural
en la expresión (8.73) se tendría que invertir, si la convención es inversa.
Esta expresión vuelve a modelarse como una sumatoria de relaciones de
probabilidad logarítmicas definidas con el operador >†@ . En [16] y [17] se
demuestra que la CTIE para el decodificador de nodos de control de paridad
DNCP en términos del canal de ruido blanco aditivo y Gaussiano puede ser
calculada con aproximación, pero alta exactitud con:


I E ,DNCP ( I A ,d c ) | 1  J d c  1.J 1 (1  I A ) (8.91)

En función de esta expresión resulta mas útil conocer la función inversa, que
determina la información mutua entre los bits decodificados y la información a

462
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

priori, como función de la información mutua entre los bits decodificados y la


información extrínseca:

§ J 1 (1  I ) ·
I A,DNCP ( I E , d c ) | 1  J ¨ E ¸
(8.92)
¨ d  1 ¸
© c ¹
Haciendo uso de las expresiones vistas, la figura 8.11 muestra la CTIE para el
decodificador de nodos símbolo, y diferentes valores del parámetro d v ,
mientras que la figura 8.12 muestra la CTIE para el decodificador de nodos de
control de paridad, y diferentes valores del parámetro d c .

0.9
dv 9 dv 7 dv 5 dv 3
0.8

0.7

0.6
IE,
DNS0.5

0.4

0.3

0.2

0.1

0 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
IA DNS
Figura 8.11 CTIE para el DNS

463
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Figura 8.12 CTIE para el DNCP

Los códigos LDPC muestran un mecanismo analítico mas adecuado para el


análisis utilizando las CTIE. En [16], se demuestra que para el canal de borrado,
el diseño óptimo de un código LDPC se realiza cuando las curvas CTIE para el
decodificador de nodos símbolo y la del decodificador de nodos de control de
paridad coinciden. Esta afirmación es aproximadamente cierta para cualquier
otro canal, incluido el de ruido blanco aditivo y Gaussiano. Si bien es posible
analizar el recorrido de las iteraciones como se hizo en el caso de los códigos
turbo, las conclusiones anteriores otorgan mayor capacidad al análisis con
CTIEs de códigos LDPC, dado que permiten realizar el diseño de este tipo de
códigos. Un ejemplo de diseño puede ser encontrado en [14].

8.9 Códigos de suministro continuo y códigos LT


8.9.1 Introducción

Un campo de aplicación interesante de los códigos LDPC se presenta en el caso


del denominado canal de borrado, introducido en el capítulo 1, y la relación que
este canal posee con la transmisión en redes de datos.
En la transmisión de datos en la red denominada Internet la información total a
transmitir se fragmenta en paquetes de tamaño normalmente fijo, que son
enviados al receptor a través de la red. En este procedimiento, el receptor aplica
normalmente sobre los paquetes un control de paridad típicamente

464
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

implementado con un código de redundancia cíclico, que permite evaluar el


síndrome sobre todo el paquete para así determinar si posee o no errores.
Cuando el paquete es aceptado debido al éxito en el control de errores no existe
mayor problema, pero si el paquete contiene errores entonces el receptor utiliza
el mecanismo de la repetición de paquetes que se describió en el capítulo 2. Una
segunda vía de comunicación permite el envío de los avisos de repetición, y el
paquete originalmente hallado con errores es descartado a la espera de su
retransmisión.
A diferencia de este procedimiento, los códigos de suministro continuo [24, 27]
(“Fountain codes” en Inglés) realizan una transmisión de paquetes que son una
función aleatoria del archivo total a transmitir. En este caso, el transmisor
abunda de paquetes al receptor sin tener conocimiento de cuales de ellos están o
no siendo recibidos.
Si sucede que el tamaño original del archivo total a transmitir es de K
paquetes, y el receptor recibe un número de N paquetes, entonces es posible
recuperar desde el lado receptor la información original siempre y cuando
N t K , es decir se deben recibir al menos K paquetes, y si esto sucede y en
ciertas condiciones, es posible recuperar la información total.
El proceso de descarte de paquetes descripto puede ser adecuadamente
modelado por la operatoria del canal de borrado, presentado en el capítulo 1. El
receptor encuentra un paquete con errores y lo descarta, advirtiendo al
transmisor de este evento, solicitándole además la retransmisión de dicho
paquete.
La probabilidad de que se produzca el borrado o descarte es p en el caso del
CBB, y la capacidad de este canal es igual a 1  p tal como se evaluó en el
capítulo 1. Si este canal opera sobre un alfabeto de un campo de Galois GF( q ) ,
para el cual q 2 m , entonces esa capacidad aumenta y es igual a 1  p m . Se
puede interpretar que en la transmisión de paquetes de longitud fija de m bits,
el modelo adecuado para representar el descarte o borrado de un paquete es el
canal de borrado que opera sobre un campo finito de Galois GF( q ) , con
q 2 m , donde cada elemento de este campo representa a algún paquete en la
transmisión.
El esquema típico de transmisión con repeticiones funciona retransmitiendo la
cantidad de paquetes necesarios, independientemente del valor de p , pero el
canal posee una capacidad que no depende del hecho de tener un vínculo de
retransmisión, y permanece en este caso igual a 1  p m . Sin embargo y en
presencia de un canal muy ruidoso, la cantidad de retransmisiones podría ser
enorme. Otro escenario donde el esquema de repetición se muestra impráctico
es el de la transmisión multi recepción (en Inglés “broadcast”) con esquema de
descarte o borrado de paquetes, donde un transmisor envía a múltiples

465
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

receptores los paquetes de forma que se reciben 1  p paquetes en cada


receptor. Cuando se reclama de repetición desde varios receptores sobre los
múltiples paquetes enviados, la ocupación del canal es enorme en el proceso de
repetición.
Los requerimientos de velocidad existentes sugieren el uso de un esquema de
corrección en sentido directo, que reduzca o hasta elimine el proceso de
retransmisión. Por otro lado la teoría de la información indica que el canal de
borrado sobre un campo finito de Galois GF( q ) posee una capacidad que es
igual a 1  p m independientemente de la existencia o no del vínculo de
retransmisión.
Una de las técnicas mas adecuadas para el control de errores con borrado de
elementos o paquetes es la de los códigos Reed-Solomon, vistos en el capítulo
6.
Una propiedad de un código Reed-Solomon CRS ( N , K ) , que está definido
sobre un campo de Galois GF( q ) , y para el cual q 2 m , es que si se reciben
cualesquiera K de los N elementos del campo de Galois transmitidos, los K
elementos de información de fuente codificados pueden ser recuperados
satisfactoriamente.
Sin embargo los códigos RS poseen una complejidad elevada, que se
incrementa con el tamaño del código, y en este sentido no aparecen como los
mas adecuados para la codificación para el control de errores en esquemas como
el de la red de datos, donde los paquetes a transmitir en general son de
considerable longitud. Por otro lado, la tasa del código debiera ser
apropiadamente elegida antes de la transmisión para adecuarse al valor de la
probabilidad p del canal, que determina la capacidad del mismo, de acuerdo al
segundo teorema de Shannon, por lo que si este parámetro cambiara durante la
transmisión, como consecuencia por ejemplo de que cambie la estructura de la
transmisión, que es esencialmente variable en la red de datos, requeriría de un
acomodamiento dinámico de la tasa del código durante la transmisión, que para
el caso de los códigos RS no es fácil de implementar.
Como consecuencia de este problema surgen los denominados códigos
“Fountain” o de suministro continuo.

8.9.2 Códigos de suministro continuo

Un código de suministro continuo [24, 27] puede ser interpretado como un


código que genera un suministro ininterrumpido de paquetes codificados, que
simulan la acción de una fuente de agua en cascada. En este esquema, la
información original a transmitir tiene un tamaño Km , de manera que existen

466
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

K paquetes a transmitir de m bits cada uno. Si un receptor recolecta de esta


fuente de suministro continuo un conjunto de paquetes que en número es igual o
mayor que K podrá finalmente recuperar la información original transmitida.
Esta acción de colección de paquetes puede ser visualizada como la recolección
del “agua” suministrada por la fuente en un recipiente, de aquí el nombre de
este código en Inglés.
En cierto sentido la tasa del código de suministro continúo sería cero, dado que
se supone que la transmisión es ilimitada, aunque en el caso práctico o real el
número de paquetes a transmitir en este modo sería determinado de manera
dinámica, atendiendo a la necesidad que se había descripto en párrafos
anteriores.
El más simple tipo de código de suministro continuo es el código lineal
aleatorio.

8.9.3 Código lineal aleatorio

Supóngase que se tiene un archivo a codificar que es fragmentado en K


paquetes, dp1 dp2 ... dpK . Un paquete es la unidad de transmisión, que
contiene un número de m bits, y que será adecuadamente recibido o
descartado, según las circunstancias.
La transmisión esta regida por un reloj y envía una secuencia ordenada según el
índice n de manera que el codificador construye un conjunto de K bits
aleatorios ^Gkn `, y el paquete tp n transmitido en el instante n es la suma en
OR-Exclusiva de los paquetes para los cuales Gkn 1 :

K
tpn ¦ dp G
k 1
k kn (8.93)

Este procedimiento es tal que se puede interpretar como una codificación


originada por una matriz que en cada instante de la transmisión esta agregando
una columna a su estructura, que corresponde al patrón de bits originado en ese
instante ^Gkn `. Una matriz de este tipo sería de la forma:

ª1 1 0 1 0 1 º
«0
« 1 1 0 1 1 »»
G
«1 0 0 0 1 1 »
« »
¬0 0 1 1 1 0 ¼
(8.94)

467
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

El número de filas de esta matriz creciente es K , y las columnas son


sucesivamente generadas como ^Gkn `. De esta manera, y de acuerdo a la matriz
de la expresión (8.94), el primer paquete consiste en la transmisión de los
paquetes de información original dp1 y dp 3 sumados en OR-Exclusiva, el
segundo paquete transmitido será la suma en OR-Exclusiva de los paquetes
originales dp1 y dp 2 y así sucesivamente.
El canal de borrado tendrá como efecto sobre la transmisión el de borrar
algunos de los paquetes transmitidos pero finalmente el receptor estará
habilitado para recolectar un conjunto de N paquetes, que le permitirá dar
forma a una matriz de tamaño KxN , de manera que N K  E x , donde E x es
el número de paquetes en que N excede a K , y puede ser interpretado como el
conjunto de paquetes de redundancia obtenidos de la transmisión continua. La
cuestión entonces es determinar si es posible recuperar el mensaje original, en
función de estos N paquetes. En este sentido se asume que el receptor conoce
lo que será denominada la matriz de fragmento Gfr , que es la matriz armada del
lado receptor con los paquetes recibidos. Esto puede ser posible si ambos lados
de la transmisión conocen la ley pseudo aleatoria con la cual se realiza la
construcción de la matriz creciente. Si N  K no existe posibilidad de recuperar
fielmente la información. Con cualquier valor positivo o nulo de la redundancia
E será posible recuperar el mensaje original. En el caso que N K la
información puede obtenerse si existe la matriz inversa de Gfr . En [24] se
determina que la probabilidad de que exista matriz inversa de tamaño KxK es
igual a:

1  2 1  2
K ( K 1 )
...(1 1 / 8 )(1 1 / 4 )(1 1 / 2 )
(8.95)
que resulta ser 0.289 para cualquier K ! 10 .
En el caso N ! K entonces se precisaría saber cual es la probabilidad δ de que
en la matriz de fragmento Gfr no exista una sub-matriz de tamaño KxK que
sea invertible. En [24] se determina que esa probabilidad esta acotada por una
función del tamaño de la redundancia o exceso de paquetes por sobre K :

δ d 2 E (8.96)

Esto significa que la probabilidad de recuperación exitosa de paquetes es 1  δ ,


y que para que esto suceda deber ser recibidos al menos K  log2 (1 / δ )
paquetes. Resumiendo, la probabilidad de recuperación fiel de los paquetes esta
determinada por ser 0.289 si no existen paquetes recibidos redundantes, y se
eleva a 1  δ si existen paquetes redundantes. Sin embargo la complejidad de

468
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

decodificación de estos códigos aleatorios esta relacionada con la inversión de


la matriz Gfr , que requiere de aproximadamente K 3 operaciones binarias, lo
cual puede ser limitante si el tamaño del paquete es grande, tal como es posible
en el caso de la red de datos.

8.9.4 Códigos LT (Luby Transform)

Los códigos LT [25] surgen como una versión mas adecuada de los códigos de
suministro continuo, y de hecho pueden ser interpretados como un código de
suministro continuo que utiliza una matriz lineal de baja densidad similar a la
que se emplea en códigos LDPC, es decir con pocos unos en medio de un gran
número de ceros.
El diseño de estos códigos esta relacionado con el análisis probabilístico del
proceso de arrojar pelotas sobre canastos vacíos. Una primera cuestión en tal
problema podría ser determinar cuantas de ellas hay que arrojar para que al
menos haya una en cada uno de los canastos, o bien determinar cuantos serán
los canastos vacíos que resulten de arrojar un número determinado de pelotas.
Así por ejemplo, el número de canastos vacíos al arrojar N pelotas sobre K
canastos es Ke N / K .
De esta manera, el número esperado de canastos vacíos es un número pequeño
δ siempre que N ! K ln( K / δ ) [24, 27].

8.9.4.1 Codificador del código LT

Para la codificación de un código LT se procede de la siguiente forma:

Cada paquete codificado se genera como función del conjunto de K paquetes,


dp1 dp2 ... dpK de la siguiente manera:

Se elige el grado d n del paquete de una función de distribución de grado ρ( d )


diseñada convenientemente en función del tamaño del archivo a codificar K .
Se eligen en forma aleatoria uniforme d n diferentes paquetes para armar el
paquete codificado tp n como la suma en OR-Exclusiva de esos paquetes.
Este mecanismo de codificación determina un gráfico bipartito similar al que se
presentó en el caso de los códigos LDPC entre los paquetes codificados tp n y
los paquetes de fuente dp k .

469
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Cuando el valor medio del grado d n es significativamente menor que K puede


decirse que se tiene un gráfico de poca densidad de manera que el mecanismo
de codificación utilizado se puede interpretar como un código LDPC.

8.9.4.2 Decodificador de un código LT

Dado que se tiene un proceso de codificación similar al de un código LDPC


entre los nodos de paquetes codificados y los de información de fuente, la
decodificación consiste en determinar el vector dp a partir del vector tp que
se encuentran relacionados por la operación tp dp.G , donde la matriz G
corresponde al gráfico bipartito aplicado. Se asume una vez más que ambos
lados de la transmisión conocen esta matriz, aun cuando tengan naturaleza
pseudo aleatoria.
Aun cuando la similitud con un código LDPC sugeriría la aplicación del
decodificador de suma-producto por ejemplo, en realidad los paquetes que se
tienen en cuenta son totalmente confiables o totalmente no confiables, es decir
se tienen paquetes dp k con una probabilidad igual a 1 de ser el verdadero
paquete, o bien paquetes dp k que tienen todos la misma probabilidad de ser los
verdaderos paquetes.
El algoritmo de decodificación adopta una forma muy simple en este caso.

Los paquetes codificados tp n hacen las veces de nodos de control de paridad, y


los paquetes de mensaje dp k de nodos símbolo.
El, procedimiento determina entonces que:
1) Se encuentre un nodo de control de paridad tp n que este conectado a un solo
paquete de símbolo dp k . Si esto no sucede el algoritmo no puede proceder a la
decodificación.
2) Se hace:

dpk tpn
3) Se suma dp k a todos los nodos de control de paridad tp que están

conectados a dp k :

pt n' tpn'  dpk Para todo n ' para el cual Gn' k 1

4) Se remueven todas las conexiones que se vinculan al nodo de símbolo dp k

470
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

5) Este proceso se repite hasta que se termine con todos los dp k .

Ejemplo 8.3: Codifique utilizando códigos LT definidos con la siguiente matriz


G el grupo de paquetes dp1dp2 dp3 (11,10 ,01 ) . En este ejemplo cada
paquete del mensaje a transmitir esta constituido por dos bits. Decodifique
luego esa información. La matriz es de la forma:

ª1 1 0 1 º
G «0 0 1 1 »
« »
«¬0 1 1 0 ¼»

De acuerdo con esta matriz, que se asume se generó en forma aleatoria, se tiene
que:

tp1 dp1 11
tp2 dp1 † dp3 10
tp3 dp2 † dp3 11
tp4 dp1 † dp2 01
Esto significa que tp ( tp1 tp2 tp3 tp4 ) (11,10 ,11,01 )

El gráfico bipartito queda determinado de la forma que se ve en la figura 8.13:

Figura 8.13 grafico bipartito del ejemplo 8.3

El procedimiento de decodificación descripto consiste en este ejemplo en hacer:

471
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Se encuentra el nodo de control de paridad que tiene una única conexión con un
nodo de símbolo y se asigna ese paquete de la forma dp1 tp1 11 . Luego se
remueven las conexiones:

11 dp 2 dp 3 dp 2 dp 3
11

01 11 10 01 11 10

Figura 8.14 Primeros pasos de la decodificación del código LT del ejemplo 8.3

Se busca un nodo de control de paridad conectado a un único nodo símbolo, y


se realiza la operación dpk tpn , en este caso dp2 10 . Se afecta por el
resultado de dp2 10 a los otros nodos de control de paridad conectados con
este nodo símbolo, para luego quitar las conexiones a esos nodos:

11 10 dp 3 11 10 dp 3

01 01 01 01

Figura 8.15 pasos finales de la decodificación del código LT del ejemplo 8.3

La configuración final permite terminar el proceso, siendo dp3 01 .

472
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

El detalle del diseño de los códigos LT puede consultarse en [24] y [25].


Las aplicaciones de estos códigos son diversas. Una de ellas es como técnica de
codificación en sistemas de almacenamiento de información distribuídos, donde
la lectura de la información podría descartar aquellos sectores de la grabación
que se hayan declarado en falla, buscando por paquetes en otros sectores donde
se los haya grabado alternativamente. En general estos códigos serán adecuados
en sistemas distribuídos y sistemas multi usuario.

8.10 Códigos LDPC y turbo


Una característica común a los códigos de mayor eficiencia vistos, los códigos
turbo y los LDPC, es que en ambos se implementa la decodificación iterativa
basada en algoritmos que procesan información de entrada y salida no rígida. Es
posible demostrar cierto grado de equivalencia entre las dos técnicas que se han
descripto. Sin embargo existen diferencias entre ellas.
Los códigos LDPC resultan extraordinariamente eficientes en términos del
funcionamiento frente al ruido si la longitud de la palabra codificada es
suficientemente grande. Así, con longitudes n 10000 por ejemplo los
códigos LDPC presentan un funcionamiento de curva de probabilidad de error
que esta a 0.1 dB del límite de Shannon. Sin embargo este excelente
funcionamiento requiere de una longitud de palabra codificada muy grande, que
correspondientemente produce un retardo en la decodificación muy grande, y
por otro lado la decodificación en si misma se torna más compleja. Por su parte
los códigos turbo obtienen un excelente funcionamiento utilizando códigos
componente de relativa baja complejidad, teniendo a su vez en su contra el
efecto piso, pero son mas adecuados para aplicaciones intermedias, donde el
retardo sea importante o excluyente en la aplicación.
De la misma forma que en el caso de los códigos turbo, la decodificación se
torna más simple si se utiliza el correspondiente algoritmo en versión
logarítmica. Por otro lado esto lleva también a la utilización de algoritmos de
decodificación que con una leve degradación de funcionamiento, se basan en la
evaluación de funciones de máximo o mínimo, que simplifican fuertemente el
proceso y reducen la complejidad de su implementación.

473
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Bibliografía y Referencias
1. Shannon, C. E., “A Mathematical Theory of Communication,” Bell Syst. Tech.
J. vol. 27, Págs. 379-423, 623-656, Julio y Octubre 1948.

2. Shannon, C. E., “Communications in the presence of noise,” Proc. of the IEEE,


vol. 86, no. 2, Págs. 447-458, Febrero 1998.

3. Berrou, C., Glavieux, A. y Thitimajshima, P., “Near Shannon limit error-


correcting coding and decoding: turbo codes,” Proc. 1993 IEEE International
Conference on Communications, Geneva, Suiza, Vol. 2, Págs.1064-1070,
Mayo 1993.

4. MacKay, D. J. C. y Neal, R. M., “Near Shannon limit performance of low


density parity check codes”. Electronics Letters, Vol.33, Nq6, Marzo 1997.

5. MacKay, D. J. C. and Neal, R. M., “Good Error-Correcting Codes based on


Very Sparse Matrices”, disponible en
http://www.inference.phy.cam.ac.uk/mackay/CodesGallager.html

6. Gallager, R. G., “Low-Density Parity-Check Codes”. IRE Trans. Information


Theory, Vol. IT-8, Nq1, Págs. 21-28, Enero 1962.

7. Tanner, L., M., “A recursive approach to low complexity codes,” IEEE Trans.
Inform. Theory, Vol. 27, No. 5, Págs. 533-547, 1981.

8. Davey, M. C., Error-Correction using Low-Density Parity-Check Codes, Tesis


doctoral, Universidad de Cambridge, Cambridge, 1999.

9. Tang, H., Xu, J., Kou, Y., Lin, S. y Abdel-Ghaffar, K., “On Algebraic
Construction of Gallager and Circulant Low-Density Parity-Check Codes,”
IEEE Trans. Inform. Theory, Vol. 50, NO. 6, Págs. 1269-1279, Junio 2004.

10. Kou, Y., Lin, S. and Fossorier, M., “Low-density parity-check codes based on
finite geometries: A rediscovery and new results,” IEEE Trans. Inform.
Theory, Vol. 47, Págs. 2711–2736, Noviembre 2001.

11. Ammar, B., Honary B., Kou, Y., Xu J. y Lin, S., “Construction of Low-Density
Parity-Check Codes Based on Balanced Incomplete Block Designs,” IEEE
Trans. Inform. Theory, Vol. 50, No. 6, Págs. 1257- 1269, Junio 2004.

474
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

12. Arnone, L., Gayoso, C., González, C., y Castiñeira Moreira, J., “A LDPC
logarithmic decoder implementation,” Proc. of the VIII International
Symposium on Communications Theory and Applications, St. Martin’s College,
Ambleside, Reino Unido, Págs. 356-361, Julio 2005.

13. Herramientas de Matlab para códigos LDPC, http://arun-


10.tripod.com/ldpc/generate.html

14. Ten Brink, S., Kramer, G. y Ashikhmin, A., “Design of Low-Density Parity-
Check codes for Modulation and detection,” IEEE Trans. on Comm. Vol. 52,
No 4, Págs. 670-678, Abril 2004.

15. Hagenhauer, J., Offer, E. y Papke, L., “Iterative decoding of binary block and
convolutional codes,” IEEE Trans. on Inf. Theory, Vol. 42, No 2, Págs. 429-
445, Marzo 1996.

16. Ashikhmin, A., Kramer, G. y ten Brink, S., “Extrinsic information transfer
functions: A model and two properties,“ Proc. Conf. Information Sciences and
Systems, Princeton, NJ, Págs. 742-747, Marzo 20-22, 2002.

17. Sharon, E., Ashikhmim, A. y Litsyn, S., “EXIT functions for the Gaussian
channel,” Prov. 40th Annu. Allerton Conf. Communication, Control,
Computers, Allerton, IL, Págs. 972-981, Octubre 2003.

18. Etzion, T., Trachtenberg, A. y Vardy, A., “Which codes have cycle-free
Tanner graphs?,” IEEE Trans. on Inf. Theory, Vol. 45, No. 6, Págs. 2173-2180,
Septiembre 1999.

19. Ten Brink, S., “Convergence behaviour of iteratively decoded parallel


concatenated codes,” IEEE Trans. on Comm., vol. 49, Págs. 1727-1737,
Octubre 2001.

20. Ten Brink, S., Speidel, J., y Yan, R., “Iterative demapping and decoding for
multilevel modulation,” Proc. IEEE Globecom Conf. 98, Sydney, NSW,
Australia, Vol. 1, Págs. 579-584, Noviembre 1998.

21. Ten Brink, S., “Exploiting the chain rule of mutual information for the design
of iterative decoding schemes,” Proc. Of the 39th Allerton Conf., Monticello,
IL, Octubre 2001.

475
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

22. Tuchler, M., ten Brink, S., and Hagenauer, J., “Measures for tracing
convergence of iterative decoding algorithms,” in Proc. 4th IEEE/ITG Conf. on
source and channel coding, Berlin, Alemania, Págs. 53-60, Enero 2002.

23. McEliece, R. J., The Theory of Information and Coding, Addison-Wesley


Publishing Company. Massachusetts. 1977.

24. MacKay, D. J. C., “Digital Fountain Codes,” disponible en :


http://www.inference.phy.cam.ac.uk/mackay/DFountain.html

25. Luby, M, “LT Codes,” disponible en:


26. http://www.inference.phy.cam.ac.uk/mackay/dfountain/LT.pdf

27. MacKay, D. J. C., Sitio Web disponible en:


http://www.inference.phy.cam.ac.uk/mackay/

28. MacKay, D. J. C., Fountain codes, IEE Proceedings-Communications, Vol


152, No 6, Págs. 1062-8, Diciembre 2005.

29. MacKay, D.J.C., Information Theory, Inference, and Learning Algorithms,


Cambridge University Press, Cambridge, Reino Unido, 2003.

476
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)

Problemas
8.1)
a) Determine el número y tamaño de los ciclos cortos en el gráfico bipartito del
código LDPC irregular Cb (12 ,4 ) descripto en la sección 8.5.
b) Reduzca el número de ciclos cortos cambiando las posiciones de los ´1´ s en la
matriz de control de paridad del inciso a), conservando el número de ´1´ s por
columna en el valor inicial s 3 .
c) ¿El diagrama de Tanner modificado corresponde al mismo código LDPC o bien
a otro código?

8.2) Un código cíclico binario LDPC se puede construir utilizando la siguiente


matriz circulante M :

ª1 1 0 1 0 0 0º
«0 1 1 0 1 0 0 »»
«
«0 0 1 1 0 1 0»
« »
M «0 0 0 1 1 0 1»
«1 0 0 0 1 1 0»
« »
«0 1 0 0 0 1 1»
«1 0 1 0 0 0 1 »¼
¬

a) Determine el rango de la matriz M , y utilícela para encontrar las matrices de


control de paridad sistemática y cíclica del código, y su matriz generadora
sistemática.
b) Calcule el número promedio de ´1´ s por fila y por columna de las dos matrices
de paridad, y luego calcule la tasa del código, confirmando que es la misma en
ambos casos, y que también coincide con la tasa calculada de las dimensiones
de las matrices de paridad. ¿Cuál es la distancia mínima de este código?
c) Dibuje el grafo bipartito de Tanner de las dos matrices de paridad y de la matriz
circulante, y determine la longitud del ciclo mas corto en cada caso. ¿Cuál de
los gráficos sería el más adecuado para decodificar este código utilizando el
algoritmo suma-producto?

8.3) Para el código LDPC del problema 8.2:


a) Utilice la matriz generadora sistemática encontrada en el inciso a) del problema
8.2 para determinar cual es la palabra de código que le corresponde al vector de
mensaje m 100 ;

477
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

b) La palabra de código determinada en 8.3.a) se transmite sobre un canal de ruido


aditivo, blanco y Gaussiano en formato polar ( r 1 ), y recibido como el vector
r 1.0187 - 0.6225 2.0720 1.6941 - 1.3798 - 0.7431 - 0.2565 .
Usando el algoritmo de suma-producto decodifique este vector recibido sobre cada
uno de los tres gráficos de Tanner obtenidos en 8.2.c) y comente sobre el proceso y
los resultados obtenidos.

8.4) El código de bloques Cb ( 5 ,3 ) presentado en el ejemplo 7.1 del capítulo 7


tiene las siguientes matrices de generación y de paridad:

ª1 0 1 0 0 º
«0 1 0 1 0 » , H ª1 0 1 0 1º
G « » «0 1 0 1 1»
«¬0 0 1 1 1 »¼ ¬ ¼

En ese ejemplo la palabra de código c ( 00000 ) se transmite sobre un canal de


decisión no rígida y se recibe como el vector r (10200 ) . Este canal de
decisión no rígida esta descripto en el capítulo 7, en la figura 7.6 y tabla 7.2.
a) Decodifique el vector recibido usando el algoritmo suma-producto aplicado
sobre la matriz de paridad H para mostrar que luego de un suficiente número
de iteraciones, la decisión del decodificador podría fluctuar entre los vectores de
código c ( 00000 ) y c (10100 ) , que son ambos los mas cercanos al
vector recibido r (10200 ) .
b) Describa las deficiencias de este grafo bipartito asociado a la matriz de control
de paridad H de este código, con respecto al proceso de paso de información
en el modo iterativo de decodificación.

478
Apéndice A:
Probabilidad de error en la
transmisión de pulsos digitales

El efecto del ruido constituye uno de los principales problemas a resolver en el


diseño de un sistema de comunicaciones. El otro problema presente en el
diseño de un sistema de comunicaciones digitales es la interferencia
intersimbólica [2,4]. En este apéndice se analiza el efecto del ruido como si la
interferencia intersimbólica no existiera.

A.1 Señalización digital


A.1.1 Señales de pulsos digitales

Una señal digital puede ser descripta como un tren de pulsos modulados en su
amplitud. Esta señal es de la forma:

k f
x(t)= ¦ ak p(t - kT)
k f
(A.1)

donde el coeficiente ak es el k-ésimo símbolo en la secuencia, de manera tal


que los símbolos ak corresponden a alguno de los M valores del alfabeto
discreto de señales, y el pulso base p( t ) es multiplicado por este coeficiente de
acuerdo a la información a transmitir. Para el intervalo k-ésimo la forma de
onda correspondiente es p( t  kT ) , donde T es un intervalo de tiempo que se
elige para separar en ese dominio a cada pulso a transmitir.

479
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

0
k 2 t

T Ap(t  2T )

Figura A.1. Señal de pulsos digitales

Como se observa en la figura A.1 la secuencia de datos ak A,0, A, A,0, A que


correspondería por ejemplo a la información digital (101101 ) , es el conjunto
de coeficientes que para cada intervalo multiplica una forma de pulso
normalizado p( t  kT ) . Cuando los coeficientes son de la forma 0 , A se habla
de formato unipolar. Si como resulta para este ejemplo las amplitudes
adoptaran valores ak A / 2,A / 2, A / 2, A / 2,A / 2, A / 2 , donde los
coeficientes son de la forma  A / 2, A / 2 , se habla de una transmisión en
formato polar.

0
k t
p( t  kT )

Figura A.2 Pulso normalizado en el intervalo k


que es multiplicado por el coeficiente ak

El índice k adopta valores enteros desde menos a mas infinito. En la expresión


anterior, el pulso básico centrado en el origen que viaja en el canal y que

480
Apéndice A

representa la forma de onda de cada símbolo enviado es p( t ) , que será


considerado inicialmente como un pulso tal que:

­1 t = 0
p(t) = ®
¯0 t = r T, r 2T,...
(A.2)

El pulso tiene valor de amplitud unitaria cuando es muestreado en el


correspondiente instante k , y valor cero para los restantes instantes de
muestreo. Sin embargo, no es necesariamente un pulso limitado en tiempo. El
muestreo de la señal se produce sincrónicamente en instantes t kT , siendo
k 0,r1,r2,... de forma tal que para un cierto valor de k k1 ;

x(KT)= ¦ ak1 p(k1T - kT ) ak1


f
(A.3)

pues k1T  kT 0 es cero, para todo k excepto para k k1 .


Las condiciones de la ecuación (A.2) son cumplidas por varios pulsos. El pulso
rectangular por ejemplo, está de acuerdo con tales condiciones si su duración τ
es menor que T . El pulso sinc( t ) también cumple con la condición de
ortogonalidad expresada en la ecuación (A.2). En la figura A3 se observa la
transmisión de la secuencia binaria (11001 ) empleando pulsos sinc( t ) que
están afectados por una transmisión polar. En cada instante de muestreo el
pulso correspondiente adopta un valor de amplitud mientras los restantes pulsos
pasan por cero.

481
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

0.8

0.6

0.4

0.2
A
0

-0.2

-0.4

-0.6

-0.8

-1
-4 -2 0 2 4 6 8 10 12
tiempo

Figura A.3 Transmisión con pulsos digitales sin c( t ) en formato polar

El intervalo de tiempo T es el período de repetición o cadencia de pulsos. Su


inversa da idea de la cantidad de símbolos transmitidos por unidad de tiempo.
De esta manera la inversa será igual a la velocidad de señalización, r :

r 1 / T (símbolos por segundo)


(A.4)

que se mide en símbolos por segundo. En el caso particular que el alfabeto


usado este constituido por dos elementos se tiene M 2 , se habla en ese caso
de señalización binaria, y la velocidad de señalización correspondiente r b , es
denominada velocidad de señalización binaria:

rb 1 / Tb (bit por segundo)


(A.5)

siendo en este caso Tb el período de repetición de la señalización binaria


correspondiente. La velocidad de señalización binaria se mide en bits por
segundo.

482
Apéndice A

A.2 Probabilidad de error binaria


En el esquema de la figura A.4 se representa el receptor binario:

N0 / 2
y( t )
y( t k )
x( t ) Filtro Muestra
pasabajos y retención + Umbral
xd ( t )
H(f) - U

Sincronización: D U

Figura A.4 Receptor binario

La señal x( t ) es de la forma ¦ ak p( t  kT ) , es decir, es un tren de pulsos. La


k
señal x( t ) mas el ruido Gaussiano, blanco y aditivo (RGBA) que en Inglés se
conoce como “Additive White Gaussian Noise” (AWGN), ingresan al receptor.
La primera etapa consta de un filtro pasabajos que elimina parte del ruido
entrante sin producir interferencia intersimbólica. La señal filtrada y afectada
por el ruido es y ( t ) . El valor detectado por el receptor luego de la operación
de muestreo y retención es:

y(t k ) = ak + n(t k )
(A.6)

Los valores muestreados y ( t k ) corresponden a una variable aleatoria continua


Y , mientras que los valores n( t k ) pertenecen a las muestras de una señal
aleatoria n( t ) .
En general, se procede a calcular el valor recibido aplicando lo que se
denomina decisión rígida o en Inglés “hard decision”, es decir, se compara el
valor recibido y ( t k ) con un cierto valor umbral U , de forma tal que si el valor
y ( t k ) ! U , entonces el valor recibido es un uno 1, y si y ( t k )  U , entonces el

483
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

valor recibido es un cero 0. De esta manera el receptor convierte la señal


recibida y ( t k ) , que corresponde a una señal ruidosa muestreada, en una señal
x d ( t ) , que es una señal similar a la expresada en ecuación (A.1), sin ruido,
pero con eventuales errores.
La función densidad de probabilidad de la variable aleatoria Y esta
relacionada con el ruido, y con la probabilidad condicional de los símbolos
enviados. Para expresar dicha función de probabilidad se dice que:

H 0 : Es la hipótesis de que ha sido enviado un cero ‘0’: ak 0, Y n

H1 : Es la hipótesis de que ha sido enviado un uno ‘1’: ak A ;Y An .

La función densidad de probabilidad condicional para la variable aleatoria Y ,


dada la ocurrencia del evento H 0 está dada por:

pY (y/H 0 ) = pN (y)
(A.7)

donde pN ( y ) es la densidad de probabilidad de ruido Gaussiana.


Para la hipótesis H1 :

pY (y/H1 ) = pN (y-A)
(A.8)

Dado que cuando se envía un uno 1, la señal de ruido es n y  A . La función


densidad de probabilidad de la señal ruidosa es la función de probabilidad de la
señal discreta enviada, 0 o A (formato unipolar), mas la función densidad de
probabilidad del ruido pN ( n ) . El proceso de detección en el receptor puede
verse en la figura A.5:

484
Apéndice A

y( t ) 1 0 1 0 0
A

0
tk Tb

y( t k ) A

xd ( t ) A

0 Tb / 2 tk Tb  Tb / 2

Figura A.5 Recepción de una señal de pulsos digitales

Las funciones densidad de probabilidad corresponden a versiones en el origen o


trasladadas de la función distribución Gaussiana del tipo de ruido normalmente
analizado.

485
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

pY (y/H 0 ) pY (y/H1 )

-3 -2 -1 0 1 2 3 4 5

0 U A Y

Pe1 Pe0

Figura A.6 Probabilidad de error binaria

En la figura A.6 puede verse que las regiones sombreadas corresponden a los
valores considerados dentro del error para cada hipótesis. Así, se supone que
sucedió la hipótesis H 0 , cuando Y  U , y que sucedió la hipótesis H1 cuando
Y ! U . Las probabilidades de error están asociadas con las áreas bajo las
funciones densidad de probabilidad que están representadas en la figura A.6:

f
Pe0 = P(Y>U / H 0 ) = ³U pY (y/H 0 )dy
(A.9)

U
Pe1 = P(Y<U/ H1 ) = ³f pY (y/H1 )dy
(A.10)

La ubicación del umbral de decisión U es ciertamente importante. Un valor de


U muy cercano a cero 0 reduce el error para el valor uno 1, pero lo aumenta
fuertemente para el valor cero 0, y viceversa. Para determinar la mejor posición
del valor del umbral se debe primero determinar el valor de la probabilidad de

486
Apéndice A

error total para el sistema. Se la denomina probabilidad de error promedio, por


que viene precisamente dada por la expresión:

Pe = P0 Pe0+P1Pe1
(A.11)

donde:

P0 = P(H 0 ) ; P1 = P(H1 )

P0 y P1 son las probabilidades de ocurrencia de ceros y unos respectivamente


o probabilidades de fuente. La probabilidad de error total se calcula como
promedio estadístico de los posibles errores, pesando la probabilidad de error
de cada símbolo, por la probabilidad de aparición del mismo.
Para calcular la posición óptima del valor del umbral U , se debe derivar la
expresión de la probabilidad de error respecto del umbral, e igualar a cero:

dPe /dU = 0
(A.12)

Si se realiza esta derivación, se llega la siguiente expresión:

P0 pY (Uopt /H 0 ) = P1 pY (Uopt /H1 )


(A.13)

Si se supone que los unos 1’s y los ceros 0’s son igualmente probables:

1
P0= P1 =
2
(A.14)

luego:

1
Pe = (Pe0+Pe1 )
2
(A.15)

resultando para el valor óptimo del umbral:

487
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

pY (Uopt /H0 ) = pY (Uopt /H1 )


(A.16)

Esto significa que si los símbolos son igualmente probables, entonces el umbral
debe estar ubicado en el punto medio que separa los símbolos, para el caso de
la figura A.6, U opt A / 2 .
La función densidad de probabilidad del ruido corresponde al caso del ruido
Gaussiano, que se caracteriza por poseer valor medio cero, y dispersión σ 2 . La
función densidad de probabilidad (fdp) para ese caso esta expresada en la
ecuación:

y2
1 -
2V 2
pN(y) = e
2SV 2

(A.17)

Para el caso general en que la fdp se encuentra desplazada a un valor medio m ,


distinto de cero y con dispersión σ 2 :
(y-m) 2
1 -
2V 2
pN(y) = .e
2SV 2
(A.18)

pN ( y)

Q(k )

-2 -1 0 1 2 3 4 5 6

m m  kV
Figura A.7 Curva Gaussiana desplazada y función Q( k )

488
Apéndice A

La probabilidad de que un cierto valor de tensión correspondiente a la variable


aleatoria Y supere el valor m  kσ esta dada por la siguiente expresión:

(y-m) 2
1 f 
P(Y>m+kV) =
2SV 2 ³m  kV
e 2.V 2
dy

(A.19)

para realizar cálculos de este tipo en forma normalizada se define la función:

( λ )2
1 f 
Q(k) =

³k e 2 dλ

(A.20)

siendo:

y-m
λ=
σ
(A.21)

Si ahora en función de la anterior definición se trabaja sobre la variable


aleatoria Y , que representa al valor de tensión resultante de la amplitud
afectada por ruido, y se pretende calcular las probabilidades de error
anteriormente expresadas en ecuaciones A.9 y A.10 se tiene:

y2
f 1 f 
2σ 2
Pe0 = ³U pN (y)dy = 2
³U e dy = Q(U/ σ)
2πσ
(A.22)
e igualmente:

(y-A)2
U 1 U 
2σ 2
Pe1 = ³-f pN (y-A)dy = 2
³f e dy = Q((A-U)/ σ)
2πσ
(A.23)

Cuando U U opt las curvas se cortan en el punto medio U opt A/ 2 .

489
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

las probabilidades de error son iguales y resultan ser:

Pe0 = Pe1 = Q(A/ 2σ)


1
Pe = (Pe0 +Pe1 ) = Q(A/ 2σ)
2
(A.24)

Esta es la mínima probabilidad de error binaria en presencia de ruido Gaussiano


blanco aditivo cuando los dígitos son igualmente probables. Como puede verse,
el término A / 2σ o su correspondiente valor elevado al cuadrado, define la
magnitud de los errores en el sistema, o sea la probabilidad de error para un
receptor dado.
Este resultado es el mismo para la señalización polar cuando la distancia entre
los símbolos permanece constante e igual a A ( ak r A / 2 ).
Para vincular la probabilidad de error y la relación señal ruido, se plantea
primeramente el cálculo de la potencia asociada a la secuencia de valores del
alfabeto de M elementos expresada en la ecuación (A.1).
Si se determina que T0 es un período lo suficientemente grande para una
secuencia de valores transmitida en espacios de tiempo T , tal que T0 NT , y
N !! 1 , se tendrá para señalización con pulsos rectangulares:

­1 |t|  τ / 2
p(t) = ®
¯0 |t| ! τ/ 2
(A.25)

Siendo τ d T

1 T0 / 2 1 T0 / 2 1 T0 / 2 k=N/ 2
SR = ³ ( ¦ ak p(t-kT))2dt = ³ ¦ a p (t-kT)dt = T ³
2
k
2
¦ a p (t-kT)dt
2
k
2

T0 T0 / 2
k T0 T0 / 2
k 0
T0 / 2
k=-N/ 2

1 T/ 2 N0 T/ 2 N1 T/ 2
SR = ¦ NT ³
k
T/ 2
ak2 p2(t)dt =
NT ³
T/ 2
a02 p2(t)dt+
NT ³
T/ 2
a12 p2(t)dt

1 W/ 2 2 2 1 W/ 2
SR = P0 ³
T W/ 2
a0 p (t)dt+ P1 ³ a12 p2(t)dt
T W/ 2
(A.26)

490
Apéndice A

El formato empleado puede ser sin retorno a cero, o en Inglés “Non Return to
Zero” (NRZ), donde el pulso dura en tiempo todo el instante disponible es
decir, T τ Tb , o bien con retorno a cero, o en Inglés “Return to Zero” (RZ),
es decir, τ  Tb . Si el formato es NRZ:

SR = A2/2 Unipolar NRZ

SR = A2/4 Polar NRZ

­
° 2S R Unip olar
A= ®
°̄ 4SR polar
(A.27)

Si σ 2 es la potencia de ruido N R a la salida del filtro, puede decirse entonces


que:
2
§ A · A2 ­(1 / 2 )(S/N)R Unipo lar
¨ ¸ = =®
© 2σ ¹ 4N R ¯(S/N)R Polar
(A.28)

En el formato unipolar se necesita el doble de potencia que en el polar para


tener la misma probabilidad de error.
Se ha determinado el valor de la probabilidad de error en función del cociente
A / 2σ .
Para la medición de sistemas binarios se definen los siguientes parámetros:

SR
Eb = Energía promedio por bit (A.29)
rb

Eb SR
Relación de la energía por bit a la densidad espectral de
N0 N0 rb
potencia de ruido (A.30)

La energía promedio por bit para los valores discretos de la secuencia


expresada en ecuación (A.1) puede ser calculada como:

491
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

f f f
E b = E [a k2 ³f p ³f p (t)dt ] = ak2 ³f p 2 (t)dt
2
(t-kD)dt] = E [a k2 2

(A.31)

Se realiza el cálculo de estos parámetros para el caso del formato Unipolar


NRZ.
En el formato polar NRZ el uno esta representado por un pulso rectangular de
amplitud A mientras que el cero es ausencia de amplitud:

s1 ( t ) s0 ( t )

A A

0 0
t t
Tb Tb

Figura A.8 Señalización en formato unipolar NRZ


La energía promedio por bit E b se calcula como:

Tb

³ s1 ( t )dt
2
E1 A 2Tb
0
Tb

³ s0 ( t )dt
2
E0 0
0

1 A 2Tb
Eb P0 E0  P1E1 ( E 0  E1 )
2 2
(A.32)

Dado que la transmisión se realiza sobre un canal de ancho de banda B que


tiene ruido Gaussiano, blanco y aditivo, y para el caso de la velocidad máxima
de señalización [1,2,3,4] rb 2B el ruido entrante al sistema es igual a:

N0 rb
NR σ2 N0 B
2
(A.33)

492
Apéndice A

Esta es la cantidad mínima de ruido entrante al sistema empleando el filtro


óptimo [1,2,3,4]. El cociente A / 2σ 2 se puede expresar en función de los
términos calculados como:

A2 2 E b rb Eb
A / 2σ 2
4σ 2 4 N0 rb / 2 N0
(A.34)

Para el caso del formato polar NRZ los símbolos binarios enviados son el uno 1
como un pulso rectangular de amplitud A / 2 , y el cero 0, como un pulso
rectangular de amplitud  A / 2 :

s1 ( t ) s0 ( t )

A/ 2
0 0
A/ 2
t t
Tb Tb

Figura A.9 Señalización en formato polar NRZ

La energía promedio por bit E b se calcula como:

Tb
A 2Tb
³ s1 ( t )dt
2
E1
0 4
Tb
A 2Tb
³ s0 ( t )dt
2
E0
0 4

493
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

1 A 2Tb
Eb P0 E0  P1E1 ( E 0  E1 )
2 4
(A.35)

Luego:

A2 4 E b rb 2E b
A / 2σ 2
4σ 2 4 N0 rb / 2 N0
(A.36)

Nuevamente se observa que el formato polar duplica el valor de A / 2σ 2 para


la misma cantidad de relación energía promedio por bit a densidad espectral de
ruido E b / N0 :

­ Eb
2° Unipola r
§ A · ° N0
¨ ¸ =®
© 2σ ¹ ° 2E b
Polar
°¯ N0
(A.37)

Como se ha visto previamente, la probabilidad de error depende del termino


( A / 2σ )2 , con lo que para los formatos unipolar y polar en señalización
binaria se tiene:

­ § E ·
°Q¨ b ¸
Unipol ar
° ©¨ N ¸
0 ¹
Pe = ®
° §¨ 2 E b ·¸
°Q¨ N ¸ Polar
¯ © 0 ¹

(A.38)

Este es el mínimo valor de probabilidad de error que puede obtenerse y se


registra cuando se emplea el filtro óptimo. Cualquier otro tipo de filtro
producirá mayor cantidad de errores que el número expresado en ecuación

494
Apéndice A

(A.38). El filtro óptimo genera la mejor relación señal ruido posible desde el
punto de vista del receptor, para un dado pulso de entrada.

495
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Bibliografía
1. A. Bruce Carlson, COMMUNICATION SYSTEMS - An Introduction To
Signals And Noise In Electrical Communication, tercera Edicion, Mc. Graw
Hill, 1986.
2. Bernard Sklar, DIGITAL COMMUNICATIONS - Fundamentals And
Applications, Prentice Hall, 1988.
3. Leon W. Couch, DIGITAL AND ANALOG COMMUNICATIONS SYSTEMS.
MacMillan Publishing Co. Inc, 1996.
4. John G. Proakis, Masoud Salehi, COMMUNICATION SYSTEMS
ENGINEERING, Prentice Hall, 1994.

496
Apéndice B:
Campos de Galois GF(q)

En este apéndice se pretende dar nociones acerca de las operaciones en los


denominados campos finitos, o de Galois, iniciando tal descripción con la
introducción de conceptos relacionados como lo son los grupos. El objeto del
capítulo es la aplicación de estas estructuras algebraicas a las operaciones de
polinomios definidos sobre las mismas. El concepto mas importante es que un
polinomio definido sobre un campo GF( p primo ) tiene raíces en ese campo, o
en una extensión del mismo, GF (q ) . Igualmente cada elemento a de la
extensión de un campo finito GF( q ) es cero de algún polinomio con
coeficientes en el campo GF( p primo ) . El polinomio de grado mínimo que
cumple esa condición se denomina polinomio mínimo de a .

B.1 Grupos
Un grupo Gr se define como un conjunto de elementos que se relacionan por
medio de operaciones.
Para un conjunto Gr de elementos se define la operación binaria que es una
regla de asignación tal que para dos elementos a y b del conjunto se asigna un
único otro elemento de ese conjunto que es c a b . Esta operación es
cerrada sobre Gr dado que resulta en otro elemento que es también integrante
del grupo. Tal operación se dice que es asociativa si se cumple que:

a b c a b c
(B.1)

497
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Definición de Grupo:

Un conjunto Gr sobre el cual se define una operación binaria se dice que es


un grupo si se cumplen las siguientes condiciones:

1 La operación binaria es asociativa


2 El conjunto Gr contiene un elemento e tal que para todo elemento
a  Gr :

e a a e a
(B.2)

El elemento e es llamado la identidad para la operación .

3 Para todo elemento del conjunto a  Gr existe otro elemento del mismo
conjunto a'  Gr tal que:

a a' a' a e
(B.3)

El elemento a' es denominado inverso de a .

Un grupo se dice conmutativo si para todo par de elementos a, b  Gr se


cumple que:

a b b a .
(B.4)

Se puede demostrar que tanto la identidad e como el inverso de cada elemento


a , a' , son únicos en un grupo. El número de elementos de un grupo se
denomina orden del grupo. Un grupo con un orden finito se denomina grupo
finito.

B.2 Suma y multiplicación módulo - m


Para un conjunto de números enteros denominado grupo
Gr ^0,1,2,..., i , j ,...m  1` ,
La operación † entre dos números i y j se define como:

498
Apéndice B

i † j =r
r (i  j) mod (m)
(B.5)

Es decir la suma entre dos elementos i y j es el resto de la división de la


adición tradicional ( i  j ) por m . Esta operación se la denomina adición en
módulo - m.
La suma o adición módulo - 2 por ejemplo se define sobre el grupo Gr ^0,1` :

0 †0 = 0
1 †1 = 0
0 †1 = 1
1†0 =1

Como ejemplo, el último resultado surge del cálculo 1  0 1 , 1 / 2 0 con


resto 1 , entonces 1 † 0 1 .
Un grupo compuesto por un número p primo de elementos
Gr ^1,2,3,..., pprimo  1`, donde p primo es un número primo
p primo : 2,3 ,5 ,7 ,11,.... “, resulta ser un grupo conmutativo bajo la operación
suma módulo – p primo .
La multiplicación módulo - p primo entre dos números i y j se define como:

i … j =r
r ij mod p primo
(B.6)

Para el caso del grupo binario Gr ^0,1` esta operación actúa según la tabla
siguiente:

0 …0=0
1 …1 =1
0 …1 = 0
1…0=0

499
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Como ejemplo, el último resultado surge de la calculo 1x0 0, 0/ 2 0 con


resto 0 , entonces 1 … 0 0 .

B.3 Campos
La noción de grupo resulta útil e introductoria para la definición de los
llamados campos. Un campo es un conjunto F de elementos en donde la suma,
la multiplicación, la resta y la división producen como resultado elementos que
son siempre del campo.
Se puede definir el conjunto F de elementos bajo dadas operaciones. Si las
operaciones son suma y multiplicación las siguientes condiciones definen el
campo:

1 F es un grupo conmutativo frente a la adición. El elemento identidad para


la suma se denomina cero ' 0' .
2 F es un grupo conmutativo frente a la multiplicación. El elemento
identidad para la multiplicación se denomina uno '1' .
3 La multiplicación es distributiva frente a la adición:

a(b  c) = ab + ac
(B.7)

El número de elementos de un campo se denomina orden del campo. Un campo


con un número finito de elementos se denomina campo finito, o campo de
Galois, GF .
El inverso frente a la suma para un elemento a  F de un campo se denomina
 a , y el inverso para la multiplicación es llamado a 1 . Las operaciones
sustracción y división se definen en base a estos elementos como:

a-b = a + (-b) ,
a/b = a(b -1 )
(B.8)

El conjunto Gr ^0,1` definido bajo los operadores de suma y multiplicación


módulo-2 es tal que Gr ^0,1` es un grupo conmutativo frente a la adición,
mientras que G1 ^1` es un grupo conmutativo bajo la multiplicación. Puede
verificarse que el grupo Gr ^0,1` es también un campo finito. Este es un
campo binario denominado GF( 2 ) .

500
Apéndice B

Las operaciones dentro de este campo se definen de acuerdo a las siguientes


tablas:

Suma módulo-2

† 0 1
0 0 1
1 1 0

Tabla B.1. Suma en módulo - 2


Producto módulo-2

x 0 1
0 0 0
1 0 1

Tabla B.2. Producto en módulo - 2

Para un dado número primo p primo el conjunto de enteros


^0,1,2,3,..., pprimo  1`es un grupo conmutativo bajo la operación suma módulo
p primo . El conjunto de enteros ^1,2,3,..., p primo  1` es un grupo conmutativo
bajo la multiplicación módulo p primo . Este conjunto entonces es un campo de
orden p primo . Se denominan campos primos GF( p primo ) .
Una extensión de un campo primo GF( p primo ) es denominado campo finito
m
extendido GF( q ) GF( p primo ) , con m número positivo entero, y resulta ser
también un campo de Galois. Un caso particular de estas extensiones son los
campos finitos de la forma GF( 2 m ) , donde m es un número positivo entero.
En un campo finito GF( q ) , y siendo a  GF( q ) resulta como consecuencia
de que el campo es cerrado frente a la operación multiplicación, que las
potencias del elemento a  GF( q ) :

a1 a; a 2 a x a; a 3 a x a x a....

serán elementos del campo finito GF( q ) . Sin embargo el campo es finito con
lo cual estas potencias deben en algún momento comenzar a repetirse. Dicho de

501
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

otra forma tendrán que existir dos enteros k y m tales que m ! k y a m a k .


Como a  k es el inverso multiplicativo de a k , entonces a k a m a k a k o bien
a mk 1 . Existe entonces un número n tal que a n 1 y ese número se lo
denomina el orden del elemento a . De esta manera las potencias
a1 ; a 2 ; a 3 ,..., a n 1 son todas distintas, y forman un grupo bajo la
multiplicación de GF( q ) .
Puede demostrarse entonces que si a es un elemento no nulo del campo finito
GF( q ) , entonces a q 1 1 . También es cierto que si a es un elemento no
nulo del campo finito GF( q ) , y n es el orden de ese elemento, entonces n
divide a q  1 .
En un campo finito GF( q ) un elemento no nulo a del mismo se dice
primitivo si el orden de ese elemento es q  1 . Un elemento primitivo genera a
través de todas sus potencias todos los elementos no nulos del campo finito
GF( q ) . Todo campo finito tiene algún elemento primitivo.

B.4 Polinomios en campos binarios


Los campos binarios más empleados son extensiones del campo GF( 2 ) , que se
denominan campos GF( 2 m ) .
La aritmética binaria usa la multiplicación y la suma módulo-2. Un polinomio
f ( X ) definido sobre GF( 2 ) tiene la siguiente forma:

f(X) = f0+f1 X+f 2 X 2+...+f n X n


(B.9)

Donde los fi son 0 o 1 .


El exponente más alto de la variable X se denomina grado del polinomio. Para
un cierto valor del grado del polinomio n , existen 2 n diferentes polinomios
con ese grado. Ejemplos son:

n=1 X , X+1
n=2 X 2 , 1+X 2 , X+X 2 , 1+X+X 2

La suma y multiplicación se realizan usando operaciones módulo-2. Los


polinomios sobre GF( 2 ) operan multiplicando y sumando en módulo-2, y

502
Apéndice B

cumplen con las propiedades conmutativa, asociativa y distributiva. Una


operación importante es la división entre polinomios.
Por ejemplo para dividir el polinomio X 3  X  1 por X  1 , se realizan los
siguientes pasos:

X3 + X+1 | X+1
-- ---------------
3 2
X +X X2  X
--------------
X 2 + X +1
X 2+ X
----------
r(X) 1

La división adopta la forma:

f(X) = q(X)g(X)+r(X)
(B.10)

donde en este ejemplo:

r(X) = 1
q(X) =X+X 2

Definición B.1: Un elemento a se dice que es cero o raíz de un polinomio


f ( X ) si sucede que f ( a ) 0 . Cuando un elemento a es raíz de un polinomio
entonces f ( a ) 0 , y sucede que ese polinomio es divisible por X  a .

Así por ejemplo el polinomio f ( X ) 1  X 2  X 3  X 4 tiene como raíz a


a 1 , por lo cual es divisible por X  1 , operación que resulta en un cociente
q( X ) 1  X  X 3 (recuérdese que el inverso aditivo de a ,  a es igual a a ,
a a en operación módulo-2).

Definición B.2: Un polinomio p( X ) sobre GF( 2 ) de grado m se dice


irreducible, si p( X ) no es divisible por ningún polinomio de grado mayor que
cero y menor que m .

503
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Por ejemplo 1  X  X 2 es un polinomio irreducible debido a que ni X ni


X  1 lo dividen con resto cero. Un polinomio de grado 2 es irreducible
cuando no es divisible por ningún polinomio de grado 1.
Una propiedad de los polinomios irreducibles sobre un campo GF( 2 ) de grado
m
1
m es que dividen al polinomio X 2 + 1 . Por ejemplo el polinomio
3
3 2 1 7
X  X  1 divide a X +1 = X +1.
Un polinomio irreducible p( X ) de grado m es polinomio primitivo si el más
pequeño entero positivo n para el que p( X ) divide a X n  1 es n 2 m 1 .

4
Por ejemplo X 4  X  1 divide a X 2 1 + 1 = X 15 + 1 pero no divide ningún
polinomio de la forma X n + 1 siendo 1 d n  15 . Por lo tanto es un
polinomio primitivo.
Otra interesante propiedad de los polinomios sobre GF( 2 ) es que:

f ( X ) 2
l l
f( X 2 )
(B.11)

B.5 Construcción de un campo de Galois GF(2m)


Para construir un campo de Galois se asume que no solo los elementos ' 0' y
'1' existen, sino que también aparece el elemento α y sus potencias.
Para este nuevo elemento:

0α = α 0 = 0
1.α = α1 = α
α 2 = αα , α 3 = αα 2
α i α j = α i+j = α j α i

Un conjunto de estos elementos se define como:

F ^0,1,α ,α 2
`
,..., α k ,...
(B.12)

504
Apéndice B

Este conjunto contendrá solo 2 m elementos. Debido a que un polinomio


m
1
primitivo p( X ) sobre GF( 2 ) de grado m , divide a X 2 + 1 , y asumiendo
como cierto que p( α ) 0 , entonces:

m
1
X2 +1 = p(X)q(X)
m
1
α2 +1 = p(α= p( )=0
m
1
α2 =1
(B.13)

El conjunto F se transforma en un conjunto finito con 2 m elementos:

m
2
F { 0 ,1, α , α 2 ,..., α 2 }
(B.14)

La condición:

i+j<2 m  1
(B.15)

debe cumplirse para que al multiplicar dos elementos del campo, α i y α j el


resultado siga perteneciendo al mismo campo. Si:

i+j = ( 2 m -1 ) + r , 0 d r<2 m -1
m
α i α j = α ( i  j )=α ( 2 1 ) r
=α r
(B.16)

de esta manera el grupo es cerrado frente a la multiplicación. Por otro lado,


para un número entero i tal que 0<i<2 m -1 ,

m
1i
α2 es el inverso multiplicativo de α i
(B.17)

505
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

m
Así, el conjunto F { 0 ,1, α , α 2 ,..., α 2 2 } es un grupo de orden 2 m  1 frente
a la multiplicación. Para hacer que el grupo sea un grupo conmutativo frente a
la adición se debe definir la operación adición sobre tal conjunto F .

Para: 0 d i<2 m -1 , X i es dividido por p( X ) :

X i = q i (X)p(X)+ai (X)
(B.18)

ai ( X ) es de grado m  1 o menor, a(X) = a i 0+a i1 X+a i 2 X 2+...+a i,m-1 X m- 1 .


Para 0 d i,j <2 m -1 ,

ai (X) z a j (X)
(B.19)

si i = 0,1,2,...,2 m -2

Se pueden obtener 2 m  1 diferentes polinomios ai ( X ) .

D i = qi (D )p(D ) + ai (D ) ai (D )
D i = ai 0 +ai 1 X + ai 2 X 2 +...+a i,m- 1 X m- 1
(B.20)

Estos polinomios representaran 2 m 1 elementos no nulos


0 1 2 2 m 2
α , α , α , ...., α .
m
Se ve que existen 2  1 polinomios diferentes de α sobre el campo
GF( 2 ) que representaran a los 2 m  1 diferentes elementos no nulos del
campo F . Esto permitiera encontrar un equivalente en palabra binaria de cada
elemento del campo.

La operación suma se define como:

0 †0 = 0
0 †αi = αi †0 = αi

506
Apéndice B

Luego,

α i † α j = (ai 0 † a j 0 )  (ai1 † a j1 )X  (ai 2 † a j 2 )X 2  ...  (ai,m-1 † a j,m-1 )X m- 1

(B.21)

donde la suma elemento a elemento es realizada como suma módulo - 2. Esto


m
es, la suma de dos elementos del grupo F { 0 ,1, α , α 2 ,..., α 2 2 } es la OR
Exclusiva entre los bits de las representaciones binarias que corresponden a
esos elementos, y que equivalen a las correspondientes expresiones
polinómicas en D . Esta operación es realizada bit a bit.
Este tipo de conjuntos F de elementos definidos como se hizo previamente es
un grupo conmutativo frente a la suma, y el conjunto de elementos no nulos de
F es conmutativo frente a la multiplicación. Como consecuencia de esto, el
conjunto:

m
2
F { 0 ,1, α , α 2 ,..., α 2 }

es un campo de Galois de 2 m elementos, GF( 2 m ) .

Ejemplo B.1: Sea m 3 . pi ( X ) 1  X  X 3 es un polinomio primitivo


sobre GF( 2 ) . Dado que p( α ) 1  α  α 3 0 , entonces α 3 1  α . El
3
campo GF( 2 ) se puede construir entonces haciendo uso de la relación
anterior. Así por ejemplo α 4 αα 3 α(1  α ) α  α2 .

507
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Representación Exp. Representación Polinómica Representación


Binaria

0 0 0 0 0
1 1 1 0 0
α α 0 1 0
2 2
α α 0 0 1
3
α 1 α 1 1 0
4 2
α α α 0 1 1
5 2
α 1 α α 1 1 1
6 2
α 1 α 1 0 1

Tabla B.3. Campo de Galois GF( 2 3 ) generado por pi ( X ) 1 X  X3

La tabla muestra los elementos del campo GF( 2 3 ) . Por ejemplo el producto
de dos elementos en el campo se resuelve como:

α 4 α 6 = α 10 = α 10-7 = α 3

Y la suma es por ejemplo:

α 2 + α 4= α 2 + α + α 2 = α

Otra característica interesante es poder representar la versión binaria de cada


elemento del campo. La suma OR Exclusiva bit a bit entre las componentes de
la representación binaria se emplea para obtener la suma de dos elementos del
campo.

Ejemplo B.2: Determine la tabla del campo de Galois GF( 2 4 ) tomando como
polinomio primitivo a pi ( X ) 1  X  X 4 .
De acuerdo al polinomio primitivo se tiene entonces que
pi ( α ) 1  α  α 4 0 , o bien α 4 1  α .

508
Apéndice B

El campo generado es GF( 2 4 ) y se observa en la tabla B.4:

Representación Exp. Representación Polinómica Representación


binaria

0 0 0 0 0 0
1 1 1 0 0 0
α α 0 1 0 0
2 2
α α 0 0 1 0
3 3
α α 0 0 0 1
4
α 1 α 1 1 0 0
5 2
α α α 0 1 1 0
6 2 3
α α α 0 0 1 1
7 3
α 1 α α 1 1 0 1
8 2
α 1 α 1 0 1 0
9 3
α α α 0 1 0 1
10 2
α 1 α α 1 1 1 0
11 2 3
α α α α 0 1 1 1
12 2 3
α 1 α α α 1 1 1 1
13 2 3
α 1 α α 1 0 1 1
14 3
α 1 α 1 0 0 1

Tabla B.4. Campo de Galois GF( 2 4 ) generado por pi ( X ) 1 X  X4

B.6 Propiedades de los campos de Galois GF(2 m )

Así como los polinomios definidos en las variables tradicionales con


coeficientes en el campo de los números reales pueden tener raíces fuera de ese
campo, por ejemplo en el campo de los números complejos, de la misma forma
polinomios definidos sobre el campo GF( 2 ) pueden tener sus raíces en campos
de nivel extendido respecto de este, es decir por ejemplo en GF( 2 m ) . Como
un ejemplo, el polinomio pi ( X ) 1  X 3  X 4 es irreducible sobre GF( 2 )

509
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

dado que no tiene raíces dentro de ese campo, pero sin embargo tiene sus cuatro
raíces definidas sobre el campo GF( 2 4 ) . Realizando un reemplazo con los
elementos definidos en la tabla B.4 del ejemplo anterior de GF( 2 4 ) puede
verificarse que α 7 ,α 11 ,α 13 y α 14 son efectivamente raíces de este polinomio.
Una consecuencia de esto es que si eso es cierto, entonces se debe cumplir que:

pi ( X ) 1  X 3  X 4 ( X  α 7 )( X  α 11 )( X  α 13 )( X  α 14 )
>X  α  α X  α @>X  α  α X  α @
2 7 11 18 2 13 14 27

>X  α X  α @>X  α X  α @ X  α  α X  α
2 8 3 2 2 12 4 8 2 3 12

 α 10  α 3 X 2 
 α  α X  α
20 5
X  X 1 15 4 3

El siguiente teorema determina una condición sobre las raíces de un polinomio


tomadas de un campo extendido. Conociendo alguna raíz β del polinomio, el
teorema permite calcular todas las restantes raíces de ese polinomio.

Teorema B.1: Sea f ( X ) un polinomio definido sobre el campo GF( 2 ) . Si β


es un elemento del campo extendido GF( 2 m ) y además es raíz del polinomio
l
f ( X ) , entonces para cualquier entero positivo no nulo l t 0 , β 2 es también
raíz de ese polinomio.
La demostración se basa en la ecuación (B.11), simplemente realizando el
correspondiente reemplazo.

f ( β ) 2
l l l
( 0 )2 f ( β2 ) 0

l
El elemento β 2 se denomina el conjugado de β .
Este teorema dice que si β es un elemento del campo extendido GF( 2 m ) y
además es raíz del polinomio f ( X ) , sus conjugados, que también son
elementos del campo GF( 2 m ) , son raíces de ese polinomio.

Ejemplo B.3:
Para el caso analizado donde el polinomio sobre GF( 2 )
3 4 7
pi ( X ) 1  X  X tiene como raíz a α entonces tendrá también como

510
Apéndice B

raíces a α 7 2
α 14 D
7 4
D 28 D 13 y a α 7
8
α 56 α 11 . Aquí se
encuentran todas las raíces dado que α 7 16
α 112 α 7 comienza a repetirse.
En el ejemplo anterior se verifica en ese caso que β α 7 cumple con
β2
m
1
β15 α 7 15
α 105 α0 1 . En general puede verificarse que se
m
1
cumple que β 2 1 , cuestión que se deduce de que para un elemento
a  GF( q ) perteneciente a un campo finito se cumple que a q 1 1 . O bien:

m
1
β2 1 0

m
1
es decir que β es raíz del polinomio X 2  1 . En general cada elemento no
m
1
nulo de GF( 2 m ) es raíz del polinomio X 2  1 . Como el grado del
m
1
polinomio X 2  1 es 2 m  1 , los 2 m  1 elementos no nulos de GF( 2 m )
m
son todas las raíces de X 2 1  1 .
Equivalentemente se puede decir que como el elemento nulo 0 de GF( 2 m ) es
raíz del polinomio X , entonces se puede enunciar que:

m
Los elementos de GF( 2 m ) son todas las raíces de X 2  X .

B.7 Polinomios mínimos


m
Como cada elemento β de GF( 2 m ) es una raíz del polinomio X 2  X , el
mismo elemento podría ser una raíz de un polinomio definido sobre
GF( 2 ) cuyo grado sea menor que 2 m .

Definición B3: Se denomina polinomio mínimo de β , φ( X ) , al polinomio de


menor grado sobre GF( 2 ) tal que β es raíz de ese polinomio, es decir tal
que φ( β ) 0 .
Así el polinomio mínimo del elemento nulo 0 es X , el polinomio del
elemento 1 es 1  X .

511
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

B.7.1 Propiedades de los polinomios mínimos

Los polinomios mínimos poseen algunas propiedades [1].

Teorema B.2:

El polinomio mínimo de un elemento β de GF( 2 m ) es irreducible.

La demostración de esta propiedad se basa en el hecho que si no fuera


irreducible el polinomio se podría expresar como producto de otros dos,
φ( X ) φ1 ( X )φ2 ( X ) pero siendo cierto que φ( β ) φ1 ( β )φ2 ( β ) 0
determina que o φ1 ( β ) 0 o bien φ2 ( β ) 0 , hecho contradictorio con que
φ( X ) sea el de grado mínimo.

Teorema B.3:

Para un polinomio f ( X ) definido sobre GF( 2 ) y siendo φ( X ) el polinomio


mínimo del elemento β , entonces si β es raíz de f ( X ) , luego f (X ) es
divisible por I (X ) .

Teorema B.4: El polinomio mínimo I (X ) de un elemento β de GF( 2 m )


m
divide a X 2  X .

Teorema B.5: Si f ( X ) es un polinomio irreducible sobre GF( 2 ) y siendo β


un elemento de GF( 2 m ) cuyo polinomio mínimo es φ( X ) , sucede que
f ( β ) 0 , entonces f ( X ) φ( X ) .

Este ultimo teorema significa que si un polinomio irreducible tiene al elemento


β como raíz, entonces ese polinomio es el polinomio mínimo φ( X ) de ese
elemento β .

Finalmente se tiene el siguiente teorema:

Teorema B.6: Sea φ( X ) el polinomio mínimo de un elemento β de GF( 2 m )


e
y sea el entero más pequeño e para el cual se cumple que β 2 β entonces el
polinomio mínimo de β es:

512
Apéndice B

e 1 l
φ( X ) –( X  β 2 )
i 0

Ejemplo B.4:

Se desea determinar el polinomio mínimo φ( X ) de β α 7 en GF( 2 4 ) .


Como se ha visto en un ejemplo anterior β2 α 7 2
α 14
β2
2
α
7 4
α 28 α 13 y β2
3
α 7 8
α 56 α 11 . Dado que
β2
e
β16 α
7 16
α 112 α7 β , entonces e 4 de manera que:

φ( X ) ( X  α 7 )( X  α 11 )( X  α 13 )( X  α 14 )
>X  α  α X  α @>X  α  α X  α @
2 7 11 18 2 13 14 27

>X  α X  α @>X  α X  α @ X  α  α X  α
2 8 3 2 2 12 4 8 2 3 12

 α 10  α 3 X 2 
 α  α X  α
20 5
X  X 1 15 4 3

Al construir un campo de Galois GF( 2 m ) se emplea el polinomio primitivo


pi ( X ) de grado m que requiere que α sea raíz de pi ( X ) . Dado que todas
las potencias de α generan todos los elementos de GF( 2 m ) , se dice que α es
un elemento primitivo.

En la siguiente tabla se dan los polinomios primitivos de los elementos del


campo de Galois GF( 2 4 ) generado por pi ( X ) 1  X  X 4 visto en el
ejemplo B.3.

513
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Raíces conjugadas Polinomios Mínimos

0 X
1 1 X
α ,α 2 ,α 4 ,α 8 1 X  X4
α 3 ,α 6 ,α 9 ,α 12 1 X  X2  X3  X4
α 5 ,α 10 1 X  X2
α 7 ,α 11 ,α 13 ,α 14 1 X3  X4

Tabla B.5. Polinomios mínimos de los elementos de GF( 2 4 ) generado por


pi ( X ) 1  X  X 4 .

Para la construcción de un campo de Galois GF( 2 m ) se emplea un polinomio


primitivo p( X ) de grado m del cual se requiere que el elemento de ese campo
α sea raíz del polinomio p( α ) 0 . Dado que todas las potencias de α
generan los elementos no nulos del campo de Galois GF( 2 m ) , se dice que α
es un elemento primitivo.
A su vez, todos los conjugados de α son elementos primitivos del campo de
Galois GF( 2 m ) . En general puede concluirse que si β es un elemento
l
primitivo del campo de Galois GF( 2 m ) , entonces todos sus conjugados β 2
son también elementos primitivos del campo de Galois GF( 2 m ) .

514
Apéndice B

Bibliografía

1. Lin, S. y Costello, D. J., Jr., Error Control Coding: Fundamentals and


Applications, Prentice Hall, inc. Englewood Cliffs, New Jersey, 1983.

2. Allenby, R. B. J., Rings, Fields and Groups. An Introduction to Abstract


Algebra, Edward Arnold Publishers ltd. 1983.

3. Hillma, A. P. y Alexanderson, G. L., A First Undergraduate Course in


Abstract Algebra, Sgunda edición. Wadsworth Publishing Company, Inc.
Belmont, California, 1978.

4. McEliece, R. J., Finite Fields for Computer Scientists and Engineers,


Kluwer Academic Publishers, 1987.

515
Respuestas a los problemas
Capítulo 1
1.1) a) 1.32, 2.32, 2.32, 3.32, 4.32, 4.32, 2.22, b) 2.58, 86%
1.2) a) 1.875 bits/símbolo, b) 17 bits
1.3) 0.722, 0.123, 0.189
1.5) 0.0703, 0.741
1.6) 0.3199
1.7) 1, 0.8112, 0.9182
1.8) 1, 0.25, 0.75, 1, 0.38, 0.431, 0.531
1.9) 0.767, 0.862 para D 0.48
1.11) 0.622, 0.781, 79.6 %
1.12) a) 29902 bps, b) 19.21 dB
1.13) 150053 bps

Capítulo 2
2.1) Ver capítulo 2, sección 2.2
2.2) 5, 10
2.3) a) 11, b) n, 10, c) 11
ª1 0 0º
«0 1 0 »»
ª0 1 1 1 0 0 º «
«1 0 1 0 1 0 » «0 0 1»
2.4) a) 0.5, b) G « » HT « » , c) 3, d) 1, 2,
«¬1 1 0 0 0 1 »¼ «0 1 1»
«1 0 1»
« »
¬«1 1 0 ¼»
e) 110 , error en la sexta posición
ª1 0 0 1 1 º
ª1 1 1 1 0 º «0 1 0 1 0 »
2.5) Una posible solución: G «1 0 1 0 1 » , H « »
¬ ¼ «¬0 0 1 1 1 »¼

517
Codificación para el control de errores / Jorge Castiñeira Moreira - Patrick Guy Farrell

ª1 0 0 0 0 0 0 0 0 0 1 1 1º
«0
« 1 0 0 0 0 0 0 0 0 1 0 1 »»
«0 0 1 0 0 0 0 0 0 0 0 1 1»
« »
«0 0 0 1 0 0 0 0 0 0 1 1 0»
«0 0 0 0 1 0 0 0 0 0 1 0 0»
2.6) a) « » , b) 7
«0 0 0 0 0 1 0 0 0 0 0 1 0»
«0 0 0 0 0 0 1 0 0 0 0 0 1»
« »
«0 0 0 0 0 0 0 1 0 0 1 1 1»
« »
«0 0 0 0 0 0 0 0 1 0 1 0 1»
«¬0 0 0 0 0 0 0 0 0 1 0 1 1 »¼

2.7) b) 0.25, 5, c) 2.1x10-8

ª1 0 0 0 0 0 1 0 1 1 0 1 1 1 1º
«0
« 1 0 0 0 1 0 1 0 1 1 1 1 0 1»»
2.8) a) H , c)
«0 0 1 0 1 0 0 1 1 0 1 1 0 1 1»
« »
¬0 0 0 1 1 1 1 0 0 0 1 0 1 1 1¼
0110 ,
error en la posición 8.

2.9) a) 6, b) 4, c) 0.6, e) 0010111111 , f) 0110


2.10) a) 0.73, 1.04x10-4, b) 0.722, 4.5x10-7
2.11) a) Opción 3, b) 1.5 dB
2.12) a) 12 / 11 rb , 15 / 11 rb , 16 / 11 rb , b) 7.2 dB, 6.63 dB, 5.85 dB

Capítulo 3
3.1) Es para n 6
3.2) 01010101
3.3) a) 0.43, 4, b) 0010111 , c) r )( X ) 1
3.5) a) 0001011111 1111 , b) 00111 , Si, c) Si
3.6) a)

518
Respuestas a los problemas

00 0 0 0 0 0 0
01 1 0 1 1 0 1
10 1 1 0 1 1 0
11 0 1 1 0 1 1

b) 4, l 3 , t 1
3.7) a) 8, 6, b) 256, d) 3, e) 6
3.8) a) 000011001101011 , b) un patrón corregible en la posición 5

Capítulo 4

4.2) Ejemplos de dos elementos: α 9 o α  α 3  α 4 o 01011 ,


20 2 3
α o α  α o 00110
4.3)
α X
1 1 X
α ,α 2 ,α 4 ,α 8 ,α 16 1 X2  X5
α 3 ,α 6 ,α 12 ,α 24 ,α 17 1 X2  X3  X4  X5
α 5 ,α 10 ,α 20 ,α 9 ,α 18 1  X  X 2  X 4  X 5
α 7 ,α 14 ,α 28 ,α 25 ,α 19 1 X  X2  X3  X5
α 11 ,α 22 ,α 13 ,α 26 ,α 21 1 X  X3  X4  X5
α 15 ,α 30 ,α 29 ,α 27 ,α 23 1 X3  X5

4.4) g( X ) 1  X  X 2  X 3  X 5  X 7  X 8  X 9  X 10  X 11  X 15
4.5) g( X ) 1  X 3  X 5  X 6  X 8  X 9  X 10 , 21, d min 7
4.6) a) 6
4.7) g( X ) 1  X 4  X 6  X 7  X 8 , d min 5
4.8) b) las raíces consecutivas son 1,α ,α 2 ; 2
4.9) e( X ) 1  X 8
4.10) errores en las posiciones j1 11 y j 2 4
7 30
4.11) a) e( X ) X X , b) No detecta las posiciones de error

519
Codificación para el control de errores / Jorge Castiñeira Moreira - Patrick Guy Farrell

Capítulo 5

ª1 1 0 º
5.1) G «1 0 1 » , 2, α
¬ ¼

5.2) a) g( X ) X 4  α 13 X 3  α 6 X 2  α 3 X  α 10 , b) e( X ) αX 3  α 11 X 7 ,
c) e( X ) α 8 X 5
5.3) a) g( X ) X 6  α 10 X 5  α 14 X 4  α 4 X 3  α 6 X 2  α 9 X  α 6 , b) 15 ,9
5.4) e( X ) α 7 X 3  α 3 X 6  α 4 X 12
5.5) a) 2, b) 1111111
ª1 0 4 3 º
5.6) a) 25, G «0 1 2 3 » , 3, b) 1234
¬ ¼
5.7) a) 0.6, 3, b) Si, c) posición 5, α
5.8)
a) g( X ) X 4  α 13 X 3  α 6 X 2  α 3 X  α 10 ,
c( X ) α 5 X 7  α 7 X 5  α 4 X 4  α 5 X 2  αX  α 9 ,
b) c( X ) α 5 X 11  α 7 X 9  α 4 X 8  α 5 X 6  αX 5  α 9 X 4
c) e( X ) X 7  X 9 , el decodificador agrega dos errores,
e( X ) X 5  X 2 , decodificación correcta del patrón de error
5.9) Puede corregir ráfagas de error de 64 bits

Capítulo 6
6.1) b) 6, d) No
6.2) a) 5 , b) Sistemático
6.3) a) g (1 ) ( D ) 1  D 2 , g ( 2 ) ( D ) D  D 2 , b) Catastrófico, c) 10 ,01,01
6.4) a) 2, 4, b) 110 ,101,101,011,110 ,011,000
6.5) a) 4, b) 10 ,11,11 , c) T ( X ) X 4  2 X 5  2 X 6 ... , d) 16x10-6
6.6) a) m 101000 ...
6.7) a) 11,10 ,01,00 ,11 , b) 00 ,20 ,20 ,00 ,00...
6.8) Ver sección 6.6
6.9) a) 0.5, 5 , b) No-sistemático

520
Respuestas a los problemas

6.10) m 1110010 ...


Capítulo 7

ª1
0 0º
«0
1 0 »»
«
«0
0 1»
7.1) a) H T « » , d min,CC 4 , b) d min,BC 3 , d min,conc 5 ,
«1
1 0»
«0
1 1»
« »
¬«1
0 1 ¼»
c) 11010000 es decodificado por el código convolucional, 110100 es
pasado al código de bloques, 100 es el mensaje final decodificado

7.2) a) 1/7, d min,Conc 12 , b) d min,Conc 12 3 x4 d min,( 3 ,1 ) xdmin,( 7 ,3 ) , c)


Igual que b)
7.3) a) 0.5, 3, b) 0000
7.4) 3, 4
§ - 1 - 1, - 1 - 1, - 1 - 1,  1 - 1, - 1  1,  1 - 1, - 1  1, - 1 - 1,  1 - 1, ·
7.5) a) m ¨¨ ¸¸ ,
©  1 - 1, - 1 - 1,  1  1,  1 - 1, - 1 - 1,  1 - 1, - 1 - 1 ¹
b) Mensaje decodificado después de 3 iteraciones

Capítulo 8

8.1) a) Existen por lo menos 7 ciclos de longitud 4, los ´1´ s involucrados en


estos ciclos se observan en la matriz de control de paridad H que sigue:

521
Codificación para el control de errores / Jorge Castiñeira Moreira - Patrick Guy Farrell

ª0 1 0 1 0 1 1 1 0 0 0 1º
«1 0 1 1 0 0 0 0 1 0 0 0 »»
«
«0 1 0 0 1 0 1 0 0 0 0 1»
« »
H «1 0 0 1 0 0 0 0 0 1 1 0»
«0 0 1 0 1 1 0 0 0 1 0 0»
« »
«1 0 1 0 0 0 1 1 0 0 1 0»
«0 1 0 0 0 1 0 1 1 1 0 0»
« »
¬«0 0 0 0 1 0 0 0 1 0 1 1 ¼»

b) Para mantener s 3 , los ´1´ s deben moverse a través de las columnas


reemplazando ´ 0´ s por ´1´ s y viceversa, en la misma columna. Cada posición
de un ´ 0´ no es posible de llenar con un ´1´ a menos que se forme otro ciclo.
c) En general corresponderá a otro código.

ª1 1 0 1 0 0 0 º ª1 0 0 0 1 1 0º
«0 1 1 0 1 0 0 »» ««0 1 0 0 0 1 1 »»
8.2) a) 4, « , , b) 3, 12/7,
«0 0 1 1 0 1 0 » «0 0 1 0 1 1 1»
« » « »
¬0 0 0 1 1 0 1 ¼ ¬0 0 0 1 1 0 1¼
13/4,

13/7, 0.429, 4, c) 6, 4, aquel de longitud de ciclo 6


8.3) a) 1011100 , b) Grafo cíclico, vectores decodificados en las sucesivas
iteraciones:
1011000 , 1011001 , 1011101 , 1011100 , decodificación correcta.
Grafo sistemático, vectores decodificados en las sucesivas iteraciones:
1011000 , 1011011 , 1011011 , 1011000 , 10110101 , 1011101 ,
decodificación incorrecta luego de 6 iteraciones
8.4) a) La decisión del decodificador fluctúa entre los vectores de código
c ( 00000 ) y c (10100 ) , que son los vectores de código mas cercanos al
vector recibido r (10200 ) ; b) Las conexiones entre los nodos de símbolo y
los de paridad no son suficientes para una efectiva propagación de la
confiabilidad.

522
Lista de Símbolos

Capítulo 1
α probabilidad de ocurrencia del símbolo de fuente
(Capitulo 1)
δ,ε números arbitrariamente pequeños
σ desviación estándar
Ω( α ) entropía de la fuente binaria evaluada usando logaritmo en
base 2
B ancho de banda del canal
C Capacidad del canal, en bits por segundo
c Vector de código, o palabra de código
Cs Capacidad del canal, bits por símbolo
d, i, j, k, l, m , n números enteros
Eb energía promedio por bit
E b / N0 Relación energía promedio por bit – densidad espectral de
potencia de ruido
H( X ) entropía en bits por segundo
H( X n ) entropía de una fuente extendida
H( X / y j ) entropía a posteriori
H( X / Y ) equivocación
H(Y / X ) entropía de ruido
Hb ( X ) entropía de una fuente discreta calculada en logaritmo en
base b
I( x i , y j ) información mutua de x i , y j
I( X ,Y ) información mutua promedio
Ii información del símbolo x i
M número de símbolos de una fuente discreta
n longitud del bloque de informacion, longitud de código de
bloques

523
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

N0 / 2 densidad espectral de potencia de ruido


nf número grande de símbolos emitido
p probabilidad de error de CSB o del CBB
P potencia de la señal
P( x i ) Pi probabilidad de ocurrencia del símbolo xi
P( x i / y j ) probabilidad de transición de un canal en sentido inverso

P( x i , y j ) probabilidad conjunta de xi , y j
P( X / Y ) X dado el vector Y
probabilidad condicional del vector
Pij P( y j / x i ) probabilidad condicional del símbolo y j dado x i ,
también probabilidad de transición de un canal en sentido
directo
Pke probabilidad de error, siendo k un índice particular en
cada caso
PN potencia de ruido
Pch matriz de probabilidades de transición
Qi una probabilidad
R tasa de información
rb velocidad de datos binarios
s, r velocidad de símbolos
S/ N relación señal - ruido
T duración de una señal en el tiempo
Ts período de muestreo
W ancho de banda de una señal
x una variable en general, también valor particular de una
variable aleatoria X
X variable aleatoria (Capítulos 1, 7 y 8), y variable de una
expresión polinomica (Capítulos 3, 4, y 5)
x( t ) , s( t ) señales en el dominio del tiempo
xi valor de un símbolo de fuente, también símbolo de
entrada a un canal
x k x( kTs ) muestra de la señal x( t )
|| X || norma del vector X
yj valor de un símbolo, generalmente salida de un canal

Capítulo 2

A amplitud de una señal o símbolo

524
Lista de símbolos

Ai número de palabras de código de peso i


D tiempo de demora (Capítulo 2); D -variable de la
transformada en el dominio del tiempo
d ( ci ,c j ) distancia de Hamming entre dos vectores de código
Di conjunto de palabras de código
d min distancia mínima de un código
e vector patrón de error
F un campo finito
f(m) redundancia obtenida, código C0 , ARQ híbrido
G matriz generadora
gi vector fila de la matriz generadora G
g ij elemento de la matriz generadora
GF( q ) campo finito de Galois
H matriz de control de paridad
hj vector fila de la matriz de control de paridad H
k, n longitud de mensaje y de código en un código de bloques
l número de errores detectables en una palabra de código
m número aleatorio de transmisiones (Capitulo 2)
m vector de mensaje
N número entero
P( i , n ) probabilidad de i símbolos erróneos en un bloque de
n símbolos
P sub matriz de control de paridad
pij elemento de la sub matriz de control de paridad
p primo número primo
Pbe Tasa de error binaria, también conocida en Inglés como
“Bit Error Rate” (BER)
Pret probabilidad de retransmisión en esquemas ARQ
PU ( E ) probabilidad de errores no detectados
Pw e probabilidad de error de palabra o vector de código
q potencia de un número primo p primo
q( m ) redundancia obtenida, código C1 , esquemas ARQ
híbridos
r vector recibido
Rc tasa del código
S subespacio del espacio vectorial V (Capítulo 2)
S vector síndrome (Capítulos 2,3,4,5,8)

525
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

si componente del vector síndrome (Capítulos 2,3,4,5,8)


Sd subespacio dual del subespacio S
t número de errores corregibles en una palabra de código
td retardo en la transmisión
Tw duración de una palabra
u ( u1 ,u2 ,...u n ) vector de n componentes
V espacio vectorial
Vn espacio vectorial de dimensión n
w( c ) peso de Hamming de un vector de código c

Capítulo 3

αi elemento primitivo de un campo de Galois GF( q )


(Capítulos 4 y 5, Apéndice B)
βi raíz de un polinomio mínimo (Capítulos 4 y 5, Apéndice
B)
c( X ) polinomio código
(i )
c (X) versión rotada i -posiciones a la derecha del polinomio
c( X ) polinomio código
e( X ) polinomio error
g( X ) polinomio generador
m( X ) polinomio de mensaje
p( X ) polinomio resto (polinomio de redundancia en la forma
sistemática) (Capítulo 3)
pi ( X ) polinomio primitivo
r nivel de redundancia y grado del polinomio generador
(Capítulos 3 y 4 solamente)
r( X ) polinomio recibido
S( X ) polinomio síndrome

Capítulo 4
βl ,α jl números de localización de error
Φi ( X ) polinomio mínimo
μ( X ) polinomio auxiliar en la ecuación clave

526
Lista de símbolos

σ( X ) polinomio de localización de error (Algoritmo de


Euclides)
τ número de errores en un vector recibido
e jh valor de un error

jl posición de un error en el vector recibido


q i , ri , s i , t i cantidades auxiliares en el algoritmo de Euclides
(Capítulos 4 y 5)
ri ( X ), si ( X ), t i ( X ) polinomios auxiliares en el algoritmo de Euclides
(Capítulos 4 y 5)

W( X ) polinomio de evaluación de error

Capítulo 5
ρ paso previo al paso μ en el algoritmo de Berlekamp-
Massey
(μ)
σ BM (X) polinomio de localización de error, algoritmo de
Berlekamp-Massey, iteración μ -ésima
dμ discrepancia P -ésima, algoritmo de Berlekamp-Massey
(μ)
lμ grado del polinomio σ BM ( X ) , algoritmo de
Berlekamp-Massey
m̂ estimación del vector de mensaje
s RS número de símbolos recortados en un código RS de
versión acortada
Z( X ) polinomio para determinar los valores de error en el
algoritmo de Berlekamp-Massey

Capítulo 6

Ai número de secuencias de peso i (Capítulo 6)


Ai , j ,l número de caminos de peso i , longitud j , que resulta de
una entrada de peso l
bi (T ) valor muestreado de la señal bi ( t ) , que es la señal libre
de ruido, en el instante de tiempo T
C( D ) expresiones del polinomio código en el dominio de tiempo
D

527
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

ci rama i -ésima de la secuencia de código c


ci n -upla de elementos codificados
Cm (D) salida multiplexada de un código convolucional en le
dominio transformado del tiempo D
c ji j -ésimo símbolo de código de c i
C ( j )(D) secuencia de salida de la j -ésima rama de un código
convolucional en el dominio transformado del tiempo D
c i(j) ( c0( j ) ,c1( j ) , c 2( j ) ,...) secuencia de salida de la j -ésima rama de un código
convolucional
df distancia mínima libre de un código convolucional
dH distancia de Hamming
G( D ) función racional de transferencia de expresiones
polinómicas en el dominio transformado del tiempo D
G( D ) matriz de función racional de transferencias en el dominio
D
G(j)
i (D) respuesta impulsiva de la rama j -ésima de un código
convolucional en el dominio transformado del tiempo D
g i(j) ( g i(0j ) , g i(1j ) , g i(2j ) ,...) respuesta impulsiva de la rama j -ésima de un codificador
convolucional
>GF( q )@ n
espacio vectorial extendido
H0 hipótesis de la transmisión del símbolo ‘0’
H1 hipótesis de la transmisión del símbolo ‘1’
J longitud de truncamiento de la decodificación
K número de unidades de memoria de un codificador
convolucional
K 1 alcance de un código convolucional
Ki longitud del i -ésimo registro de un código convolucional
L longitud de la secuencia
M( D ) expresión polinomial del mensaje en el dominio
transformado del tiempo D
mi k -upla de elementos de mensaje
nA alcance del código convolucional, medido en bits
Pp matriz de selección de salidas
S( D ) función transferencia de estados
si ( k ) secuencias de estados en el dominio del tiempo
si ( t ) una señal en el dominio del tiempo

528
Lista de símbolos

Si ( D ) secuencias de estado en el dominio transformado del


tiempo D
Sj ( s0 j , s1 j ,s2 j ,...) vector de estados de un código convolucional

sr vector secuencia recibida


sr i i -ésima rama del vector secuencia recibida s r
s r , ji j -ésimo símbolo de s r i
T( X ) función generante del código convolucional
T ( X ,Y , Z ) función generante modificada
ti instante de tiempo
Tp período del proceso de selección de salidas

Capítulo 7

αi (u ) coeficientes de la recursión directa del algoritmo BCJR


Ei (u ) coeficientes de la recursión inversa del algoritmo BCJR
λi ( u ) , σ i ( u ,u' ) , γ i ( u' ,u ) coeficientes del algoritmo BCJR
μ( x ) medida o métrica del evento x
μ( x , y ) medida conjunta para el par de variables aleatorias X e
Y
μMAP ( x ) medida o métrica a posteriori del evento x
μML ( x ) medida o métrica de máxima similitud del evento x
PY valor medio de la variable Y
π( i ) permutación

σ Y2 variancia de la variable aleatoria Y


A variable aleatoria de las estimaciones a priori
D Variable aleatoria de las estimaciones de los bits de
mensaje
E variable aleatoria de las estimaciones extrínsecas
E(i ) estimaciones extrínsecas del bit i
histE ( ξ / X x) histograma representativo de la función densidad de
probabilidad pE ( [ / X x)
I {.} Permutación del mezclador de datos
I A , I( X ; A ) información mutua entre las variables aleatorias A y X
I E , I( X ; E ) información mutua entre las variables aleatorias E y X

529
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

IE Tr ( I A ,Eb / N0 ) función de transferencia de información extrínseca


J( V ) función información mutua
J MTC número de codificadores de un código turbo múltiple

J 1 ( I A ) inversa de la función información mutua


L( x ) métrica logarítmica de una dado evento x
L( bi ) relación de probabilidad logarítmica para el bit bi
L( bi / Y ) , L( bi / Y1n ) relación de probabilidad logarítmica condicionada, dada la
secuencia recibida Y para el bit bi
Lc medida de la relación señal-ruido
(j)
LcY información del canal para un decodificador turbo, j
ésima iteración
Le ( bi ) relación de probabilidad logarítmica extrínseca para el bit
bi
L(ej ) ( bi ) relación de probabilidad logarítmica extrínseca para el bit
bi , j -ésima iteración
( j)
L ( bi / Y ) relación de probabilidad logarítmica condicionada, dada la
secuencia recibida Y , para el bit bi , j -ésima iteración
MI xNI tamaño del mezclador de bloques

nY variable aleatoria con valor medio cero y varianza σ Y2


p( x ) función densidad de probabilidad de una variable aleatoria
discreta
p( X j ) función distribución marginal de fuente
pA ( ξ / X x) función densidad de probabilidad de estimaciones a priori
A para X x
pE ( ξ / X x) función densidad de probabilidad de estimaciones
extrínsecas E para X x
pMTC coeficiente angular de un permutador lineal
R j (Y j / X j ) probabilidad de transición del canal

s MTC desplazamiento lineal de un permutador lineal

Si j ^S ,S
i i 1 ,..., S j ` vector genérico de una secuencia de estados de una fuente
de Markov oculta
u valor actual del estado
u´ valor previo del estado
X X1n ^X1 , X 2 ,..., X n ` vector de secuencia de n variables aleatorias

530
Lista de símbolos

X ij ^X i , X i 1 ,..., X j ` vector genérico o secuencia de variables aleatorias

Capítulo 8

δQij coeficientes diferencia de Qijx


δR ij coeficientes diferencia de R ijx
AyB sub matrices de la matriz de control de paridad H
(Capítulo 8)
Aij( it ) estimación a posteriori en la iteración número it
d vector decodificado
d̂ vector decodificado estimado
dj nodos símbolo

d c( i ) número de nodos símbolo o bits relacionados con el nodo


de control de paridad hi
d v( j ) número de ecuaciones de control de paridad en las que el
bit o símbolo d j participa
dp vector código de paquete de mensaje
dp n paquete de mensaje en un código de suministro continuo o
código aleatorio lineal
Ex número de paquete en exceso en un código de suministro
continuo o código aleatorio lineal
f z1 , z2 , f z1 , z2 tablas de búsqueda para una implementación de un
decodificador LDPC con entradas | z1 | , | z2 |
f jx estimaciones a priori de los símbolos recibidos
Gfr matriz generadora fragmentada
^Gkn ` matriz generadora de un código de suministro continuo o
código aleatorio lineal
hi nodos de control de paridad
I E ,SND ( I A ,dv ,E b / N0 ,Rc ) curva EXIT para el decodificador de nodo símbolo
I E ,PCND ( I A ,d c ) curva EXIT para el decodificador de nodos de control de
paridad
L( b1 † b2 ), L( b1 )>†@L( b2 ) relaciones logarítmicas de probabilidad de la suma or-
exclusiva de dos bits

531
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell

Lch L(ch
0)
relación logarítmica de probabilidad del canal

L(ijit ) relación logarítmica de probabilidad que cada nodo de

control de paridad hi envía a cada nodo símbolo d j en


la iteración número it
LQijx , Lf jx , LR ijx , LQ jx estimaciones logarítmicas de probabilidad para Qijx , f jx ,

R ijx , Q jx respectivamente
lz estimación logarítmica, es decir, valor absoluto del
logaritmo natural de z
M( j ) conjunto de índices de todos los nodos de control de
paridad conectados al nodo símbolo dj
M( j ) \ i conjunto de índices de todos los nodos de control de
paridad conectados al nodo símbolo d j excluyendo al
nodo de control de paridad hi
N( i ) conjunto de índices de todos los nodos símbolo conectados
al nodo de control de paridad hi
N( i ) \ j conjunto de índices de todos los nodos símbolo conectados
al nodo de control de paridad hi excluyendo al nodo
símbolo dj
Nt número de entradas de la tabla de búsqueda del
decodificador logarítmico LDPC
Q jx probabilidades a posteriori

Qijx estimación que cada nodo padre símbolo d j envía a sus


nodos de control de paridad hijo hi en el algoritmo suma-
producto
R ijx estimación que cada nodo de control de paridad hijo hi
envía a sus nodos padre símbolo d j en el algoritmo
suma-producto
s número de '1' s por columna de la matriz de control de
paridad H (Capítulo 8)
tp vector de código de paquete transmitido
tp n paquete transmitido en un código de suministro continuo o
código aleatorio lineal
v numero de '1' s por fila de la matriz de control de paridad
H (Capítulo 8)

532
Lista de símbolos

z número real positivo tal que z d1


Z ij( it ) relación logarítmica de probabilidad que cada nodo

símbolo d j envía a cada nodo de control de paridad hi


en la iteración número it

Apéndice A
τ duración en tiempo de un dado pulso (Apéndice A)
ak amplitud del símbolo k en una señal modulada en
amplitud
de modo digital
NR potencia de ruido recibida
p( t ) señal en una transmisión modulada en amplitud de modo
digital
Q( k ) función densidad de probabilidad de Gauss normalizada
T duración de un símbolo transmitido en una señal modulada
en amplitud de modo digital
SR potencia de la señal recibida
U tensión de umbral (Apéndice A)
x( t ) , y ( t ) , n( t ) señales transmitida, recibida y de ruido, respectivamente

Apéndice B

φ( X ) polinomio mínimo
F campo
f (X ) polinomio definido sobre GF (2)
Gr grupo

533
Contenidos

Agradecimientos 7
Prefacio 9
1 Teoría de la Información 13
1.1 Información 16
1.1.1 Medida de la Información 16
1.2 Entropía y velocidad de la información 17
1.3 Extensión de una fuente discreta sin memoria 24
1.4 Canales e información mutua 25
1.4.1 Transmisión de información en canales discretos 26
1.4.2 Canales de Información 26
1.5 Relaciones entre las probabilidades de un canal 30
1.6 Entropías a priori y a posteriori 33
1.7 Información Mutua 34
1.7.1 Información Mutua. Definición 34
1.7.2 Propiedades de la Información Mutua 36
1.8 Capacidad de un Canal Discreto 41
1.9 Teoremas de Shannon 43
1.9.1 Teorema de la codificación de fuente 43
1.9.2 Capacidad del canal y codificación 44
1.9.3 Teorema de la codificación del canal 47
1.10 Espacio de Señales y el teorema de la capacidad del canal 49
1.10.1 Capacidad del canal Gaussiano 52
1.11 Codificación para el control de errores 58
1.12 Consecuencias de los límites en comunicaciones 62
Bibliografía y Referencias 68
Problemas 69

535
2. Códigos de Bloques 73
2.1 Codificación y control de error 73
2.2 Detección y corrección de errores 73
2.2.1 Códigos simples. El código de repetición 74
2.3 Códigos de Bloques. Introducción y parámetros asociados 76
2.4 El espacio vectorial sobre el campo binario 77
2.4.1 Subespacios vectoriales 80
2.4.2 Subespacio dual 83
2.4.3 Forma Matricial 83
2.4.4 Matriz del Subespacio dual 85
2.5 Códigos de Bloques Lineales 86
2.5.1 Matriz generadora de un código de bloques G 87
2.5.2 Forma sistemática de un código de bloques 89
2.5.3 Matriz de paridad H 91
2.6 Detección de errores por síndrome 94
2.7 Distancia mínima de un código de bloques 98
2.7.1 Distancia mínima y estructura de la matriz H 99
2.8 Capacidad de corrección de errores en un código de
bloques Cb ( n, k ) 101
2.9 Detección por síndrome y arreglo estándar 103
2.10 Códigos de Hamming 107
2.11 Filosofías de corrección. Sistemas de corrección de error
FEC y ARQ 109
2.11.1 Sistemas de corrección directa o FEC 109
2.11.2 Sistemas de detección o ARQ 113
2.11.3 Esquemas de sistemas ARQ 114
2.11.3.1 Parada y espera 114
2.11.3.2 Esquema de retroceso de N palabras 115
2.11.3.3 Esquema de repetición selectiva 116
2.11.4 Eficiencia de los esquemas ARQ mas conocidos 116

536
2.11.5 Esquemas ARQ híbridos 120
Bibliografía y Referencias 125
Problemas 126

3 Códigos Cíclicos 131


3.1 Descripción 131
3.2 Representación polinómica de palabras de código 131
3.3 Polinomio Generador de un código cíclico 133
3.4 Forma sistemática de un código cíclico 137
3.5 Matriz generadora para códigos cíclicos 140
3.6 Cálculo de síndrome y detección de errores 144
3.7 Decodificación de códigos cíclicos 146
3.8 Ejemplo de aplicación. Código CRC del estándar de Ethernet 148
Bibliografía y Referencias 150
Problemas 152

4 Códigos BCH 155


4.1 Introducción. El polinomio mínimo 155
4.2 Descripción de los códigos cíclicos BCH 158
4.2.1 Cota para la capacidad de corrección de error de códigos BCH.
Determinante de Vandermonde 163
4.3 Decodificación de códigos BCH 166
4.4 Polinomios de localización de error y de evaluación de error 167
4.5 La ecuación clave 170
4.6 Decodificación de códigos BCH utilizando el algoritmo
de Euclides 171
4.6.1 Algoritmo de Euclides 172
Bibliografía y Referencias 178
Problemas 180

537
5 Códigos Reed-Solomon 183
5.1 Introducción 183
5.2 Capacidad de corrección de error de un código RS.
Determinante de Vandermonde 185
5.3 Forma sistemática de un código RS 189
5.4 Decodificación por síndrome 191
5.5 Algoritmo de Euclides
Polinomios de localización y evaluación de error 193
5.6 Decodificación de códigos RS utilizando el algoritmo
de Euclides 197
5.6.1 Etapas en el empleo del Algoritmo de Euclides 200
5.7 Decodificación de códigos BCH y RS con el algoritmo de
Berlekamp-Massey 202
5.7.1 Algoritmo iterativo de Berlekamp-Massey para la solución
del polinomio localizador de errores 205
5.7.2 Decodificación de códigos RS utilizando el algoritmo de
Berlekamp Massey 210
5.7.3 Relaciones entre los polinomios localizadores de error en los
algoritmos de Euclides y de Berlekamp-Massey 214
5.8 Aplicación práctica: Sistema de codificación del Compact
Disc (CD) 214
5.8.1 Características 214
5.8.2 Características del canal 216
5.8.3 Procedimiento de codificación 216
5.9 Codificador para los códigos RS (255, 251), RS (28, 24) y
RS (32, 28) 218
5.10 Decodificación de los códigos RS (28, 24) y RS (32, 28) 222
5.10.1 Decodificador Berlekamp-Massey para los códigos RS
CRS (28,24 ) y RS CRS (32,28 ) 222
5.10.2 Decodificador alternativo para un código Reed-Solomon 227
5.10.1 Decodificador para los códigos RS (28, 24) y RS (32, 28) 227

538
5.10.2 Decodificación de los códigos RS (32,28) y RS (28,24)
resolviendo el sistema de ecuaciones de síndrome 227
5.11 La importancia del entrelazado de datos 231
Bibliografía y Referencias 237
Problemas 239

6 Códigos Convolucionales 243


6.1 Circuitos secuenciales lineales 244
6.2 Definición de codificadores y códigos convolucionales 245
6.3 Descripción en el plano transformado D 248
6.4 Representaciones para los codificadores convolucionales 256
6.4.1 Representación de conexiones 256
6.4.2 Representación por diagrama de estados 257
6.4.3 Representación por Trelis (“Trellis”) para un
código convolucional 258
6.5 Códigos convolucionales de forma sistemática 259
6.6 Estructura general de máquinas secuenciales de estados
finitos con respuesta impulsiva finita e infinita 262
6.6.1 Máquinas secuenciales de estados finitos de respuesta
impulsiva finita 262
6.6.2 Máquinas secuenciales de estados finitos de respuesta
impulsiva infinita 263
6.7 Matriz función transferencia de estados.
Obtención de la función transferencia 264
6.7.1 Máquina de estados de respuesta impulsiva finita 264
6.7.2 Máquina de estados de respuesta impulsiva infinita 266
6.8 Relación entre la forma sistemática y la no sistemática 268
6.9 Propiedades de distancia de los códigos convolucionales 272
6.10 Distancia libre mínima de un código convolucional 276
6.11 Decodificación por máxima probabilidad (MLD:
Maximum Likelihood Detection) 278

539
6.12 Algoritmo de decodificación convolucional de Viterbi 279
6.13 Diagrama de estados modificado extendido 283
6.14 Análisis probabilidad de error para códigos convolucionales 284
6.15 Decisiones rígidas y no-rígidas 289
6.15.1 Criterio de máxima probabilidad para el canal Gaussiano 293
6.15.2 Límites de la decisión no rígida 296
6.15.3 Ejemplo de decodificación no rígida para
códigos convolucionales 299
6.16 Códigos Convolucionales con eliminación selectiva de salidas.
Códigos convolucionales de tasa compatible 304
Bibliografía y Referencias 310
Problemas 313

7 Códigos turbo 319


7.1 Codificador turbo 320
7.2 Decodificación de códigos turbo 321
7.2.1 El decodificador turbo 321
7.2.2 Definición de probabilidades y estimaciones 322
7.2.3 Detección por símbolo 324
7.2.4 Relación de probabilidad logarítmica 325
7.3 Canales discretos y fuentes de Markov 327
7.4 Algoritmo BCJR. Caso de un codificador por trelis
y el canal discreto sin memoria 332
7.5 Cálculo Iterativo de los coeficientes 336
7.5.1 Cálculo Iterativo de los coeficientes D i ( u ) y E i ( u ) 336
7.6 Algoritmo MPA (BCJR) y la relación de
probabilidad logarítmica 351
7.6.1 Algoritmo MPA (BCJR) en función de la relación de
probabilidad logarítmica. Método de cálculo 353
7.6.2 Cálculo de los coeficientes J i ( u' ,u ) 355

540
7.7 Decodificación turbo 359
7.7.1 Condiciones iniciales de los factores D i 1 ( u' ) y E i ( u ) 374
7.8 Opciones para la construcción de códigos turbo 375
7.8.1 Permutación de datos 375
7.8.2 Permutador en bloques 375
7.8.3 Permutadores convolucionales 376
7.8.4 Permutadores aleatorios 377
7.8.5 Permutadores lineales 380
7.8.6 Métodos de concatenado de códigos 381
7.8.6.1 Códigos Concatenados en Serie 381
7.8.6.2 Códigos concatenados en paralelo 382
7.8.7 Respuesta de tasa de error para códigos turbo en
función del tipo y tamaño de permutador utilizado 384
7.9 Algoritmos de decodificación para códigos turbo 385
7.10 Curvas de transferencia de información extrínseca 386
7.10.1 Introducción a las curvas de transferencia de
información extrínseca 387
7.10.2 Generación de la CTIE 387
7.10.3 Características de transferencia de información extrínseca
para los códigos constituyentes 391
Bibliografía y Referencias 404
Problemas 407
8 Códigos de paridad de baja densidad 413
8.1 Diferentes formas sistemáticas para un código de bloques 414
8.2 Descripción de un código LDPC 416
8.3 Construcción de un código LDPC 417
8.3.1 Caso códigos LDPC regulares 417
8.3.2 Caso códigos LDPC irregulares 418
8.3.3 Decodificación de los códigos LDPC 419

541
8.4 Algoritmo de suma-producto 421
8.5 Algoritmo suma-producto para códigos LDPC. Un ejemplo 423
8.6 Simplificaciones del algoritmo suma-producto 438
8.7 Algoritmo de decodificación logarítmico para
un código LDPC 443
8.7.1 Inicialización 444
8.7.2 Paso horizontal 444
8.7.3 Paso vertical 446
8.7.4 Resumen del procedimiento de decodificación 449
8.7.5 Construcción de las tablas de búsqueda 449
8.8 Curva de transferencia de información extrínseca
para códigos LDPC 451
8.8.1 Introducción 451
8.8.2 Decodificación iterativa de códigos de bloques 454
8.8.3 Construcción de las curva de información extrínseca
para códigos LDPC 457
8.8.4 Función de información mutua 458
8.8.5 CTIE para el decodificador interno de nodos
de símbolo (DNS) 460
8.8.6 CTIE para el decodificador externo de nodos de control
de paridad (DNCP) 462
8.9 Códigos de suministro continuo y códigos LT 464
8.9.1 Introducción 464
8.9.2. Códigos de suministro continuo 466
8.9.3. Código lineal aleatorio 467
8.9.4 Códigos LT (Luby Transform) 469
8.9.4.1 Codificador del código LT 469
8.9.4.2 Decodificador de un código LT 470
8.10 Códigos LDPC y turbo 473
Bibliografía y Referencias 474
Problemas 477

542
APENDICE A:
Probabilidad de error en la transmisión digital de señales 479
A.1 Señalización digital 479
A.2 Probabilidad de error binaria 483
Bibliografía 496

APENDICE B:
Campos de Galois GF(q) 497
B.1 Grupos 497
B.2 Suma y multiplicación módulo-2 498
B.3 Campos 500
B.4 Polinomios sobre campos binarios 502

B.5 Construcción de campos de Galois GF(2m) 504

B.6 Propiedades de los campos extendidos de Galois GF(2m) 509


B.7 Polinomios mínimos 511
B.7.1 Propiedades de los polinomios mínimos 512
Bibliografía 515

Respuestas a los problemas 517

Lista de símbolos 523

543
Esta publicación se terminó de imprimir
en el mes de Marzo de 2012,
en la ciudad de Mar del Plata.
Esta edición consta de 500 ejemplares

También podría gustarte