Engee documentation

rfbudget

Creates an RF budget object and performs RF budget analysis for a chain of 2 port elements.

Library

EngeeRF

Syntax

Function call

  • rfobj = rfbudget() — creates an RF budget object, the properties of which are set by default.

  • rfobj = rfbudget(_,AutoUpdate) — creates an RF budget object using the argument AutoUpdate. You can use this syntax with any of the previous syntaxes.

  • rfobj = rfbudget(Name=Value) — sets properties specified by one or more arguments of the type «name-value».

Arguments

Input arguments «name-value»

Specify pairs of arguments as Name=Value, where Name — the name of the argument, and Value — the appropriate value.

# Elements — RF budget elements

+ EngeeRF.AbstractRF.AbstractObjectRF[] (default) | RF object | array of RF objects

Details

RF budget elements defined as an RF object or an array of RF objects. Use an array of objects when performing RF budget analysis for a chain of RF elements.

The table lists the supported RF objects that can be used to design an RF chain.

Element Type RF object

The linear element

attenuator

EngeeRF.rfantenna

rffilter

nport

seriesRLC

shuntRLC

phaseshift

txlineCoaxial

txlineCPW

txlineMicrostrip

txlineParallelPlate

txlineRLCGLine

txlineStripline

txlineTwoWire

txlineEquationBased

txlineDelayLossless

txlineDelayLossy

A non-linear element

amplifier

modulator

mixerIMT

Example: RF budget analysis for an amplifier and modulator circuit:

using EngeeRF

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

# InputFrequency is the frequency of the input signal, Hz

+ Float64[] (by default) | a non-negative scalar | non-negative column vector

Details

The frequency of the input signal in Hz, specified as a non-negative scalar or column vector of size on , where represents the number of frequencies. If the input frequency is a vector, then the function rfbudget analyzes each input frequency separately.

Типы данных

Float64

# AvailableInputPower — power supplied to the cascade input, dBm

+ NaN (by default) | scalar

Details

The power at the cascade input in dBm, set as a scalar.

Типы данных

Float64

# SignalBandwidth — signal bandwidth at the cascade input, Hz

+ NaN (by default) | scalar

Details

The bandwidth of the signal at the input of the cascade in Hz, set as a scalar.

Типы данных

Float64

# AutoUpdate — option for automatic recalculation of RF budget

+ true (by default) | false

Details

The option to automatically recalculate the RF budget analysis based on changes made to the existing scheme, set as true or false.

Setting the argument AutoUpdate in the value false disables automatic recalculation of the budget when changing parameters.

# Solver — calculation method

+ "Friis" (by default)

Details

The calculation method.

# WaitBar — option to display the progress bar
true (by default) | false

Details

The option to display a progress bar with a cancel button during harmonic balance analysis, set as a boolean value.

Output arguments

# rfobj — RF budget object

+ object

Details

The RF budget object. The object contains the following properties:

  • Elements — the function sets this property based on the argument Elements.

  • InputFrequency — the function sets this property based on the argument InputFrequency.

  • AvailableInputPower — the function sets this property based on the argument AvailableInputPower.

  • SignalBandwidth — the function sets this property based on the argument SignalBandwidth.

  • AutoUpdate — the function sets this property based on the argument AutoUpdate.

  • Solver — the function sets this property based on the argument Solver.

  • WaitBar — the function sets this property based on the argument WaitBar.

  • OutputFrequency — output frequencies in Hz, returned as:

    • scalar, when and ;

    • vectors when or ;

    • matrices when and ;

      represents the number of frequencies at the input, and — the number of steps in the cascade.

  • OutputPower — output power in dBm, returned as:

    • scalar, when and ;

    • vectors when or ;

    • matrices when and ;

      represents the number of frequencies at the input, and — the number of steps in the cascade.

  • TransducerGain is the power gain of the converter in dB, returned as:

    • scalar, when and ;

    • vectors when or ;

    • matrices when and ;

      represents the number of frequencies at the input, and — the number of steps in the cascade.

  • NF — noise coefficients in dB, returned as:

    • scalar, when and ;

    • vectors when or ;

    • matrices when and ;

      represents the number of frequencies at the input, and — the number of steps in the cascade.

  • IIP3 is the input intersection point of third—order intermodulation distortion in dBm, returned as:

    • scalar, when and ;

    • vectors when or ;

    • matrices when and ;

      represents the number of frequencies at the input, and — the number of steps in the cascade.

  • OIP3 is the output intersection point of third—order intermodulation distortion in dBm, returned as:

    • scalar, when and ;

    • vectors when or ;

    • matrices when and ;

      represents the number of frequencies at the input, and — the number of steps in the cascade.

  • SNR — the signal-to-noise ratio in dB, returned as:

    • scalar, when and ;

    • vectors when or ;

    • matrices when and ;

      represents the number of frequencies at the input, and — the number of steps in the cascade.

Methods

rfplot: Plotting the S-parameter data, as well as the dependence of the total result of calculating the RF budget on the input frequency of the cascade

Examples

Creating an RF Budget object

Details

Creating a data object with default properties using the function rfbudget and we will deduce its properties.

import EngeeRF: rfbudget

b = rfbudget()
rfbudget object:

           Elements:     Any[]
     InputFrequency: Float64[] Hz
AvailableInputPower:       NaN dBm
    SignalBandwidth:       NaN Hz
             Solver:     Friis
         AutoUpdate:      true

Create a two-port serial RLC circuit object and add it as an element to the RF budget object with the specified properties.

import EngeeRF: seriesRLC

rlc = seriesRLC()

InputFrequency = 1.0e9
AvailableInputPower = -30.0
SignalBandwidth = 1.0e8

b = rfbudget([rlc], InputFrequency, AvailableInputPower, SignalBandwidth)
rfbudget object:

           Elements: DataType[seriesRLC]
     InputFrequency:             [1.0e9] Hz
AvailableInputPower:               -30.0 dBm
    SignalBandwidth:               1.0e8 Hz
             Solver:               Friis
         AutoUpdate:                true

Analysis result:
    OutputFrequency:               [1.0e9;;] dBm
        OutputPower:               [-30.0;;] dBm
     TransducerGain:                 [0.0;;] dB
                 NF:                 [0.0;;] dB
               IIP2:                 nothing dBm
               OIP2:                 nothing dBm
               IIP3:                 [Inf;;] dBm
               OIP3:                 [Inf;;] dBm
                SNR:  [63.975187194228106;;] dB

Recommendations

The Touchstone file in the object nport must be passive at all specified frequencies.

Algorithms

The ABCD parameters are used to calculate the S-parameters of the cascade for the Friis solver. When , conversion to ABCD results in the values NaN. For such cases, the S-parameters are modified as follows:

  • , and .

    rfbudget1

    • Connect a large resistance ( Ohms) parallel to the network.

    • Connect low resistance ( Ohms) sequentially to the beginning of the network.

  • , and .

    rfbudget2

    • Connect a large resistance ( Ohms) parallel to the network.

    • Connect low resistance ( Ohms) sequentially at the end of the network.

  • , and .

    rfbudget3

    • Connect a large resistance ( Ohms) parallel to the network.

    • Connect low resistance ( Ohms) sequentially to the beginning of the network.

    • Connect low resistance ( Ohms) sequentially at the end of the network.

  • .

    rfbudget4

    Connect a large resistance ( Ohms) parallel to the network.

Literature

  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.