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