I've recently used insights from this article to implement a sample rate step size 128 times smaller than previously supported in HackRF:

https://www.pa3fwm.nl/technotes/tn42a-si5351-programming.html

This means that sample rates around 20 Msps can be adjusted in steps of about 0.015 Hz. The precision is even better at lower sample rates.

I highly recommend reading it if you use #Si5351 in any projects. #Si5351A #Si5351B #Si5351C

Understanding and enhancing Si5351 programming

The sequel article investigates jitter and explains how Si5351 achieves much better spectral purity than one might expect of such a clock generator.

When Jared and I chose the part for HackRF One back in 2012, we were very pleasantly surprised by its performance. Since then it has become a popular choice for all sorts of radio projects for good reason. It's nice to finally understand the internals well enough to see why it works so well for our application.

The new #Si5351 implementation in HackRF is an even better improvement than I realized at first because the old, vendor-recommended algorithm introduces error by not rounding properly. The mean error of the old algorithm is approximately 256 times the mean error of the new one.

I think this is pretty great, but in practice this should rarely matter to HackRF users. The most commonly used sample rates are error-free integer divisions of the 800 MHz clock generator VCO.

@mossmann Would this help with the phase noise issues mentioned here? https://github.com/greatscottgadgets/hackrf/issues/889
@fsphil That issue explored phase noise from the clock generator that is multiplied by the MAX283x frequency synthesizer. An integer divider is used for that reference clock. It is unaffected by the recent improvement in fractional precision.