rffilter
Создает РЧ фильтры Баттерворта, Чебышева и обратный фильтр Чебышева.
| Библиотека |
|
Описание
Используйте функцию rffilter для создания РЧ фильтра Баттерворта, Чебышева или обратного фильтра Чебышева. РЧ фильтр представляет собой двухпортовый объект схемы, который можно включить в качестве элемента схемы. Для получения дополнительной информации о проектировании см. раздел Параметры для определения фильтра и советы по проектированию.
Синтаксис
Вызов функции
-
rffiltobj = rffilter()— создает двухпортовый фильтр, свойства которого заданы по умолчанию.
-
rffiltobj = rffilter(Name=Value)— устанавливает свойства, заданные одним или несколькими аргументами типа «имя-значение». Неуказанные свойства сохраняют свои значения по умолчанию.
Аргументы
Входные аргументы «имя-значение»
Укажите необязательные пары аргументов в виде Name=Value, где Name — имя аргумента, а Value — соответствующее значение.
Пример: rffiltobj = rffilter(FilterType = "Chebyshev") создает двухпортовый РЧ фильтр Чебышева. Можно указать несколько пар «имя-значение».
#
FilterType —
тип фильтра
"Butterworth" (по умолчанию) | "Chebyshev" | "InverseChebyshev"
Details
Тип фильтра, заданный как "Butterworth", "Chebyshev" или "InverseChebyshev".
| Типы данных |
|
#
ResponseType —
тип характеристики фильтра
"Lowpass" (по умолчанию) | "Highpass" | "Bandpass" | "Bandstop"
Details
Тип характеристики фильтра, заданный как "Lowpass", "Highpass", "Bandpass" или "Bandstop". Дополнительную информацию см. в разделе Частотные характеристики.
| Типы данных |
|
#
Implementation —
реализация фильтра
"LC Tee" (по умолчанию) | "LC Pi" | "Transfer function"
Details
Реализация фильтра, заданная как "LC Tee", "LC Pi" или "Transfer function".
Зависимости
Для фильтра типа "InverseChebyshev" можно использовать только реализацию "Transfer function".
| Типы данных |
|
#
FilterOrder —
порядок фильтра
3 (по умолчанию) | скаляр
Details
Порядок фильтра, заданный как вещественный конечный неотрицательный целочисленный скаляр. В фильтре нижних или верхних частот порядок определяет количество сосредоточенных реактивных элементов. В полосовом или режекторном фильтре количество сосредоточенных реактивных элементов вдвое больше значения порядка.
Свойство FilterOrder имеет наивысший приоритет среди всех пар аргументов типа «имя-значение» в конструкции фильтра. Использование этого свойства устанавливает для свойства UseFilterOrder, доступного только для чтения, значение true.
|
| Типы данных |
|
#
PassbandFrequency —
частота полосы пропускания
скаляр | вектор
Details
Частота полосы пропускания, заданная следующим образом:
-
Скаляр в Гц для фильтров нижних и верхних частот.
-
Двухэлементный вектор в Гц для полосовых или режекторных фильтров.
По умолчанию значения равны 1e9 для фильтра нижних частот, 2e9 для фильтра верхних частот, [2e9 3e9] для полосового фильтра и [1e9 4e9] для режекторного фильтра.
| Типы данных |
|
#
StopbandFrequency —
частота полосы задерживания
скаляр | вектор
Details
Частота полосы задерживания, заданная следующим образом:
-
Скаляр в Гц для фильтров нижних и верхних частот.
-
Двухэлементный вектор в Гц для полосовых или режекторных фильтров.
По умолчанию значения равны 2e9 для фильтра нижних частот, 1e9 для фильтра верхних частот, [1.5e9 3.5e9] для полосовых фильтров и [2.1e9 2.9e9] для режекторных фильтров.
| Типы данных |
|
#
PassbandAttenuation —
затухание в полосе пропускания
10*log10(2) (по умолчанию) | скаляр
Details
Затухание в полосе пропускания, заданное как скаляр в дБ. Для полосовых фильтров это значение применяется одинаково к обоим краям полосы пропускания.
| Типы данных |
|
#
StopbandAttenuation —
затухание в полосе задерживания
40 (по умолчанию) | скаляр
Details
Затухание в полосе задерживания, заданное как скаляр в дБ. Для режекторных фильтров это значение применяется одинаково к обоим краям полосы задерживания.
| Типы данных |
|
#
Zin —
импеданс источника
50 (по умолчанию) | скаляр
Details
Импеданс источника, заданный как положительная вещественная часть конечного скаляра в Ом.
| Типы данных |
|
#
Zout —
импеданс нагрузки
50 (по умолчанию) | скаляр
Details
Импеданс нагрузки, заданный как положительная вещественная часть конечного скаляра в Ом.
| Типы данных |
|
#
Name —
название объекта РЧ фильтра
"Filter" (по умолчанию) | строка
Details
Название объекта РЧ фильтра, заданное как строка. Два элемента в одной схеме не могут иметь одинаковые имена.
| Типы данных |
|
#
NumPorts —
количество портов
2 (по умолчанию) | скаляр
Details
Количество портов, заданное как положительный скаляр.
| Этот аргумент доступен только для чтения. |
| Типы данных |
|
#
Terminals —
имена клемм
("p1+", "p2+", "p1−", "p2−") (по умолчанию) | кортеж строк
Details
Имена клемм, заданные как кортеж строк из 4 элементов.
| Этот аргумент доступен только для чтения. |
#
DesignData —
данные о конструкции фильтра
структура
Details
Данные о конструкции фильтра, заданные как структура.
| Этот аргумент доступен только для чтения. |
Для получения дополнительной информации см. разделы Данные проектирования для топологий LC Tee и LC Pi и Данные проектирования для реализации передаточной функции.
| Типы данных |
|
#
UseFilterOrder —
использование порядка фильтра при проектировании
true (по умолчанию) | false
Details
Использование порядка фильтра при проектировании, заданное как true или false.
| Этот аргумент доступен только для чтения. |
| Типы данных |
|
Выходные аргументы
#
rffiltobj —
объект двухпортового фильтра
объект
Details
Объект двухпортового фильтра, содержащий следующие свойства:
-
FilterType— тип фильтра, например"Butterworth"; -
ResponseType— характеристика фильтра, например"Lowpass"; -
Zin— импеданс источника; -
Zout— импеданс нагрузки; -
FilterOrder— порядок фильтра; -
PassbandFrequency— частота полосы пропускания; -
StopbandFrequency— частота полосы задерживания; -
StopbandAttenuation— затухание в полосе задерживания; -
PassbandAttenuation— затухание в полосе пропускания; -
Implementation— реализация фильтра, например"LC Tee"; -
UseFilterOrder— флаг использования порядка фильтра при проектировании; -
DesignData— данные о конструкции фильтра:-
FilterType; -
ResponseType; -
Topology; -
FilterOrder; -
PassbandFrequency; -
StopbandFrequency; -
PassbandAttenuation; -
StopbandAttenuation; -
Inductors; -
Capacitors; -
Zeros21; -
Poles; -
AuxNum; -
Numerator11; -
Numerator21; -
Numerator22; -
Denominator; -
Auxiliary;
-
-
Name— название фильтра, например"Filter"; -
Ports— имена портов в виде кортежа строк; -
Terminals— имена клемм в виде кортежа строк; -
ParentNodes— узлы родительской схемы в виде массива целых чисел, отображаемые только после добавления дочерней схемы к родительской схеме; -
ParentPath— полный путь к родительской схеме в виде строки, отображаемый только после добавления дочерней схемы к родительской схеме; -
NumPorts— количество портов.
Примеры
РЧ фильтр по умолчанию
Details
Создадим и просмотрим свойства объекта радиочастотного фильтра по умолчанию.
using EngeeRF
rfobj = rffilter()
println("FilterType: ", rfobj.FilterType,
"\nResponseType: ", rfobj.ResponseType,
"\nZin: ", rfobj.Zin,
"\nZout: ", rfobj.Zout,
"\nFilterOrder: ", rfobj.FilterOrder,
"\nPassbandFrequency: ", rfobj.PassbandFrequency,
"\nPassbandAttenuation: ", rfobj.PassbandAttenuation,
"\nImplementation: ", rfobj.Implementation,
"\nUseFilterOrder: ", rfobj.UseFilterOrder,
"\nDesignData: ", rfobj.DesignData,
"\nName: ", rfobj.Name,
"\nTerminals: ", rfobj.Terminals,
"\nNumPorts: ", rfobj.NumPorts)
FilterType: Butterworth
ResponseType: Lowpass
Zin: 50.0 + 0.0im
Zout: 50.0 + 0.0im
FilterOrder: 3
PassbandFrequency: 1.0e9
PassbandAttenuation: 3.010299956639812
Implementation: LC Tee
UseFilterOrder: true
DesignData: EngeeRF.RFFilterDesignData("Butterworth", "Lowpass", "lowpasstee", 3, 1.0e9, nothing, 3.010299956639812, nothing, [7.957747154594765e-9, 7.957747154594765e-9], [6.3661977236758135e-12], nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing)
Name: Filter
Terminals: ("p1+", "p2+", "p1-", "p2-")
NumPorts: 2
Рассмотрим значения некоторых из свойств аргумента DesignData.
println("FilterType: ", rfobj.DesignData.FilterType,
"\nResponseType: ", rfobj.DesignData.ResponseType,
"\nTopology: ", rfobj.DesignData.Topology,
"\nFilterOrder: ", rfobj.DesignData.FilterOrder,
"\nPassbandFrequency: ", rfobj.DesignData.PassbandFrequency,
"\nPassbandAttenuation: ", rfobj.DesignData.PassbandAttenuation,
"\nInductors: ", rfobj.DesignData.Inductors,
"\nCapacitors: ", rfobj.DesignData.Capacitors)
FilterType: Butterworth
ResponseType: Lowpass
Topology: lowpasstee
FilterOrder: 3
PassbandFrequency: 1.0e9
PassbandAttenuation: 3.010299956639812
Inductors: [7.957747154594765e-9, 7.957747154594765e-9]
Capacitors: [6.3661977236758135e-12]
S-параметры полосового фильтра Баттерворта (тип реализации LC Tee)
Details
Создадим объект полосового фильтра Баттерворта с именем BFCG_162W с частотами полосы пропускания от 950 до 2200 МГц, полосы задерживания от 770 до 3000 МГц, затуханием в полосе пропускания 3.0 дБ и затуханием в полосе задерживания 40 дБ, используя тип реализации "LC Tee". Рассчитаем S-параметры фильтра на частоте 2.1 ГГц.
using EngeeRF
rfobj = rffilter(ResponseType = "Bandpass", Implementation = "LC Tee",
PassbandFrequency = [950e6, 2200e6],
StopbandFrequency = [770e6, 3000e6],
PassbandAttenuation = 3, StopbandAttenuation = 40)
rfobj.Name = "BFCG_162W"
println("FilterType: ", rfobj.FilterType,
"\nResponseType: ", rfobj.ResponseType,
"\nImplementation: ", rfobj.Implementation,
"\nPassbandFrequency: ", rfobj.PassbandFrequency,
"\nStopbandFrequency: ", rfobj.StopbandFrequency,
"\nPassbandAttenuation: ", rfobj.PassbandAttenuation,
"\nStopbandAttenuation: ", rfobj.StopbandAttenuation,
"\nZin: ", rfobj.Zin,
"\nZout: ", rfobj.Zout,
"\nFilterOrder: ", rfobj.FilterOrder,
"\nUseFilterOrder: ", rfobj.UseFilterOrder,
"\nDesignData: ", rfobj.DesignData,
"\nName: ", rfobj.Name)
FilterType: Butterworth
ResponseType: Bandpass
Implementation: LC Tee
PassbandFrequency: [9.5e8, 2.2e9]
StopbandFrequency: [7.7e8, 3.0e9]
PassbandAttenuation: 3.0
StopbandAttenuation: 40.0
Zin: 50.0 + 0.0im
Zout: 50.0 + 0.0im
FilterOrder: 3
UseFilterOrder: true
DesignData: EngeeRF.RFFilterDesignData("Butterworth", "Bandpass", "bandpasstee", 3, [9.5e8, 2.2e9], [7.7e8, 3.0e9], 3.0, 40.0, [6.366197723675813e-9, 2.3797090773309714e-9, 6.366197723675813e-9], [1.903767261864777e-12, 5.0929581789406516e-12, 1.903767261864777e-12], nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing)
Name: BFCG_162W
Рассчитаем S-параметры на частоте 2.1 ГГц.
s = sparameters(rfobj, [2.1e9])
println("Impedance: ", s.Impedance,
"\nNumPorts: ", s.NumPorts,
"\nFrequencies: ", s.Frequencies,
"\nParameters: ", s.Parameters)
Impedance: 50.0
NumPorts: 2
Frequencies: [2.1e9]
Parameters: ComplexF64[-0.5036556283329914 + 0.26286600429645146im -0.3807662021320426 - 0.7295543647649324im; -0.38076620213204276 - 0.7295543647649329im -0.5036556283330005 + 0.2628660042964558im;;;]
Создадим объект lcladder на основе объекта rffilter. Этот объект lcladder можно использовать непосредственно в схеме, а также для параметрического анализа значений индуктивности и емкости.
l = lcladder(rfobj)
println("Name: ", l.Name,
"\nTopology: ", l.Topology,
"\nInductances: ", l.Inductances,
"\nCapacitances: ", l.Capacitances)
Name: BFCG_162W
Topology: bandpasstee
Inductances: Union{Nothing, Float64}[6.366197723675813e-9, 2.3797090773309714e-9, 6.366197723675813e-9]
Capacitances: Union{Nothing, Float64}[1.903767261864777e-12, 5.0929581789406516e-12, 1.903767261864777e-12]
В качестве альтернативы, для прямого доступа к индукторам и конденсаторам из объекта фильтра используйте:
L = rfobj.DesignData.Inductors
C = rfobj.DesignData.Capacitors
Групповая задержка фильтра Чебышева нижних частот
Details
Создадим фильтр Чебышева нижних частот с полосой пропускания 2 ГГц. Установим порядок фильтра равным 5, а реализацию — "LC Pi".
using EngeeRF
rfobj = rffilter(FilterType = "Chebyshev", PassbandFrequency = 2e9,
FilterOrder = 5, Implementation = "LC Pi")
Рассчитаем групповую задержку фильтра на частоте 1.9 ГГц.
freqs = [1.9e9, 1.9e9 + 1e3]
groupdelay(rfobj, freqs)
2-element Vector{Float64}:
1.4402890343137618e-9
1.4402890343137618e-9
Проектирование фильтра Баттерворта и определение порядка фильтра
Details
Спроектируем низкочастотный фильтр Баттерворта с частотой полосы пропускания 3 кГц, частотой полосы задерживания 7 кГц, затуханием в полосе пропускания 2 дБ и затуханием в полосе задерживания 60 дБ. Отобразим порядок данного фильтра и определим частоту полосы пропускания 3.0103 дБ.
Параметры фильтра
Fp = 3e3 # Частота полосы пропускания, Гц
Ap = 2 # Затухание в полосе пропускания, дБ
Fs = 7e3 # Частота полосы задерживания, Гц
As = 60 # Затухание в полосе задерживания, дБ
Проектирование фильтра
using EngeeRF
r = rffilter(FilterType = "Butterworth", ResponseType = "Lowpass",
Implementation = "Transfer function",
PassbandFrequency = Fp, PassbandAttenuation = Ap,
StopbandFrequency = Fs, StopbandAttenuation = As)
Порядок спроектированного фильтра
N = r.DesignData.FilterOrder
println("Calculated filter order is $N")
Calculated filter order is 9
Частота на уровне 3.0103 дБ
F_3dB = r.DesignData.PassbandFrequency / 1e3
println("Frequency at 3.0103 dB is $F_3dB kHz")
Frequency at 3.0103 dB is 3.0907326889546485 kHz
Визуализируем амплитудную характеристику.
frequencies = range(0, 2*Fs, length=1001)
sparams = sparameters(r, frequencies)
s21 = sparams.Parameters[2, 1, :]
s21_dB = 20 * log10.(abs.(s21))
p = plot(frequencies ./ 1e3, s21_dB,
xlabel="Frequency (kHz)",
ylabel="Magnitude (dB)",
title="s21 vs. Frequency", legend = false)
Проектирование фильтра Чебышева и определение порядка фильтра
Details
Спроектируем низкочастотный фильтр Чебышева с полосовой пульсацией 0.1 дБ, частотой среза 1 рад/с и затуханием 50 дБ на частоте 1.1 рад/с. Отобразим порядок данного фильтра [1].
Параметры фильтра
Fp = 1 / (2π) # Частота полосы пропускания, Гц
Rp = 0.1 # Пульсации в полосе пропускания, дБ
Fs = 1.1 / (2π) # Частота полосы задерживания, Гц
As = 50 # Затухание в полосе задерживания, дБ
Проектирование фильтра
using EngeeRF
r = rffilter(FilterType = "Chebyshev", ResponseType = "Lowpass",
Implementation = "Transfer function",
PassbandFrequency = Fp, PassbandAttenuation = Rp,
StopbandFrequency = Fs, StopbandAttenuation = As)
Порядок спроектированного фильтра
N = r.DesignData.FilterOrder
println("Calculated filter order is $N")
Calculated filter order is 19
Частотная характеристика фильтра Чебышева четного порядка
Details
Спроектируем фильтр Чебышева четного порядка и построим график его частотной характеристики.
Частотная характеристика фильтра Чебышева четного порядка с использованием реализации передаточной функции
Спроектируем фильтр Чебышева четного порядка с заданными параметрами.
Fp = 3e9 # Частота полосы пропускания, Гц
Ap = 10 # Затухание в полосе пропускания, дБ
Fs = 7e9 # Частота полосы задерживания, Гц
As = 50 # Затухание в полосе задерживания, дБ
using EngeeRF
r = rffilter(FilterType = "Chebyshev", ResponseType = "Lowpass",
Implementation = "Transfer function",
PassbandFrequency = Fp, PassbandAttenuation = Ap,
StopbandFrequency = Fs, StopbandAttenuation = As)
Построим график частотной характеристики фильтра Чебышева четного порядка.
frequencies = range(0, 7.5e9, length=1001)
sparams = sparameters(r, frequencies)
s21 = sparams.Parameters[2, 1, :]
s21_dB = 20 * log10.(abs.(s21))
p = plot(frequencies ./ 1e9, s21_dB,
xlabel="Frequency (GHz)",
ylabel="Magnitude (dB)",
title="s21 vs. Frequency", legend = false)
Визуализируем затухание в полосе задерживания и полосе пропускания.
plot!(p, [0, 7.5], [-r.PassbandAttenuation, -r.PassbandAttenuation],
linestyle=:dash,
label="Passband Attenuation")
plot!(p, [0, 7.5], [-r.StopbandAttenuation, -r.StopbandAttenuation],
linestyle=:dash,
label="Stopband Attenuation")
Используем свойство DesignData для проверки порядка фильтра.
N = r.DesignData.FilterOrder
println("Calculated filter order is $N")
Calculated filter order is 4
Дополнительно
Данные проектирования для топологий LC Tee и LC Pi
Details
Для топологий LC Tee или Pi свойство DesignData возвращает значения индукторов и конденсаторов. Кроме того, DesignData включает другие параметры проектирования, относящиеся к типу характеристики:
-
Низкочастотная/высокочастотная характеристика: порядок фильтра, частота полосы пропускания, затухание в полосе пропускания.
-
Полосовая характеристика: порядок фильтра, частота полосы пропускания, затухание в полосе пропускания, вспомогательные параметры (Wx).
-
Характеристика полосы задерживания: порядок фильтра, частота полосы задерживания, затухание в полосе пропускания, вспомогательные параметры (Wx).
Для характеристики полосы задерживания Wx — это поправка для первой частоты, на которой прототип низкочастотного фильтра соответствует заданным потерям в полосе задерживания. Для полосовой характеристики Wx — это поправка спецификации затухания в полосе пропускания, не равной 3 дБ. Для получения дополнительной информации см. [1].
Данные проектирования для реализации передаточной функции
Details
Для реализации передаточной функции свойство DesignData возвращает коэффициенты полинома, разложенного на множители, для S-параметров. Эти множители группируют комплексно-сопряженные члены для сохранения точности. Все S-параметры имеют общий знаменатель, присутствующий в свойстве DesignData.Denominator. Члены числителя для S11, S22 и S21 (S21 = S12) можно вычислить, используя разложенный на множители полином, присутствующий в числителях DesignData.Numerator11, DesignData.Numerator22 и DesignData.Numerator21 соответственно.
Например, рассмотрим фильтр нижних частот по умолчанию на частоте 1 ГГц. Данные S21 на частоте 1 ГГц для этого фильтра можно найти следующим образом:
using EngeeRF
using Polynomials
r = rffilter(Implementation = "Transfer function")
f = 1e9
s = 1im * 2π * f
num21_1 = Polynomial(reverse(r.DesignData.Numerator21[1, :]))
num21_2 = Polynomial(reverse(r.DesignData.Numerator21[2, :]))
den1 = Polynomial(reverse(r.DesignData.Denominator[1, :]))
den2 = Polynomial(reverse(r.DesignData.Denominator[2, :]))
num21 = [num21_1(s), num21_2(s)]
den = [den1(s), den2(s)]
s21_1GHz = prod(num21 ./ den)
-0.5 - 0.5im
В качестве альтернативы, для расчета примера можно использовать функцию sparameters.
using EngeeRF
S = sparameters(r, [1e9])
S.Parameters[2, 1]
-0.49999999999999994 - 0.49999999999999994im
Кроме того, DesignData включает другие параметры проектирования, относящиеся к типу характеристики:
-
Низкочастотная/высокочастотная характеристика: порядок фильтра, частота полосы пропускания, вспомогательные параметры (многочлен числителя 21).
Для фильтра Баттерворта частота полосы пропускания находится на уровне 3дБ. -
Полосовая характеристика: порядок фильтра, частота полосы пропускания, вспомогательные параметры (Wx, многочлен числителя 21).
-
Характеристика полосы задерживания: порядок фильтра, частота полосы задерживания, вспомогательные параметры (Wx, многочлен числителя 21).
Для характеристики полосы задерживания Wx — это поправка для первой частоты, на которой прототип низкочастотного фильтра соответствует заданным потерям в полосе задерживания. Для полосовой характеристики Wx — это поправка спецификации затухания в полосе пропускания, не равной 3 дБ.
Некоторые дополнительные советы по проектированию:
"Lowpass" |
"Highpass" |
"Bandpass" |
"Bandstop" |
|
|---|---|---|---|---|
|
Порядок, , Вспомогательные параметры (многочлен числителя 21) |
Порядок, , Вспомогательные параметры (многочлен числителя 21, Wx) |
Порядок, , Вспомогательные параметры (Wx) |
|
|
Порядок, , Вспомогательные параметры (многочлен числителя 21) |
Порядок, , Вспомогательные параметры (четвертая степень числителя 21, Wx) |
||
|
Порядок, , Вспомогательные параметры (Wx) |
Порядок, |
||
Частотные характеристики
Details
Значение аргумента FilterType |
Частотная характеристика | Обозначения |
|---|---|---|
|
— частота полосы пропускания — частота полосы задерживания — затухание в полосе пропускания — затухание в полосе задерживания |
|
|
||
|
— частоты полосы пропускания — частоты полосы задерживания — затухание в полосе пропускания на заданных частотах полосы пропускания — затухание в полосе задерживания на заданных частотах полосы задерживания |
|
|
Параметры для определения фильтра и советы по проектированию
Details
В таблице представлены все параметры, необходимые для правильного проектирования каждого фильтра.
"Lowpass" |
"Highpass" |
"Bandpass" |
"Bandstop" |
|
|---|---|---|---|---|
|
Порядок, , |
Порядок, , |
Порядок, , |
Порядок, , |
, , , |
, , , |
, , , |
, , , |
|
|
Порядок, , |
Порядок, , |
Порядок, , |
Порядок, , , |
, , , |
, , , |
, , , |
, , , |
|
|
Порядок, , , |
Порядок, , , |
Порядок, , , |
Порядок, , |
, , , |
, , , |
, , , |
, , , |
|
Порядок, , |
Порядок, , |
Порядок, , |
В данной таблице приняты следующие обозначения:
-
— частота полосы пропускания;
-
— затухание в полосе пропускания / неравномерность в полосе пропускания;
-
— частота полосы задерживания;
-
— затухание в полосе задерживания / неравномерность в полосе задерживания.
| Неравномерность (пульсация) в полосе пропускания или задерживания анализируется как затухание в полосе пропускания или задерживания соответственно. |