Сколько отводов требуется для FIR-фильтра?

20

Я хочу разработать набор FIR-фильтров для реализации фильтра низких частот. Я также пытаюсь уменьшить задержку сигнала через фильтр, поэтому мне интересно, какое минимальное количество отводов я могу использовать.

Я знаю, что большее количество отводов может привести к более резкому обрезанию частоты и лучшему подавлению полосы останова и т. Д. Однако то, что меня интересует, является более фундаментальным - если я хочу реализовать фильтр нижних частот с обрезанием в скажем, означает ли это, что мне нужно как минимум 100 отводов для ослабления низкочастотных сигналов? Или я могу сойти с рук с меньшим количеством нажатий, и если да, то есть ли теоретический нижний предел?еs100

Томми
источник

Ответы:

24

Ссылаясь на классическую цифровую обработку сигналов Bellanger - теория и практика , дело не в том, где находится ваша частота отсечки, а в том, какое затухание вам нужно, сколько пульсаций в сигнале, который вы хотите сохранить, вы можете терпеть и, что наиболее важно, как сузить ваш переход от pass- to stopband (ширина перехода) должен быть.

Я предполагаю, что вам нужен линейный фазовый фильтр (хотя вы указываете минимальную задержку, я не думаю, что минимальный фазовый фильтр - это хорошая идея, в общем, если вы не знаете, что вы собираетесь делать со своим сигналом впоследствии) , В этом случае порядок фильтрации (который является числом нажатий)

N23log10[110δ1δ2]fsΔf

с

fs the sampling rateΔf the transition width, ie. the difference between end of pass band and start of stop bandδ1 the ripple in passband, ie. "how much of the original amplitude can you afford to vary"δ2 the suppresion in the stop band.

Давайте подключим некоторые цифры! Вы указали частоту среза fs100 , так что я просто пойду и буду утверждать, что ширина вашего перехода не будет больше половины этого значения, поэтомуΔf=fs200 .

Исходя из технологии SDR / RF, подавление 60 дБ обычно вполне достаточно - аппаратное обеспечение, без сумасшедших затрат, не будет лучше в предотвращении нежелательных сигналов от вашего входа, так что, давайте не будем тратить ЦП на фантастический фильтр, который лучше чем то, что может сделать ваше оборудование. Следовательно, δ2=60 dB=103 .

Допустим, вы можете жить с изменением амплитуды в полосе пропускания 0,1% (если вы можете жить с большим, также подумайте о том, чтобы сделать требование подавления менее строгим). Это δ1=104 .

Итак, подключив это:

NФильтр Томми23журнал10[110δ1δ2]еsΔезнак равно23журнал10[11010-410-3]еsеs200знак равно23журнал10[11010-7]200знак равно23журнал10[110-6]200знак равно23(журнал10106)200знак равно236200знак равно800 ,

Итак, с вашими 200 ответвлениями вы далеко, если вы используете в своем фильтре чрезвычайно узкую полосу пропускания, как я и предполагал.

Обратите внимание , что это не имеет быть проблемой - прежде всего, фильтр 800-отводы это страшно, но , честно говоря, только на первый взгляд:

  • Как я проверял в этом ответе в StackOverflow : ЦП в настоящее время работают быстро , если вы используете чью-то оптимизированную для ЦП реализацию FIR. Например, я использовал реализацию FFT-FIR в GNU Radio с приведенным выше описанием спецификации фильтра. Я получил производительность в 141 миллион выборок в секунду - этого может быть или не быть достаточно для вас. Итак, вот наш тестовый пример для конкретного вопроса (который занял у меня несколько секунд):GNU Radio FFT FIR фильтрацияРезультаты оценки: rate_avg = 1.40982e + 08
  • MMMзнак равно50120050знак равно24
  • 96Канзасs«смешно141МИЗs упомянуто выше. Таким образом, время, потраченное на вычисление выходного сигнала фильтра, будет относиться только к потоковой передаче сигнала MS / s. Для DSP с автономными данными: ну, добавьте задержку к любому сигналу, который вы имеете параллельно с вашим фильтром для компенсации. (Если ваш фильтр имеет линейную фазу, его задержка будет вдвое меньше длины фильтра.) Это может иметь отношение к аппаратной реализации КИХ-фильтра.
  • 1100
Маркус Мюллер
источник
3
В середине и начале 1990-х годов Lake DSP делали 256 000 отводных FIR-фильтров в реальном времени. 1200 кранов? Phfffft! ;-)
Питер К.
2
@PeterK. Это дух! Глубокое уважение к этой РПИ 256kT - численная точность, с которой они сконструированы, должна была быть настолько же захватывающей, как и сама конструкция. Будучи слишком молодым, чтобы технологически наслаждаться ими, начало 90-х, должно быть, было интересным временем. Недавно поговорил с инженером, который в те дни делал микросхемы DFT; Потребность в специализированных интегральных схемах DSP для приложений просто казалась высокой, поскольку люди понимали, что возможно DSP с вычислительными платформами для фактической обработки результирующих потоков данных, но без «многоцелевых» ускорителей (в отличие от сегодняшнего дня).
Маркус Мюллер
@PeterK., Да, но эти аусси всегда тянут нашу ногу.
Роберт Бристоу-Джонсон
@ robertbristow-johnson oy matey, что здесь происходит с инсайдерской шуткой: D?
Маркус Мюллер
2
@ MarcusMüller, хотя тогда казалось, что тогда возросла популярность ASIC по сравнению с сегодняшним днем ​​(и я думаю, это потому, что все, кто был спецификатором / разработчиком ASIC, тогда просто использовали FPGA), еще в начале были «многоцелевые» DSP. 90s. эта штуковина LakeDSP была сделана OUT 6 DSP56001.
Роберт Бристоу-Джонсон
14

Для быстрой и очень практичной оценки мне нравится правило Фреда Харриса:

NTaпsзнак равноATTеN22*ВТ

где:

Atten - желаемое затухание в дБ,

ВТВТзнак равноFsTоп-FпassFs

FsTопFпass

Fs

Это очень близко к тому, что вы получите для линейного фазового фильтра с пульсацией полосы пропускания 0,1 дБ. Я часто использую это эмпирическое правило, чтобы получить первое представление о количестве необходимых отводов, а затем изменяю путем итерации в процессе проектирования фильтра.

Также следует отметить: это практическое правило дает отличное представление о том, что действительно определяет количество отводов: затухание в полосе останова и крутизну полосы перехода (и пульсацию полосы пропускания, но обычно - по крайней мере для фильтров, которые мне приходилось проектировать для приложения беспроводной связи - требование ослабления будет доминировать над пульсацией). Таким образом, в вашем вопросе о том, как ограничить Fs / 100, отсутствует вопрос о том, как быстро вам нужно перейти на стоп-полосу.

FsFpassFstop

Ntaps=60222/100=137

Игра с этими числами также может продемонстрировать важность сокращения обработки с использованием методов децимации.

Дэн Бошен
источник
7

Добавление к принятому ответу несколько дополнительных ссылок. Я не буду писать формулы, которые могут быть задействованы. Эти формулы в большинстве случаев дают правило или аппроксимации для начала. Вы можете возиться с этими цифрами для вашего реального дизайна.

Одним из основополагающих принципов проектирования Беллангера является: «О сложности вычислений в цифровых фильтрах», 1981, Proc. Евро. Conf. Теория схемотехники, М. Беллангер. Это довольно сложно получить, но это выполнимо . Интересно, что в нем также указываются формулы для оценки количества бит на коэффициент, что следует учитывать при конечно-арифметической реализации. Более доступная версия на французском языке: Evaluation of la complexité des filtersres numériques , 1982.

Несколько других формул собраны в Конечном дизайне фильтра импульсной характеристики , Справочник по цифровой обработке сигналов, 1993, Т. Самамаки.

Совсем недавно вы можете прочитать Точную оценку минимальной длины фильтра для оптимальных цифровых фильтров FIR , 2000, K. Ichige et al.

Наконец, в статье « Эффективное проектирование КИХ-фильтров с минимальными заказами фильтров с использованием 10-нормативной оптимизации» в 2014 г. утверждается проект, в котором заказ постепенно уменьшается.

Лоран Дюваль
источник
4

свести к минимуму Максимум(|ЧАС(ω)|)для всех ω в стоп-полосе
при условии1δ|ЧАС(ω)|δ для всех ω в полосе пропускания

Основными практическими проблемами, о которых я могу подумать, будет количество частотных выборок, используемых при оптимизации, так как поведение между частотными выборками может вызвать нежелательные эффекты. Насколько удачной может стать посадка, зависит, конечно, от количества нажатий. Я думаю, вы могли бы сказать, что минимальное количество нажатий - это когда проблема становится неосуществимой. Таким образом, одним из решений будет решение проблемы выполнимости.

Arnfinn
источник