13.5 Descriptor-Based Operation

In addition to conventional operation, the DMA module is equipped with a descriptor based operational capability that further provides additional flexibility to its feature set. This includes:

  • Indirect Addressing mode
  • Conditional branch
  • Descriptor write back

The descriptor-based operation can be enabled independently per channel by setting DMAxCH.SDTEN or DMAxCH.DDTEN or both. This allows some channels to operate in Conventional mode while others in Descriptor-Based mode depending on the needs of the user application.

When enabled, the DMA module begins each data transfer session by “fetching” a descriptor from a memory mapped location. Then it determines various aspects of its addressing and data flow operations based on the content of the descriptor before it proceeds to complete the operation. Note that with one descriptor corresponding to one data transfer, a descriptor is required for each session.

In this mode, the DMA module relies on pre-allocated memory contents known as descriptors which are typically memory mapped sequentially into a block called Descriptor Table (DT). There are two types of Descriptor Tables: Source Descriptor Table (SDT) and Destination Descriptor Table (DDT). The DMA module also allows the flexibility of utilizing one or the other or both conforming to one consistent format.

To access each descriptor, the module employs a Descriptor Pointer (DP). It can be placed in the DMAxSRC.SADDR[23:0] and DMAxDST.DADDR[23:0]) registers initially to locate the Descriptor Table’s base address (first DP) and during operation automatically to locate the next descriptor (next DP). Note that in the Conventional mode of operation, both DMAxSRC.SADDR[23:0]/DMAxDST.DADDR[23:0] registers always contain their respective Payload Pointer. In the descriptor-based operation, they can contain either the Payload Pointer or the Descriptor Pointer depending on the phase of the operation.