Forum: Digitale Signalverarbeitung / DSP / Machine Learning DFT Mittelung um Dynamic range zu erhöhen


von Rene G. (Gast)


Lesenswert?

Ich habe einen 14 bit ADC, welcher mit ideal 84dB Dynamikumfang gibt. 
Mich interessiert an den Daten in der Regel nur ein Frequenzpunkt also 
mache ich im FPGA eine DFT. Kann ich die DFT Ergebnisse mitteln um den 
Dynamikumfang zu erhöhen? Ziel ist es die Samples so zu lassen wie sie 
sind und dann erst das DFT Ergebnis zu mitteln. Man könnte ja auch vor 
der Transformation über z.B. 4 samples mitteln.

von Egon D. (Gast)


Lesenswert?

Rene G. schrieb:

> Kann ich die DFT Ergebnisse mitteln um den Dynamikumfang
> zu erhöhen?

Ob DU es kannst, weiss ich nicht... :) SCNR

Aber -- ja, kann man machen, klar. Warum nicht?


> Ziel ist es die Samples so zu lassen wie sie sind und
> dann erst das DFT Ergebnis zu mitteln. Man könnte ja
> auch vor der Transformation über z.B. 4 samples mitteln.

???

Der übliche Weg ist es, mehrere zeitlich aufeinanderfolgende
Spektren zu mitteln.
In der Regel wird dazu aber konstante Phasenlage des Nutz-
signals notwendig sein, damit das funktioniert.

von Fpgakuechle K. (Gast)


Lesenswert?

Rene G. schrieb:

> Mich interessiert an den Daten in der Regel nur ein Frequenzpunkt also
> mache ich im FPGA eine DFT.

Nö, Goertzel musste machen:

https://www.elektronikpraxis.vogel.de/einzeltoene-mit-fpgas-erzeugen-und-erkennen-a-1023648/

von Rene G. (Gast)


Lesenswert?

Fpgakuechle K. schrieb:
> Nö, Goertzel musste machen:

Macht das einen unterschied?

von N. M. (mani)


Lesenswert?

Rene G. schrieb:
> Macht das einen unterschied?

Na für einen Bin brauchst du halt deutlich weniger Zellen...

: Bearbeitet durch User
von Rene G. (Gast)


Lesenswert?

N. M. schrieb:
> Rene G. schrieb:
>
>> Macht das einen unterschied?
>
> Na für einen Bin brauchst du halt deutlich weniger Zellen...

Mit einer DFT, die nur einen Punkt auswertet ebenfalls. Die 
Koeffiziententabellen sind dann auch kleiner

von Messtechniker (Gast)


Lesenswert?

Rene G. schrieb:
> Man könnte ja auch vor
> der Transformation über z.B. 4 samples mitteln.
Das ist keine so gute Idee, weil dann ein Rechteckspektrum reinkommt.

Man muss aber mit jedem neuen Datum eine neue Transformation machen und 
nicht etwa nur mit dem Bündel, das für die T herangezogen wird.

also eine Berechnung für 0 ... n-1,  1 ... n, 2 ... n+1 u.s.w.

Dann kann man das Ergebnis der DFTs mitteln.

Fpgakuechle K. schrieb:
> Nö, Goertzel musste machen:
> 
https://www.elektronikpraxis.vogel.de/einzeltoene-mit-fpgas-erzeugen-und-erkennen-a-1023648/

Goertzel ja, FPGA nicht unbedingt. Das geht mit einem DSP genau so. Habe 
mir das Beispiel jetzt nicht vopllständig angesehen, aber die nehmen 
wohl einen
"Zynq UltraScale+ FPGA" und dort eine RTU.

von Rene G. (Gast)


Lesenswert?

Messtechniker schrieb:
> Man muss aber mit jedem neuen Datum eine neue Transformation machen und
> nicht etwa nur mit dem Bündel, das für die T herangezogen wird.
>
> also eine Berechnung für 0 ... n-1,  1 ... n, 2 ... n+1 u.s.w.
>
> Dann kann man das Ergebnis der DFTs mitteln.

Was meinst du damit genau? Das verstehe ich nicht. Was ist mit Datum 
gemeint?

von N. M. (mani)


Lesenswert?

Rene G. schrieb:
> Was meinst du damit genau? Das verstehe ich nicht. Was ist mit Datum
> gemeint?

Singular von Daten ist Datum.
Er meinte also anders ausgedrückt "...mit jedem neuen Messwert...".

von Simon D. (jamen)


Lesenswert?

Rene G. schrieb:
> Ich habe einen 14 bit ADC, welcher mit ideal 84dB Dynamikumfang gibt.
> Mich interessiert an den Daten in der Regel nur ein Frequenzpunkt also
> mache ich im FPGA eine DFT. Kann ich die DFT Ergebnisse mitteln um den
> Dynamikumfang zu erhöhen? Ziel ist es die Samples so zu lassen wie sie
> sind und dann erst das DFT Ergebnis zu mitteln. Man könnte ja auch vor
> der Transformation über z.B. 4 samples mitteln.

Hallo Rene,

wenn ich richtig informiert bin, kannst du durch Mittelung über mehrere 
Fenster nur das Spektrum glätten, aber nicht den Dynamikumfang erhöhen.

Wenn du den Dynamikumfang erhöhen möchtest, musst du dafür sorgen, dass 
in deinem gewünschten Bin, im Verhältnis zur Signalenergie, weniger 
Rauschenergie akkumuliert wird. Dafür musst du entweder das Signal im 
Zeitbereich filtern, um Rauschleistung bei hohen und/oder niedrigen 
Frequenzen zu entfernen, oder deine Fenster länger machen. Die Länge zu 
erhöhen reduziert die equivalent noise bandwidth deines Bins. Da du aber 
auch länger akkumulierst, bleibt die Rauschenergie im Bin trotzdem 
gleich. Du sammelst aber auch mehr Energie bei deinem Nutzsignal, 
wodurch das SNR pro Bin größer wird.

Danach mittelst du über mehrere Fenster im Frequenzbereich, wenn du auch 
ein glattes Spektrum möchtest.

LG Simon

: Bearbeitet durch User
von Rene G. (Gast)


Lesenswert?

Danke soweit für die Hilfe. Ich möchte insbesondere kurze DFT bins mit 
ausreichend dynamik auch auflösen, da es eine zeitkritische Anwendung 
ist. Jetzt ist die Frage ob da oversampling hilft und wie viel man 
braucht.

von Simon D. (jamen)


Lesenswert?

Rene G. schrieb:
> Danke soweit für die Hilfe. Ich möchte insbesondere kurze DFT bins mit
> ausreichend dynamik auch auflösen, da es eine zeitkritische Anwendung
> ist. Jetzt ist die Frage ob da oversampling hilft und wie viel man
> braucht.

Freut mich, dass wir dir helfen konnten.

Wenn du mit "kurz" meinst, dass deine zeitliche Fensterbreite einen 
gewissen Wert (z. B. 1 ms) haben soll, dann ist mein Tipp von oben in 
der Tat nicht sinnvoll, weil er eine zeitliche Verlängerung des Bin 
bedeuten würde. Du musst eine andere Maßnahme ergreifen, um das Rauschen 
in deinem Bin zu reduzieren. In dem Fall ist tatsächlich Überabtastung 
ein möglicher Weg. Der ist jedoch nur dann hilfreich, wenn ein 
wesentlicher Teil des Rauschens bisher durch Aliasing aus höheren 
Frequenzbereichen (das kann der Fall sein, wenn dein Anti-Aliasingfilter 
nicht passend ausgelegt ist) oder Quantisierungsrauschen zustande kam. 
Wenn der Großteil des Rauschens schon im analogen Signal enthalten ist 
oder durch thermisches Rauschen im ADC dazukommt, kannst du mit 
Überabtastung nichts erreichen. Mit 14 b kommt man langsam in den 
Bereich der Präzisions-ADC, wo das thermische Rauschen des ADC das 
Quantisierungsrauschen dominiert. Du müsstest noch ziemlich an der 
Grenze sein, wo beide ähnlich bedeutend sind.

Das Prinzip der Überabtastung ist, dass sich bei doppelter Abtastrate 
dieselbe Quantisierungsrauschleistung (definiert durch die Amplitude 
eines LSB) auf einen doppelt so großen Frequenzbereich verteilt. Dadurch 
halbiert sich die spektrale Leistungsdichte des Quantisierungsrauschens 
(6 dB weniger). Weil dein DFT-Bin dieselbe Bandbreite hat wie vor der 
Erhöhung der Abtastrate, und damit dieselbe ENBW, hast du jetzt nur noch 
die halbe Rauschleistung in deinem Bin. Falls du vorher noch Aliasing 
von Rauschen oberhalb der Nyquistfrequenz hattest, sinkt die spektrale 
Leistungsdichte weiter ab, wodurch du einen höheren Gewinn erhältst.

Speise mal ein stationäres Signal mit einfachem Spektrum (DC oder 
monochromatisch) ein und nimm ein paar Messdaten mit verschiedenen 
Abtastraten und großzügiger Länge auf. Dann kannst du das gemütlich am 
PC verarbeiten und schauen mit welchen Einstellungen du gute Ergebnisse 
erreichst. Vielleicht lässt sich ja doch noch etwas an der zeitlichen 
Fensterbreite drehen, dann kannst du noch mehr rausholen. Aber bedenke, 
dass du so oder so mehr Abtastwerte im Fenster bekommst und sich das 
auch auf deine Implementierung auswirken wird.

LG Simon

: Bearbeitet durch User
von Dogbert (Gast)


Lesenswert?

Rene G. schrieb:
> Kann ich die DFT Ergebnisse mitteln um den
> Dynamikumfang zu erhöhen? Ziel ist es die Samples so zu lassen wie sie
> sind und dann erst das DFT Ergebnis zu mitteln.

Du kannst statt der FFt auch gleich nur die eine Frequenz mit dem 
Eingang falten.

von J. S. (engineer) Benutzerseite


Lesenswert?

Dogbert schrieb:
> Rene G. schrieb:
>> Kann ich die DFT Ergebnisse mitteln um den
>> Dynamikumfang zu erhöhen? Ziel ist es die Samples so zu lassen wie sie
>> sind und dann erst das DFT Ergebnis zu mitteln.
>
> Du kannst statt der FFt auch gleich nur die eine Frequenz mit dem
> Eingang falten.

Dazu muss man dieser aber kennen. Liegt man daneben bekommt einfach nur 
einen reduzierten Wert und keine Info ob links oder rechts.

von Dennis E. (Gast)


Lesenswert?

Das musst du mal genauer ausführen. Die Idee mit einer Frequenz zu 
falten funktioniert so nicht, denn der Trick bei einer FFT ist es ja mit 
eben auch mit den Phasenverschiebungen zu multiplizieren.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.