Lets assume I have an IIR filter with :

bz = [1.0195 0 0];
az = [1 0.0166 0.0020];

The filter is stable as i can see.

enter image description here

enter image description here

enter image description here

enter image description here

If you check the phase delay its negative, so is the group delay. Phase response is positive.

What do you make of this. ? Is my filter suitable still for RTL implementation.

I have read a lot about negative group delays being fine, still causal system. But what about negative phase delays ? Is it all fine?

What about these: somewhat same results, but still stable and HW implementable ?

bz=[0.9941 0 0];
az=[1 -0.0889 0.0830];


  • $\begingroup$ As long as the poles are in the inside of the unit circle, the system is stable regardless of group delay. This extends to any system this filter may be a part of (meaning the filter could be in a feedback node to make a higher level system unstable which is another story) $\endgroup$ Commented Jan 27, 2021 at 17:09
  • $\begingroup$ @DanBoschen , Hi Dan, thanks for a quick reply,. So you are saying irrespetive of any phase, or delays , if its stable, its fine. And if its part of a cascade of other blocks (which independtly are stable) , then this block as part of that cascade should not render the system unstable. Good to know. Thanks but, what about the positive phase response (not delay) , what do you make of that ? $\endgroup$
    – BandW
    Commented Jan 27, 2021 at 17:29
  • $\begingroup$ Why do you think that would make the system unstable? Consider simple L and C circuits where you can have leading and trailing phase; but neither case would be unstable. Bottom line is a system with poles in the right half plane (outside the unit circle) is the test for instability $\endgroup$ Commented Jan 27, 2021 at 17:31
  • $\begingroup$ i am not saying it would make it unstable, just that its so small... maximum 0.0169 radians.. and its a 2nd order iir filter.. i am sorry, it just i lack the experience to digest the number and say its fine. I have alreday C++ fixedpoint implementaiton, it works fine. Hopefully for RTL too. $\endgroup$
    – BandW
    Commented Jan 27, 2021 at 17:35
  • $\begingroup$ If it works in C++, it can work in RTL too $\endgroup$
    – Ben
    Commented Jan 27, 2021 at 17:53


Your Answer

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