
Philips Semiconductors
PNX15xx Series
Volume 1 of 1
Chapter 23: LAN100 — Ethernet Media Access Controller
PNX15XX_SER_3
Koninklijke Philips Electronics N.V. 2006. All rights reserved.
Product data sheet
Rev. 3 — 17 March 2006
23-31
For each of the two transmit channels, the transmit descriptors are stored in an array
in memory. The base address of the non-real-time transmit descriptor array is stored
in the TxDescriptor register. Likewise for real-time transmissions, the descriptor array
base address is stored in the TxRtDescriptor register. The number of descriptors in
the array is stored in the Tx(Rt)DescriptorNumber register using minus-one encoding,
for example, if the array has 8 elements the register value should be 7.
Parallel to the descriptors, there is an array for status. For each element of the
descriptor array, there is an associated status eld in the status array. The base
address of the status array is stored in the Tx(Rt)Status register. During operation,
that is, when the Transmit Datapath is enabled, the Tx(Rt)Descriptor, Tx(Rt)Status
and Tx(Rt)DescriptorNumber registers should not be modied. The base address of
the descriptor array, as stored in the Tx(Rt)Descriptor register, must be aligned on a
16-byte address boundary. The status array base address, as stored in the
Tx(Rt)Status register, must be aligned on an 8-byte address boundary.
The TxConsumeIndex and TxProduceIndex registers are counters that start at 0 and
wrap back to 0 when they equal TxDescriptorNumber, which indicates the number of
descriptors that have been processed in the non-real-time transmit channel. The
TxRtConsumeIndex and TxRtProduceIndex perform the same function for the
real-time channel. The Tx(Rt)ProduceIndex contains the index of the next descriptor
that is going to be lled by the software driver. The Tx(Rt)ConsumeIndex contains the
index of the next descriptor that is going to be transmitted by the hardware. If
Tx(Rt)ProduceIndex == Tx(Rt)ConsumeIndex, then the transmit buffer is empty. If
Tx(Rt)ProduceIndex == Tx(Rt)ConsumeIndex – 1, then the transmit buffer is full, and
the software driver cannot add new descriptors unless the hardware has transmitted
some packets and freed up some descriptors.
As shown in
Table 8, each Transmit Descriptor Structure takes four word locations (16
bytes) of memory. Likewise each Transmit Status Structure takes two words (8 bytes)
in memory. Each Transmit Descriptor Structure consists of a Packet word that points
to the data buffer containing transmit data, a Control word and a TimeStamp word
used for real-time transmission. For non-real-time transmission, the TimeStamp word
is ignored. The Pad word is always ignored and is just used to align the descriptors on
a 16-byte boundary. The Packet eld has a zero address offset, the control eld has a
4-byte address offset, the time-stamp eld has an 8 byte offset with respect to the
descriptor address.
Table 8: Transmit Descriptor Fields
Name
Address
Offset
Siz
e
Function
Packet
0x0
31:0 Base address of the data buffer containing transmit data.
Control
0x4
TimeStam
p
0x8
31:0 Time stamp for real-time transmission. This time stamp
indicates the moment when this packet is to be transmitted.
Pad
0xC
31:0 Unused word to pad to 8 byte boundary.