I just got c5515 eZusb stick a couple days ago, and I'm trying to implement a simple 32-tab FIR filter on the chip to process the input audio coming from the codec. The data from the codec is 16-bit and I defined my filter coefficients as 16-bit (Q15). Then, I'm running into the issue that c5515 is a 16-bit fixed-point processor, and how does it handle 16-bit x 16-bit multiplication? I know the fact that c5515 has 17-bit X 17-bit multiplier, and the result is 40-bit, but how can I write in C to shift the accumulation result by the correct amount in my case in order to get right product (I want to the product to be 16-bit as well) ?
Any help will be highly appreciated!