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.

LMX2594EVM: Phase Shifting

Part Number: LMX2594EVM
Other Parts Discussed in Thread: LMX2594

I read in the LMX2594 manual that it is possible to alter the phase of the output by varying the MASH_SEED variable in the TICS Pro GUI - which I have been able to confirm to a certain degree. However, I have been trying to achieve an exact phase shift by altering this variable but am really struggling to comprehend what parameters determine the exact phase shift imparted.

On page 31 of the manual it states that 

Phase shift in degrees = 360 (MASH_SEED / PLL_DEN)  ( IncludedDivide / CHDIV)

Where PLL_DEN > PLL_NUM + MASH_SEED i.e. MASH_SEED <= PLL_DEN - PLL_NUM. What happens if this condition is violated?

If I am interpreting these variables correctly from the TICS Pro GUI I do not see anything like this relationship. On the same page of the manual it seems to suggest (its not written clearly!) that VCO_PHASE_SYNC needs to be 1 for this phase shifting to work - is this true? I also do not know how I can determine (or alter) the FRAC_ORDER from the TICS Pro GUI.

Could somebody advise how the exact phase shift imparted can be determined from the parameters under one's control?

I hope someone can help.

Many thanks,

Matthew

p.s. Screenshot below - in this case the expected phase shift should be 360*(9000/1000)*(4/128) = 101.25 degrees. Is this correct? Does VCO_PHASE_SYNC need to be 1?

  • Mathew,

    1. Where PLL_DEN > PLL_NUM + MASH_SEED i.e. MASH_SEED <= PLL_DEN - PLL_NUM. What happens if this condition is violated?

    ->In many situations, nothing.  But in some case, you may find that the shift due to the MASH_SEED is not as predicted.  Specifically, you might find that the phase linearly increases with MASH_SEED to a point, but then it starts decreasing.  So this is one restriction to avoid this condition

    2. If I am interpreting these variables correctly from the TICS Pro GUI I do not see anything like this relationship.

    ->For the 2nd order modulator, PLL_N≥45, for the 3rd order modulator, PLL ≥49, and for the fourth order
    modulator, PLLN≥54.  As for the variable names, you can mouse over them.  For instance, in TICSPro, if you mouse over  the "32" for "N divider" you will see "PLL_N" in the description

    3. On the same page of the manual it seems to suggest (its not written clearly!) that VCO_PHASE_SYNC needs to be 1 for this phase shifting to work - is this true? 

    ->  No, this is not true at all.  You can do phase shifting with VCO_PHASE_SYNC=0.  One common application is to try to align two devices, so the idea is that you sync them together and then adjust out small differences with MASH_SEED.  But you are not required to sync them.  

    4. I also do not know how I can determine (or alter) the FRAC_ORDER from the TICS Pro GUI.

    ->  That's a typo.  What is really meant is MASH_ORDER

    5. Could somebody advise how the exact phase shift imparted can be determined from the parameters under one's control?

    ->  Let's do your example:

    Phase shift in degrees = 360 (9000 / 1000)  ( 4 / 128) = 101.25 degrees

    One additional comment:  MASH_SEED is cumulative.  So if you toggle MASH_RST_N, then it will be as calculated above (although maybe not as this violates two datasheet restrictions).  However, if you put the cursor in the MASH_SEED box and press enter again, it adds 9000 for a cumulative total of 18000.  It may be easier to see what is going on if you  put a small value in MASH_SEED box and repeatably press enter and see the phase advance.

    Regards,
    Dean

  • Dear Mr Banerjee,

    Many thanks for your swift response. I have tried again just now and still cannot get expected behaviour. Do you have any idea why the following does not produce a 180 degree phase shift?

    Both PLL_N and MASH_SEED are within range.

    Many thanks,

    Matthew

  • Hi Matthew,

    At a glance, you should not check the box for MASH_RESET_N.
  • I realise that in the example above the PLL_DEN should have been 1,000,000, but even that still doesn't work. With PLL_NUM = 0, 0 <= MASH_SEED/PLL_DEN <= 1, meaning the maximum phase step size should be 360/128 = 2.8125 degrees. However, I cannot get the phase shifting to work at all now!
  • Hi Matt,

    OK, here is the test result.

    1. Program the device as follows with MASH_SEED_EN = 0 and MASH_SEED = 0. You should get it locked at 76MHz output.

    2. Program MASH_SEED_EN = 1

    3. Program MASH_SEED = 64000

    4. You should get 180 degrees phase shifted (= 360 x SEED /1000 / 128)

    OSCin is used as the trigger channel. 

  • the first picture should be this one.

  • Thank you Noel. A few points:

    1 .Your oscilloscope traces do not evidence any phase shifting.
    2. PLL_DEN needs to be >= MASH_SEED. You need to change PLL_DEN to 1,000,000.
    3. MASH_RESET_N is active low, meaning it should be checked so as not to reset the MASH function (I think!).
  • I now realise that you have included the before and after in the same trace which you have included twice. I can see the phase shift but cannot reproduce it.
  • I continually tried following your suggestion but have not been successful. I would be ever so grateful if you could try again using the settings I have below and let me know if it still works. (Notice that the doubler is x2).
  • Update - setting the doubler to x1 allows me to reproduce your phase shift. However if I set the doubler to x2 it doesn't work anymore. I attempted to change PreR and R too and they also break the phase shifting.
  • Mathew,

    Realize that since you are using the channel divider of 128, this creates 128 possible phases.   I see you are not in phase sync mode, so the output state is different between power cycles or every time you calibrate the VCO.  In this case, I would expect the phase to shift, it's just that the starting phase would be different.  Also reading above, MASH_RST_N is negative polarity, so disabling this disables the mash engine.  Maybe we should have just called it "MASH_EN" to be less confusing.  So when you say it doesn't work anymore, I'm not sure if you mean that you are not getting the phase shift you expect, or the phase shift does not work at all.

    If you use phase sync mode,OSCin doubler interfers with this except for special cases, and this is not one of them.  Also, when there is an included divide in the N divider path, this adds more restrictions and typically using MASH order higher than 2 can sometimes give erratic results.

    Regards,

    Dean

  • Dear Dean,

    Thank you for responding. To summarise the current state of affairs - Thanks to both yourself and Noel, I have been able to get the phase shifting to work. What was required was simply to drop the doubler to x1 from x2. On power up I normally load the default settings which sets the doubler to x2, but I now realise that x1 also fulfils my requirements. I do not know why setting it to x2 interferes with the phase shifting - but it does - perhaps it would be a good idea to update the documentation to reflect this. Would be good to confirm this at your end of course.

    Thanks for your help with this - it is very much appreciated.

    WIth best wishes,

    Matthew
  • Finally, I would like add that with PLL_NUM = 0, according to the documentation 0 <= MASH_SEED/PLL_DEN <= 1, meaning the maximum phase step size should be 360 * Included Divide/CHDIV. In all of the examples that I have that work (and those given by Dean too), this is violated. I am lead to believe that the restriction that PLL_DEN > PLL_NUM + MASH_SEED i.e. MASH_SEED <= PLL_DEN - PLL_NUM is not actually something to worry about (perhaps the restriction is even stated incorrectly and the real hardware behaves differently). Would appreciate a final comment here.
  • Hi Matthew,

    Datasheet is correct, and you can get x2 worked if you put SEED = 640 and then press enter 100 times (to get 180 degree phase shift).