Séquences binaires

Comme pour tout circuit FPGA, il est nécessaire de charger une nouvelle configuration dans le composant sous la forme d'une « séquence binaire ». Les composants FPGA plus volumineux, dépourvus de mémoire de configuration (NVCM), nécessitent de charger la séquence binaire à partir d'une mémoire externe, à chaque mise sous tension, ce qui les expose à des piratages et des détournements de données. D'où l'obligation de garder le secret sur les séquences binaires, et même de les chiffrer pour les circuits FPGA modernes les plus volumineux. Cependant, la séquence binaire du circuit Lattice iCE40 a été pratiquement complètement décodée par la communauté open source (ou « documentée » dans la langue des adeptes du code source ouvert). Il est donc possible de l’utiliser avec ces outils de développement FPGA ouverts.

Outils open source pour la carte TinyFPGA

Apio est, dans notre contexte, un outil idéal. Inspiré de PlatformIO, il s’agit d'un écosystème multiplateforme open source, adapté pour les cartes FPGA comme la TinyFPGA BX. Basé sur une interface de ligne de commande, Apio utilise le logiciel Icestorm pour les opérations de synthèse logique et de placement-routage. Il convertit ensuite le code Verilog en séquences binaires compatibles iCE40. Entre autres, Apio s’appuie aussi sur Icarus Verilog pour la simulation et la synthèse logique Verilog et — pour l’instant uniquement sur Windows — sur GTKWave comme visionneuse de simulation.

Outils graphiques

Face à la popularité croissante des interfaces graphiques, l’IDE (environnement de développement intégré) d'Apio en propose un basé sur Atom. Il en existe un autre, Icestudio, sous la forme d'un éditeur visuel et expérimental, pour la saisie de schémas.

L'installation de l'ensemble est assez simple et rapide si vous avez déjà installé Python 3 sur votre ordinateur. Il suffit alors de taper quelques commandes d’installation. Celles qui figurent dans le mode d'emploi (TinyFPGA BX User Guide) fonctionnent parfaitement, à l'exception d'une étape spécifique que j'ai dû ajouter :
 
apio install drivers

Ceci étant fait, connectez la carte à votre ordinateur et procédez à un test rapide :
 
tinyprog --update-bootloader
 
 
TinyFPGA BX tinyprog bootloader update
TinyProg a détecté ma carte.

Maintenant que tout fonctionne, vous pouvez partir à la découverte de la logique programmable.