ingeniería inversa del componente programable cpld

52
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”

Upload: others

Post on 12-Feb-2022

5 views

Category:

Documents


0 download

TRANSCRIPT

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

V

DEDICATORIA

A mi mamá, mi familia y amigos que son lo más para mí.

VI

AGRADECIMIENTOS

A toda mi familia y a mis amigos que los quiero con el corazón.

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.