L—E Dufour
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.

Année
2026 · Terminé
Rôle
Architecture matérielle, VHDL
Équipe
Équipe de session
Durée
Une session (S4)

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.

Le chemin d'un pixel, du processeur à l'écranZynq — cœur ARMlogique du jeu, position des objetsJoystick PmodSPIRegistrescaméra X/Y, 8 acteursAXIPPU — contrôleurbalaie l'écran, pixel par pixelVHDL(x, y)01mapBramQuelle tuile, pour ce (x, y) ?tuile, 6 bits02tileBramQuelle couleur dans la tuile 8 × 8 ?indice, 4 bits03pixelBramLa palette donne la couleurRGB, 24 bits04foregroundRenderUn acteur passe-t-il devant ?pixel finalSortie HDMI
  1. mapBram: Quelle tuile, pour ce (x, y) ?tuile, 6 bits
  2. tileBram: Quelle couleur dans la tuile 8 × 8 ?indice, 4 bits
  3. pixelBram: La palette donne la couleurRGB, 24 bits
  4. foregroundRender: Un acteur passe-t-il devant ?pixel final
Tout ce qui est en dessous de la ligne est du matériel décrit en VHDL : aucune image n'est calculée par du logiciel.

Démarche

  1. 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.
  2. 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.
  3. 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.
  4. 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
Projet suivantShackoDodo