[an error occurred while processing this directive]
|
>Хочу сделать простенький фильтр на контроллере общего назначения. Он
>должен отфильтровывать одну частоту и говорить сколько ее там. Сделал
>чебышева второго порядка с
>плавающей запятой, получилось хорошо, однако ни о каком реал тайме,
>конечно, речи не идет. Коэффициенты считались здесь:
>http://www-users.cs.york.ac.uk/~fisher/mkfilter/
>Перевел все это дело в целочисленную арифметику и от фильтра осталось
>лишь жалкое подобие :(.
Как мне кажется, лучше его сделать не в целочисленной арифметике, а с фиксированной точкой.
А что за контроллер ? Если AVR, то могу кинуть свою процедурку умножения 16x16=16 с фиксированной точкой (158/174 такта). Правда фильтров на контроллере я пока не пробовал делать, я ее использовал для амплитудной модуляции.
Но, кстати, в последних AVR уже стали делать аппаратный умножитель, поддерживающий и фиксированую точку тоже, хотя до нас они еще не дошли.
И еще, как мне кажется, в твоем случае лучше использовать эллиптические коэффиценты вместо Чебышева, это позволит понизить порядок фильтра при сохранении нужной крутизны спада АЧХ, правда с увеличением фазовых искажений, но ведь в твоем случае, как я понял, это не критично.
E-mail: info@telesys.ru