SDR DSP; проблема с FIR решена
Это и в самом деле был глюк, связанный с задержкой распространения сигнала - на входы умножителя я подавал числа и ожидал ответа сразу же. Но умножитель-то не мгновенно работает! Надо какое-то время ожидать. Для этого достаточно добавить к конечному автомату ещё одно состояние, пустой такт.
Вроде, теперь работает - на расчётной частоте среза амплитуда выходного сигнала строго 0.5 от входной, как и подразумевалось. Побочные лепестки не видны на спектре (хотя они и не делись никуда, но т.к. подавление у фильтра порядка 80 дБ, то на эти "побочки" можно смело наплевать!), всё чотко.
Только одно "но". Вроде как результат операции свёртки надо снимать с верхних битов аккумулятора, а у меня получилось так, что он лежит в нижних. Не понимаю, как это может быть - суммирование же не так работает?..
Заодно перевожу структуру фильтра на использование блочной памяти и встроенного умножителя: проект занимал 56% ёмкости кристалла, а теперь 29%. Тоже немало (учитывая невеликую сложность), но всё же разница существенна.
Вроде, теперь работает - на расчётной частоте среза амплитуда выходного сигнала строго 0.5 от входной, как и подразумевалось. Побочные лепестки не видны на спектре (хотя они и не делись никуда, но т.к. подавление у фильтра порядка 80 дБ, то на эти "побочки" можно смело наплевать!), всё чотко.
Только одно "но". Вроде как результат операции свёртки надо снимать с верхних битов аккумулятора, а у меня получилось так, что он лежит в нижних. Не понимаю, как это может быть - суммирование же не так работает?..
Заодно перевожу структуру фильтра на использование блочной памяти и встроенного умножителя: проект занимал 56% ёмкости кристалла, а теперь 29%. Тоже немало (учитывая невеликую сложность), но всё же разница существенна.