title: Logarithmic resistor ladder
text: # Logarithmic resistor ladder
  
  A logarithmic resistor ladder is an electronic circuit, composed of a series of resistors and switches, designed to create an attenuation from an input to an output signal, where the logarithm of the attenuation ratio is proportional to a binary number that represents the state of the switches.
  
  The logarithmic behavior of the circuit is its main differentiator in comparison with digital-to-analog converters (DACs) in general, and traditional R-2R Ladder networks specifically. Logarithmic attenuation is desired in situations where a large dynamic range needs to be handled. The circuit described in this article is applied in audio devices, since human perception of sound level is properly expressed on a logarithmic scale.
  
  ## Logarithmic input/output behavior
  
  As in digital-to-analog converters, a binary number is applied to the ladder network, whose N bits are treated as representing an integer value:
  
      $\mathrm {CodeValue} =\sum _{i=1}^{N}s_{i}\cdot 2^{i-1}$
  
  where $s_{i}$ is 0 or 1 depending on the state of the ith switch.
  
  For comparison, recall a conventional linear DAC or R-2R network produces an output voltage signal of:
  
      $V_{out}=V_{in}\cdot c\cdot (\mathrm {CodeValue} +d)$
  
  where $c$ and $d$ are design constants and where $V_{in}$ typically is a constant reference voltage (or is a variable input voltage for a multiplying DAC.)
  
  In contrast, the logarithmic ladder network discussed in this article creates a behavior as:
  
      $\log(V_{out}/V_{in})=c\cdot \mathrm {CodeValue}$
  
  which can also be expressed as $V_{in}$ multiplied by some base $\alpha$ raised to the power of the code value:
  
      $V_{out}=V_{in}\cdot \alpha ^{\mathrm {CodeValue} }$
  
  where $c=\log(\alpha )\,.$
  
  ## Circuit implementation
  
  This example circuit is composed of 4 stages, numbered 1 to 4, and includes a source resistance $R_{source}$ and load resistance $R_{load}.$
  
  Each stage i has a designed input-to-output voltage attenuation $Ratio_i$ as:
  
      $Ratio_{i}={\text{if}}\;sw_{i}\;{\text{then}}\;\alpha ^{2^{i-1}}\;{\text{else}}\;1$
  
  For logarithmic scaled attenuators, it is common practice to equivalently express their attenuation in decibels:
  
      $dB(Ratio_{i})=20\log _{10}\alpha ^{2^{i-1}}=2^{i-1}\cdot 20\cdot \log _{10}\alpha$ for $i=1..N$ and $sw_{i}=1$
  
  This reveals a basic property: $dB(Ratio_{i+1})=2\cdot dB(Ratio_{i})$
  
  To show that this $Ratio_{i}$ satisfies the overall intention:
  
      $\log(V_{out}/V_{in})=\log(\prod _{i=1}^{N}Ratio_{i})=\sum _{i=1}^{N}\log(Ratio_{i})=\log(\alpha )\cdot CodeValue=c\cdot CodeValue$
  
  The different stages 1 .. N should function independently of each other, as to obtain $2^N$ different states with a composable behavior. To achieve an attenuation of each stage that is independent of its surrounding stages, either one of two design choices is to be implemented: constant input resistance or constant output resistance. Because the stages operate independently, they can be inserted in the chain in any order.
  
  ### Constant input resistance
  
  The input resistance of any stage shall be independent of its on/off switch position, and must be equal to $R_{load}.$
  
  This leads to:
  
      ${\begin{cases}R_{i,parr}=(R_{i,b}\cdot R_{load})/(R_{i,b}+R_{load})\\R_{i,a}+R_{i,parr}=R_{load}\\R_{i,parr}/(R_{i,a}+R_{i,parr})=Ratio_{i}\end{cases}}$
  
  With these equations, all resistor values of the circuit diagram follow easily after choosing values for N, $\alpha$ and $R_{load}.$ (The value of $R_{source}$ does not influence the logarithmic behavior)
  
  ### Constant output resistance
  
  The output resistance of any stage shall be independent of its on/off switch position, and must be equal to $R_{source}.$
  
  This leads to:
  
      ${\begin{cases}R_{i,ser}=R_{i,a}+R_{source}\\R_{i,ser}\cdot R_{i,b}/(R_{i,ser}+R_{i,b})=R_{source}\\R_{i,b}/(R_{i,ser}+R_{i,b})=Ratio_{i}\end{cases}}$
  
  Again, all resistor values of the circuit diagram follow easily after choosing values for N, $\alpha$ and $R_{source}.$ (The value of $R_{load}$ does not influence the logarithmic behavior).
  
  For example, with a $R_{load}$ of 1 kΩ, and 1 dB attenuation, the resistor values would be: $R_a$ = 108.7 Ω, $R_b$ = 8195.5 Ω.
  
  The next step (2 dB) would use: $R_a$ = 369.0 Ω, $R_b$ = 1709.7 Ω.
  
  ## Circuit variations
  
  * The circuit as depicted above, can also be applied in reverse direction. That correspondingly reverses the role of constant-input and constant-output resistance equations.
  * Since the stages do not significantly influence each other's attenuation, the stage order can be chosen arbitrarily. Such reordering can have a significant effect on the input resistance of the constant output resistance attenuator and vice versa.
  
  ## Background
  
  R-2R ladder networks used for linear digital-to-analog conversion are old (Resistor ladder § History mentions a 1953 article and a 1955 patent).
  
  Multiplying DACs with logarithmic behavior were not known for a long time after that. An initial approach was to map the logarithmic code to a much longer code word, which could be applied to the classical (linear) R-2R based DAC. Lengthening the codeword is needed in that approach to achieve sufficient dynamic range. This approach was implemented in a device from Analog Devices Inc., protected through a 1981 patent filing.
  
  