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 

FPGA FIFO - Oszilloscop



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!

31.08.2015, 14:49
Beitrag #1

PxCE_HB Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Aug 2015

2015
2015
DE


Deutschland
FPGA FIFO - Oszilloscop
Guten Tag LabVIEW Community,

ich versuche eine Art Oszilloskop zu bauen. Um nun die Messwerte zu puffern (wie der Ringspeicher eines digitalen Oszilloskops) habe ich mir überlegt ein FIFO zu nutzen, da ich die Messwerte sowieso aus dem FPGA Programm zum Host übertragen muss.
Nun plage ich mich mit dem FIFO in LabVIEW herum. Ich schreibe Werte von zwei AI-Modulen (NI 9223 & NI 9227) in ein FIFO. Die Wartezeit in dem FPGA Programm lässt sich einstellen (siehe Screenshot).
Anschließend möchte ich die Werte auf meinem Bildschirm ausgeben. Auch in dem Programm habe ich eine Wartezeit. Diese Wartezeit bestimme ich über die Wartezeit aus dem FPGA Programm multipliziert mit der Anzahl der Elemente die ich aus dem Array lesen möchte. Z.B. 3 µs Wartezeit im FPGA * 1000 Elemente aus FIFO lesen = 3 ms Wartezeit für das Host Programm (alle Werte müssen noch per Hand berechnet und eingestellt werden).
Dabei tritt allerdings schon ein Problem auf. Wenn ich 20 µs im FPGA warte und 100 Elemente aus dem FIFO lesen möchte muss ich demnach 2 ms Warten. Allerdings läuft dann der FIFO voll (bis zum überlauf). Aber warum können die Daten nicht schnell genug abgeholt werden?
Mache ich Grundsätzlich bei der Nutzung des FIFOs etwas falsch?
Kann ich die Verwendung des FIFOs umgehen indem ich die Werte über das Lese/Schreibe-Element übergebe und in dem Host Programm einen Ringspeicher baue?


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

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: FPGA FIFO - Oszilloscop
Hallo PxCE,

Zitat:Wenn ich 20 µs im FPGA warte und 100 Elemente aus dem FIFO lesen möchte muss ich demnach 2 ms Warten. Allerdings läuft dann der FIFO voll (bis zum überlauf). Aber warum können die Daten nicht schnell genug abgeholt werden?
- Wie groß ist dein FIFO eingerichtet?
- Du hast bei der "Anzahl Elemente" beachtet, dass du zwei Kanäle abfragst und deshalb doppelt so viele Samples abfragen musst? (Also nicht 100 wie in deinem Beispiel, sondern 200?)
- Andere Vorgehensweise: im Host entweder nur eine kleine oder gar keine Wartezeit einrichten, dafür aber einfach die gewünschte Datenmenge abfragen. Das FIFO-Read sollte warten, bis die gewünschte Anzahl Samples im FIFO geschrieben wurde…

Zitat:Kann ich die Verwendung des FIFOs umgehen indem ich die Werte über das Lese/Schreibe-Element übergebe und in dem Host Programm einen Ringspeicher baue?
Ich glaube nicht, dein Host wird überhaupt nicht so schnell einzelne Samples über das FPGA.ReadControl abfragen können…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.09.2015, 12:41
Beitrag #3

PxCE_HB Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Aug 2015

2015
2015
DE


Deutschland
RE: FPGA FIFO - Oszilloscop
Zitat:- Wie groß ist dein FIFO eingerichtet?
- Mein FIFO ist 1023 (Standardwert) groß.

Zitat:- Du hast bei der "Anzahl Elemente" beachtet, dass du zwei Kanäle abfragst und deshalb doppelt so viele Samples abfragen musst? (Also nicht 100 wie in deinem Beispiel, sondern 200?)
- Auch wenn ich 200 Elemente entnehme läuft der FIFO voll. Das mit den zwei Kanälen habe ich auch schon überlegt, aber warum geht es dann bei dem ersten Beispiel wenn ich alle 3 ms 1000 Werte lese und den mit 3 µs beschreibe?

Zitat:- Andere Vorgehensweise: im Host entweder nur eine kleine oder gar keine Wartezeit einrichten, dafür aber einfach die gewünschte Datenmenge abfragen. Das FIFO-Read sollte warten, bis die gewünschte Anzahl Samples im FIFO geschrieben wurde…
- Wenn ich warte bis ich die gewünschte Anzahl von Elemente in dem FIFO habe und dann erst lese (Programm siehe Anhang) funktioniert es leider auch nicht besser (oder ist das was ich gebaut habe falsch?)

Des Weiteren habe ich festgestellt, dass die Werte in dem Signalverlaufsgraphen nur richtig angezeigt werden wenn die restlichen Elemente in dem FIFO 0 sind. Allerdings bleibt manchmal 1 Element über, so dass der Graph dann nicht mehr richtig angezeigt wird. Nach einem Neustart ist wieder alles gut.
Ich habe zusätzlich noch mein Projekt mit angehängt.

Außerdem habe ich festgestellt, dass sich das Signalverlaufsdiagramm verändert wenn ich die Anzahl der zu lesenden Elemente anpasse. Dabei bekomme ich die Daten für das Signalverlaufsdiagramm nicht aus dem FIFO sondern über das Lese-/Schreibe Element. Hat dazu jemand eine Erklärung?


Angehängte Datei(en) Thumbnail(s)
       

15.0 .vi  Werte_anzeigen_FIFO.vi (Größe: 32,07 KB / Downloads: 423)

15.0 .vi  Werte_erfassen_FIFO.vi (Größe: 47,64 KB / Downloads: 413)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.09.2015, 13:05 (Dieser Beitrag wurde zuletzt bearbeitet: 01.09.2015 13:07 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: FPGA FIFO - Oszilloscop
Hallo PxCE,

Zitat:oder ist das was ich gebaut habe falsch?
KA
Die Verbreitung von LV2015 ist noch eher gering, da können viele noch keinen Blick auf deine VIs werfen. Und ein RT/FPGA-VI ohne zugehöriges Projekt ist auch nur bedingt sinnvoll anzuschauen…

Zitat:Allerdings bleibt manchmal 1 Element über, so dass der Graph dann nicht mehr richtig angezeigt wird. Nach einem Neustart ist wieder alles gut.
Das kommt von dem Decimate1DArray, was du einsetzt. Wenn du beim Lesen aus dem FIFO um ein Sample verrutscht, werden die Samples nicht mehr richtig zugeordnet. Das lässt sich leicht beheben, in dem man
1) immer eine gerade Anzahl Samples aus dem FIFO liest und
2) den FIFO nicht überlaufen lässt…
(Oder man baut einen "Marker"/"TermChar" in den FIFO-Datenstrom ein, anhand dessen dann die Samples den Kanälen zugeordnet werden.)

Zitat:Außerdem habe ich festgestellt, dass sich das Signalverlaufsdiagramm verändert wenn ich die Anzahl der zu lesenden Elemente anpasse. Dabei bekomme ich die Daten für das Signalverlaufsdiagramm nicht aus dem FIFO sondern über das Lese-/Schreibe Element.
KA
Was bedeutet "verändern"?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.09.2015, 13:29
Beitrag #5

PxCE_HB Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Aug 2015

2015
2015
DE


Deutschland
RE: FPGA FIFO - Oszilloscop
Das Projekt kann ich leider nicht hochladen, da mir das Forum dieses verbietet.
Zitat:Bitte korrigiere die folgenden Fehler, bevor du fortfährst:

Der Datei-Typ ist nicht erlaubt. Bitte lösche das Attachment oder wähle ein anderes.
Kann ich die VIs für ältere Versionen speicher (so wie bei MS Office geht es leider nicht), falls nicht muss ich weiter mit Screenshots arbeiten Wink

Verändern soll heißen, dass aus einem Sinussignal welches gemessen wird ein Dreieck wird. Außerdem ändert sich die Aktuallisierungszeit des Signalverlaufsdiagramm.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.09.2015, 13:32
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: FPGA FIFO - Oszilloscop
Hallo PxCE,

Zitat:Das Projekt kann ich leider nicht hochladen, da mir das Forum dieses verbietet.
ZIP-Dateien sind erlaubt. RAR auch. So hat man alles in einem einzigen Download…

Zitat:Kann ich die VIs für ältere Versionen speicher (so wie bei MS Office geht es leider nicht), falls nicht muss ich weiter mit Screenshots arbeiten
Einfach mal ins Datei-Menü bei LabVIEW gucken und aufmerksam lesen…

Zitat:Verändern soll heißen, dass aus einem Sinussignal welches gemessen wird ein Dreieck wird. Außerdem ändert sich die Aktuallisierungszeit des Signalverlaufsdiagramm.
Wenn sich die Aktualisierungszeit (aka "Samplerate") ändert, dann sieht der Signalverlauf auch anders aus. Die Herren Shannon und Nyquist lassen grüßen…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
01.09.2015, 13:48
Beitrag #7

PxCE_HB Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Aug 2015

2015
2015
DE


Deutschland
RE: FPGA FIFO - Oszilloscop
Zitat:ZIP-Dateien sind erlaubt. RAR auch. So hat man alles in einem einzigen Download…
Einfach mal ins Datei-Menü bei LabVIEW gucken und aufmerksam lesen…
Sorry für die unqualifizierte Frage. Vielleicht sollte ich Feierabend machen...

Ich habe nochmal das Projekt in LV2014 angehängt.


Angehängte Datei(en)
0.0 .rar  Strom-_Spannungsmesser LV 14.rar (Größe: 59,33 KB / Downloads: 417)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.09.2015, 13:54 (Dieser Beitrag wurde zuletzt bearbeitet: 01.09.2015 13:59 von GerdW.)
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: FPGA FIFO - Oszilloscop
Hallo PxCE,

schnelle Antwort auf dein RAR-Projekt: Das HOST-VI gehört in den RT-Zweig, sprich muss auf dem cRIO ausgeführt werden!
Wenn du den FPGA-FIFO auf dem PC abfragst, versucht LabVIEW im Hintergrund, dies evtl. über das Netzwerk zu realisieren: das ist aber nicht der Normalfall und auch nicht empfohlen!

Wenn du die Daten auf dem PC haben willst, musst du sie selbst vom cRIO-RT zum PC schicken. LabVIEW kommt mit Beispiel-Projekten, und für das cRIO (bzw. für LV-RT) gibt es da auch fertige Vorlagen!

Ansonsten:
Du hast einen FIFO. Der FPGA schiebt Daten hinein, die du im RT auslesen musst. Wenn das Auslesen zu langsam erfolgt, läuft der FIFO voll. Also ist die Lösung: FIFO schneller auslesen, ergo: Wartezeit weglassen, einfach Elemente abfragen!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.09.2015, 14:25
Beitrag #9

PxCE_HB Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Aug 2015

2015
2015
DE


Deutschland
RE: FPGA FIFO - Oszilloscop
Guten Tag,
ich habe mir das Beispiel "Interleaving Channel Data (DMA)" angeschaut und auf meine Hardware angepasst. Das Host Projekt läuft relativ stabil. Allerdings läuft der FIFO-Speicher voll wenn der PC mit anderen Dingen beschäftigt ist. Also habe ich das VI unter cRIO geschoben (siehe Screenshot). Dies habe ich gemacht, damit es ein RT-Projekt wird und stabiler läuft. Allerdings ist genau der gegenteilige Effekt aufgetreten. Nun läuft das Projekt nur noch wenige Sekunden bis der FIFO voll ist.
Nachdem ich die Darstellung des Graphen sowie die Wartezeit aus dem RT-Projekt entfernt habe läuft der FIFO nicht mehr voll.

Um nun die Daten in einem Diagramm sichtbar zu machen müssen diese auf dem Host transportiert werden. Kann mir jemand sagen wie ich am schnellsten und effektivsten die Daten vom RT zum Host bekommen? Mit Umgebungsvariablen oder ist es besser dafür nochmal ein FIFO zu nutzen? Falls FIFO RT, DMA oder Scope-Target?
Oder bin ich mit der Überlegung das Projekt in drei Teile (FPGA-Teil: Daten erfassen, RT-Teil: Daten verarbeiten, Host-Teil: Daten anzeigen) zu zerlegen auf den Holzweg?

Vielen Dank im Voraus für die Antworten.

Gruß
Hendrik


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.09.2015, 14:35 (Dieser Beitrag wurde zuletzt bearbeitet: 08.09.2015 14:36 von GerdW.)
Beitrag #10

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: FPGA FIFO - Oszilloscop
Hallo PxCE,

Zitat:Allerdings läuft der FIFO-Speicher voll wenn der PC mit anderen Dingen beschäftigt ist. Also habe ich das VI unter cRIO geschoben (siehe Screenshot)
Das Host-VI gehört ja auch auf den RT-Teil deines cRIO, es hat nichts auf dem PC zu suchen!

Zitat:Nachdem ich die Darstellung des Graphen sowie die Wartezeit aus dem RT-Projekt entfernt habe läuft der FIFO nicht mehr voll.
Dein cRIO hat keinen Monitor, auf dem es etwas anzeigen kann: also ist ein Graph in einem RT-VI vollkommen sinnlos!
Das mit der Wartezeit hatten wir doch früher schon erörtert

Zitat:Um nun die Daten in einem Diagramm sichtbar zu machen müssen diese auf dem Host transportiert werden.
Auch das hatte ich dir schon geschrieben: du musst die Daten nun vom RT zum PC transportieren. Und ich hatte dir Beispiele empfohlen

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
  FPGA FIFO vs. MEMORY derandyk 1 4.506 30.11.2018 11:42
Letzter Beitrag: GerdW
  16 Kanal AI mit FPGA und DMA FIFO derandyk 12 12.388 23.11.2018 15:56
Letzter Beitrag: BNT
  FPGA FIFO Roland 5 7.830 28.05.2018 20:16
Letzter Beitrag: jg
  Sind Referenzen auf FPGA-Variablen in FPGA vi möglich? Felix777 2 7.934 26.10.2015 20:41
Letzter Beitrag: Felix777
  unplausible Werte aus FIFO kwakz 2 7.438 28.09.2015 06:05
Letzter Beitrag: kwakz
  Kommunikation über DMA zwischen FPGA und RT: FIFO nur für 3 ms füllen Rostra 9 10.473 18.06.2015 06:17
Letzter Beitrag: Rostra

Gehe zu: