Vous avez six semaines pour monter un mini-projet FPGA qui impressionne un recruteur embarqué. Je vais vous donner un plan réaliste, mes choix d'outils, des livrables concrets et des astuces pour maximiser l'impact de votre travail — sans y passer vos nuits. J'écris ici ce que j'aurais aimé lire avant mon premier entretien embarqué : un guide pas à pas, orienté résultats et communication.

Objectif du mini-projet

Mon objectif quand je propose un mini-projet FPGA est double : montrer des compétences techniques (conception RTL, simulation, intégration sur carte) et présenter clairement le résultat (démo, documentation, code). En six semaines, on vise un périmètre réduit mais complet : un bloc fonctionnel synthétisable, une chaîne de test, une intégration sur une carte d'évaluation, et des livrables propres pour un recruteur.

Choix du sujet (1–2 jours)

Choisissez un sujet utile, démontrable et adapté au temps. Idées rapides :

  • Peripherique SPI ou I2C maître/esclave avec FIFO et tests
  • Un petit protocole de communication UART configurable + commande via terminal
  • Un accélérateur simple (ex : filtre FIR 8 taps, ou un module de détection de motifs)
  • Une interface caméra basique + affichage sur HDMI/ VGA (si la carte le permet)

Je recommande un projet qui s'interface avec du monde réel (capteur, terminal, ou écran) : le recruteur voit que vous savez intégrer du logiciel et du hardware.

Matériel et outils (1 jour)

Ne perdez pas de temps à chercher du matériel exotique. Pour moi, les meilleures options rapides :

  • Cartes : Digilent Nexys A7 (Artix-7), Digilent Arty, ou une Terasic DE10‑Lite/DE10‑Nano
  • Outils de développement : Vivado (Xilinx), Intel Quartus (si FPGA Intel), ModelSim pour la simulation
  • Langage : VHDL ou Verilog (conservez un seul), et quelques scripts Makefile ou Python pour automatiser
  • Contrôle de version : GitHub (repo public bien structuré)
  • Outils pour la démo : enregistreur d'écran, smartphone pour vidéo, logique analyzers comme Saleae si disponible

Si vous maîtrisez le logiciel embarqué, intégrer un microcontrôleur softcore (MicroBlaze, Nios II) est un plus, mais pas nécessaire si cela vous ferait dépasser le délai.

Planning détaillé sur six semaines

Voici un planning que j'utilise et que j'ai affiné avec mes étudiants. Il répartit le travail pour garder des marges pour tests et documentation.

Semaine Objectifs Livrables
Semaine 1 Définir le périmètre, choisir la carte, écrire la spécification fonctionnelle (1 page) Spec.md, plan de tests initial
Semaine 2 Architecture RTL et modules principaux, commencer l'implémentation du cœur Schéma bloc, premiers fichiers RTL, repo Git initial
Semaine 3 Terminer implémentation, écrire benches pour simulation, tests unitaires Benches, rapports de simulation
Semaine 4 Synthèse, implémentation sur carte, résolution des timing/IO Bitstream/programme, log de synthèse (timing)
Semaine 5 Tests sur matériel, debug, ajouter périphériques si besoin, préparation de la démo Vidéo de démo courte, captures d'écran, scripts de test
Semaine 6 Documentation finale, README, préparation entretien (slides, script de présentation) README complet, repo tagué, slide deck + courte vidéo

Livrables essentiels

Pour qu'un recruteur comprenne et évalue rapidement votre travail, fournissez :

  • Un repo GitHub organisé : src/, sim/, docs/, hw/ (fichiers constraints), tests/
  • README clair : objectif, architecture, comment reproduire la démo en 5–10 minutes
  • Spécification fonctionnelle (1 page) et diagramme de blocs
  • Benches de simulation et capture de waveform (VCD/GTKWave)
  • Bitstream / fichier de programmation et fichier de contraintes (XDC/SDC)
  • Vidéo de démonstration de 1–3 minutes montrant le projet en fonctionnement
  • Slides (5–10 diapositives) pour présenter en entretien

Conseils techniques pratiques

Quelques astuces que j'applique systématiquement :

  • Commencez par une simulation fonctionnelle complète avant la synthèse. Ça évite 80% des allers-retours matériel.
  • Utilisez un style RTL modulaire et testable : petits modules avec interfaces claires. C'est plus facile à tester et à expliquer.
  • Automatisez les simulations et la génération d'artefacts via des scripts (Makefile, Tcl pour Vivado). Les recruteurs aiment la reproductibilité.
  • Gardez la synthèse rapide : compilez avec des contraintes minimales d'abord, puis affinez le timing si nécessaire.
  • Si le timing casse, identifiez rapidement : pipeline, registers, ou fréquence. Préférez diminuer la fréquence plutôt que d'optimiser sans fin.
  • Enregistrez une courte vidéo de la démo avec explication orale : 1 min de fonctionnement + 1 min d'explication suffit souvent.

Comment présenter le projet en entretien

Vous avez peu de temps : structurez votre présentation en 3 parties :

  • Contexte et objectif (30s) : pourquoi ce projet, quel problème vous résolvez
  • Architecture et points clés techniques (2–3 min) : montrez le diagramme, expliquez les choix (ex : FIFO pour découplage, handshake pour robustesse)
  • Résultats et démonstration (1–2 min) : présentez la vidéo, montrez les logs, expliquez les limites et améliorations possibles

Soyez prêt à répondre à des questions sur la synthèse (timing), la consommation, et la reproductibilité. Ayez sous la main des chiffres simples : fréquence cible, utilisation LUT/FF/BRAM, latence d'un traitement.

Pièges à éviter

  • Ne commencez pas par un scope trop ambitieux (ex : pipeline complet + softcore + drivers) si c'est votre premier projet FPGA en temps limité.
  • Évitez le code "spaghetti" : structurez et commentez. Un recruteur a besoin de comprendre rapidement.
  • Ne livrez pas un repo sans instructions reproductibles. Un README minimal mais complet fait toute la différence.

Si vous voulez, je peux vous fournir un template de repo (structure de dossiers, Makefile, README template) adapté à votre choix de carte et de langage. Dites-moi quelle carte vous avez et si vous préférez VHDL ou Verilog — je vous prépare ça en une soirée pour gagner du temps.