I have been reading around the topic of FIR accelerators within the SHARC 21479. It seems not to help if we are intending on using FIR accelerators on a sample by sample basis. If I had an FIR of length 1024 (one filter for left channel and another for right channel). If the left and right channels are interleaved, spacing between left and right channel is (1/200K)s, which means each channel would effectivity be sampled at a 100K. If I use FIR HW accelerator for left and then for right just to do one sample and then come back, I will use most of the time in DMA transfers.

Is there a way of actually copying the coefficients and data once at the beginning and only update the data every sample (i.e. every new sample, the data buffer for each channel is shifted and the new sample written). If this is possible, it will save the continuous DMA and reduce it to one per sample (as we have the two copies of our coefficients and data buffers DMA'ed already). Do you have any code that does this?

Hi,

>>I have been reading around the topic of FIR accelerators within the SHARC 21479. It seems not to help if we are intending on using FIR accelerators on >>a sample by sample basis. If I had an FIR of length 1024 (one filter for left channel and another for right channel). If the left and right channels are >>interleaved, spacing between left and right channel is (1/200K)s, which means each channel would effectivity be sampled at a 100K. If I use FIR HW >>accelerator for left and then for right just to do one sample and then come back, I will use most of the time in DMA transfers.

Basically the solution for your issue is to use a window size greater than 1. This would address your requirement of loading coefficients once and updating the data buffer with the new sample . With this the accelerator processes it exactly the way you describe below.

>>Is there a way of actually copying the coefficients and data once at the beginning and only update the data every sample (i.e. every new sample, the >>data buffer for each channel is shifted and the new sample written). If this is possible, it will save the continuous DMA and reduce it to one per sample >>(as we have the two copies of our coefficients and data buffers DMA'ed already). Do you have any code that does this?

Please refer to the example given in the posting below . In this example the hardware FIR works on a block of samples received in real time. The FIR accelerator window size is defined to be equal to the block of samples and processes this block of data at a time.

http://analog.hosted.jivesoftware.com/message/5259#5259

Thanks,

Divya