Hola Gerardo! leo tu mail con mucho respeto , creo que lo que haces tiene una complejidad importante y no estás planteando hacer "un juguete" sino algo muy serio, Desde esta visión de respeto a toda una vida profesional te doy mi punto de vista y análisis de la situación actual del as FPGAs y como digo es sólo mi opinión, puedo estar equivocado o cualquier otro puede pensar en otra dirección, yo sólo te doy mi modesta forma de ver las cosas por las experiencias que he vivido. Espero que no me quede muy largo , porque esto es una discusión que daría para horas entre amigos con unas buenas bravas y unas cañas XD, pero has entrado como elefante en una cacharrería y estás haciendo preguntas de base que son difíciles de responder "rápido".
Sobre la madurez de la tecnología de las FPGAs, ahí discrepo bastante en lo que has comentado, posiblemente creo que simplemente no has tocado las áreas en las que sí que se usan las FPGAS no es ni bueno ni malo, solo que posiblemente te has movido en entornos en los que simplemente no hacía falta usar una FPGA.
Y además se te junta otro problema que hace que te hayas abrumado y es que las FPGAs aunque utilicemos lenguajes como verilog o incluso python para "programarlas", no tiene nada que ver con la programación. Verilog no es un lenguaje de programación, es un lenguaje de descripción de hardware y esta sutil diferencia es un abismo, hay que cambiar el "chip mental". No puedes abordar un desarrollo en FPGA sin antes haber explorado el artefacto y tomar al menos, nociones de arquitectura hardware (que todo esto se aprende andando como se dice). Esto es muy importante Gerardo, tienes que meter las manos en la harina y tomarle el punto a la masa ;)
En la FPGA estás tocando los. bits por lo que requiere para cosas avanzadas tener conocimientos sobre lo que estás haciendo. No quiero desprestigiar ni decir que el programar un micro sea más fácil ni mucho menos, es algo con lo que trabajo y sé calibrar perfectamente el nivel de dificultad y complejidad de todo esto, simplemente me refiero a que es un nivel más de abstracción (dices este número es de tipo float de 64 bits o 32 y los multiplico y te olvidas), en un arduino u otro micro puedes hacer cosas que en una fpga serían complicadísimas o directamente no tendría sentido abordar y al revés, cada mundo tiene sus dificultads,sus luces y sus sombras. Una persona con conocimientos de programación, ponerse a programar micros de forma seria, le requiere un pequeño paso pero pasar a una fpga es un cambio de mentalidad y posiblemente de ampliar conocimientos.
Un tema es que a nivel educativo las usemos para todo tipo de cosas, unas veces porque sin ellas no se podría hacer , otras por puro placer de aprender las tripas de lo que hay debajo... pero otra cosa son decisiones de producto profesional.
A nivel profesional cuando a veces me preguntan, ¿oye para esto uso un microcontrolador o una FPGA? siempre digo lo mismo, si con el microcontrolador puedes resolver el problema, no uses una FPGA ya que no tiene sentido.Yo para eso soy muy pragmático, si tienes que hacer un producto tienes que poner en valor las características de lo que quieres hacer y tus necesidades y aspiraciones futuras. ¿tiene que ser lo más barato posible?¿tiene que durar el mayor tiempo posible? ¿qué condiciones físicas y de ruido electromagnético tiene que soportar? ¿velocidad, entradas y salidas, necesidad de reconfiguración....?
Y con todo eso cada arquitecto/ingeniero o como nos queramos llamar tendrá que tomar sus decisiones, acertadas o no, es parte de este "juego". Las FPGAs son una tecnología muy concreta que permite hacer una serie de cosas y tiene una serie de capacidades, lo importante es usarlas si tiene sentido hacerlo y si no, claramente no.
Las FPGAs se utilizan desde hace muchos años, yo no soy tan mayor pero si que llevo muchos años ya trabajando y las he tenido presentes en todo lo que me he dedicado desde los 2000 y en los proyectos en los que comencé trabajando, utilicé placas y diseños de tarjetas con fpgas de los años 80 y que seguían funcionando como el primer día.
Para entender por qué las FPGAs aparentemente no están más presentes hay que entender con qué estamos trabajando y esto es un tema crucial. Las FPGAs que manejamos y que llamamos FPGAs "libres" realmente no lo son, es algo que está muy mal dicho aunque lo hablemos así para entendernos. Las FPGAs son casi todas propietarias, hace no mucho se lanzó la primera FPGA open source en un crowdfunding, llamada Clear, usuarios de esta lista la tienen aunque tiene recursos muy limitados y su futuro no sé como es de prometedor ya que la empresa que las fabricaba ha cerrado recientemente dejando a bastantes proyectos importantes del mundo asic open source tirados en la estacada (estoy seguro que saldrán adelante, ¡ánimo que sois unos grandes!, que hay alguno por aquí ;) )
Y esta es la clave Gerardo, el tema de que son propietarias. Esto quiere decir que cada fabricante guarda a buen precinto su arquitectura interna y viven no sólo de vender los chips físicos, sino de vender sus entornos de desarrollo, las librerías de módulos asociadas (lo que se conoce como ips) y los cursos de formación. Esto es totalmente prohibitivo para un usuario de a pie.
Para que te hagas una idea, para un proyecto de hace bastantes años, la licencia del software de desarrollo para mi equipo de trabajo fue de entorno a 15000 euros anuales. Esto hace que trabajar con ellas sea inviable para cualquier persona normal e incluso inasumible para empresas, incluso grandes, en las que la FPGAs no forme parte de su core.
Esto solo tiene sentido en proyectos donde la FPGA es una pieza clave por sus características y que la hacen imprescindible , no podrías hacer su trabajo con ninguna otra cosa (sector aeronáutico, robótica, análisis de imagen a gran escala o super resolución, centros de datos, laboratorios, genética, análisis de red, equipos de medición de altas frecuencias, prácticametne todos los equipos médicos de los hospitales tienen fpgas dentro.....) o en negocios de gran volumen que necesitan mucha precisión, por ejemplo las impresoras plotter de HP casi todas ellas llevan entre otras cosas ,FPGAs desde hace muchos años y casi cualquier estudio de arquitectura tiene uno al menos (plotters de más de 4000 euros pero que son comunes en esa profesión). Hay miles de productos en la calle que usamos cotidianamente que llevan FPGAs.
En general todo donde hay cosas que necesitan gestionar tiemporizaciones "críticas", tratamiento de datos a altas frecuencias o gestión de muchísima precisión, llevan una FPGA.
No hay que confundir que sea una tecnología poco accesible al público general , incluso al profesional general a que no esté difundido o no sea una tecnología madura.
Todo este panorama, cambia cuando hace unos años Claire Wolf desarrolla Yosys, creo que para su tesis aunque esto no estoy muy seguro, el tema es que básicamente lo que se plantea es hacer ingeniería inversa del formato de las fpga ice40 y crear una herramienta "libre" para poder reconfigurarlas.
Y esto es donde estamos hoy, gracias a Claire , a la que le debemos todo esto que hacemos podemos utilizar FPGAs propietarias, sin pagar licencias, lo que ha generado una revolución.
El problema es que como toda revolución, al principio es un caos, y ahora aunque llevemos años, son pocos realmente y con el handicap de que cuando por ejemplo apareció Arduino, no había nada, ahora la FPGA es accesible pero está Arduino y muchos otros microcontroladores muy potentes y amigables por lo que el que entra en la FPGA libre, suele entrar proque le interesan temas concretos o tiene intereses particulares. Además no hay ninguna empresa como en el caso de Arduino , en el que su objetivo haya sido democratizar las FPGAs, no hay que olvidar que Arduino es una empresa que factura no poco dinero precisamente. Icestudio es la única herramienta que intenta acercarse al que arranca en esta tecnología de las FPGAs que como estás viendo de primeras puede ser muy arisca. No sé si lo conseguiremos pero estamos en el camino.
Ahora mismo no es que esté todo verde, hay muchas cosas hechas , cientos y miles de proyectos super interesantes, pero todo desorganizado, disperso o que requieren de un nivel de conocimientos alto para ponerlos en marcha.
En esta propia lista las cosas se diluyen en el tiempo y la información se pierde, es algo que entre todas las comunidades y herramientas se irá casi seguro de forma natural mejorando.
Con esto espero haberte dado un "marco" de situación, aquí no te vamos a obligar a usar las FPGAs para tu proyecto , ni siquiera te animaría a ello. Tienes que tenerlo claro y para eso lo que te recomendaría ya que no has trabajado nunca con esta tecnología es empezar de cero, con cosas muy básicas, si intentas abordar tu proyecto de inicio sin un entrenamiento previo que te permita tomar buenas decisiones casi seguro que fallarás.
Como has planteado que no tienes realmente prisa y las prisas nunca son buenas compañeras, te diría que en cuanto te llegue la alhambra te echaras un vistazo por los tutoriales de Obijuan.
Obijuan ha elaborado durante años una documentación excepcional, desde lo más básico hasta cosas complejas, sigue sus tutoriales, si hay cosas que conoces sáltelas pero míralos aunque sea diagonalmente porque te ayudarán a entender como va todo esto.
Sobre las TANG, Yosys que comenzó solo con esta familia de las ice40, ahora cubre muchas más FPGAS , incluso de otras marcas como por ejemplo las famosas TANG, que realmente TANG es como decir Alhambrabits, la FPGA es del fabricante chino Gowin que sería el equivalente a Latice . Aquí pasa como con el resto de FPGAs, no hay colaboración por parte del fabricante porque realemnte no les interesa, ellos quieren seguir ganando dinero vendiendo licencias, formación, etc en el caso de las TANG ya las tenemos integradas en Apio y en breve estarán disponibles en icestudio, pero el soporte es aún muy limitado. Como también se está haciendo ingeniería inversa, hasta hace poco no se tenía ni acceso a las BRAMS para que te hagas una idea. Yo no te recomendaría usar las Gowin para tu proyecto, el mercado asiático es mucho más voluble que el europeo, por ejemplo un modelo de TANG de hace un año que compré para la integración con Icestudio, hoy ya no se vende(salió hace un año y literlalmente se lo han cargado), eso en Lattice no te va a pasar. Además el soporte aún es muy limitado.
Otra cosa es que quieras usar los entornos de desarrollo y las librerías de Gowin que son gratuitas (pero no libres) que ahí tienes un montón de módulos listos para usar, pero como te digo cuidado con esto si miras a largo plazo , más por los tiempos de vida y facilidad de distribuciónd e los chips.
Espero no haberte aburrido mucho y que esto te haya ayudado a entender mejor "donde te metes", en cualquier caso ya sabes que eres bienvenido y que siempre intentaremos ayudarte en lo posible.
Saludos!