Upload
others
View
10
Download
0
Embed Size (px)
Citation preview
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 á g i n a | 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 á g i n a | 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 PLL. ................................................................................................................. 59
3.3.7 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
3.3.8.3.8 Bloque GPIO Puerta de entrada/salida de propósito general. ............... 89
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 IIntroducción
P á g i n a | 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 á g i n a | 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 á g i n a | 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 á g i n a | 5
Capítulo IIIntroducción al procesamiento digital de
señales
P á g i n a | 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 á g i n a | 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 á g i n a | 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 á g i n a | 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 IIIHerramientas 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 Soporte tarjeta (Board Support).
o 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 OFFset.
Este 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) (1)
Fig. 3.21. Qualification sampling period prescaler
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 d