• No results found

2.1 The structure of the Framework Programmes and ERA

2.1.2 The 6 th Framework Programme (2003–2006)

de diseño, la matriz de chequeo de paridad H de tamaño m×n consiste de wc submatrices Hd de

tamañoµ×napiladas una encima de la otra. Las submatricesHd tienen la siguiente estructura: para

dos enteros cualesquieraµ y wr más grandes que 1, cada submatriz Hd es de tamaño µ×µwr con

peso de fila wr y peso de columna 1. La submatrizH1 tiene la siguiente forma: parai= 1,2, . . . , µ,

lai-ésima fila contiene todos sus wr 1’s en la columnas (i−1)wr+ 1 a iwr. Las otras submatrices

son simplemente permutaciones de columnas deH1. Es evidente queHes regular, tiene dimensiones

µwc×µwr=µwc×n, y tiene pesos de filas y columnaswrywc, respectivamente. No está garantizada

la ausencia de ciclos de longitud 4 en H, pero estos se pueden evitar mediante un diseño asistido por computadora. Gallager mostró que el conjunto de tales códigos tienen excelentes propiedades de distancia (dmínse incrementa conn) dadoswc≥3 ywr> wc.

MacKay descubrió independientemente los códigos LDPC y fue el primero en mostrar la habilidad de estos códigos para operar cerca de los límites de capacidad [93, 94]. MacKay ha archivado en una página web [96] un gran número de códigos LDPC que diseñó para su aplicación en comunicación y almacenamiento de datos, la mayoría de ellos son regulares. Los algoritmos para generar semi aleatoriamente matrices H dispersas implican simplemente poblar una matriz colocando 1’s en ella, columna por columna, para asegurar las distribuciones de peso de columnas y filas deseados y así evitar ciclos de longitud 4.

Uno de los inconvenientes de los códigos de Gallager y MacKay es que carecen de suficiente estructura para permitir una codificación de baja complejidad. La codificación se realiza poniendo H en la forma [PT I] mediante la eliminación de Gauss-Jordan, de esta manera puede obtenerse la

matriz generadora de forma sistemáticaG= [I P]. El problema con la codificación a través de Ges que la submatrizPgeneralmente es no dispersa, de tal manera que para códigos de longitudn= 1000 o más, la complejidad de codificación es alta. Una técnica de codificación eficiente que emplea solamente la matrizHse propuso en [97].

Desde los primeros trabajos sobre códigos LDPC, se han publicado un gran número de artículos sobre el diseño y análisis de estos códigos. La mayor parte de la técnica de diseño se centra en el problema de la complejidad del codificador incorporando estructura en H y en el rendimiento del código. Los siguientes libros brindan una buena cobertura de algunos de los enfoques más conocidos [11, 98, 99].

3.2.4

Algoritmos de Decodificación

Además de introducir los códigos LDPC en su trabajo de Tesis [15], Gallager propuso también un algoritmo de decodificación que es generalmente cercano al óptimo. El algoritmo se ha denomina- doalgoritmo suma producto (SPA, del inglés Sum-Product Algorithm), algoritmo de propagación de creencia(BPA, del inglésBelief Propagation Algorithm), yalgoritmo de paso de mensajes(MPA, del inglésMessage Passing Algorithm). El término paso de mensajes hace referencia a todos los algoritmos iterativos que serán descriptos, incluyendo el SPA y sus aproximaciones.

La decodificación óptima (máximo a posteriori [MAP]) símbolo a símbolo requiere calcular la pro- babilidad a posteriori de que un determinado bit en la palabra código transmitidac= [c0c1 · · · cn−1] sea igual a 1, dada la palabra recibidar= [r0r1 · · · rn−1]. Sin pérdida de generalidad, se hace foco en la decodificación del bitci de tal manera que el logaritmo de su relación de verosimilitud (LLR,

del inglésLog-Likelihood Ratio) denotadaL(ci) se calcula de la siguiente manera

L(ci),ln Pr ( ci= 0|r) Pr (ci= 1|r) . (3.2)

a) b)

Figura 3.3.Subgrafo de un grafo de Tanner correspondiente a una matriz H cuya: a) columna cero es [11100· · ·0]T, b) fila cero es [110100

· · ·0]T. Las flechas indican el paso de mensajes entre nodos.

El SPA para el cálculo de L(ci) es un algoritmo iterativo basado en el grafo de Tanner del código.

Específicamente, se puede pensar que los nodos variables y de chequeo representan dos tipos de procesadores y las aristas representan el camino de los mensajes (LLR). En una media iteración, cada nodo variable procesa sus mensajes de entrada y pasa sus mensajes de salida resultantes a los nodos de chequeo vecinos (dos nodos son vecinos si ellos están conectados por una arista). Este proceso se muestra en la Fig. 3.3 a) para el mensaje mc0f2 del nodo variable c0 al nodo de chequeo f2. Obsérvese en la figura que la información enviada al nodo de chequeof2se calcula a partir de toda la información disponible en el nodo variablec0del canal y sus vecinos, excluyendo el nodo de chequeo

f2 (es decir solo la información extrínseca se pasa). En cada media iteración se calcula la información extrínseca mci→fj para cada par de nodos variable-chequeo vecinos. Específicamente, los mensajes

enviados desde el nodo variableci al nodo de chequeofj están dados por

mci→fj = 2 ri σ2 + X Ni\{j} mfj→ci, (3.3)

dondeNies el conjunto de vecinos deci,σ2es la varianza de cada muestra de ruido blanco Gaussiano

aditivo (AWGN, del inglésAdditive White Gaussian Noise) del canal, ymfjci es el mensaje defj a

ci.

En la otra media iteración, cada nodo de chequeo procesa sus mensajes de entrada y pasa sus mensajes de salida resultantes hacia sus nodos variables vecinos. Este proceso se muestra en la Fig. 3.3 b) para el mensajemf0c4 desde el nodo de chequeof0al nodo variablec4. Solamente la información extrínseca es enviada hacia el nodo variablec4. Dicha información extrínseca mfjci se calcula para

cada par nodo de chequeo/nodo variablefj/ci conectado por cada media iteración. Específicamente,

los mensajes enviados desde el nodo de chequeofj al nodo variableci están dados por

mfj→ci =⊞Nj\{i}mci→fj, (3.4)

3.2 Códigos LDPC 47