Contexte et objectifs
Le projet zSST vise à reproduire le processeur graphique 3dfx Voodoo 1 (SST‑1) à l’aide d’un FPGA Xilinx KV260. L’auteur combine ce cœur graphique avec le processeur z486, déjà implémenté en SystemVerilog, pour former le z486 XL, un PC DOS complet capable de faire tourner des titres comme Need for Speed II SE ou Tomb Raider. Le KV260, fonctionnant à 100 MHz, offre suffisamment de logique, de blocs DSP, de mémoire interne et de bande passante DDR pour accueillir les deux cœurs, alors que la plateforme plus petite DE10‑Nano ne peut pas intégrer le bloc graphique.
Architecture du pipeline Voodoo sur FPGA
Le Voodoo 1 repose sur deux ASIC : le FBI (Frame Buffer Interface) et le TREX (Texture Mapping Unit). Le pipeline traite un pixel par cycle d’horloge graphique de 50 MHz, soit un débit théorique de 50 Mpix/s. Cette cadence n’indique pas qu’un pixel se termine en un seul cycle ; les étapes de rasterisation, texturation, tests de profondeur/alpha, fog, blending et écriture se chevauchent. Le rendu démarre par la soumission d’un « triangle préparé » via les registres de commande :
triangleCMD // démarre le rendu d'un triangle préparé
ftriangleCMD // même chose via l'interface flottante
nopCMD // vide le pipeline, réinitialise les compteurs
fastfillCMD // efface un rectangle couleur/profondeur
swapbufferCMD // échange les buffers, synchronisation V‑syncLes coordonnées et gradients sont stockés en format fixe : écran X/Y en 12.4, couleur en 12.12, profondeur Z en 20.12, texture S/W et T/W en 14.18, et W réciproque en 2.30. Les registres flottants acceptent les valeurs IEEE‑754 et les convertissent en ces représentations fixes, ce qui réduit chaque pixel à de simples additions d’incréments pré‑calculés.
Implémentation et performances
Sur le KV260, le cœur graphique et le CPU tournent à 100 MHz, doublant la fréquence d’origine du Voodoo 1 (50 MHz). La logique disponible permet d’instancier les deux blocs ASIC en SystemVerilog, tandis que la bande passante DDR interne assure le transfert des textures et du framebuffer sans module SDRAM externe. Les tests matériels se concentrent sur Tomb Raider, qui utilise le rendu 3dfx natif et montre des textures, du fog et du blending fonctionnels. La simulation montre le rendu du célèbre « Utah teapot », confirmant la conformité du pipeline aux spécifications Glide publiées en 1999.
Limites et perspectives
Le design ne couvre que la première génération SST‑1 ; les cartes Voodoo 2/3, qui introduisent le Z‑buffer complet et le multitexturing, restent hors de portée. La compatibilité logicielle dépend du driver Glide, dont le code source et la spécification comportementale sont les seules références publiques, laissant plusieurs décisions d’implémentation ouvertes. Le débit réel est limité par la capacité DDR du KV260 à fournir des texels à chaque cycle ; toute surcharge de texture dépasserait le pic de 50 Mpix/s. Enfin, l’absence de transform‑and‑lighting matériel signifie que le CPU doit encore réaliser la plupart des calculs de vertex, ce qui contraint les performances globales sur des scènes plus complexes.