• No se han encontrado resultados

Ingeniería inversa del bloque S SYNCRO del componente programable FPGA EP2C70F896C8 de la tarjeta T335 del complejo VOLGA

N/A
N/A
Protected

Academic year: 2020

Share "Ingeniería inversa del bloque S SYNCRO del componente programable FPGA EP2C70F896C8 de la tarjeta T335 del complejo VOLGA"

Copied!
108
0
0

Texto completo

(1)FACULTAD DE INGENIERÍA ELÉCTRICA. Departamento de Electrónica y Telecomunicaciones. INGENIERÍA INVERSA DEL BLOQUE S_SYNCRO DEL COMPONENTE PROGRAMABLE FPGA EP2C70F896C8 DE LA TARJETA T335 DEL COMPLEJO VOLGA. Autor: Liena Freyre Zamora Tutor: Ing. Yakdiel Rodríguez-Gallo Guerra. Tesis presentada en opción al Título Académico. Santa Clara2013 “Año 55 de la Revolución”.

(2) Universidad Central “Marta Abreu” de Las Villas Facultad de Ingeniería Eléctrica Departamento de Telecomunicaciones y Electrónica. Ingeniería inversa del bloque s_syncro del componente programable FPGA EP2C70F896C8 de la tarjeta T335 del Complejo Volga Tesis presentada en opción al Título Académico. Autor: Liena Freyre Zamora 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. El mundo necesita: -Hombres que sean sinceros y honrados en lo más íntimo de sus almas, -Hombres que no teman dar al pecado el nombre que le corresponde. -Hombres que no se vendan ni se compren. -Hombres que se mantengan de parte de la justicia aunque se desplomen los cielos.. Elena de White.

(5) v. DEDICATORIA. A mi madre Betty, que ha estado presente en cada uno de los momentos de mi vida y ha constituido mi mayor ejemplo. A mi abuelo Luis, que aunque no me acompaña físicamente sé que estaría muy orgulloso de mis logros. A mi hermanita Lili que la vi nacer y crecer, la quiero inmensamente. A mi novio Ronny, por brindarme su amor y apoyo incondicional. A mis viejos amigos que aunque se encuentran estudiando lejos, siempre los llevo en mi corazón..

(6) vi. AGRADECIMIENTOS A Dios por alumbrar mi camino y permitir que este trabajo se concretara. A mi mamá por ser mi mayor fuente de inspiración. A mi tutor Yakdiel, por su apoyo, interés y dedicación constante; sus conocimientos ayudaron en gran medida a la calidad de este trabajo. A mi novio Ronny, por acompañarme en la realización de este trabajo y compartir juntos cada uno de los momentos. A mis amigos Dayan y Sady por ayudarme en la búsqueda de bibliografía. A Pierrat por estar al tanto de mis dudas y realizar su mejor esfuerzo por aclararlas. A los muchachos del Centro de Cálculo de la UCLV por acogerme en su laboratorio con amabilidad. A todos Gracias..

(7) vii. TAREA TÉCNICA. Para confeccionar el presente trabajo y alcanzar los resultados esperados, fue necesario seguir tareas técnicas que constituyen una guía para llegar al informe final. Ellas fueron:  Realización de una revisión bibliográfica de las características de los dispositivos FPGA pertenecientes a la familia Cyclone II de la Compañía Altera, y de las funciones de la tarjeta T335 dentro del complejo Volga.  Determinación de los procedimientos empleados en la realización de ingeniería inversa de software.  Descripción del software de análisis y síntesis de diseños en HDL, Quartus II; herramienta empleada en la realización de la ingeniería inversa de software.  Caracterización de la sintaxis del AHDL, lenguaje empleado en la programación del FPGA de la tarjeta T335.  Análisis del código fuente del bloque s_syncro de la tarjeta T335 y comprobación de los resultados a través de simulaciones efectuadas con la herramienta Quartus II.  Elaboración del informe final del Trabajo de Diploma.. __________________ Firma del Autor. _______________ Firma del Tutor.

(8) viii. RESUMEN. El Complejo Volga es una estación de vigilancia del espacio aéreo que tras la modernización de su cabina de mando, quedó compuesta por dieciocho tarjetas electrónicas, de las cuales trece están basadas en electrónica analógica y digital, y las cinco restantes están implementadas en electrónica programada. Con la realización de esta investigación se pretende que los especialistas del Complejo Volga conozcan una parte del funcionamiento de la tarjeta T335; además de constituir la base para futuras investigaciones encaminadas a descifrar el funcionamiento de los demás bloques de la tarjeta. En el presente trabajo de diploma se explican los principios de funcionamiento del bloque s_syncro, perteneciente al esquemático principal de la tarjeta T335; a partir de la realización de ingeniería inversa al código fuente presente en el mismo. Para la realización de este trabajo se hizo una investigación de las funciones de la tarjeta T335 dentro del Complejo Volga. También se muestran las principales características de los dispositivos FPGA y específicamente los pertenecientes a la familia Cyclone II de la compañía Altera, dispositivo empleado por la tarjeta T335. Seguidamente se explican algunos procedimientos de ingeniería inversa, se presentan las características y ventajas de la herramienta de simulación Quartus II, y se muestra la sintaxis del AHDL, lenguaje empleado en la programación del FPGA de la tarjeta T335..

(9) ix. ÍNDICE. INTRODUCCIÓN ........................................................................................................................... 11 CAPÍTULO 1. 1.1.. El Complejo Volga en la defensa del país ......................................................................... 16. 1.1.1. 1.2.. LOS FPGA EN EL COMPLEJO VOLGA ......................................................... 16. Funciones de la tarjeta T335 dentro del Complejo Volga.......................................... 18. Caracterización de los FPGA ............................................................................................ 20. 1.2.1.. Arquitectura general de un FPGA .............................................................................. 21. 1.2.2.. La familia Cyclone II de Altera ................................................................................. 26. 1.2.3.. Principales aplicaciones de los FPGA........................................................................ 28. CAPÍTULO 2.. HERRAMIENTAS EMPLEADAS EN LA REALIZACIÓN DE INGENIERÍA. INVERSA………….. ...................................................................................................................... 30 2.1.. Fundamentos de la ingeniería inversa de software ............................................................ 30. 2.1.1.. Ingeniería inversa para comprender el procesamiento ............................................... 32. 2.1.2.. Ingeniería inversa para reestructurar el código .......................................................... 32. 2.1.3.. Ingeniería inversa para redocumentar del código ...................................................... 33. 2.2.. Caracterización de la herramienta de simulación QUARTUS II ..................................... 34. 2.3.. Lenguajes de descripción de hardware usados en la programación de FPGA .................. 35. 2.3.1.. Principales características del lenguaje de programación AHDL .............................. 37. CAPÍTULO 3.. REALIZACIÓN DE INGENIERÍA INVERSA AL CÓDIGO FUENTE DEL. BLOQUE S_SYNCRO PERTENECIENTE AL DISEÑO ESQUEMÁTICO DE LA TARJETA T335…………………. .................................................................................................................... 44 3.1.. Descripción general de los principales bloques esquemáticos de la tarjeta T335 ............. 44.

(10) x. 3.2.. Análisis del funcionamiento del bloque s_syncro de la tarjeta T335 ................................ 48. 3.2.1.. Análisis del régimen de trabajo # 1 ............................................................................ 58. 3.2.2.. Análisis del régimen de trabajo # 2 ............................................................................ 64. 3.2.3.. Análisis del régimen de trabajo # 3 ............................................................................ 65. CONCLUSIONES Y RECOMENDACIONES ............................................................................... 70 REFERENCIAS BIBLIOGRÁFICAS ............................................................................................. 72 ANEXOS.......................................................................................................................................... 74 A. I. Diseño esquemático principal de la tarjeta T335 .............................................................. 74 A. II. Código AHDL comentado, perteneciente al bloque s_syncro. ......................................... 75.

(11) INTRODUCCIÓN. La actividad de Ciencia e Innovación Tecnológica en las Fuerzas Armadas Revolucionarias (FAR) de Cuba tiene sus antecedentes más inmediatos en la etapa de la guerra de liberación, motivado por la necesidad de contar con un armamento capaz de contrarrestar la superioridad técnica del enemigo (Cubadefensa, 2012). En el contexto actual, los incrementos en costo de las nuevas y complejas plataformas de combate han dado lugar en Cuba a optar por modernizar los equipos, en lugar de reemplazarlos. La ejecución por las FAR de una acertada política científica, permite mostrar en la actualidad significativos resultados, entre los que destacan. la modernización del material de guerra. acompañado de eficaces métodos para su empleo combativo, así como la automatización de los procesos del mando (Cubadefensa, 2012). Dentro del programa de desarrollo del armamento, que lleva a cabo la Defensa Antiaérea Revolucionaria (DAAFAR), se encuentra la modernización de una estación de vigilancia del espacio aéreo denominada COMPLEJO S75MK102 “VOLGA”. Este complejo coheteril inicialmente estaba conformado por sistemas analógicos. La renovación de la técnica convirtió los sistemas electrónicos analógicos en sistemas digitales más ligeros y potentes. Los sistemas digitales se encuentran contenidos en dieciocho tarjetas de las cuales trece tarjetas están implementadas con electrónica analógica y digital conjuntamente, conociéndose su esquema electrónico y su funcionamiento completamente; las cinco restantes están implementadas con electrónica programada en circuitos impresos de 4 capas y cada una cuenta con al menos un dispositivo lógico programable (PLD) perteneciente a la compañía Altera, en el cual, se encuentran implementadas las funciones digitales de cada una (Pierrat, 2012). Actualmente, las cinco tarjetas implementadas con electrónica programada se encuentran trabajando en la técnica de combate, con el inconveniente de que no se conoce acerca de los principios que rigen su funcionamiento, lo que ha dificultado la explotación y mantenimiento del.

(12) INTRODUCCIÓN. complejo coheteril en su totalidad. Dada la imposibilidad de adaptar el sistema a las necesidades existentes en los disímiles entornos de operación y unido a los altos costos de mantenimiento se ha estimulado la búsqueda de alternativas para la solución del problema (Pierrat, 2012). Una forma de solución común para la problemática planteada es la ejecución de. nuevos. algoritmos a partir de la experiencia y el conocimiento que se tiene sobre el funcionamiento de la estación dada. Se conoce por la experiencia obtenida de los especialistas extranjeros que implementaron el sistema, que un proceso de este tipo requiere de un personal calificado en la teoría de funcionamiento de dicha estación y que además tenga suficiente preparación en los temas de electrónica, digital y programada. Un grupo de este personal se tomaría un tiempo entre doce y quince 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; 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 (Pierrat, 2012). La otra alternativa para resolver el problema que se planteó es mediante la vía científica. Teniendo en cuenta que otros especialistas ya pasaron las etapas descritas en el párrafo precedente y aprovechando la oportunidad de tener los códigos fuentes que se encuentran en los componentes programables de las cinco tarjetas electrónicas, que fueron denominadas por los fabricantes T139, T335, T232, T811, T138 y conociendo además, algunas de las señales de entrada presentes en sus conectores, es posible, mediante la ingeniería inversa al hardware programado, obtener la funcionalidad de dichas tarjetas (Pierrat, 2012). La ingeniería inversa es el proceso mediante el cual una tecnología o producto es desarmado, con el fin de conocer los componentes que lo integran y la forma en que éstos interactúan, para lograr finalmente una comprensión cabal de su modo de funcionamiento, con el objetivo probable de construir una tecnología similar (López, 2010).. 12.

(13) INTRODUCCIÓN. Este trabajo se enfoca solamente en análisis del código fuente de la tarjeta T335 , encargada de generar el sincronismo del sistema. Por las razones expuestas se declara como situación problémica la existencia de los códigos fuentes que están en los componentes programables de las tarjetas, de los cuales aún no se ha logrado obtener su funcionalidad. Esto lleva a plantear como problema científico: ¿Qué hacer para obtener la funcionalidad del bloque s_syncro de la tarjeta T335 a partir del código fuente que se encuentra en el componente programable FPGA EP2C70F896C8 para su futura modificación y desarrollo en las FAR? La investigación tiene como objeto de estudio: El código fuente del componente programable FPGA EP2C70F896C8 de la tarjeta T335 y el objetivo general que se propone es: Obtener por ingeniería inversa la funcionalidad código fuente del bloque s_syncro, del componente programable FPGA EP2C70F896C8 de la tarjeta T335. Para lograr este fin se declaran los siguientes objetivos específicos:  Identificar las funciones de la tarjeta T335 dentro del complejo Volga para conocer su destinación en la cabina de mando.  Describir la arquitectura de los dispositivos FPGA de la familia Cyclone II pertenecientes a la compañía Altera.  Determinar los procedimientos para la realización de ingeniería inversa de software.  Describir la herramienta de simulación Quartus II para utilizarla en la ingeniería inversa.  Caracterizar la sintaxis del lenguaje AHDL, empleado en la programación del componente programable FPGA EP2C70F896C8.  Exponer el algoritmo de funcionamiento del bloque s_syncro de la tarjeta T335, a partir del análisis de su código fuente; verificándolo a través de la simulación con la herramienta Quartus II.  Documentar el código del bloque s_syncro para que pueda ser utilizado por los especialistas del Complejo Volga.. 13.

(14) INTRODUCCIÓN. El campo de acción lo constituye el estudio del código fuente del bloque s_syncro del componente programable FPGA EP2C70F896C8; a través de la ingeniería inversa, con el empleo de la herramienta de simulación Quartus II de Altera. En el desarrollo de la investigación se da respuesta a las siguientes preguntas científicas:  ¿Qué características poseen el FPGA EP2C70F896C8 de Altera y la tarjeta T335?  ¿Qué procedimientos de ingeniería inversa utilizar para obtener la funcionalidad del código fuente del bloque s_syncro de la tarjeta T335?  ¿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?  ¿Cómo obtener el funcionamiento del bloque s_syncro perteneciente al esquemático principal de la tarjeta T335, a partir del análisis de su código fuente? Los resultados de esta investigación poseerán una. aplicación práctica y teórica de gran. trascendencia al alcance de todos los que deben trabajar con el sistema de defensa antiaérea, ya que ofrecerá información referente al funcionamiento del bloque s_syncro del esquemático principal de la tarjeta T335; en función de lograr una óptima explotación y mantenimiento de la tarjeta; además. de constituir la base para futuras investigaciones encaminadas a descifrar el funcionamiento de los demás bloques de la tarjeta.. Para satisfacer los objetivos planteados el trabajo se dividió en: introducción, tres capítulos, conclusiones, recomendaciones, referencias bibliográficas y anexos. En el primer capítulo se exponen las principales funciones de la tarjeta T335 dentro del Complejo Volga, también se realiza una caracterización general de los FPGA atendiendo a su arquitectura, principales fabricantes y aplicaciones más comunes, y se toma como ejemplo representativo a los dispositivos pertenecientes a la familia Cyclone II de la Compañía Altera. El segundo capítulo abarca los procedimientos para la realización de ingeniería inversa de software; se muestran las características de la herramienta de simulación Quartus II,. 14.

(15) INTRODUCCIÓN. explicándose las principales particularidades del AHDL, como lenguaje empleado en la implementación de los códigos pertenecientes al componente programable de la tarjeta T335. En el último capítulo se realiza una descripción general de los bloques que contiene el diseño esquemático principal de la tarjeta T335. Seguidamente se realiza un análisis de los principios de funcionamiento del bloque s_syncro de la tarjeta T335, a través de la realización de ingeniería inversa del código presente en dicho bloque, corroborándose los resultados del análisis con las simulaciones hechas con la herramienta Quartus II. Como culminación se representan las conclusiones, recomendaciones y anexos.. 15.

(16) CAPÍTULO 1.. LOS FPGA EN EL COMPLEJO VOLGA. En el presente capítulo se realiza una breve descripción del Complejo de defensa antiaérea Volga, atendiendo a sus principales prestaciones, destinación y composición. Además se exponen algunas de las funciones de la tarjeta sincronizadora T335 dentro de dicho Complejo, y por último se caracterizan los FPGA de acuerdo a su arquitectura, principales fabricantes y aplicaciones más comunes; tomándose como ejemplo los dispositivos pertenecientes a la familia Cyclone II de la Compañía Altera, debido a que el FPGA tratado en el presente trabajo pertenece a dicha familia. 1.1. El Complejo Volga en la defensa del país El Complejo S75MK102 “Volga” es una estación de vigilancia del espacio aéreo con potentes prestaciones. Este esencialmente se encarga de la emisión e impacto de cohetes en un blanco pretendido. Puede derribar aviones que viajen a velocidades de hasta 1100 m/s, a distancias inferiores a 65 km, y alturas entre 0 y 30km. Entre los límites de altura se encuentra el cero, ya que también puede destruir objetivos terrestres. Tiene la capacidad de lanzar tres cohetes consecutivos con intervalos de tiempo de 6 segundos, con una probabilidad de destrucción del objetivo de 0.92 (González, 2006). El complejo coheteril inicialmente estuvo conformado por sistemas analógicos, que se caracterizaban por ser muy pesados y ocupaban gran espacio en el terreno. Tras el programa de modernización de armamentos que lleva a cabo las FAR, el complejo no quedó exento de ello y todos estos sistemas analógicos migraron a digitales. Con esta modernización se obtuvieron numerosas ventajas ya que se minimizó considerablemente el tamaño del sistema, al convertir una tecnología basada en válvulas al vacío en sistemas digitales con una alta capacidad de integración. Esta reducción le ofrece al sistema una movilidad mayor en el terreno, siendo esta una característica imprescindible en el Complejo, en vistas a contribuir a la vitalidad tanto del equipo como el personal que lo opera en la técnica de combate. Es importante destacar que el Complejo Volga realiza constantes exploraciones del espacio para detectar la posición del blanco.

(17) LOS FPGA EN EL COMPLEJO VOLGA. a derribar, por lo que puede ser localizado y atacado, si no es capaz de abandonar el lugar de disparo con rapidez, luego del tiro. Actualmente el complejo coheteril está conformado por un total de 18 tarjetas funcionales, de las cuales 13 tarjetas están implementadas con electrónica analógica y digital conjuntamente; las 5 tarjetas restantes están implementadas con electrónica programada El trabajo de un grupo de ingenieros especializados en el Complejo Volga ha contribuido a determinar los esquemas electrónicos y principios de funcionamiento de las trece de las tarjetas implementadas con electrónica analógica y digital conjuntamente, sin embargo esto no se ha logrado realizar a las cinco tarjetas implementadas con electrónica programada. Esta situación atenta contra las posibilidades de realizar una óptima explotación de las prestaciones del sistema, también dificulta su mantenimiento, obligando ante algún fallo de estas tarjetas, tener que enviarlas al exterior para su reparación. Esta situación genera gastos significativos, además del tiempo empleado desde que son enviadas, hasta que son recibidas luego de su reparación (González, 2006). Este complejo coheteril está diseñado para ser explotado directamente en la técnica de combate y para garantizar su disponibilidad en la misma, se hace necesario que las labores de reparación y mantenimiento sean realizadas por especialistas cubanos; ya que de esta forma se garantiza que ante cualquier dificultad, el tiempo de reparación sea el mínimo, además de contribuir a minimizar los gastos generados. Debido a las circunstancias expuestas anteriormente se hace necesario determinar los principios de funcionamiento de las cinco tarjetas basadas en electrónica programada, denominadas por sus fabricantes como T139, T335, T232, T811 y T139. Estas tarjetas son circuitos impresos de cuatro capas y cada una cuenta con al menos un dispositivo lógico programable (PLD), en el cual, se encuentran implementadas las funciones digitales de cada una (Pierrat, 2012). El PLD puede ser un CPLD (Dispositivo Lógico Programable Complejo) o un FPGA (Arreglo de compuertas Programables en el Campo), perteneciente a la compañía de Altera, la elección entre uno y otro está determinada por la capacidad lógica que requiera el funcionamiento de la tarjeta en cuestión.. 17.

(18) LOS FPGA EN EL COMPLEJO VOLGA. 1.1.1. Funciones de la tarjeta T335 dentro del Complejo Volga La T335 es una tarjeta electrónica que cumple varias funciones, entre las cuales se encuentran la formación de los pulsos de sincronismo de todos los sistemas, la formación de los pulsos de sincronismo para las conmutaciones y señalizaciones de los puestos de trabajo 320 y 420, y la formación de las señales del bus serie (Pierrat, 2010). En la Figura 1.1 se ofrecen detalles sobre el enlace funcional entre las tarjetas del complejo Volga y se ubica la tarjeta T335.. Figura 1.1 Enlace funcional entre las tarjetas electrónicas pertenecientes al Complejo Volga (Pierrat, 2010). De la Figura anterior se deduce que la tarjeta T335 intercambia información con los puestos de trabajo 320 y 420 a través del bus de datos B (D0-D7) de ocho bits. El puesto de trabajo 320 lo ocupa un operador encargado de realizar las correcciones de azimut para el disparo del cohete, mientras que el 420 lo ocupa el operador encargado del control de las rampas de lanzamiento. El. 18.

(19) LOS FPGA EN EL COMPLEJO VOLGA. bus de datos contiene la información sobre el estado de los interruptores, botones y conmutadores, además de la información para el encendido o apagado de los led de señalización de los puestos de trabajo 320 y 420 (Pierrat, 2010). La T335 también se encarga de enviar señales hacia las tarjetas T331, T332, T333 y T334. Estas señales controlan el intercambio de información de dichas tarjetas con la cabina de antenas y las rampas de lanzamiento de cohetes (Pierrat, 2010). Esta tarjeta también se enlaza con la T139 mediante el bus serie (SB1), a través del cual se envían señales de sincronismo. A continuación en las Figuras 1.2 y 1.3 se muestra una imagen y un esquema funcional de la tarjeta T335 respectivamente.. Figura 1.2 Vista frontal de la tarjeta T335 (Pierrat, 2010).. 19.

(20) LOS FPGA EN EL COMPLEJO VOLGA. Figura 1.3 Esquema funcional de la tarjeta T335 (Pierrat, 2010). Como se puede observar el esquema funcional es una reproducción aproximada de la imagen de la tarjeta T335, donde se aprecia que tiene dos conectores (CON1 y CON2) para las señales de entrada/salida, tiene seis buffers de almacenamiento de 8 bits cada uno y por último, posee el FPGA EP2C70F896C8, perteneciente a la familia Cyclone II de la compañía Altera. Este dispositivo tiene un voltaje de alimentación de 3.3 volt y una frecuencia máxima de trabajo de 80 MHz. En la siguiente sección se expondrán las principales características de los FPGA, específicamente de los dispositivos pertenecientes a la familia Cyclone II de Altera y se tomará como ejemplo representativo el FPGA EP2C70F896C8. 1.2. Caracterización de los FPGA Los dispositivos Field Programable Gate Arrays (FPGA), en español Arreglos de Compuertas Programable en el Campo, tal como su nombre lo indica son un arreglo matricial de bloques lógicos programables en cualquier espacio físico (Sisterna, 2012).. 20.

(21) LOS FPGA EN EL COMPLEJO VOLGA. Los FPGA son circuitos lógicos programables directamente por el usuario, lo cual requiere de herramientas de costo relativamente bajo, como lo son el software de desarrollo y el dispositivo grabador. La grabación o programación de uno de estos dispositivos se puede llevar a cabo en milisegundos (Tropea, 2010). El FPGA es un dispositivo de fácil programación mediante Lenguajes de Descripción de Hardware (HDL), se permite la programación concurrente y su principal ventaja es que puede programarse múltiples veces bajando los costos cuando en el diseño se encuentran fallos y se requiera que sea reprogramado (Castillo et al., 2008). 1.2.1. Arquitectura general de un FPGA Un FPGA consiste en arreglos de varios bloques programables (bloques lógicos) los cuales están interconectados entre sí a través de canales verticales y horizontales, y cuenta además con bloques de entrada/salida (Figura 1.4). En general, se puede decir que posee una estructura bastante regular, aunque el bloque lógico y la arquitectura de interconexión varía de un fabricante a otro (Maxfield, 2004).. Figura 1.4 Arquitectura básica de un FPGA (Bozich, 2005). A continuación se realizará una breve descripción de cada una de las partes que componen la arquitectura general de un FPGA.. 21.

(22) LOS FPGA EN EL COMPLEJO VOLGA. Bloques Lógicos El bloque lógico consta de una parte combinacional, que permite implementar funciones lógicas booleanas, más una parte secuencial que permite sincronizar la salida con una seña de reloj externa e implementar registros. La parte combinacional varía de un fabricante a otro. A continuación se explican dos de ellas (Bozich, 2005). Bloque lógico basado en LUT (look-up table): El concepto fundamental de las LUT es relativamente simple. Un grupo de señales de entrada es usado como un índice (apuntador) a una tabla de búsqueda. El contenido de esta tabla es organizada tal que la celda apuntada por cada combinación a la entrada contiene el valor deseado. Suponiendo que la LUT está formada de celdas SRAM (podrían ser celdas antifuse, EEPROM o FLASH), una técnica común es usar las entradas para seleccionar la celda SRAM usando una cascada de compuertas de transmisión como se muestra en la Figura 1.5. Si una compuerta de transmisión está habilitada (activa), esta pasa la señal recibida a la salida. Si la compuerta está deshabilitada, la señal de salida es eléctricamente desconectada del alambre. El símbolo de la compuerta de transmisión con un pequeño círculo indica que esta compuerta estará activa con un cero lógico sobre la entrada de control (Bozich, 2005). En una LUT de n x 1 (entradas x salidas) es posible implementar cualquier función lógica de n entradas .. Figura 1.5 LUT basada en compuertas de transmisión (León, 2009).. 22.

(23) LOS FPGA EN EL COMPLEJO VOLGA. Bloque lógico basado en multiplexores: El bloque lógico basado en multiplexores, como el de la Figura 1.6 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 rutado. Como contrapartida, no se puede implementar cualquier función lógica de n entradas, como ocurría con las LUTs. En caso necesario, esta función lógica hay que repartirla entre varios bloques lógicos (Bozich, 2005).. Figura 1.6 Bloque lógico basado en MUX (multiplexores) (León, 2009).. 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 cada una de ellas:. 1. 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. 23.

(24) LOS FPGA EN EL COMPLEJO VOLGA. abiertos. La desventaja obvia es que no son reutilizables, pero por otro lado disminuyen considerablemente el tamaño y costo de los dispositivos (Sisterna, 2012). 2. SRAM (Static RAM): 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, ya que al ser SRAM, el contenido de la memoria se pierde cuando se deja de suministrar energía. La información binaria de las 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 (Sisterna, 2012). 3. 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 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 más reducido que el de una celda de SRAM, aunque sin llegar al tamaño reducido 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 dispositivo auxiliar para guardar la configuración interna, como en el caso de la SRAM (Sisterna, 2012). 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. Este tipo de FPGA generalmente utiliza tecnología antifusible. 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. 24.

(25) LOS FPGA EN EL COMPLEJO VOLGA. 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 basados en celdas Flash suelen emplear un bloque lógico sencillo para incrementar los recursos de interconexión, como ocurre con los FPGA de antifusibles (León, 2009). Una arquitectura con bloques pequeños permite utilizar todos los recursos del dispositivo, sin embargo se tendrá que utilizar un gran número de estas para poder implementar funciones lógicas de varios términos, lo cual genera un tiempo de retardo por cada bloque implementado. Cuando el tamaño del bloque es grande sucede lo contrario; en este tipo de bloques es posible utilizar un gran número de compuertas por lo que se pueden implementar funciones lógicas de varios términos con pocos bloques. Que el tamaño del bloque sea grande no afecta la frecuencia máxima de trabajo, ya que se está hablando de que existe una gran cantidad de compuertas que pueden ser utilizadas en la función paralelamente, siendo el mismo tiempo de retardo para todas. Sin embargo, cuando las funciones son pequeñas en comparación con el tamaño del bloque, no es necesario utilizar todas las compuertas que soporta el bloque, por lo que este tipo de bloques no son precisamente los más indicados para desempeñar pequeñas funciones (León, 2009). Bloques entrada/salida La función de un bloque de entrada/salida es permitir el paso de una señal hacia dentro o hacia el exterior del dispositivo. Además debe contar con recursos tales como (Bozich, 2005):  Salidas configurables como TRI-STATE u open-collector.  Entradas con posibilidad de pull-up o pull-down programables.  Registros de salida.  Registros de entrada Fabricantes de los FPGA. El mercado de los FPGA se ha colocado en un estado donde hay dos productores de FPGA de propósito general que están a la cabeza del mismo, y un conjunto de otros competidores quienes se diferencian por ofrecer dispositivos de capacidades únicas.. 25.

(26) LOS FPGA EN EL COMPLEJO VOLGA. Xilinx y Altera son los dos grandes líderes en la fabricación de FPGA y ambos fabricantes tienen productos similares. Sin embargo, existen diferencias menores: Xilinx sigue apostando por la reconfiguración dinámica,. mientras que Altera la ha descartado totalmente. Otra. diferencia es el nivel de las herramientas, históricamente Xilinx permite trabajar a un nivel más bajo que Altera (Scalvinoni, 2005). La Compañía Lattice Semiconductor lanzó al mercado dispositivos FPGA con tecnología de 90nm. En adición, Lattice es un proveedor líder en tecnología no volátil, FPGA basadas en tecnología Flash, con productos de 90nm y 130nm. Actel tiene FPGA basados en tecnología Flash reprogramable. También ofrece FPGA que incluyen mezcladores de señales basados en Flash. QuickLogic tiene productos basados en antifusibles (programables una sola vez). Atmel es uno de los fabricantes cuyos productos son reconfigurables (el Xilinx XC62xx fue uno de éstos, pero no están siendo fabricados actualmente). Ellos se enfocaron en proveer microcontroladores con FPGA todo en el mismo encapsulado. Achronix Semiconductor tienen en desarrollo FPGA muy veloces (Scalvinoni, 2005). 1.2.2.. La familia Cyclone II de Altera. Basándose en el éxito alcanzado por la familia de FPGA Cyclone, Altera no dudó en lanzar los FPGA Cyclone II, que con el tiempo se convertirían en la solución líder en el mercado en lo que a FPGA de bajo costo realizadas con tecnología de 90nm se refiere. Para el desarrollo y producción en masa de las mismas, Altera adoptó una nueva metodología de diseño. El enfoque de la "optimización por eliminación" tradicional involucraba reducir el costo de un producto de alta densidad, eliminando los rasgos en el software, y aunque este método es marginalmente efectivo en la reducción de los costos de los FPGA, no alcanza el menor costo posible para un tamaño y encapsulado determinado (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. Estos dispositivos se construyeron después de una cuidadosa selección de factores de forma pequeños, que ofrecieran suficientes pines de entrada/salida.. 26.

(27) LOS FPGA EN EL COMPLEJO VOLGA. El dispositivo Cyclone II de Altera es un tipo de FPGA basado en un arreglo bidimensional de bloques lógicos (Logic Array Blocks, LAB). Además, están formados por elementos reconfigurables SRAM de 1.2V, 90nm con un alta densidad de elementos lógicos (logic elements, LEs) entre 4608 y 68416, hasta 1.1 Mbits de memoria RAM embebida. También, cuenta con bloques dedicados adicionales como son los de memoria RAM embebidas de 4K, de 13 a 150 multiplicadores embebidos de 18x18, de 2 a 4 PLL’s, soporte de memoria externa de alta velocidad. (DDR,. DDR2,. SDR, SDRAM. y QDRII SRAM) y unidades de. entrada/salida avanzadas. La cantidad exacta de cada uno de los elementos mencionados depende del dispositivo elegido, pues estas características están presentes en toda la familia Cyclone II (Altera Corporation, 2010). La arquitectura del FPGA Cyclone II presenta un diseño bidimensional compuesto por filas y columnas entre los cuales están los arreglos de bloques lógicos . La disposición de los componentes se aprecia en la Figura 1.7, donde se puede observar bloques de memoria, multiplicadores embebidos, los PLL’s, los arreglos lógicos y los bloques de entrada/salida (Input/Output compuestos. por. Element,. IOE).. Por. lo. tanto,. estos. dispositivos. están. arreglos de bloques lógicos (LAB’s), bloques de entrada/salida (IOE’s),. PLL’s, memorias y multiplicadores (Altera Corporation, 2010).. Figura 1.7 Diagrama de bloques del FPGA Cyclone II EP2C20 (Altera Corporation, 2010).. 27.

(28) LOS FPGA EN EL COMPLEJO VOLGA. A continuación se muestra una tabla que resume los parámetros principales del FPGA EP2C70F896C8 perteneciente a la familia Cyclone II de Altera; puesto que este dispositivo es el empleado en el desarrollo de este trabajo. Tabla 1.1 Parámetros del FPGA EP2C70F896C8 (Altera Corporation, 2013). Información Técnica. EP2C70F896C8. Número de LABs. 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 Pines. 90 dB 1152000 896. Este dispositivo está catalogado como el más lento de la familia Cyclone II, y se encuentra actualmente en el mercado internacional a un precio de 281.60 dólares (Altera Corporation, 2013). 1.2.3. Principales aplicaciones de los FPGA Si se hace una búsqueda de lo que se ha implementado hoy en día sobre FPGA, se hace notar que existe mucho desarrollo sobre el área de procesado de señales y de comunicaciones. Con la facilidad de programación de los FPGA, se pueden implementar desde algoritmos muy sencillos hasta los más complejos; convirtiéndolos en sistemas embebidos para aplicaciones específicas, con la posibilidad de implementar paralelismo y así mejorar el desempeño del sistema diseñado (Tropea, 2010). Las aplicaciones donde más comúnmente se utilizan los FPGA incluyen a los Procesadores Digitales de Señales (DSP), la Radio Definido por Software (SDR), sistemas aeroespaciales y de. 28.

(29) LOS FPGA EN EL COMPLEJO VOLGA. defensa, prototipos de ASIC, sistemas de imágenes para medicina, sistemas de visión para computadoras, reconocimiento de voz, bioinformática, emulación de hardware de computadora, entre otras. Cabe notar que su uso en otras áreas es cada vez mayor, sobre todo en aquellas aplicaciones que requieren un alto grado de paralelismo (Tropea, 2010).. 29.

(30) CAPÍTULO 2.. HERRAMIENTAS. EMPLEADAS. EN. LA. REALIZACIÓN DE INGENIERÍA INVERSA. En el presente capítulo se explican algunos procedimientos utilizados para la realización de ingeniería inversa de software, tales como la reestructuración y la redocumentación del código. A continuación se presentan las principales características y ventajas de la herramienta de simulación Quartus II en su edición Web, y por último se caracterizan los lenguajes de descripción de hardware prestando especial atención a las particularidades del AHDL; lenguaje empleado en la implementación de los códigos pertenecientes al componente programable de la tarjeta T335. 2.1. Fundamentos de la ingeniería inversa de software Los países desarrollados que se mantienen a la vanguardia en modos de producción y en tecnología; son quienes generan la mayor parte de la ingeniería en el mundo. Esto crea un fenómeno de desigualdad tecnológica a nivel mundial que se agudiza debido a la inmensa diferencia en calidad y cantidad de recursos que son destinados a las instituciones dedicadas a la investigación y desarrollo en estos países, en comparación con aquellos que se enfocan sobre todo a formar técnicos (naciones en vías de desarrollo). Ante este panorama, se buscan alternativas para aprovechar y reutilizar todos los conocimientos existentes sobre la forma de crear producto (Toscano, 2013). La ingeniería tradicional parte de un conjunto de especificaciones técnicas que contienen información sobre la funcionalidad de la mercancía, su cumplimiento de normas, sustentabilidad ambiental y viabilidad económica entre otras, para plantear su adecuada fabricación y así llegar a un artículo físico. Se requiere de un considerable tiempo de estudio del mercado, diseño del producto y del proceso de producción, modelado, pruebas de factibilidad y funcionalidad, estudio de materias primas, evaluaciones de costos y tiempos, etcétera. Es un procedimiento difícil para la obtención de productos con calidad (Toscano, 2013)..

(31) HERRAMIENTAS EMPLEADAS EN LA REALIZACIÓN DE INGENIERÍA INVERSA. La ingeniería inversa se define como aquel proceso analítico-sintético que busca determinar las características y/o funciones de un sistema, una máquina o un producto o una parte de un componente o un subsistema. El propósito de la ingeniería inversa es determinar un modelo de un objeto o producto o sistema de referencia (Toscano, 2013). De la definición anterior se puede apreciar que la ingeniería inversa es un proceso que busca obtener información y es aplicable a diversos campos. Este trabajo está referido a ingeniería inversa de un producto software; específicamente el código fuente almacenado en el componente programable de un FPGA Cyclone II. 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 abstracción más elevado que el código fuente. Según va aumentando la abstracción crece la complejidad del trabajo, así como la necesidad de comprensión de la aplicación. La ingeniería inversa debe ser capaz de abstraer, 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 abstracción de un proceso de ingeniería inversa y las herramientas que se utilizan para realizarlo aluden a la sofisticación de la información de diseño que se puede extraer del código fuente. El nivel de abstracción ideal deberá ser lo más alto posible, es decir, el proceso de ingeniería inversa debe ser capaz de derivar (Ameneyro, 2012):  Sus representaciones de diseño de procedimiento (bajo nivel de abstracción).  La información de las estructuras de datos y de programas (nivel de abstracción ligeramente elevado).  Modelos de flujo de datos y de control (un nivel de abstracción relativamente alto).  Modelos de entidades y de relaciones (un elevado nivel de abstracción). A medida que crece el nivel de abstracción 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).. 31.

(32) HERRAMIENTAS EMPLEADAS EN LA REALIZACIÓN DE INGENIERÍA INVERSA. En las siguientes secciones se expondrán diferentes acciones encaminadas a efectuar ingeniería inversa a determinado código fuente. 2.1.1. Ingeniería inversa para comprender el 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 abstracciones de procedimientos, se analiza el código en distintos niveles de abstracción: sistema, programa, componente, configuración y sentencia (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. Cada uno de los programas con los que consta el sistema de aplicaciones representará una abstracción funcional con un elevado nivel de detalle. También se creará un diagrama de bloques como representación de la iteración entre estas abstracciones funcionales. Cada uno de los componentes efectúa una sub-función, y representa una abstracción definida de procedimientos. En cada componente se crea una narrativa de procesamiento (Pressman, 2003). 2.1.2.. Ingeniería inversa para reestructurar el código. Chifofsky define la ingeniería inversa para reestructurar el código de la siguiente manera: “La transformación desde una forma de representación a otra en el mismo nivel de abstracción, preservando las características externas del sistema (funcionalidad y semántica)” La reestructuración del software modifica el código fuente y/o los datos en un intento de adecuarlo a futuros cambios. En general, la reestructuración no modifica la arquitectura global del programa, tiende a centrarse en los detalles de diseño de módulos individuales y en estructuras de datos locales definidas dentro de los módulos. 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 (Pressman, 2003).. 32.

(33) HERRAMIENTAS EMPLEADAS EN LA REALIZACIÓN DE INGENIERÍA INVERSA. A continuación algunos beneficios que se pueden lograr cuando se reestructura el software (Ameneyro, 2012):  Programas de mayor calidad, con mejor documentación y menos complejidad, y ajustados a las prácticas y estándares de la ingeniería del software moderna.  Reduce la frustración entre ingenieros del software que deban trabajar con el programa, mejorando por tanto la productividad y haciendo más sencillo el aprendizaje.  Reduce el esfuerzo requerido para llevar a cabo las actividades de mantenimiento.  Hace que el software sea más sencillo de comprobar y de depurar. La reestructuración se produce cuando la arquitectura básica de la aplicación es sólida, aun cuando sus interioridades técnicas necesiten un retoque. Comienza cuando existen partes considerables del software que son útiles todavía, y solamente existe un subconjunto de todos los módulos y datos que requieren una extensa modificación (Pressman, 2003). 2.1.3. Ingeniería inversa para redocumentar del código La redocumentación es también una forma de ingeniería inversa. Es el proceso mediante el que se produce documentación retroactivamente 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. Se piensa en ella como una transformación desde el código fuente a pseudocódigo y/o prosa, esta última considerada como más alto nivel de abstracción que la primera (Pressman, 2003). Para el caso específico de esta tesis, que tiene como material de estudio del código en AHDL del bloque s_syncro, perteneciente al FPGA EP2C70F896C8 Cyclone II; como primer punto se examinará la funcionalidad general de todo el sistema, para tener una visión general de la interoperabilidad entre aplicaciones,. posteriormente. se enfocará el análisis en el bloque. s_syncro de la tarjeta T335; al que se le realizarán. abstracciones de procedimientos. representadas por su código fuente, para esto se creará una narrativa de procesamiento de dicho. 33.

(34) HERRAMIENTAS EMPLEADAS EN LA REALIZACIÓN DE INGENIERÍA INVERSA. bloque basada en esquemas electrónicos. También se realizará una documentación del código fuente, mediante la inserción de comentarios a cada línea de código, en vistas a facilitar el conocimiento del programa. Para realizar este procedimiento se empleará como herramienta de apoyo el software Quartus II, que permitirá comprobar los resultados del análisis efectuado al código AHDL, a través de la simulación. 2.2. Caracterización de la herramienta de simulación QUARTUS II Quartus II es una herramienta de software producido por Altera para el análisis y la síntesis de los diseños en HDL. Ella permite al desarrollador compilar los diseños, realizar análisis temporales, examinar diagramas RTL (Registro de transferencia lógico) y configurar el dispositivo de destino con el programador. La Edición Web es una versión gratuita de Quartus II que puede ser descargada o enviada gratuitamente por correo. Esta edición permite la compilación y la programación de un número limitado de dispositivos de Altera. La familia de FPGA de bajo costo Cyclone, está soportada por esta edición, por lo que esta será la versión usada para el trabajo con el FPGA EP2C70F896C8 de dicha familia. Entre las ventajas que presenta este software se tienen (Altera Inc, 2013b):  Posee editor de lenguaje simbólico.  Posee un editor de formas de onda que puede ser utilizado para describir un sistema digital, y determinar el formato de las señales de entrada en una simulación.  Posee un compilador que es capaz de recibir como entrada tanto archivos con la descripción del sistema (VHDL, VERILOG o AHDL), como archivos con circuitos esquemáticos. Además, puede ejecutar simulaciones, usando como archivo de entrada uno creado por el editor de formas de onda.  Puede programar un dispositivo CPLD (primero es necesario especificar el modelo y los pines de entrada y salida que se usarán). La Figura 2.1 muestra las etapas del proceso de diseño en la plataforma ALTERA.. 34.

(35) HERRAMIENTAS EMPLEADAS EN LA REALIZACIÓN DE INGENIERÍA INVERSA. Figura 2.1 Etapas del proceso de diseño en la plataforma ALTERA (Altera Inc, 2013b). 2.3. Lenguajes de descripción de hardware usados en la programación de FPGA Los lenguajes de descripción de hardware (HDL) permiten modelar sistemas digitales completos. Mediante diferentes herramientas de software estos modelos pueden luego sintetizarse para implementarlos como circuitos reales. La utilización de HDL para sintetizar sistemas digitales y la utilización de PLD 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 de diseño de circuitos integrados (Güichal, 2005). Al utilizar un HDL para modelar un sistema, es importante recordar que se está modelando hardware, y no escribiendo software. El software se caracteriza por ser secuencial, una CPU ejecutará cada instrucción después de la anterior. 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 la variable tiempo juega un papel predominante. Un cambio en el tiempo de propagación de una compuerta o el no cumplir con los tiempos de establecimiento de un circuito puede cambiar de manera radical el comportamiento de un sistema electrónico digital. Para poder modelar hardware los HDL permiten describir la concurrencia y paralelismo que se observa en un sistema de hardware (muchas cosas y muchas señales cambian al mismo tiempo) (Güichal, 2005).. 35.

(36) HERRAMIENTAS EMPLEADAS EN LA REALIZACIÓN DE INGENIERÍA INVERSA. Usando HDL, los sistemas digitales pueden describirse de diferentes maneras. Estos modelos pueden ir desde el nivel abstracto de un algoritmo o el comportamiento general de un circuito, hasta un modelo a nivel de interconexión de compuertas lógicas. En una descripción estructural, se definen de manera precisa las interfaces de cada componente de un sistema y sus interconexiones. Así se arma una jerarquía de componentes, desde los más básicos hasta el nivel superior que describe el sistema completo. Los HDL también permiten describir el comportamiento de los componentes. Utilizando un conjunto de instrucciones secuenciales puede modelarse el comportamiento de un sistema digital y controlar la variable tiempo en los modelos (Güichal, 2005). Existen numerosos lenguajes de descripción de hardware, entre ellos se encuentran (Noriega, 2008):  VHDL: Es el acrónimo que representa la combinación de VHSIC (Very High Speed Integrated Circuit) y HDL. Es un lenguaje textual de alto nivel de abstracción, definido por el IEEE (ANSI/IEEE 1076-1993), utilizado para la descripción del hardware de los 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 abstracción.  AHDL: Es el acrónimo de Altera Hardware Description Language, es un lenguaje de descripción de hardware, con un nivel medio de abstracción, desarrollado por la compañía Altera.  ABEL: Es el acrónimo de Advanced Boolean Expression Language. Es un lenguaje de descripción de hardware con un nivel de bajo de abstracción. y un conjunto de. herramientas de diseño para programar dispositivos lógicos programables (PLD) Cuanto más alto es el nivel de abstracción, en forma más simple se puede especificar un diseño para generar lógica compleja. Sin embargo, es útil el conocimiento de las estructuras de hardware a utilizar ya que a veces la síntesis se realiza de modo tal que el diseñador pierde la visión de cómo el compilador implementa lo especificado, con el riesgo de un. 36.

(37) HERRAMIENTAS EMPLEADAS EN LA REALIZACIÓN DE INGENIERÍA INVERSA. uso quizás no muy eficiente de hardware que pueda hasta comprometer la performance de velocidad, consumo de potencia, etc. Teniendo en cuenta que el código fuente con que se trabajará está implementado en AHDL, se realizará una breve descripción del mismo. 2.3.1. Principales características del lenguaje de programación 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, tablas de verdad y lógica parametrizada. 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 y utiliza el modo “behavioral” para describir la lógica que se desee implementar (Altera Corporation, 1996). Se puede utilizar cualquier editor de texto para crear archivos de diseño de texto en AHDL, las únicas restricciones de que estos ficheros deben guardarse con la extensión .tdf (Text Design File), y que las líneas no deben exceder los 255 caracteres. El compilador de Quartus no diferencia entre mayúsculas y minúsculas en la compilación de cualquier código en AHDL (no es case sensitive) (Altera Corporation, 1996). A continuación se realizará una descripción de las partes que componen un archivo de texto en AHDL y también se hará referencia a los identificadores, palabras reservadas, operadores, puertos y primitivas empleadas en la declaración del mismo. Estructura de un archivo .tdf Un archivo .tdf presenta una estructura determinada por once secciones. De estas secciones, solo dos son imprescindibles y el resto son opcionales, esto no significa que no sean necesarias. A continuación se mencionan las mismas y se da una breve descripción de cada una (Betz, 2010). 1. Título. 37.

(38) HERRAMIENTAS EMPLEADAS EN LA REALIZACIÓN DE INGENIERÍA INVERSA. La sección Título es un campo opcional, único, que no afecta a la descripción del hardware. Permite incorporar comentarios que luego serán añadidos al reporte de compilación (.rpt). Tributa a la documentación del diseño (Betz, 2010). 2. Include La sección Include es un campo opcional, múltiple, que 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). 3. Constant La sección Constant es un campo opcional, múltiple, que permite definir un nombre simbólico y asociarlo a un valor constante (Betz, 2010). 4. Define La sección Define es un campo opcional, múltiple, que permite una función evaluable, que devuelve un valor de acuerdo a sus argumentos. Basado en esto el compilador evalúa las expresiones y calcula el valor numérico de las mismas. Esta expresión no genera hardware (Betz, 2010). 5. Parameters La sección Parameters es un campo opcional, múltiple, que permite declarar parámetros que controlan la implementación de una mega función o macro función parametrizada. Estos parámetros pueden ser nombres definidos por el usuario, o por ALTERA. Un parámetro puede ser usado sólo luego de ser declarado. En la declaración se puede asignar a los parámetros valores por defecto. El compilador busca el valor del parámetro desde la instancia de la función hasta el nivel tope. Se sigue luego por los valores por defecto (Betz, 2010). 6. Prototype. 38.

(39) HERRAMIENTAS EMPLEADAS EN LA REALIZACIÓN DE INGENIERÍA INVERSA. La sección Prototype es un campo opcional, que permite describir una función, compuesta por: nombre de la función, entradas, parámetros, salidas y puertas bidireccionales (Betz, 2010). 7. Options La sección Options es un campo opcional, que permite activar los bits Turbo y Security de los dispositivos de Altera. Además determina el orden por defecto de los bits del archivo (Betz, 2010). 8. Assert La sección Assert es un campo opcional, que permite probar y validar una expresión arbitraria (Betz, 2010). 9. Subdesign La sección Subdesign es un campo 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 MACHINEINPUT y MACHINEOUTPUT para importar y exportar máquinas de estado. Es posible asignar un valor por defecto de GND o VCC para las entradas en caso que no sean usadas en un nivel superior (Betz, 2010). 10. Variable La sección Variable es un campo necesario, donde se declaran las variables usadas en la sección LOGIC para definir la lógica interna, o sea, que se declaran variables que representan y retienen información interna. Las variables pueden declararse como nodos ordinarios o triestado, primitivas, mega funciones, macro funciones o máquinas de estado. También pueden generarse variables condicionalmente con la sentencia If Generate (Betz, 2010). 11. Logic La sección Logic es un campo necesario, define la operación lógica del programa y se encuadra entre las palabras claves BEGIN y END. Esta lógica puede definirse mediante ecuaciones booleanas, lógica condicional o tablas de verdad. Puede incluir sentencias por defecto,. 39.

(40) HERRAMIENTAS EMPLEADAS EN LA REALIZACIÓN DE INGENIERÍA INVERSA. ecuaciones booleanas, tablas de verdad, referencias a funciones In_Line y sentencias de tipo Case, Foro Generate, If Generate, If Then (Betz, 2010). Identificadores y palabras reservadas Como en todo lenguaje de descripción de hardware, AHDL tiene una serie de palabras e identificadores reservados, que no son más que expresiones que tiene un significado particular para el lenguaje. Los ejemplos más clásicos serían las palabras usadas en construcciones de flujo de control, tales como if, then, y else, presentes en casi todos los lenguajes de programación (Altera Corporation, 1996). Las palabras reservadas difieren de los identificadores reservados en que las primeras pueden ser empleadas como nombres simbólicos si son encerradas en comillas (‘nombre’), mientras que los identificadores no cumplen esta condición (Altera Corporation, 1996). A continuación dos tablas con las palabras e identificadores reservados en AHDL respectivamente. Tabla 2.1 Palabras reservadas en AHDL (Altera Inc, 2013a). AND ASSERT BEGIN BIDIR BITS BURIED CASE CLIQUE CONNECTED_PINS CONSTANT DEFAULTS DEFINE DESIGN DEVICE DIV ELSE ELSIF END FOR. FUNCTION GENERATE GND HELP_ID IF INCLUDE INPUT IS LOG2 MACHINE MOD NAND NODE NOR NOT OF OPTIONS OR OTHERS. OUTPUT PARAMETERS REPORT RETURNS SEGMENTS SEVERITY STATES SUBDESIGN TABLE THEN TITLE TO TRI_STATE_NOD E VARIABLE VCC WHEN WITH XNOR XOR. Tabla 2.2 Identificadores reservados en AHDL (Altera Inc, 2013a) ALT_INBUF ALT_OUTBUF ALT_OUTBUF_TRI ALT_IOBUF CARRY CASCADE CEIL DFF. EXP FLOOR GLOBAL JKFF JKFFE LATCH LCELL LUT_INPUT. OPENDRN SOFT SRFF SRFFE TFF TFFE TRI USED. 40.

(41) HERRAMIENTAS EMPLEADAS EN LA REALIZACIÓN DE INGENIERÍA INVERSA. DFFE DFFEA DFFEAS. LUT_OUTPUT MEMORY. WIRE X. Operadores Los operadores son aquellos símbolos que indican algún tipo de operación o acción. A pesar de que pueden clasificarse en muchas categorías, las dos más comunes son los operadores lógicos y matemáticos (Altera Corporation, 1996). A continuación se ofrece una tabla con los operadores de mayor uso en AHDL. Tabla 2.3 Operadores matemáticos y lógicos en AHDL (Altera Inc, 2013a) Operador Significado Operador Significado + +unario > mayor -unario >= mayor o igual ! NOT lógico < menor ^ exponente <= menor o igual MOD módulo & o AND AND DIV división !& o NAND AND negada * producto $ o XOR OR exclusivo LOG2 Log base 2 !$ o XNOR XOR negado + suma # u OR OR inclusivo resta !# o NOR OR negado == igualdad ? IF compacto. !=. desigualdad. Puertos Se entienden como puertos en AHDL a las variables presentes en las entradas y salidas de primitivas o macro funciones. También reciben esta denominación, aquellos puertos destinados a la entrada y salida de señales procedentes de los pines de la FPGA (Altera Corporation, 1996). Existen varios puertos, a continuación los más empleados. Tabla 2.4 Puertos en AHDL (Altera Inc, 2013a). Nombre Función INPUT Puerto de entrada OUTPUT Puerto de salida BIDIR Puerto bidireccional MACHINE INPUT Entrada de máquina de estado MACHINE OUTPUT Salida de máquina de estado .clk Entrada de reloj. 41.

(42) HERRAMIENTAS EMPLEADAS EN LA REALIZACIÓN DE INGENIERÍA INVERSA. .ena .reset .clrn .prn .d, .j, .k, .s, .r, .t .q. Habilitador de entrada (reloj o latch) Entrada reset de una máquina de estado. Clear Preset Entradas de datos de biestables D, JK, SR, y T. Salida de un biestable o latch.. Primitivas El término de primitiva, por sí solo, se explica con bastante claridad. No obstante se podría definir una primitiva como una función o bloque funcional ya existente, que puede ser utilizado en el diseño o modificado a voluntad por el diseñador de acuerdo a sus necesidades. AHDL hace gran uso de primitivas, las cuales se clasifican de acuerdo a la función que realizan; existen primitivas de registros, de funciones lógicas y de entrada/salida; a continuación las siguientes tablas relacionan cada una de ellas (Altera Corporation, 1996). Tabla 2.5 Primitivas de registros en AHDL (Altera Inc, 2013a). Primitiva Parámetros de entrada Salida LATCH (d, ena) (q) DFF (d, clk, clrn, prn) (q) DFFE (d, clk, clrn, prn, ena) (q) JKFF (j, k, clk, clrn, prn) (q) JKFFE (j, k, clk, clrn, prn, ena) (q) SRFF (s, r, clk, clrn, prn) (q) SRFFE (s, r, clk, clrn, prn, ena) (q) TFF (t, clk, clrn, prn) (q) TFFE (t, clk, clrn, prn, ena) (q) Tabla 2.6 Primitivas de funciones lógicas en AHDL(Altera Inc, 2013a). Primitiva Descripción AND2 AND de 2 entradas BAND2 AND de 2 entradas negadas OR2 OR de 2 entradas BOR2 OR de 2 entradas negadas NAND2 NAND de 2 entradas BNAND2 NAND de 2 entradas negadas NOR2 NOR de 2 entradas BNOR2 NOR de 2 entradas negadas XOR XOR de 2 entradas XNOR XNOR de 2 entradas NOT NOT GND Pone a tierra un nodo determinado. 42.

(43) HERRAMIENTAS EMPLEADAS EN LA REALIZACIÓN DE INGENIERÍA INVERSA. VCC. Asigna VCC a un nodo determinado. Tabla 2.7 Primitivas de entrada/salida en AHDL (Altera Inc, 2013a). Primitiva Descripción INPUT Pin de entrada OUTPUT Pin de salida BIDIR Pin bidireccional. 43.

(44) CAPÍTULO 3.. REALIZACIÓN DE INGENIERÍA INVERSA AL. CÓDIGO. FUENTE. DEL. BLOQUE. S_SYNCRO PERTENECIENTE AL DISEÑO ESQUEMÁTICO DE LA TARJETA T335. En el presente capítulo se describen de forma general los bloques que contiene el diseño esquemático principal de la tarjeta T335. También se hace un análisis de los principios de funcionamiento del bloque s_syncro, a través de la realización de la ingeniería inversa del código presente en dicho bloque. Al final se muestran los resultados de las simulaciones efectuadas al código con la herramienta Quartus II. 3.1. Descripción general de los principales bloques esquemáticos de la tarjeta T335 En el Anexo I se muestra el esquemático principal de la tarjeta T335, compuesto por varios bloques, dentro de los cuales se encuentran implementadas todas las funciones de dicha tarjeta dentro del Complejo Volga. Seguidamente se realizará una breve descripción de cada uno de estos bloques. Para que la tarjeta T335 pueda ejecutar todas sus funciones necesita señales de entrada que de acuerdo a su contenido, realizan una acción u otra en determinado bloque. También necesita diferentes señales de reloj que son empleadas para generar los sincronismos de los procesos. Estas señales de reloj son creadas a partir de la programación de dos de los bloques del esquemático principal; como contadores de 16 bits; las salidas de estos contadores tienen frecuencias diferentes y fueron tomadas en los demás bloques de acuerdo a la señal de reloj que se necesitaba para el procesamiento. Dichos bloques fueron nombrados. UPCNT16 y se. muestran en la Figura 3.1. La señal de entrada del primer bloque llamada CK80M (Figura 3.1), tiene una frecuencia de 80 MHz y a partir de esta se forman las 16 señales CK de salida, desde CK0 hasta CK15. La frecuencia de estas señales está determinada por la expresión siguiente:.

Figure

Figura 1.1 Enlace funcional entre las tarjetas electrónicas pertenecientes al Complejo Volga  (Pierrat, 2010)
Figura 1.2 Vista frontal de la tarjeta T335 (Pierrat, 2010).
Figura 1.3 Esquema funcional de la tarjeta T335 (Pierrat, 2010).
Figura 1.7  Diagrama de bloques del FPGA Cyclone II EP2C20 (Altera Corporation, 2010)
+7

Referencias

Documento similar