Forums

Re: DSP Trick: Fixed Point DC Blocking Filter with Noise-Shaping

Started by Darrell March 7, 2008
On Mar 13, 12:37 pm, Rick Lyons <R.Lyons@_BOGUS_ieee.org> wrote:

> Hello EB, > > In the March issue of the IEEE Sig. Processing > Magazine, Randy Yates gives his description of a > fixed-point DC blocker. His material is in the > "DSP Tips & Tricks" column of the magazine.
Thanks. I haven't gotten my copy yet and the online version isn't available either. Looking forward to it though. Eric (EB)
On Mar 13, 12:37 pm, Rick Lyons <R.Lyons@_BOGUS_ieee.org> wrote:

> Hello EB, > > In the March issue of the IEEE Sig. Processing > Magazine, Randy Yates gives his description of a > fixed-point DC blocker. His material is in the > "DSP Tips & Tricks" column of the magazine.
Thanks. I haven't gotten my copy yet and the online version isn't available either. Looking forward to it though. Eric (EB)
On Mar 13, 12:37 pm, Rick Lyons <R.Lyons@_BOGUS_ieee.org> wrote:

> Hello EB, > > In the March issue of the IEEE Sig. Processing > Magazine, Randy Yates gives his description of a > fixed-point DC blocker. His material is in the > "DSP Tips & Tricks" column of the magazine.
Thanks. I haven't gotten my copy yet and the online version isn't available either. Looking forward to it though. Eric (EB)
On Mar 13, 12:37 pm, Rick Lyons <R.Lyons@_BOGUS_ieee.org> wrote:

> Hello EB, > > In the March issue of the IEEE Sig. Processing > Magazine, Randy Yates gives his description of a > fixed-point DC blocker. His material is in the > "DSP Tips & Tricks" column of the magazine.
Thanks. I haven't gotten my copy yet and the online version isn't available either. Looking forward to it though. Eric (EB)
On Mar 13, 12:37 pm, Rick Lyons <R.Lyons@_BOGUS_ieee.org> wrote:

> Hello EB, > > In the March issue of the IEEE Sig. Processing > Magazine, Randy Yates gives his description of a > fixed-point DC blocker. His material is in the > "DSP Tips & Tricks" column of the magazine.
Thanks. I haven't gotten my copy yet and the online version isn't available either. Looking forward to it though. Eric (EB)
On Mar 13, 12:37 pm, Rick Lyons <R.Lyons@_BOGUS_ieee.org> wrote:

> Hello EB, > > In the March issue of the IEEE Sig. Processing > Magazine, Randy Yates gives his description of a > fixed-point DC blocker. His material is in the > "DSP Tips & Tricks" column of the magazine.
Thanks. I haven't gotten my copy yet and the online version isn't available either. Looking forward to it though. Eric (EB)
On Mar 13, 12:37 pm, Rick Lyons <R.Lyons@_BOGUS_ieee.org> wrote:

> Hello EB, > > In the March issue of the IEEE Sig. Processing > Magazine, Randy Yates gives his description of a > fixed-point DC blocker. His material is in the > "DSP Tips & Tricks" column of the magazine.
Thanks. I haven't gotten my copy yet and the online version isn't available either. Looking forward to it though. Eric (EB)
On Mar 13, 12:37 pm, Rick Lyons <R.Lyons@_BOGUS_ieee.org> wrote:

> Hello EB, > > In the March issue of the IEEE Sig. Processing > Magazine, Randy Yates gives his description of a > fixed-point DC blocker. His material is in the > "DSP Tips & Tricks" column of the magazine.
Thanks. I haven't gotten my copy yet and the online version isn't available either. Looking forward to it though. Eric (EB)
On Mar 13, 3:05 pm, emeb <ebromba...@gmail.com> wrote:
> > OK - I did some digging and my approach is similar to "Tim's Quicker > DC Blocker" as described here: > > http://groups.google.com/group/comp.dsp/msg/3759bc4014951a03 > > Tim's algo: > > y[n] = x[n] - Quantize{ w[n] } > > w[n+1] = w[n] + (1-pole)*y[n]
scaling w[n] so that it works in an integer machine: y[n] = x[n] - (w[n]>>scale); // quantization happens here w[n+1] = w[n] + A*y[n]; where A = (2^scale)*(1-pole)
> Mine: > > d[n] = x[n] - ( w[n] >>> scale ) ; note - full precision, so > extend lsbs of d[n]
in other words, you have bits to the right of the binary point in d[n], right? i'd like to reword the alg (by scaling the quantitative meaning of d[n]) so that it is represented as something you can program in an integer machine (say, in C code) ...
> w[n+1] = w[n] + d[n] > > y[n] = Quantize{ d[n] } ; just drop extra lsbs added in step 1
... so here is my spin of EB's alg: d[n] = (x[n]<<scale) - w[n]; y[n] = d[n]>>scale; // quantization happens here w[n+1] = w[n] + y[n]; the net operation happening to that state, w[n], is: w[n+1] = w[n] + x[n] - w[n]*2^(-scale) = (1 - 2^(-scale))*w[n] + x[n] = p*w[n] + x[n] or z*W = p*W + X W/X = 1/(z-p) where p = pole = 1 - 2^(-scale). and output, y[n]: y[n] = x[n] - w[n]*2^(-scale) = x[n] - w[n]*(1-p) or Y = X - W*(1-p) = X - (1-p)/(z-p)*X = X*( 1 - (1-p)/(z-p) ) = X * (z-1)/(z-p) so the transfer function is the high-pass filter H(z) = (z-1)/(z-p) as it should be. so if your pole is restricted to the values 1 - 2^(- scale), this works. but is it the same thing as Tim's? i don't think it's as concise. maybe it's equivalent to my approach, but it looks a little different. the other thing that i wonder is if Eric's method effectively does the noise shaping or fraction saving on the dropped bits. that will take a little more effort for me to figure out and i'll get to it later.
> With no quantization or leaky integrator this seems to work fine. DC > estimate doesn't decay as it does with leaky integrator, but that > hasn't been a problem.
if there is no leakiness to the integrator (i.e. scale=0), the integrator completely undoes the differentiator and no DC gets blocked. r b-j
emeb <ebrombaugh@gmail.com> writes:

> On Mar 13, 12:37 pm, Rick Lyons <R.Lyons@_BOGUS_ieee.org> wrote: > >> Hello EB, >> >> In the March issue of the IEEE Sig. Processing >> Magazine, Randy Yates gives his description of a >> fixed-point DC blocker. His material is in the >> "DSP Tips & Tricks" column of the magazine. > > Thanks. I haven't gotten my copy yet and the online version isn't > available either. Looking forward to it though. > > Eric (EB)
Hi Eric, I just placed it on the web site: http://www.digitalsignallabs.com/dcblock.pdf -- % Randy Yates % "And all that I can do %% Fuquay-Varina, NC % is say I'm sorry, %%% 919-577-9882 % that's the way it goes..." %%%% <yates@ieee.org> % Getting To The Point', *Balance of Power*, ELO http://www.digitalsignallabs.com