FPGA Intellectual Property
PCI Express*, Networking and Connectivity, Memory Interfaces, DSP IP, and Video IP
6355 Discussions

altera DMA stuck in busy state

Altera_Forum
Honored Contributor II
1,475 Views

Hi, 

 

I was trying to transfer data between DDR and FPGA through DMA(normal DMA from Qsys) in arria 10 devkit

The DMA goes into busy state after the transfer is initiated but doesn't come out of it. 

 

Things tried out: 

1. length register: 14 bit 

burst : 1024 words(32 bit data) 

length : 4096 

rcon : 1(since read is from a FIFO) 

wcon : 0 

Length decrements and goes to 0, the data also is copied to the destination but DMA is still in busy state. 

 

2. length register: 13 bit 

burst : 1024 words 

length : 4095 

rcon : 1(since read is from a FIFO) 

wcon : 0 

Length decrements and doesn't go to 0, instead it keeps going to some high value and decrements until some time and repeats the loop again. 

 

3. length register: 10 bit 

burst : 64 words 

length : 1023 

rcon : 1(since read is from a FIFO) 

wcon : 0 

Length decrements and doesn't go to 0, instead it keeps going to some high value and decrements until some time and repeats the loop again. 

 

4. All the above 3 with rcon and wcon set to '0'. 

Even then the behavior is the same. 

 

Can I get any help on this? 

 

I have already gone through the below link and tried out the configuration accordingly. 

https://www.altera.com/support/support-resources/knowledge-base/solutions/spr240514.html
0 Kudos
2 Replies
Altera_Forum
Honored Contributor II
603 Views

As an additional observation to the earlier post, 

I have also observed that when the when the length(in bytes) is given as the exact same number of bursts(in words),  

the length register decrements to 0 but the transactions continue to happen. 

Example: If I have given the burst as 256 words(32 bit) and length as 1024(bytes) and then issue a go, the length is decremented to 0 but the number of transactions that occurred is incrementing continuously. 

I could also see the data being written in the destination until the length goes to 0, and later overwritten by some junk values.
0 Kudos
Altera_Forum
Honored Contributor II
603 Views

Hello, 

 

We faced similar type of issue few years back. At that time, we read following from DMA's user guide: "in burst mode, the length of a transaction must not be longer than the configured maximum burst size. otherwise, the transaction must be performed as multiple transactions." This means, if you set your burst size to 1024, then transaction size must not be greater than that. In your case, if you set burst size to 1024, then I think you should not face any issue when transfer length is less or equal to 1024. But if transfer size is greater than that (which is the case in all examples you have mentioned so far), you should see some unexpected behavior. 

 

Regards, 

Bhaumik
0 Kudos
Reply