Projects

Thesis Title

Desarrollo de un ambiente de diseño para sistemas embebidos usando FPGA y hardware reconfigurable generico
Julio Dondo Gazzano

Thesis Intro

El presente proyecto de tesis doctoral está orientado a la gestión de diseño de sistemas embebidos, mediante el modelado y simulación de componentes, basados en UML, donde partiendo del análisis de casos de uso y de diagramas de interacción entre subsistemas, es posible identificar requisitos y responsabilidades entre los objetos implicados. [6]. Estos subsistemas luego serán traducidos en componentes genéricos descriptos en VHDL como entrada para el diseño de sistemas usando Field Programmable Gate Arrays.
      Las líneas de investigación de la tesis se resumen en los siguientes objetivos: 1. Desarrollo de un lenguaje para el modelado en alto nivel de un sistema integrado de hardware software, utilizando componentes de hardware reconfigurable. El lenguaje propuesto estará basado en análisis de caso de uso, los diagramas de actividad e interacción UML. 2- · Integración de los componentes que se utilicen en el diseño, en un sistema final (hardware), cuya salida serán archivos descriptos en vhdl que serán usados como archivos de entrada para las herramientas de diseño proporcionadas por el fabricante de FPGA. 3. Desarrollo de una Herramienta de Soporte al modelado.

Thesis Info

El diseño de sistemas embebidos y systems-on-chip es una tarea compleja que requiere mucho trabajo y un tiempo de prueba y de desarrollo de prototipo que muchas veces está limitado por la necesidad de puesta en escena del producto en el mercado.
      Este desarrollo a menudo se lleva a cabo enteramente dentro de ambientes CAD, y el primer prototipo, no solamente debe funcionar correctamente, sino que debe entregar el rendimiento esperado y debe ser fabricable[2], teniendo en cuenta que el único aspecto donde es posible corregir errores en el flujo de diseño es en el de software. Corregir el chip para solucionar errores es un proceso largo y muy costoso sobre todo teniendo en cuenta el tiempo de diseño empleado en el desarrollo del prototipo.
      Una forma de solucionar este problema es basar una porción significativa del diseño en componentes pre-existentes. La reusabilidad en el diseño permite reducir el trabajo total de diseñar nuevos componentes, a una fracción pequeña del numero total de compuertas del chip.[2]
      Esta reusabilidad estará dada por la facilidad de contar con componentes ya creados, diseñados en forma genérica, lo que permite su adaptabilidad a los distintos diseños, que estarán desarrollados sobre una plataforma de hardware reconfigurable.
      Una alternativa de unidades reconfigurables se presenta con el uso de Field Programmable Gate Array (FPGA) que son Dispositivos Lógicos Programables formados por arreglos de celdas lógicas que se comunican unas con otras y con vías de Entrada/Salida (I/O) a través de canales de ruteo. Así como un arreglo de compuertas (Gate Array) consiste en un arreglo de transistores, las FPGA consisten en arreglos de Celdas Lógicas.
      Mediante la interconexión de celdas o de parte de ellas es posible la realización de circuitos de variable complejidad y tamaño, dependiendo esto último del tamaño de la FPGA. Es posible armar o realizar distintos circuitos que pueden tener relación entre sí o no, dentro de una misma FPGA. La interacción con el mundo exterior la realizan a través de sus módulos entrada salida. El hecho de que las funciones lógicas implementadas dentro de una celda lógica pueda ser modificadas o reprogramadas, y el conexionado (ruteo) de las celdas lógicas sea realizado a través de elementos programables nos permite una facilidad de diseño muy interesante.
      Gracias a su facilidad de reprogramación, las FPGA son utilizadas por los diseñadores y fabricantes de circuitos integrados para la realización de prototipos, por su bajo costo, y su reducido tiempo de implementación y prueba, lo que permite disminuir considerablemente los tiempos de diseño antes de colocar un ASIC en el mercado.
      Actualmente existen FPGA rápidas y con densidades que van desde los 50k hasta mas de 4M de compuertas de sistema, con una performance de mas de 200 Mhz, con circuitos específicos para gerenciamiento de reloj, sistema jerárquico de memoria que incluyen actualmente hasta 5,5Mb de memoria RAM Dual Port interna configurable, y core de procesadores RISC ya desarrollados e implementados en su interior para uso específico como la famila de FPGA de Xilinx Virtex II PRO X [5] , arquitectura flexible que balancea densidad y velocidad, y circuitos optimizados para la transmisión de señales globales como por ejemplo la señal de reloj (CLK).[4]
      Existen actualmente FPGA que poseen core de Procesadores RISC y transceivers de datos multigigabits para soluciones en problemas de telecomunicaciones, redes, comunicación sin cable (wireless), videos y aplicaciones con DSP (Digital Signal Processing)[5]
      La computación reconfigurable explota el hecho de que la mayor parte del tiempo de procesamiento para tareas de computación intensivas es gastado en una porción relativamente pequeña del código, y un incremento en la velocidad del hardware puede mejorar el rendimiento por encima de un microprocesador de uso general para muchas aplicaciones.[1]
      En lugar de integrar procesadores y memoria dentro de un solo chip, un procesador puede ser también combinado con unidades reconfigurables para realizar tareas que dependen de la aplicación, que cambian ocasionalmente debido a las demandas de alto rendimiento.
      Con las mejores herramientas de software disponibles en el mercado, los diseñadores no pueden producir sistemas completamente testeados, o probados de acuerdo a su complejidad, dentro de las restricciones del time to market
      El uso de herramientas de hardware para prototipado de sistemas permite reducir el tiempo de testeo completo para poder cumplir con las restricciones de tiempo propias de la colocación de un producto en el mercado.
      . Crear un ambiente de diseño de sistemas embebidos, basado en UML y integrado con FPGAs y lenguaje de descripción de Hardware (VHDL) presenta diversas características interesantes. Primero acerca al diseño de hardware y de software, integrándolo de una manera natural, puesto que se parte de componentes y objetos prediseñados, que pueden ser conectados entre si para desarrollar distintas aplicaciones. Este ambiente de diseño, permitirá desarrollar sistemas integrados hardware –software donde cada componente genérico podrá ser utilizado variando su implementación de acuerdo a la aplicación de que se trate.
      Partiendo de componentes ya definidos, estos sistemas embebidos que se diseñen, estarán compuestos por procesadores de aplicación específica basado en un core de risc, genérico, que puede variar su implementación de acuerdo a la aplicación que se trate.
      Comenzando a partir de un core de risc genérico, el diseñador elegirá, de acuerdo a la aplicación, los componentes del risc (Arquitectura del Set de Instrucciones, ancho de bus, de acuerdo al tipo de datos, Alu punto flotante, etc) previamente creado y almacenados en una librería, y construir su propio procesador para la aplicación en cuestión, implementándolo en una Field Programmable Gate Array (FPGA).
      El mérito de esta concepción de diseño es usar únicamente las partes del procesador que son necesarias para el diseño, liberando área de la FPGA para otras unidades funcionales y ahorrar consumo de potencia, entre otras ventajas.
      Otras unidades funcionales que componen un sistema embebido (puertos paralelos, timers, puertos series, etc), también genéricas, ya creadas y guardadas en una librería, podrán ser seleccionadas y ensambladas en conjunto con el procesador.
      La salida, o el resultado que entrega este ambiente de diseño propuesto, será código HDL para ser usado como entradas de las herramientas de diseño de FPGA que se utilice para su implementación, manteniendo de esta manera la independencia del diseño, de la tecnología a usar.

Thesis References

[1] “Processor Architecture, from Dataflow, to Superscalar and beyond” Silc-Robic-Ungerer-Springer-Verlag, Berlin 1999
[2] “ARM, System-on-chip architecture” Steve Furber- Addison-Wesley 2000
[3] VHDL for Programmable Logic. Kevin Skahill. 1996- Addison-Wesley Publishing. Pp 74,75
[4] Virtex Datashhet- Xilinx 2001-2002-2003
[5] Virtex-II Pro™ X Platform FPGAs: Introduction and Overview. Xilinx DataSheet110-1(v1.1) March 5, 2004
[6] “El proceso unficado en el desarrollo de software”-Jacobson, Booch, Rumbaugh- Addison-Wesley Publishing- 1999