Anspruchsvolle Datenerfassungstechniken mit intelligenter Datenerfassung

Überblick

Intelligente Datenerfassung bedeutet Multifunktionsdatenerfassung mit anwenderdefinierter Onboard-Verarbeitung für umfassende Flexibilität bei System-Timing und Triggerung. Anstelle eines vorgegebenen ASIC für die Steuerung der Gerätefunktionen nutzt die intelligente Datenerfassung einen FPGA-basierten System-Timing-Controller und macht so alle analogen und digitalen Ein- und Ausgänge für anwendungsspezifische Operationen konfigurierbar. Informieren Sie sich in diesem Tutorium über die Implementierung flexibler und benutzerdefinierter Datenerfassungs-Tasks mit Datenerfassungsgeräten der R-Serie und LabVIEW FPGA.

Inhalt

Einführung

Das LabVIEW FPGA Module von National Instruments verleiht Entwicklern von Datenerfassungssystemen maximale Flexibilität bei der Programmierung von Anwendungen für jede Art von I/O-Operation (Input/Output, Eingang/Ausgang). Auch ohne Vorkenntnisse von Hardwaredesignwerkzeugen wie VHDL (Very High Speed Integrated Circuit Hardware Description Language) können Anwender LabVIEW-Code in einen FPGA-Chip einbetten und hardwaregetaktete Geschwindigkeit und Zuverlässigkeit erzielen.

Zuerst werden im folgenden Abschnitt die Komponenten der Datenerfassungshardware betrachtet. Angenommen, es stehen A/D-Wandler (Analog-Digital-Wandler), D/A-Wandler (Digital-Analog-Wandler) und Digital-I/O-Kanäle zur Verfügung, so müssen alle diese I/O für den tatsächlichen Betrieb getaktet und gesteuert werden. Typische Multifunktions-Datenerfassungsgeräte nutzen einen mit vielen Funktionen ausgestatteten ASIC, der die meisten Anforderungen an die Funktionalität abdeckt. Ein Datenerfassungsgerät der M-Serie nutzt beispielsweise den DAQ-STC2 zur Steuerung von Timing und Triggerung der verschiedenen Hardwarekomponenten. Intelligente Datenerfassungshardware, wie etwa Geräte der R-Serie, unterscheidet sich von allen anderen Geräten auf dem Markt: Anstatt eines festen ASIC zur Steuerung der Gerätefunktionalität besitzt intelligente Datenerfassung einen FPGA-basierten System-Timing-Controller. So sind alle analogen und digitalen I/O für die jeweilige Anwendung konfigurierbar. Der rekonfigurierbare FPGA-Chip wird mit dem LabVIEW FPGA Module programmiert, bei dem das Datenflussparadigma von LabVIEW zum Einsatz kommt. Allerdings gibt es hier eine Reihe neuer Funktionen, welche die Geräte-I/O auf der niedrigsten Ebene steuern. Anstatt gängige Tasks und Funktionen mit NI-DAQmx zu abstrahieren, arbeiten die I/O-Knoten von LabVIEW FPGA auf der grundlegendsten Ebene mit umfassender Flexibilität für alle Kanäle. In den folgenden Abschnitten werden spezifische NI-DAQmx-Beispiele behandelt und daraufhin untersucht, wie sich verschiedene Datenerfassungsaufgaben mithilfe intelligenter Datenerfassung individuell anpassen lassen.

Timing und Triggerung


Am häufigsten wird intelligente Datenerfassung für anwenderdefiniertes Timing und Triggerung eingesetzt. Folgende Abbildung zeigt ein Blockdiagramm eines getriggerten Analogeingangs-Tasks mit NI-DAQmx.


Abbildung 1: Getriggerter Analogeingang mit NI-DAQmx


Anstatt, wie in Abbildung 1, verschiedene Funktionen für die Kanalkonfiguration zu verwenden, nutzt intelligente Datenerfassung sogenannte I/O-Knoten für das Schreiben und Lesen aller Analog- und Digitalkanäle. Hier ist genau dieselbe Funktionalität mit I/O-Knoten in LabVIEW FPGA abgebildet.


Abbildung 2: Getriggerter Analogeingang mit intelligenter Datenerfassung und LabVIEW FPGA


Hier sieht man, dass es keine Konfigurationsfunktionen für globale Kanäle, Abtastrate, Trigger, Starten, Stoppen oder Beenden des Tasks gibt. All dies wurde durch einen einfachen Analog-I/O-Lesevorgang ersetzt und das gesamte Timing wird von nativen LabVIEW-Strukturen wie While-Schleifen und Case-Strukturen gesteuert. Da das gesamte Blockdiagramm in FPGA-Hardware ausgeführt wird, läuft der LabVIEW-Code mit hardwaregetakteter Geschwindigkeit und Zuverlässigkeit ab. Das Blockdiagramm funktioniert wie folgt: Der Analog-I/O-Knoten nutzt die For-Schleife zur Erfassung jedes Abtastwerts, anstatt eine bestimmte Abtastrate zu spezifizieren. Der entsprechende A/D-Wandler digitalisiert das Eingangssignal, wenn der I/O-Knoten aufgerufen wird, und wird deshalb durch die For-Schleife getaktet. Soll ein Signal etwa bei 100 kHz abgetastet werden, ist es sinnvoll, die für diese Schleife spezifizierte Verzögerung auf 10 µs einzustellen. Die Timer-Funktion der Schleife gewährleistet eine spezifische Verzögerung ab der zweiten Ausführung der Schleife. Deshalb wurde eine Sequenzstruktur verwendet, um die spezifizierten Zeitabschnitte zwischen den Abtastungen zu garantieren. Die Case-Struktur in LabVIEW FPGA ist äußerst leistungsstark, denn sie ist im Grunde ein Hardwaretrigger für den gesamten Code, den sie umschließt. Angesichts aller Funktionen und Strukturen, die in Hardware durch Logikgatter abgebildet werden, stellt die Case-Struktur mit einer Genauigkeit von 10 µs sicher, dass die Abtastung zum richtigen Zeitpunkt beginnt. Zuletzt besteht keine Notwendigkeit, die Task-ID oder Speicher freizugeben, da jetzt auf der Hardwareebene und mit sehr wenig Abstraktion gearbeitet wird.

Die wichtigsten Vorteile von FPGA-basierter intelligenter Datenerfassungshardware sind die Möglichkeit, Timing und Triggerung anwenderdefiniert anzupassen sowie Signalverarbeitung und Entscheidungsfindung in Hardware zu implementieren. Im folgenden Abschnitt wird beschrieben, wie der Trigger für den Analogeingang für anwenderdefinierte Applikationen verändert werden kann. Was kann man tun, wenn man die Erfassung auslösen will, aber einer von zwei Analogeingangskanälen einen bestimmten Grenzwert überschreitet? Ein solcher Fall ist in LabVIEW FPGA relativ einfach zu implementieren.


Abbildung 3: Anwenderdefinierter getriggerter Analogeingang mit intelligenter Datenerfassung und LabVIEW FPGA


Hier wurde das Blockdiagramm um einen zweiten I/O-Knoten, eine zweite Vergleichsfunktion sowie eine Boolesche ODER-Funktion ergänzt. Intelligente Datenerfassungshardware besitzt auf jedem Analogeingangskanal dedizierte A/D-Wandler, so dass beide Kanäle simultan abgestastet werden. Überschreitet einer davon die vorgegebene Grenze, führt die Case-Struktur den TRUE-Fall aus und startet die Datenerfassung mit einer Verzögerung von 10 µs. Ein solcher Trigger kann nur mit intelligenter Datenerfassung erzeugt werden. Mit anderer Datenerfassungshardware wäre dazu eine softwareseitige Entscheidungsfindung mit viel höherer Latenz nötig. Soll dieser Fall von der Überwachung zweier Kanäle auf alle acht Kanäle ausgeweitet oder sollen sogar digitale Trigger ergänzt werden, ist trotzdem kein komplizierterer anwenderdefinierter Code erforderlich. Das Hinzufügen von Pre-Trigger-Überprüfung würde bedeuten, dass der Eingangskanal ständig abgetastet und Daten in einen FIFO-Puffer übertragen werden würden. Nach dem Lesen des Triggers würden dieser FIFO-Puffer und anschließende Abtastungen über einen DMA-Kanal an den Host übertragen werden.

Sollte mit dem Treiber NI-DAQmx ein zweiter Analogeingangskanal abgetastet werden, würde sich das Blockdiagramm kaum von dem aus Abbildung 1 unterscheiden. Jedoch gäbe es immer noch Grenzen, denn beide Kanäle müssten sich auf denselben Trigger und dieselbe Abtastung bei der gleichen Taktrate beziehen. Die nächste Abbildung verdeutlicht verschiedene Optionen für die Abtastung mehrerer Kanäle mit intelligenter Datenerfassung und LabVIEW FPGA.


Abbildung 4: Getriggerter simultaner Analogeingang mit intelligenter Datenerfassung


Abbildung 4 zeigt die simultane Abtastung von zwei verschiedenen Analogeingangskanälen, basierend auf einem analogen Trigger von AI-Kanal 0. Da alle intelligenten Datenerfassungsgeräte unabhängige A/D-Wandler haben, werden zwei Kanäle innerhalb eines I/O-Knotens genau zum selben Zeitpunkt abgetastet. Typische Multifunktions-Datenerfassungsgeräte multiplexen alle Kanäle über einen einzigen A/D-Wandler, weshalb sich alle Kanäle Abtastrate und Trigger teilen müssen. Abbildung 5 zeigt, dass intelligente Datenerfassungshardware verschiedene Analogeingangskanäle auch mit unabhängigen Raten abtasten kann. Indem die I/O-Knoten der Analogeingänge in unterschiedlichen Schleifen platziert werden, kann jeder Kanal die Abtastungen völlig unabhängig vom anderen vornehmen und Daten dann über zwei ebenfalls unabhängige DMA-Kanäle übertragen.



Abbildung 5: Getriggerter Analogeingang bei unterschiedlichen Taktraten mit intelligenter Datenerfassung



Sollen beide Kanäle schließlich unabhängige Abtastraten und Start-Trigger haben, könnte man dafür die I/O-Knoten einzeln in parallele Schleifenstrukturen platzieren (siehe unten). So wird die parallele Ausführung des FPGAs voll ausgenutzt. Jeder Task beansprucht seine dedizierten Ressourcen und wird völlig unabhängig von allen anderen Erfassungsaufgaben ausgeführt.


Abbildung 6: Unabhängig getriggerter Analogeingang bei unterschiedlichen Taktraten mit intelligenter Datenerfassung

Synchronisation

Im DAQmx-Treiber sind viele Synchronisationsoptionen enthalten, um Eingänge und Ausgänge rechtzeitig zu korrelieren. Die nächste Abbildung zeigt das Blockdiagramm eines analogen Eingangs- und Ausgangskanals. Die Kanäle wurden mit einem digitalen Star-Trigger synchronisiert, indem ein digitaler Trigger für den Analogeingang spezifiziert wurde. Anschließend wird das Start-Trigger-Signal des Analogeingangs benutzt, um die Signalerzeugung am Analogausgang in Gang zu setzen.


Abbildung 7: Mit NI-DAQmx synchronisierter Analogein- und -ausgang


Dasselbe Synchronisationsschema kann relativ einfach in intelligente DAQ-Hardware implementiert werden, ohne dass Task-IDs oder integriertes Routen von Signalen notwendig werden. In LabVIEW FPGA würde das folgendermaßen aussehen.



Abbildung 8: Mit intelligenter Datenerfassung synchronisierter Analogein- und -ausgang


Hier wird wiederum die Case-Struktur verwendet, um einen Hardware-Trigger auf dem FPGA-Chip zu implementieren. Eine steigende Flanke am Digitalkanal 0 initiiert den Code, so dass der Fall TRUE eintritt. Die Analogeingangs- und Ausgangsknoten werden innerhalb der Sequenzstruktur simultan fast ohne Jitter aufgerufen. Sollen sie mit verschiedenen Geschwindigkeiten ausgeführt werden, könnte man die analogen I/O-Knoten einfach in separate While-Schleifen platzieren. Darüber hinaus ist es wichtig zu wissen, dass die in diesem Blockdiagramm dargestellte Funktion zur Erzeugung von Sinussignalen ein Express-VI ist, mit dem man die Sinuswerte in einer Referenztabelle interaktiv konfigurieren kann.

Das Blockdiagramm mit intelligenter Datenerfassung aus Abbildung 8 hat dieselbe Funktionalität wie das DAQmx-VI in Abbildung 7, aber wenn dieser Task individuell angepasst werden soll, bietet nur intelligente Datenerfassung die dazu notwendige Funktionalität. Soll beispielsweise ein Pausen-Trigger ergänzt werden, kann dies durch Hinzufügen einer Case-Struktur innerhalb der inneren While-Schleife und die Verwendung eines anderen digitalen I/O-Knotens für die Auswahl eines TRUE- oder FALSE-Falles erreicht werden. Da die Hardware programmiert werden kann, eröffnen sich unbegrenzte Möglichkeiten für I/O-Timing und Synchronisation.

Ein weiteres Beispiel für die Multifunktionssynchronisation ist die Erzeugung endlicher Pulsfolgen mit den Onboard-Countern. Dabei wird der Counter-Ausgang als Abtasttakt für den Analogeingang genutzt. Dies ist der gängige Prozess für die Implementierung einer kontinuierlich getriggerten endlichen Erfassung. Unten ist der für eine solche Erfassung erforderliche DAQmx-Code abgebildet.



Abbildung 9: Kontinuierlich getriggerter Analogeingang für eine endliche Anzahl an Werten mit NI-DAQmx


Im Vergleich dazu sieht man hier ein LabVIEW-FPGA-Blockdiagramm mit derselben Funktionalität.



Abbildung 10: Kontinuierlich getriggerter Analogeingang für eine endliche Anzahl an Werten mit intelligenter Datenerfassung und LabVIEW FPGA


In Abbildung 10 wird deutlich, dass aufgrund der Tatsache, dass der LabVIEW-Code in Hardware ausgeführt wird, zur Konfigurierung des Treibers viel weniger Schritte notwendig sind. Mit einem einfachen Digitaleingangskanal und einer For-Schleife wurde eine per Hardware kontinuierlich getriggerte endliche Erfassung erstellt. Im Blockdiagramm in Abbildung 9 werden zwei integrierte Counter zur Erzeugung der kontinuierlich getriggerten endlichen Pulsfolge verwendet. Typische Multifunktions-Datenerfassungsgeräte haben allerdings nur zwei Counter. Intelligente Datenerfassungshardware kann jedoch mithilfe von LabVIEW FPGA jeden Digitalkanal als Counter konfigurieren. In einem späteren Abschnitt werden Counter/Timer-Implementierungen mit intelligenter Datenerfassung genauer behandelt.

Die hardwaregetaktete Flexibilität intelligenter Datenerfassung kann mit einer frequenzgetriggerten Erfassung noch weiter ausgebaut werden. Mit einem typischen Multifunktions-Datenerfassungsgerät ist dies zwar nicht möglich, aber die integrierte Entscheidungsfindung mit hoher Geschwindigkeit kann zur Berechnung der Frequenz eines Eingangssignals und der Auswahl des gewünschten Codes innerhalb einer Case-Struktur genutzt werden. Um mehrere Geräte zu synchronisieren, kann sich die intelligente Datenerfassung auch den RTSI-Bus (bei PCI-Karten) oder den PXI-Trigger-Bus (bei PXI-Modulen) zunutze machen. Auf diese externen Timing- und Synchronisationskanäle kann auch über I/O-Knoten auf dem Blockdiagramm zugegriffen werden.

Erzeugung analoger Signale

Viele Multifunktions-Datenerfassungsgeräte haben analoge Ausgangskanäle, die einen FIFO-Puffer für die kontinuierliche Erzeugung analoger Signale benutzen. Das erzeugte Signal kann den FIFO als Ringpuffer verwenden und ohne weitere Updates vom Host kontinuierlich eine Serie analoger Werte erzeugen. Dies hat wenig mit der Verfügbarkeit des Kommunikationsbusses zu tun, da die Daten nicht ständig ans Gerät übertragen werden. Sollen die Signale jedoch modifiziert werden, muss der Ausgangs-Task neu gestartet werden, um neue Daten in den FIFO zu schreiben. Eine andere Möglichkeit besteht darin, Daten kontinuierlich in den Hardware-FIFO zu übertragen, was allerdings zu Latenzen im Ausgangs-Task führen kann. Intelligente Datenerfassung ermöglicht das Speichern der Ausgangssignale in Hardware und sogar die Nutzung von Hardware-Triggern zur Veränderung der Signale, so dass ein Signalgenerator zur Verfügung steht.

Unten abgebildet ist ein Beispiel für einen Funktionsgenerator, der digitale Eingangskanäle verwendet, um Änderungen am Ausgangssignal auszulösen. Basierend auf der Kombination der Digital-I/O-Kanäle 0 und 1 gibt es vier verschiedene Zustände für den Analogausgang.


Abbildung 11a: Funktionsgenerator mit intelligenter Datenerfassung, Fall 0 – am Ausgang liegt Null an.



Abbildung 11b: Funktionsgenerator mit intelligenter Datenerfassung, Fall 1 – Sinussignal

Sind beide Kanäle LOW, wird Fall 0 ausgeführt und am Ausgang liegt der konstante Wert 0 V an (s. Abb. 11a). Ist der DIO-Kanal 0 HIGH und DIO-Kanal 1 LOW, wird Fall 1 ausgeführt und an Analogausgang 0 eine Sinuskurve erzeugt. Dieser Fall (s. Abb. 11b) verwendet das Express-VI zur Erzeugung von Sinuskurven. Damit können Anwender in LabVIEW FPGA interaktiv eine Sinuskurve mit den erforderlichen Integer-Werten konfigurieren.



Abbildung 11c: Funktionsgenerator mit intelligenter Datenerfassung, Fall 2 – Rechtecksignal

Fall 2 (s. Abb. 11c) schaltet einfach bei jedem Schleifendurchlauf einen Booleschen Wert. Ist der Wert LOW, wird Integer 15000 auf den Analogeingang 0 geschrieben, was im Register des Ausgangs eines 16-bit-A/D-Wandlers einem Wert von 15000 entspricht. Ein vorzeichenbehafteter 16-bit-Integer kann Werte zwischen -32768 und 32767 annehmen. Bei einem Ausgangsbereich von -10 bis 10 V erzeugt der Wert -32768 am Analogausgang 0 genau -10 V, der Wert 32767 erzeugt 10 V. In diesem Beispiel wird 15000 geschrieben, was knapp weniger als 5 V ergibt. (Die Berechnung sieht folgendermaßen aus: 15000/32767 * 10 V = 4,5778 V.) Fall 2 gibt praktisch ein Rechtecksignal aus, das sich zwischen 0 und 4,578 V bewegt.


Abbildung 11d: Funktionsgenerator mit intelligenter Datenerfassung, Fall 3 – Sägezahnsignal

Der letzte Fall (s. Abb. 11d) wird ausgeführt, wenn sowohl DIO 0 als auch DIO 1 HIGH sind. Hier kommt eine Referenztabelle zur kontinuierlichen Erzeugung eines Sägezahnsignals zum Einsatz. Das VI für die Referenztabelle ist ein weiteres Express-VI, mit dem sich Signalwerte speichern und programmatisch indizieren lassen. In diesem Beispiel wurde der Analogausgangskanal 0 für die Erzeugung eines Sägezahnsignals konfiguriert.

Werden alle Werte auf dem FPGA gespeichert, wird die Abhängigkeit von der Verfügbarkeit des Busses vermieden. Darüber hinaus wird hardwaregetaktete Geschwindigkeit und Zuverlässigkeit der Signal-Updates gewährleistet. Die gesamte in vorherigen Abschnitten beschriebene Flexibilität bei Triggerung und Synchronisation von Analogeingängen gilt auch für Analogausgänge. Mit intelligenter Datenerfassung können verschiedene Analogausgangskanäle mit unterschiedlichen Geschwindigkeiten völlig unabhängig voneinander aktualisiert werden. Das bedeutet, dass die Frequenz eines einzelnen periodischen Signals verändert werden kann, ohne die Ausgänge anderer Kanäle zu beeinflussen. Diese Funktionalität steht auf den meisten Datenerfassungsgeräten nicht zur Verfügung.

Weiterführender Link:
Signalerzeugung mit RIO-basierter Hardware und dem LabVIEW FPGA Module

Counter/Timer-Operationen


Wie schon erwähnt haben typische Multifunktions-Datenerfassungsgeräte nur zwei integrierte Counter, während intelligente Datenerfassung die Counter-Funktionalität auf jedem verfügbaren Digitalkanal implementieren kann. Digital-I/O-Knoten können von der speziellen Struktur einer zeitgesteuerten Schleife (SCTL, Single-Cycle Timed Loop) in LabVIEW FPGA profitieren. Damit kann Code in Bereichen von 2,5 bis 200 MHz ausgeführt werden. Mit einem 40-MHz-Takt kann etwa mittels einer SCTL auf jedem beliebigen Digitalkanal ein 40-MHz-Counter erstellt werden. Abbildung 12 zeigt ein entsprechendes Blockdiagramm.


Abbildung 12: Einfacher Ereigniszähler mit intelligenter Datenerfassung


Da der Zählerwert in Form von U32-Daten (vorzeichenlose 32-bit-Integerwerte) an ein Anzeigeelement geschickt wird, würde dieser Code auf dem FPGA-Chip einen 32-bit-Counter mit 40 MHz erzeugen. Dieser Vorgang könnte mehrmals wiederholt werden, um mehrere Counter zu erhalten, die auf verschiedenen Digitalkanälen parallel zueinander arbeiten. Der wahre Wert der intelligenten Datenerfassung liegt jedoch darin, dass man die Counter-Operationen vollständig anwenderdefiniert anpassen kann. Man kann den Counter etwa bei jeder dritten steigenden Flanke inkrementieren oder sogar, basierend auf dem Wert des Zählerregisters, eine analoge Erfassung triggern. Viele komplexe Counter-Operationen, wie z. B. die Erzeugung einer endlichen Pulsfolge oder kaskadierte Ereigniszählung, erfordern zwei Counter, also bei typischen Multifunktionsgeräten alle integrierten Counter. Mit bis zu 160 Digitalkanälen wird die Anzahl der Counter auf intelligenten Datenerfassungsgeräten kaum durch die Verfügbarkeit von I/Os eingeschränkt, sondern meistens nur von der Größe des FPGA-Chips begrenzt. Da der LabVIEW-Code direkt auf dem Chip in Hardware abgebildet wird, entfällt das Scharfschalten,wie man es von universellen Countern kennt, und der Anwender besitzt umfassende Kontrolle über die Counter-Operation.

Abbildung 13 zeigt ein Beispiel für die Verwendung von Countern bei der Erzeugung einer kontinuierlichen Impulsfolge mit einem Pausentrigger in NI-DAQmx.


Abbildung 13: Erzeugung einer kontinuierlichen Pulsfolge mit Pausentrigger durch NI-DAQmx



In LabVIEW FPGA muss der Pausentrigger nicht konfiguriert werden, da eine einfache Case-Struktur dieselbe Funktionalität auf dem Chip implementiert. Und so sieht dieselbe Funktionalität aus, wenn sie mit intelligenter Datenerfassungshardware implementiert wurde:


Abbildung 14: Erzeugung einer kontinuierlichen Pulsfolge mit Pausentrigger durch intelligente Datenerfassung


In diesem Fall ist Digitalkanal 0 der Pausentrigger und der Puls wird auf Digitalkanal 1 ausgegeben. Mit einer zeitgesteuerten Schleife wird bei jedem Impuls eine Auflösung von 25 ns erreicht, denn dies ist der Wert eines einzelnen „Ticks“, wenn der 40-MHz-Zeitgeber genutzt wird.

Weiterführender Link:
PWM-Ausgabe mit dem LabVIEW FPGA Module

Digital-I/O-Anwendungen


Mit bis zu 160 hardwaregetakteten Digitalkanälen eignet sich intelligente Datenerfassungshardware für viele digitale Anwendungen. Bereits erwähnt wurden in diesem Zusammenhang Triggerung, Synchronisation und Counter/Timer-Implementierungen. Doch intelligente Datenerfassung kann auch für die Ermittlung der Bitfehlerrate, digitale Mustererkennung, Pulsweitenmodulation, Inkrementaldrehgeber und digitale Kommunikationsprotokolle eingesetzt werden. Sowohl anwenderdefinierte als auch standardmäßige serielle Schnittstellen können direkt aus den digitalen Timing-Diagrammen programmiert werden. SPI (Serial Peripheral Interface) beispielsweise ist ein gängiges serielles Protokoll für die Kommunikation mit Hardwarekomponenten wie Mikrocontrollern und A/D-Wandlern. Das Timing-Diagramm in Abbildung 15 zeigt die drei Digitalkanäle, die für die SPI-Kommunikation mit 16 bit benötigt werden.


Abbildung 15: SPI-Timing-Diagramm



Wie im Timing-Diagramm gezeigt, wird jedes der 16 Datenbits nacheinander, also seriell, während eines Taktzyklus übertragen, solange der Chip-Select-Kanal LOW ist. Hier wird nun dargestellt, wie die Programmierung in LabVIEW mit drei Digitalkanälen auf intelligenter Datenerfassungshardware aussieht.


Abbildung 16: 16-bit-SPI-Kommunikationsblockdiagramm


Die äußere While-Schleife stellt sicher, dass der gesamte Code kontinuierlich ausgeführt wird. Das Boolesche Bedienelement (Write) startet mittels der Case-Struktur die Datenübertragung. Der erste Rahmen der Sequenzstruktur setzt den Chip-Select-Kanal auf LOW. Der mittlere Rahmen schreibt dann das Datenbit und schaltet die Taktleitung 16 Mal. Der dritte Sequenzrahmen setzt schließlich den Chip-Select-Kanal wieder auf TRUE und den Datenkanal auf den Standardzustand (FALSE) zurück. Dieses einfache Beispiel demonstriert nur eine von vielen Möglichkeiten der digitalen Kommunikation mit intelligenter Datenerfassung. Soll digitales Handshaking implementiert werden, wären zwei Kanäle für die ACK- (bereit) und REQ- (Pause) Kanäle notwendig, ein weiterer für das Taktsignal und zusätzliche parallel arbeitende Datenkanäle.

An Digitalkanälen tritt oft Prellen auf, besonders wenn elektromechanische Kontakte verwendet werden. Jedoch kann mit LabVIEW FPGA ein Entprellfilter auf digitale Eingangskanäle angewendet werden. Ein digitaler Entprellfilter entfernt falsche Zustandsänderungen, indem er gewährleistet, dass Übergänge für eine minimale Zeitspanne ihren Wert behalten. So werden durch Prellen entstehende fehlerhafte Abtastungen vermieden. Abbildung 17 zeigt ein Beispiel dafür, wie dies mit intelligenter Datenerfassung erreicht werden kann.


Abbildung 17: Blockdiagramm eines digitalen Filters auf intelligenter Datenerfassungshardware
Weiterführender Link:
SPI-Kommunikation in LabVIEW FPGA
I2C-Implementierung in LabVIEW FPGA
Entwicklung eines SPDIF-Eingangsmoduls in LabVIEW FPGA
RS-232-Schnittstelle mit dem LabVIEW FPGA Module

Methoden der Datenübertragung

Ein Hauptunterschied zwischen traditioneller Multifunktionsdatenerfassung mit dem NI-DAQmx-Treiber und intelligenter Datenerfassung besteht in der Implementierung der Datenübertragung. Der NI-DAQmx-Treiber abstrahiert alle Übertragungen vom Gerät an den Host-Computer, während dies für FPGA-basierte Hardware ausschließlich in LabVIEW programmiert wird. Daten können im Gerät auf verschiedene Arten und mit verschiedenen Datenübertragungsmethoden, wie etwa DMA-Kanälen und Interrupt-Requests, gepuffert werden.

Ein FIFO-Puffer in LabVIEW FPGA wird im Projekt-Explorer von LabVIEW konfiguriert und kann entweder über den integrierten Speicher oder über Hardwarelogik implementiert werden. Abbildung 18 zeigt, wie man einen FIFO-Puffer, bestehend aus Integer-Werten, im Projekt-Explorer für den integrierten Speicher konfiguriert.


Abbildung 18: FIFO-Konfiguration in LabVIEW FPGA


Nachdem der FIFO erstellt wurde, kann er für die Datenübertragung zwischen mehreren Schleifen auf einem Blockdiagramm in LabVIEW FPGA genutzt werden. Im Beispiel in Abbildung 19 werden Daten in den FIFO in der linken Schleife geschrieben und aus dem FIFO in der rechten Schleife gelesen.




Abbildung 19: Blockdiagramm in LabVIEW FPGA mit FIFO und mehreren Schleifen


DMA-Kanäle (Direct Memory Access), die auch mit LabVIEW-FPGA-FIFOs implementiert werden, können ganz ähnlich im Projekt-Explorer konfiguriert werden.


Abbildung 20: DMA-FIFO-Konfiguration in LabVIEW FPGA




Abbildung 21: Blockdiagramm in LabVIEW FPGA mit DMA-FIFO und Bit Packing (Bitverknüpfung)


Alle DMA-FIFO-Übertragungen haben 32 bit, so dass es, wenn Daten von einem 16-bit-Analogeingangskanal stammen, oftmals effizienter ist, Abtastungen zu kombinieren und Daten von zwei Kanälen oder Abtastungen gleichzeitig zu übermitteln. Wenn Daten direkt an den Speicher des Host-PCs übertragen werden, können sie mit den Funktionen der Host-Schnittstelle in LabVIEW, das in einer Windows-Umgebung läuft, gelesen werden (Abb. 22).


Abbildung 22: Host-Schnittstellencode mit gelesenem DMA-FIFO und Bit Unpacking (Bitaufteilung)


Wie in Abbildung 22 dargestellt, referenziert das Blockdiagramm der Host-Schnittstelle das FPGA-VI auf dem Zielsystem und liest dann den DMA-FIFO kontinuierlich in einer While-Schleife. Die 32-bit-Daten werden wieder in die zwei erfassten 16-bit-Kanäle aufgeteilt und in einem Signalverlaufsdiagramm dargestellt. Das Host-Schnittstellen-VI kann auch jedes Frontpanel-Anzeige- oder -Bedienelement des FPGA-VI lesen und darauf schreiben. In diesem Fall wird auch in das Bedienelement Stopp geschrieben.

Weiterführender Link:
Entwicklung von Hochgeschwindigkeits-Datenerfassungsanwendungen für rekonfigurierbare I/O-Geräte mit für DMA konfigurierten FPGA-FIFOs

Fazit

Während festgelegte ASICs wie etwa DAQ-STC2 zwar die Anforderungen der meisten Datenerfassungsanwendungen erfüllen, können komplette Flexibilität und Anpassbarkeit nur mit den rekonfigurierbaren, FPGA-basierten Eigenschaften intelligenter Datenerfassung bezüglich I/O-Timing, -Steuerung und -Regelung erreicht werden. Mit LabVIEW FPGA werden Trigger- und Synchronisationsaufgaben genauso einfach wie das Anlegen eines Blockdiagramms. Die unabhängigen analogen und digitalen I/O-Kanäle sorgen dafür, dass intelligente Datenerfassung die Parallelität von FPGAs ausnutzen kann. Ob unterschiedliche Abtastraten, anwenderdefinierte Counter-Operationen oder Onboard-Entscheidungsfindung bei 40 MHz – intelligente Datenerfassungsgeräte der R-Serie haben die Multifunktions-Datenerfassung revolutioniert.

Weitere Ressourcen: