Ingeniería inversa del componente programable CPLD EPM7256SRI208 de la tarjeta T143
52
0
0
Texto completo
(2) Universidad Central “Marta Abreu” de Las Villas Facultad de Ingeniería Eléctrica Departamento de Telecomunicaciones y Electrónica. Ingeniería inversa del componente programable CPLD EPM7256SRI208 de la tarjeta T143 Tesis presentada en opción al Título Académico. Autor: Humberto Martínez Lindsay E-mail: [email protected] Tutor: T Cor Félix Enrique Gomara Tristá E-mail: [email protected] Cotutor: T Cor Gerardo García Pierrat Ing. Erisbel Orozco Crespo 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 hombre inteligente no es el que tiene muchas ideas sino el que sabe sacar provecho de las pocas que tiene”. Yo.
(5) V. DEDICATORIA. A mi mamá, mi familia y amigos que son lo más para mí..
(6) VI. AGRADECIMIENTOS A toda mi familia y a mis amigos que los quiero con el corazón..
(7) VI. TAREA TÉCNICA. Con el propósito de darle cumplimiento a los objetivos trazados para la realización de esta tesis, se tomaron en cuenta una serie de tareas técnicas de suma importancia para la confección del informe final, ellas fueron: Revisión bibliográfica de las características de los dispositivos CPLD de la familia MAX 7000S de Altera. Caracterización de la sintaxis del VHDL, lenguaje empleado en la programación del CPLD de la tarjeta 143. Análisis del código fuente del bloque code_sel de la tarjeta 143. Implementación los procedimientos para la realización de ingeniería inversa de software. Elaboración del informe final.. __________________ Firma del Autor. _______________ Firma del Tutor.
(8) VI. RESUMEN. El Complejo Volga es una estación de vigilancia del espacio aéreo que anteriormente estaba implementado con electrónica analógica; debido a la necesidad mejorar sus cualidades combativas y reducir el espacio en las cabinas, se decidió modernizar. Tras su modernización la estación quedó compuesta por tarjetas implementadas con electrónica digital programada, de las cuales hay que obtener su funcionalidad. La realización de esta investigación se centra en el determinar el funcionamiento del bloque code_sel que está dentro del componente programable de la tarjeta 143. A partir de la realización de ingeniería inversa al código fuente se explica el funcionamiento de este bloque. En este trabajo de diploma. se presentan las principales características de los. dispositivos empleados en la tarjeta 143, haciendo mayor énfasis en el CPLD (EPM7256SRI208) de la familia MAX 7000S de. Altera. También se muestran particularidades de VHDL,. procedimientos de ingeniería inversa y caracterización de la herramienta de simulación Quartus II..
(9) IX. ÍNDICE. INTRODUCCIÓN ........................................................................................................................... 11 CAPÍTULO 1.. GENERALIDADES DE LA ESTACIÓN DE CONDUCCIÓN DE COHETES ………………………………………………………………………………….15. 1.1.. Estación de vigilancia del espacio aéreo. .......................................................................... 15. 1.2.. La tarjeta 143 (T143) en la Estación de vigilancia del espacio aéreo ............................... 20. 1.3.. Caracterización de los CPLD (Complex PLD) ................................................................. 23. 1.4.. Lenguajes de descripción del hardware (HDL) empleados en la modelación de sistemas. digitales......................................................................................................................................... 27 CAPÍTULO 2.. METODOLOGÍA Y HERRAMIENTA PARA EL ANÁLISIS ........................ 30. 2.1.. Componentes de la tarjeta T143 ........................................................................................ 30. 2.2.. Particularidades del VHDL ............................................................................................... 34. 2.3.. Fundamentos de la ingeniería inversa de software ............................................................ 37. 2.3.1.. Ingeniería inversa para comprender el procesamiento ............................................... 39. 2.3.2.. Ingeniería inversa para reestructurar el código .......................................................... 40. 2.3.3.. Ingeniería inversa para redocumentar del código ...................................................... 40. 2.4.. Caracterización de la herramienta de simulación Quartus II............................................. 41. CAPÍTULO 3.. ANÁLISIS DE LA TARJETA 143 Y REALIZACIÓN DE INGENIERÍA. INVERSA AL BLOQUE CODE_SEL ............................................................................................ 43 3.1.. Análisis de la tensión de error y la tensión de referencia .................................................. 43. 3.2.. Análisis del bloque code_sel interno en el CPLD (EPM7256SRI208) ............................. 45.
(10) X. 3.2.1.. Explicación del proceso que se encarga de entrar el código establecido los. conmutadores de 10 bits ........................................................................................................... 47 3.2.2.. Explicación del proceso que se encarga del ajuste fino de frecuencia ....................... 48. CONCLUSIONES ........................................................................................................................... 50 RECOMENDACIONES .................................................................................................................. 51 REFERENCIAS BIBLIOGRÁFICAS ............................................................................................. 52.
(11) INTRODUCCIÓN. Dentro del programa de desarrollo del armamento, que lleva a cabo la Defensa Antiaérea y Fuerza Aérea Revolucionaria (DAAFAR), se encuentra la modernización de las Estaciones de vigilancia del espacio aéreo. Estos complejos coheteriles inicialmente estaban conformados 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 cinco están implementadas con electrónica programada y las trece restantes están implementadas con electrónica analógica y digital conjuntamente. Estas tarjetas cuentan 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 (CID3, 2008). Actualmente, las tarjetas 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 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.
(12) INTRODUCCIÓN. 12. 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 tarjetas electrónicas, 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). Este trabajo se enfoca solamente en análisis del código fuente de la tarjeta T143, encargada de realizar el control automático de la frecuencia del receptor de la estación. Por las razones expuestas se declara como situación problémica la necesidad de obtener los principios de funcionamiento de la tarjeta T143 a partir de su esquema electrónico y el código fuente que se encuentra en el componente programable de la misma. Esto lleva a plantear como problema científico: ¿Qué hacer para obtener la funcionalidad de la tarjeta T143 a partir de su esquema electrónico y del código fuente que se encuentra en el componente programable CPLD EPM7256SRI208? La investigación tiene como objeto de estudio: El código fuente y el esquema electrónico de la tarjeta T143 y el objetivo general que se propone es: Obtener por ingeniería inversa la funcionalidad de la tarjeta T143. Para lograr este fin se declaran los siguientes objetivos específicos:.
(13) INTRODUCCIÓN. 13. Caracterizar el funcionamiento de la tarjeta T143 dentro de la Estación de vigilancia del espacio aéreo. Describir la arquitectura de los CPLD, componente programable de la tarjeta T143. Caracterizar los Lenguajes de Descripción de Hardware (HDL) empleados en la programación de los CPLD. Identificar los componentes principales de la tarjeta T143. Determinar los procedimientos para la realización de ingeniería inversa de software. Exponer las ventajas de la herramienta de simulación Quartus II, para la obtención de la funcionalidad del código fuente de la tarjeta T143. Obtener el algoritmo de funcionamiento de la tarjeta T143, relacionado con la formación de las señales de salida a partir del empleo de las señales de entrada. El campo de acción lo constituye el estudio del código fuente del componente programable CPLD EPM7256SRI208 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é funciones tiene la tarjeta T143 dentro de la Estación de vigilancia del espacio aéreo? ¿Qué procedimientos de ingeniería inversa utilizar para obtener la funcionalidad del código fuente de la tarjeta T143? ¿Qué ventajas presenta la herramienta Quartus II para la obtención de la funcionalidad de la tarjeta T143? ¿Cómo obtener el funcionamiento de la tarjeta T143, a partir del análisis de su esquema electrónico y su código fuente? Con la elaboración de este trabajo se brindan los algoritmos de funcionamiento de la tarjeta T143, los cuales sirven para el cumplimiento de los objetivos del presente Trabajo de Diploma. Para satisfacer los objetivos planteados el trabajo se dividió en: introducción, tres capítulos, conclusiones, recomendaciones, referencias bibliográficas y anexos..
(14) INTRODUCCIÓN. En. el. 14. primer capítulo se exponen las principales funciones de la tarjeta T143 dentro de la. Estación de vigilancia del espacio aéreo, también se realiza una caracterización general de los CPLD atendiendo a su arquitectura y lenguajes empleados en su programación. En el segundo capítulo se identifican los principales componentes de la tarjeta T143 y se describe brevemente el VHDL, lenguaje empleado para su programación. También se abarcan. los. procedimientos para la realización de ingeniería inversa de software y se muestran las características de la herramienta de simulación Quartus II. En el último capítulo se realiza una breve descripción del esquema electrónico de la tarjeta T143. Seguidamente se caracteriza el bloque code_sel, encargado del control de la frecuencia perteneciente al esquemático de la tarjeta T143, de acuerdo a sus señales de entrada. Por último se muestra el funcionamiento del código presente en el bloque code_sel, a través de la realización de la ingeniería inversa a dicho código, 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) CAPÍTULO 1.. GENERALIDADES. DE. LA. ESTACIÓN. DE. CONDUCCIÓN DE COHETES. En el presente capítulo se realiza una breve descripción de la Estación de vigilancia del espacio aéreo resaltando su principal objetivo, composición y modo de operación. Se explica la función que realiza la tarjeta 143, principales características de los CPLD y se describe el HDL en la modelación de sistemas digitales. 1.1. Estación de vigilancia del espacio aéreo. El objetivo principal que cumple una unidad de DAA es lograr una alta efectividad del fuego contra los medios de agresión del enemigo, pudiendo alcanzarse los siguientes resultados: 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. Evitar, limitar o dificultar los aseguramientos a las tropas enemigas. Dentro de nuestra DAA se encuentra la Estación de vigilancia del espacio aéreo, que cumple con los objetivos antes planteados. Está 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. La Figura 1.1 muestra la Estación de vigilancia del espacio aéreo que está compuesta por: a la izquierda está la cabina PV, a la derecha está el camión con la cabina de dirección (Cabina UV) y en el centro está la Rampa de lanzamiento (RL) con el artículo montado encima..
(16) GENERALIDADES DE LA ESTACIÓN DE CONDUCCIÓN DE COHETES. Figura 1.1 Complejo “Volga” (CID3, 2008) La cabina UV está compuesta por los siguientes sistemas: Sistema sincronizador. Sistema de indicadores. Sistema de Dirección de las antenas y las Rampas de lanzamiento (SDA-RL). Sistema de TV (STO). Sistema de determinación de las coordenadas (SDC). Sistema de elaboración de los mandos (SEM). Sistema Radiotransmisor de los mandos (RTM). Sistema demodulador de las interferencias. (GSHB). Sistema Automatizado de lanzamiento (SAL). Sistema de imitación y control.. 16.
(17) GENERALIDADES DE LA ESTACIÓN DE CONDUCCIÓN DE COHETES. 17. La cabina PV está compuesta por: Sistema Transmisor. Sistema Receptor. Sistema de Antenas y Guías de ondas (SAGO). Sistema de los Mandos de fuerza de seguimiento sincrónico (MFSS). La Estación de vigilancia del espacio aéreo posee dos canales de trabajo: Radiolocalización y Televisión. En el canal de Radiolocalización hay dos regímenes de exploración, Rayo ancho (RA) y Rayo estrecho (RE), de los cuales RA también se emplea para el tiro, adicionándole a éste el régimen de Iluminación. En el régimen de RA se transmiten los impulsos de sondeo y se reciben las señales reflejadas por las antenas P11 ε y P12 β (son las antenas de forma rectangular) cuyos diagramas exploran o barren en 20 grados. En régimen RE se transmiten los impulsos de sondeo y se reciben las señales reflejadas por las antenas P13 ε y P14 β (son las antenas de forma circular) cuyos diagramas barren en 7 grados. En el caso de régimen Iluminación la transmisión se realiza por las antenas P13 y P14, que detienen el barrido de sus diagramas y la recepción se realiza por P11, P12, P13 y P14. En cualquiera de los regímenes la señal del cohete entra siempre por P11 y P12 (cuyo diagrama siempre barre). El régimen de RA se usa 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 portadores del CAR (Cohete Anti Radar). El canal de televisión posee dos regímenes de exploración: Campo visual ancho (Foco F-150) 6° diagonalmente y Campo visual estrecho (Foco F-500) 2° diagonalmente. El F-500 se utiliza en la localización de blancos a distancias mayores de 18Km y para el seguimiento del blanco durante el tiro, y F-150 para distancias menores de 18Km (CID3, 2008). El régimen RA para el tiro se emplea en los siguientes casos: Al tirar contra blancos de grandes dimensiones. Al tirar contra blancos en grupo..
(18) GENERALIDADES DE LA ESTACIÓN DE CONDUCCIÓN DE COHETES. 18. 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 75°. Al tirar contra blancos con sistemas automatizados de dirección. El régimen de Iluminación cómo régimen de tiro se utiliza en los siguientes casos: Al tirar contra blancos de pequeña SER (Superficie Efectiva de Reflexión). Al tirar contra blancos portadores de interferencias activas. 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 no maniobradores 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 (CID3, 2008). 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. Para lograr una buena realización del tiro se hace necesario conocer de antemano los datos iniciales para el tiro. Los datos iniciales para el tiro, 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. Los datos iniciales para el tiro son la velocidad del blanco (Vb), altura del blanco (Hb), parámetro del blanco (Pb), distancia hasta el punto de encuentro (ηe), y límites de la zona de destrucción (ηc: límite cercano) y (ηl: límite lejano). Donde la velocidad del blanco (Vb) se emplea para precisar el carácter del blanco (caza, caza-bombardero etc.) y, conjuntamente con Hb y Pb, sirve para.
(19) GENERALIDADES DE LA ESTACIÓN DE CONDUCCIÓN DE COHETES. 19. seleccionar el régimen de trabajo de la Estación de vigilancia del espacio aéreo y determinar el tiempo de permanencia del blanco en la zona de lanzamiento (CID3, 2008). 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, el tipo de fuego, el ritmo de tiro y valorar la posibilidad de traslado del fuego hacia el próximo blanco. El Sistema Automatizado de Lanzamiento (SAL) está destinado para preparar los datos iniciales durante el tiro. Consiste en una calculadora especial de acción continua, que de forma automática determina el límite lejano y el límite cercano de la zona de destrucción, la distancia hasta el punto de encuentro del cohete con el blanco, la altura del blanco, la velocidad y el parámetro de curso del movimiento del blanco. 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. En la Figura 1.2 muestran los indicadores de conducción con las marcas del SAL y otras que aparecen. 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 ηe entró en la zona de destrucción definida por las marcas de los límites cercano y lejano (CID3, 2008)..
(20) GENERALIDADES DE LA ESTACIÓN DE CONDUCCIÓN DE COHETES. 20. Figura 1.2 Indicadores de conducción con las marcas del SAL y otras que aparecen (CID3, 2008) 1.2. La tarjeta 143 (T143) en la Estación de vigilancia del espacio aéreo La T143 es una tarjeta electrónica que se ubica dentro del bloque denominado P143, perteneciente a la cabina PV, y se encarga de realizar el control automático de la frecuencia de sintonización del receptor, o mejor dicho, del heterodino del receptor de la estación, dentro de una determinada banda. A continuación la figura ofrece un pedazo del esquema funcional de la cabina PV. En la Figura 1.3 se muestra la parte del transmisor (magnetrón), del cual se toma una muestra de la señal que sale al espacio y se inyecta, por el conector coaxial Ф8 al mezclador (mixer) del bloque P47 (delimitado por líneas de puntos). Debajo del mezclador está el oscilador local del receptor, denominado heterodino. La señal de este generador se aplica a través de un distribuidor (splitter) de potencia, de una entrada y tres salidas, a la otra entrada del mezclador. En el mezclador se produce la multiplicación de frecuencias de la cual se obtiene la componente resultante que se.
(21) GENERALIDADES DE LA ESTACIÓN DE CONDUCCIÓN DE COHETES. 21. necesita; es decir, aquí se obtiene la componente que representa la resta de las dos frecuencias; la del heterodino y la muestra que llega desde el magnetrón.. Figura 1.3 Esquema funcional en bloques de alta frecuencia del receptor (CID3, 2008) A la salida del mezclador se tiene una señal de frecuencia intermedia de 35MHz, que envía por el conector coaxial Ф9 al bloque amplificador de frecuencia intermedia (AFI) señalado en el dibujo con el nombre P58 (la letra “P” en ruso se escribe “П”). La señal de P58 se envía, pasando por el bloque P48, donde se obtiene la señal de corrimiento con relación a la frecuencia central de 35MHz. Desde el bloque P48 se envía el error hacia el bloque P143 denominada “tarjeta 143”, delimitada por líneas de puntos en la figura. En la T143 se muestrea la frecuencia de la señal y se evalúa mediante un componente programable, si dicha frecuencia está corrida con relación a la frecuencia central de 35MHz, entonces con el corrimiento se forma un código que se le envía al heterodino, para establecer una frecuencia con la cual a la salida del mezclador, la FI retorna a su valor central nuevamente..
(22) GENERALIDADES DE LA ESTACIÓN DE CONDUCCIÓN DE COHETES. 22. En la Figura 1.4 se muestra el bloque P143 que tiene, además del potenciómetro externo, otros interruptores y botones. Con los botones rojo y verde se puede aumentar o disminuir la frecuencia, para lograr un ajuste fino en rangos de 61,4KHz y los interruptores se emplean en el régimen de autocomprobación, para establecer las condiciones con las cuales el bloque genera las señales de salida.. Figura1.4 Imagen del bloque 143 (CID3, 2008) En la Figura 1.5 se muestra una imagen de la tarjeta 143 (T143). El componente programable que utiliza esta tarjeta es un CPLD, del cual se realizará una descripción a continuación..
(23) GENERALIDADES DE LA ESTACIÓN DE CONDUCCIÓN DE COHETES. 23. Figura 1.5 Imagen de la T143 (CID3, 2008) 1.3. Caracterización de los CPLD (Complex PLD) Un CPLD (Complex Programmable Logic Device) extiende el concepto de un PLD a un nivel de integración superior; esto es, se dispone de mayor número de puertas y de entradas/salidas en un circuito programable (con lo que se disminuye el tamaño del diseño, el consumo y el precio). En vez de hacer estos circuitos con mayor número de términos producto por macrocelda, o de mayor número de entradas/salidas, cada CPLD contiene bloques lógicos, cada uno de ellos similar a una estructura PAL o GAL. Estos bloques lógicos se comunican entre sí utilizando una matriz programable de interconexiones lo cual hace más eficiente el uso del silicio, conduciendo a un mejor desempeño y un menor costo. La Figura 1.6 detalla un modelo genérico de un CPLD. Las tecnologías de programación son las mismas que las que utilizan los SPLDs, esto es, fusible, EPROM, EEPROM y Flash. A continuación se explican brevemente las principales características de la arquitectura de un CPLD (Bozich, 2005)..
(24) GENERALIDADES DE LA ESTACIÓN DE CONDUCCIÓN DE COHETES. 24. Figura 1.6 Arquitectura básica de un CPLD (Bozich, 2005) Matriz de Interconexiones Programables La Matriz de Interconexiones Programables (PIM, Programable Interconect Matrix) permite unir los pines de entrada/salida a las entradas del bloque lógico, o las salidas del bloque lógico a las entradas de otro bloque lógico o inclusive a las entradas del mismo bloque; con una estructura de interconexión continua. La mayoría de los CPLDs usan una de dos configuraciones para esta matriz: Interconexión mediante arreglo. Interconexión mediante multiplexores. La primera se basa en una matriz de filas y columnas con una celda programable de conexión en cada intersección. Al igual que en el GAL esta celda puede ser activada para conectar/desconectar la correspondiente fila y columna. Esta configuración permite una total interconexión entre las entradas y salidas del dispositivo o bloques lógicos. Sin embargo, estas ventajas provocan que disminuya el desempeño del dispositivo además de aumentar el consumo de energía y el tamaño del componente..
(25) GENERALIDADES DE LA ESTACIÓN DE CONDUCCIÓN DE COHETES. En la interconexión mediante multiplexores, existe un multiplexor por cada entrada al. 25. bloque. lógico. Las vías de interconexión programables son conectadas a las entradas de un número fijo de multiplexores por cada bloque lógico. Las líneas de selección de. estos multiplexores son. programadas para permitir que sea seleccionada únicamente una vía de la matriz de interconexión por cada multiplexor la cual se propagara a hacia el bloque lógico. Cabe mencionar que no todas las vías son conectadas a las entradas de cada multiplexor. La rutabilidad se incrementa usando multiplexores de mayor tamaño, permitiendo que cualquier combinación de señales de la matriz de interconexión pueda ser enlazada hacia cualquier bloque lógico. Sin embargo, el uso de grandes multiplexores incrementa el tamaño de dispositivo y reduce su desempeño (Bozich, 2005). Bloques Lógicos Un bloque lógico es similar a un SPLD, cada uno posee un arreglo de compuertas AND y OR en forma de suma de productos, una configuración para la distribución de estas sumas de productos, y macroceldas. El tamaño del bloque lógico es una medida de la capacidad del CPLD, ya que de esto depende el tamaño de la función booleana que pueda ser implementada dentro del bloque. Los bloques lógicos usualmente tienen de 4 a 20 macroceldas (Bozich, 2005). Distribución de Productos Existen pequeñas diferencias en cuanto a las matrices de productos, esto dependerá del CPLD y del fabricante. Obviamente el tamaño de las sumas sigue siendo el factor más importante para la implementación de funciones booleanas. Cada fabricante distribuye los productos de diferente forma. En un dispositivo como el GAL 22V10 (22entradas, V de Versátil y 10 salidas) tenemos que la suma de productos es fija por cada macrocelda (8, 10, 12, 14 o 16), en la familia MAX se colocan 4 productos por macrocelda los cuales pueden ser compartidos con otras macroceldas. Cuando un producto puede ser únicamente utilizado por una macrocelda se le conoce como termino - producto dirigido (product-term steering), y cuando estos pueden ser utilizados por otras macroceldas se le llama termino - producto compartido (product-term sharing). Mediante estos productos compartidos se mejora la utilización del dispositivo, sin embargo, esto produce un retardo adicional al tener que retroalimentar un producto hacia otra macrocelda y con esto disminuye la velocidad de trabajo del circuito. La forma en que son distribuidos los productos.
(26) GENERALIDADES DE LA ESTACIÓN DE CONDUCCIÓN DE COHETES. 26. repercute en la flexibilidad que proporciona el dispositivo para el diseñador. Además, que estos esquemas proporcionan también flexibilidad para los algoritmos del programa de síntesis que es el que finalmente selecciona la mejor forma en que deben ser distribuidas las funciones booleanas en el dispositivo (Bozich, 2005). Macrocelda Las macroceldas de un CPLD son similares a las de un PLD. Estas también están provistas con registros, control de polaridad, y buffers para salidas en alta impedancia. Por lo general un CPLD tiene macroceldas de entrada/salida, macroceldas de entrada y macroceldas internas u ocultas (buried macrocells), en tanto que un 22V10 tiene solamente macroceldas de entrada/salida. Una macrocelda interna es similar a una macrocelda de entrada/salida, sólo que esta no puede ser conectada directamente a un pin de salida. La salida de una macrocelda interna va directamente a la matriz de interconexión programable. Por lo que es posible manejar ecuaciones y almacenar el valor de salida de estas internamente utilizando los registros de estas macroceldas. Las macroceldas de entrada son utilizadas para proporcionar entradas adicionales para las funciones booleanas. En general las macroceldas de entrada incrementan la eficiencia del dispositivo al ofrecer algunos registros adicionales con los que se pueden almacenar el valor del pin de entrada, lo cual puede ser útil al momento de obtener las funciones booleanas (Bozich, 2005). Celda de entrada/salida Una celda de entrada/salida podría considerarse parte del bloque lógico, pero no necesariamente tienen que estar a la salida de un bloque lógico. La unción de una celda de entrada/salida es permitir el paso de una señal hacia el interior o hacia el exterior del dispositivo. Dependiendo del fabricante y de la arquitectura del CPLD estas celdas son pueden ser consideradas o no consideradas parte del bloque lógico (Bozich, 2005). Otras características de los CPLD Además de los recursos lógicos, mecanismos de ruteo, esquemas de distribución de términos, productos y modelos de retardos temporales, existen otras características propias de los mismos..
(27) GENERALIDADES DE LA ESTACIÓN DE CONDUCCIÓN DE COHETES. 27. Programabilidad en el sistema (In System Programmability o ISP): Es la capacidad de programar el dispositivo mientras se encuentra en la placa de circuito impreso en el que opera. De esta forma se reduce significativamente el costo de fabricación, ya que el dispositivo se manipula menos en fábrica, no es necesario llevar un inventario complejo, etc. Re-programabilidad en el sistema (In System Reprogrammability o ISR): Es la capacidad de reprogramar el CPLD mientras se encuentra en la placa de circuito impreso. Se puede utilizar para el prototipo, cargar actualizaciones o incluso alterar la función del dispositivo mientras se encuentra en operación. Boundary Scan: las especificaciones del grupo JTAG (Joint Test Action Group), que se han convertido en la norma IEEE 1149.1, definen un método para comprobar la funcionalidad de un dispositivo y las conexiones a otros Circuitos integrados. Desplazando datos a través de las celdas “boundary scan”, se pueden comprobar las conexiones con otros dispositivos y se pueden aplicar vectores de test a la lógica interna (Bozich, 2005). El JTAG es una metodología que se puede utilizar para comprobar (testear) y asegurar la calidad o para depurar código. Para limitar el número de vectores de test necesarios, JTAG también especifica un modo BIST (built-in self-test): un dispositivo en este modo genera un conjunto de vectores de test pseudo-aleatorio como vectores de. estímulo, compara las salidas con los. resultados esperados e informa de los posibles errores. En los CPLD se utilizan los HDL (lenguajes de descripción del hardware) del cual estaremos comentando en el próximo epígrafe. 1.4. Lenguajes de descripción del hardware (HDL) empleados en la modelación de sistemas digitales 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.
(28) GENERALIDADES DE LA ESTACIÓN DE CONDUCCIÓN DE COHETES. 28. 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 (Aguascalientes, 2012). 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) (Aguascalientes, 2012). 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. Para poder describir los procesos concurrentes que caracterizan un sistema de hardware. Utilizando un conjunto de instrucciones secuenciales puede modelarse el comportamiento de un sistema digital y controlar la variable tiempo en los modelos (Aguascalientes, 2012). Existen numerosos lenguajes de descripción de hardware, entre ellos: 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.
(29) GENERALIDADES DE LA ESTACIÓN DE CONDUCCIÓN DE COHETES. 29. 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) (Aguascalientes, 2012). 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 uso quizás no muy eficiente de hardware que pueda hasta comprometer la performance de velocidad, consumo de potencia, etc..
(30) CAPÍTULO 2.. METODOLOGÍA Y HERRAMIENTA PARA EL ANÁLISIS. En el presente capítulo se presenta las características de los componentes que integran la tarjeta 143, haciendo mayor énfasis en el CPLD (EPM7256SRI208), se mencionan las particularidades del VHDL, la metodología para llevar a cabo la ingeniería inversa y la caracterización de la herramienta de simulación Quartus II. 2.1. Componentes de la tarjeta T143 La tarjeta está integrada por varios componentes, pero solo se caracterizarán los que aparecen en el diagrama en bloques de la Figura 2.1 haciendo mayor énfasis en el componente programable (EPM7256SRI208).. Figura 2.1 Diagrama en bloques de la T143 (CID3, 2008) Optoacoplador (TLP521-4) Un opto acoplador, también llamado opto aislador o aislador acoplado ópticamente, es un dispositivo de emisión y recepción que funciona como un interruptor activado mediante la luz emitida por un diodo LED que satura un componente opto electrónico, normalmente en forma de fototransistor o fototriac como el mostrado en la Figura 2.2. De este modo se combinan en un solo.
(31) METODOLOGÍA Y HERRAMIENTA PARA EL ANÁLISIS. 31. dispositivo semiconductor, un foto-emisor y foto-receptor cuya conexión entre ambos es óptica. Se suelen utilizar para aislar eléctricamente a dispositivos muy sensibles. El TLP521-4 consiste en un foto-transistor acoplado ópticamente a un diodo emisor de arseniuro de galio de infrarrojos. Proporciona cuatro canales aislados en un paquete DIP (Dual in-line package) de dieciséis pin (TOSHIBA, 2002).. Figura 2.2 Optoacoplador TLP521-4 (TOSHIBA, 2002) Transceptor bidireccional (74F245) con tres estados de salida. Figura 2.3 Transceptor bidireccional 74F245 (FAIRCHILD, 2008) El 74F245 como mostrado en la Figura 2.3 contiene ocho no inversores bidireccionables con tres estados de salida y está destinado a aplicaciones orientadas a bus. La capacidad de disminución de corriente es 24mA en los puertos A y 64mA en los puertos B. La entrada Transmitir/Recibir (T/R) determina la dirección del flujo de datos a través del transceptor bidireccional. Si transmitir (en alto) permite que el flujo de datos sea del puerto A al puerto B; si recibir (en bajo) entonces el flujo.
(32) METODOLOGÍA Y HERRAMIENTA PARA EL ANÁLISIS. 32. de datos es del puerto B al puerto A. Cuando OE está en alto inhabilita ambos puertos A y B, colocándolos en un estado de alta Z (FAIRCHILD, 2008). Relé (G6S-2-5V) El relé es un dispositivo electromecánico. Funciona como un interruptor controlado por un circuito eléctrico en el que, por medio de una bobina y un electroimán, se acciona un juego de uno o varios contactos que permiten abrir o cerrar otros circuitos eléctricos independientes. El diseño del relé (G6S-2-5V) se basa en el mundo de las telecomunicaciones-comunicaciones y comunicaciones de datos; soporta altas tensiones de voltaje de 2000 VAC entre la bobina y los contactos, y cumple con los requisitos de oleada 2.5kV Bellcore. Amplificador operacional (LM324N) El LM324N consiste en cuatro amplificadores operacionales independientes, de alta ganancia, frecuencia interna compensada, está diseñado para operar desde una sola fuente de alimentación con una amplia gama de voltajes, la operación de fuentes de alimentación divididas también es posible siempre y cuando la diferencia entre los dos suministros es de 3V a 32V. La Figura 2.4 muestra el diagrama en bloque interno de un LM324N (Semiconductor, 2010).. Figura 2.4 Amplificador operacional LM324N (Semiconductor, 2010) El CPLD (EPM7256SRI208) de Altera El CPLD (EPM7256RI208) forma parte de la familia MAX 7000, de alta densidad y alto rendimiento con los PLDs; está basado en la arquitectura MAX que es la segunda generación de Altera. Fabricado con tecnología CMOS avanzada; la EEPROM basada en la familia MAX 7000.
(33) METODOLOGÍA Y HERRAMIENTA PARA EL ANÁLISIS. 33. proporciona entre 600 y 5.000 puertas utilizables, la demora punto a punto es de 5ns y la velocidad del contador es de hasta 175,4 MHz. En sistemas programables los dispositivos MAX 7000, son llamados dispositivos MAX 7000S y tienen las características mejoradas de los dispositivos MAX 7000E, así como dispositivos en circuitos JTAG BST con 128 ó más macroceldas, y una opción de salida de drenaje abierto.(Altera, 2005) Los dispositivos MAX 7000 utilizan celdas CMOS EEPROM para implementar funciones lógicas. El usuario puede configurar la arquitectura MAX 7000, que se adapta a una variedad de funciones independientes de la lógica combinatoria y secuencial. Los dispositivos pueden ser reprogramados para las iteraciones rápidas y eficientes, durante el diseño y desarrollo de los ciclos de depuración, y pueden ser programados y borrados hasta 100 veces.(Altera, 2005) La arquitectura MAX 7000 soporta 100% la emulación TTL y alta densidad de integración en las funciones lógicas SSI, MSI y LSI. Se integra fácilmente a varios dispositivos que van desde Pals, GALs y 22V10s a dispositivos MACH y PLSI. Los dispositivos MAX 7000 están disponibles en una amplia gama de paquetes, incluyendo los paquetes PLCC, PGA, PQFP, RQFP y TQFP. Contienen de 32 a 256 macroceldas que se combinan en grupos de 16 macroceldas, llamados bloques lógicos de matriz (LABs). Incluye cuatro entradas dedicadas que pueden ser utilizadas, como entradas de propósito general o señales de control (reloj, borrado, y dos señales de salida habilitadas) para cada macrocelda y pin E/S.(Altera, 2005) En la Figura 2.5 se muestra la arquitectura en bloques de los dispositivos MAX 7000S. La arquitectura MAX 7000 incluye los siguientes elementos: Los bloques lógicos de matriz. Macroceldas. Expansor en términos de productos (compartible y paralelos). Matriz de interconexión programable. E/S de bloques de control. Teniendo en cuenta que el código fuente con que se trabajará está implementado en VHDL, se realizará una breve descripción sobre este lenguaje..
(34) METODOLOGÍA Y HERRAMIENTA PARA EL ANÁLISIS. 34. Figura 2.5 Diagrama en bloque de los dispositivos MAX 7000S (Altera, 2005) 2.2. Particularidades del VHDL El "Versatile Hardware Description Language" VHDL (cuyas siglas proceden de un nombre aún más largo y restrictivo: Very high speed integrated circuit HDL) se desarrolló inicialmente como lenguaje de documentación, de simulación y de «validación» (simulación en el contexto en que debe funcionar) de circuitos integrados digitales. Para documentar y simular se requiere una descripción precisa, carente de ambigüedades y estructurada, y tal descripción puede ser directamente utilizada para diseñar el circuito descrito (mediante su «compilación» sobre los recursos booleanos disponibles) (Santamaría). Actualmente, son dos los lenguajes de descripción circuital que se han impuesto como estándares para el diseño digital: VHDL y Verilog; y, de entre ellos, en el contexto europeo predomina el VHDL. El VHDL es una excelente herramienta de documentación, simulación, validación y.
(35) METODOLOGÍA Y HERRAMIENTA PARA EL ANÁLISIS. 35. diseño de sistemas digitales, estandarizada y en permanente proceso de actualización bajo los auspicios del IEEE (Institute of. Electrical and Electronics Engineers). El único lenguaje. alternativo que goza, también, de amplia aceptación es Verilog (Santamaría). Pueden incluirse comentarios y, para identificarlos, se inician con el símbolo repetido "--" que indican al compilador que ignore todo lo que sigue hasta final de. línea. Cada «módulo». descriptivo y cada «asignación» se cierran con el símbolo ";". Los elementos básicos de la descripción digital son las señales (signal); para ellas suele utilizarse el tipo std_logic (standard logic) que admite los siguientes nueve valores: '0' -- cero. '1' -- uno. valores booleanos típicos. 'X' -- desconocido. no se conoce el valor. 'Z' -- alta impedancia. propio de tri-estado. 'U' -- sin inicializar. biestables en su situación previa. '-' -- no importa (don’t care). indiferente (para simplificación). 'L' -- 0 débil. 'H', -- 1 débil. 'W', -- desconocido débil. Los valores de una señal se expresan siempre entre comillas simples: '0', '1' y los valores X y L no admiten la minúscula (x, l no son válidas). Los tipos standard logic han sido introducidos en la normalización hecha por IEEE y requieren la declaración de la librería (y de los paquetes) que los definen al principio de la descripción: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; Las operaciones básicas entre señales son:.
(36) METODOLOGÍA Y HERRAMIENTA PARA EL ANÁLISIS. asignación. <=. operaciones booleanas. and. comparaciones. =. /=. aritméticas. +. -. concatenación. &. or >. not. xor. <. >=. 36. <=. *. (La concatenación se refiere a poner señales o vectores juntos, formando un vector «más largo», cuyo número de bits es la suma de los números de ambas señales). En VHDL se describe por un lado la «caja» del circuito con sus entradas y salidas, o sea, los terminales de conexión hacia el exterior, y eso se hace en un módulo denominado entity, y en otro módulo posterior, denominado architecture, se describe «lo que hace» el circuito, es decir, su funcionamiento interno. Además, es preciso declarar previamente las librerías necesarias para compilar el circuito. En consecuencia, la descripción VHDL tiene la siguiente estructura: declaración de librerías módulo de terminales entity nombre_de_la_entidad is port( declaración de entradas y salidas ); end nombre_de_la_entidad ; módulo de funciones architecture nombre_de_la_arquitectura of nombre_de_la_entidad is signal begin. declaración de señales internas.
(37) METODOLOGÍA Y HERRAMIENTA PARA EL ANÁLISIS. 37. descripción del funcionamiento (asignaciones) end nombre_de_la_arquitectura ; En la entidad (entity) se describen los terminales del circuito dentro del epígrafe de puertos (ports); hay cuatro tipos de «puertos»: entrada (in), salida (out), bidireccionales (inout) y «adaptados» (buffer). Los «puertos» de salida no se pueden «leer» dentro del circuito, es decir, no pueden figurar como entradas en ninguna de las asignaciones de su arquitectura; en cambio, los «puertos adaptados» son salidas que sí se pueden «leer» dentro del circuito (sin embargo, suele utilizarse poco este tipo de puertos) (Santamaría). A continuación trataremos los fundamentos de la ingeniería inversa de software para el código fuente con este lenguaje. 2.3. Fundamentos de la ingeniería inversa de software Los países más desarrollados que se mantienen a la vanguardia en filosofías 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 productos. 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 de 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 ineludible para la obtención de piezas originales. Una vez que una mercancía ha sido probada con éxito, lo obvio es fabricarla hasta que su ciclo en el mercado termine. Lo anterior suena lógico para el creador, pero ¿qué sucede con la.
(38) METODOLOGÍA Y HERRAMIENTA PARA EL ANÁLISIS. 38. competencia?, ¿cómo fabricar algo de lo cual no se tiene información original?, ¿cómo obtener mediciones cuando no existen patrones ni instrumentos para extraer la información?, y ¿cómo realizar un estudio ingenieril cuando no se cuenta con los suficientes recursos humanos, económicos y/o tecnológicos? Para fortuna de muchos (e infortunio de otros) existe una respuesta real, factible y legal a estas preguntas. La ingeniería inversa plantea el camino desde el extremo final del ciclo. Es posible llegar de la parte física a la información ingenieril para de nuevo regresar a ella . A menudo confundida con la piratería, 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 (E. Jiménez, 2006). 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 CPLD MAX 7000. 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. 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: Sus representaciones de diseño de procedimiento (bajo nivel de abstracción)..
(39) METODOLOGÍA Y HERRAMIENTA PARA EL ANÁLISIS. 39. 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 (E. Jiménez, 2006). En las siguientes secciones se expondrán diferentes acciones encaminadas a efectuar ingeniería inversa a determinado código fuente. 2.3.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. 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 de 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 (E. Jiménez, 2006)..
(40) METODOLOGÍA Y HERRAMIENTA PARA EL ANÁLISIS. 40. 2.3.2. Ingeniería inversa para reestructurar el código “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)” (Chifofsky, 1990). 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. Tiene 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 (E. Jiménez, 2006). A continuación algunos beneficios que se pueden lograr cuando se reestructura el software: 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 (Arnold, 1989). 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.3.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.
(41) METODOLOGÍA Y HERRAMIENTA PARA EL ANÁLISIS. 41. 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. Para el caso específico de esta tesis, que tiene como material de estudio un código fuente en lenguaje VHDL, perteneciente a un CPLD EPM7256SRI208 MAX 7000; 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 uno de los. subsistemas; 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 subsistema basada en diagramas de bloques. 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 VHDL, a través de la simulación. 2.4. Caracterización de la herramienta de simulación Quartus II El Quartus II es una herramienta de software producido por Altera para el análisis y la síntesis de los diseños en HDL. 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 de un número limitado de dispositivos Altera. La familia de CPLD de MAX 7000S, está soportada por esta edición, por lo que esta será la versión usada para el trabajo con el EPM7256SRI208 de dicha familia. Entre las ventajas que presenta este software se tienen: Posee editor de lenguaje simbólico. Posee un editor de formas de onda que puede ser utilizado para describir un sistema.
(42) METODOLOGÍA Y HERRAMIENTA PARA EL ANÁLISIS. digital, como para determinar las entradas 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. 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.6 se muestra las etapas del proceso de diseño en la plataforma ALTERA.. Figura 2.6 Etapas del proceso se diseñó en la plataforma ALTERA.. 42.
(43) CAPÍTULO 3.. ANÁLISIS. DE. LA. TARJETA. 143. Y. REALIZACIÓN DE INGENIERÍA INVERSA AL BLOQUE CODE_SEL. 3.1. Análisis de la tensión de error y la tensión de referencia Por los puntos 7 y 8 del conector XJ1 entra la tensión de error que viene del bloque 48 y llega a los contactos del relé denominado K3. Desde el relé K3, con sus contactos normalmente cerrados (CNC), entra la tensión de error, denominada en el esquema “CON1L” y “CON2L”, al amplificador operacional denominado V2A, montado en un circuito integrado LM324N, para aplicarse a los comparadores (V2C y V2D). En la Figura 3.1 se muestra el esquema equivalente, en Orcad, al amplificador V2A dentro del esquemático de la tarjeta 143. La simulación de dicho amplificador arrojó que se encuentra en una configuración amplificador diferencial.. Figura 3.1 Configuración amplificador diferencial.
(44) ANÁLISIS DE LA TARJETA 143 Y REALIZACIÓN DE INGENIERÍA INVERSA AL BLOQUE CODE_SEL. 44. Un amplificador diferencial determina la diferencia de potencial a su entrada y luego la multiplica por la ganancia del circuito. Para este caso la ganancia está dada por la ecuación Av = R2/R3 y tiene un valor de 1,08. En la Figura 3.2 se muestra el resulta de la simulación realizada para un valor de entrada V3=200mV y V4=100mV, por tanto a la salida se tiene que Vsal=Av*(V3-V2) donde Vsal=108mV. En el caso que V3=100mV y V4=200mV, el valor de salida es Vsal= 108mV, debido a que la pata inversora del amplificador tiene mayor potencial. La señal que se tiene a la salida pasa por los comparadores V2C y V2D, y luego es convertida por optoacopladores TLP521-4 en un código que recibe el CPLD (EPM7256SRI208). Luego desde el CPLD se envía la señal denominada en el esquema “CONK1”, se energiza el relé K3 y conmuta sus contactos, aplicando una tierra a la entrada. positiva del operacional. y la señal del. potenciómetro externo de la T143 a la negativa del mismo. La señal del potenciómetro externo es una tensión que toma como referencia la tarjeta 143 para la sintonización de la frecuencia. El valor de “CONK1” depende de un VCC del cual no aparece su origen.. Figura 3.2 Resultado de la simulación.
(45) ANÁLISIS DE LA TARJETA 143 Y REALIZACIÓN DE INGENIERÍA INVERSA AL BLOQUE CODE_SEL. 45. 3.2. Análisis del bloque code_sel interno en el CPLD (EPM7256SRI208) En la figura 3.3 se muestra el bloque code_sel, el cual tiene a la entrada una serie de señales que a continuación se mencionará la función de cada una de ellas. Señal mclk. Señal de reloj que proviene del generador de onda cuadrada (Xt1). Señal clk4ms. Señal de reloj procedente del bloque gen_sel_1 cuyo periodo es de 4ms. Señal iyb. Impulso que se emplea como referencia o sincronismo de la exploración de la antena con todos los procesos en la estación. Señal HL. Señal de +26V discreta, que resulta de la conexión de un interruptor. Si está presente significa conectada la alta tensión del transmisor. Señal reset. Señal de 5V discreta, que llega desde un interruptor del mismo bloque 143 pero externo a la tarjeta. Si está presente significa conectada la resintonización de la frecuencia. Señal pk. Señal de +26V discreta, que resulta de la conexión de un interruptor. Si está presente significa conectado el régimen de “control”. Señal mect. Señal que resulta de la conexión de un interruptor, pero se desconoce su significado en el bloque 143. Señal jp_gict. Señal de +26V discreta, que resulta de la conexión de un interruptor. Si está presente significa conectada la frecuencia de reserva. Señal inc. Señal de 5V discreta, que llega desde botones del mismo bloque 143 pero externos a la tarjeta. Si están presentes significa que se aumente el valor de la frecuencia en paso de 61,4KHz. Señal dec. Señal de 5V discreta, que llega desde botones del mismo bloque 143 pero externos a la tarjeta. Si están presentes significa que se disminuya el valor de la frecuencia en paso de 61,4KHz. f1[9..0]. Código que se establece en el conmutador (SW1) de 10bits y hace referencia a la frecuencia de trabajo. f2[9..0]. Código que se establece en el conmutador (SW2) de 10bits y hace referencia a la frecuencia de reserva..
(46) ANÁLISIS DE LA TARJETA 143 Y REALIZACIÓN DE INGENIERÍA INVERSA AL BLOQUE CODE_SEL. 46. Señal a_b. Señal de 5V discreta, que llega desde un interruptor del mismo bloque 143 pero externo a la tarjeta. Si está presente significa conectado. Señales presentes a la salida de este bloque: yout[15..0]. Código que establece el bloque code_sel, se utiliza para mostrar el valor de la frecuencia establecida en los “siete segmentos” y en los bits [11..0] se contienen la información de la frecuencia que debe establecerse en el sintetizador. clk_out. Señal que informa sobre el trabajo de sintonización de la frecuencia mediante LEDs.. Figura 3.3 Bloque code_sel La Tabla con las señales que entran y salen a la tarjeta 143, pero que solo están relacionadas con el bloque code_sel..
(47) ANÁLISIS DE LA TARJETA 143 Y REALIZACIÓN DE INGENIERÍA INVERSA AL BLOQUE CODE_SEL. 47. Tabla 3.1 Señales de entrada y de salida. 3.2.1. Explicación del proceso que se encarga de entrar el código establecido los conmutadores de 10 bits El bloque code_sel para seleccionar la frecuencia de trabajo (establecida en el conmutador SW1), la señal jump (es la misma que jp_gict) tiene que ser ‘0’ y para elegir la frecuencia de reserva (establecida en el conmutador SW2) tiene que ser ‘1’. La señal code (interna del bloque) está representada por 12 bits, de los cuales (1 downto 0) se le asigna el valor “00” y (11 downto 2) el valor del código establecido en los conmutadores de 10 bits, en dependencia del valor de la señal jump. Después el valor de la señal code es convertido en entero y se le asigna a la señal x (enteros que están en el rango de 0 hasta 4095). Si se selecciona la frecuencia de trabajo, a la señal yout se le asigna “0001” a los bits (15 downto 12). En caso que sea la frecuencia de reserva la seleccionada, entonces la asignación será “0010”..
(48) ANÁLISIS DE LA TARJETA 143 Y REALIZACIÓN DE INGENIERÍA INVERSA AL BLOQUE CODE_SEL. 48. 3.2.2. Explicación del proceso que se encarga del ajuste fino de frecuencia Para el ajuste fino de la frecuencia la señal jump_pulse (interna del bloque) tiene que ser ‘1’ y debe ocurrir un cambio en la señal clk_out definido por un flanco de subida. El primer análisis se realizó teniendo en cuenta que la señal f (interna del bloque) estaba a ‘0’. Cuando está conectada la alta tensión del transmisor, si la variable t1 (interna del bloque) es igual a ‘0’, entonces t1 se pone inmediatamente a ‘1’ y la señal operator (interna del bloque) se pone a “100”. De no cumplirse la condición anterior, a la señal f se le asigna ‘0’. Ahora, si no está conectada la alta tensión y si la variable t2 (interna del blo) es igual a ‘0’, entonces t2 se pone inmediatamente a ‘1’ y la señal operator se pone a “100”. El segundo análisis se realizó para el caso que la señal f sea ‘1’. Si dec es ‘0’, inc es ‘1’ y incf (señal interna del bloque) es ‘0’, entonces, a incf se le asigna un ‘1’ y operator se pone a “010”. En caso que no se cumpla la condición anterior, operator recibe “111”. Ahora, si inc es ‘0’, dec es ‘1’ y decf (señal interna del bloque) es ‘0’, entonces, a decf se le asigna un ‘1’ y operator se pone a “001”. En caso que no se cumpla la condición, operator recibe “111”. La salida yout depende del valor que tenga la señal y (enteros que están en el rango de 0 hasta 4095), donde esta última es determinada por el valor del operator. A continuación veremos algunos de los valores que toma la señal y a partir de operator. Si operator = “100” entonces la señal y toma el valor de la señal x (y<=x), donde x es código establecido en uno de los dos conmutadores de 10 bits. Si operator = “010” entonces la señal y toma el valor del estado anterior y le suma ‘1’ (y<=y+1). Si operator = “111” entonces la señal y toma el valor del estado anterior (y<=y). Si operator = “001” entonces la señal y toma el valor del estado anterior y le resta ‘1’ (y<=y-1). No se representan todos los valores que toma operator debido a que el código fuente no está completo..
Figure
+7
Documento similar