L-Tile和H-Tile收发器PHY用户指南

ID 683621
日期 3/29/2021
Public
文档目录

2.5.1.8. 用于PIPE的Native PHY IP Core端口

图 109. 用于PIPE的Native PHY IP Core的信号和端口
表 110.  PIPE模式下的Native PHY IP Core的端口
端口 方向 时钟域 说明
Clocks
rx_cdr_refclk0 In N/A PHY的TX PLL和RX CDR的100 MHz输入参考时钟源。
tx_serial_clk0 / tx_serial_clk1 In N/A PLL生成的高速串行时钟。

请注意:tx_serial_clk1仅在Gen3 x 1模式下使用。

pipe_hclk_in[0:0] In N/A 用于ASN模块的500 MHz时钟。此时钟由PLL生成,配置为Gen1/Gen2。

请注意:对于Gen3设计,从用于Gen1/Gen2的fPLL使用。

pipe_hclk_out[0:0] Out N/A 对 PHY- MAC接口提供的500 MHz时钟输出。
PIPE Input from PHY - MAC Layer
tx_parallel_data[31:0] In

tx_coreclkin

从MAC驱动的TX并行数据。对于Gen1,这可以是8或16比特。对于Gen2,这是16比特。对于Gen3,这是32比特。

请注意:unused_tx_parallel_data应该连接到'0'。

Active High。请参考表 111获得详细信息。

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

tx_coreclkin

已发送数据的数据和控制指示器。

对于Gen1或者Gen2,为0时表示tx_parallel_data是数据,为1时表示tx_parallel_data是控制。

对于Gen3,bit[0]对应于tx_parallel_data[7:0]bit[1]对应于tx_parallel_data[15:8],以此类推。

Active High。请参考表 111来了解详细信息。

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

tx_coreclkin

对于Gen3,表明发送的130-bit模块是Data还是Control Ordered Set Block。

以下代码定义为:

2'b10: Data block

2'b01: Control Ordered Set Block

pipe_tx_blk_start = 1b'1时读取此值。

请参考PCI Express Base Specification, Rev. 3.0 中的Lane Level Encoding来了解使用128b/130b编码和解码的数据发送和接收的详细说明。

不用于Gen1和Gen2数据速率。

Active High

pipe_tx_blk_start[(N-1):0] In

tx_coreclkin

对于Gen3,指定128-bit模块数据中的TX数据的起始模块字节位置。当PCS与PHY-MAC (FPGA Core)之间的接口为32比特时使用。

不用于Gen1和Gen2数据速率。

Active High

pipe_tx_elecidle[(N-1):0] In

Asynchronous

强制发送输出进入电气空闲状态。请参考Intel PHY Interface for PCI Express (PIPE)来了解时序图。

Active High

pipe_tx_detectrx_loopback[(N-1):0] In

tx_coreclkin

指示PHY开始接收检测操作。上电后,置位此信号将开始一个环回操作。请参考Intel PHY Interface for PCI Express (PIPE)的section 6.4来了解时序图。

Active High

pipe_tx_compliance[(N-1):0] In

tx_coreclkin

置位一个周期以将运行差异设置为负。当发送合规码型(compliance pattern)时使用。请参考Intel PHY Interface for PCI Express (PIPE) Architecture的section 6.11来了解详细信息。

Active High

pipe_rx_polarity[(N-1):0] In

Asynchronous

当为1'b1时,指示PHY layer反转接收数据上的极性。

Active High

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

tx_coreclkin

请求PHY将其电源状态更改为指定的状态。电源状态(Power State)编码如下:

2'b00: P0 - 正常操作。

2'b01: P0s - 低恢复时间,省电状态。

2'b10: P1 - 更长的恢复时间,更低的功耗状态。 .

2'b11: P2 - 最低的功耗状态。

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

tx_coreclkin

输出VOD裕量选择。PHY-MAC基于Link Control 2 Register的值来设置此信号的值。以下编码定义为:

3'b000: 正常操作范围

3'b001: 全摆幅: 800 - 1200 mV; 半摆幅: 400 - 700 mV。

3'b010:-3'b011: 保留。

3'b100-3'b111: 全摆幅: 200 - 400mV; 半摆幅: 100 - 200 mV其他保留。

pipe_tx_swing[(N-1):0] In

tx_coreclkin

表示收发器使用Full swing还是Half swing电压(如pipe_tx_margin所定义)。

1'b0-Full swing。

1'b1-Half swing。

pipe_tx_deemph[(N-1):0] In

Asynchronous

发送去加重选择。在PCI Express Gen2 (5 Gbps)模式中,选择发送器去加重:

1'b0: –6 dB.

1'b1: –3.5 dB.

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

Asynchronous

对于Gen3,选择发送器去加重。18比特指定以下系数:

[5:0]: C-1

[11:6]: C0

[17:12]: C+1

请参考Preset Mappings to TX De-emphasis部分来了解从预置到TX去加重映射。在支持Gen3的设计中,Gen2数据速率的TX去加重始终为-6 dB。Gen1数据速率的TX去加重始终为-3.5 dB。

请参考Intel PHY Interface for PCI Express (PIPE) Architecture的section 6.6来了解详细信息。

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

Asynchronous

对接收器提供RX预置提示。对于PIPE Gen3配置,设为3'b000。
pipe_rx_eidleinfersel[(3*N-1):0] In

Asynchronous

当置为高电平时,将推断出电气空闲状态,而不是使用模拟电路来识别链路另一端的器件。以下编码定义为:

3'b0xx: 当前LTSSM状态中不需要电气空闲推断。

3'b100: 在128 ms内没有COM/SKP OS。

3'b101: 对于Gen1或Gen2,在1280 UI间隔中没有TS1/TS2 OS。

3'b110: 对于Gen1,在2000 UI间隔中没有Electrical Idle Exit,对于Gen2,在16000 UI间隔中没有Electrical Idle Exit。

3'b111: 对于Gen1,在128 ms窗口中没有Electrical Idle exit。

注: 建议在FPGA架构中实现implement Receiver Electrical Idle Inference (EII)。
pipe_rate[(2*N)-1:0] In

Asynchronous

2-bit编码如下:

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

来自Master时钟生成缓冲器的信号,表明速率切换已完成。此信号仅用于绑定模式。

对于非绑定应用,该信号从内部连接到本地CGB。

pipe_tx_data_valid[(N-1):0] In

tx_coreclkin

对于Gen3,该信号由MAC置低,指示PHY忽略当前时钟周期的tx_parallel_data。值1'b1表示PHY应该使用数据。值为0表示PHY不应使用数据。

Active High

pipe_eq_eval In tx_coreclkin

置为高电平开始远端发送器TX EQ设置的评估。

Active High

pipe_eq_invalidreq In tx_coreclkin

置为高电平表示链路伙伴TX EQ设置超出范围。

Active High

pipe_eq_inprogress In tx_coreclkin

置为高电平表示MAC处于Recovery.Equalization的Phase 2中。

Active High

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

rx_coreclkin

驱动到MAC的RX并行数据。

对于Gen1,这可以是8或16比特。对于Gen2,这是16比特。对于Gen3,这是32比特。请参考表 111来了解详细信息。

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

rx_coreclkin

数据和控制指示器。

对于Gen1或者Gen2,为0时表示rx_parallel_data是数据,为1时表示rx_parallel_data是控制。

对于Gen3,bit[0]对应于rx_parallel_data[7:0]bit[1]对应于rx_parallel_data[15:8],以此类推。请参考表 111来了解详细信息。

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

rx_coreclkin

对于Gen3,表明发送的130-bit模块是Data还是Control Ordered Set Block。 以下代码定义为:

2'b10: Data block

2'b01: Control Ordered Set Block

pipe_rx_blk_start = 4'b0001时读取此值。请参考PCI Express Base Specification, Rev. 3.0 中的Section 4.2.2.1. Lane Level Encoding来了解使用128b/130b编码和解码的数据发送和接收的详细说明。

pipe_rx_blk_start[(N-1):0] Out

rx_coreclkin

对于Gen3,指定128-bit模块数据中的RX数据的起始模块字节位置。当PCS与PHY-MAC (FPGA Core)之间的接口为32比特时使用。不用于Gen1和Gen2数据速率。

Active High

pipe_rx_data_valid[(N-1):0] Out

rx_coreclkin

对于Gen3,该信号由PHY置低,指示MAC忽略当前时钟周期的rx_parallel_data。值1'b1表示MAC应该使用数据。值为1'b0表示MAC不应使用数据。

Active High

pipe_rx_valid[(N-1):0] Out

rx_coreclkin

当RX数据和控制有效时置位。
pipe_phy_status[(N-1):0] Out

rx_coreclkin

用于传达多个PHY请求完成的信号。

Active High

pipe_rx_elecidle[(N-1):0] Out

Asynchronous

置位时,接收器已检测到电气空闲。

Active High

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

rx_coreclkin

信号对接收数据流和接收器检测编码接收状态和错误代码。以下编码定义为:

3'b000 - 接收数据OK

3'b001 - 添加1 SKP

3'b010 - 移除1 SKP

3'b011 - 检测到接收器

3'b100 - 8B/10B或128b/130b解码错误和(可选)RX差异错误

3'b101 - 弹性缓冲器上溢

3'b110 - 弹性缓冲器下溢

3'b111 - 接收差异错误,如果使用3'b100报告差异错误,则不使用。

pipe_sw[1:0] Out N/A 对生成缓冲器提供时钟的信号,指示速率切换请求。此信号仅用于绑定模式。

对于非绑定应用,此信号从内部连接到本地CGB。

Active High。请参考表 111来了解详细信息。

表 111.  简化接口禁用时的比特映射
信号名称 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]