Last time we focused on analog-to-digital conversion – what about digital-to-analog?
The easiest way to convert from digital back to analog is by reconstructing it via the impulse train we generate from the original ADC process. Then you do a low-pass filter with the cutoff at the Nyquist frequency (all higher frequencies are artifacts of the sampling process), and that should perfectly reconstruct the original frequency spectrum.
This is fine in theory, but difficult in practice - impulse trains are hard to generate. So instead we do a zeroth-order hold, which is the “DAC equivalent of the sample-and-hold used during ADC”. This hold generates the staircase-looking effect on the impulse train in the time domain, like so:
In the frequency domain, the zeroth-order hold has the effect of multiplying the impulse train’s frequency spectrum by the sinc function, a very common thing in DSP:
So in order to reconstruct the analog signal, you need to do two things:
- Remove all frequencies above the Nyquist rate
- Boost the frequencies by the reciprocal of the zeroth-order hold’s effect, i.e., 1/sinc(x)
This image breaks down the whole process well. Pay close attention to how we display time vs. frequency domains - both are necessary for understanding.
A last point - we know that the ADC process can lose information based on bit rate and sampling, but analog signals are just as lossy, based on noise and bandwidth. Noise is akin to quantization error, and bandwidth akin to sampling, e.g. are we able to see frequencies above a certain level.