User manual
Table Of Contents
- Zynq-7000 All Programmable SoC
- Table of Contents
- Ch. 1: Introduction
- Ch. 2: Signals, Interfaces, and Pins
- Ch. 3: Application Processing Unit
- Ch. 4: System Addresses
- Ch. 5: Interconnect
- Ch. 6: Boot and Configuration
- Ch. 7: Interrupts
- Ch. 8: Timers
- Ch. 9: DMA Controller
- Introduction
- Functional Description
- DMA Transfers on the AXI Interconnect
- AXI Transaction Considerations
- DMA Manager
- Multi-channel Data FIFO (MFIFO)
- Memory-to-Memory Transfers
- PL Peripheral AXI Transactions
- PL Peripheral Request Interface
- PL Peripheral - Length Managed by PL Peripheral
- PL Peripheral - Length Managed by DMAC
- Events and Interrupts
- Aborts
- Security
- IP Configuration Options
- Programming Guide for DMA Controller
- Programming Guide for DMA Engine
- Programming Restrictions
- System Functions
- I/O Interface
- Ch. 10: DDR Memory Controller
- Introduction
- AXI Memory Port Interface (DDRI)
- DDR Core and Transaction Scheduler (DDRC)
- DDRC Arbitration
- Controller PHY (DDRP)
- Initialization and Calibration
- DDR Clock Initialization
- DDR IOB Impedance Calibration
- DDR IOB Configuration
- DDR Controller Register Programming
- DRAM Reset and Initialization
- DRAM Input Impedance (ODT) Calibration
- DRAM Output Impedance (RON) Calibration
- DRAM Training
- Write Data Eye Adjustment
- Alternatives to Automatic DRAM Training
- DRAM Write Latency Restriction
- Register Overview
- Error Correction Code (ECC)
- Programming Model
- Ch. 11: Static Memory Controller
- Ch. 12: Quad-SPI Flash Controller
- Ch. 13: SD/SDIO Controller
- Ch. 14: General Purpose I/O (GPIO)
- Ch. 15: USB Host, Device, and OTG Controller
- Introduction
- Functional Description
- Programming Overview and Reference
- Device Mode Control
- Device Endpoint Data Structures
- Device Endpoint Packet Operational Model
- Device Endpoint Descriptor Reference
- Programming Guide for Device Controller
- Programming Guide for Device Endpoint Data Structures
- Host Mode Data Structures
- EHCI Implementation
- Host Data Structures Reference
- Programming Guide for Host Controller
- OTG Description and Reference
- System Functions
- I/O Interfaces
- Ch. 16: Gigabit Ethernet Controller
- Ch. 17: SPI Controller
- Ch. 18: CAN Controller
- Ch. 19: UART Controller
- Ch. 20: I2C Controller
- Ch. 21: Programmable Logic Description
- Ch. 22: Programmable Logic Design Guide
- Ch. 23: Programmable Logic Test and Debug
- Ch. 24: Power Management
- Ch. 25: Clocks
- Ch. 26: Reset System
- Ch. 27: JTAG and DAP Subsystem
- Ch. 28: System Test and Debug
- Ch. 29: On-Chip Memory (OCM)
- Ch. 30: XADC Interface
- Ch. 31: PCI Express
- Ch. 32: Device Secure Boot
- Appx. A: Additional Resources
- Appx. B: Register Details
- Overview
- Acronyms
- Module Summary
- AXI_HP Interface (AFI) (axi_hp)
- CAN Controller (can)
- DDR Memory Controller (ddrc)
- CoreSight Cross Trigger Interface (cti)
- Performance Monitor Unit (cortexa9_pmu)
- CoreSight Program Trace Macrocell (ptm)
- Debug Access Port (dap)
- CoreSight Embedded Trace Buffer (etb)
- PL Fabric Trace Monitor (ftm)
- CoreSight Trace Funnel (funnel)
- CoreSight Intstrumentation Trace Macrocell (itm)
- CoreSight Trace Packet Output (tpiu)
- Device Configuration Interface (devcfg)
- DMA Controller (dmac)
- Gigabit Ethernet Controller (GEM)
- General Purpose I/O (gpio)
- Interconnect QoS (qos301)
- NIC301 Address Region Control (nic301_addr_region_ctrl_registers)
- I2C Controller (IIC)
- L2 Cache (L2Cpl310)
- Application Processing Unit (mpcore)
- On-Chip Memory (ocm)
- Quad-SPI Flash Controller (qspi)
- SD Controller (sdio)
- System Level Control Registers (slcr)
- Static Memory Controller (pl353)
- SPI Controller (SPI)
- System Watchdog Timer (swdt)
- Triple Timer Counter (ttc)
- UART Controller (UART)
- USB Controller (usb)

Zynq-7000 AP SoC Technical Reference Manual www.xilinx.com 492
UG585 (v1.11) September 27, 2016
Chapter 16: Gigabit Ethernet Controller
Only good received frames are written out of the DMA, so no fragments exist in the AHB buffers due
to MAC receiver errors. There is still the possibility of fragments due to DMA errors, for example used
bit read on the second buffer of a multi-buffer frame.
If bit zero of the receive buffer descriptor is already set when the receive buffer manager reads the
location of the receive AHB buffer, then the buffer has been already used and cannot be used again
until software has processed the frame and cleared bit zero. In this case, the “buffer not available” bit
in the Receive Status register is set and an interrupt is triggered. The receive resource error statistics
register is also incremented.
The user can optionally select whether received frames should be automatically discarded when no
AHB buffer resource is available. This feature is selected via bit [24] of the DMA Configuration
register (by default, the received frames are not automatically discarded). If this feature is off, then
received packets remain stored in the packet buffer until an AHB buffer resource next becomes
available. This can lead to an eventual packet buffer overflow if packets continue to be received when
bit zero (used bit) of the receive-buffer descriptor remains set. Note that after a used bit has been
read, the receive-buffer manager re-reads the location of the receive buffer descriptor every time a
new packet is received.
A receive overrun condition occurs when the receive packet buffer is full, or because hresp was not
okay. In all other modes, a receive overrun condition occurs when either the AHB bus was not
granted quickly enough, or because hresp was not okay, or because a new frame has been detected
by the receive block, but the status update or write back for the previous frame has not yet finished.
For a receive overrun condition, the receive overrun interrupt is asserted and the buffer currently
being written is recovered. The next frame that is received whose address is recognized reuses the
buffer.
A write to bit [18] of the Network Control register forces a packet from the receive packet buffer to
be flushed. This feature is only acted upon when the RX DMA is not currently writing packet data out
to AHB – i.e., it is in an IDLE state. If the RX DMA is active, a write to this bit is ignored.
Tx Buffers
Frames to transmit are stored in one or more transmit AHB buffers. It should be noted that zero
length AHB buffers are allowed and that the maximum number of buffers permitted for each
transmit frame is 128.
The start location for each transmit AHB buffer is stored in memory in a list of transmit buffer
descriptors at a location pointed to by the transmit-buffer queue pointer. The base address for this
queue pointer is set in software using the Transmit-buffer Queue Base Address register. Each list
entry consists of two words. The first is the byte address of the transmit buffer and the second
containing the transmit control and status. For the packet buffer DMA, the start location for each
AHB buffer is a byte address, the bottom bits of the address being used to offset the start of the data
from the data-word boundary For the FIFO based DMA, the address of the buffer is also a byte
address. Frames can be transmitted with or without automatic CRC generation. If CRC is
automatically generated, pad will also be automatically generated to take frames to a minimum
length of 64 bytes. When CRC is not automatically generated (as defined in word 1 of the transmit
buffer descriptor or through the control bus of the FIFO), the frame is assumed to be at least 64 bytes
long and pad is not generated.










