Forums

AD9851 output amplitude

Started by Clifford Heath June 5, 2017
I'm building a sweeper/scalar analyser using an Arduino
with touchscreen LCD, AD9851 and AD8307. This is reasonably
well-trodden ground (except for the touchscreen). So I'm
surprised to find very few comments abut the AD9851 output
amplitude dropping off at higher frequencies.

I have it programmed to 20mA-ish output current, using a 2k2
resister. I'm using a module that has the same output filter
and topology as the evaluation board (7th order elliptical)
even though a Chebyshev is much better:
<http://www.edn.com/design/test-and-measurement/4441389/Optimizing-Arduino-and-the-AD9851-DDS-signal-generator>

At 1MHz, I'm seeing 3.5V P-P output, but that steadily falls
to 300mV at 20MHzand continues falling.

Is this a feature of this kind of DDS/DAC output?
I can always calibrate it out for the sweeper, but for
general sig-gen use I'd like a flat output over frequency.
Without adding a PGA, how can I achieve that?

Arduino code is here: <https://github.com/cjheath/AD9851LCD>

Clifford Heath.
On Mon, 05 Jun 2017 14:09:51 +1000, Clifford Heath wrote:

> I'm building a sweeper/scalar analyser using an Arduino with touchscreen > LCD, AD9851 and AD8307. This is reasonably well-trodden ground (except > for the touchscreen). So I'm surprised to find very few comments abut > the AD9851 output amplitude dropping off at higher frequencies. > > I have it programmed to 20mA-ish output current, using a 2k2 resister. > I'm using a module that has the same output filter and topology as the > evaluation board (7th order elliptical) > even though a Chebyshev is much better: > <http://www.edn.com/design/test-and-measurement/4441389/Optimizing-
Arduino-and-the-AD9851-DDS-signal-generator>
> > At 1MHz, I'm seeing 3.5V P-P output, but that steadily falls to 300mV at > 20MHzand continues falling. > > Is this a feature of this kind of DDS/DAC output? > I can always calibrate it out for the sweeper, but for general sig-gen > use I'd like a flat output over frequency. > Without adding a PGA, how can I achieve that? > > Arduino code is here: <https://github.com/cjheath/AD9851LCD> > > Clifford Heath.
What clock rate to the AD9851? Are you measuring before or after the filter? I suspect filter problems, or a clock speed much lower than in that article. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com
On 05/06/17 15:10, Tim Wescott wrote:
> On Mon, 05 Jun 2017 14:09:51 +1000, Clifford Heath wrote: > >> I'm building a sweeper/scalar analyser using an Arduino with touchscreen >> LCD, AD9851 and AD8307. This is reasonably well-trodden ground (except >> for the touchscreen). So I'm surprised to find very few comments abut >> the AD9851 output amplitude dropping off at higher frequencies. >> >> I have it programmed to 20mA-ish output current, using a 2k2 resister. >> I'm using a module that has the same output filter and topology as the >> evaluation board (7th order elliptical) >> even though a Chebyshev is much better: >> <http://www.edn.com/design/test-and-measurement/4441389/Optimizing- > Arduino-and-the-AD9851-DDS-signal-generator> >> >> At 1MHz, I'm seeing 3.5V P-P output, but that steadily falls to 300mV at >> 20MHzand continues falling. >> >> Is this a feature of this kind of DDS/DAC output? >> I can always calibrate it out for the sweeper, but for general sig-gen >> use I'd like a flat output over frequency. >> Without adding a PGA, how can I achieve that? >> >> Arduino code is here: <https://github.com/cjheath/AD9851LCD> >> >> Clifford Heath. > > What clock rate to the AD9851? Are you measuring before or after the > filter?
180MHz, multiplied up from 30MHz crystal. I've probed both before and after the filter.
> I suspect filter problems, or a clock speed much lower than in that > article.
The waveform looks clean from 1KHz to 30MHz. I've probed it both with the 10x and 1x probes, with the expected attenuation using 1x. It just drops in amplitude. I've seen other reports of that, but no discussion. I checked the 200R and 100R load resistors. The inductors are continuous at DC. I reckon the filter is working as designed. Anything else I can probe? Clifford Heath.
On a sunny day (Mon, 5 Jun 2017 14:09:51 +1000) it happened Clifford Heath
<no.spam@please.net> wrote in <Nk5ZA.2197$9T6.1409@fx22.iad>:

>I'm building a sweeper/scalar analyser using an Arduino >with touchscreen LCD, AD9851 and AD8307. This is reasonably >well-trodden ground (except for the touchscreen). So I'm >surprised to find very few comments abut the AD9851 output >amplitude dropping off at higher frequencies. > >I have it programmed to 20mA-ish output current, using a 2k2 >resister. I'm using a module that has the same output filter >and topology as the evaluation board (7th order elliptical) >even though a Chebyshev is much better: ><http://www.edn.com/design/test-and-measurement/4441389/Optimizing-Arduino-and-the-AD9851-DDS-signal-generator> > >At 1MHz, I'm seeing 3.5V P-P output, but that steadily falls >to 300mV at 20MHzand continues falling.
I just looked up that AD9851 datasheet. You would not happen to be looking at that DAC output? It has a 120k or so Rout, and in that datasheet is used to drive a comparator via a filter to make a digital clock signal. That comparator does not care so much about decreasing amplitude due to RC time at the DAC output. Figure 2 The slightest capacitance on the 20mA (if it is that much) into a 2k2 load, well you can calculate RC yerself I suppose. Good for audio at -3dB.
>Is this a feature of this kind of DDS/DAC output? >I can always calibrate it out for the sweeper, but for >general sig-gen use I'd like a flat output over frequency. >Without adding a PGA, how can I achieve that?
I would not want that freaking chip for free, there are much better ones there must be. MAYBE if you did drive that DAC into a zero Ohm virtual input of an inverting opamp, but WTF. Datasheet seems to use a 1:1 transformer to 50 Ohm. Well, tronix must have changed while I was not looking. But 50 Ohm and 20 mA in my old book is .02 * 50 = 1V, and not 3.5 V Somebody correct my cynism.
>Arduino code is here: <https://github.com/cjheath/AD9851LCD>
WHATSANDUINO?
>Clifford Heath.
From the heath-kits? <mud slam bang push your computer has been hijacked by the never cry virus, click <here> to >
On 05/06/17 20:21, Jan Panteltje wrote:
> On a sunny day (Mon, 5 Jun 2017 14:09:51 +1000) it happened Clifford Heath > <no.spam@please.net> wrote in <Nk5ZA.2197$9T6.1409@fx22.iad>: > >> I'm building a sweeper/scalar analyser using an Arduino >> with touchscreen LCD, AD9851 and AD8307. This is reasonably >> well-trodden ground (except for the touchscreen). So I'm >> surprised to find very few comments abut the AD9851 output >> amplitude dropping off at higher frequencies. >> >> I have it programmed to 20mA-ish output current, using a 2k2 >> resister. I'm using a module that has the same output filter >> and topology as the evaluation board (7th order elliptical) >> even though a Chebyshev is much better: >> <http://www.edn.com/design/test-and-measurement/4441389/Optimizing-Arduino-and-the-AD9851-DDS-signal-generator> >> >> At 1MHz, I'm seeing 3.5V P-P output, but that steadily falls >> to 300mV at 20MHzand continues falling. > > I just looked up that AD9851 datasheet. > You would not happen to be looking at that DAC output? > It has a 120k or so Rout,
You expected a current source to have a small Rout?
> and in that datasheet is used to drive a comparator via a filter to make a digital clock signal. > That comparator does not care so much about decreasing amplitude due to RC time at the DAC output. > Figure 2 > > The slightest capacitance on the 20mA (if it is that much) into a 2k2 load, > well you can calculate RC yerself I suppose. > Good for audio at -3dB.
There's bugger-all capacitance there.
>> Is this a feature of this kind of DDS/DAC output? >> I can always calibrate it out for the sweeper, but for >> general sig-gen use I'd like a flat output over frequency. >> Without adding a PGA, how can I achieve that? > > I would not want that freaking chip for free, there are much better ones there must be.
More expensive definitely. But this one has hordes of happy user, so there must be something wrong with how I'm using it.
> MAYBE if you did drive that DAC into a zero Ohm virtual input of an inverting opamp, but WTF. > Datasheet seems to use a 1:1 transformer to 50 Ohm.
That's to derive output from both polarities of the DAC for 3dB more power. Unnecessary unless you need it, and they say so.
> Well, tronix must have changed while I was not looking. > But 50 Ohm and 20 mA in my old book is .02 * 50 = 1V, and not 3.5 V
I think the output is already loaded to the 200 ohm for which the filter is designed, and a 50ohm load is clearly too much. However, what's the load of a 10x o'scope probe? (200R || probe) * 0.02 is something under 4V, so that looks about right.
>> Arduino code is here: <https://github.com/cjheath/AD9851LCD> > > WHATSANDUINO?
It's what people use who grew up from using PICs. Or in my case, home-brewing GNU compile chains for MSP430s and 68HC11's. Sue me, I used C++ on them all. And assembler if I felt inclined, in case you're wondering.
On 05/06/17 05:09, Clifford Heath wrote:
> I'm building a sweeper/scalar analyser using an Arduino > with touchscreen LCD, AD9851 and AD8307. This is reasonably > well-trodden ground (except for the touchscreen). So I'm > surprised to find very few comments abut the AD9851 output > amplitude dropping off at higher frequencies. > > I have it programmed to 20mA-ish output current, using a 2k2 > resister. I'm using a module that has the same output filter > and topology as the evaluation board (7th order elliptical) > even though a Chebyshev is much better: > <http://www.edn.com/design/test-and-measurement/4441389/Optimizing-Arduino-and-the-AD9851-DDS-signal-generator> > > > At 1MHz, I'm seeing 3.5V P-P output, but that steadily falls > to 300mV at 20MHzand continues falling. > > Is this a feature of this kind of DDS/DAC output? > I can always calibrate it out for the sweeper, but for > general sig-gen use I'd like a flat output over frequency. > Without adding a PGA, how can I achieve that? > > Arduino code is here: <https://github.com/cjheath/AD9851LCD> > > Clifford Heath.
I have a very cheap Chinese copy of the datasheet's reference diagram, including a 7-pole filter. The 3dB down point varies with load impedance. With a 50ohm load my output is ~500mVpp and the 3dB point is a little under 50MHz. At higher resistance, the 3dB point can be significantly lower. I also noticed that at certain output frequencies(!?) the comparator switching causes a glitch on the DAC's output. Disconnecting the comparator from the DAC's output removes the glitch.
On a sunny day (Mon, 5 Jun 2017 21:33:40 +1000) it happened Clifford Heath
<no.spam@please.net> wrote in <SQbZA.3011$Ip7.2863@fx14.iad>:

>On 05/06/17 20:21, Jan Panteltje wrote: >> On a sunny day (Mon, 5 Jun 2017 14:09:51 +1000) it happened Clifford Heath >> <no.spam@please.net> wrote in <Nk5ZA.2197$9T6.1409@fx22.iad>: >> >>> I'm building a sweeper/scalar analyser using an ************ Arduino ****************** >>> with touchscreen LCD, AD9851 and AD8307. This is reasonably >>> well-trodden ground (except for the touchscreen). So I'm >>> surprised to find very few comments abut the AD9851 output >>> amplitude dropping off at higher frequencies. >>> >>> I have it programmed to 20mA-ish output current, using a 2k2 >>> resister. I'm using a module that has the same output filter >>> and topology as the evaluation board (7th order elliptical) >>> even though a Chebyshev is much better: >>> <http://www.edn.com/design/test-and-measurement/4441389/Optimizing-Arduino-and-the-AD9851-DDS-signal-generator> >>> >>> At 1MHz, I'm seeing 3.5V P-P output, but that steadily falls >>> to 300mV at 20MHzand continues falling. >> >> I just looked up that AD9851 datasheet. >> You would not happen to be looking at that DAC output? >> It has a 120k or so Rout, > >You expected a current source to have a small Rout?
I did not expect anyting, do not even have a duino, nevrr used one either AFAIK.
>> and in that datasheet is used to drive a comparator via a filter to make a digital clock signal. >> That comparator does not care so much about decreasing amplitude due to RC time at the DAC output. >> Figure 2 >> >> The slightest capacitance on the 20mA (if it is that much) into a 2k2 load, >> well you can calculate RC yerself I suppose. >> Good for audio at -3dB. > >There's bugger-all capacitance there.
>>> Is this a feature of this kind of DDS/DAC output? >>> I can always calibrate it out for the sweeper, but for >>> general sig-gen use I'd like a flat output over frequency. >>> Without adding a PGA, how can I achieve that? >> >> I would not want that freaking chip for free, there are much better ones there must be. > >More expensive definitely. But this one has hordes of happy user,
So have bows and arrows. Mostly in reservations though.
>so there must be something wrong with how I'm using it. > >> MAYBE if you did drive that DAC into a zero Ohm virtual input of an inverting opamp, but WTF. >> Datasheet seems to use a 1:1 transformer to 50 Ohm. > >That's to derive output from both polarities of the DAC >for 3dB more power. Unnecessary unless you need it, and >they say so.
No, it is to short any output capacitance.
>> Well, tronix must have changed while I was not looking. >> But 50 Ohm and 20 mA in my old book is .02 * 50 = 1V, and not 3.5 V > >I think the output is already loaded to the 200 ohm for which the filter >is designed, and a 50ohm load is clearly too much. However, what's the >load of a 10x o'scope probe? (200R || probe) * 0.02 is something under >4V, so that looks about right.
I dunno what you use for scope, mine is just after Fred Flinstone, but my probes are 1/10 of 30 pF on X10, so say 3 pF. But you were driving 2k2, for 3 pF probe and 2k2 your 3 dB cutoff is already 24 MHz low pass. Now ads peeseebee and wire capacirance, and whatever any filter you use adds.
>>> Arduino code is here: <https://github.com/cjheath/AD9851LCD> >> >> WHATSANDUINO? > >It's what people use who grew up from using PICs.
Na it is just one of those hobby things that has 'shields' for those who do not know how to design hardware. And crappy C+++++ code that is a crime against humanity. There is a large industry pushing it, the shields, and the bloated objectional crompiler, eh conpiler, eh OK.
>Or in my case, home-brewing GNU compile chains for >MSP430s and 68HC11's.
I still have a 68000 chip somewhere, Never got around to it, my Z80 did everyting that had not already been invented.
>Sue me,
I am not in that crazy US
>I used C++ on them all.
Now wait, maybe I should move there,!! anyways the International Court Of Justice over here may look into C++ one day, at least once can hope so.
>And assembler if I felt inclined, in case you're wondering.
No, was not wondering, just curious why you could not calculate an RC time. No function in sayplusplus for it I take it? <mud mud slam use power button to prevent Duino from over-heating>
On Mon, 5 Jun 2017 14:09:51 +1000, Clifford Heath <no.spam@please.net>
wrote:

>I'm building a sweeper/scalar analyser using an Arduino >with touchscreen LCD, AD9851 and AD8307. This is reasonably >well-trodden ground (except for the touchscreen). So I'm >surprised to find very few comments abut the AD9851 output >amplitude dropping off at higher frequencies. > >I have it programmed to 20mA-ish output current, using a 2k2 >resister. I'm using a module that has the same output filter >and topology as the evaluation board (7th order elliptical) >even though a Chebyshev is much better: ><http://www.edn.com/design/test-and-measurement/4441389/Optimizing-Arduino-and-the-AD9851-DDS-signal-generator> > >At 1MHz, I'm seeing 3.5V P-P output, but that steadily falls >to 300mV at 20MHzand continues falling.
Is there gain after the DDS? The output complance range is limited.
> >Is this a feature of this kind of DDS/DAC output? >I can always calibrate it out for the sweeper, but for >general sig-gen use I'd like a flat output over frequency. >Without adding a PGA, how can I achieve that? > >Arduino code is here: <https://github.com/cjheath/AD9851LCD> > >Clifford Heath.
We use the AD9850 and a couple of other ADI dds parts, and a couple of ADI dacs in home-brew DDS applications, and we've never seen anything like that kind of rolloff. Usually we get a bit of filter rolloff and the usual sinc thing. You should be maybe a dB down at Fclk/3. Can you post the actual schematic? -- John Larkin Highland Technology, Inc lunatic fringe electronics
John Larkin wrote...
> > We use the AD9850 and a couple of other ADI dds parts, > and a couple of ADI dacs in home-brew DDS applications, > and we've never seen anything like that kind of rolloff.
I think he's trying to avoid a 50-ohm load. -- Thanks, - Win
On 05/06/17 23:48, Jan Panteltje wrote:
> On a sunny day (Mon, 5 Jun 2017 21:33:40 +1000) it happened Clifford Heath > <no.spam@please.net> wrote in <SQbZA.3011$Ip7.2863@fx14.iad>: >>>> I'm building a sweeper/scalar analyser using an ************ Arduino ****************** >>>> with touchscreen LCD, AD9851 and AD8307. >>>> I have it programmed to 20mA-ish output current, using a 2k2 >>>> resister. I'm using a module that has the same output filter >>>> and topology as the evaluation board (7th order elliptical) >>>> At 1MHz, I'm seeing 3.5V P-P output, but that steadily falls >>>> to 300mV at 20MHzand continues falling. >>> I just looked up that AD9851 datasheet. >>> You would not happen to be looking at that DAC output? >>> It has a 120k or so Rout, >> You expected a current source to have a small Rout? > I did not expect anyting, do not even have a duino, nevrr used one either AFAIK.
The AVR has nothing to do with the AD9851.
>>> The slightest capacitance on the 20mA (if it is that much) into a 2k2 load,
It's not a 2k2 load. 2k2 just programs the current sources fro the DAC.
>>> Datasheet seems to use a 1:1 transformer to 50 Ohm. >> That's to derive output from both polarities of the DAC > No, it is to short any output capacitance.
That's not what the data sheet and app-notes say.
> I dunno what you use for scope, mine is just after Fred Flinstone, > but my probes are 1/10 of 30 pF on X10, so say 3 pF.
20MHz Hung Chang 2502. You're right to point out that I don't know much about my probes though.
> But you were driving 2k2, for 3 pF probe and 2k2 your 3 dB cutoff is already 24 MHz low pass. > Now ads peeseebee and wire capacirance, and whatever any filter you use adds.
I think you're right, it just doesn't want to drive a load. I'll add a buffer.
> Na it is just one of those hobby things that has 'shields' for those who do not know how to design hardware.
I know how to design hardware, but I couldn't put two AVRs and a USB RS232 chip on a PCB for $4 myself. Could you?
> I still have a 68000 chip somewhere,
I still have a 68020 somewhere too.
>> Sue me, > I am not in that crazy US
Neither am I, and grateful for that ;).
> No, was not wondering, just curious why you could not calculate an RC time.
Probably for the same reason you couldn't spot that the 2k2 is not the R in question. Clifford Heath.