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 

16 Kanal AI mit FPGA und DMA FIFO



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!

19.11.2018, 13:04
Beitrag #1

derandyk Offline
CLA
*


Beiträge: 30
Registriert seit: Feb 2012

2015
2007
DE_EN

91054
Deutschland
16 Kanal AI mit FPGA und DMA FIFO
Hallo Leute,

also FPGA Newbie hätte ich folgende Verständnisfrage: Meine Aufgabenstellung besteht darin, eine schnelle Datenerfassung für 16 AI Kanäle zu realisieren (8x2 zusammengehörige Werte). Die Analogwerte sollen erfasst und archiviert werden. Ich würde dies gerne mittels DMF FIFOs realisieren und dann im RT Teil auslesen und per Network Stream an den PC weiterleiten. Wenn ich mir die Examples ansehe wird zum Beispiel im Projekt "LabView FPGA Waveform Acquisition and Logging on cRIO" ein FIFO verwendet, in dem nacheinander 4 AI Werte in einen FIFO geschoben werden. Theoretisch kann man das sicherlich auch mit 16 AIs machen, oder?

Jetzt ist es nur so, dass ich am anderen Ende die 16 Werte auch wieder aus dem FIFO lesen und zuordnen muss. Durch meine 8 Sensoren mit jeweils zwei Werten muss ich das an der anderen Seite ja anhand von Indizes oder dergleichen machen. Ich frage mich nun, ob es nicht einfacher wäre gleich 8 DMA FIFOs anzulegen und damit eine eindeutige Zurordnung der Daten zu haben. Mein cRIO ist das 9063 mit 16 DMA Channels laut Datenblatt.

Wie wäre hier Eure Designempfehlung. Auf was muss ich achten? Kann ich auch mehrere DMA FIFOs in einer FPGA Schleife beschreiben?

Vielen Dank für Eure Hilfe im Voraus!

VG

Andy
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
19.11.2018, 14:59
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: 16 Kanal AI mit FPGA und DMA FIFO
Hallo Andy,

Zitat:ein FIFO verwendet, in dem nacheinander 4 AI Werte in einen FIFO geschoben werden. Theoretisch kann man das sicherlich auch mit 16 AIs machen, oder?
Ja klar! Nicht nur theoratisch, sondern auch praktisch!

Zitat:Wie wäre hier Eure Designempfehlung. Auf was muss ich achten? Kann ich auch mehrere DMA FIFOs in einer FPGA Schleife beschreiben?
Du kannst auch mehr als einen DMA verwenden - aber die sind eben auch eine begrenzte Resource!
Ich halte es für übertrieben, jeden Sensor (oder gar AI-Channel) in einen eigenen DMA-FIFO zu schieben…

Worauf du bei einem FIFO achten musst: du solltest NIE in die Situation kommen, dass Sender und Receiver "out of sync" laufen: Ich schreibe gern noch einen Füllwert als Separator in den Datenstrom, mit dem der Receiver garantiert immer an der richtigen Stelle die Daten aufdröseln und zuordnen kann…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.11.2018, 16:02
Beitrag #3

derandyk Offline
CLA
*


Beiträge: 30
Registriert seit: Feb 2012

2015
2007
DE_EN

91054
Deutschland
RE: 16 Kanal AI mit FPGA und DMA FIFO
Hallo GerdW,

vielen Dank für Deine Antwort. Genau das ist mit dem "Out of Sync" ist nämlich meine Befürchtung. Bei 8x2 AIs mit 10kHz Datenerfassung kommt ordentlich Datenstrom zusammen den ich dann erstmal wieder den einzelnen Sensoren zuordnen muss. Aus dem Grund dachte ich eben an die Verwendung von 8 DMA FIFOs (Für jeden Sensor einen). Damit hätte ich zumindest die Daten der Sensoren schon einmal separiert. Die Hardware gibt es ja scheinbar her mit 16 FIFOs laut Datenblatt. Jedoch fehlt mir die Erfahrung ob dies eine sinnvolle, praktikable Idee ist, oder ob sich daraus neue Fettnäpfchen ergeben, welche ich durch meine begrenzte Erfahrung noch nicht sehe.

VG

Andy
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.11.2018, 16:58
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: 16 Kanal AI mit FPGA und DMA FIFO
Hallo Andy,

Zitat:ob dies eine sinnvolle, praktikable Idee ist,
Und was machst du, wenn noch ein paar Messkanäle hinzukommen?
"Praktikabel" bedeutet (manchmal/meist) auch, dass die Lösung skalierbar ist…

Zitat:Die Hardware gibt es ja scheinbar her mit 16 FIFOs laut Datenblatt.
Ich weiß nicht, wieviel Platz im FPGA durch einen DMA-FIFO belegt wird. Wenn du alle 16 benutzt, hast du vielleicht nur noch wenig Platz für die eigentliche FPGA-Logik?

Zitat:Bei 8x2 AIs mit 10kHz Datenerfassung kommt ordentlich Datenstrom zusammen den ich dann erstmal wieder den einzelnen Sensoren zuordnen muss.
Das sind 160kS/s, die du in sinnvollen Blockgrößen wegschaufeln musst. Und das auch unabhängig davon, wieviele FIFOs du verwendest.
Die Zuordnung zu den einzelnen Sensoren ist ja durch die Position im Array gegeben: du schreibst im FPGA eben 16 Messwerte (+ evtl. einen Marker) in den FIFO und liest im Host eben ein Mehrfaches der 16 (+1) Werte aus. Neu synchronisieren musst du nur, wenn es im FIFO einen Overflow gab - den du ja tunlichst vermeiden solltest!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.11.2018, 17:51
Beitrag #5

derandyk Offline
CLA
*


Beiträge: 30
Registriert seit: Feb 2012

2015
2007
DE_EN

91054
Deutschland
RE: 16 Kanal AI mit FPGA und DMA FIFO
Hallo GerdW,

für den unerwünschten Fall, dass tatsächlich ein FIFO Overflow auftreten sollte: Was meinst Du dann konkret mit neu synchronisieren?

Vielen Dank im Voraus!

Andy
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.11.2018, 08:58
Beitrag #6

derandyk Offline
CLA
*


Beiträge: 30
Registriert seit: Feb 2012

2015
2007
DE_EN

91054
Deutschland
LabView DMA FIFO to PC
Hallo Leute,

ich habe nochmal eine Frage bezüglich der Architektur meiner geplanten cRIO LabView Applikation:

Ziel ist es 16 AI Kanäle mit einer Rate von 10kHz mittels des FPGA über längere Zeiten abzutasten und als TDMS zu speichern.

Ursprünglich hatte ich den Plan die Daten im FPGA in einen DMA FIFO zu schieben, diesen im RT auszulesen und von dort per Network Stream an den Host PC zu schicken um die Daten dort in eine TDMS Datei zu streamen. Jetzt habe ich bemerkt, dass ich mittels DMA FIFO auch direkt am PC auf die Daten zugreifen kann. Kann mir jemand erklären ob das sinnvoll ist? Ich wäre sicherlich nicht traurig auf den Network Stream verzichten zu können.

Was wäre Euer Designvorschlag für die Programmarchitektur für die oben genannte Aufgabenstellung?

Danke im Voraus

Andy
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
20.11.2018, 09:58
Beitrag #7

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: 16 Kanal AI mit FPGA und DMA FIFO
Hallo Andy,

nein, du kannst nicht direkt per DMA vom PC auf dein cRIO zugreifen: da ist nach wie vor nur ein LAN-Kabel zwischen beiden, welches die Verbindung herstellt!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.11.2018, 11:29
Beitrag #8

derandyk Offline
CLA
*


Beiträge: 30
Registriert seit: Feb 2012

2015
2007
DE_EN

91054
Deutschland
RE: 16 Kanal AI mit FPGA und DMA FIFO
Seltsamerweise funktioniert dies aber sehr gut bei mir...

Mein cRIO ist über LAN am Prüfrechner angeschlossen.

Ich betreibe auf dem PC "RT_Test.vi" in dem ich mittels FPGA Referenz auf das FPGA VI "FPGAVI.vi" zugreife. (siehe Screenshots)
Die FPGA Referenz referenziert auf das FPGA VI im Projekt.

Ich verstehe es noch nicht. Warum funktioniert das auch so???

Viele Grüße

Andy


Angehängte Datei(en) Thumbnail(s)
           
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.11.2018, 12:25 (Dieser Beitrag wurde zuletzt bearbeitet: 20.11.2018 12:29 von GerdW.)
Beitrag #9

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: 16 Kanal AI mit FPGA und DMA FIFO
Hallo Andy,

Zitat:Warum funktioniert das auch so???
Du bist mit deinem PC und deiner LabVIEW-IDE mit dem cRIO verbunden: hier wird LabVIEW mit aller Macht alles möglich machen (und notfalls simulieren).
Unter der Haube besteht trotzdem "nur" eine LAN-Verbindung mit dem cRIO - und darüber läuft nun mal kein DMA-FIFO, sondern eben nur "normaler" Netzwerkverkehr!
(Dieses Thema hatten wir hier schon mal, kannst ja mal die alten Beiträge durchsuchen.)

Wenn du diesen Weg (DMA-FIFO direkt mit dem PC) weiterverfolgst, bekommst du vielleicht (!) auch in der EXE einen Datenaustausch hin. Dieser wird aber auf keinen Fall deterministisch oder zuverlässig vonstatten gehen, da ja eben eine Netzwerkverbindung dazwischenhängt.
Ich schlage weiterhin die NetworkStreams vor, um Daten vom cRIO zum PC zu schicken: da hat LabVIEW schon einen Buffer eingebaut, der schlechte Netzwerkverbindungen ausgleicht…

Zu deinen Bildern:
- Du bekommst Integerdaten aus deinem DAQ-Modul? Üblicherweise kenne ich da nur FXP-Daten… (Liest du Raw-Daten?)
- Warum liest du im Host nicht einfach eine feste Anzahl an Daten aus dem FIFO, z.B. 256 oder 1024 Elements (Mehrfache von 16)?
- Statt Decimate und BuildArray könntest du auch ReshapeArray verwenden…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.11.2018, 15:44
Beitrag #10

derandyk Offline
CLA
*


Beiträge: 30
Registriert seit: Feb 2012

2015
2007
DE_EN

91054
Deutschland
RE: 16 Kanal AI mit FPGA und DMA FIFO
Zitat:Du bist mit deinem PC und deiner LabVIEW-IDE mit dem cRIO verbunden: hier wird LabVIEW mit aller Macht alles möglich machen (und notfalls simulieren).
Unter der Haube besteht trotzdem "nur" eine LAN-Verbindung mit dem cRIO - und darüber läuft nun mal kein DMA-FIFO, sondern eben nur "normaler" Netzwerkverkehr!
(Dieses Thema hatten wir hier schon mal, kannst ja mal die alten Beiträge durchsuchen.)

In der Realität des Prüfplatzes wird tatsächlich auch der Prüfrechner permanent mit dem cRIO verbunden sein. Das dies am Zweck eines cRIO ein bisschen vorbeigeht steht auf einem anderen Blatt. Fakt ist: Es funktioniert auch mit DMA FIFOs direkt auf den Host PC zu lesen/schreiben. Der Code wird dadurch halt wesentlich schlanker, da ich mir mindestens einen Network Stream Listener/Writer sparen würde. Die Frage ist ob es auch dauerhaft robust ist.
Gibt es hier im Forum Erfahrungsträger, die mit der Anwendung dieser direkten DMA FIFO --> Host PC Erfahrung haben?

Ja ich experimentiere gerade mit Raw Daten um die Dateigröße der TDMS Dateien kleiner zu halten. Aber das ist ein anderes Thema.

Viele Grüße und Danke im Voraus

Andy
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 3.598 30.11.2018 11:42
Letzter Beitrag: GerdW
  FPGA FIFO Roland 5 5.995 28.05.2018 20:16
Letzter Beitrag: jg
  Sind Referenzen auf FPGA-Variablen in FPGA vi möglich? Felix777 2 6.834 26.10.2015 20:41
Letzter Beitrag: Felix777
  unplausible Werte aus FIFO kwakz 2 6.414 28.09.2015 06:05
Letzter Beitrag: kwakz
  FPGA FIFO - Oszilloscop PxCE_HB 9 11.180 08.09.2015 14:35
Letzter Beitrag: GerdW
  Kommunikation über DMA zwischen FPGA und RT: FIFO nur für 3 ms füllen Rostra 9 8.925 18.06.2015 06:17
Letzter Beitrag: Rostra

Gehe zu: