DSPRelated.com
Forums

1-Bit Goertzel Algorithm Performance

Started by dn...@newelltech.com May 14, 2007
I'm implementing a DTMF detector using the Goertzel Algorithm.
I have raw simulations built using Excel (I know...) and am getting some interesting results.

I don't see a lot of differences in the frequency response using 10, 8 or 1 bit ADC's and floating point arithmetic. I would have expected to see significantly poorer performance with the 1-bit.

I also ran some simulations using float and 16-bit arithmetic (with an 8x8 multiply) and don't see a lot of differences there.

In many discussions I've read, everyone seems focused on squeezing out the maximum number of bits (float or fixed). I can understand this with a high order IIR, but is my little 2nd order IIR going to be that sensitive? I don't seem to see it in my simulations.

I'm hoping someone has implemented a 1-bit and has some performance data he's willing to share or some insight into these effects.

Thanks.
Dennis-

> I'm implementing a DTMF detector using the Goertzel Algorithm.
> I have raw simulations built using Excel (I know...) and am getting some
> interesting results.
>
> I don't see a lot of differences in the frequency response using 10, 8 or
> 1 bit ADC's and floating point arithmetic. I would have expected to see
> significantly poorer performance with the 1-bit.
>
> I also ran some simulations using float and 16-bit arithmetic (with an
> 8x8 multiply) and don't see a lot of differences there.
>
> In many discussions I've read, everyone seems focused on squeezing out the
> maximum number of bits (float or fixed). I can understand this with a high
> order IIR, but is my little 2nd order IIR going to be that sensitive? I
> don't seem to see it in my simulations.
>
> I'm hoping someone has implemented a 1-bit and has some performance data
> he's willing to share or some insight into these effects.

A 1-bit ADC means you've built sort of a zero-crossing detector, not really an ADC.
Your IIR filter shouldn't have any issues with that if it's using 16-bit precision
(coefficients and delay storage elements). A general rule of thumb is that for "high
Q" IIR filters (narrow pass/stop band, sharp cut-offs, significant attenuation),
maintaining filter precision as twice data precision will avoid the notorious IIR
stability issues (applies to 2nd order or higher).

-Jeff