Forum: Digitale Signalverarbeitung / DSP / Machine Learning IIR SOS Koeffizienten für Biquad Element


von Karsten S. (Gast)


Lesenswert?

Hallo miteinander,
Ich habe einen TMS320C5510 und nutze die DSP Library.
Jetzt habe ich in Matlab ein Tiefpass 2. Ordnung berechnet und will 
diesen implementieren.

Die Koeffizienten sind:

1   2   1   1   -1.3406   0.50947

Diese Koeffizienten müsste ich jetzt eigentlich ins Q0.15 Format 
bringen.
Das wäre ja kein Problem wenn die DSP Library den Koeffizienten a0 nicht 
zwingend auf 1 setzt.

Dieses Problem ist auch hier beschrieben (leider ohne Lösung)
http://groups.google.com/group/comp.dsp/browse_thread/thread/8598e8ceb7f0157/ff5f1ada3ce2601b

Was ist zu tun?

Vielen Dank

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Hab grade das "TMS320C5510" angeklickt. Der Datenblatt-Link läßt sich 
leider nicht eintragen, da TI nur einen symbolischen Link hat, das ist 
noch verbesserungsbedürftig. Vielleicht sollte man auch htm-Seiten 
eintragen können. Hier die Produktfamilie:
http://focus.ti.com/paramsearch/docs/parametricsearch.tsp?family=dsp&sectionId=2&tabId=133&familyId=325

Zur eigentlichen Frage - es ist also ein Fixed Point DSP. Da muß man 
doch immer "skalieren", also mit Zweierpotenzen multiplizieren und das 
nach der Berechnung wieder korrigieren. Es kann eigentlich nicht sein, 
dass eine DSP-Library das nicht zuläßt (ich kenne die nicht).

von Karsten S. (Gast)


Lesenswert?

Hallo Christoph,
Ja es ist ein Fixed Point DSP. Skalieren und wieder korrigieren ist 
notwendig. Aber es hapert bereits an der Übertragungsfunktion.
Wenn ich die Koeffizienten durch zwei teile bekomme ich

0.5   1   0.5   0.5   -0.6703...   0.2547...

Dann kann ich diese ins Q0.15 Format überführen.

Leider lässt sich die 0.5, die an der vierten Stelle für a0 steht nicht 
auf 0.5 festlegen sondern steht fest auf 1 (ist so in der DSP Library).

Einen konstanten Faktor kann ich ja leider auch nicht herausziehen.

Ich verwende die Funktion IIRCAS5 aus der Library.

von Fabian R. (fabi123)


Lesenswert?

Hallo,
ichh bin mir da nicht ganz sicher, was matlab und implementierung 
angeht, aber mal meine ansicht zu a0:

Durch die Mathematische Definition eines IIR Filters ist a0 immer 1.

BSP:
Differenzengleichung:   y(n)=b0*x(n)+a1*y(n-1)

dann diskretisieren:    Y(z)=b0*X(z)+a1*z^-1*Y(z)
umstellen:              Y(z)*(1-a1*z^-1)=b0*X(z)

daraus folgt:           H(z)=Y(z)/X(z)=b0/(1-a1*z^-1)

Und die 1 ist ja dann a0...

lg

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.