Документация Engee

rffilter

Страница в процессе разработки.

Создает РЧ фильтры Баттерворта, Чебышева и обратный фильтр Чебышева.

Библиотека

EngeeRF

Описание

Используйте функцию 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".

Типы данных

String

# ResponseType — тип характеристики фильтра
"Lowpass" (по умолчанию) | "Highpass" | "Bandpass" | "Bandstop"

Details

Тип характеристики фильтра, заданный как "Lowpass", "Highpass", "Bandpass" или "Bandstop". Дополнительную информацию см. в разделе Частотные характеристики.

Типы данных

String

# Implementation — реализация фильтра
"LC Tee" (по умолчанию) | "LC Pi" | "Transfer function"

Details

Реализация фильтра, заданная как "LC Tee", "LC Pi" или "Transfer function".

Зависимости

Для фильтра типа "InverseChebyshev" можно использовать только реализацию "Transfer function".

Типы данных

String

# FilterOrder — порядок фильтра
3 (по умолчанию) | скаляр

Details

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

Свойство FilterOrder имеет наивысший приоритет среди всех пар аргументов типа «имя-значение» в конструкции фильтра. Использование этого свойства устанавливает для свойства UseFilterOrder, доступного только для чтения, значение true.
Типы данных

Int64

# PassbandFrequency — частота полосы пропускания
скаляр | вектор

Details

Частота полосы пропускания, заданная следующим образом:

  • Скаляр в Гц для фильтров нижних и верхних частот.

  • Двухэлементный вектор в Гц для полосовых или режекторных фильтров.

По умолчанию значения равны 1e9 для фильтра нижних частот, 2e9 для фильтра верхних частот, [2e9 3e9] для полосового фильтра и [1e9 4e9] для режекторного фильтра.

Типы данных

Float64

# StopbandFrequency — частота полосы задерживания
скаляр | вектор

Details

Частота полосы задерживания, заданная следующим образом:

  • Скаляр в Гц для фильтров нижних и верхних частот.

  • Двухэлементный вектор в Гц для полосовых или режекторных фильтров.

По умолчанию значения равны 2e9 для фильтра нижних частот, 1e9 для фильтра верхних частот, [1.5e9 3.5e9] для полосовых фильтров и [2.1e9 2.9e9] для режекторных фильтров.

Типы данных

Float64

# PassbandAttenuation — затухание в полосе пропускания
10*log10(2) (по умолчанию) | скаляр

Details

Затухание в полосе пропускания, заданное как скаляр в дБ. Для полосовых фильтров это значение применяется одинаково к обоим краям полосы пропускания.

Типы данных

Float64

# StopbandAttenuation — затухание в полосе задерживания
40 (по умолчанию) | скаляр

Details

Затухание в полосе задерживания, заданное как скаляр в дБ. Для режекторных фильтров это значение применяется одинаково к обоим краям полосы задерживания.

Типы данных

Float64

# Zin — импеданс источника
50 (по умолчанию) | скаляр

Details

Импеданс источника, заданный как положительная вещественная часть конечного скаляра в Ом.

Типы данных

Float64

# Zout — импеданс нагрузки
50 (по умолчанию) | скаляр

Details

Импеданс нагрузки, заданный как положительная вещественная часть конечного скаляра в Ом.

Типы данных

Float64

# Name — название объекта РЧ фильтра
"Filter" (по умолчанию) | строка

Details

Название объекта РЧ фильтра, заданное как строка. Два элемента в одной схеме не могут иметь одинаковые имена.

Типы данных

String

# NumPorts — количество портов
2 (по умолчанию) | скаляр

Details

Количество портов, заданное как положительный скаляр.

Этот аргумент доступен только для чтения.
Типы данных

Int64

# Terminals — имена клемм
("p1+", "p2+", "p1−", "p2−") (по умолчанию) | кортеж строк

Details

Имена клемм, заданные как кортеж строк из 4 элементов.

Этот аргумент доступен только для чтения.

# DesignData — данные о конструкции фильтра
структура

Details

Данные о конструкции фильтра, заданные как структура.

Этот аргумент доступен только для чтения.
Типы данных

struct

# UseFilterOrder — использование порядка фильтра при проектировании
true (по умолчанию) | false

Details

Использование порядка фильтра при проектировании, заданное как true или false.

Этот аргумент доступен только для чтения.
Типы данных

Bool

Выходные аргументы

# 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"

"Butterworth"

Порядок, , Вспомогательные параметры (многочлен числителя 21)

Порядок, , Вспомогательные параметры (многочлен числителя 21, Wx)

Порядок, , Вспомогательные параметры (Wx)

"Chebyshev"

Порядок, , Вспомогательные параметры (многочлен числителя 21)

Порядок, , Вспомогательные параметры (четвертая степень числителя 21, Wx)

"InverseChebyshev"

Порядок, , Вспомогательные параметры (Wx)

Порядок,

Частотные характеристики

Details
Значение аргумента FilterType Частотная характеристика Обозначения

"Lowpass"

filter ce 1 ru

— частота полосы пропускания

— частота полосы задерживания

— затухание в полосе пропускания @

— затухание в полосе задерживания @

"Highpass"

filter ce 2 ru

"Bandpass"

filter ce 3 ru

— частоты полосы пропускания

— частоты полосы задерживания

— затухание в полосе пропускания на заданных частотах полосы пропускания

— затухание в полосе задерживания на заданных частотах полосы задерживания

"Bandstop"

filter ce 4 ru

filter ce 5 ru

filter ce 6 rufilter ce 7 ru

Параметры для определения фильтра и советы по проектированию

Details

В таблице представлены все параметры, необходимые для правильного проектирования каждого фильтра.

"Lowpass" "Highpass" "Bandpass" "Bandstop"

"Butterworth"

Порядок, ,

Порядок, ,

Порядок, ,

Порядок, ,

, , ,

, , ,

, , ,

, , ,

"Chebyshev"

Порядок, ,

Порядок, ,

Порядок, ,

Порядок, , ,

, , ,

, , ,

, , ,

, , ,

"InverseChebyshev"

Порядок, , ,

Порядок, , ,

Порядок, , ,

Порядок, ,

, , ,

, , ,

, , ,

, , ,

Порядок, ,

Порядок, ,

Порядок, ,

В данной таблице приняты следующие обозначения:

  • — частота полосы пропускания;

  • — затухание в полосе пропускания / неравномерность в полосе пропускания;

  • — частота полосы задерживания;

  • — затухание в полосе задерживания / неравномерность в полосе задерживания.

Неравномерность (пульсация) в полосе пропускания или задерживания анализируется как затухание в полосе пропускания или задерживания соответственно.

Литература

  1. Michael G. Ellis, SR., Electronic Filter Analysis and Synthesis, Norwood, MA: Artech House, 1994.