IIR SOS Koeffizienten für Biquad Element

Gast #1778810
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
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).
Gast
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.
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.