diff --git a/README.md b/README.md new file mode 100644 index 0000000..3160365 --- /dev/null +++ b/README.md @@ -0,0 +1,68 @@ +# WRPLL simulation + +A time domain simulation for WRPLL + +## Installing dependencies + +### Nix: +```bash +nix develop +``` +### Others: +```bash +python -m venv .venv +source .venv/bin/activate +(venv) pip install -r requirements.txt +``` + +## Quick start +- Three notebook examples are included + 1. `helper_PLL_example.ipynb` : helper PLL only + 2. `main_PLL_example.ipynb` : main PLL only with a user specific helper frequency + 3. `both_PLL_example.ipynb` : main and helper PLL + +- RAM usage and execution time estimate for simulation **ONLY** + + 1. 100,000,000 time steps: 6GiB RAM and 12 seconds + + 2. 200,000,000 time steps: 11GiB RAM and 20 seconds + + 3. 300,000,000 time steps: 16GiB RAM and 35 seconds + + +
+
WRPLL formulas + +- Assume the difference between $f_{main}, f_{gtx}$ is very small + + - Let $f_{in} = f_{main} = f_{gtx}$ + + - $f_{helper} = f_{in} * \dfrac{N-1}{N}$ + + - $f_{beat} = f_{in} - f_{helper} = \dfrac{f_{in}}{N}$ + +- Main and helper Si549 DCXO **ADPLL** setting + + - $ADPLL = \dfrac{\Delta f_{outppm}}{0.0001164}$ + +

+ +## Limitation +As the simulation is not cycle nor delay accurate, there will be more glitches than the hardware implementation + +### Helper PLL glitches (remedies are added to follow hardware behavior) + +- Cycle slipping issue will appear as $|\Delta{period}| \sim N$ + - During hardware testing, slipping issue is not common + - It's recommended to turn cycle_slip_comp ON to reduce slipping and have a more accurate simulation + +![cycle_slip](img/cycle_slipping.png) + + +- Deglitcher fail issue will appear as $|\Delta{period}| \sim N/2$ + - There are no such issue for hardware + - It's recommended to set blind_period higher than the hardware setting (around 300 is sufficient) + +![deglitch_fail](img/deglitch_fail.png) + + diff --git a/img/cycle_slipping.png b/img/cycle_slipping.png new file mode 100644 index 0000000..426c8d2 Binary files /dev/null and b/img/cycle_slipping.png differ diff --git a/img/deglitch_fail.png b/img/deglitch_fail.png new file mode 100644 index 0000000..ed08641 Binary files /dev/null and b/img/deglitch_fail.png differ