Documentos de Académico
Documentos de Profesional
Documentos de Cultura
control de errores
Codificación para el
control de errores
ISBN 978-987-1371-89-1
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.
ISBN 978-987-1371-89-1
© 2012, EUDEM
Editorial de la Universidad Nacional de Mar del Plata
Formosa 3485 (B7602FWQ)
Mar del Plata / Argentina
J. C. M.
P. G. F
Agradecimientos
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/
11
1
Teoría de la Información y de la Codificación
13
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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
Canal con
ruido
15
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
1.1 Información
1.1.1 Medida de la Información
I i { log b Pi log b §¨ 1 ·¸
© Pi ¹
(1.1)
1
log a ( x ) log b ( x )
log b ( a )
(1.2)
16
Capítulo I: Teoría de la Información y de la Codificación
Ii t 0 0 d Pi d 1
Ii o 0 si Pi o 1
Ii ! I j si Pi Pj
1 1 1
I ij log b log b log b Ii I j
Pi Pj Pi Pj
M
¦ Pi 1
i 1
(1.3)
17
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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)
M M §1·
H( X ) ¦ Pi I i ¦ Pi log2 ¨¨ P ¸¸ bits/símbolo.
i 1 i 1 © i¹
(1.5)
18
Capítulo I: Teoría de la Información y de la Codificación
Ejemplo 1.1:
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:
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
H( X )
Hb ( X )
log 2 ( b )
(1.6)
19
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
nH ( X )
bits por segundo
(n / r )
(1.7)
Teorema 1.1:
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
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
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
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)
Entonces:
M §Q ·
¦ Pi log2 ¨¨ Pi ¸¸ d 0
i 1 © i ¹
(1.12)
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)
P0 α P1 1α
(1.14)
22
Capítulo I: Teoría de la Información y de la Codificación
§1 · § 1 ·
H( X ) Ω( α ) α log 2 ¨ ¸ (1 α ) log 2 ¨ ¸
©α ¹ ©1 α ¹
(1.15)
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
Ejemplo 1.3:
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
1 1
H( X ) 2 log 2 ( 3 ) 2 log 2 ( 6 ) 1.9183 bits/símbolo
3 6
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:
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
25
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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
26
Capítulo I: Teoría de la Información y de la Codificación
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)
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
ª1 p p º
Pch « p 1 p»
¬ ¼
(1.21)
28
Capítulo I: Teoría de la Información y de la Codificación
1 p
P (0) D x1 0 0 y1
p
? y2
p
P (1) 1 D x2 1 y3
1
1 p
ª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
30
Capítulo I: Teoría de la Información y de la Codificación
P( y j / x i )P( x i )
P( x i / y j )
P( y j )
(1.24)
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)
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:
ª3 / 4 1 / 4 º
P «1 / 8 7 / 8 »
¬ ¼
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
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
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
§ 1 ·
H( X ) ¦ P( x i ) log2 ¨¨ P( x ¸
) ¸¹
i © i
§ 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
24 § 25 · 1
H( X / 0 ) log2 ¨ ¸ log2 25 0.2423 bit
25 © 24 ¹ 25
8 § 15 · 7 § 15 ·
H( X / 1 ) log2 ¨ ¸ log2 ¨ ¸ 0.9967 bit
15 © ¹8 15 ©7 ¹
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
§ 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)
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.
P( x i / y j )P( y j ) P( y j / x i )P( x i ) ,
I( X ,Y ) I (Y , X )
I( X ,Y ) H( Y ) H( Y / X )
(1.32)
donde:
1
H (Y ) ¦ P( y j ) log2 P( y )
j j
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)
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
M §Q ·
¦ Pi log2 ¨¨ Pi ¸¸ d 0
i 1 © i ¹
(1.34)
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)
H(Y / X )
H( X / Y )
H( X )
H(Y )
I( X ,Y )
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
I( X ,Y ) H( Y ) H( Y / X )
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)
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)
I( X ,Y ) H( Y ) H( Y / X ) Ω( α p 2αp ) Ω( p )
(1.39)
I( X ,Y ) | Ω( α ) Ω( 0 ) | Ω( α ) H( X )
I( X ,Y ) Ω( α 1 / 2 α ) Ω(1 / 2 ) 0
40
Capítulo I: Teoría de la Información y de la Codificación
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:
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 )
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:
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:
C sCs bits/segundo
(1.43)
42
Capítulo I: Teoría de la Información y de la Codificación
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
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.
44
Capítulo I: Teoría de la Información y de la Codificación
n
P( X / Y ) P( x i / yj )
i 1
§n ·
¨¨ ¸¸
© np ¹
(1.47)
n! | n n e n 2πn
(1.48)
§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
Rs 1 Ω( p )
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
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
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
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
1 1 1
H (Y ) log 2 ( 3 ) log 2 ( 3 ) log 2 ( 3 ) log 2 ( 3 ) 1.585
3 3 3
entonces:
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)
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)
W d B d fs W
(1.57)
50
Capítulo I: Teoría de la Información y de la Codificación
n
|| X ||2 x12 x 22 ... x n2 ¦ x i2
i 1
(1.58)
1 1 n 2
n
|| X ||2 ¦ xi
ni 1
x k2 P
(1.59)
|| X || nP 2BTP
(1.60)
|| N || nPN
|| X || nP
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 )
52
Capítulo I: Teoría de la Información y de la Codificación
Y X N
(1.61)
1 n 2 1 n
¦ Ni
ni 1
¦
ni 1
| Y X |2 d PN
(1.62)
| 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)
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 )
Vol ,n K n Ren
(1.66)
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)
1 1n § P · 1 § P ·
Cs log 2 ( M ) log 2 ¨¨1 ¸¸ log 2 ¨¨1 ¸¸
n n2 © PN ¹ 2 © PN ¹
(1.68)
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
n n/ 2
ª n( P PN ) º § P ·
M « » ¨¨1 ¸¸
«¬ nPN »¼ © PN ¹
M μ rT
(1.72)
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)
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)
§ P · § P ·
Como ¨¨ ¸¸ 30 dB ; ¨¨ ¸¸ 1000
© PN ¹ dB © PN ¹
57
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
Fuente
s log 2 M
R
n
(1.77)
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 .
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
l np ; σ 2 n(1 p )p
(1.82)
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)
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):
60
Capítulo I: Teoría de la Información y de la Codificación
§n · n!
m d ( d 1 )¨¨ ¸¸ ( d 1)
©d ¹ ( n d )! d !
(1.88)
§n · nβ 1
m d ( d 1 )¨¨ ¸¸ 2 nΩ( β )
©d ¹ 2πnβ(1 β )
nE 1 nE 1
Pce d 2 n>G :( p ) :( E )@ 2 n>G ( :( E ) :( p )) @
2SnE (1 E ) 2SnE (1 E )
(1.89)
61
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
p(1 p ) nβ 1
Pe Ple Pce d 2
2 n>δ ( Ω( β ) Ω( p )) @
n( β p ) 2πnβ(1 β )
(1.90)
62
Capítulo I: Teoría de la Información y de la Codificación
log 2 M § S·
lim lim B log 2 ¨1 ¸
Pe o0 T of T © N ¹
(1.92)
§ 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
-1
10
0 1 2 4 6 8 10 12 14 16 18 20
S/N [dB]
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)
C § E C·
log 2 ¨¨1 b ¸¸
B © N0 B ¹
(1.96)
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)
65
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
De la ecuación:
Eb § C ·
2C / B 1 ¨ ¸
N0 © B ¹
(1.99)
Eb §R·
2R / B d 1 ¨ ¸
N0 ©B¹
(1.100)
t¨ ¸2
N0 © R ¹
Eb § B · R / B
1
(1.101)
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
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.
4 Abramson, N., Information theory and coding, McGraw Hill, New York,
1963.
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
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 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
0.9 0.9
P( 0 ) D 0 0
P(1 ) 1 D 1 1
0.9 0.9
ª3 / 5 2 / 5 º
Pch «1 / 5 4 / 5 »
¬ ¼
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 p
P( 0 ) D 0 0
q
p
P(1 ) 1 D 1 1
1q
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
72
2
Códigos de Bloques
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).
§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)
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
Pw e = P(3,3) = p 3
75
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
k
Rc =
n
(2.2)
76
Capítulo II: Códigos de Bloques
77
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
0 xu 0
Suma en Módulo-2
00 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
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)
Ejemplo 2.1:
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 )}
Las posibles multiplicaciones por elementos del campo en este caso son solo
dos:
0 x (1011) (0000)
1x (1011) (1011)
Ejemplo 2.2:
a0 x v 0 a1 x v1 ... ak 1 x v k -1
(2.7)
80
Capítulo II: Códigos de Bloques
Ejemplo 2.3:
a0 x v 0 a1 x v1 ... ak 1 x v k -1 0
(2.8)
Ejemplo 2.4:
Los vectores (1001 ),( 0100 ) y (1101 ) son linealmente dependientes porque:
81
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
e0 (1,0 ,...0 )
e1 ( 0 ,1,...,0 )
e n 1 ( 0 ,0 ,...,1 )
(2.9)
u c0 x v 0 c1 x v1 ... ck 1 x v k -1
(2.11)
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.
dim( S ) dim( Sd ) n
(2.13)
Ejemplo 2.5:
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)
Ejemplo 2.6:
ª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 »¼
84
Capítulo II: Códigos de Bloques
ª g0 º
« g »
G « 1 »
« »
« »
¬g k 1 ¼
(2.15)
ª 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)
85
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
Dada la matriz:
ª1 0 1 1 0 º
G «0 1 0 0 1 »
« »
«¬1 1 0 1 1 »¼
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
(10110 ) $ ( 01001 ) 0
(10110 ) $ (10010 ) 0
( 01001 ) $ ( 01001 ) 0
( 01001 ) $ (10010 ) 0
(11011 ) $ ( 01001 ) 0
(11011 ) $ (10010 ) 0
86
Capítulo II: Códigos de Bloques
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
ª 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)
Ejemplo 2.8:
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¼
La tabla 2.1 muestra el código generado por la matriz G del ejemplo 2.8:
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
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)
G >P Ik @
(2.21)
90
Capítulo II: Códigos de Bloques
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)
ª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¼
c0 m0 m 2 m 3
c1 m0 m1 m2
c2 m1 m2 m3
c3 m0
c4 m1
c5 m2
c6 m3
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:
gi $ h j pij pij 0
(2.24)
G $ HT 0
(2.25)
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:
ª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
ª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
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
94
Capítulo II: Códigos de Bloques
Dado que r c e
S r $ HT (c e) $ H T c $ HT e $ HT e $ HT
(2.33)
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:
Ejemplo 2.11:
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:
96
Capítulo II: Códigos de Bloques
Ejemplo 2.12:
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
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)
99
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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)
Ejemplo 2.13:
ª1 0 0 1 0 1 1 º
H «0 1 0 1 1 1 0 »
« »
«¬0 0 1 0 1 1 1 »¼
100
Capítulo II: Códigos de Bloques
n
PU ( E ) ¦ Ai p i (1 p )n i
i 1
(2.41)
Ejemplo 2.14:
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
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
2t 1 d d min d 2t 2
(2.42)
d( c1 , r ) d( c2 , r ) t d( c1 ,c2 )
(2.43)
d( c2 , r ) t 2t 1-t'
(2.44)
Si se adopta t' d t
d( c2 , r ) ! t
(2.45)
102
Capítulo II: Códigos de Bloques
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.
103
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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)
Ejemplo 2.15:
104
Capítulo II: Códigos de Bloques
ª0 1 0 0 1 º
G «1 0 1 1 0 »
« »
«¬1 0 0 1 0 »¼
105
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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)
106
Capítulo II: Códigos de Bloques
Ejemplo 2.16:
ª1 0 0 1 0 1 1 º
H «0 1 0 1 1 1 0 »
« »
«¬0 0 1 0 1 1 1 »¼
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 )
H >I m Q@
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
r=
Cod. Trans. canal Rec. Dec.
+
Pe = p
§n· r
r = ¨ ¸ rb = b
©k ¹ Rc
(2.50)
§ 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
§ n ·
Pw e # P(t+1,n) # ¨¨ ¸¸ p t+1
© t+1¹
(2.53)
§k ·
¨ ¸t 1NPw e
n 1
Pbe= © ¹ = t+1Pw e
kN n
(2.54)
§ n-1 · t+1
Pbe # ¨¨ ¸¸.p
© t ¹
(2.55)
110
Capítulo II: Códigos de Bloques
§ 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)
t 1
§ n-1 · ª §¨ E ·º
Pbe # ¨¨ ¸¸ «Q 2 R c b ¸»
© t ¹ «¬ ¨© N 0 ¸¹»
¼
(2.58)
§ E ·
Pbe # Q¨ 2 b ¸
¨ N 0 ¸¹
©
(2.59)
111
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
Pbe -1
10
-2
10
-3
10
-4
10
-5
10
-6
10
-2 0 2 4 6 8 10 12
Eb/No [dB]
112
Capítulo II: Códigos de Bloques
113
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
n § n ·
Pw e = ¦ P(i,n) # P(l+1,n) # ¨¨ ¸¸ p l+1
i=l+1 © l+1 ¹
(2.60)
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 ) :
114
Capítulo II: Códigos de Bloques
Transmis Receptor
ACK
2
2 NA
1
1
ACK
2
2
ACK
3
3
NAK
4
4 ½
3
ACK ¾se descar tan
3 ¿
4
4
115
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
Transmisor Receptor
1
1
ACK
2
2
ACK
3
3
NAK
4
4
ACK
3
3
ACK
5
116
Capítulo II: Códigos de Bloques
2
m = 1( 1 - Pret ) + 2Pret .( 1 - Pret ) + 3 Pret ( 1 - Pret )+...
2 1
= ( 1 - Pret )( 1+2Pret+3Pret ...) =
1 - Pret
(2.64)
k k k
Rc' = = (1 Pret ) (1 p) n
n.m n n
(2.65)
rb
r=
R c'
(2.66)
n k
Tw = d
r rb
(2.67)
117
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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)
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)
k (1 Pret ) §k · (1 Pret )
Rc' = d ¨ ¸
n 1 Pret +NPret ©n¹§ §2 t r · ·
¨¨1-Pret +¨ d b ¸Pret ¸¸
© © k ¹ ¹
(2.71)
2td
N t
Tw
(2.72)
118
Capítulo II: Códigos de Bloques
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
120
Capítulo II: Códigos de Bloques
121
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
122
Capítulo II: Códigos de Bloques
123
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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.
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.
11 Hamming, R. W., “Error detecting and error correcting codes,” Bell. Syst.
Tech. J., 29, pags. 147-160, Abril 1950.
125
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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.
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.
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
127
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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.
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¼
129
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
n k d min
31 26 3
31 21 5
31 16 7
n k d min
12 11 2
15 11 3
16 11 4
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.
131
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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)
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)
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)
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)
134
Capítulo III: Códigos cíclicos
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)
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
c( X ) m( X )g( X ) m 0
m1X ... mk 1X k 1 g( X )
(3.13)
Ejemplo 3.1:
136
Capítulo III: Códigos cíclicos
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)
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)
X n k m( X ) p( X ) q( X )g( X )
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)
Ejemplo 3.2:
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 )
139
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
ª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
Ejemplo 3.3:
ª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¼
ª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)
pi ( X ) pi 0 pi1 X ... pi ,n k 1 X n k 1
(3.21)
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)
X 7 1 (1 X )(1 X X 3 )(1 X 2 X 3 )
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 ¼»
ª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@
r ( X ) r0 r1 X r2 X 2 ... rn 1 X n 1
(3.24)
r( X ) q( X )g( X ) s( X )
(3.25)
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)
r( X ) c( X ) e( X ) q( X )g( X ) s( X )
(3.30)
luego:
145
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
Ejemplo 3.5:
146
Capítulo III: Códigos cíclicos
147
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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
148
Capítulo III: Códigos cíclicos
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.
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.
150
Capítulo III: Códigos cíclicos
151
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
Problemas
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.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].
155
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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
g2 ( X ) ( X α 3 )( X α 5 )( X α 6 ) X 3 ( α 3 α 5 α 6 )X 2 ( α α 2 α 4 )X 1
X 3 X 2 1
157
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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
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
158
Capítulo IV: Códigos BCH
g( α i ) 0; i 1,2,...,2t
(4.1)
159
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
Ejemplo 4.1:
Φ1 ( X ) 1 X X 4
Φ3 ( X ) 1 X X 2 X 3 X 4
Φ5 ( X ) 1 X X 2
g( X ) mcm^Φ1 ( X ),Φ3 ( X )`
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:
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)
ª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
ª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)
Ejemplo 4.2:
ª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 ¼
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¼
ª α 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
α j1 α j1 2
α
j1 pH
α j2 α j2 2
α
j 2 pH
0
α jpH α jpH 2
α
jpH pH
(4.11)
1 α j1 α
j1 ( pH 1 )
(4.12)
164
Capítulo IV: Códigos BCH
g( X ) ^ `
mcm Φ1 ( X ),Φ2 ( X ),...,Φd0 2 ( X )
(4.14)
n ^
mcm n1 , n2 ,..., nd0 2 `
(4.15)
165
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
r( X ) c( X ) e( X )
(4.16)
c $ HT 0
(4.17)
S ( s0 , s1 ,.., s2 t ) r $ HT
si r(α i ) e( α i ) r0 r1 ( α i ) ... rn 1 ( α i ) n 1
(4.18)
con 1 d i d 2t
166
Capítulo IV: Códigos BCH
r ( X ) ai ( X ))i ( X ) bi ( X )
(4.19)
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:
s1 r(α ) 1 α 8 α2
s2 r(α 2 ) 1 α α4
s3 r(α 3 ) 1 α9 1 α α3 α7
s4 r(α 4 ) 1 α 2 α8
c( X ) r ( X ) e( X )
(4.21)
167
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
βl α jl donde l 1,2,3,...,τ
(4.22)
si r(α i ) c( α i ) e( α i ) e( α i )
(4.23)
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)
(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
W ( α jl )
e jl
σ' ( α jl )
(4.27)
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
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)
W ( α jh )
e jh
σ' ( α jh )
169
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
2t 1
S( X ) s1 s2 X s3 X 2 ... s2t X 2t 1 ¦s
j 0
j 1 Xj
(4.30)
V ( X )S( X ) W ( X ) P( X ) X 2t
(4.31)
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)
C SA TB
(4.35)
171
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
μ( 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 .
ri 2 qi ri 1 ri
(4.37)
ri ri 2 q i ri 1
(4.38)
ri si A t i B
(4.39)
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)
s 1 1, t 1 0 (4.42)
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 .
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
μ( X ) X 2 t σ( X )S( X ) W ( X )
siendo gr ri ( X ) d t 1
(4.45)
Entonces:
W(X) λr i (X)
(4.46)
σ(X) λt i (X)
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
r( X ) 1 X 8
s1 r(α ) α2
s2 r(α 2 ) α4
s3 r(α 3 ) α7
s4 r(α 4 ) α8
S( X ) α 8 X 3 α 7 X 2 α 4 X α 2
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
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
σ( X ) λt i ( X )
α 4 α 11 X 2 α 5 X α 3 X 2 α 9 X α7
α0 α j1 α 0
j1 0
y
α7 α j 2 α 8
j2 8
σ' ( X ) α9
176
Capítulo IV: Códigos BCH
W ( α j1 ) W(α0 ) α9
e j1 1
σ' ( α j1 ) σ' ( α 0 ) α9
W(α j2 ) W (α7 ) α9
e j2 1
σ' ( α j 2 ) σ' ( α 7 ) α9
e( X ) X0 X8 1 X8
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.
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.
7. Forney, G. D., Jr., “On decoding BCH codes,” IEEE Trans. Inf. Theory,
IT-11, págs. 59-557, Octubre 1965.
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
g( X ) ( X 1 )(1 X X 4 )(1 X X 2 X 3 X 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
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.
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
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
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)
184
Capítulo V: Códigos Reed-Solomon
ª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)
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)
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)
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)
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)
1 1 1
α2 α3 α n k
c 1n k 1 1n 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 1n k 1 D j Di
2d i j d n k
(5.12)
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)
188
Capítulo V: Códigos Reed-Solomon
g( X ) ( X α )( X α 2 ) X 2 ( α α 2 )X α 3 X 2 α 6 X α 3
m( X ) m0 m1 X ... mk 1 X k 1
(5.14)
X n k m( X ) q( X )g( X ) p( X )
(5.15)
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
c( X ) α 5 X α 2 X 2 α 3 X 3 α 4 X 4 αX 5 α 6 X 6
190
Capítulo V: Códigos Reed-Solomon
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
c( X ) c 0 c1 X ... c n 1 X n 1
e( X ) e0 e1 X ... en 1 X n 1
r( X ) c( X ) e( X )
(5.16)
191
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
βi α ji donde i 1,2,3,...,τ
(5.17)
r(α i ) c( α i ) e( α i ) e( α i )
(5.18)
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)
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
τ
σ( 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)
W ( α jl )
e jl
σ' ( α j l )
(5.24)
τ τ τ
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
τ τ
σ' ( 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)
W ( α jh )
e jh
σ' ( α j h )
194
Capítulo V: Códigos Reed-Solomon
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:
σ( X )S( X ) W ( X ) μ( X ) X n k
(5.28)
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
σ( X ) ( X α j1 )( X α j2 )
W( X ) e j1 ( X α j2 ) e j2 ( X α j1 )
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 )
¦ >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
τ
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 )
197
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
σ( X )S( X ) μ( X ) X n-k W( X )
«n k »
y gr(ri (X)) d « » 1
¬ 2 ¼
(5.30)
W(X) λr i (X)
(5.31)
σ(X) λt i (X)
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.
r( X ) α6 X 2 α4 X 4
s1 r(α ) α8 α8 0
2 3 5
s2 r(α ) α α α6
s3 r(α3 ) α5 α2 α4
s4 r(α4 ) 1 α6 α4
198
Capítulo V: Códigos Reed-Solomon
S( X ) α 6 X α 4 X 2 α 4 X 3
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
W1 ( X ) α 4 X
σ1 ( X ) α 4 X 2 α 3 X α 5
W ( X ) λW1 ( X ) α 3 α 4 X X
y
σ( X ) λσ 1 ( X ) α 3 α 4 X 2 α 3 X α 5 X 2 α6 X α
α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
W ( α j1 ) W(α3 ) α3
e j1 α 3 α4
σ' ( α j1 ) σ' ( α 3 ) α6
W ( α j2 ) W(α5 ) α5
e j2 α 1 α6
σ' ( α j2 ) σ' ( α 5 ) α6
e( X ) α6 X 2 α4 X 4
200
Capítulo V: Códigos Reed-Solomon
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)
σ( X ) λt i ( X )
(5.36)
W( X ) λri ( X )
(5.37)
W ( α jh )
e jh
σ' ( α j h )
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)
e( α i ) z r ( α i ) para algún i
(5.39)
Si e( α i ) r ( α i ) para todo i
(5.40)
c( X ) r ( X ) e( X )
202
Capítulo V: Códigos Reed-Solomon
e(X) = X j1 + X j2 + .... + X jτ
s1 = α j1 + α j2 + ... + α jν
s 2 = ( α j1 )2 + ( α j2 )2 + ... + ( α jτ )2
s 2t = ( α j1 )2t + ( α j2 )2t + ... + ( α jτ )2 t
(5.41)
βi α ji
s1 = β1 + β2 + ... + βτ
s 2 = ( β1 )2 + ( β2 )2 + ... + ( βτ )2
s 2t = ( β1 )2t + ( β2 )2t + ... + ( βτ )2 t
(5.42)
203
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
V0 =1
V 1 = E1 + E 2 + ... + EW
V 2 = E1E 2 + E 2 E3 + ... + EW -1EW
V W = E1E 2 ... EW
(5.44)
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)
204
Capítulo V: Códigos Reed-Solomon
205
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
(μ) 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:
( μ 1 ) (μ)
σ BM (X) = σ BM (X)
(5.48)
206
Capítulo V: Códigos Reed-Solomon
Luego:
( μ+1)
σ (X) = σ ( μ ) (X) + d μ d p-1 X ( μ - p) σ ( p) (X)
(5.49)
μ (μ)
σ BM (X) dμ lμ μ lμ
1 1 1 0 1
0 1 s1 0 0
1
.
.
2t
(μ)
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μ .
( μ 1) (μ)
σ BM (X) = σ BM (X) + d μ d p-1 X ( μ- p) σ ( p) (X) ,
l μ+1 = max( l μ , l p + μ - p) ,
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.
μ (μ)
σ 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
208
Capítulo V: Códigos Reed-Solomon
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
(2) (1 )
σ BM (X) = σ BM (X) , l μ 1 l μ , d 2 = s3 + σ1( 2 )s2 α7 α 2α 4 α 10
(4)
σ BM (X) σ BM (X) = 1 + α 2 X + α 8 X 2
209
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
(5.51)
Z( βi1 )
e ji
1 βk βi1
τ
k 1
k zi
(5.52)
210
Capítulo V: Códigos Reed-Solomon
r( X ) α6 X 2 α4 X 4
s1 r(α ) 0
s2 r(α2 ) α6
s3 r(α3 ) α4
s4 r(α4 ) α4
μ (μ)
σ 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
(4)
σ BM (X) σ BM (X) = 1 + α 5 X + α 6 X 2
211
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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
r( X ) X2 X4
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
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
V BM (X) V BM
(4)
(X) = 1 + D 5 X + D 6 X 2
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
σ( 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 )
σ BM ( X )
σ( X ) τ
βi
i 1
214
Capítulo V: Códigos Reed-Solomon
215
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
216
Capítulo V: Códigos Reed-Solomon
v(t)
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
218
Capítulo V: Códigos Reed-Solomon
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:
219
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
4 Bytes de paridad
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
α 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
221
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
2 km = 2 24 x8 = 6.27710x10 57
2 nm = 2 28x8 = 2.69599x10 67
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.
e(X) = e j1 X j1 + e j2 X j2
(5.54)
222
Capítulo V: Códigos Reed-Solomon
σ(X) = 1 + σ1 X + σ 2 X 2
(5.55)
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)
223
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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
224
Capítulo V: Códigos Reed-Solomon
σ BM (X) = 1 + σ1 X + σ 2 X 2 = 1 + α 208
X + α 24 X 2
β11 α 239
β21 α 247
Luego:
j1 16
j2 8
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
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
en el vector:
226
Capítulo V: Códigos Reed-Solomon
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)
s1 s 3 s 22
s1 s 4 s 2 s 3
s 2 s 4 s 32
(5.60)
s s
1 3
s22 β12 s1s4 s2 s3 β1 s2 s4 s32 0
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
s1s4 s2 s3
β2 β1
s1s3 s22
(5.62)
s2+s1 β2 = e j1 (β12+β1 β2 )
s2+s1 β1 = e j2 (β22+β1 β2 )
229
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
r( X ) α6 X 2 α4 X 4
s1 r(α ) α8 α8 0
s2 r(α2 ) α3 α5 α6
s3 r(α3 ) α5 α2 α4
s4 r(α4 ) 1 α6 α4
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
(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
e( X ) α6 X 2 α4 X 4
231
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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
233
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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)
234
Capítulo V: Códigos Reed-Solomon
1
2
3
4
5
6
7
8
9
Figura 5.6 Evento de error en ráfaga límite para el sistema de codificación del CD
235
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
16x24x8 3072bits
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.
237
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
16 Blahut, R. E., “Transform techniques for error control codes,” IBM J. Res.
Dev. 23 (3), Mayo 1979.
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.
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
c1 4 k1 2 k 2
c2 3 k1 3 k 2
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
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
°
241
6
Códigos Convolucionales
243
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
244
Capítulo VI: Códigos Convolucionales
m (1 )
c(2)
m( 2 )
c(3)
245
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
c (1 )
c(2)
c (1 )
m S1 S2
c(2)
246
Capítulo VI: Códigos Convolucionales
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
g (1 ) (101 )
g( 2 ) (111 )
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)
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)
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
248
Capítulo VI: Códigos Convolucionales
G(j)
i (D) g i(0j ) g i(1j ) D g i(2j ) D 2 ...
(6.6)
249
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
Ki ^
max grado g i( j ) ( D )
1d j dn
` 1di dk
(6.9)
K max K i
1di dk 1d j dn
^
max grado g i( j ) ( D ) `
1di dk
(6.10)
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)
M( D ) 1 D 4 D 5
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
c (1 )
m (1 ) S1( 1 )
c(2)
m( 2 )
c(3)
m m (1 )
0
m0( 2 ) , m1(1 ) m1( 2 ) , m2(1 ) m2( 2 ) ,...
(6.16)
m (1) m (1 ) (1 ) (1 )
0 , m1 , m2 ,... y
m (2) m (2) (2) (2)
0 , m1 , m2 ,...
(6.17)
252
Capítulo VI: Códigos Convolucionales
g i( j ) g ( j) ( j) ( j)
i ,0 , g i ,1 ,..., g i ,st
(6.18)
0 1 0 0 1 1 1
1 0 1 0 1 1 0
2 0 0 0 0 0 0
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
Luego:
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)
c c (1 )
0
c0( 2 ) c0( 3 ) ,c1(1 ) c1( 2 ) c1( 3 ) ,c 2(1 ) c 2( 2 ) c 2( 3 ) ,...
m (1 ) 101 m( 2 ) 011
La representación polinómica es:
M(1 ) ( D ) 1 D 2 M( 2 ) ( D ) D D2
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
K max K i
1di dk
(6.19)
nA n( K 1 )
(6.20)
kL
n( L K )
(6.21)
255
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
g (1) = 1 0 1
g (2) = 1 1 1
256
Capítulo VI: Códigos Convolucionales
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
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
Sc = 01
Sd = 11
1/01 1/01 1/01
c( i ) m( i ) , i 1,2,..., k
(6.22)
§1 j i
g i( j ) ¨¨
©0 j zi
(6.23)
259
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
c (1 )
c(2 )
G( D ) >1 D D @
2
Luego:
c 10,11,00,11,01,01
260
Capítulo VI: Códigos Convolucionales
^ `
MCD G(1 ) ( D ),G( 2 ) ( D ),...,G( n ) ( D ) Dl ; l t0
(6.26)
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
1
1 D D 2 ...
1D
c (1 ) ( D ) 1
261
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
c(2 )(D) 1 D
a1 a2 a2 an
m S0
S1 S2 Sn
262
Capítulo VI: Códigos Convolucionales
C( D )
G( D ) a0 a1 D a2 D 2 ... an D n
M( D )
(6.27)
a0 a1 a2 an
m S0
S1 S2 Sn
f1 f2 fn
263
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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)
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
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 )
C (1 ) ( D )
G( D ) 1 D2
M( D )
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
266
Capítulo VI: Códigos Convolucionales
c( k )
m( k )
s0 ( k 1 ) s0 ( k 2 )
s0 ( k ) s1 ( k ) s2 ( k )
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
C( D ) 1 D D2
G( D )
M( D ) 1 D2
ª 1 D D2 º
S( D ) >S0 ( D ) / M( D ) S1 ( D ) / M( D ) S2 ( D ) / M( D )@ « 2 »
¬1 D 1 D2 1 D2 ¼
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
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 ¼
269
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
c (1 )
c(2 )
m
Tabla 6.6 Secuencias para la construcción del diagrama de estados del codificador de
figura 6.12
270
Capítulo VI: Códigos Convolucionales
ª 1 D D2 º
G( D ) «1 »
¬ 1 D2 ¼
ª 1 D D2 º
S( D ) « 2 »
¬1 D 1 D2 1 D2 ¼
C (1 ) ( D ) 1.M( D ) 1 D 2
1 D D2
C( 2 )( D ) M( D ) 1 D D 2
1 D2
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
ª a0 a1 D a2 D 2 ... an D n º
G( D ) «1 »
«¬ 1 f1 D f2 D 2 ... f n D n »¼
(6.30)
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
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 .
274
Capítulo VI: Códigos Convolucionales
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
df ^
min d( ci , c j ) : mi z m j `
(6.33)
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 .
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
277
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
« d 1 »
t= « f »
¬ 2 ¼
(6.35)
P ( s r /c´ ) = max P( s r /c )
todo c
( 6.36)
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
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
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 .
280
Capítulo VI: Códigos Convolucionales
281
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
282
Capítulo VI: Códigos Convolucionales
T ( X ,Y , Z ) ¦ Ai , j ,l X iY j Z l
i , j ,l
(6.38)
XYZ
Sd
XYZ XY
2
X YZ X 2Y
Sa Sb Sc Sa
XY
1.YZ
Figura 6.21 Diagrama de estados modificado extendido
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
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
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)
284
Capítulo VI: Códigos Convolucionales
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¹
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)
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.
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
f f
T ( X ,Z ) ¦ ¦ Ad ,b X d Z b
d df b 1
(6.47)
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)
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)
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 .
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 .
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
1.6875
1.5
0.5
0
-0.1072
-0.5
-1
-1.0504
-1.5
x(15 ) 0.1072
x( 45 ) 1.0504
x(75 ) 1.6875
291
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
Igualmente:
d( r,c2 ) 2.3396
d( r,c 3 ) 1.3043
d( r,c 4 ) 3.5571
292
Capítulo VI: Códigos Convolucionales
y (T ) ai (T ) n(T ) .
(6.53)
293
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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)
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
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)
2V
1
2
>y a 1
2
y a0 ! ln¨¨
2
@
§ P(s 0 ) ·
¸¸ se adopta la hipótesis H1
© P(s1) ¹
y a1 2 y a0 2 se adopta la hipótesis H1
(6.59)
295
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
P (s r /c' ) = max P( s r /c )
todo c
(6.61)
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
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
-7
10
-2 2 4 6 8 10 12 14
Eb/No [dB]
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.
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
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
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
n 1
d (2i 1 ) ( s r(i -1) , c k ) ¦ ( s r( (ji)1 ) c k( j ) )2
j 1
(6.62)
U 1
d U2 ¦ d v21 ( s r(v -1) , c k )
v 2
(6.63)
301
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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
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
302
Capítulo VI: Códigos Convolucionales
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
304
Capítulo VI: Códigos Convolucionales
Ejemplo 6.10
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
ª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
Sc = 01
Sd = 11
1/01 1/0 1/01
307
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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.
310
Capítulo VI: Códigos Convolucionales
15 Castiñeira Moreira, J., Signal space coding over rings, Tesis doctoral,
Univ. de Lancaster, Lancaster, 2000.
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.
29 Omura, J. K., “On the Viterbi decoding algorithm,” IEEE Trans. on Inform.
Theory, IT-15, Págs. 177-179, Enero 1969.
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 )
c (1)
c(2)
313
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
c (1 )
c(2)
m c(3)
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
c (1 )
c(2)
0 / 00 0
0
1 / 11 0 / 01
1 1
1 / 10
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.
a0 a1 a2
m S0
S1 S2
f1 f2
316
Capítulo VI: Códigos Convolucionales
sr 10 01 00 01 11 11 10
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].
m Codif. C1
c1
Permutador
Multiplexor y c (m,c1' , c'2 )
selector de datos
de datos
Codif. C2
c2
320
Capítulo VII: Códigos turbo
321
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
322
Capítulo VII: Códigos turbo
P( X x) p( x ) t 0 y ¦ p( x ) 1.
xAX
(7.1)
μ( x )
p( x )
¦ μ( x )
xA
(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)
μ( x , y ) μ( y / x )μ( x )
(7.4)
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)
Lμ( x ) μ( y ) >
ln e L( x ) e L( y ) @
(7.7)
Lμ( x )μ( y ) L( x ) L( y )
(7.8)
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)
p( x , y )
μ MPA ( x ) p( x / y )
p( y )
(7.10)
μMPA ( x ) v p( x , y )
(7.11)
entonces:
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)
-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)
326
Capítulo VII: Códigos turbo
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)
e L( bi ) / 2 e L( bi ) / 2
P ( bi r1 ) L( bi )
.e rL( bi ) / 2 L( bi )
.e bi L( bi ) / 2
1e 1e
(7.17)
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)
n
p( X ) p( X1 ) Q j ( X j / X j 1 )
j 2
(7.19)
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 1AX j 1
(7.21)
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)
329
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
°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)
μMPA ( X j ) p( X j ,Y )
(7.24)
330
Capítulo VII: Códigos turbo
p( X j ,Y )
μ MS ( X j )
p( X j )
(7.25)
P( X ,Y ) P( X / Y )P(Y )
(7.26)
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)
Figura 7.4. Modelo del sistema para la aplicación del algoritmo BCJR
pi ( u / u' ) P( Si u / Si 1 u' )
(7.31)
332
Capítulo VII: Códigos turbo
i
P(Y1i / X1i ) R(Y j / Xj )
j 1
(7.33)
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)
333
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
P Si u / Y1n
(7.36)
P ^Si 1 u' ,Si u` / Y1n
(7.37)
λ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 ) 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)
σ 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
¦ 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)
(7.51)
¦ 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)
336
Capítulo VII: Códigos turbo
(7.53)
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:
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 »¼
ª1 0 1 0 0 º
G' «0 1 0 1 0 »
« »
«¬1 1 0 0 1 »¼
ª1 0 º
P' «0 1 »
« »
«¬1 1 »¼
ª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 »¼
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
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:
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
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
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 )
340
Capítulo VII: Códigos turbo
γ 1 ( 0 ,1 ) ¦ P( S1 1 / S0 0 ).P( X 1 x /{ S0 0 , S1 1 })P(Y1 / X 1 x)
xAx
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)
xAx
γ 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
341
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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
α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
α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
343
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
β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
344
Capítulo VII: Códigos turbo
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
345
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
Luego los eventos que dependen de las transiciones pueden estimarse con estos
valores calculados:
σ 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
σ 4 ( 0 ,0 ) σ 4 ( 3 ,1 )
0.97826
σ 4 (1,0 ) σ 4 ( 0 ,0 ) σ 4 ( 2 ,1 ) σ 4 ( 3 ,1 )
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
σ 5 ( 0 ,0 )
0.97584
σ 5 ( 0 ,0 ) σ 5 (1,0 )
σ 5 (1,0 )
0.02415
σ 5 ( 0 ,0 ) σ 5 (1,0 )
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
347
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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
348
Capítulo VII: Códigos turbo
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.
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
349
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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
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.
§ 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
§ P( y i / x i 1 ) ·
L( y i / x i ) ln¨¨ ¸
© P( y i / x i 1 ) ¸¹
(7.55)
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)
352
Capítulo VII: Códigos turbo
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)
353
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
¨ ^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)
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)
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)
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)
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)
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)
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)
Le ( bi ) L( bi / Y1n ) L( bi ) Lc y i1
(7.74)
358
Capítulo VII: Códigos turbo
359
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
360
Capítulo VII: Códigos turbo
Ejemplo 7.3:
c (1 ) x1
Modula-
dor
formato
polar
x2
m (2 )
c
361
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
362
Capítulo VII: Códigos turbo
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
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
364
Capítulo VII: Códigos turbo
ª1 1 º
Pp1 «1 0 »
¬ ¼
ª0 0 º
Pp2 «0 1 »
¬ ¼
365
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
13 14 15 16
§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 ¹
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
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
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
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
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
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
371
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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
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
374
Capítulo VII: Códigos turbo
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
376
Capítulo VII: Códigos turbo
( N 1 )L
L
Canal
2L
2L
( N 1 )L
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)
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]
379
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
§ 0 1 LI 1 ·
¨¨ ¸
©π { 0 } π { 1 } π { LI 1 } ¸¹
(7.76)
donde
380
Capítulo VII: Códigos turbo
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 )
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
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)
7.8.7 Respuesta de tasa de error para códigos turbo en función del tipo y
tamaño de permutador utilizado
384
Capítulo VII: Códigos turbo
385
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
386
Capítulo VII: Códigos turbo
387
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
A1 E2 D2
Permutador
Inverso
E1 A2
D1 Permutador
Y1 Y2
Permutador
388
Capítulo VII: Códigos turbo
Y X n
o bien,
y xn
(7.80)
389
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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)
2
Y y μY x nY
σ2
(7.83)
siendo
μY 2 / σ2
(7.84)
σY2 4 / σ2
(7.85)
μ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.
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
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
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)
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
395
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
A μA x nA
(7.89)
siendo
μA σ A2 / 2
(7.90)
§
2
¨ ξ σ A
©
2· 2
/ 2 x ¸ / 2σ A
¹
e
pA ( ξ / X x)
2π σ A
(7.91)
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 )
dξ
1,1
(7.92)
de manera que 0 d I A d 1
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)
1 f 2 pE ( ξ / X x )
IE I( X ; E )
2x
¦ ³f pE ( ξ / X x ) log 2
pE ( ξ / X 1 ) pE ( ξ / X 1 )
dξ
1,1
(7.94)
de manera que 0 d I E d 1 .
IE Tr ( I A ,Eb / N0 )
(7.95)
397
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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
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)
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= 3 dB
Figura 7.27 CTIE para el código del ejemplo 7.4 y diferentes valores de E b / N0
401
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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
402
Capítulo VII: Códigos turbo
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
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.
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.
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
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.
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
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.
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:
c (1 )
ª1 1 0 1 0 0 º
G «0 1 1 0 1 0 »
« »
«¬1 0 1 0 0 1 »¼
c(2 )
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.
407
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
k1
k2
n2
Códigos Turbo:
1 2 5
3 4 6
7 8
408
Capítulo VII: Códigos turbo
Bits de mensaje
Permutador Multiplexador
Codif. Columna
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
410
Capítulo VII: Códigos turbo
c (1 )
m
c(2)
permutador
aleatorio de 3 c(3)
bits
§1 2 3 ·
El permutador aleatorio tiene como regla de permutación ¨¨ ¸¸ .
©3 1 2 ¹
411
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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
ª 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)
G >P Ik @ (8.2)
Sub- matriz I (n - k)x(n- k) Submatriz PT (n - k)xk
(8.3)
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)
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)
H $ GT 0 (8.9)
415
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
416
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)
417
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
'
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 .
418
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)
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
420
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)
P hi / d j x ¦ P hi / d P d / d j x (8.10)
d :d j x
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
d̂ j arg max f jx
x
Rkjx (8.14)
kM ( j )
422
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)
ª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¼
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
1 1 1 1 1 0 0 0 1 1 0 1
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)
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
425
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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
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)
0 1
Figura 8.3 Calculo de los coeficientes R12 y R12
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
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 °
¿
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
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
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
433
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.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
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
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
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
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
m 1 0 0 0
436
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)
ª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 »¼
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
H $d 0
438
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)
1
f j1 2 Ay j
(8.17)
1e σ2
f j0 1 f j1 (8.18)
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 cN i \ j
Rij0 1
2 1 δ Rij (8.22)
R1ij 1
2 1 δRrij (8.23)
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
dj
max Q jx (8.26)
es decir:
dj 0 si Q 0j ! Q1j sino d j 1 (8.27)
ª 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 »¼
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
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
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
443
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
lnz
lz
z e o lz (8.28)
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)
8.7.1 Inicialización
f jx e
Lf jx
o Lf jx
ln f jx (8.31)
y
Qijx e
LQijx
o LQijx
ln Qijx (8.32)
444
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)
LQij0 LQ1ij
δQij 1sij e
LδQij
1sij e e (8.34)
donde:
s ij 0 si LQij0 d LQ1ij
o
sij 1 si LQij0 ! LQ1ij (8.35)
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)
© ¹
LδQij
min LQij0 , LQ1ij f LQij0 LQ1ij (8.37)
1 1¦ sij c
LδRij s ij c
Lδ Qij c Lδ Qij c
δ Rij e e e (8.38)
j cN i \ j j cN i \ j
sδ Rij ¦ s ij c (8.40)
j cN i \ j
445
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
es decir:
δ R ij 1sδRij e
LδRij
(8.41)
ln Rij0
§
ln¨1 1 ij e
LR ij0
sδR Lδ Rij ·
¸ ln2 (8.42)
© ¹
si sδ R ij es par, se tiene:
LR ij0
§
ln2 ln¨1 e
©
Lδ Rij ·
¸
¹
ln2 f Lδ R ij (8.43)
LR ij0
§
ln2 ln¨1 e
©
Lδ Rij ·
¸
¹
ln2 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
§
ln2 ln¨1 e
©
Lδ Rij ·
¸
¹
ln2 f Lδ R ij (8.45)
y si sδ R ij es impar:
LR 1ij
§
ln2 ln¨1 e
©
LδRij ·
¸
¹
ln2 f Lδ Rij (8.46)
446
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)
ln c ijx
§ Lc x
ln¨¨ e ij
·
¸¸
§ Lf x
ln¨¨ e j
·
¸¸ ¦ ln¨¨ e i cj
§ LR x ·
¸¸ (8.48)
© ¹ © ¹ i cM 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
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)
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 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)
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
448
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)
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
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.
449
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
450
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)
' 0' o 1
'1' o 1
451
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
ª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.
452
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)
453
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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.
454
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)
§ P( bi 1 ) ·
L( bi ) ln¨¨ ¸
© P( bi 1 ) ¸¹
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 )
§ 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)
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
ª 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 )>@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 » º
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
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
457
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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
2
§ 2 · 4 Eb
2
σ ch ¨ σ ¸ 8R (8.78)
¨σ 2 n ¸ σ n2 N0
© n ¹
f e
2
ξ σ A 2
/ 2 / 2σ A
IA I A ( σ A ) 1 ³f log 2 (1 e ξ )dξ
2π σ A
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
σA J 1 ( I A ) (8.80)
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)
459
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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
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)
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)
© ¹
« ¨ ¸ ¨ ¸»
¬ 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
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)
§ 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
464
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)
465
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
466
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)
K
tpn ¦ dp G
k 1
k kn (8.93)
ª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
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)
468
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)
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].
469
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
dpk tpn
3) Se suma dp k a todos los nodos de control de paridad tp que están
n´
conectados a dp k :
470
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)
ª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 )
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
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
472
Capítulo VIII: Códigos de paridad de baja densidad (o códigos LDPC)
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.
7. Tanner, L., M., “A recursive approach to low complexity codes,” IEEE Trans.
Inform. Theory, Vol. 27, No. 5, Págs. 533-547, 1981.
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.
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.
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.
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?
ª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 »¼
¬
477
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
ª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 »¼ ¬ ¼
478
Apéndice A:
Probabilidad de error en la
transmisión 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)
479
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
0
k 2 t
T Ap(t 2T )
0
k t
p( t kT )
480
Apéndice A
1 t = 0
p(t) = ®
¯0 t = r T, r 2T,...
(A.2)
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
482
Apéndice A
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
y(t k ) = ak + n(t k )
(A.6)
483
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
pY (y/H 0 ) = pN (y)
(A.7)
pY (y/H1 ) = pN (y-A)
(A.8)
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
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
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)
486
Apéndice A
Pe = P0 Pe0+P1Pe1
(A.11)
donde:
P0 = P(H 0 ) ; P1 = P(H1 )
dPe /dU = 0
(A.12)
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)
487
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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)
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
(y-m) 2
1 f
P(Y>m+kV) =
2SV 2 ³m kV
e 2.V 2
dy
(A.19)
( λ )2
1 f
Q(k) =
2π
³k e 2 dλ
(A.20)
siendo:
y-m
λ=
σ
(A.21)
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)
489
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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:
° 2S R Unip olar
A= ®
°̄ 4SR polar
(A.27)
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)
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)
s1 ( t ) s0 ( t )
A A
0 0
t t
Tb Tb
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)
N0 rb
NR σ2 N0 B
2
(A.33)
492
Apéndice A
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
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)
Eb
2° Unipola r
§ A · ° N0
¨ ¸ =®
© 2σ ¹ ° 2E b
Polar
°¯ N0
(A.37)
§ E ·
°Q¨ b ¸
Unipol ar
° ©¨ N ¸
0 ¹
Pe = ®
° §¨ 2 E b ·¸
°Q¨ N ¸ Polar
¯ © 0 ¹
(A.38)
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)
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:
e
a a
e a
(B.2)
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)
a
b b
a .
(B.4)
498
Apéndice B
i j =r
r (i j) mod (m)
(B.5)
0 0 = 0
1 1 = 0
0 1 = 1
10 =1
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
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:
a(b c) = ab + ac
(B.7)
a-b = a + (-b) ,
a/b = a(b -1 )
(B.8)
500
Apéndice B
Suma módulo-2
0 1
0 0 1
1 1 0
x 0 1
0 0 0
1 0 1
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
n=1 X , X+1
n=2 X 2 , 1+X 2 , X+X 2 , 1+X+X 2
502
Apéndice B
X3 + X+1 | X+1
-- ---------------
3 2
X +X X2 X
--------------
X 2 + X +1
X 2+ X
----------
r(X) 1
f(X) = q(X)g(X)+r(X)
(B.10)
r(X) = 1
q(X) =X+X 2
503
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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)
0α = α 0 = 0
1.α = α1 = α
α 2 = αα , α 3 = αα 2
α i α j = α i+j = α j α i
F ^0,1,α ,α 2
`
,..., α k ,...
(B.12)
504
Apéndice B
m
1
X2 +1 = p(X)q(X)
m
1
α2 +1 = p(α= p( )=0
m
1
α2 =1
(B.13)
m
2
F { 0 ,1, α , α 2 ,..., α 2 }
(B.14)
La condición:
i+j<2 m 1
(B.15)
i+j = ( 2 m -1 ) + r , 0 d r<2 m -1
m
α i α j = α ( i j )=α ( 2 1 ) r
=α r
(B.16)
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 .
X i = q i (X)p(X)+ai (X)
(B.18)
ai (X) z a j (X)
(B.19)
si i = 0,1,2,...,2 m -2
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)
0 0 = 0
0 αi = αi 0 = αi
506
Apéndice B
Luego,
(B.21)
m
2
F { 0 ,1, α , α 2 ,..., α 2 }
507
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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
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
α 2 + α 4= α 2 + α + α 2 = α
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
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
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
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 .
511
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
Teorema B.2:
Teorema B.3:
512
Apéndice B
e 1 l
φ( X ) ( X β 2 )
i 0
Ejemplo B.4:
φ( 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
513
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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
514
Apéndice B
Bibliografía
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 »¼
ª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.
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.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
ª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
Capítulo 8
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 ¼»
ª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,
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
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
524
Lista de símbolos
525
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
Capítulo 3
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
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
527
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
528
Lista de símbolos
Capítulo 7
529
Codificación para el control de errores / Jorge Castiñeira Moreira – Patricio Guido Farrell
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
Capítulo 8
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
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
532
Lista de símbolos
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
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
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
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
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