INSTITUTO TECNOLÓGICO Y DE ESTUDIOS SUPERIORES DE MONTERREY
PRESENTE.
Por medio de la presente hago constar que soy autor y titular de la obra denominada "Descripción de un Modelo Sub-Óptimo en C de un Turbo Codificador de Canal para UMTS", en los sucesivo LA OBRA, en virtud de lo cual autorizo a el Instituto Tecnológico y de Estudios Superiores de Monterrey (EL INSTITUTO) para que efectúe la divulgación, publicación, comunicación pública, distribución, distribución pública y reproducción, asi como la digitalización de la misma, con fines académicos o propios al objeto de EL INSTITUTO, dentro del circulo de la comunidad del Tecnológico de Monterrey.
El Instituto se compromete a respetar en todo momento mi autoria y a otorgarme el crédito correspondiente en todas las actividades mencionadas anteriormente de la obra.
Descripción de un Modelo Sub-óptimo en C de un Turbo
Codificador de Canal para UMTS-Edición Única
Title Descripción de un Modelo Sub-óptimo en C de un Turbo
Codificador de Canal para UMTS-Edición Única
Authors José Gonzalo Lugo Pérez
Affiliation Tecnológico de Monterrey, Campus Estado de México
Issue Date 2008-11-01
Item type Tesis
Rights Open Access
Downloaded 19-Jan-2017 01:22:35
Descripción de un modelo sub-óptimo en C de un turbo codificador
de canal para UMTS
TESIS QUE PRESENTA
José Gonzalo Lugo Pérez
MAESTRÍA EN CIENCIAS COMPUTACIONALES MCC02, Redes Computacionales
! !
" " !
# $
% % & % &
Reconocimientos
Existen muchas personas que directa o indirectamente influyeron en mí para concluir los estudios de maestría y a quienes estoy infinitamente agradecido por estar presentes en cada momento y lugar en mi camino.
Primeramente, a la Universidad Tecnológica de Querétaro por otorgar todas las facilidades para realizar este posgrado. De igual manera, al Instituto Tecnológico y de Estudios Superiores de Monterrey, Campus Estado de México, por sus servicios y prestaciones además de brindarme un espacio de conocimiento.
Quiero agradecer al Dr. Andrés David García García por la confianza puesta en mí, así como sus aportaciones y sugerencias para realizar este proyecto de tesis.
De la misma forma, agradezco al Dr. Miguel González Mendoza por estar siempre al pendiente de los resultados y avances en toda la maestría, permitiéndome finalizarla con éxito.
Al Dr. José Luis Cuevas Ruiz por su apoyo desinteresado y sus consejos que me sirvieron como tranquilizante y motivación en la investigación del proyecto.
También un reconocimiento al Dr. Javier Eduardo González Villarruel quien a través de sus observaciones le dio una dirección a este trabajo.
A Jorge Luis Morales Montes por compartir sus valiosos conocimientos que me sirvieron en la ejecución de mi proyecto.
Un reconocimiento especial a Raúl García Pérez y Carlos Humberto Yee Rodríguez por su apoyo y compañía durante el desarrollo de la maestría y de quienes estoy agradecido por sus sugerencias acertadas para mi tesis.
A la Chata y Rosalba por su amor y cariño a mis hijos. Asimismo, extiendo el reconocimiento a Sergio y Paquito por ser mis hermanos.
A mis padres, Gonzalo y Malena que aún siguen velando por mí y que me han enseñado a ser perseverante y a no tener miedo. Les agradezco su amor a mis hijos así como a mi esposa Lucy. Gracias papá, gracias mamá.
A Luchy, por su paciencia todo este tiempo y su apoyo incondicional, ya que sin él, no hubiera sido posible culminar mis estudios. Gracias por compartir tu vida conmigo y adorar a mis hijos. A mis inspiraciones Gonchis y Leo, que con sus ocurrencias, sonrisas y lloriqueos me han enseñado el gozo de la paternidad.
Resumen
Los turbo códigos son una técnica muy poderosa y eficiente para la codificación de canal ya que son capaces de permitir la comunicación libre de errores a baja potencia y altas velocidades de transmisión. Las investigaciones en este campo impactan directamente las áreas de comunicaciones satelitales, enlaces de microondas, telefonía celular, Internet y comunicaciones móviles entre otros.
Debido a la naturaleza iterativa y compleja de la decodificación, se buscan alternativas sub-óptimas que alcancen lo más cerca posible los rendimientos en la corrección de errores y puedan ser implementados en plataformas de hardware reconfigurable como los Procesadores de Señales Digitales (DSP) y los Arreglos de Compuertas Programables en el Campo (FPGA) a mayor velocidad de procesamiento y bajo consumo de potencia.
Por lo anterior, el presente trabajo propone describir un modelo en C++ donde se programen estas funciones sub-óptimas para simular varias condiciones de comunicación y evaluar los rendimientos en el envío de información. Este modelo servirá como base para la implementación en cualquier plataforma de hardware reconfigurable a través de una adecuación algoritmo-arquitectural.
La estructura de la tesis está conformada de tal manera que se comprendan los conceptos básicos de la teoría de la información, la codificación de canal, el funcionamiento de los turbo códigos y la teoría de la decodificación Maximum A Posteriori (MAP) visto en el capítulo 2. Previamente se introduce una semblanza general de las aplicaciones de los turbo códigos así como la motivación del presente trabajo con sus objetivos y alcances en el capítulo 1.
El capítulo 3 explica brevemente los parámetros del estándar UMTS, las plataformas de hardware reconfigurable y se introducen las funciones sub-óptimas a utilizar en los modelos de simulación aplicados a éste estándar. La descripción detallada de la construcción del modelo de referencia en Simulink y la descripción del modelo en C se abordan en el capítulo 4.
Abstract
Turbo codes are a powerful coding channel technique capable of allowing free error communications at low power and high transmission speeds. Researchs in this field occupy the areas of satellite communications, microwave links, cellular telephony, Internet and mobile communications among others.
Due to the iterative and complex nature of decoding, different sub-optimal alternatives are searched in order to reach as close the performance on error correction and can be implemented in reconfigurable hardware platforms such as Digital Signal Processors (DSP's) and Field Programmable Gate Arrays (FPGA's) with greater processing speed and low power consumption.
Therefore, this paper proposes to describe a C++ model where these sub-optimal functions are programmed to simulate differents communication conditions and assess the performance in the information sending. This model will serve as a basis for implementation in any reconfigurable hardware platform through an algorithm-architectural adaptation.
The structure of the thesis is formed to understand the basic concepts of information theory, coding channel, the turbo codes operation and the Maximum A Posteriori decoding theory (MAP) seen in Chapter 2. Previously, it´s introduced a general explanation of turbo codes applications as well as the motivation, objectives and scope of this paper in Chapter 1.
Chapter 3 explains briefly the UMTS standard parameters, reconfigurable hardware platforms and introduces the sub-optimal functions for use in simulation models applied to this standard. The detailed description of the reference model construction in Simulink and the model description in C are addressed in Chapter 4.
Contenido
Capítulo 1 ... 13
Introducción... 13
1.1 Motivación... 13
1.2 Objetivo ... 17
1.2.1 Objetivos específicos... 17
1.3 Alcance ... 17
1.4 Metodología... 17
1.5 Estructura de la tesis ... 18
Capítulo 2 ... 19
Teoría de la Información ... 19
2.1 Introducción... 19
2.2 Teorema de la Capacidad de Canal de Shannon-Hartley ... 20
2.2.1 Límite de Shannon... 24
2.3 Codificación de Canal ... 26
2.3.1 Bondades de la codificación de canal... 28
2.3.2 Codificación de bloque... 29
2.3.3 Codificación Convolucional ... 29
2.4 Turbo Códigos ... 33
2.4.1 Entrelazadores (Interleavers)... 34
2.4.1.1 Entrelazadores de bloque... 37
2.4.2 Decodificación... 38
2.4.2.1 Decodificación Iterativa ... 42
2.4.2.2 Algoritmo MAP... 43
Capítulo 3 ... 47
Universal Mobile Telecommunications System (UMTS) y funciones sub-óptimas utilizadas para la simulación del estándar... 47
3.1 Introducción a UMTS... 47
3.1.2 Capa física UMTS ... 48
3.1.3 Canales de transporte UMTS... 49
3.1.4 Codificación de canal UMTS ... 50
3.1.5 Turbo codificador UMTS ... 50
3.2 Hardware reconfigurable ... 51
3.2.1 Arquitectura DSP... 52
3.2.2 Arquitectura FPGA... 53
3.2.3 Comparativa de hardware reconfigurable... 56
3.3 Funciones sub-óptimas ... 57
3.3.1 Algoritmo Forward-Backward ... 57
3.3.2 Codificación de prueba... 59
3.3.2.1 Cálculo de Métricas de Rama (G) ... 67
3.3.2.2 Recursión hacia adelante (Cálculo de A´s) ... 69
3.3.2.3 Recursión hacia atrás (Cálculo de B´s)... 71
3.3.2.3 Cálculo de LLR ... 71
Capítulo 4 ... 75
Modelo de un Turbo Codificador en C++ ... 75
4.1 Introducción... 75
4.3 Turbo Codificador ... 76
4.3.1 Codificador convolucional ... 77
4.3.2 Interleaver... 78
4.3.3 Construcción del turbo código... 80
4.3.4 Modulación BPSK... 80
4.3.5 Ruido Gaussiano... 81
4.3.6 Demodulador BPSK ... 82
4.3.7 Pre-procesamiento de la señal demodulada... 82
4.4 Decodificador Iterativo Log-MAP ... 83
4.4.1 Función logMap( )... 85
4.5 Archivos y cabeceras del programa en C++... 88
Capítulo 5 ... 92
Resultados de la Simulación... 92
5.1 Introducción... 92
5.2 Simulación del modelo ... 92
5.3 Gráficas de BER ... 93
Capítulo 6 ... 104
Conclusiones y trabajo futuro... 104
6.1 Conclusiones... 104
6.2 Trabajo futuro ... 106
Referencias ... 107
Anexo A... 109
Código en C++ del turbo codificador... 109
Anexo B... 135
Tablas para la codificación de prueba ... 135
Anexo C... 138
Lista de figuras
Figura 1.1 Ventajas de los Turbo Códigos (original en color) ... 15
Figura 1.2 Metodología del proyecto (original en color) ... 18
Figura 2.1 Sistema de Comunicación Básico ... 19
Figura 2.2 Capacidad de canal normalizado vs SNR ... 21
Figura 2.3 Probabilidad de error de bit PB vs Eb/N0... 22
Figura 2.4 Ancho de Banda del canal (W/C) vs Eb/N0... 24
Figura 2.5 Codificador de Canal ... 26
Figura 2.6 Decodificación de Canal ... 27
Figura 2.7 Codificaciones de canal (original en color) ... 28
Figura 2.8 Comparativa del rendimiento de una señal codificada y una señal no codificada... 28
Figura 2.9 Codificador de Bloque ... 29
Figura 2.10 Codificador Convolucional Sistemático (2, 1, 2)... 31
Figura 2.11 Salida del Codificador Convolucional Sistemático... 31
Figura 2.12 Diagrama de Estados del Codificador Convolucional Sistemático (2, 1, 2)... 32
Figura 2.13 Diagrama de Trellis del Codificador Convolucional Sistemático (2, 1, 2) (original en color)... 32
Figura 2.13 Turbo Codificador... 33
Figura 2.14 Rendimiento del Turbo Codificador con varias iteraciones... 34
Figura 2.15 Representación de un Entrelazador... 35
Figura 2.15 Mapa de un Entrelazador ... 35
Figura 2.16 Errores en ráfaga (original en color) ... 36
Figura 2.17 Entrelazador de bloque... 37
Figura 2.18 Entrelazador de bloque 3 x 4... 37
Figura 2.19 Funciones likelihood ... 39
Figura 2.20 Decodificación iterativa ... 42
Figura 2.21 Desempeño del decodificador de acuerdo al número de iteraciones (original en color) ... 43
Figura 2.22 Métricas de estado hacia delante y hacia atrás... 45
Figura 3.1 Evolución de las redes móviles (original en color)... 47
Figura 3.2 Arquitectura de la interfaz de radio UMTS (original en color) ... 49
Figura 3.3 Estructura del turbo codificador de tasa 1/3 (las líneas punteadas indican la terminación del trellis) (original en color)... 51
Figura 3.4 Arquitectura DSP (original en color) ... 53
Figura 3.5 Tabla de Búsqueda (LUT) de 3 entradas de un FPGA... 53
Figura 3.6 Estructura de un FPGA Xilinx serie 4000... 54
Figura 3.7 Detalle de la estructura de un FPGA Xilinx serie 4000... 55
Figura 3.8 Celda lógica de un FPGA Xilinx serie 4000... 56
Figura 3.9 Comparativa en Programabilidad vs Consumo de potencia entre hardware reconfigurable (original en color)... 57
Figura 3.10 Recursión hacia adelante del algoritmo MAP y Log-MAP ... 58
Figura 3.11 Tamaño del interleaver: a) Matriz de índices, b) Vector k según matriz de índices . 60 Figura 3.12 Diagrama de Trellis de UMTS... 61
Figura 3.13 Vectores de salidas del Turbo Codificador UMTS (original en color)... 62
Figura 3.14 Diagrama básico de comunicación... 62
Figura 3.15 Valores modulados con BPSK (original en color)... 63
Figura 3.17 Señal demodulada en forma bipolar... 64
Figura 3.18 Decodificador iterativo (original en color) ... 65
Figura 3.19 Componentes decodificador Log-MAP (original en color) ... 66
Figura 3.20 Diagrama de Trellis del primer decodificador (original en color) ... 66
Figura 3.21 Métricas de rama G para la entrada xk =−1 y yk =−1 (original en color) ... 68
Figura 3.22 Arquitectura del ACS (original en color)... 69
Figura 3.23 Valores iniciales para la recursión hacia delante (original en color) ... 70
Figura 3.24 Valores iniciales para la recursión hacia atrás (original en color) ... 71
Figura 3.25 Cálculo de LLR (original en color)... 72
Figura 3.26 Proceso para el cálculo de LLR ... 73
Figura 3.27 Entradas en el diagrama de Trellis UMTS (original en color)... 73
Figura 3.28 Árbol MAX* (original en color)... 74
Figura 4.1 Cadena del turbo codificador (original en color) ... 76
Figura 4.2 Componentes del turbo codificador (original en color) ... 76
Figura 4.3 Representación del diagrama de Trellis UMTS con tablas de búsqueda (LUT´s) (original en color) ... 77
Figura 4.4 Decodificador Iterativo en Simulink... 84
Figura 5.1 Modelo del Turbo Codificador en Simulink ... 92
Figura 5.2 BER del Turbo Codificador en C++ con bits enviados N = 600,000 con tamaño de bloques = 40 para diferentes iteraciones (original en color) ... 94
Figura 5.3 BER del Turbo Codificador en C++ con bits enviados N = 400 con tamaño de bloques = 40 para diferentes iteraciones (original en color)... 95
Figura 5.4 BER del Turbo Codificador en C++ con bits enviados N = 400 con tamaño de bloques = 40 para 4 iteraciones (original en color)... 96
Figura 5.5 BER del Turbo Codificador en C++ con bits enviados N = 40,000 con tamaño de bloques = 40 para 5 iteraciones (original en color) ... 96
Figura 5.6 Comparativa BER vs EbN0 del program en C++ y BER generado por X. J. Zeng y Z. L. Hong (original en color)... 97
Figura 5.7 BER del Turbo Codificador en C++ con bits enviados N = 4000 con tamaño de bloques = 400 para 5 iteraciones (original en color) ... 98
Figura 5.8 BER del Turbo Codificador en C++ con bits enviados N = 600,000 con tamaño de bloques = 60 para 7 iteraciones (original en color) ... 99
Figura 5.9 BER del Turbo Codificador en Simulink con bits enviados N = 600,000 con tamaño de bloques = 60 para 7 iteraciones (original en color) ... 99
Figura 5.10 BER del Turbo Codificador en C++ con bits enviados N = 600,000 con tamaño de bloques = 60 para diferentes iteraciones (original en color) ... 100
Figura 5.11 BER del Turbo Codificador en C++ con bits enviados N = 600,000 con diferentes tamaños de bloques para 7 iteraciones (original en color) ... 101
Figura 5.12 BER del Turbo Codificador en C++ con bits enviados N = 1000,000 con tamaño de bloque = 100 para 7 iteraciones (original en color)... 102
Figura 5.13 Comparativa entre diferente número de bits enviados (original en color)... 103
Lista de tablas
Tabla 3.1 Uso de los esquemas de codificación de canal y tasa de codificación UMTS ... 50
Tabla 3.2 Número de bits codificados por cada esquema y tasa de codificación... 50
Tabla 3.3 Tabla de búsqueda (LUT) para el cálculo de G... 67
Tabla 3.4 LLR´s correspondientes al primer decodificador ... 74
Tabla 4.1 Archivos del programa en C++ ... 88
Tabla 4.2 Organización de los archivos en C++... 89
Tabla 5.1 Características de la computadora portátil donde se realizaron las simulaciones ... 93
Tabla 5.2 Tiempos de procesamiento para N = 600,000 bits ... 101
Tabla 5.3 Tiempos de procesamiento para N = 600,000 bits con diferentes interleavers ... 101
Tabla B.1 Valores modulados con BPSK para la codificación de prueba ... 135
Tabla B.2 Valores modulados con BPSK a la salida del canal AWGN... 136
Acrónimos y Abreviaturas
1G first mobile communication generation
3G three mobile communication generation
3GPP third generation partnership project
8QPSK eight quadrature phase shift keying
ACS add-compare-select
ALU arithmetic logic unit
APP a posteriori probability
ARQ automatic repeat request
ASIC application specific integrated circuit
AWGN additive white gaussian noise
BCH UMTS broadcast channel
BEC backward error correction
BER bit error rate
BPSK binary phase shift keying
CDMA code division multiple access
DCH dedicated channel
DS-CDMA direct-sequence code division multiple access
DSP digital signal processor
EbN0 energy per bit to noise density radio
EDGE enhaced data rate for GSM evolution
EEPROM electrically erasable programmable read only memory
EPROM erasable programmable read only memory
ETSI european telecommunications standards institute
FDD frecuency division duplex
FEC forward error correction
FPGA field programmable gate array
GMSK gaussian minimum shift keying
GPRS general packet radio service
GSM global system for mobile communications
HSCSD high speed circuit switched data
IEEE institute of electrical and electronics engineers
IP internet protocol
LDPC low density parity check
LUT look up table
LLR log-likelihood ratio
MAC media access control
MAC multiply and acummulate
MAP maximum a posteriori
ML maximum likelihood
N0 Densidad espectral
NASA national aeronauctics and space administration
PCCC parallel concatenated convolutional codes
PCH UMTS paging channel
Pe Probabilidad de error
QoS quality of service
QPSK quadrature phase shift keying
RACH UMTS random access channel
RRC radio resource control
RSC recursive sistematic convolutional encoder
SMS short message service
SNR signal to noise ratio
SRAM static random access memory
Tb bit time
TDD time division duplex
UE user equipment
UMTS universal mobile telecommunications system
UTRA universal terrestrial radio access
UTRAN UMTS terrestrial radio access network
VA viterbi algorithm
VoIP voice over ip
W bandwidth
W/C Ancho de banda del canal normalizado
WCDMA wide-band code division multiple access
Capítulo 1
Introducción
1.1 Motivación
La sociedad moderna se caracteriza por el uso de dispositivos tecnológicos sofisticados que permiten la interacción entre uno o varios usuarios a la vez a través de aplicaciones multimedia que intercambian información de audio, video o simplemente datos. Adicionalmente, se le ha dado gran valor a la portabilidad y movilidad lo que conlleva a utilizar tecnologías de comunicaciones inalámbricas. De lo anterior, se deriva la necesidad de disponer de equipos que ocupen un espacio muy pequeño que les permita su fácil transporte, además la batería de estos dispositivos es pequeña por lo que suministra una mínima cantidad de corriente que convertida en tiempo proporciona unas cuantas horas y por lo tanto, se vuelve crítico el consumo de la potencia. Esto ha dado pauta al crecimiento en los sistemas de comunicación de diferente tipo como enlaces satelitales, microondas, telefonía celular e Internet de tal forma que para lograr un mejor servicio en los canales de comunicación, se han unido esfuerzos para mejorar las condiciones de ancho de banda, consumo de potencia, velocidad de transmisión y la protección de los datos que pasarán a través de un canal susceptible al ruido.
Para lograr lo anterior, es necesario proteger la información que se envía desde un transmisor hasta el receptor garantizando la transferencia íntegra de los datos, lográndose esto a través de técnicas de codificación de canal. Uno de los problemas actuales en las comunicaciones es precisamente el envío de la información de manera confiable, es decir, que los datos enviados no contengan errores en el receptor después de haber pasado por el canal de comunicación. A mediados del siglo XX Claude Elwood Shannon, propone en su teoría de la información, lograr la transmisión de los datos libre de errores a través de un canal a una tasa de transferencia menor a su capacidad a través de un esquema de codificación con una probabilidad de error pequeña por lo que puede transmitirse la información libre de errores con una potencia requerida. Esta teoría permaneció sin solución hasta principios de los 90´s, [1] .
con baja potencia y mayor velocidad, debido su poder de corrección por su información redundante y que lo hace tolerante a la interferencia.
Existen dos métodos para la codificación de canal: la corrección de error hacia atrás BEC (Backward Error Correction) o Automatic Repeat Request (ARQ) y la corrección de error hacia delante FEC (Forward Error Correction).
El primero (BEC) es un detector de error y retransmisión, es decir, utiliza los bits de paridad para detectar que un error ha ocurrido. El receptor no intentará corregir el error, simplemente enviará una petición al transmisor para que re-envíe los datos. Para este método es necesario tener una comunicación dúplex para permitir el diálogo entre el transmisor y receptor. El segundo método, FEC, utiliza los bits de paridad añadidos para proteger la información y el receptor trata de corregir los errores ocasionados por el canal. Se requiere una comunicación símplex, por lo que no se utilizará un diálogo entre transmisor y receptor. Este método tolera más errores en el canal y los corrige, por lo que la información puede enviarse a baja potencia de transmisión lo que lo hace atractivo en las comunicaciones inalámbricas para la optimización del consumo de energía en los sistemas.
Es así que surge uno de los desarrollos tecnológicos más recientes en los sistemas de comunicación en 1993 en la Conferencia Internacional de la IEEE en Ginebra Suiza, [2] llamado
Turbo Códigos, desarrollados por dos profesores de la Ecole Nationale Supérieuredes Télécommunications de Bretagne en Brest, Francia, Claude Berrou y Alain Glavieux y que da solución al problema de la transmisión de datos libre de errores a una tasa de transferencia menor a la capacidad del canal establecido por Claude Elwood Shannon en 1948, [3].
Los turbo códigos son aplicados en enlaces satelitales, en sistemas de comunicaciones espaciales, sistemas de telefonía móvil de tercera generación, en dispositivos portátiles con aplicaciones multimedia y en versiones mejoradas de redes WiFi para aumentar la velocidad de transmisión, [2]. Actualmente existen cientos de grupos trabajando en los turbo códigos, entre ellos universidades y empresas de todo el mundo. La lista incluye a gigantes de las telecomunicaciones como France Télécom y NTT DoCoMo, grandes compañías de alta tecnología como Sony, NEC, Lucent, Samsung, Ericsson, Nokia, Motorola y Qualcomm. Asimismo fabricantes de circuitos integrados y hardware como Broadcom, Conexant, Comtech AHA, y STMicroelectronics.
que lo pueden tolerar como las comunicaciones espaciales y para las cuáles los turbo códigos son una opción atractiva. En septiembre de 2003 la Agencia Espacial Europea lanzó el SMART-1, la primera prueba para ir al espacio con un sistema de transmisión de datos trabajando con turbo códigos. Más aún, la NASA los está utilizando también para sus misiones a Marte.
De la misma manera, la transmisión de audio digital realizado a través de programas de radio con calidad digital y enlaces satelitales tales como New Global Area Network of Inmarsat Ltd. en Londres, están incorporando también los turbo códigos en sus sistemas.
Los Turbo Códigos son ampliamente utilizados en sistemas móviles de 3ra. Generación debido a su rendimiento superior, siendo la técnica recomendada para las nuevas tecnologías de 3GPP (Third Generation Partnership Project), [4][5]. El proyecto 3GPP es un acuerdo de colaboración establecido en diciembre de 1998 cuyo objetivo es producir especificaciones técnicas aplicables a los sistemas de comunicación móvil de la 3ra. Generación basadas en la red GSM desarrollada y las tecnologías de radio acceso que soportan, [17].
Adicionalmente, los Turbo Códigos superan a cualquier técnica de codificación de canal conocida1 en tres áreas principales, (figura 1.1):
• Capacidad. Los turbo códigos se acercan al límite de Shannon con una mejora del 60% sobre estándares existentes, [1]
• Eficiencia en el costo del Sistema. Un usuario puede enviar la misma cantidad de datos empleando únicamente la mitad del ancho de banda, [1].
• Número de usuarios. Un proveedor de servicios de comunicaciones puede dar servicios a más usuarios sin aumentar la capacidad del Sistema, [1].
Capacidad Eficiencia en el costo del
Sistema
Número de Usuarios
Código Convolucional – Reed Solomon
Turbo Códigos
Capacidad Eficiencia en el costo del
Sistema
Número de Usuarios
Código Convolucional – Reed Solomon
Turbo Códigos
Figura 1.1 Ventajas de los Turbo Códigos (original en color)
1 existen actualmente los códigos LDPC, Low Density Parity Check, desarrollados en 1960 y que se comparan en
Por otro lado, debido a la demanda de la movilidad y portabilidad antes mencionados, con el surgimiento de nuevos protocolos y estándares y la rápida adopción de Internet, existe la gran necesidad de caminar hacia la conectividad inalámbrica y ofrecer servicios con cobertura global transparente que permita la flexibilidad en la tecnología con una calidad de servicio controlada por el usuario (QoS). Debido a esto, la tendencia en las comunicaciones es desarrollar dispositivos de fácil diseño, fabricación, operación multimodal, flexibles y con pocos componentes discretos que permitan lograr los objetivos propuestos a través de los Software Radios.
Las ventajas de utilizar Software Radios es que gran parte del hardware que se utiliza para los radios análogos se pueden implementar a través de Software de tal forma que la complejidad del sistema sea menor y flexible permitiendo que la construcción misma del sistema sea compacta y consuma menos corriente. Los turbo codificadores pueden ser implementados a través de estos dispositivos otorgándole éstas atractivas características siendo fáciles de diseñar y construir. Entre estos dispositivos se encuentran los Procesadores de Señales Digitales (DSP), Arreglos de Compuertas Programables en el Campo (FPGA) y Circuitos Integrados de Aplicación Específica (ASIC), [6].
Como resumen de lo anterior se pueden extraer los siguientes puntos importantes:
• Los sistemas de comunicación modernos deben ser portátiles y móviles, lo que obliga a optimizar el consumo de las baterías para una mayor duración y menor espacio.
• El uso de aplicaciones multimedia cada vez más sofisticadas utilizan más ancho de banda, por lo que los sistemas de comunicación deberán optimizarlo y aumentar las tasas de transferencia de los datos con baja potencia de transmisión utilizando técnicas de codificación de canal que le permitan enviar información sobre canales ruidosos.
• Los Turbo Codificadores pueden implementarse en dispositivos Software Radios que le brinden flexibilidad, bajo consumo de potencia y Calidad de Servicio (QoS) requeridos por los nuevos estándares y protocolos de comunicaciones inalámbricos.
• Los Turbo Codificadores siguen siendo un objeto de estudio para la aplicación en diferentes estándares de comunicaciones móviles, por lo que la medición del rendimiento a través de la herramienta de la simulación es crucial para su futura implementación en dispositivos hardware.
Adicionalmente, el Departamento de Ingeniería Eléctrica y Electrónica dentro del Tecnológico de Monterrey Campus Estado de México, se une al esfuerzo en el desarrollo e investigación de Turbo Codificadores para la implementación de sistemas de comunicación móvil bajo la especificación 3GPP utilizando recursos propios con fines educativos.
comunicación móvil determinado. Para esto se selecciona del proyecto 3GPP el estándar UMTS y se simula el proceso iterativo Log-MAP para su decodificación.
1.2 Objetivo
Realizar la construcción de un modelo sub-óptimo en C de un algoritmo de Turbo-Codificación conforme a la especificación 3GPP y evaluar su desempeño sobre un canal con ruido blanco gaussiano aditivo (AWGN) y modulación BPSK. Este modelo será utilizado posteriormente mediante su adecuación algoritmo-arquitectural para su implementación en plataformas reconfigurables.
1.2.1 Objetivos específicos
• Estudiar y analizar el funcionamiento de los turbo codificadores.
• Desarrollar un modelo de referencia funcional del turbo codificador y decodificador en SIMULINK.
• Desarrollar un modelo funcional del turbo codificador y decodificador en Matlab. • Validar los resultados de la simulación con bibliografía seleccionada.
• Desarrollar un modelo funcional en C de un turbo codificador y decodificador para la especificación UMTS.
1.3 Alcance
Presentar al final de la investigación un modelo de referencia funcional en C del turbo codificador y decodificador que implemente funciones sub-óptimas que puedan ser utilizadas en una futura implementación en plataformas DSP y FPGA.
1.4 Metodología
! " ! " ! "
Figura 1.2 Metodología del proyecto (original en color)
1.5 Estructura de la tesis
Con el propósito de cimentar las bases teóricas que integran éste proyecto, la tesis se divide en seis capítulos organizados de la siguiente forma:
En el capítulo 2 se introducen los conceptos de la teoría de la información desde un sistema básico de comunicación, el teorema de la capacidad de Shannon hasta la teoría de codificación de bloques como los códigos convolucionales y los turbo códigos. Se describe posteriormente la teoría de la decodificación iterativa del algoritmo MAP.
El capítulo 3 explica brevemente el estándar UMTS, hardware reconfigurable y se introducen las funciones sub-óptimas a utilizar en los modelos de simulación aplicados a éste estándar. La descripción detallada de la construcción del modelo de referencia en Simulink y la descripción del modelo en C se abordan en el capítulo 4.
Capítulo 2
Teoría de la Información
2.1 Introducción
Los sistemas de comunicación hoy en día proporcionan servicios de alta calidad que requieren de de gran confiabilidad y tasas de transferencias de información muy elevadas que fueron posibles gracias a las aportaciones y trabajos realizados por gente como Claude Elwood Shannon. Debido a que un canal de comunicación no es libre de errores y es susceptible a fenómenos externos que alteran los datos, Shannon, llamado “El Padre de la Información”, propone esquemas de codificación de canal con el propósito de integrar información redundante en el mensaje a transmitir para decodificarlo íntegramente en el receptor con la menor probabilidad de error. Asimismo, estableció los límites fundamentales en las tasas de transmisión en sistemas de comunicaciones digitales lo que motivó la búsqueda constante de técnicas de codificación que aprovecharan la capacidad del canal. Es así como surgen los Códigos Correctores de Errores (FEC) como el código de Hamming, los códigos de bloques, los códigos convolucionales y los Turbo Códigos cuyo rendimiento en términos del Bit Error Rate (BER) se acercan a los límites teóricos propuestos por Shannon.
Un sistema de comunicación básico está integrado por tres elementos principales: el transmisor,
el canal y el receptor (figura 2.1)
Fuente de
Información Transmisor Canal Receptor Señal de Salida
Fuente de
Información TransmisorTransmisor CanalCanal ReceptorReceptor Señal de Salida
Figura 2.1 Sistema de Comunicación Básico
El canal es el medio físico utilizado para el envío de la señal desde el transmisor hacia el receptor. Puede ser la atmósfera o el espacio libre en comunicaciones inalámbricas (radio frecuencia) o puede ser cable de cobre (par trenzado, cable coaxial) y fibra óptica para comunicaciones alámbricas y ópticas. Debido a que el canal es un mecanismo físico, tiene influencia sobre la información transmitida, de tal forma que la señal puede ser degradada o corrompida de manera aleatoria a través de ruido aditivo en la entrada del receptor donde se realiza la amplificación de la señal. Este tipo de ruido es llamado ruido térmico. Debido a esto, es importante su consideración en el diseño de sistemas de comunicación de tal forma que sean robustos a distintos tipos de fenómenos como la interferencia electromagnética, el desvanecimiento, el multicamino, etc.
El receptor, por su parte, se encarga de la recuperación del mensaje a través de esquemas contrarios a los que fue enviado (demodulación, decodificación, etc.), además de cumplir con funciones como el filtrado y la supresión de ruido.
2.2 Teorema de la Capacidad de Canal de Shannon-Hartley
Shannon complementa el trabajo de Ralph Hartley y Nyquist investigando la manera en cómo el ruido afecta la transmisión de los datos, es decir, establece la capacidad en base a un canal con ancho de banda determinado y una señal continua sumada al ruido, [3]. Lo que significa que es posible enviar cierta cantidad de información sin errores a través de un canal con ruido gaussiano. Por consiguiente, este teorema establece una relación entre la potencia promedio de la señal recibida (S), la potencia promedio de ruido (N) y el ancho de banda (W) de la siguiente manera:
+ =
N S W
C log2 1 (2.1)
Donde el ancho de banda (W) se expresa en hertz (Hz) y la capacidad de canal (C) está dada en
bits/s. Es posible enviar información a través del canal a diferentes tasas de transmisión R con
R≤C, con una pequeña probabilidad de error (Pe) con el uso de esquemas de codificación cada
En la figura 2.2 se muestra una gráfica de la capacidad de canal normalizada contra la relación señal a ruido (SNR) donde se puede apreciar la región del rendimiento de los sistemas prácticos y la zona inalcanzable.
C/W (bits/s/Hz)
Zona inalcanzable
Zona realizable (sistemas prácticos)
SNR (dB)
20
1 2 4 8
C/W (bits/s/Hz)
Zona inalcanzable
Zona realizable (sistemas prácticos)
SNR (dB)
20
1 2 4 8
Figura 2.2 Capacidad de canal normalizado vs SNR
En ésta gráfica se puede apreciar que mientras la relación señal a ruido (SNR) se incremente, es decir, la potencia de la señal sea más grande que la potencia del ruido, mayor será la capacidad del canal. Aquí se comprenden todos los sistemas realizables. Por el contrario, mientras la relación SNR disminuya, es decir, el nivel de la señal sea más cercana al ruido, menor será la capacidad del canal. La curva representa la frontera máxima alcanzable.
En comunicaciones digitales se utiliza la versión normalizada de SNR como Eb/N0, donde Eb es la
energía de bit y puede ser descrita como S veces la potencia de señal del tiempo de bit Tb. N0 es la
densidad espectral de potencia de ruido descrita por la relación de la potencia de ruido N y el ancho de banda W. De esta forma se tiene lo siguiente:
W N
T S N
Eb b
/
0 ⋅
= (2.2)
Debido a que el tiempo de bit Tb y la tasa de transferencia Rb son recíprocos, se puede sustituir Tb
W N
R S
W N R S
N
Eb b b
/ / 1
0
= ⋅
= (2.3)
Para simplificar la notación utilizando R como la unidad de bits por segundo en lugar de Rb se
obtiene Eb/N0 como una versión normalizada de SNR en ancho de banda y tasa de transferencia
de la siguiente forma:
R N
W S
W NR S
N Eb
⋅ ⋅ = = 0
(2.4)
La relación de la energía de bit y la densidad espectral de potencia Eb/N0, es el estándar utilizado
para medir el rendimiento en los sistemas de comunicaciones digitales a través de la probabilidad de error de bit PB (figura 2.3).
P0
Eb/ N0 x0
PB
R N
W S N Eb
⋅ ⋅ =
0
Para Eb/ N0 ≥x0, PB≤P0
P0
Eb/ N0 x0
PB
R N
W S N Eb
⋅ ⋅ =
0
Para Eb/ N0 ≥x0, PB≤P0
Figura 2.3 Probabilidad de error de bit PB vs Eb/N0
La gráfica muestra que a menor Eb/N0 requerido por el sistema más eficaz es el proceso de
detección para una PB dada. Asimismo, entre mayor sea Eb/N0 la PB será menor. En otras
palabras, un sistema de comunicación tendrá un rendimiento óptimo en la transmisión de la información sin errores cuando la probabilidad de error de bit PB disminuya de manera
considerable a Eb/N0 pequeños.
C N W S N Eb ⋅ ⋅ = 0 (2.5)
Despejando la relación señal a ruido (S/N) se tiene:
W C N E N
S = b ⋅
0
(2.6)
Sustituyendo en (2.1) y normalizando el canal C con el ancho de banda W se tiene lo siguiente:
⋅ + = W C N E W C b 0 2 1 log (2.7)
Se despeja de (2.7) la relación Eb/N0:
⋅ + = W C N E W C b 0 21 log 2 2 (2.8) W C N Eb W C ⋅ + = 0 1 2 (2.9)
Dando como resultado:
) 1 2 ( / 0 −
= C W
b C W N E (2.10)
W/C (Hz/bits/s)
Zona inalcanzable
Zona realizable (sistemas prácticos)
SNR (dB) 20
1 2 4 8
W/C (Hz/bits/s)
Zona inalcanzable
Zona realizable (sistemas prácticos)
SNR (dB) 20
1 2 4 8
Figura 2.4 Ancho de Banda del canal (W/C) vs Eb/N0
En ésta gráfica se puede apreciar que mientras disminuya el ancho de banda del canal, más Eb/N0
será necesario, y por el contrario, se necesita una relación Eb/N0 muy pequeña cuando se tiene
mucho ancho de banda del canal.
2.2.1 Límite de Shannon
Shannon establece la existencia de un límite de la relación Eb/N0, en donde a valores menores, no
puede realizarse la comunicación sin errores a cualquier tasa de transferencia. De esta forma a través de la identidad del valor e se calcula este límite:
(
x)
x ex→ + =
/ 1 0 1
lim (2.11)
Para aproximar la ecuación (2.7) a (2.11) se tiene:
W C N E x= b ⋅
0
(2.12)
) 1 (
log2 x
W C
+
= (2.13)
Aproximando a la ecuación (2.11):
) 1 ( log 1
2 x
x x W
C = ⋅ + (2.14)
Aplicando la propiedad de los logaritmos: xn n a x
a( ) log
log = ⋅ se obtiene:
x
x x
W
C 1/
2(1 )
log +
⋅
= (2.15)
Sustituyendo (2.12) en (2.15):
x
b x
W C N E W
C 1/
2 0
) 1 (
log +
⋅ ⋅
= (2.16)
Desarrollando:
x
b x
N
E 1/
2 0
) 1 ( log
1= ⋅ + (2.17)
e N
Eb
2 0
log
1= ⋅ (2.18)
e N
Eb
2 0 log
1
= (2.19)
La función e está expresada como la serie
∑
∞=0 ! n
n
n x
que arroja un resultado de 2.718, de esta forma
693 . 0 ) 718 . 2 ( log
1
2 0
= =
N Eb
(2.20)
Y (2.20) expresado en decibeles (dB):
dB N
Eb
593 . 1 ) 693 . 0 log( 10
0
− = ⋅
= (2.21)
Este valor (2.21) es conocido como el Límite de Shannon. En la práctica no es posible alcanzarlo ya que implicaría un aumento del ancho de banda requerido y la complejidad en la implementación. Sin embargo, el trabajo de Shannon prueba la existencia de esquemas de codificación que mejoran considerablemente el rendimiento en PB y el decremento en el
requerimiento de Eb/N0. Uno de estos esquemas de codificación son los Turbo Códigos que
alcanzan una mejora de 10 dB [8] y se acercan al Límite de Shannon.
2.3 Codificación de Canal
“El campo de la codificación de canal inicia con –Una teoría matemática de la Comunicación- de Claude Shannon en 1948” [11].
Todo sistema de comunicación digital no está exento de sufrir los efectos de fenómenos externos como el ruido térmico, la interferencia electromagnética y el desvanecimiento de la señal, de tal forma que para poder disminuirlos, es necesario “blindar” la información que se envía a través del canal, mejorando el rendimiento de la transferencia de los datos. Esto puede ser logrado a través de técnicas de codificación que permitan transmitir los datos con probabilidades de error deseadas muy pequeñas según el sistema utilizado. A diferencia de la codificación de fuente, que elimina redundancia no estructurada del medio que se desea codificar, la codificación de canal añade redundancia estructurada a la secuencia transmitida, de esta manera los datos son protegidos para poder detectar errores cuando existan (figura 2.5).
Codificador de Canal
k n
n > k
Tasa de codificación r = k/n
Codificador de Canal
k n
n > k
Tasa de codificación r = k/n
El codificador tiene un diccionario de símbolos que representa cada bit mediante el cuál sólo transmitirá palabras que pertenezcan a él, esto es, la figura 2.6 muestra el diccionario del codificador donde 0 lo codifica con tres bits a 000 y el 1 lo codifica a 111. La señal de entrada es 1 0, lo cual es codificado a 111 000. La salida del codificador es transmitida a través del canal donde es añadido ruido afectando la señal original. Por consiguiente, la señal a la salida del canal es 011 010 conteniendo errores en la transmisión. El decodificador, por su parte, basado en el diccionario de símbolos del codificador, tratará de “adivinar” la secuencia del mensaje a través de la determinación probabilística (Forward Error Correction) en base al ruido del canal adicionado a la información. De esta manera, la salida 011 correspondiente al primer bit enviado tiene una diferencia de 2 bits con respecto al 0 del diccionario de símbolos del codificador y una diferencia de 1 con respecto al 1 del diccionario, por lo tanto es más probable que el codificador haya enviado un 1. De igual forma, para el segundo bit existe una diferencia de 1 para el 0 del diccionario y una diferencia de 2 para el 1 del diccionario, lo cuál hace más probable que el codificador haya enviado el 0. Así, el decodificador arrojará el 1 0 como salida.
codificador canal decodificador
1 0 1 0
0 000 1 111
111 000 011 010
Error en la salida del canal
011 010
0 diferencia de 2 1 diferencia de 1
Más probable = 1
0 diferencia de 1 1 diferencia de 2
Más probable = 0
codificador canal decodificador
1 0 1 0
0 000 1 111
111 000 011 010
Error en la salida del canal
011 010
0 diferencia de 2 1 diferencia de 1
Más probable = 1
0 diferencia de 1 1 diferencia de 2
Más probable = 0
Figura 2.6 Decodificación de Canal
Los trabajos posteriores al documento de Shannon [3] están enfocados en la búsqueda de esquemas de codificación que permitan acercarse a la capacidad del canal (límite de Shannon) en distintos tipos de canales.
Existen varios tipos de codificación de canal clasificados como: forma de onda y secuencias estructuradas.
se enfoca en los turbo códigos, se dará una breve explicación de los esquemas de secuencias estructuradas.
Señalización M-aria
Antípoda
Ortogonal
Modulación codificada de Trellis
Bloques
Convolucional
Turbo-códigos Forma de Onda
(Diseño de la señal) Secuencias Estructuradas(Redundancia estructurada)
Señalización M-aria
Antípoda
Ortogonal
Modulación codificada de Trellis
Bloques
Convolucional
Turbo-códigos Forma de Onda
(Diseño de la señal) Secuencias Estructuradas(Redundancia estructurada)
Figura 2.7 Codificaciones de canal (original en color)
2.3.1 Bondades de la codificación de canal
El uso de la codificación de canal ha permitido al diseño de los sistemas de comunicación lograr mejoras en su rendimiento sin necesidad de aumentar la potencia, así como disminuirla con el mismo rendimiento en la probabilidad de error (PB). Asimismo, permite aumentar la tasa de
transferencia de los datos y crecer la capacidad del canal a costo de la ampliación en el ancho de banda, esto debido a la necesidad de los bits redundantes o al aumento del retardo en los sistemas donde no es importante la aplicación en tiempo real [8].
PB
10-2
10-6
10-4
Eb/ N0 (dB) A
B C
D E
F Señal Codificada
Señal No Codificada
9 14 8 PB
10-2
10-6
10-4
Eb/ N0 (dB) A
B C
D E
F Señal Codificada
Señal No Codificada
9 14 8
En la figura 2.8 se muestran dos curvas en una relación de la probabilidad de error y el Eb/N0, donde una de las curvas representa la señal sin codificar y la otra representa la señal codificada. Aquí se pueden apreciar las ventajas de codificar una señal en aplicaciones reales donde, por ejemplo, un sistema de comunicación que no utilice codificación y trabaje en el punto A, es decir, que tenga un Eb/N0 de 8 dB y una PB de 10-2 y la calidad de la señal recibida sea mala, puede llevarse al punto B, donde el rendimiento es mejor con una PB de 10-4 a través del aumento del Eb/N0. Sin embargo, si el límite del sistema es de 8 dB, incrementar el Eb/N0 no es una alternativa que resuelva el problema, pero sí llevarlo hasta el punto C usando la codificación y manteniendo el Eb/N0. Haciendo esto, se mejora el rendimiento en la corrección de errores a través de la adición de bits redundantes. El costo de la codificación es el aumento del ancho de banda en el sistema de comunicación. Por otra parte, si un sistema trabaja con buena calidad en la recepción en el punto D a 14 dB con una PB de 10-6 pero el sistema presenta fallas por el alto Eb/N0, se requeriría bajar la potencia sin afectar el rendimiento, por lo tanto será necesario operar del punto D al punto E utilizando de la misma manera la codificación a costo nuevamente del ancho de banda por la adición de los bits redundantes. En adición a lo anterior, reducir el Eb/N0 de 14 dB a 9 dB se le conoce como la ganancia de la codificación que es la reducción del Eb/N0 a través del uso de un código.
2.3.2 Codificación de bloque
Un codificador de bloque recibe un mensaje de símbolos de tamaño k y lo transforma en una secuencia más larga n a través de una matriz generadora G. El código generado depende del mensaje actual de entrada y no de mensajes anteriores (figura 2.9).
Mensaje c
Codificador de Bloque
Matriz Generadora G
Código
k c n
Mensaje c
Codificador de Bloque
Matriz Generadora G
Código
k cc n
Figura 2.9 Codificador de Bloque
2.3.3 Codificación Convolucional
es decir, es una codificación con “memoria”. Los codificadores convolucionales son implementados con registros de corrimiento lineal donde la información es procesada en diferentes estados con la ayuda de polinomios generadores que arrojan el código. Pueden ser clasificados como sistemáticos y no sistemáticos. Los codificadores convolucionales sistemáticos integran la información original como parte del código y los no sistemáticos, siendo estos más robustos, no utilizan la entrada original como parte de él.
En la figura 2.10 se puede ver un codificador convolucional sistemático constituido por M = 2 registros de corrimiento, la entrada de la información k, en este caso es 1 y la salida del código
n = 2 cuya tasa de codificación R = k/n donde R ≤ 1. La memoria de todo el codificador está
denotada por los registros s1 y s2 más el bit de entrada bi (M + 1). El mensaje almacenado en
estos registros determina el siguiente estado y el codificador convolucional se denota por (n, k, M).
Los polinomios generadores realizan un papel importante en la construcción de la topología del codificador, generando la salida del código convolucional a través del procesamiento de las compuertas de módulo-2. Estas compuertas limitan la salida a ciertos patrones propios, de tal forma que, al existir errores en la transmisión, el decodificador podrá deducir que la secuencia codificada no ha sido generada por el codificador convolucional y hubo errores en el canal. Entonces, el decodificador escogerá los patrones más cercanos a la secuencia codificada a través de la determinación probabilística y mostrará la salida de los datos. Los polinomios generadores se forman en base a la estructura del codificador convolucional y las compuertas de módulo-2, es decir, cada uno de los registros de corrimiento representa una literal “D” y un superíndice según la posición del registro. La entrada tendrá el valor de 1 y el número de polinomios generadores dependerá del número de bits de salida así como el tamaño del polinomio generador corresponderá al número de registros de corrimiento más el bit de entrada (memoria del codificador). De esta manera, en la figura 2.10, existen dos polinomios generadores g1 y g2. El
primero corresponde a la salida bi y únicamente está compuesta por el bit de entrada 1 y ningún
valor procesado por las compuertas de módulo-2 en los registros de corrimiento, así, g1 = [1 0 0]
+
Salida 10 9 8 7 6 5 4 3 2 1
0 1 1 0 0 1 1 0 0 1 Bits de entrada:
bi s1 s2
bi
bp
Polinomios generadores:
g1= [1 0 0 ] g2= [1 1 1 ]
+ +
Salida 10 9 8 7 6 5 4 3 2 1
0 1 1 0 0 1 1 0 0 1 Bits de entrada:
bi s1 s2
bi
bp
Polinomios generadores:
g1= [1 0 0 ] g2= [1 1 1 ]
Figura 2.10 Codificador Convolucional Sistemático (2, 1, 2)
La figura 2.11, muestra las salidas codificadas para la entrada k = 0 1 1 0 0 1 1 0 0 1 para cada uno de los diferentes estados. La salida se vería como 0 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 1 1 1.
Entrada Salida 1 0 0 1 1 0 0 1 1 0 bi 0 1 0 0 1 1 0 0 1 1 s1 0 0 1 0 0 1 1 0 0 1 s2 1 0 0 1 1 0 0 1 1 0 bi 1 1 1 1 0 0 1 1 0 0 bp 1 2 3 4 5 6 7 8 9 10 Entrada Salida 1 0 0 1 1 0 0 1 1 0 bi 0 1 0 0 1 1 0 0 1 1 s1 0 0 1 0 0 1 1 0 0 1 s2 1 0 0 1 1 0 0 1 1 0 bi 1 1 1 1 0 0 1 1 0 0 bp 1 2 3 4 5 6 7 8 9 10
Figura 2.11 Salida del Codificador Convolucional Sistemático
conocidos también como codificadores convolucionales sistemáticos recursivos (RSC, por sus siglas en inglés).
0 1 1 0
0 0
1 1
0 / 01 1 / 11
0 / 00
1 / 10
0 / 01
1 / 11
1 / 10 0 / 00
0 1
0 1 1 01 0
0 0 0 0
1 1 1 1
0 / 01 1 / 11
0 / 00
1 / 10
0 / 01
1 / 11
1 / 10 0 / 00
Figura 2.12 Diagrama de Estados del Codificador Convolucional Sistemático (2, 1, 2)
0 1 1 0 0 1 1 0 0 1
0 0 0 1 1 0 1 1
0 1 2 3 4 5 6 7 8 9
00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 10 01 10 01 10 01 10 01 10 01 10 01 10 01 10 01 01 10 01 10 01 10 01 10 01 10 01 10 01 10 00 11 00 11 00 11 00 11 00 11 00 11 00 11 0 0 0 0 0 1 0 1 1 0 1 0 1 1 1 1
0 1 2 3 4 5 6 7 8 9
00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 10 01 10 01 10 01 10 01 10 01 10 01 10 01 10 01 01 10 01 10 01 10 01 10 01 10 01 10 01 10 00 11 00 11 00 11 00 11 00 11 00 11 00 11
0 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 1 1 1. Entrada
Salida
2.4 Turbo Códigos
Son códigos formados por la concatenación en paralelo de dos codificadores convolucionales sistemáticos recursivos (RSC) separados por un entrelazador (interleaver). La estructura de un turbo codificador se muestra en la siguiente figura:
Codificador Convolucional 1
Codificador Convolucional 2 Interleaver
Secuencia de Entrada
k
~
k
V01 V
2 V
Secuencia Codificada
0 V
1 V
2 V
Codificador Convolucional 1
Codificador Convolucional 2 Interleaver
Secuencia de Entrada
k
~
k
V01 V
2 V
Codificador Convolucional 1
Codificador Convolucional 2 Interleaver
Secuencia de Entrada
k
~
k
V01 V
2 V
Secuencia Codificada
0 V
1 V
2 V
Secuencia Codificada
0 V
1 V
2 V
Figura 2.13 Turbo Codificador
Una secuencia de entrada de información es introducida en el Codificador Convolucional 1 con tasa R = 1/2, generando una primera secuencia de bits de paridad; asimismo, esta secuencia de entrada es permutada por el entrelazador e introducida al Codificador Convolucional 2 para ser codificada y generar la segunda secuencia de bits de paridad. Los datos de la secuencia de entrada son transmitidos junto con las dos secuencias de paridad con una tasa R = 1/3.
La estructura concatenada en paralelo de los codificadores convolucionales del turbo codificador, proporcionan a los códigos una mejor capacidad de corrección de errores de códigos grandes (mejor rendimiento) y pueden ser decodificados con algoritmos moderadamente complejos [8]. Un turbo codificador logra una probabilidad de error de bit (BER) de 10-5 utilizando un código de
R = 1/2, una longitud de restricción M = 5, polinomios generadores g1 = 37 y g2 = 21 y un Eb/N0
Figura 2.14 Rendimiento del Turbo Codificador con varias iteraciones2
2.4.1 Entrelazadores (Interleavers)
Los entrelazadores o interleavers permutan una secuencia de datos ordenándolos de una forma determinística, es decir, cada símbolo o bit de información ocupa una posición diferente a la secuencia de datos de entrada (figura 2.15). El proceso contrario se le conoce como desentrelazado o deinterleaver que reordena los datos nuevamente en la secuencia original.
2 BERROU C., GLAVIEUX A., THITIMAJSHIMA P., Near Shannon Limit error-Correcting Coding and
Debido a la naturaleza concatenada en paralelo del turbo codificador, le permite trabajar con la misma entrada de datos de información pero en diferente secuencia; esto es, el primer codificador recibe un bit de entrada ci y produce una salida
(
, 1)
i i y
c mientras que el segundo codificador recibe una entrada ci′y produce la salida
(
, 2)
i i y
c′ , [15]. Los bits de entrada se agrupan según el tamaño N del entrelazador donde el primer codificador convolucional de tasa 1/2 genera una salida sistemática y otra con los bits de paridad y el segundo codificador genera las mismas salidas para la entrada entrelazada, pero omitiendo la salida sistemática dejando paso únicamente a los bits de paridad con una tasa de 1/3. Esto le permite al turbo código tener más información que utilizará el turbo decodificador para determinar la secuencia de bits de entrada en el receptor.
Entrelazador
c = (c
1, c
2,…, c
N)
c’= (c’
1,c’
2,…, c’
N)
Entrelazador
Entrelazador
c = (c
1, c
2,…, c
N)
c’= (c’
1,c’
2,…, c’
N)
Figura 2.15 Representación de un Entrelazador
Por ejemplo, si se tiene un entrelazador de bloques con tamaño N = 8, la entrada se representaría como c=(c1,c2,c3,c4,c5,c6,c7,c8) y la secuencia entrelazada c′=(c1′,c2′,c3′,c4′,c′5,c6′,c7′,c8′) sería c=(c1,c5,c2,c6,c3,c7,c4,c8) como se muestra en la figura 2.16.
c = c1 c2 c3 c4 c5 c6 c7 c8
c’ = c1 c5 c2 c6 c3 c7 c4 c8
Figura 2.15 Mapa de un Entrelazador