Skip to content

Phase Noise Simulation

David Young edited this page Apr 30, 2025 · 1 revision

Description

This process simulates the effect of phase noise, typically originating from system oscillators, on the final received signal samples processed for output. It retrieves instantaneous phase error samples (in radians) from the Receiver's associated Timing model instance. This phase error is then applied to the complex IQ data within the rendered time window via complex multiplication (effectively rotating the phase of each complex sample: output_sample = input_sample * exp(j * phase_error_sample)). This simulation step can be disabled via configuration settings related to the output process.

Assumptions

  • Assumes the underlying phase noise model provided by the Timing object accurately represents the desired statistical characteristics (e.g., power spectral density shape) of the physical clock's phase noise, within the limits of the chosen noise model implementation.
  • Assumes that phase noise effects can be correctly modeled as a multiplicative process applied to the complex baseband signal (exp(j * phase_error)).
  • Assumes the Timing object correctly manages its internal state progression, including handling synchronization resets (via the sync_on_pulse flag) and skipping the appropriate number of samples between processing windows when generating the noise sequence.
  • Assumes the nominal carrier frequency (used for Doppler calculations etc.) is handled separately and correctly by other parts of the simulation.

Limitations

  • Fidelity Dependency: The accuracy and realism of the simulated phase noise are entirely dependent on the fidelity of the underlying Timing model's noise generation implementation. This is particularly constrained by the ClockModelGenerator and its known limitations regarding supported noise types (restricted 1/f^alpha components) and reliance on hardcoded filter designs and branch counts.
  • Simplified Application: The phase noise is applied as a simple multiplicative factor to the complex samples after all signal components (target returns, direct path, thermal noise) have been aggregated for a window. It does not model more complex interactions or noise injection points within a physical receiver chain.
  • Timing of Application: If receiver-side oversampling (params::oversampleRatio > 1) is used, phase noise is added after the downsampling step performed during HDF5 export. This might differ from some physical systems where noise impacts the signal before critical filtering or decimation stages.
  • Window Start Time Adjustment: The implementation adjusts the effective start time reference for the processing window based on the initial phase noise sample retrieved for that window. This interaction with the Timing model's state evolution (especially sync_on_pulse) could potentially introduce subtle complexities or artifacts in precise timing analyses across window boundaries.

Related Components

  • receiver_export.cpp: Specifically the generatePhaseNoise and addPhaseNoiseToWindow functions operating within the exportReceiverBinary context.
  • radar::Timing: The class responsible for generating the raw phase noise samples (via its internal noise::ClockModelGenerator).
  • Timing
  • FIR-based Downsampling (Process step potentially preceding phase noise application)

Validation Status

  • Needs Verification: The quantitative accuracy of the applied phase noise has not been explicitly validated against theoretical phase noise models or known clock noise profiles beyond basic functional checks.
  • Key Areas for Validation:
    • Verify the statistical properties (e.g., power spectral density using appropriate estimation techniques like Welch's method) of the applied phase noise sequence match the intended profile configured via the Timing model's alpha/weight parameters, acknowledging the inherent implementation limitations.
    • Confirm the timing of application (relative to downsampling) is correct according to the intended simulation model.
    • Analyze the impact of the sync_on_pulse flag on the noise statistics and continuity across processing window boundaries.
    • Assess the magnitude and consequences of the window start time adjustment mechanism.
  • Priority: Medium (Phase noise is crucial for coherent radar performance simulation, but its fidelity here is known to be constrained by the complex and limited underlying Timing / ClockModelGenerator. Validating its behavior within those known constraints is important.)

Clone this wiki locally