Ambiguity between theoretical and MATLAB CIC decimator models

2 views (last 30 days)
I have been doing a lot of experimentation on fixed point CIC decimator filters built by the function mfilt.cicdecim and then using the filter function for filtering. I created a model in SystemVerilog as per traditional theoritical CIC implementation. On comparison between the MATLAB and SystemVerilog models, I have observed some anomalies which are listed hereby :-
1. Whatever be the input to the filter, the first O/P of MATLAB filters is always zero.
2. When moving from one stage to multi stage filters, the O/P of MATLAB filters doesn't follow the traditional implementation (perhaps some different algorithm is implemented).
Could someone please help me as to how exactly these CIC decimators are implemented in MATLAB. I could share snippets of my code if need be.

Answers (2)

Edson Silva
Edson Silva on 24 Jul 2020
I noticed exactly the same problem. Take a look at my question:
I am sorry I did not find an answer to that yet

Edson Silva
Edson Silva on 24 Jul 2020
I think the answer to this question is the way the MATLAB block is implemented. In the traditional CIC decimator algorithm, the delay unit in the integrator is used in the feedback path, but in the MATLAB block it uses the unit delay in the feedforward path of the integrators:
Although the filter will be equivalent (same frequency response), the numerical output of the two implementations are a different (the mirrored look that I mentioned in my question).
I don't know if there is any way of implementing the CIC in Matlab using the unit delay in the feedback.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!