# Interpolating/Decimating CIC Filter Group Delay

I have an Interpolating Cascaded Integrator Comb (CIC) filter designed as so:

Rate Change = 100
Number of Stages = 4
Differential Delay = 1


I'd like to calculate the group delay of this filter but I am not sure how. This question on DSP Related is helpful, but I am not sure my filter will have 0 delay.

Also, Richard Lyons explanation is helpful, but he doesn't directly deal with group delay.

I also have a Decimating CIC filter designed as so:

Rate Change = 25
Number of Stages = 4
Differential Delay = 1


How would I calculate its group delay?

Consider an $$D$$-tap FIR filter with liner phase, the group delay (measured in samples) is $$g=\frac{D-1}{2}\tag{1}$$ and therefore, if it is measured in seconds it will be $$g=T_s\frac{D-1}{2}\tag{2}$$ where $$T_s=1/F_s$$.
The CIC filter which is also denoted as recursive running sum filter is indeed a special implementation of a moving-average filter. The moving average filter is $$y[n]=\frac{1}{D}[1+z^{-1}+z^{-2}+\cdots z^{-D+1}]=\frac{1}{D}\sum_{n=0}^{D-1}z^{-n}=\frac{1}{D}\frac{1-z^{-D}}{1-z^{-1}}$$ which can be implemented by a $$D$$-tap FIR filter. If you compare carefully, the above response is identical to the frequency response of each stage of a CIC filter. Therefore, we can use $$(1)$$ and $$(2)$$ for calculation of the group delay in each stage.
Comparing the response given for moving average with that of the CIC filter, assuming $$R$$ is rate change and $$M$$ is the number of samples per stages, then $$D=RM$$ So for $$N$$ stages we have $$g_{\text{cic}}=N\left(\frac{RM-1}{2}\right)$$ expressed in samples and $$g_{\text{cic}}=NT_s\left(\frac{RM-1}{2}\right)$$ in seconds.
• in your case, $M=1$. Here $N$ is the number of stages. – msm Sep 30 '16 at 1:09