BF706 fastest possible FIR code - mixed C and assembly

Here is just about the fasts FIR filter for the BF706. It uses mixed C and assembly to get a 32-bit filter with 8060 taps sampling at 48 kHz. This is 97% of theoretical maximum. Right now, I cannot get anywhere near this in C alone and (see other Q&A), and I would very much like to know if anyone else has had this problem. Must be sample-by-sample, not block buffer mode. filter.pdf

Parents
    •  Analog Employees 
    on Oct 4, 2019 1:33 PM

    Hi Patrick,

    While looking into the code you have attached, I understand that you have written your own algorithm for FIR filtering on ADSP-BF706. The performance is better when using 'inline asm' compared to 'C' alone. Please let me know if my understanding is wrong.

    Can you please use the FIR library code available in the below mentioned installation path and check whether you get better results.
    [Installation directory]:\Analog Devices\CrossCore Embedded Studio 2.8.1\Blackfin\lib\src\libdsp

    Also, I would suggest you to refer application notes(EE394 and EE376) for some of the performance optimization techniques. The link for the application notes is given below.
    EE394: www.analog.com/.../EE394.pdf
    EE376: www.analog.com/.../EE376.pdf

    BTW, were you able to get correct results using both C and ASM implementation?

    Regards,
    Anand Selvaraj.

Reply
    •  Analog Employees 
    on Oct 4, 2019 1:33 PM

    Hi Patrick,

    While looking into the code you have attached, I understand that you have written your own algorithm for FIR filtering on ADSP-BF706. The performance is better when using 'inline asm' compared to 'C' alone. Please let me know if my understanding is wrong.

    Can you please use the FIR library code available in the below mentioned installation path and check whether you get better results.
    [Installation directory]:\Analog Devices\CrossCore Embedded Studio 2.8.1\Blackfin\lib\src\libdsp

    Also, I would suggest you to refer application notes(EE394 and EE376) for some of the performance optimization techniques. The link for the application notes is given below.
    EE394: www.analog.com/.../EE394.pdf
    EE376: www.analog.com/.../EE376.pdf

    BTW, were you able to get correct results using both C and ASM implementation?

    Regards,
    Anand Selvaraj.

Children