¡No lo podrás creer! 5 ventajas y 9 desventajas de las FPGA

fpgasclickbaith

Sí, esto es clickbaith, tanto el título cómo la foto,lo siento, pero llevaba meses queriendo hacerlo, pinchamos en tantos títulos absurdos día a día en las redes sociales sin pensar que nos están pescando…

El caso es que desde hace más de dos años tengo youtube en la televisión y… bueno, lo que es la tele en sí, tradicional, la veo más bien poco. Youtube tiene una cosa interesante e inquietante: su algoritmo de sugerencias. Sabe todo lo que he visto, cuando pauso, cuando no termino un vídeo, cuando retrocedo, todo. Pero también sabe, o al menos lo intenta, que tipo de vídeos me gusta ver y eso, cuando llevas un tiempo utilizándolo, se convierte en una herramienta sorprendentemente útil.

Así que mis sugerencias de youtube están llenas de canales de historia de los videojuegos, algún que otro vídeo de rusos locos (viene muy bien para la depresión saber que hay gente en el mundo que está de la cabeza peor que tú) y canales de impresión 3D, electrónica y lo que podríamos llamar mundo Maker/Ingenieril en general.

meanwhile-in-russia

Como os podréis imaginar, mis sugerencias de youtube están hoy en día llenas de vídeos sobre FPGAs. La mayoría son un poco bluff pero de vez en cuando uno encuentra algo interesante. Como hoy donde he visto a la hora de desayunar éste vídeo introductorio a qué es una FPGA:

Lo sé, lo sé ¡37 minutos! ¡A donde vas loco! El vídeo está muy bien explicado, me ha gustado, hay que machacar las bases de algo para llegar a entenderlo realmente bien y poder transmitirlo a otros y EEVblog explica en este caso bastante, bastante bien.

Si veis el vídeo (ya sé que no lo habéis visto, cacho vagos, luego os tragáis temporadas de series completas en una tarde) al final hay algo interesante (más) y es que lista las ventajas de las FPGA, realmente entusiasmado, y luego las desventajas…

ventajasdesvenajaseevblogfpgas

¡Ostras! ¡En que lío me he metido! ¡9 desventajas! ¡Mucho más que ventajas! Si sabía yo que tenía que haber hecho mi TFM sobre brazos robóticos con Matlab y Simulink…

¡”SE ME CALMEN TOS”! ¡No pasa nada hombre! ¡No es tan malo cómo este hombre lo pinta! Vamos a ver las ventajas y las desventajas.

Ventajas:

  • Pueden hacer de todo: Y realmente pueden hacerlo, quiero decir, las FPGA son a la electrónica lo más parecido a un lienzo en blanco para el arte ¡Puedes hacer de todo! Por supuesto tendrás limitaciones pero… las posibilidades son… para entusiasmarse y dedicar un TFM a ver su implicación en robótica.

  • ¡Super rápidas!: Si las comparas con un microprocesador, o la programación de un microprocesador, empezarás a entender su ventaja. Cuando “programas” una FPGA no estás creando software, estás creando hardware, circuitos físicos que siguen reglas físicas de electromagnetismo, y eso, comparativamente hablando, es una grandísima ventaja que estoy explorando.

  • Reprogramables: Has creado un circuito, que puedes cambiar en cualquier momento por otro… uff ¡tantas posibilidades en robótica!

  • Alto funcionamiento en paralelo: En otras entradas del blog te he transmitido esta idea, quiero crear una arquitectura alternativa inspirada en sistemas nerviosos animales en el que un microprocesador o varios no se encarguen de todo el trabajo, sea alto nivel o bajo nivel. Quiero un sistema de control donde el cerebro de un robot no tenga que estar coordinando el movimiento de cada pata a cada momento, si no que se pueda preocupar de cosas más importantes como no chocar con una farola. Para ello, el uso de las FPGA y su gran ventaja de tener varios circuitos a la vez funcionando en paralelo es fundamental.

  • Alto número de entradas y salidas: Aunque esto depende mucho del diseño de la placa de la FPGA, las posibilidades están ahí y te encontrarás modelos en los que hay más entradas y salidas de las que jamas utilizarás a no ser que seas ingeniero de hardware.

Esas son las ventajas que en general se nombran en el vídeo. Ahora pasemos a la decepción, o, mejor dicho, la mala experiencia personal que tiene y por qué nombra tantas desventajas. Pero añadamos un elemento más que ha ocurrido en los últimos años, añadamos que ahora hay un movimiento que busca el desarrollo y uso de FPGA con materiales libres, y veremos cómo muchas de esas desventajas… empiezan a desaparecer.

Desventajas:

  • Caras: Si las comparamos, como el menciona, con los propios circuitos ya fabricados que solemos reproducir en las FPGA, por supuesto que son más caras. También es verdad que son dispositivos realmente complejos por dentro que cuestan fabricar. Sin embargo, el principal problema no es la tecnología, si no el proteccionismo de la propia industria y ahí el mundo libre tiene mucho que decir y ya está cambiándolo. ¿Casos similares? Sin ir demasiado lejos… Arduino y los microprocesadores, y el movimiento Reprap y la impresión 3D… poca broma y muchas alegrías aguardan a los electrónicos en los próximos años.

  • Necesidad de alta potencia: Aquí es cierto que me pierdo un poco, pero basicamente justifica que el circuito realizado en la FPGA en general va a necesitar más alimentación que circuitos equivalentes ya hechos en su PCB y mega optimizados (para lo que usas, normalmente, una FPGA), nada que argumentar al respecto por mi parte.

  • Volátiles/Tiempo de inicio: Cómo ya sabrás la FPGA en sí no es capaz de guardar su configuración cuando pierde la energía. Para no tener que recargar los circuitos cada vez que la conectas, se utilizan memorias flash con la información y la configuran en cuando el sistema recibe energía. Con esto problema solucionado, el único inconveniente es el tiempo que tarda en configurarse la FPGA. Si es cierto que para circuitos muy complejos y grandes esto puede durar varios segundos pero… ¿acaso no ocurre lo mismo con otros sistemas como ordenadores, máquinas que realizan su calibración y un largo etc? Evidentemente cuanto más rápido se inicie todo mejor. Pero no es un factor crítico a la hora de utilizarlas en robots (al contrario, se iniciarán antes que otros sistemas) y aún con ello, tardan menos que yo en despertarme por las mañanas. No puedo juzgarlas por ello.

  • Muchos pines: Lo que antes resultaba una ventaja, ahora resulta una desventaja. Hay que puntualizar, se refiere a que en ocasiones es difícil utilizar dichos pines o no son accesibles, con placas libres para utilizar FPGA podemos crear el layout de pines que queramos, podemos poner, por ejemplo, ristras de pines de VCC-GND-Señal para conectar fácilmente servomotores, sensores y otros.

  • Complicadas: Si me remonto a mi experiencia como estudiante con las FPGA… sí, son complicadas… estamos hablando de circuitos digitales básicos, de un nivel más bajo del de programar un microprocesador, estamos hablando de crear hardware, y eso requiere conocimientos y aprendizaje. Pero os voy a contar un secreto, la electrónica digital es mucho más fácil e intuitiva de lo que la gente piensa y… sobretodo, la industria trata de hacernos creer. Si las FPGA hoy en día son complicadas es porque las herramientas que hay para ellas se han complicado hasta el extremo para un sector de usuarios que la industria considera que quiere esa complicación (y libros para aprender, cursos caros, certificaciones, software actualizables por una millonada, muchas muchas muchas opciones en un solo programa, lo opuesto al software libre) en definitiva, quieren hacerlo complicado, porque es lo que tradicionalmente se ha perseguido, es un mercado cerrado con beneficios y… para que cambiar lo que ya funciona aunque tu software necesite de 10 pasos y dos master especializados para cargar un circuito en la FPGA.

    Afortunadamente con la generación de herramientas libres para FPGA como el Yosys de Clifford, o Apio o Icestudio, los usuarios están recuperando el control sobre su herramienta y, os seré sincero, a nadie le gusta tirarse cuatro días entendiendo y configurando un programa para conseguir cargar un primer ejemplo. Es desesperante, ineficaz, desmotivador y absurdo. El mundo en general es más sencillo de lo que quieren hacernos suponer y, no sé vosotros, pero a mí me gusta dormir tranquilo por las noches.


  • Muchas trampas: Básicamente cuando uno empieza con lenguajes HDL y FPGA tiene que entender algo rápido. No estás programando, estás describiendo hardware.. Cosas que pueden tener sentido a nivel de software, en hardware sencillamente son físicamente imposibles. En el vídeo se comenta cómo cada arquitectura de FPGA puede darnos sorpresas o funcionamientos inesperados debido a que todo estructura tiene sus fallos y particularidades. Sin embargo los compiladores creados por los fabricantes nos evitan muchos de esos problemas, por lo que no deberíais en general preocuparos por ellos. Pero ¿sabéis que sería mejor? Poder tener FPGA totalmente libres, que sepamos su estructura interna al completo, y cualquiera con los recursos pudiera fabricarlas y mejorarlas… ¿no habría menos trampas si todos supiéramos donde están? Cuestión de tiempo…

  • Herramientas complejas: Me repito a lo anteriormente comentado. Son complejas porque la industria quiere y hasta hace poco la comunidad no podía crear sus propias herramientas. Éste es un caso similar al de la industria con la impresión 3D o Arduino… todavía algunos no se lo toman en serio (somos animales de costumbres) tiempo al tiempo, nada cómo los propios usuarios para crear las herramientas que de verdad necesitan.

  • Difíciles de elegir/Comparar: Aquí lleva mucha razón. Comenta que cada fabricante usa sus estructuras, sus estándares… esto es difícil de cambiar y complica la elección y comparativa de distintas FPGA. Sin embargo, como todas las luchas de estándares al final se impone el que resulta más sencillo o intuitivo para los usuarios y por tanto el que más usan. Con el movimiento libre de las FPGA puede, con el tiempo, llegar a producirse ciertos estándares que se impondrán por la sencilla razón de que son en general buenos y la gente los usa, se empeñe quién se empeñe.

  • Los lenguajes HDL no son fáciles/intuitivos: Hay una frase que, no es del todo cierta, pero que dice que no existen malos alumnos, si no malos profesores. Bueno, creo que los lenguajes HDL no son fáciles, pero tampoco son para cortarse las venas. He experimentado enseñanzas de lenguajes HDL en distintos cursos universitarios o tutoriales por internet y… la diferencia entre el verilog o vhdl difícil y el fácil y la frustración en el aprendizaje era, simple y llanamente, un profesor bueno que te decía que esto mola, que tú puedes hacerlo y que, a los minutos, estabas haciendo. Por otro lado, no solo existen lenguajes HDL, ahora hay cosas como Icestudio y en el futuro, con una comunidad libre, se pueden crear lenguajes y programas para utilizar FPGA a todos los niveles inimaginables porque la base, la electrónica digital, no es difícil de aprender.

En resumen, parece que hay más desventajas que ventajas. Pero en mi humilde opinión muchas de las desventajas no son más que desventajas artificiales, fruto de una industria tradicionalmente cerrada que ha cogido vicios y se mantienen en ellos. En el momento que creamos herramientas libres para una tecnología, hacemos que muchas de sus dificultades desaparezcan porque los propios usuarios las eliminan para su propio beneficio, quiera o no o lo entienda o no, el fabricante, el directivo, y toda la cadena a la que todos pertenecemos en algún momento y , que a pesar de crear cosas extraordinarias, pierde perspectiva con el tiempo, como cuando envejecemos.

Abuelitos, somos una generación intermedia, de cambio, estamos aquí para coger el testigo, honrar todo lo bueno creado y romper con lo que no nos gusta para cambiarlo. Hemos llegado para crear una nueva generación de usuarios de FPGA que probablemente ni vosotros ni nosotros llegaremos a entender bien pero que harán cosas grandes, muy grandes y de las que nos sentiremos orgullosos. Hagamos nuestro trabajo bien, creemos, cambiemos y eduquemos para que, con el tiempo, ellos también estén orgullosos de su legado.

Seguimos aprendiendo

4 comentarios


    1. Estimado Jose

      Muchas gracias por el enlace.

      Ya conocía el proyecto, es el que me inspiro a utilizar FPGAs libres para mi tesis, y de hecho mi tesis forma parte de él y sería imposible realizarlo sin la ayuda de Juan Gonzalez, Jesus Arroyo y Eladio. Me veras por la lista de correo de FPGA wars aportando mi granito de arena.

      Un saludo 🙂

      Responder

  1. Viva FPGAwars y el hardware libre!!

    Ese vídeo y sus desventjas ya se han quedado obseletas! Yo no tengo ni idea de electrónica, y mucho menos de FPGA, pero ya he empezado a andar en dicha senda y a enriquezerme del patrimonio tecnológico de la humanidad!! Sin ir mas lejos acabo de clonar tu repositorio de github para mover servos! Muchísimas gracias por el aporte!!
    https://github.com/jcarolinares/Arquitectura_robotica_de_control_hibrida_bionspirada_mediante_fpgas_libres

    Adelante Makers!!
    y para los interesados, que como yo no tenemos ni pajolera idea… https://groups.google.com/forum/?hl=es#!forum/fpga-wars-explorando-el-lado-libre

    Un saludo Julián

    Responder

    1. Estimado Sjædric

      Muchas gracias por tu comentario.

      Debo pedirte disculpas ya que el repositorio está un poco desorganizado, es un proyecto en proceso y a veces la documentación no está todo lo bien hecha que debería. Imagino que lo abras encontrado pero si deseas mover servos en “robots/hardware_control” encontrarás un primer ejemplo creado en Icestudio y basado en el trabajo previo de Juan Gonzalez y Jesús arroyo, el control está diseñado para un pequeño robot hexapodo que tengo que terminar y documentar, y cuyos archivos puedes encontrar en el repositorio (el diseño más avanzado está en una rama alternativa a master que pronto uniré de ello a ella.

      Cualquier cosa no dudes en escribir por aquí o en la lista de FPGA wars, todos estaremos encantados de ayudarte.

      Un saludo

      Responder

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *