English
Language : 

DS643 Datasheet, PDF (133/216 Pages) Xilinx, Inc – Soft Direct Memory Access (SDMA) support
LogiCORE IP Multi-Port Memory Controller (v6.06.a)
Managing SDMA Descriptors
Prior to starting DMA operations, the software application must set up a descriptor or chain of descriptors. After
the descriptors are set, SDMA begins processing the descriptors, fetches, processes, and then updates the
descriptors. By analyzing the descriptors, the software application can read status on the associated DMA transfer,
fetch user information on receive channels, and determine completion of the transfer. With this information the
software application can manage the descriptors and data buffers.
When a descriptor has been processed by the SDMA, the transfer status is updated into the STS_CTRL_APP0 field.
When the software application sets up the descriptor chain, the status bits in the Control/Status field of each
descriptor must be set to zero. The status bits are: Error, Completed, and EngBusy.
For receive channels SOP and EOP are status bits and must be set to zero. For transmit channels SOP and EOP are
control bits set by the software application. This allows the software application to determine when a descriptor has
been processed and if there were errors during processing.
As each descriptor is updated into remote memory, STS_CTRL_APP0.Completed bit is set to 1. By checking the
STS_CTRL_APP0.Completed bit and walking through the descriptor chain, the software application can determine
which descriptors have been completed.
Figure 18 shows remote memory where software has constructed a descriptor chain. The SDMA, shown on the
right, fetches descriptors, processes them, and then updates the descriptor in remote memory providing status. As
shown the STS_CTRL_APP0.Completed=1 for the descriptors that have been processed.
X-Ref Target - Figure 18
Remote Memory
(MPMC)
Descriptor 1
STS_CTRL_APP0.Completed = 1
Descriptor 2
STS_CTRL_APP0.Completed = 1
Updated to
Remote Memory
Updated to
Remote Memory
SDMA
Channel Registers
Descriptor 1
Done
Descriptor 1
Done
Descriptor 3
STS_CTRL_APP0.Completed = 0
Transferred to
Channel Registers
Descriptor 1
Currently
Processing
Descriptor 4
STS_CTRL_APP0.Completed = 0
Descriptor 2
STS_CTRL_APP0.Completed = 0
DS643_20_080307
Figure 18: Software - Hardware Descriptor Processing
For further clarity on Receive channels, by monitoring the STS_CTRL_APP0.Completed bit in the descriptor, the
software application can determine which data buffers, as described by the descriptor, have received data and need
to be processed. By looking for STS_CTRL_APP0.SOP and STS_CTRL_APP0.EOP the software application can
determine the start and end buffers containing a packet.
DS643 February 22, 2013
www.xilinx.com
133
Product Specification