Структуры для реализации фильтров с конечной импульсной характеристикой

Структуры для реализации фильтров с конечной импульсной характеристикой
Структуры для реализации фильтров с конечной импульсной характеристикой
Anonim

Структуры для реализации конечных импульсных фильтров

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

При разработке фильтра мы начинаем с набора спецификаций, которые обычно определяются конкретным приложением. Например, нам может потребоваться подавить шум 50 Гц, который появляется на выходе датчика, и делает наши измерения неточными. Основываясь на частоте и силе компонента шума, мы можем определить характеристики фильтра, такие как граница полосы пропускания и границы полосы пропускания, полоса пропускания перехода, окончательное внеполосное отключение и т. Д. Теперь мы можем найти системную функцию, $ $ H (z) $$, что удовлетворяет этим требованиям.

Для проектирования FIR у нас есть несколько вариантов, таких как метод окна, метод выборки частоты и многое другое. Тогда нам нужно выбрать структуру реализации полученной системной функции. Другими словами, существует несколько структур, которые имеют одну и ту же системную функцию $$ H (z) $$. Одним из соображений выбора подходящей структуры является чувствительность к квантованию коэффициента. Поскольку цифровой фильтр использует конечное число бит для представления сигналов и коэффициентов, нам нужны структуры, которые могут каким-то образом сохранить спецификации целевого фильтра даже после квантования коэффициентов. Кроме того, иногда мы замечаем, что конкретная структура может значительно снизить вычислительную сложность системы.

Структура прямой формы

Структура прямой формы получается непосредственно из разностного уравнения. Предположим, что разностное уравнение КИХ-фильтра задается формулой

$$ у (п) = \ sum_ {k = 0} ^ {M-1} B_ {K} х (пк) $$

Уравнение 1

Основываясь на приведенном выше уравнении, нам нужна текущая входная выборка и $$ M-1 $$ предыдущие образцы ввода для создания точки вывода. Для $$ M = 5 $$ мы можем просто получить следующую диаграмму из уравнения 1.

Image
Image

Рисунок 1. Структура прямой формы для КИХ-фильтра четвертого порядка

Используя реализацию прямой формы на рисунке 1, нам нужны мультипликаторы $$ M $$ для FIR-фильтра $$ (M-1) $$ th-order. Однако, как правило, мы можем почти вдвое увеличить число множителей. Этого можно добиться, заметив, что нас интересуют в основном линейные КИХ-фильтры. Фактически, основным преимуществом FIR-фильтра по конструкции с бесконечной импульсной характеристикой (IIR) является его линейно-фазовый отклик, в противном случае для данного набора спецификаций конструкция IIR может предлагать фильтр более низкого порядка и уменьшать вычислительную сложность, С другой стороны, для линейно-фазового КИХ-фильтра мы наблюдаем следующую симметрию в коэффициентах разностного уравнения

$$ b_ {k} = \ pm b_ {M-1-k} $$

Для $$ M = 5 $$ уравнение 1 дает

$$ у (п) = B_ {0} х (п) + B_ {1} х (п-1) + B_ {2} х (п-2) + B_ {3} х (п-3) + B_ {4} х (п-4) $$

Предполагая $$ b_ {k} = b_ {M-1-k} $$, получим

$$ y (n) = b_ {0} left (x (n) + x (n-4) right) + b_ {1} left (x (n-1) + x (n-3) справа) + B_ {2} х (п-2) $$

Структура, полученная из приведенного выше уравнения, показана на рисунке 2. Хотя на рисунке 1 требуется пять множителей, используя симметрию линейного FIR-фильтра, мы можем реализовать фильтр, используя только три умножителя. Этот пример показывает, что для нечетного $$ M $$ свойство симметрии уменьшает количество мультипликаторов FIR-фильтра $$ (M-1) $$ th-order от $$ M $$ до $$ \ tfrac {M +1} {2} $$. Краткая информация о важности линейно-фазового ответа приведена в этой статье.

Image
Image

Рисунок 2. Симметрия линейного FIR фильтра может быть использована для уменьшения числа множителей

Структура каскадной формы

Хотя прямая форма получена из разностного уравнения, каскадная структура получается из системной функции $$ H (z) $$. Идея состоит в том, чтобы разбить целевую системную функцию на каскад FIR-систем второго порядка. Другими словами, нам нужно найти системы второго порядка, которые удовлетворяют

$$ Н (г) = \ sum_ {к = 0} ^ {М-1} B_ {к} г ^ {- к} = \ prod_ {к = 1} ^ {Р} влево (B_ {0k} + b_ {1k} z ^ {- 1} + b_ {2k} z ^ {- 2} right) $$

Уравнение 2

где $$ P $$ - целочисленная часть $$ \ tfrac {M} {2} $$. Например, $$ M = 5 $$, $$ H (z) $$ будет многочленом четвертой степени, который можно разложить на два раздела второго порядка. Каждый из этих фильтров второго порядка может быть реализован с использованием структуры прямой формы. Желательно установить пару комплексно-сопряженных корней для каждой из секций второго порядка, чтобы коэффициенты стали вещественными. Читатель может задаться вопросом, почему нам нужно переписать заданный $$ H (z) $$ в терминах секций второго порядка. В следующей статье мы увидим, что основным преимуществом каскадной структуры является ее меньшая чувствительность к квантованию коэффициентов.

Чтобы прояснить преобразование системной функции в каскадную форму, давайте рассмотрим пример.

Пример 1

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

Image
Image

Системная функция этого фильтра

$$ Н (г) = - 0, 0977 + 0.1497z ^ {- 2} + 0.2813z ^ {- 3} + 0.3333z ^ {- 4} + 0.2813z ^ {- 5} + 0.1497z ^ {- 6} - 0.0977z ^ {- 8} $$

Можно показать, что

$$ Н (г) = GH_ {1} (г) Н_ {2} (г) Н_ {3} (г) Н_ {4} (г) $$

где

$$ G = -0, 0977 $$

$$ H_ {1} (г) = \ влево (1-2.5321z ^ {- 1} + Z ^ {- 2} справа) $$

$$ H_ {2} (г) = \ влево (1-0.3474z ^ {- 1} + Z ^ {- 2} справа) $$

$$ H_ {3} (г) = \ влево (1 + 1.8794z ^ {- 1} + Z ^ {- 2} справа) $$

$$ H_ {4} (г) = \ влево (1 + Z ^ {- 1} + Z ^ {- 2} справа) $$

Следовательно, мы получаем структуру, показанную на рисунке 3.

Image
Image

Рисунок 3. Каскадная структура для системной функции примера 1

Каждая из этих систем второго порядка может быть реализована с использованием структуры прямой формы. Например, реализация $$ H_ {1} (z) $$ показана на рисунке 4.

Image
Image

Рисунок 4. Прямая реализация формы $$ H_ {1} (z) $$

Вы можете проверить, что $$ H_ {1} (z) $$ пары двух действительных нулей $$ H (z) $$, т.е. $$ z_1 = 2.0425 $$ и $$ z_2 = 0.4896 $$; однако остальные три секции второго порядка (sos) включают комплексно-сопряженные корни $$ H (z) $$. Например, корни $$ H_2 (z) $$ равны $$ z_3 = 0, 1737 + 0, 9848j $$ и $$ z_4 = 0, 1737-0, 9848j $$.

Так как поиск каскадной формы практического КИХ-фильтра включает утомительную математику, мы можем использовать функцию MATLAB tf2sos, которая обозначает передаточную функцию в секцию второго порядка, для получения каскадной формы заданной передаточной функции. Фактически, каскадная форма $$ H (z) $$ в приведенном выше примере была найдена с использованием функции tf2sos со следующими строками кода:

N = (- 0, 0977 0 0, 1449 0, 2813 0, 3333 0, 2813 0, 147 0 -0, 0977); % Эта строка определяет числитель H (z)

D = 1; % Это определяет знаменатель H (z)

(sos, G) = tf2sos (N, D)% преобразует передаточную функцию, определенную Nand Dinto, каскадом секций второго порядка

Результатом будет:

Сос =

Image
Image

и $$ G = -0.0977 $$.

Каждая строка sos выше дает передаточную функцию одного из секций второго порядка. Первые три числа каждой строки представляют собой числитель соответствующего раздела второго порядка, а вторые три числа дают свой знаменатель. Например, первая строка sos дает секцию второго порядка $$ H_ {1} (z) $$ примера 1 и т. Д. Команда tf2sos также дает коэффициент усиления, $$ G $$, который может быть включен в структуру каскадной формы, как показано на рисунке 3.

Пример 2

Предположим, что нам нужно реализовать 10-кратный КИХ-фильтр, указанный в следующей таблице, используя каскадную структуру.

Image
Image

Как и в предыдущем примере, мы имеем:

N = (- 0, 0024 0, 0073 0, 0606 0, 1691 0, 2654 0, 2654 0, 1691 0, 0606 0, 0073 -0, 0024);

D = 1;

(sos, G) = tf2sos (N, D)

Результатом будет:

sos =

Image
Image

и $$ G = -0.0024 $$.

Следовательно, целевая системная функция может быть переписана в терминах секций второго порядка как

$$ Н (г) = GH_ {1} (г) Н_ {2} (г) Н_ {3} (г) Н_ {4} (г) Н_ {5} (г) $$

где

$$ G = -0, 0024 $$

$$ H_ {1} (г) = 1-7.7465z ^ {- 1} $$

$$ H_ {2} (г) = 1 + 0.8709z ^ {- 1} -0.1291z ^ {- 2} $$

$$ H_ {3} (г) = 1 + 1.7922z ^ {- 1} + 1.6972z ^ {- 2} $$

$$ H_ {4} (г) = 1 + 0.9858z ^ {- 1} + Z ^ {- 2} $$

$$ H_ {5} (г) = 1 + 1.0560z ^ {- 1} + 0.5892z ^ {- 2} $$

В этом примере полином системы системы имеет девятую степень, и, следовательно, фильтр имеет девять нулей. В результате заметим, что $$ H_ {1} (z) $$ включает только один ноль, т. Е. Коэффициент $$ b_ {2k} $$ в уравнении 2 равен нулю для этого раздела второго порядка.

Мы можем реализовать разделы второго порядка этого примера, используя структуру прямой формы и получить каскадную структуру фильтра; однако есть еще одна альтернатива, которая позволяет нам уменьшить вычислительную сложность. Чтобы найти эту эффективную по вычислению структуру, помните, что, как показано на рис. 1 и 2 выше, линейный FIR-фильтр может быть реализован с меньшим числом множителей. С другой стороны, заметим, что, хотя целевая системная функция является линейной фазой, только $$ H_ {4} (z) $$ является линейной FIR-структурой (из-за симметрии коэффициента).

Итак, остается вопрос: можем ли мы группировать нули данной линейной функции FIR-системы таким образом, чтобы полученное разложение включало линейно-фазовые структуры «text-align: center;»> $$ z_1 = -1.0000 $$

$$ z_2 = 7.7465 $$, $$ z_3 = 0.1291 $$

$$ z_4 = -0.4929 + 0.8701j $$, $$ z_5 = -0.4929 - 0.8701j $$

$$ z_6 = -0.5280 + 0.5571j $$, $$ z_7 = -0.5280-0.5571j $$

$$ z_8 = -0.8961 + 0.9456j $$, $$ z_9 = -0.8961-0.9456j $$

Читатель может проверить, что $$ z_2 = \ tfrac {1} {z_3} $$, $$ z_4 = \ tfrac {1} {z_ {5} ^ {*}} $$, $$ z_6 = \ tfrac {1 } {z_ {8} ^ {*}} $$ и $$ z_7 = \ tfrac {1} {z_ {9} ^ {*}} $$. Затем мы можем пара $$ z_2 $$ и $$ z_3 $$ получить следующую линейную фазу второго порядка

$$ H_ {LP1} (г) = (1-0.1291z ^ {- 1}) (1-7.7465z ^ {- 1}) = (1-7.8756z ^ {- 1} + Z ^ {- 2}) $$

Pairing $$ z_4 $$ и $$ z_5 $$ дает:

$$ H_ {LP2} (z) = (1 - (- 0, 4929 + 0, 8701j) z ^ {- 1}) (1 - (- 0, 4929 - 0, 8701j) z ^ {- 1}) = (1 + 0, 9858z ^ {- 1} + Z ^ {- 2}) $$

Группируя $$ z_6 $$, $$ z_7 $$, $$ z_8 $$ и $$ z_9 $$ вместе, получаем:

$$ H_ {LP3} (г) = 1 + 2.8482z ^ {- 1} + 4.1790z ^ {- 2} + 2.8482z ^ {- 3} + Z ^ {- 4} $$

Чтобы включить нулевой $$ z_1 $$, нам нужно включить секцию первого порядка, то есть $$ H_ {LP4} (z) = 1 + z ^ {- 1} $$. Каскад этих элементов линейной фазы даст исходную системную функцию:

$$ Н (г) = {GH_ LP1} (г) Н_ {LP2} (г) Н_ {LP3} (г) Н_ {LP4} (г) $$

где $$ G = -0.0024 $$, как и раньше.

В общем случае нули линейно-фазового КИХ-фильтра могут быть четырех различных устройств, как показано на рисунке 5. Эти устройства включают в себя: 1- пару комплексно-сопряженных нулей, которые не находятся на единичном круге вместе с их обратными, например $$ z_1 $$, $$ z_ {1} ^ {*} $$, $$ \ tfrac {1} {z_1} $$ и $$ \ tfrac {1} {z_ {1} ^ {*}} $$ на рисунке, 2- пара комплексно-сопряженных нулей на единичном круге, таких как $$ z_3 $$ и $$ z_ {3} ^ {*} $$ на рисунке, 3 - действительный нуль, который равен а не на единичном круге вместе с его обратным, например $$ z_ {2} $$ и $$ \ tfrac {1} {z_ {2}} $$, и, наконец, 4- действительный нуль на единичном круге, как $ $ z_4 $$ на рисунке 5. Системная функция приведенного выше примера имела нули всех этих четырех групп.

Image
Image

Рисунок 5. Симметрия нулей для FIR-фильтра с линейной фазой. Изображение предоставлено обработкой дискретного времени

Факторизуя системную функцию примера 2 в элементы линейной фазы, нам нужно в общей сложности пять множителей. В следующей таблице показано количество множителей для каждого раздела.

Image
Image

Однако для первой реализации требуется девять множителей, перечисленных ниже:

Image
Image

Таким образом, мы можем использовать команду tf2sos для перезаписи системной функции фильтра FIR как продукта секций второго порядка; однако эти секции второго порядка не обязательно являются линейными. Чтобы иметь каскад элементов линейной фазы, нам необходимо соответствующим образом группировать нули передаточной функции. Используя каскад линейно-фазовых сечений, мы можем уменьшить количество умножений. Обратите внимание, что в этом случае некоторые из разделов могут быть порядка четвертого как $$ H_ {LP3} (z) $$ в приведенном выше примере.

Резюме

  • Существует несколько структур для реализации заданной системной функции $$ H (z) $$. Одним из соображений выбора соответствующей структуры является чувствительность к квантованию коэффициентов. Кроме того, иногда мы замечаем, что конкретная структура может значительно снизить вычислительную сложность системы.
  • Свойство симметрии линейного FIR-фильтра можно использовать для уменьшения числа требуемых умножений.
  • Основным преимуществом каскадной структуры является ее меньшая чувствительность к квантованию коэффициентов.
  • Мы можем использовать команду tf2sos для перезаписи системной функции FIR-фильтра как продукта секций второго порядка; однако эти секции второго порядка не обязательно являются линейными. Чтобы иметь каскад элементов линейной фазы, нам необходимо соответствующим образом группировать нули передаточной функции.