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

rfbudget

Создает объект РЧ бюджета и выполняет анализ РЧ бюджета для цепочки из 2-х портовых элементов.

Библиотека

EngeeRF

Синтаксис

Вызов функции

  • rfobj = rfbudget() — создает объект РЧ бюджета, свойства которого заданы по умолчанию.

  • rfobj = rfbudget(Elements,InputFrequency,AvailableInputPower,SignalBandwidth) — создает объект РЧ бюджета, выполняя расчет в соответствии с заданными аргументами. По умолчанию, если любой из входных аргументов изменен, то объект пересчитывает результаты.

  • rfobj = rfbudget(___,AutoUpdate) — создает объект РЧ бюджета, используя аргумент AutoUpdate. Вы можете использовать этот синтаксис с любым из предыдущих синтаксисов.

  • rfobj = rfbudget(Name=Value) — устанавливает свойства, заданные одним или несколькими аргументами типа «имя-значение».

Аргументы

Входные аргументы «имя-значение»

Укажите пары аргументов в виде Name=Value, где Name — имя аргумента, а Value — соответствующее значение.

# Elements — элементы РЧ бюджета
EngeeRF.AbstractRF.AbstractObjectRF[] (по умолчанию) | РЧ объект | массив РЧ объектов

Details

Элементы РЧ бюджета, заданные как РЧ объект или массив РЧ объектов. Используйте массив объектов при выполнении анализа РЧ бюджета для цепочки РЧ элементов.

В таблице перечислены поддерживаемые РЧ объекты, которые можно использовать для проектирования РЧ цепочки.

Тип элемента РЧ объект

Линейный элемент

attenuator

rffilter

nport

seriesRLC

shuntRLC

phaseshift

txlineCPW

txlineMicrostrip

txlineStripline

txlineTwoWire

Нелинейный элемент

amplifier

modulator

mixerIMT

Пример: анализ РЧ бюджета для схемы из усилителя и модулятора:

using EngeeRF
a = amplifier()
m = modulator()
b = rfbudget(Elements=[a m])

# InputFrequency — частота входного сигнала, Гц
Float64[] (по умолчанию) | неотрицательный скаляр | неотрицательный вектор-столбец

Details

Частота входного сигнала в Гц, заданная как неотрицательный скаляр или вектор-столбец размера на , где представляет собой количество частот. Если входная частота является вектором, то функция rfbudget анализирует каждую входную частоту отдельно.

Типы данных

Float64

# AvailableInputPower — мощность, подаваемая на вход каскада, дБм
NaN (по умолчанию) | скаляр

Details

Мощность на входе каскада в дБм, заданная как скаляр.

Типы данных

Float64

# SignalBandwidth — полоса пропускания сигнала на входе каскада, Гц
NaN (по умолчанию) | скаляр

Details

Полоса пропускания сигнала на входе каскада в Гц, заданная как скаляр.

Типы данных

Float64

# AutoUpdate — опция автоматического пересчета РЧ бюджета
true (по умолчанию) | false

Details

Опция автоматического пересчета анализа РЧ бюджета с учетом изменений, внесенных в существующую схему, заданная как true или false.

Установка аргумента AutoUpdate в значение false отключает автоматический пересчет бюджета при изменении параметров.

# Solver — метод вычисления
"Friis" (по умолчанию)

Details

Метод вычисления.

# WaitBar — опция отображения индикатора выполнения
true (по умолчанию) | false

Details

Опция отображения индикатора выполнения с кнопкой отмены во время анализа гармонического баланса, заданная как true или false.

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

# rfobj — объект РЧ бюджета
объект

Details

Объект РЧ бюджета. Объект содержит следующие свойства:

  • Elements — функция устанавливает это свойство на основе аргумента Elements.

  • InputFrequency — функция устанавливает это свойство на основе аргумента InputFrequency.

  • AvailableInputPower — функция устанавливает это свойство на основе аргумента AvailableInputPower.

  • SignalBandwidth — функция устанавливает это свойство на основе аргумента SignalBandwidth.

  • AutoUpdate — функция устанавливает это свойство на основе аргумента AutoUpdate.

  • Solver — функция устанавливает это свойство на основе аргумента Solver.

  • WaitBar — функция устанавливает это свойство на основе аргумента WaitBar.

  • OutputFrequency — выходные частоты в Гц, возвращаемые в виде:

    • скаляра, когда и ;

    • вектора, когда или ;

    • матрицы, когда и ;

      представляет собой количество частот на входе, а — количество ступеней в каскаде.

  • OutputPower — выходная мощность в дБм, возвращаемая в виде:

    • скаляра, когда и ;

    • вектора, когда или ;

    • матрицы, когда и ;

      представляет собой количество частот на входе, а — количество ступеней в каскаде.

  • TransducerGain — коэффициент усиления мощности преобразователя в дБ, возвращаемый в виде:

    • скаляра, когда и ;

    • вектора, когда или ;

    • матрицы, когда и ;

      представляет собой количество частот на входе, а — количество ступеней в каскаде.

  • NF — коэффициенты шума в дБ, возвращаемые в виде:

    • скаляра, когда и ;

    • вектора, когда или ;

    • матрицы, когда и ;

      представляет собой количество частот на входе, а — количество ступеней в каскаде.

  • IIP3 — входная точка пересечения интермодуляционных искажений третьего порядка в дБм, возвращаемая в виде:

    • скаляра, когда и ;

    • вектора, когда или ;

    • матрицы, когда и ;

      представляет собой количество частот на входе, а — количество ступеней в каскаде.

  • OIP3 — выходная точка пересечения интермодуляционных искажений третьего порядка в дБм, возвращаемая в виде:

    • скаляра, когда и ;

    • вектора, когда или ;

    • матрицы, когда и ;

      представляет собой количество частот на входе, а — количество ступеней в каскаде.

  • SNR — отношение сигнал/шум в дБ, возвращаемое в виде:

    • скаляра, когда и ;

    • вектора, когда или ;

    • матрицы, когда и ;

      представляет собой количество частот на входе, а — количество ступеней в каскаде.

Примеры

Создание объекта РЧ бюджета

Details

Создадим объект данных со свойствами, заданными по умолчанию, используя функцию rfbudget и выведем его свойства.

using EngeeRF

b = rfbudget()

println("Elements: ", b.Elements,
        "\nInputFrequency: ", b.InputFrequency,
        "\nAvailableInputPower: ", b.AvailableInputPower,
        "\nSignalBandwidth: ", b.SignalBandwidth,
        "\nAutoUpdate: ", b.AutoUpdate,
        "\nOutputFrequency: ", b.OutputFrequency,
        "\nOutputPower: ", b.OutputPower,
        "\nTransducerGain: ", b.TransducerGain,
        "\nNF: ", b.NF,
        "\nIIP3: ", b.IIP3,
        "\nOIP3: ", b.OIP3,
        "\nSNR: ", b.SNR)
Elements: EngeeRF.AbstractRF.AbstractObjectRF[]
InputFrequency: Float64[]
AvailableInputPower: NaN
SignalBandwidth: NaN
AutoUpdate: true
OutputFrequency: Matrix{Float64}(undef, 0, 0)
OutputPower: Matrix{Float64}(undef, 0, 0)
TransducerGain: Matrix{Float64}(undef, 0, 0)
NF: Matrix{Float64}(undef, 0, 0)
IIP3: Matrix{Float64}(undef, 0, 0)
OIP3: Matrix{Float64}(undef, 0, 0)
SNR: Matrix{BigFloat}(undef, 0, 0)

Создадим объект двухпортовой последовательной RLC-цепи, добавим его в качестве элемента в объект РЧ бюджета с заданными свойствами.

using EngeeRF

b = rfbudget()

println("Elements: ", b.Elements,
        "\nInputFrequency: ", b.InputFrequency,
        "\nAvailableInputPower: ", b.AvailableInputPower,
        "\nSignalBandwidth: ", b.SignalBandwidth,
        "\nAutoUpdate: ", b.AutoUpdate,
        "\nOutputFrequency: ", b.OutputFrequency,
        "\nOutputPower: ", b.OutputPower,
        "\nTransducerGain: ", b.TransducerGain,
        "\nNF: ", b.NF,
        "\nIIP3: ", b.IIP3,
        "\nOIP3: ", b.OIP3,
        "\nSNR: ", b.SNR)
Elements: EngeeRF.AbstractRF.AbstractObjectRF[seriesRLC(Terminals = ("p1+", "p2+", "p1-", "p2-"), Name = "SeriesRLC", Budget = nothing, Listener = nothing, Ports = ("p1", "p2"), Parent = nothing, ParentNodes = Int64[], ParentPath = "", NumPorts = 2, R = 50.0, L = 1.0e-6, C = 5.0e-12, Name = "SeriesRLC")]
InputFrequency: [1.0e9]
AvailableInputPower: -30.0
SignalBandwidth: 1.0e8
AutoUpdate: true
OutputFrequency: [1.0e9;;]
OutputPower: [-65.92198202974255;;]
TransducerGain: [-35.92198202974255;;]
NF: [3.010299956639812;;]
IIP3: [Inf;;]
OIP3: [Inf;;]
SNR: BigFloat[60.96488723758829232562408304577801251192706544629058321574484227786790837291292;;]

Советы

Файл Touchstone в объекте nport должен быть пассивным на всех указанных частотах.

Алгоритмы

ABCD-параметры используются при расчете S-параметров каскада для решателя Фрииса. Когда , преобразование в ABCD приводит к NaNs. Для таких случаев S-параметры модифицируются следующим образом:

  • , и .

    rfbudget1

    • Подключите большое сопротивление ( Ом) параллельно сети.

    • Подключите малое сопротивление ( Ом) последовательно к началу сети.

  • , и .

    rfbudget2

    • Подключите большое сопротивление ( Ом) параллельно сети.

    • Подключите малое сопротивление ( Ом) последовательно в конце сети.

  • , и .

    rfbudget3

    • Подключите большое сопротивление ( Ом) параллельно сети.

    • Подключите малое сопротивление ( Ом) последовательно к началу сети.

    • Подключите малое сопротивление ( Ом) последовательно в конце сети.

  • .

    rfbudget4

    Подключите большое сопротивление ( Ом) параллельно сети.

Литература

  1. Roychowdhury, J., D. Long, and P. Feldmann. Cyclostationary Noise Analysis of Large RF Circuits with Multitone Excitations. IEEE Journal of Solid-State Circuits 33, no. 3 (March 1998): 324–36. https://doi.org/10.1109/4.661198.