-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Affected Package / Scope
Core Simulator (fers)
Bug Description
The core simulation engine does not model receiver front-end selectivity (i.e., RF/IF filtering). It operates by calculating the complex baseband equivalent for every signal path and then performing a direct linear superposition of these baseband signals at the receiver.
This architectural choice leads to a physically inaccurate representation of how a real receiver handles interference. Out-of-band signals are not attenuated or filtered based on the receiver's operating frequency and bandwidth. Instead, they are treated as if they were in-band, causing their energy to be aliased into the final baseband output, which corrupts the desired signal.
This limitation makes the simulator unsuitable for accurately modeling scenarios involving electronic warfare, out-of-band jammers, or interference from other radio systems.
Steps to Reproduce
- Create a minimal CW simulation scenario with the following components:
- A receiver (
Rx) with its timing source frequency set to 1.0 GHz, representing its LO. - A weak in-band transmitter (
Tx_InBand) with a carrier frequency of 1.0 GHz and a power of 1W. - A strong out-of-band transmitter (
Tx_OutOfBand) with a carrier frequency of 1.1 GHz and a power of 1000W. - All components are static and within range of each other.
- A receiver (
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE simulation SYSTEM "fers-xml.dtd">
<simulation name="OutOfBandInterferenceTest">
<parameters>
<starttime>0</starttime>
<endtime>0.001</endtime>
<rate>20e6</rate> <!-- 20 Msps, for a +/- 10 MHz baseband -->
</parameters>
<waveform name="InBandWave">
<power>1.0</power>
<carrier_frequency>1.0e9</carrier_frequency>
<cw/>
</waveform>
<waveform name="OutOfBandWave">
<power>1000.0</power>
<carrier_frequency>1.1e9</carrier_frequency>
<cw/>
</waveform>
<timing name="RxTiming">
<frequency>1.0e9</frequency> <!-- Receiver LO Frequency -->
</timing>
<antenna name="IsotropicAnt" pattern="isotropic"/>
<platform name="RxPlatform">
<motionpath>
<positionwaypoint>
<x>0</x>
<y>0</y>
<altitude>0</altitude>
<time>0</time>
</positionwaypoint>
</motionpath>
<fixedrotation>
<startazimuth>0</startazimuth>
<startelevation>0</startelevation>
<azimuthrate>0</azimuthrate>
<elevationrate>0</elevationrate>
</fixedrotation>
<receiver name="Rx" antenna="IsotropicAnt" timing="RxTiming">
<cw_mode/>
</receiver>
</platform>
<platform name="TxInBandPlatform">
<motionpath>
<positionwaypoint>
<x>1000</x>
<y>0</y>
<altitude>0</altitude>
<time>0</time>
</positionwaypoint>
</motionpath>
<fixedrotation>
<startazimuth>0</startazimuth>
<startelevation>0</startelevation>
<azimuthrate>0</azimuthrate>
<elevationrate>0</elevationrate>
</fixedrotation>
<transmitter name="Tx_InBand" waveform="InBandWave" antenna="IsotropicAnt" timing="RxTiming">
<cw_mode/>
</transmitter>
</platform>
<platform name="TxOutOfBandPlatform">
<motionpath>
<positionwaypoint>
<x>2000</x>
<y>0</y>
<altitude>0</altitude>
<time>0</time>
</positionwaypoint>
</motionpath>
<fixedrotation>
<startazimuth>0</startazimuth>
<startelevation>0</startelevation>
<azimuthrate>0</azimuthrate>
<elevationrate>0</elevationrate>
</fixedrotation>
<transmitter name="Tx_OutOfBand" waveform="OutOfBandWave" antenna="IsotropicAnt" timing="RxTiming">
<cw_mode/>
</transmitter>
</platform>
</simulation>- Run the FERS simulation with the above scenario.
- Analyze the output HDF5 file for the receiver
Rx. Perform an FFT on the I/Q data.
Expected Behavior
A real receiver with a front-end filter centered at 1.0 GHz would heavily attenuate the 1.1 GHz signal from Tx_OutOfBand. After mixing with the 1.0 GHz LO, the jammer's signal would appear at 100 MHz in the IF stage and be completely rejected by any reasonable IF filter (e.g., 10 MHz bandwidth).
The final digitized I/Q data should only contain the DC component from the weak in-band transmitter (Tx_InBand) and system noise. The strong out-of-band signal should be absent.
Actual Behavior
The FERS engine calculates the baseband representation of both signals and adds them linearly. The signal from Tx_OutOfBand is treated as a 100 MHz complex sinusoid at baseband (1.1 GHz - 1.0 GHz).
When this summed signal is sampled at 20 Msps, the 100 MHz component aliases down to DC (100 MHz % 20 MHz = 0). The resulting I/Q data in the output file is dominated by a massive DC component from the aliased out-of-band transmitter, completely obscuring the weak in-band signal.
This is incorrect because the information about the jammer's original carrier frequency is lost during the baseband summation, making it impossible to filter out correctly in post-processing. The simulation effectively assumes the receiver has infinite bandwidth.
Environment
- OS: Any
- For
fers: Any build, commit hash f0c75a2 - For
fers-ui: N/A