TESIS DE MAESTRÍA EN CIENCIAS

Anuncio
cenidet
Centro Nacional de Investigación y Desarrollo Tecnológico
Departamento de Ingeniería Electrónica
TESIS DE MAESTRÍA EN CIENCIAS
“Estudio de Sistemas Digitales de Altas Prestaciones para
Aplicaciones en Electrónica de Potencia”
Presentada por:
Alfredo González Ortega
Ingeniero Mecánico Eléctrico por la UNAM
Como requisito para la obtención del grado de:
Maestría en Ciencias en Ingeniería Electrónica
Director de tesis:
Dr. Jorge Hugo Calleja Gjumlich
Co-Director de tesis:
Dr. Marco Antonio Oliver Salazar
Cuernavaca, Morelos, México.
30 de Abril de 2008
cenidet
Centro Nacional de Investigación y Desarrollo Tecnológico
Departamento de Ingeniería Electrónica
TESIS DE MAESTRÍA EN CIENCIAS
“Estudio de Sistemas Digitales de Altas Prestaciones para Aplicaciones en
Electrónica de Potencia”
Presentada por:
Alfredo González Ortega
Ingeniero Mecánico Eléctrico por la UNAM
Como requisito para la obtención del grado de:
Maestría en Ciencias en Ingeniería Electrónica
Director de tesis:
Dr. Jorge Hugo Calleja Gjumlich
Co-Director de tesis:
Dr. Marco Antonio Oliver Salazar
Jurado:
Dr. Carlos Daniel García Beltrán – Presidente
M.C. José Martín Gómez López – Secretario
Dr. Jorge Hugo Calleja Gjumlich – Vocal
Dr. Víctor Manuel Alvarado Martínez – Vocal Suplente
Cuernavaca, Morelos, México.
30 de Abril de 2008
Expediente
cenidet
C8nIn>_,.".¡ rI8l_tJfI_
Deurrollo
Tecnológico
isIs Nmi de&bm..
Y
)
T«IIqa
r;0G)@)
ImillGeamlItFmiIiI_~
SUBSECRETARIA DE EDUCACiÓN SUPERIOR
DIRECCiÓN GENERAL DE EDUCACiÓN SUPERIOR TECNOLÓGICA
CENTRO NACIONAL DE INVESTIGACiÓN Y DESARROLLO TECNOLÓGICO
SECRETARíA
EDUCACiÓN
DE
PÚBLICA
ANEXO No.11
M10
ACEPTACiÓN DEL DOCUMENTO DE TESIS
Cuernavaca, Mor., a 16 de Abril de 2008
Dr. Gerardo V. Guerrero Ramírez
Jefe del departamento
de Ciencias en Ingeniería Electrónica
Presente.
Arn: Dr. Jorge Hugo Calleja Gjumlich.
Presidentedel Consejodel Posgrado
de Cienciasen Ingenieríaen Electrónica
Nos es grato comunicarle, que conforme a los lineamientos para la obtención del grado de Maestro en Ciencias
de este Centro, y después de haber sometido a revisión académica la tesis titulada "Estudio de Sistemas
Digitales de Altas Prestaciones para Aplicaciones en Electrónica de Potencia" realizada por el alumno
Alfredo González Ortega y dirigidapor el Dr. Jorge Hugo Calleja Gjumlich y co-dirigida por el Dr. Marco
Antonio Oliver Salazar habiendo realizado las correcciones que le fueron indicadas, acordamos ACEPTAR el
documento final de tesis, así mismo le solicitamos tenga a bien extender el correspondiente oficio de autorización
de impresión.
l'
Atentamente
La Comisión de Revisión de Tesis
I
\~\>!
Dr. Carlos Daniel García Beltrán
Revisor
e.e.p.
\\,\~
M.C. José Ma(!ín Gómez López
Re~sor
Subdirección Académica
Departamento de Servicios Escolares
Directores de tesis
Interior Intemado Palmira sin Col. Palmira, C. P. 62490 Cuernavaca, Morelas, México.
Tel. 777 36277 70 con 10 líneas Fax: Ext. 427
www.cenidet.edu.mx
.
cenidet
SUBSECRETARíA DE EDUCACiÓN SUPERIOR
DIRECCiÓN GENERAL DE EDUCACiÓN SUPERIOR TECNOLÓGICA
CENTRO NACIONAL DE INVESTIGACiÓN Y DESARROLLO TECNOLÓGICO
SECRETARíA
DE
EDUCACiÓN
PÚBLICA
ANEXO No. 12
M11
AUTORIZACiÓN DE IMPRESiÓN DE TESIS
Cuernavaca, Mor., a 21 de Abril de 2008
c. Alfrecio González Ortega
Candidato al grado de Maestro en Ciencias
en Ingeniería Electrónica
Presente.
Después de haber atendido las indicaciones sugeridas por la Comisión Revisora de la Academia de Ciencias de
la Computación en relación a su trabajo de tesis cuyo título es: "Estudio de Sistemas Digitales de Altas
Prestaciones para Aplicacionesen Electrónicade Potencia",me es grato comunicarleque conformea los
lineamientosestablecidospara la obtencióndel gradode Maestroen Cienciasen este centro se le concedela
autorizaciónpara que procedacon la impresiónde su tesis.
Atentame~
~
-..r--. ~ j ',¿¿v--.
t/-L¿;Jah1
C. Dr. Gerardo v!GuerrElfORamírez
Jefe del Departamento de Ciencias en Ingeniería Electrónica
.
c.c.p.
Subdirección Académica
Presidente del Consejo del Posgrado de Ciencias en Ingeniería en Electrónica
Departamento de Servicios Escolares
Expediente
Interior InternadoPalmirasin Col. Palmira,C. P. 62490Cuernavaca,Morelos,México.
Tel. 777 362 77 70 con 10 líneasFax: Ext.427
www.cenidet.edu.mx
Dedicatoria
Con todo mi amor dedico este trabajo a mi esposa “Peque”, quien ha estado conmigo
en todo momento, mostrándome solidaridad incondicional, dándome palabras de
aliento. Gracias por apoyarme en etapas difíciles. A mis hijos, Néstor Alfredo,
Sandra Ximena† (angelito mío), Eréndira Giovana y Regina Paola que son lo más
extraordinario que tengo, llenando mi vida de orgullo y felicidad. ¡Los amo!
A mis padres, Gloria Ortega Rodríguez y Zenén González Rodríguez, quienes
se han forjado a través de sus facultades hacia el trabajo y la responsabilidad.
Ustedes con su ejemplo me han guiado hasta lo que hoy representa mi persona.
Gracias por su amor, confianza y apoyo.
A mis hermanos Aide, Edilberto y Mayra, quienes saben que a pesar de las
carencias de la vida no se puede limitar la superación académica y personal. Gracias.
En memoria de Don Alfredo González†, campesino de oficio supo formar a su
manera toda una familia con ejemplo de trabajo y fortaleza física. Descansa en paz
abuelito.
A mis padres adoptivos, Teresa Becerril y Jorge Flores, de quienes he
obtenido palabras de amor y superación, con su ejemplo han inculcado en mi el apoyo
y la unión familiar. Agradezco sus consejos.
A mi entrañable hermano, Carlos Flores Becerril por todos los momentos
compartidos y experiencias fraternales a lo largo de 32 años de conocernos. ¡Amigo,
Gracias!
"Piensa que cada día es, por sí solo, una vida" (Séneca)
Agradecimientos
A mi esposa, “Peque”, gracias por darme ánimo en seguir adelante, casi me rendí ante la
adversidad, pero siempre estuviste ahí conmigo. A mis hijos que son el gran motivo de mi
vida. A mis padres, por su amor y desinterés, gracias dios por tener la dicha de tenerlos.
A mi asesor de tesis, Dr. Hugo Calleja Gjumlich, por ofrecerme la oportunidad y
confianza en el desarrollo de este proyecto. Al Dr. Marco A. Oliver Salazar por avalar la
propuesta de tesis. Infinitamente les agradezco sus valiosos comentarios para enriquecer
este trabajo y manifestarme todo su apoyo y amistad para la culminación del mismo.
Al comité de revisores integrado por: Dr. Carlos D. García Beltrán, Dr. Víctor M.
Alvarado Martínez y M.C. José M. Gómez López, gracias por sus comentarios y sugerencias
que aportaron mejoras al contenido de este trabajo.
Un especial agradecimiento a las administraciones de las jefaturas correspondientes
al Dr. Gerardo Vela (Era mística), Dr. Enrique Quintero-Mármol (Era Baby-Steps), Dr.
Abraham Claudio (Era Golden), gracias “ex-jefes”. A la nueva era “Platinum” correspondiente
a la jefatura del Dr. Gerardo V. Guerrero, en la que finalmente concluyen mis estudios.
Gracias a todos por brindarme su amistad y atinados consejos. Al Dr. Arnoldo Bautista y al
Dr. Jaime E. Arau, les agradezco el apoyo que me facilitaron para realizar los estudios de
maestría.
A mis compañeros de generación con quienes compartí momentos gratos, a los
digitaleros: Roxana, Alonso y Pablo; a los controleros: Fabiola, Lizeth, Ricardo, “Tano”,
Manuel, Raúl, Armando; a los potenciometros: Christian, Alex, Eumir, “Ingeorge”, Jorge y el
“Compiri”. Gracias por echarme la mano.
Por temor a omitir algún nombre, quiero agradecer de manera general a todos los
compañeros del Departamento de Electrónica y personal de los demás departamentos que
integran el cenidet y que me han apoyado de manera desinteresada en el desarrollo de mi
formación tanto laboral como académica. Gracias por brindarme su amistad.
Hago un paréntesis para mencionar a un amigo incondicional de la familia, que ha
estado en las buenas y en las malas, me refiero a Ysrrael Ruiz Samudio, gracias por la
amistad que nos brinda, si no lo hubiera conocido tal vez la historia sería otra.
A todos los alumnos que me conocen les agradezco las muestras de compañerismo. Los
invito a seguir en el rumbo académico, no hay mayor satisfacción que la superación personal.
A dios, por darme la oportunidad de vida.
Tabla de Contenido
Lista de Figuras .............................................................................................................................. iv
Lista de Tablas................................................................................................................................ vi
Abreviaturas y Acrónimos ............................................................................................................ vii
Resumen.......................................................................................................................................... ix
Abstract............................................................................................................................................. x
Capítulo 1: Introducción .......................................................................................................... 1
1.1 Prefacio ................................................................................................................................. 1
1.2 Planteamiento del problema ............................................................................................... 2
1.3 Solución Propuesta............................................................................................................... 2
1.4 Estado del Arte ..................................................................................................................... 3
1.5 Objetivos................................................................................................................................ 4
1.5.1 Objetivo General ........................................................................................................... 4
1.5.2 Objetivos particulares................................................................................................... 4
1.6 Aportación y alcances del trabajo...................................................................................... 4
1.7 Organización de la tesis....................................................................................................... 5
Capítulo 2: Características de operación del DSP .......................................................... 7
2.1 DSP: Pasado, presente, y futuro........................................................................................ 7
2.2 Ventajas de los DSP............................................................................................................ 9
2.3 Características Generales de los DSP .............................................................................. 10
2.3.1 Algoritmos .................................................................................................................... 11
2.3.2 Velocidad de Reloj ...................................................................................................... 12
2.3.3 Velocidad de muestreo............................................................................................... 12
2.3.4 Formatos de datos ...................................................................................................... 13
2.3.4.1 Números en punto fijo......................................................................................... 13
2.3.4.2 Números en punto flotante................................................................................. 15
2.3.5 Ancho de palabra de datos........................................................................................ 15
2.3.6 Paralelismo ................................................................................................................... 16
2.3.7 Arquitectura del DSP .................................................................................................. 17
2.3.7.1 Multiplicador-Acumulador................................................................................... 18
2.3.7.2 Unidad Aritmético Lógica (ALU)........................................................................ 19
2.3.7.3 Desplazador ......................................................................................................... 19
2.3.7.4 Desborde y saturación........................................................................................ 19
2.3.7.5 Generador de Direcciones de Dato (DAG)...................................................... 20
2.3.8 Juego de Instrucciones .............................................................................................. 20
2.3.9 Arquitectura de Memoria ........................................................................................... 21
2.3.9.1 Arquitectura Von Neumann................................................................................ 22
2.3.9.2 Arquitectura Harvard........................................................................................... 22
i
TABLA DE CONTENIDO
2.3.9.3 Memorias de Acceso Múltiple............................................................................ 24
2.3.10 Periféricos integrados e Interfaces de I/O............................................................ 26
2.4 Criterios de Selección del DSP.......................................................................................... 28
2.5 Conclusiones........................................................................................................................ 30
Capítulo 3: Estudio comparativo de los DSP .................................................................. 31
3.1 Principales fabricantes de DSP........................................................................................ 31
3.2 Fabricante Analog Devices ................................................................................................ 32
3.2.1 Familia Blackfin............................................................................................................ 32
3.2.2 Familia TigerSHARC .................................................................................................... 34
3.2.3. Familia SHARC............................................................................................................ 35
3.2.4. Familia ADSP-21xx..................................................................................................... 36
3.3 Fabricante Freescale .......................................................................................................... 37
3.3.1 Familia Star Core MSC711x/ MSC81xx .................................................................... 37
3.3.2 Familia DSP563xx........................................................................................................ 38
3.3.3 Familia 56800/E (DSP5685x, 56F8xx y 56F8xxx) .................................................. 39
3.4 Fabricante Lucent Technologies....................................................................................... 40
3.4.1 Familia DSP16xx.......................................................................................................... 40
3.4.2 Familia DSP16xxx........................................................................................................ 40
3.5 Fabricante Texas Instruments.......................................................................................... 41
3.5.1 Serie C2000: familia TMS320C24x ........................................................................... 41
3.5.2 Serie C2000: familia TMS320C28x ........................................................................... 42
3.5.3 Serie C5000: familia TMS320C54x ........................................................................... 42
3.5.4 Serie C5000: familia TMS320C55x ........................................................................... 43
3.5.5 Serie C6000: familia TMS320C62x ........................................................................... 44
3.5.6 Serie C6000: familia TMS320C64x ........................................................................... 44
3.5.7 Serie C6000: familia TMS320C67x ........................................................................... 45
3.6 Conclusiones........................................................................................................................ 46
Capítulo 4: Herramientas de Desarrollo y Plataformas de DSP............................... 47
4.1 Software de Desarrollo ...................................................................................................... 47
4.1.1 Lenguaje ensamblador............................................................................................... 48
4.1.2 Lenguaje “C” ................................................................................................................ 51
4.1.3 Code Composer Studio (IDE, Integrated Development Environment) ............... 52
4.1.4 Matlab / Simulink ........................................................................................................ 54
4.2 Plataformas de DSP............................................................................................................ 55
4.2.1 Configuraciones Hardware......................................................................................... 57
4.2.2 TMS320LF2407 (EVM)................................................................................................ 58
4.2.3 TMS320C6X (EVM- PCI) ............................................................................................. 59
4.2.4 TMS320F2812 (eZdsp) ............................................................................................... 60
4.2.5 TMS320C6416 (DSK) .................................................................................................. 61
4.2.6 TMS320C6711 (DSK) .................................................................................................. 62
4.2.7 MCK240 DSP Motion Control Kit ............................................................................... 63
4.3 Conclusiones........................................................................................................................ 64
Capítulo 5: Aplicaciones ......................................................................................................... 65
5.1 Aplicaciones, un enfoque general .................................................................................... 65
5.1.1 Aplicaciones de DSP de bajo costo........................................................................... 67
ii
TABLA DE CONTENIDO
5.2 Conversión Analógico-Digital ............................................................................................ 70
5.3 Generación de señales PWM............................................................................................. 72
5.4 Transformaciones de Clark y Park ................................................................................... 74
5.5 Adaptaciones experimentales ........................................................................................... 75
5.5.1 Proceso de desarrollo ................................................................................................. 77
5.6 Conclusiones........................................................................................................................ 82
Capítulo 6: Conclusiones y trabajos futuros.................................................................... 83
6.1 Conclusiones........................................................................................................................ 83
6.2 Sugerencias a trabajos futuros......................................................................................... 85
ANEXOS……………….…………………………..…………………………………......……….87
Anexo A
Tabla A-1. Principales familias de DSP del mercado. …..………………..……..………...….89
Anexo B
Tabla B-1.
Tabla B-2.
Tabla B-3.
Tabla B-4.
Tabla B-5.
Tabla B-6.
Familias de DSP del fabricante Analog Devices.………………….……....…….90
Familia de DSP 563xx/MSC del fabricante Freescale. …….……..……..…..….91
Familia de DSP 56F800/E del fabricante Freescale. …….……..…..…….....….92
Familia de DSP TMS320C2000 del fabricante Texas Instruments. …...…..….93
Familia de DSP TMS320C5000 del fabricante Texas Instruments. …...…..….94
Familia de DSP TMS320C6000 del fabricante Texas Instruments. …...…..….95
Anexo C
Instrucciones de Instalación del Software CCS Versión 3.1 IDE.…………………....…..….96
Ambiente de Desarrollo CCS-IDE.…………………....……………………………………….100
Anexo D
Real Time Workshop (RTW).…………………....…............................................................….107
Anexo E
TMS320C2407 EVM. …………………....…..........................................................................….108
TMS320C6x EVM. ………………….................................................................................….….109
TMS320F2812 eZdsp. ……………...................................................................................…….110
TMS320C6416 DSK. ……………......................................................................................…….111
TMS320C6711 DSK. ……………......................................................................................…….112
MCK240 V1.0 Board. …………….....................................................................................…….113
Tabla E-1. Plataformas de DSP disponibles que se han puesto en operación. ....…....….114
Referencias…………...………………………..…………………………………......……….115
iii
Lista de Figuras
CAPITULO 1.
CAPITULO 2.
Figura 2-1. Evolución de la tecnología de los DSP.................................................................. 8
Figura 2-2. Configuración típica de un sistema de procesamiento digital......................... 10
Figura 2-3. Proceso de conversión analógico-digital. ........................................................... 13
Figura 2-4. Representación de números en punto fijo. (A) Ancho de palabra. (B) Entero
Positivo. (C) Entero Negativo. (D) Entero y fraccional. (E) Fraccional Positivo. (F)
Fraccional Negativo............................................................................................................... 14
Figura 2-5. Representación de números en punto flotante................................................. 15
Figura 2-6. Tipos de DSP según su paralelismo. ................................................................... 17
Figura 2-7. Ruta de datos representativo de un DSP de punto fijo (DSP5600x). ............ 18
Figura 2-8. Arquitectura Von-Neumann.................................................................................. 22
Figura 2-9. Arquitectura Harvard............................................................................................ 23
Figura 2-10. Arquitectura Hardvard modificada.................................................................... 23
Figura 2-11. Arquitectura Harvard mejorada. ....................................................................... 24
Figura 2-12. DSP con varios bancos de memoria internos. ............................................... 25
Figura 2-13. Arquitectura del TMS320C3x de Texas Instruments. ................................... 28
Figura 2-14. Clasificación de los DSP según su representación aritmética....................... 29
CAPITULO 3.
Figura 3-1. Diagrama a bloques del procesador ADSP-BF561 de doble núcleo............... 33
Figura 3-2. Arquitectura del DSP TigerSHARC....................................................................... 34
Figura 3-3. Arquitectura de la familia de procesadores ADSP-21xx. ................................ 37
Figura 3-4. Arquitectura general del núcleo SC140. ............................................................. 38
Figura 3-5. Configuración básica de la familia DSP563xx.................................................... 39
CAPITULO 4.
Figura 4-1. Interacción entre el lenguaje ensamblador y herramientas de desarrollo. .. 49
Figura 4-2. Diagrama de flujo del proceso de diseño en CCS............................................. 53
Figura 4-3. Generación del código fuente a partir de un modelo en Simulink................ 55
Figura 4-4. Esquema de conexión de la PC al DSP............................................................... 57
CAPITULO 5.
Figura 5-1. Microcontrolador Vs. DSP en el control de motores......................................... 67
Figura 5-2. Sistema de control de un motor en lazo abierto............................................... 68
Figura 5-3. Sistema de control de un motor en lazo cerrado.............................................. 69
Figura 5-4. Sistema basado en DSP para la medición de diversos tipos de variables. ... 70
iv
LISTA DE FIGURAS
Figura 5-5. Implementación física de un convertidor Buck-Boost. ..................................... 70
Figura 5-6. Circuito esquemático de un sensor de corriente............................................... 71
Figura 5-7. Circuito esquemático de un sensor de voltaje. ................................................. 71
Figura 5-8. PWM a partir de un circuito de comparación. ................................................... 72
Figura 5-9. Librería con los bloques de periféricos del C281x. ........................................... 73
Figura 5-10. Librería con bloques para el control digital de motores del C281x. ............ 74
Figura 5-11. Diagrama a bloques del sistema de control de velocidad............................. 75
Figura 5-12. Circuito eléctrico del encoder del motor. ......................................................... 76
Figura 5-13. Circuito eléctrico para amplificar la señal PWM del DSP............................... 76
Figura 5-14. Circuito eléctrico de potencia para motor DC de 12V. .................................. 77
Figura 5-15. Implementación física del controlador de velocidad en lazo cerrado. ........ 77
Figura 5-16. Control de velocidad en lazo cerrado de un motor de CD vía RTDX........... 78
Figura 5-17. Subsistema del Bloque “Referencia de Velocidad”......................................... 78
Figura 5-18. Subsistema del Bloque “Corrección Velocidad”. ............................................. 79
Figura 5-19. Subsistema del Bloque “Medición Velocidad”. ................................................ 79
Figura 5-20. Interfase gráfica GUI para modificar la velocidad del motor DC. ................ 80
Figura 5-21. Set-Point Vs Velocidad alcanzada ..................................................................... 81
CAPITULO 6.
v
Lista de Tablas
CAPITULO 1.
CAPITULO 2.
CAPITULO 3.
Tabla 3-1. Principales fabricantes del mercado. ………………………………………….31
CAPITULO 4.
CAPITULO 5.
Tabla 5-1. Algoritmos útiles en el procesamiento digital de señales. ………………..….66
Tabla 5-2. Opciones de salida en un DSP de acuerdo al tipo de aplicación. ………..….69
Tabla 5-3. Comparación de valores de velocidad GUI Vs. Osciloscopio. ………….....….81
CAPITULO 6.
vi
Abreviaturas y Acrónimos
3G
ADC
ALU
ANSI
API
ARM
ASSP
BQFP
cd
CAN
CCS
CD
CI
COFF
CPM
CPU
DAC
DAG
DDR
DMA
DMC
DARAM
DRAM
DSC
DSK
DSP
ECCP
EPROM
EVM
FIFO
FIR
FPGA
GPIO
GUI
HPI
IBM
IDE
I2C
IIR
Third Generation
Analogic Digital Converter
Arithmetic Logic Unit
American National Standards Institute
Application Programming Interface
Ada Reference Manual
Application Specific Standard
Bumpered Quad Flat Pack
Corriente Directa
Controller Area Network
Code Composer Estudio
Compact Disk
Circuito Integrado
Common Object File Format
Communications Processor Module
Central Process Unit
Digital Analogic Converter
Data Address Generator
Double Data Rate
Direct Memory Access
Digital Motor Control
Dual Access Random Access Memory
Dynamic Random Access Memory
Digital Signal Controller
Dsp Starter Kit
Digital Signal Processor
Error Correction Co-Processor
Erasable Programmable Read Only Memory
Evaluation Module
First In, First Out
Finite Impulse Response
Field Programmable Gate Arrays
General Purpose Input Output
Graphic User Interface
Host Port Interface
International Business Machines Corporation
Integrated Development Environment
Inter Integrated Circuit
Infinite Impulse Response
vii
ABREVIATURAS Y ACRÓNIMOS
IPMSG
ISA
JTAG
LSI
MAC
MCU
MFLOPS
MIPS
MPU
PC
PCI
PDA
PID
QEP
PWM
RAM
RISC
ROM
RPM
RTDX
RTW
SCI
SIMD
CISC
SoC
SPI
SARAM
SDRAM
SRAM
SVM
TDM
TI
TLC
TQFP
UART
USB
VLIW
VLSI
Interior Permanent-Magnet Synchronous Generator
Industry Standard Architecture
Join Test Action Group
Large Scale Integration
Multiply-Accumulate
Microcontroller Unit
Mega Floating Operations per Second
Mega Instructions per Second
Microprocessor Unit
Personal Computer
Peripheral Component Interconnect
Personal Digital Assistant
Proportional–Integral–Derivative controller
Quadrature Encoder Pulse
Pulse Width Modulation
Random Access Memory
Reduced Instruction Set Computer
Read Only Memory
Revolutions Per Minute
Real Time Data Exchange
Real Time Workshop
Serial Communication Interface
Single Instruction Multiple Data
Complex Instruction Set Computer
System on Chip
Serial Port Interface
Single Access Static Random Access Memory
Synchronous Dynamic Random Access Memory
Static Random Access Memory
Space Vector Modulation
Time Division Multiplexing
Texas Instruments
Target Language Compiler
Thin Quad Flat Pack
Universal Asynchronous Receiver/Transmitter
Universal Serial Bus
Very Large Instruction Word
Very Large Scale Integration
viii
Resumen
Este trabajo se enfoca al estudio de las tecnologías basadas en procesadores digitales de señales
DSP, con la intención de establecer criterios para la selección de estos dispositivos, y para
sistematizar tareas de aplicación en las áreas de electrónica de potencia y de control. El trabajo no
sólo consiste en la recopilación de información técnica. También dará un ahorro considerable de
trabajo a las personas que se involucren en el diseño y tareas de procesamiento digital de señales
con necesidades específicas, ya que el objetivo principal es la sistematización de la información
mediante el uso de manuales de procedimiento, hojas de datos y notas de aplicación.
Como resultado del estudio de estas tecnologías, se definen aspectos teóricos sobre la
operación y características de los DSP, abordando tópicos tales como tipos de arquitectura del
DSP y memoria, algoritmos, formato de datos, periféricos, etc. Además, se hace un análisis
comparativo entre los fabricantes dominantes en el mercado, para establecer las tareas en las que
es más conveniente el uso de una u otra familia de DSP. Se hace énfasis en la familia C2000 de
Texas Instruments, la cual se identificó como la más apropiada para las aplicaciones que se
desarrollan en el Departamento de Electrónica del CENIDET. El trabajo práctico consiste en la
puesta en marcha de diferentes tarjetas de DSP, con su respectivo software de desarrollo, de tal
forma que se pueda establecer qué tarjetas son idóneas para trabajos relacionados a las áreas de
potencia o control. Como resultado del análisis hecho con cada tarjeta, al final se define trabajar
con la tarjeta TMS320F2812 eZdsp y el software de desarrollo Code Composer Studio Ver. 3.0. Se
concluye con la implementación de un algoritmo de control de velocidad en un motor de corriente
directa a través un controlador PID, haciendo uso de las librerías de Simulink. Otras tareas
adicionales fueron la generación de señales PWM (Pulse Width Modulation) para controlar más
eficientemente al motor. Se implementó un lazo de control con un encoder óptico y la lectura de
los pulsos se hizo a través del módulo QEP (Quadrature Encoder Pulse).
Con estas pruebas se pudo validar de manera práctica la adaptación de algoritmos de
procesamiento digital de señales en un DSP. Las herramientas que proporcionan CCS y Simulink
permiten la instalación de aplicaciones con mayor facilidad; es decir, se hace uso de una
programación modular con base en bloques.
Palabras clave: DSP, procesador digital de señal; PWM, modulación por ancho de pulso; QEP,
codificador de pulsos en cuadratura.
ix
Abstract
This thesis presents a study about new technologies based on digital signal processors
(DSPs). It is aimed at establishing criteria to properly select the device best suited for a specific
task in the fields of power electronics and automatic control. The study involved collecting a vast
amount of technical information: operation manual, application notes, data sheets and so forth. The
information has been systematized for quick reference and easy access. Therefore, prospective
users involved in the design of digital systems will save time.
As part of the analysis, a comparison analysis was also performed. The comparison was
between the products from manufacturer with the largest market shares: Texas Instruments and
Analog Devices. The comparison took into account aspects such as DSP architectures, word
formats, peripherals, etc.
The DSP model C2000 Texas Instruments family received special attention because it was
the more appropriate platform for the application currently developed in the electronics
department. It was found that the TMS320F2812 eZdsp board, and the Code Composer Studio
development software (Ver. 3.0), are a suitable choice.
The experimental stage involved the closed loop operation of a small DC motor. Its speed
was regulated using a PID algorithm developed in Simulink. It was also necessary to perform other
tasks, such as the PWM signal generation, the implementation of optical encoder to read the pulses
in the QEP module.
The main advantages offered CCS and Simulink are that a user can develop a complete
application without having to recur to assembly language or C programming.
Key Words: DSP, Digital Signal Processor; PWM, Pulse Width Modulation; QEP, Quadrature
Encoder Pulse.
x
Capítulo 1
Introducción
1.1 Prefacio
El rápido desarrollo de la tecnología de circuitos integrados, empezando con la integración a larga
escala (LSI, Large Scale Integration), y ahora la muy larga escala de integración (VLSI, Very
Large Scale Integration) de circuitos electrónicos, ha estimulado el desarrollo de computadoras
digitales más potentes, económicas y relativamente rápidas. Esto ha hecho posible construir
sistemas digitales complejos, capaces de realizar funciones y tareas que normalmente eran
demasiado difíciles y/o costosas con circuitos analógicos. De aquí que muchas de las tareas del
procesamiento de señales, que convencionalmente se realizaban analógicamente, se realicen hoy
mediante hardware digital, haciendo posible la modificación de una función programada sin
modificar el funcionamiento del circuito, lo que a final de cuentas lo hace más económico, y a
menudo más confiable.
Los avances en la tecnología de fabricación de circuitos integrados también abren nuevas
áreas de desarrollo basadas en DSP, tales como sensores inteligentes, visión de robots,
automatización y electrónica de potencia. Además, se definen las bases para continuar los avances
en áreas tradicionales del procesamiento digital de señales, tales como: música, voz, radar, video,
audio y comunicaciones.
Actualmente, los DSP se han convertido en elementos muy comunes en el diseño
electrónico, sustituyendo en algunas aplicaciones a los microprocesadores y microcontroladores.
Principalmente se encuentran procesadores DSP en circuitos relacionados con las
telecomunicaciones, sistemas de audio y en algoritmos avanzados de control de motores.
1
CAPÍTULO 1. INTRODUCCIÓN
1.2 Planteamiento del problema
Con frecuencia se observa que en diversos campos de estudio del programa de maestría en
ciencias en ingeniería electrónica del CENIDET, se requieren dispositivos de procesamiento
digital de altas prestaciones, tales como los procesadores DSP, FPGA o microcontroladores.
Actualmente estas soluciones conllevan un considerable margen de incertidumbre, ya que no se
sabe cuál es la mejor elección. El problema se agrava en buena medida porque los programas de
estudio no se involucran de manera suficiente en temas de diseño y empleo de sistemas digitales o
en el procesamiento de señales. Como resultado, los estudiantes que emprenden proyectos de esta
naturaleza deben dedicar un largo tiempo a familiarizarse con las herramientas. Entre las
dificultades que deben encarar está el hecho de que la información es insuficiente, o se encuentra
diseminada en una serie de documentos: manuales, notas de aplicación, etc.
1.3 Solución Propuesta
Resulta conveniente entonces desarrollar un proyecto que sistematice la información relacionada
con los sistemas de procesamiento digital de señales, enfocados a aplicaciones de Electrónica de
Potencia y de Control. Esta sistematización debe tomar en cuenta las aplicaciones “típicas” de
estas especialidades, tal como se desarrollan en el CENIDET, incluyendo actividades como la
transformada de Clark, de Park, modulación PWM, vectorial, etc., y definiendo los dispositivos
adecuados a las aplicaciones. La identificación y recopilación de información técnica y recursos de
programación, incluyendo notas de aplicación, compiladores de alto nivel, etc.; y el
establecimiento de procedimientos para la puesta en marcha de los sistemas de desarrollo, son
algunas de las tareas contenidas en el desarrollo de tesis. Los mecanismos para acceder a ella son a
través de un compendio de archivos digitales que se han ido recopilando y que están disponibles
en un disco compacto CD.
La solución ahora parece ser más firme, ya que se dispuso de varios kits de desarrollo y
software de programación para la operación y puesta en marcha de los DSP. Actualmente, la
mayor parte de los procesadores de señales digitales que se utilizan en el CENIDET son del
fabricante Texas Instruments (TI). Es conveniente, entonces, que el estudio se enfoque a sistemas
compatibles con los de esta compañía, ya que así se aprovecharán de mejor manera los recursos
existentes. De igual forma se utilizarán los recursos de software de cada kit de desarrollo, para
tener un mejor funcionamiento de las tarjetas.
2
1.4 ESTADO DEL ARTE
1.4 Estado del Arte
Si hoy se remontara al primer DSP producido por TI, el TMS32010, que operaba a una velocidad
de 10 MHz, ejecutando en paralelo 5 MIPS en un solo ciclo de 200 nS, comparándolo con un DSP
de tercera generación, se vería el gran desarrollo tecnológico que han obtenido estos dispositivos.
Los DSP ofrecen ahora mejores características que sus antecesores, ya que estos nuevos
procesadores se diseñan para ser escalables, es decir, para que puedan trabajar en paralelo con
otros dispositivos similares.
Otro punto destacable en los primeros procesadores era el gran consumo de energía que
tenían; por ejemplo el PENTIUM 4, consume como máximo 40 Watts y requiere de un ventilador
para disipar el calor y bajar la temperatura de trabajo. En cambio el consumo de un DSP es
realmente muy bajo, alrededor de 4.25 Watts en la actualidad.
En el análisis del estado del arte se hizo una revisión de artículos de los cuales se puede
percibir cómo estos dispositivos digitales intervienen cada vez más en tareas asociadas a control de
motores, convertidores de corriente, sensores, etc. A continuación se citan algunos ejemplos de
estas aplicaciones:
Implementación de un convertidor de frecuencia para controlar un motor de inducción (IM)
[1]. Dicho desarrollo usa la tarjeta DS1102 del fabricante dSPACE la cual, combinada con el
software de diseño, análisis y optimización de algoritmos de control, ofrece un excelente ambiente
de experimentación que reduce considerablemente los tiempos de desarrollo. Además, para una
fácil manipulación es totalmente programable desde el ambiente de diagrama de bloques de
Simulink. En buena medida evita tener que escribir código de bajo nivel y su correspondiente
depuración, permitiendo incluso una integración con MATLAB, lo cual ofrece una ventaja extra.
Otro ejemplo a citar es la implementación que se hizo para controlar la velocidad de un
sistema de generación por viento, usando un generador IPMSG [2] (Interior Permanent-Magnet
Synchronous Generator). En dicha aplicación se utiliza un sistema de prueba con un servomotor de
AC, el cual se usa en lugar de la turbina de viento, y para el algoritmo de control se usa el DSP
TMS320C32.
De la revisión que se hizo del estado del arte, se encontró una evidente tendencia al uso de
DSP, concretamente en aquellos del fabricante Texas Instruments quien tiene una clara ventaja
sobre sus oponentes, ofreciendo en el mercado toda una gama de familias de DSP para adecuarlo a
cualquier necesidad, con un costo de medio a bajo. Al final de este documento se encuentran otras
referencias en las cuales se detallan algunas aplicaciones con DSP. [3],[4],[5],[6],[7],[8].
3
CAPÍTULO 1. INTRODUCCIÓN
1.5 Objetivos
1.5.1 Objetivo General
Realizar un estudio que permita establecer los criterios de selección de dispositivos digitales de
alto desempeño, para sistematizar tareas de aplicación en las áreas de electrónica de potencia y de
control.
1.5.2 Objetivos particulares
•
Realizar un análisis general sobre el funcionamiento, arquitectura y el estado que guardan
actualmente los procesadores digitales de Señales DSP, con el fin de asimilar su tecnología.
•
Realizar un estudio comparativo entre los principales fabricantes del mercado, que permitan
conocer sus familias de DSP y sus herramientas de diseño.
•
Recopilar en un disco compacto documentos técnicos; manuales de procedimiento, hojas de
datos, notas de aplicación, etc., referentes a tecnologías de DSP.
•
Estudiar algunas tareas típicas: cálculo de transformadas de Clark y Park, funcionalidades para
la generación de modulación PWM y conversión analógico-digital.
•
Validar el desempeño de uno de los kits de DSP, y probar de manera práctica un algoritmo que
controle un motor de corriente directa en lazo cerrado mediante técnicas de modulación PWM.
1.6 Aportación y alcances del trabajo
En primera instancia, se pretende suplir algunas de las carencias y dificultades que ha presentado
la desaparición de la línea de investigación en electrónica digital en el CENIDET.
Además, con este estudio, en cuanto a recursos digitales de alto desempeño se refiere, se
tendrá una metodología de su uso y las aplicaciones que se pueden implementar en este tipo de
dispositivos y establecer los criterios de selección. Concretamente, se usan los kits con los que
cuenta el Departamento de Electrónica. Mediante uno de ellos se probó un proceso que permitió
validar de manera práctica una aplicación y verificar la compatibilidad que existe entre ellos en lo
que a herramientas de software y hardware se refiere.
El trabajo va más allá de la simple recopilación de información técnica. Así pues, el
desarrollo de esta tesis les dará un considerable ahorro de trabajo a aquellas personas que tengan
necesidades específicas, ya que el esfuerzo de sistematización es considerable a través de
documentos técnicos que ayuden a la programación y puesta en marcha de los kits de desarrollo
disponibles de Texas Instruments. Finalmente, el estudio permitirá planificar el crecimiento de los
laboratorios con herramientas adicionales para los trabajos del Departamento de Electrónica.
4
1.7 ORGANIZACIÓN DE LA TESIS
1.7 Organización de la tesis
El documento de tesis se encuentra dividido en seis secciones. En este primer capítulo se
definieron los objetivos y la conveniencia de desarrollar el trabajo. En el segundo capítulo se
encontrarán las características de operación y conceptos básicos de los DSP respecto a su
arquitectura, memoria, periféricos, etc., que le permitirá al usuario tener un mejor criterio de
selección de los DSP de una configuración en particular. El tercer capítulo ofrece un estudio
comparativo que involucra a los fabricantes más competitivos que participan en el mercado de los
DSP, se ofrece un panorama general sobre las arquitecturas de las principales familias.
El cuarto capítulo comprende las herramientas de desarrollo necesarias para poder montar
un algoritmo o aplicación en un DSP, CCS es uno de los sistemas de software útil para la puesta en
marcha de algunas de las tarjetas de DSP con las que cuenta el Departamento de electrónica.
Matlab y Simulink del fabricante Mathworks se incorporan en este análisis ya que contienen
dentro de su estructura algoritmos para el procesamiento digital de señales o control, así como
herramientas de trabajo que hacen más fácil las tareas de programación en el DSP. Se debe
escoger el sistema más adecuado a las necesidades de la aplicación, aunque ello implique tener que
desarrollar diversas rutinas en los lenguajes de programación adecuados. Es por eso que en este
mismo capítulo se ofrecen las características generales de cada una de las tarjetas con las que se
trabajó, con el fin de dar al usuario un panorama que le ayude a usar la plataforma de DSP que
más le convenga a su aplicación.
En el quinto capítulo se da un amplio soporte para llevar a cabo aplicaciones reales que le
ayudarán al usuario a entender mejor a la familia TMS320C2000 de Texas Instruments, con la cual
se hizo la implementación de un controlador de velocidad para un motor de corriente directa esta
familia en particular fue la que mejor se adapta a las necesidades que tiene el Departamento de
Electrónica del CENIDET.
Finalmente, el capítulo seis abarca las conclusiones generales del trabajo y algunos puntos
relevantes a considerar para trabajos futuros.
5
CAPÍTULO 1. INTRODUCCIÓN
6
Capítulo 2
Características de operación del DSP
2.1 DSP: Pasado, presente, y futuro
En 1982, surgió el primer procesador digital de señal viable. Con 25 años de evolución y
existencia los DSP aumentan cada vez más su poder de cálculo, rapidez e integración. No hay que
pasar por alto el impacto de la tecnología en este lapso de tiempo. La industria ha usado 9.5
billones de DSP en diversos productos que han mejorado la vida del ser humano a un grado
inimaginable para aquellos que ayudaron a desarrollar la era de los DSP. Si se piensa que los
últimos 25 años fueron una muestra, sólo hay que esperar y ver lo que pasará en los próximos 25
años. Los DSP están proliferando en nuevas áreas en el mercado de los semiconductores,
demostrando que evolucionan para la innovación que cambiará la vida cotidiana.
La relación entre los procesadores digitales de señales con otras tecnologías como los
aceleradores FPGA, han permitido sistemas en un solo encapsulado (SoC). El FPGA es un
dispositivo electrónico programable de muy alta densidad, la cual se determina en base al número
de compuertas de que dispone, lo que los hace ideales para el diseño digital de circuitos. La
habilidad de manejar la lógica a un nivel de compuertas permite construir e implementar
eficientemente una función deseada. Si simultáneamente se reserva al FPGA aquellas subfunciones de un algoritmo, el DSP puede concentrar su eficiencia en el desarrollo de las
operaciones matemáticas. Esta innovación ha llevado a descubrimientos exponenciales en espacios
de aplicación prácticamente impensables, tales como el entretenimiento, audio, video y
comunicaciones, etc. Pero éstos son solo una muestra de las múltiples aplicaciones.
Los años 90’s se caracterizaron por la introducción en masa de los DSP al mercado
comercial. A partir de aquí se ha librado una extensa batalla entre fabricantes de DSP, vendedores
de ASIC, desarrolladores de procesadores de propósito general y microcontroladores. Los
procesadores de propósito general, tal como el Pentium de Intel, no son una alternativa real para la
implementación de tareas de procesamiento digital de señal, debido al costo y el consumo de
energía. El microcontrolador (MCU, Microcontroller Unit) es una computadora montada en un
circuito integrado que se usa para controlar dispositivos electrónicos. Este es un microprocesador
que enfatiza la autosuficiencia y la efectividad en costo. Un microcontrolador típico contiene la
memoria y las interfaces necesarias para una simple aplicación, mientras que un microprocesador
de propósito general requiere de circuitos adicionales para proporcionar esas funciones. Los
microcontroladores se encuentran en un sinnúmero de equipo electrónico, estos son una vasta
mayoría del total de procesadores vendidos. Alrededor de 50% son simples controladores,
mientras que un 20% han sido incorporados dentro de los DSP.
7
CAPÍTULO 2. CARACTERÍSTICAS DE OPERACIÓN DEL DSP
Los ASIC fueron desarrollados para funciones más especiales tal como decodificación
MPEG, en la cual se han establecido estándares que permiten un largo número de aplicaciones que
usan una misma función básica[9]. El problema de estos dispositivos es largo ciclo de diseño y el
alto costo de inversión para su desarrollo.
Los DSP por su parte ofrecen una solución intermedia entre los ASIC y los procesadores de
propósito general, permitiendo un rendimiento especializado y configurable por aplicación. A
pesar de que esta tecnología ha sido primariamente implementada a sistemas comerciales, el
potencial aplicativo en plataformas reconfigurables se está explorando cada vez más.
En el futuro próximo, el uso de los DSP será determinante, por ejemplo los sistemas de
visión incorporados a los automóviles, permitirán que éstos puedan manejarse de manera
autónoma; los sistemas de tele-conferencia podrán ser en tiempo real evitando así el retraso
telefónico. En campos tan cotidianos como el hogar habrá cambios significativos; los sistemas de
seguridad podrán dar un informe completo a través de cámaras que alertarán si algo extraño
sucede, y será a través del reconocimiento de imágenes que se permitirá el acceso a las personas.
Los sistemas GPS tendrán de manera similar tareas de la ubicación exacta de personas o cosas
como el automóvil.
El enfoque de los próximos veinticinco años es profundo, de manera que aumentarán los
desafíos. Para traer portabilidad, conectividad e inteligencia a cada dispositivo electrónico, las
compañías de semiconductores necesitarán ofrecer soluciones completas, que involucren
hardware, software y herramientas de diseño en el procesamiento de señales. Con la
especialización tecnológica y colaboración de la industria, los desarrollos tendrán que tener
mejores rendimientos, precio y consumo de energía [10]. En la figura 2-1 se puede observar la
cronología de los DSP a partir de que éstos se desarrollaron.
Figura 2-1. Evolución de la tecnología de los DSP.
8
2.2 VENTAJAS DE LOS DSP
2.2 Ventajas de los DSP
El procesamiento digital de señales ofrece diversas ventajas sobre los sistemas tradicionales
analógicos. El más significativo es que los sistemas basados en DSP son capaces de lograr un
menor costo en la implementación de algunas tareas que podrían ser difíciles o imposibles usando
sistemas analógicos. También su versatilidad para cambiar valores o consignas en un programa los
hace altamente competitivos. Ejemplos de dichas aplicaciones incluyen la síntesis y
reconocimiento de lenguaje, módems de alta velocidad con corrección de error de código, etc.
Todas estas tareas involucran una combinación de control y procesamiento de señales (tomando
decisiones respecto a bits o instrucciones recibidos) [11]. Otras ventajas adicionales sobre los
sistemas analógicos son:
Estabilidad, repetitividad y comportamiento previsible. En ocasiones se observa que en un
sistema analógico algunas condiciones lo hacen variar, tales como cambios en la temperatura de
los componentes, que modifican su valor; a esto se agregan las derivas por el envejecimiento de
los componentes y las tolerancias de éstos. Otro factor a tomar en cuenta es el calibrar estos
sistemas para que operen con precisión. La salida de un sistema de procesamiento digital de señal
no depende de factores ambientales o variaciones en el valor nominal de los componentes, es
posible obtener sistemas con una respuesta exacta, conocida y sin variación de un equipo a otro.
Tamaño. El tamaño de los componentes analógicos varía con sus valores; por ejemplo, el tamaño
de un capacitor de 100uF difiere de uno de 10pF, en la implementación de un filtro analógico. En
contraste, en un filtro digital implementado en DSP bastaría con programar sus coeficientes.
Funciones especiales. Hoy en día, algunos de los DSP de última generación cuentan con
periféricos apropiados para ejecutar algoritmos característicos de ciertas aplicaciones para el
procesamiento de señales de audio, de imagen o video y que no podrían implementarse por medios
analógicos.
Programabilidad. El sistema DSP puede reprogramarse en campo para ejecutar nuevos
algoritmos. En contraste, con los sistemas analógicos que requieren de diversos componentes
físicos para realizar diferentes tareas.
9
CAPÍTULO 2. CARACTERÍSTICAS DE OPERACIÓN DEL DSP
Inmunidad al ruido en la transmisión y almacenamiento de la información. Las señales
digitales son mucho más inmunes al ruido que las analógicas, no obstante, también pueden verse
afectadas por este factor. En cuanto a capacidad de almacenamiento, esta es cada vez es mayor en
menor área física del DSP.
Es conveniente tomar en consideración que para aplicaciones sencillas la complejidad de
un sistema analógico es menor, lo que se traduce en un menor costo. Si lo que se necesita son
aplicaciones de tiempo real para un muestreo de la señal, es necesario realizar todos los cálculos
que requiere el algoritmo. Para señales de gran ancho de banda, la frecuencia de muestreo puede
ser tan elevada que impida su cálculo mediante técnicas digitales.
2.3 Características Generales de los DSP
La estructura general que describe a un sistema para procesamiento digital de señales responde al
diagrama de bloques que se muestra en la figura 2-2.
Figura 2-2. Configuración típica de un sistema de procesamiento digital.
La señal analógica se obtiene a través de un sensor que transforma una magnitud física
en una señal eléctrica. Un convertidor analógico-digital convierte la señal analógica en una
secuencia numérica. Estas muestras llegan a un elemento procesador en el que se ejecuta un
algoritmo de procesamiento digital. La salida de este procesador se introduce a un convertidor D/A
para nuevamente obtener una señal analógica, la que a su vez se puede transformar en una
magnitud física por medio de un actuador.
Un aspecto sumamente importante es que las características del elemento procesador
estarán impuestas por los requerimientos de las aplicaciones en qué se han de utilizar, y en la
naturaleza de las operaciones que es preciso realizar de la señal. La operación básica es el
producto acumulativo de dos secuencias, a la cual se le denomina operación MAC
10
2.3.1 ALGORITMOS
(multiply and acumulate), esta se manifiesta en aplicaciones como: filtrado, análisis espectral,
correlaciones, etc. Los factores del producto pueden ser, dependiendo del caso, muestras de una
señal, coeficientes de un filtro o constantes precalculadas como tablas de senos y cosenos.
En resumen, si se consideran las condiciones que impone la aplicación, las características
generales que debe reunir el elemento procesador son:
•
•
•
•
Deben ser dispositivos con una arquitectura que permita procesar las muestras de entrada a
una gran velocidad, ya que en ocasiones son en tiempo real.
Los algoritmos de procesamiento digital de señal tienen una elevada carga computacional en
los que predomina la operación MAC, por lo que este elemento procesador debe tener una
gran capacidad de cálculo.
Dado el gran volumen de datos a procesar deben permitir un manejo accesible de los
mismos.
Tendrán que ser programables para hacer posible la implementación de distintos tipos de
algoritmos de procesamiento digital de señal.
2.3.1 Algoritmos
Los sistemas de procesamiento digital de señales frecuentemente se caracterizan por la utilización
de un algoritmo que especifica las operaciones aritméticas a realizar con los datos. La
implementación del algoritmo se puede realizar mediante software en un microprocesador
ordinario o un procesador de señal programable, o mediante hardware a la medida.
Para un sistema programado el algoritmo se implementa como un programa que se ejecuta
secuencialmente, lo cual se traduce en:
•
•
•
•
Una gran flexibilidad al poder utilizar un mismo sistema para implementar varios algoritmos.
Los algoritmos pueden alcanzar un alto grado de complejidad.
El hecho de ejecutar el programa en forma secuencial empeora el rendimiento.
Existen aplicaciones donde se requiere procesamiento paralelo de señales.
Dentro de la implantación del algoritmo en software se encuentran dos alternativas. La
primera de ellas utilizando microprocesadores de propósito general de altas prestaciones, como por
ejemplo el Pentium de Intel, Power Pc 601 de Motorola e IBM, etc. Los sistemas que se basan en
este tipo de procesadores son muy complejos porque usan una serie de periféricos y elementos
externos para su implementación. De ahí que se conozcan como procesadores de propósito
general. Además, estas altas prestaciones no siempre se traducen en una elevada potencia de
cálculo o una rápida ejecución de operaciones tipo MAC, debido a las restricciones en la ejecución
de operaciones en punto flotante.
La otra alternativa para la implementación del algoritmo en software son los procesadores
digitales de señal, DSP, los cuales tienen una arquitectura específicamente diseñada para estas
aplicaciones (arquitectura Harvard). Son dispositivos con prestaciones superiores y de menor costo
que los de propósito general. Además, disponen de herramientas de desarrollo flexibles que
permiten acelerar el proceso de diseño.
11
CAPÍTULO 2. CARACTERÍSTICAS DE OPERACIÓN DEL DSP
En lo que respecta a la implementación de algoritmos en hardware, ésta se realiza mediante
circuitos integrados (CI) diseñados a la medida, integrando en el dispositivo sólo aquellas
funciones necesarias para la aplicación concreta a que van destinados. Este hardware puede tomar
múltiples formas. Una de ellas son los dispositivos estándar para aplicaciones específicas (ASSP,
por sus siglas en inglés). Como su nombre indica, se trata de C.I. que implementan un algoritmo
concreto. Una ventaja es que pueden operar con señales de alta frecuencia, pero al mismo tiempo
se dificulta el diseño del dispositivo por lo que los algoritmos implementados son sencillos, de una
estructura regular y con un número limitado de bits de operación. Un ejemplo de los ASSP son los
filtros digitales programables, los cuales integran un conjunto de multiplicadores en hardware que
operan en paralelo para implementar un filtro FIR.
Finalmente, los DSP reúnen una serie de elementos que los hacen diferentes del resto de
los procesadores. Estas características se manifiestan en:
•
•
•
•
La arquitectura Harvard del CPU, que dispone de recursos que posibilitan las realizaciones
de las operaciones MAC de forma rápida, y la utilización de modos de direccionamiento
especiales para el manejo de buffers.
Un juego de instrucciones optimizado para aplicaciones de tratamiento digital de señal, entre
las que destacan aquellas que le permiten realizar un control eficiente de lazos.
Una arquitectura de memoria que le permita obtener las instrucciones y datos a procesar a la
velocidad que los demanda el CPU
La inclusión de un conjunto de periféricos en el mismo dispositivo que le permita
comunicarse con el exterior.
2.3.2 Velocidad de Reloj
Los sistemas electrónicos digitales se caracterizan por su velocidad de reloj. La velocidad de reloj
se refiere a la velocidad a la cual el sistema ejecuta sus unidades de trabajo más básicas. Para los
sistemas de DSP, la relación de la velocidad del reloj y la velocidad de muestreo es una de las
características más importantes usadas para determinar cómo será implementado el sistema. Es
decir, esta relación determina parcialmente el monto de hardware necesario para implementar un
algoritmo con una complejidad dada [9].
2.3.3 Velocidad de muestreo
Una característica clave de los sistemas DSP es su tasa de muestreo (sample rate). El muestreo es
el proceso de convertir una señal en tiempo continuo a una señal en tiempo discreto, en intervalos
de muestreo también discretos. Las amplitudes de las señales en tiempo discreto se cuantifican en
valores digitales con un ancho de palabra N=2n (donde n es el número de bits) dado. Un ADC
realiza los procesos de muestreo y cuantificación de una señal como se observa en la figura 2-3.
12
2.3.4. FORMATOS DE DATOS
fM se puede replicar con exactitud con los valores muestreados si la tasa de muestreo, fs, es superior
al doble de la frecuencia máxima de la señal de entrada. Es decir, fs ≥ 2 fM [12].
Figura 2-3. Proceso de conversión analógico-digital.
Es un error frecuente y extendido creer que una misma señal muestreada con una tasa
elevada se reconstruye mejor que una que se muestrea con una tasa inferior. Esto es falso (siempre
que las tasas empleadas cumplan el criterio de Nyquist, naturalmente). El proceso de muestreo
(que no debe ser confundido con el de cuantificación) es, desde el punto de vista matemático
perfectamente reversible, esto es, su reconstrucción es exacta, no aproximada. Dicho de otro
modo, desde el punto de vista matemático al que se refiere el teorema de muestreo de NyquistShannon, la reconstrucción de una señal de 10 kHz es idéntica tanto si se obtiene de una tasa de
muestreo de 25000 muestras por segundo como de una de 50000 muestras por segundo. No aporta
nada incrementar la tasa de muestreo una vez que esta cumple el criterio de Nyquist. Cuando la
cantidad de señales muestreadas es excesivamente mayor se produce el efecto de sobremuestreo,
donde no se aporta nueva información y por el contrario, hay mayor demanda de memoria RAM y
mayor tiempo de procesamiento. Esto puede ser un fuerte inconveniente en aplicaciones de
procesamiento en tiempo real.
Si se utiliza una frecuencia menor a la establecida por el teorema de Nyquist, se produce
una distorsión conocida como traslape espectral (aliasing). El traslape impide recuperar
correctamente la señal cuando las muestras de ésta se obtienen a intervalos de tiempo demasiado
largos. La forma de la onda recuperada presenta pendientes muy abruptas. Para ampliar los
aspectos teóricos sobre el teorema del muestreo se pueden consultar las referencias [13-14].
2.3.4 Formatos de datos
Una de las características más importantes que determinan la idoneidad de un DSP para una
aplicación dada, es el tipo de formato y número de bits de los datos con que realiza los cálculos
matemáticos. Con relación al tipo de formato de datos, los DSP pueden operar con números en
punto fijo, punto flotante o ambos.
2.3.4.1 Números en punto fijo
Algunos DSP solo son capaces de operar con números enteros, salvo que se considere la existencia
de un punto binario, mediante el cual se escalan los valores enteros para de esta forma obtener
13
CAPÍTULO 2. CARACTERÍSTICAS DE OPERACIÓN DEL DSP
números fraccionarios. Este factor de escala es igual a 2-bp donde bp es la posición del punto
binario. El DSP realiza las operaciones de suma o multiplicación como si se tratara de números
enteros, sin considerar este factor de escala. Es responsabilidad del programador interpretar la
posición del punto binario. En la figura 2-4 se encuentran algunos ejemplos de la representación de
números en aritmética de punto fijo.
Figura 2-4. Representación de números en punto fijo. (A) Ancho de palabra. (B) Entero Positivo.
(C) Entero Negativo. (D) Entero y fraccional. (E) Fraccional Positivo. (F) Fraccional
Negativo.
Al desplazar el punto decimal a la izquierda, utilizando más bits para la parte fraccionaria,
la precisión aumenta, pero disminuye el margen de valores de la representación. Puesto que el
tamaño de la palabra de datos es fijo, la situación del punto binario será una situación de
compromiso entre la precisión a obtener y el margen de valores a cubrir. El programador debe
utilizar el mayor número de bits para la parte fraccionaria (máxima precisión) que permita
representar todo el intervalo de valores que toma una variable.
Si durante el procesamiento, un número en punto fijo aumenta demasiado para poder ser
representado con el número de bits disponibles para la parte entera, el programador debe realizar
un escalado descendente del número mediante un desplazamiento a la derecha, perdiendo los bits
de menor peso y por tanto disminuyendo la precisión. Si por el contrario el número en punto fijo
disminuye demasiado, el número de bits utilizados en la parte fraccionaria puede ser insuficiente.
El programador entonces deberá hacer un desplazamiento a la izquierda para aumentar la
precisión.
14
2.3.4.2 NÚMEROS EN PUNTO FLOTANTE
En ambos casos el programador debe tomar en consideración como se ha ido desplazando
el punto binario, restaurando todos los números de punto fraccionario a una misma escala en una
etapa posterior. Esto convierte la programación en una tarea muy tediosa.
La utilización de rutinas en punto fijo que emulan las operaciones punto flotante (que
permiten manejar cómodamente números fraccionarios) es muy costosa en cuanto a tiempo de
ejecución del código, lo que hace imposible su uso en aplicaciones de tiempo real. [9]
2.3.4.2 Números en punto flotante
Otros procesadores disponen de un CPU capaz de operar directamente con números en punto
flotante. La aritmética en punto flotante es un mecanismo más flexible que la de punto fijo, ya que
con la primera los diseñadores tienen acceso a un intervalo de valores mucho más amplio y a una
mejor precisión. Como ejemplo ver la figura 2-5. Esto facilita la programación, ya que no es
necesario preocuparse por el escalamiento. Un número de punto flotante se representa mediante
una mantisa y un exponente, siendo su Valor = mantisa · 2exponente
Figura 2-5. Representación de números en punto flotante.
La mantisa es un número fraccionario, mientras que el exponente determina la posición del
punto binario. En estos procesadores es el propio hardware del CPU el que realiza los
escalamientos mencionados anteriormente, quedando reflejada la posición del punto binario en el
exponente. Esto facilita enormemente la programación.
2.3.5 Ancho de palabra de datos
Como se dijo anteriormente, la clasificación de los DSP se realiza con base en el tipo de aritmética
que utilizan para realizar los cálculos matemáticos dividiéndose en DSP de punto fijo y DSP de
punto flotante. Dentro de cada grupo se clasifican, además, según el ancho de su palabra de datos.
15
CAPÍTULO 2. CARACTERÍSTICAS DE OPERACIÓN DEL DSP
El CPU de los procesadores de punto fijo requiere un hardware más simple que el de punto
flotante. Esto se traduce en una reducción del costo unitario del DSP, haciéndolos idóneos para
aplicaciones de gran consumo que no requieran alta resolución. Esta simplicidad del CPU también
reduce el consumo del dispositivo y su tamaño, un aspecto sumamente interesante para
aplicaciones portátiles como los teléfonos móviles. La utilización de un CPU poco sofisticado
permite liberar área del CI para incluir bancos internos de memoria RAM de mayor tamaño o
incluso bancos EPROM o FLASH, donde grabar el código de la aplicación. Además, suelen
disponer de un conjunto de periféricos más variado. De hecho, los procesadores destinados a
aplicaciones específicas (control de motores, sistemas de tratamiento de voz, etc.), son
procesadores de punto fijo.
La anchura de la palabra de datos puede ser de 16, 24 o 32 bits. Esto tiene una importante
repercusión en el costo, ya que influye poderosamente en el tamaño y número de terminales del
dispositivo, y en los bancos de memoria externa conectados al mismo. Por lo tanto, los diseñadores
intentan utilizar el CI con el menor ancho de palabra que su aplicación pueda tolerar.
Los DSP de punto flotante son dispositivos de escala alta, cuyo CPU dispone de hardware
específico para operar con datos de punto flotante. La anchura de la palabra con frecuencia es de
32 bits; si bien el uso de bits de guarda les permite operar en el interior del CPU con datos de 40
bits, esto no es obstáculo para que también puedan operar con datos en punto fijo. El área ocupada
por el CPU en este tipo de DSP es mayor que en el caso de los de los de punto fijo. Por este
motivo, la variedad de los periféricos que integran es menor, tratándose en la mayoría de los caos
de periféricos (puertos serie y paralelo, DMA) utilizados en la comunicación con elementos
externos (convertidores A/D y D/A). Los DSP más sofisticados disponen de puertos de
comunicación que permiten el montaje de redes para un procesamiento en paralelo.
Cada tipo de procesador es ideal para un ámbito de aplicaciones. Los procesadores de 16
bits de punto fijo son adecuados para sistemas de voz, como teléfonos, ya que trabajan con el
intervalo relativamente estrecho de las frecuencias de sonido. Las aplicaciones estero de alta
fidelidad tienen un intervalo de frecuencias más amplio, de forma general, los requerimientos
mínimos para este tipo de tareas serían un ADC de 16 bits y un procesador de 24 bits de punto fijo,
de esta forma se proporciona un intervalo suficientemente amplio para obtener la señal de alta
fidelidad y para poder manipular los valores que se obtienen al procesar la señal. El procesamiento
de imágenes, gráficos en 3D y simulaciones científicas tienen un intervalo dinámico mucho mas
amplio, por lo que se precisa de DSP de 32 bits con aritmética de punto flotante.
2.3.6 Paralelismo
Otra clasificación de los DSP es atendiendo al paralelismo de éstos, entendiendo como tal la
posibilidad de ejecutar múltiples instrucciones de forma concurrente. Este paralelismo puede ser
explícito o implícito. En la figura 2-6a se observa un DSP con paralelismo explícito que integra
varios CPU en un mismo encapsulado, los cuales se comunican entre si por medio de una memoria
compartida interna. Esta opción se ha convertido en una vía muerta, ya que es responsabilidad del
usuario el reparto del código a ejecutar por parte de cada uno de los CPU, lo que hace que sea
programar las rutinas de comunicación una tarea muy tediosa.
16
2.3.7 ARQUITECTURA DEL DSP
Un DSP con paralelismo implícito como el de la figura 2-6b dispone de un solo CPU con
múltiples unidades funcionales (por ejemplo, varias ALU, multiplicadores y conjuntos de
registros) de forma que se puedan ejecutar en paralelo varias instrucciones, cada una de ellas sobre
una unidad funcional. Para ello disponen de la palabra de instrucción de gran tamaño (Very Long
Instruction Word de 256 bits), en la que se empaquetan varias instrucciones individuales. La
planificación de qué instrucciones se van a ejecutar en paralelo en cada momento la realiza el
propio compilador, en un proceso totalmente transparente para el programador. Este tipo de
procesadores es sin duda la vanguardia de la tecnología de los DSP.
Figura 2-6. Tipos de DSP según su paralelismo.
2.3.7 Arquitectura del DSP
Para incrementar la velocidad de trabajo y optimizar la implementación de los algoritmos de
tratamiento digital de señal, el CPU de los DSP dispone de unidades computacionales específicas
que pueden trabajar en paralelo. Entre ellas es básico contar con las unidades MAC, que
posibilitan la ejecución repetitiva de este tipo de operaciones en un solo ciclo de instrucción.
Para lograr esta funcionalidad, los DSP incluyen un multiplicador y un acumulador
integrado dentro de la ruta de datos (data path). Algunos libros se refieren a la ruta de datos como
la unidad de procesamiento aritmética principal o ALU del procesador. La figura 2-7 muestra la
ruta de datos típica, en este caso se trata del procesador de punto fijo DSP5600x de Motorola, de
24 bits. Muchos de los DSP del mercado tienen una arquitectura interna similar al del DSP5600x,
donde las interconexiones y operaciones pueden variar. [9-10]
A continuación se describen cada uno de los elementos básicos que conforman toda la ruta
de datos, así como los multiplicadores y acumuladores.
17
CAPÍTULO 2. CARACTERÍSTICAS DE OPERACIÓN DEL DSP
Figura 2-7. Ruta de datos representativo de un DSP de punto fijo (DSP5600x).
2.3.7.1 Multiplicador-Acumulador
La multiplicación es una operación esencial en casi todas las aplicaciones con DSP y es el
multiplicador quien se encarga de realizar el producto de dos números en un solo ciclo máquina.
Mientras el multiplicador produce un nuevo resultado por ciclo de instrucción, el pipelining
interno del multiplicador puede tener un retardo de más de un ciclo, este retraso se denomina
latencia.
En algunos casos el multiplicador se integra con un sumador, formando una unidad
multiplicador-acumulador o MAC. Ambos elementos operan en paralelo para efectuar la operación
MAC, siguiendo un proceso segmentado en el que, mientras el multiplicador realiza el producto de
dos operandos la, ALU acumula el resultado del producto anterior. Esta unidad MAC puede operar
con números enteros o en punto flotante.
Al repetir las operaciones de acumulación de los productos puede ocurrir el desborde,
obteniéndose resultados erróneos. Para evitar esta situación se sobredimensiona el número de bits
de la ALU, añadiéndose un cierto número de bits extra, denominados bits de guarda, para realizar
la suma de los términos producto. Por ejemplo, en un DSP que opera con datos de 24 bits el
producto de dos números proporciona un resultado de 48 bits que se acumulará con los productos
anteriores. Para evitar el desborde, se sobredimensiona la ALU añadiendo 8 bits de guarda, con lo
que su tamaño final será de 56 bits. Este sobredimensionamiento de la ALU se aplica también al
registro o registros donde se almacena el valor del acumulador.
18
2.3.7.2 UNIDAD ARITMÉTICO LÓGICA (ALU)
2.3.7.2 Unidad Aritmético Lógica (ALU)
La unidad aritmético lógica del DSP es la encargada de ejecutar las operaciones aritméticas
básicas como suma, resta, incremento, etc. Además implementan operaciones lógicas tal como:
and, or, y not. La estructura básica de una unidad aritmética lógica consiste en utilizar
multiplexores con tantas entradas como operaciones realice dicha ALU.
2.3.7.3 Desplazador
Como resultado de la multiplicación y acumulación hay un crecimiento en la anchura de bits del
resultado aritmético. En muchos de los casos, el programador escogerá un subgrupo particular de
los bits de resultado para pasarlos a la siguiente etapa de procesamiento. Un desplazador en la ruta
de datos facilita esta selección escalando (multiplicando) su entrada por una potencia de dos (2n).
El desplazador se usa para preescalar un operando en la memoria de datos o el acumulador antes
de una operación en la ALU, o también para postescalar el valor del acumulador antes de
almacenarlo en la memoria de datos.
Una característica distintiva de los DSP es que sus desplazadores se implementan mediante
lógica combinacional (denominada barrel shifter) frente a la estructura clásica de un registro de
desplazamiento secuencial de otros tipos de procesadores. Esto permite realizar desplazamientos
en un solo ciclo de instrucción, independientemente del número de bits a desplazar. Algunos
procesadores tienen múltiples desplazadores con diversas capacidades en diferentes lugares de la
ruta de datos. Esto permite una mayor flexibilidad para realizar desplazamientos en los lugares en
que se está implementando cada algoritmo. Por ejemplo, el DSP5600x de la figura 2-6 tiene dos
desplazadores independientes: uno se usa para escalar los resultados de multiplicar-acumular del
acumulador a memoria, y el otro se usa para cambiar los valores dentro del acumulador,
incluyendo lógica y diferentes tipos de rotación.
2.3.7.4 Desborde y saturación
Muchas aplicaciones de DSP involucran la acumulación en series de valores. Esto sucede, por
ejemplo, en algoritmos de filtrado, cuando los elementos de una serie de datos se multiplican por
coeficientes y los productos resultantes se suman. Una situación de desborde se manifiesta cuando
al sumar dos números positivos se obtiene un resultado negativo y viceversa. Para solucionar esto,
los DSP incorporan técnicas de saturación aritmética agregando circuitos que al detectar una
situación de desborde durante la suma de dos números positivos, sustituyen la salida errónea por el
máximo valor positivo a representar. De igual manera, si la situación de desborde se da durante la
suma de dos valores negativos proporciona como salida el máximo valor negativo a representar.
El resultado sigue siendo erróneo, pero el error cometido en la operación es menor que en
caso de desborde. De esta forma se consigue un comportamiento similar al de un circuito
analógico en saturación. La saturación aritmética se puede realizar mediante una instrucción
especial o automáticamente. Algunos fabricantes denominan limitador al módulo que implementa
la saturación aritmética. [9]
19
CAPÍTULO 2. CARACTERÍSTICAS DE OPERACIÓN DEL DSP
2.3.7.5 Generador de Direcciones de Dato (DAG)
Otra característica que permite aumentar la velocidad de procesamiento aritmético en los DSP es
la disponibilidad de una o más unidades generadoras de direcciones de datos (DAG, Data Address
Generator), que calculan la nueva dirección necesaria para el acceso a los operandos. Estas
unidades constan de una unidad aritmética específica que opera en paralelo con el resto de las
unidades funcionales, y de un conjunto de registros que proporcionarán la dirección base y el
desplazamiento necesario para el cálculo de la nueva dirección.
Muchas de las aplicaciones de procesamiento digital de señal necesitan gestionar un buffer
con estructura FIFO (First In, First Out), donde se van almacenando las muestras que llegan del
exterior o de cálculos anteriores. En la gestión del movimiento de los datos dentro y fuera del
buffer, el programador mantiene un puntero de lectura y otro de escritura, los cuales se suelen
almacenar en registros de direcciones. El puntero de lectura apunta a la posición de memoria que
almacena el próximo dato que se va a leer del buffer, mientras que el puntero de escritura apunta a
la posición de memoria donde se va a almacenar el siguiente dato de entrada. Cada vez que se
realiza una operación de lectura o escritura, el puntero correspondiente avanza una posición,
debiendo comprobar el programador si dicho puntero ha llegado a la última posición de memoria
del buffer, inicializándose en tal caso para que apunte al comienzo del buffer. Esta comprobación
de si un puntero ha llegado al final del buffer y su inicialización en caso afirmativo consume
tiempo.
Para resolver este problema, las unidades DAG de muchos DSP realizan de forma
automática la comprobación del puntero del buffer y su ajuste relativo a la dirección de comienzo,
si es preciso, después de cada cálculo de dirección. Esta característica se denomina aritmética
modular, la cual hace referencia a que el resultado de salida se limita a un determinado intervalo,
de manera que si una operación de suma o resta supera tal rango, se obtendría el valor inicial de
dicho intervalo.
Finalmente, cabe señalar que las DAG de varios DSP permiten implementar modos de
direccionamiento pensados especialmente para la realización rápida de la transformada discreta de
Fourier.
2.3.8 Juego de Instrucciones
El juego de instrucciones es un factor clave a la hora de determinar no sólo qué operaciones son
posibles en un procesador, sino también cuando su uso es natural y eficiente. Las instrucciones
controlan y operan los datos del CPU, cómo se leen y almacenan estos en memoria, etc.
Las operaciones a realizar en el procesamiento digital de señal son poco variadas, y la
mayoría de las veces se limitan a multiplicaciones y sumas. Los DSP disponen de un juego de
instrucciones optimizado para este tipo de aplicaciones, con un número de instrucciones reducido,
implementándose frecuentemente como microprocesadores con arquitectura RISC. Los beneficios
de estas instrucciones especiales son dobles: por una parte permiten un código más compacto que
20
2.3.9 ARQUITECTURA DE MEMORIA
requiere menos espacio en memoria; por otra parte incrementan la velocidad de ejecución de
algoritmos específicos del procesamiento de la señal.
Estas instrucciones están optimizadas para las aplicaciones mencionadas, haciendo uso del
paralelismo interno del CPU. Así, una misma instrucción puede realizar el producto de dos
números almacenados en las posiciones de memoria especificadas por respectivos registros de
direcciones, acumular el resultado con el contenido de otro registro de datos e incrementar los
registros de direcciones.
Los algoritmos de DSP más frecuentes (convolución, correlación, multiplicación de
matrices, etc.) se realizan mediante la ejecución repetitiva de una misma instrucción o conjunto de
instrucciones denominadas lazos internos o núcleos de algoritmo.
La penalización en la ejecución que introducen las instrucciones de salto es especialmente
importante en núcleos pequeños. Puesto que la mayoría de estos bucles se ejecutan en un número
fijo de veces, el procesador debe utilizar un registro para almacenar el índice del lazo. El CPU
debe utilizarse para incrementar el índice y comprobar si se verifica la condición de repetición del
bucle. Si es así, se vuelve al comienzo del lazo mediante una instrucción de salto condicional.
Todos estos pasos penalizan la ejecución del lazo y utilizan registros innecesariamente.
Para solventar estos problemas, los DSP utilizan lazos hardware (zero overhead looping).
Éstos son estructuras de control especiales que repiten una sola instrucción, o conjunto de
instrucciones, un determinado número de veces. Son especialmente efectivos para el caso de lazos
de instrucción única, ya que se precisa traer la instrucción de memoria una única vez, liberando los
buses para realizar otras operaciones como el acceso a datos o coeficientes. La diferencia
fundamental con los lazos software es que un lazo hardware no pierde tiempo en incrementar o
disminuir un registro, comprobar si se ha llegado al final del lazo o saltar al origen de éste.
2.3.9 Arquitectura de Memoria
En las aplicaciones de procesamiento digital de señal se procesa un gran volumen de datos.
Debido a la limitación del número de registros disponibles en el CPU, normalmente estos datos
residen en memoria. Para poder realizar las operaciones MAC en un solo ciclo de instrucción es
preciso que los operandos utilizados estén disponibles en el momento de ejecutar dicha
instrucción. Normalmente la acumulación de productos se realiza sobre un registro del CPU, con
lo que el almacenamiento del resultado final en memoria no se considera parte del núcleo del
algoritmo. Es decir, la ejecución de una instrucción MAC implica la realización de tres accesos a
memoria:
-
Un primer acceso de búsqueda de código de la instrucción a ejecutar.
Dos accesos para la lectura de los operandos del producto
Teniendo en cuenta estas condiciones, los DSP estructuran su memoria de forma que se
pueda obtener la instrucción a ejecutar y sus operandos desde memoria al ritmo que los demanda
el CPU. De hecho, una de las características distintivas de los DSP es la forma en que organizan la
memoria, siendo ésta un factor crítico en las prestaciones del procesador. Dicha arquitectura está
21
CAPÍTULO 2. CARACTERÍSTICAS DE OPERACIÓN DEL DSP
orientada a posibilitar la realización simultánea, en un solo ciclo de instrucción, de los tres accesos
anteriormente mencionados.
2.3.9.1 Arquitectura Von Neumann
La arquitectura de memoria utilizada por la mayoría de los microprocesadores convencionales,
responde al modelo clásico de la arquitectura Von-Neuman, según la figura 2-8. Este modelo,
dispone de un único espacio de memoria en el que se almacena tanto el código a ejecutar como los
datos del programa. Los accesos a este espacio de memoria se realizan a través de un único grupo
de buses (bus de direcciones y bus de datos). Si bien se trata de una estructura muy simple, el
procesador sólo puede realizar un acceso (de lectura o escritura) a memoria durante cada ciclo de
instrucción.
Figura 2-8. Arquitectura Von-Neumann.
En esta situación aunque el CPU del procesador fuera capaz de ejecutar una instrucción
MAC en un solo ciclo de instrucción, como es el caso de los DSP, se requerirían tres accesos
secuénciales a memoria para completar su ejecución. Puesto que la duración de cada acceso es de
un ciclo instrucción, su ejecución se prolongaría durante tres ciclos.
Esta es una de las razones por la que los procesadores convencionales, aun teniendo una
elevada potencia de cálculo, no son los más indicados para la ejecución de algoritmos de
procesamiento digital de señal.
2.3.9.2 Arquitectura Harvard
La arquitectura Harvard, que se muestra en la figura 2-9, es una mejora que aumenta el ancho de
banda de los accesos, aumentando el paralelismo de la memoria. Para ello se dispone de dos
espacios de memoria independientes, uno para almacenar el código a ejecutar y el otro para los
datos. Cada uno de estos espacios dispone de su propio grupo de buses, con lo cual es posible
acceder simultáneamente a ambos espacios. La arquitectura Harvard original restringe el uso a que
se destina cada uno de los espacios de memoria (almacenamiento de código o de datos). Esta
solución no es del todo adecuada, ya que en instrucciones de tipo MAC es preciso acceder a dos
22
2.3.9.2 ARQUITECTURA HARVARD
operados en memoria, manteniéndose por tanto el cuello de botella en los accesos a memoria de
datos.
Figura 2-9. Arquitectura Harvard.
En la figura 2-10, esta restricción inicial se ha flexibilizado dando lugar a la arquitectura
Harvard modificada, en la cual se permite el almacenamiento de código y datos en el espacio de
memoria de programa. Puesto que los DSP suelen disponer de módulos de repetición de
instrucciones, una vez obtenido el código de la instrucción MAC, el espacio de memoria de
programa queda disponible para obtener uno de los operandos. Por tanto, a excepción de la
primera vez que se ejecuta dicha instrucción, las restantes completan su ejecución en un solo ciclo
de instrucción.
Figura 2-10. Arquitectura Hardvard modificada.
Otros enfoques eliminan la latencia introducida durante la ejecución de la primera
instrucción MAC desarrollando el concepto de la arquitectura Harvard. Para ello dividen a su vez
la memoria de datos en dos bancos de memoria, cada uno de los cuales dispone de su propio juego
23
CAPÍTULO 2. CARACTERÍSTICAS DE OPERACIÓN DEL DSP
de buses de datos y direcciones. Así se dispone de un banco de memoria de programa y dos bancos
de memoria para datos, denominados X e Y, respectivamente.
Estas tres memorias permiten al procesador realizar tres accesos independientes por cada
ciclo de instrucción (Figura 2-11):
- Una búsqueda de instrucción.
- Un acceso de datos al banco X
- Un acceso de datos al banco Y
Figura 2-11. Arquitectura Harvard mejorada.
En el caso de los DSP más recientes, desaparecen las restricciones referentes al uso al que
se destina cada uno de los espacios de memoria. En su lugar se dispone de un único espacio
compuesto por varios bancos de memoria independientes, cada uno con su propio grupo de buses.
Es responsabilidad del programador distribuir cada una de las secciones del programa sobre
distintos bancos para aprovechar al máximo el paralelismo del procesador.
Puesto que el aumento de múltiples buses de memoria fuera del circuito integrado es
costoso, los DSP generalmente proporcionan un único conjunto de buses externo. Los
procesadores con múltiples bancos de memoria normalmente proporcionan una pequeña cantidad
de memoria interna para cada uno de los bancos. Aunque los bancos de memoria pueden ampliarse
externamente, no se pueden realizar accesos externos múltiples en paralelo, debido a la ausencia
de un segundo grupo de buses para la memoria externa. Por tanto, si se precisan múltiples accesos
a memoria externa durante la ejecución de una instrucción, la ejecución de ésta se prolongaría a lo
largo de varios ciclos de instrucción ya que los accesos a memoria se realizarían de forma
secuencial.
2.3.9.3 Memorias de Acceso Múltiple
Existen otras alternativas no excluyentes al empleo de la arquitectura Harvard, que permiten
aumentar el ancho de banda de la memoria. Una de ellas se basa en el uso de memorias de acceso
múltiple. Se trata de memorias lo suficientemente rápidas para permitir varios accesos
24
2.3.9.3 MEMORIAS DE ACCESO MÚLTIPLE
secuénciales por cada ciclo de instrucción a través de un único grupo de buses, o bien utilizar
memorias multipuerto que permitan varios accesos concurrentes a memoria sobre dos o más
grupos de buses independientes, como se muestra en la figura 2-12.
Figura 2-12. DSP con varios bancos de memoria internos.
Tanto las memorias rápidas como las multipuerto se integran en el propio encapsulado del
DSP. En el caso de las memorias rápidas situarlas en el exterior implicaría la introducción de
retardos adicionales que podrían imposibilitar la realización de varios accesos en un solo ciclo;
mientras que para las memorias multipuerto, su situación en el exterior significaría elevar el
número de terminales de E/S del DSP, lo que incrementaría su costo y tamaño.
Independientemente del tipo de implementación, la capacidad de los bancos de memoria de acceso
múltiple suele ser reducida debido a la limitación del área disponible del circuito integrado.
Para completar en un solo ciclo la ejecución de la instrucción MAC (incluso el
almacenamiento en memoria del resultado de la acumulación) es preciso distribuir adecuadamente
las distintas partes del programa (código, operandos y resultados) de forma que no se sobrepase el
ancho de banda de cada banco. En caso contrario, la ejecución del programa se volvería más lenta.
Finalmente, otra de las alternativas para aumentar el ancho de banda de la memoria consiste en el
uso de memorias caché de programa, las cuales son pequeñas memorias que se agregan dentro del
núcleo del procesador, y que reducen la necesidad de acceder a memoria en la fase de búsqueda de
instrucciones. Eliminar este acceso permite un posible acceso que se empleará para leer o escribir
un dato, o bien puede eliminar los retardos asociados con una memoria de programa externa más
lenta.
Respecto a la interfase externa con memoria de un DSP, ésta puede caracterizarse
básicamente mediante tres propiedades; el número de puertos disponibles, la sofisticación y
flexibilidad de los mismos, y los requerimientos temporales.
Aunque cuenten con varios bancos independientes de memoria internos, la mayoría de los
DSP disponen de un único conjunto de buses externo. Es así porque extender los buses al exterior
implica encapsulados con un número de terminales muy elevado, lo que incrementaría
notablemente el precio final. Por ello, es imposible realizar varios accesos a posiciones externas en
un mismo ciclo de instrucción. La duplicidad de buses externos solo aparece en dispositivos de
alta escala.
Las interfases con memoria externa de los DSP varían bastante en cuanto a sofisticación y
flexibilidad. Algunos son relativamente simples, con tan solo unas pocas terminales de control.
25
CAPÍTULO 2. CARACTERÍSTICAS DE OPERACIÓN DEL DSP
Otros son mucho más complejos, permitiendo conectar un mayor abanico de dispositivos
de memoria externa y buses, sin necesidad de hardware adicional. Algunas características que
distinguen a estas interfaces son la flexibilidad y concentración de los estados de espera
programables, la disponibilidad de facilidades para implementar entornos multiprocesador
(terminales para petición y cesión de bus, selección de acceso a memoria compartida, accesos con
ínterbloqueo para implementar semáforos, etc.) y soporte para memorias DRAM en modo página
o SRAM síncronas.
No suelen permitirse accesos múltiples a memoria externa en un solo ciclo de instrucción.
Es más, la temporización varía dependiendo del sentido de la transferencia. Si bien los accesos en
modo lectura se pueden completar en un solo ciclo, las escrituras suelen prolongarse durante dos o
más ciclos. Por este motivo la memoria interna se suele reservar para almacenar las partes del
programa que se pueden modificar durante la ejecución de éste (pila y variables), mientras que el
código se almacena en memoria externa.
2.3.10 Periféricos integrados e Interfaces de I/O
La mayor parte de los DSP integran en el propio encapsulado periféricos de gran versatilidad que
le permiten comunicarse con dispositivos externos, tales como un ADC, un DAC, otros
procesadores DSP o microprocesadores. Este es un aspecto de gran importancia y que los
distingue de los procesadores de propósito general. De entre los más frecuentes se pueden
encontrar:
-
Temporizadores. Normalmente todos los procesadores incluyen estos dispositivos, que
suelen admitir como entrada un reloj interno o externo. Se utilizan para la generación de
interrupciones periódicas que sincronizan el proceso de muestreo.
-
Puertos Serie. Las características y complejidad de estas interfases varían de un
procesador a otro, pero es habitual encontrarlos en la mayoría de ellos. Suelen utilizarse
para comunicarse con circuitos que incluyen conversores A/D y D/A denominados
“codecs”. Esto permite alejar la parte analógica del procesador, eliminando problemas de
ruido. De hecho, la mayoría de los fabricantes de los DSP diseñan dispositivos de este tipo
con una interfase que permite la conexión directa con el puerto serie. No es raro encontrar
también DSP que permiten la transmisión del código de arranque en sistemas sin memoria
ROM.
-
Puerto Paralelo. Un puerto paralelo recibe y envía múltiples datos de entre 8 y 16 bits al
mismo tiempo. Estos trasmiten la información mucho más rápido que un puerto serie; el
inconveniente es que se requieren más pines para esta acción. Para ahorrar pines en la
configuración de un puerto paralelo de comunicación con dispositivos externos, el DSP
hace uso del bus de datos principal como puerto paralelo.
-
Controlador DMA. Este tipo de periférico permite efectuar transferencias de forma
rápida, sin intervención del procesador. Esto es especialmente útil en aplicaciones en las
que el volumen de datos a manejar es considerable; por ejemplo, procesamiento digital de
26
2.3.10 PERIFÉRICOS INTEGRADOS E INTERFACES DE I/O
imagen. En tal caso el DMA se utiliza para llevar bloques de datos desde una memoria
externa de gran capacidad a la memoria interna, con objeto de que se puedan procesar a
mayor velocidad.
-
Interfase con un Host (HPI). En algunos casos los DSP funcionan como coprocesadores
matemáticos, formando parte de un sistema global controlado por un procesador de
propósito general. Para comunicarse con este procesador host, algunos DSP incorporan un
puerto paralelo bidireccional de 8 o 16 bits, que podría incluso estar diseñado
específicamente para comunicarse con un bus estándar, como el ISA o el PCI. Las
comunicaciones a través de este puerto suelen realizarse mediante DMA de manera que sea
posible transferir datos entre memoria y el puerto, sin intervención del procesador. El
control del puerto se realiza mediante instrucciones específicas. En ocasiones esta interfase
permite incluso el control del funcionamiento del DSP en tareas tales como; forzar la
ejecución de rutinas de tratamiento de interrupción, acceder a los registros internos del
DSP o a su memoria, e incluso realizar la carga del código a ejecutar (bootstraping).
-
Puertos de Comunicación. Se trata de puertos paralelo diseñados para comunicación entre
los DSP del mismo tipo, y que pueden conectarse en red para implementar un sistema
multiprocesador. Puesto que la anchura de estos puertos (8 bits) es menor que el tamaño de
la palabra de datos de los DSP que los incluyen (32 bits), los puertos disponen de FIFOs
para la fragmentación y reensamblado de los datos que se trasmiten a través de ellos. La
comunicación a través de estos puertos suele estar asistida por DMA.
-
Puerto de I/O (GPIO). Estos grupos de pines en un DSP pueden habilitarse como entradas
o salidas y se usan para propósitos de control, aunque también se pueden usar para
transferencia de datos.
Los DSP diseñados para aplicaciones muy específicas, como el control de motores o
sistemas de potencia, disponen de periféricos concretos para dichas aplicaciones, como pueden ser:
generadores de señal PWM, temporizadores especiales para la implementación de tacómetros
digitales, convertidores A/D, D/A, etc. En general se trata de DSP de baja escala, ya que el área
utilizada del circuito integrado para estos periféricos limita el tamaño de los bancos de memoria
interna y la sofisticación del CPU.
En la figura 2-13 se describe brevemente como se configura internamente un DSP, el cual
contiene una gran variedad de periféricos: controlador de DMA, puertos serie y timers. En el
diagrama se incluye la existencia de una arquitectura Harvard. Así aparecen múltiples bancos de
memoria interna. Además, esta arquitectura se manifiesta también en el exterior del dispositivo
con dos buses externos: bus principal y bus de expansión.
27
CAPÍTULO 2. CARACTERÍSTICAS DE OPERACIÓN DEL DSP
Figura 2-13. Arquitectura del TMS320C3x de Texas Instruments.
2.4 Criterios de Selección del DSP
Para un observador casual, todas las arquitecturas de un DSP parecerían muy similares. No así,
para un usuario que tiene bien definidas las necesidades y restricciones de una aplicación. Es
decir, deben de valorarse las premisas que en algunos casos son muy particulares para determinar
las características que debe tener el DSP. Por ejemplo, sí el objetivo es desarrollar un producto y
se está limitado en el tiempo de lanzamiento al mercado, un DSP de punto flotante podría ser una
buena elección, ya que su desarrollo de software es más simple que los dispositivos de punto fijo.
Sí el costo es la consideración primaria, hay un sinnúmero de DSP de bajo costo, el problema es
que vienen comercializados con limite de rendimiento y el software de desarrollo cambia
continuamente. Sí el consumo de energía es una restricción clave, entonces la elección de un DSP
de bajo voltaje con una arquitectura basada en un núcleo ASIC puede ser la solución para
aplicaciones especiales.
En muchas aplicaciones, algunos de los factores mencionados son indispensables, sin
embargo es importante identificar la arquitectura que mejor se adapte a las características de una
determinada situación. Abajo se enlistan las características básicas que debe reunir el DSP. En la
tabla A-1 del anexo A se encuentran las familias de los principales fabricantes con algunas de las
características que aquí se mencionan.
-
El tipo de aritmética utilizada y el ancho de palabra de datos. La principal diferencia en
el uso de DSP de punto fijo o punto flotante radica en cómo son los resultados de las
operaciones de multiplicación manipuladas. Los procesadores de punto fijo tienen un
hardware más simple que los de punto flotante, tomando en cuenta que éstos últimos son
dispositivos más caros y de mayor consumo. Una recomendación para los diseñadores es
que deben intentar el uso de un DSP con el menor ancho de palabra que su aplicación
28
2.4 CRITERIOS DE SELECCIÓN DEL DSP
puede tolerar. En la figura 2-14 se observa la clasificación de los DSP por el tipo de
aritmética que usan y la anchura de datos.
Figura 2-14. Clasificación de los DSP según su representación aritmética.
-
Velocidad. Algunas arquitecturas claramente tienen ventaja en ciertas áreas. Una de esas
áreas muy importante es la velocidad de ejecución ya que los ciclos de tiempo de
instrucción pueden variar significativamente en la ejecución de la aplicación. En general,
las mediciones del rendimiento de un procesador deben tomarse con cierto escepticismo.
En particular, las comparaciones basadas en MIPS y MFLOPS son muy inciertas, por la
gran diferencia en el monto de procesamiento que los procesadores pueden lograr con una
sola instrucción u operación de punto flotante.
-
Tamaño de Memoria. Una arquitectura de memoria eficiente es aquella que permite
procesar las instrucciones y datos al ritmo que los demanda el CPU. Es deseable que los
DSP dispongan de la mayor cantidad de memoria interna, ya que los accesos sobre ésta se
realizan a mayor velocidad. La disponibilidad de memoria Flash interna permite reducir la
complejidad del sistema
-
Periféricos integrados. Esta consideración es una de las más importantes cuando se
selecciona un DSP, por lo que se deben definir claramente las aplicaciones. La inclusión de
periféricos o interfases que le permitan comunicarse con el exterior en un mismo
dispositivo puede tener un impacto significativo en el costo del procesador. Los DSP de
punto fijo tienen a su disposición un conjunto de periféricos más variado que los de punto
flotante, lo que los hace más eficientes en aplicaciones específicas. Por ejemplo la familia
C2000 de Texas Instruments está enfocada a aplicaciones de control de motores, e
incorporan a sus DSP periféricos tales como: Timers, PCI, DAC, ADC, GPIO, PWM, etc.
-
Consumo. Este es un factor determinante en algunas aplicaciones, tales como las móviles,
caso específico el de los teléfonos celulares. Actualmente se encuentran DSP con un
voltaje nominal entre 3.0 y 3.3 V. Además, los fabricantes están agregando características
de ahorro de energía controlado por medio de software o hardware. Estos modos de ahorro
29
CAPÍTULO 2. CARACTERÍSTICAS DE OPERACIÓN DEL DSP
consisten en apagar ciertas secciones del procesador, así que el diseñador debe
considerarlos si su aplicación así lo requiere.
-
Costo. En algunas aplicaciones el DSP podría representar una pequeña fracción del costo
total del sistema. En otras, el DSP podría comprometer un gran porcentaje del costo de
inversión. En aplicaciones de gran consumo este aspecto puede prevalecer sobre otros que
inciden más directamente sobre las prestaciones del DSP.
-
Rango Dinámico. Es un parámetro que relaciona el tipo de aritmética utilizada y el ancho
de la palabra de datos. Se define como la relación que existe entre el máximo y mínimo
número que se pueden representar y por supuesto diferente de cero. A este respecto, los
procesadores de punto flotante tienen un rango dinámico más amplio lo cual se traduce en
una mejor precisión.
-
Soporte y software de desarrollo. Cuando se selecciona un procesador, es importante
considerar que tipo de soporte proporciona el fabricante que ayude al proceso de diseño y
problemas que puedan surgir. Tradicionalmente, el software para la programación de los
DSP se escribe en lenguaje ensamblador, lenguaje “C”, y debe ser extremadamente
eficiente. Por ejemplo, Texas Instruments brinda en la siguiente dirección de Internet
http://focus.ti.com/general/docs/dsnsuprt.tsp, servicios de información tales como:
manuales técnicos, notas de aplicación, tutoriales, hojas de datos, ayuda en línea, etc. En el
siguiente capítulo se ofrece un panorama más extenso sobre software de desarrollo a través
de CCS, y el uso de código fuente en lenguaje ensamblador y C++, que permita usar una
tarjeta de DSP en específico.
2.5 Conclusiones
Los sistemas digitales tienen muchas ventajas sobre los analógicos. Estos últimos construidos con
circuitos que puede variar ampliamente de un fabricante a otro. Las propiedades de estos
componentes pueden variar con cambios en la temperatura, alterando el funcionamiento del
sistema, etc. En contraste, los sistemas digitales basados en DSP han llegado a ser más predecibles
gracias a que están determinados por su software. Por esta razón, los sistemas digitales se afectan
menos con problemas de ruido. Además, son mucho más pequeños y consumen menos energía que
los analógicos.
En este capítulo se pretende dar una introducción a la tecnología de los DSP, brindando un
panorama general de las características que éstos tienen y donde se pueden implementar. Se deja
en claro que quizá la ventaja más grande de los sistemas de procesamiento digital de señales radica
en la flexibilidad que tienen para implementar soluciones que integran algoritmos, software y
hardware en un solo sistema, y modificarlos con tan solo cambiar unas líneas del programa. [12]
30
Capítulo 3
Estudio comparativo de los DSP
3.1 Principales fabricantes de DSP
La enorme demanda que se ha tenido en el uso de estos dispositivos ha permitido un gran avance
en su tecnología con mejoras que los posicionan en aplicaciones especiales, como la telefonía
inalámbrica, aplicaciones multimedia, audio, video, medicina, sistemas de control, etc.
Como consecuencia del rápido crecimiento del mercado, los vendedores de DSP compiten
en ese mercado de consumo. Así, cada uno de ellos promueve sus propios circuitos integrados y
herramientas de desarrollo.
En la tabla 3-1 se listan los principales fabricantes y su participación en el mercado
mundial de DSP; además, se observan las familias de DSP que tienen en sus líneas de producción.
Tabla 3-1. Principales fabricantes del mercado.
Analog Devices 10%
- Blackfin
- Tiger Shark / Shark
- ADSP-21xx
Freescale (antes Motorola) 11%
- DSP56xxx ( DSP563xx, 56F800/E)
- StarCore SC100
Lucent Technologies (antes AT&T) 25%
- DSP16xx
- DSP16xxx
- DSP32C/DSP32xx
Texas Instruments 49%
- TMS320C2000
- TMS320C5000
- TMS320C6000
Este estudio comparativo pretende ofrecer un panorama general de las principales familias
y herramientas de diseño de los fabricantes mencionados. Es responsabilidad del usuario ahondar
en información adicional sobre las características que ofrecen cada uno de ellos. Tal información
se encuentra contenida en un CD que se anexa al presente trabajo de tesis; en el que se
encontrarán manuales de referencia, guías de usuario y misceláneos de cada uno de los fabricantes.
Finalmente, ante interrogantes tales como: ¿Qué fabricante es el más conveniente?, ¿Cuál
de sus familias es más rápida?, ¿Es apropiado para mi aplicación?, ¿Punto fijo o punto flotante?,
es importante realizar este estudio comparativo para adquirir las habilidades que requiere un
usuario de estas tecnologías y tener así una mayor certidumbre en la elección de dispositivos para
una aplicación dada.
31
CAPÍTULO 3. ESTUDIO COMPARATIVO DE LOS DSP
3.2 Fabricante Analog Devices
3.2.1 Familia Blackfin
La familia Blackfin® de Analog Devices introduce un conjunto de procesadores embebidos de 16
y 32 bits, específicamente orientados a aplicaciones multimedia y telecomunicaciones que
requieren de gran capacidad de cálculo: para procesar señales de audio y video en tiempo real,
comunicaciones para acceso a redes e Internet, y dispositivos portátiles en donde es de vital
importancia el bajo consumo de potencia para prolongar la duración de las baterías. También
conocida como BF-53x, la familia Blackfin tiene algunas de las siguientes características:
-
-
Arquitectura MSA (Micro Signal Architecture), desarrollada en conjunto con Intel, con
doble MAC de 16 bits y doble ALU de 32 bits, inicialmente a 350 MHz/700 MMACs, con
desempeños actuales de 600 MHz/1200 MMACs y con proyección a más de 1GHz.
Además, 8 bits de ejecución de procesamiento de video que había sido previamente del
dominio exclusivo de los procesadores de palabra de instrucción muy larga (very long
instruction word, VLIW).
Administrador de potencia dinámico (Dynamic Power Management), que permite controlar
tanto el voltaje como la frecuencia internos de operación, la activación o desactivación
selectiva de módulos o periféricos internos.
Amplia variedad de periféricos dentro del mismo encapsulado “on chip” tales como:
Controlador SDRAM, PPI con soporte para formatos de video ITU-R 656, puertos seriales
SPORT, Controlador DMA de 14 canales, SPI, Timers/PWM, UART, Real Time Clock,
Watchdog Timer, PCI 2.2, USB 1.1.
Los procesadores Blackfin tienen una amplia combinación de atributos de procesamiento,
lo cual elimina la necesidad de separar señales digitales y control de procesadores, reduce los
costos de material y simplifica en gran medida las tareas de diseño en hardware y software. Los
procesadores Blackfin presentan un alto rendimiento, con objetivos de software homogéneos, lo
cual permite configurar las tareas de procesamiento de señales como las de mayor prioridad y
menor latencia, mientras las tareas de control, desempeñadas por microcontroladores, se ejecutan
como tareas de menor prioridad y mayor latencia.
Esta es la principal característica de los procesadores Blackfin, al proporcionar en una
arquitectura la unificación de ambos elementos: microcontrolador (MCU) y un DSP funcional,
permitiendo una partición flexible entre las necesidades de control y el procesamiento de señal. Si
la aplicación lo demanda, el procesador blackfin puede actuar al 100% como MCU (con densidad
de código en equivalencia con el estándar de la industria), al 100% como DSP (a una tasa de
velocidad de las principales tecnologías de DSP) o una combinación de las dos. Se evitan así los
inconvenientes de la comunicación entre procesadores, el manejo de memorias compartidas y el
uso de herramientas diferentes para procesadores diferentes; lo que repercute en un mayor costo y
alto consumo de potencia.
32
3.2.1 FAMILIA BLACKFIN
Otra ventaja de la arquitectura de los DSP Blackfin es que incorporan dentro de un mismo
dispositivo hasta dos núcleos. Con estos procesadores se pueden tener tareas que corran en cada
uno de los núcleos. Por ejemplo, uno de los núcleos podría realizar todas las tareas relacionadas al
control, tales como gráficos y funcionalidad cubierta, gestión de redes, interfase al volumen de
almacenamiento y control de flujo global. En este núcleo es donde reside la mayoría del sistema
operativo. Mientras tanto, el segundo núcleo está dedicado a las funciones de procesamiento de la
aplicación. Por ejemplo, podrían transferirse paquetes de datos comprimidos a través de una
interfase de red, ser procesados en el primer núcleo, y posteriormente pasarlos al segundo núcleo
para una decodificación de audio y video. La figura 3-1 muestra un diagrama a bloques de una
configuración de doble núcleo [15].
Figura 3-1. Diagrama a bloques del procesador ADSP-BF561 de doble núcleo.
En lo que se refiere a herramientas de desarrollo, los procesadores Blackfin tienen soporte
directo de Analog Devices, tal como el paquete CROSSCORE, que incluye Visual DSP++, un
ambiente de depuración y desarrollo integrado (IDDE), además de una gran variedad de
fabricantes de tercera parte (Three party) tales como; Green Hills® y National Instruments, que
hacen uso de estos dispositivos en sus desarrollos. Existe además un portal para obtener
herramientas para Blackfin en www.blackfin.uclinux.org; aquí se encontrarán herramientas de
soporte para sistemas de libre acceso, basados en Linux, como µClinux™, paquetes de soporte en
tarjetas y herramientas de depuración asociadas.
Los procesadores incluyen una administración de memoria avanzada, que soporta memoria
protegida y memoria no protegida de sistemas operativos embebidos tales como; µCLinux,
ThreadX® (Express Logic), INTEGRITY® and velOSity™ (Green Hills Software), Nucleus®
(Accelerated Technology), Fusion™ (Unicoi Systems), and RTXC Quadros™ (Quadros Systems),
por nombrar algunos.
33
CAPÍTULO 3. ESTUDIO COMPARATIVO DE LOS DSP
3.2.2 Familia TigerSHARC
Esta familia de dispositivos, incluye un nuevo procesador que adopta características de diversas
arquitecturas. Se conservan las características básicas de un procesador tradicional como lo es el
determinismo y la velocidad de ejecución de las instrucciones, un modelo de interrupciones rápido
y confiable, una interfaz a periféricos que soporta un amplio rango de velocidades de operación,
tanto interna del chip como externa del periférico. Para alcanzar un excelente desempeño del
“núcleo” del procesador se emplean técnicas avanzadas, típicas de procesadores RISC, tales como
una arquitectura load/store, un secuenciador de programa profundamente encauzado con
predicción de ramificación (branch prediction) y grandes conjuntos de registros entrelazados.
El procesador TigerSHARC con arquitectura superescalar estática es un DSP de 32 bits de
alto desempeño que combina múltiples unidades de procesamiento para dar soporte a datos en
punto fijo y punto flotante, así como buses internos muy amplios, manteniendo todo en un circuito
integrado (System on Chip). Agregan además grandes bloques de memoria interna (SRAM o
eDRAM), periféricos integrados, controlador de memoria SDRAM integrado, interfase para
procesador host, controlador de DMA, puertos de enlace, y conectividad para multiprocesamiento
sin la necesidad de lógica de interconexión adicional. La figura 3-2 ilustra la arquitectura interna
de los procesadores TigerSHARC.
El alto desempeño se logra por la facilidad de ejecutar hasta cuatro instrucciones de 32 bits,
en cada ciclo. El término Superescalar estático se aplica porque permite al programador especificar
cuáles instrucciones deben ser ejecutadas en paralelo en cada ciclo. Las instrucciones no tienen
que estar alineadas en memoria, de modo que no se desperdicia espacio de memoria de programa.
Para lograr mantener ocupado el flujo de instrucciones se emplea un esquema avanzado de
administración de la palabra de instrucción, que utiliza ideas provenientes de diseños VLIW en
los cuales el paralelismo en las instrucciones se determina previamente al tiempo de ejecución.
Figura 3-2. Arquitectura del DSP TigerSHARC.
34
3.2.3 FAMILIA SHARC
Una característica del procesador TigerSHARC es que tiene dos bloques de cómputo que
pueden operar independientemente, en paralelo o como un motor SIMD (Single Instruction
Multiple Data). Cada uno de estos bloques contiene cuatro unidades computacionales; un ALU, un
multiplicador, un desplazador de 64-bit, y un archivo de registro de operandos de 32-bit. El DSP
puede emitir hasta dos instrucciones por bloque de cómputo por ciclo, instruyendo a los módulos
de cada bloque para ejecutar operaciones independientes simultáneas.
Con una velocidad de ejecución que va de los 300 a los 500 MHz, la familia TigerSHARC
se compone de cuatro procesadores; el ADSP-TS101S, ADSP-TS201S, ADSP-TS202S y ADSPTS203S; estos procesadores se usan en numerosas aplicaciones de procesamiento de señal para
manejar datos masivos y proporcionar a la industria soluciones de alto rendimiento, tanto en punto
fijo como en punto flotante. Las aplicaciones abarcan equipos de infraestructura inalámbrica,
aplicaciones embebidas con limitaciones de potencia tal como; hardware militar, equipo medico de
imágenes, instrumentación industrial y radiocomunicaciones.
Finalmente, se puede mencionar que esta familia tiene el respaldo de diversas herramientas
de desarrollo como CROSSCORE (que incluye ambientes de desarrollo como Visual DSP++),
sistemas de evaluación como EZ-KIT Lite y emuladores de depuración.
3.2.3. Familia SHARC
Los procesadores digitales de señales de la familia SHARC se basan en una arquitectura Harvard
Modificada, manejando formatos aritméticos de punto fijo y punto flotante, con una velocidad de
cálculo de hasta 2400 MFlops/ 400 MHz. Todos los procesadores SHARC proporcionan
características similares de funcionalidad, así como capacidades para entradas y salidas útiles en
diversas aplicaciones.
La arquitectura “super” Harvard extiende el concepto original de separar los buses de
programa y de memoria de datos por medio de un procesador de I/O (entrada/salida) con sus
buses asociados dedicados. Los procesadores SHARC son apropiados para aplicaciones en tiempo
real y cómputo intenso, además de que incluyen en el mismo encapsulado arreglos de memoria y
periféricos de aplicación específica diseñados para simplificar el desarrollo de productos.
La gama de dispositivos que actualmente tiene la familia SHARC consiste de tres
generaciones de productos, las cuales proporcionan soluciones compatibles en código y
velocidades de ejecución de instrucción de diversos rangos.
La primera generación de SHARC ofrece rendimientos de hasta 66 MHz / 198 MFLOP y
forma la piedra angular de esta familia. Su arquitectura de grupos de instrucciones facilita su uso,
soportando la programación en punto fijo a 32 bits y punto flotante a 32/40-bits; además, incluye
extensos arreglos de memoria y sofisticados puertos de comunicaciones, lo que los hace
convenientes para una amplia gama de aplicaciones de procesamiento paralelo; audio, imágenes
médicas, militares, industrial, e instrumentación.
35
CAPÍTULO 3. ESTUDIO COMPARATIVO DE LOS DSP
La segunda generación SHARC duplica el nivel de rendimiento, con una velocidad de 100
MHz / 600 MFLOPs utilizando una arquitectura SIMD (sólo una instrucción y datos múltiples).
Esta segunda generación contiene multiplicadores dobles, ALU, desplazadores, y archivos de
registro de datos, lo que incrementa significativamente el rendimiento del sistema en una gran
variedad de aplicaciones. Esta capacidad es especialmente relevante en productos de consumo,
automóviles, y audio profesional, donde los algoritmos de procesamiento de canales estéreo
pueden utilizar la arquitectura SIMD.
La tercera generación SHARC emplea la arquitectura SIMD mejorada, que extiende el
rendimiento hasta 400 MHz / 2400 MFLOPs. Además, incorporan una variedad de
configuraciones de memoria ROM y periféricos diseñados para sistemas de audio multicanal. El
incremento logrado en la integración de nuevos periféricos permite tener además; decodificadores,
transmisores-receptores tipo S/PDIF, canales PWM y código de seguridad, que permite a esta
generación de procesadores utilizarse en soluciones de audio profesional.
3.2.4. Familia ADSP-21xx
Los procesadores ADSP-21xx son la primera familia de dispositivos de Analog Devices. La
familia consiste de un extenso número de procesadores de punto fijo de 16 bits basados en una
arquitectura Harvard modificada. En octubre de 1998, los miembros más rápidos operaban a 75
MIPS a 2.5 volts, 52 MIPS a 3.3 volts, y 40 MIPS a 5.0 volts. Posteriormente Analog Devices
anuncia la serie ADSP-219x, la cual ofrece velocidades de hasta 300 MIPS, así como un
perfeccionamiento arquitectónico. Los procesadores ADSP-21xx se están usando en módems,
audio, PC multimedia, y aplicaciones celulares digitales.
La configuración del ADSP-21xx para los datos consiste de tres unidades separadas de
ejecución aritmética; la unidad aritmético lógica de 16 bits, un multiplicador-acumulador (MAC),
y un desplazador de barril. Cada unidad es ejecutable en un solo ciclo, pero únicamente una de
estas unidades puede estar activa durante un solo ciclo de instrucción. La unidad MAC incluye un
multiplicador de 16x16→32-bits, cuatro registros de entrada (dos para cada espacio de memoria,
PM y DM), un registro de realimentación, un sumador de 40 bits, y un solo registro resultado de
40bits / acumulador que proporciona ocho bits de guarda. Además de los operadores de signo, el
multiplicador puede operar con o sin signo y de esta manera dar soporte aritmético de multiprecisión. El desplazador de barril ayuda a la aritmética de punto flotante con la detección de
bloques de exponente, normalización e instrucciones de ajuste de exponente, etc. La figura 3-3,
muestra la arquitectura típica de esta familia de procesadores.
Los ambientes de desarrollo como Visual DSP++, versión 3.5, dan soporte a la familia de
procesadores ADSP-218x/219x/2199x para el desarrollo de proyectos y para efectuar tareas de
simulación, depuración y compilación.
36
3.3 FABRICANTE FREESCALE
Figura 3-3. Arquitectura de la familia de procesadores ADSP-21xx.
3.3 Fabricante Freescale
3.3.1 Familia Star Core MSC711x/ MSC81xx
Las familias de procesadores MSC711x y MSC81xx son DSP de punto fijo compatibles en
instrucciones y software binario. El procesador MSC8101 fue el primer miembro de la familia
MSC81xx, salió en septiembre de 1999 e incluye un núcleo basado en el Star Core SC140 y un
módulo procesador de comunicaciones (CPM). Corre a una velocidad de 300 MHz y tiene 512 KB
de memoria. Su arquitectura los hace aplicables en áreas como las comunicaciones inalámbricas de
3G, bancos de módems, y telefonía IP. Los elementos de estas familias integran las siguientes
generaciones de procesadores:
Primera generación: MSC8101/ MSC8103 de un núcleo. (Figura 3-4A)
Segunda generación: MSC8102/MSC8122/ MSC8126/ MSC8144 de 4 núcleos. (Figura 3-4B)
Tercera generación: MSC7110, MSC7112, MSC7113, MSC7115, MSC7116, MSC7118,
MSC7119.
Para noviembre del 2000, el MSC8102 ya incluye cuatro núcleos basados en el Star Core
SC140, figura 3-4B. Cada núcleo cuenta con cuatro Unidades Aritméticas Lógicas, memoria
interna, buffer de escritura y dos controladores de interrupción. Con los cuatro núcleos extendidos
se pueden obtener hasta 8000 MMACS y una velocidad de 500 MHz, adecuados para aplicaciones
de transmisión de código multicanal y paquetes de telefonía. Los más recientes MSC8122,
MSC8126 son compatibles en número de pines con el MSC8102 y también contienen los cuatro
núcleos [16]. El caso del MSC8144 es diferente, aunque es un dispositivo de la familia MSC81xx,
pertenece a los procesadores de tercera generación. Algunas de las características que integra son:
cuatro núcleos basados en el Star Core SC3400, cada uno corre a 1 GHz con una arquitectura
altamente optimizada para el manejo de voz, fax, video y procesamiento y compresión de datos a
través de diversos periféricos y protocolos de comunicación [17].
37
CAPÍTULO 3. ESTUDIO COMPARATIVO DE LOS DSP
Figura 3-4. Arquitectura general del núcleo SC140.
En cuanto a la familia MSC711x, se anunció en abril del 2004 y se basa en una arquitectura
del núcleo Star Core SC1400. No tiene un bus 60x como la arquitectura de la familia MSC81xx,
pero hay una interfase de memoria DDR (Double Data Rate). Además, no hay Módulo Procesador
de Comunicación CPM, pero existe una funcionalidad similar con el TDM (Time-Division
Multiplexing). Tanto la arquitectura del la familia MSC81xx basada en el Star Core SC140 como
la arquitectura SC1400 de la familia MSC71xx son funcionalmente equivalentes [18].
3.3.2 Familia DSP563xx
La familia de procesadores DSP563xx tienen formato en punto fijo de 24 bits. La arquitectura del
DSP563xx es similar a su predecesor, el DSP560xx, pero incluye modificaciones significativas
diseñadas para aumentar su rendimiento. El DSP56321 es el más rápido de esta familia y corre a
una velocidad de 275 MHz a 1.6 volts. Cuenta con una gran variedad de periféricos tales como
puertos serie, paralelos, GPIO, y hasta un coprocesador de propósito especial. Estos periféricos se
conectan a través de un bus estándar al núcleo del DSP, lo que permite una fácil conexión con
dispositivos externos. Además, el DSP563xx, cuenta con diversas configuraciones de memoria
RAM y ROM que se dividen en tres espacios; espacio del programa, espacio de datos X, y
espacio de datos Y. Cada espacio de memoria tiene un bus de dirección separado de 24 bits y un
bus de datos. Los DSP563xx están enfocados a una variedad de aplicaciones que incluyen audio de
alta fidelidad e incluso soportan enlaces de videoconferencia [19]. En la figura 3-5 se encuentra la
configuración básica de un DSP de la familia DSP563xx.
Las características de la ruta de datos del DSP563xx integran un MAC/ALU con un multiplicador
de 24×24→ 48 bits, una ALU de 56 bits, y dos acumuladores de 56 bits con ocho bits guarda.
Toda la aritmética e instrucciones de la multiplicación se ejecutan a través de un solo ciclo y
latencia de dos ciclos.
38
3.3.3 FAMILIA 56800/E
Figura 3-5. Configuración básica de la familia DSP563xx.
3.3.3 Familia 56800/E (DSP5685x, 56F8xx y 56F8xxx)
Las familias DSP5685x y 56F8xxx son dos familias basadas en el núcleo 56800E. Este núcleo se
basa en un formato de punto fijo con 16 bits de instrucción. Los dispositivos 56800E son una
versión ligeramente reforzada de los núcleos 56800 usados en la familia DSP56F8xx, lo cual los
hace muy similares y compatibles en código ensamblador.
Algunos de los dispositivos que integran la familia 56F800E son: 56F801, 56F802,
56F803, 56F805, 56F807, y son más bien una familia de controladores digitales de señal (DSC)
basados en el núcleo 56800. En ellos se integra la funcionalidad de un microcontrolador, una
amplia capacidad de procesamiento, y un grupo flexible de periféricos. Resulta interesante saber
que se puede usar para tareas de control en motores de AC, DC, de pasos, inversores de potencia,
fuentes ininterrumpibles, etc., gracias a que incorporan
dos módulos programables
individualmente para la generación de señales PWM[20].
También los dispositivos DSP5685x son aptos para aplicaciones de control de motores pero
incorporan más periféricos que permiten utilizarlos en aplicaciones automotrices, teléfonos
celulares, PDA, audio, telefonía por Internet, etc. Por su parte, los dispositivos MC56F83xx se
utilizan como microcontroladores en aplicaciones que requieren de una capacidad modesta en
campos tal como el automotriz y equipo industrial.
En cuanto a su arquitectura de memoria se emplea una tipo Harvard, que permite hasta tres
accesos a memoria de manera simultánea: una para traer instrucción más dos lecturas de datos de
16 bits, o una lectura de datos de 32 bits o una escritura de datos de 32 bits. La familia 56800/E
generalmente opera con 16 bits de datos, aunque algunos operan con 32 y 36 bits. La familia
proporciona cuatro registros de acumulador de 36 bits, cada uno de los cuales cuenta con cuatro
bits de guarda para protección de desborde. Tiene siete registros de datos de 16 bits; cuatro se
componen de los 16 bits más significativos en cada acumulador y tres son registros independientes
de 16 bits.
39
CAPÍTULO 3. ESTUDIO COMPARATIVO DE LOS DSP
3.4 Fabricante Lucent Technologies
Lucent Technologies® tiene una presencia casi del 30% (según la firma Forward Concepts) en la
producción de DSP, pero antes de dar una introducción sobre las familias con las que cuenta, es
necesario destacar que no mantiene un sitio Web en el que proporcione las especificaciones
técnicas de sus productos, por lo que no se encontró suficiente información. Su mercado se enfoca
al consumo a gran escala y las grandes corporaciones dedicadas a aplicaciones de
telecomunicaciones y sistemas de redes de datos son sus principales clientes. En el CD anexo hay
información adicional sobre la arquitectura de las familias de Lucent Technologies.
3.4.1 Familia DSP16xx
Los dispositivos de la familia DSP16xx son DSP de 16-bit de punto fijo. Esta familia se basa en el
núcleo DSP1600 de punto fijo, cuya arquitectura es similar a los procesadores DSP16/DSP16A.
Los procesadores más rápidos en la familia DSP16xx ejecutan 120 MIPS con un suministro
de voltaje de 3 volts, y 90 MIPS con un voltaje de 5 volts. El primer miembro de la familia
DSP16xx fue el DSP1610, introducido a la mitad de 1990. Posteriormente, nuevos miembros se
agregaron a la familia, que incluyen alto rendimiento, DSP1611, DSP1616, DSP1617, y DSP1618.
De bajo rendimiento se tiene al DSP1604 y DSP1605. En 1996, Lucent introdujo el DSP1620 de
120 MIPS, el miembro más rápido de la familia DSP16xx. Referente a los DSP1618, DSP1620, y
DSP1628, estos contienen dentro del mismo encapsulado un coprocesador de corrección de error
(ECCP, Error Correction Co-Processor) para el uso en decodificación de Viterbi. Por su parte, los
procesadores DSP160x de bajo rendimiento apuntaron hacia un mercado demandante en máquinas
contestadoras sin cinta, con una característica de interfase de RAM dinámica integrada.
El sistema de memoria de la familia DSP16xx usa una arquitectura de Harvard modificada
con dos espacios de dirección separados, X y Y. Cada espacio de dirección tiene su propio bus de
datos y bus de dirección de 16-bit. X es una memoria de sólo lectura usada para las instrucciones y
datos fijos, mientras que la memoria Y se usa para los datos variables. Como parte del mismo
encapsulado, la familia DSP16xx incluye; puertos seriales, temporizadores, puerto paralelo de I/O,
convertidores A/D y D/A, una unidad de manipulación de bit y un coprocesador de corrección de
error, dependiendo de la variante.
3.4.2 Familia DSP16xxx
En septiembre de 1997, Lucent Technologies presenta la última familia de DSP de punto fijo,
DSP16xxx, reconfigurando completamente el estilo tradicional de la arquitectura. Los DSP16xxx
están basados en su antecesora la familia DSP16xx, aunque se extiende el bus de datos de 16 a 32
bits; incluso existen nuevos extras en la ruta de datos para aplicaciones de comunicaciones. La
familia DSP16xxx usa una arquitectura de memoria Harvard modificada, con un bus dual de datos
y dirección integrados en el mismo encapsulado.
40
3.5 FABRICANTE TEXAS INSTRUMENTS
El primer miembro de la familia DSP16xxx, el DSP16210, tiene un desempeño de 100
MIPS y un voltaje de 3.3 volts, en encapsulados TQFP de 144 pins y BQFP de 132 pins. En
diciembre de 1997 el costo de este procesador en cantidades de 1000 piezas se encontraba
alrededor de $100 USD. El DSP16210 es compatible en hardware y software con el DSP1620,
para lograrlo Lucent proporciona un traductor de código ensamblador para ayudar a los usuarios
de la familia DSP16xx a migrar hacia la familia DSP16xxx.
Esta nueva familia incluye un puerto de I/O de 8 bits (cada bit puede ser individualmente
configurado como una entrada o una salida), dos timers, dos puertos seriales y un puerto host
paralelo. Uno de los puertos host y uno de los puertos seriales tienen capacidades DMA.
3.5 Fabricante Texas Instruments
La familia de procesadores TMS320 de Texas Instruments se compone básicamente de tres
generaciones basadas en DSP de punto fijo; la C2000 con sus familias c24x y C28x; la C5000 la
integran C54x y C55x; y C6000 con su C62x, C64x y la familia de punto flotante C67x. Los
procesadores tienen arquitecturas diferentes diseñadas específicamente para aplicaciones en
tiempo real, que difieren en variedad de memoria y configuración de periféricos.
Entre las ventajas más importantes que ofrece T.I. se puede mencionar que existe una
amplia información de sus productos a través de su portal en http://www.ti.com, una red de
fabricantes de “tercera parte” que hacen uso de sus DSP y ofrecen sistemas de desarrollo para
aplicaciones específicas, además de software y librerías de aplicación que permiten optimizar el
código de programa. En cuanto a herramientas de desarrollo Texas Instruments cuenta con su
sistema llamado Code Composer Estudio (CCS), cuya última versión simplifica procesos en
aplicaciones muy complejas. La ventaja que ofrece este sistema es que da soporte a la series
C6000, C5000, C2000, OMAP y DaVinci, evitando el uso de diversas versiones del mismo
programa. A continuación se da una breve introducción de la configuración de cada una de las
familias. (Para mayor referencia consultar el CD anexo).
3.5.1 Serie C2000: familia TMS320C24x
La familia de procesadores TMS320C24x son dispositivos con un formato de punto fijo de 16 bits
y un rendimiento de 40 MIPS. Estos DSP de bajo costo, están diseñados para aplicaciones de
control de motores (DMC, Digital Motor Control) y otras aplicaciones embebidas, por lo que se
les conoce también como Controlador Digital de Señal basado en DSP. Esta serie se basa en el
núcleo c2xLP de punto fijo de 16 bits, y es complementado en un mismo encapsulado con una
amplia gama de periféricos tal como; manejadores de eventos para la generación PWM y tiempo
muerto, ADC ultrarrápidos, circuito de captura al impulso, timer, y puerto serie asíncrono. Los
dispositivos TMS320LF24xx pueden incluir hasta 64 kB de memoria flash, mientras los LC24xx
incluyen memoria ROM/RAM.
La arquitectura del controlador DSP 320C24x se basa en una arquitectura Harvard
mejorada. El C24x tiene múltiples espacios de memoria accesibles desde tres buses paralelos: un
bus de programa, un bus de lectura de datos y un bus de escritura de datos.
41
CAPÍTULO 3. ESTUDIO COMPARATIVO DE LOS DSP
La serie 240xA se compone de los siguientes dispositivos: 2401A, 2402A, 2403A, 2404A,
2406A, 2407A, los cuales pueden tener una variante en cuanto a su configuración de memoria,
teniendo ya sea memoria flash o ROM. Para ampliar esta información se pueden consultar las
guías de referencia: TMS320LF/LC240xA DSP Controllers: CPU and Instruction Set [21], y
TMS320F/C240xA DSP Controllers: System and Peripherals [22].
3.5.2 Serie C2000: familia TMS320C28x
La familia de procesadores TMS320C28x comprende dispositivos de 32 bits de punto fijo y una
velocidad que va de los 60MHz a los 150MHz, voltaje de alimentación de 1.8V para dispositivos
flash y 1.9V para los RAM/ROM. Estos dispositivos tienen mejores características que su
antecesora; además, se tiene un amplio grupo de periféricos; ADC, Módulo CAN, SCI, SPI, IIC
(I2C), todos integrados en un mismo encapsulado [23]. Gracias a una arquitectura Harvard
modificada y un reducido conjunto de instrucciones RISC el CPU puede leer instrucciones y datos
mientras escribe simultáneamente para mantener la operación en un solo ciclo a través del
paralelismo. Esta tarea la hace el CPU por medio de seis buses separados de dirección /dato.
Además, puede realizar operaciones registro a registro y direccionamiento circular. Las
características de un microcontrolador incluyen la facilidad de uso a través de un conjunto de
instrucción intuitivo, empacamiento y descompactado de bytes, y la manipulación de bits [24].
La familia incluye los dispositivos TMS320x2810, TMS320x2811, y TMS320x2812,
donde x puede denotar una F para los dispositivos flash, C los dispositivos ROM y R los
dispositivos RAM. De igual modo se tienen los dispositivos TMS320x2801, TMS320x2802,
TMS320x2806 y TMS320x2808 con sus diferentes variantes en cuanto al tipo de memoria de la
que disponen. Al igual que la familia TMS320C24x, estos DSP son de bajo costo y están
diseñados para una amplia gama de aplicaciones de control de motores DMC [25], sensado para
control de velocidad, PWM y corrección del factor de potencia.
Una importante característica de la familia es que tiene una librería de trabajo denominada
“IQ-math” y le da al diseñador la facilidad de desarrollar transparentemente algoritmos de punto
flotante con el bajo costo de una arquitectura de punto fijo.
3.5.3 Serie C5000: familia TMS320C54x
La familia TMS320C54x son dispositivos con un formato de punto fijo de 16 bits. Los primeros
miembros fueron introducidos en Japón en 1994 y en Estados Unidos en 1995. El dispositivo más
veloz corre a una velocidad de 160 MHz y un voltaje de alimentación del núcleo de 1.6 V. Por su
parte, el más lento de la familia corre a 120 MHz y 1.5 V. Existe además la familia
TMS320C547x, la cual integra un sistema que incluye un DSP basado en la arquitectura del
TMS320C54x y un microcontrolador tipo RISC basado en el núcleo ARM7TDMI. El sistema
microcontrolador integra tres timers, I/O de propósito general, una interfase de memoria externa y
una interfase Ethernet. Las aplicaciones planeadas para los TMS320C54x incluyen
comunicaciones inalámbricas y celulares, módems, audio-Internet, telefonía por cable y redes.
42
3.5.4 SERIE C5000: FAMILIA TMS320C55X
Existen otros dispositivos de la familia TMS320C54x que son multi-núcleo; es decir integran dos
o hasta cuatro núcleos con la misma arquitectura (TMS320VC5420/5421/5441). Cada uno de éstos
núcleos integrados en un solo dispositivo tiene sus propios espacios de datos y de programa,
permitiendo con su arquitectura Harvard modificada accesos simultáneos a las instrucciones de
programa y datos [26]. El procesador accede a la memoria con cuatro juegos de buses de datos y
de direcciones. Un juego de bus de programa, dos juegos de buses de lectura de datos y un juego
de bus de escritura de datos.
Una característica esencial de esta familia es que proporciona tres modos de control para
un menor consumo de energía; estos modos se programan con las instrucciones IDLE1, IDLE2, e
IDLE3. En todos los modos IDLE, el reloj del núcleo del procesador se apaga, reduciendo el
consumo de energía. Los demás modos son variantes en los que desconectan algunos periféricos o
el cristal oscilador.
3.5.4 Serie C5000: familia TMS320C55x
Otra de las familias de la serie C5000 son los DSP de 16 bits de punto fijo TMS320C55x,
anunciados en febrero del 2000. Pueden ejecutar hasta dos instrucciones en paralelo, con una
anchura de instrucción que varía de los 8 a 48 bits, dependiendo del número de operandos y
operaciones paralelas. Los TMS320C55x se basan en su familia antecesora, el TMS320C54x, pero
agregan mejoras a la arquitectura del procesador y juego de instrucciones. Los TMS320C55x son
parcialmente compatibles en código ensamblador con los TMS320C54x. El sistema de memoria
dispone de una arquitectura de Harvard modificada con espacios de memoria para programa y
datos por separado. El TMS320C55x posee instrucciones que usan un bus de dirección de 24 bits y
un bus de datos de 32-bit para la memoria de programa. El TMS320C55x incluye cinco juegos de
bus de memoria de datos unidireccionales: tres buses de lectura de datos y dos buses de escritura
de datos. Cada juego de bus incluye un bus de dirección de 24 bits y un bus de datos de 16 bits.
La familia está enfocada para aplicaciones que requieren una combinación fuerte entre
rendimiento del DSP y una eficiencia en el consumo de energía. Las aplicaciones planeadas para
los TMS320C55x incluyen teléfonos celulares y módems e infraestructura de telecomunicaciones,
tal como voz vía IP y bancos de módems multi-canal. Las interfases usadas directamente a
SDRAM los hace satisfactorios para el uso en productos portátiles, donde se requieren amplios
buffers de memoria, como cámaras digitales y reproductores de audio digital portátiles (CD
player). Algunos de los miembros de esta familia corren a una velocidad de 300 MHz y un voltaje
de 1.26 V, como es el caso del TMS320C5501 [27].
Una variante que tiene la familia TMS320C55x es la serie OMAP59xx, en la cual se
integra un núcleo de DSP basado en el TMS320C55x y una unidad de procesador (MPU) basada
en el ARM9TDMI, para aplicaciones de alto rendimiento y bajo consumo de energía. Esta
arquitectura permite ofrecer capacidades de procesamiento de señales en tiempo real por parte del
DSP y acoplarlo a las funcionalidades de control del procesador ARM9TDMI.
Los periféricos actuales en todos los miembros de esta familia son; interfase para puerto
host, tres puertos serie (dos en el TMS320VC5501), dos o tres temporizadores, seis canales de
controlador DMA. Varios de ellos además incluyen temporizador watchdog, y reloj en tiempo real.
43
CAPÍTULO 3. ESTUDIO COMPARATIVO DE LOS DSP
En algunas versiones se encuentran disponibles Interfases tal como I2C y UART. Los
TMS320VC5507 y TMS320VC5509A incluyen un puerto USB 2.0 y los TMS320VC5509A
incluyen un puerto serie Digital y Multimedia Card/Secure [28].
3.5.5 Serie C6000: familia TMS320C62x
La familia de procesadores TMS320C62x son dispositivos con un formato de punto fijo. Están
basados en una arquitectura VLIW, la cual permite ejecutar hasta ocho instrucciones RISC por
ciclo de reloj. El primer miembro de la familia, el TMS320C6201, tiene una velocidad de 200
MHz, voltaje de alimentación del núcleo de 1.8 V y una ejecución de 400 MMACs/seg. En
septiembre de 1999, aparecen dos miembros más, el TMS320C6202 y el TMS320C6211, con
velocidades de procesamiento de 250 MHz y 150 MHz, respectivamente. Texas Instruments ofrece
además la familia TMS320C67x, la cual extiende la arquitectura del TMS320C62x con soporte de
aritmética en punto flotante y 64 bits de datos. El sistema de memoria del TMS320C62x
implementa una arquitectura Harvard modificada, manteniendo separados los espacios de
dirección para el programa y memoria de datos. La memoria del programa tiene un bus de
dirección de 32 bits y un bus de datos de 256 bits. La memoria de datos tiene dos buses de
dirección de 32 bits y dos buses de datos de 32 bits.
Los periféricos que comúnmente tiene esta familia son cuatro controladores DMA,
interfase para puerto host, dos temporizadores de 32 bits, dos puertos serie multicanal, etc.
Algunas de sus aplicaciones incluyen las médicas, industrial, reconocimiento de lenguaje, imagen
y gráficos en 3D [29] [30].
3.5.6 Serie C6000: familia TMS320C64x
La familia TMS320C64x, se anunció en febrero del 2000. Estos dispositivos comprenden el
TMS320C6410, TMS320C6412, TMS320C6413 y son de punto fijo con un formato de palabra
VLIW. El TMS320C64x es sucesor de la familia TMS320C62x y su juego de instrucciones es
superior. Otra de las características que agrega respecto al TMS320C62x es la capacidad de
procesamiento SIMD y un número especializado de instrucciones orientadas a las
telecomunicaciones, entre otras mejoras. La familia TMS320C64x puede ejecutar el código de la
familia TMS320C62x, sin ningún problema, pero el TMS320C62x no puede ejecutar todas las
instrucciones del TMS320C64x. La arquitectura de memoria que implementa es de tipo Harvard
modificada, en donde se mantienen separados los espacios de direcciones para instrucción y
memoria de datos. El TMS320C64x busca instrucciones usando un bus de dirección de 32 bits y
un bus de datos de 256 bits.
En el 2003, los miembros más rápidos de la familia eran el TMS320C6414,
TMS320C6415, y TMS320C6416, los cuales trabajan a una frecuencia base de 720 MHz, y
pueden llegar hasta 1GHz en versiones del mismo modelo de DSP.
Otros dispositivos en esta familia son; TMS320DM640, TMS320DM641,
TMS320DM642, correspondientes a la serie TMS320DM64x, están especialmente diseñados para
aplicaciones digitales de multimedia. Estos DSP integran puertos seriales de audio, puertos de
44
3.5.7 SERIE C6000: FAMILIA TMS320C67X
video, controladores DMA multicanal, interfase para puerto host, temporizadores de 32 bits,
puertos serie multicanal, permitiendo aplicaciones de alto rendimiento tales como estaciones base
inalámbricas, modems multilínea, equipo de diagnóstico de imagen, audio, video, sistemas de
radar y sonar. Para el caso específico del TMS320C6416, éste se enfoca a aplicaciones de
comunicaciones de alto desempeño, incluye un coprocesador que realiza operaciones de turbodecodificación y Viterbi [27] [28].
3.5.7 Serie C6000: familia TMS320C67x
La familia TMS320C67x es una familia de DSP de punto flotante de 32 bits, que se deriva de la
familia TMS320C62x de punto fijo y 16 bits de ancho de palabra. Esta familia puede ejecutar
todas las instrucciones del TMS320C62x. Además, integra el estándar IEEE-754 para la
representación de números en punto flotante con precisión simple (de 32 bits) o precisión doble
(de 64 bits) y también cómo deben realizarse las operaciones aritméticas con ellos. Las
aplicaciones de esta familia se enfocan a aquellas de alto nivel de procesamiento, audio, gráficas
en 3D, imágenes médicas, radar y reconocimiento de lenguaje. El TMS320C67x implementa una
arquitectura de memoria Harvard modificada, en donde se mantienen separados los espacios de
direcciones para instrucción y memoria de datos. El TMS320C67x busca instrucciones usando un
bus de dirección de 32 bits y un bus de datos de 256 bits.
Los primeros miembros de la familia TMS320C67x se anunciaron en abril de 1998 y para
mediados de 2003 la familia incluía los DSP; TMS320C6701, TMS320C6711, TMS320C6712 y
TMS320C6713. El dispositivo mas rápido de la familia es el TMS320C6713 con una velocidad de
300 MHz y un voltaje de alimentación del núcleo de 1.4 V. Otros miembros de la familia operan el
intervalo de 150 a 250 MHz, dependiendo de la variante del dispositivo.
El TMS320C67x es compatible con el TMS320C62x; es decir; puede ejecutar cualquier
código de este último, pero el TMS320C62x no puede ejecutar todas las instrucciones del
TMS320C67x. Tampoco es compatible con la familia TMS320C64x.
45
CAPÍTULO 3. ESTUDIO COMPARATIVO DE LOS DSP
3.6 Conclusiones
El propósito del estudio comparativo es ofrecer un panorama general del tipo de dispositivos que
está desarrollando cada fabricante. No se pretende hacer un “benchmarking” y hacer pruebas de
desempeño de algoritmos de procesamiento para saber que dispositivos son los mejores. Al
contrario, este capítulo describe brevemente la arquitectura, las aplicaciones y herramientas que
utilizan los sistemas modernos para el procesamiento digital de señal.
Por supuesto que cada fabricante promete el mejor de los DSP, con un buen desempeño,
una extensa gama de periféricos, suficiencia de memoria, todo a un costo más bajo que el de la
competencia. Pero queda en el diseñador hacer uso de la información técnica, para elegir el
dispositivo más conveniente para su aplicación.
Una característica clave de los DSP que los distingue de otros dispositivos tales como los
RISC, es su paralelismo. Es decir, los tiempos de ejecución de varias instrucciones se efectúan en
un único ciclo de máquina y la habilidad para mover datos eficientemente dentro del sistema, todo
esto bajo condiciones de bajo consumo de potencia. Esto los hace aptos en una variedad de
aplicaciones tales como; comunicaciones inalámbricas, audio, Internet, video, imágenes médicas,
y la lista es interminable.
A partir de 1999 los DSP han tenido un crecimiento del 50%. Al igual que en las
computadoras, se habla ya de una cuarta generación de dispositivos DSP que plantean el dilema si
los procesadores de uso general pueden integrar un DSP dedicado al procesamiento digital de
señales, o si un DSP haga uso de otro procesador para complementar tareas de procesamiento. Esa
es la tendencia actual en el mercado, el cual incorpora un DSP junto con un núcleo de CPU de
propósito general a los cuales se les denomina híbridos. Además, se podrá ver una mayor
integración de periféricos y memoria, dentro de un mismo integrado (SoC, System on Chip),
gracias a los procesos de reducción del área de diseño.
En el Anexo B se encuentra de manera más detallada los DSP que están en línea de
producción de cada fabricante. El orden en que están ubicados es conforme al porcentaje de
presencia que tienen en el mercado, empezando por la tabla B-1 del fabricante Analog Devices; la
idea de este formato gráfico es tener más clara la información. En el archivo tabla de fabricantes
de DSPs.pdf se puede ingresar al contenido técnico de las familias de procesadores DSP y sus
dispositivos.
46
Capítulo 4
Herramientas de Desarrollo y
Plataformas de DSP
4.1 Software de Desarrollo
Este capítulo se enfoca al estudio de las herramientas de software para la implementación de
algoritmos en el DSP, y de los componentes que intervienen en las funciones de una aplicación,
que en ocasiones ocurren de manera transparente al usuario. Anteriormente, las herramientas que
se ofrecían eran sólo para los procesadores RISC y microcontroladores, y se limitaban a programas
de compilación del fabricante, tanto en lenguaje C como en ensamblador. Con el incremento en la
potencia de cálculo de los DSP, aparecieron aplicaciones más complejas, de tal forma que un
único componente pudiera ejecutar múltiples algoritmos. Entonces, el lenguaje ensamblador ya no
era suficiente y se tuvieron que asociar los programas de compilación en C con rutinas de trabajo
que procesaran en tiempo real que permitieran estructurar los trabajos mediante tareas. Todos los
fabricantes de DSP y de tarjetas que incluyen DSP están de acuerdo en que el software de estos
sistemas es un factor crítico, esto ha permitido que varios de ellos tengan acuerdos de colaboración
con desarrolladores de software o que hayan adquirido estas compañías.
El principal problema que enfrentan los fabricantes de DSP es que desarrollar un sistema
operativo implica una tarea de cientos de líneas de código en un lenguaje de alto nivel. De ahí que
los fabricantes precisen entornos de desarrollo que faciliten la programación. El objetivo final es
encontrar las herramientas que simplifiquen la generación de código, además de una interfase lo
más fácil de usar. Una vez que se diseñan convenientemente los algoritmos, el siguiente paso es
desarrollar y probar los programas. Un lenguaje de programación expresa el algoritmo, de tal
forma que define operaciones precisas dentro del procesador. El algoritmo se describe inicialmente
por medio de una ecuación o un diagrama de flujo que usa nombres simbólicos para las entradas y
salidas.
El tiempo de ejecución de un algoritmo depende de la eficiencia del código y de las
operaciones que se realizan en cada ciclo de instrucción, así que el software de desarrollo del DSP
debe explotar al máximo las capacidades del procesamiento paralelo, independientemente de la
arquitectura y juego de instrucciones del procesador. Se debe tener un plan global de las tareas de
procesamiento de señales que incluya requerimientos de memoria, restricciones del procesador,
tamaño del programa, tiempo de ejecución, etc.
47
CAPÍTULO 4. HERRAMIENTAS DE DESARROLLO Y PLATAFORMAS DE DSP
Es muy importante considerar la calidad y complejidad de las herramientas de diseño a la
hora de seleccionar un DSP, ya que pueden variar ampliamente entre procesadores. Comúnmente,
se encontrarán dos tipos de lenguajes de programación para la escritura de código: ensamblador y
“C”. En el punto 4.1.1 se analizan los rasgos generales del lenguaje ensamblador, también
denominado lenguaje de bajo nivel, mientras que a partir del punto 4.1.2 hasta 4.1.4 se analizan
los métodos de programación que pertenecen a los lenguajes de alto nivel.
Muy estrechamente relacionado al tema del software de desarrollo están las instrucciones
que en conjunto definen las operaciones que se ejecutan en el DSP. (Ver el apartado 2.2.8 Juego de
Instrucciones, del capítulo 2. Para una mayor referencia de este capítulo se puede consultar las
referencias [9] [10]).
4.1.1 Lenguaje ensamblador
Si bien es cierto que ya casi nadie programa ensamblador a mano, es importante mencionar que
este lenguaje es un código de máquina que trabaja directamente con el procesador. Por lo tanto,
proporciona la forma de ejecución más rápida y compacta de un algoritmo, así que es preciso
conocer el funcionamiento interno del DSP [10]. Las instrucciones se especifican por
mnemónicos, registros internos, y símbolos predefinidos. Los números se representan en forma
decimal, binaria, hexadecimal, o por símbolos que define el usuario. Los ambientes de desarrollo
que se basan en el uso del lenguaje ensamblador pueden incluir ensambladores, enlazadores,
simuladores de conjunto de instrucciones, circuitos emuladores, depuradores, tarjetas de
desarrollo y librerías. Es importante mencionar cuál es la función de los módulos que pertenecen a
herramientas de desarrollo de software del lenguaje ensamblador (figura 4-1) y que intervienen en
el proceso de programación del DSP, por lo que a continuación se desarrolla cada uno de ellos:
- Ensamblador (Assembler), la tarea del módulo 1 es convertir los archivos del código
fuente (texto ASCII), escritos usando mnemónicos de lenguaje ensamblador, a archivos binarios
de código de objeto para el DSP. Los archivos fuente que contienen el programa en ensamblador
son la entrada al módulo ensamblador. El ensamblador produce dos archivos de salida. Un archivo
enlista las operaciones del ensamblador en un módulo particular o grupo de módulos en términos
de las localidades de memoria en el programa de datos, errores del ensamblador, etc. El otro
archivo es de objeto y se usa como entrada al enlazador (linker), posteriormente se puede
descargarse a la memoria de programa del DSP para su ejecución.. Muchos ensambladores
incluyen macro librerías que facilitan la programación con bloques de código y permiten al
programador reducir el código fuente.
Existe un formato estándar para cada archivo de código de objeto al que se le denomina
COFF (Common Object File Format). El formato COFF permite una programación modular
mucho más fácil, que encamina al usuario al uso de bloques de código o datos cuando se escribe
un programa en lenguaje ensamblador. Estos bloques se conocen como secciones y son la unidad
más pequeña de un archivo objeto, contienen información de depuración, como punteros en las
líneas del código fuente que corresponden a cada instrucción de máquina.
48
4.1.1 LENGUAJE ENSAMBLADOR
Librerías de
código de
objeto
Librerías del
Ensamblador
Código fuente
en lenguaje
ensamblador
Código fuente
en lenguaje C
.asm
.c
t
.lis
Ensamblador
1
Compilador
C
Bloques
diversos
.obj
Enlazador
2
.obj
Código Código de
Objeto
binario
ejecutable
.out
.bin
Producto
final
Simulador
3
Tarjeta de
Desarrollo DSP
Depurador
4
Emulador-Circuito
Figura 4-1. Interacción entre el lenguaje ensamblador y herramientas de desarrollo.
- Enlazador (Linker), la operación del módulo enlazador 2 es combinar varios archivos de objeto
y librerías en un solo programa ejecutable. Para hacer esto, el enlazador debe reagrupar el código;
esto es, prepara las direcciones en la cual residirán varios fragmentos de código de los archivos de
objeto y librerías cuando se vayan a ejecutar. Ya que los enlazadores se usan para traer al mismo
tiempo muchas partes de un programa de aplicación, deben ser lo suficientemente flexibles para
acomodar los requerimientos de diferentes archivos objeto y configuraciones de memoria.
Muchos enlazadores de DSP se basan en el concepto de un mapa de memoria, el cual le
señala al enlazador qué segmentos de memoria (y espacios de memoria) usar para cada sección de
código de programa y datos. Ya que existen diversas configuraciones en los sistemas hardware y
las aplicaciones requieren de diferentes mapas de memoria, el usuario puede especificar esos
mapas.
Cuando se depura o analiza un programa, los usuarios necesitan desplegar las direcciones
de los símbolos que se usan en los archivos de objeto, así como del código binario ejecutable. Esta
información se almacena en una estructura llamada tabla de símbolos. Algunos enlazadores
pueden producir una representación ASCII de la tabla de símbolos al final del proceso de
enlazamiento, mientras otros lo hacen por separado con programas de utilería.
49
CAPÍTULO 4. HERRAMIENTAS DE DESARROLLO Y PLATAFORMAS DE DSP
- Simulador (Simulator), el módulo 3 es un programa cuya función consiste en simular la
operación de un DSP y la ejecución de un programa. Por medio de una interfase visual se muestran
las instrucciones de programa, registros, memoria, banderas, y se permite al usuario manipular los
contenidos de memoria y registros. El simulador permite que muchos programas se ejecuten sin
que se descarguen al DSP o de que se prueben en hardware, lo que facilita la depuración y
optimización del código. Los factores principales que hacen diferente a un simulador de
instrucciones de otro son la precisión, velocidad, integridad y soporte.
- Depurador (Debbuger), el módulo 4 es un programa que permite depurar otro programa en
desarrollo; es decir, proporciona la interfase de usuario. Al iniciarse la depuración, cuando el
depurador lanza el programa en desarrollo. Éste se ejecuta normalmente hasta que el depurador
detiene su ejecución, permitiendo al usuario examinar la situación.
El depurador permite detener el programa en:
•
•
•
•
Un punto determinado mediante un punto de ruptura.
Un punto determinado bajo ciertas condiciones mediante un punto de ruptura condicional.
Un momento determinado cuando se cumplan ciertas condiciones.
Un momento determinado a petición del usuario.
Durante esa interrupción, el usuario puede:
•
•
•
•
•
•
Examinar y modificar la memoria y las variables del programa.
Examinar el contenido de los registros del procesador.
Examinar la pila de llamadas que han desembocado en la situación actual.
Cambiar el punto de ejecución, de manera que el programa continúe en un punto diferente al
que fue detenido.
Ejecutar una a una cada instrucción.
Ejecutar partes determinadas del código, como el interior de una función, o el resto de código
antes de salir de una función.
El depurador depende de la arquitectura y sistema en el que se ejecute, por lo que sus
funcionalidades cambian de un sistema a otro. Aquí se han mostrado las más comunes.
Usualmente, estas herramientas las proporciona el fabricante del DSP, o se desarrollan por
terceras partes, y son específicas para un determinado procesador.
Texas Instruments es el fabricante que más influencia tiene en el mercado, por ofrecer una
extensa gama de herramientas en lenguaje ensamblador, algunas de las cuales se integran dentro
del sistema de desarrollo Code Composer Studio (CCS). Para obtener mayor información sobre el
contenido de las herramientas del lenguaje ensamblador que Texas Instruments ofrece se puede
consultar la referencia no. 31. Otros proveedores como Analog Devices, Motorola, y Lucent
Technologies compiten con herramientas que se basan en el sistema operativo de Windows de
Microsoft. Dentro del proceso que se sigue para el desarrollo de estas herramientas, la primera
etapa de pruebas al producto se realiza dentro de la misma organización que lo desarrolla.
Posteriormente, solo se involucra a un número limitado de usuarios externos antes sacar el
producto al mercado.
50
4.1.2 LENGUAJE “C”
4.1.2 Lenguaje “C”
C es un lenguaje de programación de alto nivel orientado a la programación de sistemas
operativos, se emplea en aplicaciones científicas, industriales, etc; pero, a su vez, dispone de
construcciones de lenguaje que permiten un control a muy bajo nivel. También, su uso se ha
difundido ampliamente entre los programadores que desarrollan software para DSP. El núcleo del
lenguaje es simple, con funcionalidades importantes, como funciones matemáticas y manejo de
ficheros, proporcionadas por bibliotecas facilitando la programación. Una buena práctica es
documentar de manera precisa los programas con títulos y comentarios, para simplificar las tareas
de entendimiento mediante el uso de nombres significativos de mnemónicos para variables,
niveles y subrutinas. La mayoría de los DSP que actualmente se comercializan tienen soporte con
este lenguaje de programación e incorporan un compilador en C. Por otro lado, los bloques de
memoria para programa y datos se deben ordenar para minimizar los tiempos de acceso.
A pesar de ser muy popular, al lenguaje C estándar le hacen falta características que
simplifiquen el código de algoritmos de DSP. Un ejemplo es que omite datos de punto fijo y
complejos. Para solucionar estos problemas, los vendedores de estos programas agregan mejoras
que subsanan las deficiencias.
Usualmente, los compiladores C generan código en ensamblador para que el usuario pueda
ver las instrucciones que se generan por cada línea de programa escrita en lenguaje C. El proceso
de configuración del DSP es similar al que se efectúa con lenguaje ensamblador, sólo que ahora el
programa fuente está escrito en C. En la figura 4-1 se observa este proceso. Algunas herramientas
vienen con librerías que incluyen funciones para entradas y salidas estándar, manipulación de
línea, asignación de memoria dinámica, conversión de datos y funciones matemáticas.
Existe otro tipo de lenguajes para la programación de DSP derivados del lenguaje C. Uno
es C++. En este lenguaje de alto nivel, el programador puede crear nuevos tipos de datos y
operaciones para satisfacer las necesidades de su aplicación. Esta versión combina la flexibilidad y
el acceso de bajo nivel de C con las características de la programación orientada a objetos como
abstracción, encapsulación y ocultación.
No es parte de este trabajo comprender aspectos de programación del lenguaje
ensamblador y “C” referente a las instrucciones y comandos que utilizan para el desarrollo de un
programa, aunque sí se dan ejemplos de cómo cargarlos y ejecutarlos en el DSP.
51
CAPÍTULO 4. HERRAMIENTAS DE DESARROLLO Y PLATAFORMAS DE DSP
4.1.3 Code Composer Studio (IDE, Integrated Development Environment)
Code Composer Studio IDE (Integrated Development Environment) es un ambiente de desarrollo
integrado que actúa como interfase de comunicación entre la tarjeta de desarrollo y la
computadora, permitiendo programar al DSP de una manera más sencilla. Incorpora cada uno de
los módulos vistos con anterioridad; es decir, un compilador C, ensamblador, enlazador,
simulador, depurador, etc., con características adicionales para visualización gráfica. Gracias al
editor que proporciona, CCS permite la manipulación de programas en lenguaje C/C++,
ensamblador o incluso el manejo de proyectos completos para la construcción de aplicaciones.
Code Composer Studio facilita el uso de diversas ventanas de observación y permite
establecer puntos de ruptura dentro del programa, puntos de prueba para datos de I/O. También
ofrece capacidades gráficas para monitoreo de datos, además de determinar el rendimiento de
tiempo que se invierte en una porción del programa, entre otras características [10].
Para familiarizar al usuario con la escritura eficiente del código C/C++, en los modelos
TMS320x28xx y TMS328x28xxx de la familia C2000, Texas Instruments ofrece una colección de
archivos o carpetas que pueden ejecutarse desde CCS y facilitarán la edición y mantenimiento de
programas:
•
•
•
C281x C/C++ Header Files and Peripheral Examples (SPRC097)
C280x, C2801x C/C++ Header Files and Peripheral Examples (SPRC191)
C2804x C/C++ Header Files and Peripheral Examples (SPRC324)
Dependiendo de las necesidades que se tengan, estos archivos se pueden usar como
herramientas de aprendizaje que incluyen ejemplos desde Code Composer Studio. Los ejemplos
explican los pasos que se requieren para inicializar el dispositivo y utilizar los periféricos.
Además, se puede copiar y modificar su estructura con el fin de experimentar diferentes
configuraciones de los periféricos. También se pueden usar como código base de una plataforma
de desarrollo e integrarse dentro de un proyecto, usando las secciones necesarias de código y
descartando el resto del programa. Los archivos de aplicación no representan un tutorial de C,
C++, ensamblador para C28xx, o herramientas de emulación. El usuario debe tener un nivel básico
de conocimiento en lenguaje C, acceso a los ejemplos en cada una de las carpetas y la habilidad de
cargar y ejecutar código usando Code Composer Studio [32].
Code Composer Studio incluye algunas librerías de trabajo para trabajar con diferentes
versiones de plataformas de evaluación, que permiten al usuario iniciar tareas de programación y
determinar el uso o restricción de tiempo real acorde a la necesidad de la aplicación. Es
recomendable recurrir a los manuales de instalación de cada plataforma en particular, con el fin de
ahorrar tiempo en el manejo e instalación. Las versiones disponibles de CCS compatibles con las
familias de DSP se muestran a continuación:
•
•
•
V.4.12 para la familia C2000 que corre en Windows 95/98/NT.
V2.0 para algunos dispositivos de la familia 67xx. que corre en Windows98/2000/NT.
V3.1 para las familias C2000, C5000 y C6000 que corre en Windows XP.
52
4.1.3 CODE COMPOSER STUDIO (IDE)
Una característica muy importante que se tiene con la versión actualizada de CCS versión
3.1, es que está construido para abrir interfases para programación de aplicación (API, Application
Programming Interface). Esto permite a terceras partes o clientes construir herramientas que hagan
uso del DSP e interactuar con los componentes de CCS. Tal es el caso de Matlab y Simulink, que
incorporan librerías útiles para uso con DSP. De esta manera se facilita la programación y las
aplicaciones pueden ser más rápidas y efectivas.
El contenido de esta herramienta es muy extenso, por lo que sólo se comenta
superficialmente el manejo y la versión de CCS que corre en cada sistema operativo. En el Anexo
C se proporciona el procedimiento que le permite al usuario instalar y usar la versión actualizada
de CCS (v3.1) con ejemplos claros para generar, depurar, compilar y ejecutar un programa
(ensamblador y “C”) en la plataforma TMS320F2812 eZdsp. Además, se encontrarán los pasos
para administrar un proyecto, agregar programas de ejecución de una aplicación especifica,
instalar librerías de ejecución de comandos, etc. Además, en el CD que se anexa, se encuentra más
información sobre el manejo e instalación de Code Composer Studio que complementa la
información aquí descrita, tal como tutoriales, librerías, aplicaciones reales para uso en electrónica
de potencia, manuales de programación, etc. En la figura 4.2 se observan las etapas que
intervienen en el proceso de diseño de una aplicación que se desarrolla en el ambiente de
desarrollo CCS. Si se requiere más información del contenido de estas herramientas se pueden
consultar las referencias [33] y [34].
Figura 4-2. Diagrama de flujo del proceso de diseño en CCS.
53
CAPÍTULO 4. HERRAMIENTAS DE DESARROLLO Y PLATAFORMAS DE DSP
4.1.4 Matlab / Simulink
Matlab y Simulink incorporan herramientas y utilerías para aplicaciones con DSP. Este software
ofrece diversas ventajas ya que permite al usuario programar en un lenguaje de alto nivel similar a
C++, conocido como m-code (m-files). Un aspecto importante de los archivos m-files en la PC es
que dan al usuario la habilidad de cargar el programa al DSP, iniciar la ejecución, recuperar datos
después de cada prueba finalizada y detener la ejecución del DSP. De manera similar, se generan
archivos de proyecto que se pueden cargar desde Code Composer Studio y de manera
independiente a Matlab [35].
Matlab proporciona funciones con algoritmos que permiten simplificar el diseño de filtros
adaptables tipo IIR y FIR, ya que incorpora una utilería para el diseño de filtros digitales.
Simulink es una plataforma que tiene funcionalidades similares a las de Matlab, pero
permite al usuario diseñar sistemas gráficamente, con diagramas de bloques como interfase.
Simulink cuenta con grupos de bloques que permiten al ingeniero implementar tareas comunes
como entradas/salidas, enrutar señales, simulación, etc. Gracias a la funcionalidad de bloques se
puede trasladar la información contenida en un diagrama a código operacional [36] [37].
Real Time Workshop es una extensión de las capacidades de Simulink y Matlab. Permite al
usuario generar automáticamente paquetes y compilar el código fuente a partir de un modelo
establecido en Simulink, y crear aplicaciones de software en tiempo real sobre una amplia
variedad de sistemas. Estos sistemas pueden ser otras PC, microcontroladores, DSP o incluso un
FPGA. Hasta el momento, MathWorks ofrece librerías que dan soporte a la familia de DSP C2000
y C6000 de Texas Instruments, los microcontroladores C166 de Infineon o el MPC555 y HC12 de
Motorola [38].
En la figura 4-3 se observa el proceso para la generación de código fuente desde un modelo
en Simulink usando Real Time Workshop. En resumen, Real Time Workshop (RTW) junto con
otras herramientas y componentes de MathWorks proporciona [39]:
•
•
•
•
•
Generación automática de código para una variedad de plataformas.
Una forma rápida y directa para la implementación de un diseño.
Una fácil integración con Matlab y Simulink. (En el Anexo D se proporciona información
complementaria sobre como ejecutar modelos de Simulink en CCS).
Una interfase gráfica de usuario sencilla.
Una arquitectura abierta y un proceso de ejecución extensible.
54
4.2 PLATAFORMAS DE DSP
Simulink
Modelo.mdl
Programa TLC
(Target Language Compiler)
+ Archivo “Sistema” de la tarjeta de DSP.
+ Archivos “Bloque” de la tarjeta.
+ Archivos “Función S” de tarjeta.
+ Librería de Función del Compilador a
Lenguaje de tarjeta.
+ Archivos “Bloque” de la tarjeta generados
Construir Real Time Workshop
Modelo.rtw
Compilador
a Lenguaje
de Tarjeta
(TLC)
Modelo.c
dinámicamente.
Archivos de soporte a interfase Run-time
Realiza
Modelo.mk
Modelo.exe
Figura 4-3. Generación del código fuente a partir de un modelo en Simulink.
4.2 Plataformas de DSP
Hasta ahora se han mencionado a cuatro fabricantes de DSP que también incursionan en el
mercado de sistemas de desarrollo y tarjetas que se basan en procesadores DSP. Existen otras
compañías, también denominadas fabricantes de tercera parte (Third Party Support) que participan
en este mercado, con tarjetas de evaluación y desempeños en tiempo real; en otros casos las
tarjetas son tan especializadas que se incorporan directamente dentro de productos finales. Los
fabricantes de esas tarjetas deben proporcionar amplia información de diseño del hardware y las
características del DSP en que se basa el sistema. Hay que tener en cuenta que un buen fabricante
debe ofrecer librerías, aplicaciones y/o herramientas de diseño y apoyo técnico.
En el caso particular de esta tesis se eligen los DSP de Texas Instruments. ¿Por qué se hizo
esta selección? La respuesta está en que las tarjetas que se tienen en el Departamento de
Electrónica incorporan procesadores de la familia TMS320, que por su extensa gama en las
configuraciones proporcionan mejores características de desempeño en una aplicación dada. Claro
que existen otros productos e independientemente del fabricante de procesadores DSP, en la
actualidad se encuentran diversas plataformas de desarrollo, con amplios niveles de soporte y
costo; la gama va de los muy caros para un módulo de evaluación (EVM, Evaluation Module) con
emulador, hasta uno muy barato como lo es un kit de inicio (DSK, Dsp Starter Kit).
En el primer caso, un módulo de evaluación es útil para acelerar el proceso de diseño de la
aplicación; físicamente es una tarjeta que incluye el DSP y circuitos periféricos tales como
55
CAPÍTULO 4. HERRAMIENTAS DE DESARROLLO Y PLATAFORMAS DE DSP
codificador-decodificador (CODEC) como interfase de audio, soporte de emulador JTAG (Join
Test Action Group), y bancos de memoria. Un módulo de evaluación se puede conectar dentro de
una computadora personal, a través del bus PCI como es el caso del módulo de evaluación
TMS320C6X de Texas Instruments, o externamente a través del puerto paralelo mediante el
emulador.
Por otro lado están los kit de inicio, una versión a pequeña escala del módulo de evaluación
y cuya ventaja radica en que son tarjetas de bajo costo y disponen de herramientas de desarrollo
fáciles de usar para evaluar las características técnicas del DSP. Además, permiten el desarrollo
rápido de prototipos, demostraciones y conceptos de prueba para aplicaciones. Sin embargo, la
falta de periféricos y memorias puede requerir la construcción de circuitos adicionales de I/O o de
tarjetas secundarias de memoria que amplíen la capacidad del kit de inicio. La conexión que
tienen estos productos con una computadora facilita las tareas de diseño; actualmente se pueden
conectar mediante el cable paralelo, USB o a través del JTAG con un emulador.
Dentro del estudio de las herramientas de hardware, interviene un dispositivo externo a la
tarjeta de evaluación, el cual juega un papel muy importante en el proceso de programación y
configuración de algunas tarjetas de DSP. Si se observa nuevamente la figura 4-1 se puede notar
el dispositivo emulador, el cual sirve para la depuración y optimización de las aplicaciones que
corren en el DSP.
El emulador consiste de una tarjeta externa que se inserta a través de un bus de la
computadora (comúnmente el puerto paralelo) y sirve para acceder al DSP y sus periféricos. La
salida de la tarjeta emuladora se conecta por un cable, que contiene un controlador de prueba de
bus, el cual controla la información de análisis de la tarjeta del procesador. El software de
depuración que se instala en la computadora permite al usuario descargar código a la tarjeta de
DSP y realizar tareas de depuración, ejecutar paso a paso un programa, ver y editar el contenido de
los registros y memoria.
Por ejemplo, los procesadores TMS320 de T.I. usan el módulo JTAG. Éste proporciona la
interfase entre una computadora personal con el DSP para la emulación. De manera específica, el
emulador XDS510PP proporciona la conexión entre el módulo JTAG del LF2407 y la
computadora personal. En la figura 4-4 se muestra este tipo de conexión. El módulo JTAG permite
a la PC tomar control total del DSP mientras Code Composer Studio se está ejecutando. Algunas
de las tareas consisten en definir pines para:
a) Enviar y recibir datos de forma serie en el DSP.
b) Cronometrar la emulación interna lógica.
c) Definir el modo del procesador.
d) Reforzar capacidades de depuración tales como establecer referencias, interrupciones y perfil.
56
4.2.1 CONFIGURACIONES HARDWARE
Figura 4-4. Esquema de conexión de la PC al DSP.
En el capítulo anterior se vieron las características generales de las familias que tiene cada
fabricante de DSP. En la sección 4.2.1 se detalla brevemente algunas de las configuraciones que se
deben realizar para un correcto funcionamiento de periféricos y otros dispositivos. Posteriormente,
a partir de la sección 4.2.2 y hasta la 4.2.7 se enfocan al estudio de las características y
aplicaciones que se pueden definir en las plataformas de desarrollo con las que se cuenta en el
Departamento de Electrónica.
4.2.1 Configuraciones Hardware
Una vez que se selecciona el DSP y se conectan sus pines con alguna configuración externa de
hardware, necesita escribirse un conjunto de programas, que se conoce como firmware, para
configurar los periféricos del procesador y los dispositivos externos. Algunas de las
configuraciones más importantes que se definen en la tarjeta incluyen:
1.
2.
3.
4.
Establecer la frecuencia de reloj y la programación del PLL interno para manejar el DSP.
Establecer el software y hardware de estados de espera de la memoria externa y
dispositivos entrada/salida
Establecer la frecuencia de muestreo, tasa de transferencia, tamaño de buffer de salida o
entrada de los ADC o DAC.
Establecer el protocolo de comunicación del DMA.
Después que se instalan correctamente los programas firmware, el código se enlaza y se
descarga a la memoria interna del DSP. El firmware se ejecuta antes de la rutina principal.
57
CAPÍTULO 4. HERRAMIENTAS DE DESARROLLO Y PLATAFORMAS DE DSP
4.2.2 TMS320LF2407 (EVM)
El módulo de evaluación TMS320LF2407 es una tarjeta tipo “Stand-alone” de la familia C24x,
que permite evaluar algunas características del procesador TMS320LF2407 de punto fijo, con una
capacidad de procesamiento de 40 MIPS. Esta velocidad de procesamiento permite ejecutar
programas en tiempo real, para aplicaciones de filtros digitales o algoritmos de control, sensores y
control de motores, donde un monto elevado de cálculos debe procesarse rápidamente. Gracias al
periférico manejador de eventos (Event Manager, EVA & EVB), se cuenta con las funciones
necesarias para controlar dispositivos electromecánicos y electrónicos. Cada manejador de eventos
se compone de bloques funcionales: timers, comparadores, unidades de captura para disparos
(triggering), circuitos generadores de modulación PWM, circuitos QEP (Quadrature Encoder
Pulse) e interrupciones lógicas [40];
El DSP cuenta además con canales para conversión analógica a digital, útiles en
aplicaciones tales como lazos de control de retroalimentación, para monitorear el rendimiento de
un motor o implementación de algoritmos de filtrado de una señal. Cuenta también con otros
periféricos que en algún momento pueden ser de utilidad en ciertas aplicaciones: interfaces de
comunicación serial SCI, interfase de periféricos Serial SPI, entradas/salidas de propósito general
GPIO, etc. Físicamente, es una tarjeta que se conecta a través del puerto paralelo de una PC y el
emulador XDS510PP Plus con conector de salida JTAG. En el documento Modulo de Evaluación
EVM2407.pdf se encuentra el manual de instalación de la tarjeta para usarse con el software de
desarrollo CCS, así como algunas prácticas implementadas en la misma.
Spectum Digital es el fabricante del TMS320LF2407 EVM y utiliza como software de
desarrollo Code Composer Studio versión 4.12 de TI. Este software se instala bajo un sistema
operativo Windows 98, (lo que dificulta encontrar en operación este sistema operativo en una PC).
Al respecto existe una actualización del controlador del TMS320LF2407 EVM para trabajar desde
Windows XP (ejecutar el archivo setupCCSPlatinum_v30104C.exe que se encuentra en
e:\CDTESISDSPs\texasinstruments\c2000\TMS320x24x\tercera_parte\setupCCSPlatinum_v30104C.zip.
Actualmente, el fabricante Spectrum Digital ofrece el kit de inicio TMS320F2812 eZdsp
que con la finalidad de reemplazar el TMS320LF2407 EVM. Este DSP se basa en la nueva
generación TMS320C28x la cual tiene aspectos técnicos similares a su antecesora, su poder de
cálculo es superior, tanto en capacidad de memoria como de ejecución de instrucciones por
segundo. Para mayor información técnica se puede consultar la referencia [41].
En la parte práctica se ha logrado, a través de notas de aplicación, la generación de señales
moduladas PWM. Es necesario acondicionar dichas señales para aplicaciones tales como el
manejo de un inversor de potencia o para la implementación de un control de velocidad de un
motor. La conveniencia para la generación de señales PWM mediante el DSP reside en la facilidad
con la que se puede programar. Gracias a que existen plantillas de programas que habilitan
periféricos, puertos, GPIO, etc. la programación es más fácil, ya que se puede programar en
lenguaje C e incluso hay ejemplos de programación en lenguaje ensamblador. En las carpetas
F240x_EVM_Practicas.zip
y
Tutorials.zip
del
directorio
e:\CDTESISDSPs\texasinstruments\c2000\TMS320x24x\tercera_parte\*.zip;
encontrará
un
compendio de prácticas y tutoriales respectivamente para utilizarse con el TMS320LF2407 EVM.
Un resumen de las características técnicas de esta tarjeta se encuentra en el Anexo E.
58
4.2.3 TMS320C6X (EVM-PCI)
4.2.3 TMS320C6X (EVM- PCI)
El módulo de evaluación TMS320C6X es una plataforma de propósito general de mediano costo.
La plataforma C6X EVM permite evaluar al procesador TMS320C6701 de punto flotante, posee
una arquitectura VLIW de 32 bits de ancho de palabra, y 1600 MIPS de rendimiento. Estos
procesadores de punto flotante se utilizan en una amplia gama de aplicaciones en las que existe un
elevado volumen de procesamiento. Actualmente, el producto está descontinuado y lo reemplaza
el TMS320C6713 DSK.
Por sus características técnicas el TMS320C6701 EVM se descartó en aplicaciones de
electrónica de potencia, ya que no satisface las necesidades que se tienen en el Departamento de
Electrónica. Dentro de los algoritmos en los que mejor desempeño tiene la plataforma se pueden
mencionar los que se utilizan en telefonía, módems inalámbricos, y comunicaciones a través de la
implementación de filtros digitales, modulación en amplitud y frecuencia (AM y FM), debido a
que incorpora una interfase codificador-decodificador audio estéreo (codec) con una tasa de
muestreo de los 5.5 KHz a los 48 KHz, a través de dos entradas, una de micrófono y una línea de
entrada permitiendo conversiones ADC y DAC útiles en el procesamiento de señales de audio y
voz [42].
Físicamente, es una tarjeta que se inserta en una ranura tipo PCI de una computadora. Un
inconveniente son las dimensiones físicas, aproximadamente de 10.6 cm. de ancho, 31.3 cm. de
largo, lo que hace difícil encontrar un gabinete de PC para su instalación. Además, entre los
requerimientos para la instalación de la tarjeta se requiere de sistema operativo Windows NT 4.0
o Windows 95 para la programación mediante el software Code Composer versión 2.1, lo que hizo
difícil la instalación de la misma ya que esta versión es obsoleta. Se intentó usarla bajo Windows
98, sin que se lograra la comunicación entre la computadora y el DSP. El ‘C6X EVM también
puede usarse en modo stand-alone con el uso de una fuente de alimentación externa y de un
emulador XDS510 ó XDS510WS, el cual no se incluye con la tarjeta. Para mayor información
técnica se puede consultar el documento [43]. Un resumen de las características técnicas de esta
tarjeta se encuentra en el Anexo E.
59
CAPÍTULO 4. HERRAMIENTAS DE DESARROLLO Y PLATAFORMAS DE DSP
4.2.4 TMS320F2812 (eZdsp)
El kit de inicio TMS320F2812 eZdsp es una tarjeta del tipo “stand alone” que permite evaluar las
características del procesador TMS320F2812, de punto fijo, de 32 bits de ancho de palabra y un
rendimiento de 150 MIPS. Es interesante comentar que tiene una capacidad única de programación
virtual para formatos de punto flotante, gracias a una librería matemática “IQ-Math”que permite
ejecutar algoritmos de punto flotante en un DSP de punto fijo. El fabricante de la tarjeta es
Spectrum Digital y el DSP es de Texas Instruments. Físicamente cuenta con dos conectores de
expansión para agregar circuitos de evaluación adicionales como I/O y analógicos; además del
conector JTAG como interfase con un emulador. También cuenta con un puerto paralelo mediante
el cual se conecta a una PC. Con el fin de ahorrar tiempo en el desarrollo de código, la tarjeta
cuenta con herramientas de depuración mediante el software Code Composer Studio Versión 3.1
IDE para la familia C2000 [44]. Esta versión de CCS se ejecuta bajo un sistema operativo
windows 2000 o XP.
La tarjeta cuenta con herramientas de respaldo del fabricante MathWorks que interactúan
con eXpressDSP de Texas Instruments. A través del software Simulink y Matlab se pueden
desarrollar y validar diseños de control y procesamiento digital de señal desde el concepto de
programación grafica. La tarjeta TMS320F2812 usa código C el cual se genera con Real Time
Worshop y otras herramientas de T.I a partir de un modelo de Simulink. Real time Workshop
construye además un proyecto en Code Composer Studio a partir del código en C.
Por sus características el TMS320F2812 eZdsp es una herramienta apropiada para diversas
aplicaciones de control de motores, inversores, dispositivos semiconductores y sensores. Entre los
periféricos con los que cuenta se pueden mencionar seis canales PWM por cada manejador de
eventos (A y B), 16 canales para conversión analógico-digital de 12 bits, y dos módulos para el
conteo de pulsos de un encoder (QEP, Quadrature Encoder Pulse). Cuenta además con módulos de
comunicación estándar que le permiten una conexión fácil con otros componentes tales como un
CPU, bancos de memoria, pantalla LCD y convertidores de datos externos. Una interface CAN
facilita el control de una red para aplicaciones industriales, automotrices y de comunicaciones. Un
resumen de las características técnicas de esta tarjeta se encuentra en el Anexo E.
60
4.2.5 TMS320C6416 (DSK)
4.2.5 TMS320C6416 (DSK)
El kit de inicio TMS320C6416 DSK es una plataforma de propósito general de bajo costo
desarrollada en conjunto entre Spectrum Digital y T.I para aplicaciones del procesador
TMS320C6416. El kit está especialmente diseñado para aplicaciones de alto desempeño tales
como redes, video, imagen y sistemas multicanal. Las características del procesador
TMS320C6416 incluyen un formato de punto fijo y 16 bits de ancho de palabra y arquitectura
VLIW, 5760 MIPS, y una velocidad de 750 MHz.
Físicamente, es una tarjeta que se conecta fácilmente a una computadora a través del puerto
USB con solo instalar el driver correspondiente. Las dimensiones físicas son aproximadamente de
11.4 cm. de ancho, 22.2 cm. de largo. La tarjeta funciona bajo el sistema operativo Windows XP
a través del software Code Composer Studio Ver. 3.1, además de que cuenta con el soporte de
fabricantes de tercera parte. Real Time Data Exchange (RTDX™) es una librería de Code
Composer Studio que permite la comunicación bidireccional en tiempo real entre el DSP y la PC.
También es compatible con Real Time Workshop, permitiendo generar, descargar y ejecutar
aplicaciones de modelos gráficos desde Simulink o Matlab. Esta última versión del software CCS
es ideal para el desarrollo de aplicaciones y prototipos que requieren rapidez en el diseño.
Se tiene que tomar en cuenta que, Texas Instruments no proporciona una guía de usuario
para la puesta en marcha de esta tarjeta, así como tampoco de una librería que habilite puertos,
periféricos y demás componentes del DSK. Sin embargo, desde Simulink se incluyen algunos
ejemplos de cómo usar el codec de la tarjeta, por medio de los convertidores ADC y DAC, así
como otras librerías de cálculos matemáticos para la ejecución de algoritmos ampliamente usados
en el área de control automático.
Entre sus características, una sobresaliente es que la tarjeta incorpora una interfase
codificador-decodificador (320AIC23) para entrada y salida de señales de audio, con una tasa de
muestreo que se puede dividir en diferentes valores desde 8 KHz hasta 48 KHz. El codec muestrea
las señales captadas por el canal para micrófono o líneas de entrada y las convierte a un valor
digital para que el DSP las procese. Cuando el DSP termina de utilizar el dato, nuevamente se usa
el codec para convertir las señales muestreadas en señales analógicas y sacarlas por los canales de
salida o de audífonos para que el usuario las pueda oír [28] [45].
Una vez que se analizaron las principales características técnicas del TMS320C6416 DSK,
se considera que este puede ser útil para algunas aplicaciones del área de Control automático, dado
el amplio número de utilerías que incorpora Matlab y Simulink para uso con DSP. Un resumen de
las características técnicas de esta tarjeta se encuentra en el Anexo E.
61
CAPÍTULO 4. HERRAMIENTAS DE DESARROLLO Y PLATAFORMAS DE DSP
4.2.6 TMS320C6711 (DSK)
El kit de inicio TMS320C6711 DSK es una plataforma de propósito general de bajo costo para el
desarrollo y aplicaciones del procesador TMS320C6711. El kit no únicamente permite una
introducción a la tecnología C6000, sino que permite además aplicaciones de amplio poder de
cálculo tales como redes, comunicaciones, imagen, etc. Las características esenciales del
procesador TMS320C6711 incluyen un formato de punto flotante y 32 bits de ancho de palabra
(arquitectura VLIW), 1200 MIPS, 600 MFLOPS, tasa de reloj de 150 MHz de velocidad.
Físicamente, es una tarjeta que se conecta a través del puerto paralelo a una computadora.
Las dimensiones físicas son aproximadamente de 12.7 cm. de ancho, 20.3 cm. de largo. También
puede conectarse a través de un emulador XDS510. La tarjeta funciona bajo el sistema operativo
Windows XP a través del software Code Composer Studio Ver. 2.1 además de que cuenta con el
soporte de fabricantes de tercera parte. Al igual que la tarjeta TMS320C2812 eZdsp, en esta
plataforma se puede trabajar con Real Time Workshop para generar, descargar y ejecutar modelos
gráficos de Simulink. El software es ideal para el desarrollo rápido de un prototipo y aplicaciones
que requieren de procesamiento en tiempo real [46].
Se tiene que tomar en cuenta que, Texas Instruments no proporciona una guía de usuario
para la puesta en marcha de esta tarjeta, así como tampoco de una librería interfaz con los
componentes del DSK. Actualmente el kit de inicio TMS320C6711 DSK está descontinuado,
pero se ofrece el TMS320C6713 DSP Starter Kit (DSK), un kit de características similares y
mejoradas.
Una vez que se analizaron las principales características técnicas del TMS320C6711 DSK,
éste se descartó, ya que no satisface las necesidades que se tienen en el departamento de
Electrónica, pero se le puede dar cauce para usarla en otras tareas. Para aquellos usuarios que
requieran del uso de esta tarjeta, como referencia de la instalación se puede tomar al módulo de
evaluación TMS320C6701 EVM El tipo de aplicaciones va más enfocado a comunicaciones, a
través de la implementación de filtros digitales FIR e IIR, modulación en amplitud y frecuencia
(AM y FM). Entre sus características, una sobresaliente es que la tarjeta incorpora una interfase
codificador-decodificador audio mono (codec) con una tasa de muestreo de los 8 KHz. El codec
contiene un canal para micrófono, capacidad de mezcla de audio en el canal de voz, control de
ganancia programable y dos drivers para bocinas. Permite conversiones ADC y DAC con 16 bits
de precisión [28] [47]. Un resumen de las características técnicas de esta tarjeta se encuentra en el
Anexo E.
62
4.2.7 MCK240 DSP MOTION CONTROL KIT
4.2.7 MCK240 DSP Motion Control Kit
El MCK240 es un sistema completo tipo Stand-alone, que permite experimentar y usar el
procesador TMS320F240 de T.I. para aplicaciones de control de motores (DMC, Digital Motor
Control). El DSP F240 es útil para la implementación avanzada de aplicaciones DMC, integrando
en el circuito integrado un núcleo de alto rendimiento y los periféricos comunes de un
microcontrolador. Los DSP de la serie F24x de T.I. están descontinuados, lo que dificulta el poder
encontrar actualizaciones para el desarrollo de esta tarjeta; por su parte, el fabricante de la tarjeta
Technosoft ofrece actualizaciones de software, pero no son gratuitas.
El kit, además de contar con el controlador DSP F240, cuenta con un inversor de tres fases
y un motor sin escobillas (brushless motor) para permitir una completa verificación y evaluación
de aplicaciones básicas sobre el control de motores. El sistema también permite evaluar todas las
características DMC específicas del controlador DSP F240 y controlar directamente el motor sin
escobillas en los modos AC y DC.
En cuanto al software, éste permite explorar las aplicaciones ya agrupadas y definidas por
el kit. La comunicación se hace a través del puerto serial de comunicación, teniendo como prueba
de la comunicación un programa monitor que verifica el enlace entre la PC y el DSP F240. En la
instalación del MCK se tuvo una serie de inconvenientes ya que los requerimientos solicitados son
que se ejecute bajo un sistema operativo Windows 3.1 o Windows 95. Finalmente se instaló en una
versión de Windows 98 en una partición que se hizo del disco duro, sin que hasta el momento se
tenga algún mal funcionamiento de la tarjeta.
En la práctica el DSP F240 resulta ser una excelente herramienta de enseñanza para las
aplicaciones que se hacen en el departamento de electrónica, ya que permite usar las principales
características del DSP: acceso a periféricos (timers, ADC, puertos de entrada/salida, etc.) y
espacio de memoria (data RAM, program Flash/Rom) todo a través del software MCWIN. Un
ejemplo claro de aplicación de código fue la generación de señales PWM, con las cuales se pudo
manejar el inversor interno de la tarjeta, y la posibilidad de acondicionarlo a un inversor externo;
el inconveniente es que este código viene respaldado con medidas de seguridad del fabricante, lo
que impide editarlo.
El kit permite operar el motor en modo AC y DC, en ambos modos se puede trabajar en
lazo cerrado, y es a través del encoder del motor que se toman datos del mismo. Variar la
velocidad, el par y hasta el sentido de giro del motor son algunas de las tareas que también realiza
el kit. Por el momento no se abordan aspectos técnicos sobre las variables que intervienen en el
control del motor, pero se puede consultar más información en la referencia [48]. Un resumen de
las características técnicas de esta tarjeta se encuentra en el Anexo E.
63
CAPÍTULO 4. HERRAMIENTAS DE DESARROLLO Y PLATAFORMAS DE DSP
4.3 Conclusiones
De las actividades desarrolladas a lo largo de este trabajo, hay dos que son primordiales: la puesta
en marcha de las tarjetas y el análisis de las aplicaciones. Del estudio de la primera se obtiene
como resultado la segunda; es decir: cada tarjeta de DSP proporciona la información necesaria
para un tipo específico de aplicaciones. Así pues, la familia de DSP que mejor se ajusta a las
necesidades que tiene el departamento de electrónica es la TMS320C2000 de Texas Instruments,
de 16 bits de punto fijo y con un costo de sus plataformas bastante accesible. Ya se dijo que
incorporan manejadores de eventos, así como una serie de periféricos que los hace idóneos para
aplicaciones de control de motores, implementación de algoritmos a través de la transformada
rápida de Fourier, transformadas de Clark y Park, operaciones matriciales y lógicas.
En cambio, los procesadores de punto flotante resultan ser mucho más caros, excediendo la
capacidad de procesamiento para las aplicaciones típicas que se desarrollan en electrónica de
potencia y control, además no incluyen suficientes periféricos. Los DSP de la serie TMS320C6000
más bien están enfocados a aplicaciones con ejecución de algoritmos más sofisticados. Son útiles
en sistemas de audio digital, procesamiento de imagen y video, instrumentación biomédica en
equipos de resonancia magnética, nuclear y ecografía, para realizar el tratamiento de las imágenes
obtenidas, etc. Esto no quiere decir que no sean útiles en las líneas de investigación de electrónica
de potencia y control, pero sí es necesario darle nuevos cauces de desarrollo para explotar sus
características esenciales.
Como se observó, existen nuevas metodologías de programación, al respecto, Matlab y
Simulink dan clara ventaja en la programación gráfica y soporte de librerías bien definidas. Una
desventaja que se observa frecuentemente en las tecnologías de DSP es que se van haciendo
obsoletas en periodos de tiempo relativamente cortos y surgen nuevos modelos con mejoras a sus
arquitecturas. Como ejemplo, tres de las tarjetas estudiadas ya tienen esa problemática, lo que hace
difícil encontrar actualizaciones de software y notas de aplicaciones.
Ahora se cuenta con manuales técnicos y guías de procedimientos que permiten llevar a
cabo la instalación y puesta en marcha de cada una de las tarjetas. La información recopilada está
contenida como un producto terminado, en un CD, con divisiones claras del contenido:
aplicaciones, guías, hojas de datos, misceláneos, aspectos de la programación, software y utilerías
de tercera parte. Se incluyen, además, los capítulos de la tesis en su versión electrónica, mediante
la cual se brinda al usuario una forma más fácil para navegar. El CD permite, a través de ligas de
texto, acceder a los documentos o archivos que se desean de tal forma que se ejecuten mediante el
software Adobe Acrobat. De manera muy resumida, en el Anexo E se describen las características
esenciales de cada uno de los kits de desarrollo que se pusieron en operación, las aplicaciones que
pueden implementar y qué tipo de documentos técnicos se tienen a la fecha.
64
Capítulo 5
Aplicaciones
5.1 Aplicaciones, un enfoque general
Las aplicaciones son quizá el elemento más importante en la infraestructura de soporte que brinda
el fabricante de DSP. Ahora los procesos de fabricación cada vez son más complejos, pero el costo
de un procesador DSP es más económico, hasta el punto de que se puede usar en productos
comerciales de alto consumo y otros sistemas a un costo razonable. Por ello, cada vez más
productos hacen uso de los DSP, incentivando la demanda por sus características en rapidez,
tamaño, economía y eficiencia. El Departamento de Electrónica del CENIDET no es la excepción
ya que cada vez más es necesario realizar implementaciones de este tipo de tecnologías en algunos
de los proyectos que se desarrollan, además de que se necesita continuar y fortalecer su uso.
Cabe decir que hay dos condiciones muy importantes que debe hacer bien el DSP y que
repercuten directamente en la aplicación o en el desarrollo de una implementación. La primera es
que debe ser capaz de realizar millones de operaciones matemáticas por segundo. Esto es
necesario para implementar los algoritmos que se usan en el procesamiento digital de señales.
La segunda condición es garantizar el tiempo real. De no tomarse en cuenta se corre el
riesgo de tener problemas de ruptura en la ejecución de tareas, lo que lleva a constantes
restauraciones del sistema. En este punto se involucran los conceptos del periodo de muestreo y
latencia.
Como su nombre lo indica, un DSP procesa señales digitales y lo hace con mucho mejor
desempeño que otros dispositivos. ¿Pero que significa procesamiento digital? Realmente, significa
un conjunto de algoritmos para el procesamiento de señales en el dominio digital [49]. Hay
equivalentes analógicos a esos algoritmos; sin embargo, el procesamiento digital resulta mucho
más eficiente y versátil. Los algoritmos de procesamiento digital de señal son los bloques de
construcción básicos en muchas aplicaciones para teléfonos celulares, reproductores MP3, cámaras
digitales, etc. En la tabla 5-1 se muestran algunos de esos algoritmos.
Los filtros FIR e IIR, por ejemplo, se usan para remover ruido en señales que están en
procesamiento y/o separarlas en diferentes canales de ancho de banda; el algoritmo de convolución
se usa para comparar las similitudes en señales en el dominio de la frecuencia; las transformadas
discretas de Fourier se usan para representar señales en un formato que sea más fácil de procesar, y
la transformada coseno se usa en aplicaciones de procesamiento de imágenes.
65
CAPÍTULO 5. APLICACIONES
Tabla 5-1. Algoritmos útiles en el procesamiento digital de señales.
Algoritmo
Filtro Respuesta Finita al Impulso (FIR)
Ecuación
M
y ( n) = ∑ a k x ( n − k )
k =0
Filtro Respuesta Infinita al Impulso (IIR)
Convolución
M
N
k =0
k =1
y ( n) = ∑ a k x(n − k ) + ∑ bk y (n − k )
N
y ( n) = ∑ x ( k ) h( n − k )
k =0
Transformada de Fourier Discreta (DFT)
X (k ) = ∑ x(n) exp[− j (2π / N )nk ]
Transformada Coseno Discreta (DCT)
⎡π
⎤
F (u ) = ∑ c(u ) ⋅ f ( x) ⋅ cos ⎢
u (2 x + 1)⎥
⎣ 2N
⎦
x =0
N −1
n =0
N −1
Como se observa en las ecuaciones, cada uno de los algoritmos correspondientes demanda
operaciones de suma y multiplicación. El DSP precisamente esta diseñado para ejecutar la
multiplicación y acumulación de un grupo de datos de una forma muy rápida en un solo ciclo.
En este capítulo es donde se usa la información de los capítulos anteriores. En este punto
debe entenderse que un DSP no es más que un procesador programable, excepto que se especializa
en el procesamiento eficiente de señales digitales. Una vez que se considera la implementación
mediante un DSP para una aplicación dada en cuanto al costo, potencia de consumo y otros
factores, se debe establecer de manera clara qué marca y modelo de DSP se va a usar y la
herramienta de software para la programación del mismo. También se debe definir el ambiente de
operación del DSP con el mundo real tomando en cuenta condiciones de temperatura, luz, ruido,
movimiento, etc.
Para el caso particular de este trabajo se definió trabajar con la tarjeta TMS320F2812
eZdsp de la familia C2000, la cual por sus características técnicas se presenta como la mejor
opción en la implementación de tareas como las que se requieren en el Departamento de
Electrónica. Esta tarjeta se utilizó para la implementación de un control de velocidad en un motor
de CD, haciendo uso de técnicas de generación PWM y muestreo de señales analógicas para la
medición de la velocidad del motor.
66
5.1.1 APLICACIONES DE DSP DE BAJO COSTO
5.1.1 Aplicaciones de DSP de bajo costo
Por su creciente demanda los DSP se están integrando en un gran número de áreas. Una de
estas es el control de motores. Los motores eléctricos existen en muchos productos de consumo,
desde lavadoras donde se desean habilitar controles de velocidad variable que eliminan la
necesidad de accionamientos manuales, hasta refrigeradores donde se controla la velocidad
variable de compresores. La energía que consume el motor en estas tareas es un porcentaje
importante del total de energía. Para lograr mejoras en el rendimiento de este tipo de aplicaciones,
los fabricantes usan avanzados sistemas de control de velocidad que mejoran notablemente el
consumo total de energía. Los sistemas de control de motores basados en un DSP disponen de los
periféricos y características que permiten el desarrollo de aplicaciones en aparatos domésticos.
La complejidad de las aplicaciones continúa creciendo y va desde el simple control digital
hasta avanzadas aplicaciones de cancelación de ruido y vibración. En la figura 5-1 se muestra el
avance y complejidad que tienen las aplicaciones en el control de motores y se compara contra un
microcontrolador. Esto ha resultado en un incremento en la fiabilidad, eficiencia, flexibilidad e
integración que conducen principalmente a un sistema de bajo costo.
Figura 5-1. Microcontrolador Vs. DSP en el control de motores.
Los DSP encuentran ahora las más variadas formas de aplicación en avanzadas tecnologías
del control de motores:
•
•
•
•
•
•
Control de motores de velocidad variable.
Control de Sensores.
Control de campo orientado.
Modelado de motores en software.
Mejoramiento de algoritmos de control.
Reemplazo de costosos componentes hardware mediante rutinas por software.
67
CAPÍTULO 5. APLICACIONES
Existen dos tipos de versiones para el control de motores, control en lazo abierto y control
en lazo cerrado. Un sistema de control de lazo abierto tiene un buen desempeño en estado estable y
la falta de realimentación de corriente limita mucho el desempeño transitorio. En la figura 5-2 se
usa en lazo abierto un DSP que proporciona un control de velocidad variable a un motor de
inducción trifásico, proporcionando mejoras en la eficiencia del sistema.
Figura 5-2. Sistema de control de un motor en lazo abierto.
Un sistema en lazo cerrado es más complejo. En la figura 5-3 se muestra un DSP de alto
desempeño para controlar la corriente, la velocidad y determinar la posición. Además, del sistema
se pueden obtener otros parámetros tales como voltaje, temperatura, etc. Este tipo de aplicación
mejora la respuesta transitoria del sistema y el control de velocidad y posición.
Otros casos en los cuales se usan los DSP son sistemas de calefacción, ventilación y aire
acondicionado controlando la velocidad del ventilador e inductor, con lo cual se incrementa la
eficiencia calorífica o se mejora el nivel de confort.
68
5.1.1 APLICACIONES DE DSP DE BAJO COSTO
Figura 5-3. Sistema de control de un motor en lazo cerrado.
Los DSP se pueden clasificar en tres grandes áreas. Aquellos de bajo costo para
aplicaciones en productos electrónicos comerciales del hogar. Los de mediana eficiencia y
reducen el consumo de energía en aplicaciones que dependen de baterías. Finalmente, los DSP de
alto rendimiento que tienen avanzadas arquitecturas con altas tasas de procesamiento. En la tabla
5-2 se clasifican los DSP de acuerdo al tipo de aplicación y las entradas/salidas que pueden tener.
Tabla 5-2. Opciones de salida en un DSP de acuerdo al tipo de aplicación.
Bajo Costo
Motores, Sensores, inversores, fuentes, etc.
•
•
•
•
Eficiencia de Energía
ADC-12 bits
PWM
McBSP
UART
• SPI
• SCI
• I2C
Teléfonos celulares, reproductores de audio portátil, cámaras digitales,
GPS, aparatos audibles.
• USB
• McBSP
• HPI
Alto Rendimiento
• CAN 2.0B
• GPIO
• EMIF
• EMIF
• GPIO
• ADC-10 bits
• Puertos serie MMC/SD
• UART
• I2C
Imágenes medicas, estaciones de comunicaciones, comunicaciones
inalámbricas 3G, encriptación, redes LAN, aplicaciones militares.
• PCI
• EMIF
• Puertos de Video
• McBSP
• GPIO
• Puertos de Audio
• HPI
• I2C
• McBSP
• Utopia SP
• Ethernet 10/100 MAC
69
CAPÍTULO 5. APLICACIONES
5.2 Conversión Analógico-Digital
Los convertidores A/D se usan para obtener datos de un proceso y un D/A los regresa nuevamente.
El diseñador debe definir qué tipo de datos requiere del sistema, los requerimientos de precisión y
las tasas de velocidad de entrada y salida de los datos con el fin de seleccionar el convertidor
correcto para la aplicación. Si el ADC forma parte del DSP se deben considerar las características
técnicas del mismo. En la figura 5-4 se muestra un sistema que se basa en DSP para la medición de
diversas variables físicas. Antes de ingresar la señal al convertidor debe haber un
acondicionamiento de señal que proteja al ADC de variaciones de voltaje. La correcta
programación del algoritmo de control se hace por medio de una computadora. El DSP interpreta
los valores cuantificados de la señal y aplica el algoritmo de control para posteriormente enviar la
una señal de control al sistema a través de un convertidor D/A.
Figura 5-4. Sistema basado en DSP para la medición de diversos tipos de variables.
A continuación se dan dos ejemplos sobre el uso del ADC en un DSP. La implementación
contempla sensores de corriente y de voltaje en un convertidor. La figura 5-5 muestra la conexión
entre el DSP y un convertidor tipo Buck-Boost. La construcción de los circuitos sensores se
muestran en los circuitos de las figuras 5-6 y 5-7. Para el sensor de corriente se usa una resistencia
tipo Shunt en serie con la salida. Esta solución se adopta más para medición de pequeñas
corrientes que un sensor de efecto Hall y es más económica. Ya que el amplificador no inversor
tiene una impedancia infinita, no fluye corriente de entrada en ninguno de sus terminales de
entrada, así que el voltaje a través de la resistencia Shunt de 1Ω se direcciona por los componentes
LM411 hasta llegar a la entrada ADC del DSP.
Figura 5-5. Implementación física de un convertidor Buck-Boost.
70
5.2 CONVERSIÓN ANALÓGICO-DIGITAL
Figura 5-6. Circuito esquemático de un sensor de corriente.
En este caso particular la topología del convertidor CD-CD, la salida de voltaje es negativa
por lo tanto se debe invertir. Por otro lado, el voltaje a través de la resistencia Shunt es de un valor
pequeño y debe amplificarse. Un amplificador inversor de ganancia variable satisface ambas
necesidades. La ganancia variable del amplificador se usa para ajustar la ganancia de la señal de
voltaje de la resistencia Shunt. La salida del amplificador se conecta a un opto-aislador, el cual
cambia la señal de forma eléctrica a óptica, luego regresa nuevamente a una señal eléctrica. El
TPL550 proporciona aislamiento galvánico entre la etapa de potencia y el DSP ya que éste último
es un dispositivo muy sensible. Finalmente se agrega una resistencia variable en el colector del
opto-aislador para ajustar el voltaje de offset de entrada del ADC.
En el sensor de voltaje se utiliza un circuito similar al de un sensor de corriente, con pocas
diferencias. La salida de voltaje en el convertidor puede medirse directamente y alimentarse al
amplificador de impedancia infinita. El amplificador inversor es ligeramente diferente ya que usa
una resistencia de 1 kΩ en vez de 10 kΩ. La diferencia es que mientras la señal de corriente se
tiene que amplificar, el nivel de voltaje debe atenuarse para entregar un nivel de voltaje aceptable
a la entrada del ADC.
Figura 5-7. Circuito esquemático de un sensor de voltaje.
71
CAPÍTULO 5. APLICACIONES
5.3 Generación de señales PWM
Las técnicas de modulación se pueden clasificar en escalares (PWM, Pulse Width Modulation)
[50, 51] y vectoriales (SVM, Space Vector Modulation) [52]. Entre las técnicas escalares se
encuentran la técnica de modulación de onda cuadrada (six-step), técnica de modulación
sinusoidal con tercer armónico, entre otras; divisibles a la vez en técnicas de modulación basadas
en portadora triangular (carrier based) y técnicas programadas.
Las técnicas PWM o escalares se usan en inversores CD/CA monofásicos y trifásicos. Se
basan en la comparación de una señal de referencia y una señal portadora de forma triangular o
diente de sierra, como se muestra en la figura 5-8; entonces, se genera un tren de pulsos de ancho
según la comparación de las señales, que se utiliza en la conmutación para un puente inversor. La
variación de la señal de referencia y la secuencia de conmutación dan como resultado diferentes
técnicas de modulación PWM, cada una modifica la eficiencia de la conversión, las pérdidas por
conmutación en el puente inversor y la pureza de la señal de salida.
Figura 5-8. PWM a partir de un circuito de comparación.
La técnica SVM se basa en la representación vectorial del voltaje trifásico para el manejo
de un puente inversor. En la técnica SVM el puente inversor se maneja con ocho estados de
conmutación. Se considera la mejor alternativa de modulación para inversores, ya que maximiza el
uso de la tensión CD, su contenido armónico es bajo y se disminuyen las pérdidas por
conmutación. La generación de voltaje se logra seleccionando adecuadamente y por un tiempo
determinado los estados de los interruptores del puente inversor en cada período de conmutación
[53].
En un gran número de aplicaciones que se realizan en las líneas de investigación del
Departamento de Electrónica del CENIDET se hace uso de señales PWM, por lo que es importante
proporcionar la metodología para generarlas de manera práctica. Las plataformas que son
adecuadas para este tipo de tareas son el TMS320LF2407 y F2812 eZdsp.
La generación de señales en el TMS320LF2407 se hace por medio de programación en
lenguaje “C” mediante el software de desarrollo Code Composer. En el capítulo seis de la guía
72
5.3 GENERACIÓN DE SEÑALES PWM
TMS320F/C240xA DSP Controllers System and Peripherals Reference Guide No. SPRU357C,
[20] se describe el uso del manejador de eventos, periférico mediante el cual se puede programar
una amplia gama de funciones y características que se usan particularmente en aplicaciones para el
control de motores, entre ellas la generación de señales PWM. Por otro lado, en el reporte de
aplicación No. SPRA755A [54], se encontrará el código básico para la inicialización y operación del
TMS320LF2407 incluyendo la generación de señales PWM. Los programas se encuentran en lenguaje C y
ensamblador, y se proporciona la explicación de cada una de las líneas de código escrito.
En el F2812 eZdsp, la programación de este tipo de señales es mucho más sencilla, ya que
se puede realizar desde Simulink. En la figura 5-9 se encuentran los bloques de los periféricos que
tiene el DSP, entre ellos el bloque para la generación de señales PWM. En el menú Help de la
ventana se encontrará ayuda para cada bloque en particular.
Figura 5-9. Librería con los bloques de periféricos del C281x.
En la ventana de ayuda también se encontrará un apartado de aplicaciones “Demos” que
permiten disponer de la generación de código de manera automática, realizar un prototipo para
validar diseños de control y algoritmos de procesamiento digital de señal.
73
CAPÍTULO 5. APLICACIONES
5.4 Transformaciones de Clark y Park
El desempeño de las maquinas de CA trifásicas se describe por sus ecuaciones de voltaje e
inductancias. Se sabe que algunas inductancias de la máquina son funciones de la velocidad del
rotor. Los coeficientes de las ecuaciones diferenciales, los cuales describen el comportamiento de
esas máquinas, son variables en el tiempo excepto cuando el rotor se detiene. Es frecuente un
cambio de variables y se usa para reducir la complejidad de las ecuaciones diferenciales. Hay
varios métodos para transformar variables. Uno de ellos es el de las transformadas de Clark y Park,
logrando que muchas propiedades de las máquinas eléctricas se pueden estudiar sin complicación
en las ecuaciones de voltaje. Estas transformaciones permiten la implementación de algoritmos de
control en un DSP. En la figura 5-10 se muestra la ventana con la librería para el control digital de
motores; en ella se pueden encontrar los bloques para implementar las transformadas de Clarke y
Park. En el archivo SPRC080.zip: F281x Digital Motor Control Library, hay información
adicional sobre esta librería. Al iniciar la instalación se ejecuta una ventana con el siguiente texto:
Welcome to the DMCLIB for TMS320F281x Setup Wizard; La información correspondiente a
esta librería se encuentra en el siguiente directorio c:\tidcs\DMC\c28\v32x\lib\doc.
Figura 5-10. Librería con bloques para el control digital de motores del C281x.
74
5.5 ADAPTACIONES EXPERIMENTALES
5.5 Adaptaciones experimentales
En la parte experimental se describe la plantilla que se usó en Simulink para controlar el
funcionamiento de un motor de DC, con 12 Volts de alimentación y una velocidad de 2500 RPM.
La implementación se hizo usando Code Composer Studio V3.1 y la tarjeta TMS320F2812 eZdsp.
El diagrama a bloques de la figura 5-11 muestra de manera general el sistema completo.
Figura 5-11. Diagrama a bloques del sistema de control de velocidad.
Para el cálculo de velocidad se hizo una adaptación en la flecha del motor agregándole un
disco con n ranuras que hacen la función de un encoder. La información del encoder se usa para
estimar la velocidad del motor, la cual se da por la variación de posición del motor entre dos
momentos de muestreo, en el lazo de control de velocidad discreto. El disco tiene un total de 32
ranuras; es decir: cada 32 pulsos se tiene una revolución completa de la flecha del motor. A causa
de la construcción irregular en las ranuras del disco, la frecuencia de los pulsos de salida del
interruptor óptico (CNA1015) tiene una variación que impide leer de manera precisa este dato.
Para solucionar este problema se agrega el contador binario CD4020BCN, el cual cuenta la
transición negativa de cada pulso que emite el interruptor óptico, obteniendo un valor de
frecuencia estable. En la figura 5-12 se muestra el circuito completo para implementar el encoder
del motor y la conexión con el osciloscopio en Q5 donde se obtiene un pulso por cada revolución.
Este procedimiento se hizo para saber la velocidad del motor en lazo abierto, ya que el dato no fue
posible adquirirlo de las características técnicas del motor de CD. El valor de la frecuencia en lazo
abierto en la salida del pin Q5 es de 41.67 Hz multiplicado por 32 correspondiente a (2n= 25=32)
entonces la frecuencia de salida en el pin 3 del CNA1015 es de 1333.44 Hz por lo que de (1) se
despeja ω para obtener la velocidad a la que gira el motor.
f =
ω=
nω
Hz ------------ (1)
60
60 f 60(1333.44)
=
= 2500.2[rpm]
n
32
Es extremadamente importante mencionar que los pines de entrada del DSP sólo soportan
niveles de voltaje de 3.3V y no de 5V como pudiera pensarse. Por lo que es necesario acondicionar
las señales con circuitos similares a los de las figuras 5-6 y 5-7 que aislen una señal externa con el
DSP. En este caso particular, el CNA1015 se polariza con un voltaje de 3V con una
75
CAPÍTULO 5. APLICACIONES
fuente independiente, de tal forma que este voltaje es aceptable para el DSP y puede entrar
directamente a través del pin QEPA, y como máximo puede llegar hasta 3.3V.
Figura 5-12. Circuito eléctrico del encoder del motor.
Es claro que el DSP no proporciona la suficiente potencia para manejar directamente al
motor. Las salidas PWM proporcionan alrededor de 4mA de corriente. El motor consume
alrededor de 100 mA cuando se alimenta a 12V. Para proporcionar la corriente adecuada es
necesario agregar un amplificador externo. El circuito MIC4451BN es un dispositivo que
amplifica la señal PWM y proporciona una corriente de hasta 2 Amp. La figura 5-13 muestra la
conexión del circuito. Por otro lado, el MIC4451BN proporciona aislamiento eléctrico entre el
motor y el DSP, lo que ayuda a proteger a este último.
Figura 5-13. Circuito eléctrico para amplificar la señal PWM del DSP.
La señal PWM entra a la compuerta del Mosfet IRF740, encendiéndolo y apagándolo. La
figura 5-14 muestra el circuito eléctrico de la etapa de potencia para conectar el motor de CD. El
sentido de giro se maneja en una sola dirección (manecillas de reloj). El motor y el MIC4451BN
se alimentan desde una fuente independiente (12V) diferente a la del DSP, de tal manera que si el
motor demanda niveles altos de corriente, el DSP no se daña o afecta en su funcionamiento.
76
5.5.1 PROCESO DE DESARROLLO
Figura 5-14. Circuito eléctrico de potencia para motor DC de 12V.
La figura 5-15 muestra la implementación física de la tarjeta F2812 eZdsp, el circuito
amplificador PWM a través del MIC4451BN, el encoder con el disco y el motor de CD.
Figura 5-15. Implementación física del controlador de velocidad en lazo cerrado.
5.5.1 Proceso de desarrollo
El proceso de diseño para la implementación de una tarea en el F2812 eZdsp consiste de unos
cuantos pasos. Primero, el usuario crea en la computadora un modelo en Simulink, usando bloques
especiales para la tarjeta específica. En este caso se usó la librería para periféricos (C281x dspchip
Library, figura 5-9) de la familia C2000. Se usaron además otras librerías especiales para el
control de motores (C28x DMC Library, Figura 5-10) así como de funciones matemáticas para el
manejo de números en formato IQN (C28x IQmath Library).
En la figura 5-16 se muestra el modelo completo en Simulink que controla la velocidad en
lazo cerrado de un motor de CD a través de los canales RTDX (Real Time Data Exchange). El
funcionamiento de estos canales se hace a través de la conexión que hay entre la computadora y el
F2812 eZdsp por medio del cable paralelo. Esta conexión permite la programación del DSP con
77
CAPÍTULO 5. APLICACIONES
una comunicación en tiempo real a través del canal RTDX para poder realizar actualizaciones en
el DSP sin detener su ejecución. En el modelo hay tres bloques principales, donde cada uno de
ellos tiene subsistemas más pequeños. A continuación se describen estos bloques:
Figura 5-16. Control de velocidad en lazo cerrado de un motor de CD vía RTDX.
En el bloque “Referencia de velocidad” se establece la velocidad que requiere el motor. La
figura 5-17 muestra este subsistema. El bloque “From RTDX” es un canal de entrada que envía
datos de la computadora a la tarjeta de DSP. Las condiciones iniciales establecidas en este bloque
son que el motor gire a una velocidad de 1000 RPM; si posteriormente se quiere modificar el valor
basta con manipular la barra de velocidad en la ventana de despliegue GUI (Graphic User
Interface).
Figura 5-17. Subsistema del Bloque “Referencia de Velocidad”.
En la figura 5-18 se muestra el subsistema completo referente al bloque “Corrección
Velocidad” (Fig. 5-16). En este subsistema se puede observar un controlador PID a través del
bloque “PID Controller”. Haciendo doble clic en este bloque se pueden modificar los parámetros
de las constantes Kp, Ki, Kci y Kd que corresponden a la ganancia proporcional, integral,
corrección integral y derivativa, respectivamente. Estas constantes inciden directamente en el valor
del ciclo de trabajo de la señal PWM, el controlador constantemente ajusta el ciclo de trabajo para
mantener el motor a la velocidad que se estableció previamente en el subsistema “Referencia de
velocidad” (Fig. 5-17) y sin variaciones. Por otro lado, en el bloque “C28xPWM” se pueden
realizar diversos cambios en su configuración, tales como establecer los canales de salida PWM,
periodo de la señal, modo simétrico o asimétrico, generación de tiempo muerto, etc. [7].
Finalmente, el bloque “Subsystem” muestrea la señal PWM a través de los canales “To RTDX”
para desplegar el valor del ciclo de trabajo por medio de la interfase GUI.
78
5.1.1 PROCESO DE DESARROLLO
Figura 5-18. Subsistema del Bloque “Corrección Velocidad”.
En la figura 5-19 se muestra el subsistema completo del bloque “Medición Velocidad” (fig.
5-16). Este bloque cierra el lazo de realimentación a través del pin “out1” (fig.1-19), y el pin de
entrada 2 “realimentación” (fig. 5-18). El bloque QEP lee el tren de pulsos que genera el
interruptor óptico o encoder para determinar la velocidad del motor. En el bloque “Shaft Encoder
Resolution” se define el número de ranuras (32) del disco acoplado a la flecha del motor; entre
más ranuras se tengan, más precisa será la lectura de velocidad. El bloque “Speed Measurement”
requiere del ángulo eléctrico de posición que se genera en el bloque “Generate Theta” y el sentido
de rotación se define con 1 para un giro de 360º. En la salida de este bloque se pueden obtener
unidades de frecuencia en [Hz] o revoluciones por minuto [RPM]. En esta configuración se usan
las unidades en RPM. En el interior del bloque “subsystem”“ (Take Samples, fig. 5-19) se tiene
otro subsistema en donde, a través del canal “To RTDX”, se toman muestras de la señal y se
envían a la interfase GUI para desplegarse gráficamente. Para una mayor información sobre el
contenido de los bloques aquí descritos se puede visitar la ayuda que ofrece Simulink o a través de
su sitio en Internet:
http://www.mathworks.com/access/helpdesk/help/toolbox/tic2000/
C281x
In1
QEP
C28xQEP1
Out1
theta
DMC
freq
In2
Terminator
dir
Generate Theta
Speed RPM
Speed Measurement
32
1
Shaft Encoder
Resolution
Direction
Convert
1
Out1
Data Type
Conversion
Take Samples
Subsystem
Figura 5-19. Subsistema del Bloque “Medición Velocidad”.
En la parte baja del modelo de la figura 5-16 se encuentra el bloque “grafica script” el cual
contiene el código de diseño de la interfase gráfica (GUI). Para mayor información sobre como
crear una interfase grafica de usuario consultar la referencia [55] o el archivo adjunto builgui.pdf.
Por otro lado en la misma figura, está el bloque Build/Reload&Run, el cual es un botón para
reducir el proceso de ejecución del modelo en el DSP.
79
CAPÍTULO 5. APLICACIONES
Una vez que se diseña el modelo, el segundo paso es construir un proyecto que sea
ejecutable en Code Composer Studio (CCS). En el proceso de construcción el modelo completo se
traslada a código C y a lenguaje ensamblador de tal forma que lo pueda interpretar CCS. Este
proceso se lleva a cabo presionando las teclas CTRL-B o con el icono “Incremental build” desde
la barra de herramientas de Simulink. Por su parte, Code Composer Studio IDE compila el
programa y crea el proyecto con todos los archivos y librerías necesarios para la ejecución del
programa.
Como resultado de la construcción y compilación del modelo Simulink y el enlace a través
de CCS, el tercer paso consiste en cargar a la memoria del DSP el programa para su ejecución. Al
ejecutarse en el DSP, la interfase gráfica de usuario GUI aparece en la pantalla de la computadora,
mediante la cual se pueden monitorear los datos que vienen de la tarjeta DSP o enviar nuevos
datos para modificar la velocidad a través de los canales RTDX. En la figura 5-20 se muestra la
interfase gráfica GUI que se despliega cuando se ejecuta el programa en el DSP. Para poner un
nuevo valor del parámetro de velocidad sólo se tiene que deslizar la barra a la posición que se
desea. Otros parámetros medidos en la gráfica son el ciclo de trabajo de la señal PWM y la
velocidad del motor. Los datos que despliega la GUI deben tomarse solo como aproximados, la
idea es mostrar la ejecución de la GUI y la forma en que interactúa tomando datos de la velocidad
del motor y el ciclo de trabajo de la señal PWM. Como medida alterna, para saber si realmente el
lazo cerrado del modelo controla la velocidad del motor de acuerdo al valor que establece la barra
de desplazamiento, se implementó en hardware a través del circuito CD4020BCN el
procedimiento que se explica con la ecuación (1). En la tabla 5-3 se muestran algunos de los
valores de frecuencia que se obtuvieron con el osciloscopio digital TDS3054B en el pin Q5 y que
se comparan con el valor establecido en la barra de velocidad de la interfase gráfica. La gráfica
correspondiente se muestra en la figura 5-21.
Figura 5-20. Interfase gráfica GUI para modificar la velocidad del motor DC.
80
5.1.1 PROCESO DE DESARROLLO
Tabla 5-3. Comparación de valores de velocidad GUI Vs. Osciloscopio.
Set Point [RPM]
Barra de
Desplazamiento
GUI
Osciloscopio
Frecuencia [Hz]
Pin Q5
CD4020BCN
80
160
200
400
600
800
1000
1200
1400
1600
1800
2000
2200
2400
2500
1.335
2.67
3.34
6.68
10.02
13.35
16.68
20.01
23.35
26.68
30.01
33.34
36.68
40.01
41.67
Cálculo de
Velocidad
[RPM]
60 f
n
80.1
160.2
200.4
400.8
601.2
801.0
1000.8
1200.6
1401.0
1600.8
1800.6
2000.4
2200.8
2400.6
2500.2
ω=
3000
2500
Velocidad Alcanzada [RPM]
X: 2500
Y: 2500
X: 2400
Y: 2401
X: 2000
Y: 2000
X: 2200
Y: 2201
2000
X: 1600
Y: 1601
1500
X: 1200
Y: 1201
X: 1400
Y: 1401
X: 800
Y: 801
1000
500
X: 160
0
X: 1000
Y: 1001
X: 400
Y: 400.8
X: 600
Y: 601.2
Y: 160.2
0
X: 1800
Y: 1801
X: 200
Y: 200.4
500
1000
1500
Set-Point [RPM]
2000
2500
Figura 5-21. Set-Point Vs Velocidad alcanzada
81
CAPÍTULO 5. APLICACIONES
5.6 Conclusiones
En la parte experimental se implementó el control de velocidad en lazo cerrado para un motor de
CD, usando una plantilla de demostración que se incluye en Simulink. Gracias a esto, se
desarrollaron en el DSP tareas de procesamiento digital y se explotaron las características
técnicas del mismo. Una de ellas fue la generación de señales PWM que controlan más
eficientemente al motor. A su vez, se implementó un encoder óptico, y a través del módulo QEP se
leyeron los pulsos correspondientes. Finalmente haciendo uso de las librerías de Simulink para uso
con DSP se implementó un algoritmo para el control de velocidad a través un controlador PID.
El ejemplo de aplicación hace uso de los periféricos del DSP y otras características como
los canales RTDX, que permiten enviar y recibir datos entre la PC y la tarjeta de DSP. La
aplicación es sencilla, pero proporciona la suficiente información para que el usuario pueda iniciar
tareas de procesamiento con estas herramientas. El algoritmo de control es muy simple, el DSP
interpreta el valor que se establece en la barra de velocidad y ajusta la velocidad a cada nuevo
valor. Los datos se transmiten por el puerto paralelo a la interface GUI para desplegarlos
gráficamente.
No es el propósito de esta tesis desarrollar un modelo matemático del controlador ni del
motor, ya que sólo se hace uso de Simulink para la implementación del control PID, por medio de
bloques apropiados para el control de motores. El controlador se sintonizó experimentalmente. La
facilidad con que se pueden modificar los valores en los bloques del modelo de control en Simulik
permiten al usuario liberarse de la programación en C/C++ o ensamblador.
82
Capítulo 6
Conclusiones y trabajos futuros
6.1 Conclusiones
En la presente tesis se hace un estudio de los dispositivos de procesamiento digital aplicados a
tareas que se desarrollan en electrónica de potencia y control. Se abordan aspectos teóricos en
cuanto a su funcionamiento y configuración física; se hace un análisis de fabricantes que hay en el
mercado en que compiten los DSP, y se termina el trabajo describiendo una plataforma de DSP,
con sus respectivas herramientas de hardware y software, en la implementación práctica de tareas
de control en un motor de corriente directa.
Debido a la diversidad de recursos que se tiene en las plataformas de DSP, era conveniente
hacer este estudio, de tal manera que se identificaran las tareas en las que mejor se desempeña
cada una de las tarjetas con las que se cuenta en el CENIDET. Se espera que esta recopilación de
información y sistematización para la puesta en marcha de tareas de procesamiento digital de
señales ahorre tiempo a los usuarios o trabajos de tesis futuros que requieran realizar alguna
implementación práctica.
A diez años de que se hizo la primera implementación con DSP, el trabajo en CENIDET
continúa demandando cada vez más este tipo de dispositivos. Como ejemplo, en diversos trabajos
de tesis; [56] [57] [58] [59] [60], se describen desarrollos e implementaciones hechas con DSP.
Este tipo de tecnologías está cambiando constantemente en su configuración interna y nuevos
dispositivos salen al mercado rápidamente. En este sentido, es recomendable considerar el uso de
DSP de tal forma que la aplicación es la que determina si se implementa o no. Tomando como
base la experiencia que se desarrolló en ésta tesis, se concluyen los siguientes puntos:
•
Los objetivos planteados inicialmente fueron muy ambiciosos, ya que se tenía previsto
hacer un estudio que contemplara a los dispositivos FPGA. Por cuestiones de tiempo no se
contempló el análisis e implementación con éstos. Los DSP por si solos involucran una
amplia cantidad de información.
•
Como parte de la metodología, se hizo un estudio general que compara las tecnologías
actuales de DSP. Este estudio permitió destacar a los fabricantes que tienen amplia
presencia en el mercado y cuáles son las familias de DSP que tienen en su línea de
producción. El estudio aborda aspectos técnicos, de costo y herramientas de diseño para la
programación de sus familias, recopilándose aquella información técnica útil al usuario.
83
CAPÍTULO 6. CONCLUSIONES Y TRABAJOS FUTUROS
•
Para las aplicaciones en electrónica de potencia y control se demuestra que los DSP de
punto fijo son suficientes para las tareas que demandan estas áreas, proporcionando una
excelente velocidad de procesamiento y desempeño ya que incorporan una serie de
periféricos que los hace adecuados para aplicaciones de control de motores, manejo de
sensores, encendido y apagado de interruptores electrónicos, etc. Los DSP de punto
flotante pueden cubrir otras áreas en donde se requiere de algoritmos más complicados que
se implementan en sistemas de posicionamiento GPS, instrumentación biomédica,
tratamiento de imágenes, etc.
•
Después de haber asimilado la tecnología sobre DSP, una etapa posterior fue pasar al
desarrollo técnico de la tesis. Esta parte experimental significó poner en funcionamiento
seis tarjetas de DSP con las que cuenta el Departamento de Electrónica. En base a la puesta
en marcha quedaron definidas las características particulares de cada una y se hizo la
selección de la plataforma de procesamiento digital con que se trabajaría en la parte de la
implementación.
o La tarjeta TMS320LF2407 así como el TMS320F2812 eZdsp pertenecen a la
familia C2000 de Texas Instruments, también denominados controladores DSP,
resultaron ser los más apropiados a proyectos vinculados al control de motores,
adquisición de señales, encendido y apagado de interruptores discretos, calidad de
la energía, convertidores de potencia, fuentes conmutadas, eliminación de señales
acústicas mediante la implementación de filtros digitales, sensores de movimiento,
etc. Tareas que se vienen desarrollando en las áreas de control automático como
electrónica de potencia.
o Por su parte el TMS320C6711 y TMS320C6416 DSK, son tarjetas de mayor
desempeño útiles en aplicaciones propias para el procesamiento de imágenes,
señales de audio y voz. Es decir, se trata de tareas que por el momento no tienen un
gran impacto en los desarrollos que se hacen en el departamento de electrónica.
•
En las conclusiones del capítulo 3 se habla de una cuarta generación de dispositivos DSP,
que se construyen con una arquitectura híbrida; es decir, incluyen un procesador dedicado
al procesamiento digital de señales, y/o además incluyen un coprocesador encargado de
operaciones matemáticas o lógicas que complementan las tareas de procesamiento. Sin
embargo, una desventaja del avance en la tecnología es que rápidamente se vuelvan
obsoletas, como es el caso de las plataformas TMS320C6701 EVM y MCK240. La
solución se tiene cuando el proveedor proporciona alguna actualización en el software para
el manejo con sistemas operativos actuales. De lo contrario, el problema empeora al tener
que reservar una computadora con el sistema operativo específico bajo el cual opera la
tarjeta.
•
Al trabajar con el sistema de desarrollo Code Composer Studio para la programación de
tareas de la familia TMS320 de Texas Instruments, se adquirieron los conocimientos
necesarios para iniciar un proyecto completo con un DSP. No es necesario ser un gran
84
6.2 SUGERENCIAS A TRABAJOS FUTUROS
programador de lenguaje C o ensamblador, ya que existen en Internet innumerables
ejemplos de aplicaciones que permiten retomar el código y editarlo de acuerdo a las
necesidades que tenga cada usuario. Para el caso particular de Texas Instruments se
anexan en el CD aplicaciones, manuales de usuario, hojas de datos, guías y software que le
servirán al estudiante para iniciarse en las tareas de programación de un DSP.
•
Finalmente, como parte de la metodología, se incluye una etapa de aplicación, mediante la
implementación física del controlador de velocidad de un motor usando la tarjeta
TMS320F2812 eZdsp. Si bien la formación académica que se tiene no es en el área de
control ni electrónica de potencia, fue necesario aprender tópicos relacionados a cada área
tal como control y tipos de motores, puentes rectificadores, convertidores, inversores, etc.,
así que los DSP son una alternativa de solución para la implementación y ejecución de
tareas de control en las áreas de investigación del Departamento de Electrónica.
La aportación más significativa que brinda este trabajo de tesis es aprovechar la
infraestructura de recursos que se dispone para seguir desarrollando tareas de procesamiento
digital de señales. En consecuencia, y como parte de la metodología para la selección de
dispositivos DSP el estudio permitirá una mejor planificación en el crecimiento de los
laboratorios, brindando al usuario una amplia gama de información técnica y herramientas
adicionales para los trabajos que involucran sistemas digitales del Departamento de Electrónica.
6.2 Sugerencias a trabajos futuros
•
Las tarjetas que se tienen en el Departamento de Electrónica son del fabricante Texas
Instruments; éstas se han tomado en cuenta en el desarrollo de varios trabajos de tesis
debido a las características técnicas que tienen. El siguiente caso de estudio podría
contemplar la adquisición de tarjetas de otros fabricantes, de tal forma que se pueda hacer
una comparación real entre diversas arquitecturas de DSP. Por ejemplo la marca dSPACE
ofrece diversos productos tanto de software como de tarjetas para el procesamiento digital
de señales los cuales permiten interactuar con Simulink a partir de un modelo desarrollado
en esta herramienta.
•
Las técnicas de procesamiento digital de señales mediante DSP requieren consolidarse en
el programa de Maestría en Ciencias en Ingeniería Electrónica, por lo que es recomendable
ofrecer capacitación adecuada a los estudiantes con cursos teórico-prácticos para su
aprendizaje.
•
Es conveniente que se estudien otros esquemas de procesamiento digital como lo son los
FPGA, de tal forma que existan más variantes en los mecanismos de diseño, análisis e
implementación de algoritmos de control y tareas para el manejo de dispositivos en
electrónica de potencia.
85
CAPÍTULO 6. CONCLUSIONES Y TRABAJOS FUTUROS
•
Debido a la complejidad con que las aplicaciones van creciendo, los DSP requieren realizar
tareas a diferentes tasas de procesamiento. Los sistemas en tiempo real que manejan
múltiples tareas, manejo de eventos, etc. requieren de un estudio particular de tal forma que
las implementaciones que se ejecuten en esta modalidad sean efectivas.
•
Resulta conveniente que las plataformas que se tienen de la familia C6000 de Texas
Instruments se pudieran integrar en nuevos campos de investigación del Departamento de
Electrónica ya que su poder de cálculo es superior y la velocidad supera los 500 MHz,
como es el caso del TMS320C6416 DSK que corre a una velocidad de 720MHz.
86
ANEXOS
87
ANEXOS
88
ANEXO A
Tabla A-1. Principales Familias de DSP del mercado
Punto
Fijo,
flotante.
Ambos
Ancho de
Dato
Vel. de
reloj Core.
[1]
Memoria
Total
Integrada
Bytes
Precio
unitario
[2]
ADSP-218x
Punto Fijo
16 bits
80 MHz
16 K–208 K
$6–26
Muchos miembros de la familia con
diversidad de periféricos.
ADSP-219x
Punto Fijo
16 bits
160 MHz
16 K–128 K
$11–26
Versión mejorada del
ADSP-218x
ADSP-2126x
(SHARC)
Punto
Flotante
32/40 bits
200 MHz
512 K–768 K
$5–15
Característica SIMD, soporte de
multiprocesador fuerte.
Punto
Flotante
32/40 bits
400 MHz
896 K–1024 K
$17–26
SHARC con un pipeline extra-largo
para velocidades de reloj muy altas.
Punto Fijo
16 bits
750 MHz
84 K–328 K
$5–32
DSP con Dual-MAC y variable
velocidad y voltaje.
Ambos
8/16/32/40
bits
600 MHz
512 K–3 M
$131–
205
VLIW de 4-way con capacidades
SIMD; uso de eDRAM
DSP563xx
Punto Fijo
24 bits
275 MHz
24 K–648 K
$4–47
Partes orientadas al audio;
compatibilidad binaria con ’560xx
DSP56F8xx
(56800)
Punto Fijo
16 bits
80 MHz [3]
28 K–152 K
$3–12
Contiene características tales de un
microcontrolador
Punto Fijo
16 bits
120 MHz
20 K–612 K
$3–20
Version mejorada del ’568xx
MSC71xx
(SC1400)
Punto Fijo
16 bits
300 MHz
88 K–472 K
$13–35
Basado en el núcleo SC1400
MSC81xx
(SC140)
Punto Fijo
16 bits
500 MHz
LSI Logic
LSI40x
(ZSP400)
Punto Fijo
16/32 bits
200 MHz
96 K–252 K
$4–9
Basado en el núcleo ZSP400
O
T
R
A
S
Microchip
dsPIC3xF
Punto Fijo
16 bits
40 MHz
12.5 K–286 K
$4–14
Híbrido, microcontrolador/DSP
NEC
μPD77050
(SPXK5)
Punto Fijo
16 bits
250 MHz
400 K
$13
DSP con Dual-MAC y variable
velocidad y voltaje.
SH76xx
(SH2-DSP)
Punto Fijo
16 bits
62.5 MHz
12 K–20 K
$11–13
Híbrido, DSP/microprocesador basado
en el SH2-DSP
5%
Renesas
SH772x
(SH3-DSP)
Punto Fijo
16 bits
200 MHz
32 K–48 K
$17–23
Híbrido, DSP/microprocesador basado
en el SH3-DSP
Ambos
16/32 bits
400 MHz
48 K–64 K
$21–35
Microprocesador Superescalar con
instrucciones geometría 3D
Vendedor
Analog Devices
10%
Familia
ADSP-213xx
(SHARC)
ADSP-BF5xx
(Blackfin)
ADSP-TS20x
(TigerSHARC)
Freescale
11%
DSP5685x/
56F8xxx (56800E)
SH77xxx
(SH-4)
Lucent
Technologies
25%
Texas
Instruments
49%
514 K–1440 K $77–184
Notas
Basado en el núcleo SC1400; varios
chips usan 4 núcleos
No ofrece información de sus productos en línea.
TMS320C24x/
F24x
Punto Fijo
16 bits
40 MHz
13 K–69 K
$2–8
Híbrido, microcontrolador/DSP
TMS320C28x/
F28x
Punto Fijo
32 bits
150 MHz
40 K–294 K
$5–14
Híbrido, microcontrolador/DSP; ensamblador compatible c/ ’C24x
TMS320C54x
Punto Fijo
16 bits
160 MHz
24 K–520 K
$3–54
Muchas instrucciones especiales
TMS320C55x
Punto Fijo
16 bits
300 MHz
80 K–376 K
$4–17
Versión-Dual, DSP con Dual-MAC;
ensamblador compatible c/ ’C54x
TMS320C64x/
DM64x
Punto Fijo
8/16 bits
1 GHz
Punto Fijo
8/16 bits
1 GHz
2112 K
$179–
259
Agrega capacidades 8-MAC y
operaciones especiales que el 'C64x
Punto
Flotante
32 bits
300 MHz
72 K–264 K
$12–31
Versión punto flotante del ’C62x
Punto
Flotante
32 bits
300 MHz
544 K–672 K
$10–20
Agrega registros e instrucciones
orientadas al audio que el ’C67x
TMS320C64x+
TMS320C67x
TMS320C67x+
160 K–1056 K $15–208
Agrega capacidades quad-MAC y
operaciones especiales que el 'C62x
[1] Velocidad de Reloj para el miembro más rápido de la familia
[2] Precios por unidad y en cantidades mínimas de 10,000 piezas
[3] El DSP56F8xx requiere de dos ciclos de reloj por ciclo de instrucción.
89
ANEXO B
Tabla B-1. Familias de DSP del fabricante Analog Devices
No. Parte
Velocidad
de
Reloj (MHz)
MMACs
MFLOPs
On-Chip
Puertos
Controlador
SRAM
Seriales
DMA
(Mbits)
SPORTs
(canales)
Familia Blackfin: DSPs de 32 y 16 bits
308 KB
si
si
52KB Ram
2
si
Puertos
link
Voltaje
(V)
Paquete
ADSP-BF535P
ADSP-BF531
350
400
700
800
-
USB/PCI
-
1-1.6
0.8-1.2
ADSP-BF532
400
1500
-
84 KB
2
si
-
0.8-1.2
ADSP-BF533
750
-
-
148 KB
2
si
-
0.8-1.4
ADSP-BF561
Dual core
ADSP-BF536
MCU/DSP
ADSP-BF537
MCU/DSP
ADSP-BF534
MCU/DSP
600
-
328 KB
si
ADC/DAC
0.8-1.2
400
2400
1200/1200
-
-
100 KB
si
si
CAN
0.8-1.2
600
-
-
132 KB
si
si
CAN
0.8-1.2
500
-
-
132 KB
si
si
CAN
0.8-1.2
260 PBGA
160 Mini-BGA, 176 LQFP,
169 Sparse PBGA
160 Mini-BGA, 176 LQFP,
169 Sparse PBGA
160 Mini-BGA,
169 Sparse PBGA
256 Mini-BGA,
297 PBGA
182 Mini-BGA,
208 Sparse Mini-BGA
182 Mini-BGA,
208 Sparse Mini-BGA
182 Mini-BGA,
208 Sparse Mini-BGA
ADSP-21065L
ADSP-21062
ADSP-21062L
ADSP-21061
ADSP-21061L
ADSP-21060
Familia TigerSHARC
* Arquitectura superescalar estática, la cual soporta 1, 8, 16 y 32 bits de punto fijo así como en punto flotante
300
2400
6
14
4
1.2
600
4800
24
14
4
1.2
500
4000
12
14
4
1.05
500
4000
4
14
4
1.05
Familia SHARC. Punto flotante de 32 bits ( 3ra. Generación)
266
532
1,596
0.5
4
1.2
400
800
2,400
2
8
1.3
400
800
2,400
2
8
1.3
400
800
2,400
2
8
1.3
333
666
1,998
3
6
1.2
333
666
1,998
3
6
1.2
333
666
1,998
3
6
1.2
333
666
1,998
3
6
1.2
333
666
1,998
3
6
1.2
200
400
1,200
2
6
1.2
200
400
1,200
2
6
1.2
150
300
900
1
4
1.2
Familia SHARC. 32 y 40 - bits en punto flotante y 32 bits de punto fijo ( 2da. Generación)
100
200
600
1
4
2
1.8
100
200
600
4
2
6
1.8
80
160
480
4
2
6
2.5
Familia SHARC. 32 bits de punto fijo y 32 bits en punto flotante ( 1ra. Generación)
66
66
198
0.5
2
0
3.3
40
40
120
2
2
6
5
40
40
120
2
2
6
3.3
50
50
150
1
2
0
5
44
44
132
1
2
0
3.3
40
40
120
4
2
6
5
ADSP-21060L
40
40
AD14060
AD14060L
AD14160L
40
40
40
40
40
40
No. Parte
Velocidad
de
Reloj (MHz)
RAM
Programa
(KWord)
160
160
160
160
160
160
80
80
80
80
80
80
75
75
75
75
4
32
32
32
16
8
48
32
32
16
8
4
48
32
16
8
ADSP-TS101S*
ADSP-TS201S*
ADSP-TS202S*
ADSP-TS203S*
ADSP-21375
ADSP-21369
ADSP-21368
ADSP-21367
ADSP-21366
ADSP-21365
ADSP-21364
ADSP-21363
ADSP-21362
ADSP-21266
ADSP-21262
ADSP-21261
ADSP-21161N
ADSP-21160N
ADSP-21160M
ADSP-21990^^
ADSP-21991^^
ADSP-21992^^
ADSP-2191M
ADSP-2195M
ADSP-2196M
ADSP-2188N
ADSP-2189N
ADSP-2187N
ADSP-2185N
ADSP-2186N
ADSP-2184N
ADSP-2188M
ADSP-2189M
ADSP-2185M
ADSP-2186M
P
U
N
T
O
F
I
J
O
16
bits
120
4
2
-
480
16
5
480
16
5
480
16
8
Familia ADSP-21xx: ^^ DSPs Mixed Signal
Bus de
Sport
Puerto
ADC
RAM
Memoria
Host
0
Datos
Ext.
DMA
(KWord)
(Bits)
4
24
1
4
ADC
8
24
1
8
ADC
16
24
1
8
ADC
32
16
3
8
DMA
16
16
3
6
DMA
8
16
3
6
DMA
56
24
2
6
48
24
2
6
32
24
2
6
16
24
2
6
8
24
2
6
4
24
2
4
56
24
2
4
48
24
2
2
16
24
2
2
8
24
2
2
-
19x19 BGA
25X25 BGA
25X25 BGA
25X25 BGA
MQFP
MQFP, SBGA
SBGA
MQFP, SBGA
LQFP, MiniBGA
LQFP, MiniBGA
LQFP, MiniBGA
LQFP, MiniBGA
LQFP, MiniBGA
LQFP, MiniBGA
LQFP, MiniBGA
LQFP, MiniBGA
MiniBGA
PBGA
PBGA
MiniBGA/MQFP
MQFP, PBGA
MQFP, PBGA
MQFP, PBGA
MQFP, PBGA
MQFP, PBGA,
Ceramic QFP
MQFP, PBGA,
Ceramic QFP
Ceramic QFP
Ceramic QFP
CBGA
6
3.3
12
12
16
5
3.3
3.3
Timers
de
Prop.
General
3/32bits
3/32bits
3/32bits
3
3
3
1
1
1
1
1
1
1
1
1
1
Voltaje
(V)
Paquete
2.5
2.5
2.5
2.5
2.5
2.5
1.8
1.8
1.8
1.8
1.8
1.8
2.5
2.5
2.5
2.5
176 LQFP, 196 Mini-BGA
176 LQFP, 196 Mini-BGA
176 LQFP, 196 Mini-BGA
144 LQFP, 144 Mini-BGA
144 LQFP, 144 Mini-BGA
144 LQFP, 144 Mini-BGA
100 LQFP, 144 Mini-BGA
100 LQFP, 144 Mini-BGA
100 LQFP, 144 Mini-BGA
100 LQFP, 144 Mini-BGA
100 LQFP, 144 Mini-BGA
100 LQFP, 144 Mini-BGA
100 LQFP, 144 Mini-BGA
100 LQFP, 144 Mini-BGA
100 LQFP, 144 Mini-BGA
100 LQFP, 144 Mini-BGA
90
ANEXO B
Tabla B-2. Familia de DSP 563xx/MSC del fabricante Freescale.
91
ANEXO B
Tabla B-3. Familia de DSP 56F800/E del fabricante Freescale.
92
ANEXO B
Tabla B-4. Familia de DSP TMS320C2000 del fabricante Texas Instruments.
93
ANEXO B
Tabla B-5. Familia de DSP TMS320C5000 del fabricante Texas Instruments.
94
ANEXO B
Tabla B-6. Familia de DSP TMS320C6000 del fabricante Texas Instruments.
95
ANEXO C
Instrucciones de Instalación del Software CCS Versión 3.1 IDE.
Antes que nada hay que cerciorarse de tener a la mano la tarjeta de desarrollo TMS320F2812
eZdsp, y que además incluya: fuente de 5V, Cable paralelo, así como el disco de instalación de
CCS identificado con la etiqueta 507847-6001A del fabricante Spectrum Digital.
Los requerimientos mínimos del sistema son:
•
•
•
•
•
Sistema operativo Windows 2000/XP.
500MB de espacio libre en el disco duro.
128MB de RAM
Unidad de CD-ROM
Monitor color de 16 bit de resolución.
A continuación se enumeran los pasos para la correcta operación del software, y del kit de
inicio:
1 Reinicie su computadora, e ingrese en el área del BIOS. Seleccione para el puerto LPT1 el
modo de trabajo EPP. Salve esta nueva configuración y finalice esta aplicación.
2 Por favor no conectar aun cualquier tipo de hardware que viene con el TMS320F2812
eZdsp.
3 Se necesita que la instalación se haga con privilegios de Administrador y el software para
detección de virus esté deshabilitado.
4 Insertar el disco de herramientas (507847-6001A) C2000 Code Composer Studio IDE
(Release 3.1) y escoger la opción:
a) INSTALL PRODUCTS
b) Ejecutar la pestaña C2000 CODE COMPOSER STUDIO v3.1Æ NEXTÆ NEXT
Æ Aceptar los términos de la licencia Æ Instalación típica.
c) Dar por defecto las indicaciones que se ofrecen para la instalación en la carpeta
C:\CCStudio_v3.1 Æ NEXT
d) Instalar Ahora.
e) Al finalizar la instalación un mensaje indicará que se ha instalado satisfactoriamenteÆ
FINISH.
5 Para instalar el controlador de la tarjeta TMS320F2812 eZdsp Spectrum Digital, es
necesario oprimir la pestaña de la opción correspondiente.
a) Un mensaje Bienvenido al controlador de emulación eZdsp2800 y contenido de la
tarjeta (v3.1) Æ NEXT Æ Instalación típica.
b) Instalar por defecto en la carpeta C:\CCStudio_v3.1\ Æ NEXT Æ NEXT Æ FINISH.
c) Ir al menú principal de las herramientas del TM320C2000 eZdsp
d) Salir
96
ANEXO C
6 Del menú de inicio de Windows XP o de la ventana que se muestra en la figura C-1
ejecutar el icono Setup CCStudio v3.1 para la configuración de la tarjeta TMS320F2812
eZdsp. A continuación se desplegara una ventana como la que se muestra en la figura C-2.
a) Seleccionar la tarjeta F2812 eZdsp del menú, oprima agregar Æ en el recuadro
System Configuration oprima el botón salvar y salir.
b) A continuación aparecerá una ventana de dialogo que preguntará si desea ejecutar
CCStudio. Seleccionar la opción NO.
7 A continuación apagar la computadora y conectar la tarjeta como indica la figura C-3.
Figura C-1 Ventana de iconos de Code Composer Studio v3.1.
97
ANEXO C
Figura C-2 Ventana de configuración de la tarjeta en CCStudio v3.1.
Figura C-3 Conexión física del TMS320F2812 eZdsp.
98
ANEXO C
8 En este momento encender la tarjeta TMS320F2812 eZdsp, a continuación encender
nuevamente la computadora.
9 Una ventana de ejecución del programa Code Composer Estudio como la que se muestra
en la figura C-4 aparecerá en pantalla. En caso de no ejecutarse CCS se puede realizar esta
acción haciendo doble clic en el icono
CCStudio 3.1.lnk
desde el escritorio de la computadora.
10 Finalmente como se muestra en la figura C-5 aparecerá en pantalla el ambiente de trabajo
de CCS; con un mensaje en la parte inferior izquierda de la pantalla que dice “La tarjeta
está desconectada”. En este punto se ha instalado correctamente el programa CCS.
Figura C-4. Pantalla de ejecución de CCS.
Figura C-5. Ventana de trabajo del sistema de desarrollo Code Composer Studio.
99
ANEXO C
Ambiente de Desarrollo CCS-IDE
Code Composer Studio (CCS) es una herramienta de Texas Instruments que permite al usuario un
ambiente de ventana amigable para la escritura y depuración de código en lenguaje “C” o
ensamblador. El mismo software sirve para varias de las familias de DSP de Texas Instruments.
Siempre y cuando se tengan los controladores de la tarjeta que se desea instalar. Una vez que se
conecta el hardware correctamente, se dará paso a un ejercicio con CCS, el cual le dará las
habilidades para:
•
•
•
•
•
•
•
•
•
•
Abrir un programa en lenguaje C o ensamblador, construirlo y cargarlo al DSP.
Ver el ensamblador si el programa esta editado en C.
Ver y editar localidades de memoria
Ver y editar registros del CPU
Abrir una ventana de vigilancia (watch window)
Reiniciar el DSP (Reset DSP)
Ejecutar el programa en modo tiempo real (real time mode)
Poner puntos de ruptura (breakpoints)
Distinción de paso a través del código
Salvar y cargar un espacio de trabajo (workspace)
I. Ambiente de proyecto
En esta sesión se mostrará como crear un archivo de proyecto, agregar archivos fuente y objeto de
tipo librería al mismo proyecto, editar código fuente, compilar y ligar un programa. Por
convención se usarán los términos en ingles, para ejecución de los comandos que se verán en
pantalla al ejecutar el software.
Nota: La programación se realizó con Code Composer V. 4.12 en la tarjeta de evaluación EVM2407, ya que ésta fue
la primera tarjeta en la que se empezó a trabajar. La metodología para la edición y ejecución de programas es
aplicable a la versión 3.1 de CCS ya ambas versiones de desarrollo son muy similares, a continuación se describe la
metodología de diseño.
1. Como crear un nuevo proyecto. De la barra de menú seleccionar ProjectÆNew.
Aparecerá una ventana de dialogo de selección. Navegar por el directorio “tutorial” de
code composer, referente al tipo de tarjeta que se está usando, en nuestro caso ir a
c:\ti\c2000\tutorial. Escribir “volume.mak” como el nombre del proyecto y finalmente
presionar Save
2. Agregar archivos al proyecto. De la barra de menú seleccionar ProjectÆAdd Files to
Project. Aparecerá una ventana de dialogo la cual permitirá seleccionar un archivo a
agregar al proyecto, de acuerdo a su tipo de extensión. Agregar los siguientes archivos al
proyecto, invocando repetidamente el comando ProjectÆAdd Files to Project del menú
principal.
volume.c ( que es el archivo fuente)
volume24x.cmd ( archivo de comando para el linker)
rts2xx.lib (librería de run-time enviada con el compilador) Nota: esta librería no se
encuentra en le directorio de “tutorial”. Navegue por el directorio “cgtools” y seleccione el
archivo apropiado para la tarjeta. En nuestro caso “rts2xx.lib”
100
ANEXO C
En la ventana de vista del proyecto se desplegarán los contenidos actuales del
proyecto. Entonces puede hacer clic en el nodo con el signo “+” para ver la lista de
contenido de cada categoría.
Como en otros lenguajes de programación, el proyecto esta subdividido en tres grandes
categorías las cuales son:
Archivos tipo “include” (*.i) y “header” (*.h) definidos por el usuario y comunes a la
mayoría de programas. Funcionalmente los archivos *.h y *.i son lo mismo. Ambos
pueden definir constantes, macros (llamado de funciones definidas por el usuario), o
variables.
El archivo de comando de enlace (*.cmd) es vital para la apropiada construcción del
código. Éste específica dentro de la memoria de programa donde poner secciones del
código de programa, define bloques de memoria, contiene opciones de enlace y nombra
archivos de entrada para el enlace, nombra los archivos de salida ejecutables en el DSP
(*.out), etc. Además, el archivo de comando de enlace especifica localidades de memoria.
Sin un apropiado archivo de comando de enlace, CCS no construirá el programa
correctamente.
Los archivos fuente en lenguaje C o ensamblador (*.c & *.asm) contienen el programa
actual, con las instrucciones del algoritmo a desarrollar. Al ser compilado y libre de errores
se ejecuta para generar los archivos correspondientes ejecutables en el DSP. Al menos se
debe tener un archivo fuente, pero podría haber archivos fuente que llamen a otros archivos
igualmente fuente.
LIBRARIES: (contiene los archivos de librería: *.lib)
La ventana del proyecto desplegará otros archivos asociados tal como *.cmd, *.gel en la
sección GEL files. Cualquier archivo agregado al proyecto puede ser rápidamente visto,
compilado, o removido del proyecto por medio del botón derecho, seleccionando el
comando apropiado que se quiera ejecutar.
Precaución: Se debe asegurar que el archivo de comando de liga refleje el mapa de memoria de la tarjeta.
VolumeX.cmd es provisto por varios casos, pero no todos. Usar FileÆOpen dialog box para abrir y ver este
archivo. Se puede modificar este o usar un archivo de comando ligador propio, agregando este al proyecto, en
vez de agregar VolumeX.cmd.
3. Cambiando las opciones del proyecto.
a) Cambie la opción del ligador a un uso de “Modelo de autoinicialización ROM”.
Del menú Project ÆOptions , la ventana de opciones aparecerá. Aquí se permitirá seleccionar
las opciones para el compilador, ensamblador y enlazador. Si se está usando la ventana de vista
del proyecto, hacer clic con boton derecho en Project name y seleccionar options.
b) seleccionar la pestaña Linker
c) debajo de Map filename escoger “ROM Autoinitialization Model”
d) presionar OK. Para salvar la nuevas opcionesÆexit
101
ANEXO C
4.- Compilando programas
Seleccione ProjectÆBuilt o use el icono equivalente incremental build. Notese que hay cuatro
botones en la barra de proyecto: Compile File, Incremental Build, Rebuild All, and Stop Build.
Es mejor usar el botón de Incremental Build, ya que únicamente aquellos archivos que han
cambiado desde la última compilación, serán recompilados.
Después de seleccionar el botón Build, se preguntará si se desea reconstruir todos, seleccionar
YES. Se verá como Code Composer (C.C) compila el archivo volume.c. Si C.C no encuentra
las herramientas de generación de código TI, hay que asegurarse que estas están definidas en
el directorio TI tools en el PATH variable en el archivo autoexec.bat
Nota: El proceso de construcción del proyecto puede ser monitoreado viendo la ventana de construcción, la cual
por default se despliega en la parte más baja de la ventana principal. Al final se desplegará:
Build Complete,
0 Errors, 0 Warnings.
5.-Preparando archivos fuente
a) Para el caso en que hubiera, un mensaje de error, se hace doble click sobre el error, y la fuente
de el volume.c aparecerá en una ventana de edición.
b) cambie el error de sintaxis poniendo una (,) o de lo que se trate, la línea en este caso deberá
verse así: input=&inp_buffer[0];
c) Salvar el archivo, presionando el botón Save en la barra de herramientas.
d)Ejecute nuevamente incremental compile. Esta vez el archivo deberá compilar y ligar sin ningún
error.
II. Depuración Básica
Este tutorial familiarizará al lector con algunos comandos de depuración básicos.
1) Cargando un programa DSP. Si se ha seguido las instrucciones del tutorial anterior
“ambiente de proyecto”, el directorio tutorial, deberá contener el archivo objeto
volume.out. Cargue este archivo hacia la tarjeta seleccionando FileÆ Load Program, en la
barra de menú.
2) Setting breakpoints. Poniendo puntos de ruptura
Si el archivo fuente volume.c no está aun abierto, abrir haciendo doble clic sobre su nombre, en la
pantalla de vista de proyecto. O usando el icono de Open en la barra de herramientas.
Poner el cursor en cualquier lugar de la línea que contiene el código “main( )”. Poner un
breakpoint en esta línea, presionando el icono de Breakpoint en la barra de herramientas
.
Nótese que la línea en cuestión es resaltada con en color púrpura para indicar que un punto de
ruptura ha sido colocado.
102
ANEXO C
3) Corriendo el código. Hacer clic en el icono Run de la barra de herramientas para iniciar a
ejecutar el código.
El programa correrá y se detendrá en el punto de ruptura que se ha marcado. Las localidades
actuales de la PC (Program Counter) son enmarcadas por una línea en amarillo en la ventana
de archivo fuente(llamada Edit window). Si el actual PC coincide con una localidad de punto
de ruptura, la línea es dividida en dos colores (amarillo y púrpura) para indicar que el actual
PC está en esta línea y que además un punto de ruptura también ha sido colocado.
4) Controlando la ejecución
a)Single Step hace la ejecución del programa de compilación paso por paso. En este caso
después de ejecutarlo varias veces, se encontrara que se tiene un ciclo “while”. Usar el
botón Step Out para salir fuera de esta función.
b) También Se pueden usar estos comandos de paso en la ventana del modo
ensamblador. Con el boton derecho del ratón sobre edit window Æseleccionar Mixed
Mode para configurar la pantalla en modo mixto (mixed mode) o modo ensamblador.
c) En la ventana Dis-Assembly, poner el cursor en una instrucción del ensamblador,
presionar F1 y code composer buscará por la instrucción especificada en la línea de
ayuda. Esta es una buena forma de obtener ayuda acerca de instrucciones en
ensamblador que no son comprendidas.
Después de cargar el programa se puede ir hacia obtener main( )
Usando el comando DebugÆGo Main
III. Apertura de la ventana Watch Window
1) seleccionar ViewÆWatch o el icono de los lentes. C.C. permite observar variables hasta en
cuatro ventanas. Esto es especificar una variable en particular seleccionando la ventana del
1-4.
C.C. permite observar rápidamente variables de interés durante una sesión de depuración
(debugging)
a) poner el cursor en alguna variable en la ventana de Edit o Dis-Assembly
b) ÆrightclickÆQuickWatchÆAddWatch para agregar particularmente la variable
seleccionada, esta permanecerá en la watch window el resto de la sesión.
Otro forma de invocar QuickWatch es posicionándose sobre la variable a elegir y oprimir el icono
de los lentes.
2) Agregando expresiones. Agregar la variable “volume” a la ventana “Watch”
a) Hacer clic con el botón derecho en la ventana Watch y seleccione “Insert New
Expresión” de el menú que aparece.
b) En esta nueva ventana de agregar la variable que quiere monitorear, en este caso
escriba “volume”, finalmente oprima OK.
103
ANEXO C
3) Editando variables. Con el ratón, hacer doble clic en la ventana Watch de la variable a
modificar. El cuadrote dialogo aparecerá. Trate de modificar el valor actual de la variable
volume.
IV. Archivos de Entrada/Salida
En esta sesión se mostrará como una línea de datos va a la tarjeta desde un archivo de la PC. Esta
es una buena forma de simular el código, usando valores muestreados conocidos.
Antes de empezar esta sesión se debió de haber entendido que es un punto de prueba. Un
punto de prueba permite al usuario Extraer/Introducir muestras o tomar un instante de localidades
de memoria en un punto definido por el usuario. Un punto de prueba puede ser puesto en cualquier
punto del algoritmo (justo donde se pone un breakpoint). Cuando la ejecución del programa
alcanza el punto de prueba, el objeto conectado (Sí este es un archivo, grafica o una ventana de
memoria) es actualizado. Una vez que se actualiza el objeto, la ejecución continua.
1) Agregando un punto de prueba. En una aplicación real, la función read_signal
típicamente leería datos desde el convertidor A/D y poner éstos en el espacio del buffer del DSP.
En este ejemplo, en vez de leer la señal desde un circuito externo, el dato será leído desde un
archivo de la PC cuando la ejecución del código alcance la función read_signals. Estando en el
archivo fuente:
b) Poner el cursor sobre la línea que llama la función “read_signals(input)”.
c) Presionar el icono Toggle Probe Point shortcut de la barra del proyecto. Nótese
que la línea está resaltada en color azul para indicar que se ha puesto un punto de
prueba
Toggle Probe Point shortcut
2) Abrir el archivo de diálogo I/O. Seleccionar de la barra de menú el comando File I/O.
Una ventana de dialogo aparecerá.
3) Seleccionar archivo. Con el ratón seleccionar Add File button. Æescoger el archivo
sineX.dat. el cual contiene ejemplos de formas de onda senoidales. Después de haberlo
seleccionado, este archivo deberá aparecer en la lista de archivos de entrada.
4) Llenando los detalles. Usar el ratón para seleccionar el archivo agregado. Ahora se
necesita llenar todos los detalles.
a) En el campo de “address”, ingrese la variable “inp_buffer”. Este campo
específica donde será puesto el dato del archivo.
b) En el campo “Length”, ingrese el valor “0x64”. Este campo específica cuantas
muestras están siendo leídas del archivo, cada vez que un punto de prueba es
tomado. El buffer usado en el programa es de 0x64 de extensión.
c) Seleccionar la opción Wrap Around para este archivo. Esto significa que cuando
el depurador (debugger) alcance el final de este archivo, este reiniciará (reset) el
archivo y empezará a leerlo desde el principio nuevamente. Así continuará
leyendo hasta que el usuario quiera.
104
ANEXO C
5) Conectando a un punto de prueba. Ahora se tiene ya el punto de prueba en el archivo, pero
este no está conectado al archivo de datos. Este estado es reflejado por el campo del punto de
prueba. Así para conectar el archivo al punto de prueba (Probe point), se siguen los siguientes
pasos:
a) Presionar el botón “Add probe point”Æuna ventana de diálogo aparecerá. El
punto de prueba que se ha puesto aparece en la lista de puntos de prueba. La lista
indica que este no tiene conexión.
b) Con el ratón seleccione este punto de prueba. Esta acción llena todos los campos
usando la información de este punto de prueba.
c) Para conectar el punto de prueba al archivo. Presione el botón de flecha (abajo)
localizado detrás del campo “Connect to Entry”. Se desplegará una lista de todas
las ventanas y archivos que se pueden conectar al punto de prueba. De esta lista
seleccionar el archivo sineX.dat.
d) Presionar el botón “replace” para actualizar el punto de prueba existente con esta
nueva información. Esta acción mostrara que el punto de prueba esta ahora
conectado al archivo sineX.dat.
e) Presionar OK para salir de la ventana de diálogo.
6) Con esto se ha completado el escenario de un archivo de entrada. Presionar OK para cerrar
y verificar todos los parámetro ingresados.
V. Aprendiendo a graficar
En esta sesión se ilustra como usar la ventana de gráfica para ver y analizar señales de la tarjeta.
Para ello se debió de terminar la sesión archivos de entrada/salida.
1) De la barra de menú seleccionar ViewÆGraphÆel comando Time/Frecuency. Una ventana
de propiedades de grafica parecerá
2) En el campo Display Type seleccionar “SingleTime”.
3) En el campo start Address ingresar “inp_buffer”.
4) Los valores de todos los campos para este ejemplo están definidos. Si se ha completado el
tutorial anterior, en este momento se debe ver una señal senoidal leída del archivo
5) Repetir el paso 1.
6) Para la dirección Start, ingresar “out_buffer”
7) Seleccionar “Off” para Autoescala y seleccionar la opción de escala fija.
8) Para el valor Y máximo ingresar “6e7” si es un DSP de 32 bits, o un 1000 si se esta en un
DSP de 16 bits
9) Presionar OK para aceptar los parámetros.
105
ANEXO C
VI. Corriendo Code composer
Cuando se inicia la animación en el programa de depuración, el programa de ejecución continúa
hasta que un “breakpoint” es encontrado. Una vez que este alcanza el “breakpoint”, el depurador
para, actualizando todas las ventanas, y continúa ejecutando, Esto produce un efecto de animación.
1) Ponga un “breakpoint” en cualquier parte del lazo de la función principal Main.
2) Con el ratón haga clic en el icono de animación
El programa empezará la animación. Esto es, correrá hasta que alcance el “breakpoint” definido,
actualiza las gráficas, y continúa corriendo.
En este punto, hay que modificar el coeficiente volume. Si aun se tiene abierta la ventana Watch,
hacer doble clic sobre la variable “volume” e ingresar un nuevo valor. Se debe observar que la
amplitud de la señal de salida seno se incrementará o disminuirá según el valor ingresado.
Con este punto se ha completado este tutorial lo cual permite al usuario tener una idea clara para
crear un proyecto, ejecutarlo bajo el software de desarrollo y como cargarlo a memoria del DSP.
Se espera que sea de utilidad la información aquí contenida. Así para consultas más detalladas
favor de referirse a las guías de usuario.
106
ANEXO D
Real Time Workshop (RTW)
Para construir un proyecto y ejecutarlo en el DSP se emplea Real Time Workshop (RTW). Esta
herramienta provee el código específico para una tarjeta en particular de la familia C2000. Las
especificaciones incluyen los controladores de entradas/salidas y un servicio de rutinas de
interrupción (ISR). El código fuente que se genera debe ser compilado y enlazado usando CCS
para que este pueda ser cargado y ejecutado en el DSP.
El proceso de diseño para la ejecución de un modelo de Simulink es como el que se explica
en 5.5.1 del capítulo 5. Por el amplio contenido de información que tiene este tópico se
recomienda la
referencia: Target for TI C2000™ 2 User’s Guide documento
(tic2000_userguide_withSimulink.pdf) con el cual aprenderá como:
•
•
•
•
•
Generar documentos que se lean y editen en lenguaje C mediante CCS.
Automatizar la prueba y ejecución de modelos de Simulink en los DSP de la familia
C2000.
Habilitar sistemas de evaluación en tiempo real en tarjetas como el TMS320F2812 eZdsp o
el TMS320F2407.
Proporcionar acceso a los periféricos del DSP a través de bloques tales como PWM, ADC,
CAN y memoria.
Proporcionar acceso a bloques de la librería IQmath de T.I. para simulación y generación
de código.
En la figura D-1 se muestra el ejemplo de un modelo desarrollado en Simulik para su ejecución en
el TMS320F2812 eZdsp.
Figura D-1. Modelo de Simulik para el TMS320F2812 eZdsp.
107
ANEXO E
TMS320C2407 EVM
Indicadores de Señal y control de
usuario:
•
•
•
•
•
•
•
Interruptores de usuario y leds
Interruptor reset manual
Entrada CAN
Puerto DSP- JTAG
Selección de canal SPI
Selección para carga del BOOT
Selección de protección de escritura
Software proporcionado:
Hardware instalado en tarjeta:
•
•
•
•
•
•
•
•
•
DSP de punto fijo TMS320LF2407
de 16 bits, 3.3V, 40 MIPS, 5 KB
RAM, 64 KB Memoria FLASH
-16 canales de PWM
-16 canales A/D de 10bit
-4 timers /16bits de propósito general
-SCI, interfase de comunicación serie
-SPI, interfase de periféricos serie
-EMIF, interfase de memoria externa
-GPIO, 41 I/O de propósito general
-CAN, Controlador de área de red
128K/16Bit SRAM
4 canales D/A de 12-Bit (DAC 7625)
Puerto RS-232
32 K words de memoria ROM Flash
Puerto JTAG, estándar IEEE 1149.1
para emulación opcional
Cuatro Conectores de expansión de
34 pines para: puerto I/O, puerto
analógico, puerto direccion/dato,
puerto de control.
Interfase CAN con driver
Entrada A/D de 16 canales/10 bits
•
•
•
•
•
Selección de protección de escritura
Code composer Studio
Programa de prueba para A/D y D/A
Programa de prueba para puerto serie
de comunicación y RAM
Programa de prueba para I/O
generales y LEDs luminosos
Softaware de Soporte relacionado:
•
•
•
Soporte en sistema operativo
Win95/98/2000
Librería de software para
programación de Flash
Librería de softaware de la serie
TMS320C2000
Aplicaciones Típicas:
•
•
•
•
•
•
•
Control Industrial
UPS
Sensores inteligentes
Control Remoto
Control de motores
Automotriz
Medicina
108
ANEXO E
TMS320C6x EVM
•
•
DSP ‘C6201 de punto fijo o ‘C6701 de punto flotante
Cuatro frecuencias de reloj
OSC A
‘C6201
‘C6701
•
•
•
•
•
•
•
•
•
•
•
•
•
x1
33.25 MHz
25 MHz
OSC B
x4
133 MHz
100 MHz
x1
50 MHz
33.25 MHz
x4
200 MHz
133 MHz
Interfase PCI con capacidad maestro / esclavo
256K bytes de memoria estática acceso aleatorio de ráfaga sincrónica a 133 MHz
(SBSRAM)
32M bytes de RAM dinámica sincrónica a 100 MHz (SDRAM)
Emulación embedded JTAG a través de la interfase PCI o del emulador externo XDS510
Acceso a toda la memoria del DSP desde el bus PCI a través de la interfase al puerto host
Códec de audio estéreo de 16 bits con tasas de muestreo desde 5.5 hasta 48 kHz
Reguladores conmutados de voltaje en la tarjeta para corriente directa de 1.8 / 2.5 VDC y
3.3 VDC
Regulador lineal de voltaje en la tarjeta para 5 VDC analógicos
Tres indicadores LED (uno de encendido y dos definibles por el usuario)
Operación interna PCI
Dispositivo PCI Plug & Play
Operación externa de escritorio (requiere fuente de alimentación externa y emulador
XDS510 o XDS510WS, los cuales no se incluyen el paquete EVM ‘C6X)
Conectores de expansión de memoria y periféricos DSP para conexión de una tarjeta hija
Controles e indicadores de usuario
•
•
•
•
Emulación JTAG (interna o externa)
Selección de oscilación del reloj DSP (OSC A ó OSC B)
Modo del reloj (oscilador x 1 ó x 4)
Selección de modo de carga del programa (boot)
o
o
o
•
•
•
•
•
Ninguno
Modo de carga HPI
Modo de carga por ROM (requiere tarjeta hija adicional)
Dirección de byte tipo big-endian o little-endian
Tres interruptores definibles por el usuario tipo DIP SWITCH
Reset manual
Indicador LED de encendido
Dos LED indicadores definibles por el usuario
109
ANEXO E
TMS320F2812 eZdsp
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
DSP de punto fijo TMS320F2812 de 32 bits
Frecuencia de operación 150 MHz
18K words RAM
128K words on-chip Flash ROM
64K words on-board RAM
Controlador JTAG Onboard
Emulación JTAG
Voltaje de alimentación de la tarjeta 5 VDC
3 conectores de expansión
Soporte mediante TI Code Composer Studio 3.1
Compatible con utilerías de programación Flash de Spectrum Digital
Conexión a la PC mediante el puerto paralelo.
Periférico para control de motores
o Dos manejadores de eventos (EVA, EVB)
o Compatible con dispositivos 240x
Serial Port Peripherals
o Serial Peripheral Interface (SPI)
o Dos Serial Communications Interfaces (SCIs), Standard UART
o Enhanced Controller Area Network (eCAN)
o Multichannel Buffered Serial Port (McBSP) con modo SPI
16 canales ADC de 12-Bit
o 2 x 8 Channel Input Multiplexer
o Two Sample-and-Hold
o Single/Simultaneous Conversions
o Fast Conversion Rate: 80 ns/12.5 MSPS
56 pines de entrada/salida de proposito general programables individualmente (GPIO)
Características avanzadas de emulación
o Analysis and Breakpoint Functions
o Real-Time Debug via Hardware
Herramentas de desarrollo que incluyen:
o ANSI C/C++ Compiler/Assembler/Linker
o Supports TMS320C24x™/240x Instructions
o Code Composer Studio™ IDE 3.1
o DSP/BIOS™
o Simulink
110
ANEXO E
TMS320C6416 DSK
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
DSP ‘C6416 de punto fijo con arquitectura VLIW
Frecuencia de reloj CPU 750 MHz , 5760 MIPS
512 KWords de memoria flash
16M bytes de RAM dinámica (SDRAM)
Emulación embedded JTAG vía puerto USB
Acceso a toda la memoria del DSP desde el bus HPI a través de la interfase de puerto host
Códec de audio estereo de 24 bits
Voltaje de alimentación de la tarjeta 5 VDC analógicos
Cuatro indicadores LED
Cuatro conectores de audio para micrófono, línea de entrada, bocinas y línea de salida
Dos McBSPs Multichannel Buffered Serial Ports
Tres EMIF External Memory Interface
SPI, Serial Peripheral interface
HPI, Host Port Interface
Tres Timer de propósito general de 32 bits
16 GPIO, General-Purpose I/O
Conector de expansión de memoria y conector de periféricos DSP tal como una tarjeta hija.
Controles e indicadores de usuario
•
•
Emulación JTAG
Selección de modo de carga del programa (boot)
o
o
•
•
•
Ninguno
Modo de carga HPI
Modo de carga por ROM (requiere tarjeta hija adicional)
o
Cuatro interruptores definibles por el usuaro tipo DIP SWITCH
Reset manual
Indicador LED de encendido
111
ANEXO E
TMS320C6711 DSK
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
DSP ‘C6711 de punto flotante con arquitectura VLIW
Frecuencia de reloj CPU 150 MHz e interfase de memoria externa EMIF de 100 MHz
128 Kbytes de memoria ROM flash
16M bytes de RAM dinámica sincrónica a 100 MHz (SDRAM)
Emulación embedded JTAG a través del puerto paralelo o del emulador externo XDS510
Acceso a toda la memoria del DSP desde el bus HPI a través de la interfase de puerto host
Códec de audio de 16 bits con entrada/salida Mono, tasa de muestreo de 8 KHz mediante
TLC320AD535
Reguladores conmutados de voltaje en la tarjeta para corriente directa de 1.8V Core y 3.3V
Voltaje de alimentación de la tarjeta 5 VDC analógicos
Seis indicadores LED
Dos McBSPs Multichannel Buffered Serial Ports
SPI, Serial Peripheral interface
HPI, Host Port Interface
Dos Timer de propósito general de 32 bits
Operación opcional mediante emulador XDS510 (los cuales no se incluyen el paquete)
Conector de expansión de memoria y conector de periféricos DSP tal como una tarjeta hija.
Controles e indicadores de usuario
•
•
Emulación JTAG
Selección de modo de carga del programa (boot)
o
o
o
•
•
•
•
Ninguno
Modo de carga HPI
Modo de carga por ROM (requiere tarjeta hija adicional)
Dirección de byte tipo big-endian o little-endian
Tres interruptores definibles por el usuario tipo DIP SWITCH
Reset manual
Indicador LED de encendido
112
ANEXO E
MCK240 V1.0 Board
Controlador DSP de motores TMS320F240
• Inversor PWM 3 fases: 36V, 2A, hasta 100 KHz
• Medicion de voltaje DC del inversor
• Puerto para el encoder
• 32 kWord de SRAM para dato externo/ programa de memoria
• puerto serie de comunicación RS-232
• Conector estandart para I/O (MC-BUS)
• Emulación embedded JTAG (Emulador XDS510)
• Voltaje de alimentación de la tarjeta 15 VDC ±10%
•
Controles e indicadores de usuario
•
•
•
Emulación JTAG
Reset manual
Indicador LED de encendido
113
ANEXO E
Tabla E-1. Plataformas de DSP disponibles que se han puesto en operación
Procesador
Punto Fijo, flotante.
Ambos
Vel. de reloj DSP.
Voltaje de DSP
TMS320LF
2407EVM
TMS320F
2812eZdsp
TMS320C
6711 DSK
TMS320C
6701 EVM
TMS320C
6416 DSK
MCK240
Punto Fijo
Punto Fijo
Punto flotante
Punto flotante
Punto Fijo
Punto Fijo
40 MHz
150 MHz
150 MHz
150 MHz
720 MHz
40 MHz
3.3V
3.3V
1.26V
1.8V
1.2V
5V
Voltaje Tarjeta
5V
5V
5V
5V
5V
15V
Ancho de Dato
16 bits
32 bits
32 bits-VLIW
32 bits-VLIW
32 bits-VLIW
16 bits
5K/ 16 bits
18K
128KB
-
544 W/16 bits
16 KW/16 bits
eeprom
Memoria
RAM
-
ROM
-
-
-
-
-
FLASH
64KB
128K/16bits
-
-
-
-
-
64K
8KB/64KB
1MB
32KB/1024KB
-
On-Chip SRAML1/L2
Periféricos
Convertidor A/D
16 CH/10 bits 3.3V
16 CH/12 bits 3.3V
-
-
-
16 CH/10 bits3.3V
EMIF
1 /16 bits
1 /16 bits
1 /32 bits
1 /32 bits
1 /16 bits
1 /64 bits
1 /16 bits
SCI
1
2
-
-
-
1
SPI
1
1
-
-
-
1
HPI
-
-
1 /16 bits
1 /16 bits
1 16/32 bits
-
PCI
-
-
-
-
1 /32 bits
-
UTOPIA
-
-
DMA
-
McBSP
-
1
-
-
1
-
16 CH EDMA
4 CH EDMA
64 CH EDMA
-
2
2
3
-
CAN
1
eCAN
-
-
-
-
GP Timers
4/16bits
4/16bits
2/32bits
2/32bits
3/32bits
3/16bits
WD Timer
1
1
-
-
-
1
GPIO
41/ 3.3V
56/ 3.3V
5/ 3.3V
-
16 /3.3V
28/ 5V
PWM
16 CH
16 CH
-
-
-
12 CH
V3.1
Windows XP
NO
Solo funciona con
el software del kit
MCK240
Windows
3.11/95/98/
MATLAB
R2006a
Ninguna
Software
Code Composer Studio
Compatibilidad
con otro software
Aplicaciones
Documentos
disponibles
V4.12
Windows
95/98/NT
Ninguna
V3.1
Windows XP
V3.1
Windows XP
IDE V2.0
Windows
98/2000/NT
MATLAB R2006a
MATLAB
R2006a
Ninguna
Control Industrial,
UPS,Sensores
nteligentes,
Control Remoto,
Control de
motores,
Automotriz,
Medicina
Control Industrial,
UPS,Sensores
Redes, video,
nteligentes,
Audio, Telefonía, Audio, Telefonía,
Control de
imagen, Sistemas
comunicaciones, comunicaciones,
multicanal,
motores,
imagen
imagen
comunicaciones
Automotriz,
reemplazo
microcontrolador
Manuales de
instalación, Guía
de usuario, Notas
de aplicaciones,
hojas de datos,
Manual de
programación
Manuales de
instalación, Guía
de usuario, Notas
de aplicaciones,
hojas de datos,
Manual de
programación
-
Manuales de
instalación,
Notas de
aplicaciones,
hojas de datos,
Manual de
programación
Manuales de
instalación,
Notas de
aplicaciones,
hojas de datos,
Manual de
programación,
Practicas en
SIMULINK
Control Industrial,
UPS, Sensores
inteligentes,
Control de
motores
Manuales de
instalación, Guía
de usuario, Notas
de aplicaciones,
hojas de datos,
Manual de
programación
114
Referencias
[1] Marko Hinkkanen, Veli-Matti Leppänen, and Jorma Luomi, “Flux Observer Enhanced with LowFrecuency Signal Injection Allowing Sensorless Zero-Frecuency Operation of Induction Motors”, IEEE
Transactions on Industry applications, vol. 41, No. 1, pp. 52-59, Jan/Feb 2005.
[2] Shigeo Morimoto, Hideaki Nakayama, Masayuki Sanada, and Yoji Takeda, “Sensorless Output
Maximization Control for Variable-Speed Wind Generation Systems Using IPMSG”, IEEE
Transactions on Industry Applications, vol. 41, No. 1, pp. 60-67, Jan/Feb 2005.
[3] M. Nasir Uddin, M.A. Abido, and M.A. Rahman, “Real-Time Performance Evaluation of a GeneticAlgorithm-Based Fuzzy Logic Controller for IMP Motor Drives”, IEEE Transactions on Industry
Applications, vol. 41, No. 1, pp. 246-252, Jan/Feb 2005.
[4] Sangshin Kwak, Hamid A. Toliyat, “A Hybrid Solution for Load-Commutated-Inverter-Fed Induction
Motor Drives”, IEEE Transactions on Industry Applications, vol. 41, No. 1, pp. 83-90, Jan/Feb 2005.
[5] Yen-Shin and Fu-San Shyu, “Optimal Common-Mode Voltaje Reduction PWM Technique for Invertir
Control With Consideration of the Dead-Time Effects---Part I: Basic Development”, IEEE
Transactions on Industry Applications, vol. 40, No. 6, pp. 1605-1612, Jan/Feb 2005.
[6] Vanja Ambrozic, Manuele Bertoluzzo, Giuseppe S. Buja, and Roberto Menis, “An Assessment of the
Invertir Switching Characteristics in DTC Induction Motor Drives”, IEEE Transactions on Power
Electronics, vol. 20, No. 2, pp. 457-465, March 2005
[7] Ji-Yun Seol and In-Joong Ha, “Feedback-Linearizing Control of IPM Motors Considering Magnetic
Saturation Effect, IEEE Transactions on Power Electronics, vol. 20, No. 2, pp. 416-424, March 2005
[8] Alian Chen, Lei Hu, Lifeng Chen, Yan Deng, and Xiangning He, “A Multilevel Converter Topology
With Fault-Tolerant ability”, IEEE Transactions on Power Electronics, vol. 20, No. 2, pp. 405-415,
March 2005
[9] Programmable Digital Signal Processors: Architecture, Programming, and Applications. Hu, Yu Hen.
New York, NY, USA: Marcel Dekker Incorporated, 2001
[10] DSP’s Past Can’t Hold A Candle to its Future. Gene Frantz, Mar 2007, Texas Instruments. Sitio:
http://blogs.ti.com/author/gene
[11] DSP Processor Fundamentals Architectures and Features. Phil Lapsley and Jeff Bier, IEEE.1997
[12] Digital Signal Processors Architectures, Implementations, and applications. Sen M. Kuo and Woon –
Seng Gan. Ed. Prentice Hall. 2004.
[13] Tratamiento Digital de Señales. Principios, algoritmos y aplicaciones. John G. Proakis, Dimitris G.
Manolakis. Ed. Prentice Hall. 1998.
115
[14] Fundamentals of Digital Signal Processing. Joyce Van de Vegte. Ed. Ed. Prentice Hall. 2001.
[15] Getting Started With Blackfin Processors. Rev. 2.0, Sep. 2005. Analog Devices
[16] SC140 DSP Core, Reference Manual. Rev. 4.1, Sep. 2005. Freescale Semiconductor
[17] MSC8144 Quad Core Media Signal Processor, Reference Manual. Rev. 1, Jun. 2007. Freescale
Semiconductor
[18] MSC711x Overview. Donald Simond. Aplication Note. No. AN3056 Rev. 0, Dic. 2005. Freescale
Semiconductor
[19] DSP56300 24 bit Digital Signal Processor. Family Manual. Rev. 5, Apr. 2005. Freescale
Semiconductor
[20] DSP56F800 16 bit Digital Signal Processor. User Manual. Rev. 7, Aug. 2006. Freescale
Semiconductor
[21] TMS320LF/LC240xA DSP Controllers Reference Guide: CPU and Instruction Set.,No. SPRU160,
Jun. 1999. Texas Instruments
[22] TMS320F/C240xA DSP Controllers Reference Guide: System and Peripherals. No. SPRU357C, May.
2006. Texas Instruments
[23] TMS320x28xx, 28xxx Peripherals Reference Guide, No. SPRU566D. Oct 2006 Texas Instruments
[24] TMS320C28x DSP CPU and Instruction Set Reference Guide, No. SPRU430D Mar 2004 Texas
Instruments
[25] Digital Motor Control Software Library, No. SPRU485A, Oct. 2003. Texas Instruments
[26] TMS320C54x DSP Reference Set. Volume 1: CPU and Peripherals No. SPRU131G, Mar 2001. Texas
Instruments
[27] TMS320C55x DSP CPU Reference Guide, No. SPRU371F, Feb 2004. Texas Instruments
[28] TMS320C55x DSP Peripherals Overview Reference Guide, No. SPRU317H Apr 2006. Texas
Instruments
[29] TMS320C6000 CPU and Instruction Set Reference Guide, No. SPRU189G, Jul 2006. Texas
Instruments
[30] TMS320C6000 DSP Peripherals Overview Reference Guide, No. SPRU190K, Dec 2006 Texas
Instruments
[31] TMS320C28x Assembly Language Tools User’s Guide, No. SPRU513B, Mar 2006 Texas Instruments
[32] Programming TMS320x28xx and 28xxx Peripherals in C/C++, Application Report. No. SPRAA85A,
Oct 2006 Texas Instruments
116
[33] Code Composer Studio IDE v3 White Paper, John Stevenson, Application Report. No. SPRAA08A,
Jul 2004 Texas Instruments
[34] Code Composer Studio IDE v3.1 User’s Guide, No. SPRU509F, May 2005 Texas Instruments
[35] Embedded MATLAB™ User’s Guide, March 2007, The MathWorks.
[36] Getting Started with Simulink 7, September 2007, The MathWorks.
[37] Simulink® 7 Using Simulink, September 2007, The MathWorks.
[38] Mastering Simulink. James B. Dabney and Thomas L. Harman. Ed. Prentice Hall. 2004.
[39] The MathWorks, Inc. Matlab Ver. 7.2.0.232 (R2006a) January 27 2006, What Is Real-Time
Workshop?
[40] DSP-Based Electromechanical Motion Control. Hamid A. Toliyat and Steven G. Campbell. Ed. CRC
Press. 2003.
[41] TMS320LF2407 Evaluation Module. Technical Reference; No. 504885-0001 Rev. D, Jan 2001.
Spectrum Digital
[42] TMS320C6201/C6701 Evaluation Module Technical Reference, No. SPRU305, Dec 1998. Texas
Instruments
[43] TMS320C6201/6701 Evaluation Module User’s Guide, No. SPRU269F, Aug 2002. Texas Instruments
[44] eZdsp Technical Reference, No. 506265-0001 Rev. F, Sep. 2003. Spectrum Digital, Inc.
[45] TMS320C6416 DSK Technical Reference, No. 505945-0001 Rev. A, Apr 2003. Spectrum Digital, Inc.
[46] http://www.mathworks.de/access/helpdesk_r13/help/toolbox/tic6000/build32.html#23316
[47] TLC320AD535C/I Data Manual, Dual Channel Voice/Data Codec. No.SLAS202A, April 1999. Texas
Instruments
[48] MCK240/ TMS320F240 DSP Motion Control Kit, User Manual. Technosoft DSP Motion Solutions
1997
[49 ] DSP Software Development Techniques for Embedded and Real-Time Systems. Robert Oshana, Ed.
Newnes
[50] Ahmet M. Hava, et. All: “Carrier-Based PWM-VSI Overmodulation Strategies: Analysis, Comparison
and Design” IEEE Transactions on Power Electronics, vol. 13, No. 4, July 1998
[51] J. Holtz: “Pulsewidth Modulation – A survey” IEEE Transactions on Industrial Electronics, vol. 39,
No. 5, pp. 410-420, Diciembre 1992
[52] Keliang Zhou, Danwei Wang: “Relationship Between Space Vector Modulation and Three Phase
Carrier Based PWM. A Comprehensive Analysis”, IEEE Transactions on Industrial Electronics, vol.
49, No. 1, Febrero 2002
117
[53] S. Ogasawara, H Akagi, A. Nabae: “A novel PWM Scheme of Voltage Source Inverters Based on
Space Vector Theory”. European Power Electronics Conference. Aachen Germany, pp. 1197-1202,
1989
[54] David M. Alter, “Getting Started in C and Assembly Code With the TMS320LF240x DSP”
Application Report, No. SPRA755A, Jul 2002. Texas Instruments
[55] Matlab 7. Creating Graphical User Interfaces. The MathWorks.
[56] Laura Edith Martínez Turiján,"Módulo de Procesamiento Digital Basado en DSP, para Aplicación en
Accionamiento de Motores de CA Trabajando en Régimen Dinámico", Tesis de Maestría, Centro
Nacional de Investigación y Desarrollo Tecnológico (CENIDET), Departamento de Ingeniería
Electrónica, Cuernavaca, Morelos, México. 10 de febrero de 1997.
[57] Adriana del Carmen Téllez Anguiano, "Desarrollo de Algoritmos Basados en DSP para el
Procesamiento de Señales de Vibración", Tesis de Maestría, Centro Nacional de Investigación y
Desarrollo Tecnológico (CENIDET), Departamento de Ingeniería Electrónica, Cuernavaca, Morelos,
México. 14 de Agosto de 1998
[58] Lux Roxana De León Lomeli,"Detección de Interarmonicos Usando Wavelets", Tesis de Maestría,
Centro Nacional de Investigación y Desarrollo Tecnológico (CENIDET), Departamento de Ingeniería
Electrónica, Cuernavaca, Morelos, México. 7 de enero 2005.
[59]Abraham Cortés Dorantes, "Control Digital Aplicado a Convertidores Correctores del Factor de
Potencia Monofásicos", Tesis de Maestría, Centro Nacional de Investigación y Desarrollo Tecnológico
(CENIDET), Departamento de Ingeniería Electrónica, Cuernavaca, Morelos, México. 22 de Agosto
2006.
[60]Roberto II Ovando Domínguez, "Emulador de Turbina Eólica para el Banco de Pruebas de Generación
Eoloeléctrica", Tesis de Maestría, Centro Nacional de Investigación y Desarrollo Tecnológico
(CENIDET), Departamento de Ingeniería Electrónica, Cuernavaca, Morelos, México. 13 de Julio 2007.
118
Descargar