User manual

Table Of Contents
Zynq-7000 AP SoC Technical Reference Manual www.xilinx.com 286
UG585 (v1.11) September 27, 2016
Chapter 9: DMA Controller
SARn register so that it modifies the source byte lane alignment. For example, when the bus
width is 32 bits and bits [1:0] in the SARn register are changed.
When a discontinuity in the source datastream occurs, the DMAC:
1. Halts execution of the DMA channel thread.
2. Completes all outstanding read operations for the channel (just as if the DMAC was executing
DMARMB instruction).
3. Resumes execution of the DMA channel thread. No data is discarded from the MFIFO.
Resource Sharing Between DMA Channels
DMA channel programs share the MFIFO data storage resource. A set of concurrently running DMA
channel programs must not be started with a resource requirement that exceeds the configured size
of the MFIFO. If this limit is exceeded, the DMAC might lock up and generate a watchdog abort.
The DMAC includes a mechanism called the load-lock to ensure that the shared MFIFO resource is
used correctly. The load-lock is either owned by one channel, or it is free. The channel that owns the
load-lock can execute DMALD instructions successfully. A channel that does not own the load-lock
pauses at a DMALD instruction until it takes ownership of the load-lock.
A channel claims ownership of the load-lock when:
It executes a DMALD or DMALDP instruction.
No other channel currently owns the load-lock.
A channel releases ownership of the load-lock when any of the following controller actions occur:
Executes a DMAST, DMASTP, or DMASTZ.
Reaches a barrier, that is, it executes DMARMB or DMAWMB.
Waits, that is, it executes DMAWFP or DMAWFE.
Terminates normally, that is, it executes DMAEND.
Aborts for any reason, including DMAKILL.
The MFIFO resource usage of a DMA channel program is measured in MFIFO entries, and rises and
falls as the program proceeds. The MFIFO resource requirement of a DMA channel program is
described using a static requirement and a dynamic requirement which are affected by the load-lock
mechanism.
ARM defines the static requirement to be the maximum number of MFIFO entries that a channel is
currently using before that channel does one of the following:
Executes a WFP or WFE instruction.
Claims ownership of the load-lock.
ARM defines the dynamic requirement to be the difference between the static requirement and the
maximum number of MFIFO entries that a channel program uses at any time during its execution.
To calculate the total MFIFO requirement, add the largest dynamic requirement to the sum of all the
static requirements.