本文转自Agilent(安捷伦)官方网站,原文作者李凯。本文简要地介绍了PCI-e 3.0的知识,并详细描述了PCI-e 3.0的测试方法,对于从事高速数字电路设计的读者来说,是一篇很有参考价值的文章。
1. 前言
PCI Express(简称PCI-e)总线是PCI总线的串行版本,其采用多对高速串行的差分信号进行高速传输,每对差分线上的信号速率可以是1代的2.5Gbps、2代的5Gbps以及现在正逐渐开始应用的3代8Gbps。
PCI-e标准是由PCI-SIG组织制定,自从推出以来,1代和2代标准已经在PC和Server上逐渐普及,用于支持高速显卡以及其它接口卡对于高速数据传输的要求。出于支持更高总线数据吞吐率的目的,PCI-SIG组织在2010年制定了PCI-e 3.0,即PCI-e 3代的规范。目前,PCI-e 3.0已经开始出现在一些高端的Server上,而在普通PC上的应用也是指日可待。
那么PCI-e 3.0总线究竟有什么特点?对于其测试有什么特殊的地方呢?我们这里就来探讨一下。
2. PCI-e 3.0简介
2.1 信号速率的变化
首先我们看一下制定PCI-e 3代规范的目的,其目的主要是要在现有的FR4板材和接插件的基础上提供比PCI-e 2代高一倍的有效数据传输速率,同时保持和原有1代、2代设备的兼容。别看这是个简单的目的,但实现起来可不容易。
我们知道,PCI-e 2代在每对差分线上的数据传输速率是5Gbps,相对于1代提高了1倍;而3代要相对于2代把速率也提高一倍,理所当然的是把数据传输速率提高到10Gbps。但是就是这个10Gbps把PCI-SIG给难住了,因为PC和Server上出于成本的考虑,普遍使用便宜的FR4的PCB板材以及廉价的接插件,无论采用什么技术都很难保证10Gbps的信号还能在原来的信号路径上可靠地传输很远的距离(典型距离是15~30cm)。因此PCI-SIG最终决定把PCI-e 3代的数据传输速率定在8Gbps。但是8Gbps比着2代的5Gbps并没有高一倍,所以PCI-SIG决定在3代标准中把在1代和2代中使用的8b/10b编码去掉。我们知道,在PCI-e 1代和2代中为了保证数据的传输密度、直流平衡以及内嵌时钟的目的,每8bit数据会编码成10bit数据传输。因此,5Gbps的实际有效数据传输速率是5Gbps×8b/10b=4Gbps。这样,如果在PCI-e 3代中不使用8b/10b编码,其有效数据传输速率就能比着 2代的4Gbps提高1倍。但是这样问题又来了,数据如果不经编码传输很难保证数据传输密度和直流平衡,接收端的时钟恢复电路也很容易失锁,于是PCI-e 3代里面采用了扰码的方法,即数据传输前先和一个多项式进行异或,这样传输链路上的数据就看起来比较有随机性,到了接收端再用相同的多项式把数据恢复出来。通过上述方法,PCI-e 3代可以用8Gbps的传输速率实现比2代的5Gbps高1倍的数据传输速率。
2.2 发送端的变化
但是问题远没有结束,即使数据速率只有8Gbps,要在原有的廉价PCB和接插件上实现可靠传输也还要解决一些新的问题。其中最大的问题是信号的损耗,FR4板材对信号高频成分有很大衰减,而信号速率越高,其高频成分越多,所以衰减也就更厉害。下图是不同速率的信号经过10英寸的FR4板材的PCB传输以后信号的眼图,我们可以看到8Gbps的信号在接收端基本上看不到眼图了,更不要说进行有效的数据接收。
为了解决这个问题,在PCI-e的1代和2代中使用了去加重(De-emphasis)技术,即信号的发射端(TX)在发送信号时对跳变bit(代表信号中的高频成分)加大幅度发送,这样可以部分补偿一下传输线路对高频成分的衰减,从而得到比较好的眼图。
PCI-e 1代中采用了-3.5db的去加重,PCI-e 2代中采用了-3.5db和-6db的去加重, 而对于3代来说,由于信号速率更高,需要采用更加复杂的2阶去加重技术。即除了跳变bit增大幅度发送(De-emphasis)以外,在跳变bit的前1个bit也要增大幅度发送,这个增大的幅度通常叫做Preshoot。
为了应对复杂的链路环境,PCI-e 3代中规定了共11种不同的Preshoot和De-emphasis的组合(Preset),实际应用中Tx和Rx端可以在Link Training阶段协商出一个最优的Preset值。
2.3 接收端的变化
那做了这些工作就够了吗?经过实验发现,仅仅在发送端对信号高频进行补偿还是不够,如是PCI-e 3代标准中又规定在接收端(RX端)还要对信号做均衡(Equalization)。所谓均衡,就是在RX端的接收芯片内部增加一个均衡电路,这个均衡电路可以抬高接收到的信号中的高频分量,从而对线路的损耗进行进一步的补偿。均衡电路的实现难度较大,以前主要用在通信设备的背板或长电缆传输的场合,现在也逐渐开始在计算机领域应用,比如USB3.0中也采用了均衡技术。下图是PCI-e 3.0里对均衡器的频响特性的要求。我们可以看到均衡器的强弱也有很多档可选,在Link Training阶段TX和RX端会协商出一个最佳的组合。
我们看到,经过种种努力,PCI-e 3.0总算初步实现了其初衷,即在现有的FR4板材和接插件的基础上提供比PCI-e 2代高一倍的有效数据传输速率。但我们同时也看到,PCI-e 3代的芯片会变得更加复杂,系统设计的难度也也更大。如何保证PCI-e 3代总线工作的可靠性和很好的兼容性,就成为设计和测试人员面临的严峻挑战。
3. PCI-e 3.0的测试
首先要说明的一点是,由于PCI-e 3代目前只颁布了Base的规范(即芯片规范),但CEM规范(即主板和插卡的规范)和测试规范还没有正式发布,所以下面介绍的方法是基于目前的通用做法,以后随着规范的正式发布,具体测试方法可能还有变化。
3.1 发送端的信号质量测试
对于发送端的测试,主要是用宽带示波器捕获其发出的信号并验证其信号质量满足规范要求。按照目前Base规范中的要求,PCI-e 3.0的测试需要至少12GHz带宽的示波器,并配合上相应的测试夹具和测试软件。
由于PCI-e 3.0的信号经过传输以后信号幅度都已经衰减得很小(典型值是100mV左右),为了保证足够的测量精度,除了示波器的带宽要足够以外,还需要示波器有很低的底噪声才能保证测量的准确性和测量重复性。Agilent公司的90000X系列示波器除了能够提供最高到32GHz的硬件带宽以外,还具有业内最低的底噪声指标以及高达2G的存储深度,可以充分满足PCI-e 3代测试的要求,下面是Agilent的90000X示波器的一些主要指标。
测试中首先使用PCI-SIG提供的PCI-e 3的夹具把被测信号引出(PCI-e 3代的夹具和PCI-e 2代一样分为CBB板和CLB板,CBB板用于插卡的测试,CLB板用于主板的测试),然后通过测试夹具上的切换开关控制DUT输出PCI-e 3代的一致性测试码型。需要注意的一点是由于PCI-e 3代信号如前所述共有11种Preset值,测试过程中应明确当前测试的是哪一种Preset值,做信号质量测试常用的有Preset7、Preset8、Preset1、Preset0。下图是PCI-e 3代的CBB板及一致性测试码型。
另外,PCI-e 3代测试很重要的一点是要做信号的的Embed,Embed即是在测试过程中加入芯片封装对信号的影响,这个芯片封装的模型是PCI-SIG以S参数文件的形式提供的,测试过程中需要示波器能把这个S参数文件的影响加到被测波形上。同时,测试过程中示波器是用2个通道分别连接信号的正负端,要得到最后的差分波形需要示波器对2个通道的波形做相减运算。如果波形相减和S参数嵌入的工作都由示波器软件计算,会大大影响测试速度。Agilent公司的90000A/90000X示波器内部都有硬件的通道相减及S参数运算功能,可以大大提高测试的速度和效率。
对测试数据做分析得方法有2种:一种是使用PCI-SIG提供的Sigtest软件做手动分析,一种是使用Agilent公司提供的N5393C PCI-e 3.0自动一致性测试。Sigtest软件是的算法由PCI-SIG提供,但是需要用户手动捕获数据进行后分析。Sigtest可以进行信号的眼图、模板、抖动的测试。下图是用Sigtest的测试结果。
由于Sigtest需要用户手动捕获数据,对于不熟练的测试人员容易可能由于设置不对造成测试结果的不一致,而且其测试项目有限,没有覆盖全部的信号要求。所以针对PCI-e3的测试Agilent还提供了N5393C的自动化测试软件。这个软件以图形化的界面指导用户完成设置、 连接和测试过程,除了提供Swing、Preset、Common Mode等更多测试项目以外,还可以自动进行示波器测量参数设置以及自动生成报告,提高了测试的效率和可重复性。除此以外,这个软件在测试过程中还会对被测件发出的码型和速率进行检查,以确认测试使用的是规范要求的正确码型。下图是N5393C软件的设置和生成的测试报告。
以下是PCI-e 3.0信号测试推荐使用的仪器:
- DSA91304A/DSAX91604A高带宽实时示波器,用于高速PCI-e 3.0的信号测试
- N5393C PCI-e3测试软件: 快速进行PCI-e 3.0的信号一致性测试
- N5465A去嵌入软件:用于封装和链路参数的嵌入和去嵌入
- CLB3/CBB3 PCI-e 3.0测试夹具,用于连接被测设备,从PCI-SIG购买
- 其它:SMP-SMA电缆、SMP负载等
3.2 接收端的接收容限测试
PCI-e 1.0和2.0的时代,接收端测试不是必须的,通常只要保证发送端的信号质量基本就能保证系统的正常工作。但是对于PCI-e 3.0来说,由于速率更高,发送端发出的信号经过长线传输后信号质量总是不会太好,所以接收端使用了复杂的均衡技术来提升接收端的接收能力。由于接收端更加复杂而且其均衡的有效性会显著影响链路传输的可靠性,因此在PCI-e 3.0时代,接收端的测试变成了必测的项目。
所谓接收端测试,就是要验证接收端对于恶劣信号的容忍能力。这就涉及到2个问题,一个是这个恶劣信号怎么定义,另一个是怎么判断被测系统能够容忍这样的恶劣信号。
首先来看一下这个恶劣信号的定义,这不是一个随便的差信号就可以,这个信号的恶劣程度有精确定义才能保证测量的重复性。这个恶劣信号通常叫做Stress Eye,即压力眼图,实际上是借鉴了10G以太网的叫法。这个Stress Eye实际上是用高性能的误码仪先产生一个纯净的带预加重和Preshoot的8Gbps的信号,然后在这个信号上叠加上精确控制的随机抖动(RJ)、周期抖动(SJ)、差模和共模噪声以及码间干扰(ISI)。为了确定每个成分的大小都符合规范的要求,所以测试之前需要先用示波器对测试信号进行校准,确定产生的是规范要求的Stress Eye。下图产生Stress Eye和信号校准的一个原理图。
另一个问题是如何判断被测系统能够容忍这样的恶劣信号。这就需要被测系统工作在环回模式,即把其从RX端收到的数据再通过TX端发送出来送回误码仪,误码仪通过比较误码来判断数据是否被正确接收,测试中要求误码率小于1E-12。下图是用Agilent的高性能串行误码仪N4903B和N4916B预加重模块进行PCI-e 3.0接收测试一个示意图。实际测试中根据实际情况还需要增加一些耦合器、转接头、测试电缆等。
这个测试对于激励源也即码型发生器的要求很高。首先其要能产生高质量的PCI-e 3.0的8Gbps的数据流,其固有抖动要非常小才不会影响正常的抖动容限测试;其次其要能在数据流上调制上幅度、频率精确可控的抖动分量并能够进行误码检测。Agilent的N4903B是高性能的串行误码仪,其单路可以产生12.5Gbps的高速数据流,信号20%~80%上升时间<20ps,固有抖动只有9ps(p-p),信号的幅度在50mV~1.8V范围内连续可调,同时其内部集成时钟恢复电路,信号接收灵敏度小至50mV,非常适合PCI-e 3.0接收测试这种速率高同时对信号质量又有很好要求的场合。N4903B还可以通过后续升级支持最高28.4Gbps的高速串行数据,可以充分兼顾未来更高速率的应用。
除此以外,PCI-e 3.0的接收测试还需要产生带Preshoot和De-emphasis的信号,这实际上是一个2阶的De-emphasis。Agilent的N4916B是高性能的De-emphasis模块,其可以产生多达4阶、最高幅度到12db的De-emphasis,可以充分满足PCI-e 3.0的接收测试以及未来更高性能总线的要求。
以下是PCI-e 3.0接收测试推荐的主要设备:
- N4903B 12.5Gbps高性能误码分析仪,用于产生带抖动的PCI-e 3.0信号并检测环回信号误码率
- N4916B预加重模块, 用于产生测试需要的测试需要的带Preshoot和De-emphasis的信号
- CLB3/CBB3 PCI-e 3.0测试夹具,用于连接被测设备,从PCI-SIG购买
- DSA91304A/DSAX91604A高带宽实时示波器,用于测试前校准N4903B产生的信号
- 其它:测试软件、测试电缆、耦合器、转接头等
3.3 PCI-e 3.0协议的测试
完成信号质量的测试仅仅是保证了PCI-e物理层的可靠工作,整个系统的可靠工作还离不开上层协议的支持。由于PCI-e 3.0是全新的标准,所以为了帮助用户更进一步分析和定位由于上层协议造成的问题,Agilent还提供了全套的PCI-e 3.0协议测试方案,方案中包括了协议分析仪、探头以及训练器。
下图是PCI-e 3.0协议分析仪U4301A,它是一块采用了Agilent AXIe架构的插卡,可以插在AXIe的机箱里,通过探头来捕获高速的PCI-e 3.0信号,并通过外部PC控制显示协议分析的结果。
AXIe是Agilent最新推出的高速模块化仪器的架构,除了能给高性能的模块提供稳定可靠的机箱环境以外,还提供了背板的高速数据交换能力,主要用于需要大量数据处理的高性能板卡。除了PCI-e 3.0的协议分析仪以外,Agilent在这个平台上还推出了业内最高性能的U4154A高速逻辑分析仪模块(可以用于DDR3的协议测试,支持高达4Gb/s的数据速率)、U4998A高速HDMI协议分析仪(支持HDMI1.4的测试)、M8190A高性能任意波发生器(12G/s采样率@12位分辨率或8G/s采样率@14位分辨率)等,因此用户在这个统一的平台上可以完成未来的很多高速总线的测试任务。1块U4301A插卡可以支持到X8双向的PCI-e 3.0/PCI-e2.0/PCI-e1.0的协议测试,2块卡可以支持X16的测试并提供搞到8GB的存储深度。为了支持复杂问题的分析和定位,U4301A还支持多达4级的触发序列并预先定了多种错误触发条件,可以帮助用户快速发现总线上的错误。
要针对高速的PCI-e 3.0信号做正确的协议分析,可靠的探头连接必不可少。由于PCI-e 3.0的信号经过PCB传输后信号质量恶化很大,因此PCI-e 3.0的接收芯片内部有均衡电路来保证信号的可靠接收。而对于协议分析仪的探头来说也存在同样的问题,即如果不做均衡可能就无法可靠捕获总线上的信号。因此针对PCI-e 3.0的协议测试,Agilent还提供了带均衡功能的探头,以下分别是针对计算机应用和嵌入式应用提供的2种探头。
很多时候仅仅被动地做总线上的协议捕获和分析并不能全面验证系统在各种未知条件下可能出现的问题,因为实际的测试环境能够模拟出来的条件都是有限的。为了进行更全面的测试,Agilent还提供了PCI-e 3.0的协议训练器U4305A。所谓训练器,就是可以人为设定要发送的PCI-e数据包的内容来主动和被测件进行协议交互以更全面验证系统功能的仪器。U4305A设计成一个PCI-e 3.0的插卡类型,通过USB接口用外部PC进行控制,可以直接插在主板的PCI-e插槽上进行主板测试,也可以通过测试背板进行PCI-e插卡的测试。U4305A还集成了LTSSM的自动测试功能,可以快速发现系统在链路协商中的问题。下图是U4305A及做LTSSM测试的界面。
4. 总结
综上所述,PCI-e 3.0是新一代的高速总线,采用了很多和前一代完全不一样的技术来克服高速数据传输的信号质量问题,也带来很多全新的测试挑战。Agilent作为PCI-SIG的董事会成员之一,一直积极参与到PCI-e 3.0的规范制定和测试方法的实施中,并提供了覆盖发送信号质量测试、接收容限测试、协议分析、训练器等全套的测试方案。