Systèmes Embarqués & Logiciel

Réveil électronique sur FPGA, co-design Nios II

FPGA
Co-design HW/SW
Nios II
Langage C
Quartus / Qsys

Co-design matériel et logiciel d'un réveil complet sur FPGA DE10-Lite, avec un processeur Nios II programmé en C et piloté par interruptions. Mini-projet de Master 1 MESI.

processeur Nios II
50 MHz
mélodies au lieu d'un bip
8
ContexteCo-design HW/SW, DE10-Lite
ApprocheNios II en C, interruptions
RésultatRéveil complet, 8 mélodies

Contexte

Mini-projet de Systèmes Numériques Embarqués en Master 1 MESI, encadré par M. F. Dadouche. Il fallait concevoir ensemble le matériel et le logiciel d'un système sur puce. La cible était une carte DE10-Lite (FPGA Intel MAX 10) à transformer en réveil.

Ce que j'ai fait

  • Système sur puce sous Quartus et Platform Designer, Nios II à 50 MHz et deux timers.
  • Afficheurs, interrupteurs, boutons, LED et haut-parleur reliés par des PIO dimensionnés au bit près.
  • Logiciel en C, une boucle principale et deux routines d'interruption (base de temps, son).
  • Hors cahier des charges, j'ai ajouté un mode 12h/24h, 8 mélodies, deux modes de réglage, un verrouillage et l'heure de compilation.

Ce que j'ai remarqué et appris

  • En embarqué, chaque octet compte. Sans sscanf, j'ai décodé l'heure de compilation à la main.
  • Les variables partagées avec les interruptions se protègent par sections critiques.

Mes erreurs

  • J'ai d'abord codé l'alarme d'un bloc en m'appuyant trop sur des exemples et sur l'IA, avec des bugs difficiles à isoler. Sur les conseils de mon encadrant, je suis passé au développement incrémental.

Résultats

  • Réveil entièrement fonctionnel, validé fonction par fonction sur la carte.
  • J'ai rempli tout le cahier des charges et ajouté cinq améliorations.

Stack technique

Quartus Prime
Platform Designer (Qsys)
Nios II (SoPC)
Langage C
DE10-Lite (Intel MAX 10)
Interruptions & timers

Galerie