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.

Performance optimization

Hello everyone!

I am trying to boost up performance of audio application running on c6747 dsp. I am using McASP + EDMA to get arrays of Int32 of audio samples. The thing is dsplib function DSPF_sp_biquad operates with arrays of float. So I am looking for two things:
A. Is there biquad function implementation over Int32 arrays? Is it more efficient?
B. If not is there some more effective way to convert Int32[64] to float[64] than doing explicit cast in for loop?

Thanks.

  • Hi,

    Thanks for your post.

    If you check the DSPF_sp_biquad API and to use this in your C674x project, the pointer to a input array x which is mandatory to declare to its float data type as the API prototype is well defined and the documentation for this API is mentioned here.

    http://processors.wiki.ti.com/index.php/C674x_DSPLIB#DSPF_sp_biquad_.28Biquad_Filter.29

    So, there is no such biquad function implementation over Int32 arrays but, may be, you can consider how those float values will be converted to the q15 fixed point representation when you pass through audio DSPF_q15tofl() -> DSPF_fltoq15( ) calls. For more details on this conversion, you could refer the below E2E post:

    https://e2e.ti.com/support/dsp/tms320c6000_high_performance_dsps/f/115/t/150300

    The newer 674x DSPLIB implements the biquad differently and you can download the C674x DSPLIB from the below:

    http://focus.ti.com/docs/toolsw/folders/print/sprc265.html

    FYI, for our newer devices (674x core) we have released an updated DSPLIB:

    http://wiki.davincidsp.com/index.php?title=C674x_DSPLIB

    In order to improve your performance which depends on how well the compiler optimizes it.  Please do the following to set file-specific compile options:

    • Right click on the biquad C file and select Properties.

    • Go to "Basic Options" for the C6000 Compiler

    • Turn off symbolic debug and set the optimization level to 3.

    Thanks & regards,

    Sivaraj K

    -------------------------------------------------------------------------------------------------------

    Please click the Verify Answer button on this post if it answers your question.

    -------------------------------------------------------------------------------------------------------