Ingeniería inversa al componente programable (DSP TMS320C6701GJC150) de la tarjeta 138
81
0
0
Texto completo
(2) Hago constar que la presente Tesis en Opción al Título Académico de Ingeniero en Telecomunicaciones y Electrónica fue realizada en la Universidad Central “Marta Abreu” de Las Villas como parte de la culminación de estudios, autorizando a que el mismo sea utilizado por la Institución, para los fines que estime conveniente, tanto de forma parcial como total y que además no podrá ser presentado en eventos, ni publicados sin autorización de la Universidad.. ____________________ Firma del Autor Los abajo firmantes certificamos que el presente trabajo ha sido realizado según acuerdo de la dirección de nuestro centro y el mismo cumple con los requisitos que debe tener un trabajo de esta envergadura referido a la temática señalada.. __________________ Firma del Tutor. _____________________ Firma del Jefe de Departamento. ________________________ Fi rma del Responsable de Información. Científico-Técnica.
(3) iii. PENSAMIENTO. Si he conseguido ver más lejos, es porque me he aupado en hombros de gigantes. Isaac Newton..
(4) iv. DEDICATORIA A mi madre querida, mi mayor bendición, mami gracias por confiar en mí en todo momento. A mis abuelos, Pilar y Felipe, que han sido mi motor impulsor para obtener mis metas, gracias por su apoyo y su interés en que lograra mis propósitos..
(5) v. AGRADECIMIENTOS A mi mamá y a mis abuelos, por ser mis guías e inspiración, por apoyarme y por el amor infinito que me han brindado. A Juan Pablo Barrios Rodríguez, mi tutor, por confiar en mí, y por darme las fuerzas y la sabiduría que necesitaba para seguir adelante. A Yeiniel Suarez Sosa, mi cotutor, por darme la atención que necesitaba. Al Teniente Coronel Gerardo García Pierrat, por dedicarnos su tiempo y paciencia. A mis primos más pequeños, por traer felicidad a mi vida. A toda mi familia, por su infinito cariño y confianza. A mis amigas, por hacer que los momentos más difíciles se volvieran fáciles, Marianela, Mislaydi, Magelet, Danna, Dayra, Yanet. A Yatsuy, Lianet, Laura y Berquis, por escucharme y comprenderme. A mis amigos y consejeros, Lázaro, Isidoro, Víctor, Yosbel, Tabares, Enrique, Oscarito. A Osmar, por poner en mis manos su sabiduría. A Henry, Erick, Carlitos, por brindarme su apoyo. A todos los profesores que han contribuido a mi formación profesional. A mis compañeros de estudio. A todas aquellas personas que de una forma u otra contribuyeron a mi formación vocacional o humana..
(6) vi. TAREA TÉCNICA Con el propósito de darle cumplimiento a los objetivos trazados para la realización de esta tesis, se tomaron en cuenta un conjunto de tareas técnicas fundamentales para la confección del informe final, ellas fueron: 1. Revisión bibliográfica acerca del diseño de aplicaciones HW-SW con CPLD, FPGA y DSPs. 2. Estudio de la documentación disponible de la Estación de Vigilancia. 3. Contextualización del funcionamiento de la tarjeta 138 dentro del sistema general de la Estación de Vigilancia. 4. Descripción de las especificaciones de funcionamiento de la tarjeta 138. 5. Documentación de la estrategia de diseño para DSP con el C++ Code Componer Studio. 6. Documentación de las ecuaciones matemáticas implementadas en el DSP TMS320C6701GJC150. 7. Redacción del Informe Final..
(7) vii. RESUMEN Dentro del programa de modernización del armamento, llevado a cabo por las Fuerzas Armadas Revolucionarias, se encuentra la obtención de la funcio nalidad de las tarjetas electrónicas empleadas en la técnica de combate en la Estación de Vigilancia del espacio aéreo, de las cuales solo se conocen sus códigos fuentes y los esquemas funcionales. Por ello se hace necesaria la aplicación de la técnica de ingeniería inversa para documentar la operación de cada una de estas tarjetas. La T138, tarjeta de cálculo principal dentro de la cabina de dirección, está compuesta por el componente programable DSP TMS320C6701GJC150. Este dispositivo está basado en el alto desempeño y alta velocidad, además es flexible y tiene una gran capacidad numérica, por lo que es empleado para la realización de algoritmos matemáticos de elevada precisión. Para la generación y análisis de los códigos fuentes de este dispositivo, Texas Instruments ha desarrollado varias herramientas, entre ellas, Code Composer Studio. Teniendo el conocimiento indispensable, se aplica la ingeniería inversa para obtener, a partir de los códigos fuentes, las diferentes ecuaciones matemáticas empleadas en el sistema y darles además un sentido técnico dentro de la Estación de Vigilancia..
(8) viii. ÍNDICE PENSAMIENTO.................................................................................................................................... iii DEDICATORIA ..................................................................................................................................... iv AGRADECIMIENTOS.............................................................................................................................v TAREA TÉCNICA ................................................................................................................................. vi RESUMEN .......................................................................................................................................... vii ÍNDICE............................................................................................................................................... viii INTRODUCCIÓN .................................................................................................................................. 1 CAPITULO 1. Características generales del Sistema de Vigilancia. Descripción funcional de la tarjeta T 138. ............................................................................................................................................................ 4 1.1 Dominio “VOLGA” ........................................................................................................................4 1.2 Tarjeta T138, principales características. ........................................................................................6 1.3 Procesador digital de señales. .......................................................................................................8 1.3.1 Historia y evolución............................................................................................................... 8 1.3.2 Clasificación de los DSP ........................................................................................................ 9 1.3.3 Aplicaciones........................................................................................................................ 10 1.4 DSP TMS320C67 ....................................................................................................................... 13 1.4.1 Funcionamiento ................................................................................................................... 15 1.4.2 Arquitectura........................................................................................................................ 15 1.5 Conclusiones del capítulo. ........................................................................................................... 16 CAPITULO 2. Estrategia de co-diseño Hardware-Software para DSP con el entorno de Texas Instruments.18 2.1 Herramientas de desarrollo .......................................................................................................... 18 2.1.1 Code Composer Studio (CCS) .............................................................................................. 18 2.1.2 DSP/ BIOS.......................................................................................................................... 19.
(9) ix. 2.2 Flujos de trabajo ......................................................................................................................... 19 2.3 Optimización del desempeño. ...................................................................................................... 20 2.3.1 Escritura de códigos C/C++ .................................................................................................. 21 2.3.2 Características del compilador .............................................................................................. 22 2.3.2.1 Dependencia con la memoria............................................................................................. 24 2.3.3 Análisis del código. ............................................................................................................. 24 2.3.3.1 Opción –g de load6x ......................................................................................................... 24 2.3.3.2 Opción clock () para el perfil de simulación.......................................................................... 24 2.4 Perfeccionamiento del código C/C++ ............................................................................................ 26 2.4.1 Utilización de funciones especiales ....................................................................................... 26 2.4.2 Acceso de palabra para datos pequeños: .............................................................................. 27 2.4.2.1 Acceso de Palabra en el producto punto a punto ................................................................. 27 2.4.2.2 Acceso de palabra en filtro FIR .......................................................................................... 28 2.4.3 Procesamiento por lote el software........................................................................................ 28 2.4.3.1 Lazos redundantes............................................................................................................ 29 2.4.3.2 Eliminación de los lazos redundantes. ................................................................................ 29 2.5 Conclusiones del capítulo. ........................................................................................................... 30 CAPITULO 3 Ingeniería inversa a los algoritmos implementados en el DSP. Descripción de las operaciones matemáticas ....................................................................................................................................... 31 3.1 Ingeniería Inversa. ...................................................................................................................... 31 3.1.1 Proceso de ingeniería inversa............................................................................................... 32 3.2 Análisis de los códigos. ............................................................................................................... 32 3.2.1 Autolauncher. C................................................................................................................... 33 3.2.2 Antenna.C........................................................................................................................... 37 3.2.3 AGC.C ................................................................................................................................ 44.
(10) x. 3.2.4 Target_Sim.C ...................................................................................................................... 45 3.2.5 Simulator.C ......................................................................................................................... 47 3.2.6 Commander.C..................................................................................................................... 50 3.2.7 Display.C ............................................................................................................................ 57 3.3 Conclusiones del capítulo. ........................................................................................................... 59 CONCLUSIONES ............................................................................................................................... 60 RECOMENDACIONES........................................................................................................................ 61 REFERENCIAS BIBLIOGRÁFICAS ...................................................................................................... 62 BIBLIOGRAFÍA ................................................................................................................................... 63 ANEXOS ............................................................................................................................................ 65 A I. Puestos de trabajo de los operadores. Sin modernizar y modernizado respectivamente. .................. 65 A II. Manivelas. Sin modernizar y modernizado respectivamente. ......................................................... 65 A III. Barrido de las antenas por Beta y Epsilom. ................................................................................. 66 A IV. Indicadores de conducción con las marcas del SAL y otras que aparecen. .................................... 66 A V. Dominio ´´Volga´´ ...................................................................................................................... 67 A VI. Cabina UV ............................................................................................................................... 67 A VII. Switches de la T138 ................................................................................................................ 68 A VIII. Imitador ................................................................................................................................. 68 A IX. Puesto de trabajo del oficial de conducción. Establecimiento de regímenes................................... 69 A X. Imagen del monitor. ................................................................................................................... 69 A XI. Conexión entre tarjetas. ............................................................................................................ 70 A XII. Esquemas de los puestos de trabajo. ........................................................................................ 71.
(11) INTRODUCCIÓN. 1. INTRODUCCIÓN. En una Estación de Vigilancia del espacio aéreo se tiene la tarjeta electrónica funcional, que fue denominada por el fabricante T138 e implementada en circuitos impresos de 4 capas con electrónica digital programada (CPLD y DSP) de la cual hay que obtener su funcionalidad, a partir de sus esquemas electrónicos y los códigos fuentes que están en los componentes programables. Dicha tarjeta se tiene funcionando en la técnica de combate, pero no se conoce nada sobre ella y se tienen los códigos fuentes de los componentes programables. Este estudio está basado en la necesidad de realizar una labor de asimilación de tecnología, mediante la ingeniería inversa, al hardware digital programado que está implementado, con modernos componentes VLSI, en la electrónica de las tarjetas de la Estación de Vigilancia dada. Se conoce por la experiencia obtenida de especialistas extranjeros que un proceso de este tipo requiere de un personal calificado en la teoría de funcionamiento de la Estación dada, y que además tenga suficiente preparación en los temas de la electrónica digital y en los temas de la electrónica digital programada. Un grupo con este personal se tomaría un tiempo entre 12 y 15 años para evaluar las partes de la Estación analógica que se convertirían en procesos digitales, realizar la conversión funcional teórica de integradores, discriminadores, esquemas de análisis, filtros de seguimiento, sistemas a lazo cerrado, etc; diseñar los algoritmos de trabajo de la estación por partes o sistemas independientes, simularlos y compatibilizarlos entre sí, programarlos para diversos componentes, diseñar los esquemas electrónicos y las tarjetas de circuitos impresos, realizar el montaje de las placas, la puesta a punto y las pruebas, la programación de los componentes, el cableado entre placas y concluir con las pruebas funcionales a la nueva estación que estaría surgiendo a partir de este proceso. Una forma de solución común para el problema planteado es realizando nuevos algoritmos a partir de la experiencia y el conocimiento que se tiene sobre el funcionamiento de la Estación dada, pero esto provocaría un rediseño total del sistema, desechando todo lo que está en disposición combativa, así como el incremento del costo por una nueva inversión..
(12) INTRODUCCIÓN. 2. La otra alternativa para resolver el problema que se planteó es mediante la vía científica. Esta alternativa está basada en el trabajo a realizar a partir de la siguiente hipótesis: “Aprovechando la oportunidad única de tener el esquema electrónico y los códigos fuentes que están en los componentes programables de las tarjetas y conociendo además, las señales de entrada y salida presentes en sus conectores, es posible, mediante la ingeniería inversa al hardware programado, obtener la funcionalidad de la Estación de Vigilancia del espacio aéreo instrumentada en dichas tarjetas y tomar las experiencias necesarias sobre la forma que fue realizado dicho proceso.” Planteada ya la situación se necesita conocer el funcionamiento del componente programable DSP TMS320C6701GJC150 de la tarjeta 138. Para darle solución al problema planteado nos propusimos como objetivo general: Documentar la funcionalidad del componente DSP TMS320C6701GJC150 de la tarjeta 138, y como objetivos específicos: 1. Contextualizar el funcionamiento de la tarjeta 138 dentro del sistema general de la Estación de Vigilancia. 2. Describir las especificaciones de funcionamiento del DSP TMS320C6701GJC150 dentro de la tarjeta 138. 3. Analizar la estrategia de diseño para DSPs con el C++ Code Componer Studio. 4. Documentar las ecuaciones matemáticas implementadas en el DSP TMS320C6701GJC150. De los objetivos expuestos se derivan las siguientes interrogantes científicas: 1. ¿En qué contexto se desarrolla el funcionamiento de la tarjeta 138 dentro del sistema general de la Estación de Vigilancia? 2. ¿Cuáles son las especificaciones de funcionamiento del DSP TMS320C6701GJC150 dentro de la tarjeta 138 que le permiten cumplir con las tareas asignadas para el Sistema de Vigilancia? 3. ¿Cómo se desarrollan aplicaciones para los DSPs de TI utilizando el C++ Code Componer Studio? 4. ¿Qué significado tienen las ecuaciones matemáticas modeladas en el DSP TMS320C6701GJC150 de la tarjeta 138? Con este proyecto se pretende contribuir al desarrollo de las tareas en la cabina de dirección de la Estación de Vigilancia, ya que se conocerá el funcionamiento de uno de los componentes programables de la tarjeta de cálculo principal. De esta forma se les facilitará a especialistas e investigadores la reproducción de estas.
(13) INTRODUCCIÓN. 3. tarjetas y la adaptación de su algoritmo de trabajo a su conveniencia, para el funcionamiento de la Estación de Vigilancia del espacio aéreo. Con su ejecución se dan soluciones a problemáticas modernas vinculadas con la adquisición de un HWSW de gran complejidad y valor cuya adquisición no es viable actualmente en nuestro país. Para el cumplimiento de los objetivos planteados se propone el empleo de varios métodos científicos como el método teórico-lógico y el método inductivo-deductivo, con el objetivo de generalizar o particularizar cada análisis concreto relacionado con el enlace de señales entre conectores y pines de los programables; además, puede ser empleado el método sistémico, con el cual quedarán determinados las funcionalidades particulares de dicha tarjeta; el método de simulación computacional, a partir del uso de los ambientes de desarrollo, especializados principalmente en electrónica y simulación digital programada “MatLab”, “Quartus” y “C++ Code Componer Studio” para la confección del modelo esquemático a partir de te xto, verificando de que el resultado concebido coincida con el resultado real; todos complementados con la aplicación de procedimientos de análisis, síntesis, deducción, etc. El informe de la investigación se estructurará en tres capítulos en los que se p retende dar solución al problema planteado. CAPITULO 1: Características generales del Sistema de Vigilancia. Descripción funcional de la tarjeta T138. CAPITULO 2: Estrategia de co-diseño Hardware-Software para DSP con el entorno de Texas Instruments. CAPITULO 3: Ingeniería inversa a los algoritmos implementados en el DSP. Descripción de las operaciones matemáticas..
(14) CAPÍTULO 1. Características generales del Sistema de Vigilancia. Descripción funcional de la tarjeta T 138.. 4. CAPÍTULO 1. Características generales del Sistema de Vigilancia. Descripción funcional de la tarjeta T 138.. En el presente capítulo se caracterizará la tarjeta T138 dentro del dominio Volga, otorgándole una mayor importancia a uno de los componentes programables que dicha tarjeta posee, el DSP TMS320C6701GJC150 y a su funcionamiento. 1.1 Dominio “VOLGA” Generalidades de la Estación de Conducción de Cohetes ECC S75V “Volga”. La ECC (Estación de Conducción de Cohetes) S-75V está destinada para la búsqueda, seguimiento y aniquilamiento de los blancos aéreos, en los rangos de bajas alturas, alturas medias y estratosféricas, tanto de día como de noche y excepcionalmente de los blancos navales y terrestres, en los regímenes de Radiolocalización o Televisión. Esta está compuesta por: Cabina de dirección (UA), compuesta a su vez por los siguientes sistemas: Sistema Sincronizador. Sistema de indicadores. Sistema de Dirección de las antenas y las Rampas de lanzamiento (SDA-RL). Sistema de TV (STO). Sistema de determinación de las coordenadas (SDC). Sistema de elaboración de los mandos (SEM). Sistema Radiotransmisor de los mandos (RTM). Sistema demodulador de las interferencias. (GSHB). Sistema Automatizado de lanzamiento (SAL). Sistema de imitación y control. Cabina (PV) compuesta por: Sistema Transmisor. Sistema Receptor. Sistema de Antenas y Guías de ondas (SAGO). Sistema de los Mandos de fuerza de seguimiento sincrónico (MFSS)..
(15) CAPÍTULO 1. Características generales del Sistema de Vigilancia. Descripción funcional de la tarjeta T 138.. 5. Figura 1.1. Esquema funcional de la ECC S75V “Volga”:. En este dominio hay un total de 18 tarjetas funcionales, de las cuales 5 están implementadas con electrónica programada y solo se conoce su destinación, códigos fuentes y esquemas electrónicos. Las 13 tarjetas restantes se implementan con electrónica analógica y digital, conociéndose su esquema electrónico y su funcionamiento completamente. En el esquema que se muestra a continuación, (Figura 1.2), se ofrecen detalles sobre el enlace funcional entre las tarjetas de este dominio. Dentro de los componentes que se muestran en la figura, se encuentra la Tarjeta 138 (tarjeta de cálculo) que está implementada con electrónica programada en la cual, además de otras func iones desconocidas, se realizan todos los algoritmos y cálculos fundamentales para el funcionamiento de todos los sistemas de l complejo. (Leal 2006).. Figura 1.2. Enlace funcional entre las tarjetas..
(16) CAPÍTULO 1. Características generales del Sistema de Vigilancia. Descripción funcional de la tarjeta T 138.. 6. 1.2 Tarjeta T138, principales características. La T138, denominada “tarjeta de cálculo principal”, concentra su funcionamiento en una serie de tareas, de las más importantes en la cabina de dirección. Está destinada para realizar los cálculos de las principales variables que se emplean en el sistema, en dependencia de una lógica establecida, y para la representación de los procesos en los monitores del sistema. En la figura 1.3 se muestra dicha tarjeta y cada uno de los componentes que esta posee.. Figura 1.3.Tarjeta de cálculo principal T138.. Se compone por varios esquemas que enlazan las señales exteriores con dos componentes programables : una FPGA del tipo Cyclone II EP2C20F256C8N y un DSP del tipo TMS320C6701GJC150. Dentro de las características principales de los componentes utilizados en la placa se encuentran: Las SSRAM son SRAM sincrónicas, del tipo IDT71T75702/902 con 2.5V, alta ve locidad, y 18, 874,368 bits (18 Megabit), organizadas con 512K x 36 /1M x 18. Los buffers son bidireccionales del tipo 74HCT245D. La memoria flash ROM es del tipo Am29LV800 de 8 Mbit, 3.0, organizada con 1 Mbyte de 8 bits o 512K para palabras de 16 bits..
(17) CAPÍTULO 1. Características generales del Sistema de Vigilancia. Descripción funcional de la tarjeta T 138.. 7. El bloque de conversores A/D tiene 4 componentes del tipo AD9059BRS, dobles, de 8 bits, con un rango de muestreo de 60 MSPS y banda de paso de 120 MHz. El reloj para estos conversores es de 40 Mhz. En el bloque de conversores D/A hay 4 componentes del tipo ADV7127 de alta velocidad, con 10 bit en la banda de video, muestreo de 240 MSPS, que permite, para un reloj de 140 Mhz, muestrear señales con frecuencia de hasta 40 Mhz. Otro de los conversores D/A empleado, en este caso uno solo, es del tipo AD8804, de 12 canales, que proporciona salidas independientes de voltaje controlados digitalmente, desde el FPGA por bus serie. Las componentes señaladas en la figura (Figura 1.4) son los principales periféricos que posee la placa 138 para intercambiar las señales de entrada y salida con los componentes programables: FPGA y DSP, según el esquema de la arquitectura interna de la placa que se ofrece en la siguiente figura.. Figura 1.4. Esquema de arquitectura interna de la T138.. La relación de señales de entrada y salida en los conectores, que son específicas para el funcionamiento de la tarjeta en composición de los sistemas de la cabina de dirección, es la que se muestra en la figura 1.5. (Leal 2006).
(18) CAPÍTULO 1. Características generales de l Sistema de Vigilancia. Descripción funcional de la tarjeta T 138.. 8. Figura 1.5. Relación de señales de entrada y salida en los conectores. 1.3 Procesador digital de señales. Un procesador digital de señales o DSP es un sistema basado en un procesador o microprocesador que posee un conjunto de instrucciones, un hardware y un software optimizados para aplicaciones que requieran operaciones numéricas a muy alta velocidad. 1.3.1 Historia y evolución En 1978, INTEL lanzó el 2920 como un “procesador analógico de señales”. Este poseía un chip ADC/DAC con un procesador de señales interno, pero no poseía un multiplicador de hardware, el 2920 no tuvo éxito en el mercado. En 1979, AMI lanza el S2811, que fue diseñado como un microprocesador periférico, al igual que el 2920 no tuvo gran éxito en el mercado. En el mismo año, Bell Labs introduce el primer chip procesador digital de señales (DSP), The Mac 4 Microprocessor. Luego en 1980 fueron presentados en el ISSCC‟80 los primeros DSP completos: el PD7710 de NEC y el DSP1 de AT&T, ambos procesadores fueron inspirados en las investigaciones de PSTN Telecomunicaciones. En ese mismo año NEC comenzó la producción del PD7710, la primera producción de DSP completos en el mundo..
(19) CAPÍTULO 1. Características generales del Sistema de Vigilancia. Descripción funcional de la tarjeta T 138.. 9. En 1982, TI introduce el TMS32010, el primer DSP de punto fijo en la familia de los TMS320. Antes de finalizar el año la revista Electronics Products premió el TMS32010 con el título de ``Producto del Año´´. (Instruments 2004) .Este entró a competir directamente con los Microcontroladores de 8-16 bits que había en el mercado. Otros dispositivos con los que competían eran los microprocesadores de propósito general. Rápidamente los DSP fueron ganando la batalla a los competidores anteriormente enumerados. Esto condujo a la aparición de nuevos miembros, cada vez más potentes y baratos, en este nuevo segmento del mercado. Entre las razones de este éxito comercial de los DSP están: Elevada potencia de cálculo. Emulación, simulación y ejecución en tiempo real. Flexibilidad. Fiabilidad. Incremento del rendimiento del sistema. Coste reducido del sistema. En los últimos años hemos asistido a un crecimiento espectacular en el uso de los DSP, comenzando a ser utilizados en campos que hasta ahora casi no había entrado la elec trónica (automoción, multimedia, entretenimiento, etc.). Así mismo, su aparición ha permitido que desarrollos que hasta entonces sólo se habían realizado a nivel de simulación, hayan podido ser realizados en tiempo real. El crecimiento en el mercado de los DSP triplica el que experimenta el resto del mercado electrónico. En resumen, los DSP han facilitado la creciente digitalización de los más diferentes campos. Este desarrollo no tiene un final definido, apareciendo cada día nuevas aplicaciones en las que son usadas. (Instruments 1990) 1.3.2 Clasificación de los DSP Los DSP pueden ser clasificados atendiendo a diferentes criterios. La clasificación más extendida es l a que tiene en cuenta la precisión con que se realizan las operaciones. Atendiendo a este criterio tenemos la siguiente clasificación: DSP de punto fijo: los datos se representan en formato de punto fijo. Presentan el problema de la limitación del rango dinámico de los datos que pueden representar. Por contra, su precio es bastante.
(20) CAPÍTULO 1. Características generales del Sistema de Vigilancia. Descripción funcional de la tarjeta T 138.. 10. más económico que los de punto flotante. El número de bits usados para representar los datos varía entre los DSP de 16 bits y los de 24 bits. Los primeros se aplican sobre todo en control, telecomunicaciones y codificación de voz. Los segundos tienen prácticamente totalmente copado el mercado del audio profesional, siendo una solución intermedia entre los DSP de punto fijo de 16 bits y los de punto flotante de 32 bits. DSP de punto flotante: los datos son representados con formato de punto flotante. Su rango dinámico es mucho mayor que los de punto fijo, aunque su precio es mayor. Hay unanimidad en el mercado en cuanto al número de bits usados para representar datos: 32 bits. Su juego de operaciones soportan también operaciones con datos en formato punto fijo. Los nuevos miembros de ambos tipos de DSP coinciden en que el juego de instrucciones tiende a parecerse a las de los lenguajes de alto nivel (lenguaje C sobre todo). Esto facilita el empleo de compiladores cruzados, de tal forma que facilita el proceso de programación de los DSP, sin tener un conocimiento de la arquitectura del DSP empleado. (Damián 2006). 1.3.3 Aplicaciones La introducción del TMS320 provee velocidad y flexibilidad; esta combinación produce una familia de procesadores capaces de ejecutar más de 33 millones de puntos de flotantes por segundo (MFLOPS). Dicha familia optimiza velocidad por la implementación de funciones en hardware mientras que otros procesadores lo implementan a través de software o microcódigos. El aprovechamiento del hardware provee un diseño digital con una potencia anteriormente inalcanzable en un solo chip. (Instruments 1988). Dichas características dan paso al empleo de los DSP en diferentes áreas, con la certeza de que estos van a asegurar la rapidez y fiabilidad requerida. Tabla 1-1. Aplicaciones de los DSP Propósitos generales. Propósitos militares. Filtrado digital. Comunicaciones seguras. Convolución. Procesamiento de radares. Correlación. Procesamiento de imágenes. Transformada de Fourier. Navegación.
(21) CAPÍTULO 1. Características generales del Sistema de Vigilancia. Descripción funcional de la tarjeta T 138.. Transformada de Hilber. Guía de misiles. Filtrado adaptativo. Módems de radiofrecuencia. Generación de forma de onda. Sensores. Telecomunicaciones. 11. Control. PBXs digitales. Control robótico. Repetidores de línea. Control de disco duro. Multiplexación de canales. Control de motores. Encriptación de datos Teléfonos celulares Conmutadores de paquetes Aplicaciones como el procesamiento de imágenes, el filtrado digital y la transformada de Fourier po see varias características en común, dentro de ellas: Uso de extensos algoritmos matemáticos Procesamiento en tiempo real Implementación de cálculo de datos Flexibilidad del sistema Para ilustrar estas características, se usará el filtrado digital como ejemplo. Específicamente se empleará el filtro FIR (Finite Impulse Response) que en el dominio del tiempo tiene la siguiente forma: (1) Y(n)- muestreo de salida a(i)- coeficiente ith x(n-i)- muestreo de entrada Algoritmos matemáticos: De la fórmula (1) se puede observar que para generar y(n) se tienen que calcular N multiplicaciones y adiciones o suma de productos. Esto hace necesario el uso de extensos cálculos matemáticos especialmente cuando N es largo. En este punto es de vital importancia darle un significado físico al filtro FIR. Este es una técnica común, usada para eliminar la naturaleza errática de los precios en el mercado. Un modo simple de ajustar los datos.
(22) CAPÍTULO 1. Características generales del Sistema de Vigilancia. Descripción funcional de la tarjeta T 138.. 12. es calculando el valor promedio del cierre de cinco días previos. Para el cálculo del valor promedio diario el viejo valor es decrementado y el más nuevo es adicionado. Cada valor diario será la suma de los valores ponderados de los últimos cinco días donde el factor ponderación (a (i)‟s) es 1/5. La ecuación para determinar el promedio será: (2) donde d(n-i) es el precio del mercado para (n-i) días. La ecuación (2) asume la misma forma de la (1). Esta es la forma general de la convolución de dos secuencias de números, a (i) y x (i). El filtrado FIR y la convolución son fundamentales para el procesamiento digital de señales. Procesamiento en tiempo real: Además de los cálculos matemáticos extensos, los algoritmos del DSP se deben realizar en tiempo real. El tiempo real puede ser definido como un proceso que es realizado por el DSP sin crear una demora notable para el usuario. En aplicaciones de procesamiento digital de señales, los procesos suceden rápido. Un ejemplo es en el procesamiento de imagen, donde es considerado el tiempo real si el procesador termina el procesamiento dentro del periodo de actualización de la trama. Si la información del pixel no puede ser actualizada dentro del período de actualización de la trama, surgen problemas de parpadeo o pérdida de información. Implementación de muestreo de datos: La aplicación debe ser capaz de ser manejada como un sistema de muestreo de datos para ser procesada por procesadores digitales de la señal. Ejemplos de la razón de muestreo para algunas de las aplicaciones típicas son mostrados en la Tabla 1-2: Tabla 1-2. Aplicación vs razón de muestreo Aplicaciones. Razones de muestreo nominales. Control. 1 KHz. Telecomunicaciones. 8 KHz. Procesamiento de voz. 8-10 KHz. Procesamiento de sonido. 40-48 KHz. Razón de tramas de video. 30 KHz. Razón de pixeles de video. 14 MHz.
(23) CAPÍTULO 1. Características generales del Sistema de Vigilancia. Descripción funcional de la tarjeta T 138.. 13. En una aplicación típica DSP, el procesador debe poder manejar eficazmente grandes cantidades de datos muestreados y realizar cálculos aritméticos en tiempo real. Flexibilidad del sistema: El diseño del sistema de procesamiento de la señal debe ser lo suficientemente flexible para permitir mejoras en el estado actual de la tecnología. En el sistema debe haber disponible bastante flexibilidad para tomar en consideración estas variaciones. En muchas de las aplicaciones DSP, las técnicas están todavía en la fase de desarrollo y por eso los algoritmos tienden a cambiar constantemente. Como ejemplo, tenemos el reconocimiento de voz es aún una técnica inexacta requiriendo modificación algorítmica continua. Con este ejemplo se pone de manifiesto la flexibilidad que ha de tener el sistema con el fin de que el algoritmo DSP pueda ser actualizado. Un sistema programable DSP le puede proveer esta flexibilidad al usuario. (Instruments 1990) 1.4 DSP TMS320C67 El DSP TMS320C67 es la familia de DSP de punto flotante en la plataforma de DSP TMS320C6000. El dispositivo TMS320C6701 (C6701) está basado en el alto desempeño y alta velocidad, con una arquitectura VLIW (very-long-instruction-word) introducida por Texas Instruments, haciendo este DSP una excelente opción para aplicaciones multifuncionales y multicanales; entre ellas servidores de acceso remoto (RAS), sistema de telefonía multicanal y sistemas DSL. (Papamichalis and Simar Jr 1998). Esta arquitectura usa unidades de ejecución múltiples que operan en paralelo para ejecutar varias instrucciones durante un ciclo de reloj. El paralelismo es la clave para lograr un alto desempeño, dándole a dicho DSP un lugar más allá de las capacidades de rendimiento de los diseños tradicio nales. (Instruments 2004) Con un desempeño por encima de 1GFLOPS (giga floating-point operations per second) para una razón de reloj de 167 MHz, el „C6701 ofrece soluciones eficientes en base al costo para DSP de alto rendimiento. El DSP C6701 posee la flexibilidad operacional de controladores de alta velocidad y la capacidad numérica de procesadores en serie. Este procesador posee 32 registros de propósitos generales con 32 bits para cada palabra y ocho unidades independientes altamente funcionales. Las 8 unidades funcionales proveen 4 ALUs de punto flotante, 2 ALUs de puntos fijos y 2 multiplicadores de puntos flotantes. El „C6701 puede producir 2 MACs (Multiplicadores y Acumuladores) por ciclo para un total de 334 millones de MACs por segundos.
(24) CAPÍTULO 1. Características generales del Sistema de Vigilancia. Descripción funcional de la tarjeta T 138.. 14. (MMACS). El DSP C6701 posee también un hardware lógico para aplicaciones específicas, un chip de memoria y un chip periférico adicional. El C6701 incluye un banco grande en la memoria del chip y tiene un conjunto de periféricos potentes y diversos. La memoria de programa consiste en un bloque de 64K-byte que es configurable por el usuario. La memoria de datos consiste de dos bloques de 32Kbyte de RAM. El conjunto de periféricos incluye 2 puertos multicanales series (McBSPs), 2 contadores de propósitos generales, una HPI (host-port interface) y una interfaz de memoria externa capaz de interactuar con SDRAM o SBSRAM y con periféricos asincrónicos. El C6701 tiene un conjunto de herramientas las cuales incluyen: un nuevo compilador C, un optimizador ensamblado para simplificar la programación y la esquematización, y una interfaz de Windows para la visibilidad de la ejecución del código fuente. (Papamichalis and Simar Jr 1998). Dentro de los elementos básicos que componen un DSP de es ta familia, se encuentran: Conversores en las entradas y salidas. Memoria de datos, memoria de programa y acceso directo a memoria DMA. MACs: multiplicadores y acumuladores. ALU: Unidades Aritmético-Lógica. Registros. PLL: Lazos de Control de Fase. PWM: Módulos de control de ancho de pulso. A continuación se muestra la Tabla1-3 donde se detallan las características del DSP C6701. (Papamichalis and Simar Jr 1998). Tabla 1-3. Características del DSP C6701 Hardware features Peripherals. Internal program memory. C6701. EMIF. 1. DMA. 4-Channel. Host-Port Interface (HPI). 1. McBSPs. 2. 32-bit timers. 2. Size (Bytes). 64 K.
(25) CAPÍTULO 1. Características generales del Sistema de Vigilancia. Descripción funcional de la tarjeta T 138.. Organization. 15. 64K Bytes Cache/Mapped Program. Frequency. MHz. Cycle Time. Ns. 120, 150, 167 6ns („6701-167); 6.7ns(„6701150); 8.3ns („6701-120). Voltage. Core (V). 1.8 („6701-120, -150). I/O (V). 1.9 („6701-167 only). PLL Options. CLKIN frequencymultiplier. BGA Package. 35 x 35 mm. Process technology. um. Product status. Product Preview (PP) Advance Information (AI). Bypass (x1), x4 352-pin GJC 0.18 um PD. Production Data (PD) 1.4.1 Funcionamiento Se ha dicho que puede trabajar con señales analógicas, pero el DSP es un sistema digital, por lo tanto necesitará un conversor analógico/digital a su entrada y digital/analógico en la salida. Como todo sistema basado en procesador programable necesita una memoria donde almacenar los datos con los que trabajará y el programa que ejecuta. Si se tiene en cuenta que un DSP puede trabajar con varios datos en paralelo y un diseño e instrucciones específicas para el procesado digital, se puede dar una idea de su enorme potencia para este tipo de aplicaciones. Estas características constituyen la principal diferencia de un DSP y otros tipos de procesadores. 1.4.2 Arquitectura La arquitectura de los DSP ha sido pensada para poder realizar la operación MAC (multiplicación + suma con el acumulador) en el menor ciclo de instrucciones posible. Esta operación (MAC) es la base en el Tratamiento Digital de la Señal. Si pensamos en la implementación de un filtro digital tenemos que las operaciones básicas que tenemos que realizar son multiplicaciones y sumas..
(26) CAPÍTULO 1. Características generales del Sistema de Vigilancia. Descripción funcional de la tarjeta T 138.. 16. (3) Para conseguir este resultado, la clásica arquitectura Von Newman ha sido modificada. En esta arquitectura existía un único banco de memoria en el que se encontraba tanto la memoria de programa como los datos. En la arquitectura Harvard, se diferencian la memoria de programa de la de datos. Por tanto, una de las características básicas de los DSP es la existencia de varios bancos de memoria. Otro hecho diferencial es que se pretende que en un único ciclo de instrucción se pueda decodificar la instrucción, traer dos datos de memoria, realizar una operación MAC en la ALU y cargar la siguiente posición de memoria de programa. Para conseguir estos resultados se recurre, aparte de aumentar el número de bancos de memoria, a la existencia de varias unidades de proceso trabajando en paralelo. (Damián 2006). Figura 1.5. Arquitectura Von Newman y Harvard.. (G. Bertini 2003). 1.5 Conclusiones del capítulo. Para el desarrollo de las diferentes tareas en la cabina de dirección de la Estación de Vigilancia, donde el empleo de la tarjeta T138 es de vital importancia, el DSP TMS320C6701GJC150 desempeña un papel.
(27) CAPÍTULO 1. Características generales del Sistema de Vigilancia. Descripción funcional de la tarjeta T 138.. 17. significativo, ya que, dadas sus características, está destinado para la realización de cálculos matemáticos de alta precisión, los que le permitirá a la Estación la detección de blancos, ubicación de las antenas, la rampa de lanzamiento y el disparo, en caso de ser requerido..
(28) CAPÍTULO 2. Estrategia de co-diseño Hardware-Software para DSP con el entorno de 18 Texas Instruments.. CAPÍTULO 2. Estrategia de co-diseño Hardware-Software para DSP con el entorno de Texas Instruments.. En el presente capítulo se realizará una caracterización del diseño HW-SW para el desarrollo de aplicaciones con la tarjeta 138. Se analizará el entorno de trabajo donde se les dará uso a las diferentes herramientas que Texas Instruments ha desarrollado, dado el surgimiento de la familia DSP TMS320C6000. 2.1 Herramientas de desarrollo Texas Instruments ofrece una extensa línea de herramientas de desarrollo para la plataforma de los DSP TMS320C6000, incluyendo herramientas para evaluar el desempeño de los procesadores, generar códigos, implementar algoritmos, y para la integración absoluta y perfeccionamiento de los módulos de hardware y software. Los siguientes productos soportan el desarrollo de aplicaciones para la plataforma DSP C6000: Herramientas de desarrollo de Software Code Composer Studio: incluye un editor C/C++ para la generación de códigos ensamblados, perfecciona las herramientas de desarrollo dimensionables. Incluye también software de tiempo real (DSP/BIOS), el cual tiene en cuenta el tiempo básico de simulación que se necesita para soportar cualquier aplicación de DSP. (Papamichalis and Simar Jr 1998) Herramientas de desarrollo de Hardware Sistema de desarrollo extendido (XDS) Emulador (soporta sistemas microprocesadores DSP) EVM (módulo de evaluación) 2.1.1 Code Composer Studio (CCS) Texas Instruments posee herramientas de desarrollo disponibles que posibilitan un rápido movimiento a través del proceso de diseño de las aplicaciones del DSP desde el concepto, al código, a través del análisis del perfeccionamiento, calibración y puesta a prueba. Muchas de las herramientas son parte del eXpressDSP en tiempo real de Texas Instruments, diseñado para permitir a los innovadores e inventores acelerar el lanzamiento de nuevos productos al mercado y poner en marcha nuevas ideas. Este software.
(29) CAPÍTULO 2. Estrategia de co-diseño Hardware-Software para DSP con el entorno de 19 Texas Instruments.. incluye tres importantes herramientas que les permite a los desarrolladores explotar al máximo el potencial de los DSP TMS320: Herramientas de Code Composer Studio. El software eXpressDSP, que a su vez incluye: Un software dimensionable, en tiempo real: DSP/BIOS Algoritmos estandarizados del DSP TMS320 Referencias de entramados de eXpressDSP Una base creciente de los productos TI basados en DSP incluyen productos del eXpressDSP, que son flexibles y por tanto pueden ser integrados fácilmente dentro de los sistemas . (Instruments 2004) 2.1.2 DSP/ BIOS Las herramientas de configuración del DSP/ BIOS sirven como un editor visual de propósitos especiales para la creación y asignación de atributos a los objetos kernel con tiempo de ejecución individual emplead os por la tarjeta del programa de aplicación conjuntamente con las llamadas del API DSP/ BIOS. Las herramientas de configuración proveen a los desarrolladores la habilidad, para estáticamente, declarar y configurar los objetos kernel del DSP/BIOS durante el desarrollo de programa, en vez de durante la ejecución de este. Sin embargo, los objetos dinámicamente creados requieren un código adicional para soportar las operaciones dinámicas. Los objetos estáticamente declarados minimizan la impresión en memoria ya que no incluyen los códigos adicionales creados. (Instruments 2004) 2.2 Flujos de trabajo Para la implementación de algoritmos y el diseño en CCS se necesita tener en cuenta varios aspectos, entre ellos, la creación de un flujo de trabajo que facilite el desarrollo de códigos a cualquier programador o creador. El flujo de trabajo de la mayoría de las aplicaciones basadas en DSP consiste de cuatro fases principales: diseño de la aplicación, creación del código, la eliminación de los errores del programa y el análisis..
(30) CAPÍTULO 2. Estrategia de co-diseño Hardware-Software para DSP con el entorno de 20 Texas Instruments.. Code Composer Studio (CCS) es la clave del software eXpressDSP de Texas Instruments, el cual integra muchas de las herramientas necesarias para asistir al creador durante la revelación del flujo de trabajo. (Instruments 2004). Figura 2.1 Fases del flujo de trabajo. Los flujos de trabajo tradicionales en la industria del DSP han implicado la validación de un modelo de C para la precisión en una PC o una estación de trabajo, luego cuidadosamente se exporta ese código al lenguaje ensamblador de C. Este proceso tiende a encontrar dificultades que pued en provenir de mantener el código sobre varios proyectos. El flujo recomendado implica utilizar las herramientas de la generación de código C6000 para la optimización en vez de obligar al programador a usar lenguaje ensamblador. De aquí que todo el trabajo difícil le corresponda al compilador y permite que el programador enfoque su atención en conseguir el producto para comercializarlo rápidamente. En la Figura 2.2 se muestra el flujo de desarrollo de código que, si se tiene en cuenta a la hora de escribir un código C6000 y de rectificar sus errores, mejorará el desempeño del programador. (Instruments 2000). 2.3 Optimización del desempeño. Para optimizar el desempeño de C/C++ se pueden emplear las opciones del compilador o las transformaciones que se le puedan hacer al código. Para poner en práctica lo antes expuesto es necesario conocer cómo escribir un código C/C++, conocer las características del compilador y cómo mejorarlo..
(31) CAPÍTULO 2. Estrategia de co-diseño Hardware-Software para DSP con el entorno de 21 Texas Instruments.. 2.3.1 Escritura de códigos C/C++ Para escribir un código en C/C++ es necesario tener en cuenta el tamaño del dato que se va emplear; en el caso del compilador C6000, el tamaño de los datos se define por el tipo de dato. A continuación se muestran algunos ejemplos: char--------8bits short-------16bits float--------32bits double-----64bits. Figura 2.2. Flujo de desarrollo de código para incrementar el desempeño.
(32) CAPÍTULO 2. Estrategia de co-diseño Hardware-Software para DSP con el entorno de 22 Texas Instruments.. Basado en el tamaño de los datos según su tipo, el programador debe utilizar determinadas instrucciones que le facilitaran el trabajo, y a la hora de rectificar o depurar el código, los errores detectados serán ínfimos. A continuación se muestran algunas de estas instrucciones: Para la multiplicación de puntos fijos, siempre que sea posible se debe usar los datos de tipo short, ya que este tipo de datos provee el uso más eficiente del multiplicador de 16bits del C6000. Para los contadores de bucles, se debe usar los datos de tipo int o unsigned int en vez de short o unsigned short, con el objetivo de evitar el uso instrucciones innecesarias. Evite códigos que asuman que los tipos de int y long son del mismo tamaño, porque para el compilador C6000 los datos de tipo long son para operaciones de 40bits. Luego de escribir el código aplicando las instrucciones antes mencionadas, se debe hacer un análisis de cada una de sus regiones, su simulación o depuración con las diferentes herramientas que CCS provee. Para realizar este análisis se pueden emplear las siguientes técnicas: Una de las mediciones preliminares del código es el tiempo que este demora en compilarse. Por ello se hace uso de las funciones clock () y printf () de C/C++para temporizar y mostrar el desarrollo de cada región del código. Usar el modo perfil de un único simulador Esto puede ser ejecutado por la compilación del código mediante la opción –mg y la ejecución de load6x con la opción –g. Habilitar el reloj y usar puntos de análisis para correr el programa con el objetivo de obtener los ciclos de reloj consumidos en cada región del código Las áreas críticas de desarrollo en el código son la de los lazos más grandes. La forma más fácil de optimizar un lazo es mediante la extracción de este y separar los archivos que puedan ser reescritos y recompilados para luego simularlos con load6x. 2.3.2 Características del compilador El compilador C6000 ofrece soporte de lenguaje de alto nive l transformando su código C/C++ en un código fuente más eficiente. Las operaciones del compilador son controladas por diferentes opciones; recomendadas para eliminar los fallos que pueda tener el código. A continuación en la Tabla 2-1 se muestran algunos ejemplos de las opciones, es importante tener en cuenta que algunas de ella son.
(33) CAPÍTULO 2. Estrategia de co-diseño Hardware-Software para DSP con el entorno de 23 Texas Instruments.. obsoletas o pretendidas para depurar, y potencialmente podrían disminuir el desempeño e incrementar el tamaño del código. (Instruments 2000) Tabla 2-1. Ejemplos de opciones del compilador Opciones. Descripción. Opciones del compilador para evitar función de código crítico. –g/–s/ –ss/–mg. Estas opciones limitan la optimización haciendo más extenso el tamaño del código y una ejecución más lenta.. Opciones del compilador para el desempeño –mh<n>§ –mhh. Permite ejecución especulativa. La cantidad apropiada de relleno debe estar disponible en memoria de datos para garantizar una ejecución correcta.. Opciones del compilador para códigos de control –ms2–ms3. Optimiza primero el tamaño del código y luego el desempeño.. Opciones del compilador para información –k. Mantiene el archivo ensamblado para que se pueda. inspeccionar. y. analizar. la. retroalimentación del compilador. Esta opción no tiene impacto en el desempeño o en el tamaño de código..
(34) CAPÍTULO 2. Estrategia de co-diseño Hardware-Software para DSP con el entorno de 24 Texas Instruments.. 2.3.2.1 Dependencia con la memoria. Para maximizar la eficiencia del código, el compilador e squematiza en paralelo tantas instrucciones como le sea posible. Esto crea una dependencia entre las instrucciones, o sea una instrucción debe ocurrir antes que otra; y, como solo las instrucciones independientes pueden ejecutarse en paralelo, la dependencia impide el paralelismo. En caso de que el compilador no pueda determinar que dos variables son independientes, asume una dependencia y escribe dos instrucciones secuencialmente. En caso de determinar que son independientes, éste las esquematiza en paralelo. 2.3.3 Análisis del código. Para darle forma al código existen varios métodos, entre ellos, la utilización del simulador load6x. Este simulador posee dos formas de aplicación; una de ellas en el caso en el que se esté interesado en el perfil de todas las funciones de la aplicación, donde se puede usar la opción –g. Si se tiene interés de llevar la cuenta del ciclo de una o dos funciones, o de una región de código dentro de una función particular, se puede usar las llamadas para la función clock() (mante nidas por load6x) para cronometrar esas funciones particulares o las regiones de código. 2.3.3.1 Opción –g de load6x Apelando al load6x con la opción -g se corre en el simulador independiente el modo de perfilar. Los archivos originarios deben ser compilados con la opción para perfilar –mg, para trabajar en el simulador independiente. Los resultados del perfil son almacenados en un archivo llamado con el mismo nombre del archivo con extensión .out, pero variando la extensión a .vaa. En caso de usar la opción para perfilar –mg al compilar y acoplar el archivo example.out, es conveniente el empleo de la opción –g para crear un archivo, en el cual se podrán observar los resultados perfilados. 2.3.3.2 Opción clock () para el perfil de simulación. Para obtener información de la cuenta del ciclo para una función o una región determinada del código con el simulador independiente, se recomienda la utilización de la opción clock () en el código C. La incorporación de la opción clock () se puede realizar de la manera q ue se muestra a continuación..
(35) CAPÍTULO 2. Estrategia de co-diseño Hardware-Software para DSP con el entorno de 25 Texas Instruments. #include<stdio.h> #include<time.h> main(intargc,char*argv[]){ constshortcoefs[150]; shortoptr[150]; shortstate[2]; constshorta[150]; constshortb[150]; int c = 0; intdotp[1]={0}; int sum= 0; shorty[150]; shortscalar=3345; constshortx[150]; clock_tstart,stop,overhead; start=clock(); stop=clock(); overhead=stop–start; start=clock(); sum = mac1(a, b, c, dotp); stop=clock(); printf(”mac1cycles:%d\n”,stop–start–overhead); start=clock(); vec_mpy1(y,x,scalar); stop=clock(); printf(”vec_mpy1cycles:%d\n”,stop–start–overhead); start=clock(); iir1(coefs,x,optr,state); stop=clock(); printf(”iir1cycles:%d\n”,stop–start–overhead); }.
(36) CAPÍTULO 2. Estrategia de co-diseño Hardware-Software para DSP con el entorno de 26 Texas Instruments.. 2.4 Perfeccionamiento del código C/C++ Para obtener ganancias en el desempeño del código C/C++ se debe realizar un refinamiento o perfeccionamiento del código creado en las siguientes áreas: Utilizando funciones especiales para reemplazar los códigos más complicados de C/C++. Usando acceso de palabra para manejar datos de 16-bit almacenados en las partes altas y bajas de un registro de 32 bits. Programando manualmente a partir de la creación de una secuencia adecuada de las instrucciones de manera que se garantice un mayor paralelismo. Utilizando doble acceso para operar en datos de 32 bits almacenados en un regi stro de 64 bits (solamente para ' C64x y ' C67x). (Instruments 2000) 2.4.1 Utilización de funciones especiales El compilador C6000 provee funciones especiales que optimizan su código C/C++. El uso de estas funciones facilita las operaciones, reduciendo las instrucciones que no están fácilmente expresadas en el código C/C++. En algunas ocasiones una función especial específica correspondiente a las instrucciones del lenguaje ensamblador no puede ser utilizada por el compilador. En este caso, el significado del programa no varía. (Instruments 2001). En la Tabla 2-2 se muestran algunos ejemplos de funciones especiales para el TMS320C6700. Tabla 2-2. Ejemplos de funciones especiales del compilador C/C++ para el TMS320C6700 Funciones especiales. Lenguaje ensamblador. Descripción. DPINT. Converts 64-bit double to 32-bit signed. del compilador C int_dpint(double). integer, using the rounding mode set by the CSR register. uint_ftoi(float). Reinterprets the bits in the float as an unsigned integer. (Ex: _ftoi(1.0) == 1065353216U). double_rcpdp(double). RCPDP. Computes the approximate 64-bit double.
(37) CAPÍTULO 2. Estrategia de co-diseño Hardware-Software para DSP con el entorno de 27 Texas Instruments.. reciprocal. double _rsqrdp(double. RSQRDP. src); C67x. Computes the approximate 64-bit double reciprocal square root.. 2.4.2 Acceso de palabra para datos pequeños. El C6000 tiene instrucciones con funciones especiales correspondientes como lo son add2 (), _mpyhl ( ), _mpylh ( ), que operan en datos de 16bits almacenados en la parte baja y alta de un registro de 32 bits. Cuando opera en una cadena de datos pequeños, se puede hacer uso del acceso de palabra (int) para leer dos valores al mismo tiempo y luego usar el ´C6x. Conocer el tipo de datos que se le está pasando a cada función puede mejorar el desempeño considerablemente, siendo a la vez útil a la hora de escribir funciones diferentes que manipulan diferentes tipos de datos. Si los datos pequeños siempre operan en arreglos alineados en palabra, incluso enumeradas, entonces el desempeño de la aplicación puede ser mejorado. 2.4.2.1 Acceso de Palabra en el producto punto a punto Otras funciones especiales útiles para la lectura de datos pequeños como palabras son las funciones especiales de multiplicación. En el ejemplo que se muestra a continuación se hace uso de las funciones – mpyh () y -mpy (). La función -mpyh () usa la instrucción MPYH del C6000 la cual multiplica los 16 bits de la parte baja de dos registros dando como resultado 32 bits. En este ejemplo se emplean dos variables de suma (sum1 y sum2); podemos percatarnos que la utilización de una sola variable de suma inhibe el paralelismo por lo que se crea una dependencia entre lo escrito del primer cálculo y la lectura del segundo.. intdotprod(const short *a, const short *b, unsigned int N) { int i, sum1 = 0, sum2 = 0; const int *i_a = (const int *)a; const int *i_b = (const int *)b; for (i = 0; i < (N >> 1); i++).
(38) CAPÍTULO 2. Estrategia de co-diseño Hardware-Software para DSP con el entorno de 28 Texas Instruments. { sum1 = sum1 + _mpy (i_a[i], i_b[i]); sum2 = sum2 + _mpyh(i_a[i], i_b[i]); } return sum1 + sum2; }. 2.4.2.2 Acceso de palabra en filtro FIR Un filtro FIR puede ser optimizado con lectura de palabras de datos pequeños y de funciones de multiplicación. La versión optimizada pasa un arreglo int en lugar de lanzar los arreglos pequeños y, por consiguiente, las ayudas aseguran que los datos pasados a la función sean alineados en palabra. Suponiendo que un prototipo es usado, cada llamada a la función asegura que los arreglos son alineados en palabra obligándole a usar arreglos int que contienen datos pequeños. 2.4.3 Procesamiento por lote el software El procesamiento por lote del software es una técnica usada para programar instrucciones desde un lazo, a fin de que las múltiples iteraciones del lazo se ejecuten en paralelo. Cuando se usan las opcio nes del compilador –o2 y –o3, el compilador intenta procesar por lote el código con información que proviene del programa. En la Figura 2-3 se ilustra un lazo procesado por lote. El estado de los lazos son representados por A, B, C, D y E. La figura muestra que pueden ser ejecutadas al mismo tiempo un máximo de cinco iteraciones en el lazo..
(39) CAPÍTULO 2. Estrategia de co-diseño Hardware-Software para DSP con el entorno de 29 Texas Instruments.. A1 B1. A2. C1. B2. A3. D1. C2. B3. A4. E1. D2. C3. B4. A5. E2. D3. C4. B5. E3. D4. C5. E4. D5. Pipelined-loop prolog Kernel. Pipelined-loop epilog. E5 Figura 2.3. Lazo de procesamiento por lote del Software. 2.4.3.1 Lazos redundantes. Todo lazo itera un número de veces antes de que el lazo termine. El número de iteraciones es llamado cuenta de recorrido y la variable usada para contar cada iteración es el contador de recorrido. Cuando el contador de recorrido alcanza un límite igual a la cuenta de recorrido, el lazo termina. Las herramientas de C´6000 usan la cuenta de recorrido para determinar si puede o no un lazo ser procesado por lote. La cuenta mínima de recorrido para un lazo del procesamiento por lote del software es determinada por el número de iteraciones que se ejecuten en paralelo. (Instruments 2001) 2.4.3.2 Eliminación de los lazos redundantes. En ocasiones el compilador no puede determinar si el lazo ejecuta más que la cuenta de recorrido mínima. Por consiguiente, el compilador generará dos versiones del lazo, una que ejecuta si la cuenta de recorrido es menor que la cuenta segura mínima de recorrido y otra que ejecuta si la cuenta de recorrido es igual o mayor que la cuenta segura mínima de recorrido. Obviamente, los lazos redundantes dañarán el tamaño del código y en menor grado, el desempeño. Para indicarle al compilador que no se requiere el uso de las dos versiones de lazos, se hace uso de las opciones –ms0 o –ms1. El compilador generará la segunda versión del lazo solo si este puede probar que la.
(40) CAPÍTULO 2. Estrategia de co-diseño Hardware-Software para DSP con el entorno de 30 Texas Instruments.. cuenta del recorrido mínimo será siempre igual o mayor que la cuenta de recorrido mínima efectiva. En caso contrario se aplicará la otra versión. 2.5 Conclusiones del capítulo. Texas Instruments ha sido capaz de poner en el mercado herramientas eficientes para el desarrollo y análisis de códigos. Code Composer Studio se muestra como una de ellas, la cual, además de la creación de códigos, permite el análisis y perfeccionamiento de los mismos. Para ello solo es necesario el conocimiento de aspectos como el tamaño de los datos, las características del compilador, las diferentes opciones que el compilador ofrece, las funciones especiales utilizadas para el perfeccionamiento del código, entre otros, que le van a permitir al programador el desarrollo de un código eficiente y flexible..
(41) CAPÍTULO 3 Ingeniería inversa a los algoritmos implementados en el DSP. Descripción de las operaciones matemáticas. 31. CAPÍTULO 3 Ingeniería inversa a los algoritmos implementados en el DSP. Descripción de las operaciones matemáticas. En el siguiente capítulo se realizará una descripción técnico -funcional del DSP TMS320C6701GJC150 de la tarjeta 138. Además se realizará un análisis de los diferentes algoritmos matemáticos modelados en dicho procesador, mediante el proceso de ingeniería inversa, y se les dará un significado dentro de las operaciones que se realizan en la cabina de dirección. 3.1 Ingeniería Inversa. En la Estación de Vigilancia la principal problemática que se ha presentado, hasta el momento, ha sido el desconocimiento de la funcionalidad de la tarjeta T138, teniendo noción solo de los esquemas electrónicos y de los códigos fuentes de los componentes programables. Dada la situación planteada, la vía más eficaz para obtener la funcionalidad de dicha tarjeta, y, del componente programable DSP TMS320C6701GJC150 es la aplicación de un proceso de ingeniería inversa a los códigos fuente. La ingeniería inversa tiene como misión la recuperación del diseño de una aplicación a partir del código. Este proceso se realiza principalmente mediante herramientas que extraen información de los datos, procedimientos y arquitectura del sistema existente. El núcleo de la ingeniería inversa es una actividad denominada extracción de abstracciones, donde el ingeniero debe evaluar el viejo programa, y, a partir del código fuente (que no suele estar documentado) tiene que extraer una especificación significativa del procesamiento que se realizará. La información extraída de la lectura del código fuente son las especificaciones de diseño: modelos de flujo de control, diagramas de diseño, documentos de especificación de diseño, pudiendo tomarse estas especificaciones como nuevo punto de partida para aplicar ingeniería inversa y obtener información a mayor nivel de abstracción. La ingeniería inversa es aplicable en sistemas con las siguientes características: Documentación inexistente o totalmente obsoleta. Inexistencia de documentación interna en los programas, o bien esta es incomprensible. Programación en bloques de códigos muy grandes y/o sin estructurar. La aplicación está sujeta a cambios frecuentes, que pueden afectar parte del diseño. Se prevé que la aplicación pueda tener aun larga vida..
(42) CAPÍTULO 3 Ingeniería inversa a los algoritmos implementados en el DSP. Descripción de las operaciones matemáticas. 32. 3.1.1 Proceso de ingeniería inversa. El proceso de ingeniería inversa se representa en la Figura 3.1.. Figura 3.1. Proceso de ingeniería inversa.. Antes de que puedan comenzar las actividades de ingeniería inversa, el código fuente no estructurado se reestructurará. Esto hace que el código fuente sea más fácil de leer, y es lo que le proporciona la base para todas las actividades subsiguiente de ingeniería inversa. (Pressman R. 2002) 3.2 Análisis de los códigos. Para hacer un correcto análisis de cada una de las fórmulas que se encuentran documentadas en los códigos fuentes, es importante señalar el sistema geométrico y el sistema de unidades empleado. El sistema geométrico al que se hace referencia en los códigos es al sistema de coordenadas rectangulares y esféricas, tomando como punto de medición o centro el punto donde se ubica la Estación (la cabina PV). Desde ese punto se miden las coordenadas del blanco y del cohete que quedan caracterizadas por un azimut o coordenada esférica por el plano horizontal, un ángulo de elevación o coordenada esférica por el plano.
(43) CAPÍTULO 3 Ingeniería inversa a los algoritmos implementados en el DSP. Descripción de las operaciones matemáticas. 33. vertical y una distancia o dimensión del espacio, en línea recta, entre la estación y la posición del blanco o del cohete. En muchos casos se habla también de altura del blanco referida al sistem a de coordenadas rectangulares. En la siguiente figura se muestran los sistemas antes mencionados.. Figura 3.2. Sistemas de coordenadas rectangulares y esféricas.. El sistema de unidades empleado es el m, k, s. 3.2.1 Autolauncher. C Constantes:. Donde: Vtar0- velocidad inicial del blanco. Rtar- distancia al punto de encuentro del blanco. Rtar0- distancia inicial al punto de encuentro del blanco ..
(44) CAPÍTULO 3 Ingeniería inversa a los algoritmos implementados en el DSP. Descripción de las operaciones matemáticas. Donde: Vtar- velocidad del blanco.. Donde:. - se emplea para la conversión de grados a radianes.. 34.
(45) CAPÍTULO 3 Ingeniería inversa a los algoritmos implementados en el DSP. Descripción de las operaciones matemáticas. 35. Donde: Htar- altura del blanco. Donde: Rout- límite lejano. Posteriormente se compara el valor de la velocidad del blanco con 0, en caso de ser mayor, la velocidad toma un valor de 1000, de lo contrario el valor será -1000. En efecto se ha tomado convencionalmente que si el blanco se acerca, la velocidad que se calcula es positiva y si se aleja, la velocidad tenga signo negativo. Eso es para saber rápidamente si el blanco que se capturó y está en seguimiento se acerca o se aleja; es decir, si el tiro es al encuentro o al alcance.. Donde: Veps- velocidad por epsilom. Donde: V0- velocidad de movimiento. Donde: P- parámetro del blanco.. Donde: Vrocket- velocidad del cohete.
(46) CAPÍTULO 3 Ingeniería inversa a los algoritmos implementados en el DSP. Descripción de las operaciones matemáticas. 36. Rmeet- distancia al punto de encuentro.. Luego de tener determinada la distancia al punto de encue ntro, se emplea la variable booleana TT haciendo referencia al Método de tres puntos. Este método se emplea para la conducción del cohete hasta el blanco. En caso de ser verdadera la variable booleana, se realizarán los siguientes cálculos.. En caso de que el valor absoluto de la velocidad del blanco sea menor que 300 sucederá que:. En caso de no ser así:. En caso de que la variable booleana TT sea Falsa los valores de D2, D3 y D4 se verán modificados de la siguiente forma:. D3=1.154*Htar. (25). Podemos resumir que en este código se realizan los algoritmos matemáticos correspondientes a los datos iniciales para el tiro. Estos datos se muestran a continuación. Velocidad del blanco (Vtar)..
Figure
+7
Outline
Documento similar