Creo que muchos programadores, que van desde python-datasayentists y que terminan con desarrolladores de controladores duros, a veces levantan la vista triste y suspiran soñadores: "Oh, será más difícil, más difícil ...". Por supuesto, estamos hablando de Verilog, un lenguaje para describir y modelar sistemas electrónicos. Verilog siempre se ha destacado entre los lenguajes de programación; Sin embargo, para resolver problemas que no pueden ser superados de ninguna otra manera, requiere una plataforma de hardware específica, FPGA, un circuito integrado lógico programable. El umbral para ingresar al desarrollo de Verilog es relativamente alto, pero pronto puede ser un poco más bajo, porque en este momento
Proyecto de crowdfunding : WebFPGA.
La esencia del proyecto : placa de depuración para FPGA iCE40UP5k. Todo el software de desarrollo y depuración se encuentra en la nube; la interacción con la placa se produce en el navegador utilizando la API WebUSB.
Plataforma : Kickstarter.
Publicado por Ryan Jacobs (programador), Mick Jacobs (ingeniero electrónico).
Ubicación : Los Ángeles, California, Estados Unidos.

La placa combina el FPGA Lattice iCE40UP5k (celdas lógicas 5280, 32 GPIO, SRAM de 1 Mbps) y el microcontrolador de la serie STM32F04; más precisamente, el desarrollador no informa el modelo de microcontrolador, pero a juzgar por la foto de la placa, se trata de TSSOP-20, y en TSSOP-20 ST Microelectronics lanza solo un microcontrolador de la serie STM32F04 - STM32L041F6 por € 2.02.
Curiosamente, uno de los autores del proyecto, Ryan Jacobs, es un estudiante de la UCLA, todavía no tiene un currículum explicativo, por lo que le da un enlace a GitHub, en el que ya logró ganar 1700 estrellas.
Si bien la parte de la nube del proyecto está alojada en 6 servidores (las características exactas no se anuncian, a partir de la especificación completa solo se sabe que se trata de "Xeon dual"), el desarrollador promete que parte de los fondos recaudados como resultado de la campaña irán a pagar el equipo ya comprado, si la cantidad recaudada Si el proyecto supera los $ 10,000, estos fondos adicionales serán una señal que indicará un gran número de usuarios potenciales y el parque de servidores se ampliará. Según el autor, el almacenamiento en la nube como Amazon o Azure no se ajusta al modelo de negocio actual, por lo que se decidió inmediatamente implementar todo el backend en sus propios servidores.
Para evitar posibles disturbios entre los usuarios potenciales sobre el poder de procesamiento insuficiente de los servidores, Ryan asegura que "los servidores se usan solo para sintetizar y transmitir al usuario final un código binario de solo 3 kilobytes". En mi opinión, el volumen de tráfico es realmente pequeño: "arriba" deja el código fuente de Verilog, que también se puede comprimir bien, "abajo" viene el firmware binario, cuyo tamaño es realmente pequeño debido a la capacidad relativamente pequeña de la FPGA utilizada.
Pero con la carga de servidores mediante el proceso de sintetización de firmware a partir del código Verilog, en mi opinión, no todo es tan optimista. Incluso si dejamos de lado el proceso de optimización de la ubicación física de los circuitos resultantes en el espacio general de FPGA, que definitivamente requiere una interfaz gráfica bastante rápida e intercambio constante de paquetes de información bastante grandes con el servidor, el proceso de síntesis del firmware en sí permanece, lo cual, en mi opinión personal, es primero , debe consumir una cantidad de tiempo de procesador suficientemente grande y, en segundo lugar, no es de naturaleza determinista y puede retrasarse.
Personalmente, me familiaricé con los FPGA en la primera mitad del cero (eran Actel FPGA, cuyo firmware se desarrolló en el paquete Libero + Synplify + ModelSim) y, hasta donde recuerdo, el proceso de síntesis nunca fue un rayo, incluso para proyectos educativos simples. En realidad, como cualquier proceso de compilación, la síntesis se caracteriza por todo tipo de problemas periódicos y tartamudeo, pero esperemos que el tiempo de respuesta promedio del servidor esté dentro del marco de la paciencia humana. Por cierto, cuando en las preguntas frecuentes el autor habla sobre la optimización de la compilación almacenando en caché los archivos binarios (si el código del archivo Verilog y los indicadores del compilador no se modificaron, el usuario simplemente recibe el último binario recibido), luego menciona que "no necesitará 2 minutos esperar la finalización del proceso de síntesis ".
Si por alguna razón no está satisfecho con el desarrollo a través del navegador (al menos se puede suponer que el proceso estará húmedo al principio), puede trabajar con FPGA a través de IceStorm / iCECube.
Si está interesado en la tecnología WebUSB, puede prestar atención a los siguientes proyectos abiertos (todos los enlaces conducen a GitHub, por lo que puede ponerse inmediatamente bajo estos límites para estos proyectos):
- WebUSB + Arduino . Solo funciona en placas base compatibles con Arduino con USB completo, como Arduino Zero o Adafruit Feather 32u4.
- Weblight Un LED conectado al microcontrolador ATtiny85 y controlado a través de Internet. Por supuesto, si puede controlar el LED, puede controlar otros dispositivos externos, todo lo que se puede conectar al GPIO.
- Yubikey HOTP . Dispositivos para proteger datos personales en computadoras y teléfonos inteligentes. Trabajan con Facebook, Gmail, GitHub y muchos otros servicios.
- webdfu . USB DFU se utiliza para programar microcontroladores. Yo mismo uso este modo para programar dispositivos basados en microcontroladores STM32. Ahora, si el instalador necesita ejecutar la instalación tecnológica y actualizar el firmware de varias docenas de dispositivos, puede llevar consigo no una computadora portátil con Windows, sino un teléfono Android.
- JS IDE para RTOS Zephyr Project, que le permite descargar código a todas las placas compatibles con Zephyr, y hay más de un centenar de ellas. Así que ahora compre algo como STM32F723E Discovery o UDOO Neo Full y escriba el código directamente en su teléfono.
En la página del proyecto, los desarrolladores hablan sobre el soporte para la tecnología WebUSB en Chrome, Opera y Edge, pero mozilla.org ahora tiene otra información, Edge no está en la lista de navegadores compatibles:

Dado que Microsoft Edge ahora ocupa solo el 5.2% del mercado de navegadores, esto no es crítico, pero si aún tiene Edge, tenga en cuenta las posibles incompatibilidades. Por otro lado, ahora existe la oportunidad de desarrollar FPGA en Chrome OS, que antes era imposible en principio.
¿Debo ayudar a este proyecto? En mi opinión, vale la pena. Desafortunadamente, cuando ya quería unirme a las filas de patrocinadores, resultó que para ordenar WebFPGA debe ser residente de los Estados Unidos o Canadá. Si usted es residente del "castillo" global, entonces el autor solicita diplomáticamente contactarlo y promete pensar qué se puede hacer al respecto. No entiendo con qué está relacionada esta restricción, por lo general, los autores de las campañas de crowdfunding simplemente determinan el costo diferente de entregar el artículo a diferentes países (de acuerdo con las tarifas de correo del país de localización del proyecto), por lo que el paquete también se puede recibir en regiones menos prósperas que América del Norte.
FPGA iCE40UP5k, que yo sepa, no está sujeto a ninguna restricción de exportación y está disponible gratuitamente en Mouser a un precio de € 6.46. El microcontrolador STM32L041F6 por 2,02 € está aún más disponible para pedidos gratuitos. ¿Quizás el autor de la campaña de crowdfunding decidió guiarse por el principio Pareto 80/20 y rechazar gentilmente trabajar con clientes fuera del mundo ecuménico civilizado? Si realmente tira del proyecto solo, puede ser la decisión comercial correcta.
El proyecto, por supuesto, es algo controvertido. Desarrollo en Verilog en un navegador usando software en la nube, bueno, algo genial; especialmente para los países donde el respeto por el software propietario está respaldado por numerosos precedentes legales de la vida real y la descarga de algunos IDE realmente geniales y convenientes para el desarrollo en Verilog desde torrents, y luego usarlo en su negocio, es un fenómeno que es mucho menos común que , digamos, en los países de la primera. URSS Yo, por supuesto, no descargo nada de torrents, y no te aconsejo, pero
alguien puede hacer esto, puedes esperar todo de
él .
Por otro lado, ahora es posible utilizar algún tipo de entorno de programación gratuito para FPGA (al menos iCEcube2, que, aunque está vinculado a su cuenta Lattice y la dirección MAC de la máquina de trabajo, se distribuye de forma gratuita) más una placa de depuración económica de un fabricante chino, así que si no puede comprar software especializado, no es necesario centrarse en la computación en la nube. Pero, el proyecto es bastante bueno en sí mismo (¡Verilog! ¡En el navegador! ¡GUAU!), Y puede conducir a algo más como resultado del desarrollo. Quizás, con el tiempo, nacerá la ecosfera, cerca de las comunidades de usuarios de Arduino o Raspberry Pi, y los entusiastas aficionados de FPGA podrán intercambiar código Verilog, núcleos compilados y otros desarrollos tan libremente como lo es ahora en el mundo de los microcontroladores. En general, me parece que las ventajas de la campaña son mayores que las desventajas.
Para crédito de los autores de la campaña de crowdfunding, no silencian el hecho de la existencia de dispositivos competitivos, que también intentan combinar un relleno interesante y un precio bastante bajo:
- MojoBoard V3, con un precio de $ 75, lleva a bordo el Spartan 6 XC6SLX9 FPGA en el paquete TQFP-144, el microcontrolador ATmega32U4 para 84 GPIO;
- IceBreaker, otro proyecto de crowdfunding, ya cerró con éxito; por $ 69, se ofrece una placa base con Lattice iCE40UP5k FPGA y convertidor FT2232;
- TinyFPGA BX, precio $ 38, FPGA ICE40LP8K (7680 celdas lógicas), 41 pines GPIO.
Personalmente, mientras vivo en Rusia, no puedo participar completamente en el proyecto WebFPGA, pero le envié a Ryan $ 5 usando la opción "Hacer una donación sin remuneración" (esto es algo así como el botón "Enviar dinero al autor" en Habré). En primer lugar, me parece que el proyecto en sí es muy interesante y útil. En segundo lugar, una pequeña donación me suscribe automáticamente a todas las noticias sobre el proyecto, por lo que me siento un poco Warren Buffett, que a veces compra una acción en una empresa que le interesa, para que luego, como accionista, aunque sea una minoría, reciba anualmente un paquete completo de informes.
A juzgar por la identidad de los autores, uno de los cuales pasa la noche y duerme en GitHub, por lo que incluso si el proyecto no despega, todavía obtendremos mucho código fuente muy útil y, posiblemente, con el tiempo habrá personas listas digamos levantar una pancarta caída.
Tengo un pequeño
blog relacionado con hardware de código abierto y crowdfunding; Si tiene algún proyecto interesante de desarrollo de bricolaje o crowdfunding en el campo de la electrónica, le agradeceré el enlace.