Treiber und Userspace
Das DE1-SoC Board verfügt über einen Cylcone V FPGA mit On-Chip HPS. Auf diesem Cortex A9 läuft ein Embedded Linux welches durch Treiber- und Userspacesoftware auf die vom FPGA zu verfügung gestellten Register zugreifen kann. Die Userspace Software ist in C++ implementiert. Der Programmablauf wird über eine State-Machine gesteuert. Diese wurde als klassisches switch-case in einer Endlosschleife definiert. Die Softwarearchitektur folgt keinem Design-Pattern, ist jedoch modulbasiert aufgebaut. Das Config-Modul beinhaltet alle Informationen die für eine Messung benötigt werden. Source, Sink, Sollspannung und Modus werden vom User mit definierten Kommandos vorgegeben und im Config-Modul abgelegt. Eine Messung besteht aus Source, Sink, gemessenener Spannung und gemessenen Strom. Die Kommandos werden mit einem eigens definierten Protokoll übertragen. Somit ist eine textbasierte Übertragung jedenfalls möglich.Modi
Die Userspace Software steuert den gesamten Messablauf und kommuniziert sowohl mit dem untergeordneten FPGA als auch mit der übergeordneten Benutzerschnittstelle. Je nach Schnittstellen lässt sich die Userspace-Software in vier verschiedenen Modi starten:
Synchronisation
Die Synchronisation mit der Hardware erfolgt über Interrupts, mit der Userspace Applikation via Signals. Die Hardware erzeugt einen Interrupt wenn die Messung abgeschlossen ist. Ab dann können die Messwerte aus den Registern ausgelesen werden.
Hardware
Die Hardware wird mittels eines Kernelmoduls angesteuert. Hierfür wird dem Userspaceprogramm ein Devicefile zur Verfügung gestellt.
Programmablauf
In folgendem Sequenzdiagramm ist ein typischer Programmablauf mit den beteiligten Komponenten und den verwendeten Funktionen visualisiert.
voltage 1.7;
measure 1-2;