MUX for resistor string selector switch??

Dear all,

Is there anything wrong with the attached use of the MUX? I have never seen anybody doing this and I am wondering why.

The idea is to obtain a segmented part of a voltage-DAC without dealing with the thermometer code and current sources. And perhaps with reduced glitches - OR??.

Clearly almost no current is drawn by the voltage follower, so, the R_on of the MUX is not really important. Besides, I see lots of MUX' around with ultra low leakage currents (less than nA), so, tons of input switches in the sketch cannot mess up with the voltage division of the resistor string (Still R's in the string should not be large to avoid loading the string).

Also some of these MUX' have less than 100 ns turn on and transition times.

Here are a few MUX to name for n = 3, 4 and 5 respectively:

TMUX1108
ADG706
ADG732

Everything so far sounds too good to me. Am I missing something?
 

Attachments

  • Slayt1.PNG
    Slayt1.PNG
    20.9 KB · Views: 80
Looks like a resistor string DAC: inherently monotonic, gets large really quickly when you need more than a few bits of resolution. In an IC implementation, one usually splits up the multiplexer in row and column decoders and unit cells consisting of an AND gate and a pass gate.
 
I mentioned this would be a segment. 3, 4, or 5 bits maybe. My question is about the use of mux' as switches in such application and any potential problems associated. Glitches, timing issues etc. I have zero experience with digital electronics but love to generate ideas on the analog side.
 
How are you going to stitch the segments together?

You get a code-dependent output impedance, which may or may not be a problem depending on what you want to use it for.

We have the voltage follower to care of the code dependent output impedance before stitching voltage sources together

The segments could be stitched together with some other (or identical) unary coded segments or binary weighted segments such as R2R ladders. To do so, the voltage output of each segment must be properly "weighted" of course. The voltage addition could be done with the well known op amp voltage adder and the weights would correspond to the resistors used in that adder circuit.

Here is an example: Say we made 4 segments, 4 bits each (don't forget my voltage follower at the end of each). Then, we add the "voltage adder resistors" to the output of each segment. Now these resistors must follow the proportion: R, 16 R, 256 R and 4096 R, the smallest resistor belonging to MSB side.

Lets try and see how the segment could be perfected (if it could). It is still a surprise to me why diy people seemingly do not play with such unary segments. The topology is well known and classic.
 
When that 4096 is 4095.9, the DAC is no longer monotonic. The slightest differences in phase shifts between the paths will also affect monotonicity/DNL, unless everything gets time to settle well within 1 LSB and a sample and hold is used to deglitch the output. You probably need to do that anyway, because the glitches due to multiplexer charge injection depend non-linearly (or actually non-affinely) on the code: switches in the middle of the string will produce bigger glitches than those at the ends.

By the way, you can also make an interpolating structure: use two multiplexers that are connected shifted by one tap, buffer the outputs and use those as reference for the next section. You then have to be careful with buffer offsets and still need to deglitch, but you get rid of the accurate weighting factors for the weighted addition.
 
Last edited:
What kind of resistive DAC is absolutely monotonic? A 16 bit ladder? 32768 to 1 ratio??

4x4 was an example. Have you thought about 3x5 = 15 in a sign magnitude application? Just 3 switches kicking in.... There the weights are 1, 32, and 1024. If 1024 is also hopeless for getting 0.1 LSB one should stop playing with resistors and go with sigma-delta..

Buffering some dac outputs and using them for the next stage does not remove huge binary weights and solve the accuracy issue. Just makes it more difficult to grasp.

If having only 3-4 switches as I was suggesting is not good enough, one could have 2 of 8 bit segments, 512 controller outputs and 512 resistors in total to end up with only 2 switches and near perfect monotonicity.

There must be some compromise somewhere...

Will keep looking...
 
High speed flash converters typically use 256 to 1024 element resistive ladders and an equal number of comparators to get a one gate deep converter. FWIW, despite these parts being popular back in the 80s, since then, nobody's seen fit to go beyond 1024 steps (10 bits). It's just too big, and most high speed folks can deal with low resolution high speed converters.
 
The interpolating resistor string DAC is quite simple. For example, suppose you have four-bit segments and want to make an eight-bit DAC. Suppose you want it to convert code 6A hexadecimal.

You then connect two multiplexers to the same resistor string, such that when one multiplexer outputs the voltage corresponding to 6 hex, the other produces the voltage corresponding to 7 hex.

These voltages are then connected to the bottom and top of another resistor string, with another multiplexer selecting tap A hex.

You can extend the idea to more than two stages.

Problems: glitches, loading effects of the nth stage on the n - 1th stage if you don't buffer, buffer offset if you do buffer.
 
Is this the idea?
Untitled.png

As I said I know nothing about digital. So hex code is beyond me for now. But as far as I can smell, this design increases the number of switches and the loading/buffering dilemma looks insurmountable.

BTW, I am not sure if the the perfect monotonicity over the entire signal range is an absolute must for the good sound. My gut feeling tells me that the monotonicity would be quite important at lower levels but the transition from 23345 to 23346 would not be that critical (Otherwise the lossy audio wouldn't sound acceptable even though it kicks out so much more data - Comments on this please???). In that high range, those glitches associated with major carry transitions and ever increasing urge for the resistor accuracy (up to 32768 LSB) are probably much more important. That being the reason I guess the simplest string on the MSB side (with only one switch) could only improve things and (+-) 1 LSB does not look that difficult to achieve up to 2048 or even 4096 LSB step sizes. If I try this one day I would probably use something like 4 resistors in series or parallel for each R in the string to make the fine tuning easier and average out temperature and long term drifts. Please note that the string would tend to balance its step size against such systematic changes as long as Vref is fairly stable.
 
Something like that, yes, except that two multiplexers would share all resistor taps but one: the lower connects to taps 0, 1, 2, ... , n - 1 and the upper to 1, 2, 3, ... , n.

You are right about not needing monotonicity at high levels, of course. Hence the sign-magnitude designs.
 
BTW, the charge injection in the above MUX' I have listed are in the 1-5 pC range. This is like 10 times smaller than the smallest gate to source charge I have seen in some miniature switches. Am I making a fair comparison?

It depends on a lot of things. The smaller the channel width of the switching MOSFET, the higher its on resistance and the smaller its charge injection. The shorter the MOSFET, the less on resistance and the less charge injection, but it depends on the process and the required voltage handling how short they can be. The charge injections of the NMOS and the PMOS in a transmission gate partly cancel, but you need a different NMOS-to-PMOS width scaling for minimum total charge injection than for minimum resistance variations over the input voltage range.