Re: SI5351 quadrature VFO

Jerry Gaffke


Code for the uBitx has been using my si5351bx routines since day one. 
Allards Bitx40 code also uses these routines starting summer of 2017.
The uBitx routines are also 32 bit fixed point math. 
Precision was within about 10ppb as I recall.
So the uBitx tuning is correct within about 30e6/10e9 =  0.3 Hz when operating at 30mhz, is proportionally better as you go down in frequency,
the 25mhz reference oscillator will vary by far more than that with slight variations in temperature.
Of course, the calibration must be done correctly per post 35235 to approach this kind of accuracy.
Judging from all the posts to the forum about having to take multiple runs to calibrate vfo and bfo and clk1, 
most uBitx software releases out there have not yet gotten this right. 

Primary execution time constraint is shoveling all those i2c bits out to the si5351 at 100khz,
could be bumped up to 400khz if that's of concern.

The uBitx shuts down clk0 and clk1 when transmitting CW, this avoids any possibility of 
those mixer products getting out to the antenna.  A slight speed-up of maybe 10 milliseconds could be had
by only touching the clock-enable bits in si5351 register 3 to turn these off and on rather than 
loading all those msynth registers each time.  Doesn't really matter unless attempting 
full break-in for high speed CW with solid state TR switching.

Jerry, KE7ER

On Thu, Jun 14, 2018 at 10:27 pm, Hans Summers wrote:
Use of floating point arithmetic greatly increases the code size. And execution time - but generally I have found the execution time is not usually a constraint, neither is RAM or EEPROM... the biggest constraint I run into is the Flash program memory size. 64-bit arithmetic increases the code size even worse than floating point. Accordingly I use only 32-bit unsigned integer arithmetic in my Si5351A configuration routines in my firmware. It is possible to do all the calculations in 32-bit arithmetic without losing any precision (Floating point loses precision, 64-bit increases the code size too much). The result is compact code and accurate. 

Join to automatically receive all group messages.