Langage comportemental pour conception sur FPGA
Ref: SPR-ELE-014
Description
Ces deux semaines intensives structurées autour d’un projet complet, ont pour objectif de mettre en œuvre les connaissances acquises en VHDL et en conception de systèmes numériques sur FPGA.
Sur une période de deux semaines, les élèves, répartis en binômes ou trinômes, développent une application ludique (par exemple : casse-briques, serpent, Pac-Man ou Pong) déployée sur une carte FPGA. Le projet intègre la conception à la fois matérielle (en VHDL) et logicielle, avec une architecture reposant sur un processeur softcore embarqué. L’affichage graphique est géré via l’interface VGA, permettant une restitution en temps réel sur écran.
Les objectifs du cours sont :
- Approfondir les connaissances en électronique numérique, en concevant des architectures logiques à partir d’un cahier des charges, à l’aide du langage de description matériel.
- Savoir modéliser et mettre en œuvre une approche de co-conception matériel/logiciel, en intégrant un processeur softcore dans un système embarqué sur FPGA.
Période(s) du cours
Semestre 6
Prérequis
R5ELspe : Fondements de l’Electronique
Syllabus
Chapitre 1- Introduction générale au projet
- Présentation du projet
- Objectifs d’apprentissage et livrables attendus
- Organisation par groupes (2–3 étudiants)
- Présentation de la carte DE10-Lite (Cyclone IV, horloge, périphériques, connecteurs VGA, etc.)
- Rappels VHDL et FPGA
- Syntaxe de base du VHDL
- Architecture interne d’un FPGA (avec focus sur Cyclone IV)
- Flux de développement typique (VHDL → Simulation → Synthèse → Implémentation)
Chapitre 2 - Développement de modules VHDL de base
- Conception d’un diviseur de fréquence
- Compteur avec afficheur 7 segments
- Gestion de boutons poussoirs, interrupteurs et LEDs
- Test sur carte FPGA avec validations fonctionnelles
Chapitre 3 - Contrôleur VGA
- Principes du signal VGA (résolution, synchronisations verticale et horizontale)
- Génération des signaux en VHDL
- Affichage d’une image fixe à une position X, Y
- Déplacement d’un objet affiché (animation simple) sur l'écran externe via VGA
Chapitre 4 - Implémentation et test du SoC avec Nios II
- Création d’un système embarqué avec de composants : GPIO, Timer, VGA IP, UART
- Compilation du système matériel
- Développement d’une simple application logicielle (en C)
- Test sur carte FPGA avec validations fonctionnelles
Chapitre 5 - Projet jeu interactif – Version 1 (sans processeur)
- Rédaction de cahier des charges
- Conception d’un jeu (logique purement matérielle, contrôlée par les boutons)
- Gestion de l’affichage VGA en VHDL
- Test complet du jeu sur carte avec affichage sur écran VGA externe
Chapitre 6 - Projet jeu interactif – Version 2 (avec processeur Nios II)
- Rédaction de cahier des charges
- Intégration du Nios II pour gérer la logique de jeu
- Déplacement des entités piloté par programme C
- Communication UART pour interface console ou configuration jeu
Composition du cours
Le cours est principalement structuré autour d'exercices pratiques, combinant apports théoriques ciblés, applications pratiques encadrées et travail en autonomie. Horaires :
- Cours magistraux (CM) : 2 séances d'1h30 : 3 heures de formation avancée (HPE) / xx heures de formation avancée (HEE).
- Exercices pratiques (TP) : 15 séances de 3 heures : 48 heures de formation avancée (HPE) / xx heures de formation avancée (HEE).
Méthodes pédagogiques :
- Les cours magistraux introduisent les concepts théoriques fondamentaux au début de chaque semaine intensive, accompagnés d'une présentation du projet, des objectifs d'apprentissage, des livrables attendus et du matériel utilisé.
- Les exercices pratiques sont dédiés au travail collaboratif entre les étudiants d'un même groupe, favorisant l'apprentissage actif et le travail en équipe.
- Une approche progressive est attendue, utilisant initialement les supports de cours et la documentation fournis, des discussions entre pairs et, enfin, des recherches en ligne. En cas de blocage persistant de plus de 20 minutes, le responsable du TP doit être contacté et le strict respect des consignes de développement reste obligatoire.
Livrables attendus :
- Spécifications (à soumettre en début de développement du projet) :
- Spécifications fonctionnelles (règles du jeu, interactions utilisateur, etc.)
- Spécifications techniques (fréquences, résolution VGA, contraintes temporelles, etc.)
- Un schéma fonctionnel du système
- Un découpage modulaire (architecture VHDL)
- Un planning prévisionnel (diagramme de Gantt ou équivalent)
- Code source VHDL et tests unitaires :
- Code entièrement commenté et structuré
- Modules de génération VGA, logique de jeu, saisie utilisateur, gestion des états, etc.
- Fichiers de test VHDL pour valider chaque module individuellement (par simulation).
- La conception doit être synthétisable et testable dans Quartus et sur une carte FPGA.
- Conformité aux bonnes pratiques de codage (nommage, modularité, synchronisation).
- Fiche technique :
- Explication du rôle de chaque module
- Difficultés rencontrées et choix techniques
- Résultats de simulation et vérification matérielle
- Graphiques de synchronisation de simulation et captures d'écran de l'affichage VGA
- Ressources utilisées sur la carte FPGA
- Validation fonctionnelle du jeu interactif
- Affichage à l'écran (résolution, couleurs, synchronisation VGA)
- Interactions utilisateur via les périphériques et le processeur NIOS II
- Logique de jeu (mouvements, collisions, transitions d'état)
Ressources
- L’encadrement du projet est assuré par Amor Nafkha et Mohamed El-Bouazzati pour les cours magistraux, en langue française.
Moyens Logiciels :
- Utilisation des environnements de développement Quartus (Intel) pour la simulation, la synthèse et la validation des conceptions VHDL.
- Un nombre suffisant de licences logicielles doit être prévu pour permettre un travail en autonomie et en salle informatique.
Moyens matériels :
- Mise à disposition de cartes de développement FPGA pour pendant la periode du projet par exemple :
- Intel/Altera DE10-Lite
- La carte FPGA est utilisé pour la mise en œuvre concrète du jeu interactif avec un affichage sur écran via le l’interface VGA
Résultats de l'apprentissage couverts par le cours
À l’issue de ce cours, les étudiants seront capables :
- de concevoir, simuler et implémenter des modules matériels en VHDL sur une cible FPGA, à partir d’un cahier des charges ;
- d’intégrer un processeur softcore au sein d’un système embarqué basé sur une architecture matérielle sur FPGA ;
- de répartir les fonctionnalités entre matériel et logiciel dans une démarche de co-conception ;
- de concevoir et gérer l’affichage graphique d’une application sur FPGA via l’interface VGA.
Support de cours, bibliographie
Notes de cours (en anglais) distribuées en format électronique,
- Bibliographie de référence disponible (ouvrages, documents électroniques, ressources en ligne):
- Maini, A. K. Digital Electronics: Principles, Devices and Applications. Wiley, September 2007, 752 pages. ISBN: 978-0-470-51051-3.
- Floyd, T. L., Buchla, D. M., & Snyder, G. D. (2022). Fondements d'électronique : Circuits, composants et applications (9e éd.). Reynald Goulet. ISBN : 978-2-89377-616-3.
- Ashenden, P. J. (2008). The Designer’s Guide to VHDL (3rd ed.). Burlington, MA: Morgan Kaufmann.
- Digilent, Inc. (s.d.). VGA Display Controller – Programmable Logic Reference. Digilent. VGA Display Controller - Digilent Reference
- f‑leb. (n.d.). FPGA : programmer un contrôleur pour écran VGA. Developpez.com. de https://f‑leb.developpez.com/tutoriels/fpga/controleur-vga/
- Intel Corporation. (s.d.). Nios II Processor Reference Handbook