LabVIEWForum.de
FPGA 3-Phasen Generator, Phasen-Offset - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Module (/Forum-LabVIEW-Module)
+---- Forum: LabVIEW FPGA (/Forum-LabVIEW-FPGA)
+---- Thema: FPGA 3-Phasen Generator, Phasen-Offset (/Thread-FPGA-3-Phasen-Generator-Phasen-Offset)



FPGA 3-Phasen Generator, Phasen-Offset - Der Hoop - 06.07.2021 16:51

Hallo!


Ich arbeite mit folgender Hardware:

cRio 9054 Gehäuse

S-Serie 9269 Analogausgangsmodul



Das cRio soll als Signalgenerator arbeiten. Es sollen drei Signale mit einem Phasenversatz von jeweils 120 Grad erzeugt werden.
Das Signal wird für ein belieges Zeitintervall T_ein eingeschaltet und dann für ein weiteres Intervall T_aus ausgeschaltet. Nach jedem Durchlauf wird die Signalfrequenz erhöt f= {1Hz,2Hz,...300Hz,305Hz,...1000Hz,1100Hz...20kHz}. Damit die Signale auch bei höheren Frequenzen eine gute Auflösung haben, sollen sie auf dem FPGA generier und mit 100kHz gesamplet werden. Die Signalparameter werden über ein Host.VI auf dem PC vorgegeben (Amplitude, Phasenoffset, "Frequenziteration") und dem FPGA als Variable übergeben. Die Signale werden über Sine Wave Generator erzeugt und anschließend auf dem FPGA ausgegeben.


Nun zum Problem:

Der Phasenversatz der Signale variiert. Er bleibt nicht konstant bei 120 Grad. Ich vermute, dass das Problem in der parallelen Erzeugung der 3 Signale liegt. Da ich relativ neu in der Programmierung auf dem FPGA bin, kenne ich mich hier leider nicht sehr gut mit Timing-Problemen aus. Mein erster Versuch war, die Generator-Funktionen in separate Schleifen zu packen, um die Parallelität besser auszunutzen. Das hat allerdings nur für die ersten 50 Frequenziterationen funktioniert, dann kam es wieder zu einem ungewollten Versatz.
Gibt es eine Möglichkeit, die Phasenverschiebung auf dem FPGA zu regeln?


Vielen Dank für Eure Hilfe!

[attachment=62006][attachment=62005]


RE: FPGA 3-Phasen Generator, Phasen-Offset - GerdW - 06.07.2021 18:03

Hallo Hoop,

herzlich willkommen im Forum!

Zitat:Ich vermute, dass das Problem in der parallelen Erzeugung der 3 Signale liegt. Da ich relativ neu in der Programmierung auf dem FPGA bin, kenne ich mich hier leider nicht sehr gut mit Timing-Problemen aus.
Warum erzeugst du die Samples denn in 3 parallelen Schleifen und gibst sie in 3 IO-Nodes aus?

Du kannst doch den Sinus gleich dreimal generieren (und dabei den 120° Offset auch gleich auf dem FPGA addieren).
Und dann einfach alle 3 Werte mit einer IO-Node ausgeben.

Bei max. 100kHz Samplerate hast du doch min. 10µs Zeit pro Iteration, das sollte doch für die 3fache LUT-Abfrage ausreichen…

Zitat:Da ich relativ neu in der Programmierung auf dem FPGA bin
Beim FPGA gilt: das Timing wird schon beim Kompilieren festgelegt, du musst dich eher um den verfügbaren Platz (=Fabric) sorgen…

Edit: Crossposts immer selbst anzeigen!


RE: FPGA 3-Phasen Generator, Phasen-Offset - jg - 06.07.2021 19:41

Hallo Hoop,

ich kann Gerd nur zustimmen, die Erzeugung und Ausgabe deiner drei AO gehört in eine Schleife, nicht in drei parallele.

Dann brauchst du auch nur 1x "Initialize", 1x Loop rate, und die 3 Signalparameter-Cluster gehören verheiratet zu 1 Cluster. Nur so kannst du sicherstellen, dass die 3 Schleifen auf Grund mglw. nur 1 Zyklus lang unterschiedlicher Looprates auseinanderlaufen.

Gruß, Jens


RE: FPGA 3-Phasen Generator, Phasen-Offset - Der Hoop - 09.07.2021 14:11

Hallo Gerd, Hallo Jens,

Vielen Dank für die schnelle Rückmeldung!
Ich habe eure Vorschläge heute umsetzen können. Die Cluster habe ich "verheiratet" und die Phasenverschiebungen werden jetzt auf dem FPGA addiert.
Die Signale werden jetzt mit einer konstanten verschiebung ausgegeben. Danke!

Zitat: "Warum erzeugst du die Samples denn in 3 parallelen Schleifen und gibst sie in 3 IO-Nodes aus?"
- In meinem ersten Ansatz hatte ich noch alle drei Signalgeneratoren in einer Schleife (allerdings mit 3 Clustern zur Parameterübergabe). Hier kam es nach jeder Frequenziteration zu einer unbestimmten Phasenverschiebung. Nach der Aufteilung trat die Verschiebung nur noch alle 20-30 Iterationen auf...

(Auf Crossposts achte ich ab jetzt, Danke Angel_not )


RE: FPGA 3-Phasen Generator, Phasen-Offset - Der Hoop - 10.07.2021 16:01

Hier noch die funktionierenden VIs.


RE: FPGA 3-Phasen Generator, Phasen-Offset - GerdW - 10.07.2021 20:25

Hallo hoop,

Tipp zum FPGA-VI: die FXP-Konstante gleich invertieren (20/2^15) und statt der Divisionen gleich multiplizieren. Den Ausgang dann so konfigurieren, dass du an der IO-Node keine CoercionDots bekommst...