LabVIEWForum.de - Datentransfer mit 2 DMA FIFOs

LabVIEWForum.de

Normale Version: Datentransfer mit 2 DMA FIFOs
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo an Alle,

ich habe nun schon einige der NI Foren durchsucht, aber ich konnte nicht wirklich fündig werden, zumindest was mein direktes Problem angeht.

Um es mal kurz zu beschreiben:
Ich habe ein cRIO 9014 mit zwei 9233er Modulen von denen ich alle 8 Kanäle bei 50kS/s auslesen lassen möchte. Da dadurch natürlich die Datenmenge sehr groß wird wollte ich pro Modul ein DMA FIFO verwenden. Hierzu habe ich die DMA Channel 0 und 1 für je 4 Eingänge verwendet.

Bei einem Modul funktioniert Alles blendend, aber wenn ich beide DMAs abfragen lasse, so erscheint ein Timeout Fehler (Error -50400) im Host Vi.
Kann mir jemand sagen was an dem Vi falsch sein könnte?

Vielen Dank schonmal im Vorraus!

Gruß Sven
Hallo Svensson,

spontan fällt mir nur die Frage ein ob beide DMA-FIFOs auch groß genug sind bzw. ob die 5 Sekunden für die 16384 auch reichen? Wären meine ersten beiden Ideen warum es nicht funktionieren könnte.

mfg

Holger
Vor 8.5 hatte der compiler ab und an probleme bei der synchronisierung mit dem MITE chip.
Wenn es daran liegt, kannst du es durch einen Recompile beheben.

Des weiteren macht es keinen Unterschied ob du einen oder zwei DMA FIFOs nimmst, weil die daten immer ueber die 32bit Leitung gesendet werden.
Wennst an die Grenzen gehen willst, dann schmaelerst dir sogar die Durchsatzrate weil der Host zwei Operationen ausfuehren muss anstatt einer...
Den FPGA FIFO zu vergroessern macht nicht unmittelbar Sinn (es gibt sonderfaelle die aber in deinem fall nicht zutreffend scheinen), deshalb vergroessere lieber auf der host seite die FIFO tiefe die per default 10k elemente gross ist.

Open FPGA VI Ref (Run flag disabled!), danach invoke node mit Configure DMA und danach Start DMA... Danach FPGA run
Je nach messdauer und speichermedium solltest du einen benchmark laufen lassen damit die streaming rate auf die disk oder den USB stick maximiert wird.
Am 9014 solltest du auch darauf achten, dass so wenig thread swaps als moeglich durchgefuehrt werden (thread swaps sind unter vxworks auffaelig nicht deterministisch)
Vielen Dank für die hilfreiche Antwort freedive und holy!
Eine Frage habe ich aber noch, und zwar wie genau kann ich die Invoke Node FPGA run verstehen? Startet mit jedem Aufruf dieser Funktion das FPGA VI neu? Und käme es damit nicht zu einem Datenverlust in meiner Messung, da an dieser Stelle in der Schleife immer wieder das FPGA VI neu gestartet wird und somit die Messung nicht kontinuierlich läuft?

Ich möchte für eine Dauer von 6min Daten kontinuierlich erfassen lassen. Muss dafür vielleicht die Run FPGA Node ausserhalb meiner Schleife stehen?
Und wie genau funktioniert das "Wait Until Done". Die Hilfe sagt, die Node würde darauf warten, dass das VI seinen durchlauf beendet und wenn man ein True an den Eingang setzt, so solle man sicher gehen, dass das FPGA VI sich selber beendet? *verwirrt*

Tut mir leid, wenn das eine leicht verwirrende Frage ist, aber aus der Beschreibung in der Hilfe werde ich nicht so schlau.

Gruß Sven
Referenz-URLs