This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

FIR with C55xx

I need to know the possibility of doing a 2048 point FIR using 24 bit data from a CODEC using 16-bit coefficients (ie 16x24 multiply) with a 24 bit output path.

 

1. Can TI provide sample code for this FIR

2. will it run in a C55xx part at ~ 150MHz

regards

 

  • 1. Look for DSPlib, it's include different types of FIR filters. 

    2. Why not? 

    But how much time takes convolution, it's another question.

     

    Max

  •  

    > I need to know the possibility of doing a 2048 point FIR using 24 bit data from a CODEC using 16-bit coefficients (ie 16x24 multiply) with a 24 bit output path.

    This is possible, but DSPlib doesn't support extended precision FIR's, so you'll have to code it up yourself. It's going to take a lot more than the one-cycle-per-tap that you get with the standard MAC instructions. What is your sample rate? That will determine whether you can code it in C or need to due it in assembly language. If it were me doing it, I'd probably just bite the bullet and do it in assembly language. The time you'll save by doing the initial coding in C will be quickly used up in debugging, since the TI compiler does not understand fractional types, and tends to convert 40-bit long long's back to 32 bits every time you turn your back. Also, in assembly language you can use circular addressing of the data and coefficient buffers.

    Here's something to think about before you get started: Write out the multiplication steps as if you were doing them on paper. Then ask yourself what the point of multiplying out the right-most bits of the result, since you're not going to store them. It's true that you may want some additional precision during the tap accumulation, but there's a limit to what you can get, given that you need 11 guard bits (2048 taps) and you've only got a 40 bit accumulator. Based on that, you might decide that doing 16 x 16 multiplies makes sense, in which case you can use a library function. If you don't like that, consider wrapping an auto-scaling step around a standard FIR routine, based on the peak values in your input buffer.

    David L. Rick

    Hach Company

     

  • Hello Himansu!

    How did you take to implement a very fast FIR filter?

    Because I have tried to implement with the filter that is in the C5515_eZdsp_Audio_Filter_Demo1: fir.asm, and for 48 coefficients it takes 50 microsecs with a CPU clock of 100MHz. I would like to reduce this time!

     

    Thanks a lot,