ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
17 мая
752117 Топик полностью
Nikolay_Po (25.04.2017 11:46, просмотров: 156) ответил fk0 на Во-первых это нерекурсивный фильтр -- с чего здесь ошибке умножаться? Она больше чем на -60 здесь нигде не умножается. Во-вторых там в каталоге fast целочисленная реализация, вроде. В 16 битах рекурсивный фильтр вообще сложно сделать, IMHO. Я бы
Понимаю, о чём вы. Просто в PIC24, к примеру, сложение и умножение за такт делается лишь для 16-битных операндов. Деление за 19 тактов, но оно меняется на сдвиг при делителе 2^N. И у меня фильтр более 3-го порядке не удавалось впихнуть в 16 бит операндов и 32 бита результата. Переводить на 32 бита всё - пробовал, но производительность падает сильно, так, что мысли использовать плавающую точку возникали. В приведённом в пример проекте модема кода немало даже для демодуляции. Используются возможности ООП. Для перевода на ANSI C тоже время и силы нужны, не считая перевода на фиксированную точку. В общем, конкретно в моём случае, даже реализация полосового фильтра в лоб, оказалась невозможной, ни эмуляцией плавающей точки, ни 32-битными операндами. Слишком мало тактов доступно на частоте выборки. Поэтому сначала БИХ-фильтры на 16 бит с прореживанием. В принципе, до полосы сигнала получилось хорошо и быстро. Умножения, сложения за такт. Деление сдвигом, прореживание после каждого фильтра. А вот как обработать относительно медленную выборку компонент I и Q - да, можно пробовать что-то порядком и разрядностью повыше. И я, слушая неоднократные ваши советы фильтровать полосу перед или в ходе демодуляции, задумываюсь и буду пробовать. Не так велик мой личный опыт, чтобы пренебрегать советами.