Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
DISEÑO E IMPLEMENTACIÓN DE UN MÓDEM BASADO EN LA RECOMENDACIÓN
V.22BIS DE LA ITU EN UN PROCESADOR DIGITAL DE SEÑALES.
INFORME FINAL
RAFAEL RICARDO RUEDA MARTÍNEZ
Dirigida por:
ING. ARTURO FAJARDO M.SC.
PONTIFICIA UNIVERSIDAD JAVERIANA
FACULTAD DE INGENIERÍA
CARRERA DE INGENIERÍA ELECTRÓNICA
BOGOTÁ D.C.
2011
2
AGRADECIMIENTOS
El autor quiere agradece al Ing. Arturo Fajardo por la dirección y el apoyo durante la realización
de este proyecto, a los técnicos de laboratorio por la ayuda brindada con la logística en varios de
los aspectos del proyecto. A mi familia y amigos por su apoyo a lo largo del desarrollo de este
proyecto y a través del pregrado.
3
ARTÍCULO 23 DE LA RESOLUCIÓN NO 13 DE JUNIO DE 1946
“La Universidad no se hace responsable por los conceptos emitidos por los alumnos en sus trabajos de grado, solo velará porque no se publique nada contrario al dogma y la moral católicos y porque el trabajo no contenga ataques y polémicas puramente personales, antes bien, se vean en ellas el anhelo de buscar la verdad y la justicia”
4
TABLA DE CONTENIDO
1. INTRODUCCIÓN ........................................................................................................................... 9
2. MARCO TEÓRICO ....................................................................................................................... 11
2.1 Módem .............................................................................................................................. 11
2.2 Modulación Digital ........................................................................................................... 11
2.3 Códigos de línea ................................................................................................................ 11
2.4 ISI ...................................................................................................................................... 12
2.5 Modulación QAM ............................................................................................................. 15
2.6 Digital Signal Processor .................................................................................................... 15
2.6.1 TMS320C6713DSK ................................................................................................... 16
2.7 Aprendizaje Activo ........................................................................................................... 18
2.7.1 Aprendizaje Cooperativo .................................................................................... 20
2.7.2 Aprendizaje Basado en Problemas (PBL) ................................................................. 20
2.7.3 Aprendizaje Basado en Proyectos (PjBL) ........................................................... 20
3. DESARROLLO ................................................................................................................................. 22
3.1 Formato de las Guías ........................................................................................................ 22
3.2 Formatos de los Programas ............................................................................................... 22
3.3 Interacción con las Guías .................................................................................................. 22
3.4 Módulos ............................................................................................................................ 24
3.4.1 Módulo1 ..................................................................................................................... 24
3.4.2 Módulo 2 .................................................................................................................... 27
3.4.3 Módulo 3 .................................................................................................................... 41
3.4.4 Módulo 4 .................................................................................................................... 53
4. Análisis de Resultados .................................................................................................... 54
4.1 Resultado de los Módulos ................................................................................................. 54
4.1.1 Módulo 1 .................................................................................................................... 54
4.1.2 Módulo 2 .................................................................................................................... 56
4.1.3 Módulo 3 .................................................................................................................... 66
4.2 Evaluación de los Módulos ......................................................................................... 75
5. CONCLUSIONES ......................................................................................................................... 82
6. BIBLIOGRAFIA ........................................................................................................................... 83
5
LISTA DE FIGURAS
Figura 1. (a)On-off (RZ ), (b) Polar (RZ), (c) Bipolar(RZ), (d)On-off(NRZ) y (e)Polar(NRZ)[5] ....... 12
Figura 2. Pulso sinc.[5] ................................................................................................................ 13
Figura 3. Sinc y su espectro de frecuencia. [5] ............................................................................ 13
Figura 4. Espectro de p (t). [5] .................................................................................................... 14
Figura 5. Constelaciones QAM. ................................................................................................... 15
Figura 6. Diagrama Arquitectura de un DSP ............................................................................... 16
Figura 7. Foto tarjeta de desarrollo TMS320C6713. ................................................................... 17
Figura 8. Diagrama en bloques tarjeta de desarrollo TMS320C6713-DSK 6713DSP. [11] .......... 17
Figura 9. Diagrama de Flujo del segundo programa primera práctica. ...................................... 25
Figura 10. Recorrido de los apuntadores. ................................................................................... 28
Figura 11. Diagrama de flujo generador de códigos de línea. .................................................... 30
Figura 12. Diagrama de Flujo general del programa de la guía 3. .............................................. 42
Figura 13. Diagrama funcional del modulador QAM .................................................................. 43
Figura 14. Diagrama funcional del demodulador QAM .............................................................. 43
Figura 15. Diagrama de flujo del modulador QAM. .................................................................... 44
Figura 16. Señal sinusoidal generador de funciones. ................................................................. 54
Figura 17. Señal rampa generador de funciones. ....................................................................... 55
Figura 18. Señal triangulo generador de funciones. ................................................................... 55
Figura 19. Señal cuadrada generador de funciones.................................................................... 56
Figura 20. Ventana de control del generador de códigos. .......................................................... 56
Figura 21. Código on-off siguiendo una secuencia intercalada de 1 y 0. .................................... 57
Figura 22. FFT del código de línea on-off. ................................................................................... 57
Figura 23. Código de línea polar sin retorno a cero. ................................................................... 58
Figura 24. FFT de código de línea sin retorno a cero. ................................................................. 58
Figura 25. Código de línea polar con retorno a cero. ................................................................. 59
Figura 26. FFT del código de línea polar retorno a cero. ............................................................ 59
Figura 27. Código de línea bipolar no retorno a cero. ................................................................ 60
Figura 28. FFT de código de línea con no retorno a cero. ........................................................... 60
Figura 29. Código de línea bipolar con retorno a cero. .............................................................. 61
Figura 30. FFT del código de línea bipolar con retorno a cero................................................... 61
Figura 31. Código de línea Manchester. ..................................................................................... 62
Figura 32. FFT del código de línea Manchester. ......................................................................... 62
Figura 33. Código de línea polar con forma de pulso sinc. ......................................................... 63
Figura 34. FFT Código de línea polar con forma de pulso sinc. ................................................... 63
Figura 35. Código de línea polar con forma de pulso coseno elevado. ...................................... 64
Figura 36. FFT de código de línea polar con forma de pulso coseno elevado. ........................... 64
Figura 37. Código de línea bipolar con secuencia aleatoria ....................................................... 65
Figura 38.FFT de código de línea polar con secuencia aleatoria. ............................................... 65
Figura 39. Ventana de control del progrma QAM ...................................................................... 66
Figura 40. Modulación QAM16 con tren de impulsos cuadrados con desfase de 0°. ................ 66
Figura 41. FFT de la modulación QAM16 con tren de impulso cuadrada y desfase 0°............... 67
Figura 42. Modulación QAM16 con tren de impulsos cuadrados con desfase de 180°. ............ 67
6
Figura 43. FFT modulación QAM16 con tren de impulsos cuadrados con desfase de 180°. ...... 68
Figura 44. Modulación QAM16 con tren de impulsos cuadrados con desfase 90°. .................. 68
Figura 45. FFT de la modulación QAM16 con tren de impulsos cuadrados con desfase de 90°. 69
Figura 46. Modulación QAM16 con tren de impulsos sinc de un solo lóbulo con fase 0°. ......... 69
Figura 47. FFT de modulación QAM16 con tren de impulsos sinc de un solo lóbulo con fase 0°.
.................................................................................................................................................... 70
Figura 48. Modulación QAM16 con tren de impulsos sinc con 5 lóbulos con fase 0°. ............... 70
Figura 49. FFT de la modulación QAM16 con tren de impulsos sinc con 5 lóbulos con fase 0°. 71
Figura 50. Modulación QAM16 con tren de impulsos sinc con lóbulo central y desfase 180°. .. 71
Figura 51. FFT de la modulación QAM16 con tren de impulsos sinc con lóbulo central y desfase
180°. ............................................................................................................................................ 72
Figura 52. Modulación QAM16 con tren de impulsos de forma sinc con lóbulo central y desfase
de 90°. ......................................................................................................................................... 72
Figura 53. FFT de la modulación QAM16 con tren de impulsos de forma sinc con lóbulo central
y desfase de 90°. ......................................................................................................................... 73
Figura 54. Modulación QAM8 con scrambler. ............................................................................ 74
Figura 55. FFT modulación QAM8 con scrambler. ...................................................................... 74
Figura 56. Diagrama de torta formato modulo 1. ....................................................................... 75
Figura 57. Diagrama de torta metodología módulo 1 ................................................................ 76
Figura 58. Diagrama de torta competencias modulo 1. ............................................................. 76
Figura 59. Diagrama de torta formato modulo 2. ....................................................................... 77
Figura 60. Diagrama de torta metodología modulo 2. ............................................................... 77
Figura 61. Diagrama de torta de las competencias modulo 2. ................................................... 78
Figura 62. Diagrama de torta formato módulo 3. ....................................................................... 79
Figura 63. Diagrama de torta de formato de los módulos. ......................................................... 79
Figura 64. Diagrama de torta de la metodología del módulo 3. ................................................. 80
Figura 65. Diagrama de torta de la metodología de los módulos. .............................................. 80
Figura 66. Diagrama de torta competencias del módulo 3. ....................................................... 81
Figura 67. Diagrama de torta competencia de los módulos. ...................................................... 81
7
LISTA DE TABLAS
Tabla 1. Taxonomía de Bloom[8] ................................................................................................ 19
8
LISTA DE ANEXOS
Anexo 1: Módulo 1 contiene guía para los alumnos, guía para los monitores, programas y
explicación de los programas.
Anexo 2: Módulo 2 contiene guía para los alumnos, guía para los monitores, programas y
explicación de los programas.
Anexo 3: Módulo 3 contiene guía para los alumnos, guía para los monitores, programas y
explicación de los programas.
Anexo 4: Módulo 4 contiene guía para los alumnos.
Anexo5: Encuestas y evaluación.
9
1. INTRODUCCIÓN
Actualmente, las fuentes digitales de información están presentes en todas las áreas de la
sociedad (industria, comercio, educación, comunicación, transporte, etc.) y se hace necesaria
una comunicación eficiente. Los primeros intentos de comunicación digital y procesamiento de
datos a larga distancia se dieron en Estados Unidos durante la década de los años 40 del siglo
XX, donde se desarrolló una aplicación de inventario para la U.S. Army y posteriormente, en
1953, otra para la gestión y reserva de las plazas en la American Airlines, que constituyeron los
dos primeros sistemas de procesamiento de datos a distancia [1] [2].
Un elemento importante en las comunicaciones análogas y digitales es la modulación, la cual
hace referencia a un conjunto de técnicas que permiten el transporte de información mediante la
variación de los parámetros de una señal portadora de acuerdo a los cambios de la señal
moduladora (el mensaje). Entre las ventajas que proporcionan estas técnicas están un mejor uso
del canal, inmunidad al ruido e interferencias. En el caso específico de las modulaciones
digitales presenta otras ventajas como una mayor inmunidad al ruido, multiplexación,
codificación, encriptación, modulación y demodulación con DSP.
Este tipo de modulación es parte del conocimiento básico que debe tener un ingeniero
electrónico o telecomunicaciones, hace parte del los objetivos de aprendizaje del programa
académico. En el caso específico del departamento de Ingeniería Electrónica de la Pontificia
Universidad Javeriana (PUJ) este tema es introducido en la materia de fundamentos de
comunicación. Cuando se presenta este tema por primera vez, se presentan dificultades en el
momento de asimilar esta temática por parte de los estudiantes, ya que trae nuevos conceptos,
los cuales se entrelazan estrechamente con temas previamente vistos en otras asignaturas, lo
cual presenta un desafío a la hora de extrapolar los conocimientos y relacionarlos con los
nuevos conceptos introducidos en cada nuevo tema.
En este proyecto se busca realizar unas guías de laboratorio con un enfoque de aprendizaje
activo que permitan facilitar el estudio de algunos de los conceptos relacionados con la
modulación digital. Las guías ayudarán a comprender la teoría vista en clase con proyectos
desarrollados sobre DSP1, los cuales tienen como propósito ilustrar a los estudiantes ejemplos o
casos de los temas vistos en clase. Además introducirá el uso de un DSP; en este caso, la tarjeta
de desarrollo TMS320C6713-DSK, sobre la cual se realizarán las prácticas propuestas en las
guías de laboratorio.
Se realizarán las prácticas basadas en un DSP, dado que tiene bajos costos de implementación, y
es un dispositivo muy versátil usado en una larga lista de aplicaciones en la industria de las
comunicaciones, como teléfonos celulares, equipos de FAX, cajeros electrónicos y módems que
cumplen con todas las recomendaciones proporcionadas por la ITU [3]. La tarjeta de desarrollo
TMS320C6713-DSK, provee las herramientas suficientes para la implementación de las
practicas, es una tarjeta fabricada para el procesamiento de señales de audio, transmisión de
datos de voz y video, aplicaciones médicas, industriales, reconocimiento de voz y
procesamiento de voz IP[4], que cuenta con un Codec2 AIC23 que facilita la creación, edición y
utilización de filtros para procesamiento de señales digitales sin hardware adicional; además,
una interfaz JTAG la cual permite que la tarjeta sea programada desde cualquier computador
con puerto USB, y dada su capacidad de procesamiento permite posteriores modificaciones a los
1 De sus siglas en ingles “Digital Signal Processor”.
2 Codec: Acrónimo de Codificador-Decodificador
10
proyectos propuestos en las guías. Y por último, pero no menos importante, es la disponibilidad,
pues esta tarjeta se encuentra disponible en el Laboratorio de la Facultad.
El principal resultado de este trabajo consiste en cuatro guías de laboratorio donde se explorarán
diversos aspectos de la teoría de modulación digital y el uso del DSP. La primera guía se
enfocará en presentar el hardware y el manejo básico del DSP y su entorno de desarrollo; en la
segunda guía se realizará un proyecto de un generador de códigos de línea que permita observar
las diferentes características de éstos y su comportamiento con diferentes formas de pulso; la
tercerea guía se centrará en un modulador y demodulador QAM sincrónico que permita ver las
características de éste y su comportamiento a diferentes formas de pulso, y la cuarta guía
consiste en un proyecto para los estudiantes en el cual realizarán la implementación parcial de
un módem bajo la recomendación V. 22 de la ITU, donde la guía tendrá como fin dar las
especificaciones y bases teóricas.
Este documento se dividirá en cuatro partes: la primera será el marco teórico, donde se
introducirá las nociones de los principales temas abordados por la guías, entre ellas qué es un
módem, códigos de línea, modulación QAM y además, se introducirá la teoría de aprendizaje
usada para el desarrollo de las guías de laboratorio; en la segunda parte se presentará el
desarrollo del proyecto, el cual contiene el diseño, requisitos, especificaciones y alcance de las
guías y los programas; en la tercera parte contendrá el análisis de resultados del proyecto, donde
se corroborarán los resultados de los programas; y en la cuarta parte se presentarán las
conclusiones del proyecto.
11
2. MARCO TEÓRICO
2.1 Módem
En las comunicaciones digitales se requiere transmitir una señal digital sobre un canal análogo,
se requiere que el Modulador se a capaz de transformar esta señal digital para ser transmitida a
través de un canal análogo y de forma similar que el Demodulador debe ser capaz del proceso
inverso. Por consiguiente, este transceptor de datos se conoce como Módem y sirve para
conectar DTE3 y circuitos de comunicación [1]. Como se mencionó anteriormente, un módem
está compuesto de un modulador y un demodulador, pero también puede llevar scramble,
descramble y máquinas de estado para optimizar su funcionamiento.
2.2 Modulación Digital
Las modulaciones digitales son técnicas que permiten transformar o codificar una señal digital
en una señal analógica para ser transmitidita a través de un canal, bien sea alámbrico o
inalámbrico.
2.3 Códigos de línea
Es el proceso que permite codificar la información digital en formas de ondas eléctricas con el
propósito de transmitirlas. En este proceso se le asigna un pulso o símbolo a cada uno o cero
lógico que será transmitido; esta asignación es a la que se le denomina código de línea o código
de transmisión.
Existen diferentes tipos de formas de ondas y métodos para la asignación. El caso más simple es
el binario, donde se puede utilizar una señal „on-off‟ donde el „1‟ se transmite mediante un
pulso rectangular y el „0‟ se transmite por la ausencia de pulso. Otro código bastante utilizado es
el polar donde el „1‟ se transmite cuando se tiene un pulso de amplitud A y el „0‟ se transmite
cuando se tiene un pulso de amplitud –A. Otro código popular es el bipolar donde el „0‟ se
codifica como no pulso y el „1‟ se puede representar tanto por un pulso positivo o negativo.
Otros códigos utilizados son los de no retorno a cero (NRZ4) que a diferencia de los
previamente descritos mantienen el valor pulso durante la duración del símbolo como se ilustra
en la Figura 1.
3 De sus siglas en ingles “Data Terminal Equipment”
4 Por sus siglas en ingles “nonreturn-to-zero”
12
Figura 1. (a)On-off (RZ ), (b) Polar (RZ), (c) Bipolar(RZ), (d)On-off(NRZ) y (e)Polar(NRZ)[5]
Entre las propiedades deseables en un código de línea se encuentran:
a. Ancho de banda: Debe ser el menor posible.
b. Eficiencia de potencia: Para un ancho de banda y una probabilidad de error
dado la potencia transmitida debe ser la menor posible.
c. Detección y corrección de errores: Debe ser posible detectar errores y
preferiblemente corregirlos.
d. Un espectro de densidad favorable: Es deseable tener bajos componentes de
potencia en bajas frecuencias.
e. Contenido adecuado de tiempo: debe ser posible obtener la sincronización o la
información de reloj desde la señal.
f. Trasparencia: Debe ser posible transmitir una señal digital sin importar el patrón
de ceros y unos lógicos.
2.4 ISI5
Un canal de transmisión siempre tiene un ancho de banda limitado, y por este motivo dispersa o
extiende los pulsos digitales que pasan a través del mismo. Cuando el ancho de banda del canal
es muy superior que el ancho de banda de los pulsos, la dispersión va a ser mínima. Si el ancho
de banda del canal es cercano al de la señal, la dispersión excederá la duración del símbolo y va
a causar que los pulsos se traslapen. Este traslape es llamado interferencia intersímbolo (ISI).
Como toda fuente de interferencia, el ISI causa una degradación al rendimiento del sistema,
especialmente a velocidades de transmisión altas. Si se piensa como posible solución al
problema del ISI utilizar una señal limitada en banda, esta señal no será limitada en tiempo, lo
cual causará que varios pulsos se traslapen causando ISI. No importa si se comienza con unos
pulsos limitados en banda o en tiempo ya que el ISI es un problema inherente a los canales
limitados en banda.
Lo que se requiere para la correcta toma de decisiones es que, al momento de detectar la
amplitud del pulso no exista ISI, y una forma de lograr esto con una forma de pulso apropiada
para la limitación en banda.
5 De sus siglas en ingles “intersymbol interference”
13
Existen métodos para solucionar este tipo de problemas. Uno de los más usados es el criterio de
Nyquist para cero ISI. Este criterio se basa en escoger una forma de pulso con amplitud
diferente de cero en el centro (t=0) y amplitud cero en 𝑡 = ±𝑛𝑇𝑏 (n=1, 2, 3,…), donde Tb es el
periodo entre sucesivos pulsos transmitidos y el inverso del ancho de banda del canal (Rb).
𝑝 𝑡 = 1 𝑡 = 00 𝑡 = ±𝑛𝑇𝑏
El pulso que cumple con estas características es el la forma de onda sinc la cual se ilustra en la
Figura 2.
Figura 2. Pulso sinc.[5]
De la Figura 3 se puede observar cómo la amplitud en los instantes 0, Tb, 2Tb,… consiste de la
amplitud de un sólo pulso centrado en el tiempo de muestreo y sin interferencia de los otros
pulsos.
Para transmisión de Rb bits se requiere teóricamente un ancho de banda de 𝑅𝑏
2 Hz, escribiendo
al sinc de la siguiente forma
𝑠𝑖𝑛𝑐(𝜋𝑅𝑏𝑡) = 1 𝑡 = 0
0 𝑡 = ±𝑛𝑇𝑏
Y se puede obtener su transformada de Fourier ilustrada en la Figura 4.
𝑃 𝜔 =1
𝑅𝑏𝑟𝑒𝑐𝑡
𝜔
2𝜋𝑅𝑏
Figura 3. Sinc y su espectro de frecuencia. [5]
14
Aunque con esta forma de pulso se puede evitar el problema del ISI; desafortunadamente, este
tipo de pulso es impráctico ya que comienza en −∞, por lo cual se debería esperar un tiempo
infinito para que el pulso se genere. Otro problema es que si el tiempo de muestreo en el
receptor se desvía tan solo un poco el momento de tomar la decisión será incorrecto y se verá
afectado por los demás pulsos. Los problemas mencionados anteriormente se presentan por la
velocidad a la que decae la señal. Por lo tanto, si se logra hacer que la señal decaiga más rápido,
se solucionarán algunos problemas. Si se muestrea la señal cada Tb segundos y se multiplica por
un tren de impulsos 𝛿𝑇𝑏todas señales serán cero, exceptuando aquellas que están en el origen.
𝑡 = 𝑝 𝑡 𝛿𝑇𝑏= 𝛿 𝑡
Si se conoce que el espectro de la señal 𝑡 es 1𝑇𝑏
veces el espectro de 𝑝 𝑡 que se repite
periódicamente en un intervalo 𝜔𝑏 , se tiene que la transformada de Fourier de 𝑡 es
1
𝑇𝑏 𝑃(𝜔 − 𝑛𝜔𝑏)
∞
𝑛=−∞
= 1 𝑑𝑜𝑛𝑑𝑒 𝜔𝑏 = 2𝜋𝑅𝑏
Figura 4. Espectro de p (t). [5]
El problema de esta solución es que se tiene un exceso de ancho de banda (𝜔𝑥 ) respecto al
ancho de banda mínimo teórico 𝜔𝑏
2 , y donde r es conocido como el “roll off” de la señal, el
cual expresando la relación entre las dos
𝑟 =2𝜔𝑥
𝜔𝑏 𝑑𝑜𝑛𝑑𝑒 0 ≤ 𝑟 ≤ 1
De lo cual se puede reformular el ancho de banda como
𝐵𝑇 =𝑅𝑏
2+
𝑟𝑅𝑏
2=
(1 + 𝑟)𝑅𝑏
2
Con este criterio entonces se puede no sólo reducir el ISI, sino el ancho de banda utilizado para
transmitir.
15
2.5 Modulación QAM6
La modulación de amplitud en cuadratura es un tipo de modulación que afecta simultáneamente
la amplitud y la fase de la portadora, o sea, la información está contenida tanto en la fase como
en la amplitud. Se basa en la transmisión de dos mensajes independientes por un único camino.
Esto se consigue modulando una misma portadora, con un desfase de 90º entre uno y otro
mensaje. Esto supone la formación de dos canales ortogonales en el mismo ancho de banda, con
lo cual se mejora en eficiencia de ancho de banda que se consigue con esta modulación. Se
puede escribir una señal QAM de la siguiente forma:
𝑝𝑖 = 𝑝 𝑡 𝑎𝑖 cos 𝜔𝑐𝑡 + 𝑏𝑖 sin 𝜔𝑐𝑡
Usando identidades trigonométricas se reescribe la ecuación anterior como:
𝑝𝑖 = 𝑝 𝑡 𝑟𝑖cos(𝜔𝑐𝑡 + 𝜃𝑖)
Donde
𝑟𝑖 = 𝑎𝑖2 + 𝑏𝑖
2
𝜃𝑖 = −tan−1𝑏𝑖
𝑎𝑖
Gráficamente pi puede ser mapeado usando puntos (𝑎𝑖 , 𝑏𝑖) o (𝑟𝑖 , 𝜃𝑖). Este arreglo se muestra en
la Figura 5.
Figura 5. Constelaciones QAM.
Algunas de las aplicaciones de este tipo de modulación son:
Módems telefónicos para velocidades superiores a los 2400bps.
Transmisión de señales de televisión, microondas, satélite (datos a alta velocidad por
canales con ancho de banda restringido).
Modulación TCM (Trellis Coded Modulation), que consigue velocidades de
transmisión muy elevadas combinando la modulación con la codificación de canal.
2.6 Digital Signal Processor
Es un procesador que posee un juego de instrucciones, software y hardware optimizado para
realizar operaciones numéricas a muy alta velocidad. Una de las mayores diferencias con el
resto de los microprocesadores es el tipo de arquitectura, la cual tiene bloques físicos de
6 Por sus siglas en ingles “Quadrature amplitud modulation”.
16
memoria y bus de datos separados para el programa y los datos como se muestra en la Figura 6.
Esto permite las ejecuciones en paralelo de varias instrucciones a la vez o realizar instrucciones
más complejas, lo cual aumenta considerablemente la velocidad de procesamiento. Sus
principales aplicaciones esta el procesamiento de audio y video en tiempo real, en el cifrado de
conversaciones en los teléfonos celulares, las comunicaciones wireless, LAN, ente muchos
otros.
BUS DATOS BUS ISTRUCIONES
Figura 6.
Para disminuir el tiempo de desarrollo de productos basados en procesadores, existen múltiples
herramientas de desarrollo (software y/o hardware) que permiten la implementación de
prototipos de una forma más sencilla. Entre estas herramientas se destacan: a nivel de hardware,
las tarjetas de desarrollo y emuladores; y a nivel de software, compiladores, simuladores,
emuladores, vinculadores y librerías. A este conjunto de elementos se le denomina entorno de
programación.
En particular, una tarjeta de desarrollo es un circuito digital que integra un procesador con
diferentes periféricos, de forma similar a la placa madre de un computador personal. Para las
tarjetas de desarrollo traen periféricos como: ADC, PLL, puertos de salida, entre otros, de
pendiendo de la aplicación del DSP.
El entorno de programación es un software desarrollado por el fabricante que facilita la
programación, el desarrollo y la corrección de errores en los proyectos implementados sobre la
tarjeta de desarrollo.
2.6.1 TMS320C6713DSK
Es una tarjeta de desarrollo con un DSP de alto desempeño que entrega nuevos niveles de
rendimiento basados en programación en lenguaje C, bajo consumo de potencia, para redes de
banda ancha y para aplicaciones digitales de imágenes. Ofrece compatibilidad con operaciones
de punto fijo o flotante con ocho unidades independientes, dos ALU para punto fijo, cuatro para
punto flotante y dos multiplicadores compatibles tanto para punto fijo como flotante [4].
CPU Datos Instruccione
s Datos Datos Instruccione
s
Instrucciones
Memoria Externa
Figura 6. Diagrama Arquitectura de un DSP
17
Figura 7. Foto tarjeta de desarrollo TMS320C6713.
Figura 8. Diagrama en bloques tarjeta de desarrollo TMS320C6713-DSK 6713DSP. [11]
Como se muestra en la Figura 7 y la Figura 8, cuenta con periféricos como:
6713DSP: Es la unidad central de procesamiento con velocidad de reloj 255MHz, capaz
de procesar VLIW 7, esto quiere decir que es capaz de procesar 8 instrucciones de 32bit
en un ciclo de reloj.
EMIF8: Es la encargada de la interfaz de varios dispositivos externos como CPLD
9,
SDRAM10
y la memoria flash.
CPLD: Permite realizar operaciones lógicas más eficientes ya que está formada de
varios bloques lógicos que están conectados por una matriz de interconexiones
programables.
7 De sus siglas en ingles “very-long instruction words”
8 De sus siglas en ingles “External Memory InterFace”
9 De sus siglas en ingles “Complex Programmable Logic Device”
10 Por sus siglas en ingles “Synchronous Dynamic Random Access Memory”
18
SDRAM: Es una memoria que se encuentra sincronizada con un reloj lo que le permite
estar sincronizado con el bus del sistema lo que le permite ser más rápida.
Flash: Es una memoria que permite manipular varios campos de memoria al mismo
tiempo y permite un mayor número de escrituras que la memoria interna del DSP. En
este caso con una capacidad de 512 Kbytes.
McBSPs11
: Es un periférico que permite una comunicación full-dúplex, flujo continuo
de datos, transmisión y recepción multicanal, entre otras características.
Codec: Es un AIC23 codec estéreo de alto desempeño con un rango de frecuencia entre
8-96kHz, con ADC y DAC sigma-delta, con control por software y entrada/salida por
McBSP. Además tienen múltiples entradas y salidas como mic in, line in, hp out y line
out.
JTAG12
: es una organización que desarrollo un estándar que permite acceder la
información de un dispositivo en tiempo real. En el caso de la tarjeta se emula vía USB
o puede usarse con JTAG externo.
HOST PORT: Es un puerto paralelo de 16 bit por el cual un procesador anfitrión tiene
acceso a los espacios de memoria de la CPU, mapa de memoria de los periféricos y
otras sectores de la tarjeta.
Otra de los elementos importantes de las tarjetas de desarrollo es el entorno de programación, en
el caso de la tarjeta TMS320C6713DSK se llama code composer, es un programa desarrollado
por Texas Instruments, que permite la programación en lenguaje C como en assembler. Entre
sus características principales se encuentran su versatilidad para soportar una gran variedad de
familias de tarjetas de desarrollo, incluye diferentes herramientas como el debugger, librerías,
vinculadores y los API13
. Son partes del programa que permite una programación, supervisión
y corrección de errores más sencilla sobre los diferentes proyectos implementados en la tarjeta
de desarrollo.
2.7 Aprendizaje Activo
El aprendizaje activo es un aprendizaje que se basa en el estudiante; esto quiere decir que
requiere una mayor participación por parte de éste. El estudiante no constituye un agente pasivo,
puesto que no se limita a escuchar en clase, tomar notas y, muy ocasionalmente, plantear
preguntas al profesor a lo largo de la clase, sino que participa y se implica en la tarea,
necesariamente, para poder obtener los conocimientos o informaciones que se plantean como
objetivos de la asignatura [8]. Otra definición bastante usada es “El aprendizaje activo implica a
los estudiantes en hacer cosas y pensar sobre las cosas que ellos están haciendo” [9].
“Por tanto se requiere, por parte del profesor, una nueva manera de conducir la clase y la
asunción de un nuevo papel: en el aprendizaje activo, el profesor no constituye el eje central (en
tanto en cuanto ya no se limita a transmitir los conocimientos y “hacer” que los alumnos
aprendan), puesto que es el alumno quien asume la responsabilidad de trabajar para obtener el
conocimiento. No obstante, el papel del profesor en este proceso adquiere una gran relevancia
que no se debe olvidar, puesto que es el docente quien guía a los alumnos en su proceso de
búsqueda, quien orienta a cada alumno para el desarrollo del conocimiento, quien facilita y
posibilita diferentes actividades con el propósito que los alumnos se impliquen y trabajen para
obtener ciertos aprendizajes, y es, también, quien aclara aquellos conocimientos que suponen
grandes dificultades a los alumnos o que éstos no podrían conseguir de otra forma”[8].
11
De sus siglas en ingles “Multichannel Buffered Serial Port” 12
Por sus siglas en ingles “Joint Test Action Group” 13
Por sus siglas en ingles “Application Programming Interface”
19
Uno de los factores importantes de este tipo de enfoque es la necesidad de conocer a los
estudiantes, esto quiere decir que los conocimientos previos – lo que el alumno ya sabe – para
saber cuál es el punto de partida y poder trazar los objetivos de aprendizaje o las metas que se
pretenden alcanzar a lo largo del curso. Además estos antecedentes permitirán seleccionar una
metodología adecuada según la situación y permitirá establecer de manera más clara la ruta a
seguir para cumplir los objetivos o metas propuestos.
Existen diversas actividades de aprendizaje activo y no todas ellas requieren el mismo nivel de
participación por parte de los estudiantes. Estas actividades se deben escoger acorde a los
objetivos que se quieren alcanzar. Benjamin Bloom estableció una Taxonomía sobre los
diferentes tipos de saberes, la cual se conoce como “Taxonomía de Bloom”. Esta jerarquía
puede resultarnos de especial interés, puesto permite establecer las actividades que serán más
apropiadas para alcanzar los objetivos planteados en el curso [8]. En la Tabla 1 se presenta la
taxonomía.
Tabla 1. Taxonomía de Bloom[8]
20
Existen diversas estrategias de aprendizaje activo; a continuación se mencionan las teorías en
las cuales se baso la realización de las guías:
2.7.1 Aprendizaje Cooperativo
La estrategia de aprendizaje cooperativo involucra pequeños grupos de estudiantes trabajando
juntos para maximizar su aprendizaje. Se hace referencia a los beneficios de que los estudiantes
aprendan en colaboración con otros estudiantes.
Existe una diferencia crucial entre estructurar el trabajo cooperativo y poner a los estudiantes en
grupos simplemente para aprender. Cooperación no es tener a los estudiantes sentados en la
misma mesa hablándose entre ellos mientras realizan sus asignaciones individuales. Para ser
cooperativos un grupo debe tener una clara interdependencia positiva, cada miembro del equipo
debe promover el aprendizaje de todos los miembros del equipo, mantenerse entre sí
responsables por la parte del trabajo individual de cada miembro, usar apropiadamente las
habilidades interpersonales y las grupales necesarias para que el esfuerzo cooperativo sea
exitoso y el progreso como grupo sea efectivamente el trabajo en conjunto de los miembros del
grupo [10].
2.7.2 Aprendizaje Basado en Problemas (PBL14
)
Esta estrategia involucra realizar una pregunta a un grupo de estudiantes (generalmente de
respuesta abierta) que cuenta con los recursos y un facilitador, pero no teoría. En ingeniería se
puede dar en el contexto del diseño, ya que problemas bien diseñados requerirán que el
estudiante se involucre en investigaciones tanto cualitativas como cuantitativas las cuales serán
nuevas para los estudiantes.
La justificación de usar PBL surge de dos grandes intelectos: Sócrates, el cual expuso el método
dialectico, que consiste en guiar y liderar a los estudiantes a que descubran por ellos mismos;
Jean Piaget descubrió que los niños aprenden haciendo y que el entendimiento no se ve afectado
en gran medida por la instrucción directa [10]. Algunos puntos cruciales de esta estrategia:
Un problema que sea muy sencillo o muy complejo será contraproducente.
Poner gran énfasis en la estrategia como medio de generar habilidades de pensamiento
en los estudiantes.
Problemas reales pueden ser una buena alternativa y no requieren necesariamente el
nivel de un graduado para su solución.
Se hace presenta una falta de control sobre lo que los estudiantes aprenden y los
recursos que ellos usan. Los estudiantes no siempre aprenden los que se esperaba que
aprendieran.
2.7.3 Aprendizaje Basado en Proyectos (PjBL15
)
Usualmente se confunden PjBL con PBL dado que sus acrónimos en ingles son similares como
la metodología que en ambos se utiliza. Aprendizaje basado en proyectos comienza realizando
una o varias asignaciones que guíen a la producción de un producto final que puede ser un
diseño, un modelo, un dispositivo o una simulación en computadora. La culminación del
proyecto generalmente es un reporte oral o escrito resumiendo el procedimiento usado para
producir el producto final.
14
De sus siglas en ingles “Problem based learning” 15
De sus siglas en ingles “Project based Learning”
21
Es importante que el proyecto tenga una conexión con el mundo real. El proyecto debe permitir
a los estudiantes a no hacer sólo las conexiones de la vida real, sino también poner en práctica
las habilidades de toma de decisiones, interactuar con otros, aprender y aplicar nuevos
conceptos y el uso de sus conocimientos a través de una variedad de contextos educativos.
Trabajando en conjunto con los demás. Colaborar con otros estudiantes es un elemento clave del
aprendizaje basado en proyectos. Así como los profesores y la comunidad en general. Sin
embargo, la atención se centra en el aprendizaje independiente que ayudar a promover mayores
habilidades de pensamiento de orden, permite a los estudiantes para obtener información de una
variedad de perspectivas. La aplicación de la investigación en una variedad de contextos
ambientales es indispensable a través de la aplicación de varias tecnologías, incluyendo los
programas de ordenador, equipos audiovisuales y la investigación de la vida real para garantizar
que la experiencia completa del proyecto que se adquiera. El objetivo final es dar respuesta a
una pregunta formulada con la colaboración de los demás.
Entre las ventajas que presenta PjBL, se mejora la retención a largo plazo, hay mejoramiento de
las habilidades y satisfacción tanto en estudiantes como en el personal docente; pero a la vez
presenta nuevos paradigmas ya que PjBL o PBL requieren una mayor utilización de los recursos
humanos, dado que se requiere un entrenamiento para los facilitadores en el proceso para que
estos sean realmente facilitadores, en lugar de hacer demostración o conferencias. El elemento
más importante para que una actividad PjBL sea sostenible y exitosa es la creación de una
cultura o entorno de soporte, promoción y recompensa por excelencia e innovación [10].
22
3. DESARROLLO
Se desarrollaron unos módulos para el laboratorio de fundamentos de comunicación, donde se
entenderá módulos como un conjunto de herramientas documentales, de software y hardware.
3.1 Formato de las Guías
Las guías de laboratorio o módulos se desarrollaron basadas en el siguiente formato:
La tabla de contenidos de cada módulo.
Lista de los equipos necesarios para el desarrollo correspondiente de la guía.
Se presenta un marco teórico con los temas a tratar en la guía.
Cada módulo está compuesto de varios laboratorios.
Bibliografía.
Los laboratorios se estructuran de la siguiente manera:
Se presenta el objetivo del laboratorio.
El procedimiento del laboratorio.
Conclusiones del laboratorio.
3.2 Formatos de los Programas
Los programas están estructurados en dos formas: en la primera, los programas se realizan con
un polling, en el cual se ejecutan los programas de forma cíclica y lineal; la segunda forma es a
través de una interrupción de hardware que ejecuta algunos algoritmos implementados.
Los programas se dividen en cuatro partes, donde la primera es el llamado de las librerías y
funciones, la segunda se inicializan todas la variables globales necesarias, la tercera es la
inicialización de la tarjeta la cual generalmente está contenida en la función „main‟ del
programa y la cuarta son los algoritmos que pueden ir tanto en la función main o en la función
de la interrupción.
3.3 Interacción con las Guías
Tradicionalmente la enseñanza de las asignaturas de Ingeniería se ha apoyado en dos pilares
fundamentales: por un lado, las lecciones magistrales, donde el profesor expone los
fundamentos teóricos básicos de la asignatura y se realizan algunos ejercicios numéricos,
requiriendo una actitud pasiva por parte del alumno, y las prácticas de laboratorio donde el
alumno aprende a través de la acción, ensayando, comprobando y montando experimentos [12]
[13]. Una gran preocupación de docentes y estudiantes en los programas de formación en
ingeniería electrónica en Colombia, tiene que ver con los equipos y materiales disponibles para
la realización de prácticas de laboratorio adecuadas para fomentar la formación basada en
créditos académicos en la cual el estudiante requiere trabajar de forma independiente donde “un
23
crédito académico es la unidad que mide el tiempo estimado de actividad académica del
estudiante en función de las competencias profesionales y académicas que se espera que el
programa desarrolle”. [15]
Uno de los objetivos de la educación es el desarrollo de las capacidades de cualquier persona, y
hablar de educación implica referirse a un proceso de enseñanza-aprendizaje (E-A). El proceso
E-A tiene varias formas o métodos de llevarse a cabo dependiendo esencialmente del paradigma
que se maneje: Educación conductual y Educación constructiva; En un contexto educativo
diferentes autores proponen al ser aplicar de forma complementaria estos modelos en diferentes
etapas de un mismo proceso E-A [14].
En el caso de este proyecto la interacción de los estudiantes con los módulos abarcará un
enfoque tanto tradicional como un aprendizaje activo dado que se presentarán ambas
metodologías en los módulos. Los estudiantes comenzarán leyendo el marco teórico de los
módulos con anticipación para tener claros los temas referentes de la guía a desarrollar y se
revisará la teoría al principio del laboratorio con el facilitador para aclarar las posibles dudas
que puedan surgir. Después pasaran a la realización de los laboratorios propuestos en lo módulo
por parte de los estudiantes y apoyados por el facilitador, el cual no debe volver el laboratorio
en una experiencia demostrativa, sino ser un guía a través de la experiencia. Los estudiantes
deben tomar un rol activo, de cooperación y curiosidad que les permita crear un entorno de
aprendizaje más confortable y fructífero.
Las guías contienen problemas o proyectos con relación a la práctica que se esté desarrollando,
los cuales se realizarán en el tiempo del laboratorio permitiendo a los estudiantes analizar,
pensar, realizar trabajo en equipo y revisar los temas vistos de una forma constructiva. Estos
problemas o proyectos tienen la intención de reforzar el conocimiento, permitir la comprensión
y mostrar o desarrollar una aplicación basada en los conocimientos adquiridos.
La forma en que se presentaran estos problemas o proyectos en las guías es en unos rectángulos
o cajas de colores que indicarán según su color lo que se espera que el estudiante se enfoque con
la pregunta o desafío concreto de cada caja. Estos momentos del laboratorio están pensados para
que el estudiante se tomo un tiempo para hacer algo y pensar sobre lo que está haciendo. Se
espera que los estudiantes discutan entre ellos las propuestas de soluciones, muestren una
implementación o colaboren para la resolución de los problemas de forma más dinámica.
Los bloques de color azul representaran preguntas de análisis para los estudiantes las cuales se
analizaran individualmente y posteriormente se socializarán las repuestas. Las cajas de color
verde representan problemas para ser analizados y solucionados con los conocimientos
adquiridos durante la práctica. Y por ultimo están las cajas de color rojo que presentan un mini
– proyecto que se pueda desarrollar en el tiempo del laboratorio, que comprenderá algunos de
los conceptos y habilidades vistos en el módulo.
Los estudiantes podrán interactuar con los programas de diversas formas: una de ellas es
modificar directamente el código de los programas, ya sea para solucionar un problema o para
implementar un proyecto. Otra forma será a través de los dip switch de la tarjeta de desarrollo,
lo cual le permitirá controlar ciertos aspectos del programa desde el hardware. Y por último, el
estudiante podrá modificar los valores de las variables de control del programa mediante el
watch window, la cual es una de las herramientas presentes en el entorno de desarrollo que
permite supervisar y alterar el estado de las variables dentro del procesador en tiempo real, pero
a su vez presenta el problema de choque de datos a través del JTAG, por lo cual se deben tomar
algunas precauciones al manejar los programas desde el watch window.
24
3.4 Módulos
Se realizaron cuatro módulos de laboratorios que están compuestos de varias prácticas de
laboratorio y a continuación se presentan las características de cada uno.
3.4.1 Módulo1
Esta es el primer módulo del conjunto de cuatro, donde el objetivo principal es introducir el
manejo de la tarjeta de desarrollo y su entorno de desarrollo para facilitar la realización de
prácticas posteriores. Los objetivos que se presentan en esta guía son:
Que el estudiante sea capaz de identifique los diferentes elementos que componen la
tarjeta de desarrollo TMS320C6713-DSK.
Que el estudiante use el entorno del programa code composer.
Que el estudiante sea capaz de realizar un programa sencillo en code composer.
Que el estudiante use un programa que utilice el codec de la tarjeta y sea capaz de
hacerle modificaciones.
Se espera que los estudiantes tengan un conocimiento previo mínimo de programación en el
lenguaje C, manejo de osciloscopio y conocimientos de un ADC. Al finalizar el módulo se
espera que los estudiantes tengan un manejo básico del entorno de desarrollo, puedan identificar
las partes más importantes de la tarjeta de desarrollo y puedan realizar programas sencillos
sobre la tarjeta de desarrollo.
Las herramientas necesarias para llevar a cabo esta guía son:
Un (1) Kit de desarrollo TMS320C6713.
Un (1) Osciloscopio.
Un (1) Cable estéreo-caimán
Un (1) Punta de osciloscopio.
Un (1) Computador con Code composer.
En este módulo se trabajarán dos programas que introducirán los aspectos básicos del manejo de
la tarjeta de desarrollo y algunos de sus periféricos. El primer programa introducirá una forma
para realizar un proyecto en code composer, el cual se compone de los pasos necesarios para
crear un nuevo proyecto, las rutas de los archivos que se deben incluir o crear, la inicialización
de la tarjeta de desarrolla mediante la BSL16
, la construcción del proyecto (compilar y cargar el
programa en la tarjeta) y posteriormente poner a correr el programa.
El segundo programa se centra en un generador de funciones que nos permitirá escoger
mediante un dip swicth de la tarjeta entre diferentes formas de onda. La forma de este programa
se basa en el uso de un ciclo de polling el cual permitirá ejecutar de forma recursiva el programa
varias veces.
La inicialización del diagrama de flujo mostrado en la Figura 9 hace referencia a la
inicialización de variables y de la BSL (en este caso la librería de soporte de los dip swicth y del
codec). El programa funciona en un ciclo de polling, las instrucciones se ejecutarán de forma
secuencial. Lo primero que se tienen es un conjunto de instrucciones que nos permite calcular el
incremento en fase que va de 0 a 2π, este también nos servirá como marco de tiempo para las
señales que se calcularan y luego se calcula el tamaño de los pasos para las señales rampa y
triangulo. Después se pregunta si el interruptor 0 del SW1 de la tarjeta está en estado 0
16
De sus siglas en ingles “Bios Support Library ”
25
(encendido), si el estado es 0 se calculara el seno mediante el uso de la función sinf que utiliza
los incrementos de fase calculados anteriormente para calcular el valor del seno que se escribirá
al codec. Luego se pregunta por el estado del interruptor 1 del SW1 si el estado es 0 se
procederá a calcular la rampa con los pasos anteriormente calculados, de forma similar se
pregunta por el estado del interruptor 2 si es 0 se calculara la señal triangulo usando como base
de tiempo el cálculo de de los ángulos, la señal dibujara una rampa ascendente hasta llegar a π
y luego pasara a la siguiente condición comenzando a descender. Después se comprobara el
estado del interruptor 3 si esta encendido se dibujara una señal cuadrada mediante dos
condiciones que dependen del cálculo del ángulo como base de tiempo, cuando el ángulo es
menor de π se dibujara el pulso de la señal cuadrada y cuando esta sea mayor se dibujara el cero
de la señal. Al terminar de revisar las condiciones de los interruptores se pasa el dato
correspondiente a ser escrito al codec.
Para mayor información consultar el anexo 1.
En el main del programa tenemos la inicialización de la tarjeta y el DIP SWITCH
// Inicializar la board support library.
DSK6713_init(); //inicializa la tarjeta BSL
DSK6713_DIP_init(); //init DIP from BSL
Luego se le asigna al controlador del codec la configuración del codec para poder utilizar las
diferentes funciones que presenta la librería del codec.
//Abrir el codec
hCodec = DSK6713_AIC23_openCodec(0, &config);
En el ciclo de polling lo primero que se tienen es un conjunto de instrucciones que nos permite
calcular el incremento en fase que va de 0 a 2π, este también nos servirá como marco de tiempo
Si
Si
Si
Si
No
No
No
No
Dip0== 0
Dip1== 0
Dip2== 0
Dip3== 0 Escribe al codec
Calcula cuadrada
Calcula Triangulo
Calcula Rampa
Calcula Seno
Inicializa
Figura 9. Diagrama de Flujo del segundo programa primera práctica.
26
para las señales que se calcularan. Se calcula el tamaño de los pasos para las señales rampa y
triangulo.
infase = 2*pi*f/fa; // cálculo del incremento de la fase
fase += infase; // cálculo de la siguiente fase
decon=31899/((3*pi)/(infase*2)); // cálculo del valor del incremento de la triangulo
decon1=31899/((2*pi)/infase); // cálculo del valor del incremento de la rampa
if(fase > pi*2)
fase -= 2*pi;
Cuando el interruptor 0 del SW1 de la tarjeta está en estado 0 (encendido) se calcula el seno
mediante el uso de la función sinf que utiliza los incrementos de fase calculados anteriormente.
If(DSK6713_DIP_get(0)==0) //seno
aux=A*sinf(fase);
Si el interruptor 1 esta encendido se realizara el cálculo de la rampa donde los pasos de
incremento viene dado por la variable decon1 y la suma de estos se va acumulando en la
variable con1 hasta que la fase sea igual a 2π, cuando esto ocurre se ponen en cero las variables
con1 y aux.
if(DSK6713_DIP_get(1)==0) //rampa
if(fase<=(2*pi))
aux=con1+decon1;
con1=aux;
else
aux=0;
con1=0;
Cuando el interruptor 2 está en posición de encendido se calculara la señal triangulo. Usando
como base de tiempo el cálculo de la fase la señal dibujara una rampa ascendente hasta llegar a
π y luego pasara a la siguiente condición comenzando a descender.
if(DSK6713_DIP_get(2)==0) //triangular
if(fase<=pi)
aux=con+decon;
con=aux;
else
aux=con-decon;
con=aux;
Si el interruptor 3 esta encendido se dibujara una señal cuadrada mediante dos condiciones que
dependen de la fase como base de tiempo, cuando la fase es menor que π se dibujara el pulso de
la señal cuadrada y cuando esta sea mayor se dibujara el cero de la señal.
if(DSK6713_DIP_get(3)==0) //cuadrada
if(fase<=pi)
aux=31999;
27
else
aux=100;
La ultima parte del programa se encarga de convertir la variable aux, la cual guarda los valores
calculados de las señales, en un entero sin signar de 32 bit para poder escribirlo en el codec.
newSample=(Uint32)(aux); //convierte la variable
DSK6713_AIC23_write(hCodec, newSample); //escribe en el codec
3.4.2 Módulo 2
Este módulo se concentrará en un generador de códigos de línea con el cual se espera que los
estudiantes obtengan un mejor manejo del tema de códigos de línea al poder ver y comparar las
diferentes características de estos. Los objetivos que se presentan en este módulo son los
siguientes:
Que el estudiante sea capaz de reconocer y diferenciar los diferentes códigos de línea
con pulsos de forma rectangular.
Comparar los diferentes espectros de frecuencia de los diferentes códigos de línea con
forma de pulso rectangular.
Que el estudiante describa los efectos del canal sobre las señales de los códigos de línea.
Que el estudiante analice los códigos de línea con diferentes formas de pulso de onda
tanto en tiempo como en frecuencia.
Que el estudiante describa el efecto del canal sobre los diferentes espectros de
frecuencia con diferentes formas de pulso con los códigos de línea.
Las competencias previas que se esperan al comienzo del desarrollo de la guía son que el
estudiante tenga el conocimiento mínimo del manejo de la tarjeta de desarrollo y de códigos de
línea. Se espera que al finalizar la guía el estudiante sea capaz de identificar con relativa
facilidad los códigos vistos en el módulo, poder diferenciarlos y reconocer sus características,
además de lograr un mejor manejo y entendimiento de la tarjeta de desarrollo.
Las herramientas necesarias para el desarrollo de la guía son:
Un (1) Kit de desarrollo TMS320C6713.
Un (1) Osciloscopio con función de FFT.
Dos (2) Cable estéreo-caimán
Dos (2) Punta de osciloscopio.
Un (1) Cable estéreo-estéreo.
Un (1) Computador con Code composer.
Un (1) Protoboard.
Diferentes potenciómetros de entre 10kΩ-100kΩ
Una selección de condensadores del orden de picofaradios (pF).
Cortos.
El programa utilizado en este módulo permitirá variar entre diferentes códigos de línea los
cuales son: on-off, polar, bipolar y Manchester, todos con la posibilidad de retorno a cero,
menos el Manchester. Nos permitirá la variación del tiempo de bit, la frecuencia de transmisión,
la secuencia enviada y la forma de onda. Se puede seleccionar entre tres tipos de forma de onda,
pulsos de forma rectangular, seno y coseno elevado, en el caso especifico del este último existe
una variable adicional roll off que permite seleccionar entre diferentes roll off.
28
El control de los parámetros se encuentra en el watch window del entorno de desarrollo, el cual
permite de forma sencilla seleccionar de entre las opciones disponibles para así configurar la
señal que se desea observar. La estructura del programa se muestra en la Figura 11.
En el diagrama de flujo de la Figura 11 el bloque de inicialización hace referencia a la
inicialización de las variables y las librerías necesarias para el manejo de la tarjeta de
desarrollo o al menos los elementos de esta que se utilizan. El bloque de selección de
forma de onda permite escoger entre las funciones de las diferentes ondas, luego dentro
de estas funciones están contenidas las funciones de los diferentes códigos de línea para
cada forma de onda y dependiendo de la selección del usuario se acedera a una de estas
funciones. Dentro de las funciones de los códigos dependiendo de la secuencia de bits
se escogerá la lookup table correspondiente al bit que se desea transmitir y se escribirán
sus valores al codec mediante un apuntador que recorrerá la tabla como se muestra en la
Figura 10, cuando se cumpla el tiempo de bit se revisara si existe algún cambio en los
parámetros de la señal, sino existen cambios se seguirá con el siguiente bit de la
secuencia, en caso contrario se realizara en procedimiento anterior para escoger la tabla
correspondiente para los nuevos parámetros de la señal.
La primera parte de este programa se hace el llamado a las librerías de C y las de soporte de la
tarjeta.
#include "generadorcfg.h" // Encabezado de DSP/BIOS
#include <csl.h> // Encabezado CSL
#include <csl_irq.h> // Encabezado Interrupciones
#include "dsk6713.h" // Encabezado BSL
#include "dsk6713_aic23.h" // Encabezado Codec
#include <math.h>
#include "tablas.h"
Se nombra al controlador del codec de la tarjeta.
DSK6713_AIC23_CodecHandle hCodec;
Después vienen los encabezados de las funciones
//Funciones
void codigoL(int codigos, int forma); //función encarga de escoger el código y la forma
de onda
void cuadra(int seleccion); //se encarga de ejecutar las operaciones necesarias para las
señales de forma cuadrada
Dato a escribir en el codec
Dato a escribir en el codec
Dato a escribir en el codec
Dato a escribir en el codec
Dato a escribir en el codec
Dato a escribir en el codec
Apuntador
Recorrido
Figura 10. Recorrido de los apuntadores.
29
void sincc(void); //se encarga de ejecutar las operaciones necesarias para las señales de
forma sinc
int sinc_suma_polar(void); // realiza las sumas de las ondas sinc polar NRZ
int sinc_suma_onoff(void); // realiza las sumas de las ondas sinc on off
void cosenoele(void); //se en carga de las operaciones relacionadas al coseno elevado
int coseno_rolloff1(void); //para la código polar con un rolloff 0.1
A continuación se declaran las variables del programa, entre ellas se destacan:
Código: se encarga de seleccionar el código de línea va:
1. On-off
2. Polar NRZ
3. Polar RZ solo para cuadra
4. Bipolar NRZ solo para cuadrada
5. Bipolar RZ solo para cuadrada
6. Manchester solo para cuadrada
Onda: permite seleccionar entre la forma de onda:
1. Cuadrada.
2. Seno.
3. Coseno elevado.
aTb: que hace referencia a la cantidad de lóbulos de la sinc o coseno elevado y va de 1
a 4.
Tiempo_bit: controla la duración de la tiempo de bit:
1. Va de 1 a 4 para la cuadrada
2. Va de 1 a 2 para le sinc o el coseno elevado.
Se tiene el vector secuencia de tamaño 10 el cual contiene la secuencia a seguir para la
salida de la señal.
30
Después sigue el main donde se encuentra la configuración de codec y la inicialización de la
tarjeta y sus diferentes periféricos.
DSK6713_AIC23_Config config =
Cambio algún
parámetro
Inicialización
Selección forma de
onda
Cuadrada Sinc Coseno elevado
Roll off
Selecciona código
On-off Polar Bipolar Manchester
Secuencia
Escoge tabla
Escribe al codec
Termino tiempo de
bit
No Si
No
Si
Fin
Figura 11. Diagrama de flujo generador de códigos de línea.
31
0x0017, // Volumen de entrada de línea canal izq.
0x0017, // Volumen de entrada de línea canal der.
0x01F9, // Volumen de audífono izquierdo.
0x01F9, // Volumen de audífono derecho.
0x0011, // Control del camino análogo del audio.
0x0000, // Control del camino digital del audio.
0x0000, // Control de Power down.
0x0043, // Formato de interfaz digital.
0x0081, // Control de la frecuencia de muestreo.
0x0001 // Activación de interfaz digital.
;
// Inicializar la board support library.
DSK6713_init();
//Abrir el codec
hCodec = DSK6713_AIC23_openCodec(0, &config);
En el main también se encuentra la habilitación de la interrupción de transmisión del codec
(MCSP1).
// Habilitar la interrupción del McBSP.
IRQ_enable(IRQ_EVT_XINT1);
En la función de la interrupción se encuentra la función codigoL que se encarga de producir los
códigos de línea, la escritura o lectura del codec y los receptores.
void Txgenerador()
codigoL(codigo,onda);
Tx_salida=(Uint32)(salida);
DSK6713_AIC23_write(hCodec,Tx_salida);
DSK6713_AIC23_read(hCodec,&Rx_entrada);
entrada[pos_entrada]=(Int16)(Rx_entrada);
decision();
pos_entrada++;
if(pos_entrada>Max_buffer)
pos_entrada=0;
La función códigoL tiene la primera parte de esta función nos permite restablecer los valores de
algunas variables cada vez que se detecta un cabio de código o tiempo de bit. Dependiendo de la
forma de onda deseada se seleccionara la función adecuada para producirla.
void codigoL(int codigos,int forma)
if(anterior!=codigos || tiempo_bit!=ante_tiempo)
act=0;
pos_s=0;
anterior_sim=0;
ban=0;
anterior=codigos;
ante_tiempo=tiempo_bit;
umbral=-1*lumbral;
32
if(forma==1)
cuadra(codigos);
if(forma==2)
sincc();
if(forma==3)
cosenoele();
Se tiene tres opciones de onda y una función por cada onda:
Cuadra la cual nos permite producir los códigos con señales cuadradas. Esta función
está dividida según los códigos de línea. Selecciona el código de línea correspondiente y
recorre la tabla apropiada para el código.
void cuadra(int seleccion)
if(seleccion==1) //on_off
Si del vector secuencia viene 1 o cero escoge la tabla adecuada para recorrer. Con el
contador act se controla la posición de la tabla que se está leyendo y este incrementa
dependiendo del valor de la variable tiempo bit. Se usa la variable global salida para
sacar el valor del dato hacia el codec.
if(secuencias[pos_s]==1)
salida=Tonoff_unoC[act];
if(secuencias[pos_s]==0)
salida=Tonoff_ceroC[act];
act=act+tiempo_bit;
Con las siguientes líneas de código se controla el recorrido del vector secuencia que al
llegar a 10 se devuelve el apuntador que se encarga de recorrerlo. Esto sucede de
manera similar para todos los casos.
if(pos_s==10)
pos_s=0;
if(act==Longitud)
act=0;
pos_s++;
Para las señales de forma sinc es algoritmo es similar al de la onda cuadrada, excepto
que este tiene la opción de seleccionar el numero lóbulos con los que va la señal para
manejar este problema se utilizan varios apuntadores dependiendo de la longitud de la
sinc.
void sincc(void)
Se tiene un primer estado donde se calcula la posición inicial y final de los apuntadores en la
tabla de la sinc de pendiendo de la longitud que se desee.
if(ban==0)
33
Tb=Longitud/8;
pos_in=(4-aTb)*Tb;
pos_fin=Longitud-pos_in-1;
if(aTb>0)
ban=1;
Un Segundo estado donde los apuntadores toman los valores correspondientes
dependiendo de los valores calculados en el estado anterior.
if(ban==1)
contador++;
if(bann==34)
if(aTb==4)
act=pos_in;
else
act=pos_in-1;
bann=2;
if(act==pos_fin) //se organizan los apuntadores
contador=pos_in;
ban=0;
pos=pos_in;
if(aTb==1)
act=pos_in-1;
if(aTb==2)
act=sig;
sig=pos_in-1;
if(aTb==3)
act=sig;
sig=sig1;
sig1=pos_in;
if(aTb==4)
act=sig;
sig=sig1;
sig1=sig2;
sig2=pos_in;
pos_s++;
if(pos_s==10)
pos_s=0;
Se selecciona el conjunto de operaciones de aritméticas apropiada según el código seleccionado.
Esto hace referencia a las sumas de los diferentes lóbulos dependiendo del número de estos que
se quieran.
if(codigo==1)
salida=sinc_suma_onoff(); //codigo on off
if(codigo==2)
34
salida=sinc_suma_polar(); //codigo polar NRZ
pos++;
if(anterior1!=aTb) //cuando aTb cambio se reinician variables
if(aTb==4)
act=pos_in;
else
act=pos_in-1;
pos_s=0;
ban_s=1;
anterior1=aTb;
ban=0;
En el siguiente código se asegura el corrimiento de los diferentes apuntadores de pendiendo de
la cantidad de lóbulos que hay de tal manera que cada apuntador comience a correr en tiempos
distintos correspondiente a los desfases entre sinc.
//solo la primera vez después que se selecciona un aTb
if(act==((2*Tb)-1)+pos_in && ban_s==1) //en 11 cuando aTb=4
if(ban_s==1)
if(aTb==4)
sig=0;
else
sig=pos_in-1;
ban_s=2;
if(act==((4*Tb)-1)+pos_in && ban_s==2)//en 47 cuando aTb=4
if(ban_s==2)
if(aTb==4)
sig1=0;
else
sig1=pos_in-1;
ban_s=3;
if(act==((6*Tb)) && ban_s==3) //en 71 cuando aTb=4
if(ban_s==3)
sig2=0;
ban_s=4;
De manera similar el código del coseno elevado se parece al del sinc, por la excepción
que este lleva una condición extra el roll off lo cual se convierte en un factor más a la
hora de seleccionar la tabla que se va a recorrer.
void cosenoele(void) //es de un solo codigo polar
if(ban==0)
Tb=Longitud/8;
pos_in=(4-aTb)*Tb;
pos_fin=Longitud-pos_in-1;
35
if(aTb>0)
ban=1;
if(ban==1)
if(bann==34)
if(aTb==4)
act=pos_in;
else
act=pos_in-1;
bann=2;
if(act==pos_fin) //se organizan los apuntadores
ban=0;
pos=pos_in;
if(aTb==1)
act=pos_in-1;
if(aTb==2)
act=sig;
sig=pos_in-1;
if(aTb==3)
act=sig;
sig=sig1;
sig1=pos_in;
if(aTb==4)
act=sig;
sig=sig1;
sig1=sig2;
sig2=pos_in;
pos_s++;
if(pos_s==10)
pos_s=0;
Se selecciona dependiendo del roll off uno de las siguientes funciones que contendrán las
operaciones matemáticas correspondientes, esta es la única diferencia en cuanto al algoritmo
que cambia respecto al de la señal sinc.
if(rolloff==1)
salida=coseno_rolloff1();
if(rolloff==5)
salida=coseno_rolloff5();
if(rolloff==7)
salida=coseno_rolloff7();
pos++;
if(anterior1!=aTb) //cuando aTb cambio se reinician variables
if(aTb==4)
act=pos_in;
else
act=pos_in-1;
36
pos_s=0;
ban_s=1;
anterior1=aTb;
ban=0;
Se desfasan los apuntadores dependiendo del número de lóbulos seleccionados, a mayor numero
de lóbulos mayor número de apuntadores.
//solo la primera vez después que se selecciona un aTb
if(act==((2*Tb)-1)+pos_in && ban_s==1) //en 11 cuando aTb=4
if(ban_s==1)
if(aTb==4)
sig=0;
else
sig=pos_in-1;
ban_s=2;
if(act==((4*Tb)-1)+pos_in && ban_s==2)//en 47 cuando aTb=4
if(ban_s==2)
if(aTb==4)
sig1=0;
else
sig1=pos_in-1;
ban_s=3;
if(act==((6*Tb)-1) && ban_s==3) //en 71 cuando aTb=4
if(ban_s==3)
sig2=0;
ban_s=4;
Las operaciones matemáticas ejecutadas para las funciones del sinc o el coseno elevado son
similares ya que seleccionara y recorren una tabla dependiendo de los valores dados a las
diferentes variables de control.
int coseno_rolloff7(void)
Cuando se selecciona que solo tenga un lóbulo recorrerá una sola tabla que dependerá del valor
de la secuencia ya se a 1 o 0 y del tipo de código que se quiere.
if(aTb==1)
if(secuencias[pos_s]==1)
aux_s=Tpolar_unoCeno7[act];
if(secuencias[pos_s]==0)
aux_s=Tpolar_ceroCeno7[act];
act++;
37
Al seleccionar que la señal sinc estará compuesta de 2 lóbulos se requiere de un apuntador extra
para que recorra el símbolo siguiente al actual y se sumen la intersección de sus señales.
if(aTb==2)
if(pos_s==9)
if(secuencias[9]==0 && secuencias[0]==0)
aux_s=suma(Tpolar_ceroCeno7[act],Tpolar_ceroCeno7[sig]);
if(secuencias[9]==0 && secuencias[0]==1)
aux_s=suma(Tpolar_ceroCeno7[act],Tpolar_unoCeno7[sig]);
if(secuencias[9]==1 && secuencias[0]==0)
aux_s=suma(Tpolar_unoCeno7[act],Tpolar_ceroCeno7[sig]);
if(secuencias[9]==1 && secuencias[0]==1)
aux_s=suma(Tpolar_unoCeno7[act],Tpolar_unoCeno7[sig]);
else
if(secuencias[pos_s]==0 && secuencias[pos_s+1]==0)
aux_s=suma(Tpolar_ceroCeno7[act],Tpolar_ceroCeno7[sig]);
if(secuencias[pos_s]==0 && secuencias[pos_s+1]==1)
aux_s=suma(Tpolar_ceroCeno7[act],Tpolar_unoCeno7[sig]);
if(secuencias[pos_s]==1 && secuencias[pos_s+1]==0)
aux_s=suma(Tpolar_unoCeno7[act],Tpolar_ceroCeno7[sig]);
if(secuencias[pos_s]==1 && secuencias[pos_s+1]==1)
aux_s=suma(Tpolar_unoCeno7[act],Tpolar_unoCeno7[sig]);
if(ban_s>1)
sig=sig+tiempo_bit;
act=act+tiempo_bit;;
Al seleccionar que la señal tenga 3 lóbulos se requerirá de tres apuntadores uno para el dato
actual uno para el siguiente y otro para el siguiente del siguiente.
if(aTb==3)
if(pos_s==8)
if(secuencias[8]==0 && secuencias[9]==0)
aux_s1=suma(Tpolar_ceroCeno7[act],Tpolar_ceroCeno7[sig]);
if(secuencias[8]==0 && secuencias[9]==1)
aux_s1=suma(Tpolar_ceroCeno7[act],Tpolar_unoCeno7[sig]);
if(secuencias[8]==1 && secuencias[9]==0)
aux_s1=suma(Tpolar_unoCeno7[act],Tpolar_ceroCeno7[sig]);
if(secuencias[8]==1 && secuencias[9]==1)
aux_s1=suma(Tpolar_unoCeno7[act],Tpolar_unoCeno7[sig]);
if(secuencias[0]==0)
aux_s=suma(aux_s1,Tpolar_ceroCeno7[sig1]);
if(secuencias[0]==1)
aux_s=suma(aux_s1,Tpolar_unoCeno7[sig1]);
if(pos_s==9)
if(secuencias[9]==0 && secuencias[0]==0)
aux_s1=suma(Tpolar_ceroCeno7[act],Tpolar_ceroCeno7[sig]);
38
if(secuencias[9]==0 && secuencias[0]==1)
aux_s1=suma(Tpolar_ceroCeno7[act],Tpolar_unoCeno7[sig]);
if(secuencias[9]==1 && secuencias[0]==0)
aux_s1=suma(Tpolar_unoCeno7[act],Tpolar_ceroCeno7[sig]);
if(secuencias[9]==1 && secuencias[0]==1)
aux_s1=suma(Tpolar_unoCeno7[act],Tpolar_unoCeno7[sig]);
if(secuencias[1]==0)
aux_s=suma(aux_s1,Tpolar_ceroCeno7[sig1]);
if(secuencias[1]==1)
aux_s=suma(aux_s1,Tpolar_unoCeno7[sig1]);
else
if(secuencias[pos_s]==0 && secuencias[pos_s+1]==0)
aux_s1=suma(Tpolar_ceroCeno7[act],Tpolar_ceroCeno7[sig]);
if(secuencias[pos_s]==0 && secuencias[pos_s+1]==1)
aux_s1=suma(Tpolar_ceroCeno7[act],Tpolar_unoCeno7[sig]);
if(secuencias[pos_s]==1 && secuencias[pos_s+1]==0)
aux_s1=suma(Tpolar_unoCeno7[act],Tpolar_ceroCeno7[sig]);
if(secuencias[pos_s]==1 && secuencias[pos_s+1]==1)
aux_s1=suma(Tpolar_unoCeno7[act],Tpolar_unoCeno7[sig]);
if(secuencias[pos_s+2]==0)
aux_s=suma(aux_s1,Tpolar_ceroCeno7[sig1]);
if(secuencias[pos_s+2]==1)
aux_s=suma(aux_s1,Tpolar_unoCeno7[sig1]);
if(ban_s>2)
sig1=sig1+tiempo_bit;
if(ban_s>1)
sig=sig+tiempo_bit;
act=act+tiempo_bit;
Cuando el número de lóbulos es 4 se requiere de un apuntador extra para recorrer la señal extra
que se va a sumar a las anteriores o posteriores. Y de forma lineal se requerirá una apuntador
extra por cada lóbulo de mas que se desee.
if(aTb==4)
if(pos_s==7)
if(secuencias[7]==0 && secuencias[8]==0)
aux_s1=suma(Tpolar_ceroCeno7[act],Tpolar_ceroCeno7[sig]);
if(secuencias[7]==0 && secuencias[8]==1)
aux_s1=suma(Tpolar_ceroCeno7[act],Tpolar_unoCeno7[sig]);
if(secuencias[7]==1 && secuencias[8]==0)
aux_s1=suma(Tpolar_unoCeno7[act],Tpolar_ceroCeno7[sig]);
if(secuencias[7]==1 && secuencias[8]==1)
aux_s1=suma(Tpolar_unoCeno7[act],Tpolar_unoCeno7[sig]);
if(secuencias[9]==0 && secuencias[0]==0)
aux_s2=suma(Tpolar_ceroCeno7[sig1],Tpolar_ceroCeno7[sig2]);
if(secuencias[9]==0 && secuencias[0]==1)
aux_s2=suma(Tpolar_ceroCeno7[sig1],Tpolar_unoCeno7[sig2]);
39
if(secuencias[9]==1 && secuencias[0]==0)
aux_s2=suma(Tpolar_unoCeno7[sig1],Tpolar_ceroCeno7[sig2]);
if(secuencias[9]==1 && secuencias[0]==1)
aux_s2=suma(Tpolar_unoCeno7[sig1],Tpolar_unoCeno7[sig2]);
aux_s=suma(aux_s1,aux_s2);
if(pos_s==8)
if(secuencias[8]==0 && secuencias[9]==0)
aux_s1=suma(Tpolar_ceroCeno7[act],Tpolar_ceroCeno7[sig]);
if(secuencias[8]==0 && secuencias[9]==1)
aux_s1=suma(Tpolar_ceroCeno7[act],Tpolar_unoCeno7[sig]);
if(secuencias[8]==1 && secuencias[9]==0)
aux_s1=suma(Tpolar_unoCeno7[act],Tpolar_ceroCeno7[sig]);
if(secuencias[8]==1 && secuencias[9]==1)
aux_s1=suma(Tpolar_unoCeno7[act],Tpolar_unoCeno7[sig]);
if(secuencias[0]==0 && secuencias[1]==0)
aux_s2=suma(Tpolar_ceroCeno7[sig1],Tpolar_ceroCeno7[sig2]);
if(secuencias[0]==0 && secuencias[1]==1)
aux_s2=suma(Tpolar_ceroCeno7[sig1],Tpolar_unoCeno7[sig2]);
if(secuencias[0]==1 && secuencias[1]==0)
aux_s2=suma(Tpolar_unoCeno7[sig1],Tpolar_ceroCeno7[sig2]);
if(secuencias[0]==1 && secuencias[1]==1)
aux_s2=suma(Tpolar_unoCeno7[sig1],Tpolar_unoCeno7[sig2]);
aux_s=suma(aux_s1,aux_s2);
if(pos_s==9)
if(secuencias[9]==0 && secuencias[0]==0)
aux_s1=suma(Tpolar_ceroCeno7[act],Tpolar_ceroCeno7[sig]);
if(secuencias[9]==0 && secuencias[0]==1)
aux_s1=suma(Tpolar_ceroCeno7[act],Tpolar_unoCeno7[sig]);
if(secuencias[9]==1 && secuencias[0]==0)
aux_s1=suma(Tpolar_unoCeno7[act],Tpolar_ceroCeno7[sig]);
if(secuencias[9]==1 && secuencias[0]==1)
aux_s1=suma(Tpolar_unoCeno7[act],Tpolar_unoCeno7[sig]);
if(secuencias[1]==0 && secuencias[2]==0)
aux_s2=suma(Tpolar_ceroCeno7[sig1],Tpolar_ceroCeno7[sig2]);
if(secuencias[1]==0 && secuencias[2]==1)
aux_s2=suma(Tpolar_ceroCeno7[sig1],Tpolar_unoCeno7[sig2]);
if(secuencias[1]==1 && secuencias[2]==0)
aux_s2=suma(Tpolar_unoCeno7[sig1],Tpolar_ceroCeno7[sig2]);
if(secuencias[1]==1 && secuencias[2]==1)
aux_s2=suma(Tpolar_unoCeno7[sig1],Tpolar_unoCeno7[sig2]);
aux_s=suma(aux_s1,aux_s2);
else
if(secuencias[pos_s]==0 && secuencias[pos_s+1]==0)
aux_s1=suma(Tpolar_ceroCeno7[act],Tpolar_ceroCeno7[sig]);
if(secuencias[pos_s]==0 && secuencias[pos_s+1]==1)
aux_s1=suma(Tpolar_ceroCeno7[act],Tpolar_unoCeno7[sig]);
if(secuencias[pos_s]==1 && secuencias[pos_s+1]==0)
aux_s1=suma(Tpolar_unoCeno7[act],Tpolar_ceroCeno7[sig]);
40
if(secuencias[pos_s]==1 && secuencias[pos_s+1]==1)
aux_s1=suma(Tpolar_unoCeno7[act],Tpolar_unoCeno7[sig]);
if(secuencias[pos_s+2]==0 && secuencias[pos_s+3]==0)
aux_s2=suma(Tpolar_ceroCeno7[sig1],Tpolar_ceroCeno7[sig2]);
if(secuencias[pos_s+2]==0 && secuencias[pos_s+3]==1)
aux_s2=suma(Tpolar_ceroCeno7[sig1],Tpolar_unoCeno7[sig2]);
if(secuencias[pos_s+2]==1 && secuencias[pos_s+3]==0)
aux_s2=suma(Tpolar_unoCeno7[sig1],Tpolar_ceroCeno7[sig2]);
if(secuencias[pos_s+2]==1 && secuencias[pos_s+3]==1)
aux_s2=suma(Tpolar_unoCeno7[sig1],Tpolar_unoCeno7[sig2]);
aux_s=suma(aux_s1,aux_s2);
if(ban_s>3)
sig2=sig2+tiempo_bit;
if(ban_s>2)
sig1=sig1+tiempo_bit;
if(ban_s>1)
sig=sig+tiempo_bit;
act=act+tiempo_bit;
La variable aux_s es utilizada vara devolver el resultado de las diferentes sumas realizadas en la
función.
return aux_s;
La suma convencional no es adecuada para el trabajo de sumar los valores requeridos para
escribir en el codec, por lo tanto se hace necesario implementar una función de suma que
adecuada para los valores necesarios para escribir en el codec.
int suma(int num1, int num2)
int anum1;
int anum2;
Se signa los valores a sumar pasándolos a enteros sin signar a enteros con signo.
anum1=(Int16)(num1);
anum2=(Int16)(num2);
sumaa=anum1+anum2;
Se limita la suma de tal manera que los resultados obtenidos no puedan ser mayores a los
valores permitidos por el codec limitando el valor de las sumas tanto superiormente como
inferiormente.
if(sumaa>32767) //limite superior de la suma
sumaa=32767;
if(sumaa<-32767)
sumaa=-32766;
if(sumaa<0)
sumaa=sumaa+65534;
if(sumaa>65534) //limite inferior de la suma
41
sumaa=65534;
return sumaa;
3.4.3 Módulo 3
En este módulo se presenta un modulador y demodulador sincrónico QAM y su teoría, donde se
estudiarán las características de este tipo de modulación con diferentes tipos de forma de pulso.
Los objetivos que se presentan en este módulo son:
El estudiante conozca una modulación QAM4 basada el modulador QAM16 con una
forma de pulso cuadrada.
Que los estudiantes analicen la salida de un modulador QAM16 con una forma de pulso
cuadrada.
Que los estudiantes analicen los espectros de frecuencia de un modulador QAM con
una forma de pulso cuadrada.
Que los estudiantes puedan describir una modulación QAM con una forma de pulso
sinc.
Los estudiantes analicen los espectros de frecuencia con modulador QAM con una
forma de pulso sinc.
Las competencias que deben tener al empezar estas guías son: conocimiento básico en
modulaciones digitales incluyendo el criterio de Nyquist, espectros de frecuencia y un manejo
básico de la tarjeta de desarrollo. Al terminar la guía las competencias adquiridas por los
estudiantes sean un entendimiento de la modulación QAM, el efecto ISI en esta modulación y
cómo afecta la forma de pulso las características de la modulación.
Las herramientas necesarias para el desarrollo de la guía son:
Un (1) Kit de desarrollo TMS320C6713.
Un (1) Osciloscopio con función de FFT.
Dos (2) Cable estéreo-caimán
Dos (2) Punta de osciloscopio.
Un (1) Cable estéreo-estéreo.
Un (1) Computador con Code composer.
El programa implementado para este módulo permite escoger entre la forma de onda cuadrada y
seno, además variar la frecuencia del oscilador, la secuencia que se desea enviar y la cantidad de
lóbulos de los pulsos con forma sinc. El control del programa se realiza mediante el watch
window del entorno de desarrollo en el cual estarán las diferentes variables de control y además
permitirá acceder al DSP en tiempo real para variar los parámetros del modulador de una forma
fácil y sencilla. En el siguiente diagrama de flujo se encuentra el esquema general del programa.
42
En el diagrama de flujo de la Figura 15 el programa comienza a correr cuando hay una
interrupción de transmisión del codec, luego sigue al modulador donde se selecciona qué forma
va a tener el tren de impulsos, en el caso específico del sinc hay una opción extra la cual permite
escoger el número de lóbulos que va a tener el sinc (en el caso del programa solo permite 1, 3 o
5), después se selecciona un apuntador libre el cual va hacer el encargado de recorrer la tabla
correspondiente más adelante en el programa, el bloque de selección de cuadribit se encarga de
la secuencia de símbolos que se enviarán y su nombre deriva de que cada símbolo está
compuesto de cuatro bits. Después, como cada combinación de cuadribit tiene unas coordenadas
asociadas según la constelación de QAM 16, el siguiente bloque obtiene esas coordenadas, las
cuales se multiplican por el apuntador escogido con anterioridad, el cual apunta a una tabla que
contiene la forma del tren de impulsos; posteriormente se multiplicarán por el oscilador coseno
o seno, dependiendo de la coordenada; se suman las multiplicaciones anteriores para obtener el
resultado de la modulación y al final se escribe al codec. El bloque de correr apuntadores se
encarga de mover los apuntadores adecuados usados en el programa para recorrer las tablas de
los símbolos adecuadamente cada vez que se termina de escribir un dato en le codec para
asegurar que el programa este correctamente sincronizado y así prepararse para enviar el
siguiente dato. Al terminarse el tiempo de símbolo se deben repetir el proceso desde la selección
del apuntador para asegurar el correcto envío de cada símbolo en el tiempo de símbolo y esto se
repite indefinidamente, hasta que el usuario detenga el programa.
Donde el modulador implementado en bloques funcionales se muestra en la Figura 13, donde
los valores para la multiplicación entre el oscilador y la señal entrante son tomados de unas
lookup table, las cuales se recorrerá de forma similar a la mostrada en la Figura 10 donde los
valores de estas son tomadas por unos apuntadores y posteriormente multiplicadas. Los bloques
de los integradores se realizaron mediante una suma que depende del número de lóbulos
seleccionados, ya que dependiendo de estos se suman más o menos valores apuntados por los
apuntadores debido a que se tiene una mayor cantidad de símbolos. Y por último se suma los
valores obtenidos en cada rama lo cual da el resultado a escribir en el codec.
Inicialización
Modulador QAM
Escribe al codec
Interrupción Tx
Fin de la interrupción
Fin
No
Si
Figura 12. Diagrama de Flujo general del programa de la guía 3.
43
El bloque funcional del demodulador se muestra en la Figura 14 que de forma similar al
modulador los valores del seno provienen de una lookup table y se multiplican punto a punto
por los valores de entrada del codec. Luego estos valores se suman y se acumulan para calcular
el promedio de la señal de entrada en un tiempo de símbolo. Donde este promedio es pasado a
un bloque de decisión donde dependiendo de un umbral se decide el valor de la proyección de la
señal para cada rama del demodulador.
La constelación utilizada en la implementación del modulador corresponde a la constelación
dada en la recomendación V. 22 bis de la ITU, de igual forma el scrambler implementado
corresponde al algoritmo de la recomendación y además el programa es modificable de forma
sencilla para transmitir a la velocidades dadas en la recomendación.
∫
∫
Σ
Oscila
dor
90°
Figura 13. Diagrama funcional del modulador QAM
Figura 14. Diagrama funcional del demodulador QAM
44
En la primera parte del programa se llaman a las librerías de C y las librerías de soporte de la
tarjeta de desarrollo.
#include "Modulador_Qamcdbcfg.h" // Encabezado de DSP/BIOS
#include <csl.h> // Encabezado CSL
#include <csl_irq.h> // Encabezado Interrupciones
#include "dsk6713.h" // Encabezado BSL
#include "dsk6713_aic23.h" // Encabezado Codec
#include <math.h>
#include "tablas.h"
Obtiene coordenadas del cuadribti
Interrupción Tx
Forma
de la
onda
Cuadrada Sinc
Seleccionar cantidad de
lóbulos
Selecciona apuntador
Coordenada X por apuntador
Coordenada Y por apuntador
Por coseno Por seno
Suma
Escribe al codec
Apuntador supera
tiempo de simbolo
Corre apuntadores
Si
No
Selecciona cuadrabit
Figura 15. Diagrama de flujo del modulador QAM.
45
A continuación se inicializa las funciones y se declaran las variables a usaren el programa, entre
estas se destacan las variables de control que nos permiten cambiar alguno de los parámetros de
señal de salida, estas variable son:
El vector secuencia en el cual se puede ingresar la secuencia de datos que se desea a
la salida.
La variable frec_osc nos permite variar la frecuencia:
1. 2kHz
2. 4kHz.
3. 6kHz
Onda es la variable que nos perite escoger la forma de onda del tren de impulsos:
1. Forma de onda cuadrada.
2. Forma de onda sinc.
La variable l_sinc nos permite variar el numero de lóbulos de la sinc
1. Solo el lóbulo central.
2. El lóbulo central más uno adelante y otro atrás.
3. El lóbulo central más dos adelante y otro dos atrás.
La variable fuente_sel nos permite escoger la fuente de donde proviene los bits:
1. Proviene del vector secuencia.
2. Paso los datos del vector secuencia por la función scrambler.
3. Se escoge una secuencia aleatoria.
La variable sel_qam nos permite escoger el nivel de la modulación QAM:
1. QAM 4
2. QAM 8
3. QAM 16
La siguiente parte del programa se compone del main donde se inicializa la tarjeta, los
periféricos de esta, se configura el codec y la interrupción a utilizar.
DSK6713_AIC23_Config config =
0x0017, // Volumen de entrada de línea canal izq.
0x0017, // Volumen de entrada de línea canal der.
0x01F9, // Volumen de audífono izquierdo.
0x01F9, // Volumen de audífono derecho.
0x0011, // Control del camino análogo del audio.
0x0000, // Control del camino digital del audio.
0x0000, // Control de Power down.
0x0043, // Formato de interfaz digital.
0x0081, // Control de la frecuencia de muestreo.
0x0001 // Activación de interfaz digital.
;
// Inicializar la board support library.
DSK6713_init();
//Abrir el codec
hCodec = DSK6713_AIC23_openCodec(0, &config);
// Habilitar la interrupción del McBSP.
IRQ_enable(IRQ_EVT_XINT1);
46
// Regresar el control al planificador del DSP/BIOS
return;
La función de la interrupción se encarga de llamar a la función de modulación, escribir y leer de
codec, además nos proporciona la base de tiempo.
void QamTx(void)
Este segmento del programa nos sirve para reiniciar alguna de las variables cuando se cambian
alguno de los parámetros de la señal.
if(ban_osc!=frec_osc || ban_onda!=onda || ban_lsinc!=l_sinc ||
ban_sel_qam!=sel_qam)
if(frec_osc==1)
pos_seno=44;
if(frec_osc==2)
pos_seno=43;
if(frec_osc==3)
pos_seno=41;
if(frec_osc==4)
pos_seno=40;
if(onda==2 && l_sinc==2)
pos_seno=42;
if(onda==2 && l_sinc==3)
pos_seno=41;
ban_osc=frec_osc;
ban_onda=onda;
ban_lsinc=l_sinc;
ban_sel_qam=sel_qam;
if(onda==2)
inicio=(3-l_sinc)*Ts;
fin=576-inicio;
ap1=inicio;
ap2=inicio;
ap3=inicio;
ap4=inicio;
ban_ap2=0;
ban_ap3=0;
ban_ap4=0;
pos_secu=0;
pos_sim=0;
if(onda==1)
inicio=0;
fin=96;
La función QAM se encarga de hacer la modulación y recibe el tipo de forma de onda que se
desea.
salida=QAM(onda);
47
Se hace un cast a la variable de salida para poder escribir al codec.
Tx_salida=(Uint32)(salida);
DSK6713_AIC23_write(hCodec,Tx_salida);
DSK6713_AIC23_read(hCodec,&Rx_entrada);
entrada[pos_entrada]=(short)(Rx_entrada);
receptor(entrada[pos_entrada]);
El siguiente es el apuntador a la tabla del seno la cual controla la frecuencia del oscilador local.
pos_seno+=frec_osc;
if(pos_seno>47)
pos_seno=0;
El siguiente apuntador es el apuntador que se encarga de llevar el tiempo de símbolo.
pos_sim++;
if(pos_sim==192)
pos_sim=0;
pos_entrada++;
if(pos_entrada>1023)
pos_entrada=0;
La función QAM se encarga de realizar la modulación QAM.
int QAM(int forma)
int sal_qam;
La siguiente parte del código se encarga de desfasar el comienzo de los apuntadores cuando se
requiere recorrer varios símbolos a la vez.
if(forma==2)
if(ap1==96)
ban_ap2=1;
if(ap1==192)
ban_ap3=1;
if(ap1==288)
ban_ap4=1;
La siguiente parte del código se encarga de buscar un apuntador libre, cuando encuentra el
apuntador hace un llamado a la función coordenadas la cual se encarga de devolver las
coordenadas dependiendo de los bits que vienen de la secuencia. La función tabla se encarga de
seleccionar la tabla apropiada y devuelve el valor a utilizar en la modulación.
if(ap1==inicio)
coordenadas(&x1,&y1);
ap1=tabla(x1,y1,ap1,&valor_x1,&valor_y1,forma);
suma_aux_x=valor_x1;
suma_aux_y=valor_y1;
if(ban_ap2==1)
if(ap2==inicio)
coordenadas(&x2,&y2);
48
ap2=tabla(x2,y2,ap2,&valor_x2,&valor_y2,forma);
suma_aux_x=saturador(valor_x2,suma_aux_x);
suma_aux_y=saturador(valor_y2,suma_aux_y);
if(ban_ap3==1)
if(ap3==inicio)
coordenadas(&x3,&y3);
ap3=tabla(x3,y3,ap3,&valor_x3,&valor_y3,forma);
suma_aux_x=saturador(valor_x3,suma_aux_x);
suma_aux_y=saturador(valor_y3,suma_aux_y);
if(ban_ap4==1)
if(ap4==inicio)
coordenadas(&x4,&y4);
ap4=tabla(x4,y4,ap4,&valor_x4,&valor_y4,forma);
suma_aux_x=saturador(valor_x4,suma_aux_x);
suma_aux_y=saturador(valor_y4,suma_aux_y);
El siguiente segmento del código se encarga de realizar la modulación QAM, donde se
multiplica los valores obtenidos de la suma de los apuntadores por el oscilador local y luego
este resultado pasas a la suma el cual es el valor que se regresa para ser escrito al codec.
X=multi(suma_aux_x,coseno[pos_seno]);
Y=multi(suma_aux_y,seno[pos_seno]);
sal_qam=saturador(X,Y);
return sal_qam;
La función de coordenadas dependiendo del valor de la variable sel_qam se encarga de
seleccionar alguna de las funciones QAM para que estas interpreten la combinación de bits
adecuadamente para devolver las coordenadas correspondientes
void coordenadas(int *x, int *y)
if(sel_qam==1)
QAM4(x,y);
if(sel_qam==2)
QAM8(x,y);
if(sel_qam==3)
QAM16(x,y);
La función QAM16 devuelve el par de coordenadas correspondiente a la constelación de una
modulación QAM 16.
void QAM16(int *cx, int *cy)
int tabla_x=0;
int tabla_y=0;
int bit1;
int bit2;
int bit3;
int bit4;
49
El siguiente segmento del código se encarga de seleccionar la fuente de donde provienen los
bits, los cuales pueden provenir del vector secuencia directamente o desde el scrambler o desde
función de aleatoria.
if(fuente_sel==1)
bit1=secuencia[pos_secu];
bit2=secuencia[pos_secu+1];
bit3=secuencia[pos_secu+2];
bit4=secuencia[pos_secu+3];
if(fuente_sel==2)
bit1=scrambler(secuencia[pos_secu]);
bit2=scrambler(secuencia[pos_secu+1]);
bit3=scrambler(secuencia[pos_secu+2]);
bit4=scrambler(secuencia[pos_secu+3]);
if(fuente_sel==3)
bit1=aleatorio();
bit2=aleatorio();
bit3=aleatorio();
bit4=aleatorio();
Después se pasa por una serie de condiciones que permite seleccionar las coordenadas
adecuadas para la modulación QAM 16.
if(bit1==0)
if(bit2==0) //tercer cuatrante
if(bit3==0)
tabla_y=-1;
if(bit3==1)
tabla_y=-3;
if(bit4==0)
tabla_x=-1;
if(bit4==1)
tabla_x=-3;
if(bit2==1) //cuarto cuadrante
if(bit3==0)
tabla_x=1;
if(bit3==1)
tabla_x=3;
if(bit4==0)
tabla_y=-1;
if(bit4==1)
tabla_y=-3;
if(bit1==1)
if(bit2==0) //segundo cuatrante
if(bit3==0)
tabla_x=-1;
if(bit3==1)
50
tabla_x=-3;
if(bit4==0)
tabla_y=1;
if(bit4==1)
tabla_y=3;
if(bit2==1) //primer cuadrante
if(bit3==0)
tabla_y=1;
if(bit3==1)
tabla_y=3;
if(bit4==0)
tabla_x=1;
if(bit4==1)
tabla_x=3;
Se devuelve los valores de las coordenadas por referencia.
*cx=tabla_x;
*cy=tabla_y;
Se corre el apuntadora al vector secuencia y cuando este supera el tamaño de este se reinicia.
pos_secu+=4;
if(pos_secu==24)
pos_secu=0;
De forma similar se implementan las funciones para QAM8 y para QAM4, el cambio se
presenta en las condiciones de selección.
La función tabla recibe las coordenadas, el apuntador que está recorriendo la tabla y devuelve
los valores correspondientes a esas coordenadas dependiendo de la tabla que se debe recorrer.
int tabla(int x, int y, int apuntador, int *valor_x, int *valor_y, int seleccion)
Se selecciona entre las dos formas de onda ya sea cuadrada o sinc.
if(seleccion==1)
Se multiplica la el valor apuntado de la tabla por la coordenada para obtener el valor
correspondiente a un punto de la tabla.
*valor_x=base_cuadra[apuntador]* x;
*valor_y=base_cuadra[apuntador]* y;
if(seleccion==2)
*valor_x=base_sinc[apuntador]* x;
*valor_y=base_sinc[apuntador]* y;
51
Se corre el apuntador a la siguiente posición de la taba hasta que este supere el tamaño de la
tabla. Se devuelve el valor de la nueva posición del apuntador.
apuntador+=1;
if(apuntador==fin)
apuntador=inicio;
return apuntador;
La siguiente función limita a los valores máximos los datos obtenidos que se van a escribir en el
codec.
int saturador(int num1, int num2)
int num3;
num3=num1+num2;
if(num3>32767)
num3=32767;
if(num3<-32767)
num3=-32767;
return num3;
La función multi nos permite multiplicar adecuadamente cualquier par de datos cuyo resultado
vayan hacer escritos en el codec. Esto lo logra convirtiendo a todos los datos en números
signados de 16 bit y limitándolos a los valores máximos que pueden ser escritos al codec.
int multi(short num1,short num2)
int nu1;
int nu2;
int sal;
nu1=(int)(num1);
nu2=(int)(num2);
sal=nu1*nu2;
if(sal>32767)
sal=sal/32767;
if(sal<-32767)
sal=sal/32767;
return sal;
Es la función costa de la función random de C para crear los datos aleatorios que serán
utilizados en vez de los del vector secuencia.
int aleatorio(void)
int auxr;
auxr= rand() % (2);
return auxr;
La función scrambler recibe el dato y se en carga de implementar el vector scrambler para el
modem.
int scrambler(int dato)
52
int aux_scra;
int aux_scra2;
int i=0;
Se utiliza una XOR para realizar la sumas de modulo 2.
aux_scra=(vec_scra[13]^ vec_scra[16]);
aux_scra2=dato ^ aux_scra;
El siguiente for se utiliza para mover todo el vector y poder ingresarle el nuevo valor calculado
en la variableaux_scra2.
for(i=0;i<16;i++)
vec_scra[16-i]=vec_scra[15-i];
vec_scra[0]=aux_scra2;
return aux_scra2;
La siguiente es la función de recepción que nos permite decodificar la señal recibida.
void receptor(int valor)
int con2;
int con3;
con2=(short)(seno[pos_seno]);
con3=(short)(coseno[pos_seno]);
Se multiplica el valor de entrada por coseno y seno para la demodulación sincrónica y se va
acumulando este valor.
aux_x=valor*con2;
aux_y=valor*con3;
p_x=(p_x+aux_x);
p_y=(p_y+aux_y);
bufferx[buffer]=p_x;
buffery[buffer]=p_y;
Cuando se cumple el tiempo de símbolo se procede a calcular el promedio de la señal de entrada
en el número de muestras y luego se normaliza con el valor numérico más grande el codec y se
toma una decisión.
if(ban_seno==1)
Las variables promedio se encargan de guardar el valor de los promedios calculados en cada
tiempo de símbolo.
promedio_x=acumulador_x/divisor;
promedio_y=acumulador_y/divisor;
acumulador_x=0;
acumulador_y=0;
ban_seno=0;
pos_seno2+=frec_osc;
if(pos_seno2>95)
pos_seno2=0;
53
ban_seno=1;
buffer++;
if(buffer>1023)
buffer=0;
3.4.4 Módulo 4
Esta guía está enfocada como un proyecto de desarrollo para los estudiantes basado en la teoría
de PjBL donde el objetivo principal es que los estudiantes sean capaces de implementar
parcialmente un módem bajo la recomendación V. 22 de la ITU con los conocimientos y
habilidades adquiridas en los módulos anteriores. Se presentaran un marco teórico y
especificaciones requeridas para el módem, donde los objetivos específicos del módulo son:
Que el estudiante sea capaz de implementar un scramble.
Que el estudiante utilice lookup table.
Que el estudiante sea capaz de reutilizar código.
Que el estudiante sea capaz de implementar un descrambler.
Que los estudiantes sean capaces de reconocer la complejidad del proyecto propuesto.
Las herramientas necesarias para el desarrollo son:
Un (1) Kit de desarrollo TMS320C6713.
Un (1) Osciloscopio con función de FFT.
Dos (2) Cable estéreo-caimán
Dos (2) Punta de osciloscopio.
Un (1) Cable estéreo-estéreo.
Un (1) Computador con Code composer
La implementación del programa de este módulo será enteramente hecha por los estudiantes con
apoyo del facilitador. Los estudiantes podrán rehusar código usado en los módulos para facilitar
la tarea, el desarrollo del módem se centrará en la implementación y la adecuación de código
por parte de los estudiantes. La implementación del módem será parcial ya que no se exigirán
todos los modos de funcionamiento ni todas las características propias de la recomendación, ya
que muchas de ellas requieren un nivel de conocimiento superior al de un estudiante de
pregrado.
54
4. Análisis de Resultados
4.1 Resultado de los Módulos
4.1.1 Módulo 1
Los programas escogidos para ser realizados para este modelo son: el primer programa, LEDS,
presenta una interacción entre dos componentes de la tarjeta, siendo uno de ellos los leds y el
otro un dip switch el cual permite controlar el encendido o apagado de los leds. Siendo un
programa relativamente sencillo, se pretende mostrar las bases de cómo realizar un proyecto en
code composer y programarlo en la tarjeta para luego ejecutarlo, así mismo permite ver las
diferencias entre hacer un programa para el computador y uno que tiene como objetivo
programar un procesador.
En el segundo programa, generador de funciones de este módulo, se observa cómo se utiliza el
codec de la tarjeta para producir diferentes tipos de señales como sinusoidales o cuadradas que
son el objetivo de este programa, las cuales se seleccionaran desde el dip switch SW1 de la
tarjeta de desarrollo. Con este programa se logró producir diferentes señales entre sinusoidales,
triangulares, rampas y cuadradas, basadas en el cálculo constante de los ángulos y usándolos de
referencia de tiempo para las señales en un ciclo de polling. Las señales obtenidas en este
programa se muestran en las figuras 13 a 16 así:
Figura 16. Señal sinusoidal generador de funciones.
Como se logra apreciar en las figuras, todas las señales tienen una frecuencia cercana a 1kHz y
todas las amplitudes se encuentran son menores a 2Vpp. Tanto la frecuencia como la amplitud
son fácilmente modificables en el programa al cambiar los valores asignados a la variable de
frecuencia la cual puede ir hasta 6kHz sin presentar deformaciones en las formas de onda y el
55
valor de la amplitud se varia en las variables correspondientes a cada señal, modificando valores
de algunas variables.
Figura 17. Señal rampa generador de funciones.
Figura 18. Señal triangulo generador de funciones.
Dada las condiciones del codec de la tarjeta surgen ciertas limitaciones a la hora de producir
ciertas señales como se observa en la señal rampa o cuadrada donde se observan ciertas
deformaciones de las señales dado que los saltos que se producen son abruptos y por lo tanto el
codec es incapaz de seguirlos de forma precisa, además las frecuencia de muestro también
presenta una limitación a la cantidad de armónicas que pueden componer las señales
56
especialmente en el caso de la señal cuadrada. También se pueden apreciar los efectos del canal
sobre las señales dado que este no es un canal perfecto.
Figura 19. Señal cuadrada generador de funciones.
En este módulo se encuentran unas cajas de pregunta, problema y proyecto, cada una haciendo
énfasis directo alguna de las metodologías de aprendizaje enunciadas en el proyecto.
4.1.2 Módulo 2
Esta guía se centra en el programa generador de códigos de línea que permite ver diferentes
códigos de línea y sus respectivos espectros de frecuencia con diferentes formas de pulso. Este
programa permite seleccionar desde el wath window entre los diferentes códigos de línea: on
off, polar con retorno a cero y sin retorno a cero, bipolar con retorno a cero o sin retorno a cero
y Manchester con señales cuadradas. En la Figura 20 se presenta la ventana de control del
programa la cual costa de las siguientes variables: código permite escoger entre los diferentes
códigos de línea, onda permite seleccionar entre las tres formas de ondas disponibles (cuadrada,
sinc, coseno elevado), roll off permite seleccionar el valor de roll off para la señal coseno
elevado, la variable tiempo bit como su nombre lo indica permite la manipulación del tiempo de
bit entre 250μs y 1ms, y la variable longitu_l que nos permite variar el numero de lóbulos de las
señales con forma sinc o coseno elevado.
Figura 20. Ventana de control del generador de códigos.
57
El la Figura 21 se presenta un código on-off que sigue una secuencia de „1‟ y „0‟ intercalada y
en la Figura 22 se ilustra su espectro de frecuencia respectivamente.
Figura 21. Código on-off siguiendo una secuencia intercalada de 1 y 0.
Figura 22. FFT del código de línea on-off.
Como se logra observar en la Figura 22 se puede ver que el espectro de la señal concuerda con
lo que se esperaría de un espectro de una señal cuadrada. El cursor 1 se encuentra en el
armónico fundamental, mientras que el cursor 2 se encuentra en el quinto armónico y al mover
los cursores se puede comprobar que los demás armónicos que aparecen son los armónicos
impares que van decreciendo lo cual concuerda con el espectro teórico de una señal cuadrada.
58
En la Figura 23 se observa el código de línea polar con la misma secuencia utilizada
anteriormente y en la Figura 24 su respectivo espectro de frecuencia.
Figura 23. Código de línea polar sin retorno a cero.
Figura 24. FFT de código de línea sin retorno a cero.
Si se realiza una comparación entre la Figura 22 y la Figura 24 se observa que la posición de los
armónicos se conserva, pero potencia varia como muestran los cursores 1 y2, se utiliza mayor
potencia en el código de línea polar que en el on-off lo cual va de acorde a la teoría.
59
En la Figura 25 y la Figura 26 se tiene el código de línea polar con retorno a cero, siguiendo la
misma secuencia de los casos anteriores. Como se puede observar al comparar la Figura 25 y la
Figura 23 el tiempo del pulso se reduce a la mitad como se espera para este tipo de códigos.
Figura 25. Código de línea polar con retorno a cero.
Figura 26. FFT del código de línea polar retorno a cero.
60
En el espectro de frecuencia conserva la forma de los anteriores espectros, excepto que en este
código aparecen las armónicas pares con una potencia mucho menor ya que se varía entre
señales periódicas cuadradas con pulsos positivos y negativos.
La Figura 27 y la Figura 28 corresponden a las de un código bipolar sin retorno a cero con la
misma secuencia de los casos anteriores.
Figura 27. Código de línea bipolar no retorno a cero.
El espectro de la Figura 28 nos muestra que el armónico fundamental se corre de posición, pero
no se debe a un cambio en el tiempo de bit, sino al cambio en el periodo de la señal debido a
que se tiene una alternación entre el pulso positivo y negativo para la representación del 1.
Figura 28. FFT de código de línea con no retorno a cero.
61
Las siguientes figuras hacen referencia a un código de línea bipolar con retorno a cero. Y como
se logra observar en la Figura 29 la duración de los pulsos se hace la mitad con respecto a los de
la Figura 27 lo cual se espera de este tipo de modulación.
Figura 29. Código de línea bipolar con retorno a cero.
De la Figura 30 se logra observar que la potencia del armónico fundamental es menor que la
apreciada en la Figura 28, aunque hacen aparición los armónicos pares con una potencia
relativamente despreciable.
Figura 30. FFT del código de línea bipolar con retorno a cero.
62
La Figura 31 y la Figura 32 corresponden a un código de línea Manchester y su FFT. En la
Figura 31 se logra observar un intervalo de dos „1‟ seguidos para apreciar el cambio a metió
tiempo de bit especifico que se presenta en este tipo de códigos.
Figura 31. Código de línea Manchester.
Figura 32. FFT del código de línea Manchester.
En la Figura 32 se logra apreciar que el espectro tiene muchos componentes de frecuencia que
se asimilan a una forma de onda sinc, pero el armónico fundamental está centrado en la
frecuencia que se espera. Como se logra apreciar desde la Figura 21 hasta la Figura 32 se tienen
varios ejemplos de los códigos de línea con señales cuadradas los cuales se les puede variar el
tiempo de bit entre 1ms, 0.5ms y 0.33ms y la secuencia de bits.
63
El programa puede cambiar la forma de onda entre una onda cuadrada, una onda sinc y una
onda coseno elevado. Para la forma de pulso sinc se pueden utilizar los códigos de línea on off
polar y bipolar. En las siguientes figuras se muestra las graficas cuando se cambia la forma de
pulso a una sinc. En la Figura 33 se muestra una sinc con sólo el lóbulo central, siguiendo una
secuencia de „1‟ y „0‟. Una de las características del programa es que permite escoger el número
de lóbulos de la sinc o el coseno elevado entre 1,3 y 6.
Figura 33. Código de línea polar con forma de pulso sinc.
En la Figura 34 se observa la FFT, donde se aprecia una disminución considerable en la
dispersión de la potencia y el ancho de banda de la señal en comparación a los códigos de línea
con forma rectangular, donde este espectro corresponde al espectro de una señal sinusoidal.
Figura 34. FFT Código de línea polar con forma de pulso sinc.
64
Las siguientes figuras corresponden a un código polar con una onda con forma coseno elevado
la cual tiene la variable roll off, que permite seleccionar entre 3 roll off diferentes 0.1, 0.5 y 0.7.
Para los resultados mostrados en la Figura 35 se seleccionó un roll off de 0.1 que sigue la
secuencia de 1 y 0 alternantes.
Figura 35. Código de línea polar con forma de pulso coseno elevado.
Al comparar el espectro de la Figura 36 con los espectros anteriores se puede ver que es menos
disperso en frecuencia y ocupa un ancho de banda menor a los espectros de los códigos de línea
con formas de pulso cuadradas, pero ocupa un mayor ancho de banda que el espectro del código
de línea con forma de pulso sinc.
Figura 36. FFT de código de línea polar con forma de pulso coseno elevado.
65
Este programa mediante la variable aleatoria también permite escoger entre la secuencia del
vector secuencias o un secuencia aleatoria, esto permitirá observar el comportamiento de la
señal a una entrada aleatorio y su comportamiento en frecuencia. En la Figura 37 y en la Figura
38 se presenta un código de línea polar sin retorno a cero con una secuencia aleatoria.
Figura 37. Código de línea bipolar con secuencia aleatoria
En la Figura 38 nos muestra que el armónico se encuentra en 500Hz donde se espera, además
con el cursor 2 se puede observar que los nulos se producen en los armónicos pares de la señal
lo cual es lo que se espera de este tipo de señales.
Figura 38.FFT de código de línea polar con secuencia aleatoria.
66
4.1.3 Módulo 3 El programa de esta módulo se centra en un modulador QAM que permite seleccionar entre
vario de los parámetros que se controlan desde el watch window como se muestra en la Figura
39 . Entre las variables que nos permite controlar esta ventana se encuentran: sel_qam el cual
permite seleccionar entre las modulaciones QAM 4, 8y 16, la variable onda permite cambiar la
forma del tren de impulsos entre una onda de forma cuadrada y un sinc, l_sinc la cual se puede
cambiar la cantidad de lóbulos que se desean en la modulación con la onda de forma sinc.
También está la variable frec_osc que nos permite seleccionar la frecuencia de oscilación de la
portadora y por último la variable fuente_sel nos permite seleccionar entre las diferentes
fuentes de las cuales puede venir la secuencia de bits, estas fuentes son: un vector con una
secuencia preestablecida, un scrambler o una secuencia aleatoria.
Figura 39. Ventana de control del progrma QAM
En la Figura 40 y la Figura 41 se ve una modulación QAM16 con un cuadribit 1111. Donde el
espectro de frecuencia concuerda con el espectro de una señal sinusoide.
Figura 40. Modulación QAM16 con tren de impulsos cuadrados con desfase de 0°.
67
Figura 41. FFT de la modulación QAM16 con tren de impulso cuadrada y desfase 0°.
La Figura 42 ilustra una modulación QAM16 con una secuencia que alterna entre los cuatribits
1111 y 0011, que se encuentran desfasados 180°, donde estos cambios se presentan cada tiempo
de símbolo.
Figura 42. Modulación QAM16 con tren de impulsos cuadrados con desfase de 180°.
68
Al comparar la Figura 41 y la Figura 43 se aprecia que este último está más disperso en
frecuencia, pero conserva la forma de la FFT. Donde esta FFT tiene una forma de onda sinc.
Figura 43. FFT modulación QAM16 con tren de impulsos cuadrados con desfase de 180°.
La Figura 44 y Figura 45 son de la modulación QAM16 con un tren de impulsos cuadrado con
una secuencia que alterna entre 1111 y 1011, donde los cambios de fase de 90° se presentan
cada tiempo de símbolo.
Figura 44. Modulación QAM16 con tren de impulsos cuadrados con desfase 90°.
69
Cuando se observa la FFT de esta señal, Figura 45 y se compara a las de las anteriores se
observa que son similares en la forma básica y los nulos se presentan en las mismas
frecuencias.
Figura 45. FFT de la modulación QAM16 con tren de impulsos cuadrados con desfase de 90°.
En las siguientes figuras se observarán la modulación con un tren de impulsos con forma sinc.
En la Figura 46 se presenta una modulación con 0° de desfase, es decir, enviando el mismo
símbolo repetidamente y además solo se usará el lóbulo central de la sinc asigna el valor de 1 en
la variable l_sinc del programa.
Figura 46. Modulación QAM16 con tren de impulsos sinc de un solo lóbulo con fase 0°.
70
Figura 47. FFT de modulación QAM16 con tren de impulsos sinc de un solo lóbulo con fase 0°.
En la Figura 48 se mantiene la trama enviada pero se realiza un cambio en la variable l_sinc y se
le asigna el valor de 3, que quiere decir que la sinc estará compuesta del lóbulo central, dos
lóbulos posteriores y anteriores. La señal en tiempo no varía mucho al compara la Figura 46 y la
Figura 48 la forma, la frecuencia y la amplitud se mantienen.
Figura 48. Modulación QAM16 con tren de impulsos sinc con 5 lóbulos con fase 0°.
71
Al comparar la Figura 48 y la Figura 46 se ve que no son muy diferentes, son casi la misma
señal; caso contrario a sus espectros de frecuencia, que al ser comparados se ve que discrepan
dado que el espectro de la Figura 47 muestra una mayor dispersión en frecuencia que el espectro
en la Figura 49, lo cual es de espera por el criterio de cero ISI de Nyquist .
Figura 49. FFT de la modulación QAM16 con tren de impulsos sinc con 5 lóbulos con fase 0°.
En las siguientes figuras se presenta el desfase de 180° en tiempo y frecuencia con solo el
lóbulo central de la sinc. Como se observa en la Figura 50 se sigue la forma del lóbulo central
de la sinc.
Figura 50. Modulación QAM16 con tren de impulsos sinc con lóbulo central y desfase 180°.
72
Figura 51. FFT de la modulación QAM16 con tren de impulsos sinc con lóbulo central y desfase 180°.
Al comparar la Figura 43 y la Figura 51 se logra observar que la FFT de la modulación con sinc
presenta una mayor concentración en espectro de frecuencia, lo cual se traduce en un menor
ancho de banda para transmitir el mismo mensaje.
Figura 52. Modulación QAM16 con tren de impulsos de forma sinc con lóbulo central y desfase de 90°.
73
En la Figura 52 se logra observar que tiene una forma similar a la Figura 50 con cambios menos
abruptos, también se parece a la Figura 48 ya que mantiene una forma sinusoide constante.
Figura 53. FFT de la modulación QAM16 con tren de impulsos de forma sinc con lóbulo central y desfase de 90°.
Al comparar la Figura 53 y la Figura 45 se puede observar que la Figura 53 esta menos
distribuida en el espectro de frecuencia, lo que se traduce en un menor ancho de banda, ya que
las componentes en las frecuencias más altas son mucho más bajas en potencia. Cuando se
comparan los espectros de las señales con forma de pulso cuadrada y sinc se puede ver que en
todos los casos las señales con tren de impulso sinc siempre tienen un espectro más
concentrado y por lo tanto consumen un menor ancho de banda, es por este efecto es por el cual
se prefiere usar tren de impulsos de forma sinc.
Como se menciono anteriormente este programa también permite escoger entre diferentes
fuentes para la secuencia que se desea realizar mediante la variación del valor de la variable
fuente_sel. Se puede escoger entre seguir la secuencia establecida en el vector secuencia
asignado un valor de “1” a la variable, se puede escoger una secuencia aleatoria con un valor de
“3” o se puede escoger que la secuencia provenga del scrambler asignado un valor “2”.
Además también se puede modificar la frecuencia de la portadora mediante la variable frec_osc,
la frecuencia por defecto de la portadora es 2kHz la cual se puede variar a 4, 6 y 8kHz
permitiendo al programa generar una mayor gama de señales. En las Figura 54 y la Figura 55 se
ilustra una modulación QAM8 tanto en tiempo como en frecuencia con las siguientes
características una frecuencia del oscilador loca de 4kHz y con scrambler.
74
Figura 54. Modulación QAM8 con scrambler.
Se puede apreciar que la FFT en la Figura 55 sigue una forma sinc con el armónico
fundamental ubicado en 4kHz y los nulos se ubican a 1kHz de los armónicos con más potencia
los cual es de esperarse dado que esa es la frecuencia de símbolo.
Figura 55. FFT modulación QAM8 con scrambler.
75
4.2 Evaluación de los Módulos
La evaluación de los módulos se realizó mediante una prueba piloto con una muestra de los
estudiantes de fundamentos de comunicación que correspondió a 22 estudiantes, los cuales
desarrollaron los módulos y los evaluaron mediante una encuesta para cada módulo y una
encuesta general, cuya intención es dar un noción de la percepción de los módulos por parte de
los estudiantes.
La encuesta tiene tres tipos de pregunta, el primer tipo de preguntas son sobre el formato del
módulo que buscan evaluar la estructura utilizada en estos. El segundo tipo de preguntas son
específicas de la metodología utilizada en el módulo, haciendo referencia a los espacios de
aprendizaje activo y el tercer tipo de pregunta se refiere a la percepción de las competencias
adquiridas a lo largo del desarrollo del módulo por parte de los estudiantes.
En la Figura 56 se muestra el resultado de las encuestas del módulo 1 respecto al formato de
este. Estas preguntas hacen referencia al estilo, los objetivos propuestos, el tiempo de desarrollo,
los contenidos del marco teórico y los procedimientos seguidos en el módulo. Se ve que el
55% de los estudiantes se encuentran totalmente de acuerdo con la presentación del módulo y
39% están de acuerdo con este, lo cual muestra que 94% de los estudiantes encuentra el formato
del módulo bastante bueno, aunque existe un pequeño porcentaje que considera que el formato
no es bastante bueno en especial con el tiempo sugerido para el desarrollo del modulo, para
mayor detalle sobre las encuestas y sus resultados ver anexo 5
Figura 56. Diagrama de torta formato modulo 1.
En la Figura 57 se presentan los resultados de las preguntas sobre la metodología utilizada en el
módulo, estas preguntas se centran en los espacios que generan los bloques de colores a lo largo
del módulo. Se puede ver que 91% de los estudiantes piensan que los bloques de colores
generan espacios de reflexión, trabajo cooperativo y la aplicación de conceptos. También se
puede ver que hay 9% de parcialmente de acuerdo lo muestra que algunos estudiantes piensan
que alguno de los espacios propuestos por los bloques de colores no alcanzan su objetivo
satisfactoriamente.
76
Figura 57. Diagrama de torta metodología módulo 1
De la Figura 58 se presentan los resultados de las encuestas referente a las competencias
adquiridas después de a ver realizado el módulo, en el caso del módulo 1 hacen referencia a
que los estudiantes puedan identificar las diferentes partes que componen la tarjeta de
desarrollo y sean capaces de utilizar el entorno de desarrollo para programar la tarjeta. Donde
se puede observar 68% de los estudiantes perciben que pueden realizar un programa en code
composer, pero a su vez se ve que hay un 3% de los estudiantes que percibe que no serian
capaces de implementar un programa. En general se ve que la percepción de los estudiantes es
positiva con respecto a las competencias adquiridas.
Figura 58. Diagrama de torta competencias modulo 1.
77
La encuesta del módulo 2 se dividió de igual manera que la encuesta del modulo 1, donde la
Figura 59 nos presenta los resultados obtenidos para el formato del modulo dos. Donde el 45%
de los estudiantes se encuentran totalmente de acuerdo con el formato del módulo y un 42% se
encuentra de acuerdo con el formato, mientras que solo un 2% se encuentra en desacuerdo, lo
que significa que el contenido del marco teórico, la presentación, los procedimientos y el tiempo
asignado al módulo son adecuados.
Figura 59. Diagrama de torta formato modulo 2.
Figura 60. Diagrama de torta metodología modulo 2.
78
En la Figura 60 se ven los resultados de la encuesta para el módulo 2 referentes a la metodología
propuesta, al igual que para el modulo 1 hace referencia a los espacios generados por los
bloques de colores. Donde se aprecia que 59% de los estudiantes está de acuerdo y un 33%
completamente de acuerdo que los bloques de colores generan espacios de reflexión, trabajo
cooperativo y aplicación de conceptos basados en el aprendizaje activo.
De la Figura 61 se observan los resultados obtenidos de las preguntas de competencia de la
encuesta para el módulo 2, las cuales hacen referencia a la noción de los estudiantes. Donde se
les plantea si son capaces de identificar algunos códigos de línea y los efectos del canal de
transmisión sobre estos. Se ve que el 100% de los alumnos se siente en la capacidad de
identificar los códigos de línea y los efectos que se ven sobre el canal después de haber
realizado el módulo
Figura 61. Diagrama de torta de las competencias modulo 2.
En las siguientes figuras se presentan los resultados de las encuestas para el módulo 3, los
cuales se dividen de igual manera que los módulos anteriores. En la Figura 62 se ve que el 50%
de los estudiantes esta de totalmente de acuerdo con el formato, mientras un 30% está de
acuerdo con el formato y un 20% está parcialmente de acuerdo. Estos resultados nos muestra
que la presentación, los objetivos, los tiempos asignados, el contenido del marco teórico y los
procedimientos a seguir son adecuados y pertinentes.
En forma general los resultados de las encuestas referentes al formato del módulo son positivos
con lo cual se afirma que la presentación es agradable, los objetivos son claros, los tiempos
asignados son suficientes para la realización de los módulos, el contenido del marco teórico son
suficientes para comprender los conceptos desarrollados y los procedimientos a seguir están
descritos de forma clara.
79
Figura 62. Diagrama de torta formato módulo 3.
Los resultados de la Figura 63 son los resultados de las preguntas de la encuesta general
referentes al formato de los módulos. Estos resultados coinciden con los resultados obtenidos de
las encuestas de cada modulo, donde se ve que un 50% de los estudiantes están completamente
de acuerdo con el formato de los módulos, mientras se ve que un 7% están parcialmente de
acuerdo y un 0% están en desacuerdo lo cual presenta que los módulos no tienen problemas
graves en respecto al formato.
Figura 63. Diagrama de torta de formato de los módulos.
En la Figura 64 se observa los resultados de la encuesta de del modulo 3 referentes a los bloques
de colores y si estos generan espacios de reflexión, trabajo cooperativo y aplicación de
conceptos. Se observa que en los módulos se generan estos espacios ya que el 60% de los
80
estudiantes contestaron que están de acuerdo y un 40% contestaron que están totalmente de
acuerdo, esto nos da 100% de los estudiantes que sintieron que se generaron estos espacios en el
desarrollo del módulo.
Figura 64. Diagrama de torta de la metodología del módulo 3.
La Figura 65 nos muestra los resultados de la encuesta general de las preguntas sobre la
metodología utilizada en los módulos, donde se logra ver que los bloques de colores generan los
espacios de reflexión, de trabajo cooperativo y aplicación de conceptos, esto se evidencia con un
30% de los estudiantes contestaron que están completamente de acuerdo y un 62% contestaron
que están de acuerdo. Además los resultados de las encuestas individuales coinciden con los
resultados obtenidos en la encuesta general.
Figura 65. Diagrama de torta de la metodología de los módulos.
81
Los resultados presentados en la Figura 66 son de las competencias que se pretende que los
estudiantes adquieran, en el caso de este módulo hace referencia a la modulación QAM a
reconocer sus características comportamiento en tiempo y frecuencia. Se puede ver que un 83%
de los estudiantes piensa que adquirió estas competencias correctamente, mientras que un 17%
de los estudiantes contestaron parcialmente de acuerdo lo que indica que no sienten que han
adquirido las competencias en su totalidad.
Figura 66. Diagrama de torta competencias del módulo 3.
La Figura 67 son los resultados de la encuesta general referente a la facilidad de los módulos
para que los alumnos participen de forma activan y la facilidad para la adquisición de
conocimientos. Al comparar los valores obtenidos en la encuesta general y las encuesta de cada
modulo se observa que la mayoría de los estudiantes siente que está adquiriendo las
competencias correspondientes a cada módulo.
Figura 67. Diagrama de torta competencia de los módulos.
82
5. CONCLUSIONES
En este proyecto se logró la implantación de diversos programas sobre los cuales se diseñaron
los módulos. Para el primer módulo se desarrollaron dos programas, siendo uno de estos
programas el manejo de los leds de la tarjeta mediante los dip switchos para ilustrar los pasos
necesarios para el desarrollo de un proyecto, el otro programa que se implementaron fue el
generador de funciones donde el objetivo principal de este es mostrar el manejo del codec de la
tarjeta. En el segundo módulo se implemento un programa generador de códigos de línea y para
el tercer módulo se desarrollo un programa de un modulador-demodulador QAM. Se
implementaron todos los programas propuestos en el proyecto con unas especificaciones que les
permiten tener flexibilidad a la hora de ser usados o reescritos, lo cual permite que a futuro sea
reutilizado sus códigos para proyectos posteriores o para su mejoramiento.
A la hora de programar la tarjeta las herramientas que presentaba el entorno de desarrollo
permitieron que las implementaciones de los programas resultaran de forma más sencilla, entre
estas herramientas se puede destacar la BSL la cual permite el control de los diferentes
elementos de la tarjeta de forma eficiente a través de las librerías que lo componen.
Uno de las ventajas de haber utilizado esta tarjeta en el desarrollo para la implementación de los
programas fue el codec que incorporaba ya que el manejo de este resulto de manera sencilla a
través de la BSL, pero a la vez esto imponía ciertas limitaciones, como el ajuste automática que
presentaba a la salida que prevenía de obtener en ciertas ocasiones un voltaje 0.
Otra herramienta importante que presenta el entorno de desarrollo es el debugger el cual nos
permite seguir los procesos del programa al interior de la tarjeta en tiempo real, pero a la vez
esto causa una ralentización en el procesador dado que también debe enviar datos al computador
mientras ejecuta el programa y otro efecto de usar el debugger es que causa que la tarjeta entre
en un estado inestable haciendo que se deba reiniciar la tarjeta o el programa.
Uno de los problemas que se presenta es que los códigos de los programas implementados no
son óptimos lo cual provoca que a veces los tiempos de ejecución de estos sean mayores a los
tiempos necesarios en la tarjeta para realizar ciertas operaciones, causado algunos retardos.
Estos retados no son significativos, pero evitan en alguno de los programas combinaciones de
algunas funciones ya que distorsiona las señales de salida de estos.
Como parte complementaria del proyecto se realizó una encuesta para la evaluación de los
módulos con el fin de evaluar la interacción y satisfacción del estudiante con las guías, los
resultados obtenidos nos permite tener una noción de los problemas que pueden presentar los
módulos y además se podría realizar un análisis del propio método de evaluación para
considerar qué mejoras se podrían implementar en la forma de evaluar los módulos. La muestra
a la que se aplico la encuesta es de una porción de la población objetivo de los módulos, para
tener mejores resultados de esta evaluación se requiere un abordar una mayor porción de la
población de estudiantes de forma que se puedan obtener mejores resultados de las
evaluaciones.
La evaluación de las encuesta arrojó un resultado positivo en los diferentes aspectos que se
pretendieron evaluar, permitiendo ver que el formato, la metodología y las competencias que se
pretenden los módulos son adecuadas y apropiadas para los cursos de fundamentos de
comunicación de la PUJ.
83
6. BIBLIOGRAFIA
[1] S.M.Si and A.M.Alvarez, DIGITAL SIGNAL PROCESSING FOR AUTOMODE
MÓDEM, IEEE Singapore ICCS/ISITA, 1992.
[2] http://servicios.laverdad.es/servicios/web/nocheteleco05/suscr/nec9.htm, Manuel García
Esquiva, Diario La Verdad. España.
[3] Tretter, Steven, Communication System Design Using DSP Algorithms with Laboratory
Experiments for the TMS320C6713DSK, Springer, New York 2008
[4] http://focus.ti.com/paramsearch/docs/parametricsearch.tsp?family=dsp§ionId=2&tab
Id=135&familyId=327¶mCriteria=no
[5] Lathi, B.P, Modern Digital and Analog Communication Systems, 3th
Edition, Oxford
University Press, New York, USA, 1998.
[6] Welch, T; Wright, C; Morrow, M. REAL-TIME DIGITAL SIGNAL PROCESSING
from Matlab to C with the TMS320C6X DSK. 2006. CRC Press.
[7] TMS320C6000 DSP/BIOS Application Programming Interface (API) Reference Guide.
Texas Instrument.
[8] http://www.upc.edu/eees/guia_disseny/guia-docent/aprendizaje_activo.pdf
[9] Goodhew, Peter, Teaching Engineering All you need to know about engineering
education but were afraid to ask, The Higher Education Academy, UK, 2010.
[10] http://www.cte.cornell.edu/resources/pdfs/Eisen%20Active%20Learning%20Handout%2
0March%202010.pdf
[11] Murmu, Manas; Application Of Digital Signal Processing On TMS320C6713 DSK,
2008, National Institute of Technology Rourkela, India.
[12] Pastor, R; Hernandez, R; Ros, S; Castro, M, Especificación Metodología de la
Implementación y Desarrollo de Entornos de Experimentación, IEEE-RITA, 2006.
[13] Fraile-Ardanuy, Jesús, Estudio del comportamiento de la maquinas asincrónica utilizando
MATLAB®/Simulink, IEEE-RITA, 2007.
[14] Díaz Barriga, F; Hernández, G; Estrategias docentes para un aprendizaje significativo, 2th,
Editorial Mc Graw-Hill, Méjico 2002.
[15] http://www.mineducacion.gov.co/1621/article-87727.html