Hallo bisasam,
es ist schon vollkommen ok, das Ganze erst einmal auf dem Desktop auszuprobieren. So ist dein VI vermutlich auch gedacht. Auf den FPGA zu gehen, wenn die Bedienung der VIs nicht verstanden wurde, macht auch ziemlich wenig Sinn. Da kommen dann auch noch mal ganz andere Dinge dazu. Das FFT VI ist für den FPGA gemacht und muss daher auch entsprechend bedient werden. Dein Beispiel ist davon noch ziemlich weit entfernt
Wenn ich dein VI richtig verstehe, dann willst du erst einmal nur simulierte Messdaten erzeugen und aus denen dann die FFT berechnen. Da es später auf einen FPGA laufen soll, wird das etwas komplizierter - sonst wäre es ja ganz einfach. Aber dabei hast du dich ziemlich "verlaufen". Das geht so nicht
Ich habe mal ein etwas anderes Beispiel dafür erstellt.
Das enthält zwei While Schleifen. Die untere While-Schleife simuliert die Datenerfassung. Vom Prinzip her könnte auf diese Art die Datenerfassung in einer single-cycle-timed-loop, also mit voller Taktrate des FPGA, laufen. Natürlich nur, sofern der A/D Wandler das auch kann.
Oben erfolgt die Messung des Signals (jeweils ein Sample aus dem Sinusgenerator und ein bisschen Rauschen dazu).
Anschließend (mitte) sammle ich 16 Samples und wenn 16 Samples zusammen gekommen sind, dann werden diese zur Auswertung (FFT) gesendet (also zur oberen While-Schleife). Als Ersatz für einen FPGA FIFO verwende ich einfach eine Queue und der verwendete Sinusgenerator würde auch nicht auf einem FPGA funktionieren - spielt aber erst mal keine Rolle.
Die obere While-Schleife bekommt nun über die Queue (das wäre ein FIFO auf dem FPGA) jeweils 16 Samples. Also genau die Anzahl Samples, welche für die FFT benötigt werden. Sofern das FFT VI am Ausgang "ready for input" den Wert TRUE liefert guckt die obere While Schleife ob neue Daten aus der Messdatenerfassung vorhanden sind. Wenn ja, dann bekommt das FFT VI in der nächsten Iteration der While-Schleife die Daten und der FFT Eingang "input valid" wird auf TRUE gesetzt. Sind keine neuen Daten vorhanden, dann ist "input valid" immer FALSE.
Nun darf die FFT also die nächsten 16 Samples berechnen. Bei den aktuellen Einstellungen der FFT dürfte das FFT VI nach etwas 1300 Iterationen die ersten Ergebnisse liefern (output valid = TRUE).
Das FFT VI liefert dann am Ausgang 16 Werte von den 1024 Werten der kompletten FFT Daten. Wo die hin kommen, das steht in "data out indexes". Die Daten von "real data out" und "imaginary data out" müssen also an die richtige Stelle. Da habe ich mir jetzt nicht die Mühe gemacht, das in Anlehnung an eine single-cycle-timed-loop zu programmieren. In einer single-cycle-timed-loop hättest du jetzt 16 Takte Zeit im die 16 Samples richtig zu einzusortieren. Also genau so lange wie die Datenerfassung bei einer single-cycle-timed-loop braucht um dir die nächsten 16 Samples zu liefern.
Wenn alle 1024 Samples (so groß ist die gesamte FFT) vorhanden sind, dann berechnet das VI noch das Spektrum und gibt es auf dem Graph aus. Das würde auf dem FPGA auch nicht funktionieren. Es ist aber der Zeitpunkt um die fertige FFT einer weiteren Verarbeitung zuzuführen.