Post Go back to editing

Agile frequency hopping with AD9910

Thread Summary

The user requires the AD9910 Eval board to generate a 1ms pulse at 200MHz, hop to 250MHz for 1ms, and then sweep from 275MHz to 300MHz in 5ms, all triggered externally. The solution involves using RAM playback mode with 3 profiles: 200MHz and 250MHz for 1ms each, and a 25kHz step size sweep for 5ms. External control via a microcontroller or FPGA is recommended for precise timing and sequence management.
AI Generated Content

Hello, my current project project requires agile frequency hopping and I am using an AD9910 Eval board. In particular, I require the DDS to generate a 1ms pulse of constant frequency and amplitude at 200MHz on an external trigger and then hop quickly (in a few miliseconds) to 250MHz for 1ms on the arrival of an external trigger and finally hop to yet another frequency 275MHz and then sweep the frequncy to 300MHz in 5ms, where the sweep is initiated by an external trigger. Is it possible to use RAM playback mode for this? How do I externally trigger AD9910?

  • Hi Bikram82,

    I was originally thinking you could use something like a pulse counter connected to the AD9910's profile pins so that after each pulse it would increment to the next profile.  The profiles could then be set to Direct Switch Mode for single frequencies or Ramp Up mode for sweeping.  However, there is no way to program the AD9910 to shut it's output off after 1ms.  If you could send extra pulses for shutting the output off you could set some profiles to have 0 frequency and/or amplitude.  Instead of counting pulses you could count edges (rising & falling) but then your trigger pulses would need to be the desired 1ms or 5ms length.   You might also be able to use OSK to shut the output off and use a one-shot that times out after 1ms but I cannot think of an easy way to later turn it off or switch it to 5ms.  Maybe some logic gates can detect which profile it is currently on and can switch this on/off.

    Aside from the complicated method(s) above, the only way I can think to do what you want is to control the AD9910 evaluation board with your own microcontroller or FPGA.  The trigger input would go to your micro and it could then go through the exact sequence you want.

  • Regarding the need to "hop quickly" from one frequency to the next, a DDS is hard to beat. Frequency hops with a DDS are virtually instantaneous.

    With regard to setting up the AD9910 for a specific sequential event scenario, a detailed understanding of the output signal requirements is necessary.

    For example, you state the 1st trigger should initiate a 200MHz tone that lasts for 1ms.

    What should the output be prior to the 1st trigger?

    The 2nd trigger initiates a 250MHz tone that lasts for 1ms.

    Is there a dead time (no output) between the end of the 1st event and the 2nd trigger?

    The 3rd trigger initiates a 5ms frequency sweep.

    Is there a dead time between the end of the 2nd event and the 3rd trigger?

    Are there contraints on the incremental step size for the frequency sweep portion of the signal?

    What should the output be after the 5ms sweep terminates?

    If you provide a detailed frequency vs. time description for the output signal, then we can proceed with a possible solution.

  • Hi,

    Thanks for your posts.

    The deadtime between the sequences is variable but will be in between 5-10 miliseconds. The states of the DDS output prior to the first trigger and after the last sweep do not matter as we are able to switch on/off the device we are driving with the DDS output very fast (less than 10 nanoseconds). We do not need incremental  frequency step size better than 10kHz which I believe should not be difficult to achieve.

    Best, Bikram

  • Regarding dead time, it helps that you can switch the output signal on and off via an external device. It relieves some of the burden of directly managing dead time via the AD9910.

    A 10kHz sweep step size over a 25MHz span requires 25,000 steps. You will not be able to achieve this with the RAM as it has a limit of 1024. However, if you can tolerate a step size of 25kHz, you only need 1001 steps, which satisfies the limitations of the RAM.

    Assuming a 25kHz step size, you should be accomplish the desired frequency vs. time profile using the RAM as follows...

    Assign 3 RAM profiles:

    PROFILE 0:     RAM address 0000-0001 (2)

    PROFILE 1:     RAM address 0002-0003 (2)

    PROFILE 2:     RAM address 0004-1004 (1001)

    Program the two RAM addresses assigned to PROFILE 0 with the frequency tuning word for 200MHz.

    Program the two RAM addresses assigned to PROFILE 1 with the frequency tuning word for 250MHz

    Program the 1001 RAM addresses assigned to PROFILE 2 with the frequency tuning words associated with the sweep (275MHz to 300MHz in 25kHz increments).

    Program the RAM step rate for 4.995us so that the 1001 frequency steps span the desired 5ms interval.

    With RAM enabled the profile pins select the corresponding RAM profile segment as follows...

    Force the profile pins to 000 to generate a 200MHz output.

    Force the profile pins to 001 to generate a 250MHz output.

    Force the profile pins to 010 to initiate a 5ms sweep from 275MHz to 300MHz.

  • This question has been assumed as answered either offline via email or with a multi-part answer. This question has now been closed out. If you have an inquiry related to this topic please post a new question in the applicable product forum.

    Thank you,
    EZ Admin

Before You Switch


Switching languages will make ADI Explorer unavailable. Resume your session by switching back to English and reopening ADI Explorer.