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.

TMS320C6745: circular memory for TMS320C6745

Part Number: TMS320C6745

Hello.

Problem:  For proper operation  FIR task ,  as a normal ,  DSP  MC  have to have a 3 registers for manager   circular  memory.  The base register , the index  register  and the size register.  At   TMS320C6745   have  a size reg. ,  emulated  by  BK1/0  field  in  register   (AMR)  ,  and   registers (A4-A7, B4-B7)  that can  implement  as index  register  because  after each  execute LDW  or  same group operators  the  (A4-A7, B4-B7)  will  be change  to new point position.
The question is  what is behave  as  base register ?

  • Hi Dmitry,

    I've notified the factory team. Their feedback will be posted here.

    Best Regards,
    Yordan
  • Dmitry,

    We have used a variety of methods for implementing circular buffers on our DSPs. The method on the C6745 is as you describe. For a better understanding of the parts that you have doubts about, please refer to the C674x DSP & Instruction Set Reference Guide which has a section on Circular Addressing Mode. The Ref Guide explains how the mode is used for a variety of instructions and how to make sure you get what you want depending on your buffer's alignment.

    If you are able to use the FIR library routines in DSPLIB, you can get very good performance using the different styles there. Those are most efficient when working on two arrays, of coefficients and of a set of samples much longer than the number of coefficients.

    The FIR library functions can be called from C code and the EDMA3 can be used to move buffers of data to prepare for the proper construction of the buffers.

    Using the AMR/BK1/BK0 circular addressing is not C friendly and must be handled completely in assembly code. When returning from C you will need to make sure the registers are returned to the state expected by the C compiler or you may have runtime failures that could be hard to locate and debug.

    Regards,
    RandyP