DSPRelated.com
Forums

fixed point CIC filter

Started by sunflowerhj November 16, 2006
Thanks a lot
Jing


>sunflowerhj wrote: >> Hi: >> Can anyone help me to understand why CIC filter can not be implemented
in
>> floating point? >> >> Mr. Dirk A Bell mentioned: >> >>>>A CIC filter cannot be implemented in floating point. To get it to >>>>work it must be done in non-saturating integer math, such as is done >>>>using non-saturating two's complement representation. The integer >>>>math must wrap around. >>>> >>>>Dirk A. Bell >> >> in http://www.dsprelated.com/showmessage/4544/1.php >> >> Could anyone explain it in more details or refer some articles to
read?
>> Thanks for the help in advance. >> >> Jing >> >> >> >> > > >It is because the CIC depends on exact integer math in order to exactly >cancel samples in the comb part of the filter. Floating point has some >nasty rounding that will prevent exact cancellation. A CIC also depends
>on the modularity of the number system: we allow the integrator to >continuously overflow, but since the number system is modular and the >comb section just takes the difference between the current and a delayed
>integrator output, the overflows are of no consequence. If it were to >be done with floating point, a mod function would have to be used to >preserve the modularity, otherwise the floating point will keep bumping >up the exponent and shifting lsbs off the integrator as it sums without >bound > >This becomes perhaps a bit more obvious if you consider a first order >CIC. The CIC is a recursive implementation of a boxcar filter, which is
>to say it outputs the sum of the last N samples. Rather than summing >all those samples on every sample interval, it accumulates the samples >in an integrator (without regard to overflow). The comb section >subtracts the integrator output of N samples ago from the current >integrator output. Since the comb section is computing the difference >between integrator outputs, we don't care about integrator overflows as >long as the number system is modular (e.g. two's complement or RNS >systems), meaning A+N=A where N is the modulus of the number system. >For 2's complement, N=2^k where k is the number of bits. > >