Hardware-in-the-Loop mit Digitizer und AWG für Windows und Linux

Anbieter zum Thema

Ein geschlossenes Testsystem lässt sich mit PCIe-Digitizer- und -AWG-Karten aufbauen. Getestet wurde mit Windows und Linux und es kam eine Grafikkarte (GPU) zum Einsatz. Die Latenzen fielen dabei sehr unterschiedlich aus.

Hardware-in-the-Loop: Aufbau eines PC-basierten Closed-Loop-Systems mit einem PCIe-Digitizer und einer PCIe-AWG in Kombination mit einer einfachen Programmierung in C++.
Hardware-in-the-Loop: Aufbau eines PC-basierten Closed-Loop-Systems mit einem PCIe-Digitizer und einer PCIe-AWG in Kombination mit einer einfachen Programmierung in C++.
(Bild: Spectrum Instrumentation)

Geschlossene Hardware-Tests (Hardware in the Loop) mit PC-basierten Systemen und unter Verwendung von PCIe-Digitizer-Karten sowie PCIe-AWG (Arbitrary Waveform Generator) zusammen mit C++ eignen sich in der Elektronik, bei denen es auf geringe Latenzen ankommt. Solche Anwendungsgebiete werden unter dem Namen Echtzeit-Anwendungen zusammengefasst.

Doch bei dem Begriff Echtzeit ist Vorsicht geboten: Ursprünglich bezog er sich auf hardwarebasierte Entwicklungen, bei denen eine definierte und garantierte Reaktionszeit gewährleistet werden musste. Sie stellte sicher, dass das Setup rechtzeitig auf einen externen Stimulus reagiert. Beispiele finden sich in der Automobil-, Luft- und Raumfahrt. Echtzeit wird jedoch häufig als Synonym für eine schnelle Antwort verwendet. In solchen Fällen ist die Latenz zwischen Eingabe und Ausgabe (Entscheidungs- und Reaktionszeit) entscheidend.

Bildergalerie
  • Kontrollkreise: Der Eingang der Schaltung wird als Basis für den Ausgang verwendet, um ein oder mehrere externe Geräte zu steuern.
  • Entscheidungsfindung: Die Schaltung reagiert auf ein externes Ereignis und liefert einen geänderten Output.
  • Manipulationsschleifen: Diese Schaltungen erfassen ein Signal, nehmen eine Veränderung vor und geben das veränderte Signal erneut aus.
  • Stimulus-Response-Systeme: Ein Signal wird erzeugt und ausgesandt, die zurückkehrenden Signale werden erfasst und analysiert, wobei anschließend eine Entscheidungsfindung erfolgt.

Die von Spectrum Instrumentation angebotenen Digitizer- als auch AWG-Karten sind für die schnelle Datenübertragung im FIFO-Modus ausgelegt. Ein schneller FIFO-Modus basiert auf optimierten Treibern, die den Scatter-Gather-DMA-Prozess (Direct Memory Access) steuern. Doch ein hoher Durchsatz führt dazu, dass Daten gepuffert werden müssen.

Erstens basiert ein schneller DMA-Prozess auf Übertragungen mit großer Puffergröße. Das optimiert die Relation zwischen Datenübertragung und Steuerbefehlsaufwand. Zweitens kann jede externe Verzögerung in der Antwort- oder Reaktionszeit durch die großen Puffer kompensiert werden. Wenn die Puffer zu klein sind, ist das Ergebnis ein Über- oder Unterlaufen der FIFO-Puffer, wodurch die FIFO-Übertragung gestoppt wird.

Einschränkungen bei einem FPGA-System

Der klassische Ansatz für diese Anwendungen besteht darin, ein Echtzeit-Betriebssystem mit definierten Antwortzeiten und Prioritätssteuerung zu haben, passende Echtzeit-Treiber und -Hardware, optimiert für kurze Latenzzeiten (und nicht für höchsten Durchsatz). Eine noch schnellere Lösung wäre die Implementierung des gesamten Prozesses in Hardware (FPGA) ohne Interaktion des Host-Systems. Bei einer FPGA-Lösung kann es schnell zu Programmierzeit- oder Kostenüberschreitungen kommen: Die FPGA-Programmierung erfordert spezielle Kenntnisse und die Hardware unterliegt häufig Einschränkungen, die die Systemfunktionalität und die Datenverarbeitungsfähigkeit begrenzen.

Aber auch Echtzeitsysteme können Probleme verursachen: Neben zusätzlichen Lizenzkosten für ein Echtzeitbetriebssystem kann der Zugriff auf nützliche Softwaretools von Drittanbietern einschränkt sein. In vielen Fällen erweist sich daher die Einrichtung eines auf Windows- oder Linux-basierenden Closed-Loop-Systems als wirtschaftlicher und schneller zu implementieren.

Für einen Überblick über die Leistungsfähigkeit eines Closed-Loop-System unter Windows wurde ein Testsystem mit einem Spectrum M4i.4451-x8 Digitizer und einem M4i.6622-x8 AWG konfiguriert. Beide Karten sind extern verbunden. Der Referenztaktausgang des Digitizers wird verwendet, um den Referenztakteingang des AWG zu speisen und für die Taktsynchronisation zu sorgen. Der Triggerausgang des Digitizers wird verwendet, um die Ausgabe des AWG zu starten. Der AWG wird mit einigen Nulldaten vorgeladen, die wiedergegeben werden, bis der AWG die erfassten Digitalisiererdaten empfängt.

Die Werte der Latenz hängen vom Betriebssystem ab

Tabelle 1:  In einem Test kam Windows 7 Professional zum Einsatz. Die Ergebnisse zeigt die Tabelle.
Tabelle 1: In einem Test kam Windows 7 Professional zum Einsatz. Die Ergebnisse zeigt die Tabelle.
(Bild: Spectrum Instrumentation)

Tabelle 2: Die Messergebnisse mit einem Linux-System. Gleiches Set-up wie in Tabelle 1.
Tabelle 2: Die Messergebnisse mit einem Linux-System. Gleiches Set-up wie in Tabelle 1.
(Bild: Spectrum Instrumentation)

Die Größe der vorgeladenen Daten definiert die Latenz zwischen den erfassten Daten und den Schleifendaten. In einem ersten Test kam Windows 7 Professional zum Einsatz. Die Messergebnisse zeigt die erste Tabelle. Wie aus der Tabelle hervorgeht, wurden die besten Ergebnisse mit einer Benachrichtigungsgröße (Notify Size) für die DMA-Übertragung erzielt, die den Softwarepuffer in drei oder vier Teile aufteilt. Die minimale Benachrichtigungsgröße, die stabil funktioniert, liegt bei 64 kByte. Diese Einschränkung ergibt sich aus den internen Hardware-Puffern, deren Größe von den Software-Puffern kompensiert werden muss. Die hier gezeigten Ergebnisse sind die beste Leistung, die für Laufzeiten von einer Minute erreicht wurde.

Tabelle 3: Hier wird eine GPU verwendet mit der SCAPP-Option unter Linux.
Tabelle 3: Hier wird eine GPU verwendet mit der SCAPP-Option unter Linux.
(Bild: Spectrum Instrumentation)

Bei dem gleichen Setup-Aufbau, allerdings mit Linux, mit einem M4i.4451-x8 Digitizer und einem M4i.6622-x8 AWG wird dem System eine GPU hinzugefügt. Wiederum sind beide Karten extern mit dem Referenztaktausgang des Digitizers verbunden, der den Referenztakteingang des AWG speist, und dem Triggerausgang des Digitizers, der den Ausgang des AWG startet.

Jetzt Newsletter abonnieren

Verpassen Sie nicht unsere besten Inhalte

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

Bei einer Grafikkarte (GPU) ist ein größerer Puffer notwendig

In diesem Setup empfängt und überträgt die GPU alle Daten direkt über RDMA. Die GPU kopiert die Daten ohne Manipulation nur einmal vom Digitalisierpuffer in den AWG-Puffer. Der AWG wird mit einigen Nulldaten vorgeladen, die wiedergegeben werden, bis die erfassten Daten des Digitizers von der GPU empfangen werden. Die Größe der vorgeladenen Daten definiert die Latenz zwischen erfassten Daten und Schleifendaten. Das GPU-Setup benötigt mehr Puffer, um stabil zu laufen. Das ist hauptsächlich auf die Tatsache zurückzuführen, dass die Linux-Umgebung selbst mehr Puffer benötigt, um Hintergrundaufgaben zu kompensieren.

Tabelle 4: Ergebnisse für GPU-basierte Software unter Windows.
Tabelle 4: Ergebnisse für GPU-basierte Software unter Windows.
(Bild: Spectrum Instrumentation)

Unter Windows ist keine direkte Datenübertragung (RDMA = Remote Direct Memory Access) zwischen Digitizer/AWG und GPU möglich, da der Nvidia-Treiber die Funktion nicht unterstützt. Es müssen zuerst Daten in den CPU-Speicher übertragen, dort kopiert und dann zur GPU geschickt werden. Die manipulierten Daten müssen auf dem gleichen Weg zurückkehren. Das erhöht sowohl die Latenz und das Risiko von Über- und Unterläufen, da insgesamt vier DMA-Übertragungen für jeden Block ausgeführt werden müssen (Tabelle 4). Wie zu erwarten, sind die Testergebnisse und die Stabilität in diesem Szenario am schlechtesten.

Das Betriebssystem ist der Flaschenhals

Die von Anbieter entwickelte Hardware ist auf einen hohen Datendurchsatz getrimmt und verfügen über einen großen FIFO-Puffer. Daher bietet das nicht deterministische Verhalten von Standardbetriebssystemen wie Windows oder Linux keine optimale Systemleistung, wenn es um Anwendungen mit geschlossenem Regelkreis geht. Das führt zu einem Kompromiss zwischen Stabilität und Latenzleistung. Obwohl die Hard- und Software von Spectrum schnelle Reaktionszeiten mit einer Latenz im Sub-ms-Bereich ermöglichen, ist die Stabilität ein Problem, wenn das Betriebssystem die vorgeschriebenen Antwortzeiten nicht garantieren kann. Während des Tests sind viele Störungen auf Betriebssystemebene aufgetreten, die die Ausführung eines Closed-Loop-Prozesses sofort beenden können.

Beispielsweise hat das Öffnen eines Browsers im Parallelbetrieb genug Prozessorzeit von der Schleife in Anspruch genommen, um die Ausführung zu stoppen. Für anspruchsvolle Anwendungen ist es daher am besten, wenn das Betriebssystem so wenig Programme und Hintergrundjobs wie möglich ausführen muss.

Digitizer-Karten im Einsatz

* Oliver Rovini ist Technischer Leiter bei Spectrum Instrumentation in Grosshansdorf.

Artikelfiles und Artikellinks

(ID:46068706)