Embedded Systems & Software

Elektronischer Wecker auf FPGA, Nios-II-Co-Design

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

Hardware- und Software-Co-Design eines vollständigen Weckers auf einem DE10-Lite-FPGA, mit einem in C programmierten, interrupt-gesteuerten Nios-II-Prozessor. Mini-Projekt im Master 1 MESI.

Nios-II-Prozessor
50 MHz
Melodien statt eines Pieptons
8
KontextHW/SW-Co-Design, DE10-Lite
AnsatzNios II in C, Interrupts
ErgebnisKompletter Wecker, 8 Melodien

Kontext

Mini-Projekt im Fach Eingebettete Digitalsysteme im Master 1 MESI, betreut von Herrn F. Dadouche. Es galt, Hardware und Software eines Systems auf einem Chip gemeinsam zu entwerfen. Ziel war eine DE10-Lite-Platine (FPGA Intel MAX 10), die zu einem Wecker werden sollte.

Was ich gemacht habe

  • System on Chip in Quartus und Platform Designer, Nios II mit 50 MHz und zwei Timer.
  • Anzeigen, Schalter, Taster, LEDs und Lautsprecher über bitgenau dimensionierte PIOs angebunden.
  • Software in C, eine Hauptschleife und zwei Interrupt-Routinen (Zeitbasis, Ton).
  • Über das Lastenheft hinaus habe ich einen 12h/24h-Modus, 8 Melodien, zwei Einstellmodi, eine Sperre und die Kompilierzeit ergänzt.

Was mir aufgefallen ist und was ich gelernt habe

  • In eingebetteten Systemen zählt jedes Byte. Ohne sscanf habe ich die Kompilierzeit von Hand dekodiert.
  • Variablen, die mit Interrupts geteilt werden, schützt man durch kritische Abschnitte.

Meine Fehler

  • Ich habe den Alarm zuerst in einem Stück programmiert und mich dabei zu sehr auf Beispiele und auf KI gestützt, mit schwer eingrenzbaren Fehlern. Auf Rat meines Betreuers bin ich zur inkrementellen Entwicklung übergegangen.

Ergebnisse

  • Voll funktionsfähiger Wecker, Funktion für Funktion auf der Platine validiert.
  • Ich habe das gesamte Lastenheft erfüllt und fünf Verbesserungen ergänzt.

Tech-Stack

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

Galerie