На главную     ↑ Выше

Расчёт рекурсивных цифровых фильтров.

Каскадная реализация.

Заказать расчет                 

 

Здесь мы рассматриваем класс рекурсивных фильтров или по-другому фильтров с бесконечной импульсной характеристикой (БИХ). Существует множество вариантов реализации рекурсивных фильтров. Самая очевидная – это прямая форма реализации, расчёт которой изложен на странице «Расчёт рекурсивных цифровых фильтров. Прямая реализация». Однако, она не самая простая с точки зрения расчётов. В этом смысле наиболее простая форма реализации рекурсивных фильтров – каскадная форма реализации, на рассмотрении которой мы здесь остановимся. При этом мы будем использовать подход, который заключается в переходе от аналогового фильтра прототипа к цифровому.

Из теории известно, что аналоговый фильтр, обобщённая передаточная характеристика которого описывается рациональной функцией следующего вида:

 

 

 

где A и B- вещественные коэффициенты,  – комплексная круговая частота,  – круговая частота, f – реальная частота (которая в Герцах), n – порядок фильтра,

 

можно представить в виде произведения звеньев второго порядка:

 

 

Аналогично цифровой фильтр с обобщённой передаточной характеристикой вида:

 

 

где a и b также вещественный коэффициенты,  z-k=e-ikf/fsfs-частота дискретизации,

 

можно представить в виде произведения звеньев второго порядка:

 

 

Каждому звену второго порядка соответствует структурная схема вида:

 

 

Следовательно, из данных звеньев можно реализовать фильтр любого порядка. Причем, если порядок фильтра n – четный, то звеньев будет n/2. Если n - нечетный, например n=5, то все равно будет три звена, одно из которых, будет соответствовать аналоговому звену 1-го порядка.

T – элемент задержки на один период дискретизации. При реализации на вычислительных устройствах работа одного звена фильтра реализуется следующим выражением:

 

y = a0*x+a1*x1+a2*x2  - b1*y1- b2*y2

 

Здесь a0 соответствует a0 и т.д. Обозначение x1 соответствует задержки x на 1 период дискретизации, x2 - на 2 периода  и т.д. Для y1,y2… аналогично. Звёздочка * означает умножение.

 

Переходим к расчету цифрового фильтра. Один из распространённых подходов проектирования цифровых фильтров (ЦФ) заключается в пересчёте коэффициентов передаточной функции аналогового фильтра-прототипа (АФ) в коэффициенты цифрового фильтра. Один из методов - метод билинейного преобразования. Он позволяет получить амплитудно-частотную характеристику (АЧХ) ЦФ, максимально близкую к АЧХ АФ-прототипа. Проектированию аналоговых фильтров посвящено много специальной литературы, поэтому данную тему мы пропускаем. Мы спроектируем  цифровой фильтр нижних частот (ФНЧ) 5-го порядка и приведём программу расчета конкретного фильтра, которую можно обобщить на фильтры любого типа (Баттерворта, Чебышева, Бесселя и др.) и произвольного порядка.

 

Примем в качестве прототипа  конкретный аналоговый фильтр 5-го порядка на частоту среза 3.4 кГц [2].  Схема аналогового ФНЧ-3.4:

 

 

 

 

https://xn--80atbdbsooh2gqb.xn--80aehb1bzc.xn--p1ai/activ-filters/LPF-OU-5order/LPF-OU-5order.files/image001.gif

 

Однако нас больше интересует его передаточная характеристика, которая в наших обозначениях имеет следующий вид:

 

 

 

 

 

 

Задача расчёта цифрового фильтра заключается в следующих переходах:

 

s à z,       Ak à ak,     Bk à bk   для каждого звена

 

Основная формула билинейного преобразования s à z, выглядит следующим образом [1]:

 

fs=1/T – частота дискретизации.

 

Из теории известно, что yмножение в частотной области на z-1 эквивалентно задержки отсчёта на время T во временной области, откуда становиться понятным взаимосвязь приведенных выше выражений для H(z) и y.

 

Значение коэффициента c непосредственно в билинейной формуле равно c=2/T=2fs.

Однако при этом АЧХ ЦФ и АЧХ АФ заметно «разбегаются» с увеличением частоты. Поэтому с целью коррекции стали применять его в следующих вариантах [3]:

 

 – для фильтра с нормированной H(s) (2πfc=1), и

 

 – для фильтра, у которого H(s) денормирована под заданную частоту среза (как в нашем случае).

 

Мы определились с заменой s à z. Теперь переходим к преобразованию коэффициентов:

 

Ak à ak,     Bk à bk

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Программа пересчёта, которая выполнима на калькуляторе КАН, приведена в Приложении.

Полученный график АЧХ фильтра показан ниже

 

 

Видим, что АЧХ соответствует ожидаемой.

Для того чтобы пересчитать фильтр на другую частоту fс1, необходимо fc умножить на коэффициент fс1/3400. При этом частота дискретизации fs должна быть в несколько раз выше частоты среза.

 

Mathcad-программа расчета данного фильтра доступна здесь. Программу нетрудно модифицировать для фильтра любого порядка.

Литература и ссылки

 

1.    Билинейное преобразование.

2.     О.В.Кустов, В.З.Лундин. Операционные усилители в линейных цепях. Москва «Связь» 1978.

3.    Phuoc Si Nguyen. Bilinear z-transformation and Pascal’s triangle.

 

Приложение.

 

;расчет цифрового рекурсивного фильтра нижних частот
;каскадная реализация на звеньях 2-го порядка
fc = 3400 
; частота среза
fs = 30000 
; частота дискретизации цифрового фильтра
c = 2*pi*fc*ctg(pi*fc/fs) 
; коэффициент частотной коррекции
;коэффициенты аналогового фильтра
;первое звено
A10 = 3.15E8
A11 = 0
A12 = 0.182
B10 = 3.15E8
B11 = 1.14E4
B12 = 1
;второе звено
A20 = 4.85E8
A21 = 0
A22 = 0.589
B20 = 4.85E8
B21 = 3.45E3
B22 = 1
;третье звено
A30 = 1.17E4
A31 = 0
A32 = 0
B30 = 1.17E4
B31 = 1
B32 = 0
;---------- расчет коэффициентов цифрового фильтра -------------------
;первое звено
B = B10 + c*B11 + c^2*B12
a10 = (A10 + c*A11 + c^2*A12)/B = 0.21444
a11 = 2*(A10 - c^2*A12)/B = -0.13376
a12 = (A10 - c*A11 + c^2*A12)/B = 0.21444
b10 = (B10 + c*B11 + c^2*B12)/B = 1
b11 = 2*(B10 - c^2*B12)/B = -1.39813
b12 = (B10 - c*B11 + c^2*B12)/B = 0.69325
;второе звено
B = B20 + c*B21 + c^2*B22
a20 = (A20 + c*A21 + c^2*A22)/B = 0.60974
a21 = 2*(A20 - c^2*A22)/B = -0.7324
a22 = (A20 - c*A21 + c^2*A22)/B = 0.60974
b20 = (B20 + c*B21 + c^2*B22)/B = 1
b21 = 2*(B20 - c^2*B22)/B = -1.4134
b22 = (B20 - c*B21 + c^2*B22)/B = 0.90048
;второе звено
B = B30 + c*B31 + c^2*B32
a30 = (A30 + c*A31 + c^2*A32)/B = 0.16921
a31 = 2*(A30 - c^2*A32)/B = 0.33843
a32 = (A30 - c*A31 + c^2*A32)/B = 0.16921
b30 = (B30 + c*B31 + c^2*B32)/B = 1
b31 = 2*(B30 - c^2*B32)/B = 0.33843
b32 = (B30 - c*B31 + c^2*B32)/B = -0.66157
;вычисляем амплитудно-частотную характеристику цифрового фильтра
[f=10:5000,10 
; задаем пределы и шаг частоты
      z1 = exp(-!2*pi*f/fs) 
; z в минус 1-ой степени
      H1 = (a10 + a11*z1 + a12*z1^2)/(b10 + b11*z1 + b12*z1^2) 
; первое звено
      H2 = (a20 + a21*z1 + a22*z1^2)/(b20 + b21*z1 + b22*z1^2) 
; второе звено
      H3 = (a30 + a31*z1 + a32*z1^2)/(b30 + b31*z1 + b32*z1^2) 
; третье звено
      H = H1*H2*H3 
; перемножаем
      H_dB = 20*lg(modC(H)) 
; берём модуль комплексного числа и переводим в дБ
      val (f,H_dB)
; вывод в таблицу и на график
]
noTab 
; запрет вывода таблицы
grafX(0,5000) 
; пределы по оси X
grafY(-45,5) 
; пределы по оси Y




  Обратная связь: 
alexander.nekhaev53@gmail.com
  Поддержать проект   Заказать расчет