INSTITUTO POLITECNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y
ELÉCTRICA
La modulación Codificada Entramada (TCM) en los nuevos estándares de comunicación
T E S I S
Que para obtener el título de Ingeniero en Comunicaciones y Electrónica
P R E S E N T A
Hector Flabio Balderas Serrato
ASESOR: M. en C. Miguel Sánchez Meraz
México, D. F. 2008
INSTITUTO POLITÉCNICO NACIONAL
ii
AGRADECIMIENTOS
Quiero agradecer a Dios por haberme permitido llegar a esta meta que me había propuesto y por
la familia que me dio, pues sin su apoyo este trabajo sería definitivamente imposible.
También un agradecimiento a todos y cada uno de mis maestros que, desde mi formación
preescolar, han contribuido a hacerme el profesional que hoy soy.
Al Maestro Miguel Sánchez por la oportunidad que me dio de trabajar con él y el apoyo que me
brindó como asesor para poder desarrollar este trabajo.
Al Dr. Antonio Osorio y al M. en C. Floriberto Ortiz por haber dedicado parte de su valioso
tiempo para, con su experiencia y conocimientos, realizar correcciones y observaciones al trabajo
y con ello lograr de éste una tesis de calidad.
A mis compañeros y amigos que compartieron conmigo opiniones, conocimientos, preguntas,
respuestas, etc.
A todos ustedes MUCHAS GRACIAS.
HECTOR
INSTITUTO POLITÉCNICO NACIONAL
iii
ÍNDICE DE FIGURAS
FIGURA 1: Esquema general de un sistema de comunicaciones digitales (tomada de [3])...…. 8
FIGURA 2: Modelo en tiempo discreto de un sistema LMDS utilizando TCM……………..… 16
FIGURA 3: Codificador Convolucional…………………………………………………..…… 22
FIGURA 4: Codificador convolucional de razón ½ (tomada de [5])……………………..…… 23
FIGURA 5: Codificador sistemático con R= ½ (tomada de [5]) ……………………..……… 24
FIGURA 6: Codificador, diagrama de estado y diagrama trellis de un codificador con
G(x) = [1+ x2, 1+ x + x
2] (tomada de [5]).................................................................................... 26
FIGURA 7: Codificador convolucional sistemático (n, n-1,m) con
retroalimentación (tomada de [9])……………………………………………………..………. 28
FIGURA 8: Codificador convolucional de cuatro estados y R= 2/3 (tomada de [9])………..… 28
FIGURA 9: Codificador convolucional sistemático (3, 2, 2) con
retroalimentación (tomada de [9])………………………………………………………..…….. 29
FIGURA 10: Etapas de procesamiento de un código convolucional…………………..………. 30
FIGURA 11: Notación asociada con la transición de estados (tomada de [5])……...………..... 32
FIGURA 12: La etapa Viterbi: Selección de la trayectoria con la mejor
métrica (tomada de [5])……………………………………………………………………..….. 33
FIGURA 13: Trayectoria a través de la trellis que corresponde al ejemplo de
decodificación con el algoritmo de Viterbi………………………………………………..……. 35
FIGURA 14: Decisiones suave y dura de un decodificador de Viterbi……………………..…. 41
FIGURA 15: Diagrama trellis para el código [133,171] R= ½ y K=7…………………..…….. 41
FIGURA 16: Trellis repetitiva para el codificador [133,171] con decodificación
con el algoritmo de Viterbi…………………………………………………………………..…. 42
FIGURA 17: Decodificación hacia atrás para ui ………………………………………..……… 42
FIGURA 18: Ilustración de una decodificación con decisión suave………………………..….. 43
INSTITUTO POLITÉCNICO NACIONAL
iv
FIGURA 19: Codificador/ modulador de Ungerboeck [1 y 2]…………………………..……... 44
FIGURA 20: (a) Modulador básico; (b) modulación codificada……………………..………… 45
FIGURA 21: Ejemplo práctico del funcionamiento de TCM……………………..…………… 46
FIGURA 22: Constelaciones PSK………………………………………………………..…….. 47
FIGURA 23: Particionamiento de conjuntos de una constelación 8-PSK………………..….... 49
FIGURA 24: Diagrama de bloques de un codificador TCM…………………………..……...... 50
FIGURA 25: Esquema TCM: a) Codificador convolucional; b) Trellis de 4 estados;
c) mapeo de los bits codificados (c1, c2, c3) en los puntos de señal……………………..….…. 50
FIGURA 26: Determinación de la distancia mínima en la trellis………………………..……... 51
FIGURA 27: Implementación de TCM 8-PSK con codificador retroalimentado………..…….. 54
FIGURA 28: Diagrama no retroalimentado del esquema 8-PSK de la fig. 27…………..…….. 55
FIGURA 29: Codificador de cuatro estados utilizado en esquemas TCM 8-PSK…………..…. 55
FIGURA 30: Forma no retroalimentada del codificador de la figura 29…………..…………… 56
FIGURA 31: Esquema general de simulaciones realizadas……………………..……………... 57
FIGURA 32: Diagrama de flujo de un codificador/decodificador convolucional………..…….. 59
FIGURA 33: Imagen de la pantalla que presenta el programa que simula la
codificación convolucional y la decodificación con el algoritmo de Viterbi
de una secuencia de datos………………………………………………………………..……... 61
FIGURA 34: Diagrama de flujo de un codificador/ decodificador con ambos tipos de
decodificación………………………………………………………………………..…………. 63
FIGURA 35: Tasa de Error de Bit (BER) como función de la RSR para un
codificador R= ½ con una ventana de 32 bits y decodificación con el algoritmo
de Viterbi usando decisión dura………………………………………………………....…….. 65
FIGURA 36: BER como función de la RSR para un codificador R= ½ con una
ventana de 32 bits y decodificación con el algoritmo de Viterbi usando decisión
suave con 8 niveles de cuantización……………………………………………………………. 66
FIGURA 37: Decisión suave adaptada según la RSR que se proporciona como argumento…... 67
INSTITUTO POLITÉCNICO NACIONAL
v
FIGURA 38: Resultados teóricos vs. canal AWGN simulado……………………………….... 68
FIGURA 39: Modelo Simulink utilizado para simular un sistema de codificación
convolucional con decodificación basada en el algoritmo de Viterbi con decisión suave…....... 69
FIGURA 40: Parámetros del generador de datos de Bernoulli………………………………… 70
FIGURA 41: Parámetros del bloque codificador convolucional……………………………….. 71
FIGURA 42: Parámetros correspondientes al modulador BPSK. ……………………………... 71
FIGURA 43: Parámetros del bloque del canal AWGN. …………………………………….… 72
FIGURA 44: Bloques integrantes del subsistema demodulador. ……………………………… 73
FIGURA 45: Cuadro de diálogo de los parámetros correspondiente al decodificador
de Viterbi……………………………………………………………………………………….. 73
FIGURA 46: Parámetros modificables del bloque que calcula la tasa de error.…...……..….… 75
FIGURA 47: Cuadro de diálogo del bloque que envía los datos al espacio de trabajo de
MATLAB. ……………………………………………………………………………………... 76
FIGURA 48: Resultados de la tasa de error obtenidos implementando el sistema con bloques
simulink. ……………………………………………………………………………………….. 78
FIGURA 49: Modelo Simulink utilizado para implementar la decodificación de
de códigos convolucionales utilizando decisión dura (un nivel de cuantización). ……………. 78
FIGURA 50: Bloques integrantes del subsistema BPSK decisión dura. ………………………. 79
FIGURA 51: Parámetros modificados al bloque decodificador de Viterbi. …………………… 79
FIGURA 52: Desempeño de los codificadores implementados en simulink……………...…… 80
FIGURA 53: Modelo Simulink utilizado para implementar un sistema TCM. ………………. 81
FIGURA 54: Parámetros a definir en el bloque codificador TCM……………………………... 81
FIGURA 55: Cuadro de dialogo del bloque correspondiente al canal AWGN del
Sistema simulado…….…………………………………………………………………….…… 82
FIGURA 56: Esquema TCM 8-PSK de dos estados simulado....………………………………. 83
FIGURA 57: Parámetros correspondientes al decodificador TCM. …………………………… 83
FIGURA 58: Resultados obtenidos mediante la simulación de un esquema TCM. …………… 84
INSTITUTO POLITÉCNICO NACIONAL
vi
ÍNDICE DE TABLAS
TABLA 1: Cronología de la estandarización…………………………………………………... 11
TABLA 2: Estándares para módems de alta velocidad sobre redes telefónicas……………… 12
TABLA 3: Respuesta al impulso del codificador del ejemplo 1…………………….………… 23
TABLA 4: salidas correspondientes al codificador del ejemplo 3………………………….… 34
TABLA 5: Resultados obtenidos y publicados por ungerboeck [2] …………………………… 53
TABLA 6: Diferentes longitudes de restricción usadas para la simulación……………….…… 62
INSTITUTO POLITECNICO NACIONAL
1
ÍNDICE GENERAL
ÍNDICE DE FIGURAS………………………………………………………….. iii
ÍNDICE DE TABLAS …………………………………………………………... vi
JUSTIFICACIÓN …………………......…….…………...…......…………......… 3
OBJETIVOS……...………………........…………………………...……….....… 4
I.- INTRODUCCIÓN…………………………………………………................ 5
II.- ESTÁNDARES DE COMUNICACIÓN…………………..……..................... 9
III.- CODIFICACIÓN PARA CONTROL DE ERROR………….............. 17
IV.- CÓDIGOS CONVOLUCIONALES………………………….............. 20
IV.1.- DESCODIFICACIÓN CONVOLUCIONAL: ALGORITMO
DE VITERBI………………………………………….......................... 30
IV.1.1 Decodificación dura y suave...................................................... 40
V.- MODULACIÓN CODIFICADA TRELLIS (TCM)…….….….......… 44
VI.- SIMULACIÓN Y RESULTADOS………………………...…............. 57
VI.1.- Codificación/decodificación convolucional............................... 58
VI.2.- Simulación en MATLAB de códigos convolucionales con diferente
longitud de restricción................................................................. 60
VI.3.- Simulación del canal AWGN en MATLAB.............................. 67
VI.4.- Simulaciones basadas en bloques simulink............................... 67
INSTITUTO POLITECNICO NACIONAL
2
VI.5.- SIMULACIÓN DE CÓDIGOS TCM....................................... 80
VII.- CONCLUSIONES………………………………………………...........…. 85
REFERENCIAS..........................……………………………………...…........... 86
ANEXOS……………………………………………………………...…............ 89
* CÓDIGOS FUENTE.............................................................................. 89
INSTITUTO POLITECNICO NACIONAL
3
JUSTIFICACIÓN
El propósito de cualquier sistema de comunicaciones es transmitir información desde una
fuente a un destino mediante un canal de comunicaciones. Un ingeniero en comunicaciones
usualmente tiene muy poco control sobre estos tres componentes. Su rol es diseñar transmisores y
receptores que envían la salida de la fuente sobre el canal al destino con alta fidelidad (baja
distorsión, que puede evaluarse mediante probabilidad de error).
Como ya se ha mencionado, en las telecomunicaciones se ha hecho indispensable el manejo
digital de los datos ya que muchos de los algoritmos de codificación y decodificación de los
mismos así lo precisan.
La digitalización de los datos conviene porque:
* Es más fácil diseñar algoritmos de procesamiento de señales digitales que analógicas
* Se ha logrado implementar exitosas aplicaciones de la codificación con control de error
debido a la gran abundancia de técnicas de control de error y algoritmos de procesamiento
digital.
Una aplicación importante de la codificación con control de error fue en dispositivos de
almacenamiento, como en los reproductores de CD que usan códigos Red-Solomon para manejar
la probabilidad de error que introduce el lector óptico en la reproducción de alta fidelidad sin
corrección de error.
Otro logro fue la exitosa aplicación del control de error de banda limitada de los canales
telefónicos, donde la modulación codificada entramada (TCM) fue utilizada para producir
impresionantes mejoras y aprovechar la tasa de transmisión llevándola hacia el límite teórico del
canal. Actualmente la codificación es aplicada en las comunicaciones satelitales, dispositivos
computacionales de almacenamiento, circuitos lógicos, sistemas de memoria de semiconductores,
sistemas de audio/video y sistemas modernos de comunicación.
INSTITUTO POLITECNICO NACIONAL
4
OBJETIVOS
• Presentar una revisión de la Modulación Codificada Entramada TCM así
como los conceptos que involucra.
• Desarrollar módulos de software en MATLAB útiles para la
implementación de un sistema TCM.
• Proveer un material útil para la fácil comprensión del funcionamiento de
los esquemas de modulación trellis.
INSTITUTO POLITECNICO NACIONAL
5
Capitulo I
INTRODUCCIÓN Parte fundamental para la elaboración del presente trabajo es la búsqueda y recopilación de
información referente a los temas que anteriormente se refirieron. En seguida se presenta la
información básica necesaria para la comprensión de los esquemas TCM y su funcionamiento,
posteriormente se incluyen y explican los distintos códigos que se implementaron para realizar
las simulaciones correspondientes.
Debido al gran desarrollo de los circuitos de alta velocidad y la integración de gran escala
(VLSI) los equipos de procesamiento y almacén de datos han optado por el uso de técnicas
digitales.
Los sistemas digitales codifican los datos en ceros ―0‖ y unos ―1‖ lógicos que son resultado
de la apertura o cierre de los interruptores semiconductores que contienen.
En la mayoría de los procesos la información se captura en forma analógica, a través de
sensores, ésta tiene que ser codificada a cadenas de ceros y unos. Tanto este proceso de
codificación como el opuesto (de digital a analógico) los encontramos en todos los sistemas.
Las ventajas del manejo de señales digitales son muchas, como el hecho de que el receptor, en
el caso más simple, sólo se encarga de tomar una decisión entre un número finito de señales
discretas y definir un cero o un uno y no hace estimaciones sobre señales como en el caso de un
receptor analógico.
En la figura 1 se presenta el esquema general de un sistema de comunicaciones digitales, de
la figura se puede decir que los sistemas de comunicación digitales pueden partir tanto de datos
digitales (como las manejadas por la computadora) como de datos presentes en forma analógica
(la señal recibida de un micrófono, por ejemplo), en este último caso se digitaliza la señal para
poder representarla en secuencias de ceros y unos, en ocasiones es necesario eliminar del dato
digital información innecesaria esto con el fin de garantizar que cada bit de información tenga la
misma probabilidad de ocurrencia (más adelante se verá por qué esto es importante). El
codificador de canal se encarga de agregar redundancia controlada para realizar la transmisión a
través del canal. Por su parte, el modulador convierte los símbolos discretos en formas de onda
que se transmitirán a través del canal de formas de onda.
Es conveniente recordar que básicamente el proceso de modular es modificar
sistemáticamente alguna o algunas características de una señal. Para los sistemas de
comunicaciones digitales es conveniente modular una señal portadora con el flujo de datos
digitales antes de realizar la transmisión. Existen diversos métodos de modulación de señales,
entre los que se encuentran:
INSTITUTO POLITECNICO NACIONAL
6
Modulación de amplitud (ASK, Amplitude Shift Keying): La amplitud de la portadora
se ve afectada por los bits de datos.
Modulación de fase (PSK, Phase Shift Keying): Se trabaja sobre la fase de la señal
portadora.
Modulación de amplitud en cuadratura ( QAM, Quadrature Amplitude Modulation):
Que puede verse como una forma de combinación de modulación de amplitud y
modulación de fase.
Modulación en frecuencia (FSK, Frecuency Shift Keying): se modifica la frecuencia
de la señal portadora.
Modulación de fase continua (CPM): A diferencia de PSK la fase de la portadora es
variante en el tiempo.
Modulación Codificada Trellis (TCM, Trellis Coded Modulation): Esencialmente es
CPM con la ventaja de que se codifica y se modula al mismo tiempo.
Es este ultimo tipo de modulación motivo de estudio de este trabajo debido a que posee
características que lo hacen único, tales características son:
Permiten incrementar la tasa de transmisión de datos sin incrementar el ancho de
banda debido a que se transmite más información por cada símbolo.
Se realizan las funciones de codificación y modulación de manera conjunta.
La tasa de transmisión de símbolos no aumenta aunque ellos contengan más
información.
El codificador mapea los bits de información en un número mayor de bits de código.
En general, los poderosos esquemas de modulación TCM en los sistemas mejoran
significantemente la ganancia del sistema e inmunidad a interferencia, lo que se
traduce directamente en enlaces mas largos, antenas mas pequeñas y menor costo de
implementación.
Los esquemas TCM más sencillos (cuatro estados) pueden mejorar en 3dB la ganancia
total del sistema, mientras que los más complejos pueden sobrepasar los 6dB.
Del lado del receptor se tienen las acciones inversas que se deben realizar a la información
proveniente del canal para obtener la información original.
Es en la parte de codificación/modulación, el canal y demodulación/decodificación en donde
se encuentra enfocado el presente trabajo, especialmente en la corrección de errores hacia delante
(FEC) que se ilustra en la figura con líneas punteadas.
INSTITUTO POLITECNICO NACIONAL
7
Existen otros métodos para corregir errores como el caso del requerimiento automático de
retransmisión (ARQ, por sus siglas en inglés), sin embargo, estos métodos no son motivo de
estudio para este trabajo.
Es muy importante mencionar que las señales digitales son más confiables en ambientes con
mucho ruido, porque a pesar de la presencia de éste, es posible detectar la señal para recuperar
los datos y, mediante técnicas de corrección de error, también corregir los errores creados
durante la transmisión. Los datos digitales pueden ser codificados fácilmente tanto para crear
una interdependencia entre un gran número de símbolos, como para habilitar al receptor para
realizar una detección más exacta de los símbolos. Esto se denomina codificación con control de
error.
La estructura del trabajo está planeada de manera que se establezcan las bases necesarias para
la fácil comprensión del funcionamiento de los esquemas TCM, para ello es importante entender
en qué radica la importancia del uso de modulación trellis (como también se le conoce a TCM,
por la manera que representarse), es por ello que en el capitulo II se presenta una breve
introducción a lo que son los estándares de comunicación así como las aplicaciones más
comunes que ha tenido la modulación TCM desde sus inicios.
En el capitulo IV se presenta una estudio de los codificadores convolucionales que son parte
fundamental de este tipo de modulación y que es de fundamental importancia conocer para
comprender el funcionamiento de los esquemas TCM. Si bien es cierto que la modulación trellis
también se implementa con otros tipos de codificadores, el desempeño que tiene en conjunto
con codificadores convolucionales es mucho mejor. Es por ello que en el capitulo III se hace
mención de otros tipos de codificación que existen y qué desventajas tiene su uso con respecto a
los códigos convolucionales.
Otra parte fundamental del proceso de envío / recepción de los datos digitales es la manera
en como se reciben del canal y se reconstruyen para obtener nuevamente los datos originales, esta
acción la realiza el decodificador/demodulador. Es por ello que también en el capítulo IV se
estudia el algoritmo de decodificación de Viterbi. Se eligió este algoritmo debido a que en
estudios anteriores se ha demostrado que ofrece un mejor desempeño del esquema TCM en
cuanto a la tasa de error de bit (BER, por sus siglas en inglés) y sobre todo por la facilidad de
implementación en software al ser un algoritmo recursivo.
Ya con las bases necesarias es posible comprender cómo es que se realiza el proceso de
codificación/decodificación de los esquemas TCM por lo que en el capítulo V se comienza con
el estudio de este tipo de modulación.
Finalmente, en el capítulo VI se presentan las simulaciones que se realizaron para verificar
el desempeño de los códigos convolucionales usando el algoritmo de Viterbi con decisión suave y
dura así como el desempeño que tuvo un esquema de modulación TCM 8-PSK con codificación
convolucional. Además se incluyen los resultados arrojados por tales simulaciones y las
conclusiones que se desprenden de ellos.
INSTITUTO POLITECNICO NACIONAL
8
FIGURA 1: Esquema general de un sistema de comunicaciones digitales
Debido a la tendencia de los sistemas hacia la digitalización, la simulación de los mismos se
vuelve una herramienta indispensable para evaluar su desempeño sin necesidad de
implementarlos en campo. Por esta razón en la Sección de Estudios de Posgrado (SEPI) de la
ESIME-ZAC se tienen varios proyectos de este tipo. El presente trabajo forma parte de un
proyecto más amplio que pretende implementar diferentes estándares de radio sobre hardware
programable (FPGA). El primer paso en el desarrollo de estos prototipos es la simulación de los
sistemas en MATLAB y lenguaje C.
Finalmente se concluye que los diversos módulos de software implementados son útiles para
investigar el desempeño de diferentes implementaciones de TCM debido a la gran similitud que
los resultados obtenidos tienen con modelos teóricos o con otras simulaciones documentadas. Por
tal motivo los resultados obtenidos de este trabajo servirán como base para los trabajos que se
realizan en la SEPI para la implementación de hardware que trabaje con esta tecnología.
Digitalizador
ARQ
Descompresión
fuente
Detección de
error
Codificador/
ModuladorDemodulador/
Decoder
Compresión de
fuente
Sincronización
Canal
Conversor D/A
Dato digital
Información
analógica
Control de error hacia delante FEC
Información
Analogica
Salida digital
INSTITUTO POLITECNICO NACIONAL
9
Capitulo II
ESTANDARES DE COMUNICACIÓN
Las tecnologías de telecomunicaciones han progresado incesantemente desde la investigación
hacia la estandarización de la implementación de sistemas. Los estándares de telecomunicaciones
son conjuntos de normas y recomendaciones técnicas que regulan la transmisión en los sistemas
de comunicaciones.
El proceso de comunicación es regido por las siguientes cuatro leyes:
La ley de Shannon
WN
PWC
0
2 1log ...........................................(1)
Donde C es la capacidad de un sistema de comunicaciones en bits por segundo, P es la
potencia de la señal en Watts, W es el ancho de banda de la señal en Hertz, y N0 es la densidad
espectral de la potencia del ruido unilateral en Watts/Hertz. La ley de Shannon dice que si hay un
transmisor y un receptor, la capacidad del canal de comunicación depende linealmente del
ancho de banda disponible y logarítmicamente de la relación señal a ruido (RSR). Esto significa
que es más difícil incrementar la capacidad de canal incrementando la relación señal a ruido que
incrementando el ancho de banda disponible.
La ley de Moore
Establece que el nivel de integración de los circuitos integrados se duplicará cada 18 meses.
Tercer principio. La utilidad de una red es proporcional al cuadrado de la velocidad de
conexión.
Cuarto Principio. Establece que la utilidad de una red es proporcional al cuadrado del número
de dispositivos que pueden ser conectados. Con respecto a un dispositivo en particular esta regla
dice que la utilidad de un dispositivo es proporcional al cuadrado del número de dispositivos con
los cuales puede comunicarse.
Las tecnologías de comunicación y los estándares de comunicación han buscado, desde los
trabajos de Shannon en 1948, acercarse más a la capacidad de Shannon. Mientras los dos
primeros principios se refieren a la pregunta de qué puede ser lo ideal, el tercero y cuarto se
refieren a cómo un incremento en la utilidad puede mejorar el desempeño—incrementando la tasa
de comunicación e incrementando el número de dispositivos unidos—. El desarrollo de los
estándares de telecomunicaciones de la IEEE 802 es una buena manifestación de esas leyes
fundamentales de comunicación. Los estándares de Comunicación proporcionan la tecnología
para interconectar un gran número de dispositivos a tasas de datos cada vez mayores.
Antes de describir los estándares de comunicación es importante identificar las principales
características de la tecnología de telecomunicaciones. Esas características incluyen las
siguientes:
INSTITUTO POLITECNICO NACIONAL
10
Habilidad de transportar voz, audio y video, además de datos de computadora.
Incluyen dispositivos con diferente precio, consumo de potencia y tasas de datos para
operar.
Asignación de espectro eficiente y dinámica entre los dispositivos conectados
De manera adicional la tabla 1 incluye una cronología de la fundación de algunas
organizaciones estandarizadoras y la publicación de los estándares más importantes.
Algunas de las organizaciones estandarizadoras son: ISO International Standards
Organization (Organización Internacional de Estándares), el IEEE (Instituto de Ingenieros
Electrónicos y Eléctricos) que es la encargada de fijar los estándares de los elementos físicos de
una red, cables, conectores, etc., ANSI American National Standards Institute (Instituto Nacional
Americano de Estandarización ), TIA Telecommunications Industry Association ( Asociación de
Industrias de Telecomunicaciones) y la Alianza de Industrias de Electrónica (EIA, por sus siglas
en inglés).
El comité que se ocupa de los estándares de computadoras a nivel mundial es de la IEEE en
su división 802, los cuales se dedican a todo lo relacionado con sistemas de red.
En los últimos años se han desarrollado diversos estándares para comunicaciones digitales
inalámbricas con distinto tipo de acceso a redes de comunicaciones e interacción de sistemas.
Estos estándares se pueden clasificar en 3 grandes grupos. Los WPAN (Wireless Personal Area
Network), WLAN (Wireless Local Area Network) y los WMAN (Wireless Metropolitan Area
Network). Los primeros están ideados para comunicaciones de muy bajo alcance y muy baja
potencia, siendo el estándar más conocido de esta familia bluetooth, que nos permite
transmisiones de hasta 1Mbps a distancias de varios metros. En general, estos estándares están
diseñados para que los dispositivos que los implementan sean de bajo costo. Los estándares
WLAN son los estándares que nos permiten conexiones de hasta varias decenas de Mbps para
alcances de hasta centenares de metros. El estándar más conocido de esta familia es el WiFi que
permite conexiones de hasta 11Mbps. Por ultimo los WMAN son estándares que permiten
conexiones de varios kilómetros y velocidades de hasta 75Mbps, en la configuración actual de
WiMax.
El estándar de la IEEE que regula las conexiones WLAN es el IEEE 802.11. Este estándar, a
su vez, tiene más subdivisiones entre las que destaca la norma IEEE 802.11b que se basa en la
tecnología de espectro extendido y logra tasas de datos de 5.5 Mb/s y 11Mb/s. Por ello muchos
de los productos del mercado siguen esta norma. Es de especial interés que trabaja a nivel físico
y determina como alternativa de funcionamiento un esquema llamado codificación
convolucional binaria empaquetada (PBCC por sus siglas en ingles). Esta codificación algunas
veces se denomina como modo de alto desempeño. Se usa un codificador convolucional de 64
estados y una tasa de 1/2, además de una secuencia de protección. Después de pasar por el
codificador los bits son mapeados, para transmisiones de 5.5 Mb/s el mapeo es BPSK (Binary
Phase Shift Keying) una modulación en fase y para transmisiones de 11 Mb/s se mapea usando
QPSK (quadrature phase shift keying). La norma IEEE 802.11a usa un nuevo modo de
transmisión llamado OFDM (Orthogonal Frecuency Division Multiplexing) que debido a su bajo
costo fácilmente se ha incluido en los dispositivos inalámbricos del mercado. A pesar de esta
novedosa forma de modulación la norma IEEE 802.11a contempla el uso de codificadores
convolucionales de tasas ½, 2/3 o ¾. En el caso de la tasa ½ el codificador tiene los polinomios
INSTITUTO POLITECNICO NACIONAL
11
133 y 171 en notación octal. Las otras tasas se obtienen por omisión de perforado de ciertos bits
de la palabra. La decodificación se realiza indiscutiblemente con el algoritmo de Viterbi.
TABLA 1: Cronología de la estandarización
1865 Es fundada la ITU (International Telegraph Union), primer esfuerzo para
estandarizar las telecomunicaciones en diferentes países.
1884 Es fundada la IEEE (Institute of Electrical and Electronics Enginneers).
1906 Se funda la IEC (International Electrotechnical Commission). Crea
estándares para ingeniería eléctrica y electrónica.
1918 Es fundada la ANSI (American National Standards Institute), enaltece la
competividad global de los negocios de Estados Unidos y la "calidad de
vida del estadounidense".
1932 Se crea la Unión Internacional de Telecommunicaciones ITU (antes
Unión Internacional de Telegrafía)
1947 Se hicieron varios cambios en el funcionamiento y en la estructuración de
la ITU, que hasta hoy continúan presentes.
Se crea la ISO (International Organization for Standardization)
1976 La ISO/IEC crea Joint Technical Committee 1(JTC 1). Primer esfuerzo
para crear estándares Internacionales de IT (Information Technologies).
1980 La IEEE establece el comité de estándares LAN MAN 802
1982 La ARPA (Advanced Research Project Agency) define el protocolo
TCP/IP para utilizarlo en Arpanet
1983 La IEEE aprueba la tecnología Ethernet 802.3 originalmente desarrollados
por NEC, Intel y Xerox.
1984 ANSI comienza a desarrollar los estándares para FDDI (Fiber .Distributed
Data Interface). 13 años después -y 19 estándares más tarde- el trabajo
continúa.
1985 La IEEE aprueba Token Ring 802.5
1986 Se hace la primera junta de la IETF (Internet Engineering Task Force)
con 15 asistentes.
1988 Se funda la OSF primer consorcio de vendedores
Se funda la ETSI (European Telecommunications Standards Institute)
1990 Microsoft define NDIS (Network Device Interface Specification).
1991 Se funda Frame Relay Forum, otro Consorcio de Fabricantes
1992 Es fundado ATM Forum, establecido por NEC, Northern Telecom, Sprint
y Sun.
IEEE empieza a trabajar en los estándares Ethernet de 100 Mbps.
INSTITUTO POLITECNICO NACIONAL
12
1994 Es fundado ADSL Forum
1995 IEEE aprueba Fast Ethernet (802.3u) y 100VG-AnyLAN (802.12).
1996 Es fundado Gigabit Ethernet Alliance
Tabla 2: Estándares para módems de alta velocidad sobre redes telefónicas
Estándar
CCITT
Tasa de
bit
(bps)
Esquema de
modulación
Cables /modo
de transmisión
Duplex
Síncrono/
asíncrono
Tipo de línea
(dial up/
dedicada)
V.32 9,600 2-D TCM/ 32-CR 2/ full Síncrono conmutada
V.33 14,400 2-D TCM/ 128-CR 4/ full Síncrono dedicada
V.34 28,800 4-D TCM/ 960-CR 4/ full Síncrono dedicada
Desde la década de los 70 se han venido aplicando los códigos trellis, en especial los códigos
con control de error, en el área de comunicaciones espaciales, debido a su excelente desempeño
en cuanto a la eficiencia de potencia. Este hecho provocó que por años se encasillaran en la
aplicación a sistemas de comunicaciones espaciales hasta que se probó su desempeño en los
sistemas de transmisión de tatos sobre canales de voz, registrando una sorprendente mejora en la
eficiencia espectral. En un canal estándar de teléfono los parámetros que se deben cuidar para
garantizar una transmisión confiable son el ancho de banda y la Relación Señal a Ruido (RSR,
SNR por sus siglas en inglés).
INSTITUTO POLITECNICO NACIONAL
13
El ancho de banda de los canales telefónicos se extiende por lo general de 300 Hz a 3400 Hz
y son un excelente ejemplo de canales de ancho de banda limitado. En 1982 se formó el grupo de
estudio International Telephone and Telegraph Consultative Committee (CCITT) dedicado a
estandarizar una familia de módems para transmisión de datos sobre canales de voz. Durante
1983 se consideró la modulación TCM de una y dos dimensiones con esquemas de señalización
QAM. De modo que la recomendación CCITT V.32 para transmisiones de dos hilos por arriba
de 9.6 Kbits/s (Kbps) y una tasa de símbolos de 2400 bits/símbolo (también denominados
bauds) eligió un codificador convolucional rotacionalmente invariante a 90º de ocho estados con
una decodificación de máxima probabilidad con decisión suave acompañado de una constelación
32-Cross que logró conseguir una ganancia de código de 4 dB comparada con una señal no
codificada 16-QAM. Una versión modificada de éste estándar que usa el mismo codificador que
el V.32 pero una constelación expandida 128-Cross para cuatro hilos y tasas de transmisión
arriba de los 14.4 Kbps fue propuesta por CCITT grupo de estudio XVII en 1985 y adoptada por
el estándar V.33 en 1991.
En 1993, la Unión Internacional de Telecomunicaciones en su sector de estandarización de
telecomunicaciones (ITU-T, por sus siglas en inglés) grupo de estudio 14 (formalmente CCITT
grupo de estudio XVII) diseñó una nueva recomendación de módem de alta velocidad, V.34 o
V.fast. Se trata de un estándar análogo de módems para transmisiones full-duplex a tasas arriba
de 33.6 Kbps sobre redes estándar de telefonía, maneja códigos convolucionales sistemáticos
rotacionalmente invariantes de 16 estados con una ganancia de 4.2 dB, de 32 estados con una
ganancia de código de 4.5 dB y de 64 estados con ganancia de código de 4.7 dB y una
constelación (más adelante se definirá el término constelación) de señales 960-QAM, ésta
expansión de constelación ayuda a proteger de distorsiones no Gaussianas.
A altas tasas de transmisión, el estándar V.34 implica algunas técnicas avanzadas de
procesamiento de señales. Emplea una ecualización no lineal en el transmisor usando un
precodificador para reducir el incremento del ruido de ecualización causado por la distorsión de
la amplitud. Para mejorar la inmunidad al ruido la constelación de señales 4-D (esquemas TCM
de cuatro dimensiones) se determina por la imposición de una distribución de probabilidad
Gaussiana 2-D en la constelación 2-D de señales. En la tabla 2 se observa un breve resumen
referente a los estándares ITU-T V.32, V.33 y V.34.
Es importante mencionar que los módems V.90 de 56 Kbps que actualmente se usan recaen
en una tecnología diferente y más importante aún, en un canal diferente. Dado que las líneas
telefónicas urbanas portan canales digitales de 64 Kbps entre las estaciones locales de
conmutación, los cables de par trenzado de las estaciones de conmutación hacia los teléfonos del
usuario final son análogos y, no sufren de ruido de cuantización1, tienen una relación señal a
ruido (SNR) más grande, casi todo el tráfico de datos puede ser transportado hacia el usuario final
por un módem que trate las líneas telefónicas como un canal digital en vez de canales de ruido de
banda de voz. Esto es precisamente lo que el estándar V.90 hace.
1 El ruido de cuantización es el error que se comete cuando una señal analógica se analiza en base a diferentes
niveles de un cierto parámetro, por ejemplo su amplitud, y a cada uno de ellos se asigna un conjunto de ceros y
unos con el fin de obtener una señal digital, esto es digitalizar la señal.
INSTITUTO POLITECNICO NACIONAL
14
Para fines de la década del 80 se enfocó nuevamente la atención sobre los esquemas TCM
para su uso en tecnologías espaciales y de aeronáutica como es el caso del experimento
realizado por la Agencia Espacial de Estados Unidos (NASA) referente a comunicación móvil
satelital con el objeto de transmitir con tasas de 4800 a 9600 bps conversaciones codificadas
digitalmente sobre un canal RF de 5 KHz con una tasa de error de 10-3
. El proyecto denominado
(MSAT-X) consistió en dos etapas: la primera, establecer una comunicación full- duplex de voz
y datos a 4.8 Kbps (sobre un canal de 5 KHz) a través de un satélite entre un centro en New
Jersey y otro en Connecticut. La segunda parte consistió en establecer la misma comunicación
entre una estación fija en tierra y un boeging 727 sobrevolando la costa este de los Estados
Unidos. El sistema MSAT-X se basó en una arquitectura de Acceso por División Múltiple de
Frecuencia (FDMA por sus siglas en inglés) con una modulación trellis 8DMPSK en conjunto
con otros sistemas y un protocolo de red que integra voz y datos. Como resultado se obtuvo una
comunicación confiable y segura.
En 1992 surgió un nuevo interrogante, dado que ya se poseía una ganancia de hasta 3 dB en
las transmisiones satelitales, ¿Cómo lograr ganancias superiores a 5 dB sin que ello implique un
aumento en la complejidad del decodificador y además sin tener que incrementar la potencia?, la
respuesta fue combinar la modulación codificada trellis con codificación concatenada logrando
con ello transmisiones con una mejor confiabilidad, ganancia de código, eficiencia de ancho de
banda y una complejidad de decodificación menor.
Otra importante área en la que ha tenido gran auge el uso de esquemas TCM es la Televisión
Digital o de Alta definición (HDTV).
Al inicio de la década de los años 80 en Japón se define por primera vez la televisión de alta
definición HDTV. Mediante el proyecto Eureka EU95 (registrado ante la ITU en 1987) se
determina una norma Europea para dicho sistema. En Estados Unidos la Comisión Federal de
Comunicaciones (FCC) solicita en 1990 la entrega de propuestas para HDTV. En 1995 se debe
decidir en 5 propuestas que cumplen las condiciones de compatibilidad con NTSC. Los dos
sistemas estandarizados hasta el momento fueron MUSE (Multiple-Sub-Nyquist Sampling
Encoding) y MAC (Multiplexed Analogue Components).
La televisión HDTV digital ha generado dos normas similares. La DTV (Digital TeleVision)
en Estados Unidos incorpora varios procesos de compresión de imágenes: modelado perceptual,
estimación de movimiento jerárquico, compensación de movimiento bidireccional. El canal de
audio utiliza el sistema Dolby AC-3. Se utiliza la modulación VSB (Vestigial Side-Band) con
codificación Trellis y codificadores con control de error hacia adelante (FEC, por sus siglas en
inglés) del tipo Reed-Solomon y convolucionales. En el diagrama de bloques de esta norma se
encuentra la parte de codificación trellis cuyas características son las siguientes:
Entrada de dos bits en paralelo. Se codifica en forma diferencial una de las líneas de
datos.
La otra línea de datos permite obtener la codificación convolucional. El resultado son 3
datos en paralelo: FEC-2/3.
Los datos son mapeados en un símbolo de 8 estados (000= -7, 001= -5, -3, -1, +1, +3,
+5, 111= +7).
La secuencia de datos mapeados llegarán a un modulador de 8 estados.
INSTITUTO POLITECNICO NACIONAL
15
El codificador Trellis (como también se conoce al codificador convolucional) tiene
incorporado un Interleaver (intercalador que es un dispositivo que cambia el orden de los
bits de datos pero de manera irregular es decir, de manera aleatoria) para mejorar las
prestaciones frente a ráfagas de errores.
Opera con 12 codec (codificadores/decodificadores) Trellis idénticos en paralelo de
forma que la salida extrae un símbolo de cada uno de ellos.
El codificador trellis FEC-2/3 no se utiliza para la tasa de datos de 38,6 Mb/s (16-VSB)
pero el FEC-RS (que utiliza código Reed-Solomon, por ellos se escribe RS) es el mismo.
Para el mismo tipo de aplicación de televisión en Europa se preparó la norma DVB (Digital
Video Broadcast). El proyecto se inició en 1993 y reemplazó al Eureka. Se dispone de formatos
para DVB-S(satélite), DVB-C(cable) y DVB-T(terrestre). Utiliza anchos de banda de 6 y 8 MHz.
Es de características muy similares a la norma ATSC pues en la parte de codificación/modulación
utiliza codificadores convolucionales (de tasas 1/2, 2/3, 3/4, 5/6 o 7/8) y modulaciones (QPSK,
16-QAM o 64QAM).
En este mismo entorno de televisión digital se encuentran las transmisiones de tv por cable
(CATV, CAble TeleVision) y satelital (DBS, Direct Broadcast satellite) que son de ancho de
banda limitado y utilizan la misma compresión de video y audio que HDTV por lo que se hace
necesario el uso de los esquemas TCM para aprovechar al máximo el ancho de banda disponible
y realizar una transmisión confiable.
Los esquemas TCM también se aplican en redes locales inalámbricas como las de Servicio de
Distribución Local Multipunto (LMDS, Local Multipoint Distribution Service) que operan a nivel
mundial en rangos de 26 a 43 GHz con grandes anchos de banda (de 0.1 a arriba de 2 GHz) pero
no son consideradas como redes de comunicaciones móviles, sino como redes de acceso
inalámbricas fijas, donde el equipo del usuario final no requiere de movilidad alguna, por ejemplo
una PC. Los sistemas LMDS permiten un rápido despliegue en comparación con las tecnologías
homólogas basadas en cable e incluso con relación a sus homólogas inalámbricas, a lo que se
suma su carácter celular, que le dota de elevada escalabilidad, permite el acceso a Internet de alta
velocidad, tanto para el sector residencial (aun no, en la actualidad por su elevado costo de renta)
como para el empresarial, gracias a las técnicas digitales. Finalmente, esta tecnología presenta un
importante potencial como tecnología de acceso (especialmente compatible con las redes de fibra
óptica, redes HFR, Hybrid Fibre Radio) para nuevos operadores que no dispongan de grandes
recursos financieros.
Para mejorar la capacidad de las redes LMDS Ranjan Bose del Departamento de Ingeniería
Eléctrica del Instituto Tecnológico de la India (IIT) realizó en 2004 un trabajo que consistió en la
simulación de implementación de esquemas TCM en los sistemas LMDS. Su propuesta consiste
en implementar diferentes esquemas TCM en las células que utilizan el mismo canal para con
ello lograr que las señales codificadas por el esquema TCM 1 sean rechazadas por el
decodificador TCM 2 y viceversa y así reducir considerablemente las interferencias entre tales
células. En la siguiente figura se observa el modelo en tiempo discreto del sistema.
INSTITUTO POLITECNICO NACIONAL
16
Codificador
TCM 1
Codificador
TCM 2
X
X
+Decodificador
TCM 1
Celula deseada
Bits de entrada
Celula en el mismo canal
Sk
Uk
a
b
nk
rkBits de salida
Bits de entrada
FIGURA 2: Modelo en tiempo discreto de un sistema LMDS utilizando TCM.
En lo referente a redes inalámbricas la modulación TCM está siendo estudiada por que
permite aumentar las tasas de transmisión y reduce los errores provocados por interferencia.
Como ejemplo está la publicación localizada en [24], aquí se propone implementar esquemas de
modulación TCM para mejorar transmisiones inalámbricas de corta distancia entre dispositivos
portátiles como lap tops, reproductores de MP3 y de CD logrando velocidades de transmisión de
hasta 55 Mbps aún con archivos que pueden tener tamaños del orden de los 3 Mbytes.
Finalmente una aplicación más de los esquemas TCM tiene lugar en la Líneas de Abonado
Digital (DSL, Digital Subscriber Line) que es una tecnología que permite una conexión a una red
con más velocidad a través de las líneas telefónicas. Se trata de tecnología alternativa al (RDSI,
Red Digital de servicios Integrados). Engloba tecnologías que proveen conexión digital sobre red
telefónica como ADSL, SDSL, IDSL, HDSL, VDSL, etc. DSL envía paquetes de datos con
velocidades de 128 Kbps - 1.5Mbps. Por otra parte, la RDSI está disponible en dos diferentes
velocidades, es decir, 64Kbps y 128 Kbps. A pesar de tener tasas de transmisión diferentes se
trata de dos estándares equivalentes que utilizan muchos de los módems de la actualidad.
Tal es la utilidad de los esquemas TCM que hasta en la implementación de redes neuronales
se utilizan para optimizar las velocidades de procesamiento de datos. El documento localizado en
[25] detalla las características del esquema utilizado para decodificar los datos procesados dentro
de la red así como la manera en que mejora el sistema con el uso de TCM.
INSTITUTO POLITECNICO NACIONAL
17
Capitulo III
CODIFICACION PARA CONTROL DE ERROR Tres investigadores marcaron el inicio en el campo del manejo del error y echaron abajo
teorías antes planteadas, ellos fueron Shannon, Hamming y Golay. Shannon echó abajo la teoría
que explicaba los limitantes fundamentales de la eficiencia de los sistemas de comunicación,
Hamming y Golay fueron los primeros en desarrollar esquemas prácticos de control de error. La
fórmula más famosa del trabajo de Shannon trata sobre la capacidad de canal de un canal ideal
gaussiano de banda limitada (el término Gaussiano se refiere a la distribución de probabilidad que
tiene el ruido, recuérdese la campana de Gauss).
...........................................(2)
Donde
C= Capacidad de canal (el máximo número de bits que se pueden transmitir a través del
canal por unidad de tiempo).
W= Ancho de banda del canal
S/N= relación señal a ruido del receptor
S= Potencia de la señal
N= Potencia del ruido
Debido a su gran importancia, de la fórmula de Shannon se obtienen ciertas variantes que se
aplican a distintos tipos de canales de transmisión como es el caso del canal de ruido blanco
gaussiano AWGN (Additive White Gaussian Noise) que tiene la forma dada por (1).
Por tanto se puede concluir que los factores que determinan la capacidad de canal son el
ancho de banda W, la densidad espectral de potencia del ruido N0 (este término se refiere a la
potencia del ruido por unidad de ancho de banda con que contribuyen las componentes de
frecuencia centradas en ω) y la potencia de la señal S, y que existe una relación directa entre S y
W en el sentido en que uno compensa al otro.
Si se piensa en incrementar la potencia de la señal de entrada obviamente incrementa la
capacidad de canal, debido a que cuando se tiene disponible más potencia, es posible elegir un
mayor número de niveles de entrada al canal de forma que estén más apartados y en
consecuencia sea posible enviar más bits de información por transmisión. Sin embargo, el
incremento en la capacidad con el aumento de la potencia es logarítmico y suave. Esto se debe a
que si se transmite con cierto número de niveles de entrada con una separación Δ, para permitir
cierto nivel de inmunidad al ruido y se desea incrementar el número de niveles, es necesario
introducir nuevos niveles con amplitudes mayores que la de los niveles existentes y esto requiere
gran cantidad de potencia. A pesar de esto, la capacidad de canal podría incrementarse en
cualquier valor incrementando la potencia de entrada.
segbitsN
sWC /)1(log2
INSTITUTO POLITECNICO NACIONAL
18
El efecto del ancho de banda del canal, sin embargo, es muy diferente. El incrementar W
tiene dos efectos opuestos. Por un lado, sobre un canal de ancho de banda mayor es posible
transmitir más muestras por segundo y de esta forma incrementar la tasa de transmisión. Por otro
lado, un ancho de banda mayor significa mayor potencia de ruido en el receptor (debido al factor
N0W) y esto degrada el desempeño. Esto se observa en los dos W que se encuentran en la
relación (1) que describe la capacidad de canal.
Para enviar la información a través de un canal de comunicación se usan actualmente
esquemas de codificación tanto en la fuente como en el canal, la codificación del canal tiene
como tarea codificar la información adicionando redundancia al mensaje de tal manera que ante
la presencia de ruido en el canal se pueda detectar y corregir los errores generados por este;
además con la codificación de canal se puede operar con transmisión de baja potencia, realizar
transmisiones a largas distancias, mayor tolerancia a la interferencia, transmitir a altas tasas de
datos y hacer posible usar antenas pequeñas.
Un sistema de codificación de canal además de corregir errores debe ser capaz de corregir
otras fallas que se pueden presentar en la degradación del canal tales como: atenuación de la señal
debido al medio, el ruido térmico, interferencia ínter simbólica, interferencia de múltiple usuario,
la propagación multidireccional, y limitaciones de potencia.
Para el diseño de la codificación y modulación del canal se deben tener en cuenta cuatro
factores:
1. Probabilidad de error (Pe): este factor nos dice que tan confiable es la transmisión, es decir
mide el desempeño de un sistema de comunicación digital.
2. Eficiencia espectral o ancho de banda ( W Rs ): esto mide la eficacia en gasto del ancho de
banda, nos dice cuántos bits por segundo (Rs) pueden ser transmitidos en un ancho de banda dado
W.
3. Tasa de relación señal a ruido (SNR), este factor es necesario para alcanzar el factor de
calidad (QoS) requerido: este parámetro mide cómo el esquema de codificación y modulación
hace uso eficientemente de la potencia disponible.
4. Complejidad: Este factor está estrechamente relacionado con el costo del equipo.
En la codificación de canal se distinguen dos métodos:
Corrección de error hacia atrás BEC (Backward Error Correction) ó ARQ (Automatic
Repeat reQuest). El cual solo emplea detección de errores, si un error es detectado se solicita
retransmisión de todo el mensaje. Mientras este método tiene una baja complejidad en los
esquemas de corrección de errores, se debe disponer de una comunicación dúplex, además la
retransmisión trae como consecuencia retardos a nivel del tiempo, que en aplicaciones críticas
como las de tiempo real no es aconsejable.
Corrección de error hacia delante FEC (Forward error correction). En el transmisor un
codificador de FEC agrega redundancia a los datos en la forma de información de paridad de
INSTITUTO POLITECNICO NACIONAL
19
la siguiente manera: un codificador binario de FEC toma k bits a la vez y produce una salida
(o palabra de código) de n bits, donde n>k.
Mientras que hay 2n secuencias posibles de n bits, solamente hay un subconjunto
pequeño de ellos, 2k, que serán palabras de código válidas. El cociente k/n se llama la tasa de
código.
Entonces en el receptor, un decodificador de FEC puede explotar la redundancia de
una manera tal que un número razonable de los errores de canal pueda ser corregido. Con un
código FEC se logra tolerar más errores de canal, los sistemas codificados pueden permitirse
funcionar con más baja transmisión de potencia, transmitir a largas distancias y tolerar más
interferencia, y hace posible el uso de antenas más pequeñas, y se podría transmitir a una
mayor velocidad para una potencia de transmisión dada. El método FEC solo requiere una
comunicación simplex, este método es muy atractivo en sistemas de comunicación
inalámbrica, ayudando a mejorar la eficiencia de la energía de los sistemas.
En el método de corrección de error hacia delante (FEC) se encuentran los códigos de
corrección de bloques, los códigos convolucionales y los turbo códigos.
Códigos de bloque
Estos códigos hacen la corrección de errores a nivel de bits tomando la información por
bloques, dentro de ellos se encuentran los códigos Hamming, Golay, BCH, ReedSolomon (estos
códigos como trabajan con símbolos de código m-arios, los hace eficientes para corregir errores
de ruido en ráfaga).
Los Turbo códigos
Los turbo códigos son un método de corrección de errores basado en los códigos
convolucionales más intercalación y realimentación. Consiste en una estructura de codificación
concatenada más un algoritmo iterativo, estos fueron introducidos en 1993 por Berrou y Glavieux
en la conferencia internacional de la IEEE en Ginebra Suiza. El esquema propuesto en dicho
trabajo alcanzaba una probabilidad de error de bit de 10-5
usando una tasa de codificación de ½
sobre un canal de ruido blanco gausiano (AWGN) y modulación BPSK (Binary Phase Shift
Keying) con una relación de energía promedio de bit sobre la densidad espectral de potencia de
ruido (Eb/N0 ) de 0.7 dB, lo cual está cercano al límite de Shannon que es 0.1dB.
Códigos Convolucionales
Los códigos convolucionales trabajan serialmente, y tienen memoria lo cual los hace
comparablemente más eficientes que los códigos de bloque, por su simplicidad y capacidad de
corrección. A continuación se presenta una descripción más detallada de éste método de
detección de error FEC que es uno de los temas de estudio incluidos en el presente trabajo.
INSTITUTO POLITECNICO NACIONAL
20
Capitulo IV
CODIGOS CONVOLUCIONALES
Los códigos convolucionales son códigos lineales en los que la operación de codificación
puede ser vista como una operación de filtrado (o convolución). Un codificador convolucional
se puede ver como no más que un conjunto de filtros digitales -sistemas lineales e invariantes en
el tiempo- con la secuencia de código como la salida intermedia de las salidas filtradas. En la
práctica los códigos convolucionales son a menudo preferidos sobre los códigos de bloques,
porque proporcionan excelente rendimiento cuando se comparan con los códigos de bloques de
complejidad de codificación/decodificación comparable.
Los códigos convolucionales se especifican mediante tres parámetros, (n, k, m) donde n es el
número de bits a la salida del codificador, k el número de bits de información a la entrada de éste
y m, el número de registros de memoria. La relación k/n es la relación o tasa de código, tiene el
mismo significado que para los códigos de bloque y proporciona una medida de la eficiencia de
codificación. De manera práctica, k y n suelen variar de 1 a 8, m de 2 a 10 y k/n de 1/8 a 7/8. En
algunas aplicaciones de comunicaciones con vehículos espaciales a distancias muy grandes de la
tierra se han utilizado tasas de código muy bajas, del orden de 1/100 o menores, esto significa
que se usan codificadores convolucionales con hasta 100 bits de salida por cada bit que entra.
Es común que los fabricantes de circuitos integrados especifiquen los parámetros del código
convolucional como (n, k, L) en que L se designa como longitud de constricción y está dada por
L = k(m – 1) L representa el número de bits en la memoria del codificador, previos al bit actual
de entrada, que afectan a la generación del código.
Antes de comenzar con el estudio de los códigos convolucionales es conveniente retomar
algunos conceptos de álgebra necesarios para la comprensión de los mismos.
Para comenzar es preciso recordar que un campo (F, +, ∙ ) es un conjunto de elementos con
dos operaciones, adición y multiplicación. Las operaciones2 de suma y multiplicación satisfacen
ciertos axiomas como el de cerradura, elemento neutro (0 para la suma y 1 para el producto),
elemento inverso (-a para la suma y 1a para el producto, esto para todo a que está en el campo
F ), la asociatividad y la conmutatividad. El campo (F, +, ∙ ) frecuentemente se refiere como F
simplemente y un campo con q elementos se denota como Fq.
Dentro del estudio de los campos se encuentran los campos finitos denotados por GF (pm
) o
GF(q) donde q=pm
, con p un número primo y m está en los números naturales y es mayor que 1.
Estos campos se denotan con GF en honor al matemático francés Evariste Galois (GF significa
― Galois field ‖). Es de particular interés el campo con dos elementos en él, debido a que su
2 Una operación es un mapeo de E X E → E
INSTITUTO POLITECNICO NACIONAL
21
implementación electrónica se puede realizar fácilmente utilizando elementos biestables. Los
campos finitos encuentran gran aplicabilidad en áreas como la conmutación, la codificación, la
criptografía, etc., esto es porque se analizan códigos binarios (con datos representados como
vectores de ―ceros ―y ―unos‖) cuyas operaciones recaen precisamente en éste campo. El campo
de Galois con dos elementos se denota como GF(2)3 y tiene las siguientes tablas de adición y
multiplicación:
O exclusiva
+ 0 1
0 0 1
1 1 0
Los elementos básicos de un codificador convolucional son un registro de desplazamiento,
constituido por m elementos de memoria (flip-flops) y n generadores de señal que, en este caso,
no son otra cosa que sumadores en módulo 2. Estos bloques de memoria están unidos entre sí, de
tal forma que cada pulso de reloj recibido hace avanzar el contenido de cada una de ellas y la
carga en el bloque adyacente correspondiente, en función del sentido de avance elegido. Los
codificadores básicos sólo presentan avance en un sentido, sin embargo hay codificadores
retroalimentados en los cuales el primer módulo de memoria se carga con el valor obtenido del
resultado de la operación EX-OR (O exclusiva)de realimentación. En la figura 3 se tiene un
codificador convolucional simple.
Otro aspecto de suma importancia de los códigos convolucionales es la función de
transferencia. Debido a la convolución4 que el codificador realiza se denomina convolucional, se
tiene j
ki
k
j
k
j
i xhy0
donde x es una secuencia de entrada, yj es una secuencia para la salida j y
hj es la respuesta al impulso para la salida j. Debe recordarse que una respuesta al impulso
genera una función de transferencia a través de la transformada Z, de este modo, se representan
las secuencias (tanto de entrada como de salida) y las funciones de transferencia (entendidas
como la relación entre la entrada y la salida del codificador) como series de potencias en la
variable x (que en ocasiones también es tratada como D). Una secuencia {...m-2, m-1, m0, m1,
m2,...} como elementos de un campo F es representada como una serie de Laurent formal
l
l
l xmm . El conjunto de todas las series de Laurent bajo F es un campo, el cual es
usualmente denotado como F [[x]]. Entonces )(xm F [[x]].
Para múltiples cadenas de entrada se usa un superíndice, así m(1)
(x) representa la primera
cadena de entrada y m(2)
(x) representa la segunda cadena de entrada. Además, es conveniente
reunirlas dentro de un vector simple (columna), como en
3 Para mayor detalle sobre los campos de Galois y los campos en general refiérase a [5] secciones 2.3 y 5.4
4 Una convolución es la interacción de dos funciones para generar otra con características de las originales.
Al convolucionar una función f(t) con la función impulso se obtiene la misma señal f(t). Una
multiplicación de funciones en el tiempo implica una convolución en la frecuencia.
Y lógica
∙ 0 1
0 0 0
1 1 1
INSTITUTO POLITECNICO NACIONAL
22
.F[[x]] (x)m (x)m)( 2(2)(1)xm
..........................................(3)
Un codificador convolucional es típicamente representado como un conjunto de filtros
digitales (binarios) como se ilustra en la figura 3.
m= m1, m2, m3, . . . mi, . . . 1 2 3 . . . . . . k késima etapa del registro
secuencia de entrada de desplazamiento
1 2 . . . . . n sumadores modulo 2
Secuencia código U=U1, U2l U3, . . . Ui, . > .
FIGURA 3: Codificador Convolucional
Ejemplo 1. La figura 4 muestra un ejemplo de un codificador convolucional. (Hay que
recordar que los bloques D representan dispositivos de almacenamiento de 1 bit, o flip flops).
La cadena de entrada mk pasa a través de dos filtros (elementos de memoria compartida)
produciendo dos cadenas de salida. En este codificador se observa que hay k=1 entradas y n=2
salidas, denotadas por 1
kc y 2
kc donde k representa el instante de tiempo en que se genera tal
salida y los superíndices indican el número de salida, esto implica que el codificador es de tasa
R= ½ y además L ( la longitud de restricción o longitud restringida del código también denotada
por ) vale 3.
En base a este codificador se puede construir la siguiente tabla:
TABLA 3: Respuesta al impulso del
codificador del ejemplo 1
mk mk-1 mk-2 c1 c
2
1 0 0 1 1
0 1 0 0 1
0 0 1 1 1
+ + +
INSTITUTO POLITECNICO NACIONAL
23
D
+
+
D
2
kc
1
kc
La tabla 3 se denomina respuesta al impulso debido a que se considera una entrada ―1‖ en un
instante de tiempo con el codificador en el estado ―todos ceros‖ (todos los registros inicializados
en cero) y se hace recorrer ese único ―1‖ a través del codificador hasta que sale del mismo
quedando nuevamente los elementos de memoria en ceros . Esto se hace para verificar las salidas
del codificador con respecto al estado presente en sus registros.
2
)1(
kkk mmc y 21
)2(
kkkk mmmc
Estas dos cadenas son procesadas juntas para producir la cadena codificada ck. Por lo tanto,
para cada bit de entrada, hay dos bits de salida, resultando en un código de tasa R=1/2.
mk mk-1 mk-2
FIGURA 4: Codificador convolucional de razón ½
Para la entrada m= {1, 1, 0, 0, 1, 0,1}, las salidas son
c(1)
= {1, 1,"1. 1, 1, 0, 0, 0, 1}) y c(2)
= {1, 0, 0, 1, 1, 1, 0.`1, 1}
y la cadena intercalada es
c = {11, 10, 10, 11, 11, 01, 00, 01, 11}
donde las comas separan los pires de salidas en tiempos de entrada únicos. Se puede
representar la función de transferencia de la entrada m(x) hacia la salida c (1)
(x) como g (1)
(x)=
1+x2, y la función de transferencia desde m(x) hasta la salida c
(2) (x) como g
(2) (x) = 1+ x +x
2.
La cadena de entrada m = {1, 1, 0, 0, 1, 0, 1} puede ser representada como m(x) = 1+ x +x4+ x
6
G F (2)[[x]]. Las salidas son:
c(1)
(x) = m(x)g1(x) = (1+ x +x4+ x
6)( 1+ x
2) = 1+ x + x
2 + x
3 + x
4+ x
8
c(2)
(x) = m(x)g2(x) = (1+ x +x4+ x
6)( 1+ x + x
2) = 1+ x
3 + x
4+ x
5 + x
7+ x
8
Un código convolucional de tasa R = k / n tiene asociado a él un codificador, una matriz
función de transferencia G(x). Para la tasa de ½ del ejemplo resulta
Ga(x) = [1 + x2 1 + x + x
2 ]
Sin embargo la función de transferencia convolucional no siempre tiene entradas
polinomiales. Por ejemplo:
INSTITUTO POLITECNICO NACIONAL
24
2
2
x 1
x x 1 1)(xGb
D
+
+ D
Cuya implementación en hardware puede quedar como en la figura 5. En [5] se explica con
más detalle la forma de lograr tal implementación.
ck(2)
mk c k
ck(1)
FIGURA 5: Codificador sistemático con R= ½.
Para codificadores con alimentación directa es común que los polinomios de conexión se
indiquen como vectores de números representando la respuesta al impulso del codificador, en
vez de polinomios. La matriz función de transferencia G(x)= [1+ x2, 1+ x + x
2] es representada
por los vectores
g(1)
= [101] y g(2)
= [111]
Estos son con frecuencia expresados en forma octal (en las tablas de códigos), donde los tríos
de bits son representados usando los números enteros correspondientes 0 a 7. De esta forma el
codificador es representado usando g(1)
= 5 y g(2)
= 7. Debido a la facilidad de manejo se usan
codificadores con alimentación directa con los vectores especificados en notación octal para
implementar la simulación de la codificación convolucional en MATLAB.
Dado que el codificador convolucional tiene memoria finita, es posible representarlo con un
diagrama de transición de estados. En este diagrama, cada estado del codificador se representa
mediante un bloque y las transiciones entre estados son las líneas que conectan cada bloque.
Sobre cada línea están especificadas tanto las entradas que causan la transición como las salidas
correspondientes. El número de líneas que salen de cada estado es igual al número de entradas
posibles al codificador de ese estado, la cual es igual a 2k. El número de líneas que van hacia
cada estado es igual al número de estados del cual es posible una transición hacia ese estado.
Este es igual al número de combinaciones de bits posibles que dejan el codificador cuando k
bits entran al codificador. Este número es otra vez 2k. En la figura 5(b) se puede ver el
diagrama de transición de estados del codificador convolucional del ejemplo1.
Otra forma de describir códigos convolucionales es el diagrama trellis que sirve además para
representar las transiciones de estados mientras transcurre el tiempo. El diagrama trellis se
INSTITUTO POLITECNICO NACIONAL
25
obtiene al especificar los estados en el eje vertical y extendiendo éste a lo largo del eje del
tiempo (el eje horizontal). Posteriormente las transiciones entre estados se representan con una
recta que une esos estados sobre los dos ejes verticales correspondientes a los dos instantes de
tiempo. Para una mayor claridad de lo anterior en las figuras 6(c) y 6(d) se observan una etapa y
tres etapas respectivamente, del diagrama trellis correspondiente al codificador del ejemplo
anterior.
Para un codificador básico G(x) con elementos polinomiales se tiene que ))(deg(max xg ijj
i
denota el máximo grado de los polinomios en la fila i de G(x). Este es el número máximo de
elementos de memoria necesarios para almacenar la porción de realización del codificador
correspondiente a la entrada i, es la longitud de restricción del codificador (también denotada
con L).
Ejemplo 2. Considerando ahora el codificador convolucional (2, 1, 2), n=2, k=1 y m=2, o
sea que se trata de un codificador de tasa ½ y 2 elementos de memoria o longitud de restricción
L=3, 1 0, 1, g ,)1 ,1 ,1( (1)
0
)0(
0g , o lo que es igual G= [111, 101], teniendo una entrada mj = (0
1 0 1 0 0 0) y se desea hallar la salida dada por el codificador (desde el estado inicial ‗todos
ceros‘) de acuerdo a tal entrada.
Para poder resolver este problema se utiliza la ecuación de codificación convolucional que
es:
m
i
iijj Gmx0
...........................................(4)
Por tanto se tiene que de acuerdo a (1)
0
)0(
0 gy g resulta G0= [1 1], G1= [1 0] y G2=([1 1],
entonces x0= m0G0 m-1G1 m-2G2 y como el estado inicial es (u-1, u-2, . . .) =(0, 0, 0,…),
x0 =0 [1 1] 0[1 0] 0[1 1] = [0 0],
x1=1 [1 1] 0[1 0] 0[1 1] = [1 1]
x2=0 [3 1] 1[1 0] 0[1 1] = [1 0]
x3=1 [1 1] 0[1 0] 1[1 1] = [0 0]
x4=0 [1 1] 1[1 0] 0[1 1] = [1 0]
x5=0 [1 1] 0[1 0] 1[1 1] = [1 1]
x6=0 [1 1] 0[1 0] 0[1 1] = [0 0].
INSTITUTO POLITECNICO NACIONAL
26
00 0/00 0/00 0/00
1/11 1/11 1/11
10 0/11 0/11 0/11
1/00 1/00 1/00
01
0/010/01
0/01
11
0/10 0/100/10
1/011/01 1/01
1/10 1/101/10
t t+1 t+3 t+4
Estado
(bms,bMs)0/00
1/11
0/11
1/00
0/10
1/01
0/01
0000
10
01
11
10
01
11
1/10
(a) Codificador (b) Diagrama de estados
Estado Siguiente (bms,bMs)
5 estdo
(c) Una etapa de la trellis (d) Tres etapas de la trellis
FIGURA 6: Codificador, diagrama de estado y diagrama trellis de G(x) = [1+ x2, 1+ x + x
2]
Reuniendo todos estos pares de bits en una salida tenemos: Uj=[00, 11, 10, 00, 10, 11, 00, 00] y
como se puede ver en negritas se han puesto los bits de entrada al codificador que corresponden
la mj.
En la práctica es frecuente utilizar una implementación del codificador convolucional que
ayuda a mejorar el desempeño del sistema y optimiza la utilización de hardware. Esta realización
se denomina realización con retroalimentación o ―feedback realization‖. Una manera fácil de
pasar un codificador a esta representación es expresar, primero, la matriz generadora en su forma
sistemática.
5 (bms,bMs) significa (bit menos significativo, bit Más significativo)
D
+
+
D
INSTITUTO POLITECNICO NACIONAL
27
)1(
Ix
)2(
Ix
)1(n
Ix
)1(
Iy
)2(
Iy
)1(n
Iy
)(
0,1
na)(
0,2
na)(
1,1
n
na )(
1,2
na )(
0,1
n
na)(
1,1
na
+ + +
)(
,1
n
mna )(
,2
n
ma )(
,1
n
ma
mq1q 0q
D D)(n
Iy
Dado un codificador G(x) es posible pasarlo a su forma sistemática si se encuentra una
submatriz T(x) de rango completo y de dimensiones k x k , de manera que G‘(x) = T(x)-1
G(x},
entonces G‘(x) es de la forma G‘(x)=[Ik,k , Pk,n-k(x)], donde Pk,n-k(x) es, por lo general, una matriz
racional. La salida que produce Pk,n-k que es la parte no sistemática de la matriz generadora se
denomina como matriz de verificación de paridad de la secuencia codificada y suele representarse
como H(x) = (h0(x), h1x),…,hγ(x)), donde ν ≥ γ ≥0. Esta matriz de verificación de paridad
cumple la condición G(x)HT(x)=0, donde el superíndice T representa la matriz transpuesta, y
sirve para que, como ayuda del circuito general para un codificador sistemático con
retroalimentación y (n, n-1,m) de la figura 7, se pueda llegar a una representación más eficiente
del codificador. Es por ello que se utiliza ampliamente en TCM, el circuito está basado en la
matriz generadora sistemática del codificador que es de la forma
)()(100
)()(010
)()(001
)(
)(
1
)(
2
)(
1
xQxA
xQxA
xQxA
xG
n
n
n
n
sis
.........................................(5)
donde
mmn
mi
n
i
n
i
n
i xxnixaxaaxA m10
)(
,
)(
1,
)(
0,
)( qqq Q(x)y 11 para )( ,
utilizando le notación manejada en [10].
INSTITUTO POLITECNICO NACIONAL
28
+
++
+D
D
a(1)
(x)
a(2)(x)
c(1)
(x)
c(2)
(x)
c(3)(x)
FIGURA 7: Codificador convolucional sistemático (n, n-1,m) con retroalimentación tomado de [9].
Ejemplo 3. Supóngase que se tiene el codificador R=2/3 de la figura 8 que tiene cuatro
estados y la matriz generadora
xx
xxxG
111
11)(
FIGURA 8: Codificador convolucional de cuatro estados y R= 2/3.
Si se toma T(x) de las primeras dos columnas de G(x) resulta
11
1)(
x
xxxT se sabe que la inversa de una matriz se calcula con
Tdet
T )(
adjxT y la
adjunta de T(x) se obtiene a base de una matriz B(x) de cofactores de T(x) de manera que se tiene
xx
xxB
1
11)( y
xx
xxBT
11
1)( = adj T y se tiene que det T= 1+x + x + x
2 = 1+ x
2
(debe recordarse que se está trabajando en operaciones módulo 2 por lo que x+x =0), finalmente
xx
xx
x
x
x
xx
x
xxGxxx
x
xxT
111
11
1
1
1
111
1
)()(T (x)G' como 11
1
1
1)(
22
221-
2
1
al efectuar el producto resulta que
INSTITUTO POLITECNICO NACIONAL
29
+ ++D D
a(1)(x)
a(2)(x)
c(1)(x)
c(2)(x)
c(3)
(x)
2
2
2
2
110
1
101
)('
x
xxx
xx
xG es la representación sistemática del codificador en cuestión. El
circuito correspondiente a este codificador es el de la figura 9.
FIGURA 9: Codificador convolucional sistemático (3, 2, 2) con retroalimentación.
INSTITUTO POLITECNICO NACIONAL
30
Añade el estado cero
Una secuencia forzada
(Opcional)
Codificador
Convolucional
R= k/n
Mapeo de señal Decodificador
IV.1.- DECODIFICACION CONVOLUCIONAL: ALGORITMO DE
VITERBI
Se han manejado varios algoritmos para decodificar los códigos convolucionales, uno de ellos
y el más empleado es el algoritmo de Viterbi que fue propuesto por Andrew Viterbi en 1967, éste
es un Estimador de Secuencia de Máxima Probabilidad (MLSE por sus siglas en inglés). Una
variación del algoritmo de Viterbi es el algoritmo de Viterbi de salida suave (SOVA), que
proporciona no sólo símbolos decodificados sino además un indicativo de la confiabilidad de los
valores decodificados. Otro algoritmo es el decodificador Máximo a Posteriori (MAP)
comúnmente referido como algoritmo BCJR el cual calcula probabilidades de los bits
decodificados.
Para ubicar la etapa que decodificación se tiene la figura 10 en la que la base de tiempo se
denota con t e indica los tiempos a los cuales son distinguidos los estados en el diagrama de
estados; hay entonces k bits de entrada al codificador y n bits de salida a cada paso de tiempo t.
Como se puede observar se cuenta con un mensaje de datos de entrada que puede tener una
secuencia añadida que permita manejar el estado a cero al final de cada bloque de entrada. Al
tiempo t hay k bits de entrada denotados como k. ..., 2, 1, i , xo (i)
t
)(i
tm El conjunto de k bits de
entrada se de notan como ) ..., , ,( )()2()1( k
tttt mmmm y los que cuentan con la secuencia agregada
son xt. Por lo que una secuencia con L bloques es denotada como x:
x ].,...,,[ 110 Lxxx
Los bits codificados correspondientes se denotan como n. ..., 2, 1, i ,)(i
tc La secuencia
completa codificada es c = [c0, c1, …, cL-1].
Canal
m x c a r
n
FIGURA 10: Etapas de procesamiento de un código convolucional.
INSTITUTO POLITECNICO NACIONAL
31
).(log)(log1
0
tt
L
t
xrfxrf
La secuencia codificada de salida es mapeada en como una secuencia de M símbolos
seleccionados de una constelación de señales con Q puntos en algún espacio de señales., con Q
= 2p. Por facilidad se asumirá p = 1 así que L = M. Las señales mapeadas se denotan como ,)(i
ta
i = 1,2,…, n y la secuencia completa es a = {a0, a1, …, aL-1} estos símbolos at pasan a través del
canal, que en este caso se considera un canal AWGN, resultando los símbolos recibidos )(i
tr , i
= 1, 2, …, n, o un bloque rt. Como anteriormente se describió, el ruido AWGN tiene una
distribución de voltaje en el tiempo con características que pueden ser descritas por una
distribución estadística Gaussiana o normal, como por ejemplo la campana de Gauss. Esta
distribución de voltaje tiene media cero y una desviación estándar que es función de la relación
señal a ruido (RSR) de la señal recibida. Si se considera que el nivel de la señal está dado,
entonces si la RSR es alta, la desviación estándar del ruido es pequeña, y viceversa.
La ventaja de la decodificación con el algoritmo de Viterbi es que tiene un determinado
tiempo de decodificación, por ello es muy usado en la implementación de hardware. Una
desventaja podría ser que los requerimientos computacionales crecen exponencialmente con
respecto a la longitud de restricción y por ello en la práctica se utilizan longitudes por debajo de
K=9.
Revisando la notación utilizada para la decodificación tenemos que el estado al tiempo t en
la trellis del codificador es denotado como ψt. Los estados son representados con valores enteros
en el rango de 0 ≤ ψt ≥ 2ν, donde ν es la longitud de restricción del codificador. (Se utiliza 2
ν
puesto que se trata de codificadores binarios.)
Como se puede ver en la figura 11 la entrada que causa la transición del estado ψt = p al
estado ψt+1 = q es denotada como x(p,q)
. (Si la trellis tiene diferentes estructuras en distintos
tiempos, se usa la notación ),( qp
tx . La secuencia de bits código de salida como resultado de esta
transición de estados es c(p,q)
y los símbolos mapeados son a(p,q)
.
El algoritmo de Viterbi es esencialmente un algoritmo de trayectoria más corta, puesto que
se trata de calcular la trayectoria más corta a través de la trellis asociada con el código.
Para una entrada xt la salida ct depende del estado del codificador ψt, el cual en cambio
depende de las entradas previas. Esta dependencia entre entradas implica que las decisiones
óptimas no se puedan basar en una función de probabilidad para un solo tiempo f(rt|xt). En lugar
de eso, las decisiones óptimas se basan en una entera secuencia de símbolos recibida. La
función de probabilidad a ser maximizada es f(r|x), donde
1
0
110
1
0
1
0 ).(),..., ,()()(L
t
ttL
LL xrfrrrfxrfxrf .....................................(6)
Puesto que se esta manejando un canal sin memoria se puede tener la igualdad anterior. Esto
es conveniente para manejar la función log de probabilidad,
...........................................(7)
INSTITUTO POLITECNICO NACIONAL
32
).ˆ,()()ˆ,()ˆ,()( ),(1
0
1
qp
it
t
i
ttttiitt xrpMxrxrqM
Tiempo t Tiempo t+1
),(),( qpqp ax
Ψt = p
Ψt+1 = q
rt
FIGURA 11: Notación asociada con la transición de estados.
Tomando en cuenta que una secuencia 110
1
0ˆ ..., ,ˆ ,ˆˆ
t
t xxxx deja al codificador en el estado
ψt = p al tiempo t, esta secuencia determina una trayectoria (o secuencia de estados) a través de
la trellis del código. Entonces t t .,...,, 10
La función log de probabilidad para esta secuencia es .)x̂f(r log )x̂f(r log1-t
0i
ii
1-t
0
1-t
0 ......(8)
Sea )ˆ(log 1
0
1
01
tt
t xrfM la métrica de trayectoria del camino Пt a través de la trellis
definida por la secuencia x1
0
t y que termina en el estado p. El signo negativo indica que se
pretende minimizar la métrica de la trayectoria (para maximizar la probabilidad).
Si ahora )ˆ(log)ˆ,( ttttt xrfxr denota la probabilidad negativa de una entrada que hace
que al tiempo t+1 el estado sea ψt-1= q. Se puede usar de manera equivalente
,)ˆ(log)ˆ,( ),( bxrfaxr qp
tttt para cualquier a<0. La cantidad )ˆ,( ttt xr es llamada
métrica de rama del codificador. Puesto que x̂ mueve la trellis del estado p al tiempo t estado
q al tiempo t+1, se puede escribir )ˆ,( ttt xr como ).ˆ,( ),( qp
tt xr Entonces
.....................(9)
Esto es, la métrica del camino (o de trayectoria) a lo largo de una trayectoria hacia el estado
q al tiempo t se obtiene sumando la métrica del camino hasta el estado p al tiempo t-1 a la
métrica de rama para una entrada la cual mueve el codificador del estado p al estado q. (Si no
hay tal entrada entonces la métrica de rama es ∞).
Ahora se ha llegado a un punto medular del algoritmo de Viterbi, el momento en el que dos
caminos confluyen o se unen. Supóngase que mt-1(p1) es la métrica de trayectoria de un camino
INSTITUTO POLITECNICO NACIONAL
33
)}ˆ,()(M,)ˆ,()(min{)(),(
21-t
),(
1121 qp
tt
qp
tttt xrpxrpMqM
que termina en el estado p1 al tiempo t y Mt-1(p2) es la métrica de trayectoria del camino que
finaliza en el estado p2 al tiempo t. Considérese además que ambos estados están conectados al
estado q al tiempo t+1, como se sugiere en la figura 12, las métricas de camino resultantes en el
estado q son ).ˆ,()(My )ˆ,()(),(
21-t
),(
1121 qp
tt
qp
ttt xrpxrpM
El Principio que gobierna el algoritmo de Viterbi es: Para obtener la trayectoria más corta a
través de la trellis, la trayectoria al estado q debe ser lo más corta posible. Entonces, cuando dos
o más trayectorias se juntan, la trayectoria con la métrica de trayectoria más corta es retenida
mientras que la otra trayectoria ya no se toma en cuenta. Esto es.
y la trayectoria con la mínima longitud se convierte en la trayectoria al estado q. Este camino es
llamado trayectoria sobreviviente.
Trayectoria de la trellis
que la deja en el estado
ψt = P1 Tiempo t Tiempo t+1
)ˆ,()()(),(
111 qp
tttt xrpMqMo
)ˆ,()()(),(
212 qp
tttt xrpMqM
)( 11 pM t
)( 21 pM t
)ˆ,(),( 1 qp
tt xr
)ˆ,(),( 2 qp
tt xr
Trayectoria de la trellis
que la deja en el estado
ψt =P2 FIGURA 12: La etapa Viterbi: Selección de la trayectoria con la mejor métrica
Puesto que no se sabe en el tiempo t<L a través de cuales estados pasa la trayectoria final, se
busca la trayectoria de cada estado en cada tiempo. El algoritmo de Viterbi mantiene la
siguiente información:
Una métrica de camino para cada estado en el tiempo t.
Un camino para cada estado en el tiempo t.
Finalmente es posible resumir el algoritmo de Viterbi en 4 sencillos puntos:
1.- Para cada estado q al tiempo t +1, encontrar la métrica de trayectoria para cada camino
hacia q por medio de la suma de la métrica de camino Mt-1(p) de cada trayectoria sobreviviente
del estado p en el tiempo t a la métrica de rama ).ˆ,( ),( qp
tt xr
INSTITUTO POLITECNICO NACIONAL
34
2.- La trayectoria sobreviviente hacia q se seleccionada como la trayectoria al estado q que
tiene la métrica de trayectoria más pequeña.
3.- Almacenar la trayectoria y la métrica de trayectoria para cada estado q.
4.- Incrementar t y repetir hasta completar.
Es preciso apuntar que en el caso en que haya dos trayectorias que se unen y que además
tienen la misma métrica lo que se hace es una selección aleatoria sin que esto pueda tener
repercusiones negativas en la probabilidad.
Para que quede más claro este algoritmo hay que ver el siguiente ejemplo:
Ejemplo 4: Se tiene el codificador G =[x2+1 x
2 + x +1] del ejemplo 1, cuya realización y
diagrama trellis se observan en la figura 6, pasando los datos a través de un Canal Binario
Simétrico (BSC, por sus siglas en inglés). Donde la secuencia de datos m =[1, 1, 0, 0, 1, 0, 1, 0,
…] = [m0, m1, m2, m3, m4, m5, m6, m7, …] se aplica al codificador, la secuencia de bits de salida
e c = [11, 10, 10, 11, 11, 01, 00, 01, …] que corresponde a c = [c0, c1, c2, c3, c4, c5, c6, c7, …].
Por facilidad se considera que los datos pasan por un BSC, en tal caso los datos mapeados
son iguales a la salida del codificador at = ct. La secuencia de salida y los estados
correspondientes se muestran en la tabla 4, donde ψ0 = 0 es el estado inicial.
Tabla 4: salidas correspondientes al
codificador del ejemplo 3
t Salida
mk
Salida
ct
Estado
ψt+1
0 1 11 1
1 1 10 3
2 0 10 2
3 0 11 0
4 1 11 1
5 0 01 2
6 1 00 1
7 0 01 2
La secuencia de estados en la trellis para este codificador se muestra en la figura 13 donde la
línea oscura representa la secuencia de estados correspondiente a esta secuencia de salidas.
INSTITUTO POLITECNICO NACIONAL
35
0
1
2
3
t = 0 t = 1 t = 5t = 4t = 3t = 2 t = 7t = 6
FIGURA 13: Trayectoria a través de la trellis que corresponde a la secuencia en cuestión
La secuencia codificada de salida pasa a través de un canal, produciendo con ello la
secuencia recibida r = [11 10 00 10 11 01 08 01…] = [r0, r1, r2, r3, r4, r5, r6, r7,…]. Los bits que
están subrayados son resultado del ruido existente en el canal.
Entonces entrando en materia con el algoritmo, es necesario ir paso por paso en cada instante
de tiempo t:
En t = 0; se sabe que es el estado inicial y la secuencia recibida es r1=11, se calcula la
métrica para cada estado en el tiempo t = 1 encontrando la distancia (de Hamming) entre r0 y la
posible secuencia transmitida c0, a lo largo de las ramas de este primer estado de la trellis. Como
se sabe que el estado 0 es el estado inicial, hay sólo dos trayectorias, con métricas de trayectoria
de 2 y 0, como se muestra a continuación:
0
1
2
3t = 0 t = 1
r0=11
2
0
Para t= 1 la secuencia recibida es r1= 10. Nuevamente cada trayectoria al tiempo t=1
únicamente es extendida sumando la métrica de trayectoria a cada métrica de rama.
0
1
2
3
t = 0 t = 1 t = 2
r1=10
3
3
2
0
t = 2: la secuencia recibida es r2= 00. Cada trayectoria al tiempo t = 2 es ampliada, sumando
la métrica de trayectoria a cada métrica de rama de cada camino.
INSTITUTO POLITECNICO NACIONAL
36
0
1
2
3
t = 0 t = 1 t = 3t = 2
3
3
2
0
3
41
4
2
5
4
1
r2=00
Ahora hay múltiples caminos hacia cada nodo en el tiempo t =3. Se selecciona la trayectoria
hacia cada nodo con la mejor métrica y se eliminan las otras trayectorias. Esto genera el
siguiente diagrama:
0
1
2
3
t = 0 t = 1 t = 3t = 2
1
2
1
r2=00
3
t = 3: La secuencia recibida es r3= 10. Cada camino al tiempo t = 3 es extendido, sumando
la métrica de trayectoria a cada métrica de rama de cada trayectoria.
0
1
2
3
t = 0 t = 1 t = 3t = 2
1
2
1
r3=10
34
2
1
4
2
4
2
3
t = 4
Nuevamente se selecciona la mejor trayectoria de cada estado. Es preciso notar que durante
la selección de las mejores trayectorias, algunas trayectorias en algunos estados en tiempos
anteriores no tienen sucesores; estas trayectorias huérfanas ahora se eliminarán del diagrama.
0
1
2
3
t = 0 t = 1 t = 3t = 2
r3=10
2
1
2
2
t = 4
INSTITUTO POLITECNICO NACIONAL
37
En t = 4: La secuencia recibida es r4= 11. Cada trayectoria al tiempo t = 4 se amplía, como se
ha venido haciendo en pasos anteriores.
0
1
2
3
t = 0 t = 1 t = 5t = 4t = 3t = 2
2
1
2
2 4
3
3
3
3
2
1
3
r4=11
En este caso se observa que hay dos trayectorias en el estado 3 que tienen la misma métrica
de trayectoria, de igual manera se tiene el caso en el estado 2. Dado que una de las dos
trayectorias tiene que seleccionarse, dicha selección se puede hacer arbitrariamente. Después de
la selección y eliminación de las trayectorias huérfanas resulta:
t = 0 t = 1 t = 5t = 4t = 3t = 2
2
1
2
2r4=11
3
3
2
1
En t = 5: La secuencia recibida es r5= 01
0
1
2
3
t = 0 t = 1 t = 5t = 4t = 3t = 2 t = 6
4
4
5
2
2
4
3
2
3
3
2
1
r5=01
Después de la selección y el depurado
INSTITUTO POLITECNICO NACIONAL
38
0
1
2
3
t = 0 t = 1 t = 5t = 4t = 3t = 2 t = 6
r5=01
3
2
2
2
t = 6: La secuencia recibida es r6= 00.
0
1
2
3
t = 0 t = 1 t = 5t = 4t = 3t = 2 t = 7t = 6
r6=00
3
2
2
2 2
3
4
3
2
4
4
4
Después de la selección y el depurado
0
1
2
3
t = 0 t = 1 t = 5t = 4t = 3t = 2 t = 7t = 6
r6=00
3
3
2
2
En t = 7: La secuencia recibida es r7= 01.
INSTITUTO POLITECNICO NACIONAL
39
0
1
2
3
t = 0 t = 1 t = 5t = 4t = 3t = 2 t = 7t = 6 t = 8
3
3
2
23
4
5
2
4
3
3
3
r7=01
Después de la selección y el depurado se tiene:
0
1
2
3
t = 0 t = 1 t = 5t = 4t = 3t = 2 t = 7t = 6 t = 8
3
3
2
2
3
2
3
3
r7=01
La decodificación termina al final de la transmisión (los 16 bits de datos recibidos) mediante
la selección de estado tras estado del que tuvo el menor costo, atravesando hacia atrás a lo largo
del camino también indicado en el comienzo de la trellis, después atravesando hacia delante a lo
largo del mejor camino, leyendo los bits de entrada y decodificando los bits de salida a lo largo
de la trayectoria. Esto se muestra en seguida con una línea continua, donde se indican los pares
entrada/salida de bits.
0
1
2
3
t = 0 t = 1 t = 5t = 4t = 3t = 2 t = 7t = 6 t = 8
3
2
3
3
r7=01
1/11
1/00
0/01
1/11
0/10
0/00
1/100/01
Hay que notar que la trayectoria a través de la trellis es la misma que la de la figura 12 y
que la secuencia de bits de entrada recibida es la misma que la secuencia original. Entonces en
la secuencia de 16 bits, dos bits de error han sido corregidos.
INSTITUTO POLITECNICO NACIONAL
40
IV.1.1 Decodificacion dura y suave.
Los datos provenientes del canal deben suministrarse al decodificador, y pueden ser
manejados con dos tipos de decodificación, designados como dura o firme (hard) y suave (soft).
En términos muy simples, puede decirse que la decodificación dura se da cuando el demodulador
entrega al decodificador de canal la información tal como la detecta sin intentar efectuar ninguna
corrección, dejando esa tarea al decodificador de canal. Esto significa que la señal recibida del
canal es cuantizada con sólo dos niveles. Ahora suponiendo que los datos se introdujeron a un
canal con AWGN6 y que en la detección se toma en cuenta la distancia Euclidiana y la métrica
de rama, entonces se trata de una decodificación suave. Haciendo una comparación entre la
decodificación con decisión suave usando modulación BPSK bajo un canal AWGN y la
decodificación con decisión dura bajo un canal BSC, en los cuales los valores recibidos son
convertidos a valores binarios con una probabilidad de error pc = 02 NEQ b , se ha
determinado que la decodificación con decisión suave proporciona una ganancia de 2 a 3 dB
sobre la decodificación con decisión dura.
Para comprender mejor lo anterior se debe considerar la señal recibida del canal como la
variable aleatoria y. En la Figura 14 se representa la probabilidad de la señal recibida
condicionado al hecho de haber enviado un ‗0‘ f (y |‘0‘) y la probabilidad al hecho de haber
enviado un ‗1‘ f (y |‘1‘) cuando se introduce ruido AWGN al canal.
El demodulador aplicado a un decodificador con decisión suave cuantifica una graduación
entre los dos niveles de señal del emisor ‗0‘ y ‗1‘. Así, la decisión de si un símbolo es ‗1‘ o ‗0‘ se
suaviza (decisión suave). En la figura, el decodificador Viterbi interpretará el símbolo ‗000‘
como un ‗0‘ con máxima probabilidad y el símbolo ‗111‘ como un ‗1‘ con máxima probabilidad.
En medio se encuentran el resto de símbolos.
El ejemplo de la sección anterior corresponde al algoritmo de Viterbi con decisión dura. El
proceso del cálculo de las métricas de rama en el algoritmo de Viterbi con decisión suave es un
tanto diferente, por ejemplo: si para una rama en particular de la trellis las etiquetas conocidas
(las salidas del codificador) son ν1 y ν2 como se observa en la figura 15, y las entradas
correspondientes del decodificador son r1 y r2 , entonces la métrica de rama se calcula como
sigue 2
1
2)(j
jjrbm .......................................................(10)
Ejemplo 5: para resumir los principales pasos del algoritmo de Viterbi con decisión suave se
considerará el codificador convolucional con polinomios generadores (en notación octal)
[133,171] con tasa R= ½ y, por tanto con una K=7. Se asume que la salida del codificador es +/-
1 y un canal con AWGN. Por simplicidad, las entradas del decodificador r2i y r2i+1 en la ventana i
se consideran valores continuos. Para 0 ≤ i K-2 la trellis crece pero como se ve en la figura 15
se considerará la transición más común. A cada nodo de la trellis se asigna una métrica de camino
continua y para el nodo p está dada por:
6 Recuérdese que éste término se refiere al Ruido Blanco Aditivo Gaussiano (Additive White Gaussian Noise).
INSTITUTO POLITECNICO NACIONAL
41
]][1[
]][1[
picb
pipm
n]][[
]][[
nicb
nipm
]][1[
]][1[
qicb
qipm
]32][1[
]32][1[
cb
pm
sobrante
aTrayectori
2
212
2
12 )()(]][[]][1[ ii rrnipmpipm
f(y| ‗0‘) f(y| ‗1‘)
Dec. suave
Dec. dura
FIGURA 14: Decisiones suave y dura del decodificador.
i=0 1 2 5 6 7
16
r2i,r2i+1 i i+1
16 ui=0 p=2
n
32
uy=1
48 q=2
n+32
FIGURA 15: Diagrama trellis para el código [133,171] R= ½ y K=7.
Aquí, ν1 y ν2 son las etiquetas para el caso ui=0 debido al estado actual n. Además de las dos
métricas de rama se agrega la información necesaria para realizar el traceback tomando en
cuenta la trayectoria con mejor probabilidad.
En la figura 16 se muestra una transición de estados para el ejemplo que se maneja. Para la
rama pn una métrica de rama temporal se calcula como:
mp= 2
212
2
12 )()(]][[ ii rrpipm y de manera similar para mq. Asumiendo, por ejemplo,
que mp < mq entonces pmnipm ]][1[ ; cb[i+1][n]=p.
INSTITUTO POLITECNICO NACIONAL
42
]][[
]][[
Wi
Wi
SWicb
SWipm
Finalmente, considerando la decodificación con traceback y suponiendo que se quiere la
decodificación del bit de información ui dada una ventana de decodificación de W etapas, como
en la figura 17. El estado Si+W correspondiente a la métrica de trayectoria más pequeña no es
necesaria en la trayectoria del decodificador, pero es un buen punto de inicio para el trazo hacia
atrás (traceback). Se realiza el trazo W etapas hacia atrás usando el algoritmo
S[j] = cb [j+1] [Si+1], con j = i + W -1, ..., i+1, i
p=2n
i etapa,i i+1
p r2i,r2i+1 0≤ n < 32 n
mp q=2n+1
n
mq p=2(n-32)
Q 31< n < 64 n
p=2(n-32)+1
FIGURA 16: Trellis repetitiva para el codificador [133,171] con decodificación con el algoritmo de Viterbi
W etapas
i i+1 i+W
Si+W
Si
Si+W-1
ui
Si+1
FIGURA 17: Decodificación hacia atrás para ui
Proporcionando W = 5K o más, entonces los estados Si y Si+1 identificarán con mayor
precisión la métrica de camino para la etapa correspondiente, también tiene más probabilidad de
identificar la trayectoria usada por el codificador para la etapa i. En el algoritmo se siguen
algunas reglas simples, por ejemplo ui = 0 si Si+1< Si.
Ejemplo 6: Finalmente, para terminar de comprender el algoritmo tómese en cuenta un
ejemplo real en el que se tiene parte de la trellis de un codificador convolucional de tasa R= 1/2.
Las etiquetas de cada rama corresponden al par de símbolos codificados ν1, ν2 y también se
]][[
]][[
picb
pipm
]][[
]][[
qicb
qipm
]][1[
]][1[
nicb
nipm
INSTITUTO POLITECNICO NACIONAL
43
observan las métricas de trayectoria en cada nodo, la métrica de trayectoria por nodo se
encuentra como sigue:
9.5
i
-1,1
r
10.6 1,1
p
1,-1
j
1,1 1,-1
q k
8.2 12.1
-1,-1
s
Entrada suave 0.9,-0.5 1.3,0.6
FIGURA 18: Ilustración de una decodificación con decisión suave.
Para el nodo j se tiene:
mp =10.6+(0.9-1)2
+ (-0.5-(-1))2 = 10.86
mq =8.2+h0.9-1)2
+ (-0.5-1)2 = 10.46
Así que la métrica para el nodo j es 10.46. La métrica de camino para el nodo r es
mj =10.46+(1.3-1)2
+ (0.2-1)2 = 11.19
mi =9.5+(1.3-(-1))2
+ )0.2-1)2 = 15.43
De modo que la métrica para el nodo r es 11.19. Finalmente, para el nodo s se tiene
mj =10.6+(1.3-1)2
+ (0.2-(-1))2= 11.99
Por lo tanto, aparentemente el trazo hacia atrás sería siguiendo la trayectoria z → j → q.
Con respecto a códigos convolucionales y algoritmo de Viterbi es suficiente con lo tratado
hasta el momento, sólo resta incluir las simulaciones y los resultados arrojados por ellas. Antes,
es preciso incluir información relacionada con la Codificación trellis para saber el porqué de la
importancia de los códigos convolucionales.
INSTITUTO POLITECNICO NACIONAL
44
1~
~
m
mtasa
ma
1~ma
ma ~
1a
my
1~my
my ~
1y
0y
2m+1 señales
Codificador
Convolucional
de k bits de
memoria
m+1 bits
de salida
m bits de
datos
a=1,0, ...
Mapeo de
señales
Capitulo V
MODULACIÓN CODIFICADA TRELLIS (TCM)
La modulación codificada trellis es un método simple para diseñar esquemas de modulación
que puedan lograr un buen desempeño general. Este esquema de modulación-codificación se basa
FIGURA19: Codificador/ modulador de Ungerboeck[1 y 2].
en el concepto de mapeo por particionamiento de conjuntos desarrollado por Ungerboeck (1982)
[1]. Este mapeo de conjuntos puede utilizarse conjuntamente con ambos tipos de códigos,
convolucionales y de bloques, pero debido a la existencia de un algoritmo de decodificación con
decisión suave simple y óptimo (el algoritmo de Viterbi), se ha empleado mayoritariamente con
convolucionales. Cuando se utiliza con códigos convolucionales, el esquema de modulación
resultante se conoce como modulación codificada trellis. El codificador/modulador propuesto
por Ungerboeck es el que se ilustra en la figura 19.
En la modulación codificada se logra una ganancia de codificación a través del incremento
del tamaño de la constelación de la señal, en lugar de incrementar la tasa de símbolos como en los
esquemas FEC convencionales. El incremento del tamaño de la constelación genera la
redundancia necesaria para llevar a cabo la FEC. La figura 20 ilustra el concepto de este tipo de
modulación. El modulador o mapper de la figura 20(a) se modifica en la figura 20(b) de modo
que k bits de entrada generan una constelación de 2k+1
símbolos en lugar de 2k. Entonces
duplicando el tamaño de la constelación podemos utilizar un código convolucional de tasa (n-
1/n). Lo importante aquí es que un símbolo de salida todavía es generado por cada k bits de
INSTITUTO POLITECNICO NACIONAL
45
Codificador
convolucional Mapper
datos, de modo que la tasa y el ancho de banda no se modifican, aún habiendo agregado el FEC.
Es importante resaltar que los sistemas TCM las funciones de codificación y mapeo se diseñan
en conjunto como se indica en la figura 20(b), esto con la intención de reducir la complejidad del
decodificador.
En la figura 21 se tiene de manera práctica la forma en que operan los esquemas de
modulación TCM, como se puede ver en los tres casos se mantiene constante la tasa de
transmisión pero se va incrementando el número de puntos en la constelación sin alterar la
energía de la señal, así que la distancia euclidiana entre símbolos disminuye. Además la razón
de bits aumenta pero la tasa de símbolos permanece igual.
Para comenzar con el estudio de TCM hay que repasar el concepto de constelación de
señales. Una constelación de señales S es un subconjunto de los reales o al plano 2 (algunas
veces considerado como el plano complejo). La constelación unidimensional se usa en la
modulación por desplazamiento de amplitud (amplitude shift keying ASK), y la constelación
unidimensional con dos puntos bE se llama frecuentemente modulación binaria por
desplazamiento de fase (binary phase-shift keying BPSK). Una constelación de dos dimensiones
con todos los puntos sobre un círculo se conoce como constelación PSK (phase shift keying). La
constelación con frecuencia se expresa en términos del número de puntos, tales como 4-PSK, 8-
PSK, o 16-PSK.
La constelación 4-PSK también se conoce como QPSK. En la figura 22 se observan estas
constelaciones. En la figura se tiene que la energía de las constelaciones es Es. La distancia
mínima entre los puntos de señal se denota como d0. La constelación con bidimensional con
puntos en una cuadricula se denomina modulación de amplitud en cuadratura (QAM, por sus
siglas en inglés).
K bits/símbolo M=2k símbolos
(a)
codificador/modulador
K bits/símbolo n bits/símbolo M=2n símbolos
( k= n - 1)
n
nR
1 diseñado simultáneamente
(b)
FIGURA 20: (a) Modulador básico; (b) modulación codificada.
Modulador
(mapper)
INSTITUTO POLITECNICO NACIONAL
46
Codif.
Convol..
R=½
MODULADOR
4PSK
M=22 = 4
Codif.
Convol..
R= 2/3
MODULADOR
8PSK
M=23 = 8
Codif.
Convol..
R= 3/4
MODULADOR
16QAM
M=24= 16
K= 1 Entra BPSK
2 bits símbolos
QPSK
K= 2 Entra QPSK
3 bits
Símbolos 8PSK
K= 3 Entra 8PSK 4
bits
Símbolos 16QAM
400 simb/s
400 simb/s
1200 bps
1600 bps
400 simb/s
400 simb/s
400 bps
800 bps
1200 bps
400 simb/s 400 simb/s
800 bps
.2
5
23234232822416
1
2
0
2
0
2
0
2
0
2
0
2
0
2
0
d
ddddddEs
FIGURA 21: Ejemplo práctico del funcionamiento de TCM.
La densidad espectral de una constelación es el número de bits portados por cada símbolo.
Asumiendo que los bits son idénticamente distribuidos, la energía promedio por símbolo Es, es el
promedio de el cuadrado de las distancias de los puntos de la constelación al origen. Por ejemplo,
para la constelación 16- QAM con distancia mínima d0,
La energía promedio por bit está dada por sb EE1
. Además para una constelación
cuadrada con M puntos resulta que .6
1 2
0dM
Es
Los elementos de un punto (a1, a2) S 2 de una constelación, representan las amplitudes
de dos funciones base, las cuales se denotan como φ1(t) y φ2(t), y se consideran ortonormales
(es decir, que tienen energía unitaria y son ortogonales entre sí ). Además un corrimiento de estas
funciones por el periodo de los símbolos (T) sigue siendo ortogonal,
0)()( dtkTtt ii con i=1,2,…, para todos los enteros k 0.
INSTITUTO POLITECNICO NACIONAL
47
sEsE
BPSK 4-PSK (QPSK)
do
do
- sE sE sE
8 – PSK 16 – PSK
do
do
FIGURA 22: Constelaciones PSK
La señal transmitida s(t) se obtiene al yuxtaponer una secuencia de señales base escaladas,
cada una con su propia amplitud representada por el símbolo transmitido
k
kk kTtakTtats ).()()( 2,21,1
Finalmente, en el receptor la señal recibida r(t) es otra vez proyectada sobre el plano de la
constelación de señales por un conjunto de filtros. En cada intervalo de símbolos, cuando se ha
recibido el punto (r1, r2), el detector de máxima probabilidad (ML por sus siglas en inglés)
determina el punto de la constelación más cercano a (r1, r2). Es importante mencionar que los
esquemas TCM más sencillos (cuatro estados) pueden mejorar en 3dB la ganancia total del
sistema, mientras que los más complejos pueden sobrepasar los 6dB.
Otro concepto de vital importancia para el estudio de los esquemas TCM es el de
particionamiento de conjuntos que consiste en la subdivisión de la constelación más grande en
pequeños subconjuntos lo que da como resultado que la distancia euclidiana d0 entre los puntos
de los subconjuntos de cada nivel es substancialmente incrementada. El particionamiento será
repetido k+1 veces hasta que la distancia dk+1 es igual o más grande que la distancia libre
deseada para el esquema TCM que se esté diseñando. Los conjuntos obtenidos finalmente,
etiquetados como D0, D1, D2, ..., D7, en el caso de la figura 23 serán llamados subconjuntos. La
forma de etiquetar las ramas en el diagrama de particionamiento para los k+1 bits codificados 0,,1
n
k
n cc , de acuerdo a la figura 23 genera la etiqueta que se denota como cn =0,,1
n
k
n cc para
cada subconjunto. La etiqueta determina la posición del subconjunto en el diagrama.
Esta forma de etiquetar da paso a una importante propiedad. Si las etiquetas de dos
subconjuntos coinciden en las pasadas q posiciones, pero no en el bit q
nc , entonces las señales de
INSTITUTO POLITECNICO NACIONAL
48
los dos subconjuntos son elementos del mismo subconjunto en el nivel q del diagrama de
particionamiento; por lo tanto las señales tienen al menos la distancia dq.
En la trellis, las señales de los subconjuntos se han asociado con las 22k transiciones
paralelas. La distancia libre de un código TCM se puede expresar entonces como:
dfree= Min[dk1+1,dfree(k1)],
donde dk1+1 es la distancia mínima entre transiciones paralelas y dfree(k1) denota la distancia
mínima entre trayectorias no paralelas del diagrama trellis. En el caso especial en el que k1=k2
los subconjuntos sólo contienen una señal y por tanto no hay transiciones paralelas en el
diagrama (más adelante se aclarara el porqué de este hecho).
En la figura 24 se observa el diagrama de bloques de un codificador TCM en donde un
bloque de longitud k se divide en dos sub bloques de longitudes k1 y k2 respectivamente. Los
primeros k1 bits se aplican a un codificador binario (N1, k1). La salida del codificador consiste en
n1 bits. Esos bits se utilizan para elegir una de las 12n particiones de la constelación. Esto significa
que la constelación ha sido particionada en 12n subconjuntos. Después de que la constelación ha
sido elegida, los k2 bits restantes se utilizan para elegir uno de los puntos de la constelación
elegida. Esto significa que existen 22k puntos en cada partición. En consecuencia, la partición que
se utiliza contiene 12n subconjuntos y cada subconjunto contiene 22
k puntos. Esto determina una
regla para determinar el tamaño de la constelación requerido y cuántos pasos de particionamiento
deben seguirse sobre la constelación.
Ungerboeck (1982) [2] demostró que eligiendo n1 = k1+1 y k2=1 y utilizando códigos
convolucionales simples es posible diseñar esquemas de modulación codificados que logran una
ganancia total de codificación entre 3 y 6 dB. Es preciso mencionar que se habla de códigos
convolucionales simples en referencia a lo que se denomina como codificadores básicos mismos
que ya se han estudiado en el capitulo IV del presente trabajo.
INSTITUTO POLITECNICO NACIONAL
49
0
nc = 0 0
nc = 1
1
nc = 0 1
nc = 1 1
nc = 0 1
nc = 1
2
nc = 0 2
nc = 1 2
nc = 0 2
nc = 1 2
nc = 0 2
nc = 1 2
nc = 0 2
nc = 1
FIGURA 23: Particionamiento de conjuntos de una constelación 8-PSK.
INSTITUTO POLITECNICO NACIONAL
50
Subconjunto
seleccionado
FIGURA 24: Diagrama de bloques de un codificador TCM.
Ejemplo 7: En la figura 25 se tiene un esquema TCM con k1= 1, n1=2 y k2=1. La
constelación tiene 212kn =2
3 = 8 puntos, que están particionados en 12
n = 22 =4 subconjuntos cada
uno de los cuales contiene 22k = 2
1=2 puntos. La constelación elegida aquí es 8-PSK y se
particiona como se ilustra en la figura 23. El codificador convolucional que se usa tiene una tasa
R= ½. La longitud de restricción se puede elegir de manera que se obtenga la ganancia de
codificación deseada. Como se verá más adelante, en los resultados de las simulaciones, para
longitudes de restricción mayores se tiene una mayor ganancia al precio de incrementar la
complejidad del codificador/decodificador además de los cálculos computacionales se
incrementan considerablemente. En este ejemplo se tienen una longitud de restricción de 3. En la
figura 25(b) se incluye una etapa del diagrama trellis.
c1 (c1, c2, c3) = 000
Entradas
c2
No codificada. c3
(a) (b) (c)
FIGURA 25: Esquema TCM: a) Codificador convolucional; b) Trellis de 4 estados; c) mapeo de los bits
codificados (c1, c2, c3) en los puntos de señal.
Razón
k1/( k1+1)
Codificador
Convolucional
Selección de
subconjunto
de la
constelación
Selección de
un punto del
subconjunto
1
nm2
nm
1k
nm
0
nc1
nc
1n
nc
11k
nm
21k
nm
21 kk
nm
INSTITUTO POLITECNICO NACIONAL
51
Como se puede ver en el diagrama trellis, hay una particularidad en relación con la trellis
común de un codificador convolucional, se trata de que aquí se tienen dos caminos que conectan
dos estados. Esto se debe a que existe un bit de más, k2=1, que selecciona un punto en cada
partición. En realidad, los dos caminos paralelos que conectan dos estados corresponden a una
partición, y cualquier camino simple corresponde a un punto en la partición.
A continuación se incluyen unas reglas que se deben seguir para conseguir un buen
desempeño de los esquemas TCM:
1.- Las transiciones en paralelo corresponden a puntos de señal en una única partición en la
etapa siguiente del particionamiento. En el ejemplo anterior, C0 = {D0, D4}, C2 = {D2, D6},
C1={D1, D5}, y C3 = {D3, D7} corresponden a transiciones en paralelo. Esos puntos están
separados por una distancia Euclidiana máxima de d2= sE2 .
2.- Las transiciones que se originan y vuelven a cualquier estado se asignan en la siguiente
etapa del particionamiento que tiene una partición pariente simple en la etapa precedente. En el
ejemplo anterior esas particiones serían B0 = {C0, C2} Y B1 = {C1, C3}. La distancia máxima en
este caso es d1= sE2 .
3.- Los puntos de señal deberían ocurrir con igual frecuencia.
El funcionamiento de la trellis de la figura 25(b) se basa en el concepto antes mencionado, la
distancia libre (dfree), para determinar esta distancia se consideran primero las transiciones en
paralelo ya que suelen tener la menor dfree, en nuestro caso tenemos que esta distancia vale
sEd 22 . En la figura 26 se muestra también otro posible camino con dfree, sin embargo, la
distancia euclidiana entre esos dos caminos es sEddd 58.42 2
1
2
0
2 .
FIGURA 26: Determinación de la distancia mínima en la trellis.
INSTITUTO POLITECNICO NACIONAL
52
Es evidente que este valor es mayor que la distancia de los caminos paralelos por lo que para
este código se elige una dfree= sEd 22 .
Ahora la pregunta es: ¿La distancia euclidiana elegida es la que realmente proporciona el
mejor desempeño para el esquema TCM que se maneja?, para poder responder a esta pregunta se
debe considerar la cantidad
DCd
d
E
E
free
free
s
s
2
codificada,
2
codificar sin,
codificada,
codificar sin, ...............................(11)
que se conoce como ganancia de codificación del código. En esta fórmula dfree, sin codificar es la
distancia mínima entre los puntos de la constelación original y dfree, codificada es la distancia mínima
que se tiene en la codificación. El término codificada,
codificar sin,
s
s
E
EC se conoce como factor de
expansión de la constelación y cuenta la energía promedio de las constelaciones – a mayor
energía promedio en la constelación de codificación se reduce la ganancia de codificación. El
factor 2
codificada,
2
codificar sin,
free
free
d
dD se llama factor de distancia incrementada. En este caso vale 1 por
que en las constelaciones PSK se requiere la misma energía por símbolo. Con frecuencia la
ganancia de codificación γ se expresa en decibeles (dB) de la siguiente forma: γdB = 10log10(γ).
Tomando en cuenta lo anterior y considerando que la distancia entre la trayectoria C0 y C0,
donde en un caso se envía el símbolo D0 y en otro caso se envía D4. Entonces la distancia es:
d2
= (D0, D4)= sd 42
2
la cual es más pequeña que la distancia que se encontró anteriormente. De esta manera, la
ganancia de codificación para este ejemplo es dBs
s 32log1022
4. De esta manera es
posible demostrar que este esquema de codificación proporciona la mejor ganancia de
codificación para un código TCM de cuatro estados sin incrementar el ancho de banda. No hay
que pasar por alto para lograr esta ganancia se incrementa la complejidad de el
codificador/decodificador.
Las trellis de más de 4 estados producen mayores ganancias de codificación. Como demostró
Ungerboeck con varias simulaciones por computadora los esquemas con 8, 16, 32, 128 y 256
estados se pueden lograr ganancias de codificación en el rango de 3.6 a 5.75 dB. Los resultados
de las investigaciones de Ungerboeck se encuentran en las publicaciones de la IEEE citadas en
[1] y [2] ordenados en diversas tablas que contienen el desempeño de una amplia gama de
códigos. De dichas tablas hay una que se refiere al desempeño del esquema TCM 8-PSK. La
tabla 5 incluye los resultados obtenidos por Ungerboeck (puesto que fue tomada de [2]). Hay que
observar que en ella se representan las ganancias de código correspondientes a este esquema de
modulación así como los coeficientes del polinomio de verificación de paridad de los
codificadores convolucionales correspondientes.
INSTITUTO POLITECNICO NACIONAL
53
Tabla 5: Resultados obtenidos y publicados por ungerboeck [2]
Códigos para modulación en fase
8-PSK (Δi, 0 ≤ i ≤ 2 ) = 2sen (π/8), 2 ,2;
16-PSK (Δi, 0 ≤ i ≤ 3 ) = 2sen (π/16), 2sen (π/8), 2 ,2;
Número
de
estados
Coeficientes de chequeo de paridad
Ganancia de código asintótica
G8PSK/4PSK G16PSK/8PSK
Nfree
2 m~ h2 h
1 h
0 2
0
2 /freed (m=2) (m=3) (m→ )
4 1 − 2 5 4.000* 3.01 − 1
8 2 04 02 11 4.586 3.60 − 2
16 2 16 04 23 5.172 4.13 − ≈2.3
32 2 34 16 45 5.758 4.59 − 4
64 2 066 030 103 6.343 5.01 − ≈ 5.3
128 2 122 054 277 6.586 5.17 − ≈ 0.5
256 2 130 072 435 7.515 5.75 − ≈ 1.5
4 1 − 2 5 1.324 − 3.54 4
8 1 − 04 13 1.476 − 4.01 4
16 1 − 04 23 1.628 − 4.44 8
32 1 − 10 45 1.910 − 5.13 8
64 1 − 024 103 2.000* − 5.33 2
128 1 − 024 203 2.000* − 5.33 2
256 2 374 176 427 2.085 − 5.51 ≈ 8.0
¿Cómo se pueden expresar los códigos de Ungerboeck presentados en la tabla 5 en forma no
retroalimentada?. En seguida se describe la forma de lograr esto.
Ejemplo 8: De la tabla 5 se toma el código 8-PSK de ocho estados, esto es H(x) = (11, 2, 4)8,
o H(x)= (1+x3, x, x
2), y para no diferir de la notación empleada por Ungerboeck en la figura 19
se manejará en adelante ci=yi como la salida generada por el codificador, de modo que el
polinomio de verificación de paridad será
decir es , )(,, )2(
2
)1(
1
)0(
3
)0()2(
2
)1(
1
)0(
3
)0()2()1()0(
iiiiiiii
T
iii ccccccccxHccc
En la expresión los superíndices indican la salida del codificador (entrada al modulador)
mientras los subíndices representan los retrasos que deben recibir dichas entradas de modo que
esta ecuación de verificación de paridad genera la implementación del codificador de ocho
estados 8-PSK que se presenta en la figura 25.
Entonces, para encontrar la forma no retroalimentada del codificador se debe recordar que,
como se trata de un codificador con dos entradas y tres salidas (R=2/3), la matriz generadora
tendrá la forma
INSTITUTO POLITECNICO NACIONAL
54
D+D D+
c2
c1
a2
a1
Mapper
8-PSK
)()()(
)()()()(
232221
131211
xGxGxG
xGxGxGxG .
Es posible notar, en la figura 27 que a1 se almacena en un elemento de memoria y a2 lo está
en dos, así que cualquier polinomio de la fila 1 de la matriz generadora del codificador en
cuestión tendrá como exponente máximo 1 y en la segunda fila el máximo exponente será 2.
Como se sabe G(x)HT(x)=0 de manera que en la primera fila de G(x) se tiene
0)()()1)(( 2
1312
3
11 xxGxxGxxG los valores que satisfacen la ecuación anterior podrían
ser G11(x)= 0, G12(x)= x, G13(x)= 1. Para la segunda fila aplicando nuevamente G(x)HT(x)=0
resulta
0)()()1)(( 2
2322
3
21 xxGxxGxxG
Cuya solución puede ser G21(x)= x, G22(x)= 1, G13(x)= x2.
FIGURA 27: Implementación de TCM 8-PSK con codificador retroalimentado
Así que la matriz generadora es:
21
10)(
xx
xxG
Y la implementación en hardware de esta matriz se muestra en la figura 28.
INSTITUTO POLITECNICO NACIONAL
55
Mapper
8-PSK
DD
D
+
+
a2
a1
c2
c1
c0
D+D+
c2
c1
a2
a1
c0
FIGURA 28: Diagrama no retroalimentado del esquema 8-PSK.
Ejemplo 9: De la misma tabla se tiene que H(x)= (5, 2, 4)8, es decir H(x)= (1+x2, x, x
2), de
modo que )(,, )2(
2
)1(
1
)0(
2
)0()2(
2
)1(
1
)0(
2
)0()2()1()0(
iiiiiiii
T
iii ccccccccxHccc .
Esta ecuación genera el codificador que se ilustra en la figura 29 que bien puede
complementarse con un esquema 8-PSK. De manera similar al ejemplo anterior se obtiene la
matriz generadora utilizando el criterio G(x)HT(x)=0, por lo tanto
0)()()1)(( 2
1312
2
11 xxGxxGxxG
FIGURA 29: Codificador de cuatro estados utilizado en esquemas TCM 8-PSK.
Arroja como soluciones G11(x)= 0, G12(x)= 1, G13(x)= x., porque se observa a1 sólo se
almacena en un elemento de memoria. Y
0)()()1)(( 2
2322
2
21 xxGxxGxxG
Se cumple con G21(x)= x, G22(x)= x, G13(x)= 1+ x2.
Así que la matriz generadora resultante es
INSTITUTO POLITECNICO NACIONAL
56
DD
D
+
+
a2
a1
c2
c1
c0
21
10)(
xxx
xxG
cuyo diagrama es el de la figura 30.
Existen sistemas de comunicaciones en donde es de vital importancia mantener un ancho de
banda reducido como las comunicaciones digitales en canales telefónicos, las comunicaciones
espaciales, los módems para líneas telefónicas y los reproductores de discos compactos. Es en
estas áreas donde ha tenido gran auge el uso de la Modulación Codificada Trellis.
FIGURA 30: Forma no retroalimentada del codificador de la figura 29.
INSTITUTO POLITECNICO NACIONAL
57
Capitulo VI
SIMULACIÓN Y RESULTADOS
A la par del desarrollo de los sistemas de comunicaciones han venido evolucionando las
computadoras permitiendo con ello hacer experimentos de campo y evaluar el desempeño de
tales sistemas sin la necesidad de realizar prototipos. A través del uso de los lenguajes de
simulación se pueden crear funciones de propósito general que son utilizadas con frecuencia en
los sistemas de comunicación facilitando así la simulación pues se pueden realizar programas
que funcionen de manera modular. Para realizar las simulaciones se ha elegido MATLAB,
producido por la compañía Math Works, porque se trata de uno de los lenguajes computacionales
de simulación más populares del mundo, es un lenguaje de cálculos matriciales (matrix
laboratory, de aquí su nombre) [11] que es de fácil manejo. En esta sección se presentan los
diagramas de flujo correspondientes a los programas de pruebas así como los resultados
obtenidos con ellos, los códigos fuente se encuentran en la parte códigos fuente de los anexos.
Las simulaciones realizadas están enfocadas a realizar la codificación/modulación, el pase
por un canal AWGN, la demodulación/decodificación y la comparación de resultados para
obtener la tasa de error BER, en la figura 31 se presenta el esquema general de simulación para
tener gráficamente presente lo que se está realizando.
FIGURA 31: Esquema general de simulaciones.
Generador de datos
Codificador
Canal
Modulador
Demodulador Decodificador Datos recuperados
Estadísticas
INSTITUTO POLITECNICO NACIONAL
58
VI.1.- Codificación/decodificación convolucional
Para comenzar se incluye un programa en turbo C que está disponible en [20], se trata de un
tutorial sobre códigos convolucionales y el algoritmo de viterbi, el programa hace la codificación
(de tasa R=1/2), simulación del paso de los datos codificados a través de un canal con AWGN y
decodificación usando el algoritmo de Viterbi con decisión suave, de una cadena de datos que el
usuario mismo introduce junto con las características básicas del codificador convolucional como
son: el numero de entradas, salidas y elementos de memoria (para poder determinar la longitud de
restricción del codificador). En la figura 32 se tiene el diagrama de flujo general de este
programa y en seguida se observa la pantalla de resultados que arroja la ejecución del programa.
INSTITUTO POLITECNICO NACIONAL
59
INICIO
Decodificador
de Viterbi
Canal con
Ruido AWGN
Codificador
convolucional
Impresión
de
resultados
Long. de restricción L,
Long de la secuencia
de entrada, RSR, G.
Otro
codificador ?
FIN
NO
SI
FIGURA 32: Diagrama de flujo de un codificador/decodificador convolucional
INSTITUTO POLITECNICO NACIONAL
60
Es preciso mencionar que el programa contenía funciones declaradas de manera externa pero
por facilidad fueron incluidas en el código fuente y sólo se usan funciones de pase por valor y
pase por referencia.
En primer lugar se introducen de manera manual las características bajo las cuales se realizará
la simulación, la longitud de la secuencia de entrada, la longitud de restricción (número de
elementos de memoria), la relación señal a ruido (para ajustar la parte de decodificación) y los
polinomios generadores correspondientes al codificador convolucional a simular, todas ellas son
solicitadas al principio. La secuencia de entrada, que es una cadena de ceros y unos, se almacena
en un vector que pasa directamente a una función que se encargará de realizar la codificación
convolucional, para generar una nueva cadena con una longitud de más del doble que la
inicialmente introducida, esto debido a que se trata de un codificador ½ y por los bits de
redundancia. En seguida los datos se pasan a una función que realiza la cuantificación de los
datos y les agrega el ruido gaussiano. Una vez codificados y ya con el ruido propio del canal, los
datos pasan a una función que realiza la decodificación mediante el algoritmo de Viterbi
guardando los datos recuperados en un nuevo vector que, según la pantalla de resultados
mostrada en la figura 33, son idénticos a los introducidos al principio de la ejecución del
programa. Cabe aclarar que este programa podría ser útil para calcular la tasa de error de bit
(BER, por sus siglas en inglés) haciéndolo recursivo pero por facilidad se decidió recurrir a
MATLAB para este fin. Este programa en C se incluyó para demostrar que es posible realizar
simulaciones de los sistemas de comunicaciones actuales en distintos lenguajes de programación
para ver su desempeño sin tener que implementarlos físicamente.
VI.2.- Simulación en MATLAB de códigos convolucionales con diferente
longitud de restricción.
El desempeño de la codificación convolucional depende en gran medida de la longitud de
restricción del codificador y del tipo de cuantización en la decodificación, como se señala en [5],
para medir el desempeño del proceso de codificación/decodificación se utiliza lo que
anteriormente se mencionó, la BER. Además de esto en las simulaciones existe un factor más que
puede hacer variar los resultados, se trata de la longitud de la ventana de decodificación, para
evitar complicar más el proceso se decidió fijar el valor de éste parámetro al valor utilizado con
mayor frecuencia, 32 bits.
Considerando que se maneja un codificador de tasa R =½ con una decodificación con
decisión dura entonces se procede a medir el desempeño del codificador con respecto a la
longitud de restricción. Para lograr esto se creó el siguiente programa en MATLAB que simula el
proceso de codificación, el paso por un canal AWGN y la decodificación con el método de
Viterbi con decisión dura para diferentes valores de longitud de restricción y, por tanto diferentes
polinomios generadores, éstos últimos se listan en la tabla 6 en notación polinomial y en
notación octal:
El diagrama de flujo correspondiente a este primer programa en MATLAB es el de la figura
34.
INSTITUTO POLITECNICO NACIONAL
61
FIGURA 33: Imagen de la pantalla que presenta el programa que simula la
codificación convolucional y la decodificación con el algoritmo de Viterbi de una secuencia de datos.
INSTITUTO POLITECNICO NACIONAL
62
TABLA 6: Diferentes longitudes de restricción usadas para la simulación
k g1(x) g2(x) g1(x)oct g2(x)oct dfree
3 1+x2 1+x+x
2 5 7 5
4 1+x+x3 1+x+x
2+x
3 15 17 6
5 1+x3+x
4 1+x+x
2+x
4 23 35 7
6 1+x2+x
4+x
5 1+x+x
2+x
3+x
5 53 75 8
7 1+x2 +x
3+x
5+x
6 1+x+x
2+x
3+x
6 133 171 10
8 1+x2 +x
5+x
6+x
7 1+x+x
2+x
3+x
4+x
7 247 371 10
INSTITUTO POLITECNICO NACIONAL
63
INICIO
Canal con Ruido AWGN
Codificador convolucional
Conta= long
Eb/NodB ?
FIN
SI
NO
Eb/No_dB, long
restricción L, G
Poly2trellis
For elementos de Eb/
No_dB # conta
Poly2trellis
decisión
Decodificador decisión
dura
Decodificador decisión
suave
Calcula BER
Conta= conta +1
FIGURA 34: Diagrama de flujo de un codificador/ decodificador con ambos tipos de decodificación
INSTITUTO POLITECNICO NACIONAL
64
El programa consiste en una función que se encarga de realizar la simulación en base a los
siguientes parámetros:
1.- EbN0_dB. Es el o los valores de la Relación Señal a Ruido en decibeles (RSR dB).
2.- K. La longitud de restricción deseada para el codificador (en el desarrollo del trabajo
también se ha manejado como L y ν).
3.- codegen. Los valores de las secuencias generadoras introducidas como una matriz en
notación octal, por ejemplo codegen = [5 7].
4.- decisión. El tipo de decisión con el que se desea realizar la decodificación, éste es un
dato de tipo cadena de caracteres ya sea ‗dura‘ para decisión dura o ‗suave‘ para decisión
suave.
En seguida se presenta la forma en que debe ser llamada la función.
%%%%%%%%%%%%%%%%%%%%% INICIO %%%%%%%%%%%%%%%%%%%%%%%%%%
k=3
EbN0_dB1=3;
codegen=[5 7];
ratio=completo2b(EbN0_dB1,k,codegen,'suave');
% 'dura' es el tipo de decisión, puede ser 'suave'
%%%%%%%%%%%%%%%%%%%%%% FIN %%%%%%%%%%%%%%%%%%%%%%%%%%%
Es preciso recordar que en MATLAB las líneas de comentario se inician con % o con %%.
En la sección de códigos fuente de los anexos a se incluye la declaración de la función y algunos
comentarios para orientar al lector sobre el funcionamiento del mismo.
En las figuras 35, 36 y 37, se observan las gráficas de los resultados obtenidos mediante la
ejecución del programa. Se trata de la BER vs. la Relación señal a Ruido en decibeles. Si se
comparan los datos de la gráfica de la figura 35 con los presentados en [5] se puede ver la gran
similitud entre ellos, de manera que se confirma el comportamiento en el desempeño de un
codificador convolucional al variar la longitud de restricción.
Esta primera etapa de prueba fue superada, sin embargo había todavía que verificar que para
estos mismos codificadores y en las mismas condiciones excepto que bajo una decodificación
con decisión suave se lograra (según lo descrito anteriormente) esa ganancia de 2 dB en los
resultados. Para este caso se usaron 3 bits de cuantización M=23= 8 niveles de cuantización para
realizar la decodificación. Aquí se encontró un ligero problema pues primero, aplicando los
umbrales de decisión directamente sobre los datos obtenidos del canal, se obtuvieron los
resultados que se presentan en la figura 36. Aquí hubo partes en las que tal ganancia no se
alcanzaba, sobre todo para k=7 por lo que se tomó la decisión de aplicar un concepto que se
maneja en una de las fuentes consultadas, realizar una cuantización adaptativa.
INSTITUTO POLITECNICO NACIONAL
65
Se trata de normalizar los datos obtenidos del canal en base a la Eb/N0 dB que se maneja, y
por tanto de la varianza. De esta forma los datos que se encuentran muy dispersos se acercan
más hacia los umbrales de decisión y con ello se reduciría considerablemente la incidencia de
error. Como última alternativa se procedió a agregar este concepto a la parte de decodificación
del programa logrando con ello conseguir la ganancia deseada en todos los
codificadores/decodificadores simulados. Los resultados se pueden observar en la figura 37.
Es importante hacer mención que, debido a la gran cantidad de cálculos y operaciones de
cómputo que implica simular todos los codificadores incluidos en la tabla A usando
decodificación con decisión suave, se optó por realizar sólo los que en [5] se proponen.
FIGURA 35: BER como función de la RSR para un codificador R= ½ con una ventana de 32 bits y
decodificación con el algoritmo de Viterbi usando decisión dura.
INSTITUTO POLITECNICO NACIONAL
66
FIGURA 36: BER como función de la RSR para un codificador R= ½ con una ventana de 32 bits y
decodificación con el algoritmo de Viterbi usando decisión suave con 8 niveles de cuantización.
INSTITUTO POLITECNICO NACIONAL
67
FIGURA 37: Decisión suave adaptada según la RSR que se proporciona como argumento.
VI.3.- Simulación del canal AWGN en MATLAB
Sólo resta mencionar que para verificar el buen comportamiento del canal AWGN que se está
manejando se comparó con el comportamiento teórico de un canal no codificado con la
aplicación de la función Q(sqrt(2*EbN0)) que genera datos con distribución gaussiana7.
Teniendo como resultado las gráficas presentadas en la figura 38, de esta manera se puede
comprobar que el canal AWGN que se introdujo en las señales codificadas anteriormente es
altamente confiable pues se mantiene muy cerca de los valores teóricos esperados.
VI.4.- Simulaciones basadas en bloques simulink
Otra poderosa herramienta de simulación mucho más fácil de utilizar es simulink de
MATLAB, que utiliza bloques para crear modelos de simulación a los cuales se les pueden
cambiar determinados parámetros e inmediatamente ver los resultados, además es posible
modificar algunas herramientas y propiedades de los bloques desde el editor de MATLAB de
modo que, como MATLAB y simulink se encuentran de manera integrada, se pueden analizar,
simular y revisar los modelos desde otro ambiente en cualquier punto.
7 En los anexos se encuentra el código fuente de ésta función Q.
INSTITUTO POLITECNICO NACIONAL
68
FIGURA 38: Resultados teóricos vs. canal AWGN simulado.
Es precisamente esta conjugación del editor de MATLAB con simulink la que se utilizó para
simular nuevamente el desempeño de los codificadores convolucionales con el objetivo de
comprobar la eficacia de esta herramienta de MATLAB así como contar con alternativas de
simulación más flexibles. La razón de hacer esto es porque en la versión 7 de este software se
pueden encontrar unos bloques de modulación y demodulación TCM que serán de gran ayuda
para el desarrollo del presente trabajo. En seguida se explica los pasos seguidos para realizar la
simulación y los resultados a los que se llegó.
Se trata de simular la creación de datos que se codificarán, pasarán por un modulador BPSK,
se enviarán a un canal con ruido blanco aditivo Gaussiano (AWGN), se demodularán, serán
decodificados utilizando el algoritmo de viterbi con decisión suave y con decisión dura. En lo
que respecta a decisión suave es preciso aclarar que en la ayuda de MATLAB se encuentra un
ejemplo que realiza todo el proceso. En este caso se trabajó en implementar el código que
permitiera, desde el editor, modificar los parámetros que fueran necesarios de ciertos bloques y
ejecutar los bloques de manera iterativa. En la figura 39 se observa el conjunto de bloques que
integran el modelo.
INSTITUTO POLITECNICO NACIONAL
69
FIGURA 39: Modelo Simulink utilizado para simular un sistema de codificación convolucional con
decodificación basada en el algoritmo de Viterbi con decisión suave.
Ahora se analizarán uno por uno cada bloque del modelo:
* Bernoulli Random Binary Generador: Es un generador de números binarios aleatorios que
utiliza la distribución de Bernoulli. La distribución de Bernoulli con parámetro p genera un
―cero‖ con una probabilidad p y un ―uno‖ con una probabilidad 1-p. La distribución de
Bernoulli tiene una media de 1-p y una varianza de p(1-p). La probabilidad de un parámetro
cero se da por p y éste puede ser un número entre cero y uno.
El cuadro de diálogo de este bloque así como los valores fijados a cada uno se ilustra en la
figura 40.
Como ya se dijo, el campo Probability of a zero determina la probabilidad con la que
ocurrirá un cero lógico.
Initial seed: Es el valor inicial del generador de números aleatorios y puede ser un vector de
igual longitud que el parámetro probabilidad de cero o un escalar, de preferencia se debe elegir el
valor de salida de la función randseed.
Sample time: Es el periodo de cada vector basado en muestras o de cada fila o matriz basada
en estructuras.
Frame-based outputs: Determina si la salida es basada en muestras o en estructuras.
Samples per frame: Es el número de muestras en cada columna de una señal de salida
basada en muestras.
INSTITUTO POLITECNICO NACIONAL
70
FIGURA 40: Parámetros del generador de datos de Bernoulli
* Convolutional Encoder: Es el bloque encargado de realizar la codificación convolucional de
los datos aleatorios generados. Los parámetros en este bloque son:
Trellis structure: utiliza la función poly2trellis para definir al codificador convolucional.
Reset: Sirve para resetear los registros del estado todos ceros del codificador durante el curso
de la simulación. None nunca resetea los registros.
* BPSK Modulator: Realiza una modulación binaria por desplazamiento de fase. La salida es
una representación banda base de la señal modulada.
Phase offset (rad): La fase del punto cero de la constelación manejada.
Samples per symbol: Es el número de muestras de salida que el bloque produce por cada bit
de entrada.
* AWGN Channel: Agrega ruido blanco Gaussiano a la señal de entrada sea real o
compleja. Cuando la señal es real, el bloque agrega ruido Gaussiano real y produce una señal
real como salida. Cuando la señal de entrada es compleja, el bloque agrega ruido Gaussiano
complejo y produce una señal compleja como salida. Este bloque toma su tiempo de muestreo
de la señal de entrada, utiliza un bloque de fuente aleatoria para generar el ruido.
INSTITUTO POLITECNICO NACIONAL
71
FIGURA 41: Parámetros del bloque codificador convolucional
El parámetro Initial seed inicializa el generador de ruido. Este parámetro puede ser un escalar o
un vector cuya longitud es igual al número de canales en la señal de entrada.
FIGURA 42: Parámetros correspondientes al modulador BPSK.
Initial seed: Es el valor inicial del generador de ruido Gaussiano.
Mode: Es la forma en como se determinará la variación del ruido: en función a la energía
de bit (Eb/No), La energía por símbolo (Es/No), la relación señal a ruido (SNR), todas ellas
en decibeles, variación por máscara o por puerto.
INSTITUTO POLITECNICO NACIONAL
72
FIGURA 43: Parámetros del bloque del canal AWGN.
Number of bits per symbol: Especifica el número de bits en cada símbolo de entrada.
Este campo sólo aparece si se trabaja en el modo Eb/No.
Input signal power (watts): Es la potencia media cuadrática de los símbolos de entrada
(si el modo es Eb/No o Es/No) o de las muestras de entrada (si el modo es SNR), en watts.
Este campo sólo aparece si el modo es puesto en Eb/No, Es/No, o SNR.
Symbol period (s): Es la duración, en segundos, de un símbolo de canal. Este campo sólo
aparece cuando el modo que se trabaja es Eb/No o Es/No.
Variance: Es la varianza del AWGN. Este campo aparece sólo en el modo variación por
máscara.
Aquí es preciso aclarar que como el canal se fijó en el modo Es/No y las gráficas están dadas
con respecto a Eb/No se consideró una expresión que relaciona a ambos parámetros.
El bloque Soft-Output BPSK Demodulator en realidad es un subsistema, es decir, dentro
de él hay más bloques cuyos parámetros son modificables, en la figura 44 se encuentran los
bloques que integran este subsistema.
INSTITUTO POLITECNICO NACIONAL
73
FIGURA 44: Bloques integrantes del subsistema demodulador.
En este subsistema lo que se hace es remodular los datos y transformarlos de datos complejos
que llegan del canal a datos con valores entre 0 y 7 (cuantizados) para que el decodificador de
Viterbi pueda hacer su labor sin problemas. Es este subsistema el que habrá que modificarse para
implementar la decodificación en base a decisión dura.
* Viterbi Decoder: Decodifica los símbolos de entrada para producir símbolos binarios como
salida, este bloque puede procesar varios símbolos a la vez con tal de realizar un desempeño más
rápido. Si el código convolucional utiliza un alfabeto de 2n símbolos posibles, entonces la
longitud del vector de entrada al bloque es L*n para algunos enteros positivos L. De manera
similar, si los datos decodificados usan un alfabeto de 2k símbolos de salida, entonces el vector
de salida de este bloque es de longitud L*k. El entero L es el número de estructuras que el bloque
procesa en cada etapa. La entrada puede ser también un vector basado en estructuras con L=1, o
un vector columna basado en estructuras con cualquier entero positivo para L.
FIGURA 45: Cuadro de diálogo de los parámetros correspondiente al decodificador de Viterbi
INSTITUTO POLITECNICO NACIONAL
74
Trellis structure: Nuevamente define al codificador convolucional sobre el que se está
trabajando. Se debe utilizar el mismo que en el codificador.
Decision type: Puede ser sin cuantización (Unquantized), con decisión dura (Hard Decisión),
o decisión suave (Soft Decisión).
Number of soft decision bits: Es el número de bits de decisión a utilizar para representar
cada entrada cuando se maneja decisión suave.
Traceback depth: Es el número de ramas de la trellis usadas para construir el ―camino hacia
atrás‖ (traceback path). Por conveniencia se utilizan generalmente valores de cinco a seis veces la
longitud de restricción del codificador (como en este caso la longitud manejada es 5 el
Traceback depth se fijó a 25).
Operation mode: Determina el método para realizar las transiciones entre sucesivas cadenas
de entrada, para una entrada basada en estructuras las opciones son Continuous, Terminated, y
Truncated. Para una entrada basada en muestras se debe usar el modo contínuo.
Reset input: Cuando se selecciona esta opción, el decodificador tiene un segundo puerto de
entrada denominado Rst. Proporcionando un valor de entrada diferente de cero en este puerto el
bloque fija su memoria interna al estado inicial antes de procesar los datos de entrada.
* Error Rate Calculation: Compara los datos de entrada provenientes de un transmisor con los
datos provenientes de un receptor. Calcula la tasa de error dividiendo el número de datos
diferentes por el número total de datos de la fuente. Este bloque es útil cuando se quiere calcula la
tasa de error de bit o de símbolo porque no considera la magnitud de la diferencia entre las dos
cantidades. Si las entradas son bits, el bloque calcula la tasa de error de bit. Si son símbolos se
calculará la tasa de error de símbolo. Este bloque también toma el tiempo de muestreo de sus
entradas. Entre sus parámetros están:
Receive delay: Determina el número de muestras por las cuales los datos recibidos se
retrasan de los transmitidos. (Si Tx o Rx es un vector, entonces cada entrada representa una
muestra.)
Computation delay: Determina el número de muestras que el bloque debe ignorar para
iniciar la comparación.
Computation mode: En cualquiera de las estructuras de entrada, selecciona muestras de la
máscara, o selecciona muestras del puerto, dependiendo tanto si el bloque debería considerar
todas o parte de las estructuras de entrada.
Selected samples from frame: Se trata de un vector que lista los índices de los elementos del
vector recibido que el bloque debe considerar cuando realice comparaciones. Este campo a parece
cólo cuando Computation mode se fija a seleccionar muestras de la máscara ―Select samples
from mask‖.
INSTITUTO POLITECNICO NACIONAL
75
Output data: Cualquiera de las dos, el especio de trabajo (Workspace) o puerto, dependiendo
a dónde se desee enviar los datos de salida.
Variable name: define el nombre de la variable del espacio de trabajo de MATLAB donde
se quiere guardar el dato de salida. Este campo se activa sólo si Output data se fija en
Workspace.
Reset port: Si se selecciona esta opción aparece una entrada adicional etiquetada como Rst.
Stop simulation: Si se activa esta casilla, la simulación correrá sólo hasta que el bloque
detecta un número específico de errores o realiza un determinado número de comparaciones,
cualquiera que ocurra primero.
FIGURA 46: Parámetros modificables del bloque que calcula la tasa de error.
INSTITUTO POLITECNICO NACIONAL
76
Target number of errors: La simulación se detiene después de detectar éste número de
errores. Este campo se activa sólo cuando se selecciona la casilla Stop simulation.
Maximum number of symbols: La simulación se detiene después de haber hecho éste
número de comparaciones. Este campo se activa sólo cuando se selecciona la casilla Stop
simulation.
* Los bloques etiquetados como To Workspace escriben sus entradas (iguales a la salida) en el
espacio de trabajo de MATLAB ya sea en forma de vector o estructura con el nombre establecido
en ese parámetro.
Variable name: Es el nombre de la variable donde se almacenarán los datos.
Limit data points to last: El máximo número de muestras que se guardarán. El valor por
defecto es 1000 muestras.
Decimation: Es un factor de decimales. El valor por defecto es 1.
Sample time:El tiempo de muestreo al cual se recogerán los puntos.
FIGURA 47: Cuadro de diálogo del bloque que envía los datos al espacio de trabajo de MATLAB.
INSTITUTO POLITECNICO NACIONAL
77
Log fixed-point data as a fi object: Si se activa la casilla los datos se guardarán como de
punto flotante en el workspace de MATLAB. De lo contrario, se guardarán como de tipo doble.
Save format: El formato en el cual se guardarán las salidas de la simulación en el workspace.
El valor por defecto es structure.
El siguiente es el código utilizado para ejecutar de manera iterativa el modelo en cuestión.
%%ESTE PROGRAMA CONTIENE LOS RESULTADOS OBTENIDOS EN SIMULINK
%SIMULANDO CODIFICADORES CONVOLUCIONALES CON MODULACION BPSK
EbNoVec = [2.0:0.5:5.5];
R = 1/2;
figure;
xlabel('Eb/No (dB)'); ylabel('Bit Error Rate');
title('Bit Error Rate (BER)');
legend('Theoretical bound on BER','Actual BER', 'South');
axis([2 8 1e-6 1e-2]);
hold on;
grid on;
BERVec5 = [];
opts = simset('SrcWorkspace','Current',...
'DstWorkspace','Current');
set_param('decision_suave/AWGN Channel',... %%se fijan los parámetros del bloque
%%AWGN
'EsNodB','EbNodB+10*log10(1/2)');
for n = 1:length(EbNoVec)
EbNodB = EbNoVec(n);
sim('decision_suave',5000000,opts);
BERVec5(n,:) = BER_Data;
semilogy(EbNoVec(n),BERVec5(n,1),'r*'); % Plot point.
drawnow;
end
hold off;
En la figura 47 se muestran los resultados arrojados por esta simulación.
INSTITUTO POLITECNICO NACIONAL
78
FIGURA 48: Resultados de la tasa de error obtenidos implementando el sistema con bloques simulink.
Para obtener el desempeño del sistema con decisión dura se modifica el bloque etiquetado
como subsistema de la siguiente manera:
FIGURA 49: Modelo Simulink utilizado para implementar la decodificación de de códigos convolucionales
utilizando decisión dura (un nivel de cuantización).
INSTITUTO POLITECNICO NACIONAL
79
El subsistema Demodulador BPSK decisión dura se integra por los siguientes bloques:
FIGURA 50: Bloques integrantes del subsistema BPSK decisión dura.
Como se puede observar, lo único que se hizo fue definir, a partir de los datos obtenidos del
canal, si son ceros o unos, considerando solamente si eran positivos o negativos. Los parámetros
del decodificador de Viterbi quedaron como se ilustra en el cuadro de diálogo de la figura 51.
Los resultados del desempeño de los codificadores convolucionales usando el algoritmo de
Viterbi con decisión dura se presentan en la gráfica de la figura 52.
FIGURA 51: Parámetros modificados al bloque decodificador de Viterbi.
INSTITUTO POLITECNICO NACIONAL
80
FIGURA 52: Desempeño de los codificadores implementados en simulink
Haciendo una comparación de estos resultados con los antes obtenidos se puede observar que
son muy similares, por lo tanto está demostrada la efectividad del uso de simulink de MATLAB
para realizar simulaciones confiables de cualquier sistema.
V.5.- SIMULACIÓN DE CÓDIGOS TCM En seguida se incluyen las distintas simulaciones realizadas para medir el desempeño de los
esquemas TCM. Los sistemas se implementaron en bloques Simulink utilizando los bloques de
codificación/decodificación TCM.
El modelo utilizado para esta simulación es el de la figura 53. En la figura se observa que el
generador de datos aleatorios es el mismo que el utilizado en las simulaciones de códigos
convolucionales. En la figura 54 se observa el cuadro de diálogo correspondiente a los
parámetros a modificar para el bloque de codificación TCM y se explica a que se refiere cada
parámetro. Es importante mencionar que la referencia utilizada para medir el desempeño del
sistema es la presentada en [10] págs. 122-124. En tal referencia se grafican los límites teóricos
de la tasa de error de bit resultantes del análisis del diagrama de estados de error de los esquemas
TCM en cuestión. En primer lugar se grafica el desempeño del esquema TCM 8-PSK de dos
estados cuyo codificador se muestra en la figura 56.
INSTITUTO POLITECNICO NACIONAL
81
FIGURA 53: Modelo Simulink utilizado para implementar un sistema TCM.
Trellis structure: Este parámetro se refiere a la especificación del codificador convolucional
que está relacionado con la modulación, la forma de especificarlo es con la función poly2trellis
anteriormente mencionada.
M-ary number: este parámetro sirve para especificar el número de puntos que deberá
contener la constelación de señales, en este caso es 8.
Los parámetros del bloque correspondiente al canal se presentan en la figura 55, aquí ahora
se está manejando el canal en modo Eb/NodB y se está especificando que se manejan tres bits por
símbolo mapeado, los demás parámetros ya se explicaron en la sección anterior.
FIGURA 54: Parámetros a definir en el bloque codificador TCM.
INSTITUTO POLITECNICO NACIONAL
82
FIGURA 55: Cuadro de dialogo del bloque correspondiente al canal AWGN del sistema
Con respecto a la parte de decodificación se tienen los parámetros del bloque en cuestión en
la figura 56.
Nuevamente en el campo Trellis structure hay que definir al codificador convolucional, en
este caso para que se realice adecuadamente la decodificación con el algoritmo de Viterbi,
nuevamente en M-ary number hay que especificar el número de puntos en la constelación de
señales.
En trace back depth se especifica el número de ramas en la trellis sobre las cuales el
decodificador realizará el camino hacia atrás (trace back), y los últimos parámetros tienen la
misma especificación que los ya mencionados para la simulación de los códigos
convolucionales.
INSTITUTO POLITECNICO NACIONAL
83
Da1
a2
Mapeador
8-PSK
c1
c2
c3
FIGURA 56: Esquema TCm 8-PSK de dos estados simulado
FIGURA 57: Parámetros correspondientes al decodifiador TCM.
Finalmente en la figura 58 está la gráfica de resultados que arroja la simulación en cuestión.
Refiriéndose a [10] se puede observar que los resultados obtenidos a partir de la simulación caen
dentro de los límites teóricos especificados en dicha fuente y por lo tanto se pueden considerar
como aceptables.
INSTITUTO POLITECNICO NACIONAL
84
FIGURA 58: Resultados obtenidos mediante la simulación de un esquema TCM.
INSTITUTO POLITECNICO NACIONAL
85
Capitulo VII
CONCLUSIONES Como se pudo ver en los resultados de las simulaciones, los códigos convolucionales en
combinación con el algoritmo de Viterbi proporcionan un buen desempeño en cuanto a la tasa de
error que manejan, y más aún si la decodificación se realiza con decisión suave. Es por ello que
en la actualidad se utilizan ampliamente en las comunicaciones digitales y su estudio facilita una
mejor comprensión de la codificación modulada TCM que utiliza éstas dos herramientas para
proporcionar mayores ganancias de codificación de datos y con ello elevar las velocidades de
transmisión cada vez más confiables. Con respecto al desempeño del esquema TCM simulado se
puede concluir que, como en [10] se consideran límites para la probabilidad de error del esquema
TCM de dos estados en un ambiente real lo cual implica tener una mayor interferencia entre
símbolos, el esquema simulado pasa esa prueba y por lo tanto es idóneo para implementarse en
un sistema real de comunicaciones como los que en la sección de estándares se discutieron.
De esta manera, sin necesidad de crear prototipos, queda demostrada la eficiencia de los
esquemas de modulación codificada Trellis aún en medios bastante ruidosos y por tanto se
comprueba el por qué de el gran auge que han tenido desde su creación, en la década de los 70,
en diversas áreas de las telecomunicaciones.
El presente trabajo documenta los conceptos relacionados directamente con la
implementación de los esquemas de modulación codificada trellis de manera que se convierte en
una herramienta para introducirse al manejo una de esta poderosa técnica que, en esta era de las
comunicaciones digitales en donde se necesita enviar grandes cantidades de información sin que
ello implique disponer de un ancho de banda extenso, ha estado ganando terreno y cada vez se
utiliza e implementa con más frecuencia.
Dados los resultados favorables se demuestra que la librería de programas en MATLAB, C y
Simulink que se desprende de este trabajo permitirá investigar el desempeño de diferentes
esquemas TCM que servirán de base para los trabajos que de manera paralela se realizan en la
SEPI para la implementación de hardware que trabaje con esta tecnología.
INSTITUTO POLITECNICO NACIONAL
86
REFERENCIAS
BIBLIOGRAFICAS:
[1] G. UNGERBOECK, ―Trellis-coded modulation with redundant signal sets.
Part I: Introduction‖, IEEE commun. Mag., Vol 25, pp. 5-12 Feb. 1978.
[2] G. UNGERBOECK, ―Trellis-coded modulation with redundant signal sets.
Part II: State of the art‖, IEEE commun. Mag., Vol 25, pp. 12-22 Feb. 1978.
[3] Christian B. Shlegel and Lance C. Pérez ―Trellis and Turbo Coding‖, 2004
Institute of Electrical and Electronics Engineers.
[4] Todor Koolev ―Wireless Communication Standards‖, Ed. IEEE pág. 100-105
[5] Tood K. Moon ―Error correction coding‖, mathematical methods algorithms,
Ed. Wiley interscience, 2005, pp 453-580.
[6] Shu Lin & Daniel J. Costello ―Error control coding‖ fundamentals and
applications, Ed., Prentice Hall, pp. 287-348.
[7] Stephen B. Wicker ―Error control systems‖ for digital communication and
storage, Ed. Prentice Hall, 1995, pp 269-330, 356- 390.
[8] Graham Wade ―Coding techniques‖ an introduction to compression and error
control, Ed. Palgrave, 2000.
[9] L. H. Charles Lee, ―Convolutional coding: fundamentals and applications‖,
Artech House, 1997, pp. 11-51, 57-87, 149-204.
[10] Biglieri Ezio and Divsalar Dariush, ―Introduction to Trellis- Coded Modulation
with Applications‖, Ed. MacMillan Publishing, pp. 56-61, 67-94.
[11] Harada Hiroshi and Prasad Ramjee, ―Simulation and Software Radio for
Mobile Communications, Ed. Artech House, pp. 1-70
[12] Math Works Inc., ―MATLAB Using MATLAB.‖
INSTITUTO POLITECNICO NACIONAL
87
DE INTERNET:
[13] Escuela de Ingeniería Electrónica Universidad Nacional del Rosario
http://www.eie.fceia.unr.edu.ar/ftp/Radioenlaces/1502.pdf
[14] Aholab (Signal Processing Laboratory of the University of the Basque Country
UPV/EHU)
http://bips.bi.ehu.es/~inma/psc/
[15] NASA TECHNICAL REPORTS SERVER (NTRS)
http://ntrs.nasa.gov/search.jsp
[16] http://fiee.uni.edu.pe/publicaciones/TecniaEsp/10art/index.html
[17] MINISTERIO DE CIENCIA E INNOVACIÓN ―GOBIERNO DE ESPAÑA‖
UNION CINETÍFICA INTERNACIONAL DE RADIO
http://w3.iec.csic.es/ursi/articulos_gandia_2005/articulos/SC3/327.pdf
[18] Página personal de Constantino Pérez Vega del departamento de Ingeniería de
Comunicaciones de la Universidad de Cantabrina, España.
http://personales.unican.es/perezvr/pdf/CH3%20TV.pdf
[19] COLEGIO DE INGENIERIA, UNIVERSIDAD DE UHTA
http://www.engineering.usu.edu/ece/faculty/tmoon/eccbook/FILES/
[20] ― A Tutorial on convolutional Coding with Viterbi Decoding‖ by Chip Fleming
http://home.netcom.com/~chip.f/viterbi/tutorial.html
[21] Modulación Codificada Trellis, Universidad Distrital ―Francisco José de
Caldas‖
http://internet-solutions.com.co/deacosta/tcm/refuerzo_convol/frame.html
[22] Simulation source code Examples
http://home.netcom.com/~chip.f/viterbi/examples.html
[23] "eurasip newsletter"
INSTITUTO POLITECNICO NACIONAL
88
http://www.eurasip-newsletter.org/newsletter-15-4.pdf
[24] ―World Intellectual property, IP services‖
http://www.wipo.int/pctdb/en/wo.jsp?IA=US2002031966&DISPLAY=DESC
[25] A Neural Network Trellis coded Modulation Decoder
http://www.scitec.uwichill.edu.bb/cmp/journal/masonsodha1stdec2005.pdf
Top Related