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.
1-Bit Goertzel Algorithm Performance
Started by ●May 14, 2007
Reply by ●May 15, 20072007-05-15
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
> 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