Влияние квантования коэффициента на производительность цифрового фильтра

Влияние квантования коэффициента на производительность цифрового фильтра
Влияние квантования коэффициента на производительность цифрового фильтра
Anonim

Влияние количественного квантования на эффективность цифрового фильтра

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

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

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

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

Пример 1

Передаточная функция фильтра Infinite Impulse Response (IIR) определяется следующим образом:

$$ Н (г) = \ гидроразрыва { sum_ {к = 0} ^ {М-1} B_ {к} г ^ {- к}} { sum_ {к = 0} ^ {N-1} {а_ к} г ^ {- k}} $$

Мы можем использовать функцию эллипса MATLAB для проектирования эллиптического фильтра. Например, (b, a) = эллип (7, 0, 5, 50, 0, 3) дает эллиптический фильтр нижних частот седьмого порядка с пульсацией 0, 5 дБ в полосе пропускания и ослаблением 50 дБ в полосе задерживания. Край полосы пропускания фильтра будет иметь нормализованную частоту $$ 0, 3 \ pi $$. Коэффициенты этого фильтра приведены в следующей таблице. Эти коэффициенты будем рассматривать как неквантованные.

Таблица 1. Нечеткие коэффициенты эллиптического фильтра нижних частот с полосой пропускания от DC до $$ 0, 3 \ pi $$.

К b k (неквантованный) a k (неквантованный)
0 +0, 012218357882143 +1, 000000000000000
1 -0, 009700754662078 -4, 288900601525732
2 +0, 024350450826845 +9, 216957436091198
3 +0, 002532504848041 -12, 195350561406707
4 +0, 002532504848041 +10, 633166152311462
5 +0, 024350450826845 -6, 062798190498858
6 -0, 009700754662078 +2, 098067018562072
7 +0, 012218357882143 -0, 342340135743532

Величина частотной характеристики этого фильтра показана на рисунке 1.

Image
Image

Рисунок 1. Величина частотной характеристики неквантованного фильтра

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

Image
Image

Рисунок 2. Полюсы и нули неквантовой функции системы

Мы будем квантовать коэффициенты, используя один бит для знака и девять бит для величины коэффициентов. Так как все коэффициенты $$ b_k $$ меньше $$ 2 ^ {- 5} = 0.03125 $$, мы можем рассмотреть коэффициент масштабирования $$ 2 ^ {(number; of; bits + 5)} = 2 ^ {(9 + 5)} = 16384 $$ для этих коэффициентов и получить более точное представление. Количественные коэффициенты $$ b_k $$ приведены в таблице 2. Например, чтобы вычислить квантованное значение $$ b_1 $$, мы сначала применим коэффициент масштабирования и получим:

$$ b_ {1} times 2 ^ {(9 + 5)} = 0.012218357882143 \ times 2 ^ {(9 + 5)} = 200.1856 $$

Теперь мы можем округлить результат до $ $ 200 $$. Для реализации коэффициентов будет использовано двоичное представление $$ 200 $$, которое равно $$ 011001000 $$. Однако мы должны иметь в виду, что нам нужно интерпретировать результаты с коэффициентом масштабирования $$ 2 ^ {- (9 + 5)} $$. Тогда десятичный эквивалент квантованного коэффициента можно получить, умножив $$ 200 $$ на $$ 2 ^ {- (9 + 5)} $$, который дает $$ 0.0122 $$.

В этом конкретном примере с коэффициентом масштабирования меньше $$ 2 ^ {(9 + 5)} $$ несколько битов двоичного представления коэффициентов $$ b_k $$ были бы равны нулю для всех коэффициентов, и мы потеряли бы точность. Например, предположим, что мы выделяем девять бит для представления дробного значения коэффициентов $$ b_k $$. Следовательно, мы должны применить масштабный коэффициент $$ 2 ^ {9} $$, который дает:

$$ b_ {1} times 2 ^ 9 = 0.012218357882143 \ times 2 ^ 9 = 6.2558 $$

Очевидно, что в этом случае коэффициент пересчета $$ 2 ^ {- 9} $$ должен учитываться при интерпретации результата вычислений. Rounding $$ 6.2558 $$ и преобразуя его в двоичное представление, мы получаем $$ 00000110 $$. Мы заметили, что, хотя мы используем девять бит для представления этого числа, большинство из них равны нулю. Читатель может проверить, что с этим коэффициентом масштабирования несколько бит будут равны нулю даже для наибольшего $$ b_k $$, то есть $$ 0.024350450826845 $$.

Для квантования коэффициентов $$ a_k $$ отметим, что величина целочисленной части этих коэффициентов меньше $$ 16 $$. Следовательно, мы можем выделить четыре бита для целочисленной части и пять бит для дробной части. В результате коэффициент масштабирования коэффициентов $$ a_k $$ будет $$ 2 ^ 5 $$. Например, с $$ a_2 = 9.216957436091198 $$ у нас есть:

$$ a_ {2} times 2 ^ 5 = 9.216957436091198 \ times 2 ^ 5 = 294.9426 \ approx 295 $$

Следовательно, квантованное десятичное значение для коэффициента будет $$ 9.2188 $$. Аналогично, мы можем найти квантованные значения других коэффициентов $$ a_k $$, как показано в таблице 2 ниже.

Таблица 2. Десятичное значение квантованных коэффициентов.

К b k (квантованный) a k (квантованный)
0 0, 0122 1, 0000
1 -0, 0097 -4, 2813
2 0, 0244 9, 2188
3 0, 0025 -12, 1875
4 0, 0025 10, 6250
5 0, 0244 -6, 0625
6 -0, 0097 2, 0938
7 0, 0122 -0, 3438

На рисунке 3 сравнивается частотная характеристика квантованного фильтра (кривая красного) с частотной характеристикой неквантованной системы (кривая в синем). Мы заметили, что квантование коэффициентов отрицательно повлияло на частотную характеристику.

Image
Image

Рисунок 3. Частотная характеристика квантованного фильтра (в красном) по сравнению с неквантованной системой (синим цветом)

Полюсы (синие кресты) и нули (красные точки) квантованного фильтра показаны на рисунке 4. Как показано на этом рисунке, два полюса выведены из единичного круга, а квантованный фильтр нестабилен. Этот пример показывает, что после проектирования фильтра нам необходимо изучить эффект квантования коэффициента. Если квантованный фильтр не соответствует целевым спецификациям, нам необходимо перепроектировать фильтр. В остальной части статьи мы увидим, что реализация фильтра высокого порядка в виде каскада секций второго порядка может значительно снизить чувствительность к квантованию коэффициентов.

Image
Image

Рисунок 4. Полюсы и нули квантованного фильтра

Анализ чувствительности к коэффициенту квантования

Чтобы проверить чувствительность полюсов и нулей фильтра к квантованию коэффициентов, рассмотрим многочлен $$ D (z) $$ с корнями $$ N $$:

$$ Д (г) = 1 + \ sum_ {к = 0} ^ {N} а_ {к} г ^ {- к} $$

Уравнение 1

Уравнение 1 может представлять системную функцию фильтра конечной импульсной реакции (FIR) или как числитель, так и знаменатель фильтра IIR. Анализ чувствительности корней $$ D (z) $$ к квантованию коэффициентов позволяет нам лучше понять, как корни и полюса цифрового фильтра будут перемещаться в условиях конечной точности.

Мы можем записать $$ D (z) $$ в терминах его факторов как:

$$ Д (г) = 1 + \ sum_ {к = 0} ^ {N} а_ {к} г ^ {- к} = \ prod_ {к = 1} ^ {N} (1-р- {к} г ^ {- 1}) $$

Где $$ p_k $$ обозначает корни многочлена. С конечным числом бит для представления каждого коэффициента мы ожидаем, что $$ a_k $$ изменится на $$ a_k + \ Delta a_k $$, где $$ \ Delta a_k $$ - ошибка, возникшая в результате использования представления с конечной точностью. Следовательно, мы ожидаем, что корни полинома будут меняться от $$ p_k $$ до $$ p_k + \ Delta p_k $$. Ошибка в корневом расположении, $$ \ Delta p_i $$, может быть найдена как:

$$ \ Delta p_ {i} = - \ sum_ {k = 1} ^ {N} frac {p_ {i} ^ {Nk}} { prod_ {l = 1, l \ neq i} ^ {N} (p_ {i} -p_ {l})} Delta a_ {k} $$

Уравнение 2

Чтобы увидеть доказательство уравнения 2, обратитесь к разделу 9.5 этой книги. Уравнение 2 имеет два важных значения, которые будут обсуждаться далее.

Избегайте кластеров поляков и нулей

Во-первых, ошибка в корне $$ i $$ th, $$ \ Delta p_i $$, равна ошибке в коэффициенте $$ k $$ th, умноженной на следующий коэффициент:

$$ F_ {k} = \ frac {p_ {i} ^ {Nk}} { prod_ {l = 1, l \ neq i} ^ {N} (p_ {i} -p_ {l})} $$

Уравнение 3

Этот фактор может быть очень большим, когда многочлен имеет другие корни, близкие к полюсу $$ i $$ th, т. Е. $$ p_ {i} -p_ {l} $$ мал. Другими словами, когда у нас есть кластер корней, ошибка в корневых местах будет намного выше для заданной $$ \ Delta a_k $$. Поскольку узкополосный фильтр имеет в основном плотно сгруппированные корни, мы ожидаем, что частотная характеристика этих фильтров будет очень чувствительна к квантованию коэффициентов.

Избегайте секций фильтров высокого порядка

Переписывая уравнение 2 как уравнение 4 ниже, заметим, что каждый коэффициент многочлена вносит некоторую ошибку в местоположение конкретного полюса:

$$ \ Delta p_ {i} = - \ sum_ {k = 1} ^ {N} F_ {k} Delta a_ {k} $$

Уравнение 4

Это означает, что по мере увеличения числа корней многочлена чувствительность к ошибке квантования будет возрастать. Это связано с тем, что каждый корень $$ D (z) $$ в уравнении 1 зависит от значения всех коэффициентов $$ a_ {k} $$. Для многочлена степени $$ N $$ существуют коэффициенты $$ N $$, которые необходимо квантовать. И, очевидно, каждый из этих квантованных коэффициентов будет вносить определенный погрешность в общую ошибку.

Резюмируя, мы должны избегать кластеров полюсов и нулей и использовать секции фильтра низкого порядка. Эти две цели могут быть достигнуты за счет использования однополюсных секций для создания фильтра высокого порядка. Однако фильтр имеет, как правило, сложные полюсы и нули, а использование однополюсных секций требует комплексной арифметики, что увеличивает вычислительную сложность. Следующей лучшей альтернативой является использование разделов второго порядка. В этом случае мы можем связать комплексно-сопряженные корни и избежать сложной арифметики. Поскольку поиск каскадной формы фильтра высокого порядка включает утомительную математику, мы можем использовать функцию MATLAB tf2sos, которая обозначает функцию передачи в секцию второго порядка, чтобы получить каскадную форму заданной передаточной функции.

Пример 2

Мы будем использовать функцию tf2sos для преобразования передаточной функции в примере 1 в каскадную форму. Затем мы будем квантовать коэффициенты этих секций второго порядка и сравнить частотную характеристику полученной структуры с характеристикой неквантовой системы.

Следующие строки кода определяют передаточную функцию в примере 1 и преобразуют ее в разделы второго порядка:

N = (0, 012218357882143 -0, 009700754662078 0, 024350450826845 0, 002532504848041 0, 002532504848041 0, 024350450826845 -0, 009700754662078 0, 012218357882143); % Эта строка определяет числитель H (z)

D = (1.000000000000000 -4.288900601525731 9.216957436091192 -12.195350561406695 10.633166152311450 -6.062798190498850 2.098067018562069 -0.342340135743531); % Это определяет знаменатель H (z)

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

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

sos =

1, 0000000000 1, 0000000000 0, 0000000000 1, 0000000000 -0, 6790830001 0, 0000000000
1, 0000000000 0, 0102799961 1, 0000000000 1, 0000000000 -1, 2818759037 0, 6209275764
1, 0000000000 -0, 8106030432 1, 0000000000 1, 0000000000 -1, 1804902667 0, 8437961219
1, 0000000000 -0, 9936260871 1, 0000000000 1, 0000000000 -1, 1474514311 0, 9621803579

а также:

$$ G = $$ 0, 0122183579.

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

$$ H_ {2} (г) = \ гидроразрыва {1, 0000000000 + 0.0102799961z ^ {- 1} + 1.0000000000z ^ {- 2}} {1.0000000000-1.2818759037z ^ {- 1} + 0.6209275764z ^ {- 2}} $$

Мы будем квантовать коэффициенты, используя один бит для знака и девять бит для величины коэффициентов. Нам нужно выбрать подходящий масштабный коэффициент. Так как коэффициенты секций второго порядка меньше 2, мы будем использовать один бит для целочисленной части и восемь бит для дробной части, т. Е. Коэффициент масштабирования будет $$ 2 ^ 8 $$. Следовательно, мы получаем передаточную функцию первого сечения как:

$$ H_ {1} (г) = \ гидроразрыва {1, 00000000 + 1.00000000z ^ {- 1}} {1.00000000-0.67968750z ^ {- 1}} $$

Квантованная передаточная функция других секций второго порядка будет:

$$ H_ {2} (z) = \ frac {1.00000000+ 0.01171875z ^ {- 1} + 1.00000000z ^ {- 2}} {1.00000000-1.28125000z ^ {- 1} + 0.62109375z ^ {- 2}} $$

$$ H_ {3} (г) = \ гидроразрыва {1.00000000-0.81250000z ^ {- 1} + 1.00000000z ^ {- 2}} {1.00000000-1.17968750z ^ {- 1} + 0.84375000z ^ {- 2}} $$

$$ H_ {4} (г) = \ гидроразрыва {1.00000000-0.99218750z ^ {- 1} + 1.00000000z ^ {- 2}} {1.00000000-1.14843750z ^ {- 1} + 0.96093750z ^ {- 2}} $$

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

Image
Image

Рисунок 5. Частотная характеристика каскадной структуры (красной) по сравнению с неквантованной системой (синим цветом)

Читатель может легко использовать функцию MATLAB roots (), чтобы проверить, что полюсы квантованной структуры каскада находятся внутри единичного круга, и система стабильна. Этот пример показывает, что реализация фильтра высокого порядка в качестве каскада секций второго порядка может значительно снизить чувствительность к квантованию коэффициентов.

Резюме

  • При внедрении цифрового фильтра в реальном мире мы должны использовать конечное число бит для представления каждого коэффициента $$ H (z) $$.
  • Частотная характеристика квантованного фильтра может сильно отличаться от частотной характеристики исходного дизайна.
  • Реализация фильтра высокого порядка в качестве каскада секций второго порядка может значительно снизить чувствительность к квантованию коэффициентов.

Вспомогательная информация

  • FIR Filter Design by Windowing: концепции и прямоугольное окно
  • Нежелательные эффекты функции окна в конструкции КИХ-фильтра
  • Бартлетт против прямоугольного окна
  • От параметров фильтра до оконных параметров в конструкции FIR Filter
  • Проектирование FIR-фильтров с использованием метода выборки частоты
  • Структуры для реализации конечных импульсных фильтров