07-23-2014 11:52 AM
I refer to the PG021 document “LogiCORE IP AXI DMA v7.1 Product Guide” of April 2, 2014.
Pg. 28, table 2-16 says that the IOC_Irq bit, in scatter-gather mode, only gets set when the DMA engine sees a descriptor with the End of Frame bit set.
Pg. 38, table 2-29 says that the End of Frame bit in a descriptor only applies when the the DMA is configured in Micro DMA mode.
So, how do you get DMA completion interrupts (IOC interrupts) in scatter-gather mode when you’re not using Micro DMA? Is this an error in the product guide?
Also, is it possible to get IOC interrupts in Cyclic BD mode?
Unable to get interrupts from the DMA. Interrupts from other sources are working.
07-23-2014 03:29 PM
07-23-2014 02:12 PM
"Unable to get interrupts from the DMA" is not strictly correct. Interrupts do occur in micro-DMA mode. They do not occur when micro-DMA mode is not enabled. Our data rate is fairly high and micro-DMA mode is not an option.
07-23-2014 02:35 PM - edited 07-23-2014 02:43 PM
Hmmm. I understand the confusion.
In non-micro mode, the EOF bit gets set in the status register of the descriptor automatically by the DMA engine when it sees a s2mm_tlast assertion. This triggers an interrupt event on the IOC_Irq in the status register of the DMA engine (assuming it has been enabled, threshold has been met, and delay timer has been met).
I've never used micro mode, so I'm not sure the purpose of the RXEOF bit in the S2MM_CONTROL register of the descriptor (i.e. pg 38)
07-23-2014 02:43 PM
07-23-2014 03:25 PM
bwiec, thanks for your reply.
You say, "...the EOF bit gets set in the status register of the descriptor automatically by the DMA engine when it sees a s2mm_tlast assertion"
So perhaps this means I need to drive the tlast on the streaming side of the DMA? This may be the issue. We are using only the S2MM function, and there is no physical meaning on the streaming side for tlast, but I could implement a counter and drive tlast high periodically. I will try that.
07-23-2014 03:29 PM