improve jitter generation

wave_gen: change to gussian jitter distribution
wrapper: reduce gtx_jitter to meet real world performance
docs: remove noise limitation
This commit is contained in:
morgan 2023-12-13 17:14:20 +08:00
parent 734e87eede
commit f58ab13e9b
3 changed files with 8 additions and 8 deletions

View File

@ -54,4 +54,3 @@ nix develop
</details><br> </details><br>
## Limitation ## Limitation
1. The white noise is used to simulate jitter which may result in higher phase noise

View File

@ -3,8 +3,9 @@ import numba as nb
from numba import njit from numba import njit
def white_noise(low, high, size, seed=None):
return np.random.default_rng(seed).uniform(low, high, size) def gussian_jitter(RMS_jitter, size, seed=None):
return np.random.default_rng(seed).normal(0, RMS_jitter/2, size)
@njit(fastmath=True) @njit(fastmath=True)

View File

@ -1,6 +1,6 @@
import numpy as np import numpy as np
from wrpll_simulation.sim import simulation_jit from wrpll_simulation.sim import simulation_jit
from wrpll_simulation.wave_gen import white_noise from wrpll_simulation.wave_gen import gussian_jitter
class WRPLL_simulator(): class WRPLL_simulator():
@ -17,7 +17,7 @@ class WRPLL_simulator():
start_up_delay, start_up_delay,
i2c_comm_delay=85.6e-6, i2c_comm_delay=85.6e-6,
dcxo_settling_delay=100e-6, dcxo_settling_delay=100e-6,
gtx_jitter=370e-15, gtx_jitter=200e-15,
dcxo_freq=125_000_000, dcxo_freq=125_000_000,
dcxo_jitter=95e-15, dcxo_jitter=95e-15,
freq_acquisition_error=100, freq_acquisition_error=100,
@ -38,11 +38,11 @@ class WRPLL_simulator():
# init condition # init condition
self.gtx_freq = gtx_freq self.gtx_freq = gtx_freq
self.gtx_jitter = white_noise(-gtx_jitter, gtx_jitter, len(self.time), seed) self.gtx_jitter = gussian_jitter(gtx_jitter, len(self.time), seed)
self.dcxo_freq = dcxo_freq self.dcxo_freq = dcxo_freq
self.h_jitter = white_noise(-dcxo_jitter, dcxo_jitter, len(self.time), seed) self.h_jitter = gussian_jitter(dcxo_jitter, len(self.time), seed)
self.m_jitter = white_noise(-dcxo_jitter, dcxo_jitter, len(self.time), seed) self.m_jitter = gussian_jitter(dcxo_jitter, len(self.time), seed)
self.N = N self.N = N
self.helper_init_freq = helper_init_freq self.helper_init_freq = helper_init_freq