Post Go back to editing

AD9959 frequency linear sweep down

Category: Choose a category
Product Number: AD9959

Hi guys, I'm trying to use the linear sweep mode of AD9959 to sweep the frequency down. It seems that it can sweep from s0 to e0 but the e0 frequency must be larger. I tried to let p0 always 1 (I'm using channel 0) such that it starts at e0 but obviously it still has to finish the sweep up. Correct me if I'm wrong since I'm really interested in achieving this sweeping-down function! 



add more info
[edited by: zyli at 2:19 AM (GMT -4) on 10 Aug 2022]
Parents Reply Children
  • Hi, I'm not using the evaluation software. I send the registers to the DDS using Arduino, and also set the p0 pin with Arduino. 

  • I can provide all the registers' information I used in my setting if that helps

  • Basically, I just want to sweep from 100MHz to 90MHz and that's it, using the linear sweep function. 

  • Hi  ,

    I see. Can you instead provide me all your register information? 

    Regards,

    Jules

  • Hi, yes! 

    CFR: {0x80, 0x43, 0x00}
    CFTW0: 100MHz in hex (4 bytes)
    CW1: 90MHz in hex (4 bytes)
    RDW: 1 (4 bytes)
    FDW: 1 (4 bytes)
    LSRR: {1, 1} in hex (I tried different LSRRs, but none works)

    and also set the p0 to be low to ramp down. I mean, if I set p0=1 and CFTW0=90MHz, CW1=100MHz then it can ramp up; however it doesn't work the other way. 

  • Hi  ,

    I understand you want to sweep from 100MHz to 90MHZ.

     1. In linear sweep mode, S0 is loaded into the Channel Word 0 register (S0 is represented by one of three registers: Register 0x04 is for the frequency type of sweep) and E0 is always loaded into Channel Word 1 (Register 0x0A). If E0 is configured for frequency sweep, the resolution is 32 bits. The profile pins are used to trigger and control the direction of the linear sweep for frequency, phase, and amplitude. All channels can be programmed separately for a linear sweep. In linear sweep mode, Profile Pin P0 is dedicated to Channel 0. Profile Pin P1 is dedicated to Channel 1, and so on.

    2. With your CFR address, you activated the following:

    [15:8] 0x43 = Enabled Linear Sweep and DAC Full-Scale Current Control

    [0:7] 0x80 = Digital Power Down

    But I think you are also missing this line : 

    The AFP select bits determine the type of linear sweep to be performed. To enable linear sweep mode for a particular channel, the AFP select bits (CFR[23:22]), the modulation level bits (FR1[9:8]), and the linear sweep enable bit (CFR[14]) are programmed. So you need to program 

    [23:16] = 80 to enable frequency sweep.

    3. Your E0 should be in Channel Word 1 (Register 0x0A) of 90MHZ in hex.

    4. In linear sweep, each channel is assigned a rising delta word (RDW, Register 0x08) and a rising sweep ramp rate word (RSRR, Register 0x07). These settings apply when sweeping up toward E0. The falling delta word (FDW, Register 0x09) and falling sweep ramp rate (FSRR, Register 0x07) apply when sweeping down toward S0. 

    Just let me know if this helped you. 

    All the best,

    Jules

  • Hi, thanks for this information. I forgot to mention that I only need channel 0 at this moment, so I just need p0. The FR1 is also set up correctly because I can ramp the frequency up. I use FR1[9:8] = 00 for a two-level modulation. 

    I need to clarify my notion. I mean that my CFR[23:16] = 0x80(hex) = 10000000, so my CFR[23:22] = 10 for frequency sweep. My CFR[15:8] = 0x43=01000011, for full scale linear sweep. My CFR[7:0] = 0x00 and therefore no power-down feature is activated. And my E0, 90MHz, is stored in CW1 (0x0A) and my S0, 100MHz, is stored in CFTW0 (0x04). 

    I guess I can simplify my question to the following: can E0 has a lower frequency than S0? And if so, which p0 should it use, and is there anything different from E0 > S0? 

  • Yes E0 must be greater than S0.

    That said, you can accomplish the desired down sweep by taking advantage of the fact that the DDS is a sampled system. Normally, we think of operating only in the 1st Nyquist zone (0 to 1/2 the system sample rate). Therefore, we typically think of the useful range of FTWs as being from FTW = 0 to FTW = 1/2 of the maximum value. However, the DDS will accept FTWs in the 2nd Nyquist zone. That is, FTWs from greater that 1/2 the maximum value up to the maximum value.

    When you program a frequency in the 2nd Nyquist zone, you will see its image in the 1st Nyquist zone. Specifically, the 2nd Nyquist zone frequency and 1st Nyquist zone frequency appear as two frequencies "reflected" about the Nyquist frequency (1/2 the system clock sample rate).

    For example, let FTW0 represent a frequency in the 1st Nyquist zone and FTW1 represent the corresponding image frequency in the 2nd Nyquist zone. The FTWs relate as follows:

    FTW1 = FTWmax - FTW0, and

    FTW0 = FTWmax - FTW1

    Where FTWmax is the maximum FTW value (that is, all bits = 1).

    The clue is the negative sign imposed on the FTW on righthand side of the equations due to the subtraction operation.

    This means you can fool the DDS into doing a down sweep in the 1st Nyquist zone by programming an up sweep in the 2nd Nyquist zone. This will satisfy the E0 > S0 requirement, but still allow for a down sweep (in 1st Nyquist zone) by executing an up sweep (in 2nd Nyquist zone).

  • Ah I see, that's funny and working. Thank you! (though this means I need a low pass filter now)

  • I have a follow-up question: can I ramp two channels at the same time? Or they can start slightly different but the two sweeps overlap with each other? (Like trigger the p0 and p1 at different times, leaving enough time in the middle for the DDS to communicate?)