¿Qué es eso de FPGAS Libres?
¡Apple pen! Lo siento, pero ahora tengo esa cancioncilla en la cabeza… La verdad es que hoy la cosa vuelve a ser de FPGAs. Y no, no es que la canción esa me recuerde a las FPGAs. El sábado estuve en una charla de un tal Obijuan. Digo un tal porque igual no te suena, pero el tío no es un cualquiera. ¡Es un maker de esos, como mínimo!
Pues la cosa es que me dejó impresionado con lo que estaba haciendo, pero aún más con la definición de FPGAs Libres… Y a eso vamos hoy… ¿Te apuntas?
FPGAs privativas…
Las FPGAs son pequeños chips que al programarlos no modificas una capa de software, como pasa en Arduino, sino que cambias su hardware. El hardware es algo físico, palpable como tú y como yo. Por lo que en una FPGA lo que estás programando son cables, son rutas por las que van los datos, los unos y ceros famosos…
Cuando entré a la charla de Obijuan, en mi cabeza estaba la idea de que los chinos (¿Por qué siempre pensamos en los asiáticos para estas cosas?) habían conseguido clonar una serie de FPGAs y las echaban como churros… La gallina de los huevos de oro… pero qué equivocado estaba…
Las FPGAs son privativas, están cerradas y solo las grandes compañías saben cómo funciona su interior. Es un fastidio porque esto crea una barrera al conocimiento. No nos permite avanzar rápidamente, conocer lo que hay allí dentro y modificarlo a nuestro gusto o al gusto de otras personas con necesidades concretas.
¿Qué implica la no libertad? Implica que muchas cosas se quedarán por hacer. Las empresas se sienten más seguras manteniendo su secreto de aquello que venden. Y la verdad, creo que a Arduino le va bastante mejor por ser abierto. ¿Alguien conoce algún otro microcontrolador? Nadie se acuerda de otras empresas.
Y lo peor es que esto sucede hasta niveles de ingenieros. Prefieren prototipar en Arduino porque alguien ya se ha encargado de hacerlo tan fácil que no es necesario reciclarse o estudiar noches y noches la documentación. Alguien ha generado ya algo sencillo y listo para utilizarse.
Y este alguien lo hizo porque todo era abierto. Mientras tanto, el resto de las empresas podrán cobrar más por sus placas, podrán mantener el secreto y no ser copiadas por otras empresas. Aunque la verdad es que, si tu nivel de ventas es tan bajo… ¿Qué importa poder vender a 4€ más? ¿O incluso a 40€ más?
Definición de FPGA libre
Bueno, después de mi discurso pro-libre en el que las empresas no se dan cuenta de lo que pierden al pensar que protegiéndolo todo, la competencia siempre les irá por detrás… vamos a la historia real de por qué existen las FPGAs Libres. Las FPGAs son cajas negras a día de hoy, no se sabe qué contienen dentro. Solamente metemos un código y obtenemos un archivo llamado bitstream, que es el que cargamos en la FPGA y que la hace funcionar como queríamos cambiando el cableado interno de la placa.
Y aquí llega el héroe de la historia, como en todas las historias… Éste es Clifford Wolf. Se ve, que este chico (igual ya era todo un hombretón, la verdad es que no tengo ni idea) cogió esta caja negra y la descifró. Entendió qué se hacía dentro de la caja y podía conocer cómo cambiaría el bitstream final, según modificaba los parámetros y configuraciones de la FPGA.
Es decir, conocía lo que iba a pasar y cómo funcionaba sin conocer lo que había dentro de la caja negra. Y es por eso que se puede llamar FPGA libre, porque al final, a pesar de no conocer lo que hay dentro, es posible conocer cómo funciona. Y esto ha permitido aparecer una serie de software capaz de programar dichas FPGAs libres.
Tanto a bajo nivel, que es lo normal, como de una forma simple y sencilla tal y cómo lo hace Obijuan (Lo siento, tendrás que ir a verle para ver su magia).
Información básica sobre Proteción de datos
Responsable ➥ Sergio Luján Cuenca
Finalidad ➥ Gestionar el envío de correos electrónicos con artículos, noticias y publicidad. Todo relacionado con los temas de rufianenlared.com
Legitimación ➥ Consentimiento del interesado
Destinatarios ➥ Estos datos se comunicarán a MailRelay para gestionar el envío de los correos electrónicos
Derechos ➥ Acceder, rectificar y suprimir los datos, así como otros derechos, como se explica en la política de privacidad
Plazo de conservación de los datos ➥ Hasta que se solicite la supresión por parte del interesado
Información adicional ➥ Puedes encontrarla en la política de privacidad y el aviso legal
Lattice iCE40, ¡Te elijo a ti!
Ups! Se me había pasado contarte un secretillo… que eso de FPGAs libres es más bien una forma de hablar. Si yo fuese un buen purista hablaría de FPGA libre, en singular. Ya que Clifford Wolf desenmascaró la Lattice iCE40, pero claro… hay muchas más y de diferentes compañías. Por lo que únicamente hay herramientas libres de programación para un modelo de FPGA.
En este punto he de decir que la charla de Obijuan me sorprendió. Ya que para él esto era el inicio. Era el pistoletazo de salida, la rotura del muro. Una vez la gente ve que puede cruzar dicho muro, empieza a agujerearlo por otros lugares. Por lo que con el tiempo sería previsible que apareciesen más modelos para los que se encontrara esta traducción.
Esto podría llevar a tener un software que tradujese totalmente a bitstream cualquier tipo de FPGA del mercado. Parece ambicioso, pero en la charla se dijo claramente: Con gcc (El compilador de Linux GNU) pasó exactamente eso…. así que, podemos esperar de todo. Nunca subestimes el poder de la comunidad, cuando mucha gente se junta a hacer algo… da miedo las cosas que se pueden conseguir.
Hablando de este mega-software, el Sr. Wolf creó IceStorm como software de traducción de Verilog (el lenguaje de programación de las FPGAs) al bitstream. Por supuesto, esta traducción la hizo por algo llamado ingeniería inversa. Que no es más que hacer pruebas para conocer cómo está hecho el producto. Se le llama inversa porque el uso que se le está dando no es el habitual, sino que es el inverso: conocer cómo está hecho en lugar de usarlo.
Y tú, ¿eres libre?
Y nada, espero que esto te sirva para saber qué es una FPGA libre. Espero que no pienses de mi que este post es una oda a Obijuan. No es que quiera chup****la, simplemente es que me impresionó cómo estaba creando un pequeño ecosistema sencillo, con algo que a priori parece muy complicado, como son las FPGA.
De hecho, cuando hace unos meses me enfrenté a una FPGA, estuve semanas intentando entender cómo funcionaba todo. Desde cómo hacerle llegar el programa a la placa hasta cómo programarla. Parecía que no avanzaba nada… Y ver cómo con unos clicks él programaba una me dejó un poco patidifuso.
Así que nada… seamos libre, parece que seremos un poco más felices 😉
Déjame un comentario que en el fondo soy buen chaval
Y bueno un término correcto para usar es que las FPGAs no se programan, de hecho con el software lo que se hace es crear una descripción del comportamiento de x o y pines, si bien como tal no existen “cables” si existen rutas pero que no se modifican físicamente, simplemente se hacen mediante interruptores lógicos o digitales que crean esos caminos, yo he trabajado con algunas pero igual se muy poco de ellas.