[an error occurred while processing this directive]
|
В первой части. Сравните. Вы делаете выборки с частотой 400 герц, и домножаете (знаково) на sin и cos. Это происходит 1 раз в 2.5 милисекунды. Я же предлагаю просто неравномерно считывыть выборки. Обе части (мнимая и вещественная) раз в 10 мс, но с квадратурным сдвигом. Что полностью уберет и смену знака, и сложение и лишние прерывания. Что в случае 51-го довольно критично. Отсюда - более экономично - просто запустить АЦП на тех-же 400 герц, но первую и вторую выборку направить в вещественную и мнимую части, а третью и четвертую проигнорировать. При соответствующей аналоговой предфильтрации. Докучи, если есть возможность программировать время следующей выборки - то можно ничего и не пропускать - а просто между первой и второй выборкой задать интервал 0.25 мс, а между второй и третьей - 0.75.
Про CIC. Формула тут проста - количество таких фильтров, включенных "цугом" - определяют затухание в полосе задерживания. прочитайте аппноты напрмер от Analog Devices. Порядок их (каждого) - определяется коэффициентом децимации. Степень - то есть сколько их включено подряд - желаемым подавлением спектральных наложений. Тут рассчет прост. Но, с другой стороны, CIC эффективен при реализации на ПЛИС - то есть без умножений. А в Вашем случае - сравнивайте разные фильтры и выбирайте. Может элементарный sinc будет проще и эффективнее. Всетаки 51-й имеет встроенное умножение. Полную математику CIC'ов описывать не буду - было в DSPконфе не так давно.
E-mail: info@telesys.ru