Post Go back to editing

AD9106:How to use the RAM pattern

Thread Summary

The user is evaluating the AD9106 for an application requiring tight synchronization between DDS1 (sine wave) and DDS2 (RAM pattern for square wave or pulse). The final answer clarifies that TRIGGER does not need to be set high to modify registers; changes can be made while RUN = 1 and TRIGGER = low, with updates applied using the RAMUPDATE bit. The user's concern about achieving exact synchronization due to the non-integer relationship between DDS1 frequency and the sampling clock fs is not directly addressed in the final answer.
AI Generated Content
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]
Parents
  • 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

Reply
  • 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

Children
No Data