0

I'm looking at using the si5351 in a signal generator. It will use a TCXO for improved stability, but I'd still like to calibrate it occasionally. To that end, one of the clock outputs will be set to 10MHz. When calibrating, I will connect an external reference source [probably GPS based].

Is there a simple, easy way to compare a [TCXO based] 10MHz clock to a reference? I started off hoping to just use an XOR gate & low pass filter, but that would only give the difference, not tell me if my clock was fast or slow.

My research into potential circuits has me confused. I have ended up with notes on: counters, reciprocal counters, integrating reciprocal counters, etc. Great for a high precision frequency counter, overkill for a calibration circuit.

Background: DDS generator [AD9851], frequency step 1/24 Hz, clock = 178,956,970.667 Hz.

Driven by Arduino, but that can change if necessary.

Alan Campbell
  • 1,019
  • 6
  • 10
  • Look into phase detectors as used in a classic PLL. If you are talking about manual calibration you can simply downmix to audio or a scope and move through the null to figure out the direction of adjustment. You can also downmix with two distinct phases as in an IQ system which will allow you to determine positive vs. negative frequency offset. – Chris Stratton Oct 17 '15 at 04:28
  • Can't you just count clock periods on both clocks for a long time and compare the counts? How many ppm error does your reference have? – user57037 Oct 17 '15 at 04:42
  • @mkeith using the si5351 PLL multiply and divide, I can hit the oddball clock of the AD9851 within 0.002 Hz... ASSUMING the TCXO is a "perfect" 25.00000000 MHz. Aging, drift etc. require re-programming the si5351. I'll have to double check the ppm error offered by TCXO manufacturers. – Alan Campbell Oct 18 '15 at 12:16
  • 1
    You can never calibrate better than your reference. I hope you see that. If you count the clock cycles of your reference and your clock to be calibrated over a long time base, you can very easily calculate the frequency deviation of your clock to be calibrated compared to the reference. If the reference is 1ppm, then all you have to do is count both clocks for 1 second. If the reference is 0.00001ppm, then you can figure out how long you need to count for and see if it is reasonable. Instead of reprogramming the si5351, you could just record the error in NVRAM and offset it in the AD9851 FTW. – user57037 Oct 19 '15 at 19:46

3 Answers3

1

Overkill for calibration?? If you are going to do calibration, you might as well do it as well as you get for free with basic components.

With a GPS receiver, the obvious output to use is the 1PPS (one pulse per second) output. If you count the 10MHz output from your clock chip against the GPS 1 second gate time, then you will have 0.1ppm count resolution. If the Arduino can't count an external 10MHz on an external input, capturing the count on another, then I'm sure there are other devices that can, or use less than 10MHz.

Don't forget, for calibration purposes, you don't need to count to 10M. If the accuracy of your clock is (say) .1% (I haven't looked up the data sheet, you do the sums for other numbers) then your count should be 10M +/- 10k counts. Using a 16 bit counter, allowing it to roll round when it gets to 65536, will give you an unambiguous range of +/- 27k when counting 10M in one second (hint, it overflows 152 times on the way there).

Neil_UK
  • 158,152
  • 3
  • 173
  • 387
  • I'm trying to avoid "feature creep" in the design. What started out as a signal generator looks like having a (integrating reciprocal) frequency counter too. If it's there for calibration, it may as well be a full blown function. I dread feature creep, it slows down design and turns a mouse into an elephant. – Alan Campbell Oct 18 '15 at 11:01
  • 1
    It's only a feature if you expose it to the user http://dilbert.com/strip/2013-02-25 keep it hidden for calibration http://dilbert.com/strip/2015-04-21 you would be surprised what some manufacturers keep hidden! – Neil_UK Oct 18 '15 at 17:17
  • The PPS is not necessarily low jitter nor fast rise time. I would be very hesitant to compare PPS vs 10 MHz over a time period of 1 second. I would want to do the comparison over very many seconds. – user57037 Oct 19 '15 at 19:51
1

You can do considerably worse than the picPET.

I've used it in multiple projects, and in reciprocal mode counting 10 MHz clock cycles relative to an external PPS, it is perfect for the calibration you have in mind.

Output is direct TTL serial, and it is dead cheap, meaning you can permanently build it into a device. I have several dozen embedded in various projects.

100% apply and forget!

ocrdu
  • 8,705
  • 21
  • 30
  • 42
colintd
  • 2,018
  • 2
  • 17
0

There are some good replies here, but overall I will be borrowing heavily from the work of Gene Marcus, W3PM.

His website has details on a DDS using the AD9850 [a close relative of the AD9851] calibrated to a GPS 1pps clock.

His latest project is an si5351 based VFO, again with GPS correction.

By combining his work, I should reach my target: a DDS, driven by highly accurate TCXO / si5351 combination.

Alan Campbell
  • 1,019
  • 6
  • 10