FACULTAD DE INGENIERÍA ELÉCTRICA
Departamento de Electrónica y Telecomunicaciones
Ingeniería inversa del componente programable CPLD
EPM7256SRI208 de la tarjeta T143
Autor: Humberto Martínez Lindsay
Tutor: T Cor Félix Enrique Gomara Tristá
Cotutor: T Cor Gerardo García Pierrat
Ing. Erisbel Orozco Crespo
Tesis presentada en opción al Título Académico
Santa Clara
2013
“Año 55 de la Revolución”
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”
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
IV
PENSAMIENTO
“El hombre inteligente no es el que tiene muchas ideas sino el que sabe sacar provecho de las pocas que tiene”.
Yo
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
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.
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
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
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
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:
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.
INTRODUCCIÓN 14
En el 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.
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.
GENERALIDADES DE LA ESTACIÓN DE CONDUCCIÓN DE COHETES 16
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.
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.
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
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).
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
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.
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.
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).
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.
GENERALIDADES DE LA ESTACIÓN DE CONDUCCIÓN DE COHETES 25
En la interconexión mediante multiplexores, existe un multiplexor por cada entrada al 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
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.
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
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
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.
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
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
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
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.
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
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:
METODOLOGÍA Y HERRAMIENTA PARA EL ANÁLISIS 36
asignación <=
operaciones booleanas and or not xor
comparaciones = /= > < >= <=
aritméticas + - *
concatenación &
(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 declaración de señales internas
begin
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
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).
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).
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
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
METODOLOGÍA Y HERRAMIENTA PARA EL ANÁLISIS 42
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.
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
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
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.
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.
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”.
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.
ANÁLISIS DE LA TARJETA 143 Y REALIZACIÓN DE INGENIERÍA INVERSA AL BLOQUE CODE_SEL 49
Para el caso que operator es “100”, en la Tabla 3.2 se muestra una parte de la respuesta de
frecuencia para algunos códigos (la tabla completa tiene 4096 valores) de dos heterodinos; uno
para β y el otro para Ɛ. La combinación de los 10 bits del DIP-SWITCH genera una frecuencia
aproximada que salta en pasos de 245,6KHz y cuando se quiere ajustar la frecuencia con más
precisión, se aumenta o se disminuye el código con los botones (los dos bits menos significativos)
con lo cual los saltos son de 61,4KHz.
Tabla 3.2 Respuesta de frecuencia para algunos códigos.
CONCLUSIONES
En el presente trabajo se determinaron partes del funcionamiento de la tarjeta 143 aplicando
ingeniería inversa al código fuente presente en el bloque code-sel del dispositivo programable
CPLD (EPM7256SRI208) de ALTERA. Durante su realización se arribó a las siguientes
conclusiones y recomendaciones:
La función que realiza el amplificador V2A dentro del esquemático de la tarjeta 143 es de
amplificador diferencial. El mismo recibe la tensión de error que viene del bloque P48,
denominada “CON1L” y “CON2L”, determina la diferencia entre estas dos señales y luego
esa diferencia la multiplica por la ganancia del circuito.
El código de salida establecido en el bloque code_sel, se envía al bloque P47 paea el
establecimiento de la frecuencia del heterodino del receptor y al bloque P341 para la
representación de dicha frecuencia en los cuatro indicadores de siete segmentos. El primer
número de la izquierda representa si está la frecuencia de trabajo o la de reserva, y los tres
restantes informan sobre el valor de la frecuencia establecida, en formato hexadecimal.
Con el trabajo de ingeniería inversa realizado se cumplió el objetivo trazado, logrando
asimilar el funcionamiento de la tarjeta 143.
RECOMENDACIONES
Continuar trabajando en la asimilación de la tecnología con el objetivo de aplicar el procedimiento
realizado con la tarjeta 143 y otras tarjetas como la 328, que aún no están asimiladas y forman
parte de la Estación de vigilancia del espacio aéreo.
REFERENCIAS BIBLIOGRÁFICAS
CID3, C. D. I. D. 2008. INTRODUCCIÓN A LA MODERNIZACIÓN K. ALTERA 2005. MAX 7000 Programmable Logic Device Family. Altera Corporation. MAX 7000 Programmable Logic Device Family. Altera Corporation. BOZICH, E. 2005. Introducción a los dispositivos FPGA. Análisis y ejemplos de diseño La Plata. CID3, C. D. I. D. 2008. INTRODUCCIÓN A LA MODERNIZACIÓN K. FAIRCHILD 2008. 74F245 — Octal Bidirectional Transceiver with 3-STATE Outputs. Fairchild
Semiconductor Corporation.
SANTAMARÍA, T. P. Tecnología Electrónica. In: E.U.I.T.I.Z. (ed.). Universidad de zaragoza.
Manual de Ingeniería Inversa [Online]. Available: http://www.conocimientosweb.net/dcmt/ficha960.html.
AGUASCALIENTES, U. P. D. 2012. Circuitos logicos programbles [Online]. Available: http://www.blogger.com [Accessed 10-8-2012.
SEMICONDUCTOR, N. 2010. LM2990 Negative Low Dropout Regulator. National Semiconductor Corporation.
TOSHIBA 2002. TLP521-4 PHOTOCOUPLER.