Tous les projets
03 / Génie — jeu rétro sur FPGA
Les Bleuets
Un jeu rétro dont la carte graphique est écrite de zéro en VHDL : une PPU à tuiles et à sprites, dans le FPGA d'un Zynq, jusqu'à la sortie HDMI.
Contexte
Projet de quatrième session en génie informatique à l'UdeS. Le défi : concevoir l'architecture d'un moteur de jeu à la façon des consoles 8 bits, où le rendu n'est pas fait par un logiciel mais par du matériel décrit en VHDL.
- mapBram: Quelle tuile, pour ce (x, y) ? → tuile, 6 bits
- tileBram: Quelle couleur dans la tuile 8 × 8 ? → indice, 4 bits
- pixelBram: La palette donne la couleur → RGB, 24 bits
- foregroundRender: Un acteur passe-t-il devant ? → pixel final
Démarche
- Le processeur ARM du Zynq fait tourner la logique du jeu et la position des objets. Il écrit la caméra et huit acteurs dans des registres, à travers un bus AXI.
- Pour chaque pixel, la PPU descend une chaîne de mémoires BRAM : la carte donne la tuile et la position dans la tuile, la tuile donne l'indice de couleur, la palette donne le RGB.
- Un module de premier plan vérifie si un acteur recouvre ce pixel et remplace alors l'arrière-plan : c'est le système de sprites.
- Le contrôle passe par un joystick Pmod lu en SPI, et l'image sort en HDMI.
Résultat
Un moteur graphique entièrement matériel, et une compréhension concrète de ce qui se passe sous chaque image : horloges, mémoires, bus et bits.
Outils
- VHDL
- Zynq
- Vivado
- Vitis
- C
- AXI
- BRAM
- HDMI
- SPI