Trying a TCXO
A search on Digi-Key for ‘crystal oscillators’ returns 584,183 results! Limiting the search to TXCO, CMOS output and 10 MHz frequency brings that down to about 100, starting at a price of around $14. I ordered a couple of TCXOs from TXC corporation to try as they have a rated frequency stability of +-280 ppb. I chose 10 MHz as that is close to the 12 MHz internal clock frequency and I was concerned about bringing a signal of that frequency in to one of the iCEstick's I/O pins (I used the PMOD connector for this).
These are surface mount parts but only the four corner pins are used and those happen to have 0.1” spacing so it was possible to hand build a circuit on a small prototype board.
Using this instead of the internal clock on the iCEstick made quite a difference, in fact pretty much 10 times less drift as predicted by the chart shown previously.
To provide a standard interface to the ESP32 and GPS I created a wiring harness with connectors made out of pin headers. This allowed me to easily swap out different oscillators, ESP32 boards and GPS.
I found some $5 TCXOs on Aliexpress and made an adapter for them.
VCTCXOs
I also wanted to try out some VCTCXOs (VC means “voltage controlled” and it’s frequency can be offset slightly by applying an external voltage to a pin). I thought these would be easier to tune than adjusting the counter parameters in the FPGA.
Finally I got tired of hand making these oscillator boards so I designed a printed circuit board that I tried to make usable for both TCXOs and VCTCXOs.
I tried a TCXO based on MEMS technology as well (this was difficult to solder).
Finally I built a little extender board to allow easy access from the oscilloscope probes.
All of these oscillator boards perform pretty much the same but I haven’t really tested them all enough to declare a best solution. I guess I was hoping that one of them might be clearly better than the others but that wasn’t the case.
I had a system that worked well enough to demonstrate the concept so it was time to put it all in a box to take to the Maker Faire!