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