Tarjeta de aplicaciones generales con FPGA
Borgna, J. P. D.(i); Brengi, D. J.(i); Tropea, S. E.(i) (i)INTI-Electrónica e Informática
Introducción En este artículo se presenta el diseño e implementación de un circuito impreso con FPGA, pensado para ser utilizado como ayuda y referencia para laboratorios de desarrollo e instituciones educativas que deseen trabajar con esta tecnología.
El intercambio y la copia de circuitos físicos (hardware) es complejo debido al costo de replicación y por eso no pueden aplicarse los mismos criterios que para el software libre[1]. Sin embargo 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"[2][3][4]. Es importante comprender además que las herramientas de software para realizar estos diseños también deberían ser libres para no condicionar el uso, adaptación y mejora del hardware en cuestión.
Basados en esta filosofía y en el marco del proyecto FPGALibre[5][6][7], se propuso el diseño e implementación de un circuito impreso con FPGA, pensado para ser utilizado en ámbitos de desarrollo e instituciones educativas.
Los objetivos planteados para este desarrollo fueron:
—Obtener un diseño de referencia para la implementación de una placa con FPGA que sea de utilidad para cualquier interesado en abordar esta tecnología pensando en la utilización de componentes de fácil acceso y sin demandar demasiados recursos económicos.
—Adoptar la modalidad y los conceptos de "Hardware Libre" antes, durante y luego del desarrollo.
Cabe mencionar que existen varios circuitos publicados con FPGAs[8][9][10][11] utilizados para los mismos fines, sin embargo ninguno de los observados cumplía con los objetivos y pautas de diseño propuestos.
Metodología Este trabajo fue desarrollado en el marco del proyecto FPGALibre cuyo objetivo principal es el de facilitar el intercambio de los elementos necesarios para el desarrollo con dispositivos FPGA. Por este motivo, para el diseño y la verificación del circuito impreso se utilizaron solamente herramientas de software libre.
Para lograr los objetivos planteados se impusieron las siguientes pautas de diseño:
—Utilizar herramientas de software libre para permitir la modificación del circuito sin forzar la adquisición de costosos programas de diseño de circuitos impresos.
—Seleccionar componentes que puedan soldarse en forma manual.
—Seleccionar, dentro de lo posible, componentes muy utilizados que puedan obtenerse fácilmente en los comercios.
—Circuito simple, sencillo y de funcionalidades básicas.
—Circuito impreso que pueda fabricarse regionalmente.
—Dispositivo FPGA con capacidad suficiente para permitir realizar prácticas y desarrollos de baja y mediana complejidad.
—Bajo costo. Si bien es imposible competir con productos fabricados en grandes cantidades, existen otros factores a tener en cuenta a la hora de abordar la fabricación de hardware como por ejemplo la capacidad para adaptar y modificar los circuitos, los altos costos monetarios y administrativos de importación para pocas unidades, el grado de independencia tecnológica, la experiencia adquirida, etc.
Como punto de partida se buscó realizar un diseño de similares características y prestaciones que la placa "Memec 2SLC board Spartan II demo board (DS-DB -2SLC)" que posee una FPGA Spartan II[12] XC2S100 con encapsulado PQ208. Habiendo
INSTITUTO NACIONAL DE TECNOLOGÍA INDUSTRIAL
1
tomado experiencia con este dispositivo y debido a la facilidad de manejo del encapsulado mencionado con respecto a las alternativas BGA (Ball Grid Array), se optó por utilizarlo en el diseño, dejando para un proyecto posterior la utilización de dispositivos más modernos como Spartan 3[13]. De esta forma se logró un primer diseño bautizado S2PROTO.
Luego de la fabricación de los impresos, se ensamblaron tres de ellos, utilizados exitosamente en trabajos propios del laboratorio, con los que se estudiaron los defectos de diseño y la posibilidad de realizar mejoras en el mismo. A partir de la experiencia obtenida se encaró el desarrollo de un segundo diseño buscando las siguientes mejoras:
—Se agregaron leyendas en la serigrafía para facilitar el ensamble, y una mejor indicación de las señales y los conectores.
—Se utilizaron reguladores tipo LM1117 de bajo costo y fácil adquisición en las tiendas locales.
—Se bajó el costo del impreso mediante una reducción del 20% en el área del mismo al quitar el sector de prototipado rápido.
—Se aumentó la capacidad de E/S modificando algunos de los conectores y se agregó un conector DB-9 para la comunicación serie.
Para el diseño de los esquemáticos y del circuito impreso se seleccionó el software Kicad[14][15], por considerarlo la herramienta más evolucionada de su tipo dentro de la categoría del software libre. Para este trabajo se utilizó el sistema operativo Debian GNU/Linux[16]. La Fig. 1 muestra el modo de visualización tridimensional y la Fig. 2 muestra tanto el esquemático como el PCB.
El circuito impreso se realizó en doble faz teniendo un tamaño aproximado de 12x10 cm. Las pistas más delgadas fueron de 10 mils y para la verificación de espaciado mínimo se utilizó una distancia de 8 mils. La fabricación del circuito impreso se encargó a una empresa local a la cual se le enviaron los archivos Gerber generados con Kicad.
Fig. 1: Visualización tridimensional de la placa utilizando Kicad.
Fig. 2: Esquemático y circuito impreso de la placa utilizando Kicad.
La placa posee muy pocos componentes. Un resumen de los mismos: —FPGA: Xilinx XC2S150-PQ208 o XC2S100-PQ208 —Driver RS-232: MA3221 —Memoria: Xilinx XC18V01-SOC20 —Reguladores: LM1117-2.5 y LM1117-3.3 —Resistores, LEDs, capacitores y un transistor. —Conectores, llave y pulsador. Los componentes utilizados se consiguieron, en su mayoría, en las tiendas de electrónica e
INSTITUTO NACIONAL DE TECNOLOGÍA INDUSTRIAL
2
importadores del rubro. Las pocas excepciones, que debieron traerse por pedido, fueron el dispositivo FPGA, su memoria de configuración, el chip adaptador para niveles RS-232 y algunos de los capacitores SMD (Surface Mount Device = Dispositivos de Montaje Superficial). La soldadura de los componentes se realizó manualmente en el laboratorio. Para esta tarea se utilizó una estación de soldadura para trabajos de reparación y montaje de componentes SMD. Sin embargo, esta estación sólo es necesaria para los componentes SMD de paso pequeño, tales como el dispositivo FPGA, el driver RS-232 y la memoria. Para soldar los primeros dos se utilizó la técnica de mini-ola (mini-wave). Posteriormente fue necesario corregir algunas soldaduras de la FPGA con una punta fina de 0,4 mm. La Fig. 3 muestra el circuito impreso con todos los componentes soldados.
Fig. 3: Circuito impreso terminado.
Terminado el ensamble se procedió con la etapa de verificación del circuito. Luego de comprobar las tensiones de alimentación se empleó la cadena JTAG (Joint Test Action Group) para realizar pruebas de los terminales de entrada y salida, los LEDs, la transmisión y la recepción serie. Para esta tarea se empleó el programa GNU JTAG[17]. Por último, y como prueba final, se realizó la grabación de un bitstream. La Fig. 4 muestra la placa desarrollada conectada al circuito JTAG.
Fig. 4: La placa conectada al circuito JTAG.
Para cumplir con los objetivo planteados, se generó extensa documentación del circuito desarrollado:
—Documento introductorio.
—Archivos de diseño del esquemático y del circuito impreso en formato Kicad.
—Archivos Gerber enviados para fabricación del impreso.
—Listado de proveedores de componentes utilizados.
—Listado de precios y estimación de costo unitario.
—Pasos para la verificación y prueba del circuito.
—Bitstream para verificación.
—Ejemplo VHDL para verificación.
—Licencia de uso y modificación.
En la Fig. 5 se presenta un diagrama en bloques descriptivo que forma parte de la documentación.
Resultados Algunas de las principales características del circuito obtenido son:
—Diseño brindado bajo licencia GPL para permitir su libre utilización, implementación, modificación y comercialización.
—Diseño ensamblado y probado.
—Desarrollado y probado con herramientas de software libre: Kicad y GNU JTAG.
—Impreso doble faz de 12x10 cm de fácil fabricación y posibilidad de montaje manual de los componentes.
—Soporte para dispositivos Xilinx Spartan II PQ208, hasta XC2S150 equivalente a 150.000 compuertas.
—Puerto de niveles RS-232 para implementar transmisión y recepción serie.
INSTITUTO NACIONAL DE TECNOLOGÍA INDUSTRIAL
3
—Puerto JTAG compatible con el cable Parallel III de Xilinx, también conocido como DLC5[18]. Circuito realizado en Kicad, y también disponible en el proyecto FPGALibre[19]. —152 pines de I/O disponibles para el usuario distribuidos en cinco conectores. Estos permiten conectar plaquetas adicionales con pulsadores, LEDs, displays, etc. —Alimentación simple de 5 V.
Fig. 5: Diagrama en bloques descriptivo.
Se obtuvo un diseño básico y de referencia para el desarrollo de aplicaciones con FPGA, realizado totalmente con herramientas de software libre, de diseño claramente documentado y construcción accesible para cualquier pequeño laboratorio de electrónica. Este diseño fue verificado y se emplea en los trabajos y prácticas realizadas en nuestro laboratorio. Toda la información del diseño se brinda libremente lo que permite copiar, adaptar, mejorar y comercializar este hardware según los requerimientos particulares de cada interesado. Es nuestro deseo que este desarrollo junto con otras herramientas de software libre contribuyan a la difusión de esta tecnología dentro de laboratorios electrónicos de pequeñas y medianas empresas como así también en el ámbito universitario. Se contempla además la posibilidad de formar un grupo de interesados en este hardware y realizar una pequeña producción en serie para reducir y compartir los costos de fabricación de cada unidad. Toda la información de diseño mencionada puede descargarse del sitio web del proyecto FPGALibre[20]. Conclusiones
Es posible desarrollar circuitos impresos que utilicen FPGAs con encapsulado PQ208 utilizando recursos disponibles en pequeños y medianos laboratorios de nuestro país. Esto significa que el uso de la tecnología FPGA se encuentra al alcance de las PyMEs y universidades nacionales.
Las herramientas de software libre para diseño electrónico son suficientemente buenas para encarar este tipo de proyectos. Esto implica que no es necesario incurrir en altos costos de licencias de software para estas tareas de desarrollo.
Se lograron los objetivos iniciales ya que el diseño se encuentra disponible bajo la modalidad de Hardware Libre y al alcance de cualquier interesado.
Referencias
[1] Free Software Foundation, Inc. "The Free Software Definition", http://www.gnu.org/philosophy/free-sw.html [2] Opencollector.org, "Writings on Open Source Hardware". http://www.opencollector.org/Whyfree/ [3] I. González, J. González, F. Gómez-Arribas, "Hardware libre: clasificación y desarrollo de hardware reconfigurable en entornos GNU/Linux", http://www.iearobotics.com/personal/juan/publicaciones/art4/ hardware-libre.pdf , 2003. [4] D. J. Brengi, "Navegando en busca del `Free Hardware'", http://utic.inti.gov.ar/proyectos/free\_hardware/index.html, 2004. [5] S. E. Tropea, D. J. Brengi, J. P. D. Borgna, "FPGALibre: Herramientas de Software Libre para diseño con FPGAs", FPGA Based Systems, ISBN 84-609-8998-4, pp 173-180, 2006. [6] S. E. Tropea, D. J. Brengi, J. P. D. Borgna, S. N. Gwirc, "FPGALibre: Herramientas de Software Libre para diseño con FPGAs", 6° Jornadas de Desarrollo e Innovación Tecnológica, Instituto Nacional de Tecnología Industrial, Argentina, 2007. [7] Proyecto FPGA Libre, http://fpgalibre.sourceforge.net/ [8] OPENCORES.ORG, http://www.opencores.org/ [9] S. D. Olmedo, E. N. Pereyra, G. A. Manfredi, "Kit de desarrollo educativo con CPLD", FPGA Based Systems, ISBN 84-609-8998-4, pp. 207-214, 2006. [10] J. P. Oliver, S. Fernandez, "Desarrollo de Plataformas Reconfigurables con Interfaz PCI como Proyecto de Grado", FPGA Based Systems, ISBN 84-609-8998-4, pp. 215-222, 2006. [11] F. I. Szklanny, E. A. De María, C. E. Maidana, E. Gho, "Una plataforma didáctica para el aprendizaje de técnicas de diseño con circuitos lógicos programables", FPGA Based Systems, ISBN 84-609-8998-4, pp. 223-228, 2006. [12] Xilinx Spartan II FPGA, http://www.xilinx.com/products/silicon\_solutions/fpgas/sparta n\_series/spartan2\_fpgas/index.htm [13] Xilinx Spartan 3 FPGA, http://www.xilinx.com/products/silicon\_solutions/fpgas/sparta n\_series/spartan3\_fpgas/ [14] J-P. Charras, "Kicad: GPL PCB Suite", http://www.lis.inpg.fr/realise\_au\_lis/kicad/ [15] D. J. Brengi, S. E. Tropea, "Experiencia de migración hacia herramienta de diseño de circuitos impresos de software libre", 6° Jornadas de Desarrollo e Innovación Tecnológica, Instituto Nacional de Tecnología Industrial, Argentina, 2007. [16] Debian project. http://www.debian.org/ [17] M. Telka, "JTAG Tools", http://openwince.sourceforge.net/jtag/
INSTITUTO NACIONAL DE TECNOLOGÍA INDUSTRIAL
4
[18] Xilinx, Inc. "JTAG Programmer Guide", http://toolbox.xilinx.com/docsan/3\_1i/pdf/docs/jtg/jtg.pdf [19] Proyecto FPGA Libre, "Cable JTAG", http://fpgalibre.sourceforge.net/hard.html [20] Proyecto FPGA Libre, "Tarjeta S2PROTO", http://fpgalibre.sourceforge.net/hard.html
Para mayor información contactarse con:
Ing. Salvador E. Tropea - salvador@inti.gov.ar
INSTITUTO NACIONAL DE TECNOLOGÍA INDUSTRIAL
5
Ver+/-