RF Chain¶
RF chain models for transmit power, losses, noise temperature, and cascaded stage analysis.
The simple RFChainModel is documented in Core Models. This page covers the cascaded multi-stage chain.
RF Stage¶
RFStage
dataclass
¶
A single RF stage (LNA, filter, mixer, PA, etc.).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Human-readable stage identifier (e.g., "LNA", "BPF", "PA"). |
required |
gain_db
|
float
|
Stage gain in dB. Use negative values for lossy elements (filters, cables). |
required |
nf_db
|
float
|
Noise figure in dB. For a passive loss of L dB, NF = L dB. |
required |
iip3_dbm
|
float | None
|
Input-referred third-order intercept point in dBm. None means the stage is assumed linear (e.g., passive filter). |
None
|
Cascaded RF Chain¶
CascadedRFChain
¶
Multi-stage RF chain with Friis noise cascade and IIP3 cascade.
Supports both TX and RX chain analysis. For a receive chain the key output is cascaded noise temperature; for a transmit chain the key output is total gain/loss from PA to antenna feed.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
stages
|
list of RFStage
|
Ordered list of stages from input to output. |
required |
tx_power_w
|
float
|
Transmit power at PA output in watts (default 1.0). |
1.0
|
Examples:
>>> chain = CascadedRFChain([
... RFStage("LNA", gain_db=20.0, nf_db=1.5),
... RFStage("BPF", gain_db=-2.0, nf_db=2.0),
... ])
>>> chain.cascaded_nf_db()
1.52
Source code in src/opensatcom/rf/cascade.py
total_gain_db
¶
Total cascaded gain in dB (sum of all stage gains).
Returns:
| Type | Description |
|---|---|
float
|
Total gain in dB. |
total_gain_lin
¶
Total cascaded gain as a linear ratio.
Returns:
| Type | Description |
|---|---|
float
|
Total gain as a linear power ratio. |
cascaded_nf_db
¶
Cascaded noise figure in dB using Friis formula.
F_total = F_1 + (F_2 - 1)/G_1 + (F_3 - 1)/(G_1 * G_2) + ...
Returns:
| Type | Description |
|---|---|
float
|
Cascaded noise figure in dB. |
Source code in src/opensatcom/rf/cascade.py
cascaded_noise_temp_k
¶
Equivalent input noise temperature from cascaded NF.
T_e = T_ref * (F - 1) where T_ref = 290 K.
Returns:
| Type | Description |
|---|---|
float
|
Equivalent noise temperature in Kelvin. |
Source code in src/opensatcom/rf/cascade.py
cascaded_iip3_dbm
¶
Cascaded input-referred IIP3 in dBm.
1/IIP3_total = 1/IIP3_1 + G_1/IIP3_2 + G_1*G_2/IIP3_3 + ...
Returns:
| Type | Description |
|---|---|
float or None
|
Cascaded IIP3 in dBm, or None if no stage has IIP3 defined. |
Source code in src/opensatcom/rf/cascade.py
tx_losses_db
¶
Total TX loss (negative of total gain when gain < 0).
For a TX chain where stages represent post-PA losses (feed, cable, filter), this returns the magnitude of loss in dB (positive number).
Returns:
| Type | Description |
|---|---|
float
|
Total TX-path loss in dB (positive number, 0.0 if net gain). |
Source code in src/opensatcom/rf/cascade.py
to_simple_rf_chain
¶
Convert to the simple RFChainModel for backward compatibility.
Maps cascaded noise temp to rx_noise_temp_k and cascaded
losses to tx_losses_db.
Returns:
| Type | Description |
|---|---|
RFChainModel
|
Simplified RF chain model. |