swept sine generator AD9851 - Page 1
Forum section: electronics / projects

author: R_G_B_
author_rank: Frequent Contributor
timestamp: February 11, 2015, 04:18:45 pm
content: Has anyone had any success designing a sine swept signal source with the AD9851?I have manged to set up a sine sweep with the arduino and AD9851 but its seems to slow and the noise floor is very bad.As the signal is swept the noise floor rises abruptly.I needed a cheap swept sine source so that I can characterise filters up to 30MHZI'm suspecting the sweep function is not fast enough to allow for characterisation of filters due to slow nature of the hardware and the program being sequential? e.g the 48bit words can not be loaded into the AD9851 fast enough for say a 10us second sweep speed?

author: fcb
author_rank: Super Contributor
timestamp: February 11, 2015, 04:40:10 pm
content: The AD9851 takes 18 clock cycles to change frequency, so I don't think that's every going to limit your system.The noise floor rising is while your sweeping is going to be largely due to the discontinuous nature of the sweep (something that might be a showstopper using the DDS). If you really need low noise, then building an analog VCO maybe the simplest solution.

author: R_G_B_
author_rank: Frequent Contributor
timestamp: February 11, 2015, 04:53:00 pm
content: yes you are correct I just noticed in the time domain the abrupt changes when the signal frequency is changed this explains the noise like FFT bin splitting in the frequency domain. Thank you for your input.

author: dom0
author_rank: Super Contributor
timestamp: February 11, 2015, 07:43:11 pm
content: You'll need a DDS supporting continuous sweeps (i.e. no phase jumping, the '9851 probably clears the accumulator on a register load or something like that) like the AD5930.If there is no hardware DDS meeting your requirements I'd consider a VCO (depending on your frequency ratios you might even want a RF VCO, a mixer and a LO to downconvert the VCO frequency) or building a DDS with a small FPGA and a parallel DAC.

author: R_G_B_
author_rank: Frequent Contributor
timestamp: February 11, 2015, 10:41:55 pm
content: I was doing frequency sweeping with the Analogue discovery but it is limited to 10MHZ this uses an FPGA which allows for close to continues sweep using luck up tables. The analogue VCO sweep won't be easy to obtain a flat frequency response over the entire sweep any suggestions?Thanks R G B

author: fcb
author_rank: Super Contributor
timestamp: February 11, 2015, 11:22:19 pm
content: Map the output of the VCO and compensate for this in software.

author: dannyf
author_rank: Super Contributor
timestamp: February 12, 2015, 12:13:09 am
content: I have done so with a PIC16F684. Very clean sweep over the entire range.

author: Guni
author_rank: Regular Contributor
timestamp: February 12, 2015, 12:37:31 am
content: Yes, you can realize sine sweep on AD9850/1. Simplest option is Parralle interface described in Application note - sweep is implemented. You can buy ready Parallel module."Other operational modes (Frequency Sweeping, Sleep, Serial Input) are available. Frequency sweeping allows the user to enter a start and stop frequency and to specify the frequency step size. Sweeping begins at the start frequency, proceeds to the stop frequency in a linear manner, reverses direction, and sweeps back to the start frequency repeatedly."Another option is Arduino + AD9850/1 ebay module. There is many project on PIC or AVR and AD9850/1 ebay module. Most complicated is to design your generator from scratch with AD chip because you need elliptic filter.BTWIt's funny because AD9850 at official distributor cost ~25-50$ but chines module just 5-10$

author: mrflibble
author_rank: Super Contributor
timestamp: February 12, 2015, 01:12:58 am
content: Quote from: dom0 on February 11, 2015, 07:43:11 pmYup. For example the AD9913. Another thing that's nice about it is the programmable profiles. Select another profile and it's active the next clock cycle.

author: nfmax
author_rank: Super Contributor
timestamp: February 12, 2015, 02:38:02 pm
content: Quote from: R_G_B_ on February 11, 2015, 10:41:55 pmLuck up tables - you'll probably get the right value out. I like the concept!

author: atferrari
author_rank: Frequent Contributor
timestamp: February 12, 2015, 02:45:20 pm
content: One of these, the ID ending with "33" or "34" IIRC, was designed exactly for sweeping. Could you change the IC and use it?Programming it looks as simple task.My Siglent signal generator seems to be designed around that IC.Edit:It is the AD5932, more exactly. Sorry (but I was close..-)/Edit

author: R_G_B_
author_rank: Frequent Contributor
timestamp: February 12, 2015, 04:31:05 pm
content: Luck up == look up thanks for the correction.

author: Bud
author_rank: Super Contributor
timestamp: February 12, 2015, 04:58:54 pm
content: Quote from: R_G_B_ on February 11, 2015, 04:18:45 pmAre you using a proper anti-aliasing filter and a proper clock frequency ?

author: R_G_B_
author_rank: Frequent Contributor
timestamp: February 12, 2015, 07:23:08 pm
content: I got a head of myself and did a decade sweep e.g increments of 1 up to 10 then 10 upto 100 ....100 upto 1000. Then realised what i was doing was not correct the increments should be very small to avoid large phase jumps and large discontinuous frequency changes.Its A9851 board interfaced with an arduino DUE.the data needs to be loaded in parallel if i'm going to be able to do fast sweeps. I have three a choices to hand use the parallel printer port, the DE0 nano FPGA or a UART via USB.

author: Pjotr
author_rank: Frequent Contributor
timestamp: February 12, 2015, 08:49:45 pm
content: Indeed, to minimise this noise you have to update the phase increment as fast as possible to keep the steps as small as possible. Ideally update at fs as the maximum theoretically possible.

author: R_G_B_
author_rank: Frequent Contributor
timestamp: February 15, 2015, 10:58:38 am
content: Just realized that I can use the analogue discovery pattern generator to drive DDS by loading the 8 bit data in parallel.8-bits at a time. Should be able to get a much faster sine sweep time doing it this way instead of loading the data in series.R_G_B

author: R_G_B_
author_rank: Frequent Contributor
timestamp: February 15, 2015, 11:02:32 am
content: not enough data words!

author: dannyf
author_rank: Super Contributor
timestamp: February 15, 2015, 01:27:48 pm
content: QuoteDepends on how fast is your fast. 40bits @ on 10Mhz spi is just 4us per frequency point.

author: R_G_B_
author_rank: Frequent Contributor
timestamp: February 15, 2015, 01:43:49 pm
content: looking at a total sweep speed of 10us. to get decent update on a digital oscilloscope in FFT mode. I see people have done this differently using a log detector and an ADC to capture the sample points. I just want to use a fast enough sweep so that it can be displayed on a digital scope in FFT mode.

author: dannyf
author_rank: Super Contributor
timestamp: February 15, 2015, 02:20:36 pm
content: QuoteYou probably want to come back in 100 - 150 years for something like that to be available.

author: R_G_B_
author_rank: Frequent Contributor
timestamp: February 15, 2015, 04:27:04 pm
content: it is possible see the the attachment: the analogue discovery can do sweep down to 1us. The bandwidth is limited to10Mhz.so its not possible to do a wide fast sweep up to 30Mhz with the ad9851?

author: dannyf
author_rank: Super Contributor
timestamp: February 15, 2015, 07:16:12 pm
content: QuoteDefinitely possible, depending on how fast your "fast" is.

author: R_G_B_
author_rank: Frequent Contributor
timestamp: February 15, 2015, 07:55:03 pm
content: AS I have explained. I require a frequency sweep from 1hz to 30 Mhz in a sweep time of 10us.

author: sync
author_rank: Frequent Contributor
timestamp: February 15, 2015, 08:24:43 pm
content: Quote from: R_G_B_ on February 15, 2015, 07:55:03 pmI don't think this will be useful in any way. 1Hz has a period of 1s. Which is 100000 times slower than your sweep time.

author: R_G_B_
author_rank: Frequent Contributor
timestamp: February 16, 2015, 09:19:48 am
content: I should be saying from 30Mhz to 1Hz. in other words I count down in frequency instead of up.A filter has its specification independently of how the frequency is fed into it. This is the logical approach I should have gone with.yes you are right the I need to take the waveform period into account.AD9851 does not support Chirp signals:http://members.ziggo.nl/mans-veldman/pa2hgj/doc/hamdoc/pdf/dds.pdfThanks for your inputs.