WebFPGA - Développement Verilog dans le navigateur

Je pense que de nombreux programmeurs, allant des python-dataayentists et se terminant par des développeurs de pilotes sévères, lèvent parfois les yeux de chagrin et soupirent rêveusement: "Oh, ce sera plus difficile, plus difficile ...". Bien sûr, nous parlons de Verilog, un langage pour décrire et modéliser des systèmes électroniques. Verilog s'est toujours distingué parmi les langages de programmation; permettant de résoudre des problèmes qui ne peuvent être maîtrisés d'aucune autre manière, il nécessite cependant une plate-forme matérielle spécifique, FPGA - un circuit intégré logique programmable. Le seuil pour entrer dans le développement de Verilog est relativement élevé, mais il pourrait bientôt devenir un peu plus bas, car en ce moment

Projet de crowdfunding : WebFPGA.
L'essence du projet : carte de débogage pour FPGA iCE40UP5k. Tous les logiciels de développement et de débogage sont situés dans le cloud; l'interaction avec la carte se produit dans le navigateur à l'aide de l'API WebUSB.
Plateforme : Kickstarter.
Publié par Ryan Jacobs (programmeur), Mick Jacobs (ingénieur électronique).
Lieu : Los Angeles, Californie, USA.



La carte combine le FPGA Lattice iCE40UP5k (5280 cellules logiques, 32 GPIO, 1 Mbps SRAM) et le microcontrôleur de la série STM32F04; plus précisément, le développeur ne rapporte pas le modèle du microcontrôleur, mais à en juger par la photo de la carte, il s'agit de TSSOP-20, et dans TSSOP-20, ST Microelectronics ne publie qu'un seul microcontrôleur de la série STM32F04 - STM32L041F6 pour 2,02 €.

Fait intéressant, l'un des auteurs du projet, Ryan Jacobs, est étudiant à l'UCLA, il n'a pas encore de curriculum vitae explicatif, il donne donc un lien vers GitHub, sur lequel il a déjà réussi à gagner 1700 étoiles.

Alors que la partie cloud du projet est hébergée sur 6 serveurs (les caractéristiques exactes ne sont pas annoncées, d'après toutes les spécifications, il est seulement connu qu'il s'agit de "dual Xeon"), le développeur promet qu'une partie des fonds collectés à la suite de la campagne ira au paiement du matériel déjà acheté, si le montant collecté Si le projet dépasse 10 000 $, ces fonds supplémentaires seront un signal indiquant un grand nombre d'utilisateurs potentiels et le parc de serveurs sera agrandi. Selon l'auteur, le stockage cloud comme Amazon ou Azure ne correspond pas au modèle commercial actuel, il a donc été immédiatement décidé de déployer l'intégralité du backend sur ses propres serveurs.

Pour éviter d'éventuels troubles parmi les utilisateurs potentiels concernant la puissance de traitement insuffisante des serveurs, Ryan assure que "les serveurs ne sont utilisés que pour synthétiser et transmettre à l'utilisateur final un code binaire de seulement 3 kilo-octets". À mon avis, le volume de trafic est vraiment faible - "up" laisse le code source de Verilog, qui peut également être bien compressé, "down" vient le firmware binaire, dont la taille est vraiment petite en raison de la capacité relativement petite du FPGA utilisé.

Mais avec le chargement des serveurs par le processus de synthèse du firmware à partir du code Verilog, à mon avis, tout n'est pas uniquement optimiste. Même si nous omettons le processus d'optimisation du placement physique des circuits résultants dans l'espace FPGA général, ce qui nécessite définitivement une interface graphique assez rapide et un échange constant de paquets d'informations assez volumineux avec le serveur, le processus de synthèse du firmware lui-même reste, ce qui, à mon avis personnel, est le premier , doit consommer suffisamment de temps processeur et, d'autre part, est de nature non déterministe et peut être retardé.

Personnellement, je me suis familiarisé avec les FPGA dans la première moitié du zéro (il s'agissait d'Actel FPGA, dont le firmware a été développé dans le pack Libero + Synplify + ModelSim) et, pour autant que je m'en souvienne, le processus de synthèse n'a jamais été éclair, même pour des projets simples et éducatifs. En fait, comme tout processus de compilation, la synthèse est caractérisée par toutes sortes de hoquets et de bégaiements périodiques, mais espérons que le temps de réponse moyen du serveur sera dans le cadre de la patience humaine. Soit dit en passant, lorsque dans la FAQ l'auteur parle d'optimiser la compilation en mettant en cache les fichiers binaires (si le code du fichier Verilog et les indicateurs du compilateur sont inchangés, l'utilisateur reçoit simplement le dernier binaire reçu), puis il mentionne que "vous n'aurez pas besoin de 2 minutes attendons l'achèvement du processus de synthèse. "

Si pour une raison quelconque, vous n'êtes pas satisfait du développement via le navigateur (au moins, on peut supposer que le processus sera humide au début), alors vous pouvez travailler avec des FPGA via IceStorm / iCECube.

Si vous êtes intéressé par la technologie WebUSB, vous pouvez prêter attention aux projets ouverts suivants (tous les liens mènent à GitHub, vous pouvez donc vous mettre immédiatement sous ces hottes pour ces projets):

  • WebUSB + Arduino . Il ne fonctionne que sur les cartes mères compatibles Arduino avec USB complet, comme Arduino Zero ou Adafruit Feather 32u4.
  • Weblight . Une LED connectée au microcontrôleur ATtiny85 et contrôlée via Internet. Bien sûr, si vous pouvez contrôler la LED, vous pouvez contrôler d'autres appareils externes, tout ce qui peut être connecté au GPIO.
  • Yubikey HOTP . Dispositifs de protection des données personnelles sur les ordinateurs et les smartphones. Ils travaillent avec Facebook, Gmail, GitHub et de nombreux autres services.
  • webdfu . USB DFU est utilisé pour programmer les microcontrôleurs. J'utilise moi-même ce mode pour programmer des appareils basés sur des microcontrôleurs STM32. Maintenant, si l'installateur doit contourner l'installation technologique et mettre à jour le firmware de plusieurs dizaines d'appareils, vous pouvez emporter non pas un ordinateur portable avec Windows, mais un téléphone Android.
  • JS IDE pour RTOS Zephyr Project, qui vous permet de télécharger du code sur toutes les cartes compatibles Zephyr, et il y en a plus d'une centaine. Achetez dès maintenant quelque chose comme STM32F723E Discovery ou UDOO Neo Full et écrivez le code pour eux directement sur votre téléphone.

Sur la page du projet, les développeurs parlent de la prise en charge de la technologie WebUSB dans Chrome, Opera et Edge, mais mozilla.org a maintenant d'autres informations, Edge ne figure pas dans la liste des navigateurs compatibles:



Étant donné que Microsoft Edge n'occupe désormais que 5,2% du marché des navigateurs, ce n'est pas critique, mais si vous avez toujours Edge, soyez conscient des incompatibilités possibles. D'autre part, il est désormais possible de développer des FPGA sous Chrome OS, ce qui était auparavant impossible en principe.

Dois-je aider ce projet? À mon avis, ça vaut le coup. Malheureusement, quand je voulais déjà rejoindre les rangs des contributeurs, il s'est avéré que pour commander WebFPGA, vous devez être un résident des États-Unis ou du Canada. Si vous êtes un résident du «château» mondial, l'auteur demande diplomatiquement à le contacter et promet de réfléchir à ce qui peut être fait à ce sujet. Je ne comprends pas très bien à quoi cette restriction est liée, généralement les auteurs de campagnes de financement participatif déterminent simplement les différents coûts de livraison de l'article dans différents pays (conformément aux tarifs postaux du pays de localisation du projet), de sorte que le colis peut également être reçu dans des régions moins prospères qu'en Amérique du Nord.

Le FPGA iCE40UP5k, pour autant que je sache, ne relève d'aucune restriction à l'exportation et est disponible gratuitement sur Mouser au prix de 6,46 €. Le microcontrôleur STM32L041F6 pour 2,02 € est d'autant plus disponible en commande gratuite. Peut-être que l'auteur de la campagne de financement participatif a décidé d'être guidé par le principe Pareto 80/20 et de refuser gentiment de travailler avec des clients en dehors du monde œcuménique civilisé? S'il tire vraiment seul le projet, cela peut s'avérer être la bonne décision commerciale.

Le projet, bien sûr, est quelque peu controversé. Développement sur Verilog dans un navigateur utilisant un logiciel cloud - enfin, plutôt cool; en particulier pour les pays où le respect des logiciels propriétaires est soutenu par de nombreux précédents juridiques réels et le téléchargement d'IDE vraiment cool et pratique pour le développement sur Verilog à partir de torrents, puis leur utilisation dans votre entreprise, est un phénomène beaucoup moins courant que , disons, dans les pays des premiers. URSS. Moi-même, bien sûr, je ne télécharge rien des torrents, et je ne vous conseille pas, mais quelqu'un peut le faire, vous pouvez tout attendre de lui .

D'un autre côté, il est désormais possible d'utiliser une sorte d'environnement de programmation gratuit pour les FPGA (au moins iCEcube2, qui, bien qu'il soit lié à votre compte Lattice et à l'adresse MAC de la machine qui fonctionne, est distribué gratuitement) plus une carte de débogage peu coûteuse d'un fabricant chinois, donc si vous ne pouvez pas acheter de logiciels spécialisés, il n'est pas nécessaire de vous concentrer sur le cloud computing. Mais - le projet est assez cool en soi (Verilog! Dans le navigateur! WOW!), Et peut conduire à quelque chose de plus à la suite du développement. Peut-être qu'avec le temps, l'écosphère va naître, à proximité des communautés d'utilisateurs d'Arduino ou de Raspberry Pi, et les amateurs de FPGA amateurs pourront échanger du code Verilog, des noyaux compilés et d'autres développements aussi librement qu'aujourd'hui dans le monde des microcontrôleurs. En général, il me semble que les avantages de la campagne l'emportent sur les inconvénients.

Au crédit des auteurs de la campagne de crowdfunding, ils ne cachent pas le fait de l'existence de dispositifs compétitifs, qui tentent également de combiner un rembourrage intéressant et un prix assez bas:

  • MojoBoard V3, au prix de 75 $, embarque le FPGA Spartan 6 XC6SLX9 dans le boîtier TQFP-144, compagnons du microcontrôleur ATmega32U4 pour 84 GPIO;
  • IceBreaker, un autre projet de financement participatif, a déjà été clôturé avec succès; pour 69 $, une carte mère avec Lattice iCE40UP5k FPGA et convertisseur FT2232 est offerte;
  • TinyFPGA BX, prix 38 $, FPGA ICE40LP8K (7680 cellules logiques), 41 broches GPIO.

Personnellement, alors que je vis en Russie, je ne peux pas participer pleinement au projet WebFPGA, mais j'ai envoyé à Ryan 5 $ en utilisant l'option «Faire un don sans rémunération» (c'est quelque chose comme le bouton «Envoyer de l'argent à l'auteur» sur Habré). Premièrement, il me semble que le projet lui-même est très intéressant et utile. Deuxièmement, un petit don m'abonne automatiquement à toutes les nouvelles sur le projet, donc je sens un peu Warren Buffett, qui achète parfois une action de la société qui l'intéressait, de sorte que plus tard, en tant qu'actionnaire, bien que minoritaire, recevoir chaque année un ensemble complet de rapports.

À en juger par l'identité des auteurs, dont l'un passe la nuit et dort sur GitHub, donc même si le projet ne décolle pas, nous aurons toujours beaucoup de code source très utile, et, éventuellement, au fil du temps, il y aura des gens prêts dites lever une bannière tombée.

J'ai un petit blog sur le matériel open source et le financement participatif; Si vous avez un projet de développement de bricolage ou de financement participatif intéressant dans le domaine de l'électronique, je serai reconnaissant pour le lien.

Source: https://habr.com/ru/post/fr457910/


All Articles