User manual

Table Of Contents
Zynq-7000 AP SoC Technical Reference Manual www.xilinx.com 508
UG585 (v1.11) September 27, 2016
Chapter 16: Gigabit Ethernet Controller
16.3.2 Configure the Controller
The following example describes a typical programming sequence for configuration of the controller.
Refer to Appendix B, Register Details for further details on the Controller registers.
1. Program the Network Configuration register (gem.net_cfg). The network configuration
register is used to set the mode of operation.
Examples:
a. Enable Full Duplex. Write a 1 to the gem.net_cfg[full_duplex] register.
b. Enable Gigabit mode. Write a 1 to the gem.net_cfg[gige_en] register.
c. Enable default speed for 100 Mbps. Write a 1 to the gem.net_cfg[speed] register.
Note: The speed bit might have to be re-written after PHY auto-negotiation.
d. Enable reception of broadcast or multicast frames. Write a 0 to the
gem.net_cfg[no_broadcast] register to enable broadcast frames and write a 1 to the
gem.net_cfg[multi_hash_en] register to enable multicast frames.
e. Enable promiscuous mode. Write a 1 to the gem.net_cfg[copy_all] register.
f. Enable TCP/IP checksum offload feature on receive. Write a 1 to the
gem.net_cfg[rx_chksum_offld_en] register. (Refer to section 16.2.6 Checksum Offloading.)
g. Enable Pause frames. Write a 1 to gem.net_cfg[pause_en] register.
h. Set the MDC clock divisor. Write the appropriate MDC clock divisor to the
gem.net_cfg[mdc_clk_div] register. (Refer to section 16.3.4 Configure the PHY.)
2. Set the MAC address. Write to the gem.spec1_addr1_bot and gem.spec1_addr1_top registers.
The least significant 32 bits of the MAC address go to gem.spec1_addr1_bot and the most
significant 16 bits go to gem.spec1_addr1_top.
3. Program the DMA Configuration register (gem.dma_cfg).
a. Set the receive buffer size to 1,600 bytes. Write a value of 0x19 to the
gem.dma_cfg[ahb_mem_rx_buf_size] register.
b. Set the receiver packet buffer memory size to the full configured addressable space of
8KB. Write 0x3 to the gem.dma_cfg[rx_pktbuf_memsz_sel] register.
c. Set the transmitter packet buffer memory size to the full configured addressable space
of 4 KB. Write 0x1 to the gem.dma_cfg[tx_pktbuf_memsz_sel] register.
d. Enable TCP/IP checksum generation offload on the transmitter. Write 0x1 to the
gem.dma_cfg[csum_gen_offload_en] register.
e. Configure for Little Endian system. Write 0x0 to the
gem.dma_cfg[ahb_endian_swp_pkt_en] register.
f. Configure AHB fixed burst length. Write 0x10 to the gem.dma_cfg[ahb_fixed_burst_len]
register to use INCR16 AHB burst for higher performance.
4. Program the Network Control Register (gem.net_ctrl).
a. Enable MDIO. Write a 1 to the gem.net_ctrl[mgmt_port_en] register.
b. Enable the Transmitter. Write a 1 to the gem.net_ctrl[tx_en] register.
c.
Enable the Receiver. Write a 1 to
the gem.net_ctrl[rx_en] register.