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 

Dieses Thema hat akzeptierte Lösungen:

FPGA 3-Phasen Generator, Phasen-Offset



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!

06.07.2021, 16:51
Beitrag #1

Der Hoop Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Jul 2021

2020SP
-
DE_EN



FPGA 3-Phasen Generator, Phasen-Offset
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!

       


Angehängte Datei(en)
20.0 .vi  Sine Wave UI.vi (Größe: 469,5 KB / Downloads: 15)

20.0 .vi  Sine Wave.vi (Größe: 158,14 KB / Downloads: 11)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.07.2021, 18:03 (Dieser Beitrag wurde zuletzt bearbeitet: 06.07.2021 18:04 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.029
Registriert seit: May 2009

11SP1, 17SP1 (ab und zu 20)
1995
DE_EN

10×××
Deutschland
RE: FPGA 3-Phasen Generator, Phasen-Offset

Akzeptierte Lösung

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!

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

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.787
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: FPGA 3-Phasen Generator, Phasen-Offset
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

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.07.2021, 14:11 (Dieser Beitrag wurde zuletzt bearbeitet: 09.07.2021 14:27 von Der Hoop.)
Beitrag #4

Der Hoop Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Jul 2021

2020SP
-
DE_EN



RE: FPGA 3-Phasen Generator, Phasen-Offset
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 )
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.07.2021, 16:01
Beitrag #5

Der Hoop Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Jul 2021

2020SP
-
DE_EN



RE: FPGA 3-Phasen Generator, Phasen-Offset
Hier noch die funktionierenden VIs.


Angehängte Datei(en) Thumbnail(s)
       

20.0 .vi  Sine Wave UI.vi (Größe: 440,05 KB / Downloads: 11)

20.0 .vi  Sine Wave.vi (Größe: 124,02 KB / Downloads: 12)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.07.2021, 20:25
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.029
Registriert seit: May 2009

11SP1, 17SP1 (ab und zu 20)
1995
DE_EN

10×××
Deutschland
RE: FPGA 3-Phasen Generator, Phasen-Offset
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...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Sind Referenzen auf FPGA-Variablen in FPGA vi möglich? Felix777 2 5.118 26.10.2015 20:41
Letzter Beitrag: Felix777
  FPGA-Referenz öffnen: FPGA-VI nicht kompiliert LauraP. 9 9.164 17.03.2015 16:58
Letzter Beitrag: LauraP.
  Literaturhinweis: A new Pulse-Pattern Generator based on LabVIEW FPGA BNT 2 3.741 02.05.2012 14:52
Letzter Beitrag: BNT
  Burst Generator für Infrarot-Protokolle in der Amplitude ändern! mrtnernst 1 3.498 12.09.2008 10:36
Letzter Beitrag: mrtnernst

Gehe zu: