Le changement vers la préservation du matériel et des jeux

Contrairement à un processeur qui récupère des instructions de mémoire ou un GPU qui exécute des programmes de shader sur des centaines de cœurs, un FPGA permet aux ingénieurs de construire des circuits logiques numériques personnalisés directement sur la puce. Cela signifie qu'un seul FPGA peut devenir une réplique parfaite d'un processeur central classique, d'un contrôleur d'affichage vidéo et d'une puce sonore, tous fonctionnant dans un matériel avec une précision précise du cycle.

Le monde du jeu a d'abord remarqué que des projets comme Analogue Nt Mini ont démontré qu'un FPGA pouvait jouer des cartouches NES originales avec une authenticité irréprochable sur des écrans modernes. Depuis, la technologie s'est développée en portables, en plateformes open-source, et même en consoles expérimentales modernes. Comprendre les principes sous-jacents et l'effort d'ingénierie derrière ces systèmes révèle pourquoi l'accélération FPGA n'est pas seulement un gimick, mais un changement fondamental dans la façon dont nous construisons et conservons le matériel de jeu.

Comment les FPGA fonctionnent au niveau de la porte

Chaque CLB contient une table de recherche (LUT) qui peut implémenter n'importe quelle petite fonction booléenne, un flip-flop pour stocker l'état, et un multiplexeur pour les signaux de routage. En chargeant un bitstream – un fichier de configuration binaire – les développeurs définissent comment ces blocs sont câblés ensemble pour former des circuits numériques complexes. Le même FPGA peut ensuite être reprogrammé pour devenir un système entièrement différent simplement en chargeant un nouveau bitstream.

Les langages de description matérielle (HDL) comme Verilog ou VHDL sont utilisés pour décrire le comportement du circuit souhaité. Par exemple, pour créer un processeur 6502, vous écrivez un code RTL qui spécifie le décodage des instructions, les opérations ALU et le fichier de registre. L'outil de synthèse mappera ce code sur les LUTs et les tongs FPGA. L'analyse du temps assure que chaque signal répond à la fréquence de l'horloge cible. Contrairement à l'émulation logicielle, qui ajoute des couches d'abstraction, le FPGA devient physiquement le circuit.

Les FPGA modernes de AMD Xilinx et Intel intègrent également des blocs durcis tels que des tranches DSP pour multi-accumulation rapide, des blocs RAM (BRAM) pour le stockage sur puce, des boucles verrouillées par phase (PLL) pour la génération d'horloges, et des transceivers à grande vitesse pour HDMI ou USB. Ces blocs durcis accélèrent les tâches communes sans consommer de logique générale, ce qui permet d'implémenter des conceptions système sur puce sur une seule matrice FPGA. Par exemple, les tranches DSP48E2 dans les appareils Xilinx peuvent gérer l'échelle vidéo et la conversion d'espace de couleur sans consommer un seul élément logique.

Les avantages techniques pour le matériel de jeu

La construction d'une console autour d'un FPGA apporte des avantages concrets qui vont au-delà de la nostalgie. Ces avantages expliquent pourquoi les produits commerciaux et les communautés open-source ont embrassé la plateforme avec tant d'enthousiasme.

Authenticité du cycle

Les émulateurs logiciels doivent traduire chaque instruction d'un processeur vintage en instructions CPU hôte, souvent en utilisant la recompilation dynamique. Ce processus introduit des inexactitudes de chronométrage qui peuvent briser les jeux en s'appuyant sur des chronométrages spécifiques ou une synchronisation coprocesseur. Un noyau FPGA fonctionne la logique originale exactement comme le ferait le silicium : le même nombre de cycles d'horloges par instruction, la même dispute de bus DMA, les mêmes limites d'échantillons audio. Pour la conservation, c'est la seule méthode connue pour garantir que chaque jeu se comporte de la même manière que le matériel original. Cette précision est critique pour les systèmes comme le Super Nintendo, où les puces Super FX et les coprocesseurs SA-1 repoussent les limites de ce qui peut être émulé dans un logiciel sans glissades détectables.

Faible latence déterministe

Les consoles basées sur le FPGA contournent entièrement ces paramètres. L'entrée du contrôleur peut être échantillonnée directement par le noyau matériel, et les pixels vidéo sont générés avec un pipeline fixe qui sort à l'affichage à l'horloge exacte du pixel. Beaucoup de conceptions même produisent des vidéos analogiques natives vers les CRT, obtenant des temps de réponse sous un milliseconde. Ceci est essentiel pour les jeux rétro compétitifs et pour les implémentations modernes où l'interaction en temps réel est importante, comme les jeux de rythme ou les événements à temps rapide. L'échelle de RetroTINK 4K, par exemple, fait appel à un FPGA pour réaliser une augmentation de la latence de 4K presque nulle que les solutions logicielles ne peuvent pas correspondre.

Exécution parallèle inhérente

Chaque module — CPU, GPU, processeur audio, contrôleur DMA — fonctionne simultanément sur des ressources dédiées en silicium. Ceci est analogue à avoir des puces physiques séparées pour chaque sous-système, communiquant par des fils dédiés. Dans un émulateur logiciel, le CPU hôte doit couper le temps et prioriser ces tâches, ce qui conduit à des frais généraux. Un FPGA élimine entièrement ce goulot d'étranglement. La nature parallèle simplifie également l'intégration de coprocesseurs complexes.

Performance énergétique

Recréer une console 16 bits sur un PC de bureau pourrait dessiner 200 watts. Un FPGA implémentant le même système peut fonctionner sur 10 watts ou moins. La raison est simple : le FPGA ne fait que basculer les portes qui sont activement nécessaires. Il n'y a pas de système d'exploitation en hauteur, pas de pipelines de ombres redondants, et pas de hiérarchie de mémoire en vol. Pour les consoles portables, cette efficacité se traduit par des heures de vie de batterie au lieu de minutes.

Matériel de mise à niveau sur le terrain

La configuration FPGA étant stockée dans un flash externe, la mise à jour de la console est aussi facile que le chargement d'un nouveau bitstream. Cela permet aux développeurs de corriger des bogues matériels, d'ajouter de nouvelles fonctionnalités, ou même de prendre en charge des systèmes de console entièrement nouveaux sans remplacer un seul composant. La Analogue Pocket utilise cette capacité pour soutenir un écosystème openFPGA où les développeurs tiers peuvent créer et distribuer leurs propres cœurs.

L'évolution de la Niche à Mainstream

L'ingénieur Kevin -Kevtris-Horton a conçu un seul FPGA qui pourrait remplacer la carte mère NES en sortie vidéo 1080p sans décalage. Son travail a attiré l'attention de Analogue, qui a commercialisé le concept avec la Nt Mini. Analogue a ensuite publié le Super Nt et Mega Sg, prouvant qu'il y avait un marché pour les consoles FPGA de première qualité. Ces appareils se sont vendus rapidement, montrant que les amateurs étaient prêts à payer une prime pour la précision et la qualité de construction.

Au même moment, le projet MISTer a émergé comme une alternative communautaire. Avec un plateau Terasic DE10-Nano (Cyclone V FPGA), des bénévoles ont développé des noyaux pour ordinateurs classiques (Amiga, C64, MSX), des tableaux d'arcade et des consoles jusqu'à l'ère PlayStation. La plate-forme MiSTer supporte maintenant plus de 150 systèmes différents, avec de nouveaux cœurs apparaissant régulièrement. Sa conception modulaire permet aux utilisateurs d'ajouter des modules RAM, des tableaux analogiques d'E/S et des hubs USB. Le succès du projet a inspiré des efforts similaires à l'aide de panneaux FPGA moins chers comme le Lattice ECP5, et a même conduit à des retombées commerciales comme le MARS FPGA[ et Pocket MiSTer]. La communauté a parcouru les défis juridiques de la distribution de fichiers BIOS en exigeant des utilisateurs de vider leur propre matériel tout en distribuant librement la logique matérielle.

Conception d'une console FPGA moderne : du concept au silicone

La création d'une console complète basée sur le FPGA nécessite une expertise en conception numérique, en mise en page des PCB et en intégration du système.

Choisir le bon FPGA et le bon conseil d'administration

Pour les consoles 8 bits et 16 bits, un FPGA de moyenne portée avec 50 000 à 100 000 éléments logiques est suffisant. Pour les systèmes 3D précoces comme PlayStation ou Sega Saturne, vous avez besoin de 200 000 LEs, plus des tranches de RAM et DSP en bloc. Le Intel Cyclone V (utilisé dans MiSTer) et Xilinx Artix-7 sont des choix populaires. Pour les projets de pointe, les appareils haut de gamme comme le Xilinx Kintex ou Versal fournissent les ressources pour le traçage en temps réel des rayons ou les accélérateurs de réseau neuronal. Le tableau doit également inclure la mémoire haute vitesse (DRD3/DR4), les interfaces de sortie vidéo (HDMI, VGA, analogique), les codecs audio et les ports de contrôleur.

Écrire le noyau en Vérilog ou VHDL

Pour les systèmes largement pris en charge, les cœurs open-source existants (comme ceux du dépôt MiSTer) fournissent un point de départ. Le code est structuré en modules : cœur de processeur vidéo, générateur audio, contrôleur mémoire et arbiter de bus. Chaque module est simulé avec des testbenches pour vérifier la précision fonctionnelle et temporelle. Des outils comme ModelSim ou Vérilateur sont utilisés pour la simulation, et Xilinx Vivado ou Intel Quartus pour la synthèse et le lieu-et-route. Fermeture de temps – assurer que tous les chemins répondent à la fréquence de l'horloge cible – nécessite souvent plusieurs itérations et une gestion prudente des contraintes.

Vérification et débogage

Vous ne pouvez pas facilement définir des points d'arrêt ou inspecter les valeurs variables à mi-cycle. Les développeurs comptent fortement sur les analyseurs logiques intégrés (ILA) de Vivado ou Quartus, qui utilisent la RAM de bloc de rechange pour tamponner les signaux internes et les diffuser sur JTAG. Les outils de vérification formels gagnent également en traction; ils prouvent mathématiquement que l'implémentation de la FPGA correspond au modèle de référence doré. Pour les noyaux de console, exécuter les ROM réels du jeu à travers le vecteur de simulation est le test ultime. Cette approche de " simulation par lots " peut exécuter des millions de cycles d'horloges du jour au lendemain pour attraper des bugs insaisissables. Le projet MiSTer utilise une suite de test standard de ROM difficiles connus pour valider de nouvelles versions de noyau.

Conception des PCB et intégrité des signaux

La carte physique doit gérer les signaux à haute vitesse pour la mémoire DDR, HDMI (jusqu'à 1,65 Gbps ou plus) et USB 2.0/3.0. Les traces d'impédance contrôlées (généralement 50 ohms à un seul bout, 90 ohms différentiel pour USB, 100 ohms pour HDMI) sont essentielles, tout comme les condensateurs de découplage près de chaque broche de puissance. Pour l'authenticité rétro, de nombreux concepteurs incluent des ports de contrôleur originaux avec des décalages de niveau pour gérer la logique 5V. Les sorties vidéo analogiques (RGB, S-Video, composite) nécessitent des DAC externes et des filtres anti-aliasing. L'audio peut être émis par I2S à HDMI ou par un DAC séparé. L'isolement du plan de terre entre les sections numériques et analogiques empêche le bruit de la qualité vidéo dégradante. La gestion thermique est également importante; un grand FPGA peut dissiper plusieurs watts, nécessitant des dissipateurs et parfois un refroidissement actif.

Intégration des logiciels et expérience utilisateur

Pour les systèmes rétro, il s'agit souvent d'un noyau Linux minimal qui charge le bitstream FPGA et présente un menu pour sélectionner les ROM. L'interface utilisateur doit gérer les systèmes de fichiers (FAT32, ext4), l'échelle d'affichage et la cartographie des contrôleurs. Certaines consoles prennent également en charge les états de sauvegarde, les tris et les filtres d'écran. Pour le développement original des jeux, les développeurs peuvent utiliser un processeur soft-core comme RISC-V utilisant un code métal nu, déchargeant des graphiques et audio vers des accélérateurs FPGA personnalisés. Les outils de synthèse de haut niveau (HLS) permettent d'écrire des parties de la conception en C++ et de les convertir en matériel, accélérant le développement pour les programmeurs inconnus avec les HDL. L'écosystème MiSTer utilise un binaire "Main" qui gère l'entrée USB, les menus OSD et l'accès au système de fichiers, tandis que le noyau ne gère que l'émulation matérielle.

Applications réelles et potentiel futur

Des dispositifs comme Analogue Pocket et [MiSTer[ permettent aux joueurs de profiter de bibliothèques classiques sans compter sur des émulateurs qui peuvent avoir des bogues de timing ou un décalage d'entrée. L'initiative openFPGA permet à la communauté de faire des ports de noyaux sur les plateformes, assurant que même des systèmes obscurs peuvent être expérimentés authentiquement. L'explosion récente du développement du noyau d'arcade signifie que des tableaux de jeu entiers sont conservés dans la forme de langage de description matérielle, les protégeant de la dégradation physique.

Au-delà des rétros, les FPGA commencent à apparaître dans le développement moderne des jeux. Ils peuvent accélérer les tâches à forte intensité de calcul telles que les simulations physiques, le traçage en temps réel des rayons et le upscaling de l'IA (comme FSR ou DLSS). Les fabricants de consoles ont expérimenté avec les FPGA pour le traitement des I/O (comme dans le PS4=S sudbridge) ou comme une plate-forme de prototypage flexible pour le silicium personnalisé.

En regardant vers l'avant, les architectures de puces peuvent permettre de jumeler un processeur/GPU principal avec une petite tuile FPGA sur le même interposeur. Cela permettrait aux développeurs de reconfigurer une partie du matériel consoles après la sortie, permettant des fonctionnalités comme les codecs personnalisés, les accélérateurs de sécurité ou même les correctifs de compatibilité rétro. La chaîne d'outils open-source Yosys et nextpnr rendent le développement FPGA plus accessible, réduisant ainsi la dépendance à des outils propriétaires coûteux. Par exemple, la famille Lattice ECP5 dispose désormais d'un excellent support open-source grâce à Project Trellis, permettant à des cartes peu coûteuses comme OrangeCrab de lancer des cœurs personnalisés.

Surmonter les obstacles à l'adoption

Malgré ses avantages, le développement de FPGA reste difficile. Le codage HDL nécessite un état d'esprit différent de la programmation logicielle; les conditions de course et les problèmes de calendrier sont difficiles à déboguer. Les outils propriétaires comme Vivado et Quartus sont grands et nécessitent souvent des licences coûteuses pour les appareils haut de gamme. Les solutions de rechange open-source sont encore en voie de maturation et peuvent ne pas supporter toutes les familles FPGA. Le coût d'une carte FPGA capable peut être important (DE10-Nano coûte environ 200 $), et l'ajout de RAM, de sortie vidéo et de contrôleurs pousse le prix plus haut. Une configuration MiSTer entièrement équipée peut dépasser 500 $, la mettant hors de portée pour les joueurs occasionnels.

Cependant, la communauté a fait de grands pas. Des ressources éducatives comme NANDLAND fournissent des tutoriels accessibles aux concepteurs débutants HDL. Des sites comme le MiSTer Wiki[ offrent une documentation étendue et des cœurs préconstruits. Les chaînes d'outils open-source comme Yosys et NextPNR ont suffisamment mûri pour gérer des conceptions complexes sur des appareils Lattice, libérant les développeurs du verrouillage des fournisseurs.