← Retour

Projet LOTO sur FPGA

VHDL FPGA Xilinx Artix-7 Vivado NUME2

Ce projet du module NUME2 à l'ENSEIRB-MATMECA consistait à concevoir, décrire en VHDL, simuler et prototyper sur FPGA un système de tirage de Loto : 6 nombres différents tirés aléatoirement entre 1 et 49, avec affichage sur les 4 afficheurs 7 segments de la carte Nexys A7 (FPGA Xilinx Artix-7, XC7A100T).

Principe de fonctionnement

Après un reset (RAZ = 1 puis 0), les afficheurs montrent « -00- » pour les 6 emplacements. Le tirage se fait via un compteur synchrone comptant de 1 à 49 en boucle, qui progresse tant que BOUTON = 1. Quand l'utilisateur relâche le bouton (BOUTON = 0), le compteur se fige et le circuit vérifie si le nombre a déjà été tiré :

Les 6 nombres sont stockés dans 6 registres, et l'affichage se fait au format « N - XX » (numéro du tirage, tiret de séparation, valeur entre 01 et 49). À la fin des 6 tirages, les LEDs clignotent pour signaler la fin du jeu.

Découpe architecturale

Le design est décomposé en blocs VHDL indépendants, conçus et validés séparément avant assemblage :

Bloc Clock Enable

L'horloge du FPGA tourne à 100 MHz — beaucoup trop rapide pour l'affichage ou l'interaction utilisateur. Trois signaux d'activation (Clock Enable) sont générés par division :

Machine à états (FSM)

Le séquencement du jeu est orchestré par une FSM qui gère les transitions entre les phases : attente d'un appui, vérification du nombre, mémorisation, passage au tirage suivant, fin de jeu. C'est le chef d'orchestre de l'ensemble du design.

Bloc Tirage

Contient le compteur 1–49, la logique de vérification (le nombre a-t-il déjà été tiré ?), et les 6 registres de mémorisation. La vérification se fait par comparaison du nombre courant avec le contenu des registres déjà remplis.

Bloc Affichage

Gère le multiplexage des 4 afficheurs 7 segments : un décodeur BCD → 7 segments convertit chaque chiffre en patron de segments, et un compteur de balayage active chaque digit tour à tour au rythme de CEaffichage. L'affichage est organisé en 4 digits : numéro du tirage (1–6), tiret de séparation, dizaines et unités du nombre tiré.

Flot de conception

Le projet s'est déroulé sur 5 séances, suivant le flot classique de conception numérique sur FPGA :

L'environnement utilisé est Xilinx Vivado pour la saisie VHDL, la simulation, la synthèse et l'implémentation. Le fichier de contraintes (.xdc) associe les signaux VHDL aux broches physiques de la carte Nexys A7.