Вы находитесь на странице: 1из 281

UNIVERSIDAD DEL QUINDIO

SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 1 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Laboratorio Modular de Comunicaciones Digitales

Facultad: Ingeniería

Programa: Ingeniería Electrónica

Grupo de Investigación: GDSPROC

Armenia-Quindío, Junio 24 de 2011

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 2 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Tabla de Contenido

FICHA RESUMEN ........................................................................................................................................... 7


RESUMEN DIVULGATIVO DE RESULTADOS ........................................................................................ 9
INFORME CIENTÍFICO .............................................................................................................................. 10
RESUMEN ...................................................................................................................................... 10
ABSTRACT ...................................................................................................................................... 10
INTRODUCCIÓN ............................................................................................................................. 11
METODOLOGÍA Y DESARROLLO DE LA INVESTIGACIÓN ............................................................... 13
RESULTADOS Y DISCUSIÓN............................................................................................................ 40
CONCLUSIONES ............................................................................................................................. 67
REFERENCIAS ................................................................................................................................. 69
RESULTADOS DIRECTOS .......................................................................................................................... 73
PRODUCTOS .................................................................................................................................................. 75
RESULTADOS INDIRECTOS...................................................................................................................... 76
LIMITANTES EN LA EJECUCIÓN DEL PROYECTO ........................................................................... 77
ANEXOS .......................................................................................................................................................... 79
ANEXO A: ....................................................................................................................................... 79
DESCRIPCIÓN DETALLADA DE LOS BLOQUES HARDWARE DISEÑADOS ........................................ 79
ANEXO B: ..................................................................................................................................... 141
PRÁCTICAS DE LABORATORIO PROPUESTAS ............................................................................... 141
ANEXO C: ..................................................................................................................................... 157
MANUALES DE USUARIO DE CADA UNO DE LOS BLOQUES ........................................................ 157
ANEXO D: ARTÍCULOS.................................................................................................................. 281

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 3 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Listado de Figuras
Figura 1. Tarjeta de Desarrollo DE2-70. ................................................................ 14
Figura 2. Estructura directa tipo I para filtros FIR. ................................................. 15
Figura 3. Estructura de un filtro CIC diezmador. ................................................... 15
Figura 4. Estructura de un filtro CIC interpolador. ................................................. 16
Figura 5. Modulador de fase diferencial. ............................................................... 17
Figura 6. DeModulador de fase diferencial. ........................................................... 17
Figura 7 Codificador diferencial ............................................................................. 17
Figura 8. Proceso de mapeo en constelación QPSK. ........................................... 19
Figura 9. Diagrama de Bloques del Modulador FM. .............................................. 20
Figura 10. Diagrama de Bloques del demodulador FM. ........................................ 21
Figura 11. Diagrama de bloques del modulador I/Q. ............................................. 22
Figura 12. Diagrama de Bloque Sincronizador M&M. .............................................. 23
Figura 13. Diagrama de Bloque Sincronizador M&M modificado. ............................ 24
Figura 14. Sincronizador de Trama. ...................................................................... 25
Figura 15. Codificador Convolucional.................................................................... 26
Figura 16. Diagrama de bloques general del decodificador Viterbi. ...................... 28
Figura 17. Codificador Reed-Solomon. ................................................................. 29
Figura 18. Decodificador Reed-Solomon .............................................................. 30
Figura 19. Esquema general Canal AWGN. .......................................................... 31
Figura 20. Diagrama del generador WGN. ............................................................ 32
Figura 21. Reflexión, difracción y dispersión generando varias réplicas de la señal
original enviada por el transmisor. ......................................................................... 33
Figura 22. Diagrama en bloques de un canal multitrayectoria con desvanecimiento
de Rayleigh ........................................................................................................... 33
Figura 23. Formas de onda Coseno Alzado .......................................................... 34
Figura 24. Conformador de pulso coseno alzado .................................................. 35
Figura 25. Estructura transpuesta para filtros FIR. ................................................ 36
Figura 26. Forma de onda Gaussiana. .................................................................. 37
Figura 27. Sistema transmisor/receptor QAM. ...................................................... 38
Figura 28. Sistema transmisor/receptor M-PSK. ................................................... 38
Figura 29. Sistema transmisor/receptor M-FSK. ................................................... 39
Figura 30. Sistema transmisor/receptor GMSK. .................................................... 39
Figura 31. Sistema de codificación/decodificación convolucional. ........................ 40
Figura 32. Sistema de codificación/decodificación Reed-Solomon. ...................... 40

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 4 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 33. Resultados experimentales modulador FM. ......................................... 41


Figura 34. Resultado experimental Demodulador FM. .......................................... 41
Figura 35. Resultados experimentales, espectro de salida y entrada de modulador
I/Q. ........................................................................................................................ 42
Figura 36. Resultados experimentales demodulador IQ. (a) espectro señal de
entrada. (b) espectro señal de salida. ................................................................... 43
Figura 37. Resultados obtenidos, sincronizador de tiempo. .................................. 44
Figura 38. Función de Correlación cruzada entre dato de salida y preámbulo...... 45
Figura 39. Simulación temporal del codificador Convolucional. ............................ 45
Figura 40. Respuesta del codificador Convolucional utilizando el analizador lógico
SignalTap II. .......................................................................................................... 46
Figura 41. Simulación temporal del decodificador Viterbi con mensaje sin errores.
.............................................................................................................................. 47
Figura 42. Simulación temporal del decodificador Viterbi con algunos errores en
los símbolos de entrada. ....................................................................................... 48
Figura 43. Respuesta del decodificador de Viterbi utilizando el analizador lógico
SignalTap II. .......................................................................................................... 49
Figura 44. Simulación temporal del codificador 𝑅𝑆(255,223) ................................ 52
Figura 45. Prueba experimental del codificador 𝑅𝑆(255,223) ............................... 54
Figura 46. Simulación del decodificador 𝑅𝑆255,223 con 𝑚 = 8 𝑦 𝑡 = 16 ............... 56
Figura 47. Prueba experimental del codificador 𝑅𝑆(255,223) ............................... 58
Figura 48. a) Resultados de Simulación. b) Resultados experimentales. ............. 59
Figura 49. Ruido Blanco Gaussiano ..................................................................... 59
Figura 50. Histograma datos experimentales. ....................................................... 60
Figura 51. a) Esquema ejemplo b) Resultados de Simulación. ............................. 61
Figura 52. a) Resultados de Simulación. b) Resultados Experimentales. ............ 62
Figura 53. Resultados experimentales filtro gaussiano con estructura polifase. ... 63
Figura 54. Resultados experimentales filtro CIC interpolador. .............................. 63
Figura 55. Señal entrada y salida filtro CIC diezmador. ........................................ 64
Figura 56. Resultados experimentales filtro CIC diezmador, espectro de
frecuencia. ............................................................................................................. 64
Figura 57. Funcionamiento del sistema de comunicación. .................................... 65
Figura 58. Diagrama de bloques del filtro CIC interpolador. .................................. 79
Figura 59. Diagrama de bloques del diezmador. ................................................... 80
Figura 60. Plano polar de la entrada al CORDIC. ................................................. 82
Figura 61. Plano polar de la entrada al CORDIC. ................................................. 83
Proyecto de Investigación N° 467
UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 5 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 62. Plano cartesiano con discontinuidades. ............................................... 84


Figura 63. Plano cartesiano sin discontinuidades. ................................................ 85
Figura 64. Diagrama de bloques del CORDIC. ..................................................... 85
Figura 65. Arquitectura de Constelation Mapper para DQPSK ............................. 87
Figura 66. Bloque Gr_diff_encoder_bb, implementado en Vhdl ............................ 89
Figura 67 Codificador diferencial. .......................................................................... 90
Figura 68. Mapeador en constelación DBPSK ...................................................... 90
Figura 69. Mapeador en constelación DQPSK ...................................................... 91
Figura 70. Mapeador en constelación QPSK ........................................................ 92
Figura 71. Diagrama De Bloques De Modulador FM. ............................................ 93
Figura 72.Demodulador FM................................................................................... 94
Figura 73. Diagrama de bloques del modulador I/Q. ............................................. 95
Figura 74. Diagrama de bloques del contador del modulador I/Q. ........................ 96
Figura 75. Diagrama de bloques demodulador I/Q. ............................................... 97
Figura 76. Diagrama de Bloque Sincronizador M&M. .............................................. 98
Figura 77. Pulso g(t). ............................................................................................. 99
Figura 78. Determinación de 𝜏 ............................................................................ 101
Figura 79. Estructura Interna del filtro FIR........................................................... 102
Figura 80. Respuesta al Impulso del Filtro FIR ajustable .................................... 103
Figura 81. Bloque de Decisión y Detector de Error M&M. ................................... 104
Figura 82. Filtro de Lazo Cerrado ........................................................................ 105
Figura 83. Decrementador usado en el Reloj Ajustable ...................................... 106
Figura 84. Detector de Preámbulo. ..................................................................... 107
Figura 85. Diagrama del codificador Convolucional. ........................................... 108
Figura 86. Registros para la sincronización de la señal (ready). ......................... 108
Figura 87. Diagrama de entradas y salidas del codificador Convolucional. ........ 109
Figura 88. Diagrama de entradas y salidas del decodificador Viterbi. ................. 110
Figura 89. Circuito para calcular la distancia Hamming. ..................................... 110
Figura 90. Estructura Butterflypara el codificador con 𝐾 = 7 𝑦 𝑟 = 12................. 111
Figura 91. Unidad ASC del decodificador Viterbi. ............................................... 111
Figura 92. Conexión entre los bloques de registros y unidades ACS. ................. 112
Figura 93. Conexión de las memorias de rutas sobrevivientes. .......................... 113
Figura 94. Conexión de las memorias de bits decodificados............................... 114
Figura 95. Conexión del decodificador Viterbi. .................................................... 114
Figura 96. Codificador Reed-Solomon ................................................................ 115
Figura 97. Diagrama de entradas y salidas del codificador Reed-Solomon ........ 116
Proyecto de Investigación N° 467
UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 6 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 98. Diagrama de bloques de guardado y corrección del mensaje ............ 122
Figura 99. Esquema elevador-acumulador para el cálculo de los síndromes ..... 123
Figura 100. Diagrama de entradas y salidas del cálculo de síndromes .............. 124
Figura 101. Diagrama de datos del algoritmo de Berlekamp-Massey sin inversión.
............................................................................................................................ 125
Figura 102. Circuito controlador de los multiplexores del diagrama de bloques del
algoritmo de Berlekamp-Massey. Los comparadores generan señal alta cuando
hay comparación 2𝑙 ≤ 𝑘 y 𝛿 ≠ 0.......................................................................... 125
Figura 103. Diagrama de entradas y salidas del bloque que calcula el polinomio
localizador del error. ............................................................................................ 126
Figura 104. Hardware que permite calcular las raíces del polinomio localizador
(Chien Search) .................................................................................................... 127
Figura 105. Implementación hardware para el cálculo del polinomio Ω(𝑥).......... 128
Figura 106. a) Derivada del polinomio localizador del error cuando 𝑡 es impar, b)
Derivada del polinomio localizador del error cuando 𝑡 es par. ............................ 129
Figura 107. Implementación hardware que evalúa el polinomio evaluador del error
y la derivada del polinomio localizador para luego dividirlos y obtener el polinomio
del valor del error. ............................................................................................... 130
Figura 108. Esquema general Canal AWGN. ..................................................... 131
Figura 109. Diagrama WGN. .............................................................................. 132
Figura 110. Diagrama WGN. ............................................................................... 132
Figura 111. Diagrama de pines polinomio semilla. ............................................ 133
Figura 112. Diagrama en Bloques de un Modelo Multitrayectoria. ...................... 133
Figura 113. Celda base ....................................................................................... 134
Figura 114. Sistema de Implementación Completo ............................................. 135
Figura 115. Configuración de Pines .................................................................... 136
Figura 116. Pines del bloque filtro gaussiano. ..................................................... 137
Figura 117. Diagrama de bloques filtro gaussiano con estructura polifase. ........ 138
Figura 118. Estructura interna filtros de respuesta finita al impulso. ................... 139

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 7 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

FICHA RESUMEN
Título: Laboratorio Modular de Comunicaciones Digitales

Código: 467

Grupo de Investigación: GDSPROC

Programa de Investigación:

Línea de Investigación: Procesamiento Digital de Señales y Comunicaciones Inalámbricas

Nombre de la unidad ejecutora: Ingeniería Electrónica

Facultad: Ingeniería

Entidad Cofinanciadora:

Número del Contrato:

Personal del Proyecto

Dedicación (en
Tipo de vinculación al proyecto Nombre (s)
horas semanales)

Investigador Principal 10 Alexander López Parrado

Coinvestigadores 10 Julián Adolfo Ramírez Gutiérrez, Wilmer Diego


Jiménez

Jóvenes Investigadores 8 Juan José Giraldo Gutiérrez

Auxiliares de Investigación 4 Darwin Sánchez Bello, Juan Felipe Patarroyo y


Juan Felipe Medina

Asesor

Estudiantes 4 Jhon Edward Salazar, Nicolas Cobo, Stiven Arias,


Catalina Muñoz.

Lugar de Ejecución del Proyecto (Ciudad): Armenia

Duración Prevista del Proyecto (en meses): 12 meses

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 8 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Título: Laboratorio Modular de Comunicaciones Digitales

Código: 467

Duración real del Proyecto (en meses): 24 meses

Tipo de Proyecto: CUANTIA INTERMEDIA GRUPOS ACTIVOS INSCRITOS EN COLCIENCIAS

Modalidad:

Valor Solicitado a la Universidad del Quindío: $16.000.000

Valor cofinanciación: $**.000

Valor Ejecutado: $16.000.000

Valor Total del Proyecto: $16.000.000

Descriptores / Palabras Claves: Modulación, reconfigurable, ASK, FSK, PSK, QAM, GMSK, VHDL, FPGA

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 9 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

RESUMEN DIVULGATIVO DE RESULTADOS

El Proyecto de investigación “Laboratorio Modular de Comunicaciones Digitales” es un proyecto


que busca la ceración de herramientas de laboratorio en comunicaciones digitales, para los
ingenieros en formación de Programas de ingeniería electrónica y telecomunicaciones. La
innovación de este proyecto se basa en el uso de hardware reconfigurable o FPGA (field
programmable gate array ) por sus siglas en ingles, lo cual permite una gran flexibilidad y
reconfigurabilidad de los parámetros del diseño. El uso de las FPGAs tiene trayectoria en el
programa de Ingeniería electrónica de la universidad del Quindío, donde son una herramienta
importante en la investigación del grupo de procesamiento digital de señales y procesadores
GDSPROG.

El reto principal de este proyecto consintió en la creación de un conjunto de módulos de


propiedad intelectual, con los principales algoritmos de procesamiento en comunicaciones
digitales, los cuales debían tener un desempeño comparable a algoritmos utilizados en la industria.
Para seleccionar los algoritmos implementados de forma coherente con los utilizados en la
industria se realizo un análisis de diferentes estándares de telecomunicación y proyectos de
investigación en el campo. El Proyecto GNURadio sirvió de base para la elección de algoritmos y
para su posterior implementación en hardware, pero esto introdujo la dificultad adicional de la
construcción en hardware de algoritmos inicialmente implementados en software, además estos
algoritmos trabajan en condiciones de velocidad y frecuencias diferentes a las establecida en este
proyecto, donde se eligió la banda de audio, la cual se tomó por la ventaja de la existencia de
instrumentos de medida y hardware adicional como las tarjetas de sonido.

Como resultado del proyecto se tienen un conjunto de módulos hardware, los cuales pueden ser
mesclados en diferentes configuraciones para lograr múltiples esquemas de transmisión de datos
digitales, con condiciones muy similares a la de los sistemas de comunicación comercial al incluir
esquemas de detección y corrección de errores, sincronización de tiempo de símbolo,
sincronización de fase de portadora y conformación del pulso, lo que mejorar las características
espectrales, la robustez de la comunicación y los parámetros de desempeño de los sistemas
transmisión/receptor.

Con este proyecto el Programa de Ingeniería Electrónica de la universidad del Quindío y el grupo
de investigación GDSPROG, aportan al estado de arte al implementar bloques de propiedad
intelectual de algoritmos de procesamiento en comunicaciones digitales de alto desempeño, de
alto uso en sistemas de comunicación modernos. Estos módulos pueden ser usados en dispositivos

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 10 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

comerciales y en condiciones de laboratorio; en el aprendizaje de sistemas digitales y


comunicaciones digitales, lo que pone al Programa a en un alto nivel de formación en este campo.

INFORME CIENTÍFICO

RESUMEN

El presente proyecto implementa módulos de propiedad intelectual para la construcción de


equipos didácticos de comunicaciones digitales, involucrando el soporte en banda base de
esquemas de modulación y codificación de canal, así como la emulación de canales de
comunicación, sobre plataformas de hardware reconfigurable.
Los bloques implementados permiten configurar esquemas completos de comunicación digital,
que involucran; modulación digital, codificación de canal, emulación de canal y sincronización de
tiempo y fase, usando algoritmos de amplia utilización en la industria.
Las características de los algoritmos implementados están al nivel de los que se implementan en
equipos comerciales de telecomunicaciones con la diferencia de su funcionamiento en la banda de
audio, debido, a que esta banda presenta múltiples ventajas desde el punto de vista de la creación
de equipos didácticos de laboratorio, pues esta banda permite; que los bloques hardware
implementados interactúen con dispositivos y equipos de medida comúnmente presentes en
laboratorios de electrónica, como osciloscopios convencionales y computadores personales.
Los algoritmos implementados permitirán a los estudiantes del programa abordar de manera más
ambiciosa la temática de comunicaciones digitales, pues los algoritmos implementados son de una
alta complejidad lo cual dificulta su aprendizaje en ausencia de dispositivos de laboratorio que
permitan de manera flexible y segura modificar parámetros de los sistemas y observar el
comportamiento resultante.

ABSTRACT

This research project implements IP modules for the construction of educational digital
communications equipment, involving support for base band modulation schemes, channel
coding, and the emulation of communication channels on reconfigurable hardware platforms.
Blocks implemented allow configuring complete digital communication schemes that involve,
digital modulation, channel coding, channel emulation and time and phase synchronization, by

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 11 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

using algorithms widely used in industry. The characteristics of the implemented


algorithms are comparable to those implemented in commercial
telecommunications equipment but the operation in the audio band, in fact this band has
many advantages when building of laboratory equipment for teaching is required, as this band
allows the blocks interact with hardware devices and measuring equipment commonly found
in electronics laboratories, as conventional oscilloscopes and personal computers.
Implemented algorithms allow electronic engineering program students, to tackle more
ambitiously digital communications issues, because the algorithms implemented are of a high
complexity which hinders their learning in the absence of laboratory devices that enable flexible
and secure way to modify system parameters and observe the resulting behavior.

INTRODUCCIÓN

El presente informe de investigación para el proyecto 467 “Laboratorio Modular de


Comunicaciones Digitales” expone brevemente los resultados y productos logrados a lo largo de
más de un año de trabajo de los investigadores y asistentes de investigación involucrados.

Con el ánimo de exponer de manera clara y breve el proceso de investigación y los resultados
obtenidos, el presente informe consta de tan sólo 3 secciones además de los anexos.

A continuación se describen cada una de las secciones del informe de investigación:

En la sección metodología se exponen el procedimiento utilizado para el desarrollo de cada uno de


los sistemas diseñados y algunas bases teóricas pertinentes para una mejor comprensión del
procedimiento. Además se incluye descripciones generales de los sistemas que se pueden
configurar con los bloques hardware diseñados, estos bloques constituyen los componentes a
partir de los cuales se desarrollan diferentes laboratorios de comunicaciones digitales.

Posteriormente, en la sección de resultados y discusión, se exponen los parámetros de desempeño


a partir de las características funcionales de los bloques hardware y los resultados de las pruebas
de desempeño realizadas.

Por último se incluyen las conclusiones producto del proyecto de investigación, encontradas a lo
largo de la solución de los problemas de diseño de cada uno de los componentes desarrollados.

Es importante mencionar que con el ánimo de desarrollar un informe sintético, el detalle del
diseño de cada uno de los bloques hardware desarrollados se puede encontrar en los anexos.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 12 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Objetivos

En la propuesta de investigación se plantearon los siguientes objetivos para el proyecto:

General

Desarrollar interfaces modulares para la construcción de un equipo didáctico de


comunicaciones digitales que involucre el soporte en banda base de esquemas de
modulación y codificación digital, así como la emulación de canales de comunicación,
sobre prototipos parametrizables y reconfigurables.

Específicos

Desarrollar librerías sobre VHDL que implementen los esquemas de modulación digital
ASK, M-FSK, M-PSK, QAM, GFSK y GMSK.

Desarrollar librerías en VHDL para la emulación de canales de tipo Gaussiano y Rayleigh.

Desarrollar librerías en VHDL para la implementación de códigos de bloque y


convolucionales para detección y corrección de errores.

Diseñar esquemas para obtención de parámetros de desempeño del sistema de


comunicación configurado por el usuario, como lo son eficiencia espectral, tasa de error
de bit (BER), puntos estratégicos de observación para señal temporal y espectro.

Proponer una interface y/o procedimiento para el desarrollo y configuración en línea de


prácticas de laboratorio con sistemas de comunicación digital.

Realizar un manual de usuario para el ensamble y uso adecuado de los módulos


desarrollados.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 13 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

METODOLOGÍA Y DESARROLLO DE LA INVESTIGACIÓN

Selección de los algoritmos y sistemas de procesamiento de señal construidos.

En los sistemas de comunicación objetivos de las prácticas de laboratorio, existen diferentes


estrategias para su implementación, dependiendo de la tecnología, las cuales son principalmente,
analógica, digital, software o hardware. Desde el planteamiento de la propuesta se estableció la
implementación en hardware completamente digital, esto implica la elección de algoritmos que
presenten características que los hagan apropiados para este tipo de tecnología, adicionalmente
se busca que los algoritmos puedan ser utilizados en diferentes esquemas de modulación,
constituyéndose en bloques funcionales que pueden ejecutar diferentes funciones dependiendo
del sistema en el que trabajen.

Mediante una exploración del estado del arte, tomando principalmente estándares,
recomendaciones de la ITU y proyectos de Radio Software [1], se encontró que la alternativa que
brindaba la mejor especificidad de los algoritmos y sistemas de procesamiento de señal era la
dada en el proyecto de Radio Software libre GNURadio [1]. El principal reto con esta elección es la
dificultad que implica la implementación en hardware de algoritmos que originalmente fueron
codificados como software y su ajuste a las condiciones de las plataformas hardware utilizadas.

Del proceso de revisión de los bloques provistos por GNURadio, se encontró que no es necesario la
construcción de sistemas diferentes para cada esquema modulación, sino que basta con la
selección de bloques comunes entre ellos, con lo cual es posible crear un conjunto más amplio de
modulaciones con sólo cambiar la configuración interna de los sistemas.

Del conjunto inicial de modulaciones, se seleccionaron para su implementación total: BPSK, QPSK y
GMSK adicionalmente los códigos convolucionales y Reed-Solomon, así como la emulación de
canales Gaussiano y Rayleigh. Esto debido a que esquemas como QAM, ASK, M-FSK y GFSK se
construyen a partir de simplificaciones de los sistemas implementados.

Con el fin de comprender los algoritmos, depurar su funcionamiento de forma rápida y tener un
patrón de comparación frente a las implementaciones hardware; se procedió a la construcción de
un conjunto de funciones y scripts para MATLAB con los algoritmos y sistemas seleccionados. Estas
funciones y scritps de MATLAB permitieron durante todo el desarrollo del proyecto validar los
avances hechos a medida que se construía cada bloque, así como la calibración de parámetros
propios de cada algoritmo implementado.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 14 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Elección de la Plataforma Hardware

La elección de la plataforma hardware se basó principalmente en los recursos disponibles del


proyecto y pensando en la maximización de su utilización, no solamente en prácticas de
comunicaciones digitales, sino también de sistemas digitales y procesamiento digital de señales.

Resultado de esto y partiendo de la experiencia del grupo GDSPROC con tarjetas de desarrollo de
diferentes fabricantes, y teniendo presente la compatibilidad con herramientas de medición y
desarrollo disponibles; se eligió como plataforma hardware dos tarjetas de desarrollo DE2-70 [2]
de Terasic Technologies basadas en FPGA Cyclone II de Altera. Una de las tarjetas de desarrollo
DE2-70 es mostrada en la Figura 1.

Figura 1. Tarjeta de Desarrollo DE2-70.

Esta elección implica, de acuerdo a las especificaciones técnicas de la tarjeta, que la interfaz
análoga que se debe usar es la dada por las entradas y salidas de audio. Esto impone restricciones
en la de tasa bit, duración de símbolo, ancho de banda y características del canal de comunicación
[19][28][10]. En este caso todos los sistemas operan a una frecuencia de muestreo igual a
72304.6875 Hz. Este valor es obtenido a partir de un PLL disponible en el FPGA el cual genera una
señal de reloj con frecuencia de 18.51 MHz, esta señal es posteriormente preescalada 256 veces
por el CODEC de audio WM8731 [12] disponible en la tarjeta DE2-70.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 15 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Criterios para la Compatibilidad entre bloques Hardware

Debido a las características técnicas de la plataforma elegida, la cual posee principalmente


circuitos sumadores y multiplicadores enteros, es necesario definir el punto fijo [6] como la
aritmética de todos los bloques del proyecto.

Teniendo en cuenta que gran parte de los algoritmos seleccionados implican operaciones de
filtrado FIR [6], es necesario adoptar una estructura de implementación de filtros FIR común, lo
que permite la utilización de la misma estructura en diferentes sistemas. En este caso se adoptó la
estructura tipo I para filtros FIR [6] dada la corta longitud de las respuestas al impulso
involucradas. La Figura 2 muestra un diagrama de bloques de la estructura directa tipo I para
filtros FIR.

Figura 2. Estructura directa tipo I para filtros FIR.

Al igual que en los filtros, hay otros bloques comunes a diferentes esquemas de modulación, por lo
cual es conveniente definir una estructura común para su implementación. Estos bloques son los
encargados de realizar cambios en las tasas de muestreo y aquellos encargados de evaluar
funciones trigonométricas. Para el caso de los sistemas de incremento y decremento de las tasas
de muestreo se eligió los filtros Cascaded Integrator Comb (CIC) Hogenauer[6][7] . La Figura 3 y la
Figura 4 muestran la estructura básica para un filtro CIC diezmador e interpolador
respectivamente.

Figura 3. Estructura de un filtro CIC diezmador.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 16 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 4. Estructura de un filtro CIC interpolador.

La estructura básica en ambos casos se compone de combinadores e integradores. El bloque


intermedio, en caso del diezmador, elimina R-1 muestras de cada conjunto de R muestras que
ingresan. El bloque intermedio, en caso del interpolador, inserta R-1 muestras en cero por cada
muestra que ingresa. Esta estructura es eficiente para cambios de gran magnitud en la frecuencia
de muestreo ya que no requieren circuitos de multiplicación y pocos elementos combinadores e
integradores.

Para el caso de la evaluación de las funciones trigonométricas se construyó un módulo CORDIC [8]
que permite la evaluación de las funciones SIN, COS y ATAN a través de una reconfiguración
sencilla (ver ANEXO A:).

Para finalizar, se debe resaltar que desde la propuesta de investigación se definieron para su
emulación los canales Gaussiano y Rayleigh. Para la codificación se definieron los códigos
convolucionales y de bloques, de estos últimos se eligieron los códigos Reed-Solomon debido a su
amplio uso en estándares vigentes de comunicación.

Bloques Hardware Diseñados

Para la construcción de los diferentes sistemas propuestos se analizó la configuración interna de


estos, encontrando que existen diferentes subsistemas que son comunes a múltiples sistemas.

A continuación se describen los principales subsistemas que conforman las diferentes


configuraciones para el desarrollo de las prácticas de laboratorio. En el ANEXO B: se encuentran de
manera detallada algunas de las posibles prácticas que se pueden configurar con los bloques
hardware desarrollados en este proyecto.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 17 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Bloques de modulación y demodulación en fase

Para la modulación en fase se consideró su forma diferencial debido a que este esquema es
robusto ante ambigüedades en la fase [19], adicionalmente la modulación en fase básica se puede
implementar fácilmente a partir de la eliminación de codificador diferencial del bloque de
modulación en fase diferencial. Los bloques para modulación y demodulación en fase son
mostrados en la Figura 5 y en la Figura 6 respectivamente.

Bits de Codificador Mapeador Símbolos de


entrada Diferencial salida

Figura 5. Modulador de fase diferencial.

Símbolos Decodificador demapeador Bits de


de entrada Diferencial salida

Figura 6. DeModulador de fase diferencial.

Codificador y Decodificador diferencial:

Las modulaciones diferenciales (DBPSK/DQPSK) requieren una etapa de codificación diferencial


antes del proceso de modulación básico. En la Figura 7 se muestra la estructura básica de un
codificador diferencial, la cual es la base para su implementación en hardware.

Figura 7 Codificador diferencial

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 18 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Se puede observar que la salida del codificador diferencial solo cambia de estado (de 0 a 1 o de 1 a
0) si el bit de entrada es 1, en otro caso la salida permanece en su estado anterior.

El codificador diferencial se implementa mediante un sistema recursivo de primer orden que


opera el bit de entrada con la salida anterior del codificador a través de una operación de suma en
módulo-2.

En el sistema de demodulación en fase diferencial, el bloque decodificador diferencial se puede


implementar antes o después del proceso de de-mapeo de los símbolos. Donde la función del
decodificador se realiza mediante un sistema no recursivo de primer orden que opera el símbolo
de entrada actual y el símbolo de entrada anterior a través de la siguiente expresión

𝑦𝑘 = 𝑥𝑘 × 𝑥𝑘−1

Donde 𝑥𝑘 y 𝑦𝑘 representa los símbolos de entrada y los símbolos de salida del decodificador
diferencial respectivamente.

En el ANEXO A: se presenten en detalle la implementación en hardware del codificador y


decodificador diferencial para los casos de DBPSK/DQPSK.

MAPEADOR y DE- MAPEADOR DE CONSTELACION

Las modulaciones digitales en los sistemas modernos se implementan en dos etapas principales, el
proceso de mapeo en banda base y su posterior desplazamiento a frecuencia de portadora
respectiva, esta última etapa se realiza de forma analógica, sobretodo en bandas superiores a VHF.

El mapeo en banda base consiste en asignar a un bit o conjunto de bits un único símbolo
representado por un número complejo. La magnitud y la fase del número mapeado determinan el
tipo de modulación. La Figura 8 muestra el proceso de mapeo para una constelación QPSK.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 19 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 8. Proceso de mapeo en constelación QPSK.

Cada número complejo representa una señal senoidal de salida cuya y amplitud dependen de la
posición del símbolo dentro del plano complejo.

En los sistemas digitales; el mapeo en banda base es realizado de forma sencilla con el uso de
tablas de búsqueda dinámica (LUTS)[6][30] .

Para el caso del de-mapeador BPSK la estimación del bit recibido se hace a partir de la información
del signo del símbolo recibido, en este caso un símbolo positivo equivale al bit “1” y un símbolo
negativo equivale al bit “0”. La implementación de este proceso en una plataforma hardware se
hace a partir de la extracción del bit de signo y su posterior complemento a 1.

Para el caso del de-mapeador QPSK la estimación de la pareja de bits recibida se hace a partir de la
información del signo de las partes real e imaginaria del símbolo recibido, a partir de esto es
posible construir una LUT que identifique la posición del símbolo recibido en los cuatro cuadrantes
de la constelación QPSK. Cada cuadrante dentro de la constelación representa una pareja de bits.

En el ANEXO A: se muestra la implementación hardware del mapeador y demapeador para los


sistemas DBPSK/DQPSK.

Bloques de modulación en frecuencia

Al igual que los bloques de modulación en fase, el bloque de modulación en frecuencia (FM)
realiza su operación en banda base, posteriormente la señal a su salida es llevada a frecuencia de
portadora.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 20 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

La modulación FM es llevada a cabo variando la frecuencia instantánea de una señal portadora a


partir de la amplitud de la señal moduladora. La expresión que define una señal FM en banda base
se muestra a continuación [10],

𝑦𝐹𝑀 (𝑡) = 𝐴 𝑒 −𝑗𝐾𝑓 ∫ 𝑚(𝑡) 𝑑𝑡

Para su implementación en hardware se realiza una aproximación de primer orden de la


integral y la evaluación de la función exponencial compleja se hace usando un procesador
CORDIC en modo rotación. En el ANEXO A: se muestra la implementación hardware del
modulador FM así como del procesador CORDIC. La Figura 9 muestra un diagrama de
bloques del modulador FM implementado.

Sal_Real
EN + x CORDIC
Sal_Imag

-1 RDY
ND Z Sens

Figura 9. Diagrama de Bloques del Modulador FM.

Para la demodulación FM existen múltiples enfoques, sin embargo, aprovechando el desarrollo


hecho del procesador CORDIC se implementó un demodulador basado en arcotangente [XX]. La
expresión que define la señal demodulada en banda base se muestra a continuación:

𝑜𝑢𝑡(𝑘) = 𝑑𝑔𝑎𝑖𝑛 ∗ (arctan(𝑖𝑛(𝑘) ∗ 𝑖𝑛′ (𝑘 − 1)))

Donde 𝑑𝑔𝑎𝑖𝑛 es una constante, para compensar la ganancia del modulador FM, 𝑖𝑛(𝑘) es la
entrada actual al demodulador y 𝑜𝑢𝑡(𝑘) es la salida del mismo. La Figura 10 muestra un
diagrama de bloques del demodulador FM implementado.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 21 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 10. Diagrama de Bloques del demodulador FM.

En el ANEXO A: se muestra la implementación hardware del modulador y demodulador FM.

Bloques de modulación y demodulación en cuadratura (I/Q)

La modulación I/Q es utilizada comúnmente en equipos de comunicaciones modernos. En


este tipo de modulación la señal a modular se separa en una señal I, que corresponde a la
señal en fase, y a una señal Q que representa la componente de cuadratura.

La operación realizada en el modulador representa un desplazamiento en la frecuencia, ya


que se hace una multiplicación por la señal portadora 𝑒 𝑗𝑤𝑡 en el dominio del tiempo. En el
demodulador se multiplica la señal recibida por la versión complejo conjugada de la señal
portadora, lo que desplaza en frecuencia nuevamente la señal. La acción del modulador y
demodulador I/Q se describe a continuación,

𝑦(𝑡) = 𝑥(𝑡)𝑒 𝑗𝑤𝑡

𝑧(𝑡) = 𝑥(𝑡)𝑒 𝑗𝑤𝑡 ∙ 𝑒 −𝑗𝑤𝑡

En este caso, 𝑥(𝑡) representa la señal moduladora y 𝑦(𝑡) la señal I/Q. La señal 𝑧(𝑡)
representa la señal demodulada, que en caso de sincronización perfecta corresponderá
exactamente a 𝑥(𝑡).

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 22 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

La forma de realizar el modulador I/Q fue utilizando el algoritmo CORDIC en el modo


rotación, el cual genera la señal exponencial compleja como un par de señales seno y
coseno de frecuencia 𝑤.

La Figura 11 muestra un diagrama de bloques del modulador y demodulador I/Q


implementados.

CORDIC Algorithm
In_Real x Xn Out_Real
In_Imag y z RDY RDY

módulo 2 pi

Contador

Figura 11. Diagrama de bloques del modulador I/Q.

Teniendo en cuenta que en el proceso de demodulación sólo se cambia el signo de la componente


imaginaria de la exponencial compleja, es posible utilizar el mismo hardware de modulación I/Q
para la demodulación I/Q.

En el ANEXO A: se muestra la implementación hardware del modulador y demodulador I/Q.

Bloques de Sincronización de Tiempo y Fase

En los sistemas de comunicación tanto el transmisor como el receptor deben tener una base de
tiempo en función de la cual se determina aspectos como el inicio de los símbolos, las tramas de
datos y las fases de señales como la portadora. La dificultad radica en que el receptor sincronice su
base de tiempo de manera que pueda decodificar las señales recibidas correctamente, más aún
cuando aspectos como la posición del receptor y su velocidad afectan las diferencias de las bases
de tiempo del transmisor y del receptor. La solución a este problema consiste en que el receptor
ajuste las características de su base de tiempo (tiempo de muestreo y fase de portadora) de
manera que se corrijan las diferencias con el fin de sincronizar. Para el caso de este proyecto se
consideraron la sincronización de tiempo de símbolo, fase de portadora e inicio de trama. Para el
caso de la sincronización de tiempo de símbolo se eligió el algoritmo de Mueller & Müller, para el

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 23 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

caso de la detección del inicio de trama se usó un algoritmo basado en correlación cruzada,
finalmente para la corrección de fase se usó un lazo de Costas.

Sincronización de tiempo de símbolo basados en el algoritmo Mueller & Müller (M&M)

El algoritmo M&M es un sistema de sincronización temporal de símbolo en tiempo discreto de


amplio uso en sistemas de recepción [11]. La versión original del algoritmo es usada típicamente
en sistemas binarios [11] mientras que su versión optimizada [13] es usada principalmente en
sistemas M-arios. La Figura 12 muestra la estructura básica del algoritmo M&M clásico.

y (t) Bloque
ak
Muestreador de
Decisión

Detector
de Error
M&M

x (e)

Filtro
Lazo
Cerrado

Reloj
Ajustable

Figura 12. Diagrama de Bloque Sincronizador M&M.

La Figura 13 la estructura básica de la implementación del algoritmo M&M modificado.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 24 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 13. Diagrama de Bloque Sincronizador M&M modificado.

La principal diferencia entre los dos algoritmos, es que en el M&M modificado se incluye un nuevo
bloque de detección de error el cual es promediado con el detector de error del algoritmo clásico
para reducir el auto-ruido inducido por el proceso de sincronización [13].

Una descripción más detallada del funcionamiento de ambos algortimos y su


implementación hardware puede ser encontrada en el ANEXO A:.

Módulo de Sincronización de Trama

Es común en todos los sistemas de comunicación digital, que adicionalmente a la


sincronización de tiempo de símbolo, se requiera de un sistema que sincronice un paquete
de bits o trama.

Una forma común de implementar esta sincronización [1] es mediante la inserción de un


preámbulo binario de longitud fija en cada trama, lo cual permite que en el receptor se

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 25 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

estime el inicio de la trama a partir del cálculo de la correlación cruzada entre la señal
recibida y el preámbulo.

Para esto se utiliza una estructura similar a la de un filtro FIR, con la diferencia de que no
se realiza una multiplicación sino una operación XOR con cada uno de los bits del
preámbulo, conocido tanto por el receptor como por el transmisor. La Figura 14 muestra
un diagrama de bloques del sincronizador de trama basado en correlación cruzada.

64 Muestras

IN Z
-1
Z
-1 ... Z
-1

ROM xor ROM xor ... ROM xor

+ OUT

Figura 14. Sincronizador de Trama.

El inicio de la trama de carga útil se estima a partir del valor máximo de la correlación cruzada. El
umbral de decisión es determinado de acuerdo al tipo de modulación y longitud de la secuencia de
preámbulo.

Una descripción más detallada de la implementación hardware del sincronizador de trama


puede ser encontrada en el ANEXO A:.

Bloques de Codificación y Emulación de Canal

Uno de los parámetros de calidad de un sistema de comunicación digital es la tasa de bit de


erróneos (BER) en el receptor, una BER cercana a cero es sinónimo de buena calidad del enlace. La
aparición de errores en el receptor obedece principalmente a las condiciones del canal de
transmisión, el ruido y las interferencias. Una estrategia para reducir la BER, que es ampliamente
utilizada en los sistemas de comunicación digital, corresponde a la inserción de bits de

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 26 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

redundancia a los datos de carga útil de la información, de tal forma que el receptor pueda hacer
una recuperación de la información originalmente transmitida ante condiciones hostiles del canal
de comunicación mediante la corrección de errores.

Estos bits de redundancia se insertan de manera que haya unicidad en la recuperación de la


información, esto implica el uso de códigos especialmente desarrollados para tal fin como los
códigos convolucionales o los códigos de bloques [19]. Los módulos hardware de codificación de
canal desarrollados para el laboratorio modular de comunicaciones digitales corresponden a los
códigos convolucionales y a los códigos de bloque Reed-Solomon, ambos se eligieron por su
amplio uso en la industria y estándares de comunicación [16].

Adicionalmente, con el fin de emular diferentes condiciones de un canal de comunicación, se


desarrollaron bloques hardware que emulan un canal Gaussiano y un canal Rayleigh [28]. El canal
Gaussiano adiciona ruido blanco Gaussiano de potencia configurable a la señal transmitida, por
otra parte el canal Rayleigh aplica múltiples trayectorias y desvanecimientos configurables a la
señal transmitida, estos efectos son muy marcados en comunicaciones inalámbricas en interiores
o zonas con una alta densidad de edificaciones.

Bloques para Codificación y Decodificación Convolucional

Los estándares modernos de comunicación digital más usados utilizan codificadores


convolucionales con una tasa de codificación de r=1/2 [16], lo cual se adoptó para el desarrollo del
codificador convolucional de este proyecto. Este valor para r indica que por cada bit de
información se generan dos bits codificados [19]. La Figura 15 muestra la estructura básica de un
codificador convolucional de amplio uso en la industria [16].

Figura 15. Codificador Convolucional.

Desde el punto de vista algorítmico, el codificador se comporta como una máquina de estados
finitos (FSM).

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 27 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Las operaciones hechas por los operadores en forma de círculo corresponden a adiciones módulo-
2 de 1 bit. Nótese que por cada bit en el puerto de entrada se entregan dos bits en los puertos de
salida. La cantidad de registros y la forma en qué se conectan sus salidas a los sumadores módulo-
2 definen la característica del codificador convolucional con r=1/2. La cantidad de registros es
denotada mediante la cantidad K, que para el ejemplo es K=7.

La forma de la conexión es representada mediante su codificación en base binaria, esto se hace


asignando un uno a aquel registro cuya salida está conectada a un sumador módulo-2, y asignando
un cero a aquel registro cuya salida no está conectada a un sumador módulo-2, esto se hace para
las ramas superior e inferior del codificador convolucional de la Figura 15. La posterior
representación en base octal de este par de números binarios se conoce como los polinomios
generadores del codificador, que para el codificador de la Figura 15 son 𝑔0 = 1338 y 𝑔1 = 1718 .
El codificador convolucional de la Figura 15 puede corregir hasta t=3 bits erróneos [19].

El codificador convolucional desarrollado permite la parametrización de K y de los polinomios


generadores 𝑔0 y 𝑔1 .

El proceso de decodificación convolucional es mucho más complejo que el proceso de codificación,


sin embargo, en el año 1967 el señor Andrew Viterbi [19] derivó un algoritmo que permite la
decodificación, de manera única, de una cadena de bits codificada convolucionalmente; este
algoritmo recibe el nombre de algoritmo de Viterbi.

La Figura 16 muestra un diagrama de bloques general para un sistema de decodificación


convolucional mediante algoritmo de Viterbi.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 28 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 16. Diagrama de bloques general del decodificador Viterbi.

El algoritmo de Viterbi parte de la representación mediante diagrama de Trellis del codificador


convolucional [19]. En este caso, el bloque “Métricas de Rama” calcula la distancia Hamming entre
el par de bits codificados que se reciben y todas las posibles salidas del codificador convolucional,
de este proceso se selecciona, a través de la unidad “ACS”, la mejor rama y se acumulan las
métricas para todos los estados del codificador convolucional. Este proceso se repite para todos
los bits recibidos, de tal forma que en el bloque “Memoria de Rutas Sobrevivientes” se tiene la
ruta con todas las transiciones de estado que llevaron al codificador convolucional en el
transmisor a producir los bits codificados, finalmente a partir de estas transiciones es posible
recuperar los bits de información originalmente transmitidos en el bloque “Memoria de Salida”.

En el ANEXO A: se presenta una descripción detallada de la implementación hardware del


codificador convolucional y del decodificador Viterbi.

Codificador y decodificador Reed-Solomon

Los códigos Reed-Solomon son códigos de bloques lineales cíclicos no binarios [19]. El uso de
códigos Reed-Solomon se ha dado principalmente en sistemas de comunicación espacial [19] y en
otros sistemas donde se requiera una alta capacidad de corrección de errores.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 29 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Un código Reed-Solomon se caracteriza con los siguientes parámetros: Longitud de palabra


codificada 𝑛 = 2𝑚 − 1 (símbolos), tamaño del símbolo de 𝑚 bits, capacidad de corrección 𝑡
símbolos, número de símbolos de paridad 𝑛 − 𝑘 = 2𝑡 y número de símbolos de carga útil k.

El análisis e implementación de los sistemas de codificación Reed-Solomon se hace en un cierto


tipo de espacios finitos denominados campos de Galois [29]. Para el caso de los códigos Reed-
Solomon, se consideran campos de Galois cuya longitud es 2𝑚 . En estos campos las operaciones
aritméticas básicas se definen de forma diferente al espacio de los números reales,
adicionalmente los elementos del campo pueden ser representados a partir de un polinomio
primitivo [29]. En el ANEXO A: se presenta una explicación más detallada de los campos de Galois y
su relación con los códigos Reed-Solomon.

La Figura 17 presenta un diagrama de bloques para un codificador Reed-Solomon.

Figura 17. Codificador Reed-Solomon.

El proceso de codificación se hace mediante la división polinomial entre el mensaje y el polinomio


generador, el resultado de este proceso se concatena con el mensaje entrante.

El proceso de decodificación Reed-Solomon es complejo, y para implementaciones prácticas se


debe recurrir a múltiples algoritmos que realizan la decodificación en diferentes etapas.

El primer paso en el proceso de decodificación Reed-Solomon corresponde a comprobar si el


mensaje tiene o no errores, esto se realiza calculando los síndromes [19]; luego se procede a
calcular el polinomio que indica en qué parte se encuentra el error, lo cual se realiza con el
algoritmo sin inversión de Berlekamp-Massey [22]; seguidamente se hallan las raíces del polinomio
anterior para conocer las posiciones, estas se hallan por medio del algoritmo de Chien [18]; y por

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 30 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

último se halla el polinomio del valor del error con el algoritmo de Forney [20][21].La estructura
básica del decodificador Reed-Solomon se muestra en la Figura 18.

Figura 18. Decodificador Reed-Solomon

En el ANEXO A: se presenta una descripción detallada de la implementación hardware del


codificador y decodificador Reed-Solomon.

Emuladores de Canal Gaussiano y Canal Rayleigh

Con el fin de poder realizar de forma práctica pruebas del efecto del canal de comunicaciones en
diferentes escenarios, es necesario crear un emulador de canal que posea la capacidad de generar
condiciones específicas de diferentes parámetros del canal como potencia de ruido y respuesta al
impulso.

Esto permite ajustar los sistemas de comunicación en un ambiente de laboratorio de forma que se
pueda inferir su comportamiento en un ambiente real.

Canal Gaussiano

El canal de ruido blanco Gaussiano aditivo (AWGN), es un modelo de canal utilizado para analizar
sistemas de comunicación [19]. Su función es adicionar ruido blanco Gaussiano a la señal que pasa
a través de él.

La señal de salida del canal AWGM puede describirse de la siguiente manera:

𝑟(𝑡) = 𝑠(𝑡) + 𝑛(𝑡)

Donde 𝑠(𝑡) es la señal de entrada al canal y 𝑛(𝑡) es el ruido adicionado por el canal.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 31 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Para la implementación de este canal se requiere la generación de números pseudo-aleatorios con


distribución Gaussiana. Para el canal de audio, generar una señal que tenga características de
ruido blanco en todo su ancho de banda no presenta grandes dificultades, pues sólo se requiere
que la densidad espectral de potencia (PSD) del ruido sea aproximadamente plana en un ancho de
banda de tan solo 36 kHz, esto es posible gracias a que el hardware desarrollado puede generar
números pseudo-aleatorios a frecuencias cercanas a los 100 MHz.

De las múltiples formas de generar números pseudo-aleatorios con distribución Gaussiana, se


encontró que para implementaciones hardware donde los recursos hardware no son una
limitante, uno de los enfoques más apropiados es el basado en el teorema del límite central
[27][28], el cual considera que la suma o promedio de N variables aleatorias convergen a una
distribución normal.

La implementación de este enfoque en hardware requiere la generación de múltiples señales


pseudo-aleatorias distribuidas uniformemente las cuales se suman y se ajustan de acuerdo a la
relación señal a ruido (SNR) deseada en el canal.

La Figura 19 muestra un esquema general del emulador de canal AWGN.

Figura 19. Esquema general Canal AWGN.

Se puede observar que un circuito multiplicador controla la potencia de ruido aditivo.

El generador WGN es implementado a través de N generadores de números pseudo-aleatorios


independientes con distribución uniforme, cada generador fue implementado a partir de LFSRs
(Linear Feedback Shift Registers) [13][26][27]. La Figura 20 muestra el diagrama de bloques del
generador WGN implementado.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 32 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 20. Diagrama del generador WGN.

Canal Rayleigh

Cuando la señal que es transmitida a través de un canal sufre una serie de cambios debido a la
recepción de más de una señal, la distribución de probabilidad de este tipo de fenómenos se
denomina “Rayleigh”, siendo este un factor que reduce la eficiencia de uso del espectro cuando
en una segunda o tercera trayectoria, es atenuada o amplificada la señal [XX].

Estas réplicas se presentan en los sistemas de comunicaciones inalámbricas debido a las


características del medio por el cual viaja la señal. Un ejemplo de esto son los obstáculos como
carros, edificios y árboles cuya presencia genera tres tipos de fenómenos: reflexión, difracción y
dispersión [28]; todas estas replicas generadas de la señal original son denominadas señales
multitrayectoria [28]. El canal de transmisión que genera este tipo de comportamiento es llamado
“multipathchannel” (“canal multitrayectoria”) o canal de Rayleigh debido a la distribución de
probabilidad que adopta.

La Figura 21 muestra cómo la difracción, reflexión y dispersión pueden producir más de una señal
en el receptor.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 33 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 21. Reflexión, difracción y dispersión generando varias réplicas de la señal original enviada por el
transmisor.

Este fenómeno puede ser representado a través del modelo de la Figura 22.

Figura 22. Diagrama en bloques de un canal multitrayectoria con desvanecimiento de Rayleigh

En este modelo, debido al fenómeno multitrayectoria, la señal transmitida toma 𝑐 caminos


diferentes. La señal que viaja por la trayectoria 𝑐-ésima se retrasa 𝑇𝑐 segundos y se atenúa según
𝐴𝑐 . En el módulo hardware los retrasos son implementados a través de registros de
desplazamiento que realizan retrasos de tiempo como múltiplos enteros del periodo del reloj
maestro. Por otra parte las atenuaciones son implementadas usando circuitos multiplicadores.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 34 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

En el ANEXO A: se presenta una descripción detallada de la implementación hardware de los


emuladores de canal AWGN y Rayleigh.

Bloques de Conformación de Pulso

Dadas las limitaciones de ancho de banda de los canales de comunicación, los efectos nocivos de
la interferencia intersimbólica [10] y los requerimientos de forma del pulso de los algoritmos de
sincronización de tiempo de símbolo; los transmisores deben representar los símbolos digitales
mediante formas de onda apropiadas.

Las formas de onda usualmente utilizados en estándares de comunicación modernos


corresponden principalmente a formas Coseno Alzado y Gaussianas [13]. Ambas formas de onda
exhiben características deseables tanto en el dominio de tiempo y frecuencia, tales como ancho de
banda, simetría par y el cumplimiento de los criterios de Nyquist en cuanto a la minimización de la
interferencia intersimbólica.

Módulo Filtro Coseno Alzado

La forma de onda para un pulso coseno alzado se describe mediante la siguiente expresión,

1 𝜋𝑡
(1 + cos ( )) , |𝑡| < 𝑇
𝑔(𝑡) = {2 𝑇
0 , 𝑂𝑡𝑟𝑜𝑠

En este caso T es la duración del símbolo.

La Figura 23 muestra un conjunto de formas coseno alzado.

Figura 23. Formas de onda Coseno Alzado

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 35 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

De la figura se puede observar la minimización de la interferencia intersimbólica debido a que los


puntos de decisión coinciden con los nulos de los pulsos vecinos. Por otra parte la simetría de las
formas de onda son apropiadas para la operación de los sincronizadores de tiempo de símbolo.

El módulo de conformación de pulso coseno alzado fue implementado como un interpolador en


estructura polifase basado en filtro FIR [6]. La respuesta al impulso del filtro tiene forma coseno
alzado. La estructura polifase para el filtro interpolador coseno alzado se muestra en la Figura 24.

Figura 24. Conformador de pulso coseno alzado

De acuerdo a la estructura polifase, por cada símbolo digital de entrada, el conformador de pulso
entrega 𝑁𝑠𝑝𝑠 muestras de la forma de onda coseno alzado.

Todos los filtro FIR fueron implementados usando la estructura transpuesta [6]. Esta estructura de
implementación es mostrada en la Figura 25.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 36 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 25. Estructura transpuesta para filtros FIR.

En el ANEXO A: se presenta una descripción detallada de la implementación hardware del


conformador de pulso coseno alzado.

Módulo Filtro Gaussiano

La forma de onda de salida de un pulso Gaussiano se describe mediante la siguiente


expresión

−𝑡2
( 2)
𝑒 2𝛿
𝑔(𝑡) =
√2𝜋.𝛿

Donde

√ln(2)
𝛿=
2𝜋𝐵𝑇

𝛿 es la desviación estándar de la distribución gaussiana, B es el ancho de banda del pulso y


T es la duración del símbolo.

En la Figura 26, se puede observar la forma de onda Gaussiana.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 37 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 26. Forma de onda Gaussiana.

Esta forma de onda presenta las mismas características del pulso coseno alzado en cuanto a
minimización de la interferencia intersímbolo y simetría par.

El módulo de conformación de pulso Gaussiano fue implementado de la misma forma que el


conformador de pulso coseno alzado, de acuerdo a la estructura mostrada en la Figura 24. En este
caso la respuesta al impulso es modificada por una que exhiba una forma Gaussiana.

En el ANEXO A: se presenta una descripción detallada de la implementación hardware del


conformador de pulso Gaussiano.

Posibles Configuraciones

Con los bloques básicos construidos es posible implementar muchos de los sistemas de
comunicación digital existentes, y plantear diferentes configuraciones, variar sus parámetros y
analizar en general el desempeño de estos sistemas para diferentes escenarios. Las
configuraciones básicas de sistemas de comunicación que se pueden implementar en su totalidad
con los bloques construidos se muestran a continuación.

Sistema M-QAM

La Figura 27 muestra la configuración para un sistema de comunicación QAM usando los bloques
construidos.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 38 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

bits de
entrada Mapeador Conformador Interpolador Modulador Señal
de Pulso CIC I/Q
QAM

bits de
Sincronización Diezmador demodulador
salida demapeador Señal
de Tiempo de CIC I/Q QAM
símbolo y fase

Figura 27. Sistema transmisor/receptor QAM.

Sistema M-PSK

La Figura 28 muestra la configuración para un sistema de comunicación M-PSK usando los bloques
construidos.

bits de
entrada Mapeador Conformador Interpolador Modulador Señal M-
de Pulso CIC I/Q
PSK

bits de
Sincronización Diezmador demodulador
salida demapeador Señal M-
de Tiempo de CIC I/Q PSK
símbolo y fase

Figura 28. Sistema transmisor/receptor M-PSK.

Sistema M-FSK

La Figura 29 muestra la configuración para un sistema de comunicación M-FSK usando los bloques
construidos.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 39 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Mapeador
Conformador Modulador Interpolador Modulador Señal M-FSK
bits de
de Pulso FM CIC I/Q
entrada

bits de Señal
salida Sincronización demodulador Diezmador demodulador M-FSK
demapeador
de tiempo de FM CIC I/Q
símbolo

Figura 29. Sistema transmisor/receptor M-FSK.

Sistema GMSK

La Figura 28 muestra la configuración para un sistema de comunicación GMSK usando los bloques
construidos.

Conformador Modulador Interpolador Modulador Señal GMSK


Mapeador
de Pulso FM CIC I/Q
bits de Gaussiano
entrada

bits de Señal
salida Sincronización demodulador Diezmador demodulador GMSK
demapeador
de tiempo de FM CIC I/Q
bit

Figura 30. Sistema transmisor/receptor GMSK.

Codificadores de Canal

La Figura 31 muestra la configuración para un sistema de codificación/decodificación


convolucional usando los bloques construidos.

bits de bits de
entrada Codificador Emulador de Decodificador salida
Convolucional Canal Viterbi

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 40 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 31. Sistema de codificación/decodificación convolucional.

La Figura 31 muestra la configuración para un sistema de codificación/decodificación Reed-


Solomon usando los bloques construidos.

Símbolos de Símbolos
entrada Codificador Emulador de Decodificador de salida
RS Canal RS

Figura 32. Sistema de codificación/decodificación Reed-Solomon.

A partir de las diferentes configuraciones propuestas anteriormente, se plantean una serie de


prácticas de laboratorio las cuales se pueden encontrar de forma detallada en el ANEXO B:.

RESULTADOS Y DISCUSIÓN

Todos los bloques desarrollados fueron probados así como también algunas de las
configuraciones posibles que se propusieron en el capítulo anterior. Estas pruebas fueron
realizadas sobre el FPGA de Altera EP2C70F896C6 que hacer parte de la tarjeta de
desarrollo DE2-70 de Terasic Technologies [2].

Las señales de prueba fueron capturadas usando el analizador lógico Signal Tap II de
Altera [14] y el simulador Modelsim-Altera de Mentor Graphics [31].

Bloques de modulación en frecuencia

Modulador Fm

En la Figura 33 se muestra el resultado experimental obtenido para el modulador FM.

La señal data_in toma valores entre 0 y 1, y las señales d_out_imag y d_out_real son las
salidas del bloque correspondientes a la señal envolvente compleja.

En estas señales de salida se puede ver como la frecuencia de estas mismas

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 41 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

varía de acuerdo con el símbolo de entrada y que la fase de las señales es continua

d_out_imag

d_out_real

data_in

Figura 33. Resultados experimentales modulador FM.

Demodulador FM

El resultado obtenido para el demodulador FM del bloque receptor con el Signal Tap de
Quartus es mostrado a continuación.

Para efectos de prueba, se utilizó un bloque de memoria ROM, en el cual se guardaron dos
señales de envolvente compleja Out_rom_I y Out_rom_Q, las cuales corresponden a la
entrada de este bloque. En la salida de éste (Data_out) se puede observar la señal
demodulada.

Figura 34. Resultado experimental Demodulador FM.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 42 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Bloques de modulación y demodulación en cuadratura (I/Q)

Modulador I/Q

La Figura 34 muestra los resultados obtenidos para el modulador I/Q.

Figura 35. Resultados experimentales, espectro de salida y entrada de modulador I/Q.

Esta figura fue obtenida exportando los datos generados por Signal Tap a Matlab, y
calculando posteriormente el espectro de esta señal.

La figura a la izquierda es el espectro de la señal de entrada, y la figura a la derecha


muestra el espectro de la señal de salida.

Nótese que el espectro de la señal de salida está desplazada en la frecuencia hasta 10 KHz,
frecuencia de la señal portadora.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 43 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Demodulador I/Q

La Figura 36 muestra los resultados experimentales del bloque de demodulación I/Q.

(a)

(b)

Figura 36. Resultados experimentales demodulador IQ. (a) espectro señal de entrada. (b) espectro
señal de salida.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 44 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

En este bloque, se encuentra a la salida (Figura 36(b)) un desplazamiento en la frecuencia


de los datos como es esperado además de una imagen espectral en 20kHz consecuencia
del espectro periódico de la señal discreta.

Bloques de Sincronización de Tiempo y Fase

El sincronizador de tiempo fue probado utilizando una trama aleatoria de bits, con un
preámbulo utilizado para estimar el comienzo de la trama. En la figura 49, donde se
muestran los resultados obtenidos en el FPGA y exportados a Matlab, se puede notar que
el error temporal mostrado en la Figura 37(a) toma valores altos mientras es procesado el
preámbulo y posteriormente los datos son sincronizados con el reloj de forma apropiada y
que la corrección temporal mostrada en la Figura 37(b) tiende a cero al mismo tiempo.

El sistema sincronizador es capaz de funcionar a una velocidad máxima de 78 MHz.

a)

b)

Figura 37. Resultados obtenidos, sincronizador de tiempo.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 45 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Detección de Preámbulo

En la Figura 38 se muestra la correlación cruzada entre el preámbulo y los datos de salida.


Esta operación es realizada hasta que el resultado alcance un umbral, lo cual activa una
bandera que indica el inicio de los datos. Para este entonces los datos están sincronizados.

Figura 38. Función de Correlación cruzada entre dato de salida y preámbulo.

Bloques de Codificación y Emulación de Canal

Al tener el hardware ya generado, se procede a realizar una simulación temporal del codificador
Convolucional con las señales de entrada y salida que se muestran en la Figura 39.

Figura 39. Simulación temporal del codificador Convolucional.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 46 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Como se puede ver al codificador Convolucional se le ingresa la siguiente trama de 48 bits:

𝑑𝑎𝑡𝑎_𝑖𝑛:101101110111101111101111110111111101111111000000

Al comparar la salida 𝑎 y 𝑏 con las salidas arrojadas mediante la función 𝑐𝑜𝑛𝑣𝑒𝑛𝑐 de Matlab, se
verifica que los símbolos de salida son iguales, confirmando el buen funcionamiento de este
bloque, teniendo en cuenta también que la señal de (ready) se activa en el tiempo preciso en que
es realizada la codificación.Nótese que los últimos 6 datos son cero (0) para asegurar que el
codificador termine en el estado cero, con el fin de reducir un poco la complejidad de operación
del decodificador.

Al obtener estos resultados en la simulación temporal, se procede a probar el codificador sobre el


FPGA; Utilizando el analizador lógico SignalTap IIse puede ver en la Figura 40 las señales de
entrada y salida arrojadas.

Figura 40. Respuesta del codificador Convolucional utilizando el analizador lógico SignalTap II.

Con esta prueba se corrobora el buen funcionamiento del codificador Convolucional sintetizado en
el dispositivo real.

Los recursos del FPGA utilizados por el codificador Convolucional se muestran en la Tabla 1.

Recursos Utilización

Elementos lógicos 12/68,416 (< 1%)

Funciones combinacionales 10/68,416 (< 1%)

Registros lógicos dedicados 11/68,416 (< 1%)

Total pines 7/622 ( 1%)

Bits de memoria 0/1,152,000 ( 0%)

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 47 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Multiplicadores de 9 bits 0/300 ( 0%)

PLL`s 0/4 ( 0%)

Tabla 1. Recursos utilizados por el codificador Convolucional.

Se puede notar que el uso de recursos del codificador Convolucional es demasiado bajo en
comparación a los recursos que ofrece el FPGA utilizado, permitiendo así una velocidad de
operación a una frecuencia máxima de 420.17MHz.

Simulación y resultados experimentales del decodificador Viterbi

La simulación temporal del decodificador Viterbi se realizó de dos formas, la primera es la que se
observa en la Figura 39 en la cual los símbolos de entrada al decodificador son los mismos
arrojados por el codificador Convolucional como se ven en la Figura 41.

Figura 41. Simulación temporal del decodificador Viterbi con mensaje sin errores.

La segunda forma en la que se hizo la simulación temporal es la que se observa en la Figura 42 en


la cual se realizó un cambio en algunos bits con el objetivo de simular un error en la trama y
probar así la capacidad de corrección del decodificador.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 48 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 42. Simulación temporal del decodificador Viterbi con algunos errores en los símbolos de entrada.

Al mensaje codificado se le cambiaron 6 bits a propósito como se muestra en las posiciones que
indican las flechas rojas, al ingresar este nuevo mensaje modificado al decodificador Viterbi, se
observa que la trama de bits decodificados son iguales al mensaje original.

Para esta forma de simulación se realizaron diferentes pruebas aplicando varias combinaciones de
errores, obteniendo siempre una respuesta positiva de corrección en la cual siempre se mostró el
mensaje original.

Posteriormente al igual que para el codificador, se realizó la prueba en el FPGA con el SignalTap II
observándose en la Figura 43 la respuesta entregada por el decodificador.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 49 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 43. Respuesta del decodificador de Viterbi utilizando el analizador lógico SignalTap II.

Como se puede observar, la respuesta tanto en la simulación temporal como en el SignalTap IIes la
misma, ya que en la ROM requerida para realizar la prueba en el FPGA se ingresaron los mismos
símbolos codificados, esto con el fin de tener un mensaje de referencia en ambas pruebas y poder
comparar los resultados de manera más eficaz.

Los recursos del FPGA utilizados por el decodificador de Viterbi se muestran en la Tabla 2.

Recursos Utilización

Elementos lógicos 2,498/68,416 ( 4%)

Funciones combinacionales 2,487/68,416 ( 4%)

Registros lógicos dedicados 576/68,416 (< 1%)

Total pines 7/622 ( 1%)

Bits de memoria 21,727/1,152,000 ( 2%)

Multiplicadores de 9 bits 0/300 ( 0%)

PLL`s 0/4 ( 0%)

Tabla 2. Recursos utilizados por el decodificador de Viterbi.

Utilizando la herramienta del análisis de tiempos ClassicTimingAnalizer se observa que la


frecuencia máxima de operación del decodificador es de 108.64𝑀𝐻𝑧, equivalentes a un periodo
de reloj de 9.205 𝑛𝑠.

Codificación y decodificación Reed-Solomon

Para corroborar el funcionamiento del codificador y decodificador Reed-Solomon, se implementa


un código 𝑅𝑆(255,223), el cual como se presentó en la sección 1, tiene los siguientes parámetros:

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 50 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Tamaño del símbolo: 𝑚 = 8.

Capacidad de corrección: 𝑡 = 16

Para las simulaciones y resultados experimentales del codificador y decodificador Reed-Solomon


se elige, por facilidad, un mensaje con números consecutivos del 1 al 223. Debido a que la
duración de las simulaciones y pruebas experimentales son muy altas, las figuras mostradas son
imágenes secuenciales de las simulaciones y pruebas completas.

En las pruebas experimentales, las señales de entrada necesarias son: reloj, reset, datos y señales
de activación. El reloj y el reset se genera con los pines AD15 y T29, respectivamente, el primero es
un reloj de 50 𝑀𝐻𝑧 y el segundo un pulsor normalmente cerrado. Con respecto a las señales de
activación y los datos, se crea una memoria ROM, la cual va conectada a estas entradas,
permitiendo así el funcionamiento de los bloques.

Simulación y Resultados experimentales del codificador Reed-Solomon

Para el codificador Reed-Solomon mostrado en la Figura 17 se realiza la simulación temporal, la


cual es mostrada en la Figura 44.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 51 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 52 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 44. Simulación temporal del codificador 𝑹𝑺(𝟐𝟓𝟓, 𝟐𝟐𝟑)

Para corroborar que los símbolos generados por el codificador son los correctos se utilizó la
función rsenc de Matlab.

Según la herramienta ClassicTimingAnalizer de Quartus II, la máxima frecuencia de reloj a la que


puede trabajar el codificador es de 144.59 𝑀𝐻𝑧, lo que equivale a un periodo de 6.916 𝑛𝑠.

Adicionalmente en la Tabla 3 se muestran los recursos utilizados para el codificador 𝑅𝑆(255,223).

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 53 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Recursos Utilización

Elementos lógicos 1,033/68,416 (2%)

Funciones combinacionales 748/68,416 (1%)

Registros lógicos dedicados 887/68,416 (1%)

Bits de memoria 76,032/1,152,000 (7%)

Multiplicadores de 9 bits 0/300 ( 0%)

PLL`s 0/4 ( 0%)

Tabla 3. Recursos utilizados para un decodificador 𝑹𝑺(𝟐𝟓𝟓, 𝟐𝟐𝟑)

La prueba experimental del codificador se muestra en la Figura 45.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 54 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 45. Prueba experimental del codificador 𝑹𝑺(𝟐𝟓𝟓, 𝟐𝟐𝟑)

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 55 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Simulación y resultados experimentales del decodificador Reed-Solomon

En la Figura 46 se muestra la simulación temporal del decodificador Reed-Solomon. En la figura se


pueden observar también que el mensaje tiene agregado 14 errores, los cuales están encerrados
en rectángulos rojos. En condiciones normales, cada símbolo se demora 2𝑚 + 4𝑡 + 5 ciclos de
reloj para ser decodificado, pero para ver mejor el comportamiento, se muestra una salida del
mensaje 325 (𝑚 = 8 𝑦 𝑡 = 16) ciclos atrasada para así ver símbolo a símbolo la corrección que
realiza el decodificador.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 56 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 46. Simulación del decodificador 𝑹𝑺(𝟐𝟓𝟓, 𝟐𝟐𝟑) con 𝒎 = 𝟖 𝒚 𝒕 = 𝟏𝟔

La prueba experimental del decodificador 𝑅𝑆(255,223) es mostrada en la Figura 47.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 57 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 58 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 47. Prueba experimental del codificador 𝑹𝑺(𝟐𝟓𝟓, 𝟐𝟐𝟑)

En la figura se observa que el mensaje cuenta con 14 errores encerrados en rectángulos negros.

En la Tabla 4 se muestran los recursos utilizados para un decodificador 𝑅𝑆(255,223).

Recursos Utilización

Elementos lógicos 66,024/68,416 (97%)

Funciones combinacionales 62,784/68,416 (92%)

Registros lógicos dedicados 17,047/68,416 (25%)

Bits de memoria 604,184/1,152,000 (52%)

Multiplicadores de 9 bits 0/300 ( 0%)

PLL`s 0/4 ( 0%)

Tabla 4. Recursos utilizados para un decodificador 𝑹𝑺(𝟐𝟓𝟓, 𝟐𝟐𝟑)

Emuladores de Canal Gaussiano y Canal Rayleigh

A continuación se presentan la simulación temporal y los resultados experimentales para


cada uno de los canales de transmisión implementados usando la herramienta de
simulación del Quartus II, que verifican el correcto funcionamiento para cada uno de los
bloques.

Simulación y resultados experimentales canal AWGN

Una simulación temporal del canal AWGN es llevada a cabo para verificar el correcto
funcionamiento del sistema. La Figura 48a muestra los resultados de simulación y la Figura 48b los
resultados experimentales obtenidos mediante el FPGA con el esquema de generación expuesto
en la Figura 19.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 59 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 48. a) Resultados de Simulación. b) Resultados experimentales.

En la Figura 48a la señal (𝑐𝑙𝑒𝑎𝑟) es la encargada de activar y cargar los valores iniciales para cada
uno de los registros que conforman los LFSR, y la señal WGN, es la salida del generador de ruido
blanco que está compuesta por muestras aleatorias. La Figura 48b corresponde a los datos
experimentales que fueron adquiridos por medio del FPGA que se utilizó para el proyecto, donde
se puede observar nuevamente que la salida del generador de ruido si es aleatoria. Además puede
observarse la aleatoriedad de los datos tanto en los resultados de simulación como en los datos
experimentales. Cada una de las señales anteriormente descritas conforma una serie de números
con una distribución normal compuesta por datos de 8 bits, obteniendo así datos entre 0 y 255
para la variable aleatoria.

En la Figura 49 se puede observar el Ruido Blanco capturado después de obtenerse 64.000


muestras por medio del FPGA y graficado con respecto al tiempo.

Figura 49. Ruido Blanco Gaussiano

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 60 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

En la Figura 50 se puede observar un histograma de las muestras nombradas anteriormente


elaborado utilizando la función ℎ𝑖𝑠𝑡 de Matlab, como puede percibirse la forma de distribución de
esta señal es claramente una distribución normal, cumpliendo con lo requerido para este tipo de
simulaciones de canal. Los datos se encuentran limitados entre 0 y 255 ya que están especificados
para datos de 8 bits que son entregados cada ciclo de reloj.

Figura 50. Histograma datos experimentales.

Simulación y resultados experimentales canal Rayleigh

Para el buen entendimiento del funcionamiento del sistema se presenta a continuación los
resultados de simulación y experimentales del sistema completo.

La Figura 51 muestra los resultados del sistema para un ejemplo numérico básico, como también
el diagrama de bloques utilizado para la simulación de resultados.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 61 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 51. a) Esquema ejemplo b) Resultados de Simulación.

Este ejemplo cuenta con una señal de reloj a una frecuencia de 6 𝑀𝐻𝑧, un último retardo a 2 𝑢𝑠 y
una señal de (clear) en un momento dado. La señal de entrada para este ejemplo es una simple
secuencia de números consecutivos (sign) que está siendo desplazada y a su vez sumada con estas
replicas, siendo así la señal (𝑜𝑢𝑡_𝑟𝑒𝑔) el último retardo de la señal de entrada. Esta señal es
solamente un indicador del último retraso del sistema, pero no es utilizado en este como tal.

La señal (𝑜𝑢𝑡_𝑔𝑒𝑛) permite encontrar la suma de todas las réplicas de la señal que se deseen ver,
como se ha dicho anteriormente estos valores son parametrizables. La Tabla 5 presenta el flujo de
este ejemplo con el fin de aclarar aún más el proceso del sistema.

Fact. Ciclo de Reloj


Registro Sel. De
Multi 1 2 3 4 5 6 7 8 9 10 11 12
1 1 2 2 4 6 8 10 12 14 16 18 20 22 24
2 0 0 0 0 0 0 0 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6 1 1 0 0 0 0 1 2 3 4 5 6 7 8 Valor de
7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 los
8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Registros
9 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Señal de Salida 2 4 6 8 11 14 17 20 23 26 29 32
Tabla 5. Flujo Ejemplo

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 62 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

En la Figura 52 se presenta una prueba de simulación y resultados experimentales del canal por
completo, adicionando como entrada al canal una señal sinusoidal previamente cargada en una
memoria ROM.

Figura 52. a) Resultados de Simulación. b) Resultados Experimentales.

En la Figura 52 los resultados de simulación y experimentales frente a una entrada sinusoidal y a la


salida la suma de la señal original con tres réplicas con un factor de multiplicación de 1 para cada
replica, donde se puede observar la perdida de amplitud y suavidad de la señal.

Bloques de Conformación de Pulso

Filtro Gaussiano en Estructura Polifase

La Figura 53 muestra los resultados experimentales obtenidos al probar en el FPGA el filtro


Gaussiano.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 63 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

La parte de inferior de la figura, es la entrada del sistema, la cual se compone de muestras


aleatorias (1 y -1) que representan la señal binaria; y la parte superior de la figura, es la
correspondiente a la señal filtrada de salida del bloque. Allí se puede observar la forma
gaussiana de los símbolos de entrada.

data_out

data_in

Figura 53. Resultados experimentales filtro gaussiano con estructura polifase.

Pruebas a los bloques de cambio en la frecuencia de muestreo

Filtro CIC Interpolador

Los resultados al poner a prueba el filtro CIC interpolador en el bloque transmisor son
mostrados en la Figura 54.

Figura 54. Resultados experimentales filtro CIC interpolador.

Allí se puede ver como la señal de entrada (Out_rom) que son datos guardados en un
bloque de memoria ROM para efectos de prueba, están muestreados pobremente.

La señal Out_CIC presenta una significante mejoría en su forma, gracias al interpolado.

Filtro Diezmador CIC

La señal de salida y de entrada obtenidas experimentalmente de este bloque es mostrada


a continuación. Allí se puede ver como la señal Out_rom, que corresponde a la entrada del

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 64 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

bloque, es disminuida en su tasa de muestreo de drásticamente, para obtener la señal de


salida Out_CIC, con R = 8 y N = 8.

Figura 55. Señal entrada y salida filtro CIC diezmador.

En la Figura 56 se observa el espectro de la señal de salida del filtro CIC, en la cual ha


desaparecido la imagen espectral de 20kHZ.

Figura 56. Resultados experimentales filtro CIC diezmador, espectro de frecuencia.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 65 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Pruebas y resultado de las configuraciones posibles

Sistema GMSK

Para el sistema GMSK general se hizo un análisis de desempeño tomando en cuenta dos
factores principales: la exactitud de los datos y el costo computacional. En la exactitud de
los datos se observa que los datos transmitidos correspondan a los recibidos y en la parte
del costo computacional se analiza que cantidad del FPGA es usado en todo el proyecto.

Resultados Experimentales

En la Figura 57 se observan los resultados experimentales del sistema de comunicación


GMSK. Como se puede observar, se presenta al principio la latencia del sistema, y luego se
tienen a la salida los datos tal cual como salieron de la ROM en la entrada, en el dato 64 se
activa el bit que indica que se ha procesado el preámbulo.

Figura 57. Funcionamiento del sistema de comunicación.

También se determinaron otros parámetros importantes del sistema el ancho de banda


(BW) el cual fue de 1907Hz; la tasa de error de bit (BER) que, con las condiciones de
transmisión, siempre fue 0; y la eficiencia espectral que toma un valor de 0.399. Dichos
parámetros fueron hallados utilizando MATLAB.

Utilización de Recursos
La Tabla 6 y la Tabla 7 muestran los recursos de la FPGA consumidos por el transmisor y
receptor del sistema de comunicaciones respectivamente.

Este sistema fue puesto a prueba utilizando el FPGA EP2C70F896C6 de Altera. Sin
embargo es posible utilizar una FPGA de gama baja, ya que el consumo de recursos no es
elevado.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 66 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Element Resources Percentage


Logic elements 6,702/68,416 10%
Combinational functions 6,458/68,416 9%
Dedicated logic registers 2,687/68,416 4%
Memory bits 8,248/1,152,000 <1%
embedded multiplier 9 bits 4/300 1%
Tabla 6. Consumo de recursos de FPGA por parte del transmisor.

Element Resources Percentage


Logic elements 6,140/68,416 9%
Combinational functions 5,295/68,416 8%
Dedicated logic registers 3,971/68,416 6%
Memory bits 15,914/1,152,000 1%
embedded multiplier 9 bits 30/300 10%
Tabla 7. Consumo de recursos de FPGA por parte del receptor.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 67 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

CONCLUSIONES

EL presente proyecto es un aporte significativo a los recursos de laboratorio con que cuenta el
programa de ingeniería electrónica, el cual permitirá mejorar sustancialmente la formación de los
estudiantes en el campo de las comunicaciones digitales, los sistemas digitales y el procesamiento
de señales.

Los aspectos teóricos afrontados para la implementación de los diferentes bloques hardware
fueron estudiados a fondo y llevados al contexto de la implementación real, culminado en un
producto funcional y probado.

El proyecto fue una oportunidad para adquirir experiencia en el desarrollo de productos con
capacidad de competir con desarrollos comerciales, desde el ambiente académico, que
adicionalmente hace una contribución a la producción científica mediante la implementación
algoritmos en hardware de manera concurrente a partir de algoritmos que tradicionalmente son
implementados en software de forma secuencial.

El proyecto demuestra que es posible desarrollar herramientas de laboratorio de bajo costo, de


alta calidad a partir del recurso humano, la formación en investigativa y el desarrollo de proyectos
de investigación que además generan producción académica.

Un aspecto importante que mostro la exploración de alternativas para el desarrollo del proyecto;
es que modelos de desarrollo tecnológico como el software libre y el hardware libre poseen la
excelente característica de permitir a los investigadores del área tecnológica, acceder a un
conocimiento detallado, practico y funcional en condiciones reales. Tradicionalmente
conocimiento con estas características era manejado en secreto por la industria lo cual hacia
bastante difícil su acceso desde el mundo académico, lo que generaba que principalmente las
universidades con condiciones para realizar alianzas con las empresas líderes en tecnología,
lograran realizar desarrollos tecnológicos competitivos con productos comerciales en el área de las
comunicaciones digitales.

El desarrollo con hardware reconfigurable permite el diseño, construcción y prueba de hardware


electrónico complejo en un corto tiempo y con costos razonables. Estos aspectos eliminan
limitaciones para el desarrollo tecnológico, pues no es necesario contar con grandes presupuestos
o infraestructura para el desarrollo de productos, adicionalmente con la construcción de módulos
de propiedad intelectual es posible su fácil y económica reproducción lo que le da al hardware una
ventaja similar a la que tradicionalmente en la tecnología, solo tenía el software.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 68 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Desde el punto de vista de los requerimientos de diseño para equipos de laboratorio en


telecomunicaciones, consideramos que es muy importante, que las características del hardware
diseñado sean en lo posible compatibles con el instrumental y hardware típico presente en un
laboratorio de electrónica. Por esta razón una decisión importante; es la elección de la banda de
audio para la transmisión, pues esto permite el uso de instrumentos convencionales para la
detección y análisis de las señales, adicionalmente permite que las señales puedan ser detectadas
y generadas por tarjetas de audio de cualquier computador personal lo cual es una ventaja
evidente.

Una contribución académica muy importante de este proyecto; es el logro de la implementación


de algoritmos que tienen requerimientos de aritmética con números reales a partir de aritmética
en punto fijo, lo cual reduce significativamente la complejidad computacional.

El uso de habilitadores de reloj de entrada y salida permitió que la interconexión entre bloques se
hiciera de manera sencilla y confiable, esto redunda en una buena capacidad de modularidad y la
posibilidad de la construcción de múltiples configuraciones de diferentes sistemas así como el
desarrollo de nuevos módulos.

Consideramos los resultados de este proyecto muy superiores a los inicialmente esperados, pues
se logro la implementación de algoritmos de comunicaciones digitales actuales, del más alto
desempeño, en condiciones muy reales de funcionamiento. Lo que permitió a los participantes del
proyecto y al Programa un excelente acceso al estado del arte.

Con la ejecución de este proyecto el grupo de investigación y el Programa está en capacidad de


brindar formación a nivel de posgrado en el país en el área de diseño digital para sistemas de
comunicación.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 69 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

REFERENCIAS

[1] Eric Blossom et al. GNU radio, http://www.gnu.org/software/gnuradio/.

[2] Terasic Technologies, DE2-70 Board User Guide, 2009.

[3] Modulación GMSK (20 marzo 2011), What is GMSK Modulation - Gaussian
Minimum Shift Keying, Radio Electronics, http://www.radio-
electronics.com/info/rf-technology-design/pm-phase-modulation/what-is-gmsk-
gaussian-minimum-shift-keying-tutorial.php.

[4] Modulación GMSK (20 marzo 2011), Appendix D – Digital Modulation and
GMSK, University of Hull, http://www.emc.york.ac.uk/reports/linkpcp/appD.pdf.

[5] Estructura polifase, (19 marzo 2011), Efficient Multirate Filter Structures, Douglas
L. Jones, http://cnx.org/content/m12800/latest/.

[6] U. Meyer-Baese., Digital signal processing with fiel programmable gate array, 3rd
ed., Springer-Verlag Berlin Heidelberg, 2007, p. 256.

[7] Xilinx, inc, Cascaded Integrator-Comb (CIC) Filter V3, 2002.

[8] R. Andraka, ‘‘A survey of CORDIC algorithms for FPGA based computers’’,
Andraka consulting group,inc, North Kingston, 1998.

[9] Modulación I/Q (16 marzo 2011), Need for I-Q modulator and demodulator,
Krishna Sankar, http://www.dsplog.com/2008/04/05/need-for-i-q-modulator-and-
demodulator/.

[10] S. Haykin, CommunicationSystems, 4th ed., John Wiley & Sons, Inc106-129

[11] K. H. Mueller, M. Müller, “Timing recovery in digital synchronous data


receivers,” IEEE Trans. Commun., vol. 24, pp. 516–531, May 1976.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 70 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

[12] Wolfson Microelectronics plc, Portable internet Audio CODEC with


Headphone Driver and Programable Sample Rates, 2004.

[13] H. Meyr, M. Moeneclaey and S. A. Fetchel, Digital Communication


Receivers: Synchronization, Channel Estimation and Signal Processing, 1st ed.,
vol.2, 1997, pp.86-88.

[14] Altera Corporation, Quartus II Version 9.0 Handbook, 2007.

[15] C.K.P, Clarke. Reed-Solomon error correction- En: BBC R&D White paper
WHP 031(Jul. 2002).

[16] LÓPEZ PARRADO, Alexander. Diseño de un sistema de comunicación


OFDM banda base compatible con el estándar IEEE 802.11a. Santiago de Cali,
2008, 136 h. Tesis de Maestría (Ingeniero Electrónico). Universidad del Valle.
Facultad de Ingeniería. Departamento de Electrónica

[17] UNIVERSIDAD CARLOS III DE MADRID. Introducción a los códigos


bloque lineales [En linea].< http://www.it.uc3m.es> [Citado en 25 de febrero de
2011]

[18] GLAVAC, Vladimir. A VHDL Code Generator for Reed Solomon Encoders
and Decoders.Montreal, 2003, 221 h. Trabajo de grado (Maestría en Ciencia
Aplicada). Concordia University. Facultad de Ingeniería. Disponible en el catalogo
en línea del repositorio de investigación de la universidad de Concordia:
http://spectrum.library.concordia.ca/

[19] SKLAR, Bernard. Channel Coding: Part 3. Digital


Communications:Fundamentals and Applications. Los Angeles: Prentice Hall, 2001.
pp. 437-460

[20] MOOD, ToodK..Forney’s Algorithm.Error Correction Coding,


Mathematical Methods and Algorithms.New Yersey: John Wiley & Sons, 2005. pp.
262-266.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 71 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

[21] FORNEY, G.David. On decoding BCH codes. En: IEEE Transactions on


Information Theory. Vol. 11 (Oct, 1965). pp. 549-557. ISSN: 0018-9448.

[22] REED, Irving S. VLSI desing of inverse-free Berlekamp-Massey Algorithm.


En: IEE Proceedings E Computers and Digital Techniques. Vol.138 (Sep, 1991). pp.
295-298 .ISSN: 0143-7062.

[23] BERLEKAMP, Elwyn R. Capítulo 7. Algebraic Coding Theory.York:


McGraw-Hill, 1968.

[24] MASSEY, James L. Shift-Register Synthesis and BCH Decoding. New En:
IEEE Transactions on Information Theory. Vol. 15 (Ene, 1969). pp. 122-127. ISSN:
0018-9448.

[25] DANGER, J.L.; GHAZEL, A.; BOUTILLON, E.; LAAMARI, H. Efficient


FPGA implementation of Gaussian noise generator for communication channel
emulation. En: 7th IEEE International Conference on Electronics, Circuits &
Systems (ICECS'2K), Kaslik :Liban (2001). Disponible en la página web de la
IEEE xplore: <http://ieeexplore.ieee.org>

[26] GEORGE, Maria.; HAMID, Mujtaba.; MILLER, Andy. Gold Code


Generators in Virtex devices. En: Application Note: Virtex Series, Virtex-II Series,
and Spartan-II family. XAPP217 (v1.1) Jun, 2001.Disponible en la base de datos de
la página web: < http://application-notes.digchip.com>

[27] SCHWARZ, Richard. An Introduction to linear recursive sequences in


spread spectrum systems. Disponible en la base de datos de la página web: <
http://sss-mag.com>

[28] PROAKIS, J. G., Digital Communications, 4ta Edición, Mc Graw Hill,


2001.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 72 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

[29] ROJAS, Jorge. Aplicaciones de los campos de Galois en el contexto de la


corrección y detección de errores en comunicaciones basadas en los códigos BCH,
con un enfoque didáctico. México DF, 2008, 135 h. Trabajo de grado (Maestría en
ciencia en ingeniería de telecomunicaciones). Instituto Politécnico Nacional.
Escuela Superior de Ingeniería Mecánica y Eléctrica.

[30] CHU, Pong. RTL Hardware Design Using VHDL: Coding for Efficiency,
Portability, and Scalability, New Yersey: John Wiley & Sons, 2005.

[31] Mentor Graphics Corporation, Modelsim-Altera Starter Edition, 2009.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 73 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

RESULTADOS DIRECTOS
Objetivos y Resultados Indicador de resultado
Resultados obtenidos en el
esperados planteados en el (número de publicaciones y
proyecto
proyecto ponencias)

Un sistema electrónico Módulos hardware 2 ponencias


reconfigurable que implemente reconfigurables que permiten:
esquemas de modulación
digital ASK, M-FSK, M-PSK, Implementación de sistemas
de modulación ASK, M-FSK, M-
QAM, GFSK y GMSK, así como
códigos de bloque, PSK, QAM, GFSK y GMSK
convolucionales para Codificación de canal basada
detección, corrección de en códigos convolucionales y
errores y la emulación de Reed-Solomon.
canales de tipo Gaussiano y
Rayleigh. Emulación de canales
Gaussiano y Rayleigh

Una interface para obtención Un sistema de captura de 2 ponencias


de parámetros de desempeño parámetros mediante el
del sistema de comunicación analizador lógico SignalTap II y
configurado por el usuario, software de análisis basado en
como lo son eficiencia MATLAB.
espectral, tasa de error de bit
(BER), puntos estratégicos de
observación para señal
temporal y espectro.

Una interface y/o Un sistema de reconfiguración


procedimiento para el del FPGA basado en SignalTapII
desarrollo y configuración en que permite el desarrollo de
línea de prácticas de prácticas de laboratorio con
laboratorio con sistemas de sistemas de comunicación
comunicación digital. digital.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 74 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Realizar una guía de referencia Un conjunto de manuales de


para el ensamble y uso usuario para todos los bloques
adecuado de los módulos desarrollados que permite su
desarrollados. conexión de manera sencilla.

Implementación y Un conjunto de prácticas de


documentación de un conjunto laboratorio a partir de los
de prácticas de laboratorio en módulos hardware
materia de telecomunicaciones desarrollados.
con el uso de las herramientas
desarrolladas.

Dos publicaciones en revistas y Dos publicaciones y ponencias 2 ponencias


dos ponencias en congresos. en los eventos científicos
internacionales LASCAS e
IBERCHIP. A la fecha se está
realizando la escritura de los
artículos para revistas
indexadas.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 75 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

PRODUCTOS

Se realizaron dos publicaciones en idioma inglés en dos eventos científicos de carácter


internacional:

Implementation of a GMSK Communication System on FPGA. Colombia, evento, 2nd


Latinamerican Simposium on Circuits and Systems. Febrero 23, 24 y 25 de 2011. JUAN FELIPE
MEDINA LEE, JUAN FELIPE PATARROYO MONTENEGRO, CATALINA MUÑOZ MORALES, ALEXANDER
LÓPEZ PARRADO, JUAN JOSÉ GIRALDO GUTIÉRREZ

Implementation of a GMSK Modulation System on FPGA. Colombia, evento, XVII Iberchip


Workshop. Febrero 23, 24 y 25 de 2011. JUAN FELIPE MEDINA LEE, JUAN FELIPE PATARROYO
MONTENEGRO, CATALINA MUÑOZ MORALES, ALEXANDER LÓPEZ PARRADO, JUAN JOSÉ GIRALDO.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 76 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

RESULTADOS INDIRECTOS

Resultados indirectos
Resultados indirectos
esperados planteados en el Indicador de resultado
obtenidos en el proyecto
proyecto

Consolidar el grupo de Se divulgaron los productos 2 ponencias


investigación en desarrollados en los eventos
procesamiento de señales y científicos internacionales
procesadores mostrando su LASCAS e IBERCHIP donde se
contribución en otras áreas destacó la participación del
de énfasis de la ingeniería grupo GDSPROC. Se propone
electrónica. para el primer semestre
académico de 2012 proponer
una asignatura electiva en el
programa de Ingeniería
Electrónica que integre las
líneas de profundización en
sistemas digitales y
telecomunicaciones.

Vinculación del Joven Ejecución y finalización


Investigador Ing. Juan José satisfactoria de una beca
Giraldo Gutiérrez pasantía de Colciencias
durante el año 2010.

Vinculación de 3 auxiliares de Ejecución y finalización


investigación y 5 estudiantes. satisfactoria de tres tesis de
pregrado.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 77 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

LIMITANTES EN LA EJECUCIÓN DEL PROYECTO


Pregunta SI NO

Las actividades se realizaron en el tiempo previsto? X

Los recursos se utilizaron conforme a lo planeado? X

Se obtuvieron las metas y los resultados esperados? X

Si el proyecto presentó retrasos indique por cuál de las siguientes causas:

Disponibilidad presupuestal real

Incumplimiento en otra dependencia Cuál?

Demora en la toma de decisiones Quién?

Demora en procesos administrativos

Surgimiento de una actividad no prevista X

Causas externas a la institución X

Incumplimiento del grupo de trabajo

Problemas de gestión

Problemas técnicos

OTRAS DIFICULTADES ENCONTRADAS: La principal dificultad que limitó la finalización a tiempo del
proyecto fue la desvinculación con la Universidad de uno de los co-investigadores y el inicio de la
comisión de estudios del investigador principal inicial. El proyecto anterior de GDSPROC (383) tuvo
similares dificultades que solaparon en el tiempo con la ejecución del presente proyecto.

RECOMENDACIONES Y PROYECCIÓN: Como proyecciones a futuro del presente proyecto se


proponen:

Desarrollar software generador de cores que minimice la necesidad de descripción de hardware en


VHDL.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 78 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Proponer una asignatura electiva para el programa de ingeniería electrónica a partir de los
resultados obtenidos.

Crear un producto comercial que pueda ser distribuido como herramienta para prácticas de
laboratorio en la formación de ingenieros electrónicos y de telecomunicaciones.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 79 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

ANEXOS
ANEXO A:

DESCRIPCIÓN DETALLADA DE LOS BLOQUES HARDWARE DISEÑADOS

Bloques de cambio en la tasa de muestreo: Filtros CIC diezmador e interpolador

Filtro CIC Interpolador

Tanto en el caso del interpolador como en el caso del diezmador se tienen algunos parámetros
genéricos que pueden ser modificados de acuerdo con los requerimientos del caso. Estos
parámetros son:

B: Tamaño de palabra de la entrada y la salida.

R: factor de interpolado o diezmado.

N: Número de etapas.

El número de etapas representa la cantidad de combinadores e integradores en cascada utilizados


en el filtro; la latencia del sistema depende de este parámetro.

Este bloque no tiene una parte fraccional definida, ya que no tiene multiplicadores, puede trabajar
con el Q que se requiera.

En la Figura 58 se puede observar el diagrama de bloques del filtro CIC interpolador.

control de la
Segmentación Segmentación
ND Segmentación RDY
de los Combs de los Integs
de los integs
-1
Z

ext. de -1 Inserción
DATOS EN Combs Integradores DATOS SAL
signo Z de ceros
Control del RFD RFD

Figura 58. Diagrama de bloques del filtro CIC interpolador.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 80 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

La implementación del filtro CIC tiene varios aspectos importantes que vale la pena destacar
además de los componentes básicos que se vieron en el modelo teórico.

El primero de ellos es que al principio del bloque se tiene una extensión de signo; en esta parte del
sistema se agregan los bits necesarios del bit growth para las especificaciones escogidas por el
usuario. Además de eso la entrada está registrada para que no haya conflictos con los registros de
segmentación.

También se puede observar que hay un control para los registros de segmentación de los
integradores. Este sistema genera un pulso que dura R ciclos de reloj para que los integradores
procesen tanto la muestra que viene de los combinadores como los R-1 ceros agregados por el
módulo que cambia la tasa de muestreo.

Finalmente se cuenta con el control del pin RFD, éste se compone por un contador y un
comparador, el comparador se pone en alto cuando el valor del contador llega R-1 habilitando así
el pin RFD. Cuando el comparador se pone en alto no reinicia el valor del contador si no que
detiene su incremento, manteniendo así el valor R-1 hasta que el pin ND se ponga en alto, lo cual,
junto con la señal del comparador, reinicia el contador.

Es importante resaltar que si el pin ND se pone en alto y el contador no ha terminado de


aumentar, el sistema no aceptará el nuevo dato.

Filtro CIC Diezmador

Segmentación Segmentación
ND Reductor RDY
de los Integs de los Combs

ext. de -1
DATOS ENT Integradores Combs DATOS SAL
signo Z

Control del RFD RFD

Figura 59. Diagrama de bloques del diezmador.

El filtro CIC diezmador cuenta con una estructura parecida al interpolador. Las principales
diferencias son que se invierte la posición de los integradores y los combinadores, y que el bloque

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 81 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

entre los integradores y los combinadores es un contador y un comparador que sólo deja pasar
una de cada R muestras.

Al ser segmentado y recibir los datos a la frecuencia alta de muestreo, el filtro CIC diezmador
puede recibir una muestra cada ciclo de reloj.

Una función muy importante que desempeña el filtro CIC en el sistema es que elimina la imagen
espectral presente en 20kHz después de que el espectro es trasladado otra vez a banda base; al
eliminar este espectro se evita una gran cantidad de errores producidos por el contenido
frecuencial no deseado.

Módulo CORDIC

La implementación del CORDIC es la conexión de N celdas de rotación (o vectorización) en


cascada, donde cada una de ellas realiza las ecuaciones de recurrencia de las señales X, Y y
Z. El número de celdas define la resolución del sistema, cuantas más celdas haya, más
exacto es el argumento de salida del algoritmo, pero se tiene una latencia mayor. En este
caso se utilizaron 16 celdas tanto en el modo vectorial como en el rotacional debido a que
cada celda provee una precisión de 1 bit, y al ser 16 el tamaño de palabra del sistema, no
se necesitó un número mayor.

En este módulo el Q es de 13 bits debido a que se utiliza 1 bit para el signo y 2 bits para la
parte entera, por lo tanto el valor de 𝜋 es 𝑟𝑜𝑢𝑛𝑑(𝜋 ∙ 2𝑄 ) = 25736. Para facilitar la
implementación del hardware, cada sistema que utiliza el módulo CORDIC utiliza un Q=13.

Modo Rotación

Esta implementación del CORDIC funciona en los cuatro cuadrantes. Para poder lograr
eso, se hicieron algunas consideraciones de signo en las entradas.

Primero, se tienen en cuenta las ecuaciones del CORDIC:

𝑋𝑛 = 𝑋0 𝑐𝑜𝑠𝑍0 − 𝑌0 𝑠𝑒𝑛𝑍0

𝑌𝑛 = 𝑌0 𝑐𝑜𝑠𝑍0 + 𝑋0 𝑠𝑒𝑛𝑍0

𝑍𝑛 = 0

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 82 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Cuando solamente se necesita el seno y el coseno de la entrada 𝑍0 (como en el caso del


modulador FM) se hace 0 la entrada 𝑌0 . Obteniendo así las ecuaciones:

𝑋𝑛 = 𝑋0 𝑐𝑜𝑠𝑍0

𝑌𝑛 = 𝑋0 𝑠𝑒𝑛𝑍0

Primero se estudiará la situación en que 𝑍0 > 𝜋⁄2, o en otras palabras, que el ángulo de
entrada al CORDIC se encuentra en el segundo cuadrante. En este caso el ángulo es
desfasado hasta el primer cuadrante, este corrimiento causa una inversión de signo en el
coseno del ángulo como se puede observar en la Figura 60, para compensar esto se le
cambia el signo a la salida 𝑋𝑛 , asi:

𝑍0 𝑍′0
x

Figura 60. Plano polar de la entrada al CORDIC.


𝜋
𝑍0 > 2 ⇒ 𝑍′0 = 𝜋 − 𝑍0

𝑋𝑛 = −[𝑋0 𝑐𝑜𝑠𝑍0 ]

El caso que falta es cuando 𝑍0 < − 𝜋⁄2, o el ángulo de entrada se encuentra en el cuarto
cuadrante. En esta situación, también se desplaza el ángulo de entrada hasta el primer
cuadrante, sólo que en este caso se invierte tanto el seno como el coseno del ángulo; para
compensar estas inversiones, se cambia el signo de las salidas 𝑋𝑛 y 𝑌𝑛 .

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 83 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

𝑍′0
𝑍0 x

Figura 61. Plano polar de la entrada al CORDIC.

𝜋
𝑍0 > 2 ⇒ 𝑍′0 = 𝑍0 + 𝜋

𝑋𝑛 = −[𝑋0 𝑐𝑜𝑠 𝑍0 ]

𝑌𝑛 = −[𝑋0 𝑠𝑒𝑛 𝑍0 ]

Nótese que ésta solución para los otros dos cuadrantes sólo funciona cuando la entrada 𝑌0
vale 0 y el CORDIC sólo es utilizado para obtener senos y cosenos.

Cuando se necesita la ecuación completa del CORDIC (como en el caso del modulador
I/Q), las consideraciones de signo son diferentes, ya que no se puede simplemente negar
la salida completa al final del sistema como se podrá ver más adelante.

Como en este caso solamente se necesita la salida 𝑋𝑛 , se va a hacer el análisis de esa


salida.

Cuando 𝑍0 > 𝜋⁄2, se hace el traspaso al primer cuadrante y se obtiene una inversión de
signo en el coseno, pero si se niega toda la salida se tiene:

𝑋𝑛 = −[𝑋0 𝑐𝑜𝑠 𝑍0 − 𝑌0 𝑠𝑒𝑛 𝑍0 ] = −𝑋0 𝑐𝑜𝑠 𝑍0 + 𝑌0 𝑠𝑒𝑛 𝑍0

Se produjo una inversión tanto en el seno como en el coseno de la señal resultante.

En el caso de 𝑍0 < − 𝜋⁄2, al hacer el traslado del ángulo al primer cuadrante, se tiene una
negación tanto en el seno como en el coseno, por lo que sí se puede negar la salida
completa.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 84 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Como se puede observar, el problema sólo se presenta para los ángulos comprendidos en
el segundo cuadrante, y con la parte del seno de la ecuación. Para solucionar este
problema se implementó un circuito que cambia el signo de la entrada 𝑌0 para ángulos
tales que 𝜋⁄2 < 𝑍0 < 𝜋.

Otro inconveniente presentado en la implementación del CORDIC es que en el plano polar


se cumplen igualdades como 0 = 2𝜋 ó −𝜋 = 𝜋, que no se cumplen en la aritmética de
punto fijo y que las celdas del CORDIC necesitan que se cumplan para hacer las
operaciones correctamente.

Este problema puede ser solucionado haciendo 𝜋 = 32768 y −𝜋 = −32768, pero estas
asignaciones no son válidas en la aritmética de punto fijo, por lo cual fue descartada esta
solución.

Cuando se asignan los valores en punto fijo se obtiene el siguiente plano polar.

y
𝜋
=12868
2

𝜋 =25736
0
x
−𝜋 =39800
2𝜋 =51471

3𝜋 𝜋
= 38603 - =52668
2 2

Figura 62. Plano cartesiano con discontinuidades.

En este plano se presenta una gran cantidad de discontinuidades. Para evitar estas
discontinuidades se optó por un estándar de sólo ingresarle ángulos al CORDIC entre 0 y
2𝜋 en punto fijo, es decir, entre 0 y 51471 y se diseñó un circuito que identifique cuando
el valor del ángulo es mayor a 𝜋 y le sume un desplazamiento de valor (−𝜋) − (𝜋) =
39800 − 25736 = 14064, de esta forma, se eliminan todas las discontinuidades,
obteniendo un plano así:

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 85 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

y
𝜋
=12868
2

𝜋 =25736
x
−𝜋 =39801 2𝜋 =65535

𝜋
- =52668
2

Figura 63. Plano cartesiano sin discontinuidades.

Finalmente se obtiene una estructura robusta del algoritmo CORDIC, funcionando en los 4
cuadrantes y en aritmética de punto fijo.

La estructura completa en bloques del algoritmo CORDIC es mostrada en la siguiente


figura:

ND Registros de segmentación RDY


-1
X0 Z
=
Pi/2
-1 celda de celda de ... celda de Zn
Y0 Z Compl 2 rotación rotación rotación

-1
Z0 Z
=
Pi
evaluador evaluador Xn
Registros de segmentación
de entrada de salida
Yn
+
Offset

Figura 64. Diagrama de bloques del CORDIC.

El bloque evaluador de entrada hace el desplazamiento del ángulo de entrada 𝑍0 y activa


una bandera de dos bits que es procesada por los registros de segmentación para que no
vaya a haber pérdida de información. El bloque evaluador de salida toma la bandera de
dos bits y realiza el cambio de signo de las señales 𝑋𝑛 𝑦 𝑌𝑛 según sea necesario.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 86 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Modo Vectorial

Para el cálculo de la arco tangente se usó la configuración propuesta en [8] mediante la


cual se inicializa el valor 𝑧𝑛 = 0.

Al igual que en el modo rotacional, el algoritmo solamente funciona en el primero y cuarto


cuadrante, razón por la cual fue necesario agregar las diferentes excepciones basadas en
el signo de las componentes de entrada (x,y), y a partir de esto, decidir si es necesario
𝜋
sumar o restar un valor de al valor de salida y cambiar su signo para que éste quede
2
ubicado en el cuadrante deseado, esto se puede explicar claramente en la Tabla 8.

Cuadrante Signo Incremento


𝜋
I + +2
𝜋
II + +2
𝜋
III - -2
𝜋
IV - -2
Tabla 8. Ajuste del Ángulo de Salida.

Bloques de modulación y demodulación en fase

Para diferencia de símbolos (DPSK) y el mapeo de la los símbolos en la constelación


correspondiente a cada una de la modulaciones, se implemento el bloque GR_DIFF_ENCODER_BB
y GENQAMMOD respectivamente. A continuación se describe la implementación de este bloque
tanto para DBPSK como DQPSK.

Codificación Diferencial de Símbolos (DPSK) y mapeo en Constelación

Para la elaboración de estos bloques se utilizó la arquitectura mostrada en la Figura 65, su


característica principal es la de calcular el desplazamiento diferencial de fase binario a la señal de
entrada para posteriormente mapearla de acuerdo a la modulación DBPSK/DQPSK.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 87 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 65. Arquitectura de Constelation Mapper para DQPSK

La arquitectura del bloque requiere los siguientes sistemas Básicos:

Gr_diff_encoder_bb: Dispositivo Síncrono encargado de calcular desplazamiento diferencial de


fase binario a la señal de entrada ‘In_pre_mapped’

Genqammod: Componente con comportamiento asíncrono que tiene como labor mapear la señal
de acuerdo a la Modulación DBPSK/DQPSK, este dispositivo entrega los valores en aritmética de
punto fijo con un Q13.

Diferencia de Simbolos (DPSK)

La diferencia de símbolos DPSK se realiza en el bloque GR_DIFF_ENCONDER mostrado en la Figura


65. Para el caso de BPSK, este bloque toma cada uno de los bits de la trama de información en el
pin Packet para luego mezclarla con una entrada (bit) anterior. Al mezclar la señal actual con la
anterior obtenemos un par de bits de los cuales solo tomamos el menos significativo
correspondiente al realizar: PAREJA_BITS % 2. Así obtenemos en el pin pre_mapped el bit
correspondiente a la primera etapa de la modulación DPSK. Se debe tener en cuenta que la salida
de este bloque esta invertido en el sentido de que al comparar la fase del bit actual con el bit
anterior se debe dar un uno (1) si esta es igual y un cero (0) si no lo son. Este bloque hace lo
contrario entregando un uno (1) cuando son diferentes y cero cuando sus fases son iguales. Esto
se puede ver mas claramente en la Tabla 9.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 88 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Salida DBPSK Salida Bloque

GR_DIFF_ENCODER

IN ANTERIOR SALIDA IN ANTERIOR SALIDA

0 0 1 0 0 0

0 1 0 0 1 1

1 0 0 1 0 1

1 1 1 1 1 0

Tabla 9: Comparación salida bloque GR_DIFF_ENCODER_BB con la salida ideal de la modulación


DBPSK

En la modulación QPSK sucede algo similar solo que la entrada en si es una pareja de bits que al
ser mezclado con la entrada anterior da como resultado palabras de 4 bits. El modulo (%) en esta
ocasión se obtiene como sigue: 4BITS%4. De esta manera entonces en el bloque se toma los dos
bits menos significativos de la palabra de cuatro bits para realizar esta operación modulo (%). Esto
se muestra en la Tabla 10.

Salida DQPSK

IN ANTERIOR SALIDA

00 00

01 01
00
10 10

11 11

00 01

01 01 10

10 11

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 89 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

11 00

00 10

01 11
10
10 00

11 01

00 11

01 00
11
10 01

11 10

Tabla 10: Salida bloque GR_DIFF_ENCODER_BB

El bloque Gr_diff_encoder_bb descrito en VHDL, se muestra en la Figura 66 y Figura 67, donde el


puerto ‘Clk’ es la señal de sincronización con el reloj maestro del sistema, ‘Reset’ es el puerto
encargado de limpiar el registro, ‘Enable’ puerto que habilita el registro, ’packet’ son las
componentes del dato a mapear, ‘pre_mapper’ son los datos modulados diferencialmente.

Figura 66. Bloque Gr_diff_encoder_bb, implementado en Vhdl

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 90 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 67 Codificador diferencial.

Mapeador en Constelación BPSK

Para el mapeo de los bits entregados por el bloque de modulación DPSK GR_DIFF_ENCODER_BB se
debe tener en cuenta que los datos llegan invertidos, por lo tanto simplemente se asigna el valor
de 1 en aritmética de punto fijo con un Q=13 el cual es equivalente a 8192, al bit cuyo valor sea
cero (0) y -1 (-8192 en aritmética de punto fijo con un Q=13) al bit cuyo valor sea uno (1). De esta
manera se mapea en la constelación correspondiente a la modulación BPSK y además diferencial
obteniendo entonces una modulación DBPSK. El diagrama de poines para el mapeador en
constelación BPSK se muestra en la Figura 68.

Figura 68. Mapeador en constelación DBPSK

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 91 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Mapeador en Constelacion QPSK

El bloque de mapeo en la constelación DQPSK asigna un valor complejo correspondiente a la


ubicación dada para esta modulación para cada uno de los datos de entrada al bloque como se
muestra en la Tabla 11.

IN OUT REAL OUT IMAG

00 8192 0

01 0 8192

10 -8192 0

11 0 -8192

Tabla 11: Mapeo en constelación QPSK dada por GENQAMMOD para DQPSK

El bloque está descrito como un decodificador el cual al recibir determinado dato entrega un valor
correspondiente en aritmética de punto fijo. Este valor complejo dado por el bloque es entregado
en los pines genqamood_r y genqamood_j como se puede apreciar en la Figura 69 y en la Figura
70.

Figura 69. Mapeador en constelación DQPSK

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 92 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 70. Mapeador en constelación QPSK

Bloques de modulación en frecuencia

Modulador FM

El modulador FM implementado en el sistema de comunicación trabaja en banda base (con una


portadora de 0 Hz).

El sistema consiste en un integrador encargado de que el ángulo de entrada al CORDIC siempre


esté cambiando, por ejemplo, si una señal DC entrara al modulador el integrador la convertiría en
una señal rampa, y de esta forma se obtendría un cambio constante en el ángulo de entrada al
CORDIC que generaría unas señales seno y coseno de frecuencia constante.

Después de ser integrada, la señal es multiplicada por la sensibilidad del modulador, que para el
caso de la modulación GMSK es de 𝜋⁄2 ∙ 𝑛𝑠𝑝𝑠 donde 𝑛𝑠𝑝𝑠 es el número de muestras por símbolo
del filtro gaussiano, que en este caso particular es 8, por lo tanto la sensibilidad es de 𝜋⁄16. Este
valor garantiza que no existan discontinuidades entre un valor y otro en el modulador, reduciendo
así el ancho de banda de la señal modulada.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 93 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Finalmente se tiene un módulo CORDIC que obtiene una señal compleja en la que sus partes real e
imaginaria tienen un desfase de 𝜋⁄2 entre ellas. Esta es la manera más eficiente de lograr el índice
de modulación 0.5 necesario en la modulación binaria.

El diagrama de bloques del sistema es presentado en la Figura 71.

Sal_Real
EN + x CORDIC
Sal_Imag

-1 RDY
ND Z Sens

Figura 71. Diagrama De Bloques De Modulador FM.

Demodulador FM

El demodulador FM es el encargado de tomar la señal compleja que sale del filtro CIC
diezmador y convertirla a una señal real que cambia su amplitud de acuerdo a los cambios
en frecuencia y fase de la señal de entrada. Para el dato de entrada se trabajó este bloque
con aritmética de punto fijo con 3 bits para la parte entera y 13 bits para la parte
fraccionaria, para la salida se usaron 5 bits para la parte entera y la misma cantidad de bits
para la parte fraccionaria para evitar desbordes en el bloque siguiente. Este aumento en la
cantidad de bits se explicará más adelante en el bloque de sincronización. La Figura 72
muestra el diagrama de bloques del demodulador FM.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 94 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 72.Demodulador FM.

Para este propósito, se multiplica de manera compleja el valor conjugado de la última


muestra adquirida con el valor de muestra actual. Posteriormente se calcula el ángulo de
este producto para realizar así la conversión de complejo a real.

𝑜𝑢𝑡(𝑘) = 𝑑𝑔𝑎𝑖𝑛 ∗ (arctan(𝑖𝑛(𝑘) ∗ 𝑖𝑛′ (𝑘 − 1)))

Donde 𝑑𝑔𝑎𝑖𝑛 = 16/𝜋, para compensar la ganancia del modulador FM, 𝑖𝑛(𝑘) es la entrada
actual al demodulador y 𝑜𝑢𝑡(𝑘) es la salida del mismo .

El uso del módulo CORDIC genera una latencia de 16 ciclos de reloj debido a la cantidad de
iteraciones que debe realizar para obtener una salida válida.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 95 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Bloques de modulación y demodulación en cuadratura (I/Q)

Modulador I/Q

CORDIC Algorithm
In_Real x Xn Out_Real
In_Imag y z RDY RDY

módulo 2 pi

Contador

Figura 73. Diagrama de bloques del modulador I/Q.

El modulador I/Q recibe una entrada compleja con un desfase de 𝜋/2 y la multiplica por una
portadora compleja.

En este sistema, el algoritmo CORDIC fue muy útil, porque la ecuación en su salida 𝑋𝑛 es
exactamente la operación que se debe realizar en la modulación I/Q.

Al ser X0 y Y0 las partes real e imaginaria de la entrada compleja respectivamente, el módulo


CORDIC realiza la multiplicación al mismo tiempo que genera la señal portadora, el único aspecto
negativo es que al realizar la multiplicación de la forma real por real e imaginario por imaginario,
no sólo hace un traslado en la frecuencia si no que genera una imagen espectral en el lado
negativo del espectro; como se verá más adelante, dicha imagen espectral no causará problemas
en el desempeño del sistema.

Para generar la portadora de 10kHz, el sistema cuenta con un contador que incrementa en pasos
de

2𝜋∗𝑓𝑐
𝑖𝑛𝑐𝑟𝑒𝑚𝑒𝑛𝑡𝑜 = 𝑟𝑜𝑢𝑛𝑑 ( ∗ 2𝑄 )
𝑓𝑠

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 96 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Donde 𝑓𝑐 es la frecuencia de la portadora, 𝑓𝑠 es la frecuencia de muestreo del códec de audio y Q


es la parte fraccional del módulo CORDIC.

Para los parámetros utilizados en este sistema, el incremento del contador tiene un valor de
10541.

Además del contador, el sistema cuenta con un circuito que hace módulo 2𝜋; este circuito tiene un
comparador que selecciona la salida de un multiplexor. El sistema es mostrado en la figura 30.

Datos del
contador =
2 pi
Datos
CORDIC
-
2 pi

Figura 74. Diagrama de bloques del contador del modulador I/Q.

Demodulador I/Q

El demodulador I/Q realiza la operación inversa del modulador I/Q, por lo que a este llega una
señal de entrada, la cual es dividida y multiplicada por la parte real e imaginaria de la portadora, lo
que permite distinguir entre las componentes I y Q de la señal.

La operación de multiplicación es efectuada mediante el bloque CORDIC, el cual realiza las


operaciones de seno y coseno necesarias.

El bloque demodulador está compuesto por un contador utilizado para el funcionamiento del
bloque CORDIC, el cual es el que efectúa todas las operaciones del sistema.

El bloque CORDIC cuenta con dos salidas Xn y Yn que son la señal I y Q respectivamente, las cuales
corresponden a las salidas del demodulador.

La señal ND es registrada para compensar el registro del dato de entrada.

La Figura 75 muestra el diagrama de bloques interno del demodulador I/Q.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 97 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Algoritmo CORDIC
Contador
Zo RDY

0 Xo (Imag) Xn
Data_in
Yo Nd (real) Yn

Nd
𝑍 −1

Figura 75. Diagrama de bloques demodulador I/Q.

Los pines de este bloque son: data_in, que es la entrada de dato del bloque, a la cual se le realizan
las operaciones de multiplicación, Nd, la cual indica que hay un dato válido en la entrada, una
salida Rdy que, después de ser procesado el dato, se pone en alto para indicar al bloque siguiente
que hay un dato valido en la salida, y dos señales desfasadas 𝜋/2, Xn y Yn, que resultan de la
multiplicación mediante en algoritmo CORDIC; estas son las salidas del sistema.

Bloques de Sincronización de Tiempo y Fase

Sistemas de sincronización de tiempo símbolo y trama: Muller Müeller Clásico y Muller Müeller
modificado.

El sincronizador Mueller & Müller (M&M) es un sincronizador de lazo cerrado en tiempo


discreto, su funcionamiento está basado en el algoritmo propuesto por Mueller & Müller
en su trabajo [11].

El sincronizador M&M se puede observar en la Figura 76.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 98 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

y (t) Bloque
ak
Muestreador de
Decisión

Detector
de Error
M&M

x (e)

Filtro
Lazo
Cerrado

Reloj
Ajustable

Figura 76. Diagrama de Bloque Sincronizador M&M.

La señal de entrada al sincronizador está dada por:

𝑦(𝑡; 𝜀) = ∑ 𝑎𝑚 𝑔(𝑡 − 𝑚𝑇 − 𝜀𝑇) + 𝑛(𝑡)


𝑚

Donde am representa una secuencia estacionaria de símbolos no necesariamente


binarios, g(t) es el pulso banda base con el que se representa cada símbolo y n(t) es ruido
estacionario aditivo, 𝜀 corresponde al error de sincronización temporal entre
transmisor/receptor el cual toma valores en el intervalo [0 1]. En este caso el origen del
eje temporal se toma de forma que g(t) alcance su valor máximo en t=0, como se muestra
en la Figura 77.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 99 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 77. Pulso g(t).

El reloj ajustable muestrea la señal 𝑦(𝑡, 𝜀) en los instantes 𝑡𝑘 , dados por:

𝑡𝑘 = 𝑘𝑇 + 𝜀̂𝑇 + 𝜏̅

Donde 𝜏̅ es un desplazamiento en el tiempo que se definirá más adelante. Las muestras


resultantes son denotadas por 𝑦𝑘 (𝜀, 𝜀̂), con:

𝑦𝑘 (𝜀, 𝜀̂) = 𝑦(𝑘𝑇 + 𝜀̂𝑇 + 𝜏̅; 𝜀)

Estas muestras son combinadas con las decisiones del receptor {𝑎


̂ } ∗ para formar las
siguientes muestras de salida del detector de errores:

𝑥𝑘 (𝜀, 𝜀̂) = 𝑎̂𝑘−1 𝑦𝑘 (𝜀, 𝜀̂ ), −𝑎̂𝑘 𝑦𝑘−1 (𝜀, 𝜀̂ )

Para efectos prácticos, se asume que la decisión 𝑎


̂𝑘 = 𝑎𝑘 , es decir, el símbolo estimado
es igual al símbolo real, esto es válido siempre y cuando el error entre estas dos
magnitudes sea menor de 10−2 lo cual es aceptable, debido a que la probabilidad de error
en la mayoría de los sistemas de comunicación es mucho menor que esta cantidad.

Se analiza el sincronizador M&M en lazo abierto: desconectando la salida del filtro de lazo
cerrado y las propiedades de la salida del detector de error de tiempo son determinadas
en los instantes de muestreo 𝑡𝑘 correspondiendo a un valor fijo de la estimación del error
de sincronización temporal 𝜀̂.

A partir de las expresiones anteriores se obtiene

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 100 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

𝑥𝑘 (𝜀, 𝜀̂) = 𝑎𝑘−1 ∑ 𝑎𝑘−𝑚 𝑔𝑚 (𝑒) − 𝑎𝑘 ∑ 𝑎𝑘−1−𝑚 𝑔𝑚 (𝑒) + 𝑎𝑘−1 𝑛𝑘 − 𝑎𝑘 𝑛𝑘−1


𝑚 𝑚

Donde 𝑒 = 𝜀 − 𝜀̂ denota el error en la estimación de 𝜀 y

𝑛𝑚 = 𝑛(𝑚𝑇 + 𝜏̅ + 𝜀̂ T)

𝑔𝑚 (𝑒) = 𝑔(𝑚𝑇 + 𝜏̅ + 𝑒T)

Para símbolos de datos estadísticamente independientes (implica que se deben evitar


cadenas largas de símbolos idénticos), el valor esperado de la salida del detector de error
es:

𝐸[𝑥𝑘 (𝜀, 𝜀̂)] = 𝑣𝑎𝑟 [𝑎𝑘 ][𝑔1 (𝑒) − 𝑔−1 (𝑒)]

Este valor esperado es directamente proporcional a la diferencia de tiempo necesaria para


el ajuste (𝜀𝑇 + 𝜏̅), el cual es el parámetro de entrada necesario para el reloj ajustable, en
el sistema la esperanza es estimada mediante el filtro de lazo cerrado cuya característica
es pasa bajos.

Se debe aclarar que la diferencia de tiempo que se debe ajustar, se produce por dos
causas: por la diferencia de tiempo entre los relojes de los sistemas y por la deformación
asimétrica de los pulsos banda base.

Ahora se define el desplazamiento en el tiempo 𝜏̅ de tal forma que 𝑒 = 0 estando en un


punto estable del proceso de estimación; esto requiere que el valor esperado de la salida
del detector de error de tiempo tienda a cero para 𝑒 = 0, o de manera equivalente:

𝑔(𝑇 + 𝜏̅) = 𝑔(−𝑇 + 𝜏̅)

Note que 𝜏̅ = 0 cuando g(t) es un pulso con simetría par,

Lo anterior implica que la sincronización perfecta (𝜏̅ = 0) se tendrá en el caso ideal (𝑒 = 0)


cuando el pulso banda base g(t) sea simétrico par. Esto es mostrado en la Figura 78.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 101 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 78. Determinación de 𝜏̅

Debido a la aleatoriedad de los datos y a que el proceso de sincronización es continuo se


producen variaciones aleatorias del error 𝑒, estas fluctuaciones generan un auto-ruido el
cual es proporcional a ancho de banda normalizado del bucle el cual es dominado por el
ancho de banda del filtro de lazo cerrado.

Algoritmo de Mueller Müller modificado:

El algoritmo de Mueller y müller se puede mejorar de forma que se disminuya la varianza


del error de la estimación del ajuste tiempo o auto ruido mediante la introducción de una
señal de error adicional en el bucle.

Esta modificación se basa también en la toman de muestras de la señal 𝑦𝑘 y su


combinación con las decisiones del receptor {𝑎
̂ } ∗ para formar una señal de error.

Para la modificación del algoritmo las nuevas señales de error son:

𝑥𝑘1 (𝜀, 𝜀̂) = (𝑎̂𝑘−1 − 𝑎̂𝑘+1 ) 𝑦𝑘 (𝜀, 𝜀̂ )

𝑥𝑘2 (𝜀, 𝜀̂) = 𝑎̂𝑘 ( 𝑦𝑘+1 (𝜀, 𝜀̂ ) − 𝑦𝑘−1 (𝜀, 𝜀̂ ))

El error total es obtenido a partir de la media aritmética de 𝑥𝑘1 y𝑥𝑘2

𝑥𝑘 = 0.5(𝑥𝑘1 +𝑥𝑘2 )

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 102 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Este promedio miniza el auto ruido total debido a que el ruido generardo en 𝑥𝑘1 está en
contra fase con el ruido generado en 𝑥𝑘2 .

Bloque Sincronizador Mueller & Müller (M&M)

El sincronizador está descrito usando aritmética de punto fijo, usando 13 bits para la parte
fraccionaria y 5 bits para la parte entera, esta cantidad de bits es escogida debido a la aritmética
del sincronizador, la cual implica acumular valores para los cuales 16 bits no serían suficientes,
además de no tener una buena precisión en los cálculos. Posee una entrada de new_data que
indica cuándo existe un nuevo dato en la entrada y una señal de ready que indica el momento en
el que una muestra válida debe ser tomada por el siguiente bloque. La Figura 76 muestra el
esquema general del sistema, en esta figura se muestran 5 bloques principales: Muestreador,
Bloque de Decisión, Detector de Error Temporal M&, Filtro de Lazo Cerrado y Reloj Ajustable.

Muestreador

El muestreador fue implementado usando un filtro FIR de orden 8 usando la estructura directa;
sin embargo, este es un filtro FIR que cambia sus coeficientes entre 129 grupos dependiendo del
error de tiempo estimado (d_mu); el diagrama de bloques de este filtro FIR es mostrado en la
figura 35.

IN Z
-1
Z
-1 ... Z
-1

ROM X ROM X ... ROM X

+ OUT

Figura 79. Estructura Interna del filtro FIR.

La señal de habilitación de los registros es la señal de new_data localizada a la entrada del


sincronizador. El filtro usa 8 diferentes memorias ROM que almacenan 129 coeficientes cada una
los cuales son multiplicados por los valores registrados. Estos coeficientes representan 129
respuestas al impulso, las cuales, al ser convolucionadas con la señal de entrada, generan la
corrección temporal necesaria.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 103 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Como se puede ver en la Figura 80, el pico de la respuesta al impulso se mueve de izquierda a
derecha. Cuando la señal es procesada, es filtrada por un conjunto de coeficientes y retrasada
dependiendo de la posición del pico del impulso de la figura.

El uso de este filtro es la razón por la cual se trabaja con 18 bits en vez de 16 como se acostumbró
en los bloques anteriores, el uso de un sumador implica que la salida será mucho más grande de la
entrada, razón por la cual no se generan desbordes.

Figura 80. Respuesta al Impulso del Filtro FIR ajustable

Bloque de Decisión y Detector de Error M&M

Debido a que el sincronizador M&M depende de las decisiones tomadas, es necesario expresar
estos dos bloques como uno sólo. El Bloque de decisión toma los valores de 𝑎𝑘 , los cuales sólo
asumen valores de 1 y -1 dependiendo del signo de los valores de salida. Estos valores son usados
en este caso en particular porque el sistema de comunicación usado es binario, pero es posible
trabajarlos para distintos valores de símbolo dependiendo de la modulación. En la Figura 81 se
puede observar la implementación de este bloque en conjunto con el detector de error, el bloque
de signo (sign) es la representación del bloque de decisión.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 104 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 81. Bloque de Decisión y Detector de Error M&M.

El Detector de Error Temporal es la implementación propuesta por Mueller & Müller en su trabajo
[13]. Este bloque realiza la estimación del error temporal 𝑥(𝑒), el cual se encuentra expresado
como.

𝑥(𝑒) = 𝑎𝑘−1 𝑦(𝑘𝑇 + 𝑒𝑇) − 𝑎𝑘 𝑦(𝑘𝑇 − 𝑇 + 𝑒𝑇)

Donde 𝑎𝑘 denota la decisión tomada y 𝑦(𝑘𝑇 + 𝑒𝑇) es la señal de entrada. Cuando la señal de
salida 𝑥(𝑒) toma valores alrededor de 0, el sistema se encuentra sincronizado.

Filtro de Lazo Cerrado

El Filtro de Lazo Cerrado procesa el error temporal y lo convierte en un valor que contiene la
estimación de la corrección que se debe hacer, el diagrama de bloques está explicado en la Figura
82.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 105 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

d_gain_omega d_omega_mid d_omega_rel d_omega_mid

IN X + - +

-1
Z
d_gain_mu

X +

OUT

Figura 82. Filtro de Lazo Cerrado

El registro guarda la estimación de la esperanza del error temporal y el saturador previene que el
sistema se desestabilice, manteniéndolo entre valores mínimos; por su parte, la constante
d_omega_mid se encarga de mantener el valor de la esperanza alrededor de Nsps=8 que
representa el factor de diezmado que será explicado más adelante y el producto con d_gain_mu
mantiene el valor de la salida alrededor de 8.5, es decir, la salida se encuentra 8 y 9, al estar
alrededor de 8.5 cuando la esperanza del error se vuelva casi nula garantiza que se elija la
corrección temporal media, que es nula.

Reloj Ajustable

Este bloque posee un decrementador que acumula su valor con el valor proveniente del filtro de
lazo cerrado. El diagrama de bloques esta mostrado en la Figura 83.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 106 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

- 1
+

0
-1
OUT
IN + 1 Z

<1

Figura 83. Decrementador usado en el Reloj Ajustable

La primera vez que llega un dato a este bloque, es guardado en el registro; debido a que este valor
se encuentra entre 8 y 9, el comparador indicara que se le debe hacer un decremento cada vez
que una nueva señal de ready llegue al sincronizador, así sucesivamente hasta que el valor
registrado sea menor que 1; en ese momento una señal de habilitación (salida del comparador con
1) es enviada hacia el filtro FIR, el cual almacenará este valor y lo usará para elegir cuál de las
respuestas al impulso deben ser usadas, al mismo tiempo, un nuevo dato es almacenado y
decrementado por 8 ciclos nuevamente, este es el principio básico de la operación de diezmado.

La señal de habilitación va directamente conectada al enable de los registros localizados en el


Filtro De Lazo Cerrado y el Reloj Ajustable, sin embargo, los registros del filtro FIR tienen su enable
conectados directamente a la señal de entrada new_data, esto significa que el filtro FIR trabaja
cada vez que un nuevo símbolo es recibido, pero los otros bloques sólo trabajan cuando la señal
de habilitación proveniente del decrementador es puesta en alto, es decir, cada Nsps símbolos.

Módulo de Sincronización de Trama

Cada paquete de datos está encabezado por un preámbulo de 40 bits, que permite un
sincronización entre transmisor y receptor.

Para esta labor se utilizó una estructura parecida a la del filtro FIR del bloque de sincronización,
con la diferencia de que no se realiza una multiplicación sino una operación XOR con cada uno de
los valores del preámbulo previamente guardados en memoria ROM, el diagrama de este detector
es mostrado en la Figura 84.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 107 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

64 Muestras

IN Z
-1
Z
-1 ... Z
-1

ROM xor ROM xor ... ROM xor

+ OUT

Figura 84. Detector de Preámbulo.

La compuerta XOR sólo tiene como salida 1 si los dos valores de entrada son iguales, razón por la
cual se realiza esta operación con los últimos 64 valores adquiridos en los registros; cuando la
suma de las salidas de estas compuertas supere un valor de umbral (55 para este caso), se indica
que el preámbulo fue procesado y que los datos de carga útil serán procesados. El valor del umbral
fue escogido de tal forma que no fuera demasiado sensible ni demasiado riguroso para nunca
activarse.

Bloques de Codificación y Emulación de Canal

En este capítulo se describe detalladamente el hardware necesario para realizar la codificación y


decodificación convolucional y Reed-Solomon. En la decodificación convolucional se presenta la
implementación del algoritmo de Viterbi y en la codificación Reed-Solomon se muestra la
implementación de los algoritmos de cálculo de los síndromes, de Berlekamp-Massey sin
inversión, de Chien y de Forney. Y por último se presenta la implementación que permite emular
los canales de transmisión de Rayleigh y AWGN.

Implementación Hardware del Codificador Convolucional

Para el codificador Convolucional se implementó una descripción en VHDL con las características
del codificador utilizado en el estándar IEEE 802.11a de la Figura 15, así como las demás señales de
sincronización como lo son, una señal de reloj (clk) y una señal de salida (ready), que señala
cuando se codificó un bit de entrada, esto con el objetivo de indicarle a otro bloque vecino cuando
hay un símbolo válido en la salida y lograr una sincronización entre ambos; también una señal de
entrada (enable) encargada de poner en funcionamiento el codificador y otra (reset) con el fin de

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 108 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

poner los registros en cero de manera asincrona, como se puede ver en el diagrama de la Figura
85, en la entrada (data_in) se ingresa la secuencia de bits que se quieren codificar y el símbolo
codificado sale por (𝑎 y 𝑏).

Figura 85. Diagrama del codificador Convolucional.

La señal de (ready) está retrasada por los registros como se muestra la Figura 86 con el fin de
compensar la latencia producida por el circuito y así sincronizar esta salida con la de los bits
decodificados.

Figura 86. Registros para la sincronización de la señal (ready).

En general se puede ver el sistema diseñado como el bloque de la Figura 87 con sus respectivos
pines de entrada y salida.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 109 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 87. Diagrama de entradas y salidas del codificador Convolucional.

Implementación Hardware del Decodificador Viterbi

Se realizó una descripción en VHDL de cada uno de los bloques mostrados en la Figura 16, con los
demás componentes para su conexión y control de los datos, en este caso se implementó la
técnica de doble buffer [16] ya que la decodificación empieza a partir del último bit, por lo tanto se
necesita de una memoria en la salida que permita retornar los bits en el orden correcto.

Para este diseño se asumió que los 6 últimos de los 48 símbolos que entran al decodificador son
cero, lo que asegura que el codificador finaliza siempre en el estado cero [16] reduciendo un poco
la complejidad de operación del decodificador.

Al igual que el codificador, este posee las señales correspondientes para la sincronización con los
bloques vecinos, como lo es la señal de reloj (clk), la señal para iniciar la decodificación (enable), el
reset asíncrono (reset) y la señal de salida indicando cuando se inicia la decodificación del paquete
de datos (ready), dos entradas (bit_codificado_0 y bit_codificado_1) correspondientes a cada bit
del símbolo que sale del codificador y la salida para la secuencia de bits decodificada
(bit_decodificado).

Todos los pines del sistema descrito se pueden observar en el diagrama simbólico del
decodificador Viterbi de la Figura 88.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 110 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 88. Diagrama de entradas y salidas del decodificador Viterbi.

El circuito para calcular las métricas de rama queda como se aprecia en la Figura 89.

Figura 89. Circuito para calcular la distancia Hamming.

Con este circuito se calculan las métricas de acuerdo a la distancia Hamming entre los símbolos
que ingresan al decodificador y los símbolos esperados, es decir, de los bits tal como salen del
codificador, siendo 2 el máximo valor que puede tomar la distancia Hamming.

Para el codificador Convolucional utilizado, el diagrama de Trellis contiene 32 celdas básicas y 64


estados [16] que definen una estructura Butterfly [19] mostrada en la Figura 90.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 111 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 90. Estructura Butterflypara el codificador con 𝑲 = 𝟕 𝒚 𝒓 = 𝟏⁄𝟐.

Tanto en la parte superior (1) como en la inferior (2), las ramas a tomar para pasar de un nivel a
otro dependen del bit de entrada, para este caso según las características dadas, al ir desde (1-3 o
2-3) es porque ingresó un cero y para ir de (1-4 o 2-4) ingresó un uno, esto hace que la 𝑑𝐻entre el
símbolo recibido y el esperado entre los estados sea como se ve en cada rama.

El subíndice 𝑖 va desde 0 hasta 31 referentes a cada unidad ACS correspondiente a la estructura


Butterfly mostrada.

La estructura de la unidad ASC combinatoria se diseñó como se muestra en la Figura 91 tomando


en su entrada las 𝑑𝐻 del circuito mostrado en la Figura 90 y las métricas acumuladas para los
estados de acuerdo a la estructura Butterfly de la Figura 89.

Figura 91. Unidad ASC del decodificador Viterbi.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 112 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Las métricas acumuladas para cada estado se almacenan en 64 registros de 8 bits, obteniendo en
la salida las métricas acumuladas para ir al estado de destino y las rutas sobrevivientes para llegar
a cada uno de ellos [16].

La conexión entre los registros y las unidades ACS se pueden observar en la Figura 92.

Figura 92. Conexión entre los bloques de registros y unidades ACS.

Como se puede ver cada registro tiene una numeración referente a la cantidad de registros que en
este caso son 64, así también las unidades ACS tienen un cambio en sus entradas y salidas al
modificar los subíndices (𝑖 y 𝑗) de acuerdo a las características de la Figura 91; las etiquetas 𝐴, 𝐵,
𝐶y 𝐷definen un patrón de conexión en el diagrama de Trellisentre las salidas de las unidades ACS y
la entrada a los registros, notándose así que las etiquetas 𝐴 y 𝐶que pertenecen a la salida superior
de las unidades ACS van conectadas a la entrada de los registros de menor numeración, es decir, a
𝑟𝑒𝑔 0 y 𝑟𝑒𝑔 1y las salidas inferiores etiquetadas con 𝐵 y 𝐷hacen conexión con las entradas de los
registros de mayor numeración haciendo coincidir el subíndice (𝑗) con el subíndice de los registros.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 113 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

El bloque de las unidades ACS presenta una salida general de las rutas sobrevivientes, las cuales
van conectadas a dos memorias que poseen 48 posiciones de 64x6, equivalentes a 384 bits [2]
como se observa en la Figura 93.

Figura 93. Conexión de las memorias de rutas sobrevivientes.

Al tener las rutas sobrevivientes se procede a almacenar los datos en las memorias de bits
decodificados, las cuales tienen 48 posiciones de 1 bit, entre estos dos bloques de memorias se
encuentra un registro que se encarga de almacenar el estado actual del codificador con el fin de
realizar el proceso de decodificación hacia atrás, a través de las rutas sobrevivientes comenzando
por el estado cero [16], el control de estas direcciones es realizado por la técnica de doble buffer
mencionada anteriormente, por lo tanto en la Figura 94 se puede contemplar la conexión entre
estos módulos.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 114 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 94. Conexión de las memorias de bits decodificados.

La Figura 95 muestra la conexión completa de los bloques que conforman el decodificador Viterbi
diseñado.

Figura 95. Conexión del decodificador Viterbi.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 115 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Implementación Hardware del Codificador Reed-Solomon

La codificación Reed-Solomon se hace realizando la división de polinomios entre el mensaje y el


polinomio generador, y el resultado de este proceso se concatena con el mensaje entrante.

En la Figura 96 se puede observar la implementación hardware del codificador. Y la forma de


controlarla se muestra a continuación:

El multiplexor 1 está en la posición 1 durante los 𝑘 primeros ciclos de reloj permitiendo pasar el
mensaje a los (𝑛 − 𝑘)registros de paridad para realizar la división.

El multiplexor 2 está en la posición 1 durante los 𝑘 primeros ciclos de reloj para dejar pasar
primero el mensaje.

Después de esto el multiplexor 1 y el multiplexor 2 van a la posición cero simultáneamente.

En los restantes (𝑛 − 𝑘)ciclos de reloj el contenido de los registros de paridad va a la salida del
codificador y se obtiene el mensaje codificado.

Figura 96. Codificador Reed-Solomon

Para el control de los multiplexores se usa un contador, el cual va conectado a su vez a un


comparador, este último genera una señal de alto mientras pasan los primeros 𝑘 ciclos de reloj,
con el fin de generar una señal de 0 para los (𝑛 − 𝑘) ciclos restantes.

En general el codificador tiene los puertos de entrada y salida mostrados en la Figura 97.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 116 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 97. Diagrama de entradas y salidas del codificador Reed-Solomon

Como se mostró, todas las operaciones sobre el mensaje se hacen en campos de Galois, es por
eso que se deben implementar las operaciones necesarias para realizar la codificación y
decodificación. A continuación se explican las operaciones requeridas: suma, multiplicación y
división.

Implementación Hardware de las Operaciones en Galois

Implementación Hardware de la Suma en Galois

Es la operación más sencilla para entender e implementar en campos de Galois. La suma de dos
elementos en Galois corresponde a realizar una suma módulo 2 bit a bit de cada elemento, es
decir, realizar una XOR entre los dos elementos. En varios algoritmos usados es necesario realizar
restas, pero en Galois la resta es igual a la suma, así que esta operación incluye las dos. El código
que describe el sumador en VHDL se muestra a continuación, suponiendo que se estuviera
trabajando en 𝐺𝐹(24 ):

architecturertl of gal_sum_m4 is

begin

c(3)<= a(3) XOR b(3);

c(2)<= a(2) XOR b(2);

c(1)<= a(1) XOR b(1);

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 117 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

c(0)<= a(0) XOR b(0);

endrtl;

Implementación Hardware de la Multiplicación en Galois

La generación del hardware necesario para la multiplicación de dos elementos del campo finito de
Galois se logra formando el producto de la representación polinomial de dos elementos generales
[4], es decir, si 𝑎y 𝑏 son dos elementos cualquiera del campo, su representación sería:

𝑎 = 𝑎𝑛−1 𝑥 𝑛−1 + ⋯ + 𝑎1 𝑥 + 𝑎0

𝑏 = 𝑏𝑛−1 𝑥 𝑛−1 + ⋯ + 𝑏1 𝑥 + 𝑏0

Y el producto𝑐 de 𝑎y 𝑏se realiza de la siguiente forma:

𝑐 = 𝑎𝑛−1 𝑏𝑛−1 𝑥 2𝑛−2 + ⋯ + (𝑎0 𝑏1 + 𝑎1 𝑏0 )𝑥 + 𝑎0 𝑏0

Para entender bien lo dicho anteriormente se mostrará un ejemplo con el campo finito 𝐺𝐹(24 )
formado por el polinomio primitivo: 𝑝(𝑥) = 𝑥 4 + 𝑥 + 1.

La generación del campo que se tomará como ejemplo se muestra en la tabla 1-2.

Sean 𝑎y𝑏dos elementos cualquiera del campo 𝐺𝐹(24 ), los cuales se representan:

𝑎 = 𝑎3 𝑥 3 + 𝑎2 𝑥 2 + 𝑎1 𝑥 + 𝑎0 ,

𝑏 = 𝑏3 𝑥 3 + 𝑏2 𝑥 2 + 𝑏1 𝑥 + 𝑏0

Sea 𝑐 el resultado de la multiplicación:

𝑐 = 𝑎3 𝑏3 𝑥 6 + (𝑎3 𝑏2 + 𝑎2 𝑏3 )𝑥 5 + (𝑎3 𝑏1 + 𝑎2 𝑏2 + 𝑎1 𝑏3 )𝑥 4 + (𝑎3 𝑏0 + 𝑎2 𝑏1 + 𝑎1 𝑏2 +𝑎0 𝑏3 )𝑥 3


+ (𝑎2 𝑏0 + 𝑎1 𝑏1 + 𝑎0 𝑏2 )𝑥 2 + (𝑎0 𝑏1 + 𝑎1 𝑏0 )𝑥 + 𝑎0 𝑏0

Ya que el resultado de la multiplicación debe estar en el campo nuevamente, se procede a utilizar


el polinomio primitivo 𝑝(𝑥) = 𝑥 4 + 𝑥 + 1, con el fin de condicionar el resultado a que tenga 4
términos.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 118 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Según lo anterior se tiene:

𝑥4 = 𝑥 + 1

𝑥 5 = 𝑥. 𝑥 4 = 𝑥 2 + 𝑥

𝑥 6 = 𝑥. 𝑥 5 = 𝑥 3 + 𝑥 2

Así que reemplazando lo anterior en el resultado de la multiplicación:

𝑐 = (𝑎3 𝑏0 + 𝑎2 𝑏1 + 𝑎1 𝑏2 +𝑎0 𝑏3 + 𝑎3 𝑏3 )𝑥 3 + (𝑎2 𝑏0 + 𝑎1 𝑏1 + 𝑎0 𝑏2 + 𝑎3 𝑏3 + 𝑎3 𝑏2 + 𝑎2 𝑏3 )𝑥 2


+ (𝑎0 𝑏1 + 𝑎1 𝑏0 + 𝑎3 𝑏2 + 𝑎2 𝑏3 + 𝑎3 𝑏1 + 𝑎2 𝑏2 + 𝑎1 𝑏3 )𝑥 + 𝑎0 𝑏0 + 𝑎3 𝑏1 + 𝑎2 𝑏2
+ 𝑎1 𝑏3

De la ecuación anterior se puede observar que si se realiza cada operación entre cada uno los
coeficientes del polinomio 𝑎 y 𝑏, se puede obtener la multiplicación. Como cada uno de los
coeficientes corresponden a bits, las multiplicaciones se realizan con AND y las sumas con XOR.

De este modo, la descripción en hardware del multiplicador en Galois sería de la siguiente manera:

architecturertl of gal_mul_m4 is

begin

c(3)<= (a(3) AND b(3)) XOR (a(3) AND b(0)) XOR (a(2) AND b(1)) XOR (a(1) AND b(2)) XOR (a(0) AND b(3));

c(2)<= (a(3) AND b(3)) XOR (a(3) AND b(2)) XOR (a(2) AND b(3)) XOR (a(2) AND b(0)) XOR (a(1) AND b(1)) XOR
(a(0) AND b(2));

c(1)<= (a(3) AND b(2)) XOR (a(3) AND b(1)) XOR (a(2) AND b(3)) XOR (a(2) AND b(2)) XOR (a(1) AND b(3)) XOR
(a(1) AND b(0)) XOR (a(0) AND b(1));

c(0)<= (a(0) AND b(0)) XOR (a(3) AND b(1)) XOR (a(2) AND b(2)) XOR (a(1) AND b(3));

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 119 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

endrtl;

Implementación Hardware de la División en Galois

La división en campos de Galois se puede realizar de una manera sencilla: invirtiendo el


denominador y multiplicarlo por el numerador. Para la inversión, no es posible reducirla en una
ecuación booleana sencilla, así que se recurre al uso de tablas, las cuales equivalen a una ROM en
la que la dirección de memoria es el número a invertir y el dato almacenado en esa dirección es la
inversión del elemento. Luego de tener el resultado de la inversión se procede a multiplicarlo por
el numerador y así obtener el resultado deseado. El código para la división en 𝐺𝐹(24 ) se muestra
a continuación:

architecturertl of gal_div_m4 is

component gal_mul_m4 is

port(

a : in std_logic_vector(3 downto 0);

b : in std_logic_vector(3 downto 0);

c : out std_logic_vector(3 downto 0)

);

end component;

signalinv: std_logic_vector(3 downto 0);

type inversion is array(0 to 14) of std_logic_vector(3 downto 0);

signalinver: inversion:=(

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 120 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

"0001",

"1011",

"0101",

"1010",

"0111",

"1110",

"1111",

"1101",

"1001",

"0010",

"0100",

"1000",

"0011",

"0110",

"1100"

);

begin

inv<=inver(to_integer(unsigned(denominador))) when (rising_edge(clk));

mul1:

gal_mul_m4

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 121 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

portmap(

a=>numerador,

b=>inv,

c=>resultado

);

endrtl;

Implementación Hardware del Decodificador Reed-Solomon

Como se mencionó anteriormente, el decodificador está conformado por los siguientes


procedimientos: Calcular los síndromes, encontrar el polinomio localizador del error (Algoritmo de
Berlekamp-Massey sin inversión), hallar las raíces del polinomio anterior (Algoritmo de Chien),
hallar el polinomio del valor del error y por último la corrección del mensaje. El decodificador
propuesto en este proyecto usa segmentación [30], lo que supone que se pueden recibir mensajes
mientras se está corrigiendo el anterior, permitiendo así que se pueda decodificar información
todo el tiempo.

Implementación Hardware del Sistema de Almacenamiento y Corrección del Mensaje

Este bloque es necesario para almacenar el mensaje cuando llega al decodificador, para que
funcione la segmentación y además poder corregir al final los errores del mensaje. Por ahorro de
hardware sólo se almacena y se corrige los primeros 2𝑚 − 1 − 2𝑡 símbolos, es decir, la
información. El sistema es mostrado en la Figura 98 y se compone de 3 bancos de registros, los
cuales tienen como función: almacenar el mensaje, posibilitar el paralelismo del sistema y permitir
la corrección. El primer banco tiene conectado a la entrada el mensaje a cada uno de los registros,
este logra almacenar el mensaje habilitando cada registro a la vez, lo cual se realiza por medio de
un decodificador, este último, se implementa como una memoria ROM conectada a un contador.
El segundo banco está conectado directamente a las salidas de los registros del banco
anterior,posibilitando así que se pueda recibir otro mensaje y que se pueda realizar la corrección
al mismo tiempo. El tercer banco tiene a su entrada un multiplexor el cual permite que el mensaje
pase del banco anterior, que se pueda corregir y que los símbolos ya corregidos salgan de forma
serial.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 122 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 98. Diagrama de bloques de guardado y corrección del mensaje

Como se puede observar, cuando se le envía "𝟏𝟎" a los multiplexores, el mensaje que se
encuentra en el segundo banco, puede pasar a la parte de corrección. De otro modo, si se le envía
"𝟎𝟏", el mensaje guardado en el último banco será actualizado con el mismo polinomio más el
error generado por el algoritmo de Forney. Y por último, si se le envía "𝟏𝟏", los registros estarán
en cascada y el mensaje saldrá en forma serial.

El sistema cuenta con dos máquinas de estados. La primer máquina se encarga exclusivamente de
almacenar el mensaje en el primer banco de registros y de permitir el paso al segundo banco en el
siguiente ciclo después de recibir los 2𝑚 − 1 − 2𝑡 símbolos del mensaje.

La segunda máquina se encarga de esperar que el bloque que desarrolla el algoritmo de Forney
termine, para así llevar el mensaje que se encuentra en el segundo banco de registros al tercero,
además de ello permite la suma del polinomio del error, y por ultimo conectar los registros en
cascada y esperar a que salga el mensaje completo.

Implementación Hardware del Cálculo de los Síndromes

Como se explicó anteriormente el cálculo de los síndromes se realiza para saber si el mensaje tiene
o no errores, así que es el primer paso en la implementación del decodificador.

Cuando el mensaje llega al decodificador matemáticamente puede verse de esta forma:

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 123 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

𝑈(𝑥) = 𝑢𝑛 𝑥 𝑛 + 𝑢𝑛−1 𝑥 𝑛−1 + ⋯ + 𝑢1 𝑥 1 + 𝑢1 𝑥1

Para realizar el cálculo de los síndromes se usa el esquema de un elevador y la salida de éste se
conecta a un acumulador para llevar la cuenta, el esquema completo se muestra en la Figura 99.
Como es de esperarse, debido a que son 2𝑡 síndromes a calcular se usa esta misma cantidad de
elevador-acumulador.

Figura 99. Esquema elevador-acumulador para el cálculo de los síndromes

El símbolo con la mayor potencia es el primero en llegar al receptor, así que el valor inicial de cada
elevador debe ser la raíz a evaluar elevada a la 𝑛, mientras que el factor de multiplicación debe ser
el inverso de la raíz que se está evaluando.

El habilitador general del decodificador, activa la máquina de estados que controla el cálculo de
síndromes, este a su vez en el primer instante de tiempo inicializa el registro elevador con el valor
de inicialización antes mencionado para su correcto funcionamiento. La máquina de estados

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 124 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

también genera una señal de (ready) cuando el mensaje ha pasado completamente para activar el
siguiente bloque y para activar unos registros de desplazamiento los cuales permiten que los
síndromes, que se encuentran concatenados en una sola señal, salgan de forma serial con el fin de
que el bloque que determina del polinomio localizador del error funcione. Además de esto
también tiene una salida que contiene los síndromes concatenados, que sirve para luego hacer
funcionar el bloque del algoritmo de Forney. El diagrama de pines de entrada y salida de este
bloque se muestra en la Figura 100.

Figura 100. Diagrama de entradas y salidas del cálculo de síndromes

Implementación Hardware del Algoritmo de Berlekamp-Massey sin Inversión

Según [22] el algoritmo puede ser implementado como se muestra en la Figura 101, en ella se
puede observar que la única entrada necesaria para el cálculo del polinomio localizador del error
son los síndromes obtenidos en el bloque anterior. El polinomio tendrá como máximo 𝑡 raíces, es
decir, el número de errores que puede corregir, así que 𝑡 + 1 es el número máximo de ramas
necesarias para el desarrollo del algoritmo. Los registros 𝑇 se usan para guardar los síndromes
entrantes, los 𝜆 para guardar el polinomio auxiliar y los 𝜇 para guardar el polinomio localizador del
error. También están los registros 𝛾, 𝑙 y 𝑘 para guardar los valores respectivos de 𝛾, 𝑙 y 𝑘. El
circuito que genera la señal que va a los multiplexores es mostrado en la Figura 102. El sistema
total es controlado por una máquina de estados la cual se encarga de esperar los 2𝑡 ciclos que se
demora en calcular el polinomio localizador 𝜇, para luego generar una salida serial de cada
coeficiente con el fin calcular sus raíces en el bloque del algoritmo de Chien. También se tiene una
salida con todos los coeficientes concatenados para usarlos en el algoritmo de Forney.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 125 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 101. Diagrama de datos del algoritmo de Berlekamp-Massey sin inversión.

Figura 102. Circuito controlador de los multiplexores del diagrama de bloques del algoritmo de Berlekamp-
Massey. Los comparadores generan señal alta cuando hay comparación 𝟐𝒍 ≤ 𝒌 y 𝜹 ≠ 𝟎.

El diagrama de pines de entrada y salida de este bloque se muestra en la Figura 103.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 126 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 103. Diagrama de entradas y salidas del bloque que calcula el polinomio localizador del error.

Implementación Hardware del Algoritmo de Chien

Este algoritmo es realmente rápido en términos de hardware debido a que puede ser
implementado de manera que funcione de forma paralela y así hallar las raíces del polinomio
localizador simultáneamente en 𝑡 + 1 ciclos de reloj.

La parte que interesa del mensaje son los primeros 𝑘 símbolos que corresponden a la información,
así que la corrección se realiza solamente para estos símbolos, por tanto solo se evalúan las raíces
que localizan el error en esta parte del mensaje. La implementación de este algoritmo se muestra
en la Figura 104 y es muy similar a la del cálculo de los síndromes, es decir, tiene un elevador y
acumulador, pero además de ello un comparador para saber que raíces hacen cero el polinomio.
Las raíces que se obtienen en este algoritmo deben ser evaluadas en el algoritmo de Forney, pero
el inverso de estas será la ubicación exacta del error. El mensaje, como se explicó anteriormente,
se encuentra en un banco de registros esperando por el polinomio del error; de modo que este
polinomio debe tener sus coeficientes ubicados en los correspondientes símbolos erróneos. Así
que este bloque producirá una salida de (2𝑚 − 1 − 2𝑡) ∗ 𝑚 bits que contendrá en la posición
correspondiente las raíces que se obtienen por medio del algoritmo. Al final de la evaluación del
polinomio localizador del error, se tendrá una salida, en el peor caso, con 2𝑡 raíces y el resto en
ceros, que luego el algoritmo de Forney utilizará como valores iníciales para evaluar el polinomio
del valor del error y la derivada del polinomio localizador; y de esta forma obtener el valor del
error localizado en la posición donde sea necesario.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 127 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 104. Hardware que permite calcular las raíces del polinomio localizador (Chien Search)

Implementación Hardware del Algoritmo de Forney

Para desarrollar el algoritmo de Forney se necesita tener el polinomio evaluador del error Ω(𝑥),
el cual se obtiene multiplicando el polinomio localizador del error y un polinomio formado por los
síndromes modulo 𝑡, es decir:

Ω(𝑥) = 𝜇(𝑥) ∗ 𝑆(𝑥) (𝑚𝑜𝑑 𝑥 𝑡 )

Suponiendo que 𝑡 = 3 la multiplicación sería:

Ω(𝑥) = 𝜇1 𝑆1 + 𝜇2 𝑆1 𝑥 + 𝜇3 𝑆1 𝑥 2 + 𝜇4 𝑆1 𝑥 3

+𝜇1 𝑆2 𝑥 + 𝜇2 𝑆2 𝑥 2 + 𝜇3 𝑆2 𝑥 3 + 𝜇4 𝑆2 𝑥 4

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 128 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

+𝜇1 𝑆3 𝑥 2 + 𝜇2 𝑆3 𝑥 3 + 𝜇3 𝑆3 𝑥 4 + 𝜇4 𝑆3 𝑥 5

+𝜇1 𝑆4 𝑥 3 + 𝜇2 𝑆4 𝑥 4 + 𝜇3 𝑆4 𝑥 5 + 𝜇4 𝑆4 𝑥 6

+𝝁𝟏 𝑺𝟓 𝒙𝟒 + 𝝁𝟐 𝑺𝟓 𝒙𝟓 + 𝝁𝟑 𝑺𝟓 𝒙𝟔 + 𝝁𝟒 𝑺𝟓 𝒙𝟕

+𝜇1 𝑆6 𝑥 5 + 𝜇2 𝑆6 𝑥 6 + 𝜇3 𝑆6 𝑥 7 + 𝜇4 𝑆6 𝑥 8

Como se puede observar en lo anterior, la implementación se puede realizar como se observa en


la Figura 105, el polinomio de los síndromes entra de forma serial, mientras que el polinomio
localizador se encuentra fijo en los multiplicadores, si se realiza la suma de cada salida de los
multiplicadores cada ciclo de reloj se obtienen los coeficientes del polinomio resultante; esto se
hace con el fin de poderlo evaluar con las raíces obtenidas en el algoritmo de Chien. Debido a la
operación módulo que se realiza a esta multiplicación, sólo es necesario que entren de forma
serial los primeros 𝑡 síndromes para obtener el polinomio.

Figura 105. Implementación hardware para el cálculo del polinomio 𝛀(𝒙)

Para el desarrollo del algoritmo también se necesita la derivada del polinomio localizador, la
derivada se obtiene de la forma tradicional sólo que los coeficientes que en un principio tenían
variable con exponente par, desaparecen debido a que la suma de un número par de elementos
en Galois siempre da 0 y los de potencia impar seguirán siendo el mismo elemento. Con el fin de
evaluar el polinomio con las raíces obtenidas en Chien, la derivada del polinomio se implementa
con registros de desplazamiento, en los que los registros impares serán cargados con los valores
sobrevivientes y los registros pares con 0, tal como se muestra en la Figura 106.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 129 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 106. a) Derivada del polinomio localizador del error cuando 𝒕 es impar, b) Derivada del polinomio
localizador del error cuando 𝒕 es par.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 130 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 107. Implementación hardware que evalúa el polinomio evaluador del error y la derivada del
polinomio localizador para luego dividirlos y obtener el polinomio del valor del error.

El algoritmo de Forney establece que el polinomio del valor del error se calcula de la siguiente
forma:

Ω(𝑋𝑘 )
𝑒(𝑥) =
𝜇′ (𝑋𝑘 )

Donde 𝑋𝑘 es el inverso de las raíces del polinomio localizador del error. Cabe resaltar que desde el
bloque de Chien, el vector de raíces que genera ya son el inverso de las raíces, así que en este

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 131 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

bloque no es necesario realizar la inversión. Por tanto, se necesita otro bloque como el de la Figura
107 que evalúe los polinomios mientras se están creando, y realizar la división de estos para
obtener finalmente el polinomio del valor del error 𝑒(𝑥), con el fin de sumarlo a la información
que llegó y así obtener el mensaje enviado desde el receptor.

Emuladores de Canal Gaussiano y Canal Rayleigh

Implementación Hardware del Canal AWGN

La función del canal AWGN es adicionar un ruido blanco Gaussiano a la señal que pasa a
través de él, teniendo en cuenta esta aclaración se propone un esquema de generación
del ruido blanco Gaussiano como se observa en la Figura 108.

Figura 108. Esquema general Canal AWGN.

La generación del ruido blanco fue implementada mediante 10 variables aleatorias diferentes
distribuidas uniformemente, a las cuales se les pueden ser parametrizadostanto en el tamaño de
los registros como la longitud, forma y valor inicial del polinomio semilla (generador), además de
poder parametrizar la relación señal a ruido para el canal. La figura Figura 109 muestra el esquema
general de generación del ruido con distribución normal. Se debe tener en cuenta que la relación
señal a ruido que es ingresada está en decibeles, sabiendo que esta descrita como:

𝑆⁄ = 10𝑙𝑜𝑔 [𝑃𝑜𝑡𝑒𝑛𝑐𝑖𝑎 𝑚𝑒𝑑𝑖𝑎 𝑑𝑒 𝑙𝑎 𝑠𝑒ñ𝑎𝑙 (𝑃𝑆 )]


𝑁 10
𝑃𝑜𝑡𝑒𝑛𝑐𝑖𝑎 𝑚𝑒𝑑𝑖𝑎 𝑑𝑒𝑙 𝑟𝑢𝑖𝑑𝑜 (𝑃𝑁 )

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 132 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 109. Diagrama WGN.

Para la implementación de este bloque en hardware se tiene la configuración de pines vista en la


Figura 110.

Figura 110. Diagrama WGN.

Cada una de las variables aleatorias que componen el sistema están descritas por un grado
diferente para cada par de polinomios utilizado, logrando así describir con buena aproximación el
ruido blanco encontrado en toda clase de ambientes y aplicaciones. El sistema está en capacidad
de proveer para cada ciclo de reloj un valor diferente de acuerdo a la varianza y media que se le
haya configurado para la simulación que se desee realizar.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 133 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Además de las señales asociadas a los bits de salida, se incluye una señal de reloj que permite una
fácil sincronización de la operación del generador de ruido blanco Gaussiano con los bloques
vecinos.

En cuanto a la creación de cada una de las variables con distribución uniforme la Figura 111
muestra el diagrama de pines:

Figura 111. Diagrama de pines polinomio semilla.

Estas variables fueron implementadas mediante estructura LFSR, teniendo en cuenta que cada
uno de los polinomios semilla es diferente tanto en su grado como en el valor de inicio.

Implementación Hardware del Canal de Rayleigh

El modelo clásico adoptado a los canales se basa en una línea de retardos, donde cada salto
representa unaseñal con un retardo 𝑇𝑥 y tiene una amplitud variable 𝐴𝑥 . Estos saltos se
consideran no correlacionados entre sí, debido a que cada uno proviene de obstáculos diferentes.
La Figura 112 ilustra un diagrama de bloques general para un modelo multitrayectoria de un canal
con este tipo de desvanecimiento.

Figura 112. Diagrama en Bloques de un Modelo Multitrayectoria.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 134 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Usualmente la ganancia de cada una de las réplicas que son agregadas a la señal original es
modelada mediante la distribución de Rice o Rayleigh.

El sistema base está conformado como se muestra en la Figura 113.

Figura 113. Celda base

La imagen anterior es una celda que compone el sistema completo. Cada una de estas celdas que
se observa es un retraso que se le aplica a la señal original, contando con una resolución de dos
ciclos de reloj por cada uno de los retrasos. El sistema está diseñado para funcionar a frecuencia,
número, posición y valor de retardos parametrizables, estableciendo así un modelo general para
describir todo tipo de ambiente con este tipo de desvanecimiento previamente estudiado y
caracterizado. El sistema completo se implementa en la Figura 114.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 135 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 114. Sistema de Implementación Completo

La estructura LFSR implementada proporciona una señal de retraso de la original para cada dos
ciclos de reloj, como se ha dicho anteriormente estos serán los retrasos implementados para la
simulación del canal. El funcionamiento de este sistema es el siguiente: los multiplexores son los
encargados de seleccionar cuáles serán los retardos que se desean agregar a la señal colocando a
la salida un ‘0’, si la posición no coincide con la deseada por el usuario; y un ‘1’ si esta salida 𝑥 es el
retardo deseado, conectando también cada uno de los multiplicadores que modificara la potencia
instantánea de cada una de las réplicas de la señal original; estos valores serán cargados
previamente. Luego cada uno de los retrasos se sumara con el siguiente sin importar que se
sumen todos, ya que los que no son deseados su valor será cero ‘0’, obteniendo así el resultado
esperado.

El diagrama de pines del sistema se muestra en la Figura 115.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 136 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 115. Configuración de Pines

Como se puede observar cuenta con una señal de reloj que sincroniza el trabajo de este bloque,no
sólo de este mismo, sino también con otros que sean implementados para el uso conjunto,
además cuenta con una señal de (clear) para los registros que componen el sistema que a su vez
permite la salida de este.

Bloques de Conformación de Pulso

Filtro Gaussiano

El filtro gaussiano realizado tiene una estructura polifase, lo que significa que está dispuesto de tal
forma que se encuentra expresado en 8 filtros en paralelo, que permite obtener 8 sub-señales
distintas correspondientes a la respuesta del filtro.

La estructura polifase es utilizada ya que permite efectuar al mismo tiempo un aumento en la


frecuencia de la señal de entrada, sin que sea necesario otro procesamiento posterior. En este
caso la señal de entrada al pasar por el filtro con estructura polifase aumenta su frecuencia en un
factor de 8, que corresponde al número de sub-señales de salida del banco de filtros.

La entidad del filtro gaussiano tiene los pines de entrada y salida mostrados en la Figura 116.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 137 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Data_in Data_out

ND RFD

Clk RDY

Reset_n

Figura 116. Pines del bloque filtro gaussiano.

Los pines data_in y data_out, son el dato de entrada y salida respectivamente, hay además un pin
llamado ND que controla la entrada de dato nuevo al sistema, informando la llegada de un dato
valido que deberá ser procesado, una señal de reloj (Clk), que es igual en todos los bloques por la
característica síncrona del sistema, una señal RFD que indica cuando el sistema está listo para
recibir nuevos datos, y que permanece en bajo cuando el sistema se encuentra ocupado
realizando una operación, un pin RDY que informa al siguiente bloque del sistema cuando hay un
dato válido en la salida data_out, para que este continúe con el procesamiento de la señal, y una
señal de Reset asíncrona (Reset_n), que es activa en bajo.

Así pues, el filtro gaussiano se compone de 8 grupos de filtros de respuesta finita al impulso (FIR)
con estructura simétrica, lo que ofrece menor costo computacional y un control más simple del
sistema. La Figura 117 muestra el diagrama de bloques del filtro gaussiano interpolador, con
estructura polifase. En él se puede observar la estructura interna del sistema, que se compone de
un banco de filtros ya mencionados que procesan la señal de entrada al transmisor, un multiplexor
y un bloque de control.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 138 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Control RDY, RDY


ND RFD y &
multiplexor
RFD
Contador
Filtro FIR (1)

Filtro FIR (2)


Data_out
Data_in

Filtro FIR (8)

Figura 117. Diagrama de bloques filtro gaussiano con estructura polifase.

El ancho de banda del filtro gaussiano es de aproximadamente 1.400 Hz con el fin de cumplir con
el estándar de GMSK [3][4], para obtener esta respuesta se necesita un filtro gaussiano de orden
40.

Debido al orden 40 de la respuesta gaussiana deseada, se obtuvo el orden 4 de cada uno de los
filtros en el sistema, por lo que cada uno está compuesto por 5 registros en serie que retrasan la
señal y multiplicadores que realizan la operación con cada uno de los coeficientes del filtro;
posteriormente estos resultados se suman para obtener un dato de salida.

La Figura 118 muestra la estructura interna de cada filtro FIR dispuesto en el banco. Los
coeficientes correspondientes a cada bloque fueron calculados mediante la función gaussfir( ) en
MATLAB y posteriormente guardados como constantes en el sistema.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 139 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Figura 118. Estructura interna filtros de respuesta finita al impulso.

El bloque control Control pin RDY y multiplexor tiene como objetivo asegurar una señal válida a la
salida del bloque. Este trabajo es realizado en conjunto con el multiplexor, el cual está encargado
de seleccionar una de las salidas del banco de filtros a la vez. Este bloque está compuesto por un
contador y un comparador que sostiene la señal RDY durante los ciclos de reloj en los que se están
enviando salidas válidas.

Además, este bloque controla el pin de RFD poniéndolo en alto cuando todos los filtros han
procesado un dato de entrada y enviado un dato válido a la salida del bloque.

Este bloque tiene un parámetro modificable, el tamaño de palabra del dato de entrada y salida.
Además, es posible cambiar los coeficientes del banco de filtros FIR si es necesario.

Interfaz Análoga: CODEC de Audio

El canal de transmisión debe ser implementado con el fin de aislar los relojes del transmisor y el
receptor; la frecuencia de la portadora es de 10 kHz, razón por la cual resulta conveniente hacer
esta implementación usando el CODEC de audio WM8731[12] contenido en la tarjeta DE-270 de
Altera [2].

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 140 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

La configuración de los registros del CODEC fue hecha usando el procesador NIOS II, por medio del
cual se alteran los registros bajo lenguaje C. en esta configuración se usó el CODEC en modo
maestro sin usar ganancias ni atenuaciones para no saturar o perder información en el canal.

Debido a que el sistema completo se implementó en un único FPGA, el canal de audio fue
conectado de manera retroalimentada, es decir, el canal de salida fue directamente conectado al
canal de entrada.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 141 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

ANEXO B:

PRÁCTICAS DE LABORATORIO PROPUESTAS

Nota: para instalar el driver del USB_blaster correctamente en Windows 7, se debe tener
desactivado el requerimiento de controladores firmados. Para hacer esto se presiona la
tecla F8 repetidamente al prender el computador y se elige la opción que deshabilita el
uso de controladores firmados.

Prácticas de Codificación de Canal

El codificador y decodificador Reed-Solomon se proporciona con un generador de Cores,


RS_Core_Generator.exe en el cual se ingresan los tres parámetros configurables, los
mensajes en un documento de texto, la cantidad mensajes contenidos en el documento.
Los archivos se generarán en la misma carpeta en que se está ejecutando el programa.

Los mensajes contenidos en el documento de texto deben tener el formato que genera el
programa de matlab gen_msn_dec.m para el decodificador y gen_msn_enc.m.

Si se fueran a decodificar 2 mensajes con 𝑛 = 7 y 𝑚 = 3, se escribiría lo siguiente en el


documento de texto:

1001

0010

0011

0000

0000

0001

0011

1001

0010

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 142 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

0011

0000

0000

0001

0011

El primer símbolo deberá tener el bit más significativo en 1

Nota: Ejecutar los dos programas en carpetas distintas.

Creación del Proyecto

Luego de generar los archivos correspondientes, se identifican como entidades de nivel


alto Enc_Reed_Solomon_signal.vhd para el Codificador y Dec_Reed_Solomon_signal.vhd
para el decodificador. Estas entidades incluyen los mensajes ingresados en una memoria
ROM, por tanto, pueden ser probados muy fácilmente en el Signal Tap II Logic Analizer de
Quartus II. Si se quiere simplemente realizar simulaciones sencillas en el simulador de
Quartus II, se pueden tomar las entidades Enc_Reed_Solomon.vhd para el codificador y
Dec_Reed_Solomon.vhd para el decodificador.

Así que dependiendo del propósito, se puede crear el proyecto con la entidad de nivel alto
deseada.

Las prácticas consisten en mirar el comportamiento del decodificador a medida que se le


van agregando errores a diferentes mensajes.

Práctica 1

El estándar de codificación Reed-Solomon utilizado para DVB-T/H/S (Televisión Digital) es


𝑅𝑆(204,188) con 𝑚 = 8. Genere un decodificador con estos parámetros. Con el
programa gen_msn_dec.m genere varios mensajes con:

7 errores.

8 errores.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 143 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

9 errores.

10 errores.

¿Qué sucede cuando se le agregan 9 y 10 errores? ¿Por qué?

Investigue al menos 2 tipos de estándar de Codificación Reed-Solomon. ¿Cuáles son las


tasas de codificación más comunes?

Práctica 2

Genere un Codificador y un Decodificador 𝑅𝑆(63,47) con 𝑚 = 6. Con el programa


gen_msn_enc.m genere 4 mensajes distintos. Además de ello genere un canal Gaussiano
con el mismo tamaño de símbolo, y con la siguiente cantidad de errores:

7 errores.

8 errores.

9 errores.

10 errores.

Ahora genere un sistema de la siguiente forma:

La instanciación de los 3 bloques se puede realizar de la siguiente forma:

library ieee;

use ieee.std_logic_1164.all;

use ieee.numeric_std.all;

entity Sistema is

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 144 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

generic

n : natural:=63;

m : natural:=6;

t : natural:=8

);

port

clk : in std_logic;

reset : in std_logic;

enable : out std_logic;

msn : out std_logic_vector((m-1) downto 0);

msn_cod : out std_logic_vector((m-1) downto 0);

msn_dec : out std_logic_vector((m-1) downto 0);

msn_noise: out std_logic_vector((m-1) downto 0);

ready_dec: out std_logic

);

end entity;

architecture rtl of Sistema is

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 145 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

component Enc_Reed_Solomon_signal is

generic

n : natural;

m : natural;

t : natural

);

port

clk : in std_logic;

reset : in std_logic;

enable : out std_logic;

msn : out std_logic_vector((m-1) downto 0);

msn_cod: out std_logic_vector((m-1) downto 0);

ready : out std_logic

);

end component;

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 146 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

component Dec_Reed_Solomon is

generic

n : natural;

m : natural;

t : natural

);

port

enable : in std_logic;

clk : in std_logic;

reset : in std_logic;

msn : in std_logic_vector((m-1) downto 0);

msn_dec: out std_logic_vector((m-1) downto 0);

ready : out std_logic

);

end component;

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 147 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

component AWGN_Channel is

generic

m : natural

);

port(

data : in std_logic_vector (m-1 downto 0);

sal : out std_logic_vector (m-1 downto 0);

reset : in std_logic;

enable: in std_logic;

ready : out std_logic;

clk : in std_logic

);

end component;

signal msn_cod_2_ch : std_logic_vector(m-1 downto 0);

signal msn_ch_2_dec : std_logic_vector(m-1 downto 0);

signal ready_cod_2_ch: std_logic;

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 148 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

signal ready_ch_2_dec: std_logic;

begin

msn_cod <=msn_cod_2_ch;

msn_noise<=msn_ch_2_dec;

Codificador:

Enc_Reed_Solomon_signal

generic map(m=>m,t=>t,n=>n)

port map(

clk =>clk,

reset =>reset,

enable =>enable,

msn =>msn,

msn_cod=>msn_cod_2_ch,

ready =>ready_cod_2_ch

);

Decodicador:

Dec_Reed_Solomon

generic map(m=>m,t=>t,n=>n)

port map(

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 149 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

enable =>ready_ch_2_dec,

clk =>clk,

reset =>reset,

msn =>msn_ch_2_dec,

msn_dec=>msn_dec,

ready =>ready_dec

);

Canal:

AWGN_Channel

generic map(m=>m)

port map(

data =>msn_cod_2_ch,

sal =>msn_ch_2_dec,

enable=>ready_cod_2_ch,

reset =>reset,

ready =>ready_ch_2_dec,

clk =>clk

);

end rtl;

Práctica 3

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 150 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Genere un sistema de la siguiente forma:

La instanciación de los 3 bloques se puede realizar de una forma análoga a la anterior,


recuerde que la entidad de nivel alto debe tener también como salida el mensaje a
codificar, el mensaje codificado y el mensaje codificado más el ruido; todo esto con el fin
de una mejor visualización de los resultados.

PRÁCTICAS DE MODULACIÓN GMSK

PRÁCTICA 1.

Abrir el proyecto de Quartus base_de270_sdram_vga_audio.qpf contenido en la carpeta


base_de270_sdram_vga el cual contiene el procesador NIOS II que configura el CODEC de audio.

Para programar el FPGA se debe hacer clic en el botón (programmer), luego hacer clic en el
botón Hardware Setup y seleccionar USB-Blaster. Finalmente se hace clic en el botón Start.

Abrir el NIOS II IDE, contenido en la carpeta legacy NIOS II Tools.

Clic derecho en la ventana desplegable NIOS II C/C++ projects contenida en la parte de izquierda,
luego dar clic en import…, hacer clic en altera NIOS II, clic en import NIOS II IDE Project into
workspace. Seleccionar el proyecto simple_270 de la carpeta software. Finalmente hacer clic en el
botón finish. Con el fin de importar el proyecto en lenguaje C que configura el CODEC y poderlo
compilar.

El paso anterior se repite para el proyecto simple_270_syslib.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 151 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Dar clic en el botón (Run) y esperar por el aviso “Codec programmed”, luego dar clic en el
botón (terminate).

Abrir el proyecto completo del sistema GMSK en Quartus II. Hacer clic en el botón settings del
menú assignments. Se abre una ventana. Dar clic en la opción Signal Tap II Logic Analizer y allí
seleccionar el archivo stp_BER.stp. Este paso se realiza con el fin de agregar el hardware necesario
para la obtención de datos del sistema por medio del Signal Tap II Logic Analizer.

Abrir el programa get_rom_in de MATLAB para generar los datos de entrada. Reemplazar el
contenido del archivo senal.vhd (en el proyecto de Quartus) por el contenido de rom_in_GMSK.txt
situado en el directorio de MATLAB.

(Nota: después de correr el archivo get_rom_in.m es recomendado poner en comentario la línea


save data_in_GMSK packet para evitar conflictos a la hora de correr el test de tasa de error de bit).

Compilar el proyecto.

Programar el FPGA.

Los pasos realizados a continuación son con el fin de empezar a adquirir datos desde el FPGA.

Abrir el Signal Tap haciendo clic en el botón Signal Tap II Logic Analizer del menú Tools.

Hacer clic en la pestaña Setup y luego seleccionar el USB-Blaster en la opción Hardware haciendo
clic en el botón Setup.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 152 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Hacer clic en el botón (autorun analysis) para empezar a obtener datos desde el FPGA.

Después de haber visto el funcionamiento del sistema, hacer clic en el botón (stop analysis).

Hacer clic en el menú File, buscar la opción Create / Update, y hacer clic en la opción Create
SignalTap II list file. (esto genera un archivo .txt que contiene los datos obtenidos por el Signal Tap,
necesario para hacer los test de rendimiento del sistema. El archivo se crea en la carpeta del
proyecto de Quartus).

Cambiar el nombre del archivo generado por el signal_Tap a stp_BER_auto_signaltap.txt, y


copiarlo a la carpeta matlab.

Correr el archivo lab_BER.m en MATLAB.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 153 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

PRÁCTICA 2.

Abrir el proyecto de Quartus base_de270_sdram_vga_audio.qpf contenido en la carpeta


base_de270_sdram_vga el cual contiene el procesador NIOS II que configura el CODEC de audio.

Para programar la FPGA se debe hacer clic en el botón (programmer), luego hacer clic en el
botón Hardware Setup y seleccionar USB-Blaster. Finalmente se hace clic en el botón Start.

Abrir el NIOS II IDE, contenido en la carpeta legacy NIOS II Tools.

Clic derecho en la ventana desplegable NIOS II C/C++ projects contenida en la parte de izquierda,
luego dar clic en import…, hacer clic en altera NIOS II, clic en import NIOS II IDE Project into
workspace. Seleccionar el proyecto simple_270 de la carpeta software. Finalmente hacer clic en el
botón finish. Con el fin de importar el proyecto en lenguaje C que configura el CODEC y poderlo
compilar.

El paso anterior se repite para el proyecto simple_270_syslib.

Dar clic en el botón (Run) y esperar por el aviso “Codec programmed”, luego dar clic en el
botón (terminate).

Abrir el proyecto completo, hacer clic en el botón settings del menú assignments. Se abre una
ventana. Dar clic en la opción Signal Tap II Logic Analizer y allí seleccionar el archivo stp_EE.stp.
Este paso se realiza con el fin de agregar el hardware necesario para la obtención de datos del
sistema por medio del Signal Tap II Logic Analizer.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 154 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Compilar el proyecto.

Programar el FPGA.

Los pasos realizados a continuación son con el fin de empezar a adquirir datos desde el FPGA.

Abrir el Signal Tap haciendo clic en el botón Signal Tap II Logic Analizer del menú Tools.

Hacer clic en la pestaña Setup y luego seleccionar el USB-Blaster en la opción Hardware haciendo
clic en el botón Setup.

Hacer clic en el botón (autorun analysis) para empezar a obtener datos desde la FPGA.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 155 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Después de haber visto el funcionamiento del sistema, hacer clic en el botón (stop analysis).

Hacer clic en el menú File, buscar la opción Create / Update, y hacer clic en la opción Create
SignalTap II list file. (esto genera un archivo .txt que contiene los datos obtenidos por el Signal Tap,
necesario para hacer los test de rendimiento del sistema. El archivo se crea en la carpeta del
proyecto de Quartus).

Cambiar el nombre del archivo generado por el signal_Tap a stp_EE_auto_signaltap.txt, y copiarlo


a la carpeta matlab.

Correr el archivo lab_eficiencia_espectral.m en MATLAB.

PRáCTICA 3.

La práctica 3 consiste en cambiar algunos parámetros del sistema y analizar su funcionamiento


después de esto realizando las prácticas 1 y 2.

Los parámetros que se pueden modificar sin alterar el funcionamiento total del sistema se
encuentran en la entidad de alto nivel completo, y son:

d: Sensibilidad del modulador FM.

D_GAIN: Sensibilidad del demodulador FM.

N_CIC: Numero de etapas de los filtros CIC.

incremento: incremento de la portadora.

UMBRAL: Umbral del correlador.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 156 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 157 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

ANEXO C:

MANUALES DE USUARIO DE CADA UNO DE LOS BLOQUES

FILTROS CIC

INTRODUCCIÓN

Un filtro CIC (o filtro de Hogenauer) es una combinación entre derivadores e integradores


puestos en cascada con un bloque intermedio que sube o baja la tasa de muestreo de la
señal.

Son filtros de respuesta finita al impulso (FIR) que se utilizan para cambiar la frecuencia de
muestreo de una señal drásticamente.

DIAGRAMA DE BLOQUES DEL FILTRO CIC IMPLEMENTADO

control de la
Segmentación Segmentación
ND Segmentación RDY
de los Combs de los Integs
de los integs
-1
Z

ext. de -1 Inserción
DATOS EN Combs Integradores DATOS SAL
signo Z de ceros

Control del RFD RFD

Interpolador.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 158 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Segmentación Segmentación
ND Reductor RDY
de los Integs de los Combs

ext. de -1
DATOS ENT Integradores Combs DATOS SAL
signo Z

Control del RFD RFD

Diezmador.

PROPIEDADES DEL INTERPOLADOR Y EL DIEZMADOR

Parámetros modificables

Estos filtros tienen tres parámetros modificables para ajustarse a diferentes necesidades:

B: Tamaño de la entrada y la salida.

R: Factor de re-muestreo.

N: Número de etapas.

El número de etapas equivale al número de combinadores e integradores en cascada que


tendrá el filtro CIC internamente.

El factor de re-muestreo indica en cuanto se va a interpolar o diezmar la señal de entrada.

Los parámetros R y B pueden ser modificados en la entidad de alto nivel


sistema_GMSK.vhd. El parámetro N puede ser modificado en la entidad del transmisor
transmisor_GMSK.vhd bajo el nombre de N_CIC.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 159 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Descripción de los pines del sistema

La entidad de los filtros es de la siguiente forma:

Entidad del sistema

d_in, d_out: bus de entrada y de salida.

ND: Este pin es para controlar los datos de entrada, debe estar activo durante un ciclo de
reloj cada vez que se quiera ingresar un dato al sistema.

RFD: Cuando este pin está en nivel alto, el sistema está listo para recibir datos.

CLK: reloj del filtro, este reloj debe ser al menos de la frecuencia más alta del sistema.

Reset_n: Reset del sistema activo en bajo.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 160 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

RDY: Cuando se encuentra en nivel alto, indica que hay un dato válido en el bus d_out.

DIAGRAMAS DE TIEMPOS

Este diagrama de tiempos muestra un caso en el cual se le ingresan datos un filtro CIC
interpolador cada R+1 ciclos de reloj. Los parámetros seleccionados fueron R=8, B=8 y
N=4.

Diagrama de tiempos del interpolador.

A continuación se muestra un diagrama de tiempos en el cual se le ingresan datos a un


diezmador cada ciclo de reloj. Los parámetros seleccionados al principio fueron R=8, B=8 y
N=4.

Diagrama de tiempos del diezmador.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 161 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

EJEMPLOS DE INSTANCIACIÓN

A continuación se muestra un ejemplo de cómo instanciar los filtros CIC.

Primero se presenta el siguiente código que muestra un ejemplo de cómo instanciar un


interpolador en VHDL y configurar sus parámetros modificables.

library ieee;

use ieee.std_logic_1164.all;

use ieee.numeric_std.all;

entity prueba_interpolador is

generic

DATA_WIDTH : natural := 16

);

port

data_in : in std_logic_vector(DATA_WIDTH-1 downto 0);

out_CIC: out std_logic_vector(DATA_WIDTH-1 downto 0);

clk: in std_logic;

reset_n: in std_logic;

nd: in std_logic;

rfd: out std_logic;

rdy: out std_logic

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 162 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

);

end entity;

architecture rtl of prueba_interpolador is

component cic_filter is

generic

--||||PARÁMETROS MODIFICABLES||||--

B : natural := 8;

R : natural:= 6;

N : natural:= 8

);

port

d_in: in std_logic_vector(B-1 downto 0);

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 163 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

d_out: out std_logic_vector(B-1 downto 0);

nd: in std_logic;

clk: in std_logic;

rfd: out std_logic;

reset_n: in std_logic;

rdy: out std_logic

);

end component;

begin

interpolador: cic_filter

generic map(

B=>DATA_WIDTH,--tamaño de palabra del sistema

R=>6,--factor de interpolado

N=>8—numero de etapas

port map(

d_in=>data_in,

d_out=>out_CIC,

nd=>nd,

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 164 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

rfd=>rfd,

clk=>clk,

reset_n=>reset_n,

rdy=>rdy

);

end rtl;

Finalmente se tiene el código en VHDL que muestra cómo instanciar un diezmador.

library ieee;

use ieee.std_logic_1164.all;

use ieee.numeric_std.all;

entity prueba_diezmador is

generic

DATA_WIDTH : natural := 16

);

port

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 165 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

data_in : in std_logic_vector(DATA_WIDTH-1 downto 0)

out_CIC: out std_logic_vector(DATA_WIDTH-1 downto 0);

clk: in std_logic;

reset_n: in std_logic;

nd: in std_logic;

rfd: out std_logic;

rdy: out std_logic

);

end entity;

architecture rtl of prueba_diezmador is

component diezmador is

generic

--||||PARÁMETROS MODIFICABLES||||--

B=>DATA_WIDTH,--tamaño de palabra del sistema

R=>6,--factor de interpolado

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 166 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

N=>8—numero de etapas

);

port

d_in: in std_logic_vector(B-1 downto 0);

d_out: out std_logic_vector(B-1 downto 0);

nd: in std_logic;

clk: in std_logic;

rfd: out std_logic;

reset_n: in std_logic;

rdy: out std_logic

);

end component;

begin

diezm: diezmador

generic map(

B=>DATA_WIDTH,

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 167 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

R=>6,

N=>8

port map(

d_in=>data_in,

d_out=>out_CIC,

nd=>nd,

rfd=>rfd,

clk=>clk,

reset_n=>reset_n,

rdy=>rdy

);

end rtl;

MODULADOR FM
INTRODUCCION

El modulador FM que implementado en el sistema de comunicación trabaja en banda


base (con una portadora de 0 Hz).

Su función es realizar cambios de frecuencia en una señal con el cambio de amplitud en la


entrada, con la característica principal de mantener siempre una fase continua.

A la salida del modulador se presenta una señal compleja con sus partes real e imaginaria
desfasadas 90°.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 168 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

DIAGRAMA DE BLOQUES DEL MODULADOR FM

Sal_Real
EN + x CORDIC
Sal_Imag

-1 RDY
ND Z Sens

Diagrama de bloques del modulador FM.

PROPIEDADES DEL MODULADOR FM

Parámetros modificables

El modulador tiene 2 parámetros:

B: Tamaño de la entrada y la salida.

D: Sensibilidad de la modulación.

La sensibilidad de la modulación tiene que estar representada en punto fijo con una parte
fraccionaria Q=13. Su valor por defecto es de 𝜋⁄2 ∙ 𝑛𝑠𝑝𝑠 donde 𝑛𝑠𝑝𝑠 es el número de
muestras por símbolo del filtro gaussiano, que en este caso particular es 8.

Por lo anterior dicho el valor de la sensibilidad es (𝜋⁄16) ∗ 213 .

Todos los parámetros configurables de modulador FM pueden ser modificados en la


entidad de alto nivel sistema_GMSK.vhd.

Descripción de los pines del sistema


Proyecto de Investigación N° 467
UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 169 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

La entidad del modulador FM es de la siguiente forma:

d_out_sin
d_in
d_out_cos
ND

clk

reset_n RDY

Entidad del sistema.

d_in: bus de datos de entrada.

d_out_cos, d_out_sin: Buses de datos de salida (entre los dos forman la señal compleja).

ND: Este pin es para controlar los datos de entrada, debe estar activo durante un ciclo de
reloj cada vez que se quiera ingresar un dato al sistema.

clk: reloj del filtro, este reloj debe ser al menos de la frecuencia más alta del sistema.

Reset_n: Reset del sistema activo en bajo.

RDY: Cuando se encuentra en nivel alto, indica que hay un dato válido en los buses
d_out_cos, d_out_sin.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 170 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

DIAGRAMAS DE TIEMPOS

Este diagrama de tiempos muestra el funcionamiento del modulador FM. Los parámetros
seleccionados fueron d=1608 y B=16.

Diagrama de tiempos del modulador FM.

En esta figura se puede observar como la frecuencia de la salida varía con respecto al valor
de la entrada, además se puede observar el desfase de 90° entre la señal real y la
imaginaria.

EJEMPLO DE INSTANCIACIÓN

A continuación se mostrará un ejemplo de cómo instanciar el modulador FM en una


entidad de mayor nivel.

library ieee;

use ieee.std_logic_1164.all;

use ieee.numeric_std.all;

entity prueba_FM is

generic

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 171 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

B: natural := 16

);

port

data_in: in std_logic_vector(B-1 downto 0);

d_out_sin: out std_logic_vector(15 downto 0);

d_out_cos: out std_logic_vector(15 downto 0);

clk: in std_logic;

nd: in std_logic;

reset_n: in std_logic;

rdy: out std_logic

);

end entity;

architecture rtl of prueba_FM is

component mod_fm is

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 172 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

generic

--||||PARÁMETROS MODIFICABLES||||--

B : natural := 16;

d : natural:= 1608

);

port

d_in: in std_logic_vector(B-1 downto 0);

d_out_sin: out std_logic_vector(2*B-1 downto 0);

d_out_cos: out std_logic_vector(2*B-1 downto 0);

nd: in std_logic;

clk: in std_logic;

reset_n: in std_logic;

rdy: out std_logic

);

end component;

----------------------------------------------------------

----------------------------------------------------------

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 173 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

begin

modulador: mod_fm

generic map(

B=>B,--tamaño de palabra del sistema

d=>1608—sensibilidad del modulador fm

port map(

d_in=>data_in,

d_out_sin=>d_out_sin,

d_out_cos=>d_out_cos,

nd=>nd,

clk=>clk,

reset_n=>reset_n,

rdy=>rdy

);

end rtl;

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 174 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

MODULADOR I/Q
INTRODUCCION

El modulador I/Q recibe una entrada compleja con un desfase de 90° y la multiplica por
una señal compleja con el fin de realizar un traslado en frecuencia.

Este sistema se utiliza en la etapa de transmisión para llevar los datos desde banda base
hasta la frecuencia de la señal portadora.

DIAGRAMA DE BLOQUES DEL MODULADOR I/Q

CORDIC Algorithm
In_Real x Xn Sal
In_Imag y z RDY RDY

módulo 2 pi

Contador

Diagrama de bloques del modulador I/Q.

PROPIEDADES DEL MODULADOR I/Q

Parámetros modificables

Este sistema tiene dos parámetros modificables para ajustarse a diferentes necesidades:

B: Tamaño de la entrada y la salida.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 175 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Incremento: Sensibilidad de la modulación.

El incremento es un valor que define a la frecuencia de la señal portadora bajo la siguiente


relación:

2𝜋 ∗ 𝑓𝑐
𝑖𝑛𝑐𝑟𝑒𝑚𝑒𝑛𝑡𝑜 = ∗ 2𝑄
𝑓𝑠

Donde Q es la parte fraccionaria del sistema, que en este caso es 13.

La frecuencia de muestreo original en el sistema 𝑓𝑠 es 48.828Hz y la frecuencia de la


portadora 𝑓𝑐 es 10.000Hz, por lo tanto el valor por defecto del incremento es 10541.

Todos los parámetros configurables de modulador I/Q pueden ser modificados en la


entidad de alto nivel sistema_GMSK.vhd.

Descripción de los pines del sistema

La entidad del modulador I/Q es de la siguiente forma:

in_real
in_imag

ND sal

clk

reset_n RDY

Entidad del bloque

In_real, in_imag: buses de datos de entrada.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 176 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Sal: Bus de datos de salida.

ND: Este pin es para controlar los datos de entrada, debe estar activo durante un ciclo de
reloj cada vez que se quiera ingresar un dato al sistema.

clk: reloj del sistema, este reloj debe ser al menos de la frecuencia más alta del sistema.

Reset_n: Reset del sistema activo en bajo.

RDY: Cuando se encuentra en nivel alto, indica que hay un dato válido en el bus sal.

DIAGRAMAS DE TIEMPOS

Este diagrama de tiempos muestra el funcionamiento del modulador I/Q. Los parámetros
seleccionados fueron incremento=15725 y B=16.

Diagrama de tiempos del modulador I/Q.

La latencia presentada en el circuito es debido al módulo CORDIC que necesita 16 ciclos de


reloj para tener datos válidos a su salida.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 177 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

EJEMPLO DE INSTANCIACIÓN

El siguiente código muestra un ejemplo de cómo instanciar el modulador I/Q en una


entidad de nivel mayor.

library ieee;

use ieee.std_logic_1164.all;

use ieee.numeric_std.all;

entity prueba_IQ is

generic

B: natural := 16;

incremento: natural:= 10725

);

port

nd : in std_logic;

reset_n : in std_logic;

clk : in std_logic;

rdy : out std_logic;

d_imag : in std_logic_vector(B-1 downto 0);

d_real : in std_logic_vector(B-1 downto 0);

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 178 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

sal : out std_logic_vector(15 downto 0)

);

end entity;

architecture rtl of prueba_IQ is

component mod_IQ is

generic

B : natural := 16;

incremento: natural:= 10725

);

port

reset_n : in std_logic;

clk : in std_logic;

nd : in std_logic;

rdy : out std_logic;

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 179 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

in_real : in std_logic_vector((B-1) downto 0);

in_imag : in std_logic_vector((B-1) downto 0);

sal : out std_logic_vector((2*B-1) downto 0)

);

end component;

begin

modulador: mod_IQ

generic map(

B=>B,--tamaño de palabra del sistema

incremento=>incremento--parámetro de la frecuencia de la --portadora

port map(

sal=>sal,

in_real=>d_real,

in_imag=>d_imag,

nd=>nd,

clk=>clk,

reset_n=>reset_n,

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 180 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

rdy=>rdy

);

end rtl;

DEMODULADOR I/Q

INTRODUCCION

Este demodulador realiza la operación inversa del modulador I/Q, recibe una entrada
desplazada en frecuencia y realiza una operación de multiplicación por una exponencial
compleja para trasladar nuevamente la señal a su posición original en banda base.

DIAGRAMA DE BLOQUES DEL DEMODULADOR I/Q

Algoritmo CORDIC
Contador
Zo RDY

0 Xo (Imag) Xn
Data_in
Yo Nd (real) Yn

Nd
𝑍 −1

Diagrama de bloques demodulador I/Q.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 181 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

PROPIEDADES DEL DEMODULADOR I/Q

Parámetros modificables

El sistema de demodulación I/Q cuenta con una serie de parámetros modificables iguales
a los del modulador, nombrados a continuación:

B: tamaño de entrada y salida.

Incremento: sensibilidad de la modulación.

El parámetro tamaño de entrada y salida se refiere al número de bits de la señal,


incremento se modifica de acuerdo con el valor de la señal portadora deseada, utilizando
la relación mostrada en la ecuación (1).

2𝜋 ∗ 𝑓𝑐
𝑖𝑛𝑐𝑟𝑒𝑚𝑒𝑛𝑡𝑜 = ∗ 2𝑄
𝑓𝑠

Donde Q es la parte fraccionaria de los datos que para este bloque particularmente tiene
un valor de 𝑄 = 13.

La frecuencia de muestreo original en el sistema 𝑓𝑠 es 48.828Hz y la frecuencia de la


portadora 𝑓𝑐 es 10.000Hz, por lo tanto el valor por defecto del incremento es 10541.

Todos los parámetros configurables de demodulador I/Q pueden ser modificados en la


entidad de alto nivel sistema_GMSK.vhd.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 182 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Pines del sistema:

Data_in RDY

Nd (Imag) Xn

Clk (Real) Yn

Reset_n

Entidad del bloque.

En esta entidad:

Data_in: es la señal de entrada al sistema.

Nd: indica una entrada valida en el bus data_in, por lo cual se coloca en alto durante un
ciclo de reloj cada vez que se desea entrar un dato al sistema.

Clk: señal de reloj del sistema. Esta señal es común para todos los módulos.

Reset_n: Reset del sistema, está activo en bajo.

RDY: esta señal esta en alto cuando el bloque indica que existe un dato valido en las
salidas.

Xn, Yn: salidas imaginaria y real del demodulador I/Q.

DIAGRAMA DE TIEMPO

A continuación se muestra el diagrama de tiempos en el que se ingresan datos


provenientes del modulador I/Q directamente con un tamaño de dato B = 16 e
incremento = 10725.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 183 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Diagrama de tiempos

Se puede observar que por cada dato en la entrada del demodulador se obtiene un dato
tanto real como imaginario a la salida del mismo.

EJEMPLO DE INSTANCIACION

El siguiente código muestra un ejemplo de cómo instanciar el demodulador I/Q en una


entidad de nivel mayor.

library ieee;

use ieee.std_logic_1164.all;

use ieee.numeric_std.all;

entity prueba_demIQ is

generic

B: natural := 16;

incremento: natural:= 10725

);

port

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 184 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

nd : in std_logic;

reset_n : in std_logic;

clk : in std_logic;

rdy : out std_logic;

out_imag : out std_logic_vector(2*B-1 downto 0);

out_real : out std_logic_vector(2*B-1 downto 0);

in_demiq : in std_logic_vector(B-1 downto 0)

);

end entity;

architecture rtl of prueba_demIQ is

component dem_IQ is

generic

B : natural := 16;

incremento :natural :=10725

);

port

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 185 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

p_in_cordic: out std_logic_vector(B-1 downto 0);

p_in_x_cordic :out std_logic_vector((B-1) downto 0);

reset_n : in std_logic;

clk : in std_logic;

nd : in std_logic;

rdy : out std_logic;

sal_real : out std_logic_vector((2*B-1) downto 0);

sal_imag : out std_logic_vector((2*B-1) downto 0);

entrada : in std_logic_vector((B-1) downto 0)

);

end component;

begin

u1: dem_IQ

generic map(

B=>B,--tamaño de palabra del sistema

incremento=>incremento--parametro de la frecuencia de la --portadora

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 186 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

port map

reset_n =>reset_n,

clk =>clk,

nd =>nd,

rdy =>rdy,

sal_real =>out_real,

sal_imag =>out_imag,

entrada => in_demiq

);

end rtl;

FILTRO GAUSSIANO CON ESTRUCTURA POLIFASE


INTRODUCCIÓN

El bloque filtro gaussiano con estructura polifase es un filtro cuya respuesta al impulso es
una función gaussiana; este filtro está dispuesto de tal forma que puede ser expresado en
8 filtros en paralelo, utilizados para aumentar la tasa de muestreo.

DIAGRAMA DE BLOQUES DEL SISTEMA:

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 187 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Control RDY, RDY


ND RFD y &
multiplexor
RFD
Contador
Filtro FIR (1)

Filtro FIR (2)


Data_out

Filtro FIR (8)

Descripción de bloques filtro gaussiano polifase.

PROPIEDADES DEL FILTRO GAUSSIANO

Parámetros modificables

Este sistema cuenta con un parámetro modificable:

B: tamaño de entrada y salida.

Este parámetro es el número de bits de las señales de entrada y salida.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 188 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Pines del sistema

Data_in Data_out

ND RFD

Clk RDY

Reset_n

Entidad del bloque.

En esta entidad:

Data_in: es la señal de entrada al sistema.

Nd: indica una entrada valida en el bus data_in, por lo cual se debe poner en alto durante
un ciclo de reloj cada vez que se desea entrar un dato al sistema.

Clk: señal de reloj del sistema. Esta señal es común para todos los módulos.

Reset_n: Reset del sistema, está activo en bajo.

Data_out: salida del filtro gaussiano polifase.

RDY: esta señal esta en alto cuando el bloque indica que existe un dato valido en las
salidas.

RFD: indica cuando el sistema está listo para recibir un nuevo dato. Se pone en alto
cuando todos los filtros han procesado un dato de entrada y enviado un dato válido a la
salida del bloque.

El parámetro configurable del filtro gaussiano puede ser modificado en la entidad de alto
nivel sistema_GMSK.vhd.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 189 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

DIAGRAMA DE TIEMPO

En el diagrama de tiempos de la siguiente figura se muestra la entrada y salida del filtro


gaussiano polifase, donde entra un dato (1, 0) cada 16 ciclos de reloj. El parámetro
seleccionado para este caso fue B = 16. En este diagrama se puede ver como la señal RDY
se pone en alto durante 8 ciclos de reloj después de que la señal ND se pone en alto

Figura 3. Diagrama de tiempos filtro Gaussiano

EJEMPLO DE INSTANCIACION

El siguiente código muestra un ejemplo de cómo instanciar el filtro gaussiano en una


entidad de nivel mayor.

library ieee;

use ieee.std_logic_1164.all;

use ieee.numeric_std.all;

--library work;

--use work.coeficientes.all;

entity prueba_gauss is

generic

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 190 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

B : natural := 16

);

port

clk : in std_logic;

rfd : out std_logic;

reset_n : in std_logic;

d_in : in std_logic_vector(B-1 doanto 0);

d_out : out std_logic_vector(B-1 downto 0);

nd : in std_logic;

rdy : out std_logic

);

end entity;

architecture beh of prueba_gauss is

component filtro_gauss is

generic

B : natural:=16

);

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 191 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

port

data_in: in std_logic_vector(B-1 downto 0);

data_out: out std_logic_vector(B-1 downto 0);

nd: in std_logic;

clk: in std_logic;

rfd: out std_logic;

reset_n: in std_logic;

rdy: out std_logic

);

end component;

begin

u2: filtro_gauss generic map

B =>16--tamaño de palabra del sistema

port map

data_in=>d_in,

data_out=>d_out,

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 192 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

nd=>nd,

clk=>clk,

rfd=>rfd,

reset_n=>reset_n,

rdy=>rdy

);

end architecture;

DEMODULADOR FM
INTRODUCCION

El demodulador FM usado en el sistema trabaja en banda base (portadora de Hz).

Su función es recibir la señal compleja, y convertirla en una señal real cuya amplitud varía
en función de las variaciones de frecuencia en la entrada.

A la entrada del modulador se presenta una señal compleja con sus partes real e
imaginaria desfasadas 90°.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 193 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

DIAGRAMA DE BLOQUES DEL MODULADOR FM

Diagrama de bloques del demodulador FM.

PROPIEDADES DEL DEMODULADOR FM

Parámetros modificables

Este bloque tiene básicamente cuatro parámetros modificables para ajustarse a diferentes
necesidades:

N: Tamaño de la entrada.

DATA_WIDTH: Tamaño de la salida.

D_GAIN: Sensibilidad de la demodulación.

Q: Parte fraccionaria

La sensibilidad de la modulación tiene que estar representada en punto fijo con una parte
fraccionaria Q=13. Su valor por defecto es el recíproco de la sensibilidad del modulador
2. 𝑛𝑠𝑝𝑠⁄
FM, es decir 𝜋 donde 𝑛𝑠𝑝𝑠 es el número de muestras por símbolo del filtro
gaussiano, que en este caso particular es 8.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 194 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Por lo anterior dicho el valor de la sensibilidad es (16⁄𝜋) ∗ 213 .

Todos los parámetros configurables del demodulador FM pueden ser modificados en la


entidad de alto nivel sistema_GMSK.vhd.

Descripción de los pines del sistema

La entidad del demodulador FM es de la siguiente forma:

Entidad del sistema.

entrada_i: bus de datos de entrada reales.

entrada_q: bus de datos de entrada imaginarios.

salida: Bus de datos de salida.

enable: Este pin es para controlar los datos de entrada, debe estar activo durante un ciclo
de reloj cada vez que se quiera ingresar un dato al sistema.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 195 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

clk: reloj del filtro, este reloj debe ser al menos de la frecuencia más alta del sistema.

Reset_n: Reset del sistema activo en bajo.

salida_rdy: Cuando se encuentra en nivel alto, indica que hay un dato válido en la salida.

DIAGRAMAS DE TIEMPOS

Este diagrama de tiempos muestra el funcionamiento del modulador FM. Los parámetros
seleccionados fueron D_GAIN=41721, N=16 , DATA_WIDTH=18 y Q=13.

Diagrama de tiempos del demodulador FM.

EJEMPLO DE INSTANCIACIÓN

A continuación se mostrará un ejemplo de cómo instanciar el modulador FM en una


entidad de mayor nivel.

library ieee;

use ieee.std_logic_1164.all;

use ieee.numeric_std.all;

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 196 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

entity prueba_dem_fm is

generic

DATA_WIDTH : natural := 18;

N : natural := 16

);

port

clk : in std_logic;

enable : in std_logic;

reset_n : in std_logic;

entrada_i,entrada_q : in std_logic_vector(N-1 downto 0); salida :out


std_logic_vector ((DATA_WIDTH-1) downto 0);

salida_rdy : out std_logic

);

end entity;

architecture rtl of prueba_FM is

component dem_fm is

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 197 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

generic

--||||PARÁMETROS MODIFICABLES||||--

DATA_WIDTH : natural := 18;

Q : natural := 13;

N : natural := 16;

D_GAIN : natural := 41721

);

port

clk : in std_logic;

enable : in std_logic;

reset_n : in std_logic;

entrada_i,entrada_q : in std_logic_vector(N-1 downto 0);

salida : out std_logic_vector ((DATA_WIDTH-1) downto 0);

salida_rdy : out std_logic

);

end component;

demodulador_fm : dem_fm generic map(

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 198 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Q=>13,

N=>N,

DATA_WIDTH=>DATA_WIDTH,

D_GAIN => 41721,

port map(

clk => clk,

enable => enable,

reset_n => reset_n,

entrada_i => entrada_i,


entrada_q => entrada_q,
salida => salida,
salida_rdy => salida_rdy

);

end rtl;

SINCRONIZADOR M&M
INTRODUCCIÓN

El sincronizador M&M calcula la diferencia temporal que existe entre la señal demodulada
y el reloj propio del sistema. En la entrada se presentan los datos con amplitud variable los
cuales usan 8 muestras por símbolo. Luego de ser corregido el error temporal, se tiene a la
salida 1 muestra por símbolo y los datos presentados como una cadena de bits.

DIAGRAMA DE BLOQUES DEL SINCRONIZADOR M&M

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 199 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

y (t) Bloque
ak
Muestreador de
Decisión

Detector
de Error
M&M

x (e)

Filtro
Lazo
Cerrado

Reloj
Ajustable

Diagrama de bloques del sincronizador M&M.

PROPIEDADES DEL SINCRONIZADOR M&M

Parámetros modificables

El sincronizador tiene un parámetro general modificable:

DATA_WIDTH: Tamaño de la entrada.

D_GAIN_MU: Ganancia de la corrección temporal.

D_GAIN_OMEGA: Ganancia de la etapa de filtrado.

D_OMEGA_MID: Valor central del saturador.

D_OMEGA_REL: Desviación del saturador.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 200 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

El tamaño de la salida va estrechamente ligado al de la entrada, el cual es 2 bits por


debajo de este tamaño. De igual forma el tamaño de la parte fraccionaria (Q) es 13.

Los siguientes parámetros sólo pueden ser cambiados en la entidad ganancias.vhd, que se
encuentra dentro de la entidad general.

El valor D_GAIN_MU va estrechamente ligado con la ganancia obtenida en la etapa de


corrección, su valor por defecto es 0.175.

El valor D_GAIN_OMEGA va estrechamente ligado con la ganancia obtenida en la etapa de


2
filtrado, su valor por defecto es 𝐷_𝐺𝐴𝐼𝑁_𝑀𝑈 ⁄4.

Los valores D_OMEGA_MID y D_OMEGA_REL son los parámetros que manejan la función
saturadora, es decir, valor central y desviación cuyos valores por defecto son 8 y 0.005
respectivamente. Nótese que el valor de D_OMEGA_MID es el mismo valor de nsps, esto
es debido a que el sincronizador también realiza la etapa final de diezmado.

Todos los parámetros configurables del sincronizador pueden ser modificados en la


entidad de alto nivel sistema_GMSK.vhd.

Descripción de los pines del sistema

La entidad del sincronizador es de la siguiente forma:

Entidad del sincronizador.

entrada: bus de datos de entrada

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 201 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

salida: Bus de datos de salida.

new_data: Este pin es para controlar los datos de entrada, debe estar activo durante un
ciclo de reloj cada vez que se quiera ingresar un dato al sistema.

clk: reloj del filtro, este reloj debe ser al menos de la frecuencia más alta del sistema.

Reset_n: Reset del sistema activo en bajo.

s: Salida del sincronizador expresada en un bit, representa al bus salida comparado con
cero.

retenedor: Salida retrasada un ciclo de reloj (para efectos de depuración).

nd: Cuando se encuentra en nivel alto, indica que hay un dato válido en la salida.

DIAGRAMAS DE TIEMPOS

Este diagrama de tiempos muestra el funcionamiento del modulador FM. Los parámetros
seleccionados fueron D_GAIN_OMEGA=63, D_OMEGA_MID=65536, D_OMEGA_REL=41,
D_GAIN_MU= 1433 y DATA_WIDTH=18.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 202 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Diagrama de tiempos del sincronizador M&M.

EJEMPLO DE INSTANCIACIÓN

A continuación se mostrará un ejemplo de cómo instanciar el sincronizador en una


entidad de mayor nivel.

library ieee;

use ieee.std_logic_1164.all;

use ieee.numeric_std.all;

entity prueba_m&m is

generic

DATA_WIDTH : natural := 18

);

port

clk : in std_logic;

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 203 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

entrada : in std_logic_vector(DATA_WIDTH-1 downto 0);

new_data : in std_logic;

reset_n : in std_logic;

nd,s : out std_logic;

retenedor : out std_logic_vector((DATA_WIDTH-2) downto 0);

salida : out std_logic_vector(DATA_WIDTH-2 downto 0)

);

end entity;

architecture rtl of prueba_m&m is

component muller is

generic

DATA_WIDTH : natural := 18

);

port

clk : in std_logic;

entrada : in std_logic_vector(DATA_WIDTH-1 downto 0);

new_data : in std_logic;

reset_n : in std_logic;

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 204 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

nd,s : out std_logic;

retenedor : out std_logic_vector((DATA_WIDTH-2) downto 0);

salida : out std_logic_vector(DATA_WIDTH-2 downto 0)

);

end component;

sincronizador_mm : muller generic map(

DATA_WIDTH=>DATA_WIDTH
)

port map(

clk => clk,


entrada => entrada,
new_data => new_data,
reset_n => reset_n,
nd => nd,
s => s,

retenedor => retenedor,


salida => salida
);

end rtl;

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 205 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

CODIFICADOR CONVOLUCIONAL
INTRODUCCÍON

En las transmisiones digitales de la actualidad la codificación es un proceso de suma importancia


ya que con esta se introduce redundancia en los datos con el fin de poder detectar y corregir
errores en la transmisión, siendo el codificador convolucional una alternativa adecuada para usar
sobre canales de mucho ruido, es decir con alta probabilidad de error.

DIAGRAMA DE BLOQUES DEL CODIFICADOR CONVOLUCIONAL

Codificador Convolucional.

PROPIEDADES DEL CODIFICADOR CONVOLUCIONAL

Parámetros

El codificador Convolucional utiliza el estándar IEEE 802.11a el cual sugiere las siguientes
características:

𝐾 = 7: Número de registros de desplazamiento.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 206 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

𝑟 = 1⁄2: Indica la cantidad de bits de redundancia por cada bit de entrada, es decir que
por cada bit que ingresa, salen dos bits.

Polinomios generadores: 𝑔0 = 1338 y 𝑔1 = 1718 , para tasas de 6, 12 y 24 Mbps.

Descripción de los pines del sistema

Diagrama de entradas y salidas del codificador Convolucional.

data_in: pin donde ingresa la secuencia de bits que se quieren codificar.

enable: encargado de poner en funcionamiento el codificador.

reset: tiene como fin poner los registros en cero de manera asíncrona.

ready: pin de sincronización para indicar cuándo se realizo una codificación.

clk: reloj del codificador.

𝒂 y 𝒃: por estos dos pines sale el símbolo codificado.

DIAGRAMA DE TIEMPO

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 207 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Este diagrama de tiempo muestra el funcionamiento del codificador convolucional al


ingresa la siguiente trama de 48 bits:

𝑑𝑎𝑡𝑎_𝑖𝑛: 101101110111101111101111110111111101111111000000

Simulación temporal del codificador Convolucional.

EJEMPLO DE INSTANCIACIÓN

A continuación se mostrara un ejemplo de cómo instanciar el codificador convolucional en


una entidad de mayor nivel, este se encuentra en el archivo shift_registers.vhd.

library ieee;

use ieee.std_logic_1164.all;

use ieee.numeric_std.all;

entity shift_registers is

port(

data_in: in std_logic;

clk: in std_logic;

enabled: in std_logic;

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 208 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

reset: in std_logic;

ready: out std_logic;

a: out std_logic;

b: out std_logic

);

end entity;

architecture rtl of shift_registers is

component reg is

port

clk : in std_logic;

reset : in std_logic;

a : in std_logic;

s : out std_logic

);

end component;

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 209 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

signal cs0: std_logic;

signal cs1: std_logic;

signal cs2: std_logic;

signal cs3: std_logic;

signal cs4: std_logic;

signal cs5: std_logic;

signal cs6: std_logic;

signal n_1: std_logic;

signal n_2: std_logic;

signal ready_aux: std_logic;

signal ready_aux1: std_logic;

begin

reg1: reg port map(clk=>clk,a=>data_in,s=>cs0,reset=>reset);

reg2: reg port map(clk=>clk,a=>cs0,s=>cs1,reset=>reset);

reg3: reg port map(clk=>clk,a=>cs1,s=>cs2,reset=>reset);

reg4: reg port map(clk=>clk,a=>cs2,s=>cs3,reset=>reset);

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 210 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

reg5: reg port map(clk=>clk,a=>cs3,s=>cs4,reset=>reset);

reg6: reg port map(clk=>clk,a=>cs4,s=>cs5,reset=>reset);

reg7: reg port map(clk=>clk,a=>cs5,s=>cs6,reset=>reset);

process (clk)

begin

if (rising_edge(clk)) then

if (enabled = '1') then

n_1<=cs0 xor cs2 xor cs3 xor cs5 xor cs6;

n_2<=cs0 xor cs1 xor cs2 xor cs3 xor cs6;

ready_aux<='1';

ready_aux1<=ready_aux;

else

ready_aux<='0';

ready_aux1<=ready_aux;

end if;

end if;

end process;

ready<=ready_aux1;

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 211 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

a<=n_1;

b<=n_2;

end rtl;

SIMULACIÓN DE CODIFICACIÓN EN MATLAB

El archivo codificadorconvolucional.m contiene el código para simular utilizando el


software Matlab, el mensaje a codificar se puede modificar en la penúltima línea del
código “mensaje=[…]”.

clc

clear all;

close all;

%longitud del mensaje

long=7;

%[7]-->Longitud de restricción (número de registros + 1).

%[171 133]-->Polinomio generador (valores octales)

t = poly2trellis ([7],[171 133]);

%tasa=bits_entrada/bits_salida

tasa=rats(t.numInputSymbols/t.numOutputSymbols);

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 212 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

disp(['Radio de codificación:', num2str(tasa)])

mensaje=[1;0;1;1;0;1;1;1;0;1;1;1;1;0;1;1;1;1;1;0;1;1;1;1;1;1;0;1;1;1;1;1;1;1;0;1;1;1;1;1;1;1;0;0;0;0;0;0]

odigo=convenc(mensaje,t)

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 213 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

DECODIFICADOR VITERBI
INTRODUCCÍON

En 1967 Andrew James Viterbi inventó el algoritmo de Viterbi, método que utilizó para la
recepción de datos codificados convolucionalmente, el cual es muy utilizado en los
códigos correctores de errores usados en las comunicaciones digitales.

Este algoritmo encuentra las secuencias de estados más probables a partir de una
observación al modelo oculto de Markov, es decir, se obtiene la secuencia óptima que
explica la secuencia observada.

DIAGRAMA DE BLOQUES DEL CODIFICADOR CONVOLUCIONAL

Diagrama de bloques general del decodificador Viterbi.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 214 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

PROPIEDADES DEL DECODIFICADOR VITERBI

Funciones de los bloques

Interfaz de entrada y salida: Estos bloques proporcionan una conexión con los demás
dispositivos externos como el receptor de comunicación y el demodulador de la señal
entregada por el decodificador.

Métricas de rama: Este bloque calcula las métricas de rama de cada etapa del diagrama de
Trellis, hallando las distancias Hamming entre el símbolo recibido y el símbolo esperado.

Memoria de métricas: Este bloque almacena la ruta parcial en cada estado de la etapa
actual.

ASC (Add-Compare-Select): Este bloque se encarga de sumar la métrica del origen con la
métrica de rama de cada una de las posibles 2 rutas que puede tomar hacia el estado
destino, dejando como métrica nueva acumulada, aquella con mejor métrica.

Memoria de rutas sobrevivientes: Este bloque es necesario cuando se inicia el proceso de


decodificación hacia atrás o traceback, el cual requiere un bit de memoria por estado en
cada etapa para indicar si la ruta sobreviviente es un bit en uno o en cero.

Memoria de salida: Este bloque es el encargado de generar la secuencia de salida


decodificada en el orden adecuado de acuerdo a los resultados del bloque anterior.

Descripción de los pines del sistema

Diagrama de entradas y salidas del decodificador Viterbi.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 215 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

clk: reloj del decodificador.

reset: reinicio asíncrono.

enable: comienza el proceso de decodificación.

ready: pin de sincronización que indica cuando fue decodificada la secuencia de entrada.

bit_codificado_0 y bit_codificado_1: son los pines de entrada de los dos bits referentes a los
símbolos de la secuencia enviada por el codificador Convolucional.

bit_decodificado: pin de salida con el bit decodificado.

DIAGRAMA DE TIEMPO

Este diagrama de tiempo muestra el funcionamiento del decodificador Viterbi, cuya entrada es la
misma arrojada por el codificador Convolucional, es decir la secuencia codificada de la trama de
bits 101101110111101111101111110111111101111111000000.

Simulación temporal del decodificador Viterbi con mensaje sin errores.

Ahora el diagrama de tiempo con errores inducidos en el mensaje como se observa en las
posiciones indicadas por las flechas rojas.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 216 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Simulación temporal del decodificador Viterbi con algunos errores en los símbolos de entrada.

EJEMPLO DE INSTANCIACIÓN

A continuación se mostrara un ejemplo de cómo instanciar el decodificador Viterbi en una


entidad de mayor nivel, este se encuentra en el archivo ViterbiDecodificador.vhd.

library ieee;

use ieee.std_logic_1164.all;

use work.viterbidecoPkg.all;

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 217 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

entity ViterbiDecodificador is

port(

---------------Entradas --------------

--Softbit 0

bit_codificado_0: in std_logic;

--Softbit 1

bit_codificado_1: in std_logic;

--Señal de reloj

clk: in std_logic;

--Señal de reset asíncrona

reset: in std_logic;

--Señal de habilitación

enable: in std_logic;

------------------Salidas---------------

--Bit decodificado

bit_decodificado: out std_logic;

--Bit válido

ready: out std_logic

);

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 218 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

end ViterbiDecodificador;

architecture ViterbiDecodificadorArch of ViterbiDecodificador is

signal sym_0_v,sym_1_v: std_logic;

begin

sym_0_v<=bit_codificado_0;

sym_1_v<=bit_codificado_1;

dec0: viterbideco

port map(

bit_codificado_0=>sym_0_v, --Símbolo asociado a G0

bit_codificado_1=>sym_1_v, --Símbolo asociado a G1

clk=>clk,

reset=>reset,

enable=>enable,

bit_decodificado=>bit_decodificado,--Bit decodificado

ready=>ready

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 219 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

);

end ViterbiDecodificadorArch;

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 220 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Canal AWGN
INTRODUCCIÓN

AWGN (Additive White Gaussian Noise) es un modelo de canal que a la señal que se transmite a
través de un medio le adiciona ruido blanco. Básicamente son datos que se suman a la señal
original, dichos datos son característicos debido al tipo de distribución Gaussiana por la que son
dominados.

DIAGRAMA DE BLOQUES DEL MODELO DE CANAL

Canal AWGN.

PROPIEDADES DEL CANAL

Parámetros modificables

Este sistema tiene principalmente cuatro (4) parámetros modificables para ajustarse a
diferentes necesidades:

m : Tamaño de la palabra de entrada y la salida.

N : Grado del polinomio base.

G : Polinomio generador.

init : Valores iniciales.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 221 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Los parámetros N, G y init pertenecen directamente a la generación de cada una de las


variables normales que conforman el sistema.

El Grado del polinomio (N) base quiere decir el exponente de mayor valor presente en el
polinomio elegido para la generación de esa variable aleatoria normal.

El polinomio generador (G) hace referencia a la expresión matemática que satisface un


polinomio irreducible.

El factor init indica cada uno de los valores que serán asignados inicialmente a los registros
que conforman el LFSR.

Todos estos parámetros pueden ser ubicados en la entidad de alto nivel


awgn_channel.vhd. Se debe tener en cuenta que el sistema esta construido a base de 10
pares de secuencias Gold, lo que quiere decir que los parámetros anteriormente descritos
están distribuidos para cada una de estas secuencias.

Descripción de los pines del sistema

La entidad del canal es de la siguiente forma:

Entidad del sistema

data, out: bus de entrada y de salida.

CLK: reloj del sistema.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 222 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Reset: Reset del sistema activo en bajo.

DIAGRAMAS DE TIEMPOS

En el siguiente diagrama de tiempos se ilustra un ejemplo de la generación de ruido a


partir de unos parámetros aleatorios. Los parámetros seleccionad son m=8, y los
parámetros N, G y init son los base que se encuentran descritos en la entidad de alto nivel.

Diagrama de tiempos del canal.

EJEMPLOS DE INSTANCIACIÓN

A continuación se presenta un ejemplo de cómo instanciar el modelo de canal AWGN en


VHDL.

library ieee;

use ieee.std_logic_1164.all;

use ieee.numeric_std.all;

entity awgn_channel is

generic (

!!!Factores Parametrizables!!!!!

m : natural := 5;

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 223 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

--Par de secuencia GOLD

N1: integer:= 7; --Grado del polinomio

G1: std_logic_vector := "0110001"; --1+x2+x3+x7--polinomio generador

init1 : std_logic_vector := "00001000010000100001000010000100001" ; --valores iniciales

N2 : integer:= 7;

G2 : std_logic_vector:= "0010001";--1+x3+x7

init2 : std_logic_vector :="00001000010000100001000010000100001";

--Par de secuencia GOLD

N3 : integer := 4;

G3 : std_logic_vector:= "1001";--1+x+x4

init3 : std_logic_vector:= "00001000010000100001";

N4 : integer := 4;

G4 : std_logic_vector:= "0011";--1+x3+x4

init4 : std_logic_vector:= "00001000010000100001";

--Par de secuencia GOLD

N5 : integer := 3;

G5 : std_logic_vector:= "101";--1+x+x3

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 224 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

init5 : std_logic_vector:= "000010000100001";

N6 : integer := 3;

G6 : std_logic_vector:= "011";--1+x2+x3

init6 : std_logic_vector:= "000010000100001";

--Par de secuencia GOLD

N7 : integer := 5;

G7 : std_logic_vector:= "01001";--1+x2+x5

init7 : std_logic_vector:= "0000100001000010000100001";

N8 : integer := 5;

G8 : std_logic_vector:= "11011";--1+x+x2+x4+x5

init8 : std_logic_vector:= "0000100001000010000100001";

--Par de secuencia GOLD

N9 : integer:= 6;

G9 : std_logic_vector:= "100011";--x6 + x5 + 1

init9 : std_logic_vector:= "000010000100001000010000100001";

N10 : integer:= 6;

G10 : std_logic_vector:= "100001";--x6+x+1

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 225 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

init10 : std_logic_vector:= "000010000100001000010000100001";

--Par de secuencia GOLD

N21 : integer:= 7;

G21 : std_logic_vector := "0110001"; --1+x2+x3+x7

init21 : std_logic_vector :="10101101011010110101101011010110101";

N22 : integer:= 7;

G22 : std_logic_vector:= "0010001";--1+x3+x7

init22 : std_logic_vector := "10101101011010110101101011010110101";

--Par de secuencia GOLD

N23 : integer:= 4;

G23 : std_logic_vector:= "1001";--1+x+x4

init23 : std_logic_vector:= "10101101011010110101";

N24 : integer:= 4;

G24 : std_logic_vector:= "0011";--1+x3+x4

init24 : std_logic_vector:= "10101101011010110101";

--Par de secuencia GOLD

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 226 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

N25 : integer:= 3;

G25 : std_logic_vector:= "101";--1+x+x3

init25 : std_logic_vector:= "101011010110101";

N26 : integer:= 3;

G26 : std_logic_vector:= "011";--1+x2+x3

init26 : std_logic_vector:= "101011010110101";

--Par de secuencia GOLD

N27 : integer:= 5;

G27 : std_logic_vector:= "01001";--1+x2+x5

init27 : std_logic_vector:= "1010110101101011010110101";

N28 : integer:= 5;

G28 : std_logic_vector:= "11011";--1+x+x2+x4+x5

init28 : std_logic_vector:= "1010110101101011010110101";

--Par de secuencia GOLD

N29 : integer:= 6;

G29 : std_logic_vector:= "100011";--x6+x5+1

init29 : std_logic_vector:= "101011010110101101011010110101";

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 227 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

N210 : integer:= 6;

G210 : std_logic_vector:= "100001";--x6+x+1

init210 : std_logic_vector:= "101011010110101101011010110101"

);

port(

data : in std_logic_vector(m-1 downto 0);

snr : in std_logic_vector(m-1 downto 0);

clk : in std_logic;

reset : in std_logic;

out : out std_logic_vector ((3+m-1) downto 0)

);

end awgn_channel;

architecture rtl of awgn_channel is

component awgn_channel_m is

generic (

m : natural;

N1 : integer;

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 228 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

G1 : std_logic_vector;

init1 : std_logic_vector;

N2 : integer;

G2 : std_logic_vector;

init2 : std_logic_vector;

N3 : integer;

G3 : std_logic_vector;

init3 : std_logic_vector;

N4 : integer;

G4 : std_logic_vector;

init4 : std_logic_vector;

N5 : integer;

G5 : std_logic_vector;

init5 : std_logic_vector;

N6 : integer;

G6 : std_logic_vector;

init6 : std_logic_vector;

N7 : integer;

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 229 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

G7 : std_logic_vector;

init7 : std_logic_vector;

N8 : integer;

G8 : std_logic_vector;

init8 : std_logic_vector;

N9 : integer;

G9 : std_logic_vector;

init9 : std_logic_vector;

N10 : integer;

G10 : std_logic_vector;

init10 : std_logic_vector;

N21 : integer;

G21 : std_logic_vector;

init21 : std_logic_vector;

N22 : integer;

G22 : std_logic_vector;

init22 : std_logic_vector;

N23 : integer;

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 230 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

G23 : std_logic_vector;

init23 : std_logic_vector;

N24 : integer;

G24 : std_logic_vector;

init24 : std_logic_vector;

N25 : integer;

G25 : std_logic_vector;

init25 : std_logic_vector;

N26 : integer;

G26 : std_logic_vector;

init26 : std_logic_vector;

N27 : integer;

G27 : std_logic_vector;

init27 : std_logic_vector;

N28 : integer;

G28 : std_logic_vector;

init28 : std_logic_vector;

N29 : integer;

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 231 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

G29 : std_logic_vector;

init29 : std_logic_vector;

N210 : integer;

G210 : std_logic_vector;

init210 : std_logic_vector

);

port(

clk : in std_logic;

clear : in std_logic;

sal : out std_logic_vector ((3+m-1) downto 0)

);

end component;

signal sal_m : std_logic_vector(m-1 downto 0);

begin

AWGN :

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 232 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

awgn_channel_m

generic map(

m =>m,

N1 =>N1,

G1 =>G1,

init1 =>init1,

N2 =>N2,

G2 =>G2,

init2 =>init2,

N3 =>N3,

G3 =>G3,

init3 =>init3,

N4 =>N4,

G4 =>G4,

init4 =>init4,

N5 =>N5,

G5 =>G5,

init5 =>init5,

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 233 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

N6 =>N6,

G6 =>G6,

init6 =>init6,

N7 =>N7,

G7 =>G7,

init7 =>init7,

N8 =>N8,

G8 =>G8,

init8 =>init8,

N9 =>N9,

G9 =>G9,

init9 =>init9,

N10 =>N10,

G10 =>G10,

init10 =>init10,

N21 =>N21,

G21 =>G21,

init21 =>init21,

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 234 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

N22 =>N22,

G22 =>G22,

init22 =>init22,

N23 =>N23,

G23 =>G23,

init23 =>init23,

N24 =>N4,

G24 =>G24,

init24 =>init24,

N25 =>N25,

G25 =>G25,

init25 =>init25,

N26 =>N26,

G26 =>G26,

init26 =>init26,

N27 =>N27,

G27 =>G27,

init27 =>init27,

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 235 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

N28 =>N28,

G28 =>G28,

init28 =>init28,

N29 =>N29,

G29 =>G29,

init29 =>init29,

N210 =>N210,

G210 =>G210,

init210 =>init210

port map(

sal =>sal_m,

clk => clk,

clear =>not(reset)

);

out <= std_logic_vector(unsigned(sal_m)*unsigned(snr)+ unsigned (data));

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 236 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

end rtl;

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 237 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

CANAL DE RAYLEIGH
INTRODUCCIÓN

El modelo de canal de Rayleigh que fue implementado en este sistema de comunicación


trabaja en un amplio rango de frecuencias. La función que desempeña es la distorsión de
la señal que se esta transmitiendo mediante la adición de replicas de la señal original
atenuadas a aumentadas por una constante especifica dependiente del medio de
realización de la transmisión.

DIAGRAMA DE BLOQUES DEL MODELO DE CANAL

Diagrama de bloques.

PROPIEDADES DEL MODELO

Parámetros modificables

El modelo del canal tiene cinco (5) parámetros:

m : Tamaño de la palabra de entrada y la salida.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 238 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

N : Numero de retardos.

freq : frecuencia de reloj.

stop : parada en µs.

q : numero de bits decimales.

Todos los parámetros configurables de modelo de canal pueden ser modificados en la


entidad de alto nivel Rayleigh_channel.vhd.

El factor N representa el número de retardos que se desea obtener de la señal de origen.

Freq hace referencia a la frecuencia de operación del reloj para el sistema.

Stop indica en µs hasta donde se hará el último de los retardos en tiempo.

El parámetro q corresponde al número de bits decimales con los que será descrita la
entrada y cada una de las replicas obtenidas con este modelo de canal. Se debe tener en
cuenta que el sistema es implementado en aritmética de punto fijo.

Además de estos parámetros también es posible modificar la posición del retraso en el


tiempo y la constante por la cual es multiplicada, estos dos parámetros pueden ser
cambiados en el archivo conversor.vhd

Descripción de los pines del sistema

La entidad del canal Rayleigh es de la siguiente forma:

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 239 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Entidad del sistema.

Sign : bus de datos de entrada.

Out_f : Bus de datos de salida.

Clk : reloj del sistema.

Reset : Reset del sistema activo en bajo.

EJEMPLO DE INSTANCIACIÓN

A continuación se mostrará un ejemplo de cómo instanciar el modelo FM en una entidad


de mayor nivel.

library ieee;

use ieee.std_logic_1164.all;

use ieee.numeric_std.all;

entity Rayleigh_channel is

generic

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 240 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

q : integer := 6; --frecuencia del reloj en MHz

freq : integer := 18; --frecuencia del reloj en MHz

N : integer := 2; --numero de retardos

stop : integer := 1; --stop en us

m : natural := 8 --ancho de palabra

);

port

reset : in std_logic;

clk : in std_logic;

sign : in std_logic_vector ((m-1) downto 0);

sal_gen : out std_logic_vector (m-1 downto 0)

);

end entity;

architecture rtl of Rayleigh_channel is

component channel is

generic

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 241 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

q : integer ;

freq : integer ;

N : integer ;

stop : integer ;

m : natural

);

port

reset : in std_logic;

clk : in std_logic;

sign : in std_logic_vector ((m-1) downto 0);

sal_gen : out std_logic_vector (m-1 downto 0)

);

end component;

begin

R_cnannel:

channel

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 242 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

generic map(

N =>N,

q =>q,

freq =>freq,

stop =>stop,

m =>m

port map(

sal_gen =>sal_gen,

sign =>sign,

clk =>clk,

reset =>reset

);

end rtl;

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 243 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Además de los modelos de canal y tipos de codificación que son presentados también se anexa un
sistema de conexión entre los canales y los métodos de corrección de errores.

reed_box_n
INTRODUCCIÓN

Este sistema se utiliza para la verificación del correcto funcionamiento de la codificación


Reed Solomon y el modelo de canal AWGN.

DIAGRAMA DE BLOQUES

Diagrama de bloques

PROPIEDADES

Parámetros modificables

La generación de posiciones aleatorias esta implementa mediante el mismo sistema de la


generación de las variables aleatorias normales para el canal AWGN, por lo cual los
parámetros que pueden ser modificados previamente en este sistema son iguales a los
modificables en el modelo de canal como tal.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 244 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

m : Tamaño de la palabra de entrada y la salida.

N : Grado del polinomio base.

G : Polinomio generador.

init : Valores iniciales.

Todos estos parámetros pueden ser ubicados en la entidad de alto nivel reed_box_n.vhd.

Descripción de los pines del sistema

La entidad del conector entre Reed Solomon y el modelo de canal AWGN cuenta con los
siguientes pines de entrada y salida:

Entidad del bloque

data,out_ar: buses de datos de entrada.

Noise : dato con distribución de probabilidad Gaussiana.

clk: reloj del sistema.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 245 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Reset_n: Reset del sistema activo en bajo.

DIAGRAMAS DE TIEMPOS

Este diagrama de tiempos muestra el funcionamiento de simulación del conector. El


indicador posiciones contiene la posición de cada uno de los 16 posibles errores que
pueden ser corregidos por el sistema de corrección Reed Solomon.

Diagrama de tiempos

Los parámetros seleccionados serán expuestos a continuación como ejemplo.

EJEMPLO DE INSTANCIACIÓN

El siguiente código muestra un ejemplo de cómo instanciar el conector para para recibir
directamente el ruido del generador WGN.

library ieee;

use ieee.std_logic_1164.all;

use ieee.numeric_std.all;

entity reed_box_n is

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 246 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

generic (

m : natural := 8;

N1 : integer:= 7; --Grado del polinomio

G1 : std_logic_vector := "0110001";--1+x2+x3+x7 --polinomio generador

init1 : std_logic_vector := x"01010101010101" ; --valores iniciales

N2 : integer:= 7;

G2 : std_logic_vector:= "0010001";--1+x3+x7

init2 : std_logic_vector := x"01010101010103";

N3 : integer := 4;

G3 : std_logic_vector:= "1001";--1+x+x4

init3 : std_logic_vector:= x"01010105";

N4 : integer := 4;

G4 : std_logic_vector:= "0011";--1+x3+x4

init4 : std_logic_vector:= x"01010107";

N5 : integer := 3;

G5 : std_logic_vector:= "101";--1+x+x3

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 247 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

init5 : std_logic_vector:= x"010109";

N6 : integer := 3;

G6 : std_logic_vector:= "011";--1+x2+x3

init6 : std_logic_vector:= x"01010B";

N7 : integer := 5;

G7 : std_logic_vector:= "01001";--1+x2+x5

init7 : std_logic_vector:= x"010101010D";

N8 : integer := 5;

G8 : std_logic_vector:= "11011";--1+x+x2+x4+x5

init8 : std_logic_vector:= x"010101010F";

N9 : integer := 6;

G9 : std_logic_vector:= "100011";--x6 + x5 + 1

init9 : std_logic_vector:= x"010101010111";

N10 : integer := 6;

G10 : std_logic_vector:= "100001";--x6+x+1

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 248 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

init10 : std_logic_vector:= x"010101010113";

N21 : integer:= 7;

G21 : std_logic_vector := "0110001"; --1+x2+x3+x7

init21 : std_logic_vector := x"01010101010115";

N22 : integer:= 7;

G22 : std_logic_vector:= "0010001";--1+x3+x7

init22 : std_logic_vector := x"01010101010117";

N23 : integer := 4;

G23 : std_logic_vector:= "1001";--1+x+x4

init23 : std_logic_vector:= x"01010119";

N24 : integer := 4;

G24 : std_logic_vector:= "0011";--1+x3+x4

init24 : std_logic_vector:= x"0101011B";

N25 : integer := 3;

G25 : std_logic_vector:= "101";--1+x+x3

init25 : std_logic_vector:= x"01011D";

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 249 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

N26 : integer := 3;

G26 : std_logic_vector:= "011";--1+x2+x3

init26 : std_logic_vector:= x"01011F"

);

port(

clk : in std_logic;

reset : in std_logic;

noise : in std_logic_vector(m-1 downto 0);

data : in std_logic_vector(m-1 downto 0);

out_ar : out std_logic_vector ((m-1) downto 0)

);

end entity;

architecture rtl of reed_box_n is

component box_cmp is

generic (

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 250 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

m : natural;

N1 : integer;

G1 : std_logic_vector;

init1 : std_logic_vector ;

N2 : integer;

G2 : std_logic_vector;

init2 : std_logic_vector ;

N3 : integer ;

G3 : std_logic_vector;

init3 : std_logic_vector;

N4 : integer ;

G4 : std_logic_vector;

init4 : std_logic_vector;

N5 : integer ;

G5 : std_logic_vector;

init5 : std_logic_vector;

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 251 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

N6 : integer ;

G6 : std_logic_vector;

init6 : std_logic_vector;

N7 : integer ;

G7 : std_logic_vector;

init7 : std_logic_vector;

N8 : integer ;

G8 : std_logic_vector;

init8 : std_logic_vector ;

N9 : integer ;

G9 : std_logic_vector;

init9 : std_logic_vector;

N10 : integer ;

G10 : std_logic_vector;

init10 : std_logic_vector ;

N21 : integer;

G21 : std_logic_vector;

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 252 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

init21 : std_logic_vector ;

N22 : integer;

G22 : std_logic_vector;

init22 : std_logic_vector ;

N23 : integer ;

G23 : std_logic_vector;

init23 : std_logic_vector;

N24 : integer ;

G24 : std_logic_vector;

init24 : std_logic_vector;

N25 : integer ;

G25 : std_logic_vector;

init25 : std_logic_vector;

N26 : integer ;

G26 : std_logic_vector;

init26 : std_logic_vector

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 253 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

);

port(

clk : in std_logic;

reset : in std_logic;

clear : in std_logic;

new_noise : in std_logic_vector(m-1 downto 0);

data : in std_logic_vector(m-1 downto 0);

sal : out std_logic_vector ((m-1) downto 0)

);

end component;

begin

box :

box_cmp

generic map(

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 254 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

m =>m,

N1 =>N1,

G1 =>G1,

init1 =>init1,

N2 =>N2,

G2 =>G2,

init2 =>init2,

N3 =>N3,

G3 =>G3,

init3 =>init3,

N4 =>N4,

G4 =>G4,

init4 =>init4,

N5 =>N5,

G5 =>G5,

init5 =>init5,

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 255 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

N6 =>N6,

G6 =>G6,

init6 =>init6,

N7 =>N7,

G7 =>G7,

init7 =>init7,

N8 =>N8,

G8 =>G8,

init8 =>init8,

N9 =>N9,

G9 =>G9,

init9 =>init9,

N10 =>N10,

G10 =>G10,

init10 =>init10,

N21 =>N21,

G21 =>G21,

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 256 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

init21 =>init21,

N22 =>N22,

G22 =>G22,

init22 =>init22,

N23 =>N23,

G23 =>G23,

init23 =>init23,

N24 =>N4,

G24 =>G24,

init24 =>init24,

N25 =>N25,

G25 =>G25,

init25 =>init25,

N26 =>N26,

G26 =>G26,

init26 =>init26

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 257 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

port map(

clk =>clk,

reset =>reset,

clear =>reset,

new_noise =>noise,

data =>data,

sal =>out_ar

);

end rtl;

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 258 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

conv_box
INTRODUCCIÓN

Este sistema se utiliza para la verificación del correcto funcionamiento de la codificación


Convolucional y los modelos de canal.

DIAGRAMA DE BLOQUES DEL CONFORMADOR DE SÍMBOLO

Diagrama de bloques

PROPIEDADES

Parámetros modificables

m : Tamaño de la palabra de entrada y la salida.

Este parámetro depende del tamaño de palabra con el que sea generado el ruido de
entrada. Puede ser ubicado en la entidad de alto nivel reed_box_n.vhd.

Descripción de los pines del sistema


Proyecto de Investigación N° 467
UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 259 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

La entidad del conector entre Reed Solomon y el modelo de canal AWGN cuenta con los
siguientes pines de entrada y salida:

Entidad del bloque

a,b: buses de datos de entrada.

Noise : dato con distribución de probabilidad Gaussiana.

clk: reloj del sistema.

Out_a, out_b : salidas del sistema.

DIAGRAMAS DE TIEMPOS

Este diagrama de tiempos muestra el funcionamiento de simulación del conector. Las


entradas a y b son las que provienen desde el codificador convolucional y out_a y out_b
son las correspondientes salidas para cada una de estas después del proceso con el ruido.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 260 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Diagrama de tiempos

Los parámetros seleccionados serán expuestos a continuación como ejemplo.

EJEMPLO DE INSTANCIACIÓN

El siguiente código muestra un ejemplo de cómo instanciar el conector para AWGN y


codificación convolucional.

library ieee;

use ieee.std_logic_1164.all;

use ieee.numeric_std.all;

entity conv_ray is

generic

m : natural :=8

);

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 261 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

port(

a : in std_logic;

b : in std_logic;

noise : in std_logic_vector(m-1 downto 0);

clk : in std_logic;

out_a : out std_logic;

out_b : out std_logic

);

end entity;

architecture rtl of conv_ray is

component conv_ray_t is

generic

m : natural

);

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 262 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

port(

a : in std_logic;

b : in std_logic;

noise : in std_logic_vector(m-1 downto 0);

clk : in std_logic;

out_a : out std_logic;

out_b : out std_logic

);

end component;

begin

box : conv_ray_t

generic map

m =>m

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 263 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

port map (

a =>a,

b =>b,

noise =>noise,

clk =>clk,

out_a =>out_a,

out_b =>out_b

);

end rtl;

CODIFICADOR REED-SOLOMON

INTRODUCCIÓN

El codificador Reed-Solomon se encarga de codificar la palabra que va a ser enviada. Esta


palabra se compone de 𝑘 símbolos de 𝑚 bits y el código resultante se compone de 𝑛 =
𝑘 + 2𝑡 símbolos, donde 2𝑡 es el número de símbolos de redundancia y 𝑡 es la capacidad
de corrección. Generalmente 𝑛 es igual a 2𝑚 − 1, pero puede ser un valor distinto. Un
código Reed-Solomon se describe de la siguiente forma: 𝑅𝑆(𝑛, 𝑘) = 𝑅𝑆(2𝑚 − 1, 2𝑚 −
2𝑡 − 1). Para codificar se efectúa la siguiente operación:

𝑢(𝑥) = 𝑝(𝑥) + 𝑥 𝑛−𝑘 𝑚(𝑥)

Donde, 𝑚(𝑥)es el mensaje y 𝑝(𝑥) es el residuo de la división de 𝑥 𝑛−𝑘 𝑚(𝑥) y 𝑔(𝑥)


(Polinomio generador).
Proyecto de Investigación N° 467
UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 264 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Para efectuar las operaciones antes descritas se usa la arquitectura que se muestra a
continuación.

ARQUITECTURA DEL CODIFICADOR REED-SOLOMON

Codificador Reed-Solomon

PROPIEDADES DEL CODIFICADOR REED-SOLOMON

El codificador tiene 3 parámetros que se pueden modificar:

𝑛: Tamaño total del mensaje.

𝑚: Tamaño de cada símbolo.

𝑡: Capacidad de Corrección del Código.

Según la arquitectura mostrada, el número de registros será 2𝑡 + 1. Los multiplexores


estarán en la posición 1 los primeros 𝑛 − 2𝑡 ciclos de reloj y los 2𝑡 ciclos restantes estará
en la posición 0, para así formar el código.

DESCRIPCIÓN DE LOS PINES DEL CODIFICADOR

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 265 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Diagrama de pines del codificador Reed-Solomon

Entradas:
Clk: Reloj del sistema, este debe ser menor de 144.59 𝑀𝐻𝑧.

Enable: Habilitador del sistema, debe estar en alto al ingreso del primer símbolo.

Reset: Reset del Codificador, es activo en bajo.

Mensaje: Mensaje a codificar, la entrada al sistema de forma serial.

Salidas:
Mensaje Codificado: Mensaje codificado, como es de esperarse la salida de los símbolos es
de forma serial y tiene un retardo de un ciclo de reloj con respecto al mensaje de entrada.

Ready: Este pin se pone en alto al momento que el codificador está generando el mensaje
codificado.

DIAGRAMAS DE TIEMPOS

Este diagrama de tiempos muestra un mensaje que quiere ser codificado en Reed-
Solomon. Los parámetros seleccionados fueron 𝑛 = 255, 𝑡 = 16 𝑦 𝑚 = 8.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 266 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 267 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Diagrama de Tiempos del Codificador Reed-Solomon

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 268 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

EJEMPLO DE INSTANCIACIÓN DEL CODIFICADOR REED-SOLOMON

A continuación se muestra un ejemplo de cómo instanciar el Codificador Reed-Solomon. El


nombre del archivo que contiene la entidad de más alto nivel es codificador.vhd.

library ieee;

use ieee.std_logic_1164.all;

use ieee.numeric_std.all;

entity prueba_codificador is

generic

n : natural;

m : natural;

t : natural

);

port

clk : in std_logic;

reset : in std_logic;

enable : out std_logic;

mensaje : out std_logic_vector((m-1) downto 0);

mensaje_codificado : out std_logic_vector((m-1) downto 0);


Proyecto de Investigación N° 467
UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 269 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

ready : out std_logic

);

end entity;

architecture rtl of prueba_codificador is

component codificador is

generic

n : natural;

m : natural;

t : natural

);

port

clk : in std_logic;

reset : in std_logic;

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 270 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

enable : out std_logic;

msn : out std_logic_vector((m-1) downto 0);

msn_cod : out std_logic_vector((m-1) downto 0);

ready : out std_logic

);

end component;

begin

Cod_Reed_Solomon:

codificador

generic map(n=>n,m=>m,t=>t)

port map

clk =>clk,

teset =>reset,

enable =>enable,

msn =>mensaje,

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 271 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

msn_cod =>mensaje_codificado,

ready =>ready

);

end rtl;

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 272 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

DECODIFICADOR REED-SOLOMON
INTRODUCCIÓN

El decodificador Reed-Solomon se encarga de detectar, localizar y corregir errores en los


mensajes recibidos en el receptor de una comunicación digital. Para ello usa unos
algoritmos muy complejos matemáticamente pero a la vez muy rápidos y muy fáciles de
implementar. El decodificador, aparte de contener estos algoritmos, también cuenta con
un sistema capaz de almacenar cada mensaje entrante y de permitir que el sistema pueda
recibir mensajes sin retardos entre envíos.

DIAGRAMA DE BLOQUES DEL DECODIFICADOR REED-SOLOMON

Diagrama de Bloques del Decodificador Reed-Solomon

PROPIEDADES DEL DECODIFICADOR REED-SOLOMON

El decodificador como es de esperarse también tiene 3 parámetros que se pueden


modificar:

𝑛: Tamaño total del mensaje.

𝑚: Tamaño de cada símbolo.

𝑡: Capacidad de Corrección del Código.

El decodificador Reed-Solomon cuenta con seis bloques principales: cálculo de los


síndromes, cálculo del polinomio localizador del error, localización del error, cálculo del
valor del error y almacenamiento y corrección del mensaje. El bloque del cálculo de los
Proyecto de Investigación N° 467
UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 273 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

síndromes tiene una latencia de 𝑛 ciclos de reloj, está compuesto por un sistema que
eleva las raíces del polinomio generador con el fin de evaluarlas en el mensaje a medida
que va ingresando al decodificador. El bloque del cálculo del polinomio localizador está
implementado con el algoritmo de Berlekamp-Massey sin inversión, por tanto, tiene una
latencia de 2𝑡 + 1 ciclos de reloj. El bloque de localización del error se encuentra
implementado con el algoritmo de Chien, el cual es el más eficiente en términos de
hardware, y tiene una latencia de 𝑡 + 1 ciclos de reloj. El bloque del cálculo del valor del
error está implementado con el algoritmo de Forney, el cual tiene una latencia de 𝑡 + 1
ciclos de reloj. El bloque de almacenamiento y corrección del mensaje, tiene una latencia
de 2 ciclos de reloj y permite guardar hasta 3 mensajes al tiempo, esto con el fin de que el
sistema pueda funcionar sin retardos. Y por último está la unidad de control, este bloque
es simbólico, ya que cada bloque cuenta con su propia unidad de control, excepto el
bloque del algoritmo de Berlekamp-Massey y el de Chien que comparten la misma unidad
de control. Si se suma la cantidad de retardos que produce cada bloque se obtiene que
cada símbolo se demora 𝑛 + 4𝑡 + 5 ciclos de reloj en ser procesado.

DESCRIPCIÓN DE LOS PINES DEL DECODIFICADOR

Diagrama de pines del codificador Reed-Solomon

Entradas:
Clk: Reloj del sistema, este debe ser menor de 77.21 𝑀𝐻𝑧.

Enable: Habilitador del sistema, debe estar en alto al ingreso del primer símbolo.

Reset: Reset del Codificador, es activo en bajo.

Mensaje Recibido: Mensaje a decodificar, la entrada al sistema de forma serial.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 274 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Salidas:
Mensaje Decodificado: Mensaje decodificado, como es de esperarse la salida de los
símbolos es de forma serial y tiene un retardo 𝑛 + 4𝑡 + 5 ciclos de reloj con respecto al
mensaje de entrada.

Ready: Este pin se pone en alto al momento que el decodificador está generando el
mensaje decodificado.

DIAGRAMAS DE TIEMPOS

Este diagrama de tiempos muestra un mensaje decodificado con el codificador Reed-


Solomon implementado. Los parámetros seleccionados fueron 𝑛 = 255, 𝑡 = 16 𝑦 𝑚 = 8.

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 275 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 276 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Diagrama de Tiempos del Codificador Reed-Solomon

Nótese que el mensaje entrante se ha corrido 𝑛 + 4𝑡 + 5 ciclos de reloj para poder


visualizar la simulación completa del decodificador.

EJEMPLO DE INSTANCIACIÓN DEL DECODIFICADOR REED-SOLOMON

A continuación se muestra un ejemplo de cómo instanciar el Decodificador Reed-


Solomon. El nombre del archivo que contiene la entidad de más alto nivel es
Reed_Deco.vhd.

library ieee;

use ieee.std_logic_1164.all;

use ieee.numeric_std.all;

entity Prueba_Reed_Deco is

generic

n : natural:=50;

m: natural:=8;

t: natural:=16
Proyecto de Investigación N° 467
UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 277 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

);

port

clk : in std_logic;

reset : in std_logic;

enable : in std_logic;

msn : in std_logic_vector((m-1) downto 0);

msn_dec: out std_logic_vector((m-1) downto 0);

ready : out std_logic

);

end entity;

architecture rtl of Prueba_Reed_Deco is

component Reed_deco is

generic

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 278 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

n : natural;

m: natural;

t: natural

);

port

enable : in std_logic;

clk : in std_logic;

reset : in std_logic;

msn : in std_logic_vector((m-1) downto 0);

msn_dec: out std_logic_vector((m-1) downto 0);

ready : out std_logic

);

end component;

begin

Decoder:

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 279 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Reed_Deco

generic map(m=>m,n=>n,t=>t)

port map(

enable=>enable,

clk=>clk,

reset=>reset,

msn=>msn,

msn_dec=>msn_dec,

ready=>ready

);

end rtl;

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 280 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

Proyecto de Investigación N° 467


UNIVERSIDAD DEL QUINDIO
SISTEMA INTEGRADO DE GESTIÓN

Código: M.IN-03.02.04.F.02 Versión: 01 Fecha: 2010/08/18 Página 281 de 281


INFORME FINAL PROYECTO DE INVESTIGACIÓN
INVESTIGACIÓN

ANEXO D: ARTÍCULOS

Proyecto de Investigación N° 467

Вам также может понравиться