Расчет аналогового нормированного фильтра нижних частот Баттерворта

Содержание

DSPL-2.0 — свободная библиотека алгоритмов цифровой обработки сигналов

Распространяется под лицензией LGPL v3

Страница проекта на SourceForge libdspl-2.0 on SourceForge

Обнаружили ошибку? Выделите ее мышью и нажмите ctrl+enter
Исходные данные для расчета аналогового нормированного ФНЧ Баттерворта

Аппроксимация квадрата АЧХ |H(j\omega)|^2 нормированного ФНЧ Баттерворта представляется в виде (смотри рисунок 1):

equation 1
(1)
где F_N(\omega) = \omega^N – аппроксимирующий полином нормированного ФНЧ Баттерворта, \varepsilon_p^2 задает неравномерность R_p дБ в полосе пропускания фильтра.

Параметры квадрата АЧХ  нормированного ФНЧ Баттерворта
Рисунок 1. Параметры квадрата АЧХ |H(j \omega)|^2 нормированного ФНЧ Баттерворта

Порядок фильтра Баттерворта рассчитывается из уравнения:

equation 2
(2)
где \omega_p = 1 рад/c – частота среза нормированного ФНЧ, \omega_s определяет переходную полосу фильтра, \varepsilon_s задает требуемый уровень подавления R_s дБ в полосе заграждения фильтра.

Прологарифмируем правую и левую части уравнения и получим:

equation 3
(3)

Исходными данными для расчета нормированного ФНЧ Баттерворта служат: частота среза \omega_p = 1 рад/c, переходная полоса, задаваемая частотой \omega_s, допустимое искажение в полосе пропускания R_p (дБ) и требуемое подавление в полосе заграждения R_s (дБ).

На рисунке 1 приведены соотношения параметров АЧХ нормированного ФНЧ, которые используются как исходные данных для синтеза фильтра.

Для расчета передаточной характеристики H(s) мы должны получить выражения для нулей и полюсов квадрата модуля передаточной характеристики |H(s)|^2 нормированного ФНЧ Баттерворта.

Нули и полюсы квадрата модуля передаточной характеристики нормированного ФНЧ Баттерворта

Квадрат АЧХ |H(j \omega)|^2 есть сечение квадрата модуля передаточной характеристики |H(s)|^2 при s = j\omega.

Для расчета нулей и полюсов |H(s)|^2 подставим \omega = \frac{s}{j} = -js в выражение квадрата АЧХ (1), тогда:

equation 4
(4)

Очевидно, что ни при каких конечных комплексных s выражение (4) не равно нулю, квадрат модуля передаточной характеристики |H(s)|^2 нормированного ФНЧ Баттерворта не имеет конечных нулей.

Для расчета полюсов |H(s)|^2 нормированного ФНЧ Баттерворта приравняем знаменатель (4) к нулю:

equation 5
(5)
Рассмотрим отдельно четные и нечетные значения порядка фильтра N.

При четных N имеем:

equation 6
(6)
Представим минус единицу в правой части (6) через комплексную экспоненту \exp \big( j\left( 2n+1 \right)\pi  \big), n=1 \ldots 2N, тогда

equation 7
(7)
Прологарифмируем левую и правую части уравнения (7) и получим:

equation 8
(8)
Преобразуем:

equation 9
(9)
тогда:

equation 10
(10)
Окончательно можно записать выражение для полюсов квадрата модуля |H(s)|^2 передаточной функции при четных N:

equation 11
(11)
При нечетных N из выражения (5) имеем:

equation 12
(12)
Представим единицу в правой части через комплексную экспоненту \exp \left(j2\pi n  \right), n=1\ldots 2N, тогда

equation 13
(13)
Прологарифмируем левую и правую части уравнения (13) и получим:

equation 14
(14)
Преобразуем:

equation 15
(15)
тогда:

equation 16
(16)
Окончательно можно записать выражения для полюсов квадрата модуля |H(s)|^2 передаточной функции H(s) при нечетных N:

equation 17
(17)
На рисунке 2 показано расположение полюсов квадрата модуля передаточной функции |H(s)|^2, заданной выражением (4) при четном N=4 (слева) и нечетном N=5 (справа) порядках фильтра Баттерворта.

Расположение полюсов квадрата модуля передаточной функции при четном   и нечетном  порядках фильтра Баттерворта
Рисунок 2. Расположение полюсов квадрата модуля передаточной функции при четном N=4 и нечетном N=5 порядках фильтра Баттерворта

Все полюсы квадрата модуля АЧХ фильтра Баттерворта расположены на окружности радиуса {1}/{\sqrt[N]{{{\varepsilon }_{p}}}}, и отстоят друг от друга на угол \theta ={\pi }/{N}. В частном случае при {{\varepsilon }_{p}}=1 все полюсы расположены на единичной окружности.

Передаточная характеристика нормированного ФНЧ Баттерворта

Для получения устойчивого и физически реализуемого фильтра необходимо, чтобы все нули и полюсы передаточной функции H(s) располагались в левой полуплоскости комплексной плоскости s или на мнимой оси j\omega. Тогда для расчета передаточной функции H\!\left( s \right) нормированного ФНЧ Баттерворта необходимо из всех 2N полюсов квадрата модуля |H(s)|^2 передаточной функции выбрать только те N полюсов, что лежат в левой полуплоскости.

Все N полюсов \rho_n, расположенные в левой полуплоскости могут быть записаны как для четного, так и для нечетного порядка фильтра N (смотри рисунок 2):

equation 18
(18)
Перепишем в тригонометрической форме:

equation 19
(19)
Таким образом, мы задали все полюсы передаточной функции H(s) нормированного ФНЧ Баттерворта порядка N. Тогда передаточная функция H(s) нормированного ФНЧ Баттерворта может быть представлена:

equation 20
(20)
Обратим внимание, что все полюсы передаточной функции нормированного ФНЧ Баттерворта четного порядка (смотри рисунок 2) представляют собой комплексно-сопряженные пары, а у фильтра нечетного порядка есть один вещественный полюс.

Тогда можно представить передаточную функцию нормированного ФНЧ Баттерворта при помощи биквадратной формы. Для четного N:

equation 21
(21)
Окончательно можно записать:

equation 22
(22)
В случае нечетного N имеем дополнительный вещественный полюс \rho=\alpha ={1}/{\sqrt[N]{{{\varepsilon }_{p}}}}. Передаточную функцию H(s) нормированного ФНЧ Баттерворта можно представить при помощи биквадратной формы для нечетного N:

equation 23
(23)
Окончательно можно объединить выражения (22) и (23). Для любого целого N=2L+r (r может принимать значения 0 или 1) передаточная функцию H(s) нормированного ФНЧ Баттерворта имеет вид:

equation 24
(24)
Коэффициент передачи G_0 нормированного ФНЧ Баттерворта на нулевой частоте равен:

equation 25
(25)
Для нормировки коэффициента передачи на нулевой частоте H\!\left( 0 \right)=1 необходимо передаточную функцию H(s) нормированного ФНЧ Баттерворта (24) разделить на G_0. Тогда окончательно:

equation 26
(26)
Необходимо отметить, что при {{\varepsilon }_{p}}=1, \alpha =1 и G_0=1 без нормировки. При этом {{\varepsilon }_{p}}=1 соответствует {{R}_{p}}=3\ \mbox{дБ} и выражение для передаточной характеристики фильтра (26) преобразуется к виду:

equation 27
(27)

Форма записи (27) передаточной функции нормированного ФНЧ Баттерворта получила широкое распространение ввиду того, что не требуется нормировка. Однако выражение (26) позволяет регулировать коэффициент передачи фильтра на частоте среза {{\omega }_{p}} и является более общей.

Пример расчета нормированного ФНЧ Баттерворта

Рассчитаем нормированный ФНЧ Баттерворта при следующих параметрах квадрата АЧХ |H(j\omega)|^2 (смотри рисунок 1):

equation 28
(28)
Шаг 1. Рассчитываем параметры \varepsilon_p и \varepsilon_s:

equation 29
(29)
Шаг 2. Рассчитываем порядок фильтра согласно выражению (3):

equation 30
(30)
Округляем N до бо́льшего целого. Таким образом, N= 3.

Шаг 3. Рассчитываем передаточную характеристику согласно выражению (26). При этом N=3=2L+r, значит L=1, r=1. Рассчитываем \alpha :

equation 31
(31)
Рассчитываем значения {{\theta }_{n}}. В нашем случае L=1, поэтому будет только одно значение {{\theta }_{1}} равное:

equation 32
(32)
Передаточную функцию H(s) фильтра можно записать:
equation 33
(33)
На этом расчет нормированного ФНЧ Баттерворта окончен.

Комплексный коэффициент передачи H(j\omega) полученного фильтра равен:

equation 34
(34)
На рисунке 3 показаны квадрат АЧХ \left| H\left( j\omega  \right) \right|^2, ФЧХ \Phi \left( \omega  \right), групповая задержка \tau \left( \omega  \right) и импульсная характеристика h(t) рассчитанного нормированного ФНЧ Баттерворта третьего порядка.

Характеристики
	 рассчитанного нормированного ФНЧ Баттерворта
Рисунок 3. Характеристики рассчитанного нормированного ФНЧ Баттерворта

Обратите внимание, что по оси абсцисс частота представлена в логарифмическом масштабе.

Выводы

Таким образом, в данном разделе мы рассмотрели порядок расчета передаточной функции аналогового нормированного ФНЧ Баттерворта и привели пример расчета фильтра по заданным параметрам АЧХ.

Реализация в DSPL-2.0

В библиотеке DSPL-2.0 реализована функция butter_ap , которая рассчитывает коэффициенты передаточной функции H(s) аналогового нормированного фильтра Баттерворта.

Исходный код программы butter_ap_example.c расчета и построения характеристик фильтра (рисунок 3):


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "dspl.h"

#define ORD 3
#define N   1000
#define K   1024

int main(int argc, char* argv[])
{
  void* handle;           /* DSPL handle        */
  void* hplot;            /* GNUPLOT handle     */
  double a[ORD+1], b[ORD+1];
  double Rp = 1.0;
  double w[N], mag[N], phi[N], tau[N];
  double t[K], h[K];
  fft_t pfft = {0};
   
  int k, res;
  
  handle = dspl_load();   /* Load DSPL function */
  if(!handle)
  {
    printf("cannot to load libdspl!\n");
    return 0;
  }
  
  /* Расчет коэффициентов передаточной функции H(s) */
  res = butter_ap(Rp, ORD, b, a);
  if(res != RES_OK)
    printf("error code = 0x%8x\n", res);
  
  /* печать коэффициентов передаточной функции */
  for(k = 0; k < ORD+1; k++)
    printf("b[%2d] = %9.3f   a[%2d] = %9.3f\n", k, b[k], k, a[k]);

  /* расчет АЧХ, ФЧХ, ГВЗ */
  logspace(-2.0, 2.0, N , DSPL_SYMMETRIC, w);
  filter_freq_resp(b, a, ORD, w, N, 
           DSPL_FLAG_ANALOG|DSPL_FLAG_LOGMAG|DSPL_FLAG_UNWRAP, 
           mag, phi, tau);
           
  /* сохранение АЧХ, ФЧХ, ГВЗ в файлы*/
  writetxt(w, mag, N, "dat/butter_ap_test_mag.txt");  
  writetxt(w, phi, N, "dat/butter_ap_test_phi.txt");
  writetxt(w, tau, N, "dat/butter_ap_test_tau.txt");

  /* расчет импульсной характеристики и сохранение в файл */
  memset(&pfft, 0, sizeof(fft_t));
  freqs2time(b, a, ORD, 200.0, K, &pfft, t,h);
  writetxt(t, h, K, "dat/butter_ap_test_time.txt");

  /* plotting by GNUPLOT */
  gnuplot_create(argc, argv, 820, 680, "img/butter_ap_example.png", &hplot);
  gnuplot_cmd(hplot, "set logscale x");
  gnuplot_cmd(hplot, "unset key");
  gnuplot_cmd(hplot, "set grid");
  gnuplot_cmd(hplot, "set xlabel 'w, рад/с'");
  gnuplot_cmd(hplot, "set multiplot layout 2, 2 rowsfirst");
  gnuplot_cmd(hplot, "set ylabel '|H(jw)|^2, дБ'");
  gnuplot_cmd(hplot, "set yrange [-80:5]");
  gnuplot_cmd(hplot, "plot 'dat/butter_ap_test_mag.txt' with lines");
  
  gnuplot_cmd(hplot, "set ylabel 'Ф(w), рад'");
  gnuplot_cmd(hplot, "unset yrange");
  gnuplot_cmd(hplot, "plot 'dat/butter_ap_test_phi.txt' with lines");
  
  gnuplot_cmd(hplot, "set ylabel 'tau(w), с'");
  gnuplot_cmd(hplot, "unset yrange");
  gnuplot_cmd(hplot, "plot 'dat/butter_ap_test_tau.txt' with lines");
  
  gnuplot_cmd(hplot, "unset logscale x");
  gnuplot_cmd(hplot, "set ylabel 'h(t)'");
  gnuplot_cmd(hplot, "set xlabel 't, s'");
  gnuplot_cmd(hplot, "set xrange [0:5]");
  gnuplot_cmd(hplot, "plot 'dat/butter_ap_test_time.txt' with lines");
  
  gnuplot_cmd(hplot, "unset multiplot");
  gnuplot_close(hplot); 
  
  fft_free(&pfft);
  dspl_free(handle);    /* free dspl handle */

  return 0;
}



Список литературы
[1] Лэм Г. Аналоговые и цифровые фильтры. Москва, Мир, 1982, 592 с.

[2] Orfanidis S.J. Lecture notes on elliptic filter design. Rutgers University, 2006. [PDF]

[3] Orfanidis S.J. Introduction to Signal Processing. Rutgers University, 2010. [PDF]

[4] Оппенгейм А., Шаффер Р. Цифровая обработка сигналов. Москва, Техносфера, 2012. 1048 с. ISBN 978-5-94836-329-5

[5] Сергиенко А.Б. Цифровая обработка сигналов СПб, Питер, 2002.

Последнее изменение страницы: 20.01.2024 (19:22:25)
Страница создана Latex to HTML translator ver. 5.20.11.14