El algoritmo Bahl-Cocke-Jelinek-Raviv (BCJR) es un algoritmo para la decodificación a posteriori máxima de códigos correctores de errores definidos en enrejados (principalmente códigos convolucionales ). El algoritmo recibe su nombre de sus inventores: Bahl, Cocke, Jelinek y Raviv. [ 1 ] Este algoritmo es fundamental para los códigos correctores de errores modernos decodificados iterativamente, incluidos los códigos turbo y los códigos de verificación de paridad de baja densidad .
Pasos involucrados
Basado en el enrejado :
- Calcular las probabilidades hacia adelante
- Calcular probabilidades hacia atrás
- Calcular probabilidades suavizadas basadas en otra información (es decir, varianza del ruido para AWGN , probabilidad de cruce de bits para canal binario simétrico ).
Variaciones
SBGT BCJR
Simplificación de Berrou, Glavieux y Thitimajshima. [ 2 ]
Log–MAP BCJR
El algoritmo Log-MAP es una implementación en el dominio logarítmico del decodificador BCJR (MAP). Al trabajar con verosimilitudes logarítmicas, evita el desbordamiento negativo numérico y convierte las multiplicaciones de probabilidad en sumas. En el dominio logarítmico, las recursiones hacia adelante y hacia atrás utilizan la identidad del logaritmo jacobiano ("max-star")., que produce las mismas razones de verosimilitud logarítmica a posteriori (LLR) que el algoritmo MAP/BCJR original cuando se aplica a las métricas de rama. [ 3 ]
En la práctica, el pequeño término de correcciónSe implementa mediante una tabla de búsqueda corta o una aproximación lineal por partes; trabajar en el dominio logarítmico también simplifica la normalización de las métricas de estado hacia adelante/atrás. Los decodificadores Log-MAP que generan LLR extrínsecos se utilizan ampliamente como componentes de entrada/salida suaves en decodificadores iterativos (turbo). [ 4 ] [ 5 ]
Una variante común de menor complejidad es **Max-Log-MAP**, que aproxima el logaritmo jacobiano eliminando el término de corrección (es decir, usandoEsto reduce la complejidad a costa de una pequeña pérdida de rendimiento en relación con Log-MAP/MAP; la diferencia se puede reducir con correcciones constantes/lineales o escalando la información extrínseca ("Max-Log-MAP normalizado/escalado"), recuperando típicamente unas décimas de dB dependiendo del código y la relación señal/ruido. [ 6 ] [ 7 ]
BCJR con ventana
Una versión modificada que procesa el enrejado en segmentos para reducir la complejidad computacional y los requisitos de memoria. Este enfoque es particularmente útil para secuencias muy largas donde el almacenamiento completo del enrejado resulta impracticable. La versión con ventanas mantiene un rendimiento casi óptimo a la vez que reduce significativamente la latencia y la utilización de recursos de hardware en las implementaciones. [ 8 ]
Implementaciones
- El framework Susa implementa el algoritmo BCJR para códigos de corrección de errores hacia adelante y ecualización de canal en C++.
Véase también
Referencias
- ↑ Bahl, L.; Cocke, J.; Jelinek, F.; Raviv, J. (marzo de 1974). "Decodificación óptima de códigos lineales para minimizar la tasa de error de símbolos". IEEE Transactions on Information Theory . 20 (2): 284– 7. doi : 10.1109/TIT.1974.1055186 .
- ↑ Wang, Sichun; Patenaude, François (2006). "Un enfoque sistemático para algoritmos BCJR MAP modificados para códigos convolucionales" . EURASIP Journal on Applied Signal Processing . 2006 095360. Bibcode : 2006EJASP2006..242W . doi : 10.1155/ASP/2006/95360 .
- ↑ Bahl, LR; Cocke, J.; Jelinek, F.; Raviv, J. (marzo de 1974). "Decodificación óptima de códigos lineales para minimizar la tasa de error de símbolos". IEEE Transactions on Information Theory . 20 (2): 284– 287. doi : 10.1109/TIT.1974.1055186 .
- ↑ Vogt, J.; Finger, A. (2000). "Mejora del decodificador turbo max-log-MAP" . Electronics Letters . 36 (23): 1937– 1939. Bibcode : 2000ElL....36.1937V . doi : 10.1049/el:20001357 .
- ↑ Li, Jian (2019). "Diseño de decodificador turbo basado en un algoritmo Log-MAP normalizado con LUT" . Electronics . 8 (9): 1037. doi : 10.3390/electronics8091037 . PMC 7515343. PMID 33267527 .
- ↑ Robertson, P.; Villebrun, E.; Hoeher, P. (junio de 1995). "Una comparación de algoritmos de decodificación MAP óptimos y subóptimos que operan en el dominio logarítmico" (PDF) . Proc. IEEE ICC . págs. 1009–1013 .
- ↑ Chen, J. (2003). Algoritmos de decodificación de complejidad reducida para códigos LDPC (PDF) (Tesis). Universidad de Hawái en Mānoa.
- ↑ Viterbi, AJ (1998). "Una justificación intuitiva y una implementación simplificada del decodificador MAP para códigos convolucionales". IEEE Journal on Selected Areas in Communications . 16 (2): 260– 264. Bibcode : 1998IJSAC..16..260V . doi : 10.1109/49.661114 . ISSN 0733-8716 .
Enlaces externos
- El libro de texto en línea "Teoría de la información, inferencia y algoritmos de aprendizaje" , de David JC MacKay , analiza el algoritmo BCJR en el capítulo 25.
- Implementación del algoritmo BCJR en el marco de procesamiento de señales Susa.
- Detección y corrección de errores
- Algoritmos y estructuras de datos básicos