06.07.2021, 12:48
Hallo,
ich möchte auf meiner FPGA Karte echtzeitfähig einen Block-Algorithmus implementieren der im Frequenzraum Berechnungen durchführt und anschließend wieder in den Zeitbereich rücktransformiert. Hierzu möchte ich die FFT Express VI nutzen.
Zunächst generiere ich mir einen Sinus und füttere die einzelnen Werte in ein Buffer-Array. Der Buffer fasst 1024 Sample. Ich möchte nun alle 512 Sample eine FFT über die 1024 Sample im Buffer bilden. Dafür erstelle ich mir eine Laufvariable und schmeisse bei Vielfachen von 512 die FFT-Express VI an. Ich nutze hier den "Single Channel Multiple Samples" Modus, teile meine 1024 Sample in Signalblöcke der Länge 16 und schieb sie in die FFT. Nun kommen die frequency bins aber in einer anderen Reihenfolge raus und ich weiß nicht wie ich Sie abspeichern kann und meine Versuche mit Build Array sind bislang kläglich gescheitert. Ich muss danach noch die frequency bins mittels weiterer Berechnungen verändern und dann eine IFFT durchführen deswegen macht es vermutlich keinen Sinn die frequency bins vor der Express-IFFT sinnvoll zu ordnen, da sie dem Schema der Express-FFT folgt.
Mir erscheint meine Vorgehensweise viel zu umständlich und ich denke, dass das doch eigentlich einfacher sein muss. Weiß jemand wie ich die 16er Blöcke aus der FFT abspeichern kann oder wie das einfacher funktioniert?
Ich habe den Code soweit es geht reduziert, angehängt und kommentiert. Über Antworten und Tipps zu meiner Erlösung von der Qual der Echtzeit-Implementierung würde ich mich sehr freuen.
Viele Grüße
bisasam
ich möchte auf meiner FPGA Karte echtzeitfähig einen Block-Algorithmus implementieren der im Frequenzraum Berechnungen durchführt und anschließend wieder in den Zeitbereich rücktransformiert. Hierzu möchte ich die FFT Express VI nutzen.
Zunächst generiere ich mir einen Sinus und füttere die einzelnen Werte in ein Buffer-Array. Der Buffer fasst 1024 Sample. Ich möchte nun alle 512 Sample eine FFT über die 1024 Sample im Buffer bilden. Dafür erstelle ich mir eine Laufvariable und schmeisse bei Vielfachen von 512 die FFT-Express VI an. Ich nutze hier den "Single Channel Multiple Samples" Modus, teile meine 1024 Sample in Signalblöcke der Länge 16 und schieb sie in die FFT. Nun kommen die frequency bins aber in einer anderen Reihenfolge raus und ich weiß nicht wie ich Sie abspeichern kann und meine Versuche mit Build Array sind bislang kläglich gescheitert. Ich muss danach noch die frequency bins mittels weiterer Berechnungen verändern und dann eine IFFT durchführen deswegen macht es vermutlich keinen Sinn die frequency bins vor der Express-IFFT sinnvoll zu ordnen, da sie dem Schema der Express-FFT folgt.
Mir erscheint meine Vorgehensweise viel zu umständlich und ich denke, dass das doch eigentlich einfacher sein muss. Weiß jemand wie ich die 16er Blöcke aus der FFT abspeichern kann oder wie das einfacher funktioniert?
Ich habe den Code soweit es geht reduziert, angehängt und kommentiert. Über Antworten und Tipps zu meiner Erlösung von der Qual der Echtzeit-Implementierung würde ich mich sehr freuen.
Viele Grüße
bisasam