This notebook is developed to assist the study of RF interference (RFI) and transmission out-of-band emission (OOBE) related topics.
RFI Category¶
- In-Band RFI
- Interferer signal is within Mission OBW (Maroon bar in the chart). RFI signal behaves like noise and will cause G/T degradation over mission OBW if its power density level is high.
- Near-Band RFI
- Interferer signal is within Antenna Specified Bandwidth, but outside the Mission OBW (Dark pink bar in the chart).
- This RFI will reduce the LNA 1dB compression point and may saturate LNA if its power level is high enough. The receive system sensitivity and dynamic range will be degraded. A bandpass or notch filter can be employed to mitigate this RFI for current mission, however, usable antenna bandwidth will be reduced and might affect future missions.
- This RFI does not affect current Mission G/T performance, however, it will affect antenna G/T at other frequencies that may affect future missions if not being addressed.
- Close-Band RFI
- Interferer signal is outside and close to Antenna Specified Bandwidth (Light pink bars in the chart). The receive system sensitivity and dynamic range will be degraded (due to LNA 1dB compression point reduction) if the RFI signal is close to receive band and the diplexer attenuation is either none or not high enough. It may also cause LNA saturation if the RFI signal power is sufficiently high.
RFI Receive Band Terminology¶
RF interferer may cause different performance impacts on victim antennas depending on its band location relative to victim antenna bands. Receive band terminologies are described below.
- Antenna Specified Bandwidth
- Receive bandwidth required to be supported by antenna system (Blue bar in the chart)
- Mission OBW
- Mission waveform Occupied Bandwidth (OBW). Mission OBW must be within Antenna Specified Bandwidth (Orange bar in the chart)
- Frontend Bandwidth (or Diplexer Bandwidth)
- Antenna frontend diplexer/filter receive bandwidth. It is usually larger than Antenna Specified Bandwidth to obtain low insertion loss and small nonlinearity.
- LNA Bandwidth
- Antenna Low Noise Amplifier (LNA) bandwidth. It is usually larger than Frontend Bandwidth due to the design.
The following Python snippet generates a graphical illustration of RFI categories and receive bands.
In [5]:
# cSpell: disable
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
# read dpx and lna data
dpx_lna = np.loadtxt("filters.csv", skiprows=1, delimiter=",")
fig, ax = plt.subplots(1, 1)
ax.plot(dpx_lna[:, 0], dpx_lna[:, 1], color="b")
ax.plot(dpx_lna[:, 0], dpx_lna[:, 2], color="purple")
ax.set_xlim(2030, 2470)
ax.set_ylim(-60, 0)
ax.get_yaxis().set_visible(False)
ax.set_xticks([])
ax.set_xlabel("Frequency", fontweight="bold", color="k")
# Antenna Rqt
ax.fill([2200, 2200, 2300, 2300, 2200], [-60, 0, 0, -60, -60], label="Antenna Spec", edgecolor="cornflowerblue", facecolor="cornflowerblue")
# Mission
ax.fill([2245, 2245, 2275, 2275, 2245], [-60, 0, 0, -60, -60], label="Mission OBW", edgecolor="orange", facecolor="orange")
# In-Band
ax.fill([2255, 2255, 2265, 2265, 2255], [-60, 0, 0, -60, -60], label="In-Band RFI", edgecolor="maroon", facecolor="maroon")
# Near-Band
ax.fill([2210, 2210, 2220, 2220, 2210], [-60, 0, 0, -60, -60], label="Near-Band RFI", edgecolor="crimson", facecolor="crimson")
# Close-Band
ax.fill([2125, 2125, 2150, 2150, 2125], [-60, 0, 0, -60, -60], label="Close-Band RFI", edgecolor="lightcoral", facecolor="lightcoral")
ax.fill([2305, 2305, 2335, 2335, 2305], [-60, 0, 0, -60, -60], edgecolor="lightcoral", facecolor="lightcoral")
# Annotation
ax.annotate(
"Frontend", xy=(2350, -21),
xytext=(2380, -19),
arrowprops=dict(facecolor="b", shrink=0.05),
color="b", fontweight="bold"
)
ax.annotate(
"LNA", xy=(2437.5, -5),
xytext=(2377.5, -11),
arrowprops=dict(facecolor="purple", edgecolor="purple", shrink=0.05),
color="purple", fontweight="bold"
)
ax.set_title(label="Receive Band And RFI Illustration", color="k", fontweight="bold")
fig.tight_layout()
leg = ax.legend(loc="lower left", frameon=False)
leg.set_draggable(state=True)
Out[5]:
<matplotlib.legend.DraggableLegend at 0x17e42d1ba80>
Transmission Band Terminology¶
- Antenna Specified Bandwidth
- Transmission bandwidth required to be supported by antenna system (Blue bar in the chart).
- Mission OBW
- Mission waveform Occupied Bandwidth (OBW). Mission OBW must be within Antenna Specified Bandwidth (Orange bar in the chart).
- Frontend Bandwidth (or Diplexer Bandwidth)
- Antenna frontend diplexer/filter transmission bandwidth. It is usually larger than Antenna Specified Bandwidth to obtain low insertion loss and small nonlinearity.
- HPA Bandwidth
- High Power Amplifier (HPA) bandwidth. It is usually larger than Frontend Bandwidth due to the design.
OOBE Definition¶
- Mission OOBE Mask
- Out Of Band Emission (OOBE) mask defined outside Mission OBW (Dashed curve in the chart). Mission OOBE is regulated by National Telecommunications and Information Administration (NTIA) and Federal Communications Commission (FCC) in the United States.
- Antenna OOBE
- Transmission OOBE of the antenna system. Antenna OOBE level is affected by both mission waveform that must be compliant with NTIA OOBE Mask and frontend diplexer/filter attenuation (see Antenna OOBE in the chart that roughly shows the combined result of mission waveform and frontend diplexer).
- Antenna OOBE depends on Mission OBW width and the location of mission waveform in Antenna Specified Bandwidth. The maximum emission case is usually when mission waveform is located at transmission band edges with the largest allowable bandwidth.
- An extra filter or frontend diplexer designed with more attenuation can be employed to suppress Antenna OOBE if the OOBE causes RF interference (RFI) to other nearby antenna systems.
The following Python snippet generates a graphical illustration of transmission bands and OOBE.
In [9]:
lowest_level = -125
fig2, ax2 = plt.subplots(1, 1)
ax2.plot(dpx_lna[:, 0], dpx_lna[:, 1], color="b")
ax2.plot(dpx_lna[:, 0], dpx_lna[:, 2], color="purple")
ax2.set_xlim(2030, 2470)
ax2.set_ylim(lowest_level, 0)
ax2.get_yaxis().set_visible(False)
ax2.set_xticks([])
ax2.set_xlabel("Frequency", fontweight="bold", color="k")
# Antenna Rqt
ax2.fill([2200, 2200, 2300, 2300, 2200], [lowest_level, 0, 0, lowest_level, lowest_level], label="Antenna Spec",
edgecolor="cornflowerblue", facecolor="cornflowerblue")
# Mission
oobe_2260_15 = np.loadtxt("oobe1.csv", delimiter=",")
ax2.fill([2252.5, 2252.5, 2267.5, 2267.5, 2252.5], [lowest_level, 0, 0, lowest_level, lowest_level],
label="Mission OBW", edgecolor="orange", facecolor="orange")
ax2.plot(oobe_2260_15[:, 0], oobe_2260_15[:, 1], color="maroon", label="Mission OOBE Mask", linestyle="--")
# In-Band
# ax2.fill([2255, 2255, 2265, 2265, 2255], [lowest_level, 0, 0, lowest_level, lowest_level],
# label="In-Band RFI", edgecolor="maroon", facecolor="maroon")
# Near-Band
# ax2.fill([2210, 2210, 2220, 2220, 2210], [lowest_level, 0, 0, lowest_level, lowest_level],
# label="Near-Band RFI", edgecolor="crimson", facecolor="crimson")
# Antenna OOBE
ax2.fill([2030, 2030, 2069.4, 2163.9, 2182.1, 2200, 2200, 2030],
[lowest_level, -120, -120, -60, -48.9, -44.9, lowest_level, lowest_level],
label="Antenna OOBE", facecolor="lightcoral", hatch="///", zorder=2)
ax2.fill([2300, 2300, 2325.3, 2344.2, 2443.8, 2470, 2470, 2300],
[lowest_level, -38.2, -46.3, -60, -120, -120, lowest_level, lowest_level], facecolor="lightcoral", hatch="\\\\\\", zorder=2)
# Annotation
ax2.annotate(
"Frontend", xy=(2350, -21),
xytext=(2380, -19),
arrowprops=dict(facecolor="b", shrink=0.05),
color="b", fontweight="bold"
)
ax2.annotate(
"HPA", xy=(2437.5, -5),
xytext=(2377.5, -11),
arrowprops=dict(facecolor="purple", edgecolor="purple", shrink=0.05),
color="purple", fontweight="bold"
)
ax2.set_title(label="Transmission Band And OOBE Illustration", color="k", fontweight="bold")
fig2.tight_layout()
leg2 = ax2.legend(loc="upper left", frameon=False)
leg2.set_draggable(state=True)
Out[9]:
<matplotlib.legend.DraggableLegend at 0x17e459ac5a0>
Comments
comments powered by Disqus