4
$\begingroup$

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?

$\endgroup$

1 Answer 1

5
$\begingroup$

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.

$\endgroup$
9
  • $\begingroup$ The number of samples per stage of my filters is 1 (differential delay). Should N be 1? What would the group delay be for the two filters I describe? $\endgroup$
    – jeremy
    Sep 30, 2016 at 0:45
  • 1
    $\begingroup$ in your case, $M=1$. Here $N$ is the number of stages. $\endgroup$
    – msm
    Sep 30, 2016 at 1:09
  • $\begingroup$ This is true for interpolating filter. Would you add additional information for the decimating filter? $\endgroup$
    – jeremy
    Sep 30, 2016 at 16:15
  • $\begingroup$ @jeremypatterson in the link I provided the system function is given for the general case (that is why it is said "R = decimation or interpolation ratio"). Can you explain why it is not true for decimating filter? $\endgroup$
    – msm
    Sep 30, 2016 at 21:27
  • $\begingroup$ If I understand correctly, my example interpolating filter has 4*(100*1-1)/2 = 198 samples of delay. For Decimation, I don't think it would have 4*(25*1-1)/2 = 48 samples of delay since the sample rate is significantly smaller after the filter. Would I need to divide by R after the calculation for Decimation? $\endgroup$
    – jeremy
    Sep 30, 2016 at 22:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.