Forum: Digitale Signalverarbeitung / DSP / Machine Learning Biquad Problem bei tiefe Frequenzen und geringem Eingangspegel


von Sebastian (Gast)


Lesenswert?

Hallo,

ich habe ein Problem bei der Umsetzung eines Biquad Filters auf einem 
Fixed Point DSP (TMS320C5535) bei fs = 48kHz.

Als Vorlage dient das das folgende Dokument (peakingEQ):
http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt

Die Koeffizienten habe ich mit 2^14 skaliert, demnach muss das Ergebnis 
ja wieder um 14-bit nach unten geschoben werden. Das funktioniert soweit 
auch und die Genauigkeit der Koeffizienten scheint ausreichend zu sein, 
zu Überläufen kommt es auch nicht.

Hier das eigentliche Filter.
    result = ((c0 * (Int32)sample) +
             (c1 * x1) +
             (c2 * x2) -
             (c3 * y1) -
             (c4 * y2)) / SCALE;

mit c0 = b0/a0, c1 = b1/a0, c2 = b2/a0, c3 = a1/a0, c4 = a2/a0. sample 
ist Int16.

Probleme machen allerdings tiefe Frequenzen ab ca. 120 Hz.
Bei kleinem Eingangssignal klingt es als ob das Filter nicht reagiert 
und erst ab einem gewissen Eingangspegel funktioniert.

Ich weiß nicht so recht, wo das eigentliche Problem liegt. Evtl. bei der 
Quantisierung der Ausgangswerte? Wäre froh, wenn mir jemand auf die 
Sprünge helfen könnte.

Danke im Voraus

Sebastian

von xilinx gefrusteter (Gast)


Lesenswert?

kannst du das nicht benchen?  einfach mal eine beispiel rechung debuggen 
und vefolgen

von Sebastian (Gast)


Lesenswert?

Hallo,

das Problem war die Quantisierung der Augangswerte, die ja dann 
entsprechend (ungenau) wieder in die Rechnung eingehen. Geholfen hat 
"first order noise shaping": 
http://www.earlevel.com/main/2003/02/28/biquads/

Klingt nun einwandfrei. :)


Gruß

Sebastian

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.