Distributed attenuators

On Thursday, July 11, 2019 at 4:23:03 PM UTC+2, Phil Hobbs wrote:
On 7/11/19 9:12 AM, Chris Jones wrote:
On 11/07/2019 08:06, Phil Hobbs wrote:
On 7/10/19 5:46 PM, John Larkin wrote:
On Wed, 10 Jul 2019 15:58:43 -0400, Phil Hobbs
pcdhSpamMeSenseless@electrooptical.net> wrote:

<snip>

The application here is photomultiplier replacement, and one of the
things people like about PMTs is that you can vary the gain continuously.

Did something like that at Nijmegen in the late 1990's. The lasers involved worked at wavelengths too low for PMT's so I stuck a wideband variable gain amplifier onto a photo-diode

Stuck two fast Burr-Brown VGAs in series to get fast forward gain, and two cheap slow Linear Technology parts in series to do the DC feeback to keep the average long-term output at 0V.

Decoupling the rails well enough to keep the whole mess stable was demanding, but I designed it onto a printed circuit board in one hit.

I used a Texas Isntruments CMOS-input op-amp to monitor the average output, and the data sheet failed to mention that it had an input capacitance of about 15pF which I hadn't compensated, so the board oscillated (rather slowly) when I first turned it on. A 3.3pF compensation capacitor fixed that, but stuck out like a sore thumb on surface mount board.

I hadn't been fond of Texas Instrument before that , and that didn't make me any fonder.

--
Bill Sloman, Sydney
 
On Friday, July 12, 2019 at 10:26:45 AM UTC-4, Chris Jones wrote:
On 12/07/2019 00:22, Phil Hobbs wrote:
On 7/11/19 9:12 AM, Chris Jones wrote:
On 11/07/2019 08:06, Phil Hobbs wrote:
On 7/10/19 5:46 PM, John Larkin wrote:
On Wed, 10 Jul 2019 15:58:43 -0400, Phil Hobbs
pcdhSpamMeSenseless@electrooptical.net> wrote:

Hi, All.

So I have this gig building a cathodoluminescence system for use in
electron microscopes.  It needs a programmable-gain amp with about 0.2
dB steps, low noise, and a bandwidth of > 40 MHz.

A previous voltage-controlled amp board for a biomed customer used a
256-step dpot and a power-of-two PGA made from a 74HC4051 MUX and a
resistor string.   Except at the very lower limit, the dpot's
attenuation is never more than 6 dB, which helps the noise a lot.

A little Cortex M0+ (LPC804) measures the control voltage and sets the
dpot and PGA.  It has a calibration loop that executes in a second
or so
at boot-up, so everything is kept relatively copacetic and accurate..

Thing is, its BW is limited to less than 1 MHz by the dpot, and
depends
on the dpot setting, so there's no straightforward way of
compensating.
Thus there's no way it's ever getting to 40 MHz.  For this one, I
wanted
to use a distributed attenuator--an RC ladder network with switches in
the shunt legs, like this:

In 0-*--Rser1---*---...---*--RserN---* ---------*---0 Out
      |          |         |          |          |
      *--Cpar1---*         *--CparN---*        Cload
                 |                    |          |
                 *-----*              *-----*   GND
                 |     |              |     |
               Rsh1   Csh1           RshN  CshN
                 |     |              |     |
                 |     |              |     |
                 *-----*              *-----*
                 |     |              |     |
               SWITCH Csw           SWITCH Csw
                 |     |              |     |
                Rsw    |             Rsw    |
                 |     |              |     |
                 *-----*              *-----*
                 |                    |
                GND                  GND

The math for this is fairly ugly, so I coded up a smallish C++ program
to optimize it, using the Nelder-Mead downhill simplex method
(amoeba in
Numerical Recipes, 2nd Ed.).

The penalty function for the optimizer is a linear combination of the
accuracy of the steps (mean error over frequency) and the rolloff,
with
an adjustable constant setting the balance.

Turns out that with fairly garden-variety CMOS bus switches (5
ohms, 3.5
pF Coff) I can do a 4-bit distributed 0-6 dB attenuator with RMS error
of a couple of tenths of a percent over the whole range.  (There are
better ones, but few I know of work above 3.6 V.)

I made some effort to include realistic strays in the analysis, so I
expect it to work pretty well.

Fun.

Cheers

Phil Hobbs

(If anybody has a similar problem, I'll happily share the code.)

Lots of people make logic-programmed RF step attenuator chips. Can you
work at 50 ohms?

Not easily.  Also none of those I know of go in such small steps--6
dB/16 = 0.375 dB.  The idea is to make a tolerable mimic of a
continuous control, without trashing the noise performance.  A
6-section attenuator would be down below 0.1 dB/step.  It would be a
lot easier to do with relays, but that would take a lot of power,
space, and cost.  This gizmo will come in way below $1 BOM cost,
counting just the attenuator and switches.

I'm curious: if you can tell me, what is the signal source, i.e. is it
a current or voltage, what sort of source impedance, amplitude? And
what is the load? Do you only need 6dB range?

It's coming from the front end, and will probably be a CFA.
Thanks. Is the CFA stage in turn taking its input from a TIA with
photodiode? (only if you are comfortable discussing this)

I think Phil said in another thread that he's using an avalanche
photodiode for this. Not sure if that's true anymore.

George H.
If so, do you do some gain control by changing the feedback resistor? (I
imagine that this would give the lowest noise but I can't think of a way
to do it without the parasitic capacitaince being annoying.)

The following stage is a noninverting amp built from an HC4051 and a
string of resistors, wrapped round something like an OPA695, with gains
from 1 to 32.  There's a micro on the board, so we use that to get rid
of the offsets.
Thanks.
I did a few PGAs for cellphone transmitters, both at baseband and at
RF and also a thing that pretended to be an analogue VGA but really
used a 1dB stepped attenuator and a VGA stage to fill in between these
steps, with some hysteresis on the stepped attenuator.

Right, that's the idea.  The problem with transconductance devices is
that you have to divide the signal down to something the transconductor
can cope with, e.g. +- 60 mV, and that trashes the SNR.  They're great
at high gain.
Yes fair enough.

The one transmitter IF stage that I did with an analog VGA stage used
two MOSFETs as the input devices. Two, because like most circuits on
chips it was differential. The MOSFETs were operating in the triode
region so that the AC input signal on the gates could be fairly large.
The sources of those MOSFETs were grounded directly, and the drains were
each cascoded with an NPN bipolar transistor. We did the gain control by
adjusting the base voltage of the bipolar devices, which adjusted the
D-S voltage of the MOSFETs. It was only practical because we could make
a bias circuit using devices that matched to the ones in the signal
path, but for discrete devices that would be hard, and small enough
MOSFETs to get a low enough gm are not readily available as discretes.
It wasn't especially low-noise, but probably a bit better than the usual
multiplier circuits, above the 1/f region.

The application here is photomultiplier replacement, and one of the
things people like about PMTs is that you can vary the gain continuously.


One of my preferred techniques for a baseband PGA was to convert the
input signal to a current and feed it into a digitally-chosen tap on a
resistive ladder - you can use R:2R for ~6dB steps and R:75R (or
R/5:15R) gives 1dB steps. With the input signal being a current, the
resistance and nonlinearity of the switches didn't matter much so they
could be small. I forget how I did the 1/32dB steps, maybe just a
linear scaling of the gm of the stage that fed the signal current to
the ladder, as linear is a reasonable approximation over 1dB range.
Those things are fun on a chip, with well matched resistors being very
cheap.

As long as you only care about the ratios, of course. ;)
Yes, it was important to use the same resistor material in the gm stage
that drove the attenuator. I generally used unit resistors where I
needed matching. I didn't have a good feel for what would happen to the
matching if I didn't, and it was a nice challenge, and an excuse to
write some scripts to figure out the best configurations of unit resistors.

You could also add 0.2dB steps by making the terminating resistor at
one end of the ladder have some taps, and select one of those taps to
your output, but then switch resistance for those taps would matter.
I now remember that to make the fine steps over a <1dB range, I switched
in shunt resistors across the termination at the end of my R-75R ladder,
similar to what you did except that all of my shunt resistors were
switched across the same point. I think this is better than what I
suggested above because switches at ground have better and more constant
on-resistance than if they are in the signal path, if you're using those
nice NMOS only bus switches.

Anyway thanks for sharing.
 
On 10.07.19 8:58 PM, Phil Hobbs wrote:
Turns out that with fairly garden-variety CMOS bus switches (5 ohms, 3.5
pF Coff) I can do a 4-bit distributed 0-6 dB attenuator with RMS error
of a couple of tenths of a percent over the whole range.  (There are
better ones, but few I know of work above 3.6 V.)

Which garden did you find that in? I ended up using the DG3257 for
similar specs (5.5 Ί / 3 pF), and TI has since released the TMUX1511,
but more variety sure would be nice.

The math for this is fairly ugly, so I coded up a smallish C++ program
to optimize it […]

As very much a C++ (D) person myself, I can really recommend Julia for
that sort of work. Fast, concise, and amazing amount of cutting-edge
algorithm research is available in library form on GitHub.

— David
 
On 7/13/19 12:42 AM, David Nadlinger wrote:
On 10.07.19 8:58 PM, Phil Hobbs wrote:
Turns out that with fairly garden-variety CMOS bus switches (5 ohms,
3.5 pF Coff) I can do a 4-bit distributed 0-6 dB attenuator with RMS
error of a couple of tenths of a percent over the whole range.  (There
are better ones, but few I know of work above 3.6 V.)

Which garden did you find that in? I ended up using the DG3257 for
similar specs (5.5 Ί / 3 pF), and TI has since released the TMUX1511,
but more variety sure would be nice.

The math for this is fairly ugly, so I coded up a smallish C++ program
to optimize it […]

As very much a C++ (D) person myself, I can really recommend Julia for
that sort of work. Fast, concise, and amazing amount of cutting-edge
algorithm research is available in library form on GitHub.

 — David

I'm using the 1511, yeah.

Cheers

Phil Hobbs

--
Dr Philip C D Hobbs
Principal Consultant
ElectroOptical Innovations LLC / Hobbs ElectroOptics
Optics, Electro-optics, Photonics, Analog Electronics
Briarcliff Manor NY 10510

http://electrooptical.net
http://hobbs-eo.com
 

Welcome to EDABoard.com

Sponsor

Back
Top