Post Go back to editing

How to write successfully user data to RAM in AD9957

Hi,

It seems that this issue has already been raised at this forum. Unfortunately, even though I tried to follow exactly the suggested steps I couldn't get the data successfully delivered to the memory in AD9957. In particular, I'm not sure how to organize the sequence of signals during RAM loading. I tried as follows:

1. CS = low

2. Send RAM address (0x16)

3. Send N 32-bit words one after another (with I/O_Update issued after each of them)

4. CS = high

Sometimes, I see that the first bit is changed but all the other are unaffected by the above procedure.

I will appreciate any suggestions.

Bartek

Parents
  • I have applied 33MHz quartz (ILCX13) connected to REF_CLK pins. It works ok with single tone, so I would not expect any issues related to that. I have applied your suggestions and I get the signal at ca. 349 MHz for Q = 1 in the proposed formula for y(k):

    short y = 0x0000;

    short Q = 1;

    for (int k = 0; k < 1024; k++)
    {

    y = round(32767*cos(Q*2*3.14159*k/1024));

    RAMdata.bits31_16 = RAMvalue;
    RAMdata.bits15_0 = 0x0000;

    send(...)

    }

    However, if I change anything (e.g. Q = 2; or sin instead of cos) I get nothing at the output. Why such a simple change from cos() to sin() spoil the generation? By the way, I don't see any impact of PLL settings, like VCO range, on the generated signal. How, in that case, control the frequency of the arbitrary signal?

Reply
  • I have applied 33MHz quartz (ILCX13) connected to REF_CLK pins. It works ok with single tone, so I would not expect any issues related to that. I have applied your suggestions and I get the signal at ca. 349 MHz for Q = 1 in the proposed formula for y(k):

    short y = 0x0000;

    short Q = 1;

    for (int k = 0; k < 1024; k++)
    {

    y = round(32767*cos(Q*2*3.14159*k/1024));

    RAMdata.bits31_16 = RAMvalue;
    RAMdata.bits15_0 = 0x0000;

    send(...)

    }

    However, if I change anything (e.g. Q = 2; or sin instead of cos) I get nothing at the output. Why such a simple change from cos() to sin() spoil the generation? By the way, I don't see any impact of PLL settings, like VCO range, on the generated signal. How, in that case, control the frequency of the arbitrary signal?

Children
No Data

Before You Switch


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