JESD204接口调试总结——一次建链不稳定问题的解决

本文转载自:十年老鸟的CSDN博客

问题的暴露
之前由于只有一块板卡,且测试的比较少,一开始收发都建链了,所以以为JESD204已经调试完毕了。之后由于硬件需要测试双载波三阶交调性能,进行了程序更改,结果发现发射的双载波在频谱仪上会出现异常,具体表现为频谱仪底噪突然提升很大,检查链路标志发现时断时建,且只发直流不发单音的时候又能回到建链成功的状态。

问题的分析过程
按理来说JESD链路建立起来后,改变用户数据是不会导致链路掉链的,因此一开始百思不得其解。中间分析过收发链路间互相干扰的问题、收发隔离度问题、JESD两端参数不匹配问题、链路质量不好问题、时钟源不稳问题等等。进行了以下实验:

1. FPGA做近端回环,能够稳定自发自收。且设计模块与另一个已经在使用的transceiver芯片的基本一致,且另一个却没有这种问题。感觉不太像FPGA模块设计的问题
2. 收发链路互相干扰:硬件上把收链路完全关闭后,问题没有改善
3. 收发隔离度问题:测试中发现在发射的过程中会导致某些接收通道的功率突然增大,但接收通道并没有接东西,后面发现时通道校准功能没有打开,经过把通道校准功能打开,且加盖屏蔽罩后,接收通道正常,但发射的问题依旧
4. JESD两端参数排查:通过读取JESD IP核以及transceiver芯片中的jesd参数,完全能够匹配上。
5. 跟芯片原厂的技术人员交流,他们分析可能的原因是时钟源不稳,因此我们用了外接高稳信号源,但对问题没有任何帮助。
6. 链路质量不好排查:这是最有可能解释上述一些异常现象的原因。因为链路质量不好,可能在发一些无规则数据的时候可能会出现误码率,严重的时候会导致接收端的CDR恢复时钟失锁。一开始想着是在FPGA端加预加重。但芯片JESD没办法做远端回环,只能对那些参数进行盲目设置,没有起到任何效果。

问题的解决
后面从transceiver芯片中的jesd的状态发现,尽管发直流的时候锁定了,但还是会报一些眼图不佳等的告警。在一个偶然的情况下,我们在加载了transceiver芯片配置的时候没有对FPGA的JESD核进行复位,试了几次发现都没有出现异常。从而想到了可能是复位顺序的原因,试了很多次之后再也没出现问题,且经过和原厂技术人员确认,的确是这个原因导致的。

JESD链路的复位遵循先复位发端,在复位收端的原则。在我们之前操作中,首先复位了FPGA的JESD核(FPGA的收端和发端都复位了);然后复位了transceiver芯片(transceiver芯片的收端和发端都复位了),这个时候其实FPGA的发端已经和transceiver芯片的收端建链完成了。后面只需要对FPGA的收端进行复位就可以了。但是我们之前是再次对FPGA的收端和发端都进行了一次复位,从而导致了这种异常现象。

问题根本原因分析
如果复位顺序弄反,先复位收端,后复位发端。在复位发端的时候,JESD链路上会出现一段时间的不稳定状态,此时链路上不会有8B10B编码。这对于收端的CDR恢复时钟的PLL有破坏性的影响。这也就能解释为什么有些链路有问题,有些链路又没问题,这种操作导致有些lane的CDR失锁,有些的又没失锁。

事后反思
操作流程上,还是要必须遵循先复位发端,在复位收端的原则。尽管某些器件的容错性和自愈性较强,例如另一个已经在使用的transceiver芯片就没有出现过这样的问题,但这始终是一个隐患,而且很隐蔽。同时由于一开始的测试不充分,导致过了一段时间才发现这个问题。