LeapSecond.com :: Lab Reports
EFC Linearity in a VCTCXO


I've been testing some TCXO (Temperature Compensated Crystal Oscillator) recently. These 14-pin DIP sized, hermetically sealed, metal can oscillators lack a coarse frequency adjustment but they do have an EFC (Electronic Frequency Control) input which makes them suitable for use in a GPSDO (GPS Disciplined Oscillator).

The EFC input is approximately linear. Today we measure how well the EFC input works and see how consistent the four units are.

The following plots were made by varying the EFC input from 0.5 V to 4.5 V in 5 mV steps and measuring the average frequency output at each step.

EFC measurement

The first plot shows us three things immediately: the EFC is positive (an increase in EFC voltage results in an increase in frequency, the EFC is essentially linear, and on closer inspection, we can see it is not quite linear. This is evidence of the expected non-linearity that most crystal EFC exhibit. Following is the plot:

We can see that the full 4 V range of the EFC changes the frequency by about 400 Hz. If we calculate a linear fit to this data we get a slope of 95.44 Hz/V for the EFC gain. Following is a plot of the EFC curve with the best fit line (left axis) and the residuals (right axis):

A summary of the data so far is:

EFC data set:
       count:      801.000000
         min:        0.500000 V
         max:        4.500000 V
       range:        4.000000 V
        mean:        2.500000 V
     std_dev:        1.156865 V

Frequency data set:
       count:      801.000000
         min: 10485547.083000 Hz
         max: 10485944.427000 Hz
       range:      397.344000 Hz
        mean: 10485773.032057 Hz
     std_dev:      111.032583 Hz

EFC slope:
       slope:       95.442681 Hz/V
      offset: 10485534.425355 Hz
  chi_square:        0.988895

Frequency residuals output:
       count:      801.000000
         min:  -3.506370e+001 Hz (resid)
         max:       13.304613 Hz (resid)
       range:       48.368309 Hz (resid)
        mean:  -6.436706e-009 Hz (resid)
     std_dev:       11.700834 Hz (resid)

If one assumes a linear, 95 Hz/V model for the EFC it's clear the fit is good but not perfect. Following is a plot of the EFC gain as a function of voltage. For example, if a DAC were to be used to set the EFC one would not want to assume the EFC gain was always 95 Hz/V. In fact the gain varies from about 170 Hz/V down to 70 Hz/V as shown in the following plot:

If this amount of EFC gain variation is too great for the application there are a couple of solutions. One is to note that although the gain varies by 2-to-1 across the range of allowable EFC the variation across 1 volt of center is less than 20 Hz. The other is to use a higher order fit to the EFC curve. Assuming aging and environment permit a second or third order polynomial could be used. The following table shows the decrease in standard deviation for the residuals for successive orders of fit:

Order Std. Dev. Offset Slope x^2 x^3
0 111.03 10485773      
1 11.70 10485534 95.44    
2 2.96 10485487 142.75 -9.463  
3 0.67 10485465 181.51 -27.246 2.3710

I would guess it is safe to use a 2nd order fit but I would be hesitant to use higher orders than than unless I checked a variety of units, in different environments, over time.

EFC gain variations

Raw data for the other three oscillators are:

Frequency data set:
       count:      801.000000
         min: 10485469.237000 Hz
         max: 10485971.523000 Hz
       range:      502.286000 Hz
        mean: 10485751.168557 Hz
     std_dev:      141.440340 Hz

EFC slope:
       slope:      121.736623 Hz/V
      offset: 10485446.827000 Hz
  chi_square:        0.991429

Frequency residuals output:
       count:      801.000000
         min:  -3.845831e+001 Hz (resid)
         max:       14.384599 Hz (resid)
       range:       52.842910 Hz (resid)
        mean:  -1.095031e-008 Hz (resid)
     std_dev:       13.094598 Hz (resid)

A summary of the data so far is:

Frequency data set:
       count:      801.000000
         min: 10485501.765000 Hz
         max: 10485962.266000 Hz
       range:      460.501000 Hz
        mean: 10485760.965471 Hz
     std_dev:      129.112663 Hz

EFC slope:
       slope:      111.086979 Hz/V
      offset: 10485483.248023 Hz
  chi_square:        0.990728

Frequency residuals output:
       count:      801.000000
         min:  -3.702651e+001 Hz (resid)
         max:       13.844014 Hz (resid)
       range:       50.870527 Hz (resid)
        mean:  -1.267343e-009 Hz (resid)
     std_dev:       12.432650 Hz (resid)

A summary of the data so far is:

Frequency data set:
       count:      801.000000
         min: 15728294.568000 Hz
         max: 15728896.150000 Hz
       range:      601.582000 Hz
        mean: 15728640.372840 Hz
     std_dev:      168.073696 Hz

EFC slope:
       slope:      144.326060 Hz/V
      offset: 15728279.557691 Hz
  chi_square:        0.986860

Frequency residuals output:
       count:      801.000000
         min:  -5.715272e+001 Hz (resid)
         max:       21.279675 Hz (resid)
       range:       78.432396 Hz (resid)
        mean:   3.239282e-009 Hz (resid)
     std_dev:       19.266078 Hz (resid)

Notice that the three 10.48576 MHz oscillators have quite different curves: 95, 111, 121 Hz/V. The fourth oscillator is 144 Hz/V but it's nominal frequency is 15.72864 MHz which is the equivalent of 96 Hz/V if it were 10.4 MHz like the other three.

Normalized plots

The following are frequency normalized plots (so that all four oscillators are represented):


EFC gain stability

I ran the EFC gain experiment on the same oscillator ten times to see how consistent the curve was for a given oscillator.

Lab setup

This experiment was done using a SR 620 counter  controlled by a PC over RS-232. This counter has a software programmable DAC allowing voltages from 0.5 V to 4.5 V in  5 mV steps to be created. The program alternated setting the DAC and taking multiple, averaged, frequency readings. I used either 100 10 ms measurements or 10 100 ms measurements. After 801 steps the full EFC range is covered.

The program to control the SR 620 is: com620b.exe

The program to analyze the data is: efc1.exe

The program to compute polynomial fits is: lsq2.exe

Return to LeapSecond.com home page.
Comments/questions to tvb.