Author Topic: Windows Freeware GUI for Si5351A DIY Function Generator? Solved  (Read 2558 times)

0 Members and 1 Guest are viewing this topic.

Offline PCB.Wiz

  • Super Contributor
  • ***
  • Posts: 1548
  • Country: au
Re: Windows Freeware GUI for Si5351A DIY Function Generator?
« Reply #25 on: May 01, 2023, 02:41:25 am »
If I understand correctly,
The processing speed of a MCU is effected by two things... a) the number of cycles it takes to complete an operation and 2) the frequency of its source oscillator.
PIC MCUs seem to be able to use faster oscillators than the Arduino 328 types. The fastest I recall specified for the PICs is 48Mhz. However, a PIC requires four cycles to complete an operation, where a 328 only requires one. Do I have this correctly?
Broadly, yes. Not all opcodes take the same time tho. For capture timing, you usually use inbuilt timers, so the opcode time matters less.

The YouTuber "Scullcom Hobby Electronics" has a complete DIY GPSDO 10MHz Reference Standard build, using an Arduino and a Ublox GPS clone. Part of his trick is to use one of the newer series Ublox clones (v6 and above, IIRC. vM8N has better options.) which has a SW adjustable output frequency. There are two problems with this trick:
1) The GPS NMEA signal only provides a 1PPS signal. It is the Ublox that is doing the multiplication to 10MHz. Whatever flaws/noise/thermal drift the Ublox contributes are included in the 10MHz output.
2) The multiplication method that the Ublox uses does not land evenly on some multiples. Those multiples end up having a good bit of jitter added to them. 10MHz is one of those multiples. There might be ways to remove the jitter, but it is better for it to not have been added in, in the first place.
That's an interesting approach, it scores high for simplicity, as it simply redefines the 1pps output, but if you want 10.00MHz it is less ideal as all edges are 48MHz derived, and so jitter is significant.
In 500ns you have 24 x 48MHz cycles, or an average of 5 x 10MHz cycles.
I did find this,
https://hackaday.io/project/11263-gps-locked-10mhz-lab-frequency-reference/log/37615-project-completed
That uses a 10MHz crystal to 'ring' at 10MHz with very high Q, which lowers the phase jitter significantly.
The average over 500ns / 5 full periods is correct, so the HiQ filter only has to average ok over 5 periods.

I did find this too, which suggests even 24MHz OUT is possible, for that GPS module brand, - perhaps that could feed into the Si5531 directly ?
Some very detailed tests by Russian hobbyists found that the internal NCO used to generate these output clock signals could only produce useful low jitter GPS-referenced clocks at certain clock speeds (i.e. output frequencies). Specifically, only outputs generated at 24.0, 16.0, 12.0, 8.0, 6.0, 4.0, 3.0 and 2.0 MHz could provide anything like a suitable signal. You will note that the three highest frequencies are actually outside the u-Blox specification but they still work successfully.

IIUC your thoughts, you will use the NMEA 1PPS signal to trigger the MCU to count, compare the count to 10M (or whatever) and adjust the oscillator (or whatever,) accordingly. That is the same solution that I was thinking of. But, the coding is beyond me.
Broadly, yes. You use the timer capture feature of the MCU on two simultaneous channels, one captures the GPS and the other captures the divided TCXO (partly divided by Si5351 /R and partly external HW divide tiny logic 74AHC1G4212. Once you are slower than ~1ms edges, software counting within the MCU can align/discard the captures, and the difference is the ppb error.
That works with standard building blocks.
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf