Codificación de Canal para Canales Ópticos
3.2 Códigos LDPC
3.2
Códigos LDPC
Los códigos LDPC son una clase de códigos bloque lineales que proveen un desempeño cercano a la capacidad sobre una gran colección de canales de almacenamiento y transmisión de datos, mientras simultáneamente admiten decodificadores implementables. Los códigos LDPC fueron propuestos por Gallager en 1960 en su Tesis doctoral [15] y fueron escasamente considerados durante las siguientes décadas. Una notable excepción es el importante trabajo de Tanner en 1981 [92] en el cual generalizó los códigos LDPC e introdujo la representación gráfica de estos códigos, llamadosgrafos de Tanner. El estudio de códigos LDPC resurgió a mediados de los 90 con el trabajo de MacKay, Luby, y otros [93, 94, 95], quienes notaron algunas ventajas de los códigos bloque lineales que poseen matrices de chequeo de paridad dispersas (baja densidad).
3.2.1
Representación Matricial
Si bien los códigos LDPC se pueden generalizar a alfabetos no binarios, se consideran en este trabajo únicamente los códigos LDPC binarios por razones de simplicidad. Dado que los códigos LDPC constituyen una clase de códigos bloque lineales, se pueden describir como un subespacio k
dimensionalC del espacio vectorialFn2 de lasn-tuplas sobre el campo binarioF2. Teniendo en cuenta esto, se puede encontrar una baseB ={g0,g1, . . . ,gk−1} la cual conforma C tal que cadac ∈ C se puede escribir comoc=u0g0+u1g1+· · ·+uk−1gk−1 para algún{ui}. De manera más compacta,
c=uGdondeu= [u0u1 · · · uk−1] yGes la matriz generadora de dimensionesk×ncuyas filas son los vectores{gi}(como es convencional en codificación, todos los vectores son vectores fila). El espacio
nulo (n−k) dimensionalC⊥ deGcomprende todos los vectoresx∈Fn
2 para los cualesxGT =0y es conformado por la baseB⊥={h0,h1, . . . ,hn−k−1}. Entonces, para cadac∈ C, chTi = 0 para todoi
o, de manera más compacta,cHT =0, donde H es la matriz de chequeo de paridad de dimensiones
(n−k)×n cuyas filas son los vectores{hi} y a su vez es la matriz generadora para el espacio nulo C⊥. La matriz de chequeo de paridad se denomina así porque contienem=n−kchequeos de paridad
por separado sobre cada palabra código en el códigoC.
Un código LDPC es un código bloque lineal para el cual la matriz de chequeo de paridadHtiene baja densidad de 1’s. Un código LDPCregular es un código bloque lineal cuya matriz de chequeo de paridadH contiene exactamente wc 1’s en cada columna y exactamente wr =wc(n/m) 1’s en cada
fila, dondewc ≪m (equivalentemente, wr ≪n). La tasa del código R=k/nse relaciona con estos
parámetros mediante R = 1−wc/wr (esto supone que H es de rango completo). Si H es de baja
densidad, pero el número de 1’s en cada columna o fila no es constante, entonces el código LDPC es irregular. Es más fácil ver cuando un código LDPC es regular o irregular a través de su representación gráfica.
3.2.2
Representación Gráfica
Tanner consideró los códigos LDPC y mostró como se pueden representar efectivamente mediante un grafo bipartito, ahora llamado grafo de Tanner [92]. El grafo de Tanner para un código LDPC se muestra en la Fig. 3.2. En el contexto de un código LDPC, los nodos de restricciones son también denominados nodos de chequeo debido a que cada restricción es una restricción de chequeo de paridad. El grafo de Tanner de un código se dibuja de acuerdo a la siguiente regla: el nodo de chequeoj se conecta al nodo variableisiempre que el elemento hji enHsea 1. Se puede deducir de esto que hay
m=n−k nodos de chequeo, uno por cada ecuación de chequeo, ynnodos variables, uno por cada bit codificado ci. Además, lasm filas de H especifican las conexiones de los m nodos de chequeo, y
Figura 3.2.Grafo de Tanner para el código de ejemplo.
lasncolumnas deHespecifican las conexiones de losnnodos variables.
Ejemplo: Se considera un código bloque lineal (10,5) con wc = 2 y wr = wc(n/m) = 4 con la
siguiente matrizH: H= 1 1 1 1 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 1 0 0 1 0 1 1 . (3.1)
El grafo de Tanner correspondiente a H se muestra en la Fig. 3.2. Se puede observar que los nodos variablesc0, c1, c2, yc3están conectados al nodo de chequeof0 dado que en la fila cero de H, h00=
h01 = h02 = h03 = 1 (todos los otros son cero). Nótese que situaciones análogas ocurren para los nodos de chequeof1, f2, f3, yf4 los cuales corresponden respectivamente a las filas 1, 2, 3, y 4 deH. Se debe tener en cuenta que, como consecuencia de cHT =0, los valores de los bits conectados al
mismo nodo de chequeo deben sumar cero. También se puede construir el grafo de Tanner a partir de la columnas. Por ejemplo, el nodo variablec0está conectado a los nodos de chequeof0 yf1debido a que en la columna cero deH,h00=h10= 1.
El grafo de Tanner de este ejemplo es regular: cada nodo variable tiene dos conexiones y cada nodo de chequeo tiene cuatro conexiones (esto quiere decir que el grado de cada nodo variable es 2 y el grado de cada nodo de chequeo es 4). Esto coincide con el hecho de quewc= 2 ywr= 4. Del ejemplo
también se desprende claramente quemwr=nwc. Para los códigos LDPC irregulares, los parámetros
wc ywr son funciones de las columnas y de las filas.
Un ciclo (o lazo) de longitud υ en un grafo de Tanner es un camino que comprende υ aristas el cual se cierra sobre sí mismo y no pasa más de una vez por cada nodo. El grafo de Tanner del ejemplo anterior posee un ciclo de longitud 6 ejemplificado por las seis aristas en negrita de la Fig. 3.2. El girth γde un grafo de Tanner es la mínima longitud de un ciclo en el grafo. El ciclo más corto posible en un grafo bipartito claramente es un ciclo de longitud 4. Estos ciclos se manifiestan en la matriz H como cuatro 1’s que se ubican en las esquinas de una submatriz de H. El interés en los ciclos, particularmente en los ciclos cortos, se debe principalmente a que ellos degradan el desempeño de los algoritmos de decodificación iterativa usados para los códigos LDPC. Este hecho resultará evidente en la discusión de los algoritmos de decodificación iterativa que se presenta más adelante.
3.2.3
Diseño de Códigos LDPC
La forma más directa de generar un código LDPC es a través de la construcción de una ma- triz LDPC con ciertas propiedades deseadas. Existen un gran número de técnicas de diseño en la bibliografía, aquí se revisarán superficialmente las más relevantes.
3.2 Códigos LDPC 45