-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PLL Reset Information #3
Comments
Yes, I read that topic while writing my library. However since my library is intended to be used by someone who understands the chip and doesn't want the library to stand in their way and do unexpected things (except for the automatic low-jitter mode enabling automation), I figured that it will be better left to the user with proper word of caution. In fact, it is even more complicated. You need to use the reset in many cases, but beware:
It is difficult to state any precise conditions when it has to be reset because documentation is bogus. I really don't want to force resets when not needed in the software. If you use it and find that you need a reset under specific conditions, then implement it yourself for just that case. The chip allows for many unexpected things like allowing about 5x larger spread for spread spectrum with no problems. Or tuning the PLL between 300 to 1000 MHz. Or disabling certain clock paths to lower the power consumption. Or change PLL tuning capacitor so the PLL gets more stable when clocked at <600 MHz. Or you can watch some clock dropout flags which only appeared in AN-619 after I was asking about it. Documentation from SiLAbs really gets funky sometimes. The Si5351 is one of the worst cases. One of them, there is for example the SI5341. It used to boast the ability to set phase offset of outputs in tens of picoseconds. Exactly what I needed for my purposes. However, there was a strange mention on one page. I asked on the forum. It turned out that... oh yes, you can set the offset in steps of maybe 20 ps... but there is a nondeterministic thingamajig going on when it's getting configured which causes a tolerance of that setting on the order of nanoseconds, thats's 100x more than the resolution! So, I cannot exactly tell when the reset should be used. Maybe if I use the part once again (probably the MS5351 clone due to availability), I may make an oracle function which will tell you whether it recommends you to reset or not. And a function to enable "magic oracle-based" resets. TL;DR: Documentation of Si5351 is a circus and I needed the library to be deterministic, predictable and not bothersome, so resets are manual now. An oracle to predict resets and automatic oracle-based resets may be implemented later but I cannot guarantee it. I am aware of these problems since they were there since the beginning of this library. Sorry for that but it is what it is. |
I noticed the comment on PLL reset in your README.md and thought of an email by Hans G0UPL who uses the SI5351 extensively in several projects. His email goes into depth on the topic:
https://groups.io/g/BITX20/topic/si5351a_facts_and_myths/5430607
I'm not sure if you're familiar with it or not and ticket this isn't a bug-report or even a feature-request, just sharing some information that might be of benefit.
The text was updated successfully, but these errors were encountered: