![](http://datasheet.mmic.net.cn/150000/DS3131_datasheet_5001569/DS3131_109.png)
DS3131
109 of 174
Figure 9-18. Transmit Pending-Queue Structure
Once the transmit DMA is activated (by setting the TDE control bit in the master configuration register;
see Section 5), it can begin reading data out of the pending queue. It knows where to read the data by
reading the
read pointer and adding it to the base address to obtain the actual 32-bit address. Once the
DMA has read the pending queue, it increments the read pointer by one dword. A check must be made to
ensure the incremented address does not exceed the transmit pending-queue end address. If the
incremented address does exceed this address, the incremented read pointer is set equal to 0000h.
Status/Interrupts
On each read of the pending queue by the DMA, the DMA sets the status bit for transmit DMA pending-
queue read (TPQR) in the status register for DMA (SDMA). The status bits can also (if enabled) cause
an hardware interrupt to occur. See Section 5 for more details.
Pending-Queue Burst Reading
The DMA has the ability to read the pending queue in bursts, which allows for a more efficient use of the
PCI bus. The DMA can grab descriptors from the pending wueue in groups rather than one at a time,
freeing up the PCI bus for more time-critical functions.
An internal FIFO can store up to 16 pending-queue descriptors (16 dwords, since each descriptor
occupies one dword). The host must configure the pending-queue FIFO for proper operation through the
transmit DMA queues-control (TDMAQ) register (see the following).
When enabled through the transmit pending-queue FIFO-enable (TPQFE) bit, the pending-queue FIFO
does not read the pending queue until it is empty. When the pending queue is empty, it attempts to fill
the FIFO with additional descriptors by burst reading the pending queue. Before it reads the pending
queue, it checks (by examining the transmit pending-queue host write pointer) to ensure the pending
queue contains enough descriptors to fill the pending-queue FIFO. If the pending queue does not have
enough descriptors to fill the FIFO, it only reads enough to empty the pending queue. If the FIFO detects
that there are no pending-queue descriptors available for it to read, then it waits and trys again later. If
the pending-queue FIFO can read descriptors from the pending queue, it burst reads them, increments the
read pointer, and sets the status bit for transmit DMA pending-queue read (TPQR) in the status register
for DMA (SDMA). See Section 5 for more details about status bits.
Base + 00h
Base + 04h
Base + 08h
Base + 0Ch
Base + 10h
Base + 14h
Base + End Address
Pending-Queue Host Write Pointer
Pending-Queue DMA Read Pointer
Maximum of 65,536
Pending-Queue Descriptors
DMA Acquired
Pending-Queue Descriptor
Host Readied
Pending-Queue Descriptor
Host Readied
Pending-Queue Descriptor
Host Readied
Pending-Queue Descriptor
DMA Acquired
Pending-Queue Descriptor
DMA Acquired
Pending-Queue Descriptor
Host Readied
Pending-Queue Descriptor