Что-то похожее кажется уже спрашивал на форумах, по моему до конкретики не дошло...
Имеется алгоритм обработки сигнала, исползуются различные фильтры (банк фильтров - один длинный FIR и много коротких простых IIRов второго порядка). Система рассчитана и просимулирована в Матлабе, теперь нужно имплементировать на 16-bit, fixed point DSP. Матлаб ессно вычислает в 64 бита floating point, т.е. коеффициенты фильтров имеют до 15 десятичных знаков после запятой что дает практически абсолютную точность - нет проблем. Однако, при переводе на 16 бит - имеем 4 десятичные цифры на все-провсе, т.е. проблема квантизации, плюс fixed point.
Вопросы:
1. Для подгонки под данного типа DSP, беру рассчетные (в Матлабе) коеффициенты, умножаю их на 10^3 после чего делаю round на результат. Таким образом получаю целые числа размером до 4 десятичных цифр которые и намереваюсь использовать как коеффициенты фильтров. После обработки делю результаты на 10^3. Так ли в реальной практике "сражаются" с переводом рассчетных параметров из Матлаба на 16-битные, fixed point процессоры ?
2. В процессе рутин фильтрации возможны overflow промежуточных и конечного результатов. Как боремся с этим ? Проверяем ли на overflow condition каждые промежуточные результаты ? Если да, и в случае обнаружения overflow - просто обрезаем результат на максимально-допустимое число (для данной разрядности данных) или предварительно делаем scaling ? Кроме того, насколько понял может потребоваться scaling входных и выходных сигналов во избежание overflow ? Каким образом это делаем ?
Спасибо.