DAC Essentials: String theory

No, I'm not actually going to talk about particle physics today - though that would be cool...instead we'll be discussing the theory of the string DAC architecture. String theory!

The string DAC, sometimes referred to as the Kelvin divider or Kelvin-Varley divider after its inventors, is one of the most straightforward methods used to design a DAC. In its simplest form, the string DAC is just a series of equally sized resistors with a tap point between each resistor. Based on the digital code applied to the DAC, the appropriate tap point will be switched to the output buffer. This limited switch movement results in very low glitch energy, which my buddy Tony Calabria will delve into in a future post in this series. Ideally, each resistor will induce a voltage drop from the reference equal to 1 LSB. A simplified illustration of the architecture is shown below.

As resolution increases in the string DAC, the number of resistors required for the design increases exponentially. A n-bit string DAC requires 2n resistors, so in general a high-resolution string DAC would require a large IC package. That translates to 65,536 resistors for a 16-bit DAC, 262,144 for 18-bits, and 1,048,576 resistors for 20-bits! Cascaded segmentation techniques are sometimes used to reduce the number of resistors required, but for our purposes we will not consider segmentation, as architectural trends tend to hold true at the application level even if segmentation was implemented.

The accuracy of each resistor value directly determines linearity. If any resistor in the string isn’t the appropriate value, we’ll see poor differential non-linearity (DNL) at the code transition corresponding to that resistor. Also, the integral non-linearity (INL) of all subsequent codes would also be offset by the mismatch. Given the number of resistors in a typical string DAC design, it’s impractical to trim every resistor and as a result, we typically accept DNL errors to some extent. However, it is still highly desirable to maintain good INL so sectionalized trimming on groups of resistors is frequently implemented to overcome trimming every resistor, which presents itself as a “staircase” effect on the INL graph shown below.

A perk of the string DAC is that the input impedance looking in from the reference input remains constant except during instantaneous code transitions. Other data converter architectures, especially SAR ADCs, have dynamic loading conditions that make a reference buffer a requirement, while the string DAC is more forgiving. In general, however, it’s a good idea to buffer any reference – especially if the input/output will change with great frequency. It’s also important to note that the equivalent input impedance from the reference is typically very high, making most string DACs very power efficient.

The final and most subtle element of the string DAC design is the divider present before the string resistors and tap points. This resistor is equal to the equivalent impedance of the rest of the resistors in the string and effectively halves the reference input. This is done in an effort to lower the common mode input requirements of the output buffer and help keep the cost low while delivering good performance. To compensate for this, the output buffer is typically in a non-inverting gain of 2 configuration, though sometimes the feedback resistor can be digitally controlled to realize different gains.

A few things to remember about string DACs:

  • Low cost via simplicity of design
  • Low glitch energy
  • Inherent monotonicity
  • Low power consumption

The string DAC frequently finds a home in portable battery powered applications that can make great use of its low power consumption. Additionally the string DAC is used in applications like closed loop control systems that leverage its inherent monotonicity and in low-cost applications where the DAC is providing some calibration feature to a system, rather than being the ‘star’ of the show as we may see in other DAC applications. If a string DAC sounds like something that interests you be sure to check out a few TI string DACs such as: DAC8562, DAC8560, DAC8568, DAC7678, DAC8411, DAC8718, or DAC8728.

If you liked this, be sure to check out our other posts in the DAC Essentials series.

  • @Kevin Duke

    In fact I am using both M-DAC's & DigiPots in my filter concepts.

    DigiPots are OK for Sallen-Key structures, but limited in programming range,

    and introduction of transmission zeros require the addition of Twin-Tee circuitry.

    M-DAC's are more suitable for wide-range programming ( 1-4096 steps ) and

    the "States-Variables" / Biquad's architectures. Xmission zeros are created by

    combination of Lo & Hi Pass outputs. Addition of on-chip matched resistor

    bridges on new MDAC's families also allows the possibility to build Prog-Filters

    without ANY separate discrete resistors or resistor networks and bandwidths

    now extends past 10 MHz.

  • Hi Eric,

    Digi-pots could certainly also fit in this application, that's most likely the typical approach, and TI offers a few digi-pots, though this isn't currently an area of focus. It all comes down to exactly what the system level goals are and if you really need to go through all the pains of going outside the box by using a MDAC instead since some of the specifications you would need to go about this aren't included in every MDAC datasheet. A benefit for instance might be that the digi-pots are not going to offer the same number of steps as a 16-bit DAC, but it's up to your application whether you really need that level of granularity or not.

    This isn't something I've put a lot of thought into in the past, but this topic has received a lot of attention here on the blog, we'll try to look into this deeper and have a future post about it.

  • Bonnie,

    I suggest that you look in the portfolio of your best ennemies at Analg Devices. Their "Digital Potentiometers" are exactly what you need!

    (AD5124,AD5204,ADN2850, AD5272_74,AD5291_92, etc). They are available with nominal resistor value from 1kOhm to 100kOhm,

    and 128, 256 or 1024 steps. Digital control comes from SPI or I2C buses. I designed with them programmable anti-aliasing filters

    based on Sallen-Key architecture, up to 8° order. With behaviour Papoulis-Legendre and Cauer-Elliptic.

  • Hi Bonnie,

    Thanks for the comment! Many DACs look a lot like digital potentiometers on the surface but there are a few caveats underneath the surface. The biggest one is exactly what you pointed out - that there is a buffer sitting on the output of a typical DAC. Since we want to deliver as low noise performance as possible and due to some design constraints the output buffer is typically bandwidth limited.

    So, to answer your question the string DAC could be used in the way that you have described but only under very specific circumstances. For DACs that are better suited to pretend to be digital potentiometers you're going to want to focus on R-2R or MDACs that don't feature output buffers. Stay tuned for our next blog post on that topic....maybe we'll even make a deep dive on using DACs in this way.

  • Kevin,

    This device is a lot like a digital potentiometer, with an added output amplfier. I am thinking of using a digital potentiometer for a variable filter. This variable filter can be used for the implementation of, say, a Butterworth filter that spans from 1 kHz to 100 kHz based on your programmed digital potentiometer resistance. Is there an application where the String DAC could be used to designer a variable fitler?