Tuesday, July 14, 2015

Rigol DS1054Z frequency counter accuracy

I recently found out that in addition to a software frequency measurement (shown in the bottom right) the DS1000Z series has a hardware frequency counter (shown in the top right).  The hardware counter is enabled by pressing the "measure" button, select counter, CH1.  The display shows 6 digits, or 1 ppm resolution, but I was unable to find a specified accuracy for the counter.  My testing suggests the accuracy at ~25C ambient temperature is 1-2ppm.

The first measurements I took were with a couple old metal can 4-pin oscillators I had salvaged.  One is a Kyocera 44.2368MHz that I measured at 44.2369MHz.  The second was a M-tron 40.000000MHz that I measured at 39.9999MHz.  The next thing I measured was a generic 12.000MHz crystal on a USB device which measured 12.0001MHz.   Together those measurements suggested an accuracy of <10ppm.  I don't have a high-precision clock source such as an oven-controlled crystal oscillator or GPS receiver with a timing output, so I needed another way to precisely measure the accuracy of the frequency counter.

My solution was to accurately measure the 1Khz test signal output from the scope since the frequency counter measured it at an exact 1.00000kHz.  I don't have access to a calibrated frequency such as a 5381A, but I do have Kasper Pedersen's nft software.  I connected the test posts for the 1kHz output to the Rx line on a USB-TTL module, and started up nft.

From the mode options I selected pulse at 1kHz.  I could tell the pulses were being detected because the "Events" count was going up by about 1000 per second.

I did a few 300s runs that gave an average error of -0.98ppm.  I then let it run for two 1000s tests which resulted in an average error of -1.68ppm.  I don't recall Dave's teardown identifying the timing source, but given the amount of error, I'd rule out an OCXO.   The accuracy is a bit better than the +-10ppm for a typical crystal oscillator, so maybe it uses a temperature-controlled crystal oscillator (TCXO).  If anyone knows for sure, drop a line in the comments.

In addition to testing accuracy, I tested the frequency range.  I probed the antenna output from a 433.92Mhz ASK/OOK transmitter.  The software frequency counter identified it as 435Mhz, but the hardware counter showed 66.1680Mhz.  The signal level was low (around 300mV), so that may have caused problems for the hardware counter.  I suspect it is good up to 100Mhz, which is more than I expect to need in the foreseeable future.  The accuracy and frequency range is sufficient for the things I want to do like checking oscillators on MCUs.  I found one of my $2 Chinese Pro Minis was oscillating at 15.9973Mhz.  The -169ppm error would be acceptable for a ceramic resonator, but this was with a HC-49S package crystal oscillator.

2018 Spring Update
I did a few 1hr calibration runs with NFT, which averaged out to -2.68ppm.  That suggests an aging drift of -1ppm since the original test I ran almost 3 years ago.


  1. what settings did you use one the first page of NFT for the COM port? I have an FTDI USB UART Cable, 3V3, and it doesnt see the pulses at the default settings.

  2. I don't recall changing the default settings for 1kHz input. At 1kHz and 50% duty cycle, the low time is 500uS, which is the same as a UART zero frame at 18kbps. If the FTDI is ignoring them at the default 115.2kbps baud rate, try a lower baud rate like 9600bps or 14.4kbps.

  3. Thanks, i had an error in my wiring. Everything works with default settings. Although i had to increase the NTP update interval from 4 to 8 seconds, i think its because the default ntp server doesnt support 4 sec update anymore.
    Also, my DS1054Z came out at about -2,0 to -2,2ppm error. I think i might upgrade the internal oscillator of the scope to an OCXO with below 1ppm error, so the Counter will be more useful :)
    many greetings and thanks for the article, helped alot!