rffilter
|
Страница в процессе разработки. |
Создает РЧ фильтры Баттерворта, Чебышева и обратный фильтр Чебышева.
| Библиотека |
|
Описание
Используйте функцию rffilter для создания РЧ фильтра Баттерворта, Чебышева или обратного фильтра Чебышева. РЧ фильтр представляет собой двухпортовый объект схемы, который можно включить в качестве элемента схемы. Для получения дополнительной информации о проектировании см. раздел Параметры для определения фильтра и советы по проектированию.
Можно также преобразовать объект rffilter в лестничный LC-фильтр с помощью функции lcladder.
Синтаксис
Вызов функции
-
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
Дополнительно
Данные проектирования для топологий 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" |
|
|---|---|---|---|---|
|
Порядок, , |
Порядок, , |
Порядок, , |
Порядок, , |
, , , |
, , , |
, , , |
, , , |
|
|
Порядок, , |
Порядок, , |
Порядок, , |
Порядок, , , |
, , , |
, , , |
, , , |
, , , |
|
|
Порядок, , , |
Порядок, , , |
Порядок, , , |
Порядок, , |
, , , |
, , , |
, , , |
, , , |
|
Порядок, , |
Порядок, , |
Порядок, , |
В данной таблице приняты следующие обозначения:
-
— частота полосы пропускания;
-
— затухание в полосе пропускания / неравномерность в полосе пропускания;
-
— частота полосы задерживания;
-
— затухание в полосе задерживания / неравномерность в полосе задерживания.
| Неравномерность (пульсация) в полосе пропускания или задерживания анализируется как затухание в полосе пропускания или задерживания соответственно. |