Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Hardware Libre
Hardware Libre
6 de Septiembre de 2003
Resumen
En este artculo se aborda el hardware libre, proponindose definiciones en funcin de su naturaleza.
Se estudian los dos tipos, el esttico, que tiene existencia fsica, y el reconfigurable, descrito mediante
lenguajes HDL, centrndose en los criterios para considerarlos libres. En la primera parte se revisan
y amplan las ideas del proyecto hardware abierto de Microbtica, dando una definicin de hardware
esttico libre y proponiendo una clasificacin segn los programas de diseo empleados. En la segunda
se aborda el hardware reconfigurable, centrndose en las herramientas de desarrollo para GNU/Linux.
Finalmente se muestran ejemplos de sistemas diseados enteramente bajo GNU/Linux, tanto de hardware
esttico como reconfigurable.
Introduccin
El software libre[1] ofrece al usuario cuatro libertades: libertad de uso, de estudio y modificacin,
de distribucin, y de redistribucin de las mejoras. Existen licencias que las garantizan y que dan una
cobertura legal, como por ejemplo la GPL[2].
El hardware abierto o libre1 toma estas mismas ideas para aplicarlas en su campo. Es una propuesta
casi tan antigua como la del software libre[3], sin embargo su empleo no es tan directo. Compartir diseos
hardware es ms complicado. No hay una definicin exacta (se pueden encontrar referencias a distintos
artculos en [4]). Incluso el propio Richard Stallman afirma[5] que las ideas del software libre se pueden
aplicar a los ficheros necesarios para su diseo y especificacin (esquemas, PCB, etc), pero no al circuito
fsico en s.
Al no existir una definicin clara de hardware abierto, cada autor lo interpreta a su manera. Se han
creado licencias[6], algunas de las cuales estn todava en desarrollo.
Para abordar el estudio comenzaremos estableciendo una primera clasificacin, segn su naturaleza.
Existen los siguientes tipos:
Hardware esttico. Conjunto de elementos materiales de los sistemas electrnicos. Tiene una existencia fsica (se puede tocar). Esta propiedad no la tiene el software, por lo que surgen una serie
de problemas que se discuten en el apartado 1.1. En la primera parte de este artculo revisaremos
y ampliaremos las ideas del proyecto hardware abierto[7], comenzado en 1997 por Microbtica
S.L. Se propone una definicin prctica de hardware esttico libre y se establece una clasificacin de
los diseos, en funcin de las herramientas de desarrollo empleadas, que limitan en mayor o menor
medida las libertades ofrecidas por el autor.
1 En
este artculo consideraremos que hardware abierto y hardware libre son sinnimos, y los utilizaremos indistintamente. Sin
embargo, existe ambigedad en la lengua Inglesa. El trmino free hardware puede significar tanto hardware libre como hardware
gratuito. Esto ltimo es incorrecto.
Parte I
Hardware esttico
A lo largo de esta parte, al hablar de hardware nos estamos refiriendo al hardware esttico.
1. Definicin
1.1. Los problemas del hardware abierto
No se pueden aplicar directamente las cuatro libertades del software libre al hardware, dada su diferente
naturaleza. Uno tiene existencia fsica, el otro no. Aparecen una serie de problemas:
1. Un diseo fsico es nico. Si yo construyo una placa, es nica. Para que otra persona la pueda usar,
bien le dejo la ma o bien se tiene que construir una igual. La comparticin tal cual la conocemos en
el mundo del software NO ES POSIBLE.
2. La comparticin tiene asociado un coste. La persona que quiera utilizar el hardware que yo he diseado, primero lo tiene que fabricar, para lo cual tendr que comprobar los componentes necesarios,
construir el diseo y verificar que se ha hecho correctamente. Todos esto tiene un coste.
3. Disponibilidad de los componentes. Estn disponibles los chips?. Al intentar fabricar un diseo
nos podemos encontrar con el problema de la falta de material. En un pas puede no haber problema,
pero en otro puede que no se encuentran.
Una primera propuesta para definir el hardware libre es la siguiente:
El hardware libre ofrece las mismas cuatro libertades que el software libre, pero aplicadas
a los planos del hardware.
Si en el software hablamos de fuentes, aqu hablamos de planos. A partir de ellos podemos fabricar el
hardware. El proceso de construccin tiene asociado un coste, que no existe en el caso del software. Sin
embargo los planos estn disponibles para que cualquiera los pueda usar, modificar y distribuir.
Esquematico
PCB
2. Clasificacin
2.1. El formato de los planos
Para el fichero de fabricacin existe un estndar industrial, denominado GERBER, muy extendido y
que est perfectamente documentado. Por ejemplo con el programa libre gerbv[9] se pueden visualizar.
Desgraciadamente, no existe un estndar para el formato de los esquemticos y el PCB. Cada
aplicacin utiliza el suyo propio. Y prcticamente todas las herramientas de diseo electrnico (EDA) son
propietarias, con formatos propietarios.
Hay un proyecto en marcha, gEDA[10] (GPL+EDA), que tiene como objetivo desarrollar herramientas
EDA bajo licencia GPL. Es un proyecto muy prometedor pero al da de hoy est en desarrollo y todava no
est a la altura de los programas propietarios, usados por la mayora de diseadores hardware. No obstante
es usable.
3
Parte II
Hardware reconfigurable
4. Introduccin
El hardware reconfigurable es aqul que viene descrito mediante un lenguaje HDL (Hardware Description Language). Su naturaleza es completamente diferente a la del hardware esttico. Se desarrolla de
una manera muy similar a como se hace con el software. Ahora nuestros diseos son ficheros de texto, que
contienen el cdigo fuente. Se les puede aplicar directamente una licencia libre, como la GPL.
Los problemas no surgen por la definicin de qu es libre o qu debe cumplir para serlo, sino que
aparecen con las herramientas de desarrollo necesarias. En esta parte analizaremos los programas que
nosotros hemos empleado para su diseo en sistemas GNU/Linux, centrndonos en el lenguaje VHDL y
las FPGAs de Xilinx. Veremos que dificultades aparecen y su relacin con el software libre.
.VCD
SIMULACION
Ficheros
Fuente
SINTESIS
.BIT
4.2. FPGAs
Las FPGAs son dispositivos que nos permiten implementar circuitos digitales. Estn compuestos por
bloques iguales, configurables, llamados CLBs, que se unen dinmicamente segn cmo se especifique en
la memoria de configuracin. De esta forma, cambiando el contenido de la esta memoria, se establecen
unas uniones diferentes entre los CLBs, obtenindose un dispositivo u otro.
El fichero que contiene la configuracin se denomina bitstream. La caractersticas fundamental de las
FPGAs es que son Dispositivos universales. Se pueden convertir en cualquier diseo digital, segn el
bitstream que se cargue en su memoria de configuracin.
hardware esttico). La tarjeta JPS es una de ellas, que adems es libre (En el sentido que se le ha dado al
hardware esttico).
5. Simulacin en GNU/Linux
Nos centraremos en el lenguaje VHDL y las FPGAs de Xilinx. Las herramientas que hemos empleado para el diseo de hardware reconfigurable son el GHDL[19], para realizar la simulacin, y el
GTKWAVE[20] para visualizar los resultados. Ambas aplicacin se distribuyen bajo licencia GPL.
5.2. Un ejemplo
A continuacin se muestra un ejemplo de un contador de 8 bits:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity cont8 is
port (clk
: in std_logic; -- Reloj
clear : in std_logic;
q
: out std_logic_vector (7 downto 0)); --Salida
end cont8;
architecture beh of cont8 is
signal cuenta : std_logic_vector (7 downto 0);
begin
output: process(clk,clear)
begin
if (clear=0) then
q<="00000000";
cuenta<="00000000";
elsif (clkevent and clk=1) then
cuenta<=(cuenta+1);
q<=cuenta;
end if;
end process;
end beh;
Este contador se encuentra en el fichero cont8.vhdl. Para simularlo es necesario crear un banco de pruebas
(testbench) que introduzca la seal de reloj y coloque un valor adecuado en la entrada de reset. Lo llamamos
tb_cont8.vhdl. El proceso para realizar la simulacin completa es el siguiente:
1. Realizar el anlisis. A partir de los ficheros tb_cont8.vhdl y cont8.vhdl se obtendrn los ficheros
objeto .o:
$ ghdl -a -ieee=synopsys *.vhdl
2. Elaboracin. A partir de los ficheros objeto obtenemos el ejecutable (tb_cont8):
7
6. Sntesis/Implementacin
La fase de sntesis/implementacin toma el diseo en vhdl y genera el bitstream. Analizaremos las dos
fases por separado y su relacin con GNU/Linux.
6.1. Sntesis
En el proceso de sntesis se infieren los componentes hardware bsicos a partir del diseo en vhdl y se
genera un fichero netlist, que especifica qu componentes bsicos se utilizan y cmo estn conectados.
A partir de los ficheros .vhdl se obtiene el netlist, en formato EDIF, que est estandarizado. Los autores
no conocen herramientas de sntesis libres pero podra haberlas, puesto que la informacin necesaria est
disponible. Si no existen ahora se podrn programar en un futuro.
6.2. Implementacin
La implementacin toma el fichero netlist y genera el bitstream, realizando muchos pasos intermedios
que no se detallan en este artculo. Esta parte es muy dependiente del dispositivo FPGA utilizado y es
necesario conocer todos sus detalles internos para poder programarlo. Y aqu es donde surgen los problemas. La tecnologa de los dispositivos FPGA es considerada secreto industrial. No es posible conocer
toda la informacin de configuracin. Por tanto no es posible el diseo de herramientas libres. Este punto
es muy importante. No existen herramientas libres y adems, potencialmente, no pueden existir, al menos
con el panorama actual.
7. Plataformas hardware
Para poner en funcionamiento el hardware reconfigurable sintetizado es necesaria una plataforma. En el
mercado estn disponibles distintas placas de desarrollo para FPGA, con interfaces muy diferentes: puerto
serie/paralelo, PCI, etc. El interface serie/paralelo permite a priori un sencillo manejo de la placa incluso
desde Linux, aunque es posible no disponer de la aplicacin para el mismo (y por el momento nada de
software libre). Una excepcin es la placa JPS, que naci con la filosofa abierta, y dispone de un
software de descarga (download) para Linux.
Las placas PCI presentan el problema de la disponibilidad del driver adecuado. La placa RC1000PP de
Celoxica dispone de un driver (incluyendo las fuentes) para el kernel 2.4x y libreras de manejo de la placa,
aunque no se da soporte. Esta placa resulta muy interesante para aquellos desarrollos donde es necesario la
convivencia del diseo con un PC a alta velocidad. Otro aspecto importante, son aquellas plataformas con
Ethernet las cuales permiten su manejo desde la web. Este es el caso de la plataforma Labomat3[28].
Parte III
Aplicaciones y Conclusiones
9. Aplicaciones
En este apartado mostraremos ejemplos de aplicaciones relacionadas con el hardware libre y su desarrollo bajo GNU/Linux
10
Figura 6: El robot Gusano Cube Reloaded, controlado desde una tarjeta JPS
11
10. CONCLUSIONES
Al hablar de hardware libre hay que hacer primero la distincin entre hardware esttico y reconfigurable. Para el hardware esttico se ha propuesto una definicin y se ha establecido una clasificacin de los
diseos en funcin de las restricciones impuestas por las aplicaciones de diseo. Es el autor el que decide
si su diseo es o no abierto, y no la aplicacin empleada.
En el caso del hardware reconfigurable, se ha conseguido cerrar el ciclo completo de diseo en una
mquina GNU/Linux, realizndose la compilacin, simulacin, sntesis y descarga en una FPGA. Para la
compilacin y simulacin hemos empleado el GHDL junto con el GTKWAVE, ambos programas libres y
para la sntesis el entorno ISE de Xilinx, ejecutado a travs de Wine.
Se podran realizar sintetizadores libres que generen un netlist en formato EDIF, pero actualmente no
sera posible disponer de un entorno completamente libre puesto que los fabricantes no publican la
informacin, considerada como secreto industrial. El primer paso para lograrlo sera la existencia de
una Open FPGA.
Una posible solucin al tema de las licencias de las herramientas propietarias es utilizar un laboratorio
virtual, constituido por un servidor en el que se ejecute el sintetizador propietario, de momento a travs
de Wine, que permita a los usuarios realizar la sntesis (Granjas de sntesis?). Se est trabajando en esa
direccin.
Referencias
[1] Definicin de Software Libre en la pgina de la Free Sofware Foundation (FSF). http://www.
gnu.org/philosophy/free-sw.es.html. [ltima consulta: 03/Sep/2003]
[2] Licencia pblica GNU. Traduccin al castellano. http://gugs.sindominio.net/
gnu-gpl/gples.html. [ltima consulta: 03/Sep/2003]
[3] Graham Seaman. Free Hardware Design - Past, Present, Future. Oekonux conference, May 2001.
Disponible on-line en http://www.opencollector.org/Whyfree/freedesign.html.
[ltima consulta: 03/Sep/2003].
[4] Diferentes artculos sobre hardware abierto. Pgina del proyecto OpenCollector. http://www.
opencollector.org/Whyfree/. [ltima consulta: 03/Sep/2003]
[5] Richard Stallman. "Free Hardware". Linux Today. Jun-1999. Disponible en lnea en:
http://linuxtoday.com/news_story.php3?ltsn=1999-06-22-005-05-NW-LF.
[ltima consulta: 03/Sep/2003]
[6] Resumen de licencias para hardware abierto. Pgina del proyecto OpenCollector. http://www.
opencollector.org/hardlicense/licenses.html. [ltima consulta: 03/Sep/2003]
[7] Proyecto Hardware Abierto, de Microbtica S.L. http://www.microbotica.com/ha.htm.
[ltima consulta: 03/Sep/2003]
[8] Xilinx. Empresa fabricante de FPGAs. http://www.xilinx.com/. [ltima consulta:
03/Sep/2003]
[9] Un visualizar libre para ficheros GERBER. http://gerbv.sourceforge.net/. [ltima consulta: 05/Sep/2003]
[10] Herramientas de diseo electrnico bajo licencia GPL. http://www.geda.seul.org/. [ltima
consulta: 05/Sep/2003]
[11] Programa de diseo electrnico EAGLE, de la casa Cadsoft. http://www.cadsoft.de/. [ltima consulta: 05/Sep/2003]
12
[12] J. Gonzalez, P. Haya, S. Lopez-Buerdo, and E. Boemo, "Tarjeta entrenadora para FPGA, basada en
un hardware abierto", Seminario Hispabot 2003, Alcal de Henares, Mayo 2003.
[13] Tarjeta JPS. Esquemas, PCB y planos en lnea. http://www.iearobotics.com/personal/
juan/doctorado/jps-xpc84/jps-xpc84.html. [ltima consulta: 05/Sep/2003]
[14] Tarjeta CT6811. Hardware abierto (PPX). http://www.iearobotics.com/proyectos/
ct6811/ct6811.html. [ltima consulta: 05/Sep/2003]
[15] Tarjeta CT293. Hardware abierto (PPX). http://www.iearobotics.com/proyectos/
ct293/ct293.html. [ltima consulta: 05/Sep/2003]
[16] Microbot Tritt, basado en las tarjetas abiertas CT6811 y CT293. http://www.iearobotics.
com/proyectos/tritt/tritt.html. [ltima consulta: 05/Sep/2003]
[17] Proyecto OpenCores. http://www.opencores.org/. [ltima consulta: 05/Sep/2003]
[18] Base de datos con diseos y herramientas EDA libres. http://www.opencollector.org/.
[ltima consulta: 05/Sep/2003].
[19] GHDL Home page. http://ghdl.free.fr/. [ltima consulta: 05/Sep/2003]
[20] GTKWAVE Home Page. http://6371.lcs.mit.edu/currentsemester/cadtools/
gtkwave/wave.html. [ltima consulta: 05/Sep/2003]
[21] Procesador DLX en VHDL. http://www.cse.lehigh.edu/~caar/lou/dlx.html. [ltima consulta: 05/Sep/2003]
[22] Procesador Leon1. http://www.estec.esa.nl/microelectronics/leon/leon.
html. [ltima consulta: 05/Sep/2003]
[23] Herramienta ISE, de Xilinx. http://www.xilinx.com/ise/ise_promo/ise5_eval.
htm. [ltima consulta: 05/Sep/2003]
[24] Proyecto Wine. http://www.winehq.com/. [ltima consulta: 05/Sep/2003]
[25] Configurar Linux para ISE: http://support.xilinx.com/xlnx/xil_ans_display.
jsp?iLanguageID=1&iCountryID=1&getPagePath=12384.
[ltima
consulta:
05/Sep/2003]
[26] Como instalar ISE: http://toolbox.xilinx.com/docsan/xilinx4/data/docs/
irn/ch32.html. [ltima consulta: 05/Sep/2003]
[27] Configurar variables de entorno de ISE: http://toolbox.xilinx.com/docsan/
xilinx5/data/docs/irn/irn0027_7.html. [ltima consulta: 05/Sep/2003]
[28] Tarjeta Labomat3. http://lslwww.epfl.ch/labomat/. [ltima consulta: 05/Sep/2003]
[29] Proyecto
Laboweb.
http://www.ii.uam.es/~laboweb/LabWeb/index.php3?
seccion=0&pagina=0. [ltima consulta: 05/Sep/2003]
[30] Gmez-Arribas FJ, Gonzlez I, Gonzlez J y Martnez J, Laboratorio Web para Prototipado y Verificacin de Sistemas Hardware/Software. III Jornadas sobre Computacin Reconfigurable y Aplicaciones, Escuela Politcnica Superior, Universidad Autnoma de Madrid, Septiembre 2003.
[31] Robot de Docencia. Club de Robtica-Mecatrnica de la UAM. http://www.ii.uam.es/
~mecatron/index.php3?seccion=4&pagina=8. [ltima consulta: 06/Sep/2003]
[32] Gonzlez J., Gonzlez I. y Boemo E, Alternativas Hardware para la Locomocin de un Robot podo. III Jornadas sobre Computacin Reconfigurable y Aplicaciones, Escuela Politcnica Superior,
Universidad Autnoma de Madrid, Septiembre 2003.
13