Le Tang Nano 20K démocratise la conception sur FPGA
La carte Tang Nano 20K et sa puce GOWIN GW2AR-18 rendent la conception sur FPGA accessible pour quelques dizaines d'euros, avec une mémoire embarquée et des outils logiciels gratuits.
Les FPGA, longtemps réservés aux ingénieurs disposant de budgets confortables, sont désormais accessibles pour quelques dizaines d'euros. La carte Tang Nano 20K, construite autour de la puce GOWIN GW2AR-18, incarne cette démocratisation. Elle permet d'expérimenter la logique programmable sans investissement lourd, tout en offrant des ressources suffisantes pour des projets sérieux.
Un FPGA, ou réseau de portes programmables in situ, est un circuit composé de blocs logiques non connectés que l'utilisateur relie par une configuration logicielle. Cette approche se distingue d'un processeur classique, qui exécute des instructions les unes après les autres. Un FPGA peut au contraire traiter des centaines de signaux simultanément, sans partage de temps d'exécution. C'est précisément ce qui le rend irremplaçable dans certaines applications critiques.
La Tang Nano 20K embarque la puce GW2AR-LV18QN88C8/I7, qui contient 20 736 tables de correspondance à quatre entrées, ou LUT4, et 15 552 bascules. Sa fréquence maximale dépend du routage et de la logique déployée, mais la puce évolue confortablement dans les centaines de mégahertz pour des conceptions correctement pipelinées. La comparaison directe avec d'autres FPGA reste délicate, car la puissance des blocs varie d'un fabricant à l'autre.
Son atout principal réside dans la mémoire. La puce intègre à la fois de la RAM distribuée, qui consomme des ressources logiques, et de la RAM en blocs dédiés. Elle ajoute surtout 8 mégaoctets de SDR SDRAM 32 bits directement dans le boîtier. Cette mémoire externe au tissu logique libère des ressources précieuses, même si son pilotage en consomme une partie. La carte dispose également de 48 multiplicateurs 18x18, d'un générateur d'horloge programmable, de 64 mégabits de flash QSPI et de connecteurs pour l'audio, l'écran LCD, la microSD et le HDMI. Un microcontrôleur intégré permet de programmer le générateur d'horloge, de flasher la puce via JTAG ou de fournir un port série virtuel vers l'ordinateur hôte.
Le flux de travail sur FPGA suit plusieurs étapes. L'utilisateur décrit d'abord la logique voulue dans un langage de description matérielle comme Verilog ou VHDL. Il définit ensuite un bloc supérieur qui fait le lien avec l'extérieur, puis établit les contraintes de brochage. La synthèse convertit le code en primitives, le placement-routage assigne ces primitives aux ressources physiques et génère un bitstream. Ce fichier est enfin téléchargé dans la RAM du FPGA ou dans la flash de configuration, ce qui permet à la carte de conserver son programme après une coupure d'alimentation. L'IDE de GOWIN ou des outils open source permettent de mener toutes ces opérations.
Contrairement à une idée répandue, la conception sur FPGA ne consiste pas à dessiner des schémas de portes logiques. L'IDE GOWIN ne propose d'ailleurs pas cette fonction, même s'il peut afficher un schéma du résultat obtenu. À l'intérieur de la puce, il n'existe pas de portes AND ou OR câblées en dur. Les blocs sont des tables de correspondance : pour une fonction comme Z = A | (B & C) | (A ^ D), l'outil programme simplement une table qui produit le résultat voulu. Cette architecture explique pourquoi les LUT sont l'unité de mesure fondamentale d'un FPGA.
L'exemple le plus simple consiste à connecter deux interrupteurs à une porte logique et à inverser le résultat pour allumer une LED. En Verilog, quelques lignes suffisent pour décrire ce comportement. Rien ne s'exécute séquentiellement : le logiciel de conception traduit ces lignes en connexions physiques entre les blocs. C'est toute la différence entre programmer un processeur et configurer un FPGA.
Pourquoi choisir un FPGA plutôt qu'un microcontrôleur ? Un exercice classique comme le feu de circulation peut être réalisé avec un simple processeur 8 bits. Mais imaginez des centaines de capteurs sur une fusée, dont chacun doit déclencher une alarme en quelques microsecondes. Un processeur doit échantillonner les entrées par groupes, gérer des interruptions ou s'appuyer sur du matériel supplémentaire. Un FPGA peut implémenter l'équivalent d'une immense porte OR qui surveille tous les signaux en permanence, sans qu'une autre logique ne lui vole du temps d'exécution. Pour certaines classes de problèmes, le FPGA reste la meilleure réponse.
La Tang Nano 20K ne se limite pas à ces cas critiques. Elle peut aussi accueillir un processeur logiciel, et certaines puces intègrent même un cœur matériel. Ce compromis permet de traiter en logiciel ce qui est simple à programmer, et en matériel ce qui gagne à être parallélisé. Avec son prix modeste et ses ressources généreuses, la carte s'impose comme une plateforme d'apprentissage et de prototypage crédible pour les curieux comme pour les développeurs confirmés.
2
