Post Go back to editing

AD9106:How to use the RAM pattern

Category: Datasheet/Specs
Product Number: AD9106

Hi:

I am evaluating the AD9106 for an application that requires the following:

  • DDS1 outputs a sine wave.

  • DDS2 uses a RAM pattern to generate a square wave or pulse that is synchronous with DDS1, at a frequency equal to 1/N of the DDS1 frequency.

  • To achieve tight synchronization, the RAM pattern address counter of DDS2 is driven by the MSB of DDS1.

I would like to understand:

a. When WAVE_SEL = 0 in the WAV_CONFIG register, should PRESTORE_SEL be set to 1 or 3?

b. When WAVE_SEL = 0, is the RAM pattern always controlled by START_DELAY and PATTERN_PERIOD?

c. If the answer to (b) is yes, does this mean it is impossible to achieve exact synchronization between the DDS2 RAM pattern and the DDS1 output frequency? (Because DDS1 is not an integer fraction of the sampling clock fs, while PATTERN_PERIOD can only be an integer multiple of 1/fs.)

d. If the answer to (c) is yes, how can the desired application be realized? 

Thank you.

Edit Notes

Modify title
[edited by: LiuZhenrong at 4:41 AM (GMT -4) on 11 May 2026]
  • Hi  ,

    Thank you for using AD9106.

    Please help to share your plan settings and target output.  Appreciate if you can share your SPI Dump as well.

    Thanks and kind regards,

    Alex

  • Hi Alex

    Thank you for your reply. I have already found the answer to that question from other sources.

    I now have another question. In the datasheet, the recommended initialization sequence for the AD9106 is as follows:

    1. Set CS, RESET, and TRIGGER to high.

    2. Configure the SPI port.

    3. Assert RESET by pulsing low then high.

    4. Write the necessary registers.

    5. Update the RUN and RAMUPDATE bits.

    6. Set TRIGGER to low.

    What I would like to know is: after following the above steps to start the DDS, if I need to make some changes, such as modifying the frequency via DDSTW or the phase via DDSPW, is it necessary to set TRIGGER back to high before modifying the registers? Is it possible to modify the registers while keeping RUN bit = 1 and TRIGGER = low, and then update the operation using the RAMUPDATE bit? By the way, my design only uses continuous sine waves and DAC constant output.

    I am currently in the circuit design phase and do not have an evaluation board on hand, so I cannot verify this. However, I would like to understand this feature in order to finalize my circuit design.

    Thank you.

  • Hi  ,

    You do not need to set TRIGGER back to high before modifying registers. You can write to DDSTW, DDSPW, or other registers while keeping RUN = 1 and TRIGGER = low, because all SPI writes go to shadow registers and can be done at any time. After writing, asserting RAMUPDATE will arm the transfer of these values to the active registers. 

    Thanks and kind regards,

    Alex