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.

CDCE6214: Fine tuning frequency on the fly

Part Number: CDCE6214

Hello,

I try to finely tune a frequency with using the CDCE6214. For this I wanted to use the Fractional Divider, and play with the Numerator.

I got it worked, with 25MHz input generating 24.576MHz output +/- 500ppm.

However it seems that it's not possible to get the PLL automatically follow the newly programmed fraction without resetting the PLL with the R0.SWRST bit. In this case the PLL recalibrates and unlocks and the output is broken.

=> Q1. Is it possible to force the PLL to re-read the Numerator register without reset ?

So I tried the DCO, with programmed increment or decrement value and pulsing . It works but there are major lacks which make it unsafe :

- it seems that the Numerator Register does not reflect the actual numerator value, so we don't know what is actually programmed (what is the total increment).

=> Q2. Is it possible to know the actual numerator value (or DCO delta) after DCO increment/decrement was used ?

- Numerator increment / decrement is not limited. I thought it would wrap around after 2^24, but you can pull it very far beyond 100%, so far that the PLL goes out of operational range, and unlocks.

- Resetting the PLL with the R0.SWRST bit does not reset the DCO increment, so it's out of control. Also tried to disable DCO but the DCO value is still active.

=> Q3. Is it possible to reset the DCO ?

Thank you,

Eric Heurtel - SOUND4

  • Hi Eric,

    Unfortunately the actual numerator value in DCO mode cannot be read back. You'll have to count the steps in your codes. If you manually change the numerator the PLL must be recalibrated. You can reset the DCO by toggling the DCO enable bit.

    Regards,

    Hao

  • Hello Zao, thank you for your answer.

    I did try to reset the DCO by toggling the DCO enable bit but it does not change the output frequency back to what is programmed in the Num/Den registers.

    I did do :

    R30 = PLL_NDIV = 0x62
    R31-R32 = PLL_NUM = 0x4D62FE
    R33-R34 = PLL_DEN = 0xFE8FBE
    R43 = FREQ_INC_DEC_DELTA = 0xFFFF

    Which gives me 24.576MHz from 25MHz clock.

    Then

    R3 = 0x38 = FREQ_INC_REG | FREQ_INC_DEC_REG_MODE | FREQ_INC_DEC_EN
    followed by
    R3 = 0x18 = DCO Increment transition
    several dozens times, which pulls the output freq to 25,6MHz

    Then

    R3 = 0 : reset DCO

    does not change output freq at all.
    I also tried R3 = 0x10

    Please can you double check it's possible to reset the DCO and tell me the right way to do it, without clkout interruption.

    thank you,

    Eric

  • Hi Eric,

    You are right I must have remembered that wrong. I'm afraid the only way is to do a software reset R0[2] (with DCO enable bit set to 0), but that will for sure disrupt output clocks. Otherwise you have to "manually" reset it by incrementing/decrementing the frequency back step by step.

    Regards,

    Hao