ds787_axi_ethernetlite
ds787_axi_ethernetlite
ds787_axi_ethernetlite
MAC (v1.01.b)
DS787 July 25, 2012 Product Specification
The AXI Ethernet Lite MAC supports the IEEE Std. Provided with Core
802.3 Media Independent Interface (MII) to industry Documentation Product Specification
standard Physical Layer (PHY) devices and communi- ISE: VHDL
Design Files
cates with a processor using the AXI4 or AXI4-Lite Vivado: Encrypted RTL
interface. The design provides a 10 Mb/s and 100 Mb/s Example Design Not Provided
(also known as Fast Ethernet) interface. The goal is to Test Bench Not Provided
provide the minimal functions necessary to provide an
Constraints File Not Provided
Ethernet interface with the least resources used.
Simulation
Not Provided
Model
© Copyright 2010–2012 Xilinx, Inc. Xilinx, the Xilinx logo, Artix, ISE, Kintex, Spartan, Virtex, Vivado, Zynq, and other designated brands included herein are
trademarks of Xilinx in the United States and other countries. ARM is a registered trademark of ARM in the EU and other countries. The AMBA trademark is a
registered trademark of ARM Limited.All other trademarks are the property of their respective owners.
Features
• Supports 32-bit data width
• Supports burst size of 4 bytes (word transfers)
• Supports INCR burst length of 1-256 beats
Functional Description
The top level block diagram of the AXI Ethernet Lite MAC is shown in Figure 1.
X-Ref Target - Figure 1
0(9?-$#
!8) %THERNET ,ITE -!#
-$)/ -ASTER
)NTERFACE 0(9?-$)/
0HY?TX?CLK
%-!#
48
"UFFER #2#
0(9?TX?DATA
'ENERATOR #2#
48 48
0).' 48?$ATA &)&/ 0(9?TX ?EN
"UFFER -58
3&$ 48
02% )NTERFACE 0(9?COL
!8)
48
)NTERFACE
0/.' 0(9?CRS
!8)
"UFFER 4RANSMIT
)NTERFACE
-ODULE #ONTROL
4RANSMIT
28
"UFFER 2ECEIVE
28
0).' 2ECEIVE ,OOP
"UFFER #ONTROL 0(9?RX?DATA
"ACK
-UX
28 0(9?DV
28 )NTERFACE
0/.'
0(9?RX?ER
"UFFER #2#
28
#HECKER
&)&/
)0).4#?)RPT 28?$ATA
0(9?RST?N
0HY?RX?CLK
.OTES
-$)/ MASTER IS INCLUDED IN THE DESIGN IF THE PARAMETER #?).#,5$%?-$)/
48 0/.' "UFFER IS INCLUDED IN THE DESIGN IF THE PARAMETER #?48?0).'?0/.'
28 0/.' "UFFER IS INCLUDED IN THE DESIGN IF THE PARAMETER #?28?0).'?0/.' 8
TX Buffer
The TX Buffer module consists of 2K byte dual port memory to hold transmit data for one complete frame and the
transmit interface control registers. It also includes optional 2K byte dual port memory for the pong buffer based on
the parameter C_TX_PING_PONG.
RX Buffer
The RX Buffer module consists of 2K dual port memory to hold receive data for one complete frame and the receive
interface control register. It also includes optional 2K dual port memory for the pong buffer based on the parameter
C_RX_PING_PONG.
Transmit
This module consists of transmit logic, Cyclic Redundancy Check (CRC) generator module, transmit data mux, TX
First In First Out (FIFO) and the transmit interface module. The CRC generator module calculates the CRC for the
frame to be transmitted. The transmit control mux arranges this frame and sends the preamble, Start of Frame
Delimiter (SFD), frame data, padding and CRC to the transmit FIFO in the required order. When the frame is trans-
mitted to the PHY, this module generates a transmit interrupt and updates the transmit control register.
Receive
This module consists of the RX interface, loopback control mux, RX FIFO, CRC checker and Receive Control mod-
ule. Receive data signals from the PHY are passed through the loopback control mux and stored in the RX FIFO. If
loopback is enabled, data on the TX lines is passed to the RX FIFO. The CRC checker module calculates the CRC of
the received frame and if the correct CRC is found, receive control logic generates the frame receive interrupt.
Ethernet Protocol
Ethernet data is encapsulated in frames (Figure 2). The fields and bits in the frame are transmitted from left to right
(from the least significant bit to the most significant bit), unless specified otherwise.
Preamble
The preamble field is used for synchronization and must contain seven bytes with the pattern 10101010. If a colli-
sion is detected during the transmission of the preamble or start of frame delimiter fields, the transmission of both
fields is completed.
For transmission, this field is always automatically inserted by the AXI Ethernet Lite MAC core and should never
appear in the packet data provided to the AXI Ethernet Lite MAC core. For reception, this field is always stripped
from the packet data. The AXI Ethernet Lite MAC design does not support the Ethernet 8-byte preamble frame type.
Destination Address
The destination address field is 6 bytes in length. The least significant bit of the destination address is used to deter-
mine if the address is an individual/unicast (0) or group/multicast (1) address. Multicast addresses are used to
group logically related stations.
The broadcast address (destination address field is all 1’s) is a multicast address that addresses all stations on the
LAN. The AXI Ethernet Lite MAC supports transmission and reception of unicast and broadcast packets. The AXI
Ethernet Lite MAC core does not support multicast packets. This field is always provided in the packet data for
transmissions and is always retained in the receive packet data.
Note: The AXI Ethernet Lite MAC design does not support 16-bit destination addresses as defined in the IEEE 802 standard.
Source Address
The source address field is 6 bytes in length. This field is always provided in the packet data for transmissions and
is always retained in the receive packet data.
Note: The AXI Ethernet Lite MAC design does not support 16-bit source addresses as defined in the IEEE 802 standard.
Type/Length
The type/length field is 2 bytes in length. When used as a length field, the value in this field represents the number
of bytes in the subsequent data field. This value does not include any bytes that might have been inserted in the
padding field following the data field. The value of this field determines if it should be interpreted as a length as
defined by the IEEE 802.3 standard or a type field as defined by the Ethernet protocol.
The maximum length of a data field is 1,500 bytes. Therefore, a value in this field that exceeds 1,500 (0x05DC) indi-
cates that a frame type rather than a length value is provided in this field. The IEEE 802.3 standard uses the value
1536 (0x0600) or greater to signal a type field. The AXI Ethernet Lite MAC does not perform any processing of the
type/length field. This field is transmitted with the least significant bit first but with the high order byte first. This
field is always provided in the packet data for transmissions and is always retained in the receive packet data.
Data
The data field can vary from 0 to 1,500 bytes in length. This field is always provided in the packet data for transmis-
sions and is always retained in the receive packet data.
Pad
The pad field can vary from 0 to 46 bytes in length. This field is used to ensure that the frame length is at least 64
bytes in length (the preamble and SFD fields are not considered part of the frame for this calculation) which is
required for successful Carrier Sense Multiple Access with Collision Detection (CSMA/CD) operation. The values
in this field are used in the frame check sequence calculation but are not included in the length field value if it is
used. The length of this field and the data field combined must be at least 46 bytes. If the data field contains 0 bytes,
the pad field is 46 bytes. If the data field is 46 bytes or more, the pad field has 0 bytes. For transmission, this field is
inserted automatically by the AXI Ethernet Lite MAC if required to meet the minimum length requirement. If pres-
ent in the receive packet, this field is always retained in the receive packet data.
FCS
The Frame Check Sequence (FCS) field is 4 bytes in length. The value of the FCS field is calculated over the source
address, destination address, length/type, data, and pad fields using a 32-bit CRC defined in paragraph 3.2.8 of
[Ref 6]:
G(x) = x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x1 + x0
The CRC bits are placed in the FCS field with the x31 term in the left most bit of the first byte and the x0 term is the
right most bit of the last byte (that is, the bits of the CRC are transmitted in the order x31, x30,..., x1, x0).
The AXI Ethernet Lite MAC implementation of the CRC algorithm calculates the CRC value a nibble at a time to
coincide with the data size exchanged with the external PHY interface for each transmit and receive clock period.
For transmission, this field is always inserted automatically by the AXI Ethernet Lite MAC core and is always
retained in the receive packet data.
X-Ref Target - Figure 2
7 1 6 6 2 0 - 1500 0 - 46 4
Start of Frame Destination Frame Check
Preamble Source Address Type/Length Data Pad
Delimiter (SFD) Address Sequence
64 - 1518 bytes
DS787_02
Half-Duplex
1. Even when it has nothing to transmit, the AXI Ethernet Lite MAC monitors the bus for traffic by watching the
carrier sense signal (PHY_crs) from the external PHY. Whenever the bus is busy (PHY_crs = 1), the AXI Ethernet
Lite MAC defers to the passing frame by delaying any pending transmission of its own.
2. After the last bit of the passing frame (when carrier sense signal changes from TRUE to FALSE), the AXI
Ethernet Lite MAC starts the timing of the interframe gap.
3. The AXI Ethernet Lite MAC resets the interframe gap timer if the carrier sense becomes TRUE.
Full-Duplex
The AXI Ethernet Lite MAC does not use the carrier sense signal from the external PHY when in full duplex mode
because the bus is not shared and only needs to monitor its own transmissions. After the last bit of an AXI Ethernet
Lite MAC transmission, the AXI Ethernet Lite MAC starts the timing of the interframe gap.
CSMA/CD Method
A full-duplex Ethernet bus is, by definition, a point-to-point dedicated connection between two Ethernet devices
capable of simultaneous transmit and receive with no possibility of collisions.
For a half-duplex Ethernet bus, the CSMA/CD media access method defines how two or more stations share a com-
mon bus. To transmit, a station waits (defers) for a quiet period on the bus (no other station is transmitting (PHY_crs
= 0)) and then starts transmission of its message after the interframe gap period. If, after initiating a transmission,
the message collides with the message of another station (PHY_col - 1), then each transmitting station intentionally
continues to transmit (jam) for an additional predefined period (32 bits for 10/100 Mb/s) to ensure propagation of
the collision throughout the system. The station remains silent for a random amount of time (back off) before
attempting to transmit again. A station can experience a collision during the beginning of its transmission (the col-
lision window) before its transmission has had time to propagate to all stations on the bus. When the collision win-
dow has passed, a transmitting station has acquired the bus. Subsequent collisions (late collisions) are avoided
because all other (properly functioning) stations are assumed to have detected the transmission and are deferring to
it. The time to acquire the bus is based on the round-trip propagation time of the bus (64 byte times for
10/100 Mb/s).
Transmit Flow
The flowchart in Figure 3 shows the high level flow followed for packet transmission.
X-Ref Target - Figure 3
3TART
4RANSMIT
& 4RANSMIT
%NABLE
4 4
$EFERRING
&
3TART
4RANSMISSION
&
4OO
4 -ANY
& !TTEMPTS
4RANSMISSION
$ONE
&
4 $ONE %XCESSIVE
$EFERRAL %RROR
#OMPUTE
$ONE "ACKOFF
4RANSMIT /+
7AIT
"ACKOFF
4IME
8
Receive Flow
The flowchart in Figure 4 shows the high level flow followed for packet reception.
X-Ref Target - Figure 4
3TART
2ECEIVE
& 0(9?DV
3TART
2ECEIVING
& $ONE
2ECEIVING
& 2ECOGNIZE
!DDRESS
&
6ALID

4 $ONE
 %RROR
$ONE
2ECEIVE /+
8
I/O Signals
The AXI Ethernet Lite MAC I/O signals are listed and described in Table 1.
Notes:
1. This port is unused when C_S_AXI_PROTOCOL=’AXI4LITE’. Output has default assignment.
2. This port is unused when C_INCLUDE_MDIO=0. Output has default assignment.
3. PHY_MDIO is a bidirectional port. The insertion of the tri-state buffer is automatically done by the tool, as the information exists in
MPD. You do not need to connect PHY_MDIO_I, PHY_MDIO_O and PHY_MDIO_T signals manually.
Design Parameters
The AXI Ethernet Lite MAC has certain features that can be parameterized in the AXI Ethernet Lite design. This
allows a design that only uses the resources required by the system and that operates at the best possible perfor-
mance. The AXI Ethernet Lite MAC design parameters are shown in Table 2.
Inferred Parameters
In addition to the parameters listed in Table 2, additional parameters are inferred for each AXI4 interface in the EDK
tools. Through the design, these EDK-inferred parameters control the behavior of the AXI4 Interconnect. For a com-
plete list of the interconnect settings related to the AXI4 interface, see [Ref 5].
Notes:
1. The AXI4 clock frequency must be greater than or equal to 100 MHz for 100 Mb/s Ethernet operation and greater than or equal to
10 MHz for 10 Mb/s Ethernet operation.
2. Including the MDIO interface allows PHY register access from AXI Ethernet Lite MAC core.
3. Enabling this parameter includes BUFG for PHY clock switching when loopback is enabled.
4. Enabling this parameter includes global buffers for PHY clocks which can be used to minimize the clock skew on the PHY clocks.
5. Enabling this parameter includes I/O constraints on the PHY ports through TCL. If internal PHY is used, this parameter has to be
disabled.
Register Descriptions
Table 5 shows all the AXI Ethernet Lite MAC core registers and their addresses. Tables 6 to 15 show the bit alloca-
tion and reset values of the registers.
Table 5: Registers
Notes:
1. These registers are included only if C_INCLUDE_MDIO=1.
2. Writing of a read only register has no effect.
3. These registers are included only if C_TX_PING_PONG=1.
4. These registers are included only if C_RX_PING_PONG=1.
31 16 15 8 7 0
DS787_05
Global Interrupt
Enable (GIE) Reserved
31 30 0
DS787_06
Interrupt
Reserved Enable (I) Status(S)
31 5 4 3 2 1 0
Loopback Program(P)
(L)
Notes:
1. Internal Loopback is supported only in full duplex operation mode.
Reserved Status(S)
31 2 1 0
Program(P)
DS787_08
Interrupt
Reserved Enable (I) Status(S)
31 4 3 2 1 0
DS787_09
Reserved Status(S)
31 1 0
DS787_10
31 11 10 9 5 4 0
DS787_11
31 16 15 0
DS787_12
31 16 15 0
DS787_13
MDIO
Reserved Enable(E) Status(S)
31 4 3 2 1 0
DS787_14
Processor Interface
The AXI Ethernet Lite MAC core has a very simple interface to the processor. The interface is implemented with a
32-bit wide data interface to a 4K byte block of dual port memory. The registers are implemented in the dual port
memory. The dual port memory is allocated so that 2K bytes are dedicated to the transmit function and 2K bytes are
dedicated to the receive function. This memory is capable of holding one maximum length Ethernet packet in the
receive and transmit memory areas simultaneously. The AXI Ethernet Lite MAC core also includes optional 2K byte
dual port memory for the pong buffer for the Transmit and Receive interface based on the parameter
C_TX_PING_PONG and C_RX_PING_PONG.
Transmit Interface
The transmit data should be stored in the dual port memory starting at address 0x0. Because of the word aligned
addressing, the second four bytes are located at 0x4. The 32-bit interface requires that all four bytes be written at
once; there are no individual byte enables within one 32-bit word. The transmit data must include the destination
address (6 bytes), the source address (6 bytes), the type/length field (2 bytes), and the data field (0 - 1500 bytes). The
preamble, start of frame, and CRC should not be included in the dual port memory. The destination, source,
type/length, and data must be packed together in contiguous memory.
Dual port memory address 0x07F8 is used to set the global interrupt enable (GIE) bit. Setting the GIE = 0 prevents
the IP2INTC_Irpt from going active during an interrupt event. Setting GIE = 1 allows the IP2INTC_Irpt to go
active when an interrupt event occurs.
Dual port memory addresses 0x07F4 is used to store the length (in bytes) of the transmit data stored in dual port
memory. The higher 8 bits of the length value should be stored in data bits 15 to 8, while the lower 8 bits should be
stored in data bits 7 to 0.
The least two significant bits of dual port memory address 0x07FC are control bits (Program or "P" and Status or
"S"). The fourth bit (bit 3 on the data bus) (Transmit Interrupt Enable or "I") is used to enable transmit complete
interrupt events. This event is a pulse and occurs when the memory is ready to accept new data. This includes the
completion of programing the MAC address. The transmit complete interrupt occurs only if GIE and this bit are
both set to 1.
X-Ref Target - Figure 15
control
length
MDIO
destination source type/ not
GIE
data
address address length used
6 6 2 variable 16 4 4 4
variable (0 - 1500)
Note :-
1. MDIO registers are included in the design if the parameter C_INCLUDE_MDIO=1. DS787_15
Receive Interface
The entire receive frame data from destination address to the end of the CRC is stored in the receive dual port mem-
ory area which starts at address 0x1000. The preamble and start of frame fields are not stored in dual port memory.
Dual port memory address 0x17FC (bit 0 on the data bus) is used as a status to indicate the presence of a receive
packet that is ready for processing by the software.
Dual port memory address 0x17FC (bit 3 on the data bus) is the Receive Interrupt enable. This event is a pulse and
occurs when the memory has data available. The receive complete interrupt occurs only if this bit and GIE are both
set to 1.
When the status bit is 0, the AXI Ethernet Lite MAC monitors the Ethernet for packets with a destination address
that matches its MAC address or the broadcast address. If a packet satisfies either of these conditions, the packet is
received and stored in dual port memory starting at address 0x1000. When the packet has been received, the AXI
Ethernet Lite MAC core verifies the CRC. If the CRC value is correct, the status bit is set. If the CRC bit is incorrect,
the status bit is not set and the AXI Ethernet Lite MAC core resumes monitoring the Ethernet bus. Also, if the AXI
Ethernet Lite MAC core receive Runt Frame (frame length less than the 60 Bytes) with a valid CRC, the core does not
set the status bit and the interrupt is not generated. When the status bit is set, the AXI Ethernet Lite MAC does not
perform any receive operations until the bit has been cleared to 0 by the software, indicating that all of the receive
data has been retrieved from the dual port memory.
X-Ref Target - Figure 16
control
destination source type/ not
data CRC
address address length used
6 6 2 4 variable 4
variable (0 - 1500)
DS787_16
4. The software writes a 0 to the ping receive status bit, enabling the AXI Ethernet Lite MAC core to receive
another packet in the ping receive buffer.
5. The software monitors the pong receive status bit until it is set to 1 by the AXI Ethernet Lite MAC core, or waits
for a receive complete interrupt, if enabled.
6. When the pong status is set to 1, or a receive complete interrupt has occurred, the software reads the entire
receive data out of the ping dual port memory.
7. The hardware always writes the first received packet, after a reset, to the ping buffer; the second received packet
is written to the pong buffer and the third received packet is written to the ping buffer.
MDIO Transactions
The AXI Ethernet Lite MAC requires that the PHY device address and PHY register address be stored in the MDIO
Address Register at address 0x07E4 before the software sets the status bit in the MDIO Control Register at offset
0x07F0.
The software sequence for initiating a PHY register write transaction is:
1. The software reads the MDIOCTRL register to verify if the MDIO master is busy executing a previous request.
If the status bit is 0, the MDIO master can accept a new request.
2. The software stores the PHY device address and PHY register address and writes 0 to bit 10 in the MDIOADDR
register at address 0x07E4.
3. The software stores the PHY register write data in the MDIOWR register at address 0x07E8.
4. The software writes 1 in the MDIO enable bit in the MDIOCTRL register at address 0x07F0.
5. The software writes a 1 to the status bit at address 0x07F0 (bit 0 on the data bus) to start the MDIO transaction.
6. After completing the MDIO write transaction, the AXI Ethernet Lite MAC core clears the status bit.
7. The software monitors the status bit and waits until it is set to 0 by the AXI Ethernet Lite MAC before initiating
new transaction on the MDIO lines.
The software sequence for initiating a PHY register read transaction is:
1. The software reads the MDIOCTRL register to verify if the MDIO master is busy executing a previous request.
If the status bit is 0, the MDIO master can accept a new request.
2. The software stores the PHY device address and PHY register address and writes 1 to bit 10 in the MDIOADDR
register at address 0x07E4.
3. The software writes 1 in the MDIO enable bit in the MDIOCTRL register at address 0x07F0.
4. The software writes a 1 to the status bit at address 0x07F0 (bit 0 on the data bus) to start the MDIO transaction.
5. After completing the MDIO Read transaction, the AXI Ethernet Lite MAC core clears the status bit.
The software monitors the status bit and waits until it is set to 0 by the AXI Ethernet Lite MAC core before initiating
a new transaction on the MDIO lines.
%THERNET ,ITE
$UAL 0ORT -!# #ORE $UAL 0ORT
-EMORY -EMORY
4RANSMIT
48 "US #ONTROL ,OOP BACK 28 "US
&)&/ 2EGISTER #ONTROL &)&/
0(9?TX?EN 0(9?DV
0(9?TX?DATA ,OOP "ACK 0(9?RX?DATA
-UX
0(9?TX?CLK 0(9?RX?CLK
Clocks
The AXI Ethernet Lite MAC design has three clock domains that are all asynchronous to each other. The clock
domain diagram for the AXI Ethernet Lite MAC is shown in Figure 18. These clock domains and any special
requirements regarding them are discussed in the subsequent sections. Control signals crossing a clock domain are
synchronized to the destination clock domain.
X-Ref Target - Figure 18
Transmit Clock
The transmit clock [PHY_tx_clk] is generated by the external PHY and must be used by the AXI Ethernet Lite
MAC core to provide transmit data [PHY_tx_data (3:0)] and to control signals [PHY_tx_en] to the PHY.
The PHY provides one clock cycle for each nibble of data transferred resulting in a 2.5 MHz clock for 10BASE-T
operation and 25 MHz for 100BASE-T operation at +/- 100 ppm with a duty cycle of between 35% and 65%, inclu-
sive. The PHY derives this clock from an external oscillator or crystal.
Receive Clock
The receive clock [PHY_rx_clk] is also generated by the external PHY but is derived from the incoming Ethernet
traffic. Similarly to the transmit clock, the PHY provides one clock cycle for each nibble of data transferred, resulting
in a 2.5 MHz clock for 10BASE-T operation and 25 MHz for 100BASE-T operation with a duty cycle of between 35%
and 65%, inclusive, while incoming data is valid [PHY_dv is 1].
The minimum high and low times of the receive clock are at least 35% of the nominal period under all conditions.
The receive clock is used by the AXI Ethernet Lite MAC core to sample the receive data [PHY_rx_data(3:0)] and
control signals [PHY_dv and PHY_rx_er] from the PHY.
PHY_tx_en
The AXI Ethernet Lite MAC uses the Transmit Enable signal (PHY_tx_en) to indicate to the PHY that it is providing
nibbles at the MII interface for transmission. It is asserted synchronously to PHY_tx_clk with the first nibble of the
preamble and remains asserted while all nibbles are transmitted. This signal is transferred between the
PHY_tx_clk and processor clock domains at the asynchronous TX bus FIFO interface. Figure 19 shows the
PHY_tx_en timing during a transmission with no collisions.
X-Ref Target - Figure 19
PHY_tx_data(3:0)
The AXI Ethernet Lite MAC drives the Transmit Data bus PHY_tx_data(3:0) synchronously to PHY_tx_clk.
PHY_tx_data(0) is the least significant bit. The PHY transmits the value of PHY_tx_data on every clock cycle
that PHY_tx_en is asserted. This bus is transferred between the PHY_tx_clk and processor clock domains at the
asynchronous TX bus FIFO interface. The order of the bits, nibbles, and bytes for transmit and receive are shown in
Figure 20.
LSB D0 D1 D2 D3 D4 D5 D6 D7 MSB
LSB D0
D1
D2
MSB D3
DS787_20
PHY_dv
The PHY drives the Receive Data Valid (PHY_dv) signal to indicate that the PHY is driving recovered and decoded
nibbles on the PHY_rx_data(3:0) bus and that the data on PHY_rx_data(3:0) is synchronous to
PHY_rx_clk. PHY_dv is driven synchronously to PHY_rx_clk. PHY_dv remains asserted continuously from the
first recovered nibble of the frame through the final recovered nibble.
For a received frame to be correctly received by the AXI Ethernet Lite MAC, PHY_dv must encompass the frame,
starting no later than the Start-of-Frame Delimiter (SFD) and excluding any End-of-Frame delimiter. This signal is
transferred between the PHY_rx_clk and processor clock domains at the asynchronous RX bus FIFO interface.
Figure 21 shows the behavior of PHY_dv during frame reception.
X-Ref Target - Figure 21
PHY_rx_clk
PHY_dv
PHY_rx_er
PHY_rx_data(3:0)
The PHY drives the Receive Data bus PHY_rx_data(3:0) synchronously to PHY_rx_clk. PHY_rx_data(3:0)
contains recovered data for each PHY_rx_clk period in which PHY_dv is asserted. PHY_rx_data(0) is the least
significant bit. The AXI Ethernet Lite MAC must not be affected by PHY_rx_data(3:0) while PHY_dv is deas-
serted.
The AXI Ethernet Lite MAC should ignore a special condition that occurs while PHY_dv is deasserted; the PHY can
provide a False Carrier indication by asserting the PHY_rx_er signal while driving the value 1110 onto
PHY_rx_data(3:0). This bus is transferred between the PHY_rx_clk and processor clock domains at the asyn-
chronous RX bus FIFO interface.
PHY_rx_er
The PHY drives the Receive Error signal (PHY_rx_er) synchronously to PHY_rx_clk. The PHY drives PHY_rx_er
for one or more PHY_rx_clk periods to indicate that an error (such as a coding error or any error that the PHY is
capable of detecting) was detected somewhere in the frame presently being transferred from the PHY to the AXI
Ethernet Lite MAC.
PHY_rx_er should have no effect on the AXI Ethernet Lite MAC while PHY_dv is deasserted. This signal is trans-
ferred between the PHY_rx_clk and processor clock domains at the asynchronous RX bus FIFO interface.
Figure 22 shows the behavior of PHY_rx_er during frame reception with errors.
X-Ref Target - Figure 22
PHY_rx_clk
PHY_dv
PHY_rx_er
PHY_crs
The PHY drives the Carrier Sense signal (PHY_crs) active to indicate that either the transmit or receive is non-idle
when operating in half duplex mode. PHY_crs is deasserted when both the transmit and receive are idle. The PHY
asserts PHY_crs for the duration of a collision condition. PHY_crs is not synchronous to either the PHY_tx_clk
or the PHY_rx_clk. The PHY_crs signal is not used in full duplex mode. The PHY_crs signal is used by both the
AXI Ethernet Lite MAC transmit and receive circuitry and is double-synchronized to the processor clock as it enters
the AXI Ethernet Lite MAC core.
PHY_col
The PHY asserts the Collision detected signal (PHY_col) to indicate the detection of a collision on the bus. The PHY
asserts PHY_crs while the collision condition persists. The PHY also drives PHY_col asserted when operating at
10 Mb/s for signal_quality_error (SQE) testing.
PHY_col is not synchronous to either the PHY_tx_clk or the PHY_rx_clk. The PHY_col signal is not used in full
duplex mode. The PHY_col signal is used by both the AXI Ethernet Lite MAC core transmit and receive circuitry
and is double-synchronized to the processor clock as it enters the AXI Ethernet Lite MAC. Figure 23 shows the
behavior of PHY_col during frame transmission with a collision.
X-Ref Target - Figure 23
PHY_tx_clk
PHY_tx_en
PHY_crs
PHY_col
DS787_23
Design Constraints
The AXI Ethernet Lite MAC core is designed to not use global buffers for the TX and RX clocks in the default con-
figuration. Therefore, the AXI Ethernet Lite MAC core requires design constraints (Table 17 and Table 18) to guar-
antee performance. If the global clock buffers are used for TX/RX clocks, MAXSKEW constraints are not required.
These constraints should be placed in a UCF/XDC for the top level of the design. The examples in Table 17 and
Table 18 is for a 25 MHz PHY clock. The NET names are based on the port names of the AXI Ethernet Lite MAC
core. If these ports have different top-level port names, these NET names should be modified accordingly. The listed
constraints are included automatically in the design if C_INCLUDE_PHY_CONSTRAINTS is set to 1 and need not
be added to the UCF/XDC.
Design Implementation
Target Technology
The target technologies are Zynq-7000 series, 7 series, Virtex®-6 and Spartan-6 FPGAs.
C_INCLUDE_GLOBAL_BUFFERS
Number of Flip-Flops
C_RX_PING_PONG
C_TX_PING_PONG
C_INCLUDE_MDIO
Number of Slices
Number of LUTs
C_DUPLEX
Case
case1_hdup_nopong_nomdio_noburst_v7 0 0 0 0 0 0 AXI4LITE 239 489 513 200
case2_fdup_nopong_nomdio_noburst_v7 1 0 0 0 0 0 AXI4LITE 242 431 427 200
case3_fdup_pong_nomdio_noburst_v7 1 0 1 1 0 0 AXI4LITE 244 456 494 200
case4_fdup_pong_nomdio_burst_v7 1 0 1 1 0 0 AXI4 271 466 532 200
case5_fdup_nopong_nomdio_burst_v7 1 0 0 0 0 0 AXI4 259 441 473 200
case6_fdup_pong_mdio_noburst_v7 1 0 1 1 1 0 AXI4LITE 289 540 572 200
case7_fdup_pong_mdio_burst_v7 1 0 1 1 1 0 AXI4 306 550 662 200
case8_fdup_nopong_mdio_noburst_v7 1 0 0 0 1 1 AXI4LITE 278 515 519 200
case9_include_gbuf_v7 1 0 0 0 1 1 AXI4 280 525 561 200
case10_loopback_v7 1 1 0 0 1 0 AXI4LITE 273 520 525 200
1. Virtex-7 device: xc7v855tffg1157-3
Table 20: Performance and Resource Utilization Benchmarks for a Kintex-7 FPGA(1) and Zynq-7000 Device
C_INCLUDE_INTERNAL_LOOPBACK
C_INCLUDE_GLOBAL_BUFFERS
Number of Flip-Flops
C_RX_PING_PONG
C_TX_PING_PONG
C_INCLUDE_MDIO
Number of Slices
Number of LUTs
Case C_DUPLEX
case1_hdup_nopong_nomdio_noburst_k7 0 0 0 0 0 0 AXI4LITE 256 489 500 200
case2_fdup_nopong_nomdio_noburst_k7 0 0 0 0 0 0 AXI4LITE 214 431 436 200
case3_fdup_pong_nomdio_noburst_k7 1 0 1 1 0 0 AXI4LITE 231 456 494 200
case4_fdup_pong_nomdio_burst_k7 1 0 1 1 0 0 AXI4 270 466 534 200
case5_fdup_nopong_nomdio_burst_k7 1 0 0 0 0 0 AXI4 253 441 472 200
case6_fdup_pong_mdio_noburst_k7 1 0 1 1 1 0 AXI4LITE 297 540 572 200
case7_fdup_pong_mdio_burst_k7 1 0 1 1 1 0 AXI4 301 550 608 200
case8_fdup_nopong_mdio_noburst_k7 1 0 0 0 1 0 AXI4LITE 268 515 517 200
case9_include_gbuf_k7 1 0 0 0 1 1 AXI4 273 525 562 200
case10_loopback_k7 1 1 0 0 1 0 AXI4LITE 269 520 532 200
1. Kintex-7 device: xc7k410tffg676-3
Table 21: Performance and Resource Utilization Benchmarks for an Artix-7 FPGA(1) and Zynq-7000 Device
C_INCLUDE_INTERNAL_LOOPBACK
C_INCLUDE_GLOBAL_BUFFERS
Number of Flip-Flops
C_RX_PING_PONG
C_TX_PING_PONG
C_INCLUDE_MDIO
Number of Slices
Number of LUTs
Case C_DUPLEX
case1_hdup_nopong_nomdio_noburst_a7 0 0 0 0 0 0 AXI4LITE 264 489 518 133
case2_fdup_nopong_nomdio_noburst_a7 1 0 0 0 0 0 AXI4LITE 244 431 453 133
case3_fdup_pong_nomdio_noburst_a7 1 0 1 1 0 0 AXI4LITE 261 456 516 133
case4_fdup_pong_nomdio_burst_a7 1 0 1 1 0 0 AXI4 250 467 500 133
case5_fdup_nopong_nomdio_burst_a7 1 0 0 0 0 0 AXI4 245 441 492 133
case6_fdup_pong_mdio_noburst_a7 1 0 1 1 1 0 AXI4LITE 301 540 607 133
case7_fdup_pong_mdio_burst_a7 1 0 1 1 1 0 AXI4 321 550 636 133
case8_fdup_nopong_mdio_noburst_a7 1 0 0 0 1 0 AXI4LITE 281 515 542 133
case9_include_gbuf_a7 1 0 0 0 1 1 AXI4 287 525 580 133
case10_loopback_a7 1 1 0 0 1 0 AXI4LITE 292 520 547 133
1. Artix-7 device: xc7a355tdie
Table 22: Performance and Resource Utilization Benchmarks for a Virtex-6 FPGA(1)
C_INCLUDE_INTERNAL_LOOPBACK
C_INCLUDE_GLOBAL_BUFFERS
Number of Flip-Flops
C_RX_PING_PONG
C_TX_PING_PONG
C_INCLUDE_MDIO
Number of Slices
Number of LUTs
Case C_DUPLEX
case1_hdup_nopong_nomdio_noburst_v6 0 0 0 0 0 0 AXI4LITE 271 489 512 200
case2_fdup_nopong_nomdio_noburst_v6 1 0 0 0 0 0 AXI4LITE 241 431 469 200
case3_fdup_pong_nomdio_noburst_v6 1 0 1 1 0 0 AXI4LITE 246 456 533 200
case4_fdup_pong_nomdio_burst_v6 1 0 1 1 0 0 AXI4 290 466 558 200
case5_fdup_nopong_nomdio_burst_v6 1 0 0 0 0 0 AXI4 273 441 501 200
case6_fdup_pong_mdio_noburst_v6 1 0 1 1 1 0 AXI4LITE 303 540 599 200
case7_fdup_pong_mdio_burst_v6 1 0 1 1 1 0 AXI4 340 550 636 200
case8_fdup_nopong_mdio_noburst_v6 1 0 0 0 1 0 AXI4LITE 270 515 560 200
case9_include_gbuf_v6 1 0 0 0 1 1 AXI4 301 525 603 200
case10_loopback_v6 1 1 0 0 1 0 AXI4LITE 279 520 568 200
1. Virtex-6 device: xc6vlx130t-1-ff1156
Table 23: Performance and Resource Utilization Benchmarks for a Spartan-6 FPGA(1)
C_INCLUDE_INTERNAL_LOOPBACK
C_INCLUDE_GLOBAL_BUFFERS
Number of Flip-Flops
C_RX_PING_PONG
C_TX_PING_PONG
C_INCLUDE_MDIO
Number of Slices
Number of LUTs
Case C_DUPLEX
case1_hdup_nopong_nomdio_noburst_s6 0 0 0 0 0 0 AXI4LITE 257 503 566 133
case2_fdup_nopong_nomdio_noburst_s6 1 0 0 0 0 0 AXI4LITE 221 429 462 133
case3_fdup_pong_nomdio_noburst_s6 1 0 1 1 0 0 AXI4LITE 214 454 535 133
case4_fdup_pong_nomdio_burst_s6 1 0 1 1 0 0 AXI4 231 464 577 133
case5_fdup_nopong_nomdio_burst_s6 1 0 0 0 0 0 AXI4 238 439 509 133
case6_fdup_pong_mdio_noburst_s6 1 0 1 1 1 0 AXI4LITE 262 541 625 133
case7_fdup_pong_mdio_burst_s6 1 0 1 1 1 0 AXI4 282 553 667 133
case8_fdup_nopong_mdio_noburst_s6 1 0 0 0 1 0 AXI4LITE 248 513 574 133
sta_case10_loopback_s6 1 1 0 0 1 0 AXI4LITE 228 587 574 133
1. Spartan-6 device: xc6slx45t-2-fgg484
System Performance
To measure the system performance (FMAX) of this core, this core was added to a Virtex-6 FPGA system and a
Spartan-6 FPGA system as the device under test (DUT) as illustrated in Figure 24 and Figure 25.
Because the AXI Ethernet Lite MAC core is used with other design modules in the FPGA, the utilization and timing
numbers reported in this section are estimates only. When this core is combined with other designs in the system,
the design’s FPGA resources and timing usage will vary from the results reported here.
X-Ref Target - Figure 24
Virtex-6 LX FPGA
AXI CDMA
D_LMB
I_LMB (DP) Device Under
Test (DUT)
Control AXI INTC
Interface
Subset
Interconnect AXI GPIO LEDs
BRAM (AXI4-Lite)
Controller
AXI UARTLite RS232
MDM
AXI4-Lite Domain
DS787_25
Figure 24: Virtex-6 FPGA System with the AXI Ethernet Lite MAC as the DUT
Spartan-6 FPGA
AXI CDMA
D_LMB
I_LMB (DP) Device Under
Test (DUT)
Control AXI INTC
Interface
Subset
Interconnect AXI GPIO LEDs
BRAM (AXI4-Lite)
Controller
AXI UARTLite RS232
MDM
AXI4-Lite Domain
DS787_26
Figure 25: Spartan-6 FPGA System with the AXI Ethernet Lite MAC as the DUT
The target FPGA was filled with logic to drive the LUT and block RAM utilization to approximately 70% and the
I/O utilization to approximately 80%. Using the default tool options and the slowest speed grade for the target
FPGA, the resulting target FMAX numbers are shown in Table 24.
Notes:
1. Spartan-6 FPGA look-up table (LUT) utilization: 60%; Block RAM utilization: 70%; I/O utilization: 80%; MicroBlaze™ processor not
AXI4 interconnect; AXI4 interconnect configured with a single clock of 120 MHz.
2. Virtex-6 FPGA LUT utilization: 70%; Block RAM utilization: 70%; I/O utilization: 80%.
The target FMAX is influenced by the exact system and is provided for guidance. It is not a guaranteed value across
all systems.
Unsupported Features/Limitations
• AXI data bus width greater than 32 bits
• AXI address bus width other than 32 bits
• AXI Exclusive Accesses
• AXI Trustzone
• AXI Low-Power interface
• AXI Narrow transfers
• AXI FIXED, WRAP transactions
• AXI Barrier transactions
• AXI Debug transactions
• AXI user signals
Reference Documents
1. 7 series documentation
2. Virtex-6 Family Overview (DS150)
3. Spartan-6 Family Overview (DS160)
4. AXI4 AMBA AXI Protocol Version: 2.0 Specification
5. LogiCORE AXI Interconnect IP (DS768)
6. IEEE Std. 802.3 Media Independent Interface Specification
Support
Xilinx provides technical support for this LogiCORE IP product when used as described in the product documen-
tation. Xilinx cannot guarantee timing, functionality, or support of product if implemented in devices that are not
defined in the documentation, if customized beyond that allowed in the product documentation, or if changes are
made to any section of the design labeled DO NOT MODIFY.
Ordering Information
This Xilinx LogiCORE IP module is provided at no additional cost with the Xilinx Vivado Design Suite and ISE
Design Suite tools under the terms of the Xilinx End User License. Information about this and other Xilinx Logi-
CORE IP modules is available at the Xilinx Intellectual Property page. For information about pricing and availabil-
ity of other Xilinx LogiCORE IP modules and tools, contact your local Xilinx sales representative.
Revision History
Date Version Description of Revisions
9/21/10 1.0 Initial Xilinx release
6/22/11 1.1 Updated for 13.2.
10/19/11 1.2 Updated for ISE Software Release 13.3. Added device support for Zynq-7000.
Summary of Core Changes
• Updated for ISE Software Release 13.4. Only minor changes to software
Summary of Documentation Changes
01/18/12 1.3
• Added supported software driver information to IP Facts table.
• Updated resource utilization numbers for Virtex-6 and Spartan-6 FPGAs
• Added resource utilization numbers for Virtex-7, Kintex-7, and Artix-7 FPGAs.
04/24/12 1.4 Updated for ISE Release 14.1. Documentation updates.
Updated for Vivado 2012.2. Removed BASEADDR and HIGHADDR parameters because
7/25/12 1.5
they are no longer HDL parameters in the RTL file.
Notice of Disclaimer
The information disclosed to you hereunder (the “Materials”) is provided solely for the selection and use of Xilinx products. To
the maximum extent permitted by applicable law: (1) Materials are made available “AS IS” and with all faults, Xilinx hereby
DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING BUT NOT
LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR
PURPOSE; and (2) Xilinx shall not be liable (whether in contract or tort, including negligence, or under any other theory of
liability) for any loss or damage of any kind or nature related to, arising under, or in connection with, the Materials (including
your use of the Materials), including for any direct, indirect, special, incidental, or consequential loss or damage (including loss
of data, profits, goodwill, or any type of loss or damage suffered as a result of any action brought by a third party) even if such
damage or loss was reasonably foreseeable or Xilinx had been advised of the possibility of the same. Xilinx assumes no
obligation to correct any errors contained in the Materials or to notify you of updates to the Materials or to product
specifications. You may not reproduce, modify, distribute, or publicly display the Materials without prior written consent.
Certain products are subject to the terms and conditions of the Limited Warranties which can be viewed at
http://www.xilinx.com/warranty.htm; IP cores may be subject to warranty and support terms contained in a license issued to
you by Xilinx. Xilinx products are not designed or intended to be fail-safe or for use in any application requiring fail-safe
performance; you assume sole risk and liability for use of Xilinx products in Critical Applications:
http://www.xilinx.com/warranty.htm#critapps.