【鼎阳硬件智库原创︱调试经验 】PCIe接口失效问题分析实例
发布日期:2015-08-17 14:19

引 言

PCIe是一个在很多领域中都有着广泛且重要应用的接口,经过十几年的发展,PCIe接口已经从1.0发展到现在的3.04.0也已即将开始应用。PCIe技术的物理层基于串行SerDes技术,因此用极少的物理连线就可以实现高速的数据传输。笔者在前段时间碰上了两个PCIe接口失效的问题,第一个经过分析是PCIeESD防护没有做好导致通讯中断,第二个是电源负载过大导致PCIe供电异常,FPGA PCIe IPCORE逻辑时钟失锁。现把这两个问题的定位和解决过程与读者一同分享。

 1.系统概述及问题描述

现简略的介绍该系统,其简略框图如下:

 

该系统由两个模块组成,前端模块可插拔,在插入后会传输信号给FPGA,信号经过前端接收,A/D采样后进入FPGA做信号处理,然后FPGA把处理过的信号通过PCIe接口传送给工控机进行后处理及显示。工控机也会通过PCIe接口控制FPGA的工作状态。前端的模块是可插拔的。

第一个问题是该机器在做测试时,发现在换模块时会偶发的出现工控机与FPGA的通讯异常的现象,该现象出现的频率很低,测试组的同事反馈在做测试时经常会有换模块的操作,但该现象基本上几天才出现一次,虽然该现象概率低,但是问题影响甚为重大,必须攻破。

第二个问题则是系统不接交流电而使用电池运行在某种模式下,在达到10%低电量时,会必发的出现PCIe通讯异常。

 2.第一个问题定位及解决过程

该问题的定位开始是没有头绪的,因为问题出现后,PCIe的通讯已经中断,此时想通过工控机去读FPGA的调试相关的寄存器已经没有用,即此时读上来的值都是无效的。但是还是得先逐步的排除问题。

第一步:是否是软件的问题

通过阅读问题发生时的软件日志,发现在问题发生时,软件没有收到中断请求,这说明在插拔模块的过程中,PCIe通讯已经失效,模块插入/拔出的中断已经无法发出(在模块插入或者拔出的过程FPGA会检测,如果发生该事件FPGA会通过PCIe发出中断给工控机)。且在问题发生时软件日志的记录上软件没有异常之处,因此排除是软件的问题。 

第二步:是否是FPGA逻辑的问题

通过在FPGA插入在线逻辑分析仪,把PCIe的运转状态机LTSSM加入到在线逻辑分析仪,在发生此问题时触发观测LTSSM状态机。在测试时,复现该问题后发现LTSSM有重新回到复位状态的动作,因此怀疑此时可能是电源或者是PCIe接口复位信号的问题,因为在正常情况下,如果系统复位信号没有动作,且上位机没有重新发送PCIe链路训练命令的话,LTSSM状态机是不会被复位的。因此该线索把该问题的原因导向到复位信号或电源上。

第三步:监测PCIe接口的复位信号

PCIe接口的电路如下图所示:

 

由上图可以看到,PCIe接口由数据接收差分管脚PCIE_RX_PPCIE_RX_N,数据发送差分管脚PCIE_TX_PPCIE_TX_N,以及SMBUS(SMBCLK, SMBDAT)JTAG管脚,参考时钟PCIE_REFCLK_PPCIE_REFCLK_N以及复位管脚PCIE_PERST_N组成。其中JTAG管脚和SMBUS可以不连,参考时钟也可以选择用本地时钟或者选用接插件过来的PCIE_REFCLK_PPCIE_REFCLK_N。前面提到,由于重点怀疑复位信号有所动作,因此对该复位信号用示波器进行监测。在若干次实验以后,发现在某次插入模块后失效时,捕捉到了PCIE复位信号PCIE_PERST_N有一个持续时间约为2.3us的低电平脉冲,正是该脉冲信号让FPGAPCIE IPCORE复位,导致PCIE通讯中断的原因。该脉冲信号如下图所示:

 

该干扰脉冲从何处而来?经过实验发现是静电导入。我们在插拔模块时,由于模块本身外壳有部分金属,因此静电从外壳金属进来后经过某些路径耦合到PCIe复位线上,引发了该问题。

问题解决思路:找到问题来源点,解决方法就多种多样了。在此笔者推荐三种方法一起用:1. PCIE_PERST_N复位信号加滤波;2. 做好整机/模块的ESD保护;3. FPGAPCIE_PERST_N信号做判断后再引入FPGAPCIe IPCORE复位端,即对PCIE_PERST_N信号做低脉冲时间计数,大于规定的ms级低电平才判断为复位,否则则判断为干扰信号,FPGA控制逻辑不去复位PCIE IPCORE

3.第二个问题定位及解决过程

该问题的定位比第一个问题定位简单。因为该问题是在带电池低电量时必发,在插上交流电时则没有该现象,因此可以排除软件和FPGA逻辑问题,因此把问题聚焦在电源上。通过示波器实地测试,发现在电池低电量且工作于该模式下,电流有突然增大的现象,导致此时电压跌落,引发FPGA逻辑时钟失锁,由于FPGA逻辑的设计是使用逻辑系统时钟锁定信号作为PCIe IPCORE部分逻辑的复位信号,因此此时会导致FPGAPCIe IPCORE被复位,进而产生PCIe通讯失效的现象。现在来分析一下整个过程,该时刻波形记录如下图所示:

 

如上图所示,黄色的波形为系统电流波形,使用电流探头测量,绿色和青色波形为模块某部分调压波形,非FPGA PCIe供电电压,在此处可以认为跟笔者的分析无关。比较遗憾的是,这个截图中没有记录下FPGA的供电电压,有记录的图笔者没有找到。但是该图可以很明确的分析此时系统电流变化的过程:在某种工作模式下,电流突然急剧上升,此时会造成FPGA供电电压发生变化,进而导致FPGA逻辑时钟失锁,进而造成FPGA逻辑复位,由于此时FPGA逻辑处于复位状态,寄存器不再翻转,因而系统供电电流突然急剧下降,此时可以对应到上图的电流急剧下跌,由于电流下跌,负载减轻导致FPGA工作电压回复正常,时钟重新锁定,FPGA逻辑复位完成,重新工作,因此电流又重新回复到比之前模式切换时的功耗略少的状态。整个过程是一个链式反应,非常清晰的被记录在示波器上。

问题解决思路:改善电源模块供电设计,增加裕量。

4.总 结

对于PCIe接口的稳定性设计来说,电源和时钟是关键,在保证了电源和时钟的稳定性以后,还需要注意对关键敏感信号的保护,在有外部接插,触碰动作介入系统的情况下,注意对PCIe接口的敏感信号,如复位信号的保护是非常有必要的。

 鼎阳硬件智库专家介绍 

樊继明,硬件设计与测试从业6,专长ASIC/FPGA逻辑设计,高速接口(LVDS, 高速SerDes)逻辑设计与验证,2009年毕业于华南理工大学,工学硕士。曾在通讯行业从事过3年的ASIC设计,主要涉及到光传送网100G OTN DSP物理层芯片逻辑设计,现在某医疗设备行业从事FPGA逻辑设计,主要聚焦于高速接口以及数字波束合成方面的设计。

关于鼎阳

鼎阳科技(SIGLENT)是一家专注于通用电子测试测量仪器及相关解决方案的公司。

2005推出第一款数字示波器产品至今,10年来鼎阳科技一直是全球发展速度最快的数字示波器制造商。历经多年发展,鼎阳产品已扩展到数字示波器、手持示波表、函数/任意波形发生器、频谱分析仪、台式万用表、直流电源等通用测试测量仪器产品。2007年,鼎阳与高端示波器领导者美国力科建立了全球战略合作伙伴关系。2011年,鼎阳发展成为中国销量领先的数字示波器制造商。2014年,鼎阳发布了中国首款智能示波器SDS3000系列,引领“人手一台”型实验室使用示波器由功能示波器向智能示波器过渡的趋势。目前,鼎阳已经在美国克利夫兰和德国汉堡成立分公司,产品远销全球70多个国家,SIGLENT正逐步成为全球知名的测试测量仪器品牌。

关于鼎阳硬件设计与测试智库

鼎阳硬件设计与测试智库(简称鼎阳硬件智库)由深圳市鼎阳科技有限公司领衔创办,是中国第一家“智力众筹”模式的硬件智库。

 鼎阳硬件智库顺时顺势,倡导“连接-分享-协作-创造”的理念,高举志愿者服务的大旗,相信互联网是“爱”的大本营,相信人们都有发自内心分享的愿望。

鼎阳硬件智库选择硬件领域最普遍的七类问题:电源,时钟,DDR,低速总线,高速总线,EMC,测试测量进行聚焦。寻找“最针尖”的问题进行研讨,针对“最针尖”的问题组织专家答疑,将硬件大师积累的宝贵知识和经验变成公众财富,惠及更多硬件人。

鼎阳硬件智库的运作载体包括“线上”的微信公众号分享,微信群,网站,网络社区论坛,博客,邮件群等多种互联网工具和“线下”的专家论坛和专家把脉。“线上”的分享坚持原创,坚持干货,保持专注和深耕。“线下”专家论坛邀请硬件相关的一线实战派专家分享“最干货”的硬件设计与测试知识与经验,面对面相互研讨;“线下”的专家把脉,通过大数据连接,促使具体问题和最熟悉这个具体问题的专家“精准匹配”,远程问诊和现场解决问题相结合。

浏览量:1384
来 源:仪器仪表商情网
编辑:Stanford
声明:凡本网注明"  来源:仪商网"的所有作品,版权均属于仪商网,未经本网授权不得转载、摘编使用。
经本网授权使用,并注明"来源:仪商网"。违反上述声明者,本网将追究其相关法律责任。
本网转载并注明自其它来源的作品,归原版权所有人所有。目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。如有作品的内容、版权以及其它问题的,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
本网转载自其它媒体或授权刊载,如有作品内容、版权以及其它问题的,请联系我们。相关合作、投稿、转载授权等事宜,请联系本网。
QQ:2268148259、3050252122。
展开全文