JESD调试中某一条lane出错,其余lane正确的问题

ADI生产的ADC会有很多测试模式,并且有比较简单的快速配置寄存器。
一般上手的时候,只需要按照快速配置寄存器设置响应的L/M/K/F/S,然后注意一下是否打开扰码scrambling 模式,就可以正常使用了。
然后通过配置递增码判断输出的数据顺序,即可完成ADC的数据获取。

但是笔者在调试AD9234的时候,由于原理图绘制失误,导致ADC输出的SERDOUT3的P/N反向连接值FPGA GTP Bank。下面是遇到的问题,以及解决方法

1 问题发现——链路正常link,但GT3通道递增码有误

如fig1所示

JESD调试中某一条lane出错,其余lane正确的问题_第1张图片
fig1 递增码-GT_rxdata数字量显示结果
从上图可以看出其它3个gt_rxdata均以正常的数字递增,但是gt3就很诡异,十分异常。但是此时,链路依然是正常link。fig2是模拟量的显示结果
JESD调试中某一条lane出错,其余lane正确的问题_第2张图片

fig2 递增码-模拟量输出结果
另外我还测试了其它测试模式,JESD的链路测试等等。结果居然发现,不管发中间码、正满量程、负满量程、棋盘码以及K码。GT3的输出跟其他三个通道结果一致。
我还利用AD9234 lane的映射关系,进行测试,将lane0/1和lane2/3交换。结论是:lane3的硬件有问题。
这个时候我还没有怀疑我的原理图有问题,我怀疑是不是ADC内部这个通道有问题,或者FPGA的GTP有问题,后者我通过其他子板进行了验证,FPGA端是没有问题的,于是我就更加怀疑是不是ADC的问题,所以就上了ADI的论坛进行提问。
老外回复的很快,基本上一天就回复(有时差。一般晚上十点左右收到回复),老外看完我的描述之后,直接就让我换一下GT3的P/N的顺序,见Fig3,一眼就看出问题来了,真的很厉害。这是我才去检查我的硬件电路,发现确实有问题。。。就是开头所说,P/N画反了。。

JESD调试中某一条lane出错,其余lane正确的问题_第3张图片

Fig3 ADI论坛老外的回复

找到问题之后,剩下的就好办了。下一步就是如何在FPGA内交换P/N顺序。老外其实高速了手册中的位置。

2 如何在FPGA内交换GTP输入管脚的顺序

由于GTP是硬core,直接修改管脚约束文件是不行的,不要做无谓的尝试了。
参考老外的手册,UG576 的table 4-22.如Fig4所示
JESD调试中某一条lane出错,其余lane正确的问题_第4张图片
Fig4 UG576 的table 4-22
这里告诉你,需要把这个地方改成1‘b1就可以了。UG482的157页也一样有介绍。
然后在逻辑中找到相应的位置。如Fig5所示
JESD调试中某一条lane出错,其余lane正确的问题_第5张图片
Fig5 JESD PHY中对应的RX_Polarity
接下来就是如何修改了,这个事实上就是“如何修改IP核的源码”,网上搜一下有很多做法,我是按照以下步骤进行的:
1.首先在逻辑中查看Fg56 中jesd phy文件的路径,FiG5中的正上方其实有写,直接右键copy就行。
2.修改相应路径下中的jesd phy 的polarity为1(在362行)如Fig6,然后删除dcp文件,如Fig7
3.再次回到逻辑工程中,右键bd,点击generat outputs,如Fig8
4.然后重新综合
5.查看综合后网表,见Fig9。发现polarity上拉成功!!!!
至此,bug已经修复。尝试用递增码再次测试,结果如Fig10所示
在这里插入图片描述
Fig6 修改逻辑接口为1
JESD调试中某一条lane出错,其余lane正确的问题_第6张图片

Fig7 删除该路径下的.dcp文件
JESD调试中某一条lane出错,其余lane正确的问题_第7张图片

Fig8.1 generate output products
JESD调试中某一条lane出错,其余lane正确的问题_第8张图片

Fig8.2 生成后的弹窗
JESD调试中某一条lane出错,其余lane正确的问题_第9张图片

Fig9 综合后生成的Schmatic中对应的信号线
JESD调试中某一条lane出错,其余lane正确的问题_第10张图片
Fig10 递增码结果(数据解码后)

你可能感兴趣的:(ADC)