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

Running the SI5351A with an external 10MHz reference

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

Update 2020-11-18: Added notes on generating your own frequencies for external clock on SI5351A

Update 2021-06-03: Added Link to Dr. Simon Schrödle’s measurements


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.

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:


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

Update 2020-11-18: Some notes on using the SI5351A with external clock

The SI5351A is only specified for 25MHz or 27MHz crystals on the XA/XB pins, and thus the ClockBuilder tool only supports these input frequencies. However, the nearly-identical SI5351C has a CLKIN input that is specified for 10MHz-100MHz operation. Since everything after the input circuits is common, feeding different clocks to the XA pin is possible as long as the oscillator circuit inside the SI5351 on pins XA/XB can handle the signal.

If you want to adapt this project for different frequencies, first get the ClockBuilder (or ClockBuilder Pro) tool from the Silicon Labs website. The tool generates the same register settings for both SI5351A and SI5351C, so in order to use the SI5351A with a clock input other that 25MHz or 27MHz, use the following procedure:

Update 2021-06-03: more data

Dr. Simon Schrödle did measurements regarding the required input level versus frequency, available here:


2014-09-17 by rincewind