Pirater un composant matériel pour qu'il remplisse une autre fonction que celle prévue par son fabricant, c'est l'essence même du DIY. Transformer des mini-ordinateurs en consoles, en projecteurs ou encore modifier les propriétés d'un routeur sont des exemples courants, mais il existe des passionnés dotés des connaissances nécessaires pour «faire parler» certains composants, et cela inclut les FPGA. Cela nous mène au blog personnel de l'ingénieur Thanassis Tsiodras, qui a décidé de compiler un CPU open source dans le FPGA d'un petit client léger. Pourquoi ? Parce qu'il le peut…
Un CPU open source dans un FPGA
L'histoire commence avec un article de Tom Verbeure, ingénieur matériel chez Nvidia. En gros, Verbeure a construit un ray tracer en temps réel en utilisant un FPGA très bon marché, ce qui n'est pas une exagération car il est aujourd'hui possible d'acheter des lots entiers sur eBay pour moins de 200 dollars. Le matériel en question est le client léger Pano Logic, disponible en versions G1 et G2. Le plan de l'entreprise était d'offrir un remplacement pour les ordinateurs traditionnels dans les environnements professionnels avec la flexibilité d'un FPGA, mais ses dirigeants ont jeté l'éponge en 2013, et son matériel est resté en suspens, sans support.
Cependant, à partir de ce point, les efforts de la communauté ont commencé à plier la volonté de ces clients légers. C'est ainsi que nous arrivons au blog de l'ingénieur et développeur Thanassis Tsiodras, qui a obtenu un Pano Logic G2 équipé du FPGA Spartan6 LX100. Son objectif ? Compiler un CPU open source à l'intérieur, et en profitant de la taille naturelle du FPGA, le faire fonctionner en multi-core. Une fois le client léger démonté, il a procédé à la création du câble JTAG pour relier un programmateur Xilinx compatible (qui coûte moins de 25 dollars sur eBay).
Les difficultés techniques
C'est ici que des difficultés sont apparues. Pour être plus précis, l'absence de support dans les versions récentes du logiciel officiel. Synthesis, le pack d'outils de Xilinx, ne supporte pas le Spartan6 LX100 dans son édition la plus récente (et gratuite) pour Linux. La seule version compatible avec LX100 fonctionne sous Windows, mais il y a plus : le travail de cette « configuration » consiste à installer une machine virtuelle... avec une image Linux. Il a pensé un moment pouvoir extraire de cette image tous les éléments nécessaires à son exécution native, mais il a trouvé une limite dans l'adresse MAC de la carte réseau virtuelle, car le logiciel s'attend à voir cette adresse et aucune autre.
Le résultat
Le reste de l'entrée se concentre finalement sur le plan original, qui est de compiler un CPU dans le FPGA, et je dois admettre que le contenu technique devient un peu lourd. En d'autres termes, c'est tout sauf un projet pour débutants. L'accès au matériel peut être économique (un FPGA dans un produit abandonné combiné à un programmateur à 25 dollars ne semble pas si mal), mais le code agit comme un filtre. Malgré tout, le résultat impressionne : un processeur LEON3 dual-core à 50 MHz, « synthétisé » dans un FPGA destiné à la poubelle. Le reste du projet consistera à accéder à d'autres composants du matériel, en particulier les 128 Mo de mémoire DDR2. Si vous voulez en savoir plus, n'hésitez pas à visiter le blog de Thanassis.
Site officiel : Cliquez ici