Ingeniería inversa al componente programable fpga ep2c70f896c8 de la tarjeta t139
78
0
0
Texto completo
(2) Universidad Central “Marta Abreu” de Las Villas Facultad de Ingeniería Eléctrica Departamento de Electrónica y Telecomunicaciones. Ingeniería inversa al componente programable FPGA EP2C70F896C8 de la tarjeta T139 Tesis presentada en opción al Título Académico. Autor: Ronny Díaz Martínez E-mail: [email protected] Tutor: Ing. Yakdiel Rodríguez-Gallo Guerra E-mail: [email protected]. Santa Clara 2013 “Año 55 de la Revolución”.
(3) Hago constar que el presente trabajo de diploma fue realizado en la Universidad Central “Marta Abreu” de Las Villas como parte de la culminación de estudios de la especialidad de Ingeniería en Telecomunicaciones y Electrónica, 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 publicado 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. Firma del Responsable de Información Científico-Técnica.
(4) iv. PENSAMIENTO. “Nadie es tan sabio como se cree ni tan tonto como los demás piensan” Dulce María Martínez.
(5) v. DEDICATORIA. A mis padres, por sus enseñanzas y dedicación, por siempre transmitirme sus experiencias. A mi abuela Chichí. A mi hermano, por pensar en mí primero que en él, como yo también lo hago..
(6) vi. AGRADECIMIENTOS A mi novia Liena, por entregarme su amor y estar a mi lado en estos momentos. A mis amigos del barrio Rafelito, Danielito y Lisblel. A Issaka, por acogerme como un hermano. A mis compañeros de aula Erick, Vargas y Palito, por considerarlos amigos. A mi tutor Yakdiel, por brindarme su amistad y ayudarme en la realización de este trabajo. A todos los profesores que han contribuido en mi formación hasta los días de hoy. A los muchachos del Centro de Cálculo de la UCLV por recibirnos en su laboratorio con amabilidad. Gracias..
(7) vii. TAREA TÉCNICA Para confeccionar el presente trabajo y alcanzar los resultados esperados, fue necesario elaborar las tareas técnicas siguientes: •. Caracterización de los FPGA y los Lenguajes de Descripción de Hardware para conocer sus particularidades.. •. Identificación de procedimientos que se utilizan en el mundo para realizar la ingeniería inversa de sistemas programados en FPGA.. •. Descripción del funcionamiento general del Complejo Volga, especificando el trabajo imitado dentro de la Estación de Conducción de Cohetes.. •. Identificación de las funciones y componentes de la tarjeta T139, para realizar una caracterización del FPGA EP2C70F896C8 perteneciente a dicha tarjeta.. •. Caracterización de la herramienta de simulación Quartus II para emplearla en la ingeniería inversa.. •. Exposición de la formación de las señales de los blancos y cohetes imitados, así como las envolventes de video de los blancos en la tarjeta T139, a partir del análisis del código fuente; comprobándose los resultados a través de la simulación con la herramienta Quartus II.. •. Elaboración del informe final del Trabajo de Diploma.. __________________ Firma del Autor. _______________ Firma del Tutor.
(8) viii. RESUMEN. La presente investigación se dedica a explicar el funcionamiento de la tarjeta T139, a partir de la realización de ingeniería inversa al código fuente presente en el componente programable de dicha tarjeta. Para lograr lo anteriormente expuesto, se caracterizó la arquitectura general de los FPGA, y los Lenguajes de Descripción de Hardware (HDL) empleados en la programación de los mismos. Además, se identificó la ingeniería inversa de software, como procedimiento aplicado a sistemas programados en FPGA, al igual que se determinó las funciones de la tarjeta T139 dentro del complejo Volga, encargada del entrenamiento de los operadores y del control funcional de la estación. También se caracterizó el componente programable de dicha tarjeta, el cual pertenece a la familia Cyclone II de Altera, y la herramienta de simulación Quartus II, empleada en la realización de la ingeniería inversa. Como resultado de la investigación se explican la formación de las señales imitadas de los blancos y los cohetes, y las envolventes de video de los blancos; y se proponen modificaciones al código para corregir fallas detectadas y mejorar el entrenamiento de los operadores de la Estación de Conducción de Cohetes. Con la realización de este trabajo se llegó a la conclusión de que la tarjeta T139 es capaz de imitar tres blancos y tres cohetes, propiciar la interferencia de los blancos en los indicadores a través de las envolventes de video, y representar enmascaramientos y alineaciones de blancos enemigos..
(9) ix. ÍNDICE. INTRODUCCIÓN ........................................................................................................................... 11 CAPÍTULO 1.. LA. UTILIZACIÓN. DE. LA. INGENIERÍA. INVERSA. EN. LAS. PROGRAMACIONES DE LOS FPGA........................................................................................... 15 1.1.. Principales características de los FPGA ............................................................................ 15. 1.2.. Lenguajes HDL utilizados para programar FPGA ............................................................ 19. 1.2.1.. Principales características del código AHDL ............................................................ 21. 1.2.2.. Principales características del código VHDL ............................................................ 22. 1.2.. Procedimientos utilizados para la realización de la ingeniería inversa en FPGA ............. 23. 1.3.1.. Características principales de la ingeniería inversa de software ................................ 24. CAPÍTULO 2. 2.1.. LOS FPGA EN EL COMPLEJO VOLGA ......................................................... 27. El complejo Volga en la defensa del país .......................................................................... 27. 2.1.1.. Regímenes de la Estación de Conducción de Cohetes ............................................... 30. 2.1.2.. Descripción del funcionamiento del imitador de la ECC........................................... 31. 2.1.3.. Características principales de la tarjeta T139 ............................................................. 33. 2.2.. Características de la familia Cyclone II de la compañía Altera ........................................ 36. 2.2.1. 2.3.. Principales prestaciones de la FPGA EP2C70F896C8 .............................................. 36. Caracterización de la herramienta de simulación Quartus II............................................. 37.
(10) x. CAPÍTULO 3.. OBTENCIÓN. DE. LA. FUNCIONALIDAD. DE. BLOQUES. ESQUEMÁTICOS DEL CÓDIGO FUENTE DEL COMPONENTE PROGRAMABLE DE LA TARJETA T139…... ........................................................................................................................ 39 3.1.. Señales de entrada al FPGA de la tarjeta T139 ................................................................. 39. 3.2.. Descripción de bloques lógicos implicados en la formación de las señales imitadas ....... 40. 3.2.1.. Características del bloque taget_roket_imp ............................................................... 41. 3.2.2.. Características de bloque rom_t_p ............................................................................. 50. 3.2.3.. Características de los bloques AD_OK y ck_kontrol ................................................ 55. 3.3.. Propuestas de modificaciones del código para mejorar el trabajo imitado ....................... 56. 3.3.1.. Corrección del código del bloque RROKET ............................................................. 57. 3.3.2.. Corrección de la representación del cohete imitado en escala de 150 Km ................ 58. 3.3.3.. Propuesta de adición de blancos para los entrenamientos de los operadores ............ 60. 3.3.4.. Introducción de información a la comunicación serie ............................................... 62. CONCLUSIONES Y RECOMENDACIONES ............................................................................... 66 REFERENCIAS BIBLIOGRÁFICAS ............................................................................................. 68 ANEXOS.......................................................................................................................................... 71 A. I. Bloque esquemático rom_t_p. ........................................................................................... 71 A. II.. Código corregido del bloque RROKET......................................................................... 71. A. III.. Fragmento del reporte de simulación y código del bloque ro_roket_150. .................... 73. A. IV.. Utilización de los recursos de la FPGA EP2C20F256C8 con el nuevo diseño. incluyendo las modificaciones propuestas en el capítulo 3. ......................................................... 77 A. V.. Asignación de entradas al número de trama para la transmisión serie. ......................... 77. A. VI.. Asignación de las tramas a las salidas en el receptor. ................................................... 78.
(11) INTRODUCCIÓN. Los cambios presentados por la era de la información y las amenazas enemigas en desarrollo, sugieren que la innovación no sólo es deseable, sino también necesaria dentro de las organizaciones encargadas de la defensa nacional. La innovación puede emplear nuevos medios de tecnología, o utilizar tecnología antigua de manera que contrarreste en forma efectiva la estrategia del adversario (Air & Space Power, 2013). Actualmente la Defensa Antiaérea y la Fuerza Aérea Revolucionaria (DAAFAR) se encuentran modernizando la técnica de guerra en lugar de reemplazarla, debido a que el encarecimiento de los nuevos sistemas de combate está llevando a optar por la renovación de sus viejos equipos para alargar sus vidas operativas. Dentro del programa de modernización y desarrollo del armamento, que lleva a cabo la DAAFAR, se encuentra la estación de vigilancia del espacio aéreo S75MK102 Volga a la cual se le digitalizó la cabina de mando, pues anteriormente estaba implementada con antiguos sistemas analógicos que se caracterizaban por sus grandes dimensiones; lo que dificultaba el desplazamiento en el terreno de combate (Pierrat, 2010). En la cabina de mando digitalizada hay un total de dieciocho tarjetas funcionales, de las cuales cinco (denominadas T138, T139, T232, T335 y T811) están implementadas con electrónica programada en circuitos impresos de cuatro capas, pero no se tienen los esquemas electrónicos y solo se conoce su destinación, no así su funcionamiento interno. Las trece restantes se implementan con electrónica analógica y digital, y están totalmente documentadas(Pierrat, 2010). Las tarjetas implementadas con electrónica programada emplean como dispositivo programable los FPGA (Arreglos de Compuertas Lógicas Programables). Estos surgen como una evolución de los CPLD (Dispositivos Lógicos Programables Complejos) y son cada vez más usados en la industria electrónica debido a su bondad de reconfiguración; lo cual minimiza la necesidad de realizar.
(12) INTRODUCCIÓN. 12. modificaciones de hardware durante actualizaciones tecnológicas a un diseño y a su capacidad para ejecutar operaciones de forma paralela (Bozich, 2005). El desconocimiento de cómo se. procesan las señales en el interior de las cinco tarjetas. implementadas con electrónica programada ha obstaculizado la solución de problemáticas presentadas en la cabina de mando, tales como corrección de algunas fallas o el ajuste de las prestaciones del complejo Volga según las necesidades tácticas de las DAAFAR. A pesar de esta situación el complejo coheteril se encuentra en completa disposición combativa (Pierrat, 2010). Aprovechando la oportunidad de tener los códigos fuentes que están en los componentes programables de las tarjetas y conociendo el formato de solo algunas señales de entrada presentes en sus conectores, es posible, mediante la ingeniería inversa al hardware programado, obtener la funcionalidad de las mismas (Pierrat, 2010). La aplicación de ingeniería inversa no cambia la funcionalidad del software sino que es el proceso mediante el cual una tecnología o producto es analizado, con el fin de conocer los componentes que lo integran y la forma en que interactúan, para lograr comprender su modo de funcionamiento hasta el punto que se pueda llegar a modificar y mejorar, con el objetivo probable de construir una tecnología similar (Aguirre, 2013). El presente trabajo pretende descifrar los algoritmos de funcionamiento interno de la tarjeta T139 para facilitar su futura modificación y desarrollo en la DAAFAR; lo cual se trae como beneficio un ahorro económico, de ahí la importancia que tiene la realización de esta investigación. Teniendo en cuenta lo anterior, en el presente trabajo se plantea el siguiente problema de investigación: ¿Qué hacer para obtener la funcionalidad de la tarjeta T139 a partir del código fuente que se encuentra en el componente programable FPGA EP2C70F896C8 para su futura modificación y desarrollo en la DAAFAR? La investigación tiene como objeto de estudio el código fuente del componente programable FPGA EP2C70F896C8 de la tarjeta T139 y el campo de acción lo constituye la obtención del funcionamiento de la tarjeta T139 para su futura modificación y desarrollo en la DAAFAR..
(13) INTRODUCCIÓN. 13. Para dar respuesta al problema de investigación se propone como objetivo general: Obtener por ingeniería inversa la funcionalidad del código fuente del componente programable FPGA EP2C70F896C8 de la tarjeta T139 para su futura modificación y desarrollo en la DAAFAR. Partiendo del objetivo general se derivan los siguientes objetivos específicos: •. Caracterizar los FPGA y los Lenguajes de Descripción de Hardware para conocer sus particularidades.. •. Identificar procedimientos que se utilizan para realizar la ingeniería inversa de sistemas programados en FPGA.. •. Describir el funcionamiento general del complejo Volga, especificando el trabajo imitado dentro de la Estación de Conducción de Cohetes.. •. Identificar funciones y componentes de la tarjeta T139, para realizar una caracterización del FPGA EP2C70F896C8 perteneciente a dicha tarjeta.. •. Caracterizar la herramienta de simulación Quartus II para emplearla en la ingeniería inversa.. •. Exponer la formación de las señales de los blancos y cohetes imitados, así como las envolventes de video de los blancos en la tarjeta T139 a partir del análisis del código; comprobando los resultados a través de la simulación con la herramienta Quartus II.. De los objetivos específicos surgen las siguientes interrogantes científicas: •. ¿Qué características poseerán los FPGA, así como los Lenguajes de Descripción de Hardware utilizados en su programación?. •. ¿Qué procedimientos de ingeniería inversa utilizar para obtener la funcionalidad de la tarjeta T139 a partir del código fuente?. •. ¿Qué características poseen la tarjeta T139 del complejo Volga y la FPGA EP2C70F896C8 de la familia Cyclone II de la compañía Altera?.
(14) INTRODUCCIÓN. •. 14. ¿Cuáles son las prestaciones que brinda el software Quartus II para realizar la ingeniería inversa de los sistemas programados, a partir de la tenencia del código fuente?. •. ¿Qué hacer para identificar el funcionamiento de los bloques esquemáticos en el código fuente del componente programable de la tarjeta T139?. El informe se ha estructurado de la siguiente manera: introducción, tres capítulos, conclusiones, recomendaciones, referencias bibliográficas y anexos. El primer capítulo aborda las características generales de los FPGA y ofrece una introducción a los Lenguajes de Descripción de Hardware (HDL) empleados en la programación del FPGA EP2C70F896C8 perteneciente a la tarjeta T139, así como se presentan procedimientos utililizados en la realización de ingeniería inversa de software. En el segundo capítulo se describe el funcionamiento general del complejo Volga, se identifican las funciones y componentes de la tarjeta T139 y se caracteriza el FPGA EP2C70F896C8 de la familia Cyclone II de la compañía Altera, perteneciente a dicha tarjeta. Además se caracteriza la herramienta de simulación Quartus II. En el último capítulo se caracterizan las señales de entrada de la tarjeta T139 y se describe la formación de las señales de los blancos y cohetes imitados así como las envolventes de video de los blancos; a partir de la realización de ingeniería inversa al código presente en los bloques esquemáticos implicados en la formación de estas señales y comprobando los resultados del análisis en las simulaciones efectuadas con la herramienta Quartus II. También se realizan propuestas de modificaciones al código para corregir fallas detectadas y realizar mejoras en el entrenamiento de los operadores de la Estación de Conducción de Cohetes..
(15) CAPÍTULO 1.. LA. UTILIZACIÓN. DE. LA. INGENIERÍA. INVERSA EN LAS PROGRAMACIONES DE LOS FPGA. Desde su introducción a mediado de la década de 1980, los FPGAs son cada vez más utilizados en la industria electrónica debido a su flexibilidad, reconfiguración y capacidad para ejecutar operaciones de forma paralela. El diseño de aplicaciones para implementar en estos dispositivos se realiza comúnmente mediante lenguajes de descripción de hardware. En este capítulo se abordan las características generales de los FPGA. A continuación se ofrece una introducción a los Lenguajes de Descripción de hardware (HDL), presentándose sus características fundamentales, ventajas de modelado de sistemas digitales que brinda, así como una breve descripción de los lenguajes AHDL y VHDL empleados en la programación del FPGA perteneciente a la tarjeta T139. Además se muestran procedimientos que se utilizan para la ingeniería inversa de sistemas programados en FPGA. 1.1. Principales características de los FPGA Los FPGA son dispositivos lógicos que tienen la facilidad de ser programados directamente por el usuario, requiriéndose para ello de herramientas de costo relativamente bajo. A diferencia de lo que normalmente se conoce como sistema programado (microcontrolador, microprocesador, etc.) en donde un hardware fijo, limitado por el número de núcleos disponibles, es capaz de interpretar y ejecutar un programa especificado como un conjunto de instrucciones; sin embargo, en los FPGA lo que se tiene es un hardware que lleva a cabo diferentes operaciones de manera paralela, pues se configura realizando conexiones físicas que son especificadas por un programa o cadena de configuración. Cada tarea de procesos independientes se asigna a una sección dedicada del chip y puede ejecutarse de manera autónoma sin ser afectada por otros bloques de lógica. Como resultado, el rendimiento de una parte de la aplicación no se ve afectado cuando se agregan otros.
(16) LA UTILIZACIÓN DE LA INGENIERÍA INVERSA EN LAS PROGRAMACIONES DE LOS FPGA. 16. procesos. Los FPGA se programan a través de e Lenguajes de Descripción de Hardware (HDL) (Castillo et al., 2008) Cada chip FPGA está compuesto de un número finito de recursos predefinidos con interconexiones programables para implementar un circuito digital reconfigurable. Posee una estructura interna formada por una matriz de bloques lógicos configurables CLB (Configurable Logic Block) que se comunican entre sí y con los bloques de Entrada/Salida (Input/Output Block, I/OB) a través de canales de ruteo o interconexión horizontales y verticales (Maxfield, 2004). Estos bloques pueden observarse en la Figura 1.1.. Figura 1.1 Diagrama general de un FPGA (Maxfield, 2004). Bloques Lógicos Los bloques lógicos constan básicamente de una parte combinacional que permite implementar funciones lógicas booleanas, más una parte secuencial formada por flip-flops que permite sincronizar la salida con una señal de reloj externa e implementar registros. La parte combinacional varía de un fabricante a otro. A continuación, se explican dos de ellas. •. Bloque lógico basado en LUT (look-up table): Una LUT es un componente de celdas de memoria SRAM (Static Random Access Memory) que almacena una tabla de verdad. Las direcciones de las celdas son las entradas de la función lógica que se desee implementar, y en cada celda de memoria se guarda el resultado para una de las combinaciones de las.
(17) LA UTILIZACIÓN DE LA INGENIERÍA INVERSA EN LAS PROGRAMACIONES DE LOS FPGA. 17. entradas. En una LUT de n x 1 es posible implementar cualquier función lógica de n entradas (Bozich, 2005). •. Bloque lógico basado en multiplexores: El bloque lógico basado en multiplexores, se caracteriza porque requiere mucha menos lógica que el anterior basado en una LUT, y en consecuencia, ocupa mucha menos área. De este modo, se pueden implementar mayor número de bloques lógicos en el mismo espacio, o para el mismo número de bloques, disponer de más espacio para incrementar los recursos de interconexión. Como contrapartida, no se puede implementar cualquier función lógica de n entradas, como ocurría con las LUT. En caso necesario, esta función lógica hay que repartirla entre varios bloques lógicos (Bozich, 2005).. Interconexión entre bloques programables Además de los bloques programables también es importante la tecnología utilizada para crear las conexiones entre los canales (tecnología de programación). A continuación se explican algunas de ellas: •. Antifusible (Antifuse): Al igual que la tecnología PROM (memoria de solo lectura programable), un FPGA que utiliza este tipo de tecnología sólo se puede programar una sola vez, y utilizan algo similar a un fusible para las conexiones. Una vez que es programado ya no se puede recuperar. La diferencia entre un fusible y un antifusible es que el primero se desactiva deshabilitando la conexión, en cambio, para el segundo se produce una conexión cuando son programados, por lo que normalmente se encuentran abiertos. La desventaja es que no son reutilizables, pero por otro lado disminuyen considerablemente el tamaño y costo de los dispositivos (Bozich, 2005).. •. SRAM (StaticRAM): Estas guardan la configuración del circuito. Esto quiere decir que las SRAM son utilizadas como generadores de funciones y además son usadas para controlar multiplexores (que están incluidos en los FPGA) y la interconexión entre bloques. En éstas el contenido se almacena mediante un proceso de configuración en el momento de encendido del circuito que contiene al FPGA pues, en el SRAM, el contenido de la memoria se pierde cuando se deja de suministrar energía; la información binaria de las.
(18) LA UTILIZACIÓN DE LA INGENIERÍA INVERSA EN LAS PROGRAMACIONES DE LOS FPGA. 18. celdas SRAM generalmente se almacena en memorias seriales EEPROM conocidas como memorias de configuración o celdas de configuración. En el momento de encendido del circuito toda la información binaria es transferida a los bloques e interconexiones del FPGA mediante el proceso de configuración el cual es generalmente automático, dado que el propio FPGA contiene un circuito interno que se encarga de hacer toda la programación (Bozich, 2005). •. Flash: El avance experimentado en los últimos años en el diseño y prestaciones de las celdas de memoria Flash ha permitido su incorporación reciente al mundo de los dispositivos programables como tecnología de programación. Los FPGA basados en celdas Flash recogen las ventajas principales de las dos técnicas anteriores situándose en un punto intermedio. Su tamaño es reducido respecto al de una celda SRAM, aunque sin llegar al de un antifusible; son reprogramables, aunque la velocidad de programación es bastante más lenta que en el caso de una SRAM; y son no volátiles, por lo que no necesitan un dispositivos auxiliar para guardar la configuración interna, como en el caso de la SRAM (Bozich, 2005).. Un FPGA que tiene una gran cantidad de canales de interconexión tiende a tener pequeños bloques lógicos con muchas entradas y salidas, en comparación con el número de compuertas que puede generar el bloque. Este bloque lógico se caracteriza por ser bastante sencillo, con poca lógica en su parte combinacional. Este es el caso del bloque lógico a base de multiplexores del epígrafe anterior. Este tipo de FPGA generalmente utiliza tecnología antifusible (León, 2009). Por otra parte, un FPGA que tiene una estructura pequeña en canales de interconexión tiende a tener grandes bloques lógicos con pocas entradas y salidas en comparación con el número de compuertas que existe en el bloque. Este es el caso del bloque lógico basado en LUT, que permiten implementar cualquier función lógica del mismo número de entradas. Este tipo de FPGA generalmente está fabricado con tecnología SRAM. Finalmente, los FPGA basadas en celdas Flash suelen emplear un bloque lógico sencillo para incrementar los recursos de interconexión (León, 2009)..
(19) LA UTILIZACIÓN DE LA INGENIERÍA INVERSA EN LAS PROGRAMACIONES DE LOS FPGA. 19. Bloques de entrada/salida Los I/OB son otro de los componentes que tienen los FPGA. Estos controlan el flujo de datos entre los pines de entrada/salida y la lógica interna del dispositivo. En diferentes familias de FPGA, se dividen las entradas/salidas del integrado en bancos que se pueden configurar para tener una interfaz con lógica de diferentes estándares eléctricos de manera independiente (Cano, 2012). 1.2. Lenguajes HDL utilizados para programar FPGA Como consecuencia de la creciente necesidad de integrar un mayor número de dispositivos en un solo circuito integrado, se desarrollaron nuevas herramientas de diseño que auxilian al ingeniero a integrar sistemas de mayor complejidad. Esto permitió que en la década de los cincuenta aparecieran los Lenguajes de Descripción de Hardware (HDL) como una opción de diseño para el desarrollo de sistemas electrónicos elaborados (Güichal, 2005). Los HDL permiten modelar sistemas digitales completos mediante diferentes herramientas de software. Estos modelos pueden posteriormente sintetizarse para implementarlos como circuitos reales. La utilización de HDL para sintetizar sistemas digitales y la utilización de dispositivos lógicos programables permiten crear prototipos funcionales en plazos relativamente cortos. Esto hace que todo el proceso de desarrollo de un sistema digital sea mucho más simple y rápido en comparación con metodologías clásicas a través de componentes discretos (Güichal, 2005). Al utilizar HDL para modelar un sistema, se está modelando hardware, y no escribiendo software. El software se caracteriza por ser secuencial, es decir los efectos de una instrucción dependen exclusivamente de los efectos de las instrucciones anteriores. En el hardware, sin embargo, hay muchas tareas que suceden de manera concurrente y paralela, o sea, muchos parámetros y señales cambian al mismo tiempo, es decir, la variable tiempo predomina (Güichal, 2005). Una de las características de estos lenguajes radica en su capacidad para describir en distintos niveles de complejidad (funcional, transferencia de registros y lógico o nivel de compuertas) cierto diseño. Los niveles de complejidad se emplean para clasificar modelos HDL según el grado de detalle y precisión de sus descripciones (Maxinez & Jara, 2002)..
(20) LA UTILIZACIÓN DE LA INGENIERÍA INVERSA EN LAS PROGRAMACIONES DE LOS FPGA. 20. Dichos niveles de complejidad, descritos desde el punto de vista de simulación y síntesis del circuito, pueden definirse como (Maxinez & Jara, 2002): •. Algorítmico o funcional: se refiere a la relación funcional entre las entradas y salidas del circuito o sistema, sin hacer referencia a la realización final.. •. Transferencia de registros (RT): Consiste en la partición del sistema en bloques funcionales sin considerar a detalle la realización final de cada bloque.. •. Lógico o de compuertas: el circuito se expresa en términos de ecuaciones lógicas o de compuertas.. Los HDL permiten modelos de tiempos síncronos y asíncronos y posibilita la implementación de distintas técnicas de modelado digital como descripciones de máquinas de estados finitos (FSM), descripciones algorítmicas y ecuaciones booleanas. Además permite jerarquía pues un sistema digital puede ser modelado como un conjunto de componentes interconectados y, a su vez, cada componente puede ser modelado como un conjunto de subcomponentes (Scalvinoni, 2005). No hay limitaciones impuestas por el lenguaje en el tamaño del diseño, o sea, los HDL tienen elementos que permiten el diseño a gran escala, de forma fácil; por ejemplo, componentes, funciones, procedimientos, paquetes. Asimismo, como la descripción se centra en la funcionalidad, resulta sencillo comprender qué función realiza el diseño a partir de una descripción HDL, que a partir de un esquemático de interconexión de compuertas, o sea, la descripción de un problema sólo conociendo las entradas y salidas (Scalvinoni, 2005). Actualmente existen varias alternativas de HDL, a continuación se mencionan algunos de estos lenguajes (Noriega, 2008): •. VHDL: Es el acrónimo que representa la combinación de VHSIC (Very High Speed Integrated Circuit, Circuitos Integrados de muy Alta Velocidad) y HDL. Es un lenguaje textual de alto nivel de complejidad, utilizado para la descripción del hardware de sistemas digitales.. •. Verilog: Algunas veces llamado Verilog HDL, soporta el diseño, prueba e implementación de circuitos analógicos, digitales y de señal mixta. Es considerado un lenguaje de alto nivel de complejidad..
(21) LA UTILIZACIÓN DE LA INGENIERÍA INVERSA EN LAS PROGRAMACIONES DE LOS FPGA. •. 21. AHDL: Es el acrónimo de Altera Hardware Description Language, posee un nivel medio de complejidad, desarrollado por la compañía Altera.. Debido a que el código fuente de la FPGA que es objeto de estudio del presente trabajo de diploma está implementado casi en su totalidad en AHDL, y solo una pequeña parte en VHDL, se exponen a continuación las principales características de cada uno. 1.2.1. Principales características del código AHDL Este lenguaje es un paso intermedio entre los lenguajes de bajo a alto nivel de abstracción o complejidad. El mismo está pensado para diseños de lógica combinacional compleja, operaciones de grupo, máquinas de estado y tablas de verdad (Noriega, 2008). AHDL, al igual que otros HDL, utiliza ecuaciones lógicas, variables, constantes, funciones, operadores aritméticos, tablas de verdad y expresiones condicionales. Es un lenguaje modular y concurrente que utiliza el modo “behavioral” para describir la lógica que se desee implementar. Además, está especialmente orientado para definir máquinas de estado de gran complejidad y toda la descripción del comportamiento es resuelta en forma concurrente. (Altera Corporation, 1996). Se puede utilizar cualquier editor de texto para crear archivos de diseño de texto en AHDL. Las únicas restricciones que presentan estos ficheros deben guardarse con la extensión .tdf (Text Design File), y que las líneas no deben exceder los 255 caracteres. Asimismo, AHDL no es case sensitive, o sea, no diferencia entre mayúsculas y minúsculas (Altera Corporation, 1996). A continuación se realizará una descripción de las partes que componen un archivo de texto en AHDL. 1.2.1.1.. Estructura de un archivo texto en AHDL. Un archivo texto en AHDL (.tdf) presenta una estructura determinada por once secciones o campos. De ellas solo dos son imprescindibles y el resto son opcionales (Betz, 2010). A continuación se mencionan las más usadas y se da una breve descripción de las mismas. Título: es opcional y no afecta a la descripción del hardware. Tributa a la documentación del diseño (Betz, 2010)..
(22) LA UTILIZACIÓN DE LA INGENIERÍA INVERSA EN LAS PROGRAMACIONES DE LOS FPGA. 22. Include: es opcional. Permite importar texto desde otros archivos escritos en AHDL (cuya extensión por defecto es .inc) al diseño en curso para su compilación. Usualmente es usado para incluir prototipos de funciones de menor nivel (Betz, 2010). Constant: es opcional. Permite definir un nombre simbólico y asociarlo a un valor constante. Gracias a esto, posteriores usos del nombre serán reemplazados por el valor constante durante la compilación (Betz, 2010). Subdesign: es necesario. Se utiliza para declarar tipo y nombre de los puertos de un diseño. El tipo básico de los puertos puede ser input, output o bidir. Se puede usar además machineinput y machineoutput para importar y exportar máquinas de estado (Betz, 2010). Variable: es opcional. Se declaran las variables usadas en la sección logic para definir la lógica interna, o sea, se declaran variables que representan y retienen información interna. Las variables pueden declararse como nodos ordinarios o triestado, primitivas, mega funciones, macrofunciones o máquinas de estado. También pueden generarse variables condicionalmente con la sentencia If Generate (Betz, 2010). Logic: es necesario. Define la operación lógica del programa y se encuadra entre las palabras clave begin y end. Esta lógica puede definirse mediante ecuaciones booleanas, lógica condicional o tablas de verdad. Puede incluir sentencias de tipo, como por ejemplo, Case y If Then (Betz, 2010). 1.2.2. Principales características del código VHDL EL VHDL nace como un proyecto del Departamento de Defensa (DoD) de EEUU para disponer de una herramienta estándar independiente para el modelado (simulación), descripción y documentación de los sistemas electrónicos. Posteriormente el Instituto de Ingenieros Eléctricos y Electrónicos (IEEE) lo adopta y estandariza. En este lenguaje se pueden realizar descripciones a circuitos con un alto nivel (Pardo, 2006). En VHDL, la interfaz del dispositivo a desarrollar con el exterior recibe el nombre de entidad (entity) y la descripción de su funcionalidad es lo que se denomina su arquitectura (architecture). La interfaz del dispositivo tiene como objetivo definir qué señales son visibles desde el exterior y.
(23) LA UTILIZACIÓN DE LA INGENIERÍA INVERSA EN LAS PROGRAMACIONES DE LOS FPGA. 23. se denominan puertos (ports). En la arquitectura se definen las acciones que se realizan sobre los datos introducidos a través de los puertos de entrada a fin de obtener los datos que serán transmitidos hacia los puertos de salida (Pardo, 2006). El VHDL incorpora elementos básicos que pueden definirse dentro de la sección process (proceso). Un proceso puede entenderse como un conjunto de sentencias que describen el comportamiento de un determinado elemento, de tal forma que el código que contiene dicho proceso se ejecuta de manera secuencial. Sin embargo, todos los procesos contenidos en una descripción VHDL se ejecutarán de forma paralela (Chu, 2008). El VHDL cuenta con la posibilidad describir circuitos con diversos niveles de abstracción. Posee sentencias de control de flujos como if, for y while. Tiene la capacidad de estructurar el código en subprogramas, funciones o procedimientos, lo que permite afrontar algoritmos complejos. Utiliza y desarrolla bibliotecas de diseño, es decir, incorpora conceptos específicos para el modelado del hardware como la concurrencia (Chu, 2008). Un proyecto de VHDL puede contener muchos ficheros. El código VHDL usualmente se encuentra en los ficheros con extensión .vhd (Chu, 2008). 1.3. Procedimientos utilizados para la realización de la ingeniería inversa en FPGA La implementación y desarrollo de aplicaciones en FPGA se realiza mediante herramientas de simulación y modelado de alto nivel. A través de estas, se genera un archivo para la configuración del FPGA. Este archivo se introduce en el FPGA como una cadena de bits (bitstream), la cual se envía mediante un dispositivo grabador. La ingeniería inversa es el trabajo realizado después de que este flujo de bits se ha obtenido, con el objetivo de comprender el funcionamiento interno de la aplicación implementada en el FPGA; o sea que es la transformación de un flujo de bits, en una descripción funcionalmente equivalente del diseño original (Benz et al., 2012). Los FPGA basados en tecnología de interconexión SRAM, almacenan la información de configuración en un banco de memoria externo, y esta es enviada al FPGA en el momento de encendido; por lo que es posible interceptar la información y apoderarse del archivo de configuración. Este ataque se denomina como “Clonación de FPGA SRAM y la única forma.
(24) LA UTILIZACIÓN DE LA INGENIERÍA INVERSA EN LAS PROGRAMACIONES DE LOS FPGA. 24. posible para proteger el sistema de este tipo de ataque es encriptando la cadena de bits; por lo que vendedores de FPGA ofrecen esta posibilidad en sus dispositivos más recientes (Drimer, 2009). Existen otras formas de ataque de los FPGA. En el artículo titulado Security FPGA Analysis, presentado de E.Wanderley se explican algunos procedimientos de ataque a estos dispositivos, y se ofrecen alternativas para aumentar su seguridad ante los ataques presentados (Wanderley et al., 2011). Para el caso particular de esta investigación, ya se cuenta con la información de configuración del FPGA, en forma de código, implementado en AHDL, por tanto, lo que se desea es obtener el funcionamiento de dicho código a través de la realización de ingeniería inversa del software en cuestión. Por tanto, a continuación se explicaran los procedimientos empleados en la realización de ingeniería inversa de determinado código. 1.3.1. Características principales de la ingeniería inversa de software La ingeniería inversa del software es un proceso que consiste en analizar un programa, en un esfuerzo por crear una representación del mismo con un nivel de complejidad más elevado que el código fuente. Según va aumentando la complejidad del trabajo crece la necesidad de comprensión de la aplicación. La ingeniería inversa debe ser capaz de extraer, a partir del código fuente, información significativa del procesamiento que se realiza y las estructuras de datos que se usan en el programa (Martínez, 2012). El nivel de complejidad de un proceso de ingeniería inversa alude a la sofisticación de la información de diseño que se puede extraer del código fuente. A medida que crece el nivel de complejidad se proporciona al ingeniero de software información que le permitirá comprender más fácilmente estos programas. Por tanto, la ingeniería inversa del software aparece como un proceso que ayuda al aseguramiento de la calidad y documentación de aplicaciones con deficiencias en los modelos de análisis y diseño. Además, ayuda en la disminución de costos y tiempos de mantenimiento (Ameneyro, 2012). A continuación se explican las acciones encaminadas a la realización de ingeniería inversa de determinado código..
(25) LA UTILIZACIÓN DE LA INGENIERÍA INVERSA EN LAS PROGRAMACIONES DE LOS FPGA. 25. Comprensión del procesamiento La primera actividad real de la ingeniería inversa comienza con un intento de comprender y extraer abstracciones de procedimientos representadas por el código fuente. Para comprender las complejidades de procedimientos, se analiza el código en distintos niveles de complejidad: sistema, programa, componente, configuración y sentencia. Por tanto, la información extraída de la lectura de líneas de código son las especificaciones de diseño: modelos de flujo de control, diagramas de diseño, documentos de especificación de diseño (Pressman, 2003). La funcionalidad general de todo el sistema de aplicaciones deberá ser algo perfectamente comprendido antes de que tenga lugar un trabajo de ingeniería inversa más detallado. Esto es lo que establece un contexto para un análisis posterior, y se proporciona ideas generales acerca de los problemas de interoperabilidad entre aplicaciones dentro del sistema (Pressman, 2003). Reestructuración del código La reestructuración del software modifica el código fuente y/o los datos en un intento de adecuarlo a futuros cambios, preservando las características externas del sistema (funcionalidad). Tiende a centrarse en los detalles del diseño de módulos individuales. Si el esfuerzo de la reestructuración se extiende más allá de los límites de los módulos y abarca la arquitectura del software, la reestructuración pasa a ser ingeniería directa. En algunas ocasiones, resulta difícil distinguir entre una reestructuración extensa y un nuevo desarrollo (Pressman, 2003). Redocumentación del código La redocumentación es también una forma de ingeniería inversa y es el proceso mediante el cual se produce documentación desde un sistema existente. Si la redocumentación toma la forma de modificación de comentarios en el código fuente, puede ser considerada una forma suave de reestructuración. Sin embargo, puede ser considerada como una sub-área de la ingeniería inversa porque la documentación reconstruida es usada para ayudar al conocimiento del programa (Pressman, 2003). En el caso específico de este trabajo, que tiene como objeto de estudio un código descrito en AHDL y VHDL, perteneciente a un FPGA de la familia Cyclone II de Altera; como parte del.
(26) LA UTILIZACIÓN DE LA INGENIERÍA INVERSA EN LAS PROGRAMACIONES DE LOS FPGA. 26. trabajo de ingeniería inversa, se analizará inicialmente la funcionalidad general de todo el sistema, para obtener una visión general de la interoperabilidad entre aplicaciones, luego se mostrará el funcionamiento de algunos bloques funcionales y se propondrán reestructuraciones del código, en vistas a corregir errores de funcionamiento, o aumentar las prestaciones del programa..
(27) CAPÍTULO 2.. LOS FPGA EN EL COMPLEJO VOLGA. Como se vio en el capítulo anterior, los códigos HDL usados para programar FPGA permiten modelar o describir sistemas en distintos niveles de complejidad mediante herramientas de software. Sin embargo, en ocasiones los diseñadores necesitan herramientas de simulación que permitan no solamente realizar la descripción, sino evaluar la viabilidad y el desempeño de los sistemas implementados, lo más rápido y eficiente posible. Una de estas herramientas es el software Quartus II. En este capítulo se describen las cualidades combativas y los regímenes de trabajo de la Estación de Conducción de Cohetes Volga. Para una mejor comprensión se explica el funcionamiento del imitador de la estación implementado en la tarjeta T139, y se caracteriza el FPGA perteneciente a dicha tarjeta. Además, se ofrece una introducción al software Quartus II, sus características fundamentales y posibilidades de simulación que brinda la realización de la ingeniería inversa al código fuente del FPGA de la tarjeta T139. 2.1. El complejo Volga en la defensa del país El objetivo principal que cumple una unidad de defensa antiaérea es lograr una alta efectividad del fuego contra los medios de agresión del enemigo, pudiéndose alcanzar los siguientes resultados (González, 2006, p.3): •. Aniquilamiento de los medios de agresión del enemigo.. •. Desorganizar los órdenes combativos de los Medios de Ataque Aéreo del Enemigo (MAAE).. •. Destruir las unidades aéreas del enemigo que cumplen las misiones de rescate de pilotos y tripulantes derribados.. •. Disminuir la efectividad del empleo del armamento de los MAAE..
(28) LOS FPGA EN EL COMPLEJO VOLGA. •. 28. Evitar, limitar o dificultar los aseguramientos a las tropas enemigas.. Por lo anteriormente expuesto, la Estación de Conducción de Cohetes Volga (ECC S-75V) se destina para la búsqueda, seguimiento y aniquilamiento de los blancos aéreos, tanto de día como de noche, en los rangos de alturas bajas, medias y estratosféricas y, excepcionalmente, de los blancos navales y terrestres, en los regímenes de Radiolocalización o Televisión (Pierrat, 2013a). En otras palabras, la estación posee diferentes cualidades técnicas que le dan la posibilidad de cumplir las funciones combativas para la cual está destinada. Por ejemplo, puede derribar blancos móviles a una altura de vuelo desde 0.1 a 30 Km, tanto al encuentro para velocidades de los blancos entre 1000 y 1100 m/s, a distancias inferiores a 65 km, así como al alcance para una velocidad de los blancos de hasta 420 m/s. También posee la capacidad de lanzar hasta tres cohetes consecutivos a un mismo blanco con intervalos de tiempo de 6 segundos, con una probabilidad de destrucción del objetivo de 0.92. El cohete realiza el vuelo hacia el blanco y cuando este último entra dentro del radio de acción de la carga combativa que lleva el primero, se produce la explosión, originándose un flujo de fragmentos, precedidos por una onda expansiva que viaja en dirección hacia el blanco. La onda expansiva, la densidad de fragmentos y el efecto rompedor de estos últimos, son los miembros de una integral de probabilidad que generalmente produce la destrucción del blanco (Pierrat, 2013a). Para lograr una buena realización del tiro y cumplir cualquiera de los resultados planteados anteriormente se hace necesario conocer primeramente los datos iniciales para el tiro. Estos son las características del blanco que se toman en el complejo antiaéreo para seleccionar el método más efectivo de tiro y determinar el momento de lanzamiento de los cohetes. La preparación de los datos iniciales para el tiro es tarea principal de la preparación inmediata del tiro (Pierrat, 2013a). Los datos iniciales para el tiro son la velocidad del blanco (Vb), la distancia hasta el punto de encuentro del cohete con el blanco (ne), los límites de la zona de destrucción (nc o límite cercano) y (nl o límite lejano), la altura (Hb) y el parámetro del curso del movimiento del blanco (Pb), donde los dos últimos se emplean para determinar el tiempo de permanencia del blanco en la zona de lanzamiento (Pierrat, 2013a)..
(29) LOS FPGA EN EL COMPLEJO VOLGA. 29. Los límites de la zona de destrucción y la distancia hasta el punto de encuentro se emplean para seleccionar correctamente el momento de lanzamiento de los cohetes y para valorar la posibilidad de traslado del fuego hacia el próximo blanco. Dentro del complejo Volga existe un sistema encargado de determinar cada uno de los parámetros del movimiento del blanco, en vísperas de preparar los datos iniciales para el tiro. El Sistema Automatizado de Lanzamiento (SAL) forma parte de la cabina de dirección de la estación y se encuentra destinado para preparar los datos iniciales durante el tiro (Pierrat, 2013a). Los datos sobre la velocidad, la altura y el parámetro del blanco se representan de forma numérica y los límites de la zona de destrucción y la distancia hasta el punto de encuentro se representan en forma de marcas horizontales, todo en el indicador de conducción (monitor del puesto de trabajo 120) como se muestra en la Figura 2.1. El lanzamiento de los cohetes se realiza cuando el blanco entra en la zona de lanzamiento, lo que es igual a decir que la marca ne entró en la zona de destrucción definida por las marcas de los límites cercano y lejano (Pierrat, 2013a).. Figura 2.1 Indicador de conducción con las marcas del SAL y otras que aparecen (Pierrat, 2013a). La zona de destrucción se define como la parte del espacio de la zona de tiro, donde se asegura la destrucción del blanco con una probabilidad no menor que la dada. La zona de destrucción forma parte a su vez de la zona de lanzamiento, y no es más, que la región del espacio cercana a la ECC,.
(30) LOS FPGA EN EL COMPLEJO VOLGA. 30. donde se asegura que de realizarse el lanzamiento del cohete, el encuentro del mismo con el blanco ocurrirá en la zona de destrucción (Pierrat, 2013a). 2.1.1. Regímenes de la Estación de Conducción de Cohetes La ECC posee dos canales de trabajo: Radiolocalización y Televisión. El canal de Radiolocalización posee dos regímenes de exploración: Rayo ancho (RA) y Rayo estrecho (RE). Existe un tercer régimen que se emplea, además de RA, en la realización del tiro y es el de Iluminación. Estos regímenes responden a la forma de transmisión-recepción de la estación y a las antenas que utilizan (Pierrat, 2013b). Cuando se lanza el impulso de sondeo al espacio, en cualquiera de los regímenes, la potencia del transmisor permite que dicho impulso recorra una determinada distancia en el espacio y que la señal reflejada de objetos o blancos se reciba desde esas distancias. A partir de la potencia del transmisor, de la ganancia de la antena, de la sensibilidad del receptor y de otras características del radar, se puede calcular la distancia de alcance del mismo y en base a esta diseñar la escala de trabajo de los indicadores para ver los blancos hasta esas distancias. Generalmente los indicadores de los sistemas coheteriles tienen una escala de distancia grande e imprecisa para la localización de los blancos a gran distancia, una escala menos grande pero un poco más precisa para localizar y abrir fuego contra los blancos cercanos, y una escala pequeña con gran precisión para el seguimiento de los blancos. Luego, el cambio de escala de distancia significa que se cambia el período de repetición de los impulsos de sondeo para que en la escala más grande, con mayor duración de pulso acumule mayor potencia y recorra mayor distancia, y en escala pequeña, con menor período de repetición y menor duración de pulso, recorra menos distancia y mejore el poder resolutivo de la localización. De esta manera se cambia la representación de los barridos en los indicadores. En el complejo Volga las tres escalas de distancia son de 150, 75 y 35 Km (Pierrat, 2013b). El régimen de RA se emplea para la localización de blancos a distancias menores de 75Km o en todo el rango de distancia (150Km) cuando no hay indicación exacta del blanco así como para la localización de blancos de superficie (terrestre o marítima), y para la localización de blancos.
(31) LOS FPGA EN EL COMPLEJO VOLGA. 31. portadores del CAR (Cohete Anti Radar). Además, puede ser empleado en las siguientes situaciones (Pierrat, 2013b): •. Al tirar contra blancos de grandes dimensiones.. •. Al tirar contra blancos en grupo.. •. Al tirar contra blancos del tipo ADA (Aerostatos Automáticos a la Deriva) cuando la rampa de lanzamiento alcanza un ángulo de elevación mayor o igual a 750.. •. Al tirar contra blancos con sistemas automatizados de dirección.. En RE el estrechamiento del ángulo del barrido de los diagramas direccionales de las antenas, en el mismo intervalo de tiempo, se traduce en un aumento del tamaño de las señales, lo cual es muy útil para la búsqueda de blancos pequeños a grandes distancias (Pierrat, 2013b). El régimen de Iluminación se emplea para la defensa ante las interferencias originadas por el enemigo. Por ejemplo al. efectuar el seguimiento de blancos, que se caractericen por tener. superficies con poca capacidad de reflejar las señales que son emitidas hacia él. Estas señales reflejadas, luego de un previo procesamiento en la tarjeta de cálculo, dan una medida a los operadores de la posición del blanco en el espacio (Pierrat, 2013b). Luego de haberse realizado una breve descripción del funcionamiento general del complejo Volga, se mostrarán las principales características de la tarjeta imitadora T139, perteneciente a la cabina de mando de dicho complejo. 2.1.2. Descripción del funcionamiento del imitador de la ECC El imitador de la ECC debe reproducir las señales reales que entran por la antena receptora y que se observan en las pantallas de los indicadores o monitores para realizar el control de todos los sistemas o para efectuar los entrenamientos. Sin embargo, cuando se trabaja en régimen combativo todo el sistema imitador se desactiva y se trabaja con los circuitos y señales reales de combate para la realización del tiro. En la Figura 2.2 se muestra un esquema en bloque del funcionamiento del imitador (Pierrat, 2013b)..
(32) LOS FPGA EN EL COMPLEJO VOLGA. 32. Figura 2.2 Esquema en bloques funcionales del imitador (Pierrat, 2013b). En el trabajo imitado, la señal recibida en la parte de baja frecuencia del receptor, es enviada desde el imitador de la estación. Esta señal además es visualizada en los monitores y enviada al Dispositivo de Determinación de las Coordenadas (DDC), del cual se obtiene la posición del blanco y de los cohetes. Esta, a su vez, se entrega al Sistema de Elaboración de los Mandos (SEM) del cual se obtienen los mandos cifrados para mover los timones de los cohetes y para accionar la carga combativa. Estos mandos se envían al Radio Transmisor de Mandos (RTM), en el cual se modulan en alta frecuencia y se mandan, por la antena P16, hacia el receptor que está a bordo de los cohetes. La señal que sale del receptor para ser visualizada en los monitores es previamente convertida a digital (Pierrat, 2013b). En el régimen de control de la estación el imitador permite comprobar el paso de las señales por el canal de baja frecuencia del receptor cuando se conecta el complejo y posibilita realizar algunas comprobaciones del funcionamiento estático y dinámico de los sistemas DDC, SEM y RTM, para lo cual se pueden realizar las conexiones Cero, Empuje y Disparo Electrónico (DE) (Pierrat, 2013b). En DE se elabora la señal del blanco que aparece a una distancia y en una posición angular fija en la pantalla de los monitores (generalmente sobre los 20Km coincidiendo con las marcas verticales), y se permite el disparo de los tres cohetes, uno por cada canal, comprobándose que el.
(33) LOS FPGA EN EL COMPLEJO VOLGA. 33. sistema los radio direccione y dirija su trayectoria hasta su encuentro con el blanco (Pierrat, 2013b). Cuando se conecta Cero el imitador representa conjuntamente en el indicador un blanco, en la misma posición que para DE, y un cohete ; en este régimen estático, se comprueba que las señales lleguen correctamente al DDC, que se determinen correctamente los centros energéticos de las señales, que se obtienen las coordenadas correctas del blanco y del cohete, que se determinen correctamente los errores, así como se elaboren con exactitud los mandos de dirección (Pierrat, 2013b). En el caso de Empuje, donde el blanco y el cohete toman la misma posición que en Cero, se permite evaluar la pendiente de los mandos en régimen estático, es decir, verificar, pues son conocidos, el valor que toman los errores y mandos para una diferencia calibrada que se introduce entre las señales del blanco y del cohete (Pierrat, 2013b). Cuando se realiza el entrenamiento de los operadores para enseñar o comprobar el trabajo combativo, se emplea la computadora de la cabina, en la cual se planifica la trayectoria del blanco o de hasta tres blancos. En ese caso la posición del banco en la pantalla de los monitores no es la misma que para los regímenes de Ceros, DE o Empuje; la T139 es la encargada formar las videoseñales de los blancos y de los cohetes, así como de propiciar las interferencias a través de las envolventes de video de los blancos (Pierrat, 2013b). 2.1.3. Características principales de la tarjeta T139 La tarjeta T139 está implementada con electrónica programada, y se encarga de la formación de las señales de video tanto para el trabajo imitado como para el control funcional de la ECC, la formación de los pulsos de sincronismo para las conmutaciones y señalizaciones del bloque 120 y la formación de las señales del bus serie (CID3, 2008). En la Figura 2.3 se muestra el enlace entre las cinco tarjetas implementadas con electrónica programada dentro de la estación, a través de las señales series denominadas SB1, SB2, SB3, SB4, SB18 y SB19. La tarjeta T139 emplea el bus serie SB1 para enviar información a las restantes tarjetas, y recibe información a través de los.
(34) LOS FPGA EN EL COMPLEJO VOLGA. 34. buses SB3, SB4, SB18 y SB19, la cual es empleada en la formación de las señales del blanco y del cohete en el trabajo imitado.. Figura 2.3 Diagrama en bloques de la interconexión serial entre las tarjetas (Pierrat, 2012). A continuación en las Figuras 2.4 y 2.5 se muestra una imagen y un esquema funcional de la tarjeta T139 respectivamente. Como se puede observar el esquema en bloques es una reproducción aproximada de la imagen de la tarjeta T139, donde se aprecia que tiene dos conectores (CON1 y CON2) para las señales de entrada/salida, tiene ocho buffers de almacenamiento de ocho bits cada uno; también cuenta con seis conversores dígito-analógicos de ocho bits, empleados para hacer llegar la información de los blancos y cohetes imitados, así como de las envolventes de video de los blancos, por el plano vertical (ε) y por horizontal (β), a la parte baja de los receptores para luego convertirla a video y visualizarla en los indicadores de los puestos de trabajo; por último, posee el FPGA EP2C70F896C8, perteneciente a la familia Cyclone II de la compañía Altera. En la siguiente sección se expondrán las principales características de los FPGA pertenecientes a la familia Cyclone II de Altera y, específicamente, el FPGA EP2C70F896C8..
(35) LOS FPGA EN EL COMPLEJO VOLGA. Figura 2.4 Imagen frontal de la tarjeta T139 (Pierrat, 2012).. Figura 2.5 Esquema en bloque de la tarjeta T139 (Pierrat, 2012).. 35.
(36) LOS FPGA EN EL COMPLEJO VOLGA. 36. 2.2. Características de la familia Cyclone II de la compañía Altera Fundamentándose en el éxito de los dispositivos Cyclone, Altera presenta a Cyclone II como una solución que exige el mínimo costo en FPGA de 90nm (pequeñas dimensiones y alta densidad de componentes) en el año 2004. La metodología de diseño utilizada por Altera en la fabricación de los dispositivos Cyclone y Cyclone II, no se basó en la redefinición de la función de productos ya existentes, sino que se enfocó en la construcción de un FPGA de bajo costo (Cano, 2012). Los dispositivos Cyclone II son limitados en tamaño, esto significa que su estructura de entrada/salida son lo más pequeña posible, reduciendo así el costo de fabricación de la misma. Adicionalmente ofrece garantías de trabajo a largo plazo para el peor de los casos en condiciones de hasta 85°C, manteniéndose la funcionalidad del silicio. Además, se optimiza el desempeño a la vez que se minimiza el consumo de potencia en el sistema, generándose así menor cantidad de calor (Altera Corporation, 2010). La arquitectura del FPGA Cyclone II presenta un arreglo bidimensional compuesto por filas y columnas entre los cuales están los arreglos de bloques lógicos . Cuenta además con bloques adicionales como memoria RAM, multiplicadores, PLL embebidos y unidades de entrada/salida avanzadas (Altera Corporation, 2010). La cantidad exacta de cada uno de los elementos mencionados depende del dispositivo elegido, pues estas prestaciones están presentes en toda la familia Cyclone II. 2.2.1. Principales prestaciones de la FPGA EP2C70F896C8 En la Tabla 2.1 se resumen los parámetros principales del dispositivo FPGA EP2C70F896C8 perteneciente a la familia Cyclone II de Altera. LAB/CLB significa arreglos de bloques lógicos o, lo que es lo mismo, bloques lógicos configurables. Algunas compañías fabricantes de FPGA realizan grandes esfuerzos en el desarrollo de herramientas que faciliten la implementación de sistemas complejos en sus dispositivos. Un ejemplo de ello es Altera con el desarrollo del software Quartus II. Estas herramientas de simulación permitan no solamente realizar la descripción, sino evaluar la viabilidad y el desempeño de los sistemas implementados de manera rápida y eficiente..
(37) LOS FPGA EN EL COMPLEJO VOLGA. 37. Tabla 2.1 Parámetros del FPGA EP2C70F896C8 (Altera Corporation, 2013). Información Técnica. EP2C70F896C8. Número de LAB/CLB. 4276. Número de elementos lógicos/Celdas. 68416. Número de entradas/salidas. 622. Frecuencia. 402.58MHz. Tecnología. 90 nm. Voltaje de alimentación. 1.15~1.25 V. Temperatura de Operación. 0°C ~ 85°C. Ganancia disponible Bits de Memoria RAM. 90 dB 1152000. Pines. 896. 2.3. Caracterización de la herramienta de simulación Quartus II Las herramientas de simulación y modelado de alto nivel permiten mejorar y optimizar los tiempos de desarrollo e implementación de las aplicaciones. Asimismo, poseen funciones predefinidas en bibliotecas propias del software para facilitar y agilizar el trabajo del diseñador, y módulos con dispositivos reales del mercado para semejar todo lo posible el trabajo real de los dispositivos (Medina, 2013). Quartus II permite el análisis y síntesis de un circuito digital a partir de su descripción simbólica o a partir de una descripción HDL permitiendo llegar hasta la implementación física del diseño en un dispositivo comercial programable de la compañía Altera. En la Figura 2.6 se muestran las etapas del proceso de diseño en la plataforma de Altera (Altera Inc, 2013)..
(38) LOS FPGA EN EL COMPLEJO VOLGA. 38. Figura 2.6. Etapas del proceso de diseño en la plataforma Altera (Altera Inc, 2013). La herramienta Quartus II posee un editor de formas de ondas que permite asignar entradas a una simulación, procedimiento necesario en la descripción de un sistema digital..
(39) CAPÍTULO 3.. OBTENCIÓN DE LA FUNCIONALIDAD DE BLOQUES ESQUEMÁTICOS DEL CÓDIGO FUENTE DEL COMPONENTE PROGRAMABLE DE LA TARJETA T139. En el capítulo anterior se brindó una introducción teórica de la función de la tarjeta T139 en la Estación de Conducción de Cohetes Volga y de la herramienta de simulación Quartus II. En el desarrollo de este capítulo se caracterizan las señales de entrada de dicha tarjeta y, mediante la realización de la ingeniería inversa del software a través del empleo del Quartus II en su versión 7.1, se describe la transformación de estas señales en diferentes bloques del esquemático principal hasta dar lugar a las señales imitadas de los blancos, de los cohetes y las envolventes de video de los primeros, que serán visualizadas en los indicadores. Además se realizan propuestas de modificaciones del código con el objetivo de realizar mejoras en el trabajo imitado. 3.1. Señales de entrada al FPGA de la tarjeta T139 En el código fuente del componente programable de la tarjeta T139 se declaran un total de once señales de entrada, denominadas CK8OM, E_SYNC, B_SYNC, E_BMA, B_BMA, RO, RO_ROKET, SB_COM, SB_CBK, SB_OB y E_SB; además de otras ocho bidireccionales. Las señales bidireccionales son aquellas que pueden ser utilizadas tanto de entrada como de salida, y son empleadas para encuestar las conmutaciones en el puesto de trabajo 120. La señal CK80M es el reloj principal para el sincronismo de la estación y su frecuencia (F) es de 80 MHz, lo que equivale a decir que su período (T) es de 12.5 ns (T = 1/F). De igual manera, E_SYNC y B_SYNC son señales idénticas que se emplean para sincronizar la exploración de la antena con todos los procesos de la estación, solo que la primera es por el plano ε (ángulo de elevación) y la otra es por el β (ángulo horizontal). Ambas tienen un período de 65 ms.
(40) OBTENCIÓN DE LA FUNCIONALIDAD DE BLOQUES ESQUEMÁTICOS DEL CÓDIGO FUENTE DEL COMPONENTE PROGRAMABLE DE LA TARJETA T139. 40. donde la parte positiva tiene una duración de 12.5 ms, y es el intervalo durante el cual el barrido o exploración de la antena no permite que salga la energía al espacio. Se denomina blanqueo de paso inverso. El resto del tiempo hasta el próximo blanqueo se permite la salida de la energía al espacio (blanqueo de paso directo). Esta explicación es válida para cuando la estación se encuentra en régimen de rayo ancho, pues en rayo estrecho se emplea otro mecanismo similar y se desconoce el formato de ambas señales bajo la acción del mismo. Sin embargo, E_SYNC y B_SYNC siempre tienen igual frecuencia independientemente del régimen que se encuentre activo en la estación. Las señales E_BMA y B_BMA, por los planos ε y β respectivamente, también se emplean como sincronismo de la exploración de la antena con todos los procesos de la estación y se producen en los emisores de la antena coincidiendo con el impulso de la bisectriz del sector de exploración (Marca Vertical de Antena). Con relación a los impulsos de blanqueo de paso inverso, se sitúan en el mismo centro del blanqueo de paso directo. RO y RO_ROKET son los impulsos de encuesta al blanco y al cohete respectivamente. Ambos representan la distancia 0 Km, están sincronizados en el tiempo y tienen una duración de 0.6 µs. RO_ROKET tiene un período de repetición de 500 µs y, según la escala de distancia que se esté utilizando, RO puede conmutar su período entre 500 y 1000 µs. Esto se debe a la equivalencia de 1 µs con 150 m, de donde se deriva que 500 µs es para 75 Km y 1000 µs, para 150 Km. Los buses series SB_COM, SB_CBK, SB_OB y E_SB son empleados para la comunicación serial entre las cinco tarjetas implementadas con electrónica programada en la cabina de conducción de la estación. 3.2. Descripción de bloques lógicos implicados en la formación de las señales imitadas El presente trabajo de diploma se centró en describir el procesamiento interno en el FPGA que dan lugar a las señales imitadas de los blancos aéreos y de los cohetes, que se emplean para el control funcional de la estación y para los entrenamientos. Dichas señales son la envolvente de video del blanco imitado y las señales imitadas del blanco y del cohete, que coinciden con las señales de salida en la programación B_E_T0 a B_E_T7, B_E_D_T0 a B_E_D_T7 y B_E_P0 a B_E_P7 respectivamente (Pierrat, 2012)..
(41) OBTENCIÓN DE LA FUNCIONALIDAD DE BLOQUES ESQUEMÁTICOS DEL CÓDIGO FUENTE DEL COMPONENTE PROGRAMABLE DE LA TARJETA T139. 41. Debido a que las señales objeto de estudio son de salida, se siguió el trayecto de ellas a través de toda la programación esquemática hasta llegar a las entradas, por lo que a continuación se describirá toda su transformación desde las entradas de datos hasta las salidas en cuestión. 3.2.1. Características del bloque taget_roket_imp Este bloque es el encargado de imitar las señales teniendo solo la capacidad para representar tres blancos y tres cohetes, dando los impulsos que contienen la información de los mismos tanto por distancia como por el plano horizontal y por elevación, o sea, D, B y E respectivamente, respetando la nomenclatura empleada por el programador (Figura 3.1). Estos impulsos son señales de un solo bit.. Figura 3.1 Bloque imitador de la posición de los blancos y cohetes. Las señales E_BMA, B_BMA, CK80M, RO, SB_CBK, SB_COM y RO_ROKET son las señales de entrada al FPGA, así como E_sync y B_sync, teniendo en cuenta que el lenguaje AHDL no diferencia entre mayúsculas y minúsculas. CK2 y CK40M son los bits cuatro y cero de salida del bloque UPCNT16. Dicho bloque es un contador sincrónico ascendente de 16 bits, el cual es usado como divisor de frecuencia, o sea, cada.
Figure
+7
Documento similar