Знающие, поделитесь практикой расчета и реализации БИХ фильтров для целочисленного риалтайма! Рассчитываю фильтр с 32-битными входными и выходными данными.
Не могу сообразить как правильно пользоваться квантованием коэффициентов в Matlab (оно там как-то через задний проход, чтоли).
Поэтому делаю по-своему:
1. В Matlab рассчитываю коэффициенты максимально приближенные друг к другу.
2. Выбираю для них коэффициент 2^n для преобразования в 32-битный целочисленный формат.
3. В Mathcad (по привычке) создаю эмуляцию фильтра. Реализация DF1 или DF2.
4. Оптимизирую коэффициенты для реализации умножения 32-битных чисел с накоплением в 64-битном (ARM7TDMI)
Имею такую проблему: все отлично работает для входных данных > 2^18, для меньших, соотвественно, не работает.
Для избежания этой проблемы прямой вариант - увеличить разрядность элементов линии задержки с 32 до 64 бит.
Но тогда придется умножать 64 бит на 32 бит, что не оптимально для процессора. Риалтайм не получится.
Что посоветуете?
-
- Вопрос снят, хорошее решение нашлось. - Argon(17.07.2009 15:22)