Limitation on no. of DMAs that can be triggered simultaneously

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

 Hello All

   

Is there a limitation on no. of DMAs that can be triggered simultaneously and two DMAs getting stuck at some point....

0 Likes
5 Replies
Bob_Marlowe
Level 10
Level 10
First like given 50 questions asked 10 questions asked

As far as I know there is no limitation except the number of channels (24)

   

but

   

All DMA has to be served by the DMA-controller and all transfers have to pass the PHUB and the CPU is going to access the system busses at the same time. So there is room enough for some bottlenecks which may disturb the parallelism of 23 concurrent DMA-channels.

   

 

   

Bob

0 Likes
HeLi_263931
Level 8
Level 8
100 solutions authored 50 solutions authored 25 solutions authored

The PSoC5 architecture TRM (http://www.cypress.com/?docID=36586 ) explain it nicely (chapter 6). There are 24 DMA channels available, so you get only 24 configurations which can be active (when you create a TD, a channel gets assigned, and if none are left you get an error).

   

Each channel has an assigned priority (0..7), and lower priority wins (but this can be configured, see part 6.2.2.4 in the TRM). Within the same priority, round-robin is used, so all channels get executed in a fair manner.

   

So if you have too many DMA activity going, you might see delays, but no DMA will get completely blocked.

0 Likes
Anonymous
Not applicable

 If the channel priorities are the same and all  DMA channnels have been assigned, then is there a possibility that the DMAs can get stuck at some point....

   

1)  And what happens if 2 DMA channels of same priority and having same source adddress and different destination address are started at same time....is there a possibility of getting stuck.

   

2)  When the burst count is set as '0' - which means the breaking of data bytes is not carried out and entire transfer is completed in one shot then is it possible that we see some DMAs getting stopped (DMAs have same priority)..or will they be served one after other...

0 Likes
HeLi_263931
Level 8
Level 8
100 solutions authored 50 solutions authored 25 solutions authored

If with "getting stuck" you mean that the DMA subsystems runs into a deadlock and does nothing - no this, won't happen. What happens is that a DMA transfer will get delayed, because another one is executing.

   

When two DMA requests with the same priority are requested, the one with the older 'has not run' time wins. If both times are the same, the one with the lower DMA channel number runs first.

   

A DMA transfer already runing won't get interrupted - this will only happen during the setup phase ("source engine phase"). A TD will always run a complete transfer otherwise - even when then a higher priority DMA request needs to wait then.

   

Again - read the Architecture TRM, it explains this in much more detail (its 10+ pages about DMA).

0 Likes
Anonymous
Not applicable

 ok......thanks a lot.....

   

And will i be able to connect nrq to isr and trigger interrupt at the end of transfer...I am having problem with this .....

0 Likes