
TAMC900 User Manual Issue 2.0.1
Page 19 of 71
A DMA descriptor consists of three instructions words where every word comprises 32 bit. These have to be
arranged in a consecutive manner in the module’s dedicated memory (see chapter “DMA Descriptor Space”).
Placing the descriptors into embedded Block RAM (inside the FPGA) will reduce the PCI Express traffic and
hence accelerate the internal processing. Moreover it simplifies the access onto the descriptor instruction
words.
An embedded Block RAM in Virtex-5 is 36 kb large and thus can contain up to 42 logical DMA regions for
one physical ADC if all eight channels are used parallel. One single channel alone can have up to 341
different regions. The firmware occupies two memory blocks thus having twice the mentioned depth. The
number of address bit is defined in accordance to that.
The structure of this block is shown below.
Bits
31:28 27:24
23
22
21
20
19:11
10:0
0xC Reserved
LF
Reserved
HI CBA
Reserved
Subsequent Linked List
Pointer (resident in on-board
block RAM)
Pointer (Address) to DMA Memory Region inside the Host Memory
Length of the DMA Memory Region inside the Host Memory in Samples (16 bit words)
Table 4-3 : DMA Descriptor Structure
Providing steering information for every descriptor separately allows process-steering during runtime and
offers a different handling of the descriptors. Notice that changing the descriptors after channel activation is
not recommended. The flags are described afterwards.
The identifier 0xC marks the first instruction word of a set. It is used to detect if a descriptor is provided at the
currently accessed memory address that can be used by a DMA Engine.
If the identifier is not set, the internal structure will not use the descriptor.
The Last identifier Flag
(LF)
marks the last descriptor of the linked list. This information is used to execute
post-DMA-sequence tasks e.g. stop data acquisition and transmission.
The information that a certain descriptor has been processed can be sent via an interrupt to the host
respective a software driver during processing by setting the Host Interrupt (HI) flag.
Processing all linked list DMA buffers in a cyclic manner, if required, is possible by setting the Continue at
Base Address (CBA) descriptor flag. If the bit is set, the DMA (base) descriptor start address (compare
chapter “Channel DMA (Base) Descriptor Addresses 0-7” is taken next regardless of a defined subsequent
descriptor in the current descriptor.
The Subsequent Linked List Pointer is an address inside the module’s descriptor address range (see above).
Due to the 36 kbit Block RAM size the address length is 10 bit.
Setting the Linked List Pointer to 0x0 selects the first DMA descriptor memory address.