А зачем КИХ? Автор минимальный фильтр хочет (отдельный вопрос что с 200 Гц сигналом ARM и здоровенный протащит). Что-нибудь рекурсивное, типа интегратора с постоянной времени. Uout += Uin-Uout/k, можно несколько раз последовательно, причём только первое звено с частотой 10 кГц считать нужно. Для ARM (без однотактового деления) k - выбираем степень двойки и заменяем сдвигом, получаем полосу чуть шире 200 Гц (следующими звеньями точнее подгоним), или, что лучше, умножаем всё на k, получаем k*Uin - Uout (просто формула менее наглядна). Если коэффициент передачи фильтра должен быть = 1, нормируем его на выходе делением (вместо деления можно посчитать дробь со степенью двойки в знаменателе и заменить одним умножением и одним сдвигом). Предполагается, что всё считаем целочисленно. Мысленно представляем операционник в инвертирующем включении, с конденсатором параллельно резистору обратной связи, работу которого описывает данная формула. Литературу читать не надо, коэффициенты подбираем методом тыка или вариацией в математическом пакете. Проще некуда. Если АЧХ сложный, то после этого уже фильтрованный сигнал, с малым потоком данных неспеша мучаем сложными фильтрами, если известна форма - коррелируем быстрым алгоритмом. Если от узкополосных помех отстраиваемся - обеляющий фильтр наверное стоит добавить и т. д. Короче если мыслить категориями схемотехники - тупо фильтруем несколько раз интегрирующей RC цепочкой, а потом уже обрабатываем замысловато. RC - в данном случае програмная.
Сообщение отредактировал st232bd - Apr 13 2011, 14:51
|