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.

LMK04816: PLL2 Internal VCO Core Range

Part Number: LMK04816


How many cores are LMK04816 internal VCO having?

Can I access to the range info for each core?

I would like to avoid locking to boundary of 2 VCO cores and causing inconsistent result after each VCO calibration because of choosing between 2 different cores.

  • Hello,

    there is only a single VCO in LMK04816 with a frequency range of 2370 to 2600 MHz.

    regards,

    Julian

  • Hello Julian,

    I have 2 LMK04816 fed with same source to each OSCin and locked in 0-delay mode with exactly same setting.

    Skew are then measured between same CLKout from both LMK04816.

    It appears that during low temp, the phase delay between both LMK04816 change (e.g 12ps => 5ps, result in 7ps difference) when writing R30 to trigger the internal calibration routine.

    If it wasn't caused by choosing different VCO core/band during internal calibration, do you have any idea what might have cause this delay repeatability issue across different LMK04816?

  • Hi Joe,

    do I understand this right? You have both LMK04816 started at room temp and outputs are aligned. But when you cool down the setup you see a phase difference between 2 outputs that is different vs room temp?

    Does the change from 12ps to 5ps only happen after you trigger the internal calibration routine? What happens when you trigger the routine again (and again..)?

    Regards,

    Julian

  • Hi Julian,

    Is fine to have differences between room temp and cold temp as long as it is predictable and able to characterize.

    The problem is fluctuation between 2 values when trigger the internal calibration routine at low temp by writing the R30.

    This is the result from 0 degC. The blue one is with internal VCO while the orange line is tested using external VCO where we don't see fluctuation although the drift is more significant. So I am guessing is due to internal VCO or the internal calibration routine.

  • Hello Joe,

    So I consider the 7 ps shift over temp small.  But understand your other concern about two different phase offsets.

    Let me see if I can find some info for debug that may help determine why you are seeing this.

    What sort of time line are you on?  Would early next week be ok?

    73,
    Timothy

  • Hi Timothy,

    That will be great if you can help as this is critical to my project.

    Looking forward for your further finding soon.

    Thanks!

  • Ok, I will update you next week based on my findings.

    73,
    Timothy

  • Hello Joe,

    So I'm thinking that the VCO calibration routine is probably selecting between two different capacitor codes.  This is resulting in two slightly different Vtune voltages which is resulting in a slightly different propagation delay time.

    • Could you confirm this by, after a lock in your unstable region, in addition to
      • checking the delay
      • check the Vtune (at CPout2)
      • Then could you do a readback of register R18[26:20].  This is the capcode.

    To later force a capcode, I think you should be able to set R18[28] = 1, then write the value into R18[26:20].

    Let me know how that goes for you, sorry for the delay.

    My thought is that if you did this check for every device, you could program the proper capcode for the given frequency.  Note one capcode would tune the same frequency over temp.  However at some other temperature extreme, it may favor selecting a different cap code (which would then be able to tune the entire range still).  So my expectation is that for each unit and each frequency you operate at, you would need to record the selected capcode.  But you could do this 'calibration' at room.

    73,
    Timothy

  • Hello Timothy,

    Yes! You are right.

    The capcode variation is clearly causing the 5-7ps spikes. We can see the spikes/dips correlate exactly to when the capcode changes from one value to another.

    The change in capcode over temp (0 to 45C) is around 2 steps worst case (Unit 1, VCO 2.4GHz). Others are at most 1 step difference.

    By fixing the capcode to a fixed value, we can eliminate the dips/spikes.

    It seems like the impact of temperature towards the capacitor code selection for a given frequency of the VCO is quite independent of temperature, and from our results, it looks like at most we see about +/-1 step change over our 0 to 45C operating range in the test above.

    So the idea is that we just need to do a one time “cal” to find the capcode, and then just keep using it forever. We would do the following in our firmware/software:

      1. If unit has not been “cal”, run the VCO cal, then store the CapCode in non-volatile memory, to be re-used
      2. If unit has a stored CapCode, then we will always re-use that CapCode, by running the normal LMK initialization, and then writing R18[28]=1 and R18[26:20]=CapCode.
      3. This would apply to any VCO frequency that we will use, i.e. each VCO frequency used will have its own CapCode stored and re-used.

    Here are some questions for proper implementation:

    1. This “One-time Cal” could be done in any temp, since there is little dependency on temp. This is important because we already have units in the field, and forcing a customer to do this at 25C could be problematic. By implementing the above FW code, this becomes transparent to the customer. Any issues with doing this in any temp?
    2. Do we expect this capcode value to drift for the life of the LMK04816 part? i.e. do we expect the cap-code to shift to a point where we would be unable to lock the VCO, or result in significant performance impact, over-time, such that we need to have a periodic calibration of this?
    3. Do we need to be aware of any other performance/functional impact if we forced the CapCode using R18? E.g. what kind of impact will a 1-step CapCode difference result in, aside from the phase offset differences? I assume the difference is negligible?
    4. What is the best sequence to follow to write the R18? Should this be done before programming everything other registers on the LMK), or should this be done first?
      1. In the test above, we program all of the registers on the LMK including R30, and then program R18[28]=1 + R18[26:20] = CapCode.
      2. Whenever we reinitialize the LMK, we set R18[28]=0, then set all other registers, and then set R18[28]=1 + R18[26:20] = CapCode again.

    Thanks for your advice.

  • Hi Joe,

    Great to hear.

    This “One-time Cal” could be done in any temp, since there is little dependency on temp. This is important because we already have units in the field, and forcing a customer to do this at 25C could be problematic. By implementing the above FW code, this becomes transparent to the customer. Any issues with doing this in any temp?

    No issues doing this at any time.  It has been designed for the cal to work at any temp and have overlap.  Having said that - all things being equal I would favor the closer to room cal.

    Do we expect this capcode value to drift for the life of the LMK04816 part? i.e. do we expect the cap-code to shift to a point where we would be unable to lock the VCO, or result in significant performance impact, over-time, such that we need to have a periodic calibration of this?

    No.

    Do we need to be aware of any other performance/functional impact if we forced the CapCode using R18? E.g. what kind of impact will a 1-step CapCode difference result in, aside from the phase offset differences? I assume the difference is negligible?

    The slight difference in cap code is a slight difference in tuning voltage.  Closer to the extremes of the Vtune range the Kvco may shift slightly.  I think this is the only other subtle effect.  There may be a slight performance delta, but it would be small within variation you would already be seeing.

    What is the best sequence to follow to write the R18? Should this be done before programming everything other registers on the LMK), or should this be done first?
    1. In the test above, we program all of the registers on the LMK including R30, and then program R18[28]=1 + R18[26:20] = CapCode.
    2. Whenever we reinitialize the LMK, we set R18[28]=0, then set all other registers, and then set R18[28]=1 + R18[26:20] = CapCode again.

    If it's not an issue, I would do #1 since that will be the closest behavior to normal.

    73,
    Timothy

  • Hi Timothy,

    Got it, thanks!