ContextHW/SW co-design, DE10-Lite
ApproachNios II in C, interrupts
ResultComplete clock, 8 melodies
Context
Embedded Digital Systems mini-project in the first-year Master's MESI, supervised by Mr F. Dadouche. The task was to design the hardware and software of a system on chip together. The target was a DE10-Lite board (Intel MAX 10 FPGA) to be turned into an alarm clock.
What I did
- A system on chip in Quartus and Platform Designer, Nios II at 50 MHz and two timers.
- Displays, switches, buttons, LEDs and speaker connected through PIOs sized to the bit.
- Software in C, a main loop and two interrupt routines (time base, sound).
- Beyond the specification, I added a 12h/24h mode, 8 melodies, two setting modes, locking and the compile time.
What I noticed and learned
- In embedded systems, every byte counts. Without sscanf, I decoded the compile time by hand.
- Variables shared with interrupts are protected by critical sections.
My mistakes
- I first coded the alarm in one block, relying too much on examples and on AI, with bugs that were hard to isolate. On my supervisor's advice, I switched to incremental development.
Results
- A fully working alarm clock, validated function by function on the board.
- I met the whole specification and added five improvements.
Tech stack
Quartus Prime
Platform Designer (Qsys)
Nios II (SoPC)
Langage C
DE10-Lite (Intel MAX 10)
Interruptions & timers