David M. Alter said:

Ajay,

Ajay N Namboothiri

I was planning to use F2837xD in one of our DSP based application, in which we need to implement 15 second order IIR filters,10 extra multiplications,& 10 extra additions(accumulating sum).We need to complete these operations within a sampling period & this period can be be from 1uS to as low as 625nS.

Well, things are a little tight.  625 ns is 125 cycles @ 200 MHz.  Each IIR has perhaps 5 MACs in it plus data movement for the history.  So, 15*5 = 75 MACs.  You've also got 20 more operations (10 mpy, 10 add).  In total, you're pushing 95 math operations, plus you've still got pointer setup and other overhead.  You've only got 125 cycles to implement this.  So, things are very tight.

Now this is just a rough estimate.  I don't know if you can parallel any of your operations.  If so, you've got the CLA at your disposal as well.  That would double your available MIPS here.

I think you'll need to go to hand assembly for this however.  You need to squeeze that last bit out of the code.  The compiler is not going to do that for you.

Regards,

David

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

David M. Alter

Senior Member Technical Staff
Texas Instruments Inc.

So as of now we are OK with the sampling period of 1uS that is we have 1uS time to complete the above said processing.So i thought better move to assembly,i also tried different optimization options in C but i'm not very sure about it ...

I already started Assembly coding for CLA. The CLA is triggered at 1MHz rate.So i thought if i could also share some of the filters in a timer or external interrupt routine which should be somehow in sync with the CLA triggering,
i could get more bandwidth & might be able to complete the processing in time if going by this 

I went through the section which you had suggested in the CPU guide.I saw one example which described the regs we need to save to stack.It says a total of 16X2= 32Cycles would be spent in an ISR routine!!
In my case i am available with only 200 Cyces. 

David M. Alter said:

To your question, an ISR can be written in assembly.  You don't need to put the ISR code in a different section.  It can go in .text.  If you want to link it somewhere else (e.g., load to flash but run from ram), then yes, use a .sect directive to put it in a different section.  The only thing special about an ISR from a regular functions is:

 if you could elaborate this a little more,i.e how will we write the assembly instructions in the C ISR routine.
is it by using the asm(" "); function?.You can also direct me to any document...