Xilinx 7系列GTX具体的调试步骤

随着需求的多样化,fpga的功能也进一步的增强。其中,高速收发器从本来是只有高端fpga才有的模块,已经变为相对普及的甚至必备的功能模块。而10g的线速率也从多年前的少数fpga支持,变为目前的主流线速率。
由于fpga的最大特点就是灵活,所以fpga的高速收发器也拥有非常繁琐的配置选项,目的就是为了灵活地支持各种传输协议。之所以称之为繁琐,就是灵活性带来的弊端,即想要理清楚诸多的功能,就需要非常多时间在高速收发器上。
不过对于大部分的用户来说,需要使用高速收发器的接口通常是相对固定的,这样功能也就相对固定。这样就没有必要理解高速收发器全部的功能,只要理解需要使用的配置含义即可。这样可以快速进行尝试/测试,在尝试/测试过程中结合文档进行深入理解。这样比强行读完文档再动手实践,学习效果上有可能更好。所以xilinx的高速收发器中默认就带了一些常用接口的配置,便于用户的学习/使用。
xilinx 7系列fpga芯片配置四种高速收发器,按照支持的最高线速率从低到高排列分别是gtp,gtx,gth,gtz。
gtp由于结构问题,使用起来灵活性较差,同时支持的最高线速率也只有6.x个g。gtz属于7系列中最高端的高速收发器,集成gtz的fpga很少,同时也是用了多die技术,物理上和fpga主体是两个部分。对这两种gt,本文不做更多的介绍。
与gtx相比,gth整体结构几乎一样,只是在个别细节有更多的配置或者更强大的性能。考虑到文档都是同一篇文档,所以本文以gtx为例。本文所有内容,除非特别注明,都同时适用于gtx和gth。
对于高速收发器gtx来说,虽然可以通过ip中的默认配置来进行初步的学习,而且有一定基础之后,可以手动配置gtx参数。但是如果不充分理解gtx的各个功能,最常见的被卡住的地方,就是不能/不知道如何进行正确的问题定位。所以文本的主题就是介绍一些常用的调试手段和步骤,便于使用者初步定位问题。即使无法定位,将这些调试工作详细记录并提交给fae,也会有很大的帮助。
这里需要说明,gtx的问题通常都不简单,调试工作更是繁琐。而且很可能无功而返,最终还是要请fae/技术支持来帮忙解决。但是这不代表可以将所有的工作都推给fae/技术支持。进行一些初步的调试,并将结果反馈给fae/技术支持,可以让专家更快的理解问题的现象并给出进一步的建议,而无需从最基础的工作开始一步一步检查。
第一步,在配置好的gtx的ip基础上,生成gtx的example design,并做仿真。
首先,vivado工具的一个优点就是几乎所有ip都会提供一个基于ip配置的example design,对于gtx这样复杂的ip,这个example design是一个完成的工程,提供了多种用途,是一个非常好用的学习/调试工具。第一步先使用这个工程进行仿真,这样便于理解gtx的具体操作,并与实际结果做对比。
这里强调一下,并不是针对gtx的,对于任何fpga的设计,都推荐尽量进行充分的仿真。
第二步,直接使用gtx的example design作为工程,抓一下rx fsm reset done和rx status状态机。如果有条件,可以使用8b10b在真实环境中进行测试。
说明一下8b10b的作用。8b10b在这里的作用是用于查看是否有8b10b的错误,如果出现8b10b的错误则表明有很高的概率是硬件有问题,可以重点查看pcb走线质量、时钟/电源等地方。如果没有使用8b10b的环境(连测试环境都无法使用8b10b),那么问题会棘手一些。
rx fsm reset done是接收端任务完成的标记,通常这个信号拉高表示接收端没有问题,通常就代表gtx可以正常工作。如果无法稳定拉高,则查看rx status的变化,看看是哪一步(或者哪几步)导致无法拉高rx fsm reset done。
至于这两个信号的出处。example design中提供了一个复位状态机。默认是不包含在ip core中,放在example design中。最终的设计,建议使用example design作为一个整体,而不是只使用ip core。
第三步,使用ibert工具测试一下误码率,并查看一下眼图。
如果example design能够正常工作了,那么除非gtx ip设置有问题,通常来说,gtx最基本的应用是没问题的,很大可能是gt的上层控制有问题。如果example design测试有问题,rx fsm reset done信号无法拉高,并有8b10b错误,下一步用ibert检查一下硬件电路是必要的。
在对端可以发送prbs的条件下(比如对端fpga上运行的也是ibert),ibert可以测试误码率。通过误码率来查看一下链路质量是否有问题。
无论误码率测试是否可以进行,ibert都可以对接收端进行眼图的扫描。通过查看眼图的大小,可以初步判断链路的质量。
ibert是xilinx针对fpga的高速收发器提供的测试工具。通常在pcb完成之后就可以先用ibert对高速收发器的链路质量进行测试。另外,如果需要进行高低温测试,直接使用ibert也是一个不错的选择。
第四步,有条件的情况下进行外部环回测试。
fpga使用高速收发器的时候,一个常见的场景就是使用外部线缆,比如光模块/光纤,或者同轴电缆等。这个时候是条件进行外部环回测试的。将example design进行外部环回测试,及同一个gtx的tx发出信号通过外部线缆返回到自己的rx端。如果这个测试结果是稳定的,表明gtx是可以正常工作的。
另外还有很多情况是无法进行外部环回测试的,比如收发器走线是固定在pcb上的,例如pcie。这种情况下,如果是两个xilinx的fpga对接,可以考虑利用fpga内部的远端环回进行测试。具体原理是待测gtx的tx发送数据,送往辅助的fpga的gtx,辅助gtx从rx收到数据后直接送给tx发送出去,待测gtx的rx端接收到辅助gtx tx端发来的数据,完成环回。相当于利用辅助gtx来实现一个外部环回。需要注意的是,远端环回的使用是由条件限制的,具体请参考7系列gtx/gth的手册ug476。
外部环回测试,如果example design的结果不理想,可以用ibert再进行一次测试,有条件的情况下误码率和眼图都查看一下。可以作为对比分析的数据。
第五步,在有条件的情况下,使用高速示波器,查看fpga gtx rx接收端pin上的眼图。
这一步的条件限制最大。高速示波器的价格昂贵,而且使用复杂。同时由于fpga多为bga封装,gtx的rx pin很可能无法使用示波器探头进行测试。所以很多用户是没有办法进行这一步的测试的。
至于gt内部的2d eye scan眼图的使用,理论上是可以用来帮助调试的。但是实际上,当用户会使用2d eye scan的时候,通常也就不需要本文的一个初步调试的建议。所以本文针对的是初级用户,相对高级/复杂的2d eye scan在这里不做介绍。
下面更进一步分析一下第二到第五步的具体作用。
第二步的rx fsm reset done信号可以作为gtx正常工作的指示信号。如果example design在最终的使用/测试场景中可以稳定工作,该信号稳定为高,可以表示设计几乎没有问题。如果用户自己的设计出现问题,大概率是gtx代码集成时的问题,比如没有正确使用example design,或者,问题不来自gtx模块。另外,如果配置有不合适的地方,可以参考仿真,并参考第四步的测试。
这里要注意一下,example design中用自带数据源和接收数据进行比较验证,来判断数据是否正确。如果用户使用自己的数据源,可能会导致数据验证模块一直输出出错,从而导致rx复位状态机持续被复位。
这个问题可以通过查看rx status来判断。另外其他的可能性也都会反映在rx status信号的变化中。所以rx status是个很重要的调试信号。
至于8b10b,最大的优势就是自带错误检查。如果出现8b10b的错误,则很大概率是链路有问题。
在第二步的基础上用ibert进行测试,原因是除了可以测试误码率和眼图之外(其实这两个功能自己设计逻辑也可以实现),ibert将gtx的所有参数都拉了出来,可以进行任意的配置。如果第一步的发现是怀疑硬件链路有问题,利用ibert检查一下链路是个不错的方法,并且可以通过调整部分gtx的参数来尝试降低误码率,扩大眼图。另外,眼图的大小也是有参考意义的。
这里需要注意一下,ibert和gtx example design是完全不一样的设计。ibert只是为了便于测试,gtx的很多参数值与实际使用中的值不一样。所以相比ibert,gtx example design更接近最后实现的结果。
当说到大概率是硬件链路的问题时候,这个结论对调试可能没什么帮助。所以这个时候需要进行环回测试。如果可以进行外部环回测试,发现环回测试正常,那么可能是某一端的端接部分有问题,或者两边gtx参考时钟频偏比较大。如果外部环回测试无法正常通过检查,那么可以打开gtx的近端pma环回进行测试(不要用近端pcs环回进行测试)。如果近端pma环回测试正常,可以认为是外部链路质量有问题(比如光模块/光纤有问题),如果近端pma环回测试不正常,大概率是时钟/电源有问题。
环回测试可以做两次,一次用gtx example design,一次用ibert,来对比结果。类似光纤有问题这样的原因两次测试都能得出一样的结果。如果结果符合预期,那么就离真正的问题原因更进一步了。
眼图的测量是判断链路质量的最终依据。通过使用外部示波器和ibert来测量眼图,具体数据可以交给fae,可以得知是否符合gtx的要求(原厂应该有相关数据,但是似乎没有开放给普通用户查看)。
示波器和ibert测试的眼图,是不一样的。通常用示波器,测量fpga gtx rx pin脚出的眼图,称之为远端眼图。用ibert测量出来的原图,称之为近端眼图。
远近端眼图是按信号是否经过rx pma来区分的。远端眼图是没有经过rx pma的信号,近端眼图是通过rx pma的信号。
出自ug476
rx pma的对接收到的信号有一定的处理功能(上图中rx eq、dfe)。处理后的信号质量会变好。所以通常经过rx pma的信号会比pin脚处更好,导致近端眼图好于远端眼图。
具体的调试步骤,虽然总结成5个步骤,但是如果不熟悉,实现起来还是很麻烦的。不过由于gtx的问题通常都比较难以定位,所以这些测试一方面有很多参考价值,另一方面也加强了对gtx的理解。在研发过程中,提前进行相关的测试,可以排查很多问题,便于项目的按计划进行。

永磁同步电机动态数学模型和常用公式总结
中汽中心走访柳州五菱汽车工业有限公司
优化完善无人机巡检管理和技术支撑体系建设
便携式兆欧表电路
教你们如何看二极管规格书datasheet以及指标是重点
Xilinx 7系列GTX具体的调试步骤
国内首套自主研发的膜电极生产线正式投产 预计产值可超3亿元
Withings智能手表评测 设计精美续航能力优秀
人工智能技术的计算能力是怎样加强的
IA:利用SoC实现单一架构的广泛灵活性
小创意:散发迷人气味的节能灯
华为Mate20系列共销售1600万台 P30系列半年超过1700万台
我国新型储能发展取得显著成效,已投运装机超3000万千瓦
读懂功分器和耦合器的区别不要再搞混了
多系统中断路由的9种示例
粤水电与易华录合作共同推进“城市数据湖产业园+新能源投资建设”
小米MIX2和魅族PRO7哪个好?颜值与全面屏的对比
福州最大物联网综合体物联网产业创新发展中心二期
OpenHarmony在千行百业的落地成果
冷压端子连接技巧