exponenta event banner

Многоступенчатый полуполосный фильтр IIR

В этом примере показано, как проектировать многоступенчатые полуполосные прореживатели IIR.

Подобно КИХ многоскоростным фильтрам, БИХ полуполосные прореживатели/интерполяторы могут быть реализованы с использованием эффективных многофазных структур. Полифазные фильтры БИХ обладают несколькими интересными свойствами: для их реализации требуется очень небольшое количество множителей, они по своей сути стабильны, имеют низкую чувствительность к шуму округления и не имеют предельных циклов.

Фильтры Butterworth и elliptic IIR могут быть спроектированы с типом полуполосного прореживания/интерполятора. Кроме того, можно достичь почти линейного фазового отклика с использованием специализированных алгоритмов БИХ проектирования.

Пример эффективности затрат

Способ измерения вычислительной стоимости фильтра состоит в том, чтобы определить, сколько умножений необходимо вычислить (в среднем) на одну входную выборку (MPIS). Рассмотрим пример подсчета MPIS: FIR vs IIR для следующих спецификаций фильтра:

Fs  = 9.6e3;   % Sampling frequency: 9.6 kHz
TW  = 120;     % Transition width
Ast = 80;      % Minimum stopband attenuation: 80 dB
M   = 8;       % Decimation factor
NyquistDecimDesign = fdesign.decimator(M,'Nyquist',M,TW,Ast,Fs);

Многоступенчатое полупериодное проектирование FIR

Способ получения эффективных конструкций КИХ заключается в использовании многоступенчатых технологий. Эта конструкция приводит к трем полуполосным прореживателям FIR в каскаде. Полуполосные фильтры чрезвычайно эффективны, поскольку каждый другой коэффициент равен нулю.

MultistageFIRDecim = design(NyquistDecimDesign,'multistage',...
           'HalfbandDesignMethod','equiripple','SystemObject',true);
cost(MultistageFIRDecim)
ans = 

  struct with fields:

                  NumCoefficients: 69
                        NumStates: 126
    MultiplicationsPerInputSample: 12.8750
          AdditionsPerInputSample: 12

Этот метод обеспечивает вычислительные затраты в среднем 12,875 MPIS.

Многоступенчатая полуполосная конструкция IIR

Эллиптические фильтры - это IIR-эквивалент оптимальных эквирипсельных фильтров. Эта конструкция приводит к трем полуполосным прореживателям БИХ в каскаде. Эллиптические конструкции позволяют создавать наиболее эффективные конструкции полуполосы БИХ.

MultistageIIRDecim = design(NyquistDecimDesign,'multistage',...
    'HalfbandDesignMethod','ellip','SystemObject',true);
cost(MultistageIIRDecim)
ans = 

  struct with fields:

                  NumCoefficients: 11
                        NumStates: 17
    MultiplicationsPerInputSample: 2.5000
          AdditionsPerInputSample: 5

Этот метод обеспечивает вычислительные затраты в среднем всего 2,5 MPIS.

Если наложить амплитудные характеристики многостадийных фильтров FIR и IIR, два фильтра выглядят очень похожими и оба соответствуют спецификациям.

fvFig = fvtool(MultistageFIRDecim,MultistageIIRDecim,'Color','white');
legend(fvFig, 'Multirate/Multistage FIR Polyphase', ...
    'Multirate/Multistage IIR Polyphase')

Тщательный осмотр показывает, что пульсации полосы пропускания фильтра БИХ намного выше, чем у фильтра ПИХ. Таким образом, экономия вычислительных затрат не происходит по цене реакции с ухудшенной величиной.

fvtool(MultistageFIRDecim,MultistageIIRDecim,'Color','white');
title('Passband Magnitude Response (dB)')
axis([0 0.325 -0.0016 0.0016])

Квазилинейные фазовые полуполосные конструкции БИХ

Модификация структуры, используемой для реализации каждого БИХ полуполосного фильтра, позволяет получить почти линейные фазовые конструкции с использованием БИХ-фильтров. Эта конструкция также приводит к трем полуполосным прореживателям в каскаде. Однако каждая полуполоса реализована определенным образом, который включает в себя чистую задержку, соединенную параллельно с фильтром allpass. Это ограничение реализации помогает обеспечить квазилинейный фазовый отклик. Это происходит за счет небольшого увеличения вычислительных затрат по сравнению с эллиптическими конструкциями.

IIRLinearPhaseFilt = design(NyquistDecimDesign,'multistage',...
    'HalfbandDesignMethod','iirlinphase','SystemObject',true);
cost(IIRLinearPhaseFilt)
ans = 

  struct with fields:

                  NumCoefficients: 25
                        NumStates: 55
    MultiplicationsPerInputSample: 4.3750
          AdditionsPerInputSample: 8.7500

Хотя конструкция не так эффективна, как эллиптический случай, она, тем не менее, более эффективна, чем использование полубандов FIR.

Сравнение задержки группы

Перекрывая групповую задержку трех конструкций и фокусируясь на полосе пропускания фильтра (интересующей области), мы можем проверить, что последняя конструкция БИХ достигает квазилинейной фазы (почти плоской групповой задержки) в этой области. Напротив, эллиптический фильтр, хотя и более эффективный (и с более низкой групповой задержкой в целом), имеет явно нелинейную фазовую характеристику.

fvFig = fvtool(MultistageFIRDecim,MultistageIIRDecim,IIRLinearPhaseFilt,...
    'Color','white','Analysis','grpdelay');
axis([0 0.6 0 225])
title('Passband Group delay')
legend(fvFig, 'Linear-Phase FIR', 'Nonlinear Phase Elliptic IIR',...
    'Quasi-Linear Phase IIR')

Надежность с фиксированной точкой

Полифазные БИХ-фильтры могут быть реализованы различными способами. Мы уже сталкивались с односкоростным и многоскоростным каскадом allpass в предыдущих разделах. Теперь возьмем, например, трансформатор Гильберта. Квазилинейно-фазовый фильтр БИХ Гильберта с шириной перехода 96Hz и максимальной пульсацией полосы пропускания 0,1 дБ может быть реализован как каскадно-волновой цифровой фильтр с использованием только 10 MPIS по сравнению с 133 MPIS для эквивалента FIR:

HilbertDesign = fdesign.hilbert('TW,Ap',96,.1,Fs);
HilbertIIRFilt = design(HilbertDesign,'iirlinphase',...
                 'FilterStructure','cascadewdfallpass',...
                 'SystemObject',true);
cost(HilbertIIRFilt)
ans = 

  struct with fields:

                  NumCoefficients: 10
                        NumStates: 33
    MultiplicationsPerInputSample: 10
          AdditionsPerInputSample: 25

Доказано, что волновые цифровые фильтры очень надежны, даже когда полюса находятся близко к единичной окружности. Они по своей природе стабильны, обладают низкими шумовыми свойствами округления и свободны от предельных циклов. Чтобы преобразовать фильтр БИХ Гильберта в представление с фиксированной точкой, можно использовать команду realizemdl и Инструмент с фиксированной точкой для преобразования модели Simulink с плавающей точкой в фиксированную точку:

realizemdl(HilbertIIRFilt)

Резюме

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

Современные инструменты проектирования КИХ-фильтров, использующие многоскоростные/многофазные методы, перекрывают зазор, обеспечивая при этом линейно-фазовый отклик наряду с хорошей чувствительностью к эффектам квантования и отсутствием проблем стабильности и предельных циклов при реализации в фиксированной точке.

Однако полифазные фильтры БИХ имеют большинство преимуществ, которые имеют и требуют очень небольшого количества множителей для реализации.