It’s the time of year for saving money!
One of the oldest and simplest designs for a DAC works purely in the analog domain. To explain how this works, we need to take a quick look a binary math:
All values in a modern, digital computer are binary, meaning that, at the most basic level, the smallest value you can have is a bit, necessarily equal to exactly 0 or 1. However, bits tend to get organized into clusters of 8, called a byte, going from the least to the most significant bit.
When you combine the values of all 8 bits together, you end up with a whole or integer number from 0 to 255. As you travel from least to most significant bit, the value of the bit (0 or 1) gets multiplied by a factor of 2 and summed. So, in an 8-bit byte, you multiply either 0 or 1 in the following way:
Bit 1 = (0 or 1) * 1
Bit 2 = (0 or 1) * 2
Bit 3 = (0 or 1) * 4
Bit 4 = (0 or 1) * 8
Bit 5 = (0 or 1) * 16
Bit 6 = (0 or 1) * 32
Bit 7 = (0 or 1) * 64
Bit 8 = (0 or 1) * 128
Then you sum all 8 values, where the total number equals a value from 0 (0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 = 0) to 255 (1 + 2 + 4 + 8 + 16 + 32+ 64 +128 = 255).
If, for example, all bits are set to 1 except for bit 5 (set to 0), you get a combined value of 239 (1 + 2 + 4 + 8 + 0 + 32+ 64 +128 = 239).
Most modern DAC chips, the CPU inside of “an audio component called a DAC” reconstructs the bitstream as a square wave and the rest of the “audio component DAC” amplifies it (with or without filtration) to create an analog output signal.
This results in a precise but potentially error-prone “translation” from voltagesto numbers to voltages, part of which results in digital aliasing (“the misidentification [or mis-reconstruction] of a signal […], introducing distortion or error”–Google Dictionary), often repaired within limits by low-pass filters that smear information in the time domain (distortion) or leave a square wave with some amount of digital aliasing(noise).
In short, either way you go, the end result is an approximation of the original analog signal with different types of errors.
Because ladder DAC’s work purely in the analog domain, no low-pass filter is required to smooth over a square wave since the output of a ladder DAC is already sinusoidal not square (like a wavy ramp versus stair steps) and no digital aliasingoccurs.
A ladder DAC is just a set of resistors, one resistor for each bit in a byte, starting with a fairly high amount of resistance, the standard measurement being Ohms (“unit[s] of electrical resistance, expressing the [attenuation]in a circuit“) for the least significant bit, progressing down by factors of 2 to the least resistance (or attenuation) for the most significant bit.
So you want bit 1, the least significant bit, to have the lowest addition to the combined output voltage of the ladder DAC while you want bit 8, the most significant bit, to have the highest addition to the sum or total output voltage of the ladder DAC. Thus:
Bit 1 resistorvalue = 128 Ohms (highest attenuation)
Bit 2 resistorvalue = 64 Ohms
Bit 3 resistorvalue = 32 Ohms
Bit 4 resistorvalue = 16 Ohms
Bit 5 resistorvalue = 8 Ohms
Bit 6 resistorvalue = 4 Ohms
Bit 7 resistorvalue = 2 Ohms
Bit 8 resistorvalue = 1 Ohm (lowest attenuation)
This might seem backwards, but it’s not.
Bit 1 can only increase or decrease the total value of the byte by 1, but bit 8 can increase or decrease the total value of the byte by 128, directly proportional to high resistance versus low resistance in a ladder DAC, assuming that the voltageof each bit is exactly the same before passing through a resistor (kind of like a series of water valves that limit the pressure of any one bit from lowest to highest).
Expanding by example, let’s use real voltages for the purpose of illustration only, keeping in mind that the actual voltages could vary greatly in different real-world situations but will be the same from bit to bit before passing through a resistor.
In this example, binary 0 = 0.0 Volts and binary 1 = 1.0 Volts, always.
Each time you double the resistance, in Ohms, you lower or attenuate the voltagepassing through the resistor by 1/2, going backwards from 128 Ohms to 1 Ohm, the number by which you divide the voltagemoving from bit 1 to bit 8.
Now, suppose that you have the following 8-bit byte, from least to most significant bit:
Binary values — 0 1 0 1 0 1 0 1
Corresponding electrical values (X) — 0.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 Volts
Attenuation division numbers (Y) — 128 64 32 16 8 4 2 1
Subtotals (X / Y, rounded) — 0.00 0.02 0.00 0.06 0.00 0.25 0.00 1.00 Volts
Sum or addition of all subtotals — 1.33 Volts
Out of context, “1.33” seems meaningless and it is because it’s just an example; however, it’s a real, continuous, analog voltagefrom 0.0 to 1.99 (in this example) as opposed to a numerical “chunk” from 0 to 255 that needs to get converted to a real voltageand smoothed over with a time-smearing low-pass filter or left with the possible artifact known as digital aliasing (“the misidentification [or mis-reconstruction] of a signal […], introducing distortion or error”).
I hope that makes some sense.
More to follow (Part II) …