www.mikrocontroller.net

Forum: FPGA, VHDL & Co. THDN und SNR mit MATLAB und FPGA berechnen


Autor: Semprini (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe einige Datenströme, die Sinuswellen beschreiben, jedoch 
aufgrund analoger und digitaler Verzerrungen etwas ungenau sind. Die 
Genauigkeit ist aber Gütekriterium und muss beobachtet werden.

Für diese möchte ich gerne den THDN und den SNR berechnen lassen. 
Zunächst geht es darum, mit z.B. MATLAB (?) die Daten zu verarbeiten und 
reale Werte zu bekommen, die ich dann zum Vergleich nutzen kann.

Dann soll weiter das ganze im FPGA implementiert werden, das in realtime 
die Werte für live-Datenströme anzeigt.

Meines Erachtens ist der THD doch aus einer FFT zu ermitteln, in dem man 
die einzelnen Ergebnsisse quadriert und dann addiert und wurzelt.(?) 
Siehe die Formel für due U-Quadrate:
http://de.wikipedia.org/wiki/Total_Harmonic_Distortion


Dann später fürs FPGA:

Da die FFT-Werte ja auch gewurzelt werden müssen, wenn sie aus dem CORE 
kommen (Re2+Im2) fällt da doch schon mal das ersten Wurzeln und 
Weiderquadrieren weg. Man kann also die Summe der Re2+Im2 bilden und 
dann Wurzeln.(?).

Gibt es eine Möglichkeit den Datenstrom zu manipulieren oder 
vorzubereiten, daß erst gar keine Im-Anteile aus dem Core kommen und man 
sich das auch sparen kann?

Autor: Semprini (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat da keiner etwas dazu zu sagen?

Mir geht es z.B. darum, wie genau die FFt laufen muss, damit ich noch 
verlässliche Werte bekomme. Bei der ganzen Quadriererei und Summiererei 
häufen sich ja die Fehler an.

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Semprini schrieb:
> Mir geht es z.B. darum, wie genau die FFt laufen muss, damit ich noch
> verlässliche Werte bekomme. Bei der ganzen Quadriererei und Summiererei
> häufen sich ja die Fehler an.

Um herauszubekommen wie genau die FFT arbeiten muss, macht man doch die 
Matlab-Simulation?! Dort kannst Du einfach mit verschiedenen 
Quantisierungen testen. Außerdem hast Du gleich Referenzdaten für Deinen 
HDL-Code.

Alternativ kannst Du auch eine Fehlerrechnung machen.

Duke

Autor: Semprini (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bliebe die Frage:

Ob es eine Möglichkeit gibt, den Datenstrom in die FFT so zu steuern, 
dass keine imaginären Anteile aus dem Core kommen.

Reicht es, nur real einzuspeisen?

Autor: Detlef _a (detlef_a)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>Meines Erachtens ist der THD doch aus einer FFT zu ermitteln, in dem man
>>die einzelnen Ergebnsisse quadriert und dann addiert und wurzelt.

Im Prinzip ist das richtig. Das funzt aber nur, wenn die FFT nicht 
'leckt': Es muß eine ganzzzahlige Wellen in Dein FFT-Fenster passen. Das 
gelingt bei realen Daten nur dann, wenn das gesampelte Signal und der 
Sampler synchron sind, was sie in der Regel nicht sind. THD/SNR 
Berechnung bleibt dann nicht so schlicht, Suchworte sind 'spectrum 
frequency estimation', das is nen weites Feld.

Cheers
Detlef

Autor: Semprini (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, ich komme einigermassen hinterher. Im Audiobereich bentuzt man, um 
sich einiger Artefakte zu entledigen, eine Windowfunktion, um die FFT zu 
maskieren.

Wäre das eine Option? Ich beabsichtige ferner, die FFTs zu schachteln, 
als z.B. 8 Stück parallel laufen zu lassen, um die Rate zu erhöhen. Die 
erste arbeitet dann von 0 - 8/8 x FFT-Länge, die zweite von 1/8 - 9/8 
usw und die erste dann wieder auf 9/8 - 16/8, also dem nächsten 
vollständigen Datensatz.

Wenn man diese mittelt, müssten alle Frequenzen gut erfasst sein, oder?

Oder ist es besser, man nutzt unterschiedliche FFT-Längen parallel?

Autor: Detlef _a (detlef_a)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Semprini schrieb:
> Ok, ich komme einigermassen hinterher. Im Audiobereich bentuzt man, um
> sich einiger Artefakte zu entledigen, eine Windowfunktion, um die FFT zu
> maskieren.

Genau, FFT fenstern (Kaiser 16 oder so) und die FFTs überlappen lassen. 
Aus der Phasendifferenz läßt sich die genaue Frequenz der 
Hauptkomponente bestimmen. Phase und Amplitude:

http://www.dsprelated.com/showmessage/128439/2.php
http://www.claysturner.com/phaseshiftamplitude.pdf

funzt wunderbar.

gute Nacht
Detlef

Autor: Paule (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich lese mit und versuche zu vertsehen. Jede der überlappenden FFTs 
berechnet dann wohl etwas leicht anderes, was?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.