NOTICE of DISCLAIMER: The information given in this document is
believed to be accurate and reliable. However, Achronix Semiconductor
Corporation does not give any representations or warranties as to the
completeness or accuracy of such information and shall have no liability for
the use of the information contained herein. Achronix Semiconductor
Corporation reserves the right to make changes to this document and the
information contained herein at any time and without notice. All Achronix
trademarks, registered trademarks, and disclaimers are listed at
http://www.achronix.com and use of this document and the Information
contained therein is subject to such terms.
UG032, May 15, 2014
2
Table of Contents
Copyright Info .................................................................................. 2
Table of Contents ............................................................................ 3
Figure 5: Sample TX Waveform with a 512-bit Data Bus ................................................. 25
Figure 6: Sample RX Waveform with a 512-bit Data Bus ................................................ 28
UG032, May 15, 2014
5
Introduction
Interlaken is a scalable chip-to-chip interconnect protocol designed to enable transmission speeds
from 10Gbps to 100Gbps and beyond. Using the latest SerDes technology and a flexible protocol
layer, Interlaken minimizes the pin and power overhead of chip-to-chip interconnect and
provides a scalable solution that can be used throughout an entire system. In addition, Interlaken
uses two levels of CRC checking and a self-synchronizing data scrambler to ensure data integrity
and link robustness.
The Achronix Interlaken IP Core (IIPC) is available as hard IP in Speedster22i devices. The IIPC is
a high-performance, low-power and flexible implementation of the Interlaken Protocol. The IIPC
is compliant with the Interlaken Protocol Definition, Revision 1.2, and offers system designers
with a risk-free and quick path for adopting Interlaken as their chip-to-chip interconnect
protocol. The IIPC can be configured to use any number of serial lanes (between 4 to 12) for an
aggregate bandwidth of up to 123 Gbps.
The rest of this document describes the IIPC in detail and provides the information required for
the user to integrate the IIPC into their designs. The document assumes the reader is familiar
with the Interlaken protocol and FPGA design and methodology.
Interlaken is a very flexible and customizable protocol. IIPC supports the following features:
• Designed to take full advantage low-power design flows and methodology
• Automatic scaling of clocks to minimize power consumption
• Support for up to 10.3125Gbps SerDes data rate
• Support for 256 different logical channels
• Robust error condition detection and recovery
• Flexible SerDes interface to accommodate different I/O implementations
• Data striping and de-striping across 4 to 12 lanes
• Programmable BurstMax, BurstShort and MetaFrameSize parameters
• 64/67 encoding and decoding
• Automatic word and lane alignment
• Self-synchronizing data scrambler
• Data bus width of 512 bits
• CRC24 generation and checking for burst data integrity
• CRC32 generation and checking for lane data integrity
• Data scrambling and disparity tracking to minimize baseline wander and maintain DC
balance
• Support for all Synchronization, Scrambler State, Diagnostic, and Skip Word Block Types
• Programmable Rate Limiting circuitry
• Segment-mode and Packet-mode transmission format
UG032, May 15, 2014
6
• Segment-mode and Packet-mode receive format
• BurstMax size can be programmed from 64 bytes to 256 bytes in steps of 64 bytes
• Support for minimum BurstShort requirement of 64 bytes up until 256 bytes in steps of
64 bytes but not exceeding BurstMax
• In-band flow control
• Support for link-level flow control
• Flow control mechanism supports stopping packets in mid-stream – head of line
blocking
• Rate matching with granularity of 1 Gbps
• Meta Frame Length programmable between 128 to 8K words
• Support for status messaging
• Lane decommissioning and resiliency
UG032, May 15, 2014
7
Design Overview
Figure 1 shows a block diagram of the IIPC with SerDes and user logic interfaces implemented in
Speedster22i. The right hand side is the user interface and the left hand side is the SerDes
interface. The IIPC is shown in green and the SerDes blocks in orange.
Figure 1: Shows a block diagram of IIPC with SerDes and user logic interface
UG032, May 15, 2014
8
Hierarchy
Interlaken_1_serdes
ACX_INTERLAKEN_TOP
(IIPC core)
Interlaken_1
The interfaced IIPC and SerDes IP is configured using the Achronix Cad Environment (ACE)
Interlaken GUI.
The upper-levels of hierarchy are shown in Figure 2. Note that the text in Figure 2 represents the
name of the module at that level of hierarchy.
Figure 2: IIPC Hierarchy
The top-level wrapper module, Interlaken_1, contains the instantiated hard IIPC block and an
instantiated hard SerDes block for each lane. The module Interlaken_1_serdes wraps the Achronix
SerDes block and sets configuration parameters needed for proper Interlaken operation.
User’s Tasks:
•The ACE Interlaken GUI should be used to configure the Interlaken core. This will
automatically instantiate the SerDes lanes and produces a single top level wrapper that
can be included in your design.
• Connect the Local Bus (LBUS) user-side interface at the fabric to the wrapper
• Provide the appropriate clock signals to the wrapper
UG032, May 15, 2014
9
Typical Operation
The IIPC can be used in a variety of applications, and provides the user all of the flexibility
offered by the Interlaken Protocol. The IIPC handles all protocol-related functions needed to
communicate to another device’s Interlaken interface. All handshaking, synchronizing and error
checking are handled by the IIPC. The LBUS is designed to match commonly used packet bus
protocols made common by the SPI4.2 protocol; a detailed description is given in the User
Interfaces section.
User’s Task:
•Provide packet data via the Local Bus (LBUS) TX interface, and receive packet data from
the LBUS RX interface.
Flow Control
Flow control information is automatically extracted by the RX path of the IIPC and presented to
the user. Also, the IIPC’s TX path consists of a single pipeline with a single memory buffer.
User’s Tasks:
1. Build the scheduling mechanism external to the IIPC to mux data from different logical
channels.
2. Monitor the flow control information and ensure proper data transmission through the
IIPC
Start-Up Procedure
The following lists the different operation steps upon IIPC power-up:
1. After the device is powered up and the reset procedure completed, the IIPC TX path
starts transmitting Control/Idle words in order to align and synchronize the receiving
device’s Interlaken interface. Similarly, the IIPC RX path listens for Control/Idle words
and goes through its own synchronization procedure.
2. User’s Task: Set all of the flow control input to the IIPC TX path to the XOFF state to
prevent any real data transfer.
3. The RX path will eventually get aligned and synchronized and signal the user logic that
synchronization is complete.
4. User’s Task: Turn the flow control information from XOFF to XON for any of the
channels that are ready to accept data.
5. Similarly when the other device is ready to receive data, it will send XON information to
the IIPC which in turn will tell the user logic which channels can be used to transmit data
on.
The above list describes a simple and easily-implementable procedure by which to initially
configure the IIPC. The user needs to build a scheduler only to mux data amongst the different
logical channels, and use the flow control information output by the IIPC to manage the
UG032, May 15, 2014
10
scheduling function. The user need not be concerned about any of the lower level Interlaken
Protocol details.
UG032, May 15, 2014
11
Clocking
The IIPC has three major clock domains:
1. LBUS clock Domain
•The clk input port is used to clock the protocol processing of the IIPC. This
includes all logic in the TX and RX paths responsible for protocol layer
processing including Control Word, Meta frame and the LBUS interface.
•The frequency of the clk domain is 470MHz
2. RX SerDes clock Domain
•Each SerDes is assumed to provide its recovered clock to the IIPC. These clocks
are connected to the rx_serdes_clk[11:0] input pins and are used to clock the perlane logic of each lane. IIPC synchronizes the received data from all of the SerDes
to the LBUS clock domain.
•The frequency of these domains is calculated by simply dividing the serial bit
rate by the parallel bus width (20-bit) of the SerDes block. For example, if the
serial bit rate is 6.25Gbps, the rx_serdes_clk[11:0] will have a frequency of
(6250Mbps/20) = 312.5MHz.
3. TX SerDes Reference Clock Domain
•The TX SerDes domain consists of logic that is operated on the clock domain
associated with each TX SerDes. All of the SerDes must be clocked using the
same reference clock source to ensure frequency matching between the lanes. To
take care of phase differences between lanes, IIPC generates the transmit data for
all SerDes interfaces using one common clock called tx_serdes_refclk.
•The frequency of this domain is calculated by simply dividing the serial bit rate
by the parallel bus width (20-bit) of the SerDes block. For example, if the serial
bit rate is 6.25Gbps, the tx_serdes_refclk will have a frequency of (6250Mbps/20)
= 312.5MHz.
Figure 3 shows the different clock domains in the RX direction along with their associated clock
inputs. Figure 4 shows the different clock domains in the TX direction along with their associated
clock inputs. The IIPC handles all clock domain crossings.
UG032, May 15, 2014
12
hs
_if
per_lane_
rx
rx
_destriping
clk
serDes
IIPC Core
hs_
if
per
_
lane
_
rx
serDes
hs
_
if
per_lane_rx
serDes
hs_if
per
_lane
_
rx
serDes
hs
_
if
per_
lane_rx
serDes
hs_if
per
_lane_
rx
serDes
hs_
if
per_lane
_rx
serDes
hs_if
per
_lane_
rx
serDes
hs_
if
per
_lane
_
rx
serDes
hs_
if
per
_lane_rx
serDes
hs_if
per_
lane_rx
serDes
hs_
if
per
_lane_rx
serDes
Interface to user logic in the FPGA Core
rx_serdes_clk[0]
rx_
serdes
_clk
[
1
]
rx_serdes_clk[2]
rx
_
serdes_
clk[
3
]
rx
_serdes_
clk[
4]
rx
_serdes_
clk[
5]
rx
_serdes_
clk[6
]
rx
_serdes_
clk[7]
rx_
serdes
_clk[
8]
rx
_serdes
_clk
[9]
rx
_serdes
_
clk[10]
rx
_
serdes_
clk[11
]
Figure 3: RX Clock Domains
UG032, May 15, 2014
13
hs_ifper_lane
_tx
tx_striping
clktx_serdes_refclk
serDes
IIPC Core
hs_if
per_lane_txserDes
hs_if
per_lane_tx
serDes
hs_ifper_lane_tx
serDes
hs_ifper_lane_txserDes
hs_ifper_lane_tx
serDes
hs_if
per_lane_tx
serDes
hs_if
per_lane_tx
serDes
hs_if
per_lane_txserDes
hs_ifper_lane_tx
serDes
hs_ifper_lane_txserDes
hs_if
per_lane_tx
serDes
Interface to user logic in the FPGA Core
Figure 4: TX Clock Domains
UG032, May 15, 2014
14
Port List
synchronized to the positive edge of the
Table 1 shows the port list for the IIPC. More detail on the use of each signal is given in the User
Interfaces section.
Table 1 – Port Description
Name Direction Clock Description
Register Interface
sbus_req
sbus_datain[1:0]
sbus_ack
sbus_dataout[1:0]
rx_serdes_data[19:0
]
Input sbus_clk
Input sbus_clk
Output sbus_clk
Output sbus_clk
Transceiver I/O
Input rx_serdes_clk
Asserted for 9-cycles in case of read and for
11-cycles in case of write
Carries read/write indication, address and
data to write
Acknowledgment from register i/f once
read or write is completed thru SBUS.
During write it is valid for one cycle to
indicate the end of the transfer. This is
asserted for 4-cycles to validate 8-bit data at
the end of read.
Contains read data for 4-cycles when
o_sbus_ack is asserted.
Data bus from the SerDes. There are 12
rx_serdes_data buses; one bus for each
SerDes lane and each bus has 20 bits.
By definition, bit [19] is the first bit received
by the IIPC. Bit [0] is the last bit received.
tx_serdes_data[19:0]
rx_serdes_clk[11:0] Input
UG032, May 15, 2014
Output
tx_serdes_ref
clk
Data bus to the SerDes . There are 12
tx_serdes_data buses; one bus for each
SerDes lane and each bus has 20 bits.
By definition, bit [19] is the first bit
transmitted by the IIPC. Bit [0] is the last bit
transmitted.
Recovered clock of each SerDes lane. The
rx_serdes_data bus for each lane
15
Name Direction Clock Description
corresponding bit of this bus.
rx_serdes_resetn[11:
0]
Input
Reset for each RX SerDes lane. The
recovered clock for each SerDes lane has
associated with it an active-low reset. This
signal is low until transmit and receive
data-paths of each SerDes are ready.
tx_serdes_refclk Input
tx_serdes_refclk_res
etn
Input
LBUS Interface – Clock/Reset Signals
clk Input
rx_resetn Input
Common clock for the all Tx SerDes
interfaces.
Active low reset for TX Reference clock.
This signal is low until the PLL in the
SerDes is locked and the transmit data-path
is ready in lane #0.
Local bus clock. All signals between the
IIPC and the user side logic are
synchronized to the positive edge of this
signal.
Asynchronous reset for the RX circuits.
This signal is active low (0 = reset). Initially
this reset is applied from the board.
Subsequently it can be applied by the user
dynamically or based on the readiness of
SerDes receive and transmit paths. The
IIPC handles synchronizing the rx_resetn
input to the appropriate clock domains
within the IIPC.
tx_resetn Input
rx_dataout[511:0] Output clk
rx_chanout[7:0] Output clk
UG032, May 15, 2014
Asynchronous reset for the TX circuits. This
signal is active low (0 = reset). Initially this
reset is applied from the board.
Subsequently it can be applied by the user
dynamically or based on the readiness of
SerDes PLL and transmit path. The IIPC
handles synchronizing the tx_resetn input
to the appropriate clock domains within the
IIPC.
LBUS Interface – RX Path Signals
Receive LBUS Data. The value of the bus is
only valid in cycles that rx_enaout is
sampled as 1.
Receive Channel Number. The bus
16
Loading...
+ 35 hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.