调试
JESD调试时比较容易出问题的地方:
1、ADC配置:收发端jesd参数必须设置一致,比如K\ F\L\M\S。
2、时钟:保证内外时钟都稳定有时钟,用频谱仪或示波器确认。
①外时钟:
GTH参考时钟、jesd core时钟、sysref参考时钟,通常在配置ADC之前要保证有稳定的时钟,一般以时钟锁定后再对ADC配置寄存器。
②内时钟:
drp时钟,一般可以通过MMCM产生。
3、复位:时钟锁定->ADC配置完成->JESD复位,JESD复位有以下三个。
① rx_reset为jesd core 和phy core复位端口,一般在ADC配置完成后再进行复位;
② axi_reset为axi配置总线复位;
③ rx_aresetn为输出标志复位完成。
后面补个图吧好抽象。。。。
问题描述
根据之前的文章所述,ADC配置完成后首先进入CGS阶段。这时会发送连续K码到FPGA,当FPGA收到一定数量的连续K码,会将SYNC拉高,进入ILAS阶段进行链路对齐和参数校对。此处k码即十六进制的bcbcbcbc,通过抓取JESD204B PHY core数据可以看到如图,但是显然lane 0处不是连续K码,卡在了CGS阶段,经过检查时钟,复位,硬件对比检测,发现原本jesd复位后对应使用了的gth引脚输出共模电压应该为800mV,而jesd core复位之后共模达到800mV的引脚和XDC对应不上,问题转向引脚约束。
在工程警告指示中发现XDC约束冲突,原来在使用example design时工程其提供了引脚约束,我将example design移植到我的工程时未删去对应约束导致冲突。
删去example design约束后工作正常,sync信号拉高,信号为ADC采集到的底噪。
抓取到SYNC刚拉高时各信号变化情况,可以看到当收端收到连续K码之后SYNC信号拉高,链路进入ILAS阶段进行数据对齐和参数校验,而后传输用户数据。如果不幸SYNC信号没有拉高,那就只有从ADC配置、时钟、复位等方面逐次排查了。