UNIVERSIDAD DE EXTREMADURA

Tamaño: px
Comenzar la demostración a partir de la página:

Download "UNIVERSIDAD DE EXTREMADURA"

Transcripción

1 UNIVERSIDAD DE EXTREMADURA Escuela Politécnica MÁSTER UNIVERSITARIO EN INICIACIÓN A LA INVESTIGACIÓN EN TECNOLOGÍA (MUIT) ESPECIALIDAD EN: TECNOLOGÍAS INFORMÁTICAS Y DE LAS COMUNICACIONES (TINC) Trabajo Fin de Máster Implementación eficiente de algoritmos de análisis hiperespectral utilizando hardware reconfigurable (FPGAs) Sergio Bernabé García Septiembre, 2011

2 Trabajo Fin de Máster -2- Sergio Bernabé García

3 UNIVERSIDAD DE EXTREMADURA Escuela Politécnica MÁSTER UNIVERSITARIO EN INICIACIÓN A LA INVESTIGACIÓN EN TECNOLOGÍA (MUIT) ESPECIALIDAD EN: TECNOLOGÍAS INFORMÁTICAS Y DE LAS COMUNICACIONES (TINC) Trabajo Fin de Máster Implementación eficiente de algoritmos de análisis hiperespectral utilizando Autor: Sergio Bernabé García Fdo.: Directores: Antonio Plaza Miguel Fdo.: Pablo García Rodríguez Fdo.: Tribunal Calificador Presidente: Juan Manuel Secretario: Javier Plaza Vocal: María Luisa Durán Sánchez Pérez Miguel Martín-Meras Fdo.: Fdo.: Fdo.: CALIFICACIÓN: FECHA: Trabajo Fin de Máster -3- Sergio Bernabé García

4 Trabajo Fin de Máster -4- Sergio Bernabé García

5 AGRADECIMIENTOS En estas líneas, quiero agradecer sinceramente todo el apoyo que me ha brindado, la gente que me ha acompañado durante este año. En primer lugar deseo expresar mi más sincero agradecimiento a mis directores de TFM, Antonio Plaza Miguel y Pablo García Rodríguez, por haber confiado en mí para la realización de este trabajo de investigación y por todos sus consejos recibidos a lo largo del mismo. Asimismo agradecer a mis compañeros del grupo HYPERCOMP por la buena acogida que me han dado desde mi entrada en el grupo, también a mis compañeros de laboratorio durante mi estancia en el Instituto Universitario de Microelectrónica Aplicada, concretamente la división de Diseño de Sistemas Integrados (DSI), por la buena acogida que me han dado durante tres grandes meses y por la cantidad de consejos, conocimientos y buenos ratos aportados por cada uno de los componentes de dicho grupo. También darle las gracias a mi familia por todo el apoyo recibido, a mis amigos y el más especial agradecimiento a mi novia Sheila, porque siempre ha creído en mí y que más ha comprendido, que ante todo en esta vida está el ser feliz y que a su lado he conseguido serlo. Sin ti las cosas no serían lo mismo, TE QUIERO!!. Trabajo Fin de Máster -5- Sergio Bernabé García

6 Trabajo Fin de Máster -6- Sergio Bernabé García

7 Resumen En el presente trabajo desarrollamos varias propuestas de implementación eficiente del algoritmo para detección de targets denominado ATGP (Automated Target Generation Process) en imágenes hiperespectrales. Para dicha implementación se ha ideado una metodología de diseño de alto nivel para que a partir de un código Matlab e incluso código C/C++ podamos obtener un código RTL entendible por tarjetas especializadas como es el caso de FPGAs. Con vistas a validar las nuevas propuestas de implementación, se ha realizado un detallado estudio cuantitativo y comparativo de su rendimiento en dos arquitecturas FPGAs muy distintas: Virtex 5 de Xilinx y Stratix III de Altera. Los resultados experimentales han sido obtenidos en el contexto de dos aplicaciones reales de gran relevancia social, consistentes en la detección de los incendios que se propagaron en los días posteriores al atentado terrorista del World Trade Center en Nueva York y también en la detección de componentes minerales sobre el distrito minero de Cuprite (Nevada). Ambas imágenes han sido obtenidas por el sensor AVIRIS y utilizadas a lo largo de los años como zonas de estudio para validación de algoritmos de tratamiento de imágenes hiperespectrales, sobre todo, para evaluar la precisión de algoritmos de extracción de endmembers. Dichos resultados experimentales revelan que las nuevas propuestas permiten obtener resultados que mejoran a otras implementaciones disponibles de ATGP, consiguiendo frecuencias máximas en diseños sobre FPGAs por encima de los 200MHz, además de obtener mejores resultados en precisión y en tiempo de ejecución. Todo lo anterior suponen un importante aumento de las prestaciones computacionales del algoritmo que se preveen indispensables a la hora de procesar grandes cantidades de datos y obtener resultados en aplicaciones reales en tiempo real. Palabras clave: ATGP, imágenes hiperespectrales, metodología de diseño de alto nivel, RTL, FPGA. Trabajo Fin de Máster -7- Sergio Bernabé García

8 Abstract In this work, we develop several proposals for efficient implementation of the algorithm for detection of targets called ATGP (Automated Target Generation Process) in hyperespectral images. For this implementation has developed a design methodology for high level from a Matlab code or even C/C++ can get an RTL code understandable by specially cards such as FPGAs. In order to validate the new proposals for implementation has made a detailed and quantitative study comparing performance on two very different architectures FPGAS: Virtex 5 Xilinx and Stratix III Altera. Experimental results have been obtained in the context of two real applications of great social importance, involving the detection of fires that spread in the days following the terrorist attack on World Trade Center in New York and in the detection of mineral components over the Cuprite mining district (Nevada). Both images have been obtained by the AVIRIS sensor and used over the years as areas of study for validation of algorithms for hyperspectral imaging, especially to assess the accuracy of endmembers extraction algorithms. These experimental findings allow new proposals that improve results available ATGP other implementations, achieving peak frequency designs on FPGAs above 200MHz, in addition to get better results in precision and runtime. All this represents a significant increase in computational performance of the algorithm that is necessary at the time required to process large amounts of data and obtain results in real applications in real time. Keywords ATGP, hyperspectral images, design methodology for high level, RTL, FPGA. Trabajo Fin de Máster -8- Sergio Bernabé García

9 Índice de Contenido 1. MOTIVACIONES Y OBJETIVOS Motivaciones Objetivos INTRODUCCIÓN Concepto de imagen hiperespectral Sensores hiperespectrales considerados Técnicas de análisis hiperespectral y la necesidad de paralelismo FPGA (FIELD PROGRAMMABLE GATE ARRAY) Introducción Evolución Arquitectura General de las FPGAs Bloques Lógicos Configurables (CLB) Interconexión entre bloques lógicos Bloques entrada/salida (IOB) Tiempos de propagación Programación VHDL Verilog ABEL Fabricantes Metodología de diseño ALGORITMO ATGP Y SUS MODIFICACIONES. FLUJO DE DISEÑO DE ALTO NIVEL: DESDE MATLAB A PROGRAMACIÓN SOBRE FPGA El algoritmo implementado ATGP secuencial ATGP primera modificación ATGP segunda modificación ATGP tercera modificación Flujo de diseño. Primera parte Flujo de diseño. Segunda parte Flujo de diseño. Tercera parte Quartus II de Altera Xilinx ISE Design Suite Precision Synthesis RTL 2010a RESULTADOS EXPERIMENTALES Imágenes hiperespectrales consideradas en el estudio Imagen AVIRIS de Cuprite Trabajo Fin de Máster -9- Sergio Bernabé García

10 Imagen AVIRIS sobre el World Trade Center de Nueva York FPGAs consideradas Virtex-5: 5VLX155FF1760 (Xilinx) Stratix III: EP3SL200F1152C (Altera) Evaluación de la precisión y tiempo de cómputo entre la versión original y la modificada Medida de precisión: Ángulo espectral (SAD) Precisión de ATGP sobre la imagen de Cuprite Precisión de ATGP sobre la imagen del World Trade Center Resultados de tiempo de ejecución Resultados en Hardware. Versión secuencial Resultados en Hardware. Versión paralela CONCLUSIONES Y LÍNEAS FUTURAS ANEXO I: TUTORIAL VERILOG BIBLIOGRAFÍA PUBLICACIONES Índice de Figuras Figura 2.1. Concepto de imagen hiperespectral Figura 2.2. Adquisición de una imagen hiperespectral por el sensor AVIRIS Figura 2.3. Tipo de pixeles en imágenes hiperespectrales Figura 2.4. Evolución de la relación SNR del sensor AVIRIS de NASA Figura 2.5. Interpretación gráfica del modelo lineal de mezcla Figura 2.5. Configuración típica de armarios de un cluster Beowulf Figura 2.6. Distintos modelos de GPUs NVidia Figura 2.7. Ejemplo de una FPGA Virtex-5 y STRATIX III Figura 3.1. Esquema de los distintos tipos de circuitos integrados Figura 3.2. Flexibilidad vs eficiencia para diferentes arquitecturas Figura 3.3. Arquitectura básica de una FPGA Figura 3.4. Esquema de bloques de la arquitectura interna de una CPLD y una FPGA Figura 3.5. Bloque lógico basado en LUT Figura 3.6. Bloque lógico basado en multiplexores Figura 3.7. Bloque entrada/salida (IOB) de XC Figura 4.1. Metodología utilizada para el diseño de alto nivel Figura 4.2. Metodología utilizada para el diseño de alto nivel usando código Matlab como entrada.. 47 Figura 4.3. Metodología utilizada para el diseño de alto nivel usando código C/C++ como entrada Trabajo Fin de Máster -10- Sergio Bernabé García

11 Figura 4.6. Píxel más brillante de la imagen Figura 4.7. Targets encontrados Figura 4.8. Representación geométrica del proceso Gram-Schmidt Figura 4.9. Modificación del algoritmo ATGP en código Matlab (1/2) Figura Modificación del algoritmo ATGP en código Matlab (2/2) Figura Esquema general del algoritmo ATGP divido en bloques Figura 4.12.Arquitectura del bloque projection Figura Flujo utilizado por Embedded Matlab para las funciones extrínsecas Figura Pasos en la configuración del compilador usando Embedded Matlab Figura Codificación del algoritmo ATGP en Matlab Figura Construcción del fichero main.c Figura Configuración de las propiedades del compilador Figura Compilación del código usando Embedded Matlab Figura Creación de un nuevo proyecto en Microsoft VS Figura Eliminación de los ficheros creados automáticamente por Microsoft VS Figura Proyecto con los ficheros.c/.h necesarios Figura Configuración necesaria del compilador de Microsoft VS Figura Construcción del proyecto en Microsoft VS Figura Eliminación de las referencias math.h en Microsoft VS Figura Eliminación de las referencias math.h en Microsoft VS Figura Añadir ficheros de entrada en Catapult C Figura Identificación de la entidad top level en Catapult C Figura Configuración del diseño en Catapult C Figura Configuración del diseño en Catapult C Figura Salida generada tras la ejecución de nuestro proyecto en Catapult C Figura Creación de un nuevo proyecto en la herramienta Quartus II de Altera Figura Asignación del nombre y entidad top level en un proyecto de Quartus II Figura Añadir ficheros de entrada en un proyecto de Quartus II Figura Especificación de la entidad top level en un proyecto de Quartus II Figura Compilación del diseño en un proyecto de Quartus II Figura Chequear los resultados del diseño en un proyecto de Quartus II Figura Ayuda en línea de Quartus II Figura Creación de un nuevo proyecto en la herramienta ISE Design Suite de Xilinx Trabajo Fin de Máster -11- Sergio Bernabé García

12 Figura Añadir ficheros de entrada en un proyecto de ISE Design Suite de Xilinx (1/2) Figura Añadir ficheros de entrada en un proyecto de ISE Design Suite de Xilinx (2/2) Figura Especificación de la entidad top level en un proyecto de ISE Design Suite de Xilinx Figura Compilación del diseño en un proyecto de ISE Design Suite de Xilinx Figura Chequear los resultados del diseño en un proyecto de ISE Design Suite Figura Lanzamiento de la herramienta Precision Synthesis RTL desde Catapult C Figura Compilación y síntesis del diseño Figura Chequear los resultados del diseño: Timing Report y Area Report Figura 5.1. Imagen hiperespectral AVIRIS sobre la región Cuprite en Nevada Figura 5.2. Mapa de minerales obtenidos por el USGS a través del algoritmo Tetracoder en la región Cuprite en Nevada, Estado Unidos Figura 5.3. Firmas espectrales puras correspondientes a los minerales más representativos en la región Cuprite en Nevada, Estado Unidos Figura 5.4. Zona escogida del WTC para el estudio Figura 5.5. Mapa térmico de la zona del WTC, con una serie de focos de incendios (targets) destacados Figura 5.6. Comparación de la capacidad lógica entre las FPGAs Stratix III L vs. Virtex-5 LX Figura 5.7. Ilustración del cálculo del ángulo espectral entre dos vectores Figura 5.8. Precisión a la hora de aplicar el algoritmo ATGP original y modificado sobre la imagen de Cuprite Figura 5.9. Firma espectral que detecta el método original denominado ATGPOriginal y la que detecta la versión modificada del material Alunite Figura Firma espectral que detecta el método original denominado ATGPOriginal y la que detecta la versión modificada del material Budinggtonite Figura Firma espectral que detecta el método original denominado ATGPOriginal y la que detecta la versión modificada del material Calcite Figura Representación gráfica de la firma espectral que detecta el método original denominado ATGPOriginal y la que detecta la versión modificada del material Kaolinite Figura Representación gráfica de la firma espectral que detecta el método original denominado ATGPOriginal y la que detecta la versión modificada del material Muscovite Figura Precisión a la hora de aplicar el algoritmo ATGP original y modificado sobre la imagen del World Trade Center Figura Tamaño de cada uno de los focos encontrados en la imagen del WTC Figura Firma espectral del target C Figura Firma espectral del target D Figura Firma espectral del target H Trabajo Fin de Máster -12- Sergio Bernabé García

13 Figura Firma espectral de una zona con vegetación Figura Firma espectral de una zona con agua Figura Firma espectral de una zona urbana Índice de Tablas Tabla 5.1. Características de la imagen completa del WTC Tabla 5.2. Posiciones, temperatura y área ocupada por los distintos focos identificados en la zona del WTC Tabla 5.3. Comparativa de la capacidad lógica entre FPGAs Virtex-5 y Stratix III Tabla 5.4. Dispositivos FPGAs de la familia Virtex Tabla 5.5. Comparativa de las características equivalentes entre FPGAs Virtex-5 y Stratix III Tabla 5.6. Dispositivos FPGAs de la familia Stratix III Tabla 5.7. Precisión en la detección de targets para la imagen de Cuprite (19 targets) Tabla 5.8. Precisión en la detección de targets para la imagen del World Trade Center (30 targets). 112 Tabla 5.9. Iteración para detectar cada target en su posición exacta, de un total de 200 iteraciones. 113 Tabla Tiempos de ejecución y speedup dependiendo del compilador usado y de la utilización de flags de compilación sobre la imagen de Cuprite (19 targets) Tabla Tiempos de ejecución y speedup dependiendo del compilador usado y de la utilización de flags de compilación sobre la imagen del World Trade Center (30 targets) Tabla Recursos utilizados de la FPGA Virtex 5, para la implementación del algoritmo ATGP modificado. Imagen de 36x36 píxeles y 5 targets a calcular Tabla Recursos utilizados de la FPGA Stratix III, para la implementación del algoritmo ATGP modificado. Imagen de 36x36 píxeles y 5 targets a calcular Tabla Restricciones de las distintas implementaciones del algoritmo ATGP modificado. Imagen de 36x36 píxeles y 5 targets a calcular Tabla Recursos utilizados de la FPGA Virtex 5, para la implementación del módulo projection. 121 Tabla Recursos utilizados de la FPGA Stratix III, para la implementación del módulo projection. 121 Tabla Restricciones de la versión secuencial y paralela del módulo projection Trabajo Fin de Máster -13- Sergio Bernabé García

14 1. Motivaciones y objetivos 1.1. Motivaciones El presente trabajo se ha desarrollado dentro de las líneas de investigación actuales del Grupo Hypercomp de la Universidad de Extremadura, y en colaboración con el Instituto Universitario de Microelectrónica Aplicada (IUMA 1 ), más específicamente con la división de Diseño de Sistemas Integrados (DSI 2 ) y consiste en la implementación eficiente de un algoritmo de extracción de endmembers en imágenes hiperespectrales, haciendo uso de FPGAS de Xilinx y Altera, aprovechando el paralelismo intrínseco que ofrecen dichas tarjetas en operaciones de procesamiento de imágenes. El objetivo a conseguir con este trabajo es impulsar la línea de investigación: Implementación eficiente de algoritmos de tratamiento de imágenes hiperespectrales en tarjetas especializadas como son el caso de las FPGAs. Las imágenes hiperespectrales suponen una extensión del concepto de imagen digital, en el sentido de que sus píxeles no están formados por un único valor discreto, sino por un conjunto amplio de valores correspondientes a las diferentes mediciones espectrales realizadas por un sensor o instrumento de medida en diferentes longitudes de onda. Podemos entender así una imagen hiperespectral como una colección de medidas espectroscópicas que ofrecen una gran cantidad de información sobre las propiedades de los materiales que aparecen en la escena. Las técnicas de análisis hiperespectral han encontrado numerosas aplicaciones prácticas, entre las que podemos enumerar las aplicaciones militares (detección de targets u objetivos); detección y monitorización de fuegos y agentes contaminantes en aguas y atmósfera (agentes químicos o vertidos en aguas); agricultura de precisión; identificación y cuantificación de especies geológicas; análisis y caracterización de la vegetación en ecosistemas terrestres para estudio de fenómenos como el cambio climático global, el impacto del crecimiento urbano y la contaminación en el medio ambiente, y un largo etcétera. Una de las principales aplicaciones relacionadas con el análisis de este tipo de imágenes de gran dimensionalidad en el dominio espectral es en la detección de Trabajo Fin de Máster -14- Sergio Bernabé García

15 objetivos y anomalías en la escena, los cuales pueden entenderse como cambios abruptos en los dominios espacial y espectral de la escena. Este proceso es altamente complejo ya que la distinción entre objeto de interés o target y los objetos no deseados o background (fondo) es dependiente tanto de la aplicación como de la complejidad de la escena. A pesar de su complejidad inherente, el proceso de detección de targets y anomalías tiene gran cantidad de aplicaciones reales, desde las aplicaciones militares para la detección de material armamentístico camuflado, minas antipersona, y otras unidades militares; hasta la identificación de agentes contaminantes en aguas y atmósfera, detección de incendios, etc. Uno de los problemas asociados a los sistemas automáticos de detección de objetivos es la elevada dimensionalidad de las imágenes procesadas. Generalmente el tiempo de respuesta para estas aplicaciones de detección ha de ser razonable y los resultados deben obtenerse en un corto periodo de tiempo, por ejemplo, para detectar un incendio y poder aplicar los mecanismos de respuesta pertinentes. En este sentido, uno de los aspectos que han condicionado en mayor medida las metodologías propuestas en esta memoria es la posibilidad de obtener técnicas de análisis computacionalmente eficientes. Las imágenes hiperespectrales se caracterizan por requerimientos extremos en cuanto a espacio de almacenamiento, ancho de banda de transmisión y velocidad de procesamiento. Estos requerimientos deben traducirse en algoritmos de análisis susceptibles de ser ejecutados en paralelo. Sin embargo, muchos algoritmos de análisis hiperespectral son altamente susceptibles de ser paralelizados, debido a sus escasas restricciones secuenciales. En este sentido, una de las posibilidades más interesantes en la actualidad es la obtención de técnicas de procesamiento a bordo, capaces de ofrecer una respuesta en tiempo casi real. En el presente trabajo se han desarrollado técnicas hiperespectrales para su ejecución sobre tarjetas especializadas como son el caso de las FPGAs y se ha evaluado cuantitativamente tanto su comportamiento (en términos de precisión) como su rendimiento en paralelo sobre distintos tipos de imágenes hiperespectrales y tarjetas FPGAs, con lo que se intenta introducir nuevas tendencias en cuanto al procesamiento en tiempo real de imágenes hiperespectrales a bordo de un satélite. Trabajo Fin de Máster -15- Sergio Bernabé García

16 1.2. Objetivos El presente trabajo pretende desarrollar nuevas técnicas paralelas de análisis de imágenes hiperespectrales, eficientes en términos computacionales, orientadas a la detección automática de targets u objetivos en la imagen. La consecución de este objetivo general se lleva a cabo abordando una serie de objetivos específicos, los cuales se enumeran a continuación: 1. Estudiar las técnicas existentes para detección de targets utilizadas actualmente en el ámbito del análisis hiperespectral, evaluando sus ventajas e inconvenientes, así como los requerimientos computacionales de las mismas para conseguir un alto grado de precisión en su funcionamiento. 2. Estudio de una metodología que nos ayude a realizar diseños de alto nivel a través de un código en Matlab o bien un código en C/C++, hasta un código RTL entendible por FPGAs. 3. Mejorar la implementación de un algoritmo para detección de targets denominado Automated Target Generation Process (ATGP). Dicha implementación se realizará en lenguaje C y Matlab. 4. Desarrollo o propuesta de una nueva versión paralela del algoritmo ATGP, utilizando lenguaje Verilog. Dicho lenguaje soporta el diseño, prueba e implementación de circuitos analógicos, digitales y de señal mixta a diferentes niveles de abstracción. 5. Estudiar la eficiencia de incorporar el método de Gram-Schmidt como una nueva forma de poder realizar el cálculo de vectores ortogonales, tanto en coste computacional como en coste de ejecución. 6. Estudiar la eficiencia de incorporar operaciones en punto fijo frente a realizarlas en punto flotante. 7. Realización de un exhaustivo estudio comparativo (en términos de precisión y rendimiento computacional) de las nuevas técnicas de análisis hiperespectral propuestas, en dos casos distintos: Trabajo Fin de Máster -16- Sergio Bernabé García

17 a. En el contexto de una aplicación real relacionada con la detección de incendios en una imagen obtenida por el sensor Airborne Visible Infra- Red Imaging Spectrometer (AVIRIS) de la NASA sobre la zona del World Trade Center en la ciudad de Nueva York, días después del atentado terrorista del 11 de Septiembre de b. En el contexto de una aplicación real relacionado con la detección de componentes minerales en una imagen obtenida por el sensor AVIRIS sobre el distrito minero de Cuprite, Nevada, el cual ha sido utilizado a lo largo de los años como una zona de estudio para la validación de algoritmos de tratamiento de imágenes hiperespectrales, sobre todo, para evaluar la precisión de algoritmos de extracción de endmembers. Teniendo presentes los anteriores objetivos concretos, procedemos a describir la organización del resto de esta memoria, estructurada en una serie de capítulos cuyos contenidos se describen a continuación: Introducción. En este capítulo introductorio se describen los antecedentes relacionados con análisis de imágenes hiperespectrales, sensores hiperespectrales utilizados, técnicas de análisis de imágenes hiperespectrales relacionadas con detección de targets y anomalías, y necesidad de paralelismo y capacidad de procesamiento en tiempo real a la hora de aplicar dichas técnicas. FPGA (Field Programmable Gate Array). En este capítulo se describe el estado del arte de este tipo de tarjetas especializadas consideradas a la hora de desarrollar algoritmos paralelos para el procesamiento de imágenes hiperespectrales, mostrando especial interés en su arquitectura, programación (para este trabajo se utilizará Verilog) y en su metodología de diseño. Algoritmo ATGP y sus modificaciones. Flujo de diseño de alto nivel: Desde Matlab a programación sobre FPGA. En este capítulo se describe la nueva implementación y versiones modificadas para el algoritmo Automatic Target Generation Process (ATGP) que posteriormente se aplicará a dos tipos de tarjetas FPGAs. Además se finalizará dicho capitulo con el estudio de una Trabajo Fin de Máster -17- Sergio Bernabé García

18 metodología que será necesaria para poder pasar un código en Matlab o en C/C++ a un código RTL entendible por tarjetas FPGAs. Resultados. En este capítulo se presenta un exhaustivo estudio cuantitativo y comparativo entre los diseños de alto nivel, desde Matlab y desde C respectivamente del algoritmo ATGP, implementadas sobre una FPGA Virtex 5 y una FPGA Stratix III y analizadas en dos contextos de aplicaciones reales: 1. Orientado a la identificación automática de targets (fuegos) en la zona del World Trade Center de Nueva York tras el atentado, utilizando una imagen hiperespectral obtenida por el sensor AVIRIS de NASA. 2. Orientado a la identificación automática de targets (componentes minerales) en el distrito minero de Cuprite, Nevada. Dicha imagen se ha obtenido también por el sensor AVIRIS de NASA. Conclusiones y líneas futuras. Este capítulo está dedicado a resumir las principales aportaciones realizadas por la presente memoria y a mostrar las conclusiones derivadas. Además, el capítulo sugiere un conjunto de líneas de trabajo que podrán ser abordadas en futuros trabajos. Anexos. En este capítulo se expone un tutorial que pretende ser una guía de aprendizaje para el diseño HDL usando Verilog. En ella nos encontraremos una serie de conceptos sobre diseños con ejemplos explicativos. Cada apunte a la sintaxis, representación de constantes, directivas, etc se introduce a medida que van siendo necesarios para el desarrollo del ejemplo. Bibliografía. En este apartado se incluyen las referencias bibliográficas consultadas durante la elaboración del presente trabajo, así como las referencias que expanden y completan los conceptos fundamentales presentados a lo largo del presente trabajo de investigación. Publicaciones. Se incluyen las publicaciones conseguidas hasta el momento. Trabajo Fin de Máster -18- Sergio Bernabé García

19 2. Introducción El presente capítulo se organiza de la siguiente forma. En primer lugar, describimos el concepto de imagen hiperespectral, detallando las particularidades y características propias de este tipo de imágenes de alta dimensionalidad. A continuación, describimos algunas características genéricas de los sensores de adquisición de este tipo de datos, haciendo énfasis en los sensores utilizados en el presente trabajo. Seguidamente, se muestra una visión general de las técnicas de análisis de imágenes hiperespectrales relacionadas con detección de targets disponibles en la actualidad. El capítulo concluye la necesidad de paralelismo en este campo y mostrando el papel de las FPGAs para su tratamiento Concepto de imagen hiperespectral El asentamiento de la tecnología hiperespectral en aplicaciones de observación remota de la tierra ha dado como resultado el desarrollo de instrumentos de medida de muy elevada resolución en los dominios espacial y espectral. Los sensores hiperespectrales adquieren imágenes digitales en una gran cantidad de canales espectrales muy cercanos entre sí, obteniendo, para cada porción de la escena o píxel, una firma espectral característica de cada material. El resultado de la toma de datos por parte de un sensor hiperespectral sobre una determinada escena puede ser representado en forma de cubo de datos, con dos dimensiones para representar la ubicación espacial de un píxel, y una tercera dimensión que representa la singularidad espectral de cada píxel en diferentes longitudes de onda [1]. La Figura 2.1 muestra la estructura de una imagen hiperespectral donde el eje X es el indicador de las líneas, el eje Y es el indicador de las muestras y el eje Z es el número de bandas, es decir, la longitud de onda de esa banda (canal). Como puede apreciarse en la Figura 2.1, el resultado de la toma de datos por parte de un sensor hiperespectral sobre una determinada escena puede ser representado en forma de cubo de datos, con dos dimensiones para representar la ubicación espacial de un píxel, y una tercera dimensión que representa la singularidad espectral de cada píxel en diferentes longitudes de onda. En concreto, la capacidad de observación de los Trabajo Fin de Máster -19- Sergio Bernabé García

20 sensores denominados hiperespectrales permite la obtención de una firma espectral detallada para cada píxel de la imagen, dada por los valores de reflectancia adquiridos por el sensor en diferentes longitudes de onda, lo cual permite una caracterización muy precisa de la superficie de nuestro planeta. Como ejemplo ilustrativo, la Figura 2.2 muestra el procedimiento de análisis hiperespectral mediante un sencillo diagrama, en el que se ha considerado como ejemplo el sensor AVIRIS (Airborne Visible Infra- Red Imaging Spectrometer), desarrollado por NASA/Jet Propulsión Laboratory, el cual cubre el rango de longitudes de onda entre 0.4 y 2.5 nm utilizando 224 canales y resolución espectral de aproximadamente 10 nm. Figura 2.1. Concepto de imagen hiperespectral. Como puede apreciarse en la Figura 2.2, la capacidad de observación de este sensor permite la obtención de una firma espectral detallada para cada píxel de la imagen, dada por los valores de reflectancia adquiridos por el sensor en diferentes longitudes de onda, lo cual permite una caracterización muy precisa de la superficie de nuestro planeta. Conviene destacar que, en este tipo de imágenes, es habitual la existencia de mezclas a nivel de subpíxel, por lo que a grandes rasgos podemos encontrar dos tipos de píxeles en estas imágenes: píxel puros y píxel mezcla [2]. Se puede definir un píxel mezcla como aquel en el que cohabitan diferentes materiales. Este tipo de píxel son los que constituyen la mayor parte de la imagen hiperespectral, en parte, debido a que este fenómeno es independiente de la escala considerada ya que tiene lugar incluso a niveles microscópicos [3]. La Figura 2.3 muestra un ejemplo del proceso de adquisición de Trabajo Fin de Máster -20- Sergio Bernabé García

21 píxeles puros (a nivel macroscópico) y mezcla en imágenes hiperespectrales. Figura 2.2. Adquisición de una imagen hiperespectral por el sensor AVIRIS. Figura 2.3. Tipo de pixeles en imágenes hiperespectrales. El desarrollo tecnológico introducido por la incorporación de sensores hiperespectrales en plataformas de observación remota de la tierra de última generación Trabajo Fin de Máster -21- Sergio Bernabé García

22 ha sido particularmente notable durante los últimos años. En este sentido, conviene destacar que dos de las principales plataformas de tipo satélite que se encuentran en funcionamiento en la actualidad: Earth Observing-1 de NASA 3 y ENVISAT de la Agencia Espacial Europea 4, llevan incorporados sensores de este tipo, permitiendo así la posibilidad de obtener imágenes hiperespectrales de la práctica totalidad del planeta de manera casi continua. A pesar de la gran evolución en los instrumentos de observación remota de la tierra, la evolución en las técnicas de análisis de los datos proporcionados por dichos sensores no ha sido tan notoria. En particular, la obtención de técnicas de análisis hiperespectral avanzadas, capaces de aprovechar totalmente la gran cantidad de información espacial y espectral presente en imágenes hiperespectrales, constituye un objetivo de gran interés para la comunidad científica. A continuación, describimos en detalle las características del sensor hiperespectral utilizado en el presente estudio Sensores hiperespectrales considerados En la actualidad, existe una amplia gama de sensores hiperespectrales de observación remota de la tierra. Dichos sensores pueden clasificarse según el modo en que son transportados (plataforma de transporte) en el momento de la toma de datos [4-6]. La mayor parte de los sensores hiperespectrales actuales son aerotransportados (siendo el ejemplo más claro de este tipo de instrumentos el sensor AVIRIS, considerado en el presente trabajo). AVIRIS es un sensor hiperespectral aerotransportado con capacidades analíticas en las zonas visible e infrarroja del espectro [7-9]. Este sensor está en funcionamiento desde Fue el primer sistema de adquisición de imágenes capaz de obtener información en una gran cantidad de bandas espectrales estrechas y casi contiguas. AVIRIS es un instrumento único en el mundo de la teledetección, pues permite obtener información espectral en 224 canales espectrales contiguos, cubriendo un rango de longitudes de onda entre 0.4 y 2.5 m, siendo el ancho entre las bandas muy pequeño, aproximadamente 0.01 m Trabajo Fin de Máster -22- Sergio Bernabé García

23 En 1989, AVIRIS se convirtió en un instrumento aerotransportado. Desde ese momento, se realizan varias campañas de vuelo cada año para tomar datos mediante AVIRIS. El sensor ha realizado tomas de datos en Estados Unidos, Canadá y Europa, utilizando para ello dos plataformas: Un avión ER-2 perteneciente a NASA/Jet Propulsion Laboratory. El ER-2 puede volar a un máximo de 20 km sobre el nivel del mar, a una velocidad máxima de aproximadamente 730 km/h. Un avión denominado Twin Otter, capaz de volar a un máximo de 4 km sobre el nivel del mar, a velocidades de 130 km/h. Algunas de las características más relevantes en cuanto al diseño interno del sensor AVIRIS son las siguientes: El sensor utiliza un explorador de barrido que permite obtener un total de 614 píxeles por cada oscilación. La cobertura de la parte visible del espectro es realizada por un espectrómetro EFOS-A, compuesto por un array de 32 detectores lineales. La cobertura en el infrarrojo es realizada por los espectrómetros EFOS-B, EFOS-C y EFOS-D, compuestos todos ellos por arrays de 64 detectores lineales. La señal medida por cada detector se amplifica y se codifica utilizando 12 bits. Esta señal se almacena en una memoria intermedia donde es sometida a una etapa de preprocesado, siendo registrada a continuación en una cinta de alta densidad de 10.4 GB a velocidad de 20.4 MB/s. El sensor dispone de un sistema de calibración a bordo, que utiliza una lámpara halógena de cuarzo que proporciona la radiación de referencia necesaria para comprobar el estado de los diferentes espectrómetros. A lo largo de los últimos años, el sensor ha ido mejorando sus prestaciones en cuanto a la relación señal-ruido, como se muestra en la Figura 2.4 que describe la evolución de la relación SNR del sensor a lo largo de los últimos años. Trabajo Fin de Máster -23- Sergio Bernabé García

24 Figura 2.4. Evolución de la relación SNR del sensor AVIRIS de NASA Técnicas de análisis hiperespectral y la necesidad de paralelismo La mayoría de las técnicas de análisis hiperespectral desarrolladas hasta la fecha presuponen que la medición obtenida por el sensor en un determinado píxel viene dada por la contribución de diferentes materiales que residen a nivel sub-píxel. El fenómeno de la mezcla puede venir ocasionado por una insuficiente resolución espacial del sensor, pero lo cierto es que este fenómeno ocurre de forma natural en el mundo real, incluso a niveles microscópicos, por lo que el diseño de técnicas capaces de modelar este fenómeno de manera adecuada resulta imprescindible. No obstante, las técnicas basadas en este modelo son altamente costosas desde el punto de vista computacional. A continuación, detallamos las características genéricas de las técnicas basadas en este modelo y hacemos énfasis en la necesidad de técnicas paralelas para optimizar su rendimiento computacional. Técnicas basadas en el modelo lineal de mezcla El modelo lineal de mezcla expresa los píxeles mezcla [10] como una combinación lineal de firmas asociadas a componentes espectralmente puros (llamados endmembers) en la imagen [11]. Este modelo ofrece resultados satisfactorios cuando los componentes Trabajo Fin de Máster -24- Sergio Bernabé García

25 que residen a nivel sub-píxel aparecen espacialmente separados, situación en la que los fenómenos de absorción y reflexión de la radiación electromagnética incidente pueden ser caracterizados siguiendo un patrón estrictamente lineal. En la actualidad, el modelo lineal de mezcla es el más utilizado en análisis hiperespectral, debido a su sencillez y generalidad. Figura 2.5. Interpretación gráfica del modelo lineal de mezcla. El modelo lineal de mezcla puede interpretarse de forma gráfica en un espacio bidimensional utilizando un diagrama de dispersión entre dos bandas poco correlacionadas de la imagen, tal y como se muestra en la Figura 2.5. En la misma, puede apreciarse que todos los puntos de la imagen quedan englobados dentro del triángulo formado por los tres puntos más extremos (elementos espectralmente más puros). Los vectores asociados a dichos puntos constituyen un nuevo sistema de coordenadas con origen en el centroide de la nube de puntos, de forma que cualquier punto de la imagen puede expresarse como combinación lineal de los puntos más extremos, siendo estos puntos los mejores candidatos para ser seleccionados como endmembers [12]. El paso clave a la hora de aplicar el modelo lineal de mezcla consiste en identificar de forma correcta los elementos extremos de la nube de puntos N- dimensional. En la literatura reciente se han aplicado diferentes algoritmos de Trabajo Fin de Máster -25- Sergio Bernabé García

26 extracción de firmas espectrales puras o endmembers al problema de detección de targets. En cuanto a la metodología de funcionamiento de este tipo de algoritmos, existen diversos criterios a la hora de iniciar el proceso de detección. Por ejemplo, el algoritmo Iterative Error Analysis (IEA) [13] utiliza un proceso iterativo partiendo del pixel promedio (centroide) de la escena y utilizando el error cuadrático medio para generar un conjunto de targets en base a su disimilaridad aplicando dicho criterio. El algoritmo Unsupervised Fully Constrained Least Squares (UFCLS) [14] aplica un criterio similar, pero en este caso el target inicial es el pixel más brillante de la escena. Por último, en la literatura reciente se han aplicado diferentes algoritmos de extracción de firmas espectrales puras o endmembers al problema de detección de targets. Entre dichos algoritmos se encuentran el Pixel Purity Index [15], N-FINDR [16-17] o el denominado Vertex Component Analysis (VCA) [18], los cuales detectan pixeles aplicando conceptos de extremidad o convexidad en el espacio multidimensional. En trabajos previos, se ha demostrado que los algoritmos de extracción de endmembers tienden a penalizar aquellos targets cuyas características espectrales no son puras desde un punto de vista espectral [2], lo cual no depende enteramente de la naturaleza del target u objetivo sino que también puede estar relacionado con aspectos como la resolución espacial de las imágenes. Dado que en este trabajo consideramos datos obtenidos por sensores con resoluciones dispares (20 metros en AVIRIS frente a 1 metro en HYDICE) dichas técnicas de extracción de endmembers no serán consideradas en el presente trabajo. A la hora de desarrollar nuevos algoritmos para detección de targets en el presente trabajo, hemos tomado como punto de partida un algoritmo estándar ampliamente utilizado en la literatura: ATGP [19]. Dicho algoritmo toma como punto de partida, el pixel más brillante de la imagen. De forma similar a otras medidas existentes, es posible utilizar diferentes puntos de partida en lugar del pixel más brillante, pero en estos casos, se ha comprobado experimentalmente que dicho pixel siempre es detectado en un número reducido de iteraciones de los algoritmos si no se ha escogido como punto de partida. A continuación, mostramos una descripción algorítmica detallada del algoritmo ATGP. El subapartado termina justificando la necesidad de paralelismo en este tipo de algoritmos. Trabajo Fin de Máster -26- Sergio Bernabé García

27 Automated Target Generation Process (ATGP) Automated Target Generation Process o ATGP fue desarrollado inicialmente para encontrar firmas espectrales utilizando proyecciones ortogonales [20-21]. Este algoritmo hace uso de un operador de proyección ortogonal que viene dado por la expresión mostrada en la ecuación (2.1) (2.1) Donde U es la matriz de firmas espectrales, U t es la traspuesta de dicha matriz e I es la matriz identidad. El algoritmo ATGP utiliza la proyección ortogonal de la ecuación (2.1) en cada iteración para encontrar una serie de píxeles o vectores de bandas ortogonales a partir de un píxel inicial que se le pasa al algoritmo como valor ATGP y que por defecto suele ser el píxel más brillante. Este algoritmo realiza los siguientes pasos: 1. Calcular t 0, el píxel más brillante de la imagen hiperespectral, utilizando la siguiente expresión que muestra la ecuación (2.2), donde F(x,y) es el píxel (vector) en las coordenadas (x,y) de la imagen. Como puede comprobarse, el píxel más brillante es aquel que resulta en mayor valor al realizar el producto vectorial entre el vector asociado a dicho píxel y su transpuesto F(x,y) T. { [ ]} (2.2) 2. Aplicar un operador de proyección ortogonal que denotamos como, basado en la ecuación (2.1), con U=t 0. Este operador se aplica a todos los píxeles de la imagen hiperespectral. 3. A continuación, el algoritmo encuentra un nuevo target denominado t 1 con el mayor valor en el espacio complementario, ortogonal a t 0, de la siguiente forma utilizando la ecuación (2.3). En otras palabras, el algoritmo busca el píxel con mayor ortogonalidad con respecto a t 0. { [ ] [ ]} (2.3) Trabajo Fin de Máster -27- Sergio Bernabé García

28 4. El siguiente paso es modificar la matriz U añadiendo el nuevo target encontrado, es decir, U = [t 0 t 1 ]. 5. Seguidamente, el algoritmo encuentra un nuevo target denominado t 2 con el mayor valor en el espacio complementario, ortogonal a y, utilizando la ecuación (2.4). Es preciso tener en cuenta que, a diferencia del paso 3 en el que U =, en este punto el proyector ortogonal se basa en una matriz U = [t 0 t 1 ], por lo que el concepto de ortogonalidad es diferente. { [ ] [ ]} (2.4) 6. El proceso se repite, de forma iterativa, para encontrar un tercer target, un cuarto target, hasta que se satisface una determinada condición de terminación para el algoritmo. La condición de terminación considerada en el presente trabajo es alcanzar un número de targets p determinado a priori como parámetro de entrada al algoritmo. NECESIDAD DE PARALELISMO El proceso de captación de datos hiperespectrales por parte de sensores remotos de observación de la tierra produce cantidades muy grandes de datos de gran dimensionalidad que deben ser almacenados y tratados de forma eficiente. La falta de arquitecturas consolidadas para el tratamiento eficiente de imágenes hiperespectrales ha dado lugar a una situación actual en la que, a pesar de que diferentes instituciones como NASA o la Agencia Europea del Espacio obtienen varios Terabytes de datos hiperespectrales cada día, se estima que una parte significativa de dichos datos no son nunca utilizados o procesados, sino meramente almacenados en una base de datos. Con el desarrollo de las arquitecturas de computación paralela en problemas de cálculo científico, en la actualidad existe una activa línea de investigación en cuanto al desarrollo de algoritmos para el procesamiento eficiente de datos hiperespectrales. Desde un punto de vista computacional [22], estos algoritmos presentan paralelismo en múltiples niveles: a través de los vectores que constituyen los pixeles (paralelismo de grano grueso a nivel de pixel), a través de la información espectral (paralelismo de grano fino a nivel espectral), e incluso a través de tareas. Teniendo en cuenta que los Trabajo Fin de Máster -28- Sergio Bernabé García

29 accesos a datos en estos algoritmos son regulares y altamente predecibles, se pueden mapear fácilmente sobre sistemas paralelos. A continuación, describimos brevemente los recientes avances realizados utilizando arquitecturas paralelas. Es preciso destacar que las técnicas de detección de targets descritas anteriormente se basan en realizar operaciones matriciales muy costosas computacionalmente, cuyo carácter repetitivo las hace altamente susceptibles de ser implementadas en arquitecturas paralelas [23-25]. De esta forma se puede incrementar significativamente el rendimiento, llegando a obtener respuestas en tiempo real o casi real. Este punto es muy importante, dadas las numerosas aplicaciones de este tipo de algoritmos (detección de agentes contaminantes, incendios, etc.) que requieren una respuesta inmediata [26]. En la actualidad, es posible obtener arquitecturas paralelas de bajo coste mediante la utilización de FPGAs de última generación. El papel de las FPGAs La identificación de endmembers es una tarea crucial en la explotación de datos hiperespectrales. En la última década se han desarrollado muchos algoritmos para la detección automática de endmembers desde un conjunto de datos hiperespectrales, incluidos PPI, N-FINDR, ATPGP o VCA (Vertex Component Analysis). Estas técnicas tratan los datos hiperespectrales no como una imagen sino como una lista desordenada de dimensiones espectrales, donde las coordenadas espaciales se pueden cambiar de forma aleatoria sin que esto afecte al proceso de identificación de endmembers. Figura 2.6. Configuración típica de armarios de un cluster Beowulf. Trabajo Fin de Máster -29- Sergio Bernabé García

30 A pesar de que el desarrollo espacial y espectral es una promesa para el análisis científico de imágenes terrestres, introduce un nuevo reto de procesamiento particularmente para conjunto de datos de alta dimensionalidad. Desde un punto de vista computacional cada algoritmo muestra un patrón de acceso a los datos regular y que muestra un paralelismo inherente a muchos niveles: a nivel de vectores de píxeles, a nivel de información espectral e incluso a nivel de tarea. Como resultado se asocian con sistemas paralelos compuestos por CPUs (por ejemplo clusters Beowulf, ver Figura 2.6). Desafortunadamente estos sistemas son caros y difíciles de adaptar a bordo de escenarios de procesamiento de sensación remota. Un nuevo desarrollo en el campo de la computación surge con los procesadores gráficos programables (GPUs, ver Figura 2.7). Guiadas por la creciente demanda de la industria de los videojuegos, las GPUs han evolucionado como sistemas programables altamente paralelos. Sin embargo la arquitectura de las GPUs no encaja necesariamente con todos los tipos de computación paralela. Figura 2.7. Distintos modelos de GPUs NVidia. En especial, el siempre creciente requerimiento computacional introducido por el estado actual de los algoritmos de imágenes hiperespectrales pueden beneficiarse por otros dispositivos hardware como las FPGAs [27] (ver Figura 2.8), capaz de tomar ventaja por su poco peso y bajo coste de sus unidades, lo que lo hace llamativo para el procesamiento de datos a bordo por un coste mucho más bajo del que tienen otros dispositivos hardware como son las GPUs. Trabajo Fin de Máster -30- Sergio Bernabé García

31 Figura 2.8. Ejemplo de una FPGA Virtex-5 y STRATIX III. Trabajo Fin de Máster -31- Sergio Bernabé García

32 3. FPGA (Field Programmable Gate Array) 3.1. Introducción Cuando se aborda el diseño de un sistema electrónico y surge la necesidad de implementar una parte con hardware dedicado, son varias las posibilidades que existen. En la Figura 3.1 se muestra un esquema con las diferentes posibilidades que existen actualmente. En rojo se han marcado las FPGAs, porque es la que se empleará por los motivos que a continuación se explican. Figura 3.1. Esquema de los distintos tipos de circuitos integrados. Los circuitos full-custom también se denominan ASIC (Circuito Integrado para aplicaciones específicas), mientras que los circuitos estándar engloban a algunos procesadores y otros circuitos cuya lógica está ya fijada e implementada. En la Figura 3.2, se representa en un gráfico de eficiencia frente a flexibilidad algunos de los dispositivos pertenecientes a las tres familias principales anteriormente mencionadas. Tal y como se observa, los procesadores ofrecen una flexibilidad muy elevada y la implementación de los programas sobre los mismos conlleva un bajo coste, resultando Trabajo Fin de Máster -32- Sergio Bernabé García

33 relativamente sencillo. No obstante la eficiencia es baja por lo que no es una opción válida en determinados casos en los que se desea alcanzar un nivel de prestaciones relativamente alto. Además, no se pueden utilizar técnicas de implementación en paralelo para la aceleración del proceso, más allá de las que ofrece el procesador en sí. Figura 3.2. Flexibilidad vs eficiencia para diferentes arquitecturas. Los ASICs nos permiten realizar el diseño a partir de los elementos más comunes de la lógica digital. Es un circuito hecho a la medida de un uso particular y no es de propósito general. Se consigue una eficiencia muy alta, ya que el circuito se encuentra muy optimizado. No obstante, este tipo de implementación está dirigida a la etapa final de realización del producto, cuando se pretende comercializar y ya se han hecho todas las pruebas necesarias sobre un diseño muy robusto. Las FPGAs son dispositivos programables, ideales para la realización de prototipos, en los que el número de cambios en la implementación es elevado, para poder ser sometido a diferentes pruebas una vez que ha sido programado en la placa. Además es un dispositivo que ofrece un gran equilibrio entre flexibilidad y eficiencia. Es por ello que se ha elegido en la implementación de los algoritmos que se presentan en capítulos posteriores. En el siguiente apartado se explican las principales características de las FPGA. Trabajo Fin de Máster -33- Sergio Bernabé García

34 3.2. Evolución Las FPGAs son inventadas en el año 1984 por Ross Freeman, co-fundador de Xilinx, y surgen como una evolución de los CPLDs. Tanto los CPLDs como las FPGAs contienen un gran número de elementos lógicos programables. Si se mide la densidad de los elementos lógicos programables en compuertas lógicas equivalentes, se puede decir que en un CPLD se encuentran por el orden de decenas de miles de compuertas lógicas y en una FPGA por el orden de cientos de miles hasta millones de ellas. Aparte de las diferencias en densidad entre ambos tipos de dispositivos, la diferencia fundamental entre las FPGAs y los CPLDs es su arquitectura. La arquitectura de los CPLDs es más rígida y consiste en una o más sumas de productos programables cuyos resultados van hacia un número reducido de biestables síncronos (también denominados flip-flops). Sin embargo, la arquitectura de las FPGAs, se basa en un gran número de pequeños bloques utilizados para reproducir sencillas operaciones lógicas, que cuentan a su vez con biestables síncronos. La enorme libertad disponible en la interconexión de dichos bloques confiere a las FPGAs una gran flexibilidad. Otra diferencia importante entre FPGAs y CPLDs es que en la mayoría de las FPGAs se pueden encontrar funciones de alto nivel, como sumadores, multiplicadores e incluso hasta DSP (Digital Signal Processor), embebidas en la propia matriz de interconexiones, así como bloques de memoria Arquitectura General de las FPGAs Una FPGA consiste en arreglos de varios bloques programables (bloques lógicos) los cuales están interconectados entre sí y con celdas de entrada/salida mediante canales de conexiones verticales y horizontales, tal como muestra la Figura 3.3. En general, se puede decir que posee una estructura bastante regular, aunque el bloque lógico y la arquitectura de rutado varían de un fabricante a otro. La estructura de una FPGA, comparada con la de un CPLD, es mucho más regular, y se encuentra más orientada a diseños que manejan mayores transferencias de datos y registros, en tanto que los CPLD implementan más eficientemente diseños con una parte Trabajo Fin de Máster -34- Sergio Bernabé García

35 combinacional más intensa. La Figura 3.4 muestra a primera vista la estructura correspondiente de cada dispositivo. Figura 3.3. Arquitectura básica de una FPGA. Figura 3.4. Esquema de bloques de la arquitectura interna de una CPLD y una FPGA. Cada bloque lógico de un CPLD tiene su propia parte combinacional que permite realizar un gran número de funciones lógicas programables, más un biestable asociado al pin de entrada/salida. Por su parte, la arquitectura de la FPGA cuenta también con un bloque lógico con una parte combinacional y una parte secuencial. La parte combinacional es mucho más simple que la existente en una CPLD, mientras que la parte secuencial posee uno o dos biestables, que no están generalmente asociados a un Trabajo Fin de Máster -35- Sergio Bernabé García

36 pin de entrada/salida, pues los bloques lógicos se distribuyen regularmente en todo el dispositivo Bloques Lógicos Configurables (CLB) El bloque lógico consta de una parte combinacional, que permite implementar funciones lógicas booleanas, más una parte secuencial que permite sincronizar la salida con una señal de reloj externa e implementar registros. La parte combinacional varía de un fabricante a otro. A continuación, explicaremos dos de ellas, representativas porque poseen prestaciones opuestas. Bloque lógico basado en LUT (look-up table): Una LUT es un componente de células de memoria SRAM que almacena una tabla de verdad, como el de la Figura 3.5. Las direcciones de las células son las entradas de la función lógica que se quiere implementar, y en cada celda de memoria se guarda el resultado para cada una de las combinaciones de las entradas. En una LUT de n x 1 es posible implementar cualquier función lógica de n entradas. Figura 3.5. Bloque lógico basado en LUT. Bloque lógico basado en multiplexores: El bloque lógico basado en multiplexores, como el de la Figura 3.6, se caracteriza porque requiere mucha menos lógica que el anterior basado en una LUT, y, en consecuencia, ocupa mucha menos área. De este modo, se pueden implementar mayor número de bloques lógicos en el mismo espacio, o, para el mismo número de bloques disponer de más espacio para incrementar los recursos de rutado. Como contrapartida, no se puede implementar cualquier función lógica de n entradas, Trabajo Fin de Máster -36- Sergio Bernabé García

37 como ocurría con las LUTs. En caso necesario, esta función lógica hay que repartirla entre varios bloques lógicos. Figura 3.6. Bloque lógico basado en multiplexores. Como se dijo anteriormente, la estructura de los bloques lógicos y las formas en que éstos pueden ser interconectados, tanto salidas como entradas de los bloques, varía de acuerdo al fabricante. En general un bloque lógico tiene menos funcionalidad que la combinación de sumas de productos y macroceldas de un CPLD, pero como cada FPGA tienen una gran cantidad de bloques lógicos, es posible implementar grandes funciones utilizando varios de ellos en cascada Interconexión entre bloques lógicos Además de los bloques lógicos, también es importante la tecnología utilizada para crear las conexiones entre los canales, tecnología de programación. Las más importantes son las siguientes: Antifusible (Antifuse): Una FPGA que utiliza este tipo de tecnología sólo se puede programar una sola vez, y utilizan algo similar a un fusible para las conexiones. La diferencia entre un fusible y un antifusible es que el primero se desactiva deshabilitando la conexión, en cambio, para el segundo se produce una conexión cuando son programados, por lo que normalmente se encuentran abiertos. La desventaja obvia es que no son reutilizables, pero por otro lado disminuyen considerablemente el tamaño y costo de los dispositivos. SRAM (StaticRAM): Estas guardan la configuración del circuito, es decir, que Trabajo Fin de Máster -37- Sergio Bernabé García

38 las SRAM son utilizadas como generadores de funciones y además son usadas para controlar multiplexores, que están incluidos en las FPGAs, y la interconexión entre bloques. En éstas el contenido se almacena mediante un proceso de configuración en el momento de encendido del circuito que contiene la FPGA, ya que al ser SRAM, el contenido de la memoria se pierde cuando se deja de suministrar energía; la información binaria de las celdas SRAM generalmente se almacena en memorias seriales EEPROM conocidas como memorias de configuración o celdas de configuración. En el momento de encendido del circuito toda la información binaria es transferida a los bloques e interconexiones de la FPGA mediante el proceso de configuración el cual es generalmente automático, dado que la propia FPGA contiene un circuito interno que se encarga de hacer toda la programación. Flash: Las FPGAs basadas en celdas flash recogen las ventajas principales de las dos técnicas anteriores situándose en un punto intermedio. Su tamaño es más reducido que el de una celda de SRAM, aunque sin llegar al tamaño reducido de un antifusible; son reprogramables, no obstante la velocidad de programación es más lenta que en el caso de una SRAM; y son no volátiles, por lo que no necesitan dispositivos auxiliares para guardar la configuración interna, como en el caso de la SRAM. Una FPGA que tiene una gran cantidad de canales de interconexión tiende a tener pequeños bloques lógicos con muchas entradas y salidas en comparación con el número de compuertas que contiene el bloque. Este bloque lógico se caracteriza por ser bastante sencillo, con poca lógica en su parte combinacional. Este es el caso del bloque lógico a base de multiplexores. Este tipo de FPGA generalmente utiliza tecnología antifusible. Por otra parte, una FPGA que tiene una estructura pequeña en canales de interconexión tiende a tener grandes bloques lógicos con pocas entradas y salidas, en comparación con el número de compuertas que existe en el bloque. Este es el caso del bloque lógico basado en LUTs, que permiten implementar cualquier función lógica del mismo número de entradas. Este tipo de FPGA generalmente está fabricado con tecnología SRAM. Con respecto a las FPGAs basadas en celdas Flash, éstas suelen emplear un bloque lógico sencillo para incrementar los recursos de rutado, como ocurre con las FPGAs de Trabajo Fin de Máster -38- Sergio Bernabé García

39 antifusibles. Finalmente, una arquitectura con bloques pequeños permite utilizar todos los recursos del dispositivo, sin embargo se tiene que utilizar un gran número de éstos para poder implementar funciones lógicas de varios términos, lo cual genera un tiempo de retardo por cada bloque implementado. Cuando el tamaño del bloque es grande sucede lo contrario, en este tipo de bloques es posible utilizar un gran número de compuertas lo que permite implementar funciones lógicas de varios términos con pocos bloques. El hecho de que el tamaño del bloque sea grande no afecta la frecuencia máxima de trabajo, ya que existe una gran cantidad de compuertas que pueden ser utilizadas en la función en forma paralela, siendo el mismo tiempo de retardo para todas. Sin embargo, cuando las funciones son pequeñas en comparación con el tamaño del bloque, no es necesario utilizar todas las compuertas que soporta el bloque, por lo que este tipo de bloques no son precisamente las más indicadas para desempeñar pequeñas funciones Bloques entrada/salida (IOB) Al igual que en los CPLDs, la función de un bloque de entrada/salida es permitir el paso de una señal hacia dentro o hacia el exterior del dispositivo. Además debe contar con recursos tales como: Salidas configurables como TRI-STATE u open-collector. Entradas con posibilidad de pull-up o pull-down programables. Registros de salida. Registros de entrada. Figura 3.7. Bloque entrada/salida (IOB) de xc4000. Trabajo Fin de Máster -39- Sergio Bernabé García

40 En la Figura 3.7 tenemos como ejemplo un diagrama en bloques simplificado de un bloque de entrada/salida de la familia 4000 de las FPGA de Xilinx Tiempos de propagación El cálculo de los retardos incluidos en un diseño basado en FPGAs no es tan fácil de predecir como en el caso de un CPLD. La propia estructura matricial de estos circuitos hace difícil saber cuántas celdas básicas, interconexiones programables o bloques de entradas/salida se utilizan para cada señal. Esto hace necesario conocer cómo se ha realizado la interconexión entre los bloques en el dispositivo para tener un conocimiento exacto de los retardos de propagación debidos a cada uno. Debido a este factor, las herramientas de desarrollo para FPGAs suelen incluir un analizador de tiempos, que sirve para calcular tiempos de set-up, de clock-to-output, y sobre todo dar una estimación de la frecuencia máxima de operación Programación La tarea del programador es definir la función lógica que realizará cada uno de los CLB, seleccionar el modo de trabajo de cada IOB e interconectarlos. El diseñador cuenta con la ayuda de entornos de desarrollo especializados en el diseño de sistemas a implementarse en una FPGA. Un diseño se puede llevar a cabo, ya sea como un diagrama esquemático, o haciendo uso de un lenguaje de programación especial. Estos lenguajes de programación especializados son conocidos como HDL (Hardware Description Language), siendo los más utilizados: VHDL Verilog ABEL 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, definido por el IEEE (ANSI/IEEE ), utilizado para la descripción del hardware de los sistemas digitales. Entre sus principales características se pueden mencionar: Trabajo Fin de Máster -40- Sergio Bernabé García

41 Lenguaje estándar. Soporte de las principales compañías proveedoras de herramientas CAD (Diseño Asistido por Computadora). Existen formas metódicas para el diseño de máquinas de estados, filtros digitales, bancos de pruebas etc. Flexibilidad de implementación en circuitos integrados, el código VHDL es portable entre herramientas, aunque normalmente es necesario hacer ajustes según el dispositivo o la tecnología. Es un lenguaje popular cuyo número de usuarios sigue aumentando Verilog Algunas veces llamado Verilog HDL, soporta el diseño, prueba e implementación de circuitos analógicos, digitales y de señal mixta a diferentes niveles de abstracción. Más compacto que el lenguaje VHDL, menos detallado. Semejante al lenguaje C. No tiene estructuras, apuntadores o funciones recursivas. El concepto de tiempo, muy importante en un HDL, no se encuentra definido. Difiere de los lenguajes de programación convencionales, en que la ejecución de las sentencias no es estrictamente lineal. Un diseño en Verilog consiste de una jerarquía de módulos. Los módulos son definidos con conjuntos de puertos de entrada, salida y bidireccionales. Internamente un módulo contiene una lista de cables y registros. Las sentencias concurrentes y secuenciales definen el comportamiento del módulo, describiendo las relaciones entre los puertos, cables y registros. Las sentencias secuenciales son colocadas dentro de un bloque begin/end y ejecutadas en orden secuencial, pero todas las sentencias concurrentes y todos los bloques begin/end son ejecutadas en paralelo en el diseño. Un módulo puede contener una o más instancias de otro módulo para definir un subcomportamiento. Trabajo Fin de Máster -41- Sergio Bernabé García

42 ABEL Es el acrónimo de Advanced Boolean Expression Language. Es un lenguaje de descripción de hardware y un conjunto de herramientas de diseño para programar dispositivos lógicos programables (PLDs). Entre sus principales características se cuentan: Permite describir un diseño concurrentemente mediante tablas de verdad o ecuaciones lógicas. Permite la programación secuencial con máquinas de estados. Permite definir vectores de prueba, patrones de entradas y salidas, que pueden ser programados en el hardware. La estructura de los vectores de prueba es similar a la de las tablas de verdad. Tradicionalmente, los PLDs eran programados sólo utilizando lenguajes de programación especializados, sin embargo en fechas recientes han surgido herramientas que ofrecen métodos adicionales de programación, como por ejemplo, la plataforma de programación gráfica LabVIEW integra también un módulo para desarrollo de proyectos en FPGAs. Otros métodos para diseñar circuitos son la captura de esquemas con herramientas CAD y los diagramas de bloques, pero éstos no son prácticos en diseños complejos Fabricantes A principios del año 2007, el mercado de las FPGA se ha colocado en un estado donde hay dos productores de FPGA de propósito general que están a la cabeza del mismo, y un conjunto de otros competidores quienes se diferencian por ofrecer dispositivos de capacidades únicas. Xilinx es uno de los dos grandes líderes en la fabricación de FPGA. Altera es el otro gran líder. Lattice Semiconductor lanzó al mercado dispositivos FPGA con tecnología de 90nm. De hecho, Lattice es un proveedor líder en tecnología no volátil, FPGA Trabajo Fin de Máster -42- Sergio Bernabé García

43 basadas en tecnología Flash, con productos de 90nm y 130nm. Actel tiene FPGAs basados en tecnología Flash reprogrammable. También ofrece FPGAs que incluyen mezcladores de señales basados en Flash. QuickLogic tiene productos basados en antifusibles (programables una sola vez). Atmel es uno de los fabricantes cuyos productos son reconfigurables (el Xilinx XC62xx fue uno de éstos, pero no están siendo fabricados actualmente). Ellos se enfocaron en proveer microcontroladores AVR con FPGAs, todo en el mismo encapsulado. Achronix Semiconductor tienen en desarrollo FPGAs muy veloces. MathStar, Inc. ofrecen FPGA que ellos llaman FPOA (Arreglo de objetos de matriz programable) Metodología de diseño El proceso de diseño lógico con PLDs, en este caso empleando una FPGA, se resume en tres grandes etapas: Diseño lógico. Implementación del diseño. Verificación del diseño. Dentro del diseño lógico, los pasos involucrados son los mismos que en cualquier diseño digital, combinatorio o secuencial, y se pueden subdividir en los siguientes: Definir el problema. Generar un diagrama a bloques. Obtener la tabla de la verdad. Derivar las ecuaciones lógicas que describen la operación del diseño. Por su parte, la implementación del diseño consiste en seleccionar y usar las Trabajo Fin de Máster -43- Sergio Bernabé García

44 herramientas, tanto de hardware y software, necesarias para la traducción de los resultados a un mapa de fusibles para la programación del chip. Esta fase consiste en: Selección de la FPGA. Crear el archivo de ecuaciones. Correr el software para generar el archivo mapa de fusibles. Configurar el programador universal. Programar el chip. La etapa final consiste en la verificación del diseño en donde la correcta programación de la FPGA es comprobada, por medio de técnicas de simulación. Los pasos de la verificación son: Generación de vectores de prueba. Simulación del funcionamiento de la FPGA en la computadora. Prueba funcional del dispositivo. Documentación del diseño. Trabajo Fin de Máster -44- Sergio Bernabé García

45 4. Algoritmo ATGP y sus modificaciones. Flujo de diseño de alto nivel: Desde Matlab a programación sobre FPGA En este capítulo presentaremos la implementación paralela obtenida a través de un flujo de diseño de alto nivel partiendo de una versión secuencial del algoritmo de detección de targets descrito en capítulos previos de la presente memoria. El capítulo se estructura de la siguiente forma: En primer lugar, describimos la versión secuencial del algoritmo ATGP, especificando sus parámetros de entrada y los distintos pasos que se realizan, así como las distintas modificaciones realizadas sobre dicho código. A continuación, se describen cada uno de los pasos del flujo de diseño (ver Figura 4.1) que se ha aplicado a la versión secuencial de dicho algoritmo para poder obtener una versión paralela capaz de ser ejecutada sobre una FPGA, donde tendremos las siguientes partes: Figura 4.1. Metodología utilizada para el diseño de alto nivel. Primera parte: Se hará uso del módulo Embedded MATLAB, que nos proporciona la herramienta MATLAB, para poder generar código eficiente C y C++ de tal manera que podamos crear prototipos y desarrollo de sistemas embebidos, y para acelerar algoritmos en punto fijo. Se compone de más de 300 operaciones y funciones MATLAB y más de 110 funciones procedentes de la librería Fixed-Point Toolbox TM, 40 funciones en la Signal Processing Toolbox y nuevos objetos de sistema en el Signal Processing y en el Video and Trabajo Fin de Máster -45- Sergio Bernabé García

46 Image Processing Blocksets. Segunda parte: Se hará uso de la herramienta Catapult C 5 de síntesis de alto nivel para diseño hardware ASIC y FPGA, desarrollado por Mentor Graphics. De tal manera que dado un código escrito en C, Catapult C podrá producir una salida óptima generando el código RTL correspondiente y así ayudar al programador pasar a un nivel de abstracción más productivo. Tercera parte: En esta tercera y última parte del diseño de alto nivel, tendremos dos opciones: o Se podrá hacer uso de la herramienta de diseño para FPGA Y CPLD Quartus II de Altera o ISE 13.1 de Xilinx, qué nos permitirá compilar el diseño y obtener la frecuencia que podemos alcanzar con el hardware necesario para nuestro algoritmo. o También tendremos la opción de poder utilizar un paquete opcional y compatible a la herramienta Catapult C denominado Precision Synthesis RTL 6, también desarrollado por Mentor Graphics. Nos ofrecerá una excelente calidad de los resultados, ya que elimina defectos del diseño, se añaden optimizaciones avanzadas para finalmente obtener un RTL con mayor precisión y optimizado según la tarjeta FPGA a utilizar. La metodología descripta en la Figura 4.1 puede ser más específica si especificamos cuál va a ser el código de entrada, es decir, si vamos a utilizar en primer lugar código Matlab o código C/C++. Para ello en la Figura 4.2 se presenta una metodología más específica si el código de entrada es código Matlab. Dicha metodología empieza con la decisión de utilizar el Toolbox Fixed-Point de Matlab, si es así, habría que realizar un estudio de compatibilidad de las funciones matemáticas y matriciales del algoritmo con dicho Toolbox. Si alguna de las funciones no son soportadas, habría que realizar un readaptado del código. Dicha adaptación del código también habría que realizarla si utilizamos una aritmética de tipo double ya que posteriormente el código habría que pasarlo por Embedded Matlab Trabajo Fin de Máster -46- Sergio Bernabé García

47 Figura 4.2. Metodología utilizada para el diseño de alto nivel usando código Matlab como entrada. Trabajo Fin de Máster -47- Sergio Bernabé García

48 Figura 4.3. Metodología utilizada para el diseño de alto nivel usando código C/C++ como entrada. Trabajo Fin de Máster -48- Sergio Bernabé García

49 Una vez que el código es compatible con la herramienta Embedded Matlab, necesitaremos generar el código C. Cuando dicho código esté generado habrá que comprobar su funcionamiento y comprobar que el código sigue funcionando igualmente que en su versión Matlab. Si encontramos alguna incoherencia, éste será el momento de realizar adaptaciones y comprobaciones. El siguiente paso será generar el lenguaje de descripción hardware, para que posteriormente se realice el sintetizado del código RTL generado. Este proceso de síntesis podrá ser realizado de tres formas distintas. Todas las distintas formas serán explicadas en la sección cuarta de este capítulo. Si por el contrario el código utilizado como entrada es código C/C++ la metodología que tendremos que utilizar, se encuentra presentada en la Figura 4.3. Es muy similar a la metodología presentada en la Figura 4.2, exceptuando que no tenemos que pasar de un lenguaje de alto nivel a otro, ya que en este caso partimos de un lenguaje C/C++ optimizado para poder conseguir un código RTL optimizado y eficiente. A continuación describiremos la versión secuencial del algoritmo ATGP y las distintas modificaciones realizadas sobre dicho algoritmo El algoritmo implementado En este primer apartado mostraremos la implementación realizada para el algoritmo ATGP en su versión secuencial, haciendo especialmente hincapié en su funcionamiento para así poder, en los apartados siguientes, centrar la atención en las modificaciones que se han ido realizando para obtener un resultado más eficiente a la hora de volcarlo sobre un FPGA. Esta primera versión servirá como punto de partida para obtener más adelante resultados comparativos, como puede ser la frecuencia máxima obtenida por cada uno de los diseños ATGP secuencial Se ha elaborado una versión secuencial en C y otra en código Matlab del algoritmo como primera versión, intentando depurarla al máximo para obtener el mejor Trabajo Fin de Máster -49- Sergio Bernabé García

50 rendimiento posible. Como se comentó anteriormente, el algoritmo ATGP utiliza la proyección ortogonal como media para realizar el proceso de análisis de la imagen hiperespectral. Esta medida viene dada por la ecuación (2.1). Con la idea de explorar nuevos posibles algoritmos de detección de targets se ha realizado una adaptación del algoritmo ATGP, cambiando el mecanismo de calcular los vectores ortogonales por el método de cálculo de vectores ortogonales de Gram- Schmidt 7. De esta forma, estaremos realizando los cálculos de forma más sencilla y que después será necesario para obtener un diseño del algoritmo con una complejidad menor. Estas modificaciones serán realizadas también sobre otra versión secuencial realizada en Matlab, que será utilizada para comprender el flujo de diseño completo, que es uno de los objetivos que se presentan en este trabajo Parámetros de entrada El algoritmo recibe los siguientes parámetros de entrada tras el nombre del ejecutable (por orden): Fichero imagen: es la imagen multiespectral o hiperespectral en formato bsq. Fichero cabecera: es el fichero cabecera que guarda toda la información sobre la imagen. Su extensión es hdr. Los parámetros a extraer de este fichero son los siguientes: o o o Lines: número de líneas de la imagen. Samples: número de muestras de la imagen. Bands: número de bandas de la imagen. Número de targets: es el número de targets que el algoritmo deberá buscar. En la versión Matlab la entrada cambiaría, ya que solo dispone de dos entradas: una estructura de tres dimensiones con los datos de la imagen multiespectral o 7 Trabajo Fin de Máster -50- Sergio Bernabé García

51 hiperespectral, limitada por el número de líneas, muestras y bandas. Además de la otra de las dos entradas, el número de targets Pasos En este apartado describiremos en detalle cada uno de los pasos que sigue el algoritmo de detección de targets. Vamos a clasificar los pasos en una serie de fases que englobarán unas operaciones determinadas. INICIALIZACIÓN En esta fase se realiza el proceso de inicialización de la aplicación, lectura de parámetros, etc. Las operaciones realizadas son las siguientes: 1. Comprueba que todos los parámetros sean correctos, y si es así toma sus valores. 2. Lee el fichero cabecera de la imagen (fichero hdr). 3. Reserva memoria para el fichero de la imagen y una estructura temporal (un vector de bandas para poder guardar un píxel concreto). 4. Inicializa matriz de posiciones. Es una matriz de párametro_entrada_targets filas y 2 columnas donde se irán guardando las posiciones X e Y de los targets encontrados. Inicialmente todas las posiciones tendrán como valor Inicializa matriz de firmas espectrales. En esa matriz se irán almacenando cada uno de los vectores de bandas de los píxeles considerados como targets de la imagen. CARGA DEL FICHERO DE IMAGEN Para poder realizar operaciones con la imagen, hemos de extraer sus datos y almacenarlos en alguna estructura que nos permita realizar accesos de forma cómoda y eficiente. En esta fase, el algoritmo realiza el proceso de lectura del fichero de imagen, mediante el cual almacena en la estructura inicializada en la fase anterior todo su Trabajo Fin de Máster -51- Sergio Bernabé García

52 contenido. Concretamente, el algoritmo realiza las siguientes operaciones: 1. Comprueba que el fichero tenga la extensión apropiada. 2. Extrae todos los datos del fichero de imagen, procesando las bandas una a una hasta haber guardado todas ellas en la estructura declarada en la fase de inicialización. 3. Para evitar errores inesperados trunca (establece a 0) los posibles valores negativos obtenidos en el proceso de extracción de la imagen del fichero. Figura 4.4. Cubo de datos. La imagen cargada podríamos verla como un cubo, siendo sus dimensiones el número de líneas, muestras y bandas. La Figura 4.4 muestra una sencilla representación gráfica de un cubo de datos hiperespectrales. OBTENCIÓN DEL PÍXEL MÁS BRILLANTE Como valor de referencia inicial y primer target, el algoritmo toma el píxel más brillante de la imagen. Para ello tras realizar el proceso de inicialización de la aplicación y carga del fichero de imagen, el algoritmo realiza las siguientes operaciones: 1. Lee un píxel (vector de bandas) de la imagen F, que llamaremos F(x,y), que indica el píxel situado en las coordenadas (x,y) de la imagen. 2. Realiza el producto vectorial del píxel por su traspuesto, que vendría Trabajo Fin de Máster -52- Sergio Bernabé García

53 determinado por la operación mostrada en la ecuación (4.1). (4.1) Utilizando la imagen del cubo (Figura 4.4) por ejemplo, si se tratase del píxel (1,1) podríamos representarlo como muestra la Figura 4.5: Figura 4.5. Producto vectorial de un píxel por su traspuesto. 3. Realiza los dos pasos anteriores para todos los píxeles de la imagen desde (1,1) hasta (número_de_muestras, número_de_líneas). 4. Obtiene el valor máximo de todos los productos vectoriales de los píxeles de la imagen, pudiendo resumir los pasos anteriores en la operación mostrada en la ecuación (4.2). [ ] (4.2) 5. Guarda las coordenadas (x,y) del píxel con valor de máximo brillo obtenido al calcular el producto vectorial con su traspuesto. Este píxel sería el primer target, t 0. Sobre la imagen anterior del cubo, sería por ejemplo, como muestra la Figura 4.6: La ecuación (4.3) resume de forma matemática el proceso de detección del píxel más brillante (primer target): { [ ]} (4.3) U = Siendo F(x,y) el píxel (vector de bandas) en las coordenadas (x,y) de la imagen y U, la matriz donde almacenaremos los targets detectados por el algoritmo. Trabajo Fin de Máster -53- Sergio Bernabé García

54 Figura 4.6. Píxel más brillante de la imagen. ATGP La aplicación lanza el algoritmo ATGP (Automated Target Generation Process) para seguir obteniendo targets en el caso de haber especificado calcular más de uno. El algoritmo ATGP recibe como entrada inicial el píxel más brillante calculado en la etapa anterior, y como siguientes entradas el píxel resultado de la nueva etapa del algoritmo. Este algoritmo realiza las siguientes operaciones: 1. Se aplica un operador de proyección ortogonal que denotamos como, basado en la ecuación anterior, con U=t 0. Este operador se aplica a todos los píxeles de la imagen. 2. A continuación, el algoritmo encuentra un nuevo target denominado t 1 con el mayor valor en el espacio complementario forma utilizando la ecuación (4.4)., ortogonal a t 0, de la siguiente { [ ] [ ]} (4.4) 3. El siguiente paso es modificar la matriz U añadiendo el nuevo target Trabajo Fin de Máster -54- Sergio Bernabé García

55 encontrado, es decir, U = [t 0 t 1 ]. 4. Seguidamente, el algoritmo encuentra un nuevo target denominado t 2 con el mayor valor en el espacio complementario, ortogonal a y, utilizando la ecuación (4.5): { [ ] [ ]} (4.5) 5. El proceso se repite, de forma iterativa, para encontrar un cuarto target, un quinto target, hasta que se satisface una determinada condición de terminación para el algoritmo (alcanzar un número de targets p). De esta forma, en cada una de las iteraciones del algoritmo ATGP se guarda un resultado en la matriz de posiciones, hasta conseguir el número de targets deseado. Si por ejemplo quisiésemos encontrar 5 targets, al final obtendríamos 5 posiciones dentro de nuestra imagen, como muestra la Figura Figura 4.7. Targets encontrados FINALIZACIÓN En esta última fase se realizan los procesos básicos de cualquier aplicación en su última instancia. Estas operaciones son: Trabajo Fin de Máster -55- Sergio Bernabé García

56 1. Muestra por pantalla los siguientes datos: Tiempo promedio de ejecución: es el tiempo que ha tardado la aplicación en ejecutarse desde que comenzó a calcularse para el primer target. Es determinado mediante la resta del tiempo de finalización y el de inicio. Targets resultado: Tras el tiempo promedio, se muestra la lista de targets obtenida en la ejecución del algoritmo. 2. Libera la memoria utilizada en la aplicación. 3. Finaliza la ejecución de la aplicación ATGP primera modificación. Se ha elaborado una versión modificada del código secuencial en Matlab del algoritmo como punto de partida, intentando depurarla al máximo para obtener el mejor rendimiento posible. Como se comentó anteriormente, el algoritmo ATGP utiliza la proyección ortogonal como medida para realizar el proceso de análisis de la imagen hiperespectral. Como modificación se ha planteado la modificación del mecanismo a la hora de calcular los vectores ortogonales por el método de Gram-Schmidt. De esta forma, estaremos realizando el cálculo de vectores ortogonales más sencillo y que después será necesario para obtener un diseño del algoritmo con una complejidad menor Método de Gram-Schmidt Con este método estamos ortogonalizando un conjunto de vectores en un espacio de producto interno, por lo general el espacio euclidiano R n. El proceso de Gram-Schmidt tiene un conjunto finito linealmente independiente de vectores S = {v 1,, v k } para k n, y genera un conjunto ortogonal de vectores S = {u 1,, u k } que se extiende por el mismo k-subespacio dimensional de R n al igual que S. Trabajo Fin de Máster -56- Sergio Bernabé García

57 PROCESO Nosotros definimos el operador proyección utilizando la ecuación (4.6): (4.6) Donde < u, v > denota al producto interno de los vectores u y v. Este operador de proyección de v es ortogonalmente al vector u. El proceso de Gram-Schmidt continúa de la siguiente forma (4.7): (4.7) La secuencia u 1,, u k es el sistema de vectores ortogonales requeridos, y los vectores normalizados e 1,, e k forman un conjunto orto-normal. El cálculo de la secuencia u 1,, u k se conoce como ortogonalización de Gram-Schmidt, mientras que el cálculo de la secuencia e 1,, e k se conoce como ortonormalización Gram-Schmidt donde los vectores se encuentran normalizados. Para comprobar que las ecuaciones anteriores producen una secuencia ortogonal, calculamos primero < u 1, u 2 > sustituyendo la ecuación anterior por u 2 : obtendríamos un resultado igual a 0. Lo mismo para calcular < u 1, u 3 > substituyendo de nuevo la ecuación por u 3 : obtenemos un resultado igual a 0. La prueba general es obtenida por inducción matemática. Trabajo Fin de Máster -57- Sergio Bernabé García

58 Geométricamente (ver Figura 4.8), este método procede de la siguiente manera: para calcular u i, proyecta v i ortogonalmente al subespacio U generado por u 1,, u i-1, que es el mismo que el subespacio generado por v 1,, v i-1. El vector u i se define como la diferencia entre v i y la proyección de esta, garantizando que sea ortogonal a todos los vectores en el subespacio U. Figura 4.8. Representación geométrica del proceso Gram-Schmidt MODIFICACIÓN SOBRE EL CÓDIGO La principal novedad de esta primera modificación es la substitución de la función pinv (bastante costosa computacionalmente) por el método de Gram-Schmidt. Ya que el objetivo de esta primera versión era poder reducir el coste computacional y a su vez no se produzca una pérdida considerable de información en los datos que se manejan o que pueda afectar en la obtención del resultado. A continuación se repasan algunos detalles relativos a la complejidad de la implementación en hardware. Comencemos por los parámetros de entrada al algoritmo. Dicho algoritmo como ya hemos podido conocer, posee dos parámetros de entrada, p que es el número de targets a calcular, y HIM que contiene los datos de la imagen a procesar. Después como salida tenemos la matriz U que contendrá las firmas espectrales de cada target detectado y P que será una matriz que contendrá las posiciones de cada uno de los targets. En la Figura 4.9, las líneas de la 4 a la 9 realizan la obtención del tamaño de la imagen (muestras, líneas y bandas). Después desde la línea 16 a la 35, se realiza el proceso del cálculo del píxel más brillante de la imagen y una vez obtenido, guarda su firma espectral en la matriz de salida U y colocar las posiciones de dicho target en la Trabajo Fin de Máster -58- Sergio Bernabé García

59 matriz de posiciones P. Esta parte no varía respecto de la versión original, aunque es importante conocer cómo está implementada. Figura 4.9. Modificación del algoritmo ATGP en código Matlab (1/2). A continuación viene la parte interesante del algoritmo (ver Figura 4.10), la que ha sido modificada. Comienza con la inicialización de la matriz UC, matriz sobre la que se irán almacenando las proyecciones de los targets que se vayan encontrando. Una vez inicializada la matriz, se crea un vector w que se empleará para obtener el vector perpendicular al subespacio generado por UC, es un vector Gaussiano aleatorio de media igual a uno. Dada la lógica del problema, este vector puede ser un vector fijo durante todo el algoritmo, siempre y cuando sus componentes sean distintas de cero. La Trabajo Fin de Máster -59- Sergio Bernabé García

60 matriz Ub se emplea para almacenar los vectores de la base ortogonal que se crea para posteriormente calcular el vector f. Figura Modificación del algoritmo ATGP en código Matlab (2/2). De la línea 43 a la 52 se calcula la ortogonalización de f mediante el método de Gram-Schmidt por lo que no es necesario el cálculo de la pseudoinversa, mejorando de una manera importante el número de operaciones matemáticas a realizar en el algoritmo. En la línea 40 del algoritmo se asigna el nuevo Target calculado al vector que contiene las bases ortogonales Ub de la iteración correspondiente, y posteriormente Trabajo Fin de Máster -60- Sergio Bernabé García

61 entraría en la condición de si es el segundo target a encontrar (i==1, sería si nos encontramos en la detección del segundo target) o de si es el tercero o posteriores. El cálculo del segundo target se realiza de forma diferente al resto, siendo a partir de la tercera iteración cuando se comienza a generar la base ortogonal. El cálculo del nuevo vector de la base se lleva a cabo en las líneas Una vez calculado se procede al cálculo de la constante c 2 que permite calcular el nuevo valor de f en la línea 51. En las líneas siguientes el código no varía sustancialmente respecto al algoritmo original. Todo este proceso también se ha realizado de igual modo sobre una versión C ATGP segunda modificación. En esta segunda versión del algoritmo ATGP se han necesitado realizar los siguientes pasos: adecuación del código Matlab, generación del código C a partir del código Matlab mediante la Toolbox Embedded, prueba de funcionamiento y adecuación del código C y generación del lenguaje de descripción hardware a partir del código C haciendo uso del programa Catapult C. Para continuar con el proceso de posibles optimizaciones del algoritmo inicial vamos a utilizar la Toolbox de Matlab para punto fijo llamada Fixed-Point 8. En las primeras pruebas realizadas con esta Toolbox detectamos que no todas las utilidades de Fixed-Point están soportadas para la Toolbox de Embedded Matlab. El tamaño de las variables de punto fijo ha de ser prefijadas no pudiendo utilizar la funcionalidad de gestión automática proporcionada por Matlab. Además se ha de definir para cada variable el tamaño de la ALU para la suma y el producto indicando el formato de suma y producto. Los formatos compatibles para Embedded son únicamente los que se parecen más al comportamiento en el uso del entero del lenguaje C/C++. Por lo tanto la definición de una variable Fixed-Point queda mucho más compleja para la utilización de Embedded. A continuación se muestra la inicialización de una variable Fixed-Point genérica de Matlab y la inicialización de la misma variable con compatibilidad con la Toolbox de Embedded. 8 Trabajo Fin de Máster -61- Sergio Bernabé García

62 Pi_ = fi(3.1416); Pi_ = fi(3.1416,1,64,32'summode','keeplsb','productmode','keeplsb', 'ProductWordLength',128,'ProductFractionLength',64,'SumWordLength', 128,'SumFractionLength',64); Los parámetros de la segunda inicialización tienen el siguiente significado: : Es el valor numérico que inicializa el Fixed-Point. 1: Indica que la variable tiene signo. 64: Indica el tamaño total de la variable en bits. 32: Indica el tamaño correspondiente a la parte decimal. 'SumMode','KeepLSB': Modo de suma igual a KeepLSB. 'ProductMode','KeepLSB': Modo de multiplicación igual a KeepLSB. 'ProductWordLength',128: Tamaño del producto igual a 128. 'ProductFractionLength',64: Tamaño parte decimal del producto igual a 64. 'SumWordLength', 128: Tamaño de la suma igual a 128. 'SumFractionLength',64: Tamaño de la parte decimal de la suma igual a 64. MODIFICACIÓN SOBRE EL CÓDIGO La modificación realizada sobre el código la obviamos en este caso, ya que habría que añadir al código de la primera versión en Matlab, los parámetros descritos anteriormente a las inicializaciones de las variables y utilizarlo cuando tengamos que realizar operaciones matemáticas. La utilización de esta Toolbox provoca una dificultad en el comprendimiento del código una vez terminado, aunque los beneficios a la hora de utilizar una configuración hardware óptima será más fácil de conseguirla con su utilización que sin ella ATGP tercera modificación. Para llevar a cabo una versión paralela del algoritmo, se ha decidido dividir el algoritmo en bloques y estudiar qué bloque sería necesario realizarlo en paralelo, siempre y cuando no haya dependencia de datos y de control. En la Figura 4.11 podemos ver un esquema general del algoritmo ATGP dividido en bloques. Trabajo Fin de Máster -62- Sergio Bernabé García

63 Figura Esquema general del algoritmo ATGP divido en bloques. Se ha decidido paralelizar el bloque Projection ya que dicho bloque es crítico en cuanto a la ejecución del algoritmo ya que en él se consume gran parte del tiempo de ejecución, siendo éste dependiente del número de píxeles que tengan la imagen, ya que tiene que realizar la proyección del target sobre cada uno de los píxeles que conforman la imagen, es decir, la multiplicación de cada píxel de la imagen por el vector f en cada iteración. Para este diseño, se ha hecho uso de bloques incorporados en la herramienta XILINX ISE, que facilitan enormemente la labor desarrollada. Estos bloques se denominan ip cores, y principalmente servirán para implementar operaciones matemáticas complejas o memorias. Destacar que para una mayor eficiencia de los recursos y rapidez en la ejecución, las operaciones se producen tipo pipeline, de tal forma que los píxeles van entrando en el proceso de manera sucesiva en cada ciclo de reloj, y por tanto el número de ciclos de operación del bloque se extiende al número de píxeles de que conste la imagen. La Trabajo Fin de Máster -63- Sergio Bernabé García

64 arquitectura de éste se presenta en la Figura Figura 4.12.Arquitectura del bloque projection. El bloque recibe el píxel de la imagen (recibe uno en cada ciclo de reloj) y el vector f. A partir de ahí, como se puede observar, este consta de tres partes fundamentales. En primer lugar se realiza la multiplicación de cada uno de los elementos del píxel, por cada uno de los elementos del vector f. Seguidamente se construye un árbol de sumas, para que se pueda realizar el proceso en pipeline, siendo el número de bloques que lo constituyen en cada etapa potencia de 2. En este caso se ha implementado una primera etapa donde se suman 8 elementos, con cuatro bloques de suma, después 4 elementos con dos bloques de suma y finalmente se suman dos elementos, en la última etapa con un sólo bloque se suma. Obsérvese que p, no tiene por qué coincidir con 8 que es el número máximo de elementos que se suman y por tanto determina el máximo de targets Trabajo Fin de Máster -64- Sergio Bernabé García

65 a detectar, en caso de que p sea menor que este número, el resto se rellena con ceros, tal y como se muestra en el diagrama. Por último se realiza la comparación, que en la primera iteración simplemente toma el primer valor de la multiplicación, y a partir de ahí lo compara con las que se vayan sucediendo, almacenando aquellas que superen al valor actual y el índice de la misma, que será la dirección que se emplee posteriormente para obtener el target de la memoria que almacena la imagen. El bloque entrega a la salida el valor que ha resultado ser el mayor de todos los productos, y el índice del mismo. Un aspecto a resaltar en la comparación, es que bien se realice con números en punto flotante o con números en notación entera, ésta se lleva a cabo de la misma forma, se elimina el bit de signo (para tratar el número en valor absoluto) y se busca el primer 1 que aparezca diferente en los dos números, recorriéndolo de izquierda a derecha. Aquel que tenga ese 1 más a la izquierda será el mayor. Dicha implementación en paralela será comparada con la versión secuencial para finalmente obtener el porcentaje de recursos utilizados y la frecuencia máxima que se puede conseguir con éste diseño. Todo esto será presentado en el capítulo de resultados Flujo de diseño. Primera parte Esta primera parte del flujo de diseño en alto nivel, es caracterizada por el uso del módulo Embedded Matlab, que nos proporciona la herramienta Matlab, para poder generar código eficiente C y C++. Este paso no será realizado si ya disponemos de un código eficiente en C/C++. CARACTERÍSTICAS Las características del lenguaje Matlab soportado por el módulo de Embedded Matlab son las siguientes: Arrays N-dimensionales. Operaciones matriciales. Trabajo Fin de Máster -65- Sergio Bernabé García

66 Datos de tamaño variable. Subíndices. Números complejos. Clases numéricas. Doble precisión, simple precisión, y enteros math. Aritmética en punto fijo. Sentencias de control if, switch, for, y while. Toda la aritmética de Matlab, relacional, y operadores lógicos. Subfunciones. Variables persistentes. Variables globales. Estructuras. Listas de argumentos de entrada y salida de longitud variable. Subconjuntos de funciones Matlab. Posibilidad de llamadas a funciones Matlab. Las características del lenguaje Matlab que no son soportadas por el módulo de Embedded Matlab son las siguientes: Cell arrays. Dualidad comando/función. Java TM. Funciones anidadas. Trabajo Fin de Máster -66- Sergio Bernabé García

67 Objetos. Matrices dispersas. Sentencias try/catch. Recursividad. Figura Flujo utilizado por Embedded Matlab para las funciones extrínsecas. Trabajo Fin de Máster -67- Sergio Bernabé García

68 En Matlab nos podemos encontrar con funciones que no son soportadas por Embedded Matlab y que a la hora de compilarlas nos generen errores. Estas funciones son conocidas como extrínsecas, las cuales Embedded Matlab no las compila ni genera código para este tipo de funciones. Embedded Matlab resuelve este tipo de funciones según la Figura GENERANDO CÓDIGO C USANDO EMBEDDED MATLAB El proceso de generación de código C usando Embedded Matlab consiste de los siguientes pasos: 1. Configurar el compilador utilizando: mex setup. 2. Escribir el código Matlab en un fichero.m (si aún no lo tenemos preparado). 3. Eliminar o reemplazar aquellas funciones no soportados por el toolbox. 4. Si se está utilizando datos de tamaño variable, habrá que declararlos usando eml.varsize, por ejemplo, eml.varsize( X ). Para vectores de tamaño variable, habría que limitar el tamaño mínimo y máximo de componentes de dicho vector, por ejemplo: a. eml.varsize('x', [2, 16]), donde 2 y 16 son los límites superiores. b. eml.varsize('x', [2, 16], [0 1]), donde 0 representa la dimensión que es constante y 1 para la dimensión variable. c. Además se podrá declarar una matriz de tamaño variable usando un constructor con dimensiones no constantes. Sin embargo, habría que usar una sentencia assert para indicar los límites superiores de dichas dimensiones. Por ejemplo: function y = var_by_assign(u) %#eml assert (u < 20); if (u > 0) y = ones(3,u); else y = zeros(3,1); end Trabajo Fin de Máster -68- Sergio Bernabé García

69 d. También se podrá declarar datos de tamaño variable por asignación múltiple, tamaño constante a la misma variable antes de usar (leer) la variable en el código. Embedded Matlab necesita que los límites superiores sean especificados para cada dimensión. Por ejemplo: function y = var_by_multiassign(u) %#eml if (u > 0) y = ones(3,4,5); else y = zeros(3,1); end La función Embedded Matlab infiere que y es una matriz con tres dimensiones, donde la primera está fijada a tamaño 3, la segunda dimensión es variable con un límite superior de 4 y con una tercera dimensión que también es variable y con un límite superior de 5. e. Para más información sobre datos de tamaño variable, ir a la siguiente url: 5. Añadir la directiva de compilación %#eml en la primera línea, a continuación del nombre de la función. 6. Crear un fichero main que inicialice, llame y termine la función. 7. Configurar las propiedades del compilador, para incluir el fichero main.c. Por ejemplo: >>rtwcfg = emlcoder.rtwconfig >>rtwcfg.customsource = 'main.c' 8. Compilar usando el comando emlc. Si la variable de entrada es de tamaño variable, debemos declararla de la siguiente forma: emlc test eg {emlcoder.egs(0, [16 16])} donde 0 es una variable que define el tipo y la clase del dato de entrada, y [16 16] el tamaño límite del vector de entrada. Además también se podrá definir qué dimensión puede variar en tamaño usando un vector binario donde 0 indica que permanece constante y 1 para dimensiones de tamaño variable, por ejemplo: Trabajo Fin de Máster -69- Sergio Bernabé García

70 emlc test eg {emlcoder.egs(0, [16 16], [0 1])} Para más información sobre emlc, ir a la siguiente url: 9. Si algún error ocurre, comprobar el informe de errores del propio Embedded Matlab. Ayuda bastante a la hora de poder solucionar cualquier tipo de error encontrado. EJEMPLO A partir de todo lo expuesto anteriormente, vamos a generar el código C de nuestro algoritmo ATGP en Matlab que tratará partiendo de una imagen hiperespectral detectar un número p de objetivos, cuyo resultado será obtener una lista de p firmas espectrales que corresponderán a cada uno de los objetivos detectados. o : Configurar el compilador (ver Figura 4.14). Figura Pasos en la configuración del compilador usando Embedded Matlab. En la opción 3 se podrá elegir cualquier compilador que se encuentre instalado en Trabajo Fin de Máster -70- Sergio Bernabé García

71 nuestro PC. o : Escribir el código Matlab (ver Figura 4.15). Figura Codificación del algoritmo ATGP en Matlab. o : Escribir el código main.c (ver Figura 4.16). Figura Construcción del fichero main.c. Trabajo Fin de Máster -71- Sergio Bernabé García

72 Las funciones test_initialize.c, test_terminate.c y testh.h se generarán durante el proceso de compilación. Todo esto lo veremos en el próximo capítulo. o : Configurar las propiedades del compilador (ver Figura 4.17). Figura Configuración de las propiedades del compilador. o : Compilar (ver Figura 4.18). O Figura Compilación del código usando Embedded Matlab. Para poder compilar nuestro código necesitaremos hacerlo de la siguiente forma: emlc s rtwcfg ATGP eg {HIM, 0 } report -s: Define la configuración del objeto, creado en el cuarto paso, para poder incluir el fichero main.c que será usado. -eg {emlcoder.ergs ()}: Define una entrada de tamaño variable y los límites Trabajo Fin de Máster -72- Sergio Bernabé García

73 de las dimensiones. -report: Genera un informe. Si ocurre cualquier error abrir el informe de errores, ya que podrían ocurrir errores relacionados con el fichero main. Unos de los principales errores podría ser el número de entradas a la función ATGP. Solo habría que modificarlo y ya no debería haber ningún tipo de problema. Si comprobamos los ficheros en código C que se han generado desde el código Matlab, veremos que son los siguientes: <nombre función>.c: El código C que corresponde a ATGP.m <nombre función>.h: El fichero cabecera que corresponde a ATGP. <nombre función>_initialize.c: El código de inicialización. <nombre función>_initialize.h. <nombre función>_terminate.c: El código de terminación. <nombre función>_terminate.h. <nombre función>_tpes.h: Define ATGP_types. Varios ficheros.c y.h (rtdivide, rt_nonfinite, rtgetinf, rtgetnan.c y.h). Varios ficheros.c y.h que corresponden a operaciones matemáticas (por ejemplo: squeeze, sum.c y.h), qué dependerán del proyecto. rtwtypes.h: Un fichero cabecera donde todos los tipos de datos están definidos (por ejemplo: real_t). Ficheros precompilados.obj que no necesitaremos usarlos. Con respecto a los ficheros de salida: Los nombres de las variables no cambian, pero ha sido necesario añadirles eml_ como prefijo. Los tipos de datos usados en el código, son obtenidos del fichero rtwtypes.h Trabajo Fin de Máster -73- Sergio Bernabé García

74 en vez de los tipos de datos convencionales de C, por ejemplo real_t en vez de tipos float. Hay dependencias sobre ficheros de cabecera que no están incluidos en la carpeta que se ha generado, pero están en común para todos los proyectos Matlab, en la carpeta MATLABroot\extern\include. Los ficheros <nombre función>_terminate.c/.h y <nombre función>_initialize.c/.h podrían estar vacíos si la inicialización no es requerida. Para datos de tamaño variable, el compilador generará varias copias de la variable con tamaños diferentes. CONSTRUYENDO EL CÓDIGO EN MICROSOFT VISUAL STUDIO En esta ocasión se ha utilizado el Microsoft Visual Studio Figura Creación de un nuevo proyecto en Microsoft VS. o (Creacción de un nuevo proyecto): En primer lugar crearemos un nuevo Trabajo Fin de Máster -74- Sergio Bernabé García

75 proyecto (File New Project). Después tendremos que seleccionar Win 32 Console Application (ver Figura 4.19). A continuación necesitaremos introducir el nombre del proyecto y después hacer clic en OK y Finish. o (Eliminación de los ficheros generados automáticamente): Ir a Solution Explorer, una vez allí en la carpeta Header files y en la carpeta Source Files nos encontraremos con 4 ficheros en total, que han sido creados por Visual Studio automáticamente. Para poderlos eliminar, haremos clic con el botón derecho y elegiremos la opción Remove (ver Figura 4.20). Figura Eliminación de los ficheros creados automáticamente por Microsoft VS. o o (Añadir ficheros.h/.c): Para poder añadir nuestros ficheros, tendremos que ir a Solution Explorer y con el botón derecho sobre la carpeta Header Files Add Existing Item. Una vez realizado esto, buscaremos nuestros ficheros de cabecera (*.h) y hacer clic en Add. Haremos lo mismo con la carpeta Souce Files, para añadir los ficheros.c (ver Figura 4.21). o (Configurar el compilador): Sobre el nombre del proyecto, hacer clic Properties C/C++ Precompiled Headers. La opción de Precompiled Header Trabajo Fin de Máster -75- Sergio Bernabé García

76 será modificada por Not using Precompiled Headers (ver Figura 4.22). Finalmente haremos clic en Aceptar. Figura Proyecto con los ficheros.c/.h necesarios. Figura Configuración necesaria del compilador de Microsoft VS. Trabajo Fin de Máster -76- Sergio Bernabé García

77 o (Construcción del proyecto): Ir a la opción Build Build Solution. Si todo ha transcurrido correctamente, el ejecutable de nuestro proyecto lo encontraremos en la carpeta Debug (ver Figura 4.23). Por ejemplo: c:\documents and settings\user\mis documentos\visual studio 2010\Projects\<nombe proyecto>\debug. Figura Construcción del proyecto en Microsoft VS Flujo de diseño. Segunda parte Esta segunda parte del flujo de diseño en alto nivel, es caracterizada por el uso de la herramienta Catapult C de síntesis de alto nivel para diseño hardware ASIC y FPGA (Versión University 2010a.104), desarrollado por Mentor Graphics. De tal manera que dado un código escrito en C, Catapult C podrá producir una salida óptima generando el código RTL correspondiente y así ayudar al programador pasar a un nivel de abstracción más productivo. El objetivo de esta parte es poder generar códigos en VHDL o Verilog, para después poder comprobar su rendimiento usando una herramienta de diseño para FPGA y CPLD como puede ser el caso de Quartus II de Altera, ISE para Xilinx o bien utilizar el paquete adicional y compatible con Catapult C denominado Precision Synthesis RTL. Trabajo Fin de Máster -77- Sergio Bernabé García

78 RESTRICCIONES Catapult C no soporta la librería math.h, ya que dicha librería no fue creada para un uso FPGA o ASIC. De todos modos, Mentor Graphics provee de un conjunto de librerías que soportan las funciones más comúnmente usadas, tales como cosine, shift, etc. Tales funciones están escritas con datos enteros y en punto-fijo, donde punto fijo es un tipo de dato tradicional soportado por Catapult C. El código C que se ha generado desde el código original de Matlab en una de sus versiones, usa tipos short int y float. En este caso no se realizan llamadas a la librería math.h, aunque si se realiza llamadas a esta librería, tendrán que ser eliminadas, ya que las funciones que vayan a ser necesarias serán reescritas. Debido al uso de los tipos que usamos, el tiempo requerido para la generación del RTL será menor a una hora (hay diseños del orden de varias horas). GENERACIÓN DE CÓDIGO VERILOG Y VHDL USANDO CATAPULT C Ya que Catapult no sintetiza la librería math.h, todas las referencias que tenga nuestro proyecto deberán ser eliminadas y las funciones que necesitemos de dicha librería, tendrán que ser reescritas para poderlas usar. En nuestro caso no tendremos que realizar los dos pasos siguientes ya que no utilizamos la librería math.h en ningún caso. o (Eliminación de las referencias math.h): Para ello tendremos que ejecutar Microsoft Visual Studio o una aplicación equivalente. Para ello utilizaremos el proyecto creado en la primera parte de nuestro flujo de diseño de alto nivel. A continuación, nos iremos a la opción Edit Find and Replace Quick Replace o presionar Ctrl+H. En el campo que pone Find what:, escribiremos #include <math.h>. Después en el campo Replace with:, escribiremos //#include <math.h>. Cómo hemos podido comprobar, lo que estamos haciendo es comentar todas las apariciones de llamadas a la función math.h. En el campo Look in:, elegir la opción Entire Solution y hacer clic en Replace All (ver Figura 4.24). Los cambios serán realizados fácilmente. Trabajo Fin de Máster -78- Sergio Bernabé García

79 Figura Eliminación de las referencias math.h en Microsoft VS. o (Reemplazamiento de las funciones math usadas): Una vez eliminadas las referencias a la librería math.h, necesitaremos compilar el proyecto de nuevo. Varios errores y warnings podrían ocurrir, pero la mayoría de ellos son por funciones que están definidas en math.h. Por ello, será necesario reescribir estas funciones en ficheros.c y después añadirlos a nuestro proyecto. Las funciones que necesitemos serán definidas como externas, usando la sentencia extern. También será necesario incluir el fichero #include rtwtypes.h, que contendrá los tipos de datos compatibles para poder trabajar. Una vez realizados todos estos cambios, el código deberá compilar y ya podríamos utilizar Catapult C sin ningún problema. o (Crear un proyecto nuevo en Catapult C): Catapult C crea automáticamente un nuevo proyecto cada vez que es ejecutado. El nombre del proyecto es Catapult C y se encuentra localizado en la carpeta CatapultX, en el Trabajo Fin de Máster -79- Sergio Bernabé García

80 directorio de trabajo, donde X es el número más pequeño aún no ha sido usado en cualquier otro proyecto. Para poder dar nombre al proyecto tendremos que ir a la opción File New Project e introducir el nombre del proyecto y hacer clic en OK (ver Figura 4.25). Los ficheros relacionados con el proyecto serán guardados en una carpeta nombrada igual que el proyecto. Figura Eliminación de las referencias math.h en Microsoft VS. o (Añadir ficheros entrantes): En la barra de tareas, hacer clic en Add Input Files. A continuación seleccionaremos los ficheros.c del código C generado y hacer clic en Open. No hay que incluir la función main, ya que solamente es utilizado para testear la funcionalidad de la función principal. Las funciones de inicialización y de terminación no son necesitadas ya que solo son llamadas por la función main (ver Figura 4.26). Trabajo Fin de Máster -80- Sergio Bernabé García

81 Figura Añadir ficheros de entrada en Catapult C. o (Identificar la entidad top level ): Catapult C requiere que la entidad top level se identifique por un pragma. Para ello sería añadir #pragma hls_design top justo antes de la definición de la función (ver Figura 4.27). o (Configurar el diseño): En la barra de tareas, hacer clic en Setup Design. A continuación se abrirá el constraint editor dónde se podrá indicar el diseño de la tecnología, la frecuencia, etc. Aquí tendremos dos opciones: o Primera: Configurar el diseño para obtener un RTL genérico, es decir, generar un código RTL que nos pueda servir tanto en la herramienta de Quartus como en ISE. Para ello, la tecnología seleccionada para el proyecto será la familia de diseño de 90 nm con una única RW puerta RAM y cómo frecuencia seleccionaremos 400 MHz (ver Figura 4.28). Trabajo Fin de Máster -81- Sergio Bernabé García

82 Figura Identificación de la entidad top level en Catapult C. o Segunda: Configurar el diseño para obtener un RTL optimizado utilizando un paquete opcional y compatible a la herramienta Catapult C denominado Precision Synthesis. En la Figura 4.29, podemos comprobar que se ha utilizado una FPGA de la familia Virtex 5 de Xilinx y una frecuencia máxima limitada a 400 MHz. Los siguientes pasos consistirán en hacer clic en cada uno de los siguientes apartados por orden: 1. Architecture Constraints. 2. Schedule. 3. Generate RTL. Si queremos utilizar algún tipo de guía o tutorial visual, el usuario podrá visualizar el primer video de la página Mentor Graphics para Catapult C: Trabajo Fin de Máster -82- Sergio Bernabé García

83 Figura Configuración del diseño en Catapult C. Catapult C genera RTL para el código C de entrada. Una carpeta con el diseño será generada, nombrada como la función que fue especificada como entidad top level. En esta carpeta tendremos ficheros en Verilog y VHDL. Los ficheros que son necesarios para compilar el diseño y calcular la frecuencia que puede alcanzar, se identifican en rtl.v_order.txt y rtl.vhdl_order.txt, de Verilog y VHDL, respectivamente, que se encuentra en la carpeta mencionada anteriormente. Catapult también genera un resumen que da una aproximación de los recursos utilizados y de los ciclos de tiempo/latencia necesarios para la ejecución del proyecto (ver Figura 4.30). Trabajo Fin de Máster -83- Sergio Bernabé García

84 Figura Configuración del diseño en Catapult C. Figura Salida generada tras la ejecución de nuestro proyecto en Catapult C. Trabajo Fin de Máster -84- Sergio Bernabé García

85 4.4. Flujo de diseño. Tercera parte Esta tercera y última parte del flujo de diseño en alto nivel, es caracterizada por el uso de las herramientas Quartus II de Altera (versión 11.0) y de ISE para Xilinx (versión 13.1), con el fin de compilar el diseño y obtener la frecuencia para diseños sobre FPGA y CPLD o bien la otra opción sería utilizar el paquete adicional y compatible a la herramienta Catapult C denominado Precision Synthesis RTL 2010a. En este apartado explicaremos tres posibilidades a la hora de poder conseguir resultados de ocupación de la FPGA, así como la frecuencia máxima y otros resultados de interés: 1) Quartus II. 2) Xilinx ISE Design Suite ) Precision Synthesis RTL Quartus II de Altera Con la utilización de la herramienta Quartus II de Altera, tendremos la oportunidad de poder compilar nuestros diseños y obtener la frecuencia máxima que podemos obtener con nuestras implementaciones. Las entradas en la herramienta podrán ser código Verilog o VHDL. Específicamente para este proyecto, hemos usado código Verilog generado por la herramienta Catapult, que contiene el objetivo de frecuencia máxima que queremos alcanzar con nuestro diseño (establecido a 400 MHz). Cómo ya se mencionó, los ficheros necesitados para la compilación del diseño se encuentran identificados en el fichero rtl.v_order.txt. En dicho fichero, se encuentran dónde están situadas unas librerías necesarias para compilar nuestro proyecto en Quartus II. A continuación mostraremos los pasos necesarios en el flujo de diseño de la herramienta Quartus II: o : Creación de un nuevo proyecto (ver Figura 4.31). Para poder crear un nuevo proyecto tendremos que hacer clic en File New Quartus II Project Next. Será necesario cambiar el directorio de trabajo a la carpeta que contiene nuestro Trabajo Fin de Máster -85- Sergio Bernabé García

86 código Verilog que ha sido generado por la herramienta Catapult C, después tendremos que introducir el nombre del proyecto y hacer clic en Finish (ver Figura 4.32). Seguro que la entidad top level no se habrá asignado correctamente, pero podrá ser especificado posteriormente. Figura Creación de un nuevo proyecto en la herramienta Quartus II de Altera. o : Incluir los fichero de entrada necesarios (ver Figura 4.33). Para ello, será necesario ir hasta la carpeta con el código Verilog generado por Catapult C. El fichero rtl.v_order.txt contiene el nombre de los ficheros que son necesarios. Para añadir ficheros al proyecto, tendremos que hacer clic al botón y buscar los ficheros especificados en el fichero rtl.v_order.txt, seleccionándolos y haciendo clic en Open y si es necesario a Add. Tendremos la oportunidad de poder seleccionar múltiples ficheros del mismo directorio y hacer clic en Open, para que automáticamente se puedan añadir todos. Trabajo Fin de Máster -86- Sergio Bernabé García

87 Figura Asignación del nombre y entidad top level en un proyecto de Quartus II. Figura Añadir ficheros de entrada en un proyecto de Quartus II. Trabajo Fin de Máster -87- Sergio Bernabé García

88 o : Especificar la entidad top level (ver Figura 4.34). Para ello, tendremos que hacer clic con el botón derecho sobre el nombre de nuestro proyecto dentro de Project Navigator Settings General. Después habrá que hacer clic en el botón y elegir la entidad de top level de la lista de posibles entidades del diseño. La entidad deseable tendrá el nombre de la función C/C++ o Matlab. o : Compilar nuestro diseño (ver Figura 4.35). Para ello, tendremos que hacer clic sobre el botón de Start compilation. Figura Especificación de la entidad top level en un proyecto de Quartus II. o : Chequear los resultados (ver Figura 4.36). Para ello, tendremos que hacer clic en Compile Design TimeQuest Timing Analysis View Report. Para poder obtener los resultados de frecuencia máxima y demás, tendremos primeramente que configurar una serie de parámetros. Trabajo Fin de Máster -88- Sergio Bernabé García

89 Figura Compilación del diseño en un proyecto de Quartus II. Figura Chequear los resultados del diseño en un proyecto de Quartus II. Trabajo Fin de Máster -89- Sergio Bernabé García

90 En primer lugar, tendremos que ir a la opción de Tools TimeQuest Timing Analyzer. En donde tendremos que generar la señal de reloj, nuestra frecuencia máxima objetivo, delay máximo y mínimo, etc Todo esto se encuentra bastante bien explicado en la ayuda de Quartus II, en la opción Help Getting Started Tutorial, exactamente en el módulo 4, Run Timing Analysis (ver Figura 4.37). Figura Ayuda en línea de Quartus II Xilinx ISE Design Suite 13.1 Con la utilización de la herramienta Quartus II de Altera, tendremos la oportunidad de poder compilar nuestro diseño y obtener la frecuencia máxima que podemos obtener con dicho diseño. Las entradas en la herramienta podrán ser código Verilog o VHDL. Específicamente para este proyecto, hemos usado código Verilog generado por la herramienta Catapult, que contiene el objetivo de frecuencia máxima que queremos alcanzar con nuestro diseño (establecido a 400 MHz). Cómo ya se mencionó, los ficheros necesitados para la compilación del diseño se encuentran identificados en el fichero rtl.v_order.txt. En dicho fichero, se encuentran dónde están situadas unas librerías necesarias para compilar nuestro proyecto en ISE Trabajo Fin de Máster -90- Sergio Bernabé García

91 13.1. A continuación mostraremos los pasos necesarios en el flujo de diseño de la herramienta Quartus II: o : Creación de un nuevo proyecto (ver Figura 4.38). Para poder crear un nuevo proyecto tendremos que hacer clic en File New Project Next. Será necesario cambiar el directorio de trabajo a la carpeta que contiene nuestro código Verilog que ha sido generado por la herramienta Catapult C, después tendremos que introducir el nombre del proyecto. Después tendremos que especificar la tarjeta FPGA con la que vamos a trabajar, además de si vamos a trabajar con lenguaje Verilog o VHDL. Una vez realizado todos estos pasos nos mostrará un cuadro resumen con las opciones especificadas. Figura Creación de un nuevo proyecto en la herramienta ISE Design Suite de Xilinx. Trabajo Fin de Máster -91- Sergio Bernabé García

92 o : Incluir los fichero de entrada necesarios (ver Figura 4.39 y 4.40). Para ello, será necesario ir hasta la jerarquía de nuestro diseño y hacer clic con el botón derecho sobre el nombre de nuestro proyecto y después a Add source. Una vez dentro, nos situaremos en la carpeta con el código Verilog generado por Catapult C. El fichero rtl.v_order.txt contiene el nombre de los ficheros que son necesarios. Figura Añadir ficheros de entrada en un proyecto de ISE Design Suite de Xilinx (1/2). o : Especificar la entidad top level (ver Figura 4.41). Para ello, tendremos que hacer clic con el botón derecho sobre el nombre del fichero rtl.v de nuestro proyecto y con el botón derecho hacer clic y elegir la opción de Set as Top Module. La entidad deseable tendrá el nombre de la función C/C++ o Matlab. o : Compilar nuestro diseño (ver Figura 4.42). Para ello, tendremos que hacer clic sobre la entidad top level y hacer clic con el botón derecho sobre dicho fichero y elegir la opción de Implement Top Module. Trabajo Fin de Máster -92- Sergio Bernabé García

93 Figura Añadir ficheros de entrada en un proyecto de ISE Design Suite de Xilinx (2/2). Figura Especificación de la entidad top level en un proyecto de ISE Design Suite de Xilinx. Trabajo Fin de Máster -93- Sergio Bernabé García

94 Figura Compilación del diseño en un proyecto de ISE Design Suite de Xilinx. Figura Chequear los resultados del diseño en un proyecto de ISE Design Suite. Trabajo Fin de Máster -94- Sergio Bernabé García

95 o : Chequear los resultados (ver Figura 4.43). Para ello, tendremos que hacer clic en Synthesis Report, tendremos los resultados de ocupación y de frecuencia máxima de nuestro diseño Precision Synthesis RTL 2010a Con la utilización de la herramienta Precision Synthesis RTL 2010a de Mentor Graphics, tendremos la oportunidad de poder compilar nuestro diseño y obtener la frecuencia máxima que podemos obtener con dicho diseño. Las entradas en la herramienta podrán ser código Verilog o VHDL. Específicamente para este proyecto, hemos usado código Verilog generado por la herramienta Catapult, que contiene el objetivo de frecuencia máxima que queremos alcanzar con nuestro diseño (establecido a 400 MHz). A continuación mostraremos los pasos necesarios en el flujo de diseño de la herramienta Precision Synthesis RTL 2010a: o : Especificación de la precisión de la síntesis en Catapult C a la hora de generar un RTL específico para una determinada FPGA (ver Figura 4.29). Además de especificar el modelo de la FPGA en cuestión, podremos añadir una serie de librerías que ayudan a optimizar dicha síntesis. También será necesario especificar en este caso, el objetivo de alcanzar una frecuencia máxima, que será fijada a 400 MHz. o : Lanzar la herramienta de Precision Synthesis RTL desde Catapult C. Para ello, tendremos que hacer doble clic dentro de Project Files Synthesis Precision Synthesize rtl.v (ver Figura 4.44). o : Realizar la compilación y la síntesis de nuestro diseño (ver Figura 4.45). Una vez dentro de la herramienta y en el proyecto que se ha creado automáticamente tendremos que hacer clic a Compile y una vez que haya terminado la compilación sin errores, posteriormente hacer clic en Synthesize. Trabajo Fin de Máster -95- Sergio Bernabé García

96 Figura Lanzamiento de la herramienta Precision Synthesis RTL desde Catapult C. Figura Compilación y síntesis del diseño. Trabajo Fin de Máster -96- Sergio Bernabé García

97 o : Chequear los resultados de la síntesis (ver Figura 4.46). En los ficheros de salida de la herramienta de Precision Synthesis RTL, tendremos dos informes que nos van a interesar: Area Report (% de ocupación de recursos de nuestro diseño) y Timing Report (resultados del período y frecuencia máxima de nuestro diseño). Figura Chequear los resultados del diseño: Timing Report y Area Report. Trabajo Fin de Máster -97- Sergio Bernabé García

98 5. Resultados experimentales En este capítulo se presentan los resultados obtenidos al evaluar el algoritmo de detección de targets descrito en la presente memoria. El capítulo comienza describiendo las imágenes reales que se han utilizado para el experimento. A continuación, se presenta un detallado estudio experimental comparando la precisión del algoritmo con las distintas modificaciones realizadas en la tarea de extraer firmas espectrales puras utilizando un algoritmo de emparejamiento de firmas espectrales. Para finalizar se mostrarán los resultados de las distintas modificaciones realizadas sobre el algoritmo ATGP original llevadas a cabo en hardware, y sintetizadas en una FPGA Virtex 5 (Xilinx) y su comparativa con una FPGA Stratix III (Altera) Imágenes hiperespectrales consideradas en el estudio Imagen AVIRIS de Cuprite Una de las imágenes reales utilizada en el presente estudio fue obtenida por el sensor AVIRIS sobre el distrito minero de Cuprite, Nevada, el cual ha sido utilizado a lo largo de los años como una zona de estudio para la validación de algoritmos de tratamiento de imágenes hiperespectrales, sobre todo, para evaluar la precisión de algoritmos de extracción de endmembers [28,29] y detección de targets. Esto ha sido posible gracias a la obtención repetitiva de datos en sucesivas campañas utilizando diferentes sensores hiperespectrales (en concreto, el sensor AVIRIS de NASA lleva obteniendo datos en Cuprite año tras año desde 1990). Además, el Instituto Geológico de Estados Unidos (USGS) ha realizado de forma paralela a las campañas de adquisición de imágenes, estudios sobre el terreno que han permitido la obtención de información de verdad-terreno muy extensa, favoreciendo la utilización de esta imagen como un estándar a la hora de validar algoritmos de tratamiento de imágenes hiperespectrales. La imagen que se ha utilizado en el estudio (denominada AVCUP95) fue adquirida por el sensor AVIRIS en 1995 y se encuentra disponible online 9. La Figura 5.1 muestra la ubicación de la imagen sobre una fotografía aérea de la zona. Visualmente, puede 9 Trabajo Fin de Máster -98- Sergio Bernabé García

99 apreciarse la existencia de zonas compuestas por minerales, así como abundantes suelos desnudos y una carretera interestatal que cruza la zona en dirección norte-sur. La imagen utilizada en el estudio consta de 350x350 píxeles, cada uno de los cuales contiene 188 valores de reflectancia en el rango espectral 0.4 a 2.5 μm. Figura 5.1. Imagen hiperespectral AVIRIS sobre la región Cuprite en Nevada. La información de las firmas presentes en esta imagen se ha obtenido a partir de los datos obtenidos por el USGS en esta región 10. En la Figura 5.2 se puede observar un mapa de minerales generado mediante la herramienta Tetracorder de USGS [30] (disponible online 11 ), y que describe la localización de diferentes minerales y alteraciones de dichos minerales en la región Cuprite. Por otra parte, la Figura 5.3 muestra las firmas espectrales USGS de los minerales con mayor presencia en la zona Trabajo Fin de Máster -99- Sergio Bernabé García

100 de estudio, las cuales incluyen las firmas de los minerales Alunite, Buddingtonite, Calcite, Kaolinite y Muscovite. Dichos minerales serán utilizados como referencia en el presente estudio, de modo que sus firmas espectrales asociadas se utilizarán como verdad-terreno a la hora de evaluar la bondad de los algoritmos de detección de targets considerados en la selección de firmas espectrales puras en dicha zona. Figura 5.2. Mapa de minerales obtenidos por el USGS a través del algoritmo Tetracoder en la región Cuprite en Nevada, Estado Unidos. Trabajo Fin de Máster Sergio Bernabé García

101 Figura 5.3. Firmas espectrales puras correspondientes a los minerales más representativos en la región Cuprite en Nevada, Estado Unidos Imagen AVIRIS sobre el World Trade Center de Nueva York Es otra de las imágenes en la que se centrarán los estudios llevados a cabo en este trabajo, tomada por el sensor AVIRIS, lanzado por el Laboratorio de propulsión a chorro de la NASA (NASA s Jet Propulsion Laboratory) sobre la zona del World Trade Center (comúnmente conocido como Las Torres Gemelas o The Twin Towers ) el día 16 de septiembre del año 2001, justo cinco días después de los ataques terroristas que derrumbaron las dos torres principales y otros edificios del complejo del WTC. Las características de la imagen completa se muestran en la Tabla 5.1. Líneas 2133 Muestras 512 Bandas 224 Rango espectral 0,4 2,5 µm Resolución espacial 1.7 metros/píxel Tamaño 1 GByte aproximadamente Tabla 5.1. Características de la imagen completa del WTC. La Figura 5.4 muestra la zona escogida para el estudio (el tamaño de la imagen es de 141x141x224), centrada en la región en la que las torres se desplomaron. Para Trabajo Fin de Máster Sergio Bernabé García

102 realizar las diferentes pruebas, hemos usado un mapa térmico del U.S. Geological Survey, que muestra las posiciones de los targets de los puntos calientes en la zona del WTC[31]. Estos puntos se muestran como rojo claro, naranja y amarillo en la Figura 5.5 y están etiquetados con las letras de A, B, C, D, E, F, G y H. El mapa está centrado en la región en la que las torres se desplomaron y las temperaturas oscilaban entre los 700º y los 1300º Farenheit (371º C 704º C). Vamos a utilizar este mapa térmico como punto de referencia para validar la precisión en la detección de targets sobre esta imagen. Figura 5.4. Zona escogida del WTC para el estudio. Figura 5.5. Mapa térmico de la zona del WTC, con una serie de focos de incendios (targets) destacados. Trabajo Fin de Máster Sergio Bernabé García

103 En la Tabla 5.2 tenemos las posiciones de latitud y longitud de cada uno de los focos, además de la temperatura medida en grados Kelvin y el área que llegaron a ocupar en m 2 dichos focos. Hot Spot Latitude Longitude Temperature Area (Square (North) (West) (Kelvin) meters) A 40º º B 40º º C 40º º D 40º º E 40º º F 40º º G 40º º H 40º º Tabla 5.2. Posiciones, temperatura y área ocupada por los distintos focos identificados en la zona del WTC FPGAs consideradas En el presente apartado se describen brevemente las dos FPGAs consideradas en la validación de los resultados en hardware, ya que para la validación de los resultados de precisión se ha utilizado la siguiente máquina 12. Conviene destacar que el capítulo tercero de la presente memoria contiene una descripción detallada del arte de las tarjetas FPGA. Las dos tarjetas seleccionadas constituyen ejemplos representativos de las dos industrias más potentes en fabricación de FPGAs, por lo que a continuación simplemente procedemos a detallar las características técnicas de ambas arquitecturas Virtex-5: 5VLX155FF1760 (Xilinx) La familia de FPGAs Virtex-5, son las primeras en poseer una tecnología de 65 nm. Estos dispositivos, fabricados en 1.0v, tecnología de proceso triple-óxido, proporcionando hasta celdas lógicas, 1200 pines I/O, 48 transistores de baja 12 Quad Core Intel Xeon E GHz, 12 GB SDRAM DDR3 1333Mhz ECC, 8MB de caché Trabajo Fin de Máster Sergio Bernabé García

104 potencia, y un procesador PowerPC 440, bloques Ethernet MAC y PCIe endpoint, dependiendo del modelo seleccionado. En la Tabla 5.3 y 5.4 (marcado en rojo) se muestran las especificaciones del dispositivo XC5VLX155 elegido. Tabla 5.3. Comparativa de la capacidad lógica entre FPGAs VIRTEX-5 y STRATIX III. Tabla 5.4. Dispositivos FPGAs de la familia VIRTEX-5. Trabajo Fin de Máster Sergio Bernabé García

105 Stratix III: EP3SL200F1152C (Altera) La familia de FPGAs Stratix III surgen por la evolución de la familia Stratix II, incorporando una tecnología de 65 nm con capacidad de implementación DDR3 a 533 MHz y ofrecer rendimientos LVDS de hasta 1,6 Gbps. Esta familia de FPGAs combina un alto rendimiento con la potencia más baja posible. En las Tablas 5.3, 5.5, 5.6 y Figura 5.6 (marcado en verde) se muestran las especificaciones del dispositivo EP3SL200F1152C elegido. Tabla 5.5. Comparativa de las características equivalentes entre FPGAs VIRTEX-5 y STRATIX III. Figura 5.6. Comparación de la capacidad lógica entre las FPGAs Stratix III L vs. Virtex-5 LX. Trabajo Fin de Máster Sergio Bernabé García

106 Tabla 5.6. Dispositivos FPGAs de la familia STRATIX III Evaluación de la precisión y tiempo de cómputo entre la versión original y la modificada A continuación se realizará una comparativa de la precisión entre la versión original del algoritmo ATGP y la versión modificada en la que el cálculo de los vectores ortogonales se realiza a través del método de Gram-Schmidt. Para realizar este tipo de comparativa, suele utilizarse la medida SAD para comparar los targets conocidos con los obtenidos por nuestro algoritmo original y modificado. Cabe destacar que utilizando la imagen de Cuprite, se ha fijado el número de targets igual a diecinueve, ya que es el número de endmembers que hay en la escena. Sin embargo, para la imagen del WTC se ha especificado el valor de targets igual a treinta, como número de objetivos a encontrar (en este caso, son fuegos sobre el área del World Trade Center). Si subimos esta cifra por un valor mayor, se suele detectar todos o casi todos los targets de la escena. Por tanto, se ha decido establecer para el segundo caso la cifra en treinta para poder realizar comparativas entre el algoritmo original y el modificado Medida de precisión: Ángulo espectral (SAD) El Ángulo espectral (Spectral Angle Distance) es una medida ampliamente usada en el análisis de imágenes hiperespectrales [32]. Esta medida determina el parecido espectral entre dos vectores espectrales calculando el ángulo entre ambos. Una propiedad importante de este criterio de disimilaridad es que los píxeles poco o muy Trabajo Fin de Máster Sergio Bernabé García

107 iluminados serán tratados con el mismo ángulo espectral a pesar de la diferencia de iluminación. La distancia angular entre ambos vectores, se calcula como el coseno del ángulo espectral entre ambos vectores. (Ver Figura 5.7). Figura 5.7. Ilustración del cálculo del ángulo espectral entre dos vectores. El mejor caso SAD sucede cuando el cos(ɵ)=1, siendo ɵ=0. Sin embargo, el peor caso SAD sucede cuando el cos(ɵ)=0, siendo ɵ=π/2. Como se muestra en la Figura 5.7, la medida SAD es invariante frente a la multiplicación de los vectores por valores constantes. Por lo tanto se trata de una medida robusta frente a cambios en la escala de las firmas espectrales (como cambios de iluminación o divergencias en la orientación angular), convirtiéndola en una medida muy apropiada para analizar el grado de similitud en cuanto a la forma de dos firmas espectrales. El ángulo espectral (SAD) entre los vectores correspondientes a los píxeles a comparar, llamados x i y x j, cada uno con B bandas espectrales, viene dada por la ecuación (5.1). (5.1) Precisión de ATGP sobre la imagen de Cuprite Antes que nada, se ha de aclarar que los resultados de precisión obtenidos por las distintas modificaciones sobre el algoritmo original ATGP son idénticos, ya que, a pesar Trabajo Fin de Máster Sergio Bernabé García

108 de los cambios sufridos, no se modifica la metodología del algoritmo, respetando en la mayor medida posible el funcionamiento del mismo. La Figura 5.8 muestra el resultado de aplicar el algoritmo ATGP original y modificado sobre la imagen de Cuprite y en la Figura 5.14 sobre la zona del World Trade Center. Figura 5.8. Precisión a la hora de aplicar el algoritmo ATGP original y modificado sobre la imagen de Cuprite. Como se puede observar en el caso de la Figura 5.8, los resultados visuales sobre la imagen son bastantes similares ya que en ambos casos se ha conseguido detectar los targets de los cinco componentes que conocíamos en la escena de Cuprite, que son: Alunite, Buddingtonite, Calcite, Kaolinite y Muscovite. Ahora faltaría contrastarlo de manera cuantitativa, a través de la medida del Ángulo espectral (SAD) ampliamente usado en el análisis de imágenes hiperespectrales. De esta manera se calcularán de las diecinueve firmas espectrales de la versión original del algoritmo y la versión modificada, sus respectivos ángulos espectrales con los cinco materiales mencionados, el que menor ángulo presente, se asignará como el material en cuestión y dicho material se retirará del test, para que en la siguiente iteración no se pueda repetir dicho material. En la Tabla 5.7 se muestra el ángulo espectral entre las firmas de los principales minerales presentes en la imagen real y las firmas espectrales extraídas por la versión original y modificada. Como se puede observar en dicha tabla, la versión modificada Trabajo Fin de Máster Sergio Bernabé García

109 mejora la versión original del algoritmo ATGP, por ejemplo en la detección del componente mineral Calcite. Aunque también cabe destacar el valor más elevado por parte del mineral Kaolinite, sin embargo, en general son valores muy bajos, lo que prueba nuevamente que la versión modificada obtiene endmembers muy parecidos. Alunite Budding. Calcite Kaolinite Muscovite Promedio V. Original 0, , , , , ,12062 V. Modificada 0, , , , , ,11258 Tabla 5.7. Precisión en la detección de targets para la imagen de Cuprite (19 targets). Figura 5.9. Firma espectral que detecta el método original denominado ATGPOriginal y la que detecta la versión modificada del material Alunite. Figura Firma espectral que detecta el método original denominado ATGPOriginal y la que detecta la versión modificada del material Budinggtonite. Trabajo Fin de Máster Sergio Bernabé García

110 A continuación se muestran las gráficas con los materiales, las firmas espectrales que detecta el método original denominado como ATGPOriginal y las que detecta la versión modificada denominado como ATGPMod, en las Figuras 5.9, 5.10, 5.11, 5.12 y Figura Firma espectral que detecta el método original denominado ATGPOriginal y la que detecta la versión modificada del material Calcite. Figura Representación gráfica de la firma espectral que detecta el método original denominado ATGPOriginal y la que detecta la versión modificada del material Kaolinite. Trabajo Fin de Máster Sergio Bernabé García

111 Figura Representación gráfica de la firma espectral que detecta el método original denominado ATGPOriginal y la que detecta la versión modificada del material Muscovite. Como se observa en todos los casos la similitud de las firmas espectrales es notoria, esto explica la razón por la que la diferencia de los ángulos espectrales con respecto a la firma del material sean tan baja. Sin embargo, en la detección del componente Calcite, se encuentra gran diferencia entre las firmas espectrales, debido a la mejora de la detección en la versión modificada del algoritmo Precisión de ATGP sobre la imagen del World Trade Center En el segundo caso de estudio y al igual que sucede con el caso anterior, en la Figura 5.14 los resultados visuales sobre la imagen son bastantes similares. Aunque si nos fijamos en el resultado de aplicar nuestro algoritmo ATGP modificado sobre la imagen, podemos comprobar que el método encuentra targets más cercanos a los focos C, F y G. Ahora faltaría contrastarlo de manera cuantitativa, a través de la medida del Ángulo espectral (SAD) ampliamente usado en el análisis de imágenes hiperespectrales. De esta manera se calcularán de las treinta firmas espectrales de la versión original del algoritmo y la versión modificada, sus respectivos ángulos espectrales con las firmas de los siete focos mencionados, el que menor ángulo presente, se asignará como foco y dicho foco se retirará del test, para que en la siguiente iteración no se pueda repetir. En la Tabla 5.8 se muestra el ángulo espectral entre las firmas de los focos Trabajo Fin de Máster Sergio Bernabé García

112 presentes en la imagen real y las firmas espectrales extraídas por la versión original y modificada. Figura Precisión a la hora de aplicar el algoritmo ATGP original y modificado sobre la imagen del World Trade Center. A B C D E F G H V. Original 0,0000 0,2519 0,0000 0,4779 0,3546 0,1245 0,0724 0,5458 V. Modificada 0,0000 0,4741 0,0000 0,2726 0,4853 0,0694 0,0475 0,4234 Tabla 5.8. Precisión en la detección de targets para la imagen del World Trade Center (30 targets). Figura Tamaño de cada uno de los focos encontrados en la imagen del WTC. Trabajo Fin de Máster Sergio Bernabé García

113 Cómo se ha explicado en la introducción del apartado 5.3, los resultados que se han obtenido con nuestro algoritmo original y modificado sobre la escena del World Trade Center, han sido utilizando treinta iteraciones. Es necesario conocer que el total de píxeles que componen los fuegos que consideramos targets objetivo, son aproximadamente ochenta (ver Figura 5.15). En este tipo de aplicaciones, generalmente, se considera detectado un target en cuanto el algoritmo reconoce uno de los píxeles que forman ese target. Para ampliar el número de targets detectados y analizar hasta dónde pueden llegar las versiones modificadas y originales planteadas en este documento, realizaremos un estudio con un mayor número de iteraciones. Para ello, mostraremos una tabla (ver Tabla 5.9) en la que se ilustra, la iteración en la que se encuentra la primera parte del fuego, ya que algunos fuegos ocupan más de un píxel, y el número total de targets detectados para doscientas iteraciones. A B C D E F G H V. Original NO 84 NO V. Modificada NO Tabla 5.9. Iteración para detectar cada target en su posición exacta, de un total de 200 iteraciones. Figura Firma espectral del target C. Trabajo Fin de Máster Sergio Bernabé García

114 Estableciendo el límite en doscientas iteraciones, hemos podido comprobar que el target H, sigue sin ser detectado. Si analizamos la firma espectral de este target, podemos encontrar una ligera diferencia con respecto a los demás. Para ver esta diferencia tomaremos como ejemplo píxeles correspondientes a los targets C, D y H. La Figura 5.16 y la Figura 5.17 muestran la firma espectral de un pixel correspondiente a los fuegos considerados target C y D, respectivamente. Figura Firma espectral del target D. Figura Firma espectral del target H. Como puede verse, estas firmas cuentan con valores altos ( ) en las longitudes de onda entre 2000 y 2500 m. Por otro lado, la Figura 5.18, muestra la firma espectral de un píxel correspondiente al target H. A diferencia de las anteriores (y del Trabajo Fin de Máster Sergio Bernabé García

115 resto de targets), esta firma se caracteriza por contar con valores muy bajos en las longitudes de onda antes mencionadas, desvinculándola del resto. Quizás este error, pueda ser un efecto colateral de que la imagen se encuentra en unidades de radiancia (no corregida atmosféricamente). Figura Firma espectral de una zona con vegetación. Figura Firma espectral de una zona con agua. Por último, y por razones ilustrativas, incluimos una serie de figuras que representan firmas espectrales adicionales obtenidas a partir de la imagen WTC, incluyendo firmas asociadas a vegetación (ver Figura 5.19), agua (ver Figura 5.20) y zonas urbanas (ver Figura 5.21). Las firmas espectrales representadas en la Figura 5.19, Figura 5.20 y Figura 5.21 ofrecen una idea acerca de la variabilidad espectral que tiene lugar en la escena, así como las detalladas propiedades espectrales que ofrecen dichas Trabajo Fin de Máster Sergio Bernabé García

116 firmas espectrales a la hora de identificar diferentes objetos, si bien es cierto que fenómenos como ruido y variabilidad espectral de las firmas asociadas a objetos similares pueden dificultar el análisis y revelar detalles ocultos (no distinguibles a simple vista) acerca de los objetos observados que dificultan el proceso de detección de targets, en particular, en una escena altamente compleja como la considerada en los experimentos, en los que los targets u objetos de interés (puntos calientes de los incendios) se encuentran rodeados por un fondo urbano no homogéneo y con elevada variabilidad espectral. Figura Firma espectral de una zona urbana Resultados de tiempo de ejecución En la Tabla 5.10 se pueden observar los tiempos de ejecución de la versión original y modificada del algoritmo ATGP para el caso de la imagen de Cuprite. Se prestará especial interés en la importancia de utilizar un compilador gnu (es el caso de gcc) y un compilador para arquitecturas Intel (es el caso de icc). Además se presentará en dicha tabla los resultados de utilizar un flag de optimización O3 para ambos casos. Las pruebas se realizaron diez veces y se obtuvo la media de los resultados. Como se puede observar en la Tabla 5.10, los resultados obtenidos en la versión modificada del algoritmo ATGP mejoran considerablemente la versión original, ya que la modificación que se realizó sobre dicho algoritmo utilizando el método de Gram- Schmidt redujo cuantiosamente el coste computacional del algoritmo. Sin aplicar ningún tipo de paralelización aún al código, se ha obtenido un código de dieciséis veces más rápido que la versión original utilizando el compilador icc con el flag de optimización O3. Sin embargo, la utilización de un compilador de gnu, como es el Trabajo Fin de Máster Sergio Bernabé García

117 caso de gcc y sin utilizar ningún tipo de optimización, se consigue que el código sea setenta y cinco veces más rápido. Compilador con/sin optimizaciones Tiempo V. original ATGP (seg.) Tiempo V. modificada ATGP (seg.) Speedup entre versiones icc O3 27,02 1,66 16,28x icc 27,08 1,78 15,21x gcc O3 111,45 3,04 36,66x Gcc 458,89 6,10 75,23x Tabla Tiempos de ejecución y Speedup dependiendo del compilador usado y de la utilización de flags de compilación sobre la imagen de Cuprite (19 targets). Los resultados obtenidos sobre la imagen del World Trade Center son recogidos en la Tabla 5.11, donde se podrá observar los tiempos de ejecución de la versión original y modificada del algoritmo ATGP para el caso de la imagen del World Trade Center. Se prestará especial interés en la importancia de utilizar un compilador gnu (es el caso de gcc) y un compilador para arquitecturas Intel (es el caso de icc). Además se presentarán en dicha tabla los resultados de utilizar un flag de optimización O3 para ambos casos. Las pruebas al igual que en el caso anterior, también se realizaron diez veces y se obtuvo la media de los resultados. Compilador con/sin Tiempo V. original Tiempo V. modificada optimizaciones ATGP (seg.) ATGP (seg.) Speedup icc O3 9,68 0,40 24,20x icc 9,88 0,43 22,98x gcc O3 40,91 0,63 64,94x Gcc 169,71 1,57 108,09x Tabla Tiempos de ejecución y Speedup dependiendo del compilador usado y de la utilización de flags de compilación sobre la imagen del World Trade Center (30 targets). Como se puede observar en la Tabla 5.11, los resultados obtenidos en la versión modificada del algoritmo ATGP mejoran considerablemente la versión original, ya que la modificación que se realizó sobre dicho algoritmo utilizando el método de Gram- Schmidt redujo cuantiosamente el coste computacional del algoritmo. Sin aplicar Trabajo Fin de Máster Sergio Bernabé García

118 ningún tipo de paralelización aún al código, se ha obtenido un código de veinticuatro veces más rápido que la versión original utilizando el compilador icc con el flag de optimización O3. Sin embargo, la utilización de un compilador de gnu, como es el caso de gcc y sin utilizar ningún tipo de optimización, se consigue que el código sea ciento ocho veces más rápido Resultados en Hardware. Versión secuencial Los resultados en hardware se determinan a partir de la síntesis del código descrito en lenguaje Verilog, sobre la comparación entre un FPGA Virtex 5 y una Stratix III. Para ello se hace uso de la herramienta Precision Synthesis RTL 2010a de la compañía Mentor Graphics, mencionada en el cuarto capítulo. Se desea obtener una comparativa entre las tres versiones modificadas sobre la versión original del algoritmo ATGP. Una primera modificación en coma flotante usando el método de Gram-Schmidt realizando un diseño de alto nivel desde C, otra versión como la anterior pero realizando un diseño de alto nivel desde Matlab y una última implementación como la anterior pero haciendo uso de la Toolbox Fixed-Point. Para esta comparativa se presentarán por un lado los resultados de ocupación sobre cada una de las FPGAs utilizadas, relativos al número de registros, LUTs y bloques dedicados a la multiplicación (DSPs). Por otro lado, de la propia síntesis también se quiere conocer el valor de la frecuencia máxima de uso que proporciona la herramienta. Con este valor, y con la latencia del algoritmo, se puede conocer el tiempo total de ejecución para unas condiciones determinadas. En este caso se trabaja con un tipo de imagen real, por ejemplo se podría utilizar la imagen de Cuprite, reduciendo el tamaño a 36x36 píxeles y 188 bandas espectrales. El número de targets a detectar se reducirá a cinco, ya que no escogeríamos diecinueve por haber reducido el tamaño de la imagen. Los resultados de ocupación y de restricción temporal de las tres implementaciones se pueden observar en las Tablas 5.12, 5.13 y Estos resultados muestran que el consumo de lógica es mayor en la tercera implementación, eso se debe a que la utilización de la toolbox Fixed-Point de Matlab requiere más lógica, aunque consume menos ciclos de latencia que la versión sin la toolbox, mejorándola. Respecto a la primera versión resulta ser la mejor de todas ya que se cumplen unas condiciones Trabajo Fin de Máster Sergio Bernabé García

119 ideales, consiguiendo una frecuencia máxima de ejecución de casi 200 MHz, lo que permite trabajar a mayor velocidad y una latencia baja en comparación con las demás implementaciones. Otras de las conclusiones que se pueden sacar de las distintas implementaciones es el buen rendimiento de la FPGA Stratix III de Altera, consiguiendo el mejor rendimiento en las tres implementaciones. Virtex 5 LUTs (out of 97280) CLB Slices (out of 24320) Dffs or Latches (out of 97280) DSP48Es (out of 128) Implementación3 (ATGP Implementación1 (ATGP Implementación2 (ATGP modificado desde lenguaje modificado desde modificado desde Matlab con la Toolbox lenguaje C) lenguaje Matlab) Fixed-Point) Número Número Número Porcentaje Porcentaje Porcentaje Empleado Empleado Empleado ,40% ,50% ,01% ,40% ,50% ,01% ,77% ,60% ,96% 12 9,38% 9 7,03% 7 5,47% Tabla Recursos utilizados de la FPGA Virtex 5, para la implementación del algoritmo ATGP modificado. Imagen de 36x36 píxeles y 5 targets a calcular. Stratix III LUTs (out of ) Registers (out of ) Num of DSP block 18-bit elements (out of 576) Implementación3 (ATGP Implementación1 (ATGP Implementación2 (ATGP modificado desde lenguaje modificado desde lenguaje modificado desde lenguaje Matlab con la Toolbox C) Matlab) Fixed-Point) Número Número Número Porcentaje Porcentaje Porcentaje Empelado Empleado Empleado ,27% ,65% ,34% % ,27% ,25% % 7 1,22% 10 1,74% Tabla Recursos utilizados de la FPGA Stratix III, para la implementación del algoritmo ATGP modificado. Imagen de 36x36 píxeles y 5 targets a calcular. Trabajo Fin de Máster Sergio Bernabé García

120 Max. Freq. (MHz) Min. Period (ns) Latencia (Ciclos) Latencia (Tiempo(ms)) Implementación3 (ATGP Implementación2 (ATGP Implementación1 (ATGP modificado desde lenguaje modificado desde lenguaje modificado desde lenguaje C) Matlab con la Toolbox Matlab) Fixed-Point) Virtex 5 Stratix III Virtex 5 Stratix III Virtex 5 Stratix III 192, , , , , ,924 5,205 5,115 6,748 4,684 5,384 4, , , , , , ,00312 Tabla Restricciones de las distintas implementaciones del algoritmo ATGP modificado. Imagen de 36x36 píxeles y 5 targets a calcular. Respecto a la Tabla 5.14, se observa que la primera y la tercera implementaciones son candidatas a la hora de realizar un diseño de alto nivel desde Matlab (utilizando el mejor caso que es la implementación tercera), o bien, desde C/C++ (utilizando el mejor caso que es la implementación primera). Ambas implementaciones utilizando una FPGA Virtex 5 o Stratix III consiguen resultados muy buenos gracias a las optimizaciones de las herramientas Catapult C y Precision Synthesis RTL, obteniendo resultados de frecuencias máximas altas y ciclos de latencia bajos Resultados en Hardware. Versión paralela En este aparatado se va a mostrar la comparación de resultados del módulo Projection en paralelo sintetizado con la herramienta de Xilinx ISE, Quartus II de Altera y el módulo Projection en secuencial sintetizado con la herramienta Precision Synthesis RTL de Mentor Graphics. Para dicha comparación utilizaremos una FPGA Virtex 5 y una Stratix III. En este caso al igual que en el apartado anterior, se trabaja con un tipo de imagen real, por ejemplo Cuprite, reduciendo el tamaño a 36x36 píxeles y 188 bandas espectrales. Él número de targets a detectar se reducirá a cinco, ya que no escogeríamos Trabajo Fin de Máster Sergio Bernabé García

121 diecinueve por haber reducido el tamaño de la imagen. Virtex 5 Versión secuencial (módulo Projection) Versión paralela (módulo Projection) LUTs (out of 97280) CLB Slices (out of 24320) Dffs or Latches (out of 97280) DSP48Es (out of 128) Número Empelado Porcentaje Número Empleado Porcentaje 647 0,67% 79 0,08% 204 0,84% 57 0,23% 813 0,84% 225 0,23% 8 6,25% 6 4,69% Tabla Recursos utilizados de la FPGA Virtex 5, para la implementación del módulo Projection. Stratix III LUTs (out of ) Registers (out of ) Num of DSP block 18-bit elements (out of 576) Versión secuencial (módulo Projection) Versión paralela (módulo Projection) Número Empelado Porcentaje Número Empleado Porcentaje 624 0,39% 82 0,05% 643 0,40% 225 0,14% 9 1,56% 7 1,22% Tabla Recursos utilizados de la FPGA Stratix III, para la implementación del módulo Projection. Los resultados de ocupación y de restricción temporal de las tres implementaciones se pueden observar en las Tablas 5.15, 5.16 y Estos resultados muestran que la comparación no es del todo ajustada, debido a que no se parte desde un lenguaje en alto nivel o desde bajo nivel en ambas implementaciones. Al partir desde un lenguaje de alto nivel para poder llegar a un código de bajo nivel se está utilizando gran cantidad de hardware respecto a un código que ya se haya hecho a bajo nivel, esto no ocurriría si la Trabajo Fin de Máster Sergio Bernabé García

122 versión serie estuviera implementada desde bajo nivel, ya que lo que estamos haciendo en la versión paralela es utilizar más hardware para podernos ahorrar tiempo de cómputo. Max. Freq. (MHz) Min. Period (ns) Latencia (Ciclos) Latencia (Tiempo(ms)) Versión secuencial (módulo Projection) Versión paralela (módulo Projection) Virtex 5 Stratix III Virtex 5 Stratix III 220, , , ,784 4,542 5,075 2,972 2, , , , , Tabla Restricciones de la versión secuencial y paralela del módulo Projection. Respecto a todo lo anterior, se ha conseguido una segunda implementación bastante rápida, dado porque la implementación de la proyección de la imagen sobre el vector f en paralelo acelera el proceso considerablemente, consiguiendo frecuencias máximas en dicho diseño superiores a 300MHz. En este caso la utilización de FPGAs Virtex 5 ofrece mejores resultados debido a que esta implementación se ha optimizado para este tipo de FPGAs por la utilización de los bloques denominados ip cores 13 que nos proporciona la herramienta Xilinx ISE y que nos han servido para implementar operaciones matemáticas complejas Trabajo Fin de Máster Sergio Bernabé García

123 6. Conclusiones y líneas futuras En la presente memoria se ha realizado el estudio de un algoritmo de extracción de endmembers para la detección de targets en imágenes hiperespectrales. En concreto, se han propuesto varias modificaciones respecto a la versión original del algoritmo ATGP, ampliamente utilizado en la literatura para la detección de targets. Estas implementaciones suponen contribuciones innovadoras con respecto a la literatura reciente en el área de estudio, que carece de trabajos relacionados con la implementación eficiente de algoritmos de detección de targets sobre arquitecturas paralelas FPGAs. Otra de las contribuciones innovadoras del proyecto ha sido el desarrollo de varias versiones del algoritmo ATGP mediante la incorporación del método de Gram-Schmidt para el cálculo de vectores ortogonales y las incorporaciones de paralelismo y de la Toolbox Fixed-Point de Matlab. Además se ha ideado una metodología propia para poder hacer un diseño de alto nivel capaz de que a partir de un código en C o C++ e incluso un código hecho en Matlab, poder obtener un código RTL con el que podamos obtener una implementación eficiente sobre una FPGA. Como se ha podido comprobar, el estudio se ha centrado en la detección de incendios en la zona del World Trade Center de Nueva York, días después del atentado terrorista del 11 de Septiembre de 2011, utilizando para ello una imagen hiperespectral obtenida por el sensor AVIRIS de NASA. La otra parte del estudio se ha centrado en la detección de materiales del distrito minero de Cuprite, en Nevada, Estados Unidos, y para dicha imagen se necesitó información de referencia a través del Instituto Geológico de Estados Unidos (USGS), la cual se ha empleado para analizar la precisión entre la versión original y la versión modificada. En este sentido, es importante destacar que las prestaciones de las versiones implementadas han sido demostradas desde la perspectiva de aplicaciones reales de gran actualidad, quedando patentes las posibilidades de explotación de la técnica propuesta con motivo del presente proyecto en el contexto específico de dichas aplicaciones. Trabajo Fin de Máster Sergio Bernabé García

124 Con este trabajo se destaca la importancia de las distintas implementaciones conseguidas, ya que se ha conseguido acelerar el cómputo sobre la versión de partida del algoritmo ATGP. Además se ha podido utilizar una arquitectura paralela que nos ha permitido conseguir tiempos de ejecución reducidos y un uso de recursos hardware menor. Con todo esto justificamos la necesidad de paralelismo por el hecho de que usando una arquitectura paralela como es el caso de una FPGA, se ha podido reducir el coste computacional y de ejecución utilizando imágenes hiperespectrales con una cantidad elevada de datos a procesar. Del presente trabajo hay que subrayar, en primer lugar, que se ha realizado un estudio detallado del algoritmo ATGP, para analizar las posibles modificaciones que permitieran implementar de manera más sencilla y eficaz el algoritmo en hardware. Analizando dicho algoritmo se extrajeron las siguientes conclusiones: Se ha mejorado el método del cálculo de vectores ortogonales, a partir del uso del método de Gram-Schmidt. Este método consiste en eliminar la operación de la pseudoinvesa de una matriz, que es costosa y requiere de múltiples operaciones numéricas de cierta complejidad, siendo sustituida por el cálculo de una base de vectores que son ortogonales y que tienen la misma función que en el caso anterior, pero cuyo cálculo es menos complejo ya que se reduce a una serie de operaciones de multiplicación, suma y división. Se paralelizó la proyección del vector ortogonal sobre la imagen, de tal modo, que se redujo el coste computacional y de ejecución considerablemente. Introducidas todas las modificaciones anteriores, se llevaron a cabo modificaciones a bajo nivel de programación del algoritmo ATGP, una de ellas trabajando con datos en punto flotantes y otra con operaciones en punto fijo, con la utilización de la Toolbox Fixed-Point de Matlab. Realizadas las implementaciones, se presentaron los resultados de síntesis de las mismas sobre una FPGA Virtex 5 y sobre una FPGA Stratix III, en cuanto a área de ocupación sobre las distintas FPGAs y a tiempo de ejecución. Respecto a los resultados de diseño en frecuencias máximas, se ha conseguido sobrepasar los 200 MHz y además se ha conseguido ciclos de latencia muy bajos, ya que ambos parámetros se consideran Trabajo Fin de Máster Sergio Bernabé García

125 como restricciones en cualquier diseño de implementación en hardware. Ya que lo ideal es obtener frecuencias altas y ciclos de latencia bajos. Destacar que a lo largo de la memoria se han presentado los resultados de las distintas modificaciones sobre el algoritmo, en precisión y en tiempo de ejecución desarrollado en código C y en Verilog, para poder contrastar los resultados que se obtenían con una y otra herramienta. No se han realizado comparativas de tiempo entre uno y otra ya que no serían veraces, dadas las diferencias de recursos hardware entre las plataformas sobre las que se ejecutan los programas. También se ha desarrollado en Matlab las implementaciones realizadas sobre el algoritmo ATGP. Hasta ahora las líneas de investigación y publicaciones relacionadas con la implementación en FPGAs de algoritmos de procesamiento de imágenes hiperespectrales son escasas, por lo que este trabajo es pionero en este aspecto, en el que se ha conseguido una implementación novedosa, cuyos resultados han sido contrastados a nivel numérico y muy positivos a nivel de tiempo de ejecución. Para concluir este capítulo, planteamos algunas líneas futuras de trabajo adicionales que sería interesante perseguir en futuras ampliaciones de este trabajo: Implementar la versión modificada en CUDA o en MPI+OpenMP y comparar sus resultados (tiempo en encontrar cada target, Speedup, escalabilidad, etc.). Seguir la implementación paralela de la versión modificada del algoritmo en Verilog. Para ello se procederá a implementar los módulos que restan y realizar la conexión con el módulo projection ya implementado en dicho trabajo. Se propone seguir implementando en hardware toda la cadena de algoritmos de procesamiento de imágenes hiperespectrales. Para ello se deberá proceder de igual manera que se ha hecho en este trabajo, realizando un estudio en detalle del algoritmo buscando posibles modificaciones que permitan de manera más adecuada la implementación a bajo nivel. Se propone profundizar en el estudio de las comunicaciones que permitan la transmisión de datos a altas velocidades, para que estas no sean el cuello de botella de todo el proceso, ya que cualquier aplicación en tiempo real requiere Trabajo Fin de Máster Sergio Bernabé García

126 de una comunicación que trabaje a frecuencias de transmisión relativamente altas y con una tasa de fallos baja, sobre todo aplicaciones precisas, donde los errores no están permitidos. En estos casos es fundamental no trabajar con tecnologías de comunicaciones contrastadas y fiables, además de rápidas, sino que es preciso desarrollar un protocolo capaz de actuar en caso de fallos. Por supuesto, se debe continuar la investigación de algoritmos diferentes, y tratar de encontrar aquellos que ofrezcan resultados superiores en el equilibrio calidad-coste computacional, como pueden ser los algoritmos de extracción de endmembers N-FINDR o el VCA. Trabajo Fin de Máster Sergio Bernabé García

127 7. ANEXO I: Tutorial Verilog Este tutorial 14 realizado por el Dr. Valentín de Armas Sosa, profesor del IUMA, pretende ser una guía de aprendizaje para el diseño HDL usando Verilog. Los conceptos del diseño se explican a lo largo de los ejemplos que se van desarrollando. Cada apunte a la sintaxis, representación de constantes, directivas, etc se introduce a medida que van siendo necesarios para el desarrollo del ejemplo. Por todo esto y debido a la estructura de su contenido, no se puede considerar este tutorial una guía de consulta sino de aprendizaje de este lenguaje Trabajo Fin de Máster Sergio Bernabé García

128 Trabajo Fin de Máster Sergio Bernabé García

129 Trabajo Fin de Máster Sergio Bernabé García

130 Trabajo Fin de Máster Sergio Bernabé García

131 Trabajo Fin de Máster Sergio Bernabé García

132 Trabajo Fin de Máster Sergio Bernabé García

133 Trabajo Fin de Máster Sergio Bernabé García

134 Trabajo Fin de Máster Sergio Bernabé García

135 Trabajo Fin de Máster Sergio Bernabé García

136 Trabajo Fin de Máster Sergio Bernabé García

137 Trabajo Fin de Máster Sergio Bernabé García

138 Trabajo Fin de Máster Sergio Bernabé García

139 Trabajo Fin de Máster Sergio Bernabé García

140 Trabajo Fin de Máster Sergio Bernabé García

141 Trabajo Fin de Máster Sergio Bernabé García

142 Trabajo Fin de Máster Sergio Bernabé García

143 Trabajo Fin de Máster Sergio Bernabé García

144 Trabajo Fin de Máster Sergio Bernabé García

145 Trabajo Fin de Máster Sergio Bernabé García

146 Trabajo Fin de Máster Sergio Bernabé García

147 Trabajo Fin de Máster Sergio Bernabé García

Metodologías de diseño de hardware

Metodologías de diseño de hardware Capítulo 2 Metodologías de diseño de hardware Las metodologías de diseño de hardware denominadas Top-Down, basadas en la utilización de lenguajes de descripción de hardware, han posibilitado la reducción

Más detalles

Electrónica Digital II

Electrónica Digital II Electrónica Digital II M. C. Felipe Santiago Espinosa Aplicaciones de los FPLDs Octubre / 2014 Aplicaciones de los FPLDs Los primeros FPLDs se usaron para hacer partes de diseños que no correspondían a

Más detalles

Unidad 1. Fundamentos en Gestión de Riesgos

Unidad 1. Fundamentos en Gestión de Riesgos 1.1 Gestión de Proyectos Unidad 1. Fundamentos en Gestión de Riesgos La gestión de proyectos es una disciplina con la cual se integran los procesos propios de la gerencia o administración de proyectos.

Más detalles

Metodología básica de gestión de proyectos. Octubre de 2003

Metodología básica de gestión de proyectos. Octubre de 2003 Metodología básica de gestión de proyectos Octubre de 2003 Dentro de la metodología utilizada en la gestión de proyectos el desarrollo de éstos se estructura en tres fases diferenciadas: Fase de Éjecución

Más detalles

Encuesta sobre utilización de la microelectrónica en la Argentina

Encuesta sobre utilización de la microelectrónica en la Argentina Encuesta sobre utilización de la microelectrónica en la Argentina Los dispositivos microelectrónicos forman el corazón de todo sistema electrónico de nuestros días. En ellos los circuitos alcanzan las

Más detalles

Monitoreo de condiciones meteorológicas en Baja California Sur. Luis M. Farfán (farfan@cicese.mx) CICESE, Unidad La Paz, B.C.S.

Monitoreo de condiciones meteorológicas en Baja California Sur. Luis M. Farfán (farfan@cicese.mx) CICESE, Unidad La Paz, B.C.S. 1 Monitoreo de condiciones meteorológicas en Baja California Sur Luis M. Farfán (farfan@cicese.mx) CICESE, Unidad La Paz, B.C.S. Las condiciones meteorológicas del tiempo representan el estado de la atmósfera

Más detalles

Informe final Proyecto de Innovación Docente ID11/129. Uso de FPGAs y medios audiovisuales en la docencia de la Electrónica Digital

Informe final Proyecto de Innovación Docente ID11/129. Uso de FPGAs y medios audiovisuales en la docencia de la Electrónica Digital Informe final Proyecto de Innovación Docente ID11/129 Uso de FPGAs y medios audiovisuales en la docencia de la Electrónica Digital Participantes: Beatriz García Vasallo Raúl Rengel Estévez Miguel Ángel

Más detalles

Elementos requeridos para crearlos (ejemplo: el compilador)

Elementos requeridos para crearlos (ejemplo: el compilador) Generalidades A lo largo del ciclo de vida del proceso de software, los productos de software evolucionan. Desde la concepción del producto y la captura de requisitos inicial hasta la puesta en producción

Más detalles

www.gtbi.net soluciones en Fotogrametría Digital El software de análisis más potente basado en objetos de datos geoespaciales. Fotogrametría Digital

www.gtbi.net soluciones en Fotogrametría Digital El software de análisis más potente basado en objetos de datos geoespaciales. Fotogrametría Digital soluciones en Fotogrametría Digital El software de análisis más potente basado en objetos de datos geoespaciales. Fotogrametría Digital www.gtbi.net LA MANERA DE ENTENDER EL MUNDO ESTÁ CAMBIANDO El usuario

Más detalles

Gnu-LinEx. Aplicaciones del Software Libre en Computación de Altas Prestaciones. Sé legal... copia LinEx

Gnu-LinEx. Aplicaciones del Software Libre en Computación de Altas Prestaciones. Sé legal... copia LinEx Gnu-LinEx Aplicaciones del Software Libre en Computación de Altas Prestaciones Sé legal... copia LinEx Antonio Plaza Miguel Departamento Tecnología Computadores Universidad de Extremadura E-mail: aplaza@unex.es

Más detalles

EL MODELO DE DATOS RASTER

EL MODELO DE DATOS RASTER EL MODELO DE DATOS RASTER El modelo de datos raster, como señala Bosque (1992), es el modelo de datos complementario al modelo vectorial presentado anteriormente. Tiene como principal característica el

Más detalles

Capítulo 5: METODOLOGÍA APLICABLE A LAS NORMAS NE AI

Capítulo 5: METODOLOGÍA APLICABLE A LAS NORMAS NE AI Capítulo 5: METODOLOGÍA APLICABLE A LAS NORMAS NE AI La segunda fase del NIPE corresponde con la adecuación de las intervenciones de enfermería del sistema de clasificación N.I.C. (Nursing Intervention

Más detalles

Gestión de la Configuración

Gestión de la Configuración Gestión de la ÍNDICE DESCRIPCIÓN Y OBJETIVOS... 1 ESTUDIO DE VIABILIDAD DEL SISTEMA... 2 ACTIVIDAD EVS-GC 1: DEFINICIÓN DE LOS REQUISITOS DE GESTIÓN DE CONFIGURACIÓN... 2 Tarea EVS-GC 1.1: Definición de

Más detalles

DEPARTAMENTO: Informática. MATERIA: Programación. NIVEL: 1º Desarrollo de Aplicaciones Multiplataforma

DEPARTAMENTO: Informática. MATERIA: Programación. NIVEL: 1º Desarrollo de Aplicaciones Multiplataforma DEPARTAMENTO: Informática MATERIA: Programación NIVEL: 1º Desarrollo de Aplicaciones Multiplataforma 1. Objetivos. Competencias Profesionales, Personales y Sociales 1.1 Objetivos del ciclo formativo La

Más detalles

La presente tesis pretende que los estudiantes observen la teoría de las acciones de control

La presente tesis pretende que los estudiantes observen la teoría de las acciones de control CAPÍTULO V. CONCLUSIONES. La presente tesis pretende que los estudiantes observen la teoría de las acciones de control de forma virtual al mismo tiempo analicen físicamente los sistemas electrónicos cuando

Más detalles

1. INTRODUCCIÓN 1.1 INGENIERÍA

1. INTRODUCCIÓN 1.1 INGENIERÍA 1. INTRODUCCIÓN 1.1 INGENIERÍA Es difícil dar una explicación de ingeniería en pocas palabras, pues se puede decir que la ingeniería comenzó con el hombre mismo, pero se puede intentar dar un bosquejo

Más detalles

CAPÍTULO 1 Instrumentación Virtual

CAPÍTULO 1 Instrumentación Virtual CAPÍTULO 1 Instrumentación Virtual 1.1 Qué es Instrumentación Virtual? En las últimas décadas se han incrementado de manera considerable las aplicaciones que corren a través de redes debido al surgimiento

Más detalles

App para realizar consultas al Sistema de Información Estadística de Castilla y León

App para realizar consultas al Sistema de Información Estadística de Castilla y León App para realizar consultas al Sistema de Información Estadística de Castilla y León Jesús M. Rodríguez Rodríguez rodrodje@jcyl.es Dirección General de Presupuestos y Estadística Consejería de Hacienda

Más detalles

RESULTADOS CONSULTA CIUDADANA VIRTUAL. Consulta Laboral en Línea

RESULTADOS CONSULTA CIUDADANA VIRTUAL. Consulta Laboral en Línea RESULTADOS CONSULTA CIUDADANA VIRTUAL Consulta Laboral en Línea Septiembre, 2015 1 Agradecimientos Ponemos a disposición de ustedes los resultados de la Consulta Ciudadana Virtual, efectuada en julio de

Más detalles

Vicerrectorado de Planificación, Calidad, Responsabilidad Social y Comunicación

Vicerrectorado de Planificación, Calidad, Responsabilidad Social y Comunicación Vicerrectorado de Planificación, Calidad, Responsabilidad Social y Comunicación GUÍA PRÁCTICA DE LA APLICACIÓN PARA EL SEGUIMIENTO DE LOS TÍTULOS OFICIALES DE LA UNIVERSIDAD DE JAÉN (ISOTOOLS AUDIT) 1.

Más detalles

SEGURIDAD Y PROTECCION DE FICHEROS

SEGURIDAD Y PROTECCION DE FICHEROS SEGURIDAD Y PROTECCION DE FICHEROS INTEGRIDAD DEL SISTEMA DE ARCHIVOS ATAQUES AL SISTEMA PRINCIPIOS DE DISEÑO DE SISTEMAS SEGUROS IDENTIFICACIÓN DE USUARIOS MECANISMOS DE PROTECCIÓN Y CONTROL INTEGRIDAD

Más detalles

SCT3000 95. Software para la calibración de transductores de fuerza. Versión 3.5. Microtest S.A. microtes@arrakis.es

SCT3000 95. Software para la calibración de transductores de fuerza. Versión 3.5. Microtest S.A. microtes@arrakis.es SCT3000 95 Versión 3.5 Software para la calibración de transductores de fuerza. Microtest S.A. microtes@arrakis.es Introducción El programa SCT3000 95, es un sistema diseñado para la calibración automática

Más detalles

Procedimiento de Sistemas de Información

Procedimiento de Sistemas de Información Procedimiento de Sistemas de Información DIRECCIÓN DE COORDINACIÓN TÉCNICA Y PLANEACIÓN VIEMBRE DE 2009 PR-DCTYP-08 Índice. 1. INTRODUCCIÓN.... 3 2. OBJETIVO.... 4 3. ALCANCE.... 4 4. MARCO LEGAL.... 4

Más detalles

Sistemas de Información Geográficos (SIG o GIS)

Sistemas de Información Geográficos (SIG o GIS) Sistemas de Información Geográficos (SIG o GIS) 1) Qué es un SIG GIS? 2) Para qué sirven? 3) Tipos de datos 4) Cómo trabaja? 5) Modelos de datos, Diseño Conceptual 6) GeoDataase (GD) 7) Cómo evaluamos

Más detalles

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología La metodología para el desarrollo de software es un modo sistemático de realizar, gestionar y administrar un proyecto

Más detalles

El objetivo principal del presente curso es proporcionar a sus alumnos los conocimientos y las herramientas básicas para la gestión de proyectos.

El objetivo principal del presente curso es proporcionar a sus alumnos los conocimientos y las herramientas básicas para la gestión de proyectos. Gestión de proyectos Duración: 45 horas Objetivos: El objetivo principal del presente curso es proporcionar a sus alumnos los conocimientos y las herramientas básicas para la gestión de proyectos. Contenidos:

Más detalles

Gestión de proyectos

Gestión de proyectos Gestión de proyectos Horas: 45 El objetivo principal del presente curso es proporcionar a sus alumnos los conocimientos y las herramientas básicas para la gestión de proyectos. Gestión de proyectos El

Más detalles

6. DESCRIPCIÓN DEL SOFTWARE

6. DESCRIPCIÓN DEL SOFTWARE Capítulo 2. Equipo 6. DESCRIPCIÓN DEL SOFTWARE 6.1 Introducción El equipo de medida descrito en el capítulo anterior lleva asociado un software que hace de sistema de control del proceso de medición. Este

Más detalles

PERFIL DEL PUESTO POR COMPETENCIAS Sepa cómo construirlo y evitar bajos desempeños posteriores

PERFIL DEL PUESTO POR COMPETENCIAS Sepa cómo construirlo y evitar bajos desempeños posteriores PERFIL DEL PUESTO POR COMPETENCIAS Sepa cómo construirlo y evitar bajos desempeños posteriores Martha Alicia Alles Es contadora pública nacional, doctora por la Universidad de Buenos Aires en la especialidad

Más detalles

NORMAS INTERNACIONALES Y ADQUISICION DE DATOS.

NORMAS INTERNACIONALES Y ADQUISICION DE DATOS. CAPITULO II NORMAS INTERNACIONALES Y ADQUISICION DE DATOS. En este capítulo se describirán en forma general las normas internacionales para la medición de variables climatológicas y cómo funciona un sistema

Más detalles

Parámetros con la ventana de selección de usuario, reglas, texto y descomposición (IVE)

Parámetros con la ventana de selección de usuario, reglas, texto y descomposición (IVE) QUÉ SON CONCEPTOS PARAMÉTRICOS? Los conceptos paramétricos de Presto permiten definir de una sola vez una colección de conceptos similares a partir de los cuales se generan variantes o conceptos derivados

Más detalles

LINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN

LINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN LINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN Tabla de Contenidos LINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN... 1 Tabla de Contenidos... 1 General... 2 Uso de los Lineamientos Estándares...

Más detalles

MARCO METODOLÓGICO CAPITULO III

MARCO METODOLÓGICO CAPITULO III MARCO METODOLÓGICO CAPITULO III CAPITULO III MARCO METODOLÓGICO En esta sección se presenta el tipo de investigación, las técnicas de recolección de datos y finalmente la metodología utilizada para el

Más detalles

Un filtro general de respuesta al impulso finita con n etapas, cada una con un retardo independiente d i y ganancia a i.

Un filtro general de respuesta al impulso finita con n etapas, cada una con un retardo independiente d i y ganancia a i. Filtros Digitales Un filtro general de respuesta al impulso finita con n etapas, cada una con un retardo independiente d i y ganancia a i. En electrónica, ciencias computacionales y matemáticas, un filtro

Más detalles

ANALIZANDO GRAFICADORES

ANALIZANDO GRAFICADORES ANALIZANDO GRAFICADORES María del Carmen Pérez E.N.S.P.A, Avellaneda. Prov. de Buenos Aires Instituto Superior del Profesorado "Dr. Joaquín V. González" Buenos Aires (Argentina) INTRODUCCIÓN En muchos

Más detalles

UNIVERSIDAD DE SALAMANCA

UNIVERSIDAD DE SALAMANCA UNIVERSIDAD DE SALAMANCA FACULTAD DE CIENCIAS INGENIERÍA TÉCNICA EN INFORMÁTICA DE SISTEMAS Resumen del trabajo práctico realizado para la superación de la asignatura Proyecto Fin de Carrera. TÍTULO SISTEMA

Más detalles

Laboratorio de Diseño de Sistemas Digitales

Laboratorio de Diseño de Sistemas Digitales Proceso de Diseño Laboratorio de Diseño de Sistemas Digitales I Semestre 2008 Ing. Gabriela Ortiz L. Diseño Implementación Depuración Diseño: Concepto inicial. Cuál es la función que lleva a cabo el objeto?

Más detalles

LA LOGÍSTICA COMO FUENTE DE VENTAJAS COMPETITIVAS

LA LOGÍSTICA COMO FUENTE DE VENTAJAS COMPETITIVAS LA LOGÍSTICA COMO FUENTE DE VENTAJAS COMPETITIVAS Los clientes compran un servicio basandose en el valor que reciben en comparacion con el coste en el que incurren. Por, lo tanto, el objetivo a largo plazo

Más detalles

CMMI (Capability Maturity Model Integrated)

CMMI (Capability Maturity Model Integrated) CMMI (Capability Maturity Model Integrated) El SEI (software engineering institute) a mediados de los 80 desarrolló el CMM (modelo de madurez de la capacidad de software). CMMI: CMM integrado, una mezcla

Más detalles

PROCESAMIENTO DIGITAL DE IMÁGENES MEDIANTE EL USO DE UN FPGA Y LENGUAJE VHDL

PROCESAMIENTO DIGITAL DE IMÁGENES MEDIANTE EL USO DE UN FPGA Y LENGUAJE VHDL PROCESAMIENTO DIGITAL DE IMÁGENES MEDIANTE EL USO DE UN FPGA Y LENGUAJE VHDL N. E. Chávez Rodríguez*, A. M. Vázquez Vargas** *Departamento de Computación **Departamento de Procesamiento Digital de Señales

Más detalles

SINTESIS Y DESCRIPCIÓN DE CIRCUITOS DIGITALES UTILIZANDO VHDL ANTECEDENTES

SINTESIS Y DESCRIPCIÓN DE CIRCUITOS DIGITALES UTILIZANDO VHDL ANTECEDENTES ANTECEDENTES En los últimos diez años la industria electrónica ha tenido una gran evolución en el desarrollo de sistemas digitales; desde computadoras personales, sistemas de audio y vídeo hasta dispositivos

Más detalles

UN ENTORNO A MEDIDA PARA EL DISEÑO Y LA SIMULACIÓN DE MAQUINARIA POR COMPUTADOR

UN ENTORNO A MEDIDA PARA EL DISEÑO Y LA SIMULACIÓN DE MAQUINARIA POR COMPUTADOR UN ENTORNO A MEDIDA PARA EL DISEÑO Y LA SIMULACIÓN DE MAQUINARIA POR COMPUTADOR Manuel González y Javier Cuadrado Departamento de Ingeniería Industrial II, Campus de Esteiro, 15403 Ferrol Universidad de

Más detalles

Estudios de Economía y Empresa 78.617 Trabajo Final de Grado Plan de marketing

Estudios de Economía y Empresa 78.617 Trabajo Final de Grado Plan de marketing TFG: PLAN DE MARKETING Descripción El Trabajo Final de Grado (TFG) es una asignatura obligatoria del plan de estudios del Grado de Marketing e Investigación de Mercados (MIM) que el estudiante debe cursar

Más detalles

Introducción En los años 60 s y 70 s cuando se comenzaron a utilizar recursos de tecnología de información, no existía la computación personal, sino que en grandes centros de cómputo se realizaban todas

Más detalles

Figure 7-1: Phase A: Architecture Vision

Figure 7-1: Phase A: Architecture Vision Fase A Figure 7-1: Phase A: Architecture Vision Objetivos: Los objetivos de la fase A son: Enfoque: Desarrollar una visión de alto nivel de las capacidades y el valor del negocio para ser entregado como

Más detalles

Funcionalidades Software PROYECTOS GotelGest.Net Software para la gestión de Proyectos GotelGest.Net

Funcionalidades Software PROYECTOS GotelGest.Net Software para la gestión de Proyectos GotelGest.Net 2012 Funcionalidades Software PROYECTOS GotelGest.Net Software para la gestión de Proyectos GotelGest.Net Servinet Sistemas y Comunicación S.L. www.softwaregestionproyectos.com Última Revisión: Febrero

Más detalles

INTRODUCCION A LOS SISTEMAS R.F.I.D.

INTRODUCCION A LOS SISTEMAS R.F.I.D. INTRODUCCION A LOS SISTEMAS RFID INTRODUCCION A LOS SISTEMAS R.F.I.D. Servicios Informáticos KIFER, S.L. Antxota Kalea, Nº. 1, Of. 2B. 20160 LASARTE - ORIA (GIPUZKOA) 1/8 www.kifer.es - kifer@kifer.es

Más detalles

1.4.1.2. Resumen... 1.4.2. ÁREA DE FACTURACIÓN::INFORMES::Pedidos...27 1.4.2.1. Detalle... 1.4.2.2. Resumen... 1.4.3. ÁREA DE

1.4.1.2. Resumen... 1.4.2. ÁREA DE FACTURACIÓN::INFORMES::Pedidos...27 1.4.2.1. Detalle... 1.4.2.2. Resumen... 1.4.3. ÁREA DE MANUAL DE USUARIO DE ABANQ 1 Índice de contenido 1 ÁREA DE FACTURACIÓN......4 1.1 ÁREA DE FACTURACIÓN::PRINCIPAL...4 1.1.1. ÁREA DE FACTURACIÓN::PRINCIPAL::EMPRESA...4 1.1.1.1. ÁREA DE FACTURACIÓN::PRINCIPAL::EMPRESA::General...4

Más detalles

PLAN DE MEJORAS. Herramienta de trabajo. Agencia Nacional de Evaluación de la Calidad y Acreditación

PLAN DE MEJORAS. Herramienta de trabajo. Agencia Nacional de Evaluación de la Calidad y Acreditación PLAN DE MEJORAS Herramienta de trabajo Agencia Nacional de Evaluación de la Calidad y Acreditación Índice 1 Introducción...3 2 Pasos a seguir para la elaboración del plan de mejoras...5 2.1 Identificar

Más detalles

Planificación de Sistemas de Información

Planificación de Sistemas de Información Planificación de Sistemas de Información ÍNDICE DESCRIPCIÓN Y OBJETIVOS...1 ACTIVIDAD 1: INICIO DEL PLAN DE SISTEMAS DE INFORMACIÓN...4 Tarea 1.1: Análisis de la Necesidad del...4 Tarea 1.2: Identificación

Más detalles

Planificación de Sistemas de Información

Planificación de Sistemas de Información Planificación de Sistemas de Información ÍNDICE DESCRIPCIÓN Y OBJETIVOS... 1 ACTIVIDAD 1: INICIO DEL PLAN DE SISTEMAS DE INFORMACIÓN... 4 Tarea 1.1: Análisis de la Necesidad del... 4 Tarea 1.2: Identificación

Más detalles

Mineria de datos y su aplicación en web mining data Redes de computadores I ELO 322

Mineria de datos y su aplicación en web mining data Redes de computadores I ELO 322 Mineria de datos y su aplicación en web mining data Redes de computadores I ELO 322 Nicole García Gómez 2830047-6 Diego Riquelme Adriasola 2621044-5 RESUMEN.- La minería de datos corresponde a la extracción

Más detalles

Workflows? Sí, cuántos quiere?

Workflows? Sí, cuántos quiere? Workflows? Sí, cuántos quiere? 12.11.2006 Servicios Profesionales Danysoft Son notables los beneficios que una organización puede obtener gracias al soporte de procesos de negocios que requieran la intervención

Más detalles

Aproximación práctica a ITIL. Proyecto VeredaCS. F07.02.01.00.30.r00

Aproximación práctica a ITIL. Proyecto VeredaCS. F07.02.01.00.30.r00 Aproximación práctica a ITIL. Proyecto VeredaCS Introducción En esta presentación pretendemos mostrar una aproximación práctica a la implantación de un modelo de prestación de servicios basado en ITIL

Más detalles

INFORME Nº 023-2014-GTI INFORME TÉCNICO PREVIO DE EVALUACIÓN DE SOFTWARE

INFORME Nº 023-2014-GTI INFORME TÉCNICO PREVIO DE EVALUACIÓN DE SOFTWARE INFORME Nº 023-2014-GTI INFORME TÉCNICO PREVIO DE EVALUACIÓN DE SOFTWARE 1. Nombre del Área El área encargada de la evaluación técnica para la adquisición de una solución de optimización WAN, es el Departamento

Más detalles

MANUAL DEL TRABAJO FIN DE GRADO EN FISIOTERAPIA GUÍA PARA LOS TUTORES

MANUAL DEL TRABAJO FIN DE GRADO EN FISIOTERAPIA GUÍA PARA LOS TUTORES 2011 MANUAL DEL TRABAJO FIN DE GRADO EN FISIOTERAPIA GUÍA PARA LOS TUTORES Universidad de Zaragoza Escuela de Ciencias de la Salud Grado en Fisioterapia Trabajo Fin de Grado 1. Introducción Qué es el Trabajo

Más detalles

Capítulo 5. Cliente-Servidor.

Capítulo 5. Cliente-Servidor. Capítulo 5. Cliente-Servidor. 5.1 Introducción En este capítulo hablaremos acerca de la arquitectura Cliente-Servidor, ya que para nuestra aplicación utilizamos ésta arquitectura al convertir en un servidor

Más detalles

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA Documento de trabajo elaborado para la Red Temática DocenWeb: Red Temática de Docencia en Control mediante Web (DPI2002-11505-E)

Más detalles

Figura 1. Símbolo que representa una ALU. El sentido y la funcionalidad de las señales de la ALU de la Figura 1 es el siguiente:

Figura 1. Símbolo que representa una ALU. El sentido y la funcionalidad de las señales de la ALU de la Figura 1 es el siguiente: Departamento de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Antioquia Arquitectura de Computadores y Laboratorio ISI355 (2011 2) Práctica No. 1 Diseño e implementación de una unidad aritmético

Más detalles

INSTRODUCCION. Toda organización puede mejorar su manera de trabajar, lo cual significa un

INSTRODUCCION. Toda organización puede mejorar su manera de trabajar, lo cual significa un INSTRODUCCION Toda organización puede mejorar su manera de trabajar, lo cual significa un incremento de sus clientes y gestionar el riesgo de la mejor manera posible, reduciendo costes y mejorando la calidad

Más detalles

Fundamentos del diseño 3ª edición (2002)

Fundamentos del diseño 3ª edición (2002) Unidades temáticas de Ingeniería del Software Fundamentos del diseño 3ª edición (2002) Facultad de Informática necesidad del diseño Las actividades de diseño afectan al éxito de la realización del software

Más detalles

ÍNDICE DISEÑO DE CONTADORES SÍNCRONOS JESÚS PIZARRO PELÁEZ

ÍNDICE DISEÑO DE CONTADORES SÍNCRONOS JESÚS PIZARRO PELÁEZ ELECTRÓNICA DIGITAL DISEÑO DE CONTADORES SÍNCRONOS JESÚS PIZARRO PELÁEZ IES TRINIDAD ARROYO DPTO. DE ELECTRÓNICA ÍNDICE ÍNDICE... 1 1. LIMITACIONES DE LOS CONTADORES ASÍNCRONOS... 2 2. CONTADORES SÍNCRONOS...

Más detalles

K2BIM Plan de Investigación - Comparación de herramientas para la parametrización asistida de ERP Versión 1.2

K2BIM Plan de Investigación - Comparación de herramientas para la parametrización asistida de ERP Versión 1.2 K2BIM Plan de Investigación - Comparación de herramientas para la parametrización asistida de ERP Versión 1.2 Historia de revisiones Fecha VersiónDescripción Autor 08/10/2009 1.0 Creación del documento.

Más detalles

"Diseño, construcción e implementación de modelos matemáticos para el control automatizado de inventarios

Diseño, construcción e implementación de modelos matemáticos para el control automatizado de inventarios "Diseño, construcción e implementación de modelos matemáticos para el control automatizado de inventarios Miguel Alfonso Flores Sánchez 1, Fernando Sandoya Sanchez 2 Resumen En el presente artículo se

Más detalles

GUÍA DOCENTE. Sistemas Integrados

GUÍA DOCENTE. Sistemas Integrados GUÍA DOCENTE Sistemas Integrados I.- DATOS INICIALES DE IDENTIFICACIÓN Nombre de la asignatura: Sistemas Integrados Número de créditos ECTS: 4 Ubicación temporal: º Semestre Materia: Sistemas Digitales

Más detalles

6. SISTEMAS CAD-CAM (CAM) 6.1. CONCEPTO DE CAM

6. SISTEMAS CAD-CAM (CAM) 6.1. CONCEPTO DE CAM 6.1. CONCEPTO DE CAM Las siglas CAM corresponden al acrónimo de Computer Aided Manufacturing, Fabricación asistida por ordenador. Por CAM se entiende la utilización de ordenadores para tareas técnicas

Más detalles

Bechtle Solutions Servicios Profesionales

Bechtle Solutions Servicios Profesionales Soluciones Tecnología Bechtle Solutions Servicios Profesionales Fin del servicio de soporte técnico de Windows Server 2003 No hacer nada puede ser un riesgo BECHTLE Su especialista en informática Ahora

Más detalles

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos 2.1. Principios básicos del Modelado de Objetos UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos Hoy en día muchos de los procesos que intervienen en un negocio o empresa y que resuelven

Más detalles

Práctica 5. Curso 2014-2015

Práctica 5. Curso 2014-2015 Prácticas de Seguridad Informática Práctica 5 Grado Ingeniería Informática Curso 2014-2015 Universidad de Zaragoza Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas

Más detalles

Guía de los cursos. Equipo docente:

Guía de los cursos. Equipo docente: Guía de los cursos Equipo docente: Dra. Bertha Patricia Legorreta Cortés Dr. Eduardo Habacúc López Acevedo Introducción Las organizaciones internacionales, las administraciones públicas y privadas así

Más detalles

activuspaper Text Mining and BI Abstract

activuspaper Text Mining and BI Abstract Text Mining and BI Abstract Los recientes avances en lingüística computacional, así como la tecnología de la información en general, permiten que la inserción de datos no estructurados en una infraestructura

Más detalles

Controle completamente la fabricación de su empresa Sistema de gestión de la producción para la empresa Sistema de gestión de la fabricación para la empresa Resolución de sus problemas más comunes de gestión

Más detalles

SUPERFICIE ESPECULAR Y LAMBERTIANA

SUPERFICIE ESPECULAR Y LAMBERTIANA SUPERFICIE ESPECULAR Y LAMBERTIANA Especular: es la superficie ideal en la que se cumple perfectamente la ley de la reflexión (ángulo incidente = ángulo reflejado). Lambertiana: es la superficie, también

Más detalles

CRM Gestión de Oportunidades Documento de Construcción Bizagi Process Modeler

CRM Gestión de Oportunidades Documento de Construcción Bizagi Process Modeler Bizagi Process Modeler Copyright 2011 - Bizagi Tabla de Contenido CRM- Gestión de Oportunidades de Venta... 4 Descripción... 4 Principales Factores en la Construcción del Proceso... 5 Modelo de Datos...

Más detalles

CAPITULO 4 JUSTIFICACION DEL ESTUDIO. En este capítulo se presenta la justificación del estudio, supuestos y limitaciones de

CAPITULO 4 JUSTIFICACION DEL ESTUDIO. En este capítulo se presenta la justificación del estudio, supuestos y limitaciones de CAPITULO 4 JUSTIFICACION DEL ESTUDIO En este capítulo se presenta la justificación del estudio, supuestos y limitaciones de estudios previos y los alcances que justifican el presente estudio. 4.1. Justificación.

Más detalles

Contenidos. INFORME ENCUESTA TELEFÓNICA. Curso 2009 10

Contenidos. INFORME ENCUESTA TELEFÓNICA. Curso 2009 10 ENCUESTA DE OPINIÓN DEL ALUMNADO SOBRE LA ACTUACIÓN DOCENTE DEL PROFESORADO UNIVERSIDAD DE SEVILLA Curso 2009-2010 ENCUESTA TELEFÓNICA Contenidos Introducción.... 4 El Cuestionario... 5 El muestreo...

Más detalles

1.1 EL ESTUDIO TÉCNICO

1.1 EL ESTUDIO TÉCNICO 1.1 EL ESTUDIO TÉCNICO 1.1.1 Definición Un estudio técnico permite proponer y analizar las diferentes opciones tecnológicas para producir los bienes o servicios que se requieren, lo que además admite verificar

Más detalles

ISO 9001:2000 DOCUMENTO INFORMATIVO DOCUMENTO ELABORADO POR CHRISTIAN NARBARTE PARA EL IVECE

ISO 9001:2000 DOCUMENTO INFORMATIVO DOCUMENTO ELABORADO POR CHRISTIAN NARBARTE PARA EL IVECE ISO 9001:2000 DOCUMENTO INFORMATIVO DOCUMENTO ELABORADO POR CHRISTIAN NARBARTE PARA EL IVECE MARZO 2007 Este documento contesta las preguntas más frecuentes que se plantean las organizaciones que quieren

Más detalles

1.- Introducción y objetivos

1.- Introducción y objetivos 1.- Introducción y objetivos El objetivo principal de este proyecto, desarrollado en el Departamento de Tecnología Electrónica de la Universidad de Valladolid (UVA) es realizar un entorno que ayude a los

Más detalles

ADMINISTRACIÓN DE LA PRODUCCIÓN

ADMINISTRACIÓN DE LA PRODUCCIÓN ADMINISTRACIÓN DE LA PRODUCCIÓN ADMINISTRACIÓN DE LA PRODUCCIÓN 1 Sesión No. 11 Nombre: Administración del proyecto Contextualización Para cerrar esta unidad, esta semana abordaremos la forma en la que

Más detalles

MICRODES@: una herramienta software para el diseño automatizado de hornos industriales de microondas

MICRODES@: una herramienta software para el diseño automatizado de hornos industriales de microondas Universidad Politécnica de Cartagena E.T.S. de Ingeniería de Telecomunicación Espacio-Tele o n 0 1 (2010) Revista de la ETSIT-UPCT MICRODES@: una herramienta software para el diseño automatizado de hornos

Más detalles

PRUEBAS DE SOFTWARE TECNICAS DE PRUEBA DE SOFTWARE

PRUEBAS DE SOFTWARE TECNICAS DE PRUEBA DE SOFTWARE PRUEBAS DE SOFTWARE La prueba del software es un elemento crítico para la garantía de la calidad del software. El objetivo de la etapa de pruebas es garantizar la calidad del producto desarrollado. Además,

Más detalles

CURSO: APACHE SPARK CAPÍTULO 2: INTRODUCCIÓN A APACHE SPARK. www.formacionhadoop.com

CURSO: APACHE SPARK CAPÍTULO 2: INTRODUCCIÓN A APACHE SPARK. www.formacionhadoop.com CURSO: APACHE SPARK CAPÍTULO 2: INTRODUCCIÓN A APACHE SPARK www.formacionhadoop.com Índice 1 Qué es Big Data? 2 Problemas con los sistemas tradicionales 3 Qué es Spark? 3.1 Procesamiento de datos distribuido

Más detalles

Enginyeria del Software III

Enginyeria del Software III Enginyeria del Software III Sessió 3. L estàndard ISO/IEC 15504 Antònia Mas Pichaco 1 Introducción El proyecto SPICE representa el mayor marco de colaboración internacional establecido con la finalidad

Más detalles

Conclusiones, aportaciones y sugerencias para futuros trabajos

Conclusiones, aportaciones y sugerencias para futuros trabajos Capítulo 7 Conclusiones, aportaciones y sugerencias para futuros trabajos En este último capítulo se va a realizar una recapitulación de las conclusiones extraídas en cada uno de los capítulos del presente

Más detalles

EL CONOCIMIENTO CIENTÍFICO DE LA LA PEDAGOGÍA COMO CIENCIA DE LA EDUCACIÓN. Teoría de la Educación Tema 11

EL CONOCIMIENTO CIENTÍFICO DE LA LA PEDAGOGÍA COMO CIENCIA DE LA EDUCACIÓN. Teoría de la Educación Tema 11 EL CONOCIMIENTO CIENTÍFICO DE LA EDUCACIÓN. LA PEDAGOGÍA COMO CIENCIA DE LA EDUCACIÓN Teoría de la Educación Tema 11 ANTECEDENTES La pedagogía es teórica y práctica: teórica en cuanto consiste en un conocimiento

Más detalles

Objetivos y Competencias

Objetivos y Competencias Objetivos y Competencias 2.1 Objetivos del ciclo formativo a) Ajustar la configuración lógica del sistema analizando las necesidades y criterios establecidos para configurar y explotar sistemas informáticos.

Más detalles

Microsoft Dynamics Sure Step Fundamentos

Microsoft Dynamics Sure Step Fundamentos Fundamentos 22-09-2015/Serie Microsoft Dynamics Sure Step Fases Diagnóstico Análisis - Diseño/ Septiembre 2015 Rosana Sánchez CCRM: @rosana-sanchez-2 Twitter: @rosansasanchez6 Correo: ingrossanbar@hotmail.com

Más detalles

INTRODUCCIÓN: Una Visión Global del Proceso de Creación de Empresas

INTRODUCCIÓN: Una Visión Global del Proceso de Creación de Empresas INTRODUCCIÓN: Una Visión Global del Proceso de Creación de Empresas 1 INTRODUCCIÓN. Una visión global del proceso de creación de empresas Cuando se analiza desde una perspectiva integral el proceso de

Más detalles

Grado en Ingeniería Informática

Grado en Ingeniería Informática Grado en Ingeniería Informática Competencias Generales y trasversales De acuerdo con la resolución del Consejo de Universidades de fecha 3 de marzo de 2009, para obtener este título de grado en ingeniería

Más detalles

Estudios de Economía y Empresa 78.616 Trabajo Final de Grado Investigación de mercado

Estudios de Economía y Empresa 78.616 Trabajo Final de Grado Investigación de mercado TFG: INVESTIGACIÓN DE MERCADOS Descripción El Trabajo Final de Grado (TFG) es una asignatura obligatoria del plan de estudios del Grado de Marketing e Investigación de Mercados (MIM) que el estudiante

Más detalles

MINING SOLUTIONS LIMITADA

MINING SOLUTIONS LIMITADA MINING SOLUTIONS LIMITADA Contenido... 1 Resumen Ejecutivo... 3... 4 Nuestros Servicios... 5 Administración de proyectos... 6 Operación y mantenimiento sobre los Sistema de Manejo de la Información Geológica

Más detalles

El gasto total elegible de la BBPP, Centro de Supercomputación es de 3.172.033,11. La ayuda FEDER, es el 80%, 2.537.626,48

El gasto total elegible de la BBPP, Centro de Supercomputación es de 3.172.033,11. La ayuda FEDER, es el 80%, 2.537.626,48 Otra buena práctica de actuación cofinanciada es la presentada por la Dirección General de Telecomunicaciones de la Junta de Castilla y León consistente en las actuaciones realizadas en la Fundación Centro

Más detalles

SUPLEMENTO EUROPASS AL TÍTULO

SUPLEMENTO EUROPASS AL TÍTULO SUPLEMENTO EUROPASS AL TÍTULO DENOMINACIÓN DEL TÍTULO Técnico Superior en Desarrollo de Aplicaciones Web --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Más detalles

INTRODUCCIÓN MEDIANTE USO DE INFORMACIÓN DIGITAL EXISTENTE

INTRODUCCIÓN MEDIANTE USO DE INFORMACIÓN DIGITAL EXISTENTE LECCIÓN 33: PROCESO DE CAPTURA DE DATOS EN EL MODELO VECTOR OBJETIVOS DE LA LECCIÓN: Estudiar los métodos de introducción de datos en formato vectorial Tener una visión global de formas de introducción

Más detalles

CAPITULO I. Introducción. En la actualidad, las empresas están tomando un papel activo en cuanto al uso de sistemas y

CAPITULO I. Introducción. En la actualidad, las empresas están tomando un papel activo en cuanto al uso de sistemas y CAPITULO I Introducción 1.1 Introducción En la actualidad, las empresas están tomando un papel activo en cuanto al uso de sistemas y redes computacionales. La tecnología ha ido evolucionando constantemente

Más detalles

Gestión de Permisos. Bizagi Suite. Copyright 2014 Bizagi

Gestión de Permisos. Bizagi Suite. Copyright 2014 Bizagi Gestión de Permisos Bizagi Suite Gestión de Permisos 1 Tabla de Contenido Gestión de Permisos... 3 Definiciones... 3 Rol... 3 Perfil... 3 Permiso... 3 Módulo... 3 Privilegio... 3 Elementos del Proceso...

Más detalles

CAPÍTUL07 SISTEMAS DE FILOSOFÍA HÍBRIDA EN BIOMEDICINA. Alejandro Pazos, Nieves Pedreira, Ana B. Porto, María D. López-Seijo

CAPÍTUL07 SISTEMAS DE FILOSOFÍA HÍBRIDA EN BIOMEDICINA. Alejandro Pazos, Nieves Pedreira, Ana B. Porto, María D. López-Seijo CAPÍTUL07 SISTEMAS DE FILOSOFÍA HÍBRIDA EN BIOMEDICINA Alejandro Pazos, Nieves Pedreira, Ana B. Porto, María D. López-Seijo Laboratorio de Redes de Neuronas Artificiales y Sistemas Adaptativos Universidade

Más detalles

Curso: Arquitectura Empresarial basado en TOGAF

Curso: Arquitectura Empresarial basado en TOGAF Metodología para desarrollo de Arquitecturas (ADM) El ADM TOGAF es el resultado de las contribuciones continuas de un gran número de practicantes de arquitectura. Este describe un método para el desarrollo

Más detalles

Inteligencia aplicada a la protección de infraestructuras

Inteligencia aplicada a la protección de infraestructuras Inteligencia aplicada a la protección de infraestructuras En la última década, la mayor conciencia sobre las amenazas potenciales hacia la seguridad sobre las personas y las infraestructuras han hecho

Más detalles