RamSerialAddr(0x0B) + POW n°1 + rising_edge on IOupdate repeated for n POW
RamSerialAddr(0x0B) + POW n°1 + POWn°2 + ...+ POWn°n + rising_edge on IOupdate
RamSerialAddr(0x0B) + RamAddr[0..1024] + POWn°1 + rising_edge on IOupdate ?
repeated for n POW.
or something else?
2. I want to first write the RAM, then I use DDS changing frequency by FTW,
and Finnally I use RAM I programmed earlier. How do I enable/disable RAM? (by
using CFR1<31> bit (Enable RAM)?). If this bit is low is it possible to write
3. Do an easy way exists to verify that the RAM is well programmed?
(Except watch the frequency variation on the DDS output)
1. The second option that you suggest is the correct one.
Firstly you write the control words to the RAM segment you want to address.
Then you set the PS0 and PS1 pins to select that segment.
then you send the instruction byte in the format shown on page 27 of the
datasheet, MSB is 0 for a WRITE operation, the address is 0x0B.
Then you send the sufficient number of 32bit words to fill the space defined by
the RAM segment beginning address and RAM segment end address.
The AD9953 uses the PS1~0 pins and the RAM segment control registers to work
out how many words to expect and where to place them in memory.
The 5th paragraph on the left of p 19 implies that no I/O UPDATE pulse is
required and that the RAM controller parses the values and writes them directly
2. If you set CFR1<31> to 0 then the RAM is powered down and will lose any
contents written to it.
To retain RAM contents, an need to set CFR1<31> to 1 and then program one of
the RAM segments in DIRECT SWITCH mode and with the start and finish addresses
identical. That way the segment will allow you to generate a sinusoid. If you
program the RAM destination bit to logic 1 then the freqency is controlled by
FTW0. See the section on direct switch mode on page 19.
3. You can read back the values from RAM by programming a 1 into the MSB of the