LabVIEWForum.de
Bedienung Steuerung FPGA => DMA => RT(myRIO) - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Module (/Forum-LabVIEW-Module)
+---- Forum: LabVIEW FPGA (/Forum-LabVIEW-FPGA)
+---- Thema: Bedienung Steuerung FPGA => DMA => RT(myRIO) (/Thread-Bedienung-Steuerung-FPGA-DMA-RT-myRIO)



Bedienung Steuerung FPGA => DMA => RT(myRIO) - lazaii - 22.06.2014 19:48

Hallo liebe LVler,

Ich versuche einen Datenlogger zu programmieren. Die Signale werden via FPGA eingelesen, dann mittels DMA ins RT geschoben und dort verarbeitet/ausgewertet. Soweit sogut. Smile

Ich habe bereits den Part auf dem FPGA versucht zu programieren, dieser funktioniert soweit, d.h. ich kann die Sensoren auslesen, und die Daten insgesamt ins DMA FIFO schieben. Im RT kann ich dieses FIFO auch auslesen, jedoch scheine ich hier noch etwas nicht ganz kapiert zu haben. Es kann sein das wenn ich das FIFO starten die Daten nicht auf der Position sind, wo sie sein sollten. Ich übertrage 3 x 64bit und 10 x 16Bit. Dadurch erkenne ich einen Versatz schnell. Wenn ich stoppe und wieder starte passt's dann oft. Zudem ist mir aufgefallen dass der mittgelieferte Counter bei 15Bit stehen bleibt.
Aber jetzt stehe ich irgendwie auf dem Schlauch. Mit welchen Ansätzen komme ich hier weiter? Wo liegt(en) mein(e) Fehler? Wie kontrolliere ich die Datenerhebung im FPGA (geschickt Smile)? Das FPGA-VI soll sobald gestartet die Daten ins RT spucken ohne Unterbruch des Datenflusses. Kann ich dann wie in diesem Guide gezeigt
[Bild: fig_5.png]
http://www.ni.com/white-paper/4534/en/

die Daten in dieser Schlaufe auslesen und fertig? Irgendwo habe ich gelesen dass Abhängigkeiten aufgrund des Datenflusses besteht. Aber ich sehe mittlerweile den Wald nicht mehr...

Hat mir jemand vllt. n tipp?

Smile


RE: Bedienung Steuerung FPGA => DMA => RT(myRIO) - Stefan_r - 27.06.2014 09:47

Ich habe genau das selbe Problem!
Laut der LabView Hilfe sollte die Fifo.stop Funktion ALLE Daten, HOST wie auch FPGA seitig im Fifo löschen, anschließend sollte die Reihenfolge meinem Verständnis nach deterministisch sein (es sei denn es kommt bereits zum Buffer-Überlauf vor dem ersten lesen). Das ist bei mir aber leider nicht der Fall.

Außerdem wird in der Hilfe vorgeschlagen, die Größe des Fifos auf FPGA Seite genau auf ein vielfaches der Channels zu setzen (dadurch könnte man zwar Daten verlieren, aber es sollte eigentlich kein Versatz mehr entstehen). Bei mir wird die "Restquested number of elements" aber immer durch "actual number of elements" ersetzt?! Dadurch lassen sich in meinem Fall das Vielfache nicht einhalten.


Hilfe wie man die Reihenfolge deterministisch hinbekommt wäre wirklich wünschenswert!


Viele Grüße,
Stefan


RE: Bedienung Steuerung FPGA => DMA => RT(myRIO) - GerdW - 27.06.2014 09:53

Hallo,

bei gemischten Daten im FIFO verwende ich gern (ähnlich wie z.B. bei der seriellen Schnittstelle) "TermChars". Wenn ich z.B. einen FIFO mit 32bit-Daten habe, schiebe ich dort am Paketanfang (oder -ende) ein "DEADBEEF" ein, welches ich dann auf dem RT-Host als eindeutige Kennung auswerten kann…


RE: Bedienung Steuerung FPGA => DMA => RT(myRIO) - Stefan_r - 27.06.2014 12:18

Ich habe jetzt für mich eine Lösung gefunden. Ob die generell das Problem behebt oder nur in meinem Fall kann ich nicht sagen.

Und zwar stoppe ich nun den FIFO, lese dann in einer While-Schleife bis keine Werte mehr übrig sind und starte den FIFO wieder. Ab dem Punkt sind die Daten immer in gleicher Reihenfolge. (Achte darauf dass kein Überlauf entsteht bis zum Auslesen der Daten, also direkt vorher platzieren)

Eigentlich eine simple Lösung, ich habe vorher es mit zwei read methoden versucht (die erste liest 1 Element, die zweite die Anzahl der übrigen aus dem Ersten), jedoch blieben nach dem zweiten read immer noch Elemente übrig (???).


RE: Bedienung Steuerung FPGA => DMA => RT(myRIO) - GerdW - 27.06.2014 12:22

Hallo Stefan,

für ">0" gibt es eine fertige Funktion…

Zitat:ich habe vorher es mit zwei read methoden versucht (die erste liest 1 Element, die zweite die Anzahl der übrigen aus dem Ersten), jedoch blieben nach dem zweiten read immer noch Elemente übrig (???).
Solange der FPGA weiterhin Daten in den FIFO schreibt, werden (während der RT-Host den FIFO liest) weiterhin neue Daten hineingeschoben!

Zitat:Und zwar stoppe ich nun den FIFO
Ob das dem FPGA so gefällt?


RE: Bedienung Steuerung FPGA => DMA => RT(myRIO) - Stefan_r - 27.06.2014 12:30

(27.06.2014 12:22 )GerdW schrieb:  Hallo Stefan,

für ">0" gibt es eine fertige Funktion…

Zitat:ich habe vorher es mit zwei read methoden versucht (die erste liest 1 Element, die zweite die Anzahl der übrigen aus dem Ersten), jedoch blieben nach dem zweiten read immer noch Elemente übrig (???).
Solange der FPGA weiterhin Daten in den FIFO schreibt, werden (während der RT-Host den FIFO liest) weiterhin neue Daten hineingeschoben!
Vorher wird natürlich fifo.stop aufgerufen.
Zitat:
Zitat:Und zwar stoppe ich nun den FIFO
Ob das dem FPGA so gefällt?
Warum sollte es nicht gefallen?
Mir fehlt leider die Einsicht in die tiefere Programmierung.