• No se han encontrado resultados

El bloque de codificación FEC del estándar DTMB se encarga de agregar los bits de chequeo necesarios para proteger a los datos de información de errores provocados por diversos factores durante la transmisión. La Figura 2.8 muestra el proceso de codificación FEC utilizado en la norma DTMB.

El mismo se compone de un codificador externo BCH y un codificador interno LDPC. El codificador externo es del tipo BCH (762,752) correspondiente a 752 bits de información y 10 de chequeo. Este se obtiene del código BCH (1023,1013), el cual se forma rellenando los bits de información con 261 ceros y así se obtienen los 1013 bits. Una vez obtenida la palabra de código se extraen los 261 ceros (formando palabras de código de 762 bits) ubicados en la cabecera de la misma, esto es posible pues el código es sistemático, ubicando los bits de información por delante de los de chequeo. (García Rodríguez, 2012)

Figura 2.8. Diagrama del FEC del estándar DTMB

Estos grupos de palabras codificadas BCH son concatenadas hasta formar palabras de cuatro, seis u ocho grupos BCH, en dependencia de la razón de código empleada: 0.4, 0.6 o 0.8. La longitud de estos grupos será de 3048, 4572 o 6096 bits, a los mismos se le añaden los bits redundantes del codificador LDPC para formar palabras de longitud fija e igual a 7493 bits. Finalmente se retiran los primeros cinco bits de chequeo de la palabra codificada. La extracción se justifica con el objetivo de transmitir en una Trama Señal (unidad básica de transmisión del estándar DTMB) un número fijo de Tramas de Transporte (TS) de 188 bytes. (Domínguez and Rodríguez, 2013)

2.2.1 BCH (Bose-Chadhui-Hocquenghen)

BCH es un código de corrección de errores cíclico desarrollado de forma independiente por Bose, Chaudari, y Hocquenghem. En DTMB se utiliza la codificación BCH (762, 752), que es un código corto del BCH (1023, 1013).

Cuando se implementa este código, por cada 752 símbolos de información (4 MPEGTS) se añade 10 símbolos de paridad en el código BCH. Así que el total de símbolos de la palabra código de BCH son 762.

El generador del código BCH se puede expresar de la siguiente manera

Longitud del bloque BCH: n = 2𝑚 − 1

Longitud del bloque antes de la codificación BCH: k Dimensión del polinomio generador: m

Bits de chequeo de paridad: n - k ≤ m ∙ t donde t es el número de errores corregibles. Mínima distancia d: 𝑑𝑚𝑖𝑛≥ 2𝑡 + 1

Si 𝑚 ≥ 3; 𝑡 ≤ 2𝑚−1

Aplicando estas fórmulas se puede calcular el número de errores corregibles:

𝑛 = 2𝑚− 1 → 1023 = 2𝑚− 1 → 𝑚 = 10

𝑛 − 𝑘 ≤ 𝑚 ∙ 𝑡 → 1023 − 1013 ≤ 10𝑡 → 𝑡 ≥ 1

Después de realizar estas operaciones se puede apreciar que el código BCH solo es capaz de corregir un error frente a otros códigos de corrección de errores como Reed- Solomon que puede corregir hasta ocho errores en las mismas condiciones. Pero Reed-Solomon incluye mucha más redundancia, razón por la cual BCH que introduce poca redundancia tiene la ventaja de que puede procesarse más rápido. Esta pobre capacidad de corrección de errores se corrige en el siguiente bloque mediante el código LDPC. (Chen, 2012)

El código BCH sirve para dos propósitos. Uno es adaptar el flujo de datos. Cuando escogemos varios modos de trabajo, cada trama del sistema debe contener paquetes de MPEG - 2 completos, así que el código BCH puede corresponder a la longitud del paquete de MPEG y a las palabras código de LDPC. El otro propósito de BCH es reducir el error-floor del sistema (Rodríguez and Domínguez, 2013). Al bajo decremento de la razón de error de bit del código LDPC cuando hay una alta relación de señal a ruido, se le llama error-floor. El código de BCH puede reducir el error-floor del sistema eficazmente. Los experimentos muestran que el error-floor de este estándar es menos que

10−12, que quiere decir que el estándar cubre los requisitos de la transmisión de televisión de alta definición completamente.

2.2.2 LDPC (Low Density Parity Check)

EL codificador LDPC que nos ocupa es de baja densidad pues es un código de bloque lineal representado por una matriz de chequeo de paridad H (m x n) con baja densidad de 1s; se considera baja la densidad si es menor del 1% de todos los elementos de la matriz H.

Figura 2.9. Matriz H de representación del código LDPC.

Esta matriz está conformada por submatrices

𝐴

𝑖,𝑗 de (b x b) elementos con b = 127 y pesos de fila 1 cumpliendo con la condición de baja densidad, o sea, 1<< 127. La densidad de la matriz compuesta en su conjunto es del 0.26 % no igual a 1/127 debido a la existencia de submatrices todos ceros, con lo cual el valor es mucho menor que la máxima teórica del 1 %, siendo suficientemente baja como para permitir decodificaciones iterativas efectivas. Esto es en efecto, la clave innovativa detrás de la invención de los códigos LDPC.

La matriz H está representada por un arreglo de matrices circulantes, en la cual cada fila es un desplazamiento cíclico de la anterior, la primera fila es un cambio cíclico de la última fila, y así mismo sucede con las columna . El peso de cada fila es 1lo que significa que el peso de las columnas será igual, dando la propiedad de regulares a las submatrices y de irregular a la matriz compuesta.

Al conformar una estructura de código Cuasicíclicos o QC permite que se simplifiquen los diseños del codificador en comparación con los diseños iniciales que eran aleatorios. Adicionalmente permite mayor flexibilidad en el diseño del código, particularmente la irregularidad, que logra una mejora en relación con los códigos LDPC cíclicos, ya que permiten reducir la capacidad de almacenamiento necesaria debido a que la matriz H de los códigos cíclicos deben ser matrices (n x n) sin importar la razón de codificación,

además de reducir la cantidad de 1s por filas y columnas que presentan los códigos LDPC cíclicos reduciendo la complejidad del codificador y decodificador. (Elsner, 2013) La norma presenta la matriz generadora 𝐺𝑞,𝑐, de forma que no es necesario obtenerla a partir de la matriz H, dicha matriz generadora presenta algunas de las propiedades antes mencionadas para H cuya representación se muestra en la Figura 5, donde I es la matriz identidad (127x127), 0 es una matriz ceros (127 x127) y 𝐺𝑖,𝑗 es una matriz circulante (127x127) con 0 ≤ i <c y 0 ≤ j< t-c. Dicha matriz generadora es de forma cuasi-circular sistemática. Las palabras de códigos obtenidas son de 7493 bits. (Standard, agosto 2006)

Figura 2.10. Matriz generadora del código LDPC.

2.3 Consideraciones finales del capítulo.

En el capítulo que finaliza con esta sección se demuestra la factibilidad de la herramienta GNU Radio en la implementación de bloques que contribuyen al desarrollo del proyecto y se expone detalladamente los codificadores que utiliza el FEC de la norma de televisión digital terrestre DTMB.

ANÁLISIS DE LOS RESULTADOS

En este capítulo se expone la implementación de los bloques que conforman el proceso de codificación de canal en un transmisor DTMB auxiliándose de la herramienta de software libre GNU Radio y de su interfaz gráfica GNU Radio-companion.

Documento similar