UNIVERSIDAD DE MAGALLANES Programación de DSP a través

Transcripción

UNIVERSIDAD DE MAGALLANES Programación de DSP a través
UNIVERSIDAD DE MAGALLANES
FACULTAD DE INGENIERÍA
Departamento de Electricidad
Programación de DSP a través de Herramientas disponibles en
Matlab 7.0 / Simulink
TRABAJO DE TITULACIÓN PARA OPTAR AL TÍTULO DE INGENIERO EN ELECTRICIDAD MENCIÓN
ELECTRONICA INDUSTRIAL
Cristian Erardo Miranda Barrientos
Profesor guía: Rolando Aguilar Cárdenas
Punta Arenas, Chile
2011
P á g i n a | ii
P á g i n a | iii
Agradecimientos
Quiero expresar mis más sinceros agradecimientos a todas las personas
que colaboraron en el desarrollo de este trabajo de titulación.
También merece mención significativa el profesor Rolando Aguilar por su
apoyo para el desarrollo de este proyecto por su guía y ayuda.
Finalmente agradezco a mis familiares y amigos por su apoyo y
comprensión.
Página |v
Resumen
El presente trabajo de titulación presenta la programación de un
procesador digital de señales (DSP), a través del software Matlab / Simulink,
como una forma alternativa a la programación convencional de estos
dispositivos. El DSP seleccionado para el desarrollo del proyecto fue el
TMS320F28335 de la empresa Texas Instrument, y la tarjeta de desarrollo
XDS100 emulator. La programación del DSP se ejecuto con el subprograma de
Matlab / Simulink Real-Time Workshop encargado de la creación de código en
lenguaje C. Este programa crea un código ejecutable solamente en ambiente
Matlab, por lo tanto se hizo necesario modificar dicho código para que sea
ejecutable en el DSP que se está utilizando. Por esto se recurrió a otro
subprograma de Matlab denominado Embedded IDE Link. La particularidad de
este programa es lograr modificar el código para que sea ejecutable en
plataformas específicas, este programa tiene soporte para diferentes modelos
de procesadores de la empresa Texas Instrument y en específico del modelo
que se utilizó en el proyecto, se hizo de gran utilidad para el desarrollo de esta
herramienta de programación. Por último como se tiene un código ejecutable
para una plataforma de hardware específica, también se utilizó otra herramienta
de Matlab, el software Target Support Package el cual ofrece bloques que
simulan módulos y periféricos del procesador. Son de gran utilidad ya que
cuando se procede a la generación de código estos bloques automáticamente
se cargan todas las bibliotecas de funciones y archivos de cabecera necesarios
para la programación de estos.
P á g i n a | vi
Tabla de contenido
1.1
Introducción al trabajo de título..................................................................................... 2
1.2
Objetivos y alcances del trabajo de título.................................................................... 3
1.3
Estructura del trabajo de título. ..................................................................................... 4
2.1
Introducción...................................................................................................................... 6
2.2
Procesamiento digital de señales................................................................................. 7
2.3
Elementos básicos de un sistema de procesamiento digital.................................... 7
2.4
Conversión Análoga-Digital. .......................................................................................... 9
2.5
Conversión Digital-Análoga. .......................................................................................... 9
2.6
Procesador digital de señales ..................................................................................... 10
2.7
Introducción al DSP. ..................................................................................................... 11
2.8
Procesador digital de señal TMS320f28335............................................................. 13
2.8.1
Periféricos............................................................................................................... 14
3.1
Introducción.................................................................................................................... 16
3.2
Software de desarrollo y de aplicación. ..................................................................... 17
3.3
Matlab 7 versión 2010. ................................................................................................. 17
3.3.1
Simulink. ................................................................................................................. 19
3.3.1.1
Bibliotecas de Simulink. ............................................................................... 19
3.3.2
Toolbox Embedded IDE link. ............................................................................... 20
3.3.3
Toolbox Real Time Workshop Embedder Coder. ............................................ 20
3.3.4
Toolbox Target Support Package ....................................................................... 20
3.3.5
IDE Link incrustado (Embedded IDE link)......................................................... 21
3.3.5.1
Introducción Toolbox Embedded IDE link..................................................... 21
3.3.5.2
Conjunto de bloques disponibles en Embedded IDE Link. ........................ 23
3.3.5.3
Bloque TI CCS (Texas Instrument Code composer Studio). ..................... 23
3.3.5.3.1
Tipo de tarjeta (Board Type)........................................................................ 25
3.3.5.3.2
Procesador (Processor). .............................................................................. 25
3.3.5.3.3
Reloj CPU (CPU Clock)................................................................................ 25
3.3.5.3.4
Soporte tarjeta (Board Support).................................................................. 25
3.3.5.3.5
Obtener el IDE (Get from IDE). ................................................................... 26
3.3.5.4
Configuración de los periféricos.................................................................. 26
3.3.5.4.1
ADC Conversor análogo / digital. ............................................................... 26
P á g i n a | vii
3.3.5.4.1.1
ADCLKS...................................................................................................... 27
3.3.5.4.1.2
CPS. ............................................................................................................ 27
3.3.5.4.1.3
ACQ_PS. .................................................................................................... 27
3.3.5.4.1.4
OFFset. ....................................................................................................... 27
3.3.5.4.2
Módulo con controlador de área de red mejorada (eCAN)..................... 28
3.3.5.4.2.1
Prescalador tasa de baudios (Baud Rate Prescaler). ......................... 28
3.3.5.4.2.2
SAM............................................................................................................. 28
3.3.5.4.2.3
SBG ............................................................................................................. 29
3.3.5.4.2.4
SJW ............................................................................................................. 29
3.3.5.4.2.5
TSEG1 ........................................................................................................ 29
3.3.5.4.2.6
TSEG2 ........................................................................................................ 29
3.3.5.4.2.7
Asignación pin (Tx) ................................................................................... 29
3.3.5.4.2.8
Asignación pin (Rx) ................................................................................... 29
3.3.5.4.3
Módulo de captura mejorada (Enhanced Capture eCAP). ..................... 30
3.3.5.4.3.1
Asignación pin ECAP1. ............................................................................ 30
3.3.5.4.3.2
Asignación pin eCAP2.............................................................................. 30
3.3.5.4.3.3
Asignación pin eCAP3 eCAP4. ............................................................... 30
3.3.5.4.4
Modulación por ancho de pulso mejorada (ePWM)................................. 31
3.3.5.4.4.1
Asignación pin SYNCI. ............................................................................. 31
3.3.5.4.4.2
Asignación pin SYNCO. ........................................................................... 31
3.3.5.4.5
Circuito inter-integrado (I2C). ...................................................................... 32
3.3.5.4.5.1
Modo (Mode).............................................................................................. 32
3.3.5.4.5.2
Formato de direcciones (Addresing Format). ....................................... 32
3.3.5.4.5.3
Registro de dirección propia (Own address register). ......................... 33
3.3.5.4.5.4
Contador de bit (Bit count)....................................................................... 33
3.3.5.4.5.5
Módulo frecuencia de reloj (Module clock frecuency). ........................ 33
3.3.5.4.5.6
Módulo Prescalador de reloj (IPSC)....................................................... 33
3.3.5.4.5.7
Divisor de tiempo en baja del reloj patrón (Master clock low-time
divider).
...................................................................................................................... 34
3.3.5.4.5.8
Divisor de tiempo en alta del reloj patrón (Master clock high-time
divider).
...................................................................................................................... 34
3.3.5.4.5.9
Habilitación bucle de regreso (Enable loopback)................................. 34
3.3.5.4.6
Habilitación interrupción Tx (Enable Tx interrupt).................................... 34
P á g i n a | viii
3.3.5.4.6.1
Habilitación interrupción Rx (Enable Rx interrupt). .............................. 34
3.3.5.4.6.2
Habilitación interrupción de sistema (Enable system interrupt) ......... 34
3.3.5.4.7
Interfaz de comunicación serie (SCI)........................................................ 35
3.3.5.4.7.1
Tasa de baudios (Baud rate)................................................................... 35
3.3.5.4.7.2
Modo de bloqueo (Blocking mode)......................................................... 35
3.3.5.4.7.3
Longitud de carácter en bits (Character length bits)............................ 36
3.3.5.4.7.4
Modo de comunicación (Communication mode).................................. 36
3.3.5.4.7.5
Orden de los datos en bytes (Data byte order). ................................... 36
3.3.5.4.7.6
Cantidad de datos en transmisión (Data swap width). ........................ 36
3.3.5.4.7.7
Habilitación bucle de regreso (Enable Loopback). .............................. 37
3.3.5.4.7.8
Número de bit de parada (Number of stop bits). .................................. 37
3.3.5.4.7.9
Modo paridad (Parity mode). ................................................................... 37
3.3.5.4.8
Modo de suspensión..................................................................................... 38
3.3.5.4.8.1
Asignación de pines Rx (Pin assignment Rx)....................................... 38
3.3.5.4.8.2
Asignación de pines Rx (Pin assignment Tx). ...................................... 38
3.3.5.4.9
Interfaz de periféricos serie (SPI). .............................................................. 39
3.3.5.4.9.1
Factor de tasa de baudios (Baud rate factor). ...................................... 39
3.3.5.4.9.2
Fase de reloj (Clock phase)..................................................................... 39
3.3.5.4.9.3
Polaridad de reloj (Clock polarity)........................................................... 40
3.3.5.4.9.4
Modo de suspensión (Suspension mode). ............................................ 40
3.3.5.4.9.5
Bits de datos (Data bits)........................................................................... 40
3.3.5.4.9.6
Habilitación bucle de regreso (Enable Loopback). .............................. 40
3.3.5.4.9.7
Habilitación modo tres cables (Enable 3–wire mode). ........................ 40
3.3.5.4.9.8
Habilitación FIFO (Enable FIFO). ........................................................... 41
3.3.5.4.9.9
Nivel de interrupción FIFO Rx (FIFO interrupt level (Rx)). ................. 41
3.3.5.5
Nivel de interrupción FIFO Tx (FIFO interrupt level (Tx)). ...................... 41
3.2.5.5.1
Retardo de transmisión FIFO (FIFO transmit delay). .............................. 41
3.3.5.5.2
Modo................................................................................................................ 41
3.3.5.5.3
Asignación pin CLK....................................................................................... 41
3.3.5.5.4
Asignación pin SOMI. ................................................................................... 41
3.3.5.5.5
Asignación de pin STE (Pin de habilitación para transmisión en modo
esclavo). .......................................................................................................................... 42
3.3.5.5.6
Asignación pin SIMO. ................................................................................... 42
P á g i n a | ix
3.3.5.6.0
Codificador de cuadratura por ancho de pulso (eQEP). ......................... 43
3.3.5.6.1
Asignación pin EQEP1A. ............................................................................. 43
3.3.5.6.2
Asignación pin EQEP1B. ............................................................................. 43
3.3.5.6.3
Asignación pin EQEP1S. ............................................................................. 43
3.3.5.6.4
Asignación pin EQEP1I. ............................................................................... 43
3.3.5.7.0
Pines entrada salida de propósito general (GPIO). ................................. 44
3.3.5.7.1
Sync to SYSCLKOUT................................................................................... 44
3.3.5.7.2
Calificación usando 3 muestras (Qualification using 3 samples). ......... 45
3.3.5.7.3
Calificación usando 6 muestras (Qualification using 6 samples). ......... 45
3.3.5.7.4
Prescalador del periodo de calificación del muestreo (Qualification
sampling period prescaler). ............................................................................................. 45
3.3.5.8.0
Perro Guardián (Watchdog). ....................................................................... 47
3.3.5.8.1
Habilitación de Perro guardián (Enable Watchdog)................................. 47
3.3.5.8.2
Contador de señal de reloj........................................................................... 47
3.3.5.8.3
Periodo del timer en segundos. .................................................................. 48
3.3.5.8.4
Tiempo fuera de ejecución. ......................................................................... 48
3.3.5.9.0
Cargar a la memoria flash (Flash Loader)................................................. 49
3.3.5.9.1
Habilitación de programación memoria Flash. ......................................... 49
3.3.5.9.2
Detección sectores memoria Flash y borrado de archivos COFF......... 50
3.3.5.9.3
Borrado seleccionado de sectores. ............................................................ 50
3.3.5.9.4
Locación específica API............................................................................... 50
3.3.5.9.5
Ejecución. ....................................................................................................... 50
3.3.6.0.0
Acceso directo a memoria (DMA)............................................................... 51
3.3.6.0.1
Habilitación canal DMA. ............................................................................... 51
3.3.6.0.2
Tamaño de dato. ........................................................................................... 51
3.3.6.0.3
Fuente de interrupción.................................................................................. 52
3.3.6.0.4
External pin (GPIO)....................................................................................... 52
3.3.6.0.5
Generate interrupt. ........................................................................................ 52
3.3.6.0.6
Tamaño (Size). .............................................................................................. 53
3.3.6.0.6.1
Ráfaga (Burst)............................................................................................ 53
3.3.6.0.6.2
Transferencia (Transfer). ......................................................................... 53
3.3.6.0.6.3
Envoltura SRC (SRC wrap). .................................................................... 53
3.3.6.0.6.4
Envoltura DST (DST wrap). ..................................................................... 53
Página |x
3.3.6.0.7
Fuente (Source)............................................................................................. 54
3.3.6.0.8
Destino (Destination). ................................................................................... 55
3.3.6.0.9
Modo (Mode)................................................................................................. 56
3.3.6.0.9.1
Modo de habilitación de un disparo (Enable one shot mode)............ 56
3.3.6.0.9.2
Habilitación Sync (Sync enable). ............................................................ 56
3.3.6.0.9.3
Habilitación modo continuo (Enable continuous mode)...................... 57
3.3.6.0.9.4
Habilitación modo DST Sync (Enable DST Sync mode). ................... 57
3.3.6.0.9.5
Configurar canal 1 para prioridad alta (Set channel 1 to highest
priority).
...................................................................................................................... 57
3.3.6.0.9.6
Habilitación de interrupción de rebalse (Enable overflow interrupt).. 57
3.3.7.0.0
3.3.7
PLL. ................................................................................................................. 59
REAL TIME WORKSHOP.................................................................................... 61
3.3.7.1
Introducción al Real-Time Workshop......................................................... 61
3.3.7.2
Capacidades del Real Time Workshop. .................................................... 62
3.3.7.3
Descripción del procedimiento realizado por el software para la
generación de código y su posterior ejecución en el hardware................................. 63
3.3.7.4
Código generado para DSP. ....................................................................... 64
3.3.7.4.1
Generación de código. ................................................................................. 65
3.3.7.4.2
Configuración parámetros para compilación y ejecución de código..... 65
3.3.7.4.3
Configuración parámetros SOLVER. ......................................................... 66
3.3.7.4.4
Configuración parámetros implementación de hardware. ...................... 66
3.3.7.4.5
Carga y Ejecución del Programa Objeto. .................................................. 70
3.3.8
TARGET SUPPORT PACKAGE......................................................................... 72
3.3.8.1
Introducción Toolbox Target Support Package ........................................ 72
3.3.8.2
Características principales........................................................................... 73
3.3.8.3
Opciones de configuración de Bloques de Target Support Package™
utilizados en el proyecto................................................................................................... 75
3.3.8.3.1
Bloque Conversor análogo/digital............................................................... 75
3.3.8.3.1.1
Parámetros de configuración Bloque ADC. .......................................... 76
3.3.8.3.1.2
Módulo A..................................................................................................... 76
3.3.8.3.1.3
Módulo B..................................................................................................... 76
3.3.8.3.1.4
Módulo A B................................................................................................. 76
3.3.8.3.1.5
Modo de conversión.................................................................................. 76
P á g i n a | xi
3.3.8.3.1.6
Comienzo de conversión.......................................................................... 76
3.3.8.3.1.7
Tiempo de muestreo................................................................................. 77
3.3.8.3.1.8
Tipo de datos. ............................................................................................ 77
3.3.8.3.1.9
Configuración canales de entrada Bloque ADC................................... 78
3.3.8.3.2.0
Número de conversiones (Number of conversions). ........................... 78
3.3.8.3.2.1
Conversion no............................................................................................ 78
3.3.8.3.2.2
Uso de múltiples puertos de salida (Use multiple output ports)......... 78
3.3.8.3.3
Bloque Modulador de ancho de pulso mejorado...................................... 79
3.3.8.3.3.1
Parámetros de configuración general del Bloque ePWM ................... 80
3.3.8.3.3.2
Configuración General.............................................................................. 80
3.3.8.3.3.3
Módulo (Module)........................................................................................ 80
3.3.8.3.3.4
Unidades del periodo del Timer (Timer period Units).......................... 80
3.3.8.3.3.5
Especificación del periodo del timer via (Specify timer period via). .. 80
3.3.8.3.3.6
Periodo fuente del Timer (Timer period source)................................... 80
3.3.8.3.3.7
Periodo del Timer (Timer period)............................................................ 80
3.3.8.3.3.8
Modo de conteo (Counting mode). ......................................................... 80
3.3.8.3.3.9
Divisor de Prescalador del reloj TB (TB clock prescaler divider)....... 81
3.3.8.3.4
Especificaciones módulo ePWMA ePWMB .............................................. 82
3.3.8.3.4.1
Unidades del registro del contador comparador A (CMPA). .............. 82
3.3.8.3.4.2
Vía específica del CMPA ......................................................................... 82
3.3.8.3.4.3
Valor CMPA (CMPA value)...................................................................... 82
3.3.8.3.5
Bloques de Interfaz serial de periféricos (SPI). ........................................ 83
3.3.8.3.5.1
Parámetros de configuración general del Bloque SPI......................... 84
3.3.8.3.5.2
Longitud de dato (Data length)................................................................ 84
3.3.8.3.5.3
Error en el estado de recepción de salida (Output receive error
status).
...................................................................................................................... 84
3.3.8.3.5.4
Habilitación de estado de bloqueo (Enable blocking status).............. 84
3.3.8.3.5.5
Error en el estado de salida de transmisión (Output transmit error
status).
...................................................................................................................... 85
3.3.8.3.5.6
Habilitación modo de bloqueo (Enable blocking mode)...................... 85
3.3.8.3.5.7
Interrupción después de dato transmitido (Post interrupt when data is
transmitted). ...................................................................................................................... 85
3.3.8.3.6
Bloque de Interfaz de comunicación serie (SCI)...................................... 86
P á g i n a | xii
3.3.8.3.6.1
SCI receive................................................................................................. 86
3.3.8.3.6.2
SPI Transmit............................................................................................... 86
3.3.8.3.6.3
Parámetros de configuración general del Bloques SCI....................... 87
3.3.8.3.6.4
Módulo SCI (SCI Module). ....................................................................... 87
3.3.8.3.6.5
Paquete adicional al comienzo (Additional Package header)............ 87
3.3.8.3.6.6
Paquete adicional al término (Additional Package terminator). ......... 87
3.3.8.3.6.7
Tipo de dato (Data Type). ........................................................................ 87
3.3.8.3.6.8
Longitud de dato (Data Length). ............................................................. 87
3.3.8.3.6.9
Salida inicial (Initial output)..................................................................... 88
3.3.8.3.7.0
Módulo SCI de transmisión (SCI Transmit Module). ........................... 88
3.3.8.3.7.1
Paquete adicional al comienzo (Additional Package header)............ 88
3.3.8.3.7.2
Paquete adicional al término (Additional Package terminator). ......... 88
3.3.8.3.7.3
Habilitación de interrupción FIFO (Enable FIFO interrupt). ................ 88
Bloque GPIO Puerta de entrada/salida de propósito general................ 89
3.3.8.3.8
3.3.8.3.8.1
Parámetros de configuración general del Bloques GPIO ................... 90
3.3.8.3.8.2
Grupo GPIO (GPIO Group). .................................................................... 90
3.3.8.3.8.3
Tiempo de muestreo (Sample time). ...................................................... 90
3.3.8.3.8.4
Tipo de dato (Data type). ......................................................................... 90
3.4
Code composer studio. ............................................................................................ 91
3.4.1
Características................................................................................................... 92
3.4.2
Visualización de entorno del programa CCSv3.3. ....................................... 94
4.1
Introducción................................................................................................................ 98
4.2
Módulo SCI (Interfaz de comunicación serie)...................................................... 99
4.3
Módulo PWM (Modulación por ancho de pulso). .............................................. 101
4.4
Módulo ADC (Conversor análogo-digital). ......................................................... 102
4.5
Módulo SPI (Interfaz serial para periféricos). .................................................... 103
4.6
Módulo GPIO (Puertas de entrada/salida de propósito general)..................... 107
5.1
Conclusiones. .......................................................................................................... 110
5.2
Referencias. ............................................................................................................. 111
P á g i n a | xiii
Índice de Tablas
TABLA 1:
Configuración Parametros Solver………………………………………65
TABLA 2:
Configuración Embedded Hardware (Implementación de Hardware)….65
TABLA 3:
Configuración Real Time Workshop……………………………………66
TABLA 4:
Configuración TI c2000 selección de plataforma……………………….67
TABLA 5:
Configuración TI c2000 generación de código…...……………………..67
Capítulo I
Introducción
Página |2
1.1
Introducción al trabajo de título.
En el siguiente trabajo de titulación se presenta la programación de un
procesador digital de señales (DSP). La elección de este dispositivo
básicamente se realizó por la potencialidad de uso en variados ámbitos de
producción, como son el control de máquinas, las telecomunicaciones, el
procesamiento de señales y la electrónica industrial. La programación del
dispositivo se realizó a través de Matlab / Simulink. Este software especializado
y de alto potencial para diferentes aplicaciones en el área de la ingeniería es
normalmente usado durante cursos de pregrado de la carrera.
El objetivo principal del proyecto consistió en programar un DSP
utilizando las herramientas de Matlab / Simulink, facilitando este proceso que
por lo general se realiza con un lenguaje de programación en C y un compilador
dedicado. El tiempo requerido y grado de complejidad para dominar estas
rutinas requiere de un usuario avanzado.
Sin embargo, la propuesta del presente trabajo, es utilizar la
programación por medio de diagramas de bloques disponibles en Matlab /
Simulink. Esta herramienta se hace muy interesante por el potencial que posee
de realizar y validar algunos conceptos desde una perspectiva diferente de los
DSPs, siempre recordando que el proyecto no pretende cambiar la forma de
programar DSPs sino desarrollar una herramienta alternativa a la programación
de estos.
El DSP que se utilizó fue el TMS320F28335 y la tarjeta de desarrollo
XDS100 emulator de la empresa Texas Instrument, por el gran potencial que
posee para el área de control, su operación en punto flotante, el hardware
disponible y su bajo costo.
Por los motivos anteriormente mencionados, la programación se realizó
con el software Matlab / Simulink y subprogramas tales como Real-Time
Workshop, Target Support Package y Embedded IDE Link.
Página |3
1.2
Objetivos y alcances del trabajo de título.
Desarrollar una herramienta de programación alternativa a la manera
convencional, a través de modelos realizados en Matlab / Simulink.
Creación de modelos en Simulink para ejecución en el DSP
TMS320F28335 de la empresa Texas Instrument.
Generación de código en lenguaje C de un modelo creado en Matlab /
Simulink, con el software Real-Time Workshop.
Modificación de código para su ejecución en Code Composer Studio.
Prueba de códigos generados por Matlab/Simulink y su ejecución en el
DSP TMS320F28335.
Página |4
1.3
Estructura del trabajo de título.
Esta constituida por seis capítulos organizados de la siguiente forma:
En el capítulo uno se entrega una introducción general.
En el capítulo dos se introduce sobre el procesamiento digital de señales,
los elementos básicos para este procedimiento y su importancia en los
procesos productivos.
En el capítulo tres se presenta el desarrollo del proyecto, se revisa los
programas utilizados para la generación de código que se ejecutan en el DSP,
se detallan los procedimientos de creación de modelos, la generación de
códigos, la modificación de código para un IDE específico y depuración de
modelos. Además se describe cada opción de configuración en el proceso de
creación del modelo en Simulink. Por último se indica configuraciones previas y
necesarias para generar código en una plataforma dada.
En el capítulo cuatro se entregan los resultados obtenidos en la
programación de los periféricos del procesador (módulos GPIO, ADC, SCI, SPI
y PWM) y se presenta una descripción de los modelos creados en Simulink y
cuál fue su desempeño en el hardware.
Página |5
Capítulo II
Introducción al procesamiento digital de
señales
Página |6
2.1
Introducción.
En el siguiente capítulo se describe el procesamiento digital de señales
su evolución en el tiempo, su importancia en los procesos productivos y los
elementos que se utilizan para la realización de este proceso. Se menciona en
forma básica las características que posee este proceso sus ventajas y
desventajas. En este contexto también se hace referencia al procesador digital
de señales (DSP) utilizado en este proyecto (DSP TMS320f28335). Se
describen sus principales características (hardware y software). Por último se
detallan las características que lo diferencian de otros DSP en el mercado.
Página |7
2.2
Procesamiento digital de señales.
El mundo contemporáneo está representado por el cambio constante de
los diversos procesos, es por eso que cada día se desarrollan máquinas
sofisticadas, que tratan en lo posible de optimizar tiempo, espacio, costo,
consumo de energía. Hoy en día es posible encontrar en el mercado distintos
proveedores con microprocesadores y DSP compitiendo en precio, rendimiento
para realizar un proceso específico. Su principal diferencia es su arquitectura,
que varía de acuerdo a las aplicaciones y necesidades, en la cual van a ser
requeridos.
Las técnicas de procesamiento digital, ahora no son tan complicadas de
implementar como ocurría años atrás. Hoy en día podemos realizar
aplicaciones tanto en el dominio digital como analógico, con un conjunto de
herramientas que este proyecto desea evaluar y explotar. La fabricación en
serie de estos productos y su masificación a nivel de aplicaciones, hacen que el
precio de los productos sea cada vez menor.
El mejor ejemplo de ello, es que la tarjeta de evaluación utilizada para
este proyecto bordea solamente US$100 al comprar solo una unidad.
2.3
Elementos básicos de un sistema de procesamiento digital.
En forma generalizada todo sistema ya sea simple o con mayor
complejidad se puede representar como se muestra en la figura 2.1.
Fig. 2.1. Diagrama de Bloques de un sistema típico a lazo abierto
Página |8
Al trabajar un proceso en el dominio digital, ya no tenemos los problemas
encontrados en los sistemas analógicos, debido a que estos no son afectados
por la temperatura, vibraciones mecánicas y variaciones de tensión que pueden
llegar a influir drásticamente en los resultados del sistema.
Con la utilización del procesamiento digital de señales se supera un gran
conjunto de obstáculos, alcanzándose:
o Aplicaciones más Variables.
o Aplicaciones más Eficientes.
Adicional a lo anterior el procesamiento digital de señales reduce:
o El número de Circuitos integrados en la Aplicación.
o Tiempo de ejecución del proyecto.
o Costo de desarrollo y hardware final.
o Consumo de Energía
El Procesamiento Digital de Señales es el conjunto de operaciones de
una(s) señal(es) en un hardware digital programado en lenguaje de alto como
de bajo nivel. En la práctica se refiere al procesamiento electrónico de señales
tales como sonido, radio y microondas usando técnicas matemáticas para
realizar transformaciones o extraer información. En el caso particular de los
DSP, son dispositivos altamente eficientes en el manejo de señales optimizadas
para procesamiento de señales en tiempo real.
Fig. 2.2. Tiempo de Muestreo/Espera/Procesamiento
Se dice que una aplicación está en tiempo real si el Tiempo de Espera ≥
0. Esta capacidad de procesamiento en tiempo real hace a los DSP ideales
para aplicaciones que no toleran retardos limitados.
Página |9
2.4
Conversión Análoga-Digital.
Las aplicaciones comunes de los DSP son en tiempo real, tales como el
sonido y ondas de radio que se originan en forma análoga. Una señal análoga
tiene la característica de ser continua en el tiempo. Los computadores digitales,
manejan señales de forma discontinua, una serie de números binarios, y esta
misma característica poseen los DSP. Para ello es necesaria la transformación
de las señales análogas en digitales.
Fig. 2.3. Visualización de la conversión ADC.
Esta transformación la realizan los Convertidores Analógicos Digitales
(ADC). Una vez terminada la etapa de conversión analógica-digital, los datos se
encuentran en el dominio digital en el DSP. Nótese que la limitante para que un
procesamiento digital ocurra, es la velocidad de conversión del ADC.
2.5
Conversión Digital-Análoga.
El conversor Digital-Análogo es un dispositivo electrónico que, a partir de
un dato digital genera una señal análoga. Conceptualmente la conversión DAC
se muestra en la figura 1.3.
Fig. 2.4. Visualización de la conversión DAC.
P á g i n a | 10
Al utilizar una señal análoga s(t) de conversión, por cada muestra de la
secuencia s[n], se produce a la salida, a intervalos de T segundos, una réplica
de la señal s(t) con amplitud proporcional al valor de la muestra.
2.6
Procesador digital de señales
Un DSP o Digital Signal Processor (Procesador Digital de Señales) es
un procesador especializado en el análisis y procesamiento de señales en
tiempo real. Se caracteriza por disponer de funciones especializadas en el
tratamiento de señales tales como etapas de filtro, generación PWM,
conversión, etc. Su hardware esta diseñado para realizar operaciones en punto
flotante, lo que permite realizar casi cualquier operación de los MIPS. Los
sistemas basados en DSP deben trabajar en tiempo real, capturando y
procesando información.
Dentro de las aplicaciones de interés con los DSP tenemos:
o Eliminar ecos en líneas de comunicación.
o Hacer imágenes más nítidas en órganos internos en los equipos
médicos.
o Cifrar conversaciones en teléfonos celulares para mantener privacidad.
o Analizar datos sísmicos para encontrar nuevas reservas de petróleo.
El DSP debe ser capaz de manejar la información durante las
transformaciones de análogo a digital. La capacidad del procesador es una
función de su ancho de datos (el número de bits manipulados) y el tipo de
aritmética que posee (punto fijo o flotante).
Cada tipo de procesador es ideal para un margen particular de
aplicaciones. Los DSP de 16 bits son ideales para sistemas de voz tales como
teléfonos ya que ellos trabajan con un estrecho rango de frecuencias de audio.
Para aplicaciones de procesamiento de imágenes, gráficos 3-D y simulaciones
científicas necesitan un rango dinámico mucho mayor y por lo tanto requieren
procesadores de punto flotante de 32 bits y ADC de 24 bits.
P á g i n a | 11
2.7
Introducción al DSP.
Un DSP es un Procesador de Señales Digitales, cuyo objetivo en
cualquier sistema es de dar el tratamiento digital adecuado de las señales que
ingresan a este dispositivo, dentro de sus características podemos mencionar:
o Procesamiento de señales a muy altas frecuencias: con esto se logra que
el DSP este orientado a reflejar un producto en tiempo real (real-time),
gracias a sus muy bajos tiempos de retardos.
o Reprogramación con solo actualizar el programa que reside en la
memoria del DSP, una aplicación que se le puede dar a esta
característica es la de actualizar tecnología.
o Diseño óptimo, con repeticiones o lazos comunes en algoritmos de
procesamiento de señal. El set de instrucciones de los DSP son
pequeños y óptimos para operaciones de procesamiento digital con un
simple ciclo realizamos multiplicaciones y acumulación.
o El DSP tiene modos de direccionamiento indirecto. Estos son
mecanismos de direccionamiento eficientes para los algoritmos de
procesamiento de señal.
o El DSP posee periféricos apropiados que brindan interfaces eficientes de
entrada y salida con otros dispositivos.
o En los DSP es posible acceder a memoria con una simple instrucción, en
otras palabras estos dispositivos tienen un relativo ancho de banda entre
su Unidad Central de Procesamiento (CPU) y memoria Flash, Sram etc.
Los procesadores digitales de señal DSP se clasifican de acuerdo al
requerimiento y a la aplicación final. En nuestro caso se utiliza el DSP de la
empresa Texas Instrument, por lo que se hace una breve descripción de cada
familia de procesadores.
P á g i n a | 12
1) C2000 (C20x/24x/28x). Esta familia de procesadores es de muy bajo
costo y puede ser utilizado en sistemas de Control como por ejemplo:
 Control de Motores.
 Almacenamiento.
 Control de Sistemas Digitales.
2) C5000 (C54x/55x). La característica de esta familia es estar provista de
un
procesador
eficiente,
pues
proporciona
más
MIPS
(Mega
Instrucciones por Segundo) por Watt/Dólar/Medida. Dentro de las
aplicaciones podemos citar:
 Teléfonos Celulares.
 Reproductores de Audio.
 Cámaras Digitales.
 Modem, Telefonía y VoIP.
3) C6000 (C62x/64x/67x). Este dispositivo fue diseñado para un máximo
rendimiento, con una fácil programación (entorno de programación C,
Matlab, Code Composer Studio). Dentro de las aplicaciones podemos
mencionar:
 Multi-canalización y Multi-función.
 Estaciones base, para servicios inalámbricos.
 Procesamiento de Imágenes.
 Servidores Multi-media.
 Video.
El proyecto no está orientado a ninguna aplicación en particular como se
explicó. El proyecto apunta al desarrollo de una herramienta de programación
de cualquier procesador, pero como el hardware que se tuvo a disposición es
de la serie C2000 nos enfocaremos en dichos procesadores. Se espera que
independientemente que es uno de la más baja gama, el haber seleccionado un
dispositivo con procesamiento de punto flotante amplía y generaliza las
aplicaciones.
P á g i n a | 13
2.8
Procesador digital de señal TMS320f28335.
Este DSP es miembro de la familia C2000, utiliza aritmética de punto
flotante, tiene una velocidad de reloj de 150 MHz (6,67 ns), el núcleo funciona
con una tensión de 1.9 V/1.8 V, los dispositivos de entrada y salida funcionan a
3.3 V, la CPU funciona con 32 bits, la arquitectura del bus es Harvard, posee
una respuesta rápida al procesamiento de interrupciones, la programación del
microprocesador puede ser en lenguaje C o C++, contiene 6 canales
controladores DMA tiene 16-32 bits para interfaces externas, la memoria flash
es de 256Kx16, la SARAM 34Kx16 y memoria ROM 8Kx16 .
Fig. 2.5. Diagrama de Bloques DSP TMS320F2833x
P á g i n a | 14
2.8.1 Periféricos.
Los periféricos en un procesador típico F2833x en general incluyen:
o 18 salidas Moduladoras de ancho de pulso (PWM).
o 6 salidas HRPWM Modulación por ancho de pulso de alta resolución.
o 6 entradas Enhanced Capture ECAP (Modo de Captura mejorada).
o 2 Módulos codificadores de cuadratura mejorado (eQEP Enhanced
quadrature Encoder).
o 3 CPU Timers de 32 bits
o 3 Módulos SCI Transmisor receptor asíncrono universal (UART).
o 2 Módulo con controlador de área de red mejorada eCAN (Enhanced
controller area network).
o 2 Módulos McBSP Búfer multicanal de puerto serie.
o 1 Módulo SPI Interfaz de protocolo serie.
o 1 Bus circuito inter-integrado (
)
o Conversor análogo-digital ADC de 12 bits
o Pines de propósito general de entrada/salida (GPIO).
o PLL Fase de lazo cerrado (Phase locked-loop).
Fig. 2.6. Procesador TMS320F28335 con la tarjeta de desarrollo XDS100.
P á g i n a | 15
Capítulo III
Herramientas de desarrollo para generación
de código
P á g i n a | 16
3.1
Introducción.
En el siguiente capítulo se presenta la parte más importante del proyecto,
se describen todos los programas que se utilizaron para la generación de
código ejecutable en el DSP TMS320F28335, y se detallan las opciones de
configuración en cada proceso de la generación de código. En primera instancia
se hace referencia al software principal en el desarrollo de esta herramienta, el
denominado Matlab en su versión 2010 y también Simulink, sus características
y su importancia en la solución de problemas del ámbito de la ingeniería.
Además se describen los toolboxes utilizados para el desarrollo del proyecto,
como son Embedded IDE Link, Real-Time Workshop y Target Support Package.
El primer Toolbox o conjunto de funciones es el encargado de brindar la
integración del código que será generado para que pueda ser reconocido y
ejecutado en el ambiente de desarrollo integrado del DSP. En específico, en el
software Code Composer Studio brindado por Texas Instrument para la
programación de DSPs en lenguaje C, se describen la mayoría de sus opciones
de configuración y su participación en el proceso de programación del DSP. El
software Real-Time Workshop es el encargado de la generación de código a
partir de la interpretación de un modelo creado en el software Simulink. En el
capítulo se describen las capacidades del software, sus potencialidades y
limitaciones. Además se mencionan los procedimientos de configuración para
la creación de código para el DSP TMS320F28335. Finalmente se menciona el
Toolbox Target Support Package; este software ofrece bloques que simulan los
módulos del DSP, donde agregando solamente estos bloques al modelo se
cargarán automáticamente todos los archivos necesarios para la configuración
de estos, facilitando en gran medida la programación de los DSP.
P á g i n a | 17
3.2
Software de desarrollo y de aplicación.
Para la ejecución del proyecto se utilizaron varias herramientas de
software de desarrollo, como también software de aplicación, las mismas que
dada su potencia y flexibilidad son parte medular en la generación de código,
interacción entre hardware y software, comunicación entre diferentes software,
importación y exportación de información entre ellos. Dentro del software de
desarrollo se hizo uso de software muy potentes como lo son Matlab 7 versión
2010, Code Componer Studio versión 3.3 y la biblioteca especializada Simulink.
A continuación se entrega una pequeña introducción a las herramientas de
desarrollo empleadas.
3.3
Matlab 7 versión 2010.
Matlab es un lenguaje de muy alto rendimiento para cálculo matemático.
Este software integra en un solo programa varias herramientas entre las cuales
podemos citar: cálculos, visualización y programación en un ambiente fácil de
usar, donde los problemas y soluciones son expresadas en una notación
matemática.
Matlab se puede usar típicamente en:
o Matemática y computación.
o Desarrollo de algoritmos.
o Adquisición de datos.
o Modelación, simulación y desarrollo de prototipos
o Análisis de datos, exploración y visualización.
o Gráficos científicos y de ingeniería.
o Desarrollo de aplicaciones, incluyendo una interfaz gráfica de usuario.
o Y la más importante para el desarrollo de este proyecto, generación de
código ejecutable fuera del ambiente Matlab/Simulink.
Matlab es un sistema interactivo en donde el elemento básico de datos
es una matriz que no requiere ser dimensionada previamente. Esto permite
resolver varios problemas computacionales, especialmente aquellos que
involucran el uso de matrices y vectores además de aplicaciones de gran
complejidad.
P á g i n a | 18
El nombre Matlab proviene de Matrix Laboratory. Matlab ha evolucionado
a lo largo de los años con la ayuda de varios usuarios. En la industria, Matlab es
la herramienta escogida para la investigación de la alta productividad, desarrollo
y análisis.
Matlab provee una familia de aplicaciones específicas llamadas
toolboxes, que permiten aprender y aplicar tecnología especializada. Son una
extensa colección de funciones de Matlab (M-files) que extienden el ambiente
de Matlab para resolver problemas de alguna clase particular. Las áreas en las
cuales se emplean son: procesamiento de señales, sistemas de control, redes
neurales, simulación, etc. El entorno de Matlab consta de cinco partes
principales.
1. Ambiente de desarrollo: Este es un set de herramientas que ayudan a
utilizar las funciones y archivos de Matlab. Muchas de estas
herramientas son GUI (Interface de Usuario Gráfica).
2. Biblioteca de funciones matemáticas: Esta es una colección de
programas computacionales, los cuales van desde funciones como
suma, seno, coseno, aritmética compleja, hasta funciones más
sofisticadas como matriz inversa, funciones de Bessel, y transformadas
de Fourier.
3. El lenguaje Matlab: Lenguaje de alto nivel con instrucciones de control de
flujo, estructuras de datos, y programación orientada a objetos.
4. Gráficos: Matlab tiene facilidades para la visualización de vectores y
matrices como gráficos para observar el comportamiento de los mismos.
5. Aplicación de Interfaz de Programas de Matlab (API): Permite escribir
programas en lenguaje C y Fortran los cuales pueden interactuar con
Matlab.
El uso de Matlab en el desarrollo de este proyecto es esencial y
totalmente necesario ya que es el encargado de interpretar un modelo en un
lenguaje de bloques y ser transformado en un código que posteriormente va
ser ejecutado en otro ambiente diferente a Matlab. Todo este proceso se puede
llevar a cabo gracias a Matlab y Simulink.
P á g i n a | 19
3.3.1 Simulink.
Simulink es un software que se utiliza para modelar, simular y analizar
sistemas dinámicos. Simulink soporta sistemas que son lineales y no lineales,
modelados en tiempo continuo, discreto o un híbrido de ambos. Dichos
sistemas pueden ser de
diferentes etapas y pueden ser muestreadas a
diferentes tasas. Para la simulación, Simulink provee una interfaz gráfica para la
construcción de modelos como diagramas de bloques, para lo cual se usan
operaciones de clic y arrastre del mouse. Con esta interfaz, se pueden construir
modelos como si fuera con un lápiz y papel. Simulink ofrece una extensiva
librería de componentes lineales y no lineales, conectores, también se pueden
personalizar y crear bloques propios de acuerdo a la función que se requiera
por parte del programador. Luego de definir el modelo, se puede proceder a
simularlo, y los resultados de la simulación pueden ser colocados en el
escritorio de Matlab para su posterior visualización y procesamiento. Al enlazar
Simulink con Real-Time Workshop, otra herramienta de Matlab, se puede
transferir código al compilador CCS (Code Composer Studio) y posteriormente
desde este transferirlo al DSP.
3.3.1.1
Bibliotecas de Simulink.
La principal característica de Simulink es la de condensar una gran
cantidad de bibliotecas en las llamadas cajas de herramientas (toolboxes), las
cuales a su vez despliegan los diferentes bloques que se utilizan. A
continuación se enumeran algunas de las bibliotecas más utilizadas en este
proyecto.
o IDE link incrustado (Embedded IDE link).
o Taller en tiempo real (Real Time Workshop).
o Taller en tiempo real con código incrustado (Real Time Workshop
Embedder Coder).
o Paquete para el soporte de tarjetas (Target Support Package).
P á g i n a | 20
3.3.2 Toolbox Embedded IDE link.
Este conjunto de herramientas (Toolbox), es el encargado de establecer
la comunicación entre Simulink y el procesador que se encuentra montado
sobre una tarjeta de desarrollo. Se debe destacar que para trabajar con las
tarjetas de desarrollo eZDSP el software (Matlab/Simulink) posee una biblioteca
dedicada a este tipo de tarjeta con bloque diseñados exclusivamente para
interactuar con dicho hardware. Como en el proyecto se utilizó una tarjeta de
desarrollo de bajo costo, XDS100 emulator, se utilizó el Embedded IDE link que
contiene un bloque llamado Custom Board (Tarjeta personalizada) que permite
configurar una tarjeta según los requerimiento del usuario.
3.3.3 Toolbox Real Time Workshop Embedder Coder.
Este conjunto de herramientas (Toolbox) o software debido a su gran
utilidad y capacidad es de gran potencial para poder migrar las funciones
propias de Matlab a otros programas o hardware. La principal función del
programa es la generación de código de modelos de Simulink y programas
escritos en Matlab. En el proyecto es el encargado de interpretar y generar
códigos en lenguaje de programación C, para posteriormente ser cargado al
Code Composer Studio y por consecuencia en el Procesador Digital de
Señales, objetivo principal de este proyecto.
3.3.4 Toolbox Target Support Package
Es un conjunto de herramientas que contiene los módulos más
importantes del procesador utilizados para programarlo desde Matlab &
Simulink. Estos bloques que posee el Toolbox están creados exclusivamente
para interactuar con el procesador de la familia c280x/c28x3x. Por ejemplo un
bloque está configurado para comunicarse directamente con el conversor A/D,
tiene los registros que utiliza dicho periférico y tiene las opciones de
configuración necesarias para modificarlos según la necesidad del usuario.
Fig 3.1. Bloques disponibles en el Target Support Package.
P á g i n a | 21
3.3.5 IDE Link incrustado (Embedded IDE link).
3.3.5.1
Introducción Toolbox Embedded IDE link.
Embedded IDE Link permite comunicar Matlab y Simulink con entornos
integrados de desarrollo de software (IDE). Embedded IDE Link permite
generar, construir, probar y optimizar código incrustado para prototipos
específicos. Automatiza la depuración, la generación de proyectos y verificación
de código que se ejecuta en un procesador incrustado o en el simulador de
instrucciones proporcionadas por el entorno de desarrollo integrado (IDE). Se
puede reutilizar el código de Matlab o Simulink como banco de pruebas para el
procesador. También se puede utilizar en conjunto el Embedded IDE Link con
Real-Time Workshop y Real-Time Workshop Embedded Coder para generar
proyectos que se ejecuten automáticamente en el IDE del procesador en el cual
se está trabajando. El código creado no solo incluye el código generado en C,
sino también el software incrustado necesario para inicializar, programar y
administrar la ejecución del código en el procesador en tiempo real. Se puede
utilizar Matlab para analizar y depurar el código generado, además se ejecuta
en el procesador incrustado o en un simulador de sistema. Con esto se puede
visualizar los resultados de la ejecución a través del uso de gráficos de Matlab.
Otra ventaja del uso del Embedded IDE Link es que puede rápidamente probar
prototipos de sus diseños, con todos los procesadores compatibles.
Fig. 3.2. Diagrama de Bloques para indicar procesos en la generación de código
especializado
P á g i n a | 22
En este capítulo se presentará una descripción del Toolbox Embedded
IDE link encargado de crear el vinculo entre el código generado por REAL TIME
WORKSHOP, el software que se encarga de interpretar el modelo creado en
Simulink y generar posteriormente el código en lenguaje C o C++. En esta parte
del proceso el Toolbox Embedded IDE link cumple la función de homogeneizar
el código en C y depurarlo para que pueda ser cargado, interpretado y
ejecutado por el Code Componer Studio (IDE) y por consecuencia por los
registros del procesador de Texas Instruments.
Los IDE de los procesadores que soporta el software son los siguientes:
o Altium Tasking
o Analog Devices Visual DSP++
o Eclipse IDE
o Green Hills Multi
o Texas Instruments Code Composer Studio
Fig. 3.3. IDE s soportados por Embedded IDE Link
Como en el proyecto se utilizó el procesador de la empresa Texas
Instruments en específico el de la familia DELFINO de la serie C2000
TMS320F28335, utilizamos el IDE TI CCS como se muestra en la figura 1.8.
Con este simple bloque se crea la comunicación, el vínculo entre el procesador
y el software, en este caso Simulink.
P á g i n a | 23
3.3.5.2
Conjunto de bloques disponibles en Embedded IDE Link.
Fig.3.4. Herramientas disponibles en Embedded IDE Link
3.3.5.3
Bloque TI CCS (Texas Instrument Code composer Studio).
Fig. 3.5. Bloque que simula el procesador con periféricos y registros.
P á g i n a | 24
Este bloque es el núcleo de la creación de código ejecutable en un DSP
de la empresa Texas Instrument, especificamente en él se puede configurar
hardware, desde habilitar GPIO como entrada o salida hasta cargar código en la
memoria Flash del procesador. Por tal motivo su importancia es esencial en el
software Embedded IDE Link debido a que se basa en gran medida en este
simple bloque.
A continuación se presenta una descripción detallada de las opciones de
configuración del bloque tarjeta personalizada (custom board) disponible en el
software Embedded IDE Link de Matlab/Simulink.
Fig. 3.6. Ventana de configuración principal del bloque tarjeta personalizada
(custom board).
P á g i n a | 25
3.3.5.3.1
Tipo de tarjeta (Board Type).
En esta opción podemos elegir cualquier tarjeta que posea un DSP
disponible en las opciones del programa. El modelo de la tarjeta de desarrollo
puede ser cualquiera. Esto se menciona por experiencia propia, debido a que al
comienzo del proyecto era una incógnita si el software era capaz de generar
código coherente a pesar de la tarjeta en la cual estaba montado el procesador.
Por supuesto que existen limitaciones en algunas funciones.
3.3.5.3.2
Procesador (Processor).
En esta sección el usuario tiene la opción de seleccionar el tipo de
procesador a utilizar en la lista que se despliega. El procesador que selecciona
determina el contenido y configuración de opciones de la memoria y registro
que van a ser creados por el código generado por el Real-time workshop y
acondicionado por el Embedded IDE Link.
3.3.5.3.3
Reloj CPU (CPU Clock).
En esta opción de configuración se ingresa la frecuencia con la que
opera el oscilador del procesador seleccionado, en nuestro caso se ingresa 150
Mhz.
3.3.5.3.4
o
Soporte tarjeta (Board Support).
Source files — En esta opción se agregarán las rutas donde estén los
códigos fuentes esenciales para el microprocesador.
o
Include paths — En esta opción se agregan las rutas donde estén los
archivos de cabecera que ofrece el software en este caso Matlab.
o
Libraries — Biblioteca básicas para la programación del microprocesador
cuando se establezca la comunicación entre el hardware y el software el
programa cargará automáticamente dichas Biblioteca ya que forman
parte fundamental para que el código pueda ser ejecutado.
o
Initialize functions — Opción especial, aquí se puede agregar funciones
específicas que bien pueden ser creadas por el usuario o ser cargadas
de otro proyecto (por defecto esta opción no tiene nada).
o
Terminate functions — En esta opción se ingresa funciones que se
ejecutarán cuando el código principal haya sido cargado.
P á g i n a | 26
3.3.5.3.5
Obtener el IDE (Get from IDE).
Esta función importa los datos del DSP y la tarjeta de desarrollo a la cual
está montado, básicamente crea un vínculo entre Matlab / Simulink, Code
Componer Studio y Embedded IDE link. Al utilizar esta función se nos mostrará
el nombre de la tarjeta y el nombre del procesador, para corroborar el correcto
reconocimiento del hardware podemos visualizar en el propio CCS si son
similares. Cabe mencionar que el reconocimiento del hardware no se efectuará
jamás si el IDE (Code composer, Eclipse IDE, etc) con el cual se programan los
procesadores no tiene soporte en el software (Matlab/Simulink).
3.3.5.4
Configuración de los periféricos
Peripherals Pane / Pestaña de periféricos el software Embedded IDE
Link ofrece las opciones de configuración básica de cada periférico o módulo, a
continuación se muestra cuales son estas opciones.
3.3.5.4.1
ADC Conversor análogo / digital.
Fig. 3.7. Opciones de configuración módulo ADC.
P á g i n a | 27
Las opciones de configuración del ADC son las siguientes:
3.3.5.4.1.1
ADCLKS.
Variable que no tiene realmente un efecto directo sobre la velocidad de
reloj del nucleo del ADC. Sirve para determinar el ancho del periodo de
muestreo o adquisición. Cuanto mayor sea el valor ingresado en la opción de
configuración, mayor es el período de muestreo. El valor por defecto es 4.
3.3.5.4.1.2
CPS.
Esta opción de configuración permite modificar la variable HSPCLK (High
speed peripheral clock) los valores permitidos deben tener como máximo 4 bits.
3.3.5.4.1.3
ACQ_PS.
Esta opción de configuración permite dividir la variable HSPCLK por
el valor ingresado en la opción ADCLKPS, por ejemplo si se configura la opción
CPS en 1, el valor por defecto, divide el resultado por 2.
3.3.5.4.1.4
Este
OFFset.
parámetro
de
la
familia
de ADC 280X soporta corrección
de desplazamiento a través de un valor de 9-bit que se agrega o resta antes de
los resultados disponibles en los registros del ADC. El tiempo para obtener
resultados no se ve afectado. El valor predeterminado es 0.
Fig. 3.8. Variables dentro del módulo ADC.
P á g i n a | 28
3.3.5.4.2
Módulo con controlador de área de red mejorada (eCAN).
Fig. 3.9. Opciones de configuración del eCAN con el bloque tarjeta preferente.
3.3.5.4.2.1
Prescalador tasa de baudios (Baud Rate Prescaler).
En esta opción elegimos el valor en escala de la velocidad de bits. Los
valores válidos son de 1 a 256.
3.3.5.4.2.2
SAM
Esta opción de configuración permite establecer el número de muestras
que obtendrá el módulo eCAN para posteriormente determinar el nivel de bus
CAN para la transferencia de estos datos hacia el DSP. Existen dos opciones
disponibles la primera sample one time como su nombre lo indica toma, solo un
punto de muestreo y la segunda (sample three times), toma tres muestras,
donde realiza una selección propia de cuál es la muestra más real de las tres.
P á g i n a | 29
3.3.5.4.2.3
SBG
Establece la re-sincronización del mensaje gatillado. Las opciones son
Only_falling_edges y Both_falling_and_rising_edges.
3.3.5.4.2.4
SJW
Este parámetro establece el ancho de salto de sincronización, lo que
determina cuántas unidades de TQ se puede acortar o alargar al volver a
sincronizar. Si este parámetro se establece en True, el módulo eCAN va a
modo de bucle invertido, el modo de bucle invertido envía un "dummy",
reconoce el mensaje y envía de vuelta sin necesidad de un bit de
reconocimiento. El valor predeterminado es False.
3.3.5.4.2.5
TSEG1
Establece el valor de un segmento de tiempo, que, con TSEG2 y
prescala la velocidad de transmisión, determina la longitud de un bit en el bus
ECAN. Los valores válidos para TSEG1 son de 1 a 16.
3.3.5.4.2.6
TSEG2
Establece el valor de segmento de tiempo 2, que, con TSEG1 y prescaler
velocidad de transmisión, determina la longitud de un bit en el bus ECAN. Los
valores válidos para TSEG2 son de 1 a 8.
3.3.5.4.2.7
Asignación pin (Tx)
Asigna el pin CAN que se utilizará para transmisión por el módulo de
eCAN_B. Los valores posibles son GPIO10, GPIO13, GPIO17 y GPIO21.
3.3.5.4.2.8
Asignación pin (Rx)
Asigna el pin CAN que se utilizará para recepción por el módulo de
eCAN_B. Los valores posibles son GPIO8, GPIO12, GPIO16 y GPIO20.
P á g i n a | 30
3.3.5.4.3
Módulo de captura mejorada (Enhanced Capture eCAP).
Fig. 3.10. Opciones de configuración del eCAP con el bloque tarjeta preferente.
3.3.5.4.3.1
Asignación pin ECAP1.
Seleccionamos el pin de la GPIO que se utilizará para esta función,
tenemos opción desde la GPIO5 a la GPIO24.
3.3.5.4.3.2
Asignación pin eCAP2.
Seleccionamos el pin de la GPIO que se utilizará para esta función,
tenemos opción desde la GPIO7 a la GPIO25.
3.3.5.4.3.3
Asignación pin eCAP3 eCAP4.
Seleccionamos el pin de la GPIO que se utilizará para esta función,
tenemos opciones desde la GPIO9 a la GPIO26 correspondiente a la eCAP3,
en eCAP4 tenemos las opciones desde la GPIO11 a la GPIO27. (Así con las
demás opciones de eCAP pin).
P á g i n a | 31
3.3.5.4.4
Modulación por ancho de pulso mejorada (ePWM).
Fig. 3.11. Opciones de configuración del ePWM con el bloque tarjeta preferente.
3.3.5.4.4.1
Asignación pin SYNCI.
Asigna una puerta GPIO como entrada para una señal externa que será
utilizada como modo de sincronización para el ePWM. La opción por defecto no
tiene
nada
configurado,
los
pines
disponibles
para
esta
función
son GPIO6 y GPIO32.
3.3.5.4.4.2
Asignación pin SYNCO.
Asigna una puerta GPIO como salida para un dispositivo externo que
será utilizada como modo de sincronización para el ePWM. La opción por
defecto no tiene nada configurado, los pines disponibles para esta función
son GPIO16 y GPIO28.
P á g i n a | 32
3.3.5.4.5
Circuito inter-integrado (I2C).
Fig. 3.12. Opciones de configuración del I2C con el bloque custom board.
3.3.5.4.5.1
Modo (Mode).
Esta opción configura el módulo I2C para que opere en modalidad
master o slave. Si el módulo I2C está en modo maestro el funcionamiento es el
siguiente, se inicia la comunicación con los dispositivos esclavos mediante el
envío de una señal a la dirección del esclavo y principalmente estará como
prioridad la transferencia de datos desde o hacia el esclavo. Si el módulo I2C
está en modo esclavo el funcionamiento es el siguiente, el módulo
responde a las peticiones de comunicación del maestro.
3.3.5.4.5.2
Formato de direcciones (Addresing Format).
Si se utiliza el modo esclavo, esta opción permite determinar el formato
de dirección del maestro y configurar el módulo de I2C para interactuar
con este dispositivo:
o 7-bit de direccionamiento, el modo normal de direcciones.
o 10-Bit de direccionamiento, el modo de dirección ampliado.
P á g i n a | 33
3.3.5.4.5.3
Registro de dirección propia (Own address register).
Esta opción de configuración nos permite indicar la dirección para el
módulo I2C mientras este configurado en modo esclavo.
3.3.5.4.5.4
Contador de bit (Bit count).
Esta opción permite configurar el módulo I2C en modo esclavo, se puede
designar el número de bits que serán transmitidos por el módulo I2C, esta
opción de configuración nos permite modificar esta variable.
3.3.5.4.5.5
Módulo frecuencia de reloj (Module clock frecuency).
Esta opción permite configurar la frecuencia interna del módulo I2C.
3.3.5.4.5.6
Módulo Prescalador de reloj (IPSC).
Esta opción tiene la siguiente función, si está configurado el módulo I2C
en modo maestro, se puede configurar la frecuencia de clock del módulo por
valores entre 0-255.
La ecuación que rige esta función es la siguiente:
Module clock frequency=I2C input clock frequency/(Module clock prescaler+ 1)
Hay que mencionar que el módulo I2C requiere frecuencias que fluctúen
entre 7 MHZ y 12 MHZ. La variable input clock frecuency depende del DSP y el
valor del registro (PLLCR), PLL control register divider.
Fig. 3.13. Diagrama de operación del reloj del módulo I2C.
P á g i n a | 34
3.3.5.4.5.7
Divisor de tiempo en baja del reloj patrón (Master clock low-
time divider).
Cuando el módulo se configura en modo MASTER esta opción está
disponible, esta variable determinará la duración del estado en bajo (low state)
que tendrá el serial clock pin (SCL), en el bus del módulo I2C.
3.3.5.4.5.8
Divisor de tiempo en alta del reloj patrón (Master clock high-
time divider).
Cuando el módulo se configura en modo MASTER esta opción está
disponible, esta variable determinará la duración del estado en alto (high state)
que tendrá el serial clock pin (SCL), en el bus del módulo I2C.
3.3.5.4.5.9
Habilitación bucle de regreso (Enable loopback).
Cuando el módulo se configura en modo maestro, se puede habilitar o
deshabilitar el modo digital loopback, donde se habilitan los registros I2CDXR
para transmitir y el registro I2CDDR para recibir datos en forma interna en el
DSP sin interactuar con el exterior.
3.3.5.4.6
Habilitación interrupción Tx (Enable Tx interrupt).
Esta opción de configuración permite indicar al FIFO de transmisión
cuando se producirá una interrupción después de transmitir una cierta cantidad
de bytes las opciones pueden ser de 1 a 16. Esta opción corresponde al bit 5
del registro I2CFFTX (I2C TRANSMIT FIFO register) que a su vez corresponde
a la variable TXFFIENA del DSP.
3.3.5.4.6.1
Habilitación interrupción Rx (Enable Rx interrupt).
Esta opción de configuración permite indicar al FIFO de recepción
cuando se producirá una interrupción después de recibir una cierta cantidad de
bytes las opciones pueden ser de 1 a 16. Esta opción corresponde al bit 5 del
registro I2CFFRX (I2C RECEIVE FIFO register) que a su vez corresponde a la
variable RXFFIENA del DSP
3.3.5.4.6.2
Habilitación interrupción de sistema (Enable system interrupt)
Este parámetro de configuración muestra la opción de configurar los
requerimientos de interrupción del módulo I2C, accediendo directamente al
registro (I2CIER), del DSP.
P á g i n a | 35
3.3.5.4.7
Interfaz de comunicación serie (SCI).
Fig. 3.14. Opciones de configuración del SCI con el bloque Tarjeta preferente.
3.3.5.4.7.1
Tasa de baudios (Baud rate).
En esta opción se configura la tasa de bits que se van a trasmitir y recibir
por los datos. Tenemos las siguientes opciones 115200, 57600, 38400, 19200,
9600, 4800, 2400, 1200, 300 y 110.
3.3.5.4.7.2
Modo de bloqueo (Blocking mode).
Esta opción de configuración tiene dos opciones la primera TRUE, si se
selecciona, el sistema espera que existan datos disponibles para leer y
posteriormente envía un dato a la salida, si se selecciona la opción FALSE el
sistema de control de la FIFO entra en modo de sondeo, si existe un dato
presente lo lee inmediatamente y lo envía a su destino pero si no existe dato el
sistema sigue enviando a destino el último dato leído.
P á g i n a | 36
3.3.5.4.7.3
Longitud de carácter en bits (Character length bits).
Con esta opción podemos elegir la cantidad de bits que contendrá el dato
para ser transmitido o recibido.
3.3.5.4.7.4
Modo de comunicación (Communication mode).
Con este parámetro de configuración podemos seleccionar el modo Raw
Data o Protocol en donde si se selecciona la opción:
 Raw Data Mode
Enviamos un dato sin formato específico donde la transmisión comienza
cuando el proceso de envió esta completo sin importar si el otro
dispositivo está listo para recibir información.
 Protocol Mode
Cuando se selecciona esta opción tanto la transmisión como la recepción
entablan comunicación para coordinar envió de datos. Por esto cuando el
dispositivo de transmisión está listo, este envía una señal para indicarlo.
Lo mismo ocurre en el dispositivo de recepción este envía un indicador
de que está listo para la recepción de datos y una vez haya terminado el
proceso se envía una señal al DSP para informarlo.
3.3.5.4.7.5
Orden de los datos en bytes (Data byte order).
Este parámetro permite seleccionar el tipo de orden en la transmisión de
la información en Little Endian o Big Endian.
3.3.5.4.7.6
Cantidad de datos en transmisión (Data swap width).
Esta opción de configuración permite establecer la cantidad de datos que
van a ser transmitidos, existen dos opciones 8 bits o 16 bits.
P á g i n a | 37
3.3.5.4.7.7
Habilitación bucle de regreso (Enable Loopback).
Este parámetro de configuración nos permite ejecutar un test en el
mismo
dispositivo
con
propósito
de
diagnóstico
únicamente.
Cuando
habilitamos este parámetro internamente el DSP conecta el pin de transmisión
con el de recepción y se verifica la integridad de la información.
3.3.5.4.7.8
Número de bit de parada (Number of stop bits).
Este parámetro nos permite establecer el número de bits, vamos a
ingresar al dato como bits de parada, existen dos opciones 1 o 2 bits.
3.3.5.4.7.9
Modo paridad (Parity mode).
Este parámetro permite seleccionar el modo en el cual se van a
configurar los bits de paridad en el envió de datos, las opciones disponibles son
las siguientes None, Odd paridad, o Even paridad.
o Sin bit de parada (none)
Si se selecciona esta opción deshabilitamos el modo de paridad en los
datos.
o Odd parity (Paridad impar)
Si seleccionamos esta opción, y el número de 1 en el dato que va hacer
enviado es impar, el bit de paridad también será un 1 lógico.
o Even parity (Paridad par)
Si seleccionamos esta opción, y el número de 1 lógicos que posee el
dato que será enviado es par, el bit de paridad también será un 1 lógico.
P á g i n a | 38
3.3.5.4.8
Modo de suspensión.
Esta opción de configuración si es seleccionada permite depurar el
programa, cuando este se encuentra en un punto de interrupción, este modo
determina si se debe realizar la instrucción siguiente en el programa. Las
opciones disponibles son Hard Abort, Soft abort y Free run. Hard abort detiene
en forma inmediata el programa, Soft abort detiene el programa cuando se
termina el flujo de información en otras palabras cuando un dato es enviado y
recibido íntegramente y por último Free run continua funcionando sin considerar
el punto de interrupción.
3.3.5.4.8.1
Asignación de pines Rx (Pin assignment Rx).
Esta opción de configuración permite establecer el pin que va a ser
utilizado como SCI Receive (Pin de recepción de datos del módulo SCI). Las
opciones disponibles para este propósito son la GPIO 28 y GPIO 35.
3.3.5.4.8.2
Asignación de pines Rx (Pin assignment Tx).
Esta opción de configuración permite establecer el pin que va a ser
utilizado como SCI Transmit (Pin de transmisión de datos del módulo SCI). Las
opciones disponibles para este propósito son la GPIO 29 y GPIO 36.
P á g i n a | 39
3.3.5.4.9
Interfaz de periféricos serie (SPI).
Fig. 3.15. Opciones de configuración del SPI con el bloque tarjeta preferente.
3.3.5.4.9.1
Factor de tasa de baudios (Baud rate factor).
Esta opción de configuración permite configurar directamente el registro
(SPIBBR), del microprocesador, que está relacionado con la tasa de baudios de
transmisión.
3.3.5.4.9.2
Fase de reloj (Clock phase).
Esta opción de configuración permite establecer cómo será enviado la
señal de reloj para la sincronización entre dispositivo trasmisor y receptor. Las
opciones disponibles son No delay o Delay half cycle.
P á g i n a | 40
3.3.5.4.9.3
Polaridad de reloj (Clock polarity).
Esta opción de configuración nos permite establecer la polaridad de la
señal de reloj, si el dato va a ser sincronizado con un flanco de subida o bajada.
Las opciones disponibles son Rising Edge o Falling Edge.
3.3.5.4.9.4
Modo de suspensión (Suspension mode).
Esta opción de configuración si es seleccionada permite depurar el
programa. Cuando este se encuentra en un punto de interrupción, este modo
determina si se debe realizar la instrucción siguiente en el programa. Las
opciones disponibles son Hard Abort, Soft abort y Free run. Hard abort detiene
en forma inmediata el programa, Soft abort detiene el programa cuando se
termina el flujo de información en otras palabras cuando un dato es enviado y
recibido íntegramente y por último Free run continua funcionando sin considerar
el punto de interrupción.
3.3.5.4.9.5
Bits de datos (Data bits).
Esta opción de configuración permite establecer el tamaño de los datos a
transmitir. Las opciones son 1 a 16 bit por cada carácter. Por ejemplo, si se
selecciona 8, el máximo de datos que pueden ser transmitidos será 28-1. Si se
envían datos con mayor cantidad de bits se producirá desbordamiento en el
buffer.
3.3.5.4.9.6
Habilitación bucle de regreso (Enable Loopback).
Esta opción de configuración permite establecer el modo loopback para
realizar pruebas de auto-diagnóstico. Cuando esta opción está habilitada el pin
Tx (Transmisión) se conecta internamente con el pin Rx (Recepción) y se
transmiten datos para comprobar la integridad de los datos enviados.
3.3.5.4.9.7
Habilitación modo tres cables (Enable 3–wire mode).
Esta opción de configuración permite establecer la comunicación a través
del SPI con 3 pines, y no con los 4 pines que se utilizan normalmente, como
son SPISTE Chip select, SPICLK señal de reloj, SPISIMO slave input master
output y SPISOMI slave output master input.
P á g i n a | 41
3.3.5.4.9.8
Habilitación FIFO (Enable FIFO).
Esta opción de configuración permite establecer o habilitar el FIFO en
True o False.
3.3.5.4.9.9
Nivel de interrupción FIFO Rx (FIFO interrupt level (Rx)).
Esta opción de configuración permite configurar cuando se va a ejecutar
una interrupción después de una cantidad de veces en que el FIFO haya
recibido información. Opciones disponibles 1 a 16.
3.3.5.5
Nivel de interrupción FIFO Tx (FIFO interrupt level (Tx)).
Esta opción de configuración permite configurar cuando se va a ejecutar
una interrupción después de una cantidad de veces en que el FIFO haya
enviado información. Opciones disponibles 1 a 16.
3.2.5.5.1
Retardo de transmisión FIFO (FIFO transmit delay).
Esta opción de configuración permite establecer un retardo (delay), en el
FIFO cuando transmita información.
3.3.5.5.2
Modo
Esta opción de configuración permite establecer el modo en el cual va a
ser transmitidos los datos teniendo las siguientes opciones maestro o esclavo.
3.3.5.5.3
Asignación pin CLK.
Esta opción de configuración selecciona el pin de la GPIO que va a ser
utilizado para señal de clock (CLK), por defecto no viene ninguna opción pero
los pines disponibles son GPIO 14 y GPIO 26.
3.3.5.5.4
Asignación pin SOMI.
Esta opción de configuración selecciona el pin de la GPIO que va a ser
utilizado para señal de SOMI, por defecto no viene ninguna opción pero los
pines disponibles son GPIO 13 o GPIO 25.
P á g i n a | 42
3.3.5.5.5
Asignación de pin STE (Pin de habilitación para transmisión
en modo esclavo).
Esta opción de configuración permite seleccionar el pin de la GPIO que
va a ser utilizado para señal de STE, por defecto no viene ninguna opción pero
los pines disponibles son GPIO 15 y GPIO 27.
3.3.5.5.6
Asignación pin SIMO.
Esta opción de configuración permite seleccionar el pin de la GPIO que
va a ser utilizado para señal de SIMO, por defecto no viene ninguna opción pero
los pines disponibles son GPIO 12 o GPIO 24.
P á g i n a | 43
3.3.5.6.0
Codificador de cuadratura por ancho de pulso (eQEP).
Fig. 3.16. Ventana configuración módulo eQEP.
Este módulo del DSP tiene como principal función ser una interfaz directa
a través de un Encoder incremental ya sea lineal o rotatorio para obtener datos
de posición, dirección, y velocidad de una máquina rotatoria, comúnmente
utilizadas para efectuar movimientos precisos de alto rendimiento y sistemas de
control de posición.
3.3.5.6.1
Asignación pin EQEP1A.
Esta opción de configuración permite establecer la GPIO por la cual el
módulo EQEP1A va interactuar con el exterior. Las opciones disponibles son
GPIO20 o GPIO 50.
3.3.5.6.2
Asignación pin EQEP1B.
Esta opción de configuración permite establecer la GPIO por la cual el
módulo EQEP1B va interactuar con el exterior. Las opciones disponibles son
GPIO21 o GPIO 51.
3.3.5.6.3
Asignación pin EQEP1S.
Esta opción de configuración permite establecer la GPIO por la cual el
módulo EQEP1S va interactuar con el exterior. Las opciones disponibles son
GPIO22 o GPIO 52.
3.3.5.6.4
Asignación pin EQEP1I.
Esta opción de configuración permite establecer la GPIO por la cual el
módulo EQEP1I va interactuar con el exterior. Las opciones disponibles son
GPIO23 o GPIO 53.
P á g i n a | 44
3.3.5.7.0
Pines entrada salida de propósito general (GPIO).
Fig. 3.17. Ventana configuración módulos GPIO
3.3.5.7.1
Sync to SYSCLKOUT.
Esta opción de configuración permite establecer que la señales que van
a ser emitidas o recibidas por las GPIO, se puedan sincronizar con la señal de
reloj del sistema, el parámetro denominado SYSCLKOUT.
Fig. 3.18. Efecto del Sync to SYSCLKOUT.
P á g i n a | 45
3.3.5.7.2
Calificación usando 3 muestras
(Qualification using 3
samples).
Esta opción de configuración nos permite establecer que mínimo 3 ciclos
consecutivos del mismo valor de salida son necesarios para un cambio en la
GPIO.
Fig. 3.19. Efecto Qualification using 3 samples
3.3.5.7.3
Calificación usando 6 muestras
(Qualification using 6
samples).
Esta opción de configuración permite establecer que para que ocurra un
cambio en la señal de entrada o salida de la GPIO es necesario que se
registren seis ciclos consecutivos del mismo valor, por ejemplo para evitar emitir
señales que no sean correctas.
Fig. 3.20. Efecto Qualification using 6 samples
3.3.5.7.4
Prescalador
del
periodo
de
calificación
del
muestreo
(Qualification sampling period prescaler).
Esta opción de configuración permite establecer el periodo de muestreo
en la señal que es emitida o recibida por la GPIO, los valores de configuración
posible son de 0 a 255.La ecuación que rige esta frecuencia de muestreo es:
Sampling=SYSCLKOUT / (2*Prescaler)
Fig. 3.21. Qualification sampling period prescaler
(1)
P á g i n a | 46
Las GPIO disponibles son desde la 0 a la 63 cada GPIO tiene por defecto
asignado un pin de acuerdo a la disposiciones de hardware ejemplo GPIO 1
también corresponde al pin ECAP6. Sin embargo, las opciones mencionadas
anteriormente corresponden cuando las GPIOs se configuran como entrada o
salida sin especificar ningún módulo.
P á g i n a | 47
3.3.5.8.0
Perro Guardián (Watchdog).
Fig. 3.22. Ventana configuración Watchdog
3.3.5.8.1
Habilitación de Perro guardián (Enable Watchdog).
Esta opción de configuración permite habilitar el módulo Watchdog
Timer. Por software es necesario indicar al contador del timer que haga un reset
al valor por defecto. De lo contrario el Watchdog va a resetear el procesador
Además controla el bit 6 (WDDDIS) del registro Watchdog control register
(WDCR) y el bit 0 (WDOVERRIDE) del registro System and status register
(SCSR).
3.3.5.8.2
Contador de señal de reloj.
Esta opción de configuración permite establecer el periodo del Timer del
Watchdog relativo donde el valor se rige por la siguiente ecuación, OSCCLK /
512. Además este parámetro tiene corresponde a los bits 2-0 (WDPS) del
registro Watchdog Control Register (WDCR).
P á g i n a | 48
3.3.5.8.3
Periodo del timer en segundos.
Esta opción permite visualizar el period en segundos del Watchdog. Este
valor se actualiza automáticamente cuando se modifica el valor del parámetro
Counter Clock.
3.3.5.8.4
Tiempo fuera de ejecución.
Esta opción de configuración permite resetear el procesador o generar
una interrupción cuando el software falla al resetear el contador del Watchdog.
Si se selecciona la opción chip reset generamos una señal para que el
procesador se reinicialice y deshabilitamos la señal de interrupción del
Watchdog. Si seleccionamos la opción raise WD interrupt generamos una señal
de interrupción y deshabilitamos la señal de reiniciación del procesador. Esta
señal puede ser utilizada para dejar el dispositivo en modo IDLE o STANDBY
(Bajo Consumo). Este parámetro actúa directamente sobre el bit 1 (WDENINT)
del registro System control and status (SCSR).
Fig. 3.23. Módulo Watchdog (Perro guardián)
P á g i n a | 49
3.3.5.9.0
Cargar a la memoria flash (Flash Loader).
Fig. 3.24. Ventana configuración Flash Loader
3.3.5.9.1
Habilitación de programación memoria Flash.
Esta opción de configuración permite habilitar la memoria Flash del DSP,
cuando seleccionamos la opción Execute o Build el programa se cargará a la
memoria Flash. Una vez habilitada la opción de programación de la memoria
Flash podemos seleccionar las siguientes opciones. La opción erase borra la
información anterior, la opción program transfiere el programa creado
directamente a la memoria Flash y por último la opción Verify permite revisar la
información que tiene la memoria Flash.
P á g i n a | 50
3.3.5.9.2
Detección sectores memoria Flash y borrado de archivos
COFF.
Esta opción de configuración permite borrar todos los sectores de la
memoria Flash que fueron seleccionados por los archivos COFF
3.3.5.9.3
Borrado seleccionado de sectores.
Esta opción de configuración cuando se habilita borra todos los sectores
de la memoria Flash sin discriminar.
3.3.5.9.4
Locación específica API.
Esta opción permite ingresar la ruta en donde se encuentra el programa
TI Flash API, que es descargado e instalado en el computador donde se está
trabajando, proporcionado por Texas Instrument para poder utilizar la función de
programar la memoria Flash.
3.3.5.9.5
Ejecución.
Esta opción permite ejecutar o habilitar la programación de la memoria
Flash.
P á g i n a | 51
3.3.6.0.0
Acceso directo a memoria (DMA).
Fig. 3.25. Ventana configuración módulos DMA
3.3.6.0.1
Habilitación canal DMA.
Esta opción de configuración nos permite habilitar un canal específico
DMA. Si el modelo realizado en Simulink incluye un bloque ADC con el canal
DMA habilitado tenemos que deshabilitarlo para asegurar un correcto
funcionamiento del sistema.
3.3.6.0.2
Tamaño de dato.
Esta opción de configuración nos permite establecer el tamaño en bits de
los datos que van a ser transmitidos las opciones son 16 bits o 32 bits.
El DMA tiene disponible en su bus como máximo 32 bits para leer o escribir,
si la opción elegida es 32 bits se estará ocupando el 100% de la capacidad del
DMA.
P á g i n a | 52
Cuando habilitamos el servicio DMA McBSP y está configurado que el
tamaño de los datos es 16 bits, debemos considerar el siguiente modelo de
configuración.
o Size: Burst
o Source: Burst step
o Source: Transfer step
o Source: Wrap step
o Destination: Burst step
o Destination: Transfer step
o Destination: Wrap step
El parámetro Data size corresponde al bit 14 (DATASIZE) del registro MODE.
3.3.6.0.3
Fuente de interrupción.
Esta opción de configuración nos permite generar una interrupción
producto o generada de algún periférico del sistema y que esto provoque una
ruptura en un canal específico DMA.
Esta opción nos permite seleccionar las opciones XINT1, XINT2 o
XINT13 para configurar como una interrupción externa, los pines disponibles
para esta función son GPIO 0 al 31.Si seleccionamos la opción XINT3 o XINT7
los pines disponibles para tal objetivo son GPIO 32 al GPIO 63.
3.3.6.0.4
External pin (GPIO)
Esta opción de configuración esta disponible cuando configuramos la
opción Interrupt Source, como una interfaz externa desde el espacio XINT y
sirve para especificar el pin que va a ser utilizado como supervisor de donde se
genera la interrupción. Este parámetro corresponde a la variable GPIO XINTn
de los registros (GPIOXINTnSEL, GPIOXNMISEL).
3.3.6.0.5
Generate interrupt.
Esta opción de configuración permite habilitar el parámetro que genera
una interrupción del tipo PIE vía CPU, por el canal DMA cuando comience o
termine un proceso de transferencia de datos.
Esta opción de configuración corresponde al bit 15 (CHINTE) y al bit 15
(CHITMODE) del registro MODE del procesador.
P á g i n a | 53
3.3.6.0.6
Tamaño (Size).
3.3.6.0.6.1
Ráfaga (Burst).
Esta opción nos permite especificar el número de palabras de 16 bits en
un Burst, desde 1 a 32. El módulo DMA debe completar un Burst antes de
ofrecer servicio a otro canal. Para esto hay que configurar apropiadamente el
valor del Burst para el periférico en el cual está trabajando el módulo DMA. Para
el caso del ADC el valor seleccionado es igual número de registros usados
hasta 16. Para (McBSP), que carece de FIFO el valor es 1. Para la memoria
RAM el valor puede variar de 1 a 32.
Esta opción de configuración corresponde a los bits 4-0 (BURSTSIZE)
del registro BURST_SIZE del procesador.
3.3.6.0.6.2
Transferencia (Transfer).
Esta opción de configuración nos permite especificar el número de Burst
en una transferencia, puede variar desde 1 a 65536.
Esta
opción
de
configuración
corresponde
a
los
bits
15-0
(TRANSFERSIZE) del registro TRANSFERSIZE del procesador.
3.3.6.0.6.3
Envoltura SRC (SRC wrap).
Esta opción de configuración permite especificar el número de Burst
(Ráfaga de datos) antes de devolver la dirección del puntero del valor de la
variable Source Begin Address.
Esta opción de configuración corresponde a los bits 15-0 (SRC_WRAP_SIZE)
del registro SRC_WRAP_SIZE del procesador.
3.3.6.0.6.4
Envoltura DST (DST wrap).
Esta opción de configuración permite especificar el número de Burst
antes de devolver la dirección del puntero del valor del parámetro Destination
Begin Address. Para deshabilitar el ajuste hay que ingresar el valor de DST
wrap que es mayor que el valor de transferencia.
Esta opción de configuración corresponde a los bits 15-0 (DST_WRAP_SIZE)
del registro DST_WRAP_SIZE del procesador.
P á g i n a | 54
3.3.6.0.7
Fuente (Source).
Los siguientes parámetros permiten configurar las entradas de los
canales DMA.
Begin Address.
Este parámetro permite ajustar la dirección inicial del puntero fuente. Además
los punteros apuntan a las direcciones de los módulos DMA en el inicio de una
transferencia y devuelve el parámetro SRC wrap como haya sido configurado.
Esta opción de configuración corresponde a los bits 21-0 (BEGADDR) del
registro SRC_BEG_ADDR del procesador.
Burst step
Esta opción de configuración permite establecer el número de palabras de 16
bits, que se pueden incrementar o decrementar de acuerdo al flujo de
movimiento del puntero. Para deshabilitar el incremento o decremento de la
dirección del puntero, hay que configurar el Burst Step a 0. Por ejemplo como el
McBSP no utiliza FIFO, se configura el DMA para mantener la correcta
secuencia de los datos McBSP que van a ser movidos palabra por palabra
individualmente. En consecuencia cuando se utiliza el DMA para transmitir o
recibir datos desde McBSP, es necesario configurar el Burst size a 1 palabra y
el Burst step a 0.
Esta opción de configuración corresponde a los bits 15-0 (SRCBURSTSTEP)
del registro SRCBURSTSTEP del procesador.
Transfer step
Esta opción de configuración permite establecer el número de palabras de 16
bits que incrementa o decrementa la dirección actual del puntero antes de la
siguiente transferencia. Valores pueden variar desde -4096 a 4095. Si se
deshabilita el incremento o decremento del puntero de direcciones, hay que
configurar el parámetro Transfer step a 0.
Esta
opción
de
configuración
corresponde
a
los
bits
15-0
(SRCTRANSFERSTEP) del registro SRC_TRANSFER_STEP del procesador.
P á g i n a | 55
Wrap step.
Esta opción nos permite establecer el número de palabras de 16 bits que
permite incrementar o decrementar el puntero de dirección SCR_BEG_ADDR
cuando se produce un evento Wrap. Valores pueden variar desde -4096 a 4095.
Esta
opción
de
configuración
corresponde
a
los
bits
15-0
(SRCTRANSFERSTEP) del registro SRC_TRANSFER_STEP del procesador.
3.3.6.0.8
Destino (Destination).
Los siguientes parámetros permiten configurar las salidas de los canales
DMA.
Begin Address.
Este parámetro permite ajustar la dirección actual del puntero de destino.
Además los punteros apuntan a las direcciones de los módulos DMA en el inicio
de una transferencia y devuelve el parámetro DST wrap como haya sido
configurado.
Esta opción de configuración corresponde a los bits 21-0 (BEGADDR) del
registro DST_BEG_ADDR del procesador.
Burst step.
Esta opción de configuración permite establecer el número de palabras de 16
bits, que se pueden incrementar o decrementar la dirección actual del puntero.
Para deshabilitar el incremento o decremento de la dirección del puntero, hay
que configurar el Burst Step a 0. Por ejemplo como el McBSP no utiliza FIFO,
se configura el DMA para mantener la correcta secuencia de los datos McBSP
que van a ser movidos palabra por palabra individualmente. En consecuencia
cuando se utiliza el DMA para transmitir o recibir datos desde McBSP, es
necesario configurar el Burst size a 1 palabra y el Burst step a 0.
Esta opción de configuración corresponde a los bits 15-0 (DSTBURSTSTEP)
del registro DST_BURST_STEP del procesador.
P á g i n a | 56
Transfer step.
Esta opción de configuración permite establecer el número de palabras de 16
bits que incrementa o decrementa la dirección actual del puntero antes de la
siguiente transferencia. Valores pueden variar desde -4096 a 4095. Si se
deshabilita el incremento o decremento del puntero de direcciones, hay que
configurar el parámetro Transfer step a 0.
Esta
opción
de
configuración
corresponde
a
los
bits
15-0
(DSTTRANSFERSTEP) del registro DST_TRANSFER_STEP del procesador.
Wrap step.
Esta opción nos permite establecer el número de palabras de 16 bits que
permite incrementar o decrementar el puntero de dirección DST_BEG_ADDR
cuando se produce un evento Wrap. Valores pueden variar desde -4096 a 4095.
Esta opción de configuración corresponde a los bits 15-0 (WRAPSTEP) del
registro DST_WRAP_STEP del procesador.
3.3.6.0.9
Modo (Mode).
Los siguientes parámetros permiten configurar los canales DMA.
3.3.6.0.9.1
Modo de habilitación de un disparo (Enable one shot mode).
Esta opción nos permite activar el parámetro que ofrece una
transferencia completa en respuesta a un evento de interrupción. Esta opción
permite un único canal de acceso directo de memoria y periféricos para
controlar los recursos y puede simplificar la tramitación, sino que también
disminuye los conflictos por uso de recursos y retrasos en el funcionamiento.
3.3.6.0.9.2
Habilitación Sync (Sync enable).
Este parámetro nos permite establecer que cuando la opción Interrupt
Source, es configurada para SEQ1INT, habilitamos el parámetro de reinicio del
DMA con el contador Wrap cuando es recibida la señal ADCSYNC desde
SEQ1INT. Esto asegura que el contador de Wrap y los canales ADC
permanezcan sincronizados entre sí. Si la opción Interrupt Source no es
configurada para la habilitación de SEQ1INT, Sync Enable no tiene efecto.
Este parámetro corresponde al bit 12 (SYNCE) del registro MODE del
procesador.
P á g i n a | 57
3.3.6.0.9.3
Habilitación modo continuo (Enable continuous mode).
Este parámetro permite establecer la habilitación del canal DMA para
completar una transferencia. El canal va a esperar que el gatillado de la
interrupción se produzca para seguir con el siguiente canal. Después los
valores de los parámetros se borran y se desactiva el canal DMA luego de
completar la transferencia. El módulo DMA deshabilita el canal borrando el bit
RUNSTS en el registro denominado CONTROL cuando se completa la
transferencia. Para utilizar canal de nuevo primero hay que restablecer los bits
que se ejecutan en el registro CONTROL.
3.3.6.0.9.4
Habilitación modo DST Sync (Enable DST Sync mode).
Esta opción de configuración permite habilitar el reinicio del contador de
destino Wrap (DST_WRAP_COUNT) cuando el módulo DMA recibe la señal
SEQ1INT Interrupt /ADCSYNC. Deshabilitando este parámetro reinicia el
contador de origen Wrap (SCR_WRAP_COUNT) cuando el módulo DMA recibe
la señal SEQ1INT Interrupt /ADCSYNC. Este parámetro corresponde al bit 13
(SYNCSEL) del registro MODE del procesador.
3.3.6.0.9.5
Configurar canal 1 para prioridad alta (Set channel 1 to
highest priority).
Cuando esta opción es habilitada el canal DMA número uno es
configurado para manejar altos ancho de banda, tales como datos provenientes
del ADC y otros canales de DMA configurados con menor prioridad. Cuando se
activan los servicios disponibles de los módulos DMA se habilita también
secuencialmente el canal uno, el cual envía una señal de disparo. Cuando esta
deshabilitada la opción del módulo acceso directo a memoria (DMA) cada canal
es
habilitado
secuencialmente. Este
parámetro
corresponde al
bit
0
(CH1PRIORITY) del registro PRIORITYCTRL1 del procesador.
3.3.6.0.9.6
Habilitación de interrupción de rebalse (Enable overflow
interrupt).
Cuando habilitamos esta opción el canal DMA envía una interrupción a la
CPU a través de la PIE si el módulo DMA recibe alguna interrupción de un
periférico mientras habría recibido otra interrupción anteriormente del mismo
periférico y esta en espera de ser atendida. Esta opción generalmente es
utilizada para la depuración durante el desarrollo de un proyecto.
P á g i n a | 58
Este parámetro corresponde al bit 7 (OVRINTE) del registro MODE y
involucra a los denominados registros Overflow Flag Bit (OVRFLG) y Peripheral
Interrupt Trigger Flag Bit (PERINTFLG) del procesador.
P á g i n a | 59
3.3.7.0.0
PLL.
Fig. 3.26. Ventana configuración PLL
Las configuraciones del PLL vienen destinadas por defecto y los registros
del PLL vienen con valores con el objetivo de que el clock de la CPU (CLKIN)
opere a máxima frecuencia. Estos parámetros son configurados asumiendo que
la frecuencia es proporcionada por un oscilador externo a la tarjeta.
Es recomendado cambiar las configuraciones del PLL si
o Se requiere cambiar la frecuencia de la CPU.
o La frecuencia del oscilador externo difiere de los valores recomendados
por manufactura.
Ecuación que rige la frecuencia del clock de la CPU.
CLKIN = (OSCCLK * PLLCR) / (DIVSEL o CLKINDIV)
(2)
P á g i n a | 60
Donde:
CLKIN Frecuencia con la que la CPU opera, denominado CPU clock.
OSCCLK Frecuencia del oscilador.
PLLCR Registro control PLL.
CLKINDIV Divisor de CLK.
DIVSEL Selector de divisor.
La disponibilidad de los parámetros DIVSEL o CLKINDIV cambia
dependiendo del procesador seleccionado. Si ninguno de los parámetros es
habilitado usa la siguiente ecuación:
CLKIN = (OSCCLK * PLLCR) / 1
(3)
Por último el resultado de la frecuencia de reloj (CLKIN) en el parámetro
CPU clock bloque Target Preferences.
P á g i n a | 61
3.3.7 REAL TIME WORKSHOP
3.3.7.1
Introducción al Real-Time Workshop.
Real-Time Workshop (RTW) es una extensión de capacidades
para Simulink y Matlab que permite compilar y generar automáticamente el
código fuente de modelos desarrollados en Simulink. De esta manera se
pueden crear aplicaciones de software en tiempo real.
Algunos de los principales componentes y objetos que maneja RTW son:
o El Generador de Código Simulink (Simulink Code Generator): el cual
automáticamente genera el código C que representa exactamente al
modelo desarrollado en Simulink.
o El Creador de Proceso (Make Process): el Creador de Proceso permite
construir aplicaciones con especificaciones particulares en la compilación
y conexión del código generado.
o Modo Externo de Simulink (Simulink External Mode): permite la
comunicación entre Simulink y un modelo que se esté ejecutando en
tiempo real. Mediante esta opción se puede ajustar algunos parámetros
de ejecución, de almacenamiento de datos, y observar el modelo
mediante la ventana de Simulink.
o Soporte de Dispositivos (Targeting Support): mediante esta herramienta
se pueden emplear una gran variedad de drivers incluidos dentro de
RTW que permiten diseñar aplicaciones para ejecutarse en dispositivos o
plataformas ya declaradas en RTW.
Este software que forma parte de MATLAB / SIMULINK se encarga en
gran medida de proporcionar la transformación del modelo desarrollado en
Simulink a un código de lenguaje C o C++.Este software posee el potencial para
interpretar cualquier modelo desarrollado en Simulink. Lo que hay que tener en
consideración es que el código generado no puede ser interpretado por
cualquier compilador y esto se debe a que el modelo en Simulink debe tener
coherencia con el dispositivo físico (Hardware) donde se pretende ejecutar.
P á g i n a | 62
3.3.7.2
Capacidades del Real Time Workshop.
Generar código fuente y ejecutables para modelos de Simulink en tiempo
discreto, tiempo continuo (Fixed Step) y sistemas híbridos.
Utilizar el código generado para aplicaciones en tiempo real y no real además
incluye las opciones de simulation acceleration (aceleración de simulación),
rapid prototyping, hardware in the loop (hardware en un bucle) y testing.
El código generado usando bloques del software Simulink, puede ser utilizado
fuera de los ambientes del propio Simulink y Matlab. Una ventaja esencial para
desarrollar aplicaciones.
Generar código para modelos diseñados con el software Stateflow event-based
modeling y complementarlo con el State flow Coder.
Produce código fuente para una infinidad de subprogramas de Simulink como
por ejemplo Signal Processing una aplicación diseñada para el tratamiento de
señales. Esto es una ventaja si se tiene un microprocesador que no sea
precisamente un DSP.
P á g i n a | 63
3.3.7.3
Descripción del procedimiento realizado por el software para
la generación de código y su posterior ejecución en el
hardware.
El Real-Time Workshop (RTW) posee la capacidad de generar código en
C o C++, de modelos desarrollados en Simulink y además modelos que
contengan funciones propias de Matlab. Por lo tanto, como el objetivo del
proyecto es generar código para una plataforma de hardware específico, este
software formara parte importante en el desarrollo del proyecto.
Fig. 3.27. Diagrama de creación de código.
Generación de código para ambientes de programación específicos.
Este software puede generar código que se ejecute en el mismo
computador pero como un ejecutable. Es decir, un modelo en Simulink o un
archivo .m de Matlab que contenga funciones propias de este software puede
ser ejecutado en el computador como un programa independiente a los
mencionados anteriormente. Básicamente lo que hace el real time workshop es
exportar funciones propias de Matlab/Simulink para ser ejecutadas en otro
ambiente de trabajo, en este caso en el ambiente windows o incluso linux.
Presenta una gran ventaja ya que al poder importar funciones propias de
Matlab, se reduce el problema de crear programas adicionales para cada
función específica, dentro de la aplicación general. Este software tiene la
ventaja de poseer el system target files. Este sistema es capaz de generar
compilar y ejecutar un código para un ambiente específico de programación.
Para seleccionar el system target file correcto es necesario conocer el ambiente
de programación del hardware donde el código se ejecutará, tales como en un
simulador en tiempo real, procesador o en un PC.
P á g i n a | 64
Fig. 3.28. Ambientes donde se puede crear código con Real-Time Workshop
Como en el caso del proyecto presentado en esta tesis el código
generado tiene que ser ejecutado en un DSP, el software o la tecnología es
capaz de generar dicho código para que sea ejecutado para este ambiente.
3.3.7.4
Código generado para DSP.
Opciones para la creación de código ejecutables en DSP.
 Generación de código.
Esta opción de la generación de código, ofrece optimizar el código para
mejorar la velocidad, el uso de memoria, la simplicidad con que este se
ejecutará en el procesador.
 Ingresar el hardware en un bucle.
Con esta opción generamos un bucle en la ejecución del código. Esta
función hace que el código corra y se detenga una y otra vez como una
forma de observar su comportamiento.
P á g i n a | 65
3.3.7.4.1
Generación de código.
Para el proceso de generación de código, antes se asegura la correcta
configuración de los parámetros del modelo en que el software se va a encargar
de generar código. Se puede crear un modelo que utilice bloques en tiempo
continuo pero configurar el real time workshop como un intérprete de bloques
en estado discreto. Por esta razón son muy importantes las configuraciones del
software y cuáles son sus limitaciones.
3.3.7.4.2
Configuración parámetros para compilación y ejecución de
código.
Procedimiento que realiza real time workshop, para la generación de
código. Una vez diseñado el modelo en Simulink de acuerdo a los
requerimientos de hardware, el siguiente paso es la configuración de todos los
parámetros del software Real Time Workshop.
En la ventana de Simulink seleccionamos la opción Simulation y elegimos
Configuration Parameters.
Fig. 3.29. Ventana de configuración de parámetros.
P á g i n a | 66
3.3.7.4.3
Configuración parámetros SOLVER.
Parametros SOLVER
Simulation time
Solver options
Start Time
0.0
Stop Time
inf
Type
Fixed Step
Solver
Discrete
Tabla 1.0 Configuración Parametros Solver
Posteriormente
nos
situamos
en
las
siguientes
opciones
de
configuración: Data Import/Export, Optimization, Diagnostics y se los deja con
los valores por omisión. Luego de esto, situarse en la opción implementación de
hardware y configurar como se muestra en la figura (Tabla).
Fig. 3.30. Ventana configuración de implementación de hardware
3.3.7.4.4
Configuración parámetros implementación de hardware.
Parámetros de implementación de hardware
Embedded Hardware
Device Type:
TI C2000
Byte Ordering:
Little Endian
Tabla 2.0 Configuración Embedded Hardware (Implementación de Hardware).
P á g i n a | 67
Luego situarse en la opción de configuración REAL TIME WORKSHOP y
configurar tal como se grafica en la ventana de configuración que muestra la
siguiente figura.
Fig. 3.31. Ventana de configuración Real Time Workshop.
Parámetros configuración Real time Workshop
Selección de Plataforma
RTW system target File
ti_c2000.tlc
Tabla 3.0 Configuración Real Time Workshop
Continuamos en la misma opción de configuración dentro de la selección
de plataformas tenemos varias alternativas que se seleccionaran de acuerdo al
tipo de hardware que se esté empleando en la implementación. La siguiente
figura muestra las diversas plataformas de hardware que están disponibles,
para nuestro caso empleamos el hardware ti_c2000.tlc, ya que es la que se
acopla con nuestro DSP TMS320F28335.
Fig. 3.32. Ventana de configuración de selección de plataforma.
P á g i n a | 68
Luego, nos ubicamos en la opción de configuración TI c2000 Selección
de Plataforma, y configuramos como muestra la siguiente figura.
Fig. 3.33. Ventana de Configuración TI c2000
Parámetros configuración TI c2000 selección de plataforma
c2000
Tipo Código Generado
Tabla 4.0 Configuración TI c2000 selección de plataforma
Por último, nos ubicamos en la opción de configuración TIC6000
Generación de Código y seleccionamos las opciones de acuerdo a la figura
(tabla).
Parámetros configuración TI c6000 generación de código
Función de Procesamiento
Digital en linea_activado
Tabla 5.0 Configuración TI c2000 generación de código
P á g i n a | 69
Fig. 3.34. Ventana de Configuración TI c2000 generación de código
Una vez seleccionados los valores específicos para el modelo a
implementar se deben aplicar los valores presionando Apply luego Ok. Luego
en la ventana que nos muestra el modelo hacer clic en Tools -> Real-Time
Workshop -> Build Model, con esto se inicia el proceso de compilación del
modelo y en la ventana de MATLAB aparecen los archivos que genera dicha
compilación. Al finalizar el proceso de compilación debe aparecer en el
ambiente de programación de CCS nuestro modelo como activo, lo cual se
comprueba porque el nombre de nuestro proyecto aparece en negrita y debe
contener varios archivos generados los cuales serán:
nombre_del_archivo.c
nombre_del_archivo_data.c
nombre_del_archivo_main.c
MW_c6xxx_csl.c
rt_nonfinite.c
rt_sim.c
nombre_del_archivo.cmd
Donde nombre_del_archivo es el nombre con que hemos guardado nuestro
modelo.
P á g i n a | 70
3.3.7.4.5
Carga y Ejecución del Programa Objeto.
Una vez que se han concluido los procesos de desarrollo, simulación,
ajuste y verificación del modelo en el ambiente de desarrollo de Simulink y
además se ha ejecutado el procedimiento que realiza la compilación del modelo
(este proceso se detallo en el punto 3.2.8.5.2), entonces es el momento de
proceder con el punto final del proceso de desarrollo del modelo, el cual
consiste en tomar el archivo que se genero luego de compilar el modelo y que
debe estar ahora activo en el entorno de desarrollo de CCS. Desde aquí se
ejecuta el proceso de carga del archivo objeto en la plataforma que en nuestro
caso es el DSP TMS320F28335.
A continuación se detalla como cargar y la ejecutar modelo:
a) Dar clic en el menú Project >>> Build. Automáticamente se inicia el proceso
de compilación del proyecto activo.
b) Luego (si no hay errores) seleccionar File >>> Load Program. Con lo que se
abre una ventana de donde se debe seleccionar el archivo generado
nombre_del_archivo.out y clic en Abrir.
Fig. 3.35. Cuadro de dialogo Cargar Programa.
P á g i n a | 71
c) Al presionar Abrir se inicia de forma automática el proceso mediante el cual el
archivo compilado se envía al DSP.
Fig. 3.36. Indicador de Carga de Programa Objeto.
d) Finalmente el archivo objeto que está físicamente en el DSP puede ser
ejecutado dando clic en Debug >>> Run.
Fig. 3.37. Code Composer Studio luego de que se carga el programa desde
Matlab&Simulink.
P á g i n a | 72
3.3.8 TARGET SUPPORT PACKAGE
3.3.8.1
Introducción Toolbox Target Support Package
Target Support Package permite modificar el código generado por RealTime Workshop para la ejecución en tiempo real sobre procesadores
integrados, microcontroladores y DSP. El uso del Target Support Package
entrega como principal herramienta integrar dispositivos periféricos y sistemas
operativos en tiempo real con algoritmos creados a partir de modelos realizados
en Simulink, diagramas realizados en Toolbox Stateflow y Embedded Matlab
software con la característica de crear archivos .m o funciones de Matlab y
utilizarlos en modelos creados en Simulink. El código ejecutable resultante se
puede implementar en hardware integrados y tarjetas de desarrollo para análisis
en tiempo real.
Fig. 3.38. Diagrama de proceso de generación de código
P á g i n a | 73
3.3.8.2
Características principales
o Apoyo para generar archivos que sean ejecutables y que incluyen código
y controladores de dispositivo.
o Puede generar código para GPIO, SPI, ePWM, SCI, CAN y otros.
o Posee un parámetro de ajuste y control para aplicaciones complejas en
tiempo real utilizando el modo de Simulink externo.
o Posee una biblioteca especializada de bloques para gestionar y ejecutar
la comunicación Ethernet.
o Generación de código ensamblador optimizado e integrado, posee
bloques de procesamiento de señales y bibliotecas digitales de control
de motores.
Tiene soporte para las familias de procesadores:
o Texas Instruments ™ C2000, C5000 y C6000.
o ™Analog Devices Blackfin ®
o Freescale ™ MPC5xx
o Infineon ® C166 ®
o STMicroelectronics ST10 ®
Fig. 3.39. Procesadores en los que tiene soporte Target Support Package™
P á g i n a | 74
Bloques disponibles en Target Support Package
Fig. 3.40. Modelos de la serie c2000 en los que tiene soporte Target Support
Package™.
Fig. 3.41. Bloques especializados para la programación de procesadores DSP
c280x/c2833x
P á g i n a | 75
3.3.8.3
Opciones de configuración de Bloques de Target Support
Package™ utilizados en el proyecto.
3.3.8.3.1
Bloque Conversor análogo/digital.
Fig. 3.42. Bloque ADC c280x/c28x3x
El bloque ADC se encarga de configurar el conversor A/D del procesador
el Bloque ADC es capaz de desplegar los valores digitales que representan la
señal de entrada analógica y almacena los valores convertidos en el registro
correspondiente del procesador. En rigor este bloque es el encargado de
configurar automáticamente todos los registros necesarios para que funcione el
conversor análogo / digital del DSP, también posee una característica
importante, es capaz de configurar el bloque para que los datos digitales pasen
directamente a la memoria sin necesidad de pasar por la CPU. Esto produce
una liberación de tareas y aumenta el rendimiento del sistema en general.
Fig. 3.43. Ventana configuración parámetros Bloque ADC.
P á g i n a | 76
3.3.8.3.1.1
Parámetros de configuración Bloque ADC.
3.3.8.3.1.2
Módulo A.
Si se selecciona el módulo A podemos configurar como entrada los
canales ADCINA0 al ADCINA7 individualmente o en forma simultánea.
3.3.8.3.1.3
Módulo B.
Si se selecciona el módulo B podemos configurar como entrada los
canales ADCINB0 al ADCINB7 individualmente o en forma simultánea.
3.3.8.3.1.4
Módulo A B.
También existe la opción de elegir los dos módulos en forma simultánea
y en esta opción podemos elegir todas las entradas disponibles por los dos
módulos.
3.3.8.3.1.5
Modo de conversión.
Esta opción específica el modo de muestreo para las señales análogas que
son aplicadas al conversor. Existen dos opciones:
 Secuencial
Si se selecciona este modo de conversión y se eligen como entrada
para señales dos canales, la conversión va a ser en forma secuencial.
 Simultáneo
Si se selecciona este modo de conversión y se eligen como entrada
para señales dos canales o más, la conversión va a ser en forma
simultánea sin importar si las entradas son de diferentes módulos.
3.3.8.3.1.6
Comienzo de conversión.
Esta opción de configuración específica la forma en que va a comenzar
la conversión a través de una señal de trigger. Existen las siguientes opciones:
Software
La señal de trigger para el comienzo de la conversión va a ser emitida
por software.
EPWMxA/ePWMxB/ePWMxA_ePWMxB
La señal de disparo para el comienzo de la conversión va a ser
controlada por el usuario a través del PWM.
P á g i n a | 77
XINT2_ADCSOC
La señal de trigger para el comienzo de la conversión va a ser controlada
por el pin XINT2_ADCSOC, cada vez que este pin recibe una señal externa
dará orden para el comienzo de la conversión del ADC.
3.3.8.3.1.7
Tiempo de muestreo.
Esta opción de configuración en el conversor AD representa el tiempo en
segundos entre muestreos de señal consecutivos que se toman de un canal
específico, así también como la velocidad en la que son leídos los datos
digitales almacenados en los registros del DSP.
3.3.8.3.1.8
Tipo de datos.
Esta opción de configuración representa el formato o tipo de dato de
salida, entre los formatos disponibles se encuentran auto, double, single, int8,
uint8, int16, uint16, int32 o uint32.
Fig. 3.44. Ventana de configuración entradas Bloque ADC
P á g i n a | 78
3.3.8.3.1.9
Configuración canales de entrada Bloque ADC.
3.3.8.3.2.0
Número de conversiones (Number of conversions).
Esta opción de configuración permite definir cuantos canales del ADC
van a ser utilizados para la conversión análoga a digital.
3.3.8.3.2.1
Conversion no
Esta opción de configuración permite definir el número de conversiones
que van a realizarse en cada canal de entrada del conversor AD. Además existe
la posibilidad de configurar modo de sobre muestreo especificando más de una
conversión para un mismo canal.
3.3.8.3.2.2
Uso de múltiples puertos de salida (Use multiple output
ports).
Esta opción de configuración permite utilizar puertos separados para
cada salida, si el ADC es configurado con más de un canal de conversión, se
puede desplegar cada salida en forma independiente o en diferentes vectores.
P á g i n a | 79
3.3.8.3.3
Bloque Modulador de ancho de pulso mejorado.
Fig. 3.45. Bloque ePWM c280x/c28x3x
El bloque ePWM se encarga de establecer la comunicación con los
módulos ePWM del microprocesador. El bloque tiene la opción de configurar
dos salidas por cada módulo, ePWMA y ePWMB, e incluso se puede configurar
hasta seis módulos ePWM.
Fig. 3.46. Ventana configuración Bloque ePWM.
P á g i n a | 80
3.3.8.3.3.1
Parámetros de configuración general del Bloque ePWM
3.3.8.3.3.2
Configuración General
3.3.8.3.3.3
Módulo (Module).
Esta opción de configuración específica que módulo ePWM va a ser
utilizado por el usuario.
3.3.8.3.3.4
Unidades del periodo del Timer (Timer period Units).
Esta opción de configuración específica las unidades en la que van a
estar configuradas las variables Timer period o Timer initial period, por defecto
viene configurado como Clock Cycles (Ciclos de reloj). Cuando la variable Timer
Period está configurada con unidades de medición (segundos), el software
convierte las variables Timer Period y Timer initial period en un doble periodo de
registro a formato UINT16.
3.3.8.3.3.5
Especificación del periodo del timer via (Specify timer period
via).
3.3.8.3.3.6
Periodo fuente del Timer (Timer period source).
Configura el periodo del timer fuente que establecerá a su vez el periodo
de la onda PWM.
3.3.8.3.3.7
Periodo del Timer (Timer period).
Esta opción de configuración se utiliza para configurar los periodos de
forma de onda PWM, y en que unidades se medirán ciclos de reloj o en
segundos
3.3.8.3.3.8
Modo de conteo (Counting mode).
Esta opción de configuración específica el modo de conteo (Counting
Mode) en los cuales pueden operar los módulos PWM. Existen tres opciones
Up, Down y Up-Down.
Fig. 3.47. Modos de conteo
P á g i n a | 81
3.3.8.3.3.9
Divisor de Prescalador del reloj TB (TB clock prescaler
divider).
Esta opción de configuración permite establecer la velocidad en la que se
incrementará o decrementará el contador time-base (TB), y además se encarga
de establecer el prescalamiento que va a tener la señal SYSCLKOUT.
Para calcular el TBCLK se utiliza la siguiente ecuación:
TBCLK = SYSCLKOUT / (HSPCLKDIV * CLKDIV)
(4)
Por ejemplo se asume que por defecto CLKDIV y HSCLKDIV tienen un
valor 1, y por defecto la frecuencia de SYSCLKOUT es 100 Mhz por lo tanto:
TBCLK = 100 MHz = 100 MHz / (1 * 1)
(5)
Las opciones de configuración para el TB clock prescaler divider son: 1,
2, 4, 8, 16, 32, 64, y 128.
Fig. 3.48. Diagrama sub módulo Time Base (TB), del módulo ePWM.
P á g i n a | 82
Fig. 3.49. Ventana de configuración módulo ePWM
3.3.8.3.4
Especificaciones módulo ePWMA ePWMB
3.3.8.3.4.1
Unidades del registro del contador comparador A (CMPA).
Esta opción de configuración específica la unidad que se utilizará como
registro de comparación, por defecto viene configurado en (ciclos de reloj) clock
cycles. Si se configuran las unidades CMPA y CMPB en modo porcentaje es
necesario habilitar el soporte para números en punto flotante. Para realizar la
habilitación de esta característica seleccionamos Simulation > Configuration
Parameters, en esta ventana seleccionamos a su vez la opción Real-Time
Workshop > Interface, por último en la opción Software Environment,
habilitamos floating-point numbers.
3.3.8.3.4.2
Vía específica del CMPA
Este parámetro configura la manera con la cual se van a generar los
PWM, si se elige la opción Specify via dialog, tenemos la opción de ingresar
valores a las variables CMPA value y CMPB value.
3.3.8.3.4.3
Valor CMPA (CMPA value).
Esta opción de configuración están disponible si seleccionamos antes
Specify via dialog. Aparecerán las opciones CMPA source y CMPB source. En
esta instancia podemos ingresar los valores de CMPA CMPB Units.
P á g i n a | 83
3.3.8.3.5
Bloques de Interfaz serial de periféricos (SPI).
Fig. 3.50. Bloques SPI
El Bloque SPI Receive tiene soporte para comunicación serie síncrona
entre el DSP y otros periféricos externos o otros dispositivos. El bloque tiene la
opción de configurar la SPI en modo maestro o esclavo. En modo maestro, el
pin SPISIMO (Slave input Master output) transmite datos y el pin SPISOMI
(Slave output Master input) recibe datos. Cuando es seleccionado el modo
master la SPI inicia la transmisión de datos enviando una señal serial de clock
(SPICLK), la transferencia de datos son sincronizados por la configuración del
registro (SPICLK), que puede ser habilitado en forma simultánea para el modo
maestro y esclavo.
El Bloque SPI Transmit tiene soporte para comunicación serie síncrona
entre el DSP y otros periféricos externos. Puede operar en modo maestro o
esclavo. En general tiene las mismas características que el bloque SPI Receive
considerando que uno envía datos y el otro recibe datos. El bloque tiene
soporte para admitir en la entrada datos en formato UINT 16.
P á g i n a | 84
3.3.8.3.5.1
Parámetros de configuración general del Bloque SPI.
Fig. 3.51. Ventana de configuración módulo SPI Receive
3.3.8.3.5.2
Longitud de dato (Data length).
Este parámetro específica la cantidad de datos del tipo UINT16 se
esperan van a ser recibidos. Se puede seleccionar desde 1 a 16.
3.3.8.3.5.3
Error en el estado de recepción de salida (Output receive error
status).
Este parámetro de configuración permite monitorear la correcta
transferencia de datos hacia el bloque generando una salida que puede tener
los siguientes valores:
o 0: Sin errores
o 1: Datos perdidos en el proceso de transferencia.
o 2: Datos no leídos, y tiempo de espera para recibir datos terminado.
3.3.8.3.5.4
Habilitación de estado de bloqueo (Enable blocking status).
Esta opción de configuración permite habilitar que el sistema
permanezca en un estado de espera continuo, hasta que el dato que se
transmite llegue íntegramente a su destino. Luego de esto el sistema continua
operando normalmente.
P á g i n a | 85
Fig. 3.52. Ventana de configuración módulo SPI Transmit
3.3.8.3.5.5
Error en el estado de salida de transmisión (Output transmit
error status).
Este parámetro al ser habilitado monitorea la correcta transmisión de
datos generando el registro de estado de la operación indicando:
o 0: Sin errores
o 1: Tiempo de espera de transmisión terminado.
o 2: Error en transmisión de datos.
3.3.8.3.5.6 Habilitación modo de bloqueo (Enable blocking mode).
Esta opción de configuración es simular a la opción enable blocking
status. Si el sistema está en proceso de espera y se requiere que se le de
prioridad a la correcta transmisión de los datos, el sistema no realiza ninguna
acción hasta que se termine dicho proceso. La diferencia con la opción anterior
es que el sistema está continuamente ejecutando dicho procedimiento.
3.3.8.3.5.7
Interrupción después de dato transmitido (Post interrupt when
data is transmitted).
Esta opción de configuración habilita la ejecución de una interrupción
después de que un dato llegue a destino.
P á g i n a | 86
3.3.8.3.6
Bloque de Interfaz de comunicación serie (SCI).
Fig. 3.53. Bloques SCI
3.3.8.3.6.1
SCI receive
El bloque SCI Receive tiene soporte para comunicarse en forma serie
digital y asíncrona, con otros periféricos y con otros procesadores y sus tarjetas
de desarrollo en formato non-return-to-zero (nrz).
Este bloque configura el DSP para recibir datos como un vector o escalar
desde el puerto COM.
3.3.8.3.6.2
SPI Transmit
El bloque SCI Transmit transmite datos como vector o escalar en formato
int8 o uint8 hacia el puerto COM (serial) con formato non-return-zero (nrz)
quiere decir que la tensión no tome valor cero, puede tomar valores positivos o
negativos.
P á g i n a | 87
3.3.8.3.6.3
Parámetros de configuración general del Bloques SCI
Fig. 3.54. Ventana de configuración módulo SCI Receive
3.3.8.3.6.4
Módulo SCI (SCI Module).
Esta opción de configuración permite seleccionar que módulo SCI A o B
para la comunicación.
3.3.8.3.6.5
Paquete adicional al comienzo (Additional Package header).
Esta opción de configuración permite adicionar un valor en formato ASCII
para reconocer donde empieza el dato para asegurar la correcta transmisión y
recepción, en la figura se agrega una ‘S’.
3.3.8.3.6.6
Paquete adicional al término (Additional Package terminator).
Esta opción de configuración nos permite adicionar un valor en formato
ASCII, en la figura se agrega una ‘E’.
3.3.8.3.6.7
Tipo de dato (Data Type).
Este parámetro de configuración permite establecer el tipo de dato de
salida. Las opciones disponibles son single, int8, uint8, int16, uint16, int32, y
uint32.
3.3.8.3.6.8
Longitud de dato (Data Length).
Este parámetro específica cuantos tipos de datos es capaz de recibir el
bloque (no la cantidad de bytes). El tamaño del dato se auto-configura a partir
de las características del dato en la entrada.
P á g i n a | 88
3.3.8.3.6.9
Salida inicial (Initial output).
Este parámetro de configuración sirve si la transferencia de datos ha
sobrepasado el tiempo máximo de espera. Se detiene el proceso y este
parámetro permite inicializar nuevamente la transmisión enviando el último dato
que haya sido correctamente recibido.
Fig. 3.55. Ventana de configuración módulo SPI Transmit.
3.3.8.3.7.0
Módulo SCI de transmisión (SCI Transmit Module).
Esta opción de configuración permite seleccionar que módulo SCI A o B
para la comunicación.
3.3.8.3.7.1
Paquete adicional al comienzo (Additional Package header).
Esta opción de configuración permite adicionar un valor en formato ASCII
para reconocer donde empieza el dato para asegurar la correcta transmisión y
recepción, en la figura se agrega una ‘S’.
3.3.8.3.7.2
Paquete adicional al término (Additional Package terminator).
Esta opción de configuración permite adicionar un valor en formato
ASCII, en la figura se agrega una ‘E’.
3.3.8.3.7.3
Habilitación de interrupción FIFO (Enable FIFO interrupt).
Esta opción de configuración si se habilitada ejecuta una interrupción si
el FIFO se encuentra en desbordamiento.
P á g i n a | 89
3.3.8.3.8
Bloque GPIO Puerta de entrada/salida de propósito general.
Fig. 3.56. Bloques GPIO
Estos Bloques son los encargados de configurar los registros de multiplexion
de las GPIO (Pines de propósito general de E/S). Cuando un pin es configurado
como entrada digital queda inmediatamente inhabilitado para utilizarse como
salida digital para algún periférico. Cada procesador tiene disponible diferente
número de pines GPIO:
o C280x tiene disponible 35 pines GPIO.
o C2802x tiene disponible 22 pines GPIO.
o C2803x tiene disponible 45 pines GPIO.
o C28x3x tiene disponible 64 pines GPIO.
Fig. 3.57. Ventana de configuración módulos GPIO
P á g i n a | 90
3.3.8.3.8.1
Parámetros de configuración general del Bloques GPIO
3.3.8.3.8.2
Grupo GPIO (GPIO Group).
Esta opción de configuración permite seleccionar un grupo de pines
GPIO para configurar, cada procesador en particular va a tener diferente
distribución de pines GPIO.
3.3.8.3.8.3
Tiempo de muestreo (Sample time).
Este parámetro de configuración permite establecer el intervalo de
tiempo entre samples de entrada/salida, además para establecer el tiempo de
muestreo antes del bloque GPIO, se configura este parámetro en -1.
3.3.8.3.8.4
Tipo de dato (Data type).
Este parámetro indica el tipo de dato que se puede ingresar a los
Bloques GPIO, la entrada del bloque es capaz de leer un tipo de dato de 16 bit
integrado, los tipos de datos permitidos o soportados por el bloque son los
siguientes auto, single, int8, uint8, int16, uint16, int32, uint32 o boolean.
P á g i n a | 91
3.4
Code composer studio.
Code Composer Studio™ (CCS) es un IDE (Integrated Development
Environment). Es un ambiente de desarrollo integrado para programar los
procesadores digitales de señales (DSP) de Texas Instruments. Code
Composer Studio CCS entrega todas las herramientas necesarias facilidad,
flexibilidad e integración para soporte de software en tiempo real para el DSP
TSM320F2833x. CCS permite un manejo rápido y sencillo para poder desplegar
herramientas necesarias en todas las etapas del proceso de diseño de una
aplicación, incluyendo código, compilación, depuración y análisis.
Figura 3.58. Proceso de Desarrollo del código en CCS.
Entre las principales propiedades del CCS se encuentran las siguientes:
o Código TMS320 DSP estándar.
o Familiar y fácil de usar IDE con editor Code Wright integrado.
o Kernel DSP/BIOS™ escalable en tiempo real y herramientas de
configuración.
o Herramientas
para
generación
de
código
en
lenguajes
C/C++/Assembly.
o Depurador de código fuente con análisis en tiempo real.
o Variedad de simuladores preconfigurados y tarjetas para todas las
plataformas.
o Variedad de tutoriales.
o Tutoriales para comenzar con el IDE CCStudio, Code Tuning, DSP
BIOS, RTDX y emulación en tiempo real.
o Códigos de ejemplo y Bibliotecas.
o Soporte para TMS320C2000™, TMS320C5000™ (incluyendo los
procesadores
OMAP™),
y
TMS320C6000™
(incluyendo
procesadores the Da Vinci™ la gama más alta de Texas
Instrument).
P á g i n a | 92
3.4.1 Características.
Entre las características que posee el ambiente de desarrollo de CCS se
encuentran las herramientas de trabajo que mejoran el tiempo de trabajo para
desarrollo de software y optimizan el funcionamiento para todas las aplicaciones
DSP en tiempo real.
Las herramientas más importantes del Code Composer Studio incluyen:
o Herramientas
para
generación
de
código
DSP
TMS320:
compilador C/C++.
o Viene con Visual Proyect Manager con interfaz de control de
código y soporte para multiproyectos que permite manejar sobre
100 archivos.
o Configuración Drag and Drop CCStudio que soporta:
 Drivers XDS560 ™ de emulación de alta velocidad.
 Drivers XDS510 ™ de emulación.
 Drivers XDS100 ™ de emulación.
 Simuladores para todos los dispositivos, modo CPU y CPU
más memoria.
 Opciones de definición configurable para tarjetas.
 Editor Code Wright totalmente integrado.
 Administrador de componentes soporta múltiples versiones
de DSP/BIOS y de herramientas de generación de código
dentro del IDE.
P á g i n a | 93
La función depurador posee las siguientes propiedades:
o Debug Rewind: Retrocede en la simulación.
o Simples breakpoints.
o Breakpoints avanzados y de Hardware.
o Puntos de prueba para inyección/extracción de datos.
o Navegador para Símbolos y Watch Windows avanzado.
o Administrador unificado de Breakpoints para configurar y administrar
breakpoints por software y hardware desde una sola y simple interfaz.
o Connect / Disconnect; conexión robusta y resilente entre el cliente y la
tarjeta.
o Transmisor de datos RTDX ™ para intercambio en tiempo real entre la
tarjeta y el cliente.
o Un sin número de guías y códigos de ejemplo para hardware y software.
Además de tutoriales y manuales.
El software Code Composer Studio además incluye:
o DSP/BIOS ™ Kernel para el TMS320 DSPs
o Multihebras previamente vacías.
o Comunicación entre hebras (threads).
o Manejo de Interrupciones.
o Algoritmos estándar TMS320 DSP para poder volver a usar el software.
o Soporte de Bibliotecas para el Chip con el fin de simplificar la
configuración del dispositivo.
o Bibliotecas DSP para optimizar las funcionalidades del DSP.
P á g i n a | 94
3.4.2 Visualización de entorno del programa CCSv3.3.
Configuración tarjeta de desarrollo XDS100 emulator para el DSP
TMS320F28335.
Una vez instalado el programa lo primero que hay que configurar es la
tarjeta en la cual está montado el microprocesador.
Fig. 3.59. Selección de Configuración de la Tarjeta. Emulador XDS100
Seleccionar Create Board y
luego elegir la conexión
TI XDS100pp
Emulator y presionar el botón ADD. En la siguiente ventana escribir un nombre
arbitrariamente presionar el botón NEXT y luego FINISH. Esto último se
muestra en la siguiente ventana:
Fig. 3.60. Ventana para ingresar nombre de la conexión
P á g i n a | 95
Luego se marca la tarjeta creada y se escoge la tarjeta DSP modelo
TSM320C2800 y se agrega a la conexión, tal como se muestra en la siguiente
figura:
Fig. 3.61. Elección de modelo del DSP.
Para agregarla simplemente se presiona el botón ADD y aparecerá la
siguiente ventana:
Fig. 3.62. Propiedades del microprocesador configurado
P á g i n a | 96
Posteriormente se presiona OK y se guarda desde el panel de
configuraciones en la barra de herramientas o presionando el botón Save &
Quit. Luego de ello, el CCS se iniciará automáticamente. Cabe mencionar que
si esta configuración no es ejecutada el programa no podrá reconocer el
hardware y la tarjeta no se podrá conectar con el programa.
Fig. 3.63. Presionar el Botón Save & Quit.
Una vez configurado, se muestra la ventana principal de Code Composer
Studio.
Fig. 3.64. Entorno Code Composer Studio (CCSv3.3).
P á g i n a | 97
Capítulo IV
Resultados: Simulaciones y prueba en
periféricos
P á g i n a | 98
4.1
Introducción
En el siguiente capítulo se entregan los resultados obtenidos en las
pruebas realizadas en laboratorio. Se describen las pruebas que se realizó a los
módulos del DSP en específico el módulo ADC, SPI, SCI, PWM y GPIO. Se
muestran los modelos creados en Simulink para cada módulo en particular
realizando una descripción de lo que interpreta cada modelo a nivel del
hardware de DSP, además se muestran algunas señales obtenidas con el
osciloscopio y también se visualizan los resultados de las pruebas obtenidas
con el módulo SCI (UART).
P á g i n a | 99
4.2
Módulo SCI (Interfaz de comunicación serie).
Fig. 4.1. Modelo en Simulink bloque SCI Transmit.
El siguiente modelo creado con el software Simulink, es una prueba de la
comunicación SCI a través de este método de programación, el modelo envía
un mensaje en formato UINT 16, que es lo permitido a la entrada del bloque SCI
XMT. El bloque Custom Board for TI CCS es configurado de acuerdo a la
característica del hardware disponible en específico para la tarjeta XDS100
emulator con el microprocesador TMS320F28335. El funcionamiento del
modelo en forma general es la siguiente, la constante que ingresa al bloque
Embedded Matlab Function se puede interpretar como una señal de disparo,
para que se envié un mensaje a la entrada del bloque SCI XMT. Todo este
procedimiento es posible gracias a la función que contiene el bloque Embedded
Matlab Function, que funciona de la siguiente manera: cuando la entrada al
bloque sea igual a uno, a la salida se desplegara un mensaje anteriormente
definido, luego este es transmitido hacia la puerta serial que en el proyecto se
hizo en forma virtual debido a que los computadores en los cuales se trabajo no
poseen puerta serie. Por esta razón se instalo un programa que simula dicha
entrada a nivel de software y además nos permite visualizar dichos datos, es
una versión virtual de windows Hyperterminal. Con este podemos visualizar los
mensajes emitidos por el módulo SCI del DSP.
P á g i n a | 100
Visualización de un mensaje enviado al COM virtual a través de
programación con un modelo desarrollado en Simulink.
Fig. 4.2. Mensaje “hola mundo” enviado al puerto COM virtual con el modelo en
Simulink.
Las letras “S” y “E” corresponden a los datos que indican el comienzo y el
final del dato que debe ser enviado.
Fig 4.3. Caracteres adicionales que indican el comienzo y final del dato a
transmitir.
P á g i n a | 101
4.3
Módulo PWM (Modulación por ancho de pulso).
Fig. 4.4. Modelo en Simulink donde se utilizan los módulos ADC y PWM
Fig. 4.5. Modelo Simulink Bloque Sub-System
El modelo de la figura nos permite visualizar el uso del bloque ADC y el
bloque PWM, con lo cual el bloque ADC realiza un muestreo de una señal de
tensión analógica la cual varía continuamente en el tiempo, con esto logramos
obtener una señal digital, la cual utilizamos para generar una señal PWM que
varie su ciclo de trabajo proporcionalmente a la señal de entrada al conversor
análogo / digital y comprobamos el funcionamiento de estos dos módulos. Cabe
mencionar que el bloque Hardware Interrupt nos permite disponer de la rutina
de servicio de interrupción (ISR), para interrumpir la ejecución del subsistema
que posee el bloque ADC-PWM Subsystem cuando es recibido la alerta de
interrupción por el registro ADCINT denominado registro ADC de interrupción.
P á g i n a | 102
4.4
Módulo ADC (Conversor análogo-digital).
Fig. 4.6. Modelo en Simulink donde se utilizan los módulos ADC.
El modelo anterior muestra el funcionamiento del bloque ADC, se
comprobó el funcionamiento de este módulo. Se ingresa una señal análoga a
una entrada del conversor la cual es transmitida al bloque Embedded Matlab
Function que contiene una función que modifica los datos provenientes del
bloque ADC y luego estos datos modificados se almacenan en una variable
denominada Y. Este ejemplo fue creado para establecer si la programación del
módulo era correcta y si este guardaba correctamente los datos convertidos de
análogo a digital.
P á g i n a | 103
4.5
Módulo SPI (Interfaz serial para periféricos).
Fig. 4.7. Modelo Simulink para comprobar funcionamiento módulo SPI
El modelo presentado en la figura 8.6 muestra el funcionamiento del
módulo SPI. El bloque denominado Read Duty Cycle es un bloque de los
Toolboxes de Simulink llamado Memory Copy Block. Este es el encargado
de leer la dirección de memoria 0x8FF0. El bloque C28x3x SPI XMIT es el
encargado de transmitir el valor leído, mientras que el bloque C28x3x SPI
RCV es el encargado de recibir el valor. El valor que se recepciona por el
bloque SPI RCV se envía al bloque ePWM. Luego el ciclo de trabajo de la
señal ePWM es controlada por el valor enviado desde el bloque SPI RCV. El
periodo de la señal se establece en 6400 ciclos de reloj.
El ciclo de trabajo de la señal PWM puede variar entre 25%, 50% y 75%
según lo que se seleccione en el modelo de Simulink. Una característica que
se investigó es la opción de cambiar el ciclo de trabajo mientras se ejecute
el código en el procesador. Esto se puede realizar si se selecciona la opción
“Write” en el software Embedded IDE Link. Esta opción nos permite escribir
un valor determinado en la dirección de memoria determinada por el bloque
Memory Copy Block, que en este caso es 0x8FF0.
P á g i n a | 104
Visualización cambio del ciclo de trabajo de la señal PWM modificando
Duty Change Cycle.
Fig. 4.8. Ciclo de trabajo 25%.
Fig. 4.9. Ciclo de trabajo 50%.
Fig. 4.10. Ciclo de trabajo 75%.
P á g i n a | 105
Fig. 4.11. Generación de señal de reloj SPICLK a través de la programación con
el modelo creado en Simulink para prueba de módulo SPI.
Fig. 4.12 Señal de SPICLK del módulo SPI a través de programación con
Matlab/Simulink.
P á g i n a | 106
Fig. 4.13. Señal de dato que sale del bloque SPI XMIT a través de la
programación con el modelo creado en Simulink para prueba de módulo SPI.
Fig. 4.14. Forma de onda del dato generado por del módulo SPI a través de
programación con Matlab/Simulink.
P á g i n a | 107
4.6
Módulo GPIO (Puertas de entrada/salida de propósito general).
Fig. 4.15. Modelo Simulink para comprobar funcionamiento módulo GPIO
Fig. 4.16 Ventana de configuración módulo GPIO
P á g i n a | 108
El modelo en Simulink mostrado en la figura anterior es bastante básico,
y simplemente es una comprobación de la generación de código ejecutable en
el microprocesador y su tarjeta de desarrollo, sirve básicamente para
comprobar el funcionamiento de las GPIO, el modelo muestra un tren de pulsos
que es enviado al exterior a través de una GPIO configurada por el bloque
Digital Output.
Visualización de pruebas ejecutadas en laboratorio con el bloque ePWM
(Modulador de ancho de pulso mejorado).
Fig. 4.17. Generación de onda PWM a través de la programación con el modelo
creado en Simulink (Ejecución de código en tarjeta).
Fig. 4.18. Forma de onda PWM obtenida con el osciloscopio.
P á g i n a | 109
Capítulo V
Conclusiones
P á g i n a | 110
5.1
Conclusiones.
En el presente trabajo de titulación se presentó el desarrollo de una
herramienta de programación para DSP. En específico un DSP (Procesador
Digital de Señales) TMS320F28335 de la empresa Texas
Instrument; fue
programado de una forma no convencional para crear una perspectiva diferente
al entendimiento del funcionamiento de dicho dispositivo y tener una forma
alternativa de programación a los DSP. También se presentó una descripción
detallada para la generación de código a partir de un modelo realizado en
Simulink, se profundizó en las opciones de configuración necesarias para
generar código integrado para una plataforma de hardware específico. Se
trabajo en la verificación y coherencia de los algoritmos desarrollados y su
ejecución
en
el
respectivo
hardware,
observar
sus
limitaciones
y
potencialidades.
El objetivo principal de este trabajo era desarrollar una herramienta de
programación a través de Matlab/Simulink para una familia de DSP específicos,
el objetivo alcanzado fue generar código para los módulos ADC, SCI, SPI, PWM
y GPIO del sistema.
Con esto se comprobó que el hardware que se dispuso para el proyecto
funciona con las herramientas presentadas. Si bien los modelos de Simulink
eran aplicaciones básicas de los módulos sirvió para comprobar si se podía
realizar la programación de esta manera. Se explotó el gran potencial que tiene
esta herramienta debido a que Matlab/Simulink posee una gran cantidad de
funciones en variados campos de la ingeniería desde procesamiento de señales
hasta biotecnología. Por esto la utilización de Matlab/Simulink como plataforma
de programación es una excelente elección para desarrollar aplicaciones que
resulten complejas de realizar a través de programación convencional de un
lenguaje de más bajo nivel.
Como trabajo futuro se tiene como objetivo programar la memoria Flash y
la totalidad de los módulos o periféricos del DSP, crear modelos para una
aplicación en particular como por ejemplo control de motores, procesamiento de
imágenes, creación de interfaz básica, etc. El principal objetivo futuro es
desarrollar esta herramienta para su utilización en el entendimiento del
funcionamiento del DSP.
P á g i n a | 111
5.2
Referencias.
[1]
The Mathworks Inc.”Simulink-Simulation and Model Based Design”
[2]
The Mathworks Inc. (Versión 2010). Matlab R2010a. [Programa de
computador]. Recuperado Septiembre 2010, The Mathworks Inc.
[3]
The Mathworks Inc. “Real-Time Workshop” Real-Time Workshop® User’s
Guide (Versión 7.5), recuperado septiembre 2010, The Mathworks Inc.
[4]
The Mathworks Inc. “Embedded IDE Link™” Embedded IDE Link™
User’s Guide (Versión 4.2), recuperado septiembre 2010, The Mathworks
Inc.
[5]
The Mathworks Inc. “Embedded IDE Link™” For Use with Texas
Instruments Code Composer Studio™ (Versión 4.2), recuperado
septiembre 2010, The Mathworks Inc.
[6]
The Mathworks Inc. “Target Support Package™” Target Support
Package™ User’s Guide (Versión 4.2), recuperado septiembre 2010, The
Mathworks Inc.
[7]
Texas Instrument. “Code Composer Studio” Code Composer Studio
User’s Guide (Versión 3.3), recuperado octubre 2006, www.ti.com.
[8]
Texas Instrument. “TMS320F28335 (DSCs)” TMS320F28335 (DSCs)
Data Manual of Digital Signal Processor (Versión 2007), recuperado
marzo 2010, focus.ti.com/lit/ds/sprs439h/sprs439h.pdf.
P á g i n a | 112
5.3
ANEXO.
Programas necesarios para la ejecución del proyecto.
Matlab 7 versión 2010 (R2010a).
Sub-programas de Matlab.
o Real-Time Workshop.
o Embedded IDE Link.
o Target Support Package.
IDE de los DSP Texas Instrument.
Programa Code Composer Studio v3.3
Driver de la tarjeta XDS100 usb emulator.
Link de descarga drivers tarjeta XDS100 de la página www.ti.com. (Es
necesario crear una cuenta en la página para acceder a las opciones de
descarga).
http://software-dl.ti.com/dsps/dsps_registered_sw/sdo_ccstudio/CCSv3/Drivers/XDS100_v1_1_RTM.exe
Driver chip FTDI de la tarjeta XDS100 para comunicación serial.
http://www.ftdichip.com/Resources/Utilities.htm#MProg
Hyperterminal Private Edition (Hyperterminal virtual para Win vista y Win 7).
http://download.cnet.com/HyperTerminal-Private-Edition/3000-2155_4-10966768.html

Documentos relacionados