Tipo: Obligatoria

Los trabajos de fin de estudios (TFG, TFM, etc.) se conciben como trabajos de curso que el estudiante realiza con el fin de demostrar de forma integrada que ha adquirido las competencias generales y específicas, los contenidos formativos y los procedimientos metodológicos propios de su titulación.

[Recursos]

[Curso 2021-22] [Curso 2019-20] [Curso 2005-06] [Curso 2004-05]
[Curso 2002-03] [Curso 2001-02] [Curso 2000-01] [Curso 1999-00] [Curso 1997-98


Curso 2021-22

Implementación paramétrica altamente segmentada del algoritmo k-means para la clusterización de imágenes hiperespectrales sobre hardware reconfigurable
Borja Morcillo
Máster en Ingeniería Informática

Este proyecto consiste en el diseño e implementación hardware del algoritmo de clusterización k-means, aplicado a imágenes hiperespectrales. El objetivo es lograr el cómputo en tiempo real, gracias a las técnicas de aceleración aplicadas. El diseño cuenta con una arquitectura en pipeline altamente segmentado, compuesto por tres módulos retroalimentados entre sí, los cuales procesan de forma iterativa los datos de entrada hasta que los resultados convergen a valores estáticos. Dicho pipeline opera con multitud de píxeles simultáneamente, además todas las bandas de cada píxel hiperespectral se tratan en paralelo. En consecuencia, este logra un rendimiento excepcional: es capaz de procesar a razón de un píxel hiperespectral completo por ciclo de reloj, de forma constante. El diseño es completamente paramétrico, tal que es posible adaptarlo de forma automática a imágenes de distintas características o alterar las propiedades de la clusterización. También cuenta con una interfaz AXI Stream para facilitar su reutilización e integración en diversos sistemas. Los resultados muestran una velocidad de procesamiento de aproximadamente 100 millones de píxeles hiperespectrales (con 224 bandas cada uno) por segundo con un discreto uso de recursos en FPGA. Se logra así un amplio margen para la ejecución del algoritmo en tiempo real, dejando holgura para los crecientes flujos de datos que trae la tecnología.

Desarrolado sobre una placa Xilinx VC709 (Xilinx Virtex-7 VX690T).

[descargar memoria], [codigo fuente en GitLab]

 


Curso 2019-20

Intérprete hardware de archivos MIDI (Piano Digital)
Fernando Candelario
Grado en Ingeniería de Computadores

Finalista del Xilinx Open Hardware 2020 con el nombre "Piano MIDI Player SoC"

Este proyecto consiste en el desarrollo de un intérprete de archivos MIDI implementado como una arquitectura puramente hardware sobre una FPGA. Para llevar a cabo dicha interpretación, el sistema es capaz de sintetizar y mezclar las notas correspondientes a cada una de las 88 teclas de un piano. El sonido se genera por una técnica basada en Wavetables que es capaz de reproducir con alta fidelidad el timbre propio de un piano, con una calidad de 48,8KHz de frecuencia de muestreo y 16 bits por muestra. El sistema también es capaz de aplicar un efecto reverb al sonido para dotarlo de mayor cuerpo. La arquitectura es altamente paralela y escalable tanto en el número máximo de pistas MIDI compatibles, como en el grado de polifonía (número de notas capaces de sonar al mismo tiempo). Además, el sistema dispone de conectividad Bluetooth para que, desde una app Android también desarrollada dentro del proyecto, el intérprete MIDI pueda recibir los archivos a reproducir y que dicha reproducción pueda simultanearse con notas y acordes tocados por el usuario desde la misma app. La aplicación móvil también permite el inicio/detención de la reproducción de un archivo MIDI y la activación/desactivación del efecto reverb.

Desarrolado sobre una placa Digilent Nexys A7 (Xilinx Artix-7 100T CSG324) conectada a los Pmods de Digilent: I2S2 (que integra un conversor D/A de audio Cirrus CS4344) y BT2 (que integra un módulo Bluetooth Microchip RN42). Para su control requiere instalarse en un teléfono movil una app Android.

[ver vídeo completo], [ver vídeo resumen], [descargar memoria], [codigo fuente VHDL en GitHub], [código fuente Java app en GitHub]

 

Hardware Looper
Borja Morcillo
Grado en Ingeniería de Computadores

Ganador del Xilinx Open Hardware 2020 con el nombre "Multi-track & Multi-effect Sound Looper"

Este proyecto consiste en el diseño e implementación íntegramente en hardware de un dispositivo digital destinado a la creación de música en directo, capaz de grabar fragmentos de sonido y reproducirlos en bucle. El sistema construido dispone de múltiples pistas para grabación, que son sincronizadas entre sí de forma automática. Además presenta varias entradas y salidas de audio de alta fidelidad (24 bits de resolución a 48 KHz), las cuales pueden ser conectadas según se desee. También es capaz de aplicar simultáneamente diversos efectos al sonido, encadenándolos en el orden que especifique el usuario; entre ellos delay, overdrive, fuzz, compresor, flanger, filtros o trémolo. Incluye salida de vídeo y puede ser controlado mediante un teclado o bien remotamente desde un tablet a través de un enlace Bluetooth. Su arquitectura es altamente paralela con vistas a proporcionar el máximo rendimiento posible, así como una buena escalabilidad.

Desarrolado sobre una placa Digilent Nexys A7 (Xilinx Artix-7 100T CSG324) conectada a los Pmods de Digilent: I2S2 (que integra un conversor A/D de audio Cirrus CS5343 y un conversor de aurio D/A Cirrus CS4344) y BLE (que integra un módulo Bluetooth Microchip RN4870), a una pantalla VGA y a un teclado USB. Para su control requiere instalarse en una tablet una app iOS.

[ver vídeo completo], [ver vídeo resumen], [descargar memoria], [codigo fuente VHDL en GitLab], [código fuente Swift app en GitLab], [modelos 3D de la carcasa en GitLab]

 

Target detection of hyperspectral imagery on FPGAs
Juan Martín Bárez
Grado en Ingeniería de Computadores

El análisis de imágenes hiperespectrales se usa en estudios medioambientales para el seguimiento y la vigilancia de peligros tales como incendios forestales, vertidos tóxicos y otros tipos de contaminación química y biológica. En muchas ocasiones, este tipo de aplicaciones requieren un procesamiento en tiempo real que tiene que ser llevado a cabo a bordo de un satélite, dónde la única tecnología capaz de ofrecer el rendimiento, flexibilidad, tamaño y consumo de potencia necesarios son las FPGAs. El proyecto consiste en la realización de un prototipo de un sistema de este tipo.

[descargar memoria], [codigo fuente Python], [código fuente VHDL]

 


Curso 2005-06

Robot Guía del Museo García Santesmases
José Manuel Maldonado, Pablo García-Escudero, Raúl García
Ingeniería en Informática

El proyecto consiste en la realización de un robot autónomo capaz de convivir con los visitantes del museo García Santesmases y actuar como guía de los usuarios que lo requieran. Debido al tamaño y complejidad del proyecto, éste ha sido dividido en dos partes. La parte
correspondiente este trabajo gira en torno al funcionamiento a bajo nivel del robot, es decir, la parte hardware y la programación en contacto directo con el hardware, que principalmente basa en el uso de un PIC encargado del control directo de las diferentes
partes físicas del robot, incluyendo: control de motores, comunicación PIC-PC, control de sensores (infrarojos, ultrasonidos, brújula y encoders) y alimentación. Además del trabajo con el hardware, también se ha desarrollado, ya sobre el PC, el software encargado de enlazar la parte física con la de más alto nivel.

[descargar memoria]

 

Sistema Software para el Robot Guía del Museo García Santesmases
Pablo Lanillos, Jorge Sánchez, Pablo Olmos
Ingeniería en Informática

Accesit de la primera edición de los premios Sopra-Profit

El proyecto consiste en el desarrollo de un sistema para la resolución del problema de la planificación de trayectorias en dos dimensiones, para la navegación de robots móviles en superficies planas. Este sistema será utilizado por el robot guía del museo García Santesmases de la facultad de Informática de la Universidad Complutense de Madrid. El robot tendrá la capacidad de reproducir sonidos con el objetivo de explicar a los visitantes las distintas piezas del museo. Asimismo se ha desarrollado una aplicación remota mediante tecnología inalámbrica, que se conectará al robot para monitorizar su posición y estado dentro del museo y para poder controlarlo manualmente. Se creará un entorno de visualización en dos dimensiones, que simule el comportamiento del robot en respuesta a la planificación elaborada por nuestro sistema. El entorno estará compuesto por obstáculos tanto fijos como aleatorios.

[descargar memoria]

 

Diseño y fabricación de una placa didáctica basada en FPGAs para el desarrollo de sistemas digitales
Francisco Calderón, Sergio Somovilla, Francisco Javier Arellano
Ingeniería en Informática

El objetivo de este proyecto es el desarrollo de una placa basada en FPGA que será utilizada por los alumnos de Segundo Curso en la asignatura Laboratorio de Tecnología de Computadores. El proceso se divide en tres fases principales: diseño del prototipo, implementación del circuito impreso y desarrollo y depuración del software de comunicación entre el PC y la placa.

[descargar memoria]

 


Curso 2004-05

Desarrollo de una plataforma de emulación de sistemas empotrados multiprocesador
Esther Andrés, Francisco Javier García, Pablo García
Ingeniería en Informática

En este proyecto se plante el estudio de las necesidades de uso de memoria dinámica de los nuevos sistemas empotrados multimedia de altas prestaciones y para ello, la construcción de una plataforma de emulación hardware que implemente una jerarquía de memoria específica, que permita la extracción de diferentes estadísticas de acceso a los distintos niveles de la jerarquía de memoria propuesta, y la posterior obtención de conclusiones y resultados a partir de los datos obtenidos.

Desarrollado sobre una placa Avnet Virtex-II Pro XC2VP30-xFF896  utilizando el software Xilinx EDK y Xilinx ISE.

[descargar memoria], [codigo fuente VHDL]

 


Curso 2002-03

Televisión Digital
Carolina Valdazo, José Luis Moisés, Rodrigo Borrego y Sara Hernández
Ingeniería en Informática

El objetivo del proyecto es el diseño e implementación (sobre una tarjeta de FPGAs de altas prestaciones) de un circuito específico para el procesado digital en tiempo real de una señal de TV (video compuesto) y su visualización sobre un monitor VGA estándar. Entre otros, se implementarán los siguientes efectos digitales:

La implementación se realizará en una placa de prototipado XSV-800 que dispone, entre otros componentes, de una FPGA XCV800 con capacidad de implementar diseños de hasta 800000 puertas equivalentes, 4 módulos de SRAM de 512Kx8, un procesador de vídeo analógico, y un RAMDAC de 256 entradas y 24 bits de color. El diseño será asistido por las siguientes herramientas: Xilinx Foundation, Model Technology y Synopsys

[descargar memoria], [código fuente VHDL]

 

Procesado de imágenes digitales sobre un sistema hardware dinámicamente reconfigurable
Sergio Bernabé, Gerardo Robledillo, Isaac Álvarez, y Pilar Rodriguez
Ingeniería en Informática

El objetivo fundamental de este proyecto es implementar sobre una tarjeta de FPGAs dinámicamente reconfigurable una tarjeta de visualización y procesamiento de imágenes. Se implementarán distintos circuitos hardware que realicen diferentes procesos sobre una imagen, de forma que en la tarjeta de la FPGA siempre se mantenga el algoritmo de visualización y puedan cambiarse, a gusto del usuario, los algoritmos de procesamiento. Se utilizará la posibilidad que proporciona el hardware reconfigurable de modificar parte del circuito mientras el resto sigue ejecutando un algoritmo. 

La implementación se realizará en una placa de prototipado APX-240 que dispone de una FPGA virtex 300, utilizando software de Xilinx Foundation, Model Technology y Synopsys.

[descargar memoria]

 


Curso 2001-02

Diseño e implementación de un computador autoreconfigurable
Cristina Hernández, Eduardo Duque, Laura Prada y Rubén del Cura
Ingeniería en Informática

El objetivo de este proyecto es dotar a un microprocesador RISC convencional de capacidades de autoreconfiguración parcial dinámica, entendiendo por ésta, a la posibilidad de que el microprocesador (sin dejar de ejecutar instrucciones) pueda cambiar por sí mismo una porción de su diseño hardware. En particular, se pretende incorporar a su repertorio una colección de instrucciones que permitan reconfigurar dinámicamente el diseño HW de su memoria cache: tamaño de bloque, política de emplazamiento, política de reemplazamiento, etc. De manera que se disponga de un sistema que por programa pueda adaptar la configuración de su cache a una carga de trabajo dada. 

Como resultado de un proyecto desarrollado en el curso 2000-01, se dispone una implementación completa sobre FPGAs (dispositivo hardware reconfigurable) de un computador formado por un microprocesador RISC, un subsistema jerárquico de memoria de 2 niveles, un subsistema de E/S y un sistema operativo. Por ello las tareas a realizar ahora son:

1. Diseño de un protocolo de configuración de FPGAs.
2. Diseño de un protocolo de configuración dinámica de FPGAs.
3. Diseño de un protocolo de autoreconfiguración dinámica de FPGAs.
4. Rediseño del microprocesador para incorporarle capacidades de autoreconfiguracion.
5. Comparación de los rendimientos de un computador con cache de diseño fijo y de un computador con cache con diseño autoreconfigurable.

La implementación se realizará en una placa de prototipado XSV-800 basada en FPGAs de la familia VIRTEX (dispositivo hardware reconfigurable con capacidad de reconfiguración parcial dinámica), utilizando software de Xilinx, Model Technology  y Synopsys.

[descargar memoria]

 

Coprocesado de imágenes a través del bus ISA
Alejandro Conde, José D. Hernández y Fco. Javier Lara
Ingeniería en Informática

El objetivo de este proyecto es diseñar e implementar sobre FPGAs (dispositivo hardware reconfigurable) todo el núcleo digital de una tarjeta ISA para el procesamiento de imágenes. Las tareas que se incluyen en este proyecto son:

1. Diseño HW e implementación de un interfaz con el bus ISA.
2. Desarrollo de rutinas SW para comunicación entre el host y la tarjeta.
3. Diseño e implementación de algoritmos de procesado de imágenes, e integración de los mismos con el interfaz de bus.
4. Desarrollo de un programa de manipulación de imágenes que utilice las posibilidades de coprocesado que ofrece la tarjeta diseñada.

La implementación se realizará en una placa de prototipado APX-240 basada en FPGAs, utilizando software de Xilinx, Model Technology y Synopsys.

[descargar memoria]

 

Desarrollo de soft IP-cores para el control de dispositivos de E/S
Angel González y Francisco Javier Pérez
Ingeniería
Electrónica

Un soft IP-core (soft intellectual property core) es un modelo sintetizable de una cierta componente HW, del que se puede obtener una implementación física en funcionamiento si se suministra como entrada a una herramienta de diseño HW automático. El objetivo final que se persigue cuando se diseñan sistemas HW usando IP-cores es abaratar costes. En primer lugar reduciendo el ciclo del diseño, ya se que libera al diseñador del desarrollo y prueba de algunas partes del circuito; y en segundo lugar permitiendo el reuso de una misma porción del diseño en diferentes proyectos. El objetivo del proyecto es desarrollar un conjunto de soft IP-cores para el control de dispositivos de E/S (LCDs, matrices de puntos, teclados, transceibers, etc.) que permitan desarrollar con un mínimo esfuerzo de diseño, sistemas hardware que interactúen con el entorno. 

El proyecto se descompone en una serie de subproyectos parciales y estancos en donde se desarrolla un interfaz (soft-IP core) específico, capaz de controlar un dispositivo de E/S particular. Cada subproyecto se desarrolla siguiendo las mismas 5 fases:

Se han desarrollado los siguientes interfaces sobre dos placas de prototipado basadas en FPGAs XESS XS40+XST1 (Xilinx XC4010XL), utilizando el software Xilinx Foundation:

[descargar memoria], [código fuente VHDL]

 


Curso 2000-01

Diseño e implementación de un computador autoreconfigurable
Javier Basilio, Iván Magán y Miguel Peón
Ingeniería en Informática

El objetivo es diseñar e implementar un computador formado por un microprocesador RISC y un subsistema jerárquico de memoria de 2 niveles: cache + memoria principal, que incorpore en su repertorio una colección de instrucciones que permitan reconfigurar dinámicamente el diseño HW de la memoria cache: tamaño de bloque, política de emplazamiento, política de reemplazamiento, etc... Con esto se pretende diseñar un sistema que por programa pueda adaptar la configuración de su cache a una carga de trabajo dada. Las tareas a realizar son:

1. Diseño de un protocolo de configuración de FPGAs
2. Diseño de un protocolo de configuración dinámica de FPGAs
3. Diseño de un protocolo de autoreconfiguración dinámica de FPGAs
4. Diseño del computador autoreconfigurable
5. Comparación de los rendimientos de un computador con cache de diseño fijo y de un computador con cache con diseño autoreconfigurable

Desarrollado sobre una placa de prototipado basada en FPGA XESS XSV-800 (Xilinx XSV800) de la familia VIRTEX (dispositivo hardware reconfigurable con capacidad de reconfiguración parcial dinámica) utilizando el software de Xilinx Foundation y Synopsys.

[descargar memoria], [descargar presentacion], [código fuente VHDL], [recursos]

 

Diseño e implementación de una arquitectura basada en microprocesador
Julio E. Fernández, Antonio Ortiz y Miguel A. Rojas
Ingeniería en Informática

El objetivo del proyecto es diseñar la arquitectura completa de un computador partiendo de un microprocesador desnudo, modulos de SRAM y una colección de periféricos. Se trata de diseñar un protocolo de bus, y un conjunto de interfaces compatibles con dicho protocolo que permitan al microprocesador comunicarse y controlar los subsistemas de memoria y E/S. Entre estos interfaces podemos distinguir:

1. Diseño de un gestor de interrupciones.
2. Diseño de un interfaz de memoria.
3. Diseño de un controlador alfanumérico para VGA.
4. Diseño de un interfaz serie para el control de teclado/ratón.
5. Diseño de un interfaz serie para control de audio.

Una vez diseñada y implementada sobre FPGAs dicha arquitectura se utilizará para ejecutar una aplicación software. En particular un juego de batalla espacial en donde una nave terrícola lucha contra escuadrones alienígenas, con sus respectivos sonidos, movimientos, puntuaciones, disparos, explosiones, etc.

Desarrollado sobre dos placas de prototipado basadas en FPGAs XESS XS40+XST1 (Xilinx XC4010XL), utilizando el software de Xilinx Foundation y Synopsys.

[descargar memoria], [descargar presentacion], [resultados]

 


Curso 1999-00

Hardware Galaxy Invader
Jesús López, Ignacio Rodriguez y José M. Soriano
Ingeniería en Informática

El objetivo es diseñar completamente sobre hardware un juego de batalla espacial. El juego replicará la batalla de una nave terrícola contra escuadrones alienígenas, con sus respectivos sonidos, movimientos, puntuaciones, disparos, explosiones, etc.

El hardware a diseñar deberá implementar la dinámica del juego, así como controlar directamente una serie de dispositivos de entrada/salida, incluyendo monitor VGA (para visualizar el escenario de la batalla), teclado (para dirigir la nave terrícola), conversores digitales/analógicos (para generar sonidos), etc.

Desarrollado sobre dos placas de prototipado basadas en FPGAs XESS XS40+XST1 (Xilinx XC4010XL), utilizando el software de Xilinx Foundation y Synopsys. El proyecto cubre tanto la conceptualización del juego, como la especificación, el diseño, la simulación y el volcado final sobre el dispositivo programable.

[descargar memoria]

 


Curso 1997-98

Adaptación a lenguaje C de núcleos de verificación formal de hardware codificados en PROLOG
Francisco Calle, Juán González y David Vilares
Ingeniería en Informática

[descargar memoria]


Página creada y modificada por J. M. Mendías / Ultima actualización Enero-22