L- and H-Tile Transceiver PHY User Guide

ID 683621
Date 1/30/2024
Public
Document Table of Contents

2.5.1.8. Native PHY IP Core Ports for PIPE

Figure 110. Signals and Ports of the Native PHY IP Core for PIPE
Table 111.   Ports of the Native PHY IP Core in PIPE Mode
Port Direction Clock Domain Description
Clocks
rx_cdr_refclk0 In N/A The 100 MHz input reference clock source for the PHY's TX PLL and RX CDR.
tx_serial_clk0 / tx_serial_clk1 In N/A The high speed serial clock generated by the PLL.

Note: The tx_serial_clk1 is only used in Gen3 x 1 mode.

pipe_hclk_in[0:0] In N/A The 500 MHz clock used for the ASN block. This clock is generated by the PLL, configured for Gen1/Gen2.

Note: For Gen3 designs, use from the fPLL that is used for Gen1/Gen2.

pipe_hclk_out[0:0] Out N/A The 500 MHz clock output provided to the PHY - MAC interface.
PIPE Input from PHY - MAC Layer
tx_parallel_data[31:0] In

tx_coreclkin

The TX parallel data driven from the MAC. For Gen1 this can be 8 or 16 bits. For Gen2 this is 16 bits. For Gen3 this is 32 bits.

Note: unused_tx_parallel_data should be tied to '0'.

Active High. Refer to Bit Mappings When the Simplified Interface Is Disabled for more details.

tx_datak[3:0], [1:0], or [0] In

tx_coreclkin

The data and control indicator for the transmitted data.

For Gen1 or Gen2, when 0, indicates that tx_parallel_data is data, when 1, indicates that tx_parallel_data is control.

For Gen3, bit[0] corresponds to tx_parallel_data[7:0], bit[1] corresponds to tx_parallel_data[15:8], and so on.

Active High. Refer to Bit Mappings When the Simplified Interface Is Disabled for more details.

pipe_tx_sync_hdr[(2*N-1):0] In

tx_coreclkin

For Gen3, indicates whether the 130-bit block transmitted is a Data or Control Ordered Set Block.

The following encodings are defined:

2'b10: Data block

2'b01: Control Ordered Set Block

This value is read when pipe_tx_blk_start = 1b'1.

Refer to Lane Level Encoding in the PCI Express Base Specification, Rev. 3.0 for a detailed explanation of data transmission and reception using 128b/130b encoding and decoding.

Not used for Gen1 and Gen2 datarates.

Active High

pipe_tx_blk_start[(N-1):0] In

tx_coreclkin

For Gen3, specifies the start block byte location for TX data in the 128-bit block data. Used when the interface between the PCS and PHY-MAC (FPGA Core) is 32 bits.

Not used for Gen1 and Gen2 datarates.

Active High

pipe_tx_elecidle[(N-1):0] In

Asynchronous

Forces the transmit output to electrical idle. Refer to the Intel PHY Interface for PCI Express (PIPE) for timing diagrams.

Active High

pipe_tx_detectrx_loopback[(N-1):0] In

tx_coreclkin

Instructs the PHY to start a receive detection operation. After power-up, asserting this signal starts a loopback operation. Refer to section 6.4 of the Intel PHY Interface for PCI Express (PIPE) for a timing diagram.

Active High

pipe_tx_compliance[(N-1):0] In

tx_coreclkin

Asserted for one cycle to set the running disparity to negative. Used when transmitting the compliance pattern. Refer to section 6.11 of the Intel PHY Interface for PCI Express (PIPE) Architecture for more information.

Active High

pipe_rx_polarity[(N-1):0] In

Asynchronous

When 1'b1, instructs the PHY layer to invert the polarity on the received data.

Active High

pipe_powerdown[(2*N-1):0] In

tx_coreclkin

Requests the PHY to change its power state to the specified state. The Power States are encoded as follows:

2'b00: P0 - Normal operation.

2'b01: P0s - Low recovery time, power saving state.

2'b10: P1 - Longer recovery time, lower power state .

2'b11: P2 - Lowest power state.

pipe_tx_margin[(3*N-1):0] In

tx_coreclkin

Transmit VOD margin selection. The PHY-MAC sets the value for this signal based on the value from the Link Control 2 Register. The following encodings are defined:

3'b000: Normal operating range

3'b001: Full swing: 800 - 1200 mV; Half swing: 400 - 700 mV.

3'b010:-3'b011: Reserved.

3'b100-3'b111: Full swing: 200 - 400mV; Half swing: 100 - 200 mV else reserved.

pipe_tx_swing[(N-1):0] In

tx_coreclkin

Indicates whether the transceiver is using Full swing or Half swing voltage as defined by the pipe_tx_margin.

1'b0-Full swing.

1'b1-Half swing.

pipe_tx_deemph[(N-1):0] In

Asynchronous

Transmit de-emphasis selection. In PCI Express Gen2 (5 Gbps) mode it selects the transmitter de-emphasis:

1'b0: –6 dB.

1'b1: –3.5 dB.

pipe_g3_txdeemph[(18*N-1):0] In

Asynchronous

For Gen3, selects the transmitter de-emphasis. The 18 bits specify the following coefficients:

[5:0]: C-1

[11:6]: C0

[17:12]: C+1

Refer to the Preset Mappings to TX De-emphasis section for presets to TX de-emphasis mappings. In Gen3 capable designs, the TX de-emphasis for Gen2 datarate is always -6 dB. The TX de-emphasis for Gen1 datarate is always -3.5 dB.

Refer to section 6.6 of Intel PHY Interface for PCI Express (PIPE) Architecture for more information.

pipe_g3_rxpresethint[(3*N-1):0] In

Asynchronous

Provides the RX preset hint for the receiver. Set this to 3'b000 for PIPE Gen3 configurations.
pipe_rx_eidleinfersel[(3*N-1):0] In

Asynchronous

When asserted high, the electrical idle state is inferred instead of being identified using analog circuitry to detect a device at the other end of the link. The following encodings are defined:

3'b0xx: Electrical Idle Inference not required in current LTSSM state.

3'b100: Absence of COM/SKP OS in 128 ms.

3'b101: Absence of TS1/TS2 OS in 1280 UI interval for Gen1 or Gen2.

3'b110: Absence of Electrical Idle Exit in 2000 UI interval for Gen1 and 16000 UI interval for Gen2.

3'b111: Absence of Electrical Idle exit in 128 ms window for Gen1.

Note: Recommended to implement Receiver Electrical Idle Inference (EII) in FPGA fabric.
pipe_rate[(2*N)-1:0] In

Asynchronous

The 2-bit encodings defined in the following list:

2'b00: Gen1 rate (2.5 Gbps)

2'b01: Gen2 rate (5.0 Gbps)

2'b10: Gen3 rate (8.0 Gbps)

pipe_sw_done[1:0] In

N/A

Signal from the Master clock generation buffer, indicating that the rate switch has completed. Use this signal for bonding mode only.

For non-bonded applications, this signal is internally connected to the local CGB.

pipe_tx_data_valid[(N-1):0] In

tx_coreclkin

For Gen3, this signal is deasserted by the MAC to instruct the PHY to ignore tx_parallel_data for current clock cycle. A value of 1'b1 indicates the PHY should use the data. A value of 0 indicates the PHY should not use the data.

Active High

pipe_eq_eval In tx_coreclkin

Assert high to start evaluation of the far end transmitter TX EQ settings.

Active High

pipe_eq_invalidreq In tx_coreclkin

Assert high to indicate that the link partner TX EQ setting was out of range.

Active High

pipe_eq_inprogress In tx_coreclkin

Assert high to indicate the MAC is in Phase 2 of Recovery.Equalization.

Active High

PIPE Output to PHY - MAC Layer
rx_parallel_data[31:0], [15:0],or [7:0] Out

rx_coreclkin

The RX parallel data driven to the MAC.

For Gen1 this can be 8 or 16 bits. For Gen2 this is 16 bits only. For Gen3 this is 32 bits. Refer to Bit Mappings When the Simplified Interface Is Disabled for more details.

rx_datak[3:0], [1:0], or [0] Out

rx_coreclkin

The data and control indicator.

For Gen1 or Gen2, when 0, indicates that rx_parallel_data is data, when 1, indicates that rx_parallel_data is control.

For Gen3, Bit[0] corresponds to rx_parallel_data[7:0], Bit[1] corresponds to rx_parallel_data[15:8], and so on. Refer to Bit Mappings When the Simplified Interface Is Disabled for more details.

pipe_rx_sync_hdr[(2*N-1):0] Out

rx_coreclkin

For Gen3, indicates whether the 130-bit block being transmitted is a Data or Control Ordered Set Block. The following encodings are defined:

2'b10: Data block

2'b01: Control Ordered Set block

This value is read when pipe_rx_blk_start = 4'b0001. Refer to Section 4.2.2.1. Lane Level Encoding in the PCI Express Base Specification, Rev. 3.0 for a detailed explanation of data transmission and reception using 128b/130b encoding and decoding.

pipe_rx_blk_start[(N-1):0] Out

rx_coreclkin

For Gen3, specifies the start block byte location for RX data in the 128-bit block data. Used when the interface between the PCS and PHY-MAC (FPGA Core) is 32 bits. Not used for Gen1 and Gen2 datarates.

Active High

pipe_rx_data_valid[(N-1):0] Out

rx_coreclkin

For Gen3, this signal is deasserted by the PHY to instruct the MAC to ignore rx_parallel_data for current clock cycle. A value of 1'b1 indicates the MAC should use the data. A value of 1'b0 indicates the MAC should not use the data.

Active High

pipe_rx_valid[(N-1):0] Out

rx_coreclkin

Asserted when RX data and control are valid.
pipe_phy_status[(N-1):0] Out

rx_coreclkin

Signal used to communicate completion of several PHY requests.

Active High

pipe_rx_elecidle[(N-1):0] Out

Asynchronous

When asserted, the receiver has detected an electrical idle.

Active High

pipe_rx_status[(3*N-1):0] Out

rx_coreclkin

Signal encodes receive status and error codes for the receive data stream and receiver detection. The following encodings are defined:

3'b000 - Receive data OK

3'b001 - 1 SKP added

3'b010 - 1 SKP removed

3'b011 - Receiver detected

3'b100 - Either 8B/10B or 128b/130b decode error and (optionally) RX disparity error

3'b101 - Elastic buffer overflow

3'b110 - Elastic buffer underflow

3'b111 - Receive disparity error, not used if disparity error is reported using 3'b100.

pipe_sw[1:0] Out N/A Signal to clock generation buffer indicating the rate switch request. Use this signal for bonding mode only.

For non-bonded applications this signal is internally connected to the local CGB.

Active High. Refer to Bit Mappings When the Simplified Interface Is Disabled for more details.

Table 112.  Bit Mappings When the Simplified Interface Is Disabled
Signal Name Gen 1 (TX Byte Serializer and RX Byte Deserializer disabled) Gen1 (TX Byte Serializer and RX Byte Deserializer in X2 mode), Gen2 (TX Byte Serializer and RX Byte Deserializer in X2 mode) Gen3
tx_parallel_data tx_parallel_data[7:0] tx_parallel_data[18:11,7:0] tx_parallel_data[56:49,47:40,18:11,7:0]
tx_datak tx_parallel_data[8] tx_parallel_data[19,8] tx_parallel_data[57,48,19,8]
pipe_tx_compliance[(N-1):0] tx_parallel_data[9] tx_parallel_data[9] tx_parallel_data[9]
pipe_tx_elecidle[(N-1):0] tx_parallel_data[10] tx_parallel_data[10] tx_parallel_data[10]
pipe_tx_detectrx_loopback[(N-1):0] tx_parallel_data[20] tx_parallel_data[20] tx_parallel_data[20]
pipe_powerdown[(2*N-1):0] tx_parallel_data[22:21] tx_parallel_data[22:21] tx_parallel_data[22:21]
pipe_tx_margin[(3*N-1):0] tx_parallel_data[25:23] tx_parallel_data[25:23] tx_parallel_data[25:23]
pipe_tx_swing[(N-1):0] tx_parallel_data[27] tx_parallel_data[27] tx_parallel_data[27]
pipe_tx_deemph[(N-1):0] N/A tx_parallel_data[26] N/A
pipe_tx_sync_hdr[(2*N-1):0] N/A N/A tx_parallel_data[29:28]
pipe_tx_blk_start[(N-1):0] N/A N/A tx_parallel_data[30]
pipe_tx_data_valid[(N-1):0] N/A N/A tx_parallel_data[31]
pipe_rate[(2*N)-1):0] tx_parallel_data[33:32] tx_parallel_data[33:32] tx_parallel_data[33:32]
pipe_rx_polarity[(N-1):0] tx_parallel_data[34] tx_parallel_data[34] tx_parallel_data[34]
pipe_eq_eval N/A N/A tx_parallel_data[35]
pipe_eq_inprogress N/A N/A tx_parallel_data[36]
pipe_eq_invalidreq N/A N/A tx_parallel_data[37]
pipe_g3_rxpresethint[(3*N-1):0] N/A N/A tx_parallel_data[60:58]
pipe_g3_txdeemph[(18*N-1):0] N/A N/A tx_parallel_data[78:61]
rx_parallel_data rx_parallel_data[7:0] rx_parallel_data[22:15,7:0] rx_parallel_data[62:55,47:40,22:15,7:0]
rx_datak rx_parallel_data[8] rx_parallel_data[23,8] rx_parallel_data[63,48,23,8]
rx_syncstatus rx_parallel_data[10] rx_parallel_data[25,10] rx_parallel_data[65,50,25,10]
pipe_phystatus[(N-1):0] rx_parallel_data[32] rx_parallel_data[32] rx_parallel_data[32]
pipe_rx_valid[(N-1):0] rx_parallel_data[33] rx_parallel_data[33] rx_parallel_data[33]
pipe_rx_status[(3*N-1):0] rx_parallel_data[36:34] rx_parallel_data[36:34] rx_parallel_data[36:34]
pipe_rx_sync_hdr[(2*N-1):0] N/A N/A rx_parallel_data[31:30]
pipe_rx_blk_start[(N-1):0] N/A N/A rx_parallel_data[37]
pipe_rx_data_valid[(N-1):0] N/A N/A rx_parallel_data[38]