Post Go back to editing

AD9102 High speed signal generation issues

Hi 

I'm having difficulties setting up the AD9102 to output high speed signals (around 300ns). Output is shown with pictures from oscilloscope in the bottom. The pulse that I'm generating is ramp with values written in SRAM registers. Main problem is that for every 160ns of the displayed ramp, pulse becomes stagnant for 100ns, and then continues.  Also the part of the ramp that is stagnant isn't at constant location, but it moves throughout the ramp, as seen in picture three.

Clock I'm using is set to 150MHz and I'm using AD9102 on a custom board. 

I have succesfully managed to get output from prestored waveforms and signals prestored in SRAM, but only at lower frequencies (10+ us).

I have checked the clock output , but it works fine, I only set trigger to 0 after setting up the registers, to avoid possible interferances with unstable trigger. Supply lines also work fine. I'm using external reference, but have also tried with internal and have gotten the same results. I also tried to read SRAM register and thy all look as they were supposed to.

I tried to measure stagnant part of the signal and it lasts for 16 clock cycles. The ramp is then generated for 24 clock cycles, and again stagnant for 16 clock cycles. Two stagnant parts are seen on picture 4 with longer ramp.

code:

RESET pin is high
TRIGGER pin is high

//SPICONFIG
SPI_write_DAC(0x00, 0x0000);
//POWERCONFIG
SPI_write_DAC(0x01, 0x0000);
//CLOCKCONGIF
SPI_write_DAC(0x02, 0x0008);

//DACRANGE
SPI_write_DAC(0x08, 0x0001);
//DAC_DGAIN
SPI_write_DAC(0x35, 0x4000); 
//DACRSET
SPI_write_DAC(0x0C, 0x0000); 

//RAMUPDATE
SPI_write_DAC(0x1D, 0x0001);

//PAT_TYPE
SPI_write_DAC(0x1F, 0x0000);
//DAC_PAT
SPI_write_DAC(0x2B, 0x0001); 
//DACDOF
SPI_write_DAC(0x25, 0x8000); 
//WAV-CONFIG
SPI_write_DAC(0x27, 0x0000);

//PAT_TIMEBASE
SPI_write_DAC(0x28, 0x0100);
//PAT_PERIOD
SPI_write_DAC(0x29, 0x8000);

//DAC_CST
SPI_write_DAC(0x31, 0x8000);

//DDS_CONFIG
SPI_write_DAC(0x45, 0x0003);

//PAT_STATUS
SPI_write_DAC(0x1E, 0x0001);
//RAMUPDATE
SPI_write_DAC(0x1D, 0x0001);
//PAT_STATUS
SPI_write_DAC(0x1E, 0x0001);

//START_ADDR
SPI_write_DAC(0x5D, 0x0000); 
//STOP_ADDR
SPI_write_DAC(0x5E, 0x0280); 
//RAM_UPDATE
SPI_write_DAC(0x1D, 0x0001); 
//PAT_STATUS
SPI_write_DAC(0x1E, 0x0004); 
//RAM_UPDATE
SPI_write_DAC(0x1D, 0x0001);

for(j = 0 ; j <= 39 ; j ++){ 
   a = j + 24576; 
   b = j * 1000;
      SPI_write_DAC(a, b);
   }

//SRAM
SPI_write_DAC(0x6028, 0x0000); 
//PAT_STATUS
SPI_write_DAC(0x1E, 0x0001); 
//RAMUPDATE
SPI_write_DAC(0x1D, 0x0001); 
//PAT_STATUS
SPI_write_DAC(0x1E, 0x0001); 

TRIGGER pin is low

So I would like to know what is the cause for this behaviour and how to fix it.

Thanks!
Uros

attachments.zip
  • Hi -

    The attached regval and txt files are register settings and a RAM vector that program the AD9102 to output a gaussian waveform. This example is close to what you're trying to do it seems. Please provide a picture of what you would like the AD9102 output to look like.

    Thanks

    attachments.zip
  • I would like to output simple ramp, which is shorter than 400 ns. There are 4 pictures attached to my first post, which show my output. It is a ramp, as I'd like it to be, but it behaves strange. DAC seems to display values from SRAM for around 160 ns, and then stops for 100 ns (as seen in pictures).
    If I try to output ramp with length more than a few us, it seem fine, since this "noise" (the part where DAC display constant value) is short enough, that it doesen't disturb the ramp. I will add picture of a longer ramp as requested tomorrow, when I get in lab.

    What is the length of a signal that you attached? Also are you able to output 300ns ramp with AD9102?
    How can I open regval files?

    Thanks, Uros

  • Final goal is to create ramp, shown in picture below. The ramp must be 300 ns long, sampled with 40 points and the points are avalible in lock-up table. I would like to be able to modify the ramp afterwards as necessary. The waveform is avalible within a lockup table of 40 points.

    Since I'm using custom board, could you please export register values in PDF or excell sheet, so I can write them on my own AD9102.

    Thanks, Uros

  • I don't understand your code, since you are often setting read-only registers! (for example, you set POWERCONFIG register 0x0001 on value 0x0E00, which means that you  set 3 read-only bits on 1, but you don't even read them). Thanks anyway.

    I've managed to fix my output signal by adding 100nF cap from CLDO pin to GND, thanks to a previous post on a forum. Please update your datasheet by adding this information and if you can, just put minimum recommended schematic, together with atleast one working example.

    I still have a minor issue. Do you know what might couse these oscilation shown on picture? They appeared after I added capacitor on CLDO pin.