In the FIR TCB there is a coefficient count/length, a modifier, and an index - but no base. How exactly do these work? Since there is no base I assumed the index served also as the base - that is, your coefficeints have to start at the base - and it would follow the usual circular addressing.

I want to implement a polyphase filter with one coefficient set for even numbered outputs and another set for odd numbered outputs (that is, two phases). I created a coefficient vector with two coefficient sets (one right after the other) and made my coefficient count/length twice the TAPLEN in FIRCTL2, but it doesn't seem to be using the second set of coefficients, only the first. For example, if one of my coefficient sets is all zeros then either all of my even or all of my odd samples should be zero, but if I make the first set zero then all the outputs are zero and if I make the second set zero then no outputs are zero.

I thought I read somewhere in the documentation some comment regarding circular addressing for the coefficients but I can't seem to find it again.

Can anyone clarify how the coefficients are accessed?

Thanks,

Matt

Hi Matt,

As your observations indicates, circular buffering is not supported for coefficient buffer in FIR accelerator. It is only supported for input and output buffers. As you might be already aware that after one set of processing is over, the accelerator also writes back the new index values for input and output buffers into the TCB placed in the memory. However, the write back is not supported for coefficient buffer. One reason of this is could be because, usually the coefficient buffer is static and not updated continuously unlike input and output buffers in an application.

One way to use the accelerator to achieve the results you are looking for could be to update the TCB explicitly to change the "CI" value after one set of processing is over.

Hope this helps.

Thanks,

Mitesh