PCIe接口电路的设计

连接器定义
常规的PCIE应用场景主要分为两种,第1种为PCB板内走线,第2种为接插件的方式。如果是板内走线常见电路设计只需保证参考时钟(REFCLK)、高速数据差分对、复位信号即可,而对于PCIE插槽的方式,则需要按照PCIE协议要求的标准接口进行设计,常见的插槽信号定义如下图所示(本文以X4的插槽信号为例,其余X8、X16除Lane通道数差异外,其余均保持一致):

 

  • Power:电源部分,PCIe协议规定了关于标准的卡槽电源部分主要有12V、3.3V、3.3Vaux三种,其中3.3V和3.3Vaux电压在不同的插槽宽度下通流能力是一致的(例如X1、X4、X16),关于3种电源的应用说明如下图所示:
  • 12V电源:电源通常用于提供设备的主要功率需求,特别是对于高功耗设备,如高性能显卡、加速器卡等。这些设备通常需要较高的电源供应以确保其正常运行。
  • 3.3V电源:通常用于提供设备的辅助电源需求,例如用于设备的逻辑电路和控制电路。一些低功耗设备可能会主要使用3.3V电源。
  • 3.3Vaux电源:用于提供设备的辅助功能支持,这种电源通常用于设备的唤醒功能、管理接口、EEPROM等辅助电路的供电。与3.3V电源相比,3.3Vaux电源可能在设备处于低功耗状态时仍然保持激活,以支持设备的管理和唤醒功能

由上图可知,关于PCIe接口在不同的link宽度下,所对应的12V电源的最大通流能力也是不同的,同时也许注意对于实际PCIe接口的通流能力也取决于软件层面的配置(Slot Power Limit Control),Slot Power Limit Control 允许系统管理员或主板制造商设置插槽的最大功率限制,以限制插入的设备所能消耗的功率。这个限制通常以瓦特(W)为单位,并可以在系统的 BIOS 设置中进行配置。
  • 功率限制:如下图所示,列出了不同链路宽度和卡类型的功耗限制。例如,该表指出x1卡不能超过10W,除非它是用于服务器应用的高功率设备,在这种情况下,最大功率为25W。在高端,x16图形卡允许消耗高达75W(对应PCIe3.0)。

    笔注:需注意当PCIe卡槽采用不同的尺寸时,所允许的最大功率也是不一样的,例如当采用Low Profile card尺寸时,所对应的X4/X8的最大功率为10W。其中Low Profile card和Standard Height的差异为高度,Low Profile card通常为68.9mm,Standard Height为111.28mm

需注意,PCIe3.0协议规定了对于X16的卡槽,所能允许的最大功率为75W,而在PCIe4.0/5.0中对应的功率限制为250W~300W。在最新的PCIe6.0中对应的功率限制最大为600W,在如此大功率的电源需求下,电源的传输不再依靠金手指,而是采用金手指+连接器的方式,如常见的电脑显卡电源供电等。在PCIe CEM 5.1 规范定义了三个12V辅助电源连接器,分别为75W 2×3连接器、150W 2×4连接器、600W 2×6连接器,目前台式机常见的显卡电源供电,采用的2×6连接器方式居多(详细见下图)。

PICe协议中规定了可通过软件配置寄存器(Device Capabilities Register来设置对应的限制功率以及电源状态等,详细可参考下图所示,本文将不再详细展开。

  • PERST信号:代表全局复位信号(低有效),PERST信号用于向PCIe设备发送重置信号,将其恢复到初始状态。PERST信号通常通过PCIe插槽上的一个或多个引脚连接到PCIe设备。这些引脚通过主板的硬件连接到系统的主控制器,以便发送重置信号。PERST信号可以作为 Cold Reset 或 Warm Reset 的触发信号之一,可以由系统硬件或软件发出,用于触发设备的重置操作。PERST信号可能是冷复位或热复位,具体取决于触发该信号的条件和操作系统的要求。在电路设计上通常会在该引脚处并联100nF电容,用于增强系统的稳定性(例如:热插拔等)。Cold Reset是一种全局复位操作,用于将整个PCIe总线系统恢复到初始状态Cold Reset会影响整个PCIe总线系统和连接的所有设备,将它们恢复到初始状态。通常由系统重启或电源重启时触发。Warm Reset是一种设备级的重置操作,用于重置特定的PCIe设备而不影响整个PCIe总线系统Warm Reset通常是由操作系统或设备驱动程序发出的命令,用于解决特定设备的问题。
  • WAKE#信号:在PCIe接口中,WAKE#信号是一种用于唤醒设备的信号。它的作用是通知设备有关系统状态的变化,例如系统从睡眠状态或节能模式中唤醒。WAKE#信号低电平有效,当WAKE#信号处于低电平时,设备应该响应并恢复到正常运行状态,WAKE#信号是开漏输出(open-drain)在电路设计上通常会在该引脚处不做处理,建议预留上拉电阻(一般关于PCIe的应用中很少会涉及到低功耗模式)。
  • SMBus信号:SMbus是一种额外的串行总线,分为SMB_DATA、SMB_CLK两个信号,可用于支持PCIe设备之间的通信和管理。由英特尔引入的串行总线标准,用于连接系统中的各种设备,如电源管理控制器、温度传感器、风扇控制器等,并提供对这些设备的监控和管理功能。在电路设计上一般不使用,如要使用,功能类似于IIC总线,需做上拉。
  • JATG信号:此可选接口提供了一个测试访问端口(TAP),以方便对实现它的卡进行测试。TAP引脚工作在3.3V。在电路设计上一般不使用。
  • PET/PER信号:PCIe使用多条差分数据信号线来传输数据。这些信号通常被标记为Tx和Rx,在不同的PCIe速率下,会有不同数量的差分数据信号线。在电路设计上通常会在信号发出端,串接电容,例如在Gen2中电容容值一般为100nF,在Gen3中电容容值一般为220nF
  • PRSNT信号:在PCIe接口中,PRSNT#信号通常用于指示设备是否已经插入到插槽中。这个信号是由插槽上的机械开关或电气连接器控制的,当设备插入插槽时,PRSNT#信号会被拉低(active low),表示设备已经插入到插槽中,下图为PCIe协议中关于PRSNT信号的典型应用。在电路设计上,通常PRSNT1#默认接地,PRSNT2#_1、PRSNT2#_2默认接到一起,外部做上拉处理,之后接入到CPU等PCIe主控当中,PRSNT2信号一般应用于热插拔检测

 

REFCLK信号

我们知道PCIe总线作为一种串行总线,没有像并行总线中单独提供一根时钟信号,来供RX端进行解析TX端发送的数据。由于串行总线的特点是没有单独的时钟信号,为了让RX端能正确的接收数据,需要一个strobe 和一个时钟来锁存(保持)数据。但是,在高速串行接口上发送时钟并不能解决时钟和数据之间的偏斜问题。 为了解决这个问题,发送端按时钟时序串行化并传输数据,而接收端则利用PLL从数据流中提取时钟,即不单独进行时钟信号的传输。在这种方法中,接收端产生一个与接收数据流的数据速率(频率)同相的时钟。用恢复的时钟来锁存数据的电路也被称为 “时钟数据恢复电路”(CDR),SerDes电路的核心是时钟数据恢复(CDR)电路,即从输入数据流中分离出时钟和数据信号,消除传输过程中带来的抖动和失真,将数据解串后送入后续的电路,时钟数据恢复电路的性能决定了整个SerDes电路的性能,关于SerDes接口的内部简图如下所示。

  • CDR电路:CDR电路作为串行总线中的关键所在,是一种用于从串行数据流中提取时钟信号并恢复数据的关键电路。它通常用于高速串行通信系统中,例如PCIe、以太网、光纤通信等,以确保数据在发送和接收端之间的正确同步和解析。CDR电路通常包括一个锁相环(PLL)或类似的反馈控制电路。首先,会从串行数据流中提取到可能的时钟信号,将提取到的时钟信号和本地时钟信号进行比较,以确定它们之间的相位和频率差异。并根据比较结果调整本地时钟信号的相位和频率,以尽量与数据流的时钟保持同步。使用恢复的时钟信号对接收到的数据进行解析和恢复,以获得正确的数据。关于CDR电路的原理类似于PLL电路,本文不再赘述。需注意CDR电路常规设计上都是采用PLL的方式来实现,而PLL锁相环的带宽决定着输入数据中有多少抖动可以传输到恢复的时钟内。PLL带宽越宽传输到恢复时钟内的抖动就越多,从而会减少眼图中显示的抖动量,而较窄的PLL带宽则会使得时钟的抖动较小,从而在解析数据时,产生较多的CRC问题(例如,笔者遇到过CPU芯片内部的SerDes由于PLL带宽软件配置的较小,导致输出存在较多CRC的情况)。
  • REFCLK:如何去完成PCIe接口中的REFCLK时钟电路设计,需要根据接口所支持的不同PCIe速率进行设计。通常来讲,REFCLK的时钟频率为100MHz,差异点在于不同的PCIe速率所对应的参考时钟的抖动是不同的。PCIe协议中规定的参考时钟为HCSL电平,在Gen1~Gen4接口下要求收发端参考时钟精度在±300ppm以内,Gen5要求频率稳定性 ±100ppm,详细要求见下图。笔注:以PCIe3.0为例,要求收发端参考时钟频率稳定性在±300ppm以内、RMS抖动不超过1.0ps,而到PCIe5.0中,对于参考时钟的稳定性为±100ppm以内、RMS抖动不超过0.15ps。

 

参考时钟架构

PCIe协议中规定了3种参考时钟架构,用户可自由选择3种时钟架构中的任意架构进行电路设计,分别为Shared Refclk、Data Clocked Rx Architecture、Separate Refclk Architecture,通常关于PCIe接口上的参考时钟架构设计,常采用Shared Refclk的方式。关于这3种架构的介绍如下所示:

  • Shared Refclk:TX端和RX端均使用同一个参考时钟源。即使系统使用了带有扩频的参考时钟源,时钟抖动也只有-300~+2800ppm(在Gen5中该范围变为-100~+2600ppm),这样的设计,可以降低CDR的复杂程度,达到节约成本的目的。由于所有PCIe设备共享相同的参考时钟信号,这有助于确保数据在不同设备之间的同步传输,避免数据传输中的时序问题和数据丢失。其次,当PCIe链路处于L0s或者L1状态时,即使链路上没有数据流,RxCDR依然可以设计出保持锁定的状态,这样做的好处是,链路从L0s或L1状态恢复到L0状态的时间将会更短。

  • Data Clocked Rx Architecture:在这种架构中,接收器使用数据本身的边沿来提取时钟信号,而不是依赖于独立的时钟信号源。为了从数据信号中提取时钟信息,Data Clocked Rx Architecture通常使用一些专门的时钟提取算法。这些算法可以识别数据信号中的特定模式或边沿,并从中恢复出稳定和精确的时钟信号。常见的时钟提取算法包括差分信号比较、时钟边沿检测、时钟数据恢复等。 
  • Separate Refclk Architecture:在这种架构下,每个PCIe设备都有自己独立的参考时钟信号源。这些信号源可以是晶振、外部时钟发生器或其他类型的时钟源。每个设备都使用自己的参考时钟信号来同步数据传输和时序。同时根据有无SSC可进一步分为SRNS ( Separate Refclk with No SSC) 及SRIS(Separate Refclk with Independent SSC)。SRNS 允许 ±300 ppm (600ppm),而 SRIS 允许 ±2800 ppm (5600 ppm,其中SSC允许 5000ppm,TX/RX允许 600 ppm)。

    笔注:Data Clock 时钟方案仅适用于Gen2及Gen3,单lane单向最高速率8GT/s。

     

 

Retimer介绍

在某些主板设计中,尤其是具备较长链路走线的主板,这种信号质量水平是不可能的,可能需要额外的信号调节。此时就需要引入Retimer芯片用于延长 PCIe 信号的传输距离,以保证信号的完整性和稳定性。Retimer直接参与上游和下游方向的均衡协商,并允许上游和下游独立优化 它们各自的均衡设置。这样可以有效地将PCIe协议中允许的最大链路衰减翻倍。为了完成这一壮举,它使用一个时钟和数据恢复系统或者用来重置抖动容许少量的CDR并执行自适应均衡,这意味着它会基于通道的特征自动应用均衡。

  • Retimer芯片作用

Retimer的主要职责是补偿由于传输介质引起的信号损失和失真。它通过几种方式来实现。一种方法是在模拟域中工作,以电补偿信号损失。Retimer可以利用自适应均衡器(EQ)和决策反馈均衡器(DFE)来补偿信号损耗、噪声和串扰它还可以在发射器上提供预加重或去加重,以改善信号调理。

Retimer的第二个功能是时钟和数据恢复(CDR它恢复输入信号时钟并应用低通滤波器以减少高频噪声和抖动。然后,它使用恢复出来的时钟对输入的数据进行采样。

Retimer的最后一个功能是积极参与PCIe协议通信。Retimer是协议感知的,它们在Root ComplexPCIE Endpoint之间进行通信,以优化其输入和输出的信号。链路训练和状态状态机(LTSSM)指示Retimer如何通过PCIe协议与CPU或端点进行交互。这些任务中的每一个对于Retimer的整体功能都很重要,下图所示为Retimer的内部简图,包括了Rx和Tx均衡部分、CDR电路,以及其它辅助功能。其中Rx接收侧由CTLE+DFE组成均衡能力的电路,Tx发射侧由3阶的FIR实现均衡调节高速信号的功能,CDR 的功能是通过输入信号时钟恢复出来。

笔注:需注意Reimer芯片的使用场景,常见于各类高速串行总线,如HDMI、PCIe、USB 100GbE/40GbE/10GbE QSFP+以太网等。

 

  • Retimer芯片改善信号的方式

我们知道Retimer芯片改善信号的原理,主要是通过补偿链路损耗的方式来增强信号,常见的方式由EQ、CTLE、DFE等方式,通常EQ主要作用在信号的发送端,分为预加重和去加重两种方式,其中预加重的实现原理是在发送端对发送信号的高频分量进行补偿,通过增大信号跳变边沿后的第1个bit(跳变bit)的幅度来完成常见的预加重有3.5dB、6dB、9.5dB等。另外关于去加重的实现原理是减小非跳变bit的幅度,即保持信号上升沿和下降沿处的幅度不变,其他地方信号减弱从而得到类似于预加重的信号波形。常见的预加重有3.5dB、6dB、9.5dB等。
预加重或者去加重技术对于克服传输通道损耗、改善高速数字信号接收端信号质量的作用,但是当信号速率进一步提高或者传输距离更长时,仅仅在发送端已不能充分补偿传输通道带来的损耗,这时就需要在接收端同时使用均衡技术来进一步改善信号质量。所谓均衡,是在数字信号的接收端进行的一种补偿高频损耗的技术。常见的均衡技术有3种:CTLE、FFE、DFE等。CTLE是在接收端提供一个高通滤波器,这个高通滤波器可以对信号中的主要高频分量进行放大,这点和发送端的预加重技术带来的效果是类似的。CTLE和FFE都是线性均衡技术,而DFE则是非线性均衡技术。DFE技术是通过相邻比特的判决电平对当前比特的判决阈值进行修正,设计合理的DFE可以有效补偿ISI对信号造成的影响(关于DFE技术主要是以算法为主,均衡手段相对复杂)。
以Gen5为例,协议规定了CTLE均衡的能力支持从-5dB~-15dB,详细如下图所示:

以Gen5为例,协议规定了EQ的能力支持从-6dB~0dB,详细如下图所示:

笔注:在Gen2.0中,对于去加重只支持-3.5dB和-6dB两种调节值。

 

Linear driver介绍

对于改善信号,除了常见的Retimer以外,还有一种Linear driver的方式,线性驱动器会补偿传输介质中的高频损耗并恢复水平和垂直眼睛张开度以及收到的波形。实际上是信号路径中的一个无源元件,它不会产生频率相关的损耗,而是提供频率相关的增益。无论输出形状如何,在线性区域,输出与输入信号幅度图显示为一条直线。相比Retimer,Linear driver只是缺失了CDR电路,其余功能一致,如EQ、CTLE、DFE信号优化手段。下图所示为Redriver和Retimer的简图对比:

PCIe布线要求

随着PCIe总线作为高速串行总线,合理的PCB设计,可以避免很多信号质量问题,如串扰、反射等,通俗来讲,就是需要保证信号高速传输的稳定性。下图所示为不同PCIe标准下的数据传输速率以及编码方式等。对于具体的Layout设计,会在下篇文章“如何从SI的角度解析PCIe Gen5接口”中详细阐述。

 常见的Layout布线经验如下
  • 采用10°走线,避免玻纤效应,选择合适的板材,减少损耗。
  • PCIe规范要求85欧姆的差分走线阻抗,对内等长控制在5mil以内。
  • PCIe 规范要求在TX信号上放置交流耦合电容,电容下方做挖空处理。
  • 控制走线长度尽可能避免过孔对于过孔处,需要做阻抗匹配以及预留回流
  • Lane和Lane之间采用地孔进行隔离,同时保持3W或5H原则,以减少串扰或交叉耦合的影响。

PCIe总线带宽计算

在利用PCIe接口进行产品设计时,我们需要合理的选择PCIe接口速率和通道数,在进行PCIe总线的带宽计算时,通常涉及几个关键因素,包括总线的数据传输速率、每个数据通道的传输宽度和总线上可用的数据通道数量。以Gen3.0 X1为例,我们知道Gen3.0上,每条通道所支持的理论速率为8GT/s,但是由于编码等原因,故实际的有效传输速率是小于理论速率的,8GT/s除以编码方式(128b/130b)等于7.88Gbps。如果是x16通道则理论传输速率为126.08Gbps。为方便起见,一般谈论的PCIE带宽,采用GT/s为单位表示,也即PCIE总线上实际编码后发送的数据速率。关于不同数据通道以及接口标准下的带宽和数据计算如下图所示:

笔注:GT/s是指链路上传输的原始数据,而Gbps是指链路上传输的有效数据Gbps表示每秒传输1千兆个比特,GT/s代表每秒千兆传输

考资料:PCI EXPRESS SYSTEM ARCHITECTURE》以及TI官网。

2条评论

  1. 写得很好,收藏!大神可以帮我看一份图不,想知道PCIE X1 最少需要几根线,不需要热插拔、不需要唤醒和休眠。可以联系我解答一下吗?
    debuer@qq.com

    1. 对于不需要热插拔、不需要唤醒和休眠功能的PCIe X1接口,最少需要4条差分线来实现基本功能。2条用于差分信号线数据传输,2条差分线用于控制信号。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注