INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Datentransfer mit 2 DMA FIFOs



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

01.09.2008, 13:29
Beitrag #1

Svensson Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: May 2008

8.2.1/8.x
2007
DE_EN

88090
Deutschland
Datentransfer mit 2 DMA FIFOs
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


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
08.09.2008, 17:07
Beitrag #2

Holy Offline
LVF-Stammgast
***


Beiträge: 339
Registriert seit: Sep 2008

2014
2007
EN

09XXX
Deutschland
Datentransfer mit 2 DMA FIFOs
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.09.2008, 19:52
Beitrag #3

thomas.sandrisser Offline
LVF-SeniorMod


Beiträge: 1.298
Registriert seit: Sep 2005

xxxx
2005
EN

78759
United States
Datentransfer mit 2 DMA FIFOs
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)
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.09.2008, 10:28 (Dieser Beitrag wurde zuletzt bearbeitet: 11.09.2008 10:48 von Svensson.)
Beitrag #4

Svensson Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: May 2008

8.2.1/8.x
2007
DE_EN

88090
Deutschland
Datentransfer mit 2 DMA FIFOs
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Eingänge mit verschiedenen Abtastfrequenzen in FIFOs schreiben MIngendorf 23 18.667 02.08.2013 10:53
Letzter Beitrag: MIngendorf
  Lassen sich die FIFOs per Name ansprechen? Matze 5 5.891 01.09.2010 08:18
Letzter Beitrag: cb
  DMA host to target, Datentransfer funktioniert nicht. hotzenplotz 6 7.366 11.01.2010 10:50
Letzter Beitrag: dlambert
  DMA Fifo Datentransfer und Datendarstellung im Waveform-Graphen Toby 1 4.876 29.07.2009 15:18
Letzter Beitrag: NoD
  Zeiten zum füllen und entleeren von FIFOs Marzl 2 5.503 14.01.2008 19:55
Letzter Beitrag: thomas.sandrisser

Gehe zu: