El software libre[1] ofrece al
usuario cuatro libertades: libertad de uso, de estudio y
modificación, de distribución, y de redistribución 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 diseños
hardware es más complicado. No hay una definición
exacta (se pueden encontrar referencias a distintos artículos en [4]).
Incluso el propio Richard Stallman afirma[5] que las
ideas del software libre se pueden aplicar a los ficheros necesarios
para su diseño y especificación (esquemas, PCB, etc), pero no al circuito
físico en sí.
Al no existir una definición clara de hardware abierto, cada
autor lo interpreta a su manera. Se han creado licencias[6],
algunas de las cuales están todavía en desarrollo.
Para abordar el estudio comenzaremos estableciendo una primera clasificación,
según su naturaleza. Existen los siguientes tipos:
- Hardware estático. Conjunto de elementos
materiales de los sistemas electrónicos. Tiene una existencia física
(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 artículo revisaremos
y ampliaremos las ideas del proyecto hardware abierto[7],
comenzado en 1997 por Microbótica S.L. Se propone una definición práctica
de hardware estático libre y se establece una clasificación
de los diseños, en función de las herramientas de desarrollo empleadas,
que limitan en mayor o menor medida las libertades ofrecidas por el
autor.
- Hardware reconfigurable. Es el que se describe mediante un
lenguaje HDL, (Hardware Description Language, lenguaje de descripción
hardware) y que permite especificar con todo detalle su estructura
y funcionalidad. A partir de este código se generan unos ficheros
de configuración (bitstreams) para que los dispositivos del
tipo FPGA se reconfiguren, funcionando según lo descrito. En la segunda
parte se describe con más detalle este hardware y cómo lo podemos
desarrollar en plataformas GNU/Linux, utilizando el lenguaje VHDL
y las FPGAs de la empresa Xilinx[8].
Dada su diferente naturaleza, al hablar de hardware libre hay
que especificar de qué tipo de hardware se está hablando. Para hacer
que el hardware reconfigurable sea libre, sólo hay que aplicar
una licencia GPL a su código. Sin embargo, no está tan claro qué se
entiende por hardware libre cuando nos referimos al hardware
estático.
Juan Gonzalez
2003-12-31