Descriptor Management - 1.1 English

AXI Multichannel Direct Memory Access v1.1 Product Guide (PG288)

Document ID
PG288
Release Date
2023-10-18
Version
1.1 English

Prior to starting MCDMA operations, the software application must set up a descriptor chain (one for each channel for MM2S and S2MM). When the AXI MCDMA begins processing the descriptors, it fetches, processes, and updates the descriptors. A single Scatter Gather engine fetches the descriptors of all channels in a round robin manner while alternating between MM2S and S2MM descriptors.

By analyzing the descriptors, the software application can read the status on the associated MCDMA transfer, fetch user information on receive (S2MM) channels, and determine completion of the transfer. With this information, the software application can manage the descriptors and data buffers. Software applications process each buffer associated with completed descriptors and reallocate the descriptor for AXI MCDMA use. To prevent software and hardware from stepping on each other, a tail pointer Mode is created. The tail pointer is initialized by software to point to the end of the descriptor chain. This becomes the pause point for hardware. When hardware begins running, it fetches and processes each descriptor in the chain until it reaches the tail pointer.

The AXI MCDMA then pauses descriptor processing. The software is allowed to process and re-allocate any descriptor whose Complete bit is set to 1. The act of writing to the TAILDESC register causes the AXI MCDMA hardware to begin processing descriptors again if it is paused at the tail pointer. If the AXI MCDMA hardware is not paused at the TAILDESC pointer, writing to the TAILDESC register has no effect on the hardware. In this situation, the AXI MCDMA continues to process descriptors until reaching the new tail descriptor pointer location. Descriptor Management must be done by the software. AXI MCDMA does not manage the descriptors.