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.

LMX2572LP: Frequency Ramping

Part Number: LMX2572LP

Hello,

after attempting to use the phase *** function to phase modulate a signal, it seems this won't work because I can't get the phase to retard as I want it to - it only advances. I am now thinking that the best option to get specific phase shifts is to use the frequency ramping function - start at a known frequency, ramp up then immediately ramp back to the original value, and phase shift is the area under the ramps.

Ideally I want to give some kind of trigger to initiate a ramp sequence to give a phase shift, as per this picture:

I am struggling to do this when ramping automatically. I have my two ramps set up to give very small shifts for now, so I can see it on the scope. I have:

RAMP0_INC = 1, RAMP0_LEN = 1

RAMP1_INC = -1, RAMP1_LEN = 1

Setup 1:

When I set this up to run continuously (RAMP0_NEXT_TRIG = TOC TIMEOUT, RAMP1_NEXT_TRIG = TOC_TIMEOUT) it does exactly as I expect - the scope shows a slow, steady phase advance. The speed it moves at is exactly as I calculated, so no problem there.

The problem comes when I want to trigger it. I've tried the following options:

Setup 2:

Set to burst mode and tell it to run two ramps. The problem is that when I click the RAMP_EN button, there is sometimes a sudden large phase change. I need phase to be continuous so cannot have these large jumps. Is there any way continuous phase can be guaranteed when enabling/disabling RAMP_EN?

Setup 3:

Set it to continuous ramping, with external triggers controlled by the following trigger settings:

RAMP0_NEXT_TRIGGER = TRIGGER A

RAMP1_NEXT_TRIGGER = TRIGGER A

TRIGGER A = RampClk Pin Rising Edge

This does exactly the same as the continouous ramping setup (setup 1) with a constant gradula phase shift. It seems to be completely ignoring the requirement to wait for the external trigger before doing a frequency ramp.

Setup 4:

Set up for manual ramping (would prefer not to use this if possible). Using the 'Clock Ramp' and 'Reverse Direction' buttons I can see frequency changes in the appropriate direction, but I get a similar problem to setup 2. When I do a frequency step to jump to or from the initial frequency, there's sometimes a big sudden phase shift. Video below whows the issue. See the phase jumps at 12 and 16 seconds.

I'm really hoping that there's some setting I can change in a register somewhere that allows me to get reliable shifts without any of these big jumps. Let me know if there's something I can adjust to get this.

Thanks,

Gordon.

  • Hi Gordon,

    We did a mistake in our design that RAMP_EN is located in R0, so every time RAMP_EN is enabled (or disabled), a VCO calibration will be triggered and I think this is the big glitch you saw. 

    If your frequency change is not big (RAMP0_LEN = 1 is a very small frequency change), maybe you can put the VCO in "force" mode so that VCO calibration is bypassed. 

    Here is the test procedure:

    1. Before ramping, read back the VCO parameters

    - Set MUXout = 0 to put it in readback mode

    - Read R110, R111 and R112 to get the rb_VCO_SEL, rb_VCO_CAPCTRL and rb_VCO_DACISET values

    2. Set VCO_CAPCTRL_FORCE, VCO_SEL_FORCE and VCO_DACISET_FORCE = 1

    - the frequency output is off but don't worry

    3. Set VCO_SEL, VCO_CAPCTRL and VCO_DACISET to their read back values

    - the frequency output is back to normal 

    4. Do Step 2 freq ramping

    Let us know if this helps.

  • Hi Noel,

    what you say about the VCO calibration makes sense. I see what you're trying to do but unfortunately it doesn't work as I'd like. When I run through the sequence above,it loses lock as you said it would, then comes back when VCO_CAPCTRL is written. As soon as I click the RAMP_EN button, it goes out of lock and it stays this way even when I then disable RAMP_EN.

    This is my sequence:

    1 - set default config

    2 - set R=2, Fvco=4800, ChDiv=8, PFD_DLY_SEL=2

    3 - calibrate VCO

    4 - set OUT_FORCE=1 (write reg 7 with 0x40b2)

    5 - set LD_DLY=0 (write reg 60 with 0x0000)

    6 - set DEN to max value (write reg 38 with 0xffff, write reg 39 with 0xffff)

    7 - set RAMP0_INC = 1, RAMP0_LEN = 1, RAMP1_INC = -1, RAMP1_LEN = 1

    In this state, it's putting out a steady 600MHz signal from a 100MHz reference. It's ready for ramping, but gives the issues I mentioned in my first post on the thread. I then did the following to do what you asked above:

    8 - set MUXOUT=0 (write reg 0 with 0x2118)

    9 - read reg 110 (value returned is 0x0c68, giving binary 011 for rb_VCO_SEL on bits 7-5)

    10 - read reg 111 (value returned is 0x0011, giving binary 0001 0001 for rb_VCO_CAPCTRL on bits 7-0)

    11 - read reg 112 (value returned is 0xbe6f, giving binary 0110 1111 for rb_VCO_DACISET on bits 7-0)

    12 - set VCO_CAPCTRL_FORCE = 1 and VCO_DACISET_FORCE = 1 (write reg 8 with 0x6800)

    13 - set VCO_SEL_FORCE = 1 and VCO_SEL = binary 011 (write reg 20 with 0x5948)

    14 - set VCO_CAPCTRL = binary 0001 0001 (write reg 19 with 0x2711)

    15 - set VCO_DACISET = binary 0110 1111 (write reg 16 with 0x006f)

    At this point, the output is on and locked at 600MHz.

    16 - enable ramp burst mode, set number of ramps =2, RAMP0_NEXT_RAMP = 1, RAMP1_NEXT_RAMP = 0

    17 - enable ramp (RAMP_EN = 1)

    Now, the output is out of lock and cannot be recovered.

    I've tried playing with the FCAL_EN setting as well but can're get what I'm looking for with that either. Any other suggestions? I'm happy to leave ramping enabled and use an external trigger on a pin (setup 3 in my initial post) if triggering can be made to work. Either approach is fine, but I'm a bit stuck at the moment.

    Gordon.

  • Any update on this? I'd really like to know whether it's going to be possible. I'd love to use this part in a design, but can't really do so until I have a way of doing this frequency ramping/phase shifting.

  • Hi Gordon,

    I need to brainstorm this a bit, I will get back to you later. Thank you for your patience.