This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Not part number

Other Parts Discussed in Thread: LMK04228, LMK5C33216

Hello,

I have an application where I use a 10 MHz reference which will lock a 100 MHz VCXO through a digital PLL.

The equipment will work with an external reference and additionally, it has an internal 10 MHz reference which will be used as back-up solution when the external reference is not available.

I would need a solution which could act over the control voltage of the internal OCXO reference, so if the external reference fails the ouutput frequency of the 100 MHz VCXO continues being exactly the same when it will lock to the internal reference. If the equipment is switched on without external reference, the output frequency when operating with internal reference must be exactly th frequency configured in factory.

Could you recommend me a circuit to implement this functionality? 

Thanks in advance for your support and advices.

  • If your own DPLL is implemented in an FPGA, it's likely simpler to just implement a second DPLL to lock the external reference to the OCXO, extract the filtered TDC measurements, and scale them (possibly with voltage/temperature corrections) to the code of a high-precision DAC driving the control port of the OCXO. This preserves your ability to enter holdover or to DCO the OCXO with voltage/temperature corrections independent of the frequency lock, costs less than a separate auxiliary PLL, and takes up less board area. I'm a clocking support engineer so I don't know the DAC portfolio well, but by inspection, something like DACx0502 seems small, cheap, and decently accurate (2.5x2.5mm, ±1 LSB DNL/INL, $4 | 1ku). I could get someone from the DAC team to comment if the DPLL + DAC approach sounds better, as they may have a better recommendation for you.

    ---

    As a clocking support engineer, I'm qualified to recommend some PLL-based solutions. I'll preface this answer by saying I don't think we have a simple, drop-in solution for what you need in our PLL portfolio. I have some suggested approaches, but you may have better luck finding a device with a basic holdover PLL at another vendor.

    We have two approaches, analog and digital, for implementing a holdover function that maintains the setpoint frequency in the absence of a reference. Assume that you have buffered your external 10MHz signal to both your VCXO DPLL and your OCXO PLL.

    The analog approach uses an analog PLL such as PLL1 from LMK04228. Your external 10MHz drives the reference to the PLL, and the OCXO drives the feedback; the control voltage is connected to the charge pump and loop filter node. The LMK04228 offers a programmable holdover tuning word that can manually set the output voltage of the charge pump in the holdover condition, which could be used for initial programming. When the external 10MHz reference is present, the OCXO is locked to it, and the PLL begins sampling the charge pump voltage to record a holdover tuning word. If the external 10MHz fails, on-board loss-of-signal detection or loss-of-lock detection, or even pin control if external failure detection is available, will cause PLL1 to enter holdover, using the new tuning word to keep the OCXO nominally on-lock.

    This scheme has several advantages:

    • Relatively simple
    • Consumes little power
    • Requires little to no user intervention beyond initial programming

    However, there are several drawbacks:

    • LMK04228 PLL1 phase noise is likely worse than a 10MHz OCXO; at low bandwidth you'd need big caps and you'd still get considerable 1/f noise
    • LMK04228 is a 64-pin dual cascaded PLL with 14 outputs, and you'd be paying for all of it while powering most of it off
    • Holdover precision is only 10-bit across 3.3V range, depends on supply voltage, and may not have great INL

    The digital approach uses a fractional digital PLL such as LMK5C33216 to adjust around any frequency error in the OCXO, rather than tuning the control port voltage. The OCXO is used as a reference to a fractional analog PLL with a high-frequency, low-noise BAW resonator as the VCO. The feedback path is also sampled to a DPLL which attempts to lock to an external signal. Error in the DPLL accumulates as a tuning adjustment at the fractional divider of the APLL, slightly modifying the VCO voltage. The DPLL can take an initial holdover coefficient to tune out expected OCXO frequency error, and has an accumulated history function that preserves the frequency output of the PLL in holdover once a reference has been applied.

    This scheme has several advantages over the analog variant:

    • Tuning word for holdover has sub-femtosecond average precision
    • Control port for OCXO can be tied to a stable DC reference or GND, eliminating voltage coefficient in manual characterization
    • DPLL can act as a DCO for the OCXO in holdover, allowing pure digital tempco compensation (with an external temperature sensor)

    But it also suffers some of the same drawbacks, and a few new ones:

    • No direct OCXO output - must go through a PLL, which limits phase noise to performance of BAW and fractional PLL
    • Need a BAW VCO that isn't an integer multiple of 10MHz to avoid extreme integer boundary spurs - only one such device available (LMK5C33216)
    • LMK5C33216 has three DPLLs, three APLLs, and 16 outputs; again, paying for all of it while powering most of it off

    Any other solutions I could propose would be variations on that common theme. Again, let me know if I should get someone from DAC team to weigh in.

  • Hi Derek,

    Thinking on the ideas you have exposed very clearly.

    Maybe the best one could be the option of using a DAC. I don't have a FPGA but I have a microprocesor. 

    I made a mistake in my previous email, and we are not using a digital PLL. We use a phase detector to implement an analog PLL.

    The idea I have in mind after readig your options is the following. The 100 MHz VCXO will be locked to the 10 MHz external reference. The microprocessor will read the lock voltage through a A/D converter. 

    In case the 10MHz is not available. The microprocessor could generate the same lock voltage read before through a D/A converter. This voltage can be also compensated with temperature variations, reading the temperature and using a calibration table.

    Do you think this solution could work? 

    Thanks.

    Best regards,

    Ignacio

  • I think your proposed method with A/D and D/A would work, as long as the A/D and D/A have sufficient resolution and accuracy to satisfy your frequency accuracy requirement. If you're just monitoring the VCXO tuning voltage and operating in holdover, maybe now you don't even need an on-board 10MHz OCXO - just factory-calibrate against a known good reference across temperature, store the coefficients, and directly drive the control port with the D/A whenever external 10MHz is unavailable.

    One thing to consider is aging effects. Most highly performant VCXOs and OCXOs derive from some crystal oscillator, and over time the mechanical stresses in the oscillator will shift its frequency vs tuning voltage slightly. OCXOs tend to have tighter tolerance on lifetime aging relative to VCXOs. If the lifetime drift on the OCXO is smaller, applying constant calibration coefficients to an OCXO and locking a VCXO-based PLL to the OCXO reference will have greater lifetime frequency accuracy than applying constant calibration coefficients to the VCXO alone. This could be resolved by recalibrating VCXO coefficients across lifetime, but that may not be in scope for your application. Or maybe there's really good VCXOs with maximum aging drift that satisfies your lifetime frequency accuracy tolerance, and this is a problem solved through good component selection.

  • OK, thanks.

    Other option coluld be using a 100 MHz OCXO instead a VCXO. In this way, we will have the aging effect of an OCXO, and maybe this will be cheaper than a 10 MHz OCXO plus a 100 MHz VCXO.