[an error occurred while processing this directive]
|
Может, я конечно и очевидные вещи говорю, но...
Я не знаю, о каком процессоре идет речь, однако для каскада из трех биквадов необходимо использовать как минимум 24-битную мантиссу (или 24-битные целые числа), иначе данная система фильтров будет либо шуметь, либо вообще будет неустойчивой. Если си-шный компилятор умеет эмулировать на данном процессоре 32-битные целые, то для хранения состояний фильтров используйте именно их. Коэффициенты фильтров можно хранить и в виде 16-разрядных чисел. Как правило, в любом современном 16-разрядном сигнальном процессоре имеются 32-х или 40-ти битные внутренние регистры общего назначения. Поэтому функцию, реализующую биквад, лучше на ассемблере написать. Но если поискать, то наверняка выяснится, что она уже написана и, вполне вероятно, входит в стандартную библиотеку. В последнем случае почти наверняка она реализована в виде многокаскадного фильтра. Т.е. блок данных можно через все три биквада за один вызов пропустить.
E-mail: info@telesys.ru