一文看懂PCIe 3.0及信号完整性测试方法(转)
分享到:
众所周知,PCIe标准是一种高速串行计算机扩展总线标准,它在通信领域能提供很多的支持。PCIe标准自从推出以来,1代和2代标准已经在PC和Server上逐渐普及,用于满足高速显卡、高速存储设备对于高速数据传输的要求。出于支持更高总线数据吞吐率的目的,PCI-SIG组织在2010年制定了PCIe 3.0,即PCIe 3代的规范,数据速率达到8Gbps。
制定PCI-e 3代规范的目的主要是要在现有的廉价的FR4板材和接插件的基础上提供比PCI-e 2代高一倍的有效数据传输速率,同时保持和原有1代、2代设备的兼容。别看这是个简单的目的,但实现起来可不容易。
如何将数据传输速率提高一倍?
PCI-E 2代在每对差分线上的数据传输速率是5Gbps,相对于1代数据速率的两倍;而PCI-E 3代要相对于2代把速率也提高一倍,理所当然的是把数据传输速率提高到10Gbps。
但是就是这个10Gbps带来了很大的问题,因为PC和Server上出于成本的考虑,普遍使用便宜的FR4的PCB板材以及廉价的接插件,如果不更换板材和接插件,很难保证10Gbps的信号还能在原来的信号路径上可靠地传输很远的距离(典型距离是15~30cm)。因此PCI-SIG最终决定把PCI-E 3代的数据传输速率定在8Gbps。但是8Gbps相比2代的5Gbps并没有高一倍,所以PCI-E协会决定在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倍的数据传输速率。实际应用中,PCI-E 3代的总线上也仍然有数据编码,不过采用的是128b/130b的编码,编码效率很高,由此损失的总线有效带宽比8b/10b编码小多了。
PCI-E 3.0 发送及接收端的变化
但是问题远没有结束,即使数据速率只有8Gbps,要在原有的廉价PCB和接插件上实现可靠传输也还要解决一些新的问题。其中最大的问题是信号的损耗,FR4板材对信号高频成分有很大衰减,而信号速率越高,其高频成分越多,所以衰减也就更厉害。图1是不同速率的信号经过10英寸的FR4板材的PCB传输以后信号的眼图,我们可以看到,8Gbps的信号在接收端基本上看不到眼图了,更不要说进行有效的数据接收。
图1 不同速率信号经过10英寸的FR4板材的PCB传输以后信号的眼图
发送端的变化
为了解决这个问题,在PCI-E的1代和2代中使用了去加重(De-emphasis)技术,即信号的发射端(TX)在发送信号时对跳变bit(代表信号中的高频成分)加大幅度发送,这样可以部分补偿一下传输线路对高频成分的衰减,从而得到比较好的眼图。PCI-E 1代中采用了-3.5db的去加重,PCI-E 2代中采用了-3.5db和-6db的去加重。而对于3代来说,由于信号速率更高,需要采用更加复杂的去加重技术,因此除了跳变bit比非跳变bit幅度增大发送以外,在跳变bit的前1个bit也要增大幅度发送,这个增大的幅度通常叫做Preshoot。图2是PCI-E 3代中采用的预加重技术对波形的影响的例子(参考资料:PCI Express® Base Specification 3.0 )。
图2 PCI-e 3.0 预加重技术对信号波形的影响
为了应对复杂的链路环境,PCI-E3代中规定了共11种不同的Preshoot和De-emphasis的组合,每种组合叫做一个Preset,实际应用中Tx和Rx端可以在Link Training阶段根据接收端收到的信号质量协商出一个最优的Preset值。下图是11种Preset的组合(参考资料:PCI Express® Base Specification 3.0)。比如P4代表没有任何预加重,P7代表最厉害的预加重。
PCI-E 3.0 发送端信号质量测试
对于发送端的测试,主要是用宽带示波器捕获其发出的信号并验证其信号质量满足规范要求。按照目前规范中的要求,PCI-E 3.0的一致性测试需要至少13GHz带宽的示波器,并配合上相应的测试夹具和测试软件。之所以PCI-E 3.0测试需要的示波器带宽相对于PCI-E 2.0来说变化不大,是因为信号的上升时间基本没变,不过如果是出于调试的目的,一般建议最好使用16GHz或以上带宽的示波器进行测试。
由于PCI-E 3代的信号经过传输以后信号幅度都已经衰减得很小(典型值是100mV左右),为了保证足够的测量精度,除了示波器的带宽要足够以外,还需要示波器有很低的底噪声才能保证测量的准确性和测量重复性。比如Keysight公司的高端的V或者Z系列示波器都可以用于PCI-E 3.0这样的高速信号的测试中。以V系列示波器来说,其带宽选择可从8GHz~33GHz,最高采样率80G/s,具有业内最低的底噪声和本底抖动。同时V系列示波器还可以选配高达20G/s的数字通道用于DDR3/4等总线的调试,或者选配高达160bit长度、12.5Gbps数据速率的硬件串行触发及误码检测功能,这是市面上唯一能对PCIE3.0 的128b/130b编码数据进行硬件触发和调试的示波器。
图3 PCI-E 3.0 发送端信号质量测试方法
在PCIE3.0的测试中,首先使用PCI-E协会提供的PCI-E 3代的夹具把被测信号引出(PCI-E3代的夹具和PCI-E 2代一样分为CBB板和CLB板,CBB板用于插卡的测试,CLB板用于主板的测试),然后通过测试夹具上的切换开关控制DUT输出PCI-E 3代的一致性测试码型。在切换板上的按键开关时,正常的PCI-E 3代的被测件依次会输出2.5Gbps、5Gbps -3dB、5Gbps -6dB、8Gbps P0、8Gbps P1、8Gbps P2、8Gbps P3、8Gbps P4、8Gbps P5、8Gbps P6、8Gbps P7、8Gbps P8、8Gbps P9、8Gbps P10的码型。需要注意的一点是,由于PCI-E 3代信号如前所述共有11种Preset值,测试过程中应明确当前测试的是哪一种Preset值,做信号质量测试常用的有Preset7、Preset8、Preset1、Preset0等。下图是PCI-E 3代的CBB板及一致性测试码型。
另外,由于PCI-E 3代的标准里,在接收芯片侧使用了信号均衡技术,而且均衡器对于最终信号质量做了改善调整。为了把传输通道对信号的恶化以及均衡器对信号的改善效果都考虑进去,PCI-E 3代的测试里很重要的一点是其发送端眼图、抖动等测试的参考点是在接收端。也就是说,即使我们是在发送端进行测试,在进行眼图、抖动等测试时也不是直接测试发送端的波形,而是需要把传输通道对信号的恶化的影响以及均衡器对信号的改善影响都考虑进去。图4比较直观地显示出了在不同位置信号质量的情况。
图4 PCI-e 3.0信号在传输过程中的信号质量的变化