Programación y evaluación de registros de un DSP de un esquema de corrección de errores unidireccional (Foward Error Correction, FEC) - Fabián Luna, Iván (Universidad Autónoma Metropolitana, 2013)
En las últimas décadas, la necesidad de mandar información de un lugar a otro, ha sido un tema de gran interés para los investigadores en el área de las comunicaciones. Lo que se busca es desarrollar técnicas de codificación y decodificación capaces de contrarrestar los efectos introducidos por los medios de comunicación que provocan la degradación de las señales. En la actualidad, para detección y corrección de errores de la información, se ocupan técnicas como: Códigos convolucionales, turbo códigos, códigos de paridad de baja densidad (LDPC: Low Density Parity Check), Reed-Solomon y Códigos de redundancia cíclica (CRC:Cyclic Redundancy Check). En los sistemas de comunicación digital, para que la información pueda ser enviada, se usa una representación binaria (1 y 0). Para transmitir la información se usan señales continuas y discretas. Si son continuas, son muestreadas, cuantificadas, codificadas y moduladas. Para señalas discretas, sólo es necesario codificarlas y modularlas. Al recibir la información, se puede calcular el desempeño de la técnica de codificación empleada. Esto se hace al medir la tasa de error de bit (VER: Bit Error Rate) para diferentes relaciones de energía de bit por densidad de espectral de ruido (Eb/No: Energy per bit to Noise Power Spectral Density Ratio). En la actualidad se especifica a un valor 1 x 10 ⁼⁵ para la VER, que indica un desempeño aceptable. La detección y corrección de errores se hace en la parte receptora. Una alternativa, cuando se presenta errores en la información, es pedirle al transmisor que vuelva a retransmitirla. Este comportamiento puede llegar a ser repetitivo, por ejemplo si se presentan muchos errores, el receptor no dejaría de solicitar que la información sea reenvíada y, como consecuencia de ello, aumenta el procesamiento en ambas partes, además del tiempo. En sistemas donde se requieren aplicaciones en tiempo real esto no es factible y lo que se busca es evitar el reenvío de la información, es decir, que los errores que se presenten sean corregidos en el receptro a este proceso se le conoce como el método corrección de errores FEC (Forward Error Correction). Entre los métodos FEC de alto desempeño tenemos a los turbo códigos y códigos de paridad de baja densidad LDPC. Los turbo códigos basan su funcionamiento en los códigos convolucionales recursivos (RSC: Recursive Systematic Convolutional), los que son una variante de Shannon.; Estas técnicas, por arriba de un nivel Eb/No = - 1.5917 dB, pueden llegar a tener un VER=0. Las técnicas anteriormente descritas son utilizadas en dispositivos, FPGA (Field Programmable Gate Array), Digital Signal Processor (DSP) y en otros de procesamiento de datos, con aplicaciones en teléfonos celulares, módems y en aplicaciones en videojuegos, que son muy comúnes en nuestra vida diaria. Los turbo códigos, por ser una técnica muy eficiente en la corrección de errores, se eligieron para hacer una realización práctica en el DSP TMS320C6416 de Texas intruments. Esto con la finalidad de observar su desempeño y compararlo con el desempeño simulado en una PC. Para la ralización de lo anterior se analizó la arquitectura del DSP y el rango de las variables de programación. El problema principal en la realización fue el de migración de los códigos de la PC al DSP y garantizar su buen funcionamiento debido a las limitaciones de representación numérica del DSP. Como resultado de la realización práctica se obtuvieron desempeños similares entre la PC y el DSP. Para lograr a los turbo códigos fue necesario programar códigos convolucionales, códigos RSC y códigos RSC con algoritmo MAP (Maximun A Posteriori). El algoritmo MAP es una parte esencial de la turbo decodificación. En la decodificación se emplean tantos decodificadores como los codificadores RSC empleados. La información recibida pasa por el primer decodificador MAP y los parámetros obtenidos son enviados al siguiente decodificador MAP y, así, sucesivamente hasta llegar al último decodificador MAP, que retroalimenta información adicional al primero. El proceso se repite varias veces y en cada repetición se obtiene una mejor estimación del mensaje que fue enviado. En el proceso descrito, el algoritmo MAP utiliza el concepto de probabilidades conjuntas condicionales, esto es por que el proceso de codificación se modela como un proceso de Markov. Este proceso puede ser representado gráficamente por un diagrama de Trellis y un diagrama de estados. Para poder determinar lo que se envió, es necesario calcular parámetros como: las métricas y de las ramas en el diagrama de Trellis, los coeficiente de recursión hacia adelante a y hacia atrás B. Para determinar las métricas y en el diagrama de Trellis es necesario multiplicar a y B anteriores, lo que provoca que creacan y rebasen el rango de representación numérica del DSP. Si esto sucede en el DSP se obtienen resultados incorrectos. Para evitar esto se utilizaron métodos como: normalización y mapeo de los valores utilizando la función trigonométrica arctan().