Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
8 years ago

altera DMA stuck in busy state

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

2 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    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.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    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