I am struggling with understanding how an moving average filter can increase ENOB in a given sample.
I wrote a test for a simple MA (moving average) filter in matlab. The algorithm to create new MA value simply subtracts the new signal value from and old one (that is $n$ samples away), and adds the previous value of the filter to it. I run the fft and it seems to work as low pass filter - exactly how expected.
I am aware that this same algorithm can be used to increase number of bits of resolution for a sample. Furthermore, if the old value that we used to build the difference with the new value is $n$ sample away, then the filter value is supposed to have the resolution increased by $n$ bits.... I just don't really understand how is that possible. To my understanding:
- we take the old filter value ($m$ bit long),
- we add a new value to it that is a difference of the current signal value and a past signal value, that is $n$ samples away - both values also $m$ bit long,
- how is it possible that resulting filter value could be now $m+n$ bit long?
Lets say we have 12 bit($m$) signal values. How is it possible to 'gain' additonal 6 bits($n$) bits by adding the signal value that is 6 samples away from the current sample? Why should the outcome have the resolution of 18 bits?
Thanks in advance for your answers!