D/A CONVERSION WITH LINEAR-CODED WEIGHTS J. Jacob Wikner 1) and Mark Vesterbacka 2) 1) Microelectronics Research Center, Ericsson Components AB, SE-164 81 Kista, Sweden 2) Department of Electrical Engineering, Linköping University, SE-581 83 Linköping, Sweden {jacobw, markv}@isy.liu.se ABSTRACT In design of high-speed, high resolution D/A convert- ers, glitches in the output are of major concern. To trade- off between hardware complexity and glitch performance the current practice is to use a hybrid converter where the most significant bits are thermometer coded and the least significant bits are binary-scaled. As an alternative to this scheme, we propose a new method for D/A conversion based on linear coding of the weights (1, 2, 3, ...). The new method improves the glitch performance and reduces the hardware complexity for high resolution converters. An algorithm for converting the digital binary-coded input word into a digital word controlling the linear weights is given. In an example, the linear-coded weights are applied to a current-steering D/A converter. We dis- cuss properties such as layout properties, device match- ing, and mixed-signal issues. I. INTRODUCTION Glitches are a major limitation in high-speed commu- nication D/A converters that use digital codes to switch signals [1, 2]. If there is a difference in the delay for switching on or off weights, there will be a glitch during the delay time. For example, consider a binary-scaled converter where the input code switches from 011...1 to 100...0. Assuming that the rise time of the digital signals is longer than the fall time due to, e.g., process variations, or when there is timing mismatch in the switching between bits of different significance, we will output the sequence 011...1, 000...0, 100...0 which is an error. To have an acceptable D/A converter we need to keep this error to less than half the magnitude level corresponding to a least significant bit (LSB). This can be achieved by using a deglitcher circuit [2], e.g., an LP filter which lim- its the bandwidth of the converter, or we can select another digital code with less bit transitions between con- secutive codes [1, 2], e.g., thermometer code. The respec- tive main drawbacks with these methods are that limiting the bandwidth will lower the speed, a deglitcher circuit with low distortion is hard to design, and, e.g., thermome- ter code requires complex encoding logic, particularly for high resolution D/A converters. The problem with glitches is even more serious in a multi-bit oversampling D/A converter where the glitching energy becomes larger than in a corresponding Nyquist-rate D/A converter. This work aims at reducing the glitch energy in a D/A converter while having a low encoder complexity. The key idea to achieve this is to select a digital code that low- ers the number of transitions between consecutive codes, similar to thermometer code. However, our approach does not use thermometer code or a hybrid of thermometer code and binary-scaled code used in segmented D/A con- verters. Instead of using the corresponding unit weights and exponential weights, it is based on linearly increasing weights. The proposed method can also be used in a hybrid of thermometer coded, linear-coded, and binary- scaled D/A converter yielding a large degree of freedom for the designer to customize the converter to particular application needs. In this paper we describe the principle of our proposed approach [3]. In a second paper [4] we compare D/A con- verters designed using this approach with thermometer coded, binary-scaled coded, and segmented D/A convert- ers. II. D/A CONVERTERS Generally, a D/A converter uses the digital input to control and add a number of weighted sources as illus- trated in Fig. 1. A weighted source is implemented as a source of, e.g., current, voltage, or charge, that has a strength that is gen- erally expressed in a unit quantity corresponding to an LSB change in the output. To create the output signal, a number of weighted sources are added. A digital input is used to control whether a particular source should be included or not. Hence, the D/A converter operation can be written as (1) X xk () wk () k 1 = n =