LabVIEWForum.de - Probleme bei Verwenden eines FIFO's im RT-Projekt

LabVIEWForum.de

Normale Version: Probleme bei Verwenden eines FIFO's im RT-Projekt
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebe Forenmitglieder,

Mein Projekt besteht darin über das Analogmodul 9234 Signale aufzunehmen, diese mit der FFT-Funktion zu transformieren, die erhaltenen Daten weiterverarbeiten und daraus ein Signal zu erzeugen, welches ich durch das Analogmodul 9263 wieder ausgebe. Dafür habe ich ein Projekt mit FPGA- und Host-VI erstellt.

Ich habe anhand der Beispiel-Projekte für die I/O-Module meine FPGA- und Host-VI's in meinem Projekt angepasst. Da ich die FFT im Host-VI durchführen möchte, wollte ich die von Modul1 aufgenommenen Daten im FPGA-VI in einen FIFO schreiben und dann im Host-VI wieder auslesen. Deshalb sieht mein FPGA-VI wie folgt aus:

[attachment=41510]

Ich habe darauf geachtet erst das Modul zu starten und dann das Messen durchzuführen.

Mein Host-VI habe ich vorerst wie folgt aufgebaut (das Durchführen der FFT ist erstmal entfernt, da ich erstmal schauen wollte, ob überhaupt was aus dem FIFO raus kommt):

[attachment=41512]

Mir sind dabei einige Dinge aufgefallen und Fragen gekommen.

1. ankommende Werte:
Das VI in dieser Form stellt mir die ankommenden Daten im Diagramm FIFO Data 2 richtig dar, d.h. ein eingegebenes SInus-Signal wird auch als solches ausgegeben. Ändere ich allerdings den Wert am Eingang "Number of Elements" beim darauffolgenden FIFO-Knoten, scheine ich zwar den FIFO in der Länge x zu beschreiben und zu lesen, dafür sehe ich im Diagramm FIFO Data 2 nur noch Gezappel und keinen Sinus mehr. Liegt das an einem falschen Umgang mit dem FIFO, z.B. fehlende Timeout-Abfrage oder so etwas?

2. FIFO befüllen und auslesen:
Beim Auslesen des FIFO's TARGET_2_HOST (Eingang "Number of Elements" mit 1024 versehen) erhalte ich für jeden Wert im Array eine 0. Also weder sehe ich die Werte für einen Sinus, noch für das oben beschriebene Gezappel.
Da der Ausgang "Data" vom Datentyp 1d-Array ist, dachte ich ich kann alle Werte mit einem Mal aus dem FIFO auslesen und über den Graphen anzeigen lassen.
Ist hier dennoch die Verwendung einer FOR-Schleife notwendig?
Und woran liegt es, dass sich im FIFO scheinbar keine Werte befinden?
Nutze ich gar eine Falsche FIFO-Art?

Ich habe mich bei dem VI an dem "Getting started" Beispiel-VI für das Modul NI 9234 orientiert.

3. Run und Abort des FPGA-VI's
Startet die Run-Funktion das FPGA-VI so, als würde ich auf den Pfeil drücken? Wenn ja, kann sich hier ein Fehler einschleichen bzw. kann das etwas Zeit in Anspruch nehmen? Ich habe das Gefühl, dass das FPGA-VI nicht ausgeführt wird, wenn die Funktion aufgerufen wird. Aber vll. liegt es ja auch nur an meiner Ungeduld.
Ist die Funktion Abort überhaupt nötig, da ich als Letztes in der While-Schleife die Stop-Bedingung des Host-VI's auf das FPGA-VI übergebe?

Ich bin für jeden noch so kleinen Tip dankbar.
Beste Grüße vom Schü
Ich konnte mir meine Fragen jetzt doch selber beantworten.

Vll. kann mir trotzdem nochmal jemand sagen ob meine Erkenntnisse richtig sind.

Zu 1.:
Ich habe mir dazu nochmal das "Getting startet" von NI durchgelesen und dabei ist mir aufgefallen, dass in dem Beispiel zuerst der FIFO und dann das FPGA-VI gestartet wird. Also habe ich die gleiche Reihenfolge auch in meinem VI eingehalten und jetzt funktioniert es.
Das Ganze erscheint mir auch logisch, da mit dem Start des FPGA-VI dieses ja sofort Werte in den FIFO schreiben wollte, der noch nicht gestartet war. Somit kam es sicherlich zu einem Fehler, so dass die Werte auch später nicht hineingeschrieben wurden.
Ist also die richtige Reihenfolge wichtig?

Zu 2.:
Geht ja einher mit 1.

Zu 3.:
Auch hier hat mir das "Getting startet"-Beispiel weitergeholfen. "Abort" scheint wohl wirklich nicht notwendig zu sein und die Funktion "Run" startet das FPGA-VI ganz normal.

Allerdings habe ich eine weitere Frage, für die ich nicht unbedingt ein neues Thema eröffnen möchte.

Diesmal betrifft es auch wieder FIFO's. Ich möchte über meinen Ausgangsfifo die von dem Sinus-VI erzeugten Daten an die FPGA weitergeben.
Ich habe dabei die Sinus-Erzeugung und den FIFO einfach miteinander verbunden (siehe nachfolgendes Bild).

[attachment=41527]

Allerdings kommt an meinem Ausgang vom Modul 9263 nur "Kauderwelch" raus. Liegt das vll. daran dass das erzeugte Sinussignal bevor es in den FIFO geschrieben wird, wieder umgewandelt wird? Bzw. wie kann ich dieses Problem besser lösen?

Ich hoffe auf eure Ratschläge.
Beste Grüße vom Schü
Kann meinen Beitrag ja leider nicht mehr bearbeiten.

Auf meine Frage aus Beitrag 2 habe ich auch eine Lösung gefunden. Mein Fehler lag nicht im Host-VI, sondern im FPGA-VI. So hatte ich 1. keine Timingbedingung vorgesehen gehabt und 2. war mein FIFO auf den falschen Datentyp eingestellt (zuerst U32, was aber bei einem Sinussignal unsinnig ist, da die Werte auch <0 sein können).
Referenz-URLs