Forward error correction (FEC) is available on the PHYs of the DCMAC Subsystem port. FEC can be enabled or disabled on a per-port basis.
For the transmit path, the various FEC operating modes are selected through the following fields of the C0_TX_MODE_REG through C5_TX_MODE_REG registers:
- c0_ctl_tx_fec_mode
- c1_ctl_tx_fec_mode
- c2_ctl_tx_fec_mode
- c3_ctl_tx_fec_mode
- c4_ctl_tx_fec_mode
- c5_ctl_tx_fec_mode
Likewise, on the receive path, the FEC modes are selected using the following fields of the C0_RX_MODE_REG through C5_RX_MODE_REG registers:
- c0_ctl_rx_fec_mode
- c1_ctl_rx_fec_mode
- c2_ctl_rx_fec_mode
- c3_ctl_rx_fec_mode
- c4_ctl_rx_fec_mode
- c5_ctl_rx_fec_mode
Furthermore, the 256B/257B transcoder can be bypassed in the transmit path using the c0_ctl_tx_fec_transcode_bypass through c5_ctl_tx_fec_transcode_bypass fields of the corresponding C0_TX_MODE_REG through C5_TX_MODE_REG registers. The same can be done in the receive path using the c0_ctl_rx_fec_transcode_bypass through c5_ctl_rx_fec_transcode_bypass fields of the corresponding C0_RX_MODE_REG through C5_RX_MODE_REG registers.
In the receive path only, the lane alignment logic can be bypassed using the c0_ctl_rx_fec_alignment_bypass through c5_ctl_rx_fec_alignment_bypass fields of the corresponding C0_RX_MODE_REG through C5_RX_MODE_REG registers.
A change in either of these registers requires a reset being driven to that port after configuration is complete.
Deskew buffers are shared across FEC modes. For FEC modes such as 128GFC and FlexO, whose data rate exceeds Ethernet nominal rate, the DCMAC Subsystem can handle an equivalent number of bits of skew. Because the bit rate of 128GFC and FlexO is higher, this translates into less than 180 ns of deskew capability. Specially, 128GFC supports 175 ns of deskew and FlexO supports 176 ns of deskew. Applications requiring additional deskew capability can make use of an external alignment buffer to deskew the data prior to its entry into the DCMAC Subsystem. The DCMAC Subsystem provides rx_serdes_albuf_slip_<4*N+0> through rx_serdes_albuf_slip_<4*N+3> signals to simplify user logic related to this external alignment buffer.
Many FEC modes are relevant for both Coupled MAC+PCS and Independent MAC and PCS+FEC modes. The following table summarizes the available configurations for each DCMAC Subsystem port.
Port | Operating Mode | FEC Mode 1 | Transcode Bypass 2 | Align Bypass 3 | MAC+PHY or FLEX I/F 4 | Description |
---|---|---|---|---|---|---|
0 | All rates | 5'b00000 | N/A | N/A | N/A | FEC Disabled |
400GE | 5'b10000 | 0 | 0 | Both | IEEE 802.3 CL119 RS (544,514) FEC | |
400G FlexO | 5'b10100 | 1 | 0 | FLEX I/F | ITU-T FlexO RS (544,514) FEC | |
200GE | 5'b01000 | 0 | 0 | Both | IEEE 802.3 CL119 RS (544,514) FEC | |
200G FlexO | 5'b01100 | 1 | 0 | FLEX I/F | ITU-T FlexO RS (544,514) FEC | |
100GE | 5'b00100 | 0 | 0 | Both | IEEE 802.3cd CL91 RS (544,514) FEC | |
5'b00101 | 0 | 0 | Both | IEEE 802.3 CL91 RS (528,514) FEC | ||
5'b00110 | 0 | 0 | Both | IEEE P802.3ck CL161 RS (544,514) FEC | ||
100G FlexO | 5'b00011 | 1 | 0 | FLEX I/F | ITU-T FlexO RS (544,514) FEC | |
128GFC | 5'b00111 | 0 | 0 | FLEX I/F | 128GFC | |
112G FEC-only | 5'b00100 | 0 | 0 | FLEX I/F | IEEE 802.3cd CL91 RS (544,514) FEC | |
5'b00101 | 0 | 0 | FLEX I/F | IEEE 802.3 CL91 RS (528,514) FEC | ||
5'b00110 | 0 | 0 | FLEX I/F | IEEE P802.3ck CL161 RS (544,514) FEC | ||
2 x 56.42G FEC-only | 5'b00010 | 1 | 1 | FLEX I/F | IEEE 802.3cd CL134 RS (544,514) FEC | |
1 x 56.42G FEC-only | 5'b00001 | 1 | 1 | FLEX I/F | IEEE 802.3cd CL134 RS (544,514) FEC | |
1 | All rates | 5'b00000 | N/A | N/A | N/A | FEC Disabled |
100GE | 5'b00100 | 0 | 0 | Both | IEEE 802.3cd CL91 RS (544,514) FEC | |
5'b00101 | 0 | 0 | Both | IEEE 802.3 CL91 RS (528,514) FEC | ||
5'b00110 | 0 | 0 | Both | IEEE P802.3ck CL161 RS (544,514) FEC | ||
100GFlexO | 5'b00011 | 1 | 0 | FLEX I/F | ITU-T FlexO RS (544,514) FEC | |
128GFC | 5'b00111 | 0 | 0 | FLEX I/F | 128GFC | |
112G FEC-only | 5'b00100 | 1 | 1 | FLEX I/F | IEEE 802.3cd CL91 RS (544,514) FEC | |
2 x 56.42G FEC-only | 5'b00010 | 1 | 1 | FLEX I/F | IEEE 802.3cd CL134 RS (544,514) FEC | |
1 x 56.42G FEC-only | 5'b00001 | 1 | 1 | FLEX I/F | IEEE 802.3cd CL134 RS (544,514) FEC | |
2 | All rates | 5'b00000 | N/A | N/A | N/A | FEC Disabled |
200GE | 5'b01000 | 0 | 0 | Both | IEEE 802.3 CL119 RS (544,514) FEC | |
200G FlexO | 5'b01100 | 1 | 0 | FLEX I/F | ITU-T FlexO RS (544,514) FEC | |
100GE | 5'b00100 | 0 | 0 | Both | IEEE 802.3cd CL91 RS (544,514) FEC | |
5'b00101 | 0 | 0 | Both | IEEE 802.3 CL91 RS (528,514) FEC | ||
5'b00110 | 0 | 0 | Both | IEEE P802.3ck CL161 RS (544,514) FEC | ||
100G FlexO | 5'b00011 | 1 | 0 | FLEX I/F | ITU-T FlexO RS (544,514) FEC | |
128GFC | 5'b00111 | 0 | 0 | FLEX I/F | 128GFC | |
112G FEC-only | 5'b00100 | 1 | 1 | FLEX I/F | IEEE 802.3cd CL91 RS (544,514) FEC | |
2 x 56.42G FEC-only | 5'b00010 | 1 | 1 | FLEX I/F | IEEE 802.3cd CL134 RS (544,514) FEC | |
1 x 56.42G FEC-only | 5'b00001 | 1 | 1 | FLEX I/F | IEEE 802.3cd CL134 RS (544,514) FEC | |
3 | All rates | 5'b00000 | N/A | N/A | N/A | FEC Disabled |
100GE | 5'b00100 | 0 | 0 | Both | IEEE 802.3cd CL91 RS (544,514) FEC | |
5'b00101 | 0 | 0 | Both | IEEE 802.3 CL91 RS (528,514) FEC | ||
5'b00110 | 0 | 0 | Both | IEEE P802.3ck CL161 RS (544,514) FEC | ||
100G FlexO | 5'b00011 | 1 | 0 | FLEX I/F | ITU-T FlexO RS (544,514) FEC | |
128GFC | 5'b00111 | 0 | 0 | FLEX I/F | 128GFC | |
112G FEC-only | 5'b00100 | 1 | 1 | FLEX I/F | IEEE 802.3cd CL91 RS (544,514) FEC | |
2 x 56.42G FEC-only | 5'b00010 | 1 | 1 | FLEX I/F | IEEE 802.3cd CL134 RS (544,514) FEC | |
1 x 56.42G FEC-only | 5'b00001 | 1 | 1 | FLEX I/F | IEEE 802.3cd CL134 RS (544,514) FEC | |
4 | All rates | 5'b00000 | N/A | N/A | N/A | FEC Disabled |
200GE | 5'b01000 | 0 | 0 | Both | IEEE 802.3 CL119 RS (544,514) FEC | |
200G FlexO | 5'b01100 | 1 | 0 | FLEX I/F | ITU-T FlexO RS (544,514) FEC | |
100GE | 5'b00100 | 0 | 0 | Both | IEEE 802.3cd CL91 RS (544,514) FEC | |
5'b00101 | 0 | 0 | Both | IEEE 802.3 CL91 RS (528,514) FEC | ||
5'b00110 | 0 | 0 | Both | IEEE P802.3ck CL161 RS (544,514) FEC | ||
100G FlexO | 5'b00011 | 1 | 0 | FLEX I/F | ITU-T FlexO RS (544,514) FEC | |
128GFC | 5'b00111 | 0 | 0 | FLEX I/F | 128GFC | |
112G FEC-only | 5'b00100 | 1 | 1 | FLEX I/F | IEEE 802.3cd CL91 RS (544,514) FEC | |
2 x 56.42G FEC-only | 5'b00010 | 1 | 1 | FLEX I/F | IEEE 802.3cd CL134 RS (544,514) FEC | |
1 x 56.42G FEC-only | 5'b00001 | 1 | 1 | FLEX I/F | IEEE 802.3cd CL134 RS (544,514) FEC | |
5 | All rates | 5'b00000 | N/A | N/A | N/A | FEC Disabled |
100GE | 5'b00100 | 0 | 0 | Both | IEEE 802.3cd CL91 RS (544,514) FEC | |
5'b00101 | 0 | 0 | Both | IEEE 802.3 CL91 RS (528,514) FEC | ||
5'b00110 | 0 | 0 | Both | IEEE P802.3ck CL161 RS (544,514) FEC | ||
100G FlexO | 5'b00011 | 1 | 0 | FLEX I/F | ITU-T FlexO RS (544,514) FEC | |
128GFC | 5'b00111 | 0 | 0 | FLEX I/F | 128GFC | |
112G FEC-only | 5'b00100 | 1 | 1 | FLEX I/F | IEEE 802.3cd CL91 RS(544,514) FEC | |
2 x 56.42G FEC-only | 5'b00010 | 1 | 1 | FLEX I/F | IEEE 802.3cd CL134 RS (544,514) FEC | |
1 x 56.42G FEC-only | 5'b00001 | 1 | 1 | FLEX I/F | IEEE 802.3cd CL134 RS (544,514) FEC | |
|