Upload
others
View
9
Download
0
Embed Size (px)
Citation preview
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
Herramientas, cores IP y documentación para
el desarrollo de aplicaciones con FPGA.
Tropea S. E., Brengi D. J., Borgna J. P. D.
Presentación del Proyecto
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
Nacimiento del proyecto FPGALibreEl proyecto FPGA Libre nace dentro del laboratorio de Instrumentación y Control del INTIElectrónica e Informática.
El Instituto Nacional de Tecnología Industrial (INTI) es una institución nacional creada en 1957 para promover el desarrollo y la transferencia de tecnología a la industria. El área de Electrónica e Informática del INTI apoya el desarrollo tecnológico del sector, a través de desarrollos precompetitivos, asistencia técnica, ensayos, calibraciones y certificaciones. Dentro del centro, la Unidad Técnica de Instrumentación y Control (UTIC) se dedicada específicamente al desarrollo de nuevas aplicaciones para la industria utilizando tecnologías con microcontroladores, procesadores, FPGAs, sistemas GNU/Linux y software libre.
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
Motivación
Obtener un ciclo completo de desarrollo utilizando sistemas GNU/Linux y software libre, para mantener el entorno de trabajo (usado en el laboratorio) robusto y económico.
Facilitar las etapas iniciales de aplicación de estas tecnologías a micro-emprendimientos, PYMES de perfil tecnológico, empresas y universidades.
La necesidad de evitar el uso de "software" de alto valor reemplazándolo por "software" libre, teniendo en cuenta que los programas comerciales son muy caros, las licencias son sólo para una estación de trabajo o poseen algún tipo de limitación en sus versiones gratuitas.
La necesidad de agilizar los desarrollos gracias al uso de "cores" IP (Intelectual Property) y otros tipos de recursos disponibles libremente a través de internet.
Poder compartir las herramientas y los cores desarrollados.
En el Primer Workshop Latinoamericano de Tecnología FPGA observamos varios grupos deseosos de compartir conocimientos sobre FPGA
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
Impulsar el desarrollo con dispositivos FPGA utilizando herramientas de software libre u open source.
Fomentar el intercambio y desarrollo de cores IP con licencias que posean el mismo espíritu que las del software libre.
Facilitar el intercambio de los elementos necesarios para el desarrollo con FPGA.
Objetivos del proyecto
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
La capacidad de aprender observando el código fuente de las aplicaciones y los cores.
La posibilidad de adaptar a gusto según las necesidades particulares de cada interesado.
La oportunidad de mejorar el código y brindar esas mejoras al resto de la comunidad.
Bajo costo. Los productos propietarios de este rubro suelen tener altos costos de licencias, lo que limita y restringe su aplicación en forma masiva en proyectos e instituciones de bajos recursos y en países en desarrollo.
Ventajas del uso del software libre
Entre las ventajas del uso de software libre podemos citar:
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
Algunos de sus principales servicios son:
● Alojamiento de páginas web.● Listas de correo y foros.● Sistema de distribución de archivos.● CVS (para organización y desarrollo grupal de código).
Sourceforge.net
Sourceforge.net brinda en forma gratuita recursos de hosting a proyectos de software libre y open source.
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
El ciclo de desarrolloE d i c i ó n
S E T E d i t
P l a n ti l l asP m a c r o s y t p l 2 f i l e
A u t o m at i z a d orG N U M a k e
C om p i l ad o rG H D L
E s t i l o ( L i n t )b a k a l i n t
B ú s q u e d ac t a g s
T e s t b e n c hG H D L
F o r m a d e O n d aG TK W a ve y d i no t r a c e
P os t - p r o c e s oG C C y P e r l
S í n t e s i sx s t / m a p / p a r
J T A GJ B i t , n a x j p , x i l i x _ j t a g
F P G AS p a r t a n I I
R e c o l e c c i ó n d e e r r o r e s
E r r o r
N o c u m p l e
O k
O tr o sh e x 2v hd l
v h dl s p pn a t e b e g e
Bi b l i o t e c a sy C o r e s
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
Busqueda, selección, prueba e integración
Se realiza una búsqueda de todos los recursos y herraminetas disponibles para obtener el ciclo de desarrollo completo.
Priorizando siempre las aplicaciones de software libre y trabajando bajo sistemas operativos GNU/Linux por este mismo motivo.
Se prueban y seleccionan las herramientas más cómodas y eficientes según nuestra modalidad de trabajo.
Además se realiza un trabajo de integración general de los distintos componentes del ciclo y se intenta cubrir las pequeñas piezas faltantes con desarrollos propios.
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
Partes
El código HDL.
Edición de código.
Simulación.
Síntesis.
Hardware y FPGA.
El ciclo completo de desarrollo con FPGA es muy complejo, pero enfocando en sus herramientas asociadas, podríamos separarlo en los siguientes items principales:
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
El código HDL
Por ser una especificación abierta y de libre uso, se elige utilizar Wishbone como mecanismo de interconectividad de cores.
Además esta especificación es la utilizada por OpenCores.org, un sitio de referencia para desarrollos de IP de uso libre, pudiendose aprovechar de esta manera la gran cantidad de cores disponibles en este sitio.
Para una primera etapa se selecciona el lenguaje VHDL por su uso difundido en instituciones universitarias y la existencia de grandes proyectos open source como el procesador León escritos en este lenguaje.
VHDLVHDL
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
EdiciónSETEdit
PlantillasPmacros y tpl2file
AutomatizadorGNU Make
CompiladorGHDL
Estilo (Lint)bakalint
Búsquedactags
TestbenchGHDL
Forma de OndaGTKWave y dinotrace
PostprocesoGCC y Perl
Recolección de errores
Error
Otroshex2vhdlvhdlsppnatebege
Bibliotecasy Cores
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
http://setedit.sourceforge.net
Edición de código
● Resaltado de sintáxis para VHDL. ● Macros específicas con construcciones típicas de VHDL (PMacros). ● Utilización de Exuberant C Tags con soporte específico para VHDL. ● Indentado coherente con los guidelines del proyecto. ● tpl2file: templates de Xilinx como archivos
No son muchos los editores libres que posean facilidades avanzadas para la edición de código No son muchos los editores libres que posean facilidades avanzadas para la edición de código VHDL. Uno de estos editores es el SETEdit, un editor pensado para programadores, con soporte VHDL. Uno de estos editores es el SETEdit, un editor pensado para programadores, con soporte para gran cantidad de lenguajes de programación. Estas son algunas de las características que lo para gran cantidad de lenguajes de programación. Estas son algunas de las características que lo hacen una buena elección para el trabajo con VHDL: hacen una buena elección para el trabajo con VHDL:
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
EdiciónSETEdit
PlantillasPmacros y tpl2file
AutomatizadorGNU Make
CompiladorGHDL
Estilo (Lint)bakalint
Búsquedactags
TestbenchGHDL
Forma de OndaGTKWave y dinotrace
PostprocesoGCC y Perl
Recolección de Recolección de erroreserrores
Error
Otroshex2vhdlvhdlsppnatebege
Bibliotecasy Cores
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
GNU/Make
seteditghdl
makeCtrl+F9Edición
Listo para simular
● Automatiza el proceso, incluyendo pasos específicos. Ejemplo: ensamblador.● Integra con SETEdit para la recolección de errores.
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
EdiciónSETEdit
PlantillasPmacros y tpl2file
AutomatizadorGNU Make
CompiladorGHDL
Estilo (Lint)bakalint
Búsquedactags
TestbenchGHDL
Forma de OndaGTKWave y dinotrace
PostprocesoGCC y Perl
Recolección de errores
Error
Otroshex2vhdlvhdlsppnatebege
Bibliotecasy Cores
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
Simulación
Debido a su amplio uso y a la capacidad de compilar sin problemas proyectos tales como el procesador LEON y el DLX se ha seleccionado el GHDL como herramienta principal de simulación para VHDL.
http://ghdl.free.fr/
GHDL utiliza la tecnología del GCC, el compilador de software libre más utilizado en todo el mundo.
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
TestbenchGHDL
Forma de OndaGTKWave y dinotrace
PostprocesoGCC y Perl
Síntesisxst/map/par
JTAGJBit, naxjp, xilix_jtag
FPGASpartan II
Recolección de errores
Error
No cumple
Ok
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
Síntesis
Lamentablemente no conocemos herramientas de síntesis con Lamentablemente no conocemos herramientas de síntesis con licencias free software u open source. Los dos fabricantes más licencias free software u open source. Los dos fabricantes más importantes de dispositivos FPGA brindan herramientas de importantes de dispositivos FPGA brindan herramientas de síntesis, cada uno para sus propios productos, de uso gratuito.síntesis, cada uno para sus propios productos, de uso gratuito.
El proyecto FPGA Libre está abierto a cualquier tecnología y El proyecto FPGA Libre está abierto a cualquier tecnología y dispositivo FPGA, siempre que pueda lograrse su utilización bajo dispositivo FPGA, siempre que pueda lograrse su utilización bajo entornos de software libre, como es el caso de GNU/Linux. entornos de software libre, como es el caso de GNU/Linux.
La herramienta de síntesis ISE WebPack de Xilinx es de uso La herramienta de síntesis ISE WebPack de Xilinx es de uso gratuito (no libre), tiene una versión para sistemas GNU/Linux y gratuito (no libre), tiene una versión para sistemas GNU/Linux y permite su utilización con línea de comandos, lo que facilita la permite su utilización con línea de comandos, lo que facilita la automatización del proceso con herramientas como GNU Make.automatización del proceso con herramientas como GNU Make.
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
XST NGDBuild MAP PaR BitGen TRCE
BitStream
VHDL
Síntesis con herramientas de Xilinx
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
TestbenchGHDL
Forma de OndaGTKWave y dinotrace
PostprocesoGCC y Perl
Síntesisxst/map/par
JTAGJBit, naxjp, xilix_jtag
FPGASpartan II
Recolección de errores
Error
No cumple
Ok
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
JTAG● Estándar IEEE 1149.1 del JTAG (Joint Test Action Group).● Originalmente pensado para testeo.● Independiente del fabricante.
naxjpjbit/GNU jtag xilinxjtag
PROM FPGA OTROS
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
Hardware y FPGA: Programador JTAG
Para nuestros proyectos usamos un cable compatible con el cable Parallel III de Xilinx, también conocido como DLC5.Este es un circuito simple y barato que se puede conectar al puerto paralelo de una PC.Todos los archivos de diseño se encuentran disponibles en formato Kicad.
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
TestbenchGHDL
Forma de OndaGTKWave y dinotrace
PostprocesoGCC y Perl
Síntesisxst/map/par
JTAGJBit, naxjp, xilix_jtag
FPGASpartan II
Recolección de errores
Error
No cumple
Ok
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
Hardware y FPGA: Placa de desarrollo
Para desarrollar una aplicación, además del chip FPGA es necesaria una electrónica de soporte: Circuito impreso, circuitos de alimentación, memoria, conectores, etc.
La forma más fácil de abordar este tema es comprando algún kit de desarrollo para FPGA (Plaqueta con FPGA). Nuestro primer kit de desarrollo comprado es una placa Memec Spartan II LC.
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
Hardware y FPGA : Desarrollo de hardwareEl intercambio y la copia de circuitos físicos (hardware) es complejo debido al costo de replicación. Aquí ya no pueden aplicarse los mismos criterios que para el software libre.
Sin embargo, sí puede mantenerse el mismo espíritu con los archivos y toda la información de diseño asociada a un circuito. A este concepto se lo llama “Hardware Libre”, Hardware Abierto” o “Free Hardware”. En este punto es muy importante comprender que las herramientas de software para realizar estos diseños también deberían ser libres.
Para cumplir este propósito con el desarrollo de circuitos electrónicos bajo esta modalidad se ha seleccionado el software KICAD:
http://www.lis.inpg.fr/realise_au_lis/kicad/
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
Hardware y FPGA: Placa propia de desarrollo● Como parte del proceso de aprendizaje se está trabajando en el diseño de una placa de similares características a la utilizada hasta el momento.● Utilizando herramientas EDA de software libre (Kicad).● Toda la documentación y los archivos de diseño serán de libre acceso, uso y modificación.
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
Herramientas que Herramientas que quedaron en el tinteroquedaron en el tintero
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
EdiciónSETEdit
PlantillasPmacros y tpl2file
AutomatizadorGNU Make
CompiladorGHDL
Estilo (Lint)bakalint
Búsquedactags
TestbenchGHDL
Forma de OndaGTKWave y dinotrace
PostprocesoGCC y Perl
Recolección de errores
Error
Otroshex2vhdlvhdlsppnatebege
Bibliotecasy Cores
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
● vhdlspp: VHDL Simple Pre-Processor que permite fácilmente incluir archivos. Similar a la sentencia #include del lenguaje C.● hex2vhdl: Conversor de archivos en formato HEX a un array VHDL. Utilizado por ejemplo para incluir el contenido de la memoria de programa de un procesador dentro de un diseño.● xtracth: Este es un script muy simple para extraer definiciones de un package VHDL y colocarlas en un .h y/o un .inc.● natebege: NAive TEst BEnch GEnerator. Generador de bancos de pruebas simples.
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
EdiciónSETEdit
PlantillasPmacros y tpl2file
AutomatizadorGNU Make
CompiladorGHDL
Estilo (Lint)bakalint
Búsquedactags
TestbenchGHDL
Forma de OndaGTKWave y dinotrace
PostprocesoGCC y Perl
Recolección de errores
Error
Otroshex2vhdlvhdlsppnatebege
Bibliotecasy Cores
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
● Guidelines: definidos por el proyecto y basados en los de la Agencia Espacial Europea y los de Open Cores definen el estilo de escritura del código VHDL del proyecto.
● bakalint: un lint muy tonto que permite verificar la mayor parte de los guidelines del proyecto. Es heurístico, se integra a la cadena a través del make y los errores los recolecta SETEdit.
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
EdiciónSETEdit
PlantillasPmacros y tpl2file
AutomatizadorGNU Make
CompiladorGHDL
Estilo (Lint)bakalint
Búsquedactags
TestbenchGHDL
Forma de OndaGTKWave y dinotrace
PostprocesoGCC y Perl
Recolección de errores
Error
Otroshex2vhdlvhdlsppnatebege
Bibliotecasy Cores
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
GTKWave (visor de formas de onda)● Interfaz de usuario simple escrita en GTK.● Soporte especial para VHDL (originalmente sólo Verilog).● Soporte para GHW.
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
Todo el ciclo Todo el ciclo simplificadosimplificado
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
EdiciónSETEdit
PlantillasPmacros y tpl2file
AutomatizadorGNU Make
CompiladorGHDL
Estilo (Lint)bakalint
Búsquedactags
TestbenchGHDL
Forma de OndaGTKWave y dinotrace
PostprocesoGCC y Perl
Recolección de errores
Error
Otroshex2vhdlvhdlsppnatebege
Bibliotecasy Cores
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
TestbenchGHDL
Forma de OndaGTKWave y dinotrace
PostprocesoGCC y Perl
Síntesisxst/map/par
JTAGJBit, naxjp, xilix_jtag
FPGASpartan II
Recolección de errores
Error
No cumple
Ok
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
ConclusionesConclusiones● Se puede realizar el ciclo completo utilizando software libre y/o gratuito.● Se puede realizar el ciclo completo trabajando sobre un sistema operativo libre (Ejemplo: Debian GNU/Linux)● Se dispone de herramientas muy útiles y fácilmente automatizables.● Es posible enseñar y desarrollar aplicaciones comerciales con las mismas herramientas y sin costos extras de licencias.● Es posible enseñar los conceptos del desarrollo con FPGAs sin necesidad de comprometerse con un fabricante. Al verificar el código con GHDL nos aseguramos de que sea estándar y sólo los comandos de síntesis son específicos. Se aplica a las EDA tools y a las FPGAs.
© 2005 INTI – Tropea, Brengi, Borgna
http://fpgalibre.sf.nethttp://fpgalibre.sf.net
ContactoContacto● Proyecto FPGALibre: http://fpgalibre.sf.net/● Integrantes:
● Borgna, Juan P. D. <[email protected]> ● Brengi, Diego J. <[email protected]>● Trapanotto, Andrés <[email protected]>● Tropea, Salvador E. <[email protected]>
● El proyecto está abierto a quien quiera participar.
¡Muchas gracias!¡Muchas gracias!© 2005 INTI – Tropea, Brengi, Borgna