Introduction
L'expression "Press Esc to abort testing" (Appuyez sur Échap pour interrompre le test) est souvent rencontrée dans le contexte de systèmes embarqués et de tests de matériel. Elle indique une option pour l'utilisateur d'interrompre un processus de test en cours, généralement en appuyant sur la touche Échap (Esc) de son clavier. Dans le monde des FPGA (Field-Programmable Gate Arrays), cette notion prend une dimension particulière, car elle peut se référer à l'interruption de la configuration ou de l'exécution d'un design sur le FPGA. Cet article explore l'univers des FPGA Gowin, en s'appuyant sur des exemples concrets et des projets open source, tout en gardant à l'esprit la possibilité d'interrompre les processus, à l'image du fameux "Press Esc".
Gowin et les FPGA Low-Cost
Sipeed continue dans sa course à l’échalote des kits FPGA low cost en proposant un kit Gowin à $4.90. Évidemment à ce prix là c’était trop tentant d’en prendre un. Le kit est fourni avec des headers males (pattes) non soudés. Ils ne sont pas nécessaire pour faire clignoter la LED ou pour jouer avec l’écran, mais c’est quand même utile. Le FPGA soudé sur la carte est un GW1N-LV1, assez petit donc, mais il reste raisonnable puisque de la même taille que le ice40 soudé sur le icestick.
Je viens donc de recevoir ma carte petite abeille (littlebee) munie d’un FPGA du chinois GOWIN. Ça y est, le colis contenant la carte de développement Tang Nano 9k est arrivé. Contrairement à la TangNano4k je ne l’ai pas reçue rapidement, il a fallu attendre environ deux mois. La petite carte, muni d’un littlebee GW1NR-LV9 est tout de même plus grande que les petites sœur. Cette carte est plus «grande» que la 4k mais elle possède autant de PSRAM (64Mbits) et ne possède pas de cœur ARM.
Les FPGA Gowin, notamment les séries LittleBee et Tang Nano, se distinguent par leur accessibilité et leur faible coût. Ces cartes de développement, souvent disponibles sur des plateformes comme AliExpress, offrent une porte d'entrée abordable dans le monde des FPGA pour les amateurs, les étudiants et les professionnels.
Premiers Pas avec la Tang Nano 9k
Pour se faire la main il est donc naturel de commencer par la led. Il faut d’abord lancer l’IDE officiel de gowin, comme décrit dans l’article de hackable-32 (le plus compliqué avec l’installation de gowin est d’obtenir la licence, après ça roule). Le FPGA du kit se nomme GW1NSR-LV4CQN48PC7/I6 et le code Verilog de clignotement est le suivant. Le projet est déjà synthétisé, si on souhaite le relancer il suffit de faire un clic-droit «rerun» sur «Synthesize».
Lire aussi: Le trimestre de retraite décrypté
Le premier projet proposé dans le dépôt concerne le HDMI. Le générateur de pattern se charge également de générer les signaux de synchronisation vidéo. Mais ce qui nous intéresse particulièrement c’est le bloc qui pilote le HDMI. Le bloc est tout de même instanciable au moyen d’une BlackBox chisel.
La carte Tang Nano 9k, équipée d'un FPGA LittleBee GW1NR-LV9, est un excellent point de départ. Malgré sa taille compacte, elle offre une mémoire PSRAM de 64 Mbits et permet de réaliser des projets variés, allant du simple clignotement de LED à la génération de signaux HDMI.
Clignotement de LED : Un Classique Indémodable
Comme souvent dans le monde des microcontrôleurs et des FPGA, le premier projet consiste à faire clignoter une LED. Cela permet de se familiariser avec l'IDE (Integrated Development Environment) de Gowin et de comprendre le processus de synthèse et de programmation du FPGA.
Exploration du HDMI
Le deuxième projet proposé dans le dépôt concerne le HDMI. Le générateur de pattern se charge également de générer les signaux de synchronisation vidéo. Mais ce qui nous intéresse particulièrement c’est le bloc qui pilote le HDMI. Le bloc est tout de même instanciable au moyen d’une BlackBox chisel.
Au-Delà du Clignotement : LiteX et Linux sur FPGA
Après avoir déballé le kit gowin proposé par trenz micro. Il faut trouver quelques chose à faire de plus avancé qu’un simple clignotement de LED. Pourquoi ne pas tenter le Linux des FPGA, j’ai nommé LiteX (Prononcez Lahïtixe ) ? LiteX inclut un langage de description matériel, mais également tous les outils permettant de faire des simulations, la synthèses et générer les bitstreams pour la plupart des FPGA du marché. Bien évidement, en ce qui concerne la synthèse et les bitstreams, LiteX pilote les outils propriétaires des constructeurs.
Lire aussi: Aide pour que votre enfant de 3 ans dorme paisiblement
Pour ceux qui souhaitent aller au-delà des exemples de base, LiteX offre une solution intéressante. Ce framework open source permet de créer des systèmes sur une puce (SoC) et de faire tourner un système d'exploitation Linux sur un FPGA. Bien que l'implémentation pour les FPGA Gowin soit encore en développement, elle ouvre des perspectives intéressantes pour des applications plus complexes.
Ingénierie Inverse et Open Source : Apicula et IceStorm
Le Gowin GW1N ne documente pas très stables. Le format du bitstream n’est pourtant pas chiffré. qu’il est parfaitement possible d’en faire l’ingénierie inverse. maintenant Claire) Wolf a sorti sa suite open source pour le Lattice iCE40 : IceStorm. Presque tous les modèles de FPGA ont leur projet d’ingénierie inverse aujourd’hui. Tous ne sont pas terminés, loin s’en faut. rapide, il manque encore en effet un certain nombre de blocs à décoder. Les deux éléments qui nous intéressent ici sont : la LUT (Look Up Table) et le REG (registre).
Pepijn de Vos a effectué un stage pour Symbiotic EDA. Et l’ingénierie inverse du GW1N était son sujet de stage. C’est d’ailleurs le kit utilisé actuellement par Pepijn de Vos son projet d’ingénierie inverse nommé Apicula (mais chuuut le projet n’est pas encore public !).
L'ouverture et la transparence sont des valeurs importantes dans le monde des FPGA. Des projets d'ingénierie inverse, tels que Apicula pour les FPGA Gowin et IceStorm pour les Lattice iCE40, visent à décoder le fonctionnement interne de ces puces et à fournir des outils open source pour leur développement.
Yosys et Nextpnr : Des Outils Open Source pour la Synthèse et le Placement-Routage
Yosys, le logiciel de synthèse Verilog. Pour le détail des dépendances et autres subtilités d’installation, voir le site officiel. nextpnr, le logiciel de placement routage. Il faut le compiler avec le paramètre «generic». make sudo make install Dans mon cas, j’ai dû forcer l’utilisation de Python 3.7 dans le fichier CMakeLists.txt : findpackage(PythonInterp 3.7 REQUIRED); pour pouvoir exécuter les scripts en argument avec Python 3.7. Il faut juste avoir en tête que le projet n’est pas terminé et qu’il faut se taper le placement‐routage des entrées‑sorties « à la main », d’où les directives (* … *) et les modules GENERICIOB().
Lire aussi: Allaitement et diversification à 7 mois
Yosys et Nextpnr sont deux outils essentiels pour le développement de FPGA. Yosys permet de synthétiser le code Verilog en un netlist, tandis que Nextpnr réalise le placement et le routage des composants sur le FPGA. Bien que le support des FPGA Gowin soit encore en développement, ces outils offrent une alternative open source aux solutions propriétaires.
OpenFPGALoader : Téléverser Facilement les Bitstreams
on doit se retrouver avec un bitstream nommé pack.fs que l’on peut téléverser dans le FPGA au moyen de l’utilitaire libre openFPGALoader maintenu par Trabucayre (Gwenhael Goavec‑Merou) : openFPGALoader -m -b littleBee pack.fs # FOSS programmer Parse pack.fs: Done erase SRAM Done Flash SRAM: [==================================================] 100.000000% Done SRAM Flash: FAIL Le FAIL est connu et vient d’une sombre histoire de somme de contrôle que openFPGALoader ne sait pas encore calculer et qu’Apicula ne fournit pas. Un ticket est ouvert sur le sujet dans le projet, Trabucayre sera ravi d’accepter des correctifs.
OpenFPGALoader est un utilitaire open source qui simplifie le processus de téléchargement des bitstreams sur les FPGA. Il supporte de nombreux modèles de FPGA, y compris les Gowin, et permet de programmer la mémoire SRAM du FPGA via une connexion USB.
Défis et Limitations
Attention à certain IO du pinout, qu’il vaut mieux éviter d’utiliser… comme la sortie LED (IOT7A) ! Il est encore difficile de trouver des informations techniques sur cette carte, pourtant disponible (et rapidement livrée) sur aliexpress. Le wiki officiel est encore intégralement en chinois, mais on trouve le code d’exemple sur github.
Malgré leur attrait, les FPGA Gowin présentent certaines limitations. La documentation technique est souvent incomplète ou en chinois, ce qui peut rendre le développement plus difficile. De plus, le support des outils open source est encore en développement, ce qui peut nécessiter des manipulations manuelles et une certaine expertise.
Interruption et Contrôle : Le Sens de "Press Esc to Abort Testing"
Dans le contexte des FPGA, l'interruption d'un processus de test ou de configuration est cruciale. Imaginez un scénario où un bitstream corrompu est en cours de téléchargement sur le FPGA. Sans la possibilité d'interrompre le processus, le FPGA pourrait devenir inutilisable. La commande "Press Esc to abort testing" offre cette possibilité de contrôle à l'utilisateur.
tags: #press #esc #to #abort #testing #signification