30 January 2012

App Note 86

A standards lab grade 20-bit DAC with 0.1ppm/°C drift: The dedicated art of digitizing one part per million. 52(?) pages.

The main text of this app note is only four pages long, and there are 48 glorious pages of appendices.

Well, "glorious" is the wrong word. Unfortunately, one of the appendices contains TWENTY-TWO pages of source code (Appendix D). Really? Couldn't Linear Tech have used a smaller font? Printed the code in two landscape columns? Or simply not printed it at all? (Do you think anyone, even one single person, typed in this code and used it? Really?) If we include the source code, this app note is the fourth longest one. However, if we ignore the code, then this app note is only 30 pages long, a little longer than average. It still results in a large appendix-to-main-text ratio, but it's not the less-than-ten-percent ratio we initially suspected...

This app note discusses a 20-bit digital-to-analog converter. The DAC circuit includes an interesting "table-turning" topology: DACs are often used in the feedback path to create a good ADC (for example, as in the successive-approximator topology); in this circuit, a high-quality analog-to-digital converter (the LTC2400) is used in the feedback path to implement a high-quality DAC.

The construction of the 20-bit "slave" DAC is interesting. Jim says, "The sole DAC requirement is that it be monotonic. No other components in the loop need to be stable." The circuit is shown in Figure 2, which using two 16-bit DACs, with eight bits of overlap, and four bits of sub-LSB twiddle.

The results are (briefly) shown on pages 3 and 4, which are heavily footnoted (referring the reader to the numerous appendices). For example, the following quote appears on page 3, with footnote,
Figure 3 is a plot of linearity vs output code. The data shows linearity is within 1ppm over all codes (Establishing and maintaining confidence in a 1ppm linearity measurement is uncomfortably close to the state of the art.).

Appendix A talks a little bit about the history of digital-to-analog conversion and includes a glamor shot of some items from his collection (we saw this photo before in App Note 74). Appendix B lists some of the specifications of the LTC2400 ADC.

Appendix C discusses the operation and use of a Kelvin-Varley divider to verify the linearity of the 20-bit DAC. "The actual construction of a 0.1ppm KVD is more artistry and witchcraft than science." The individual components must be selected (see the table in Figure C4 for the LTC1152 chopper-stabilized op amp) to obtain the necessary performance. Figure C7 shows the complete schematic for the voltage source. The construction of this circuit is a work of art (read the text carefully). "Adjust for 5.000000V at A." That's a lot of zeros! The best quote appears in the footnote on page 11,
The author, wholly unenthralled by web surfing, has spent many delightful hours "surfing the Kelvin." This activity consists of dialing various Kelvin-Varley divider settings and noting monitoring A-to-D agreement within 1ppm. This is astonishingly nerdy behavior, but thrills certain types.

Appendix D contains the source code for the digital comparator. Jim once commented to me, "The summing junction of this circuit is in software. It took a while for me to get my head around it, but it really does work."

Appendix E discusses linearity correction for the LTC2400, and Appendix F discusses improved output-buffer stages. Appendix G shows a gain-of-2000 settling-time measurement circuit, modified from App Note 74.

Appendix H discusses microvolt-level noise measurement. A high-gain preamplifier is necessary, as well as an oscilloscope with a plug-in capable of low-level measurements (2mV/division is not good enough). Figure H3 shows the instrumentation setup, using the same cookie-tin as the noise measurement in App Note 83 Figure 6 (he really did like those cookies!).

Appendix I discusses voltage references for this application, with the LM199A and the LTZ1000A receiving highest marks. Both of these parts use a temperature-control loop to maintain constant temperature on the Zener diode, thus improving the temperature drift to sub-ppm. Figure I2 shows an example circuit for the roll-your-own LTZ1000A. (Bob Dobkin designed these parts. The LM199A is good, but (I suspect) that the loop gain isn't high enough to reject ambient changes in temperature. He got it right in the LTZ1000A with the external loop.)

Appendix J discusses parasitic thermocouples and other construction pitfalls, a topic that he previously discussed in App Note 9 and App Note 28.
Readers finding [Figure J4's] information seemingly academic should be awakened by Figure J5. This chart lists thermoelectric potentials for commonly employed laboratory connectors. Thermocouple activity of some types is more than 20 times greater than others. Be careful!

This app note does end in a cartoon, but I can't reproduce it here. The cartoon demonstrates "one part per million" by printing one million dots. A JPEG on your computer screen doesn't do it justice. Go download the PDF file, print out the last page (on a good printer), grab a magnifying glass, and ponder the real-world difficulty of 20 bits.


Jarno said...

Love your blog!

As a remark, I've downloaded the document, and the advantage of not using to columns is that you can easily select the text in the PDF and paste it in the compiler, no need to type it all in. This would certainly be more cumbersome when it was layed out in columns. Of course they could have used a smaller font :-).

Mike Stone said...

At a guess, I'd say you're a hardware guy..

Like it or not, all that code is an integral component of the circuit. Take it away, and what's left is a meticulously constructed doorstop. Leaving the code out of the app note would be like leaving the code and taking out all the circuit diagrams.

As for the code itself:

AN86-15 through AN86-24 (10 pages) are nothing but commentary that discuss things like the general algorith, ADC curvature correction, thermal noise cancellation by averaging multiple readings, and other tricks necessary to get down to that 1ppm threshold.

In AN86-25 through AN86-36, more than half the text (everything to the right of a semicolon) is -- once again -- commentary meant for human consumption.

So the total information budget for that 22 pages is roughly 17 pages of stuff intended for human consumption, and only about 5 pages that would make sense to any machine.

.. the reason I assume you're a hardware guy is that you could take Fig1-1 from "The importance of fixing", replace the hardware chassis with a pile of matrix-printed fanfold hardcopy, and bring tears of nostalgic joy to the eyes of thousands of old school coders.

Twelve pages with comments? Pah.. hardly worth firing up the DECWriter. Just give me the deck of punchcards and a red pen. ;-)