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 

DMA FIFO: Wieviele Elemente sollte man holen?



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!

08.01.2010, 09:38
Beitrag #1

differtd Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Dec 2007

8.2
2007
de

33829
Deutschland
DMA FIFO: Wieviele Elemente sollte man holen?
Guten Morgen!

Ich habe einen FPGA an meinem cRIO und möchte über den DMA FIFO Messwerte von dem cRIO auf ein Host VI übertragen.
Die Depth des FIFOs steht auf 4095 und ich hole pro durchlauf zB 1000 Elemente vom FIFO ab. Nach ein paar durchläufen zeigt mir der "Elements Remaining"-Ausgang des FIFOs dann, dass keine Daten mehr ausstehen. Das ist auch ganz schön...

Aber was holt mein Host ab, wenn da keine Daten mehr im FIFO ausstehen?
Holt der nichts oder macht er irgend welche Zauberei? Huh

Schönen Gruß!

LV 8.6 cRIO 9022

LabView 8.2
Intel Core 2 Duo CPU @ 2,33GHz
3GB RAM
XP
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
08.01.2010, 11:27
Beitrag #2

chrissyPu Offline
LVF-Stammgast
***


Beiträge: 467
Registriert seit: Jun 2006

2014 PDS
2006
DE_EN

64283
Deutschland
DMA FIFO: Wieviele Elemente sollte man holen?
Hi,

Das hängt davon ab, wie du die Timeouts und die abzuholenden Elemente konfigurierst... Hast doch alle Möglichkeiten, z.B. Abfragen, wieviele Elemente noch da sind und entsprechend weniger abrufne oder abbrechen oder auf das Timeout reagieren, wenn du sachen abholst etc.

ch
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.01.2010, 15:01
Beitrag #3

differtd Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Dec 2007

8.2
2007
de

33829
Deutschland
DMA FIFO: Wieviele Elemente sollte man holen?
Hi,

Aber die ganzen Optionen des abfragens und so nützen mir doch nichts wenn der FPGA die ganze Zeit weiter Daten in den FIFO reinschiebt?! Blink

LabView 8.2
Intel Core 2 Duo CPU @ 2,33GHz
3GB RAM
XP
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.01.2010, 16:24
Beitrag #4

chrissyPu Offline
LVF-Stammgast
***


Beiträge: 467
Registriert seit: Jun 2006

2014 PDS
2006
DE_EN

64283
Deutschland
DMA FIFO: Wieviele Elemente sollte man holen?
Tag,

dann versteh ich Deine Frage nicht. Es ist doch so, dass der FPGA bzw. der RT Daten in den Fifo schreibt. Das macht er so lange, bis der Fifo voll ist, wenn das der Fall ist, bekommst Du einen Fehler auf dem FPGA gemeldet. Ggf. kann man das konfigurieren, wie lange er warten und probieren soll, Werte in den Fifo zu schreiben, bevor der Fehler kommt.

Irgendein Prozess, der den FiFo überwacht (der m.E. über den Fifo-Start-Methodenknoten gestartet wird, wobei ich nicht ganz genau weiß, ob das stimmt) schaut dann, das z.B. die Sachen aus dem FiFo auch irgendwie ins Memory geschrieben werden. In Deinem Fall wäre das ein Prozess, der per DMA die Daten aus dem Puffer aus dem FPGA-Memory auf das Memory vom Host schreibt.

Aus diesem Host-Memory rufst Du jetzt mit deinem Methodenknoten die Daten ab und zwar so viele, wie Du haben willst. Auch hier gibt es jetzt die Möglichkeit zu sagen, wieviele Daten abgeholt werden sollen und was passiert, wenn nicht ausreichend Daten da sind bzw. es zu lange dauert, bis diese Daten da sind. Zur Ablaufsteuerung kann man hier z.B. die Eigenschaft der im Fifo vorhandenen Elemente nutzen.

Deine erste Frage aus dem ersten Post hätte ich dementsprechend so beantwortet: Je nach Einstellung des Fifo-Lesen-Knotens aufm Host kommt entweder ein Timeout oder (wenn Du entsprechend auf die Remaining Elements reagierst) ein OK, alle Daten gelesen. Deine zweite Frage aus dem letzten Post entsprechend Nein, denn es kommt drauf an, was passiert: [list]Wenn der Fifo immer weiter reinschreibt und du immer 1000 Werte rausholst, ohne ein Timeout zu haben (das ist m.E. die Voreinstellung), dann holst du so lange alle Werte ab, wie die Abfragemenge des Hostes größer als die Datengenerationsrate des Targets ist. In diesem Fall wird die Fifo-Read-Operation nicht immer gleich lange dauern, weil der Knoten irgendwann an einer Stelle warten wird, bis die 1000 Werte voll sind. Das ganze geht endlos....<>
[st][list]Schreibt der FPGA mit dieser Konfiguration schneller, wird irgendwann der FIFO-Puffer voll sein und du hast eine Fehlermeldung auf dem Target. Wenn Du die nicht abarbeitest, fehlen Dir Daten, was du wahrscheinlich auch nicht merkst, da die RTs glaube ich keine automatische Fehlerhandler haben, wie im normalen LV<>
[st]Wenn man also mehr Kontrolle haben will, hat man entweder die Option, über Interrupts zu synchronisieren oder auf dem Host immer erst den Status des Fifo abzufragen und dann immer diese Anzahl an Elementen auszulesen. Damit ist man (wenn man vorher mal die Datenraten durchgerechnet bzw. sich angeschaut hat) meist auf der sicheren Seite.

So far,

ch
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  FPGA FIFO vs. MEMORY derandyk 1 4.134 30.11.2018 11:42
Letzter Beitrag: GerdW
  16 Kanal AI mit FPGA und DMA FIFO derandyk 12 10.585 23.11.2018 15:56
Letzter Beitrag: BNT
  FPGA FIFO Roland 5 6.981 28.05.2018 20:16
Letzter Beitrag: jg
  unplausible Werte aus FIFO kwakz 2 7.023 28.09.2015 06:05
Letzter Beitrag: kwakz
  FPGA FIFO - Oszilloscop PxCE_HB 9 12.551 08.09.2015 14:35
Letzter Beitrag: GerdW
  FIFO Fehler beim auslesen logan 2 6.621 15.01.2015 16:33
Letzter Beitrag: logan

Gehe zu: