Phase Noise¶

Phase noise refers to the effect random fluctuations in a non-ideal osciallators phase have on a signal modulated by that osicallator. The effect of phase noise is to spread the signal out in the frequency domain. The currently implemented phase noise models are
Phase Noise Model |
Description |
|---|---|
No phase noise is added to the signal. |
|
Phase noise is added to the signal based on its freuency domain characteristics. |
- class PhaseNoise(mother_node=None, seed=None)[source]¶
Bases:
RandomNode,SerializableBase class of phase noise models.
- Parameters:
mother_node (
RandomNode|None) – Mother node of this random node. By default, nodes are considered to be roots.seed (
int|None) – Random seed used to initialize the pseudo-random number generator.
No Phase Noise¶
The NoPhaseNoise
is HermesPy’s implementation of an ideal oscillator that does not add any phase noise.
- class NoPhaseNoise(mother_node=None, seed=None)[source]¶
Bases:
PhaseNoiseNo phase noise considered within the device model.
- Parameters:
mother_node (
RandomNode|None) – Mother node of this random node. By default, nodes are considered to be roots.seed (
int|None) – Random seed used to initialize the pseudo-random number generator.
- classmethod Deserialize(process)[source]¶
Deserialize an object’s state.
Objects cannot be deserialized directly, instead a
Factorymust be instructed to carry out the deserialization process.- Parameters:
process (
DeserializationProcess) – The current stage of the deserialization process. This object is generated by theFactoryand provides an interface to deserialization methods supporting multiple backends.- Return type:
- Returns:
The deserialized object.
- serialize(process)[source]¶
Serialize this object’s state.
Objects cannot be serialized directly, instead a
Factorymust be instructed to carry out the serialization process.- Parameters:
process (
SerializationProcess) – The current stage of the serialization process. This object is generated by theFactoryand provides an interface to serialization methods supporting multiple backends.- Return type:
- class NoPhaseNoiseRealization[source]¶
Bases:
PhaseNoiseRealizationRealization of a phase noise model that does not add any noise.
Oscillator Phase Noise¶
Oscillator phase noise model according to Khanzadi et al.[1], modeling the phase noise of an oscillator as a function of the distance to the carrier frequency \(\Delta f\) in frequency domain. Phase noise is modeled as a superposition of three noise power spectral densities (PSDs)
where
denotes the white noise floor PSD of power \(K_0\),
denotes the flicker noise PSD of power \(K_2\) following a square law decay with distance to the carrier frequency \(\Delta f\) and
denotes the flicker noise PSD of power \(K_3\) following a cubic law decay with distance to the carrier frequency \(\Delta f\). A starting point for the parameter values is given by Khanzadi et al.[1] as
- class OscillatorPhaseNoise(K0=1e-11, K2=10, K3=10000, seed=None)[source]¶
Bases:
PhaseNoise,SerializableOscillator phase noise model defined in frequency domain.
Refer to Khanzadi et al.[1] for addtional information.
- Parameters:
K0 (
float) – White noise floor power level, denoted as \(K_0\) [1].K2 (
float) – Power level of the 2nd order flicker noise component, denoted as \(K_2\) [1].K3 (
float) – Power level of the 3rd order flicker noise component, denoted as \(K_3\) [1].seed (
int|None) – Seed with which to initialize the random state of the model.
- classmethod Deserialize(process)[source]¶
Deserialize an object’s state.
Objects cannot be deserialized directly, instead a
Factorymust be instructed to carry out the deserialization process.- Parameters:
process (
DeserializationProcess) – The current stage of the deserialization process. This object is generated by theFactoryand provides an interface to deserialization methods supporting multiple backends.- Return type:
- Returns:
The deserialized object.
- classmethod FromPSD(frequency_offsets, noise_levels, precision=1e-20, seed=None)[source]¶
Create an oscillator phase noise model from a given power spectral density (PSD).
- Parameters:
frequency_offsets (
TypeAliasType) – Frequency offset to the assumed carrier frequency in Hz.noise_levels (
TypeAliasType) – Noise levels corresponding to the frequency offsets (linear scale).precision (
float) – Precision of the resulting model fit.seed (
int|None) – Seed with which to initialize the random state of the model.
- Return type:
- Returns:
An instance of
OscillatorPhaseNoisefitted to the provided PSD.
- serialize(process)[source]¶
Serialize this object’s state.
Objects cannot be serialized directly, instead a
Factorymust be instructed to carry out the serialization process.- Parameters:
process (
SerializationProcess) – The current stage of the serialization process. This object is generated by theFactoryand provides an interface to serialization methods supporting multiple backends.- Return type:
- property K0: float[source]¶
White noise floor power level, denoted as \(K_0\).
- Raises:
ValueError – If the value is negative.
- property K2: float[source]¶
Power level of the 2nd order flicker noise component, denoted as \(K_2\).
- Raises:
ValueError – If the value is negative.
- property K3: float[source]¶
Power level of the 3rd order flicker noise component, denoted as \(K_3\).
- Raises:
ValueError – If the value is negative.
- class OscillatorPhaseNoiseRealization(K0, K2, K3, seed)[source]¶
Bases:
PhaseNoiseRealizationRealization of an oscillator phase noise model defined in frequency domain
Refer to Khanzadi et al.[1] for addtional information.
- Parameters:
K0 (
float) – White noise floor power level, denoted as \(K_0\) [1].K2 (
float) – Power level of the 2nd order flicker noise component, denoted as \(K_2\) [1].K3 (
float) – Power level of the 3rd order flicker noise component, denoted as \(K_3\) [1].seed (
int) – Seed with which to initialize the random state of the model.