Timing details of DMA transfer in PSoC 3/5

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.