From 4b098c0a54bcba2cd1401f74d5c5c5ebca9a40c8 Mon Sep 17 00:00:00 2001 From: morgan Date: Tue, 5 Dec 2023 14:58:41 +0800 Subject: [PATCH] add README.md readme: add quick start and installation docs readme: add sim limitation with images --- README.md | 68 +++++++++++++++++++++++++++++++++++++++++ img/cycle_slipping.png | Bin 0 -> 22079 bytes img/deglitch_fail.png | Bin 0 -> 23971 bytes 3 files changed, 68 insertions(+) create mode 100644 README.md create mode 100644 img/cycle_slipping.png create mode 100644 img/deglitch_fail.png 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 0000000000000000000000000000000000000000..426c8d2fa20ccea01caf416bbb071c8f5e65a95d GIT binary patch literal 22079 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 literal 0 HcmV?d00001 diff --git a/img/deglitch_fail.png b/img/deglitch_fail.png new file mode 100644 index 0000000000000000000000000000000000000000..ed08641659a7f6b5c8d54388b6b24e84b263e785 GIT binary patch literal 23971 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ⅈ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 literal 0 HcmV?d00001