Timing details of DMA transfer in PSoC 3/5

Version 1
    Question: What is the time taken for DMA to transfer N bytes of data on a trigger in PSoC 3/5?

     

    Answer:

    •    Ideal time for transferring N bytes of data between memory locations mapped in the same PHUB spoke (Intra spoke) is 2K+5 cycles.
    •    Ideal time for transferring N bytes of data between memory location mapped in different PHUB spoke (Inter spoke) is K+6 cycles .

    where K = N/1 for 8 bit spoke,
          K = N/2 for 16 bit spoke
          K = N/4 for 32 bit spoke

    For spoke details refer PHUB and DMA section of PSoC 3/5 Technical Reference Manual.
     
    Ideal transfer assumes the following.
    •    Only one DMA channel is active, no competition between DMA channels.
    •    CPU not competing with DMA channel to access data in source and destination spoke.
    •    Source or destination peripheral is always free.
    •    Data width of the source and destination peripheral is same
    •    Data length (N) is even multiple of spoke data width. This avoids ragged ends where transactions that are less than the width of the spoke must be carried out
    •    The source and destination start addresses are on a spoke data width boundary. This avoids ragged starts and ends where transactions that are less than the width of the spoke must be carried out

    Example:

    The time taken by DMA for transferring 12 bytes of data from one RAM buffer to another RAM buffer on a trigger in an ideal case is calculated as follows:
    Spoke width = 32 bit (Refer TRM -> System spoke) , hence K = 12/4 = 3
    For intra spoke transfer time taken  = 2K+5 = 2*3+5 = 11 cycles . Hence this transfer will be complete in 11 cycles in an ideal case.