AnsweredAssumed Answered

FIR Filter Performance in AD21489

Question asked by AntonioJ on Jul 22, 2014
Latest reply on Jul 22, 2014 by MaheshN

Hello,

 

I am facing an optimization problem. I am stuck trying to figure out why the following instruction is taking 2 cycles instead of 1 (I am looking at the cycle counter register).

 

macs: f12=f0*f4, f8=f8+f12, f0=dm(dm_ptr,m3), f4=pm(pm_ptr,m9);      /* samples * coeffs, accum, read 2 samples, read 2 coeffs */

 

 

The instruction is in a FIR loop:

lcntr=r3, do macs until lce; /* FIR loop */

 

macs: f12=f0*f4, f8=f8+f12, f0=dm(dm_ptr,m3), f4=pm(pm_ptr,m9);      /* samples * coeffs, accum, read 2 samples, read 2 coeffs */

f12=f0*f4, f8=f8+f12, s0=dm(dm_ptr,dm_M1); /* samples * coeffs, accum, dummy read to move pointer to oldest sample */

f8=f8+f12; /* final SIMD accum */

r12=s8;

 

 

 

 

I checked the alignment of the data in the DAGs and dm_ptr(i4) is pointing to 0xBA7B0 and pm_ptr(i12) is pointing to 0XC2F90 (even addresses in two different memory sections of the AD21489).

Just in case I also tried disabling VISA code generation but I got the same results.

 

Any advice would be much appreciated.

 

Kind Regards,

 

Antonio

Outcomes