User manual

Table Of Contents
Zynq-7000 AP SoC Technical Reference Manual www.xilinx.com 489
UG585 (v1.11) September 27, 2016
Chapter 16: Gigabit Ethernet Controller
DMA Controller
The DMA uses separate transmit and receive lists of buffer descriptors, with each descriptor
describing a buffer area in memory. This allows Ethernet packets to be broken up and scattered
around the AHB memory space.
The DMA controller performs four types of operation on the AHB bus. In order of priority these are:
Receive buffer manager write/read
Transmit buffer manager write/read
Receive data DMA write
Transmit data DMA read
Transfer size is set to 32-bit words using the AHB bus width select bits in the Network Configuration
register, and burst size may be programmed to single access or bursts of 4, 8, or 16 words using the
DMA Configuration register.
Rx Buffers
Received frames, optionally including FCS, are written to receive AHB buffers stored in memory. The
start location for each receive AHB buffer is stored in memory in a list of receive buffer descriptors
at an address location pointed to by the receive-buffer queue pointer. The base address for the
receive-buffer queue pointer is configured in software using the Receive Buffer Queue Base Address
register.
Each list entry consists of two words. The first is the address of the receive AHB buffer and the
second the receive status. If the length of a receive frame exceeds the AHB buffer length, the status
word for the used buffer is written with zeroes except for the start of frame bit, which is always set for
the first buffer in a frame. Bit zero of the address field is written to 1 to show that the buffer has been
used. The receive-buffer manager then reads the location of the next receive AHB buffer and fills that
with the next part of the received frame data. AHB buffers are filled until the frame is complete and
the final buffer descriptor status word contains the complete frame status. Refer to Table 16-2 for
details of the receive buffer descriptor list.
Each receive AHB buffer start location is a word address. The start of the first AHB buffer in a frame
can be offset by up to three bytes depending on the value written to bits [14] and [15] of the Network
Configuration register. If the start location of the AHB buffer is offset the available length of the first
AHB buffer is reduced by the corresponding number of bytes.
Table 16-2: Rx Buffer Descriptor Entry
Bit Function
Word 0
31:2 Address of beginning of buffer.
1 Wrap - marks last descriptor in receive buffer descriptor list.
0 Ownership - needs to be zero for the controller to write data to the receive buffer. The controller
sets this to 1 once it has successfully written a frame to memory. Software must clear this bit before
the buffer can be used again.