Rainbow Electronics DS31256 User Manual
Page 121
DS31256
121 of 181
The host reads from the transmit done queue to find which data buffers and their associated descriptors
have completed transmission. The transmit done queue is circular. A set of internal addresses within the
device that are accessed by both the host and the DMA keep track of the circular queue addresses in the
transmit done queue. On initialization, the host configures all of the registers, as shown in
After initialization, the DMA only writes to (changes) the write pointer and the host only writes to the
read pointer.
Empty Case
The transmit done queue is considered empty when the read and write pointers are identical.
Transmit Done-Queue Empty State
empty
descriptor
empty
descriptor
empty
descriptor
read pointer >
empty descriptor
< write pointer
empty
descriptor
empty
descriptor
empty
descriptor
Full Case
The transmit done queue is considered full when the read pointer is ahead of the write pointer by one
descriptor. Therefore, one descriptor must always remain empty.
Transmit Done-Queue Full State
valid
descriptor
valid
descriptor
empty descriptor
< write pointer
read pointer >
valid descriptor
valid
descriptor
valid
descriptor
valid
descriptor
Table 9-K. Transmit Done-Queue Internal Address Storage
REGISTER NAME
ADDRESS
Transmit Done-Queue Base Address 0 (lower word)
TDQBA0
0830h
Transmit Done-Queue Base Address 1 (upper word)
TDQBA1
0834h
Transmit Done-Queue DMA Write Pointer
TDQWP
0840h
Transmit Done-Queue Host Read Pointer
TDQRP
083Ch
Transmit Done-Queue End Address
TDQEA
0838h
Transmit Done-Queue FIFO Flush Timer
TDQFFT
0844h
Note: Transmit done-queue end address is not an absolute address. The absolute end address is “Base + TDQEA x 4.”