仅对英特尔可见 — GUID: jfm1484328141656
Ixiasoft
仅对英特尔可见 — GUID: jfm1484328141656
Ixiasoft
2.5.1.8. 用于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来了解详细信息。 |
信号名称 | 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] |