A PLL-based 25MHz OCXO for the FZ7001 Frequency Counter

Update 2017-10-02: Added Firmware archive, see bottom of page

I own an old ELV FZ7001 frequency counter:

However, after I got a used LPRO-101 Rubidium Reference Clock, I noticed that the OCXO inside the FZ7001 is not very stable: even after warm up, it will drift 1-2ppm depending on time and temperature, which is quite bad for an OCXO.
The FZ7001 OCXO is assembled from discrete components (probably with a normal crystal that is not optimized for this temperature), with a temperature controller (TLC271 and the vertical transistor as heater), and is then packed in insulating foam and a plastic box:

Unfortunately, the crystal frequency is 25MHz – OCXOs for that frequency tend to be exotic and expensive, while used 10MHz OCXOs can be purchased for ~10€ on eBay.

Since I had some SI5351A PLL ICs in the parts bin, I checked if these might solve the problem. The SI5351A which I have is only specified for an external 25MHz crystal, however, the SI5351C has a separate input that works with 10MHz, so the internal PLL should work with 10MHz if feeding it into the crystal input works. The SI5351A parts I have are pre-programmed, but a ATTINY13 has enough space to program the SI5351 with a fixed configuration after each power-up.

Schematic
PCB Layout

The PCB is a drop-in replacement for the original ELV OCXO board, and has options for separate use (I used Dirty PCBs, so I would get at least 10 boards) – the board can be used as a universal clock source with or without the OCXO (a 25MHz SMD  crystal can be populated, and the OCXO portion can be cut off):

The SI5351A works fine with the external clock – you need to feed the external input to the XA pin. Performance is more than adequate as a reference for a frequency counter:

Now after a few minutes warm-up time, the counter display is rock-stable.

Firmware source code includes a script that takes the output of the Silicon Labs ClockBuilder tool to generate the required initialization code:

OCXO1_dist.tar.gz

You need AVR-GCC, perl (for the converter script) and make.

2014-09-17 by rincewind