DSPRelated.com
Forums

10th order butterworth filter ADSP-TS101

Started by hout...@hotmail.com August 11, 2006
hi guys

I'm using a ADSP-TS101 and need to implement a 10th order butterworth. I plan on using the irr function in the filter.h header file. For this function i need to know how many biquads stages there are...i assume 5?

this is from the run time library description:
The characteristics of the filter are dependent upon the filter coefficients
and the number of stages. Each stage has five coefficients which must be
stored in the order B2, B1, B0, A2, A1. The value of A0 is implied to be 1.0
and A1 and A2 should be scaled accordingly. A pointer to the coefficients
should be stored in s->c, and s->k should be set to the number of stages.

does this also mean i should store my coefficient values as B9,B8....B0,A9,A8...A1 and just point to them...have i got the order correct or do they require to be in a different format.
i can't seem to find any code exmaples.

please prevent me from pulling my hair out...

regards
kien
On Friday 11 August 2006 10:38, h...@hotmail.com wrote:
> hi guys
>
> I'm using a ADSP-TS101 and need to implement a 10th order butterworth. I
> plan on using the irr function in the filter.h header file. For this
> function i need to know how many biquads stages there are...i assume 5?
>

I never used this library function, but I want to contribute this hint:

Butterworth are IIR filters, which means, that calculation errors recurse!
Be aware that a filter of 10th order will require high calculation precision,
or your signal will get lost in the digital noise.
This is especially true if your filter has a high pass component.

Keep an eye on the filter coefficients, where they are very close to 1,-1 or
zero. And on cutoff/sample frequency relation close to zero.

An example: I had to implement a 4th order high pass butterworth filter at
1.5Hz (48kS/s). Even with the Sharc's 40bit float precision, it required
quite a bit of work to get it working.
Calculation of the coefficients was the first and most difficult part.
Then I had to optimize algorithms, since they are usually well-optimized with
respect to speed, but here they had to be rewritten.
Even Matlab failed to calculate my coefficients with enough precision: the
Mathworks specialists told me, that their tool is optimized to get a fast
response time, and very high precision has been sacrificed therefore.
I had to calculate the coefficients manually.

I guess that the ADI filter library function is likewise optimized to meet the
average requirements. If you have really high performance requests, you will
probably be forced to implement them individually - and often manually.

My proposal:
Start with a filter of lower order. Once it works, increase the order step by
step until you have reached your goal.
And don't be astonished, if problems increase underway...

Bernhard
----
Diese E-Mail enthaelt vertrauliche und/oder rechtlich geschuetzte
Informationen. Wenn Sie nicht der richtige Adressat sind oder diese
E-Mail irrtuemlich erhalten haben, informieren Sie bitte sofort den
Absender und vernichten Sie diese Mail. Das unerlaubte Kopieren sowie
die unbefugte Weitergabe dieser Mail ist nicht gestattet.
Ueber das Internet versandte E-Mails koennen leicht unter fremden Namen
erstellt oder manipuliert werden. Aus diesem Grunde bitten wir um
Verstaendnis, dass wir zu Ihrem und unserem Schutz die rechtliche
Verbindlichkeit der vorstehenden Erklaerungen und Aeusserungen
ausschliessen.

This E-mail may contain confidential and/or privileged information. If
you are not the intended recipient or have received this E-mail in
error, please notify the sender immediately and destroy this E-mail. Any
unauthorized copying, disclosure or distribution of the material in this
E-mail is strictly forbidden.
E-mails via Internet can easily be prepared or manipulated by third
persons. For this reason we trust you will understand that, for your own
and our protection, we rule out the legal validity of the foregoing
statements and comments.
Hi All,

Has anyone tried to use VDK in the development of a libray project
? Is anyone need to use VDK in a library project ?

Hoan