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.

LMX2594: Decrementing the output phase on the fly using MASH_SEED

Part Number: LMX2594

Hello. 

I'm adjusting the output phase of a LMX2594 device using the MASH_SEED register. 

The datasheet states "Every time the MASH_SEED field is programmed, it ADDS this MASH seed to the existing one". So I can advance in phase by continuously writing 1 into the MASH_SEED register.

In my application I would like to adjust the output phase on the fly, smoothly.  To this end, is there a way to decrement the MASH_SEED?  Would it be possible to to write a 2's complement -1 into the MASH_SEED registers to adjust the phase in the other direction?

I'd like to be able to increment and decrement the output phase of the LMX2594 with minimual "glitches" on the output.  I don't think I can write MASH_SEED and toggle MASH_RESET_N as I think this will "glitch" the output phase. 

Thanks for the help. 

  • On further investigation it seems that this is possible by overflowing the MASH_SEED adder within the chip.

    For instance, if I have no channel divides or included channel divides my output phase is :

    phase = 360/FRAC_DENOM.

    So if FRAC_DENOM is 127, 0 degrees is MASH_SEED = 0, and 360 degrees is MASH_SEED = 127.

    So for instance, if my current MASH_SEED is 126 and I want to go back to a MASH_SEED of 1, then I need to increment the internal MASH_SEED value to 128. I can do this by programming MASH_SEED to 2, which will do mod(126+2, 127) = 1.

    Would TI be able to confirm that this method is supported?   I don't know the details of how your chip works, but this method appears to work without any issues. 

  • Yes, this is supported.

    Specifically, the MASH_SEED is cumulative.  If you program MASH_SEED=1 from an initial state, then you get a state of 1.  But then if you program MASH_SEED=1 again, then you get MASH_SEED=1+1=2  This is intentional in the design.  Now if you toggle MASH_RST_N, then it will reset it to the state of 1.

    In table 27, under the MASH_SEED description, it says this:

    The initial state of the MASH engine first accumulator. Can be

    used to shift phase or optimize fractional spurs. Every time the

    MASH_SEED field is programmed, it ADDS this MASH seed to

    the existing one. To reset it, use the MASH_RESET_N bit.

    Regards,

    Dean

  • Hi Dean.

    Thanks for the information.

    Unfortunately, I specificially do not want to use MASH_RESET_N because this (and the programming) will result in big jumps in phase and glitch the output.

    For instance, assume I'm at mash_seed 50 and want to go to 45 and assume PLL_DEN = 127, PLL_NUM = 0.

    If I follow your suggested method:

    1) I program MASH_SEED to 45.
    2) LMX2594 internal MASH SEED jumps from 45 to 95 (50 + 45). (Big jump in output phase)
    3) I use MASH_RESET_N, MASH SEED goes from 95 to 45 (Big jump in output phase again).

    What I'm interested in is whether I can do the same without using MASH_RESET_N by:

    1)I program MASH_SEED to 122. This adds 122 to the current seed of 50 = 172. mod(172,127) is 45, which is the MASH SEED value I want. No big jumps in phase (hopefully) occur.

    I'm interested if TI supports this mode of operation. I don't violate PLL_DEN > PLL_NUM + MASH_SEED, as 127 > 0 + 122.

    Thanks for the help.

  • Lets suppose that your acccumulator state is at 50 and you want to go to a state of 55. Then all you do is program MASH_SEED=5 without reset and this is done.

    Lets suppose you are at state 50 and you program MASH_SEED of 127 without reset. As this is a full period, I would expect the same phase.

    Now lets suppose that your accumulator state is at 50 and you want to go to state 45. You can't program a negative value, if you program in 122, then theoretically (50+122) mod 127 = 45 then you should get the result of 45.

    So yes, this should work.

    If you are using our TICSPro software, one thing you can do program the MASH_SEED and put the cursor in the box. Then you can just press enter and you can see the phase advance.

    Regards,
    Dean
  • Thanks Dean. Thanks for confirming that the method works and my understanding is correct. I'll let you know if I see any weird behaviour.