Xge Mac Spec
Xge Mac Spec
Specification
Author: A. Tanguay
[email protected]
Rev. 0.7
12/13/09
OpenCores 10GE MAC Core Specification 12/13/09
Revision History
Rev. Date Author Description
0.1 5/30/2008 A.Tanguay Draft
0.2 6/6/2008 A.Tanguay Added block diagram. Added mod[2:0] signals.
0.6 05/23/09 A. Tanguay Added details of operation.
0.7 12/13/09 A. Tanguay Added big endian mode for packet interface.
Contents
INTRODUCTION.............................................................................................................1
ARCHITECTURE.............................................................................................................2
OPERATION.....................................................................................................................3
TX ENQUEUE ENGINE......................................................................................................................................3
TX FIFO......................................................................................................................................................3
TX DEQUEUE ENGINE......................................................................................................................................4
RX ENQUEUE ENGINE......................................................................................................................................5
RX FIFO......................................................................................................................................................6
RX DEQUEUE ENGINE......................................................................................................................................7
FAULT STATE-MACHINE...................................................................................................................................7
REGISTERS.......................................................................................................................8
REGISTER LIST................................................................................................................................................8
CONFIGURATION REGISTER 0 – 0X00.................................................................................................................8
INTERRUPT PENDING REGISTER – 0X08...............................................................................................................8
INTERRUPT STATUS REGISTER – 0X0C................................................................................................................9
INTERRUPT MASK REGISTER – 0X10................................................................................................................10
CLOCKS...........................................................................................................................11
RESETS............................................................................................................................12
IO PORTS........................................................................................................................13
WISHBONE INTERFACE....................................................................................................................................13
PACKET RECEIVE INTERFACE...........................................................................................................................13
PACKET TRANSMIT INTERFACE.........................................................................................................................15
XGMII RECEIVE INTERFACE..........................................................................................................................16
XGMII TRANSMIT INTERFACE........................................................................................................................16
WAVEFORMS.................................................................................................................18
WISHBONE INTERFACE....................................................................................................................................18
PACKET RECEIVE INTERFACE...........................................................................................................................18
PACKET TRANSMIT INTERFACE.........................................................................................................................18
XGMII RECEIVE INTERFACE..........................................................................................................................19
XGMII TRANSMIT INTERFACE........................................................................................................................19
1.
Introduction
The 10GE MAC core is designed for easy integration with proprietary custom logic. It
features a POS-L3 like interface for the datapath and a Wishbone compliant interface for
management. The core was intentionally designed with a limited feature set for a small
gate footprint.
2.
Architecture
3.
Operation
TX Enqueue Engine
The TX Enqueue Engine receives frames from the user's core logic and stores them in the
transmit FIFO along with some additional flags such as SOP and EOP indicators. It also
provides FIFO fill status (available signal) to the core.
TX FIFO
The TX FIFO is 128-entry deep by default with 64-bit of data and 8-bit of status per
entry. Since the FIFO can only store 1024 bytes of data (128 x 64-bit), the MAC must
operate in flow-through mode, meaning that the transmission of a frame on the XGMII
interface can (and must) start while the frame is still being written to the FIFO on the
enqueue side.
The upper bits of the FIFO, bits 71:64, contains status information used by the TX
Dequeue Engine to maintain frame alignment. The format of the FIFO is shown in the
next figure:
TX Dequeue Engine
The TX Dequeue Engine contains two state-machines. The first state-machine reads data
from the data FIFO and pads small packets to the minimum 64-byte required for Ethernet.
The state-machine writes data to the holding FIFO and the CRC calculation logic. The
purpose of the holding FIFO is to compensate for latency in the CRC calculation. The
CRC logic operates in 64-bit data at the exception of the last word of the frame. Since the
last word may contain 1 to 8 valid bytes, the CRC logic transitions to 8-bit mode at the
end of the frame. Up to 8 cycles may be required to complete the calculation, hence the 8-
word delay in the Holding FIFO.
The Encoding State-Machine reads data from the Holding FIFO after inserting the
Ethernet preamble. To minimize the logic, this state-machine aligns all data on 64-bit
boundary and generates flags indicating when 32-bit alignment is necessary to meet the
required IFG. The IFG is calculated based on the accumulated Deficit Idle Count (DIC)
and modulus of the current frame. Resulting flags are passed to the Barrel Shifter which
performs the final 32-bit alignment.
The RC Layer monitors link status signals from the Fault State-Machine and inserts
remote fault messages when a local fault was detected. The fault signal is also passed to
the Encoding State-Machine which stops transmitting packets during faults.
RX Enqueue Engine
In the RX Enqueue Engine, the RC layer monitors the XGMII interface for fault
conditions and pass the status to the Fault State-Machine. The Barrel Shifter looks for the
start of frame delimiters on 32-bit boundary and re-aligns the data on 64-bit boundary.
This method reduces the complexity of the next stages.
The Decoding State-Machine has the complex task of delimiting frames and detecting
invalid frames such as fragments and runts. As it decodes the data, it write a copy to the
Holding FIFO and CRC logic. The purpose of the holding FIFO is to compensate for
latency in the CRC calculation. The CRC logic operates in 64-bit data at the exception of
the last word of the frame. Since the last word may contain 1 to 8 valid bytes, the CRC
logic transitions to 8-bit mode at the end of the frame. Up to 8 cycles may be required to
complete the calculation, hence the 8-word delay in the Holding FIFO.
As data emerges from the Holding FIFO, it is written to the RX Data FIFO along with
SOP, EOP and other flags. If the CRC logic reports an error during that time, an error
flag is set in the next FIFO entry.
RX FIFO
The RX FIFO is 128-entry deep by default with 64-bit of data and 8-bit of status per
entry. Since the FIFO can only store 1024 bytes of data (128 x 64-bit), the MAC must
operate in flow-through mode, meaning that the transmission of a frame on the packet
interface can (and must) start while the frame is still being written to the FIFO on the
enqueue side.
The upper bits of the FIFO, bits 71:64, contains status information used by the TX
Dequeue Engine to maintain frame alignment. Also includes is an error flag used to
propagate CRC errors or any other error conditions to the Dequeue Engine. The format of
the FIFO is shown in the next figure:
RX Dequeue Engine
Fault State-Machine
Registers
Register List
4.
Clocks
This section describes the various clocks required by the 10GE MAC core.
5.
Resets
This section describes the various resets required by the 10GE MAC core. The user must
ensure that each reset is synchronously de-asserted with it's corresponding clock. To
ensure that transmit and receive FIFO's are initialized correctly, “reset_156m25_n”,
“reset_xgmii_rx_n” and “reset_xgmii_tx_n” must be de-asserted within 2-cycles of each
other.
Name Description
wb_rst_i Wishbone interface reset. Active high. Must be de-asserted
synchronous to wb_clk_i.
reset_156m25_n Core packet interfaces clock domain reset. Active low. Must be de-
asserted synchronous to clk_156m25.
reset_xgmii_rx_n XGMII receive clock domain reset. Active low. Must be de-asserted
synchronous to clk_xgmii_rx.
reset_xgmii_tx_n XGMII transmit clock domain reset. Active low. Must be de-
asserted synchronous to clk_xgmii_tx.
6.
IO Ports
Wishbone Interface
This interface is used to transfer received packets to the FPGA/ASIC core logic.
Port Direction Description
Receive Read Enable: This signal should only be
asserted when a packet is available in the receive
FIFO. When asserted, the 10GE MAC core will begin
packet transfer on next cycle. Signal should remain
pkt_rx_ren Input asserted until EOP becomes valid.
This interface accepts data or control character from XAUI/PCS macro. A normal XGMII
interface is made of a 32-bit data bus clocked on rising and falling edges of the clock. For
simplicity the 10GE MAC uses a 64-bit interface clocked on the rising edge only.
Port Direction Description
XGMII Receive Control: Each bit corresponds to a
byte on the 64-bit interface. When high, indicates that
the byte is a control character. When low, indicates
xgmii_rxc [7:0] Input that the byte carries data.
XGMII Receive Data: When interfacing with 32-bit
devices, xgmii_rxd[31:0] should be mapped to the
rising edge of the clock and xgmii_rxd[63:32] should
xgmii_rxd [63:0] Input be mapped to the falling edge.
This interface transmits data and control character towards the XAUI/PCS macro. A
normal XGMII interface is made of a 32-bit data bus clocked on rising and falling edges
of the clock. For simplicity the 10GE MAC uses a 64-bit interface clocked on the rising
edge only.
Port Direction Description
XGMII Transmit Control: Each bit corresponds to a
byte on the 64-bit interface. When high, indicates that
the byte is a control character. When low, indicates
xgmii_txc [7:0] Output that the byte carries data.
7.
Waveforms
Wishbone Interface