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
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.
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