# How does Delta-Sigma Modulation convert a 1-bit signal to higher resolution signal?

I've looked at various resources about Delta-Sigma modulators, and I find them fascinating. However, I'm confused on a particular point and and am looking for an explanation.

In my understanding, the Delta-Sigma modulators operates by sampling at a very high sampling rate (much higher than the ulitmate rate) an input analog signal. During this process the digitized signal converted back to into an analog waveform and fed back into the input signal (possibly a number of times) which has the effect of high pass filtering the quantization noise -- so-called 'Noise Shaping'.

So far, so good. To me, this makes sense. However, the next stage, I find confusing.

The resulting digitized signal has been quantized using only single bit, and somehow, a digital filter is then applied to this signal which does two things:

(1) Filters out the shaped quantization noise and (2) Re-quantizes the signal to a much higher resolution (e.g. 1-bit => 24-bit)

The resulting signal is then decimated to the desired sampling rate.

My question is about the re-quantization. How is this performed? Any pointers appreciated. If you wish to poke any other holes in my understanding of DSM, that's also fine. Cheers!

## 1 Answer

The output of the low-pass filter consists, in principle, of real numbers. This is because, unlike the input values, the filter coefficients are not quantized to one bit and several of them are added to yield one output sample, as well.

Of course, there is no such thing as real numbers in a finite computer; but you may compute the filter output to any desired precision, such as 24-bit.

• So if I understand you correctly, the coefficients of the noise-removing digital filter "cast" the output signal samples to their desired precision? In Matlab code, something like below is happening? loResSignal = round( rand( 10000, 1) ); % generate one bit signal bLPF = sinc( -1:0.01:1 ); % design low pass filter; bLPF = bLPF / sum( bLPF ); % normalize DC to 0dB hiResSignal = filter( bLPF, 1, loResSignal ); – Kenneide Jun 18 '13 at 11:53
• Yes, that is essentially what is happening. The result will have a DC bias of 0.5; to avoid it, you can either interpret a 0 input as –1 instead of 0, or subtract 0.5 after the filtering. – chirlu Jun 18 '13 at 14:49
• Wow, it's simpler than I initially realized. Cheers! – Kenneide Jun 18 '13 at 15:08