Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Реализация IIR
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Марк_Я
Имеем следующую ситуацию.
Эллиптический IIR LPF 2-го порядка рассчитанный в MatLab:
Нажмите для просмотра прикрепленного файла
Реализация фильтра:
первые два сумматора (по сравнению с расчетными в MatLab) инвертированы по нижним входам вместе с коэффициентами А2 и А3 [деноминаторы]
усиление S1, нумератор В2 и выходные сумматоры - без изменений
Нажмите для просмотра прикрепленного файла

Проблема состоит в том, что в отличии от теоретической АЧХ, в реальном устройстве при поданном на вход фильтра СИНТЕТИЧЕСКОМ синусоидальном сигнале не получается собственно полосы пропускания. АЧХ падает прямо от начала. В зоне заграждения фильтра АЧХ соответствует расчетной.

Синус синтезирован таблично по 1200 точкам на период.
Частота на входе фильтра изменялась путем прореживания таблицы синуса.
То есть при частоте дискретизации 300 Гц одному герцу соответствует синусоида каждого 4-го отсчета таблицы.
Изменяя прореживание от 1:1 до 1:400, получаем разную частоту на входе фильтра от 0,25 до 100 Гц.
Длительность накопления в фильтре до сечения измерения амплитуды выходного сигнала - 4000 отсчетов (примерно 13 секунд).
Детектирование амплитуды квадратурное.
Возможно проблема носит известную (не мне) причину и коллеги сразу ткнут носом в ошибку.
Спасибо.
bogaev_roman
Извиняюсь, может глупость пишу, но Вы разрядность в реальном устройстве ограничивали?
Марк_Я
Разрядность signed 15.16
Во флоатах фильтр считается 3 мс на 1 семпл, а в фиксированной точке только за 45 мкс.
Алгоритм линейный. Вроде проверил для разных диапазонов входных чисел...
Странно, что в полосе заграждения АЧХ получается...
По Х - частота*4 (0,25 Гц на точку), по Y - децибелы от 32768 (аплитуда входного сигнала):
Нажмите для просмотра прикрепленного файла
bogaev_roman
Цитата(Марк_Я @ Feb 11 2015, 11:03) *
Разрядность signed 15.16

Это я к тому, что у Вас там коэффициенты на первом рисунке в матлабе с очень высокой точностью заданы, а по идее после ограничения АЧХ другая будет, какая - можно посмотреть на той же диаграмме, задав ограничения - вкладка set quantization parameters что ли.
Hose
Кто вас научил синусами ачх мерить?
Снимите импульсную.
Марк_Я
А что неверного в таком измерении?
АЧХ реальных приемников снимают именно синусами.
Цитата(bogaev_roman @ Feb 11 2015, 11:53) *
Это я к тому, что у Вас там коэффициенты на первом рисунке в матлабе с очень высокой точностью заданы, а по идее после ограничения АЧХ другая

Так проблема не в изрезанности АЧХ в области малых сигналов, а как раз в той области, где сигналы максимальны.
Кроме того, порядок фильтра низкий, а соотношение частоты семплирования и частоты среза невелико.
То есть проблема округления неактуальна.
Кстати, 15.16 - это 32 разряда. То есть точность чуть меньше, чем у обычного флоата.
А в МатЛабе по умолчанию генерируется формат дабл. То есть 64-разрядный флоат...
Это избыточно.
Hose
Вот я и спрашиваю, кто научил вас этой глупости.
Проверьте ваш измеритель ачх в матлабе - там он тоже работать не будет.
Марк_Я
Цитата(Hose @ Feb 11 2015, 13:36) *
Вот я и спрашиваю, кто научил вас этой глупости.

Если честно, я не очень понял в чем состоит глупость?
И причем тут МатЛаб?
Собственно анализ сигнала прошедшего через фильтр выполняется точно так же как и при измерении АЧХ.
АЧХ и есть ПРЯМАЯ характеристика фильтра (а вместе с ФЧХ и ГВЗ - полная).
Импульсная характеристика - это КОСВЕННАЯ методика измерения АЧХ.
Я готов принять критику своих глупостей, но желательно ее (критику) ОБОСНОВАТЬ.
Спасибо.
ЗЫ. Кстати. Калибровка АЧХ при прямой подаче входного сигнала (без фильтра) на измеритель АЧХ дает идеальную прямую на уровне 0 дБ.
Golikov A.
это у товарища личное не обращайте внимания, но идея про матлаб здравая.

Надо все что вы делаете в желез повторить в матлабе в точности, и поглядеть глазьями на графики как входной частоты, так и выходной. Если в матлабе не будет сразу видно что не так и все будет ок, то проверять детекцию амплитуды и генерацию синуса в железе. Я бы так поступил. А пока у вас много неизвестных ИМХО...
Марк_Я
Ну что, господа...
Всем спасибо.
Ошибку я нашел.
Нажмите для просмотра прикрепленного файла
Она состояла в том, что приведение коэффициентов фильтра к форме signed 15.16 производится путем умножения рассчитанного коэффициента на 65536. А я протупил и умножил на 32768, просто взяв МОДУЛЬ максимального числа формы представления входного сигнала (signed int).
В результате получились вдвое меньшие коэффициенты с вытекающими последствиями.
Что касается снятия АЧХ синусоидальным квадратурным сигналом, то метод абсолютно корректный и с математической и со схемотехнической точки зрения.
Нажмите для просмотра прикрепленного файла
Так что иронию коллеги Hose стоит признать необоснованной...
wink.gif
Hose
Моя ирония, Марк, значительно глубже.
Я не поленился и повторил ваш фильтр

собиранм фильтр, подаем дельтафункцию на вход (0,0,1,0,0,0....)
Фильтр откликается импульсной, которую можно посмотреть в тойже тулзе, в которй вы считали фильтр.
// при отладке в железе делается тоже самое. Если не соответствует, то можно отключить рекурсивную часть и фильтр откликнется коэффициентами трансверсальной - значит беда в рекурсивной. Отклик одной толко рекурсивной части легко считается в уме.
Далее я поискал что необходимо сделать с фильтром дабы получить отклик как у вас: оказалось такой результат дает ошибка в коэфициентах рекурсивной части (второй знак после запятой)
Кстати, при ошибке в 2 раза в коэффициентах фильтр меняется не так.
На весь процесс ушло несколько минут.
У вас 2 дня...
Вы попробуйте импульсную - вам понравится)
Марк_Я
Цитата(Hose @ Feb 11 2015, 13:36) *
Вот я и спрашиваю, кто научил вас этой глупости.
Проверьте ваш измеритель ачх в матлабе - там он тоже работать не будет.

1. Вы, любезный Hose, утверждали, что измеритель АЧХ НЕ БУДЕТ РАБОТАТЬ. Однако он работает.
2. После драки потратить 2 минуты вместо ОДНИХ суток (ответ сюда написан не сразу, ибо на работе я занят работой, а сюда пишу по мере возможности) не слишком корректное доказательство эффективности. Да и ошибка глупейшая, а искать такие хуже всего.
Кроме того, я очень редко прибегаю к IIR, поэтому быстро проинтуичить по форме АЧХ о характере ошибки затруднительно. С FIR у меня все получается проще и быстрее. По АЧХ.
Но совет Ваш, тем не менее, приму. Спасибо.
Hose
Я свою цель достиг. Оппонировать про мои утверждения в ходе достижения цели не вижу смысла.
Марк_Я
Цитата(Hose @ Feb 13 2015, 22:53) *
Я свою цель достиг.

rolleyes.gif
Забавно...
Вы всегда достигаете цели столь вычурным способом?
Не проще ли СРАЗУ изложить существо дела?
Или своим же советам Вы сами не следуете?
biggrin.gif

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.