FPGA调试杂谈_fpga的调试经验
目录
1. 引言
2. HDMI回环显示
3. 以太网通信
4. 总结
1. 引言
最近接手一个烂摊子,要在新的开发板上调通HDMI回环显示和以太网通信。前人留下的这块工程运行起来还存在一些bug,具体表现为HDMI回环显示会有绿色噪点,以太网无法正常ping通。经过笔者几天瞎捣鼓和同事的帮助,最终终于解决。由于这部分经验在网上鲜有提及,遂笔者进行总结。
2. HDMI回环显示
下图是原工程的一个显示状况,可以看到,图像充斥着许多绿色噪点,而且这些噪点似乎在图像的一些固定位置跳动。由于代码是移植其他板卡的工程,所以逻辑的正确性是可以保证的。
笔者的第一想法是时序存在问题,缺少必须的约束。将原工程与DDR4参考工程的fdc文件进行对比,发现原工程并未对DDR4一些相关的时钟结构及物理区域分布等进行约束。在使用DDR4 IP时,这块时必须的,将除管脚约束外的其他内容全部复制到原工程的fdc文件中,并根据原工程的信号命名进行修改。重新编译后上板进行验证。

上板现象如下,可以发现,相较于一开始已经少了许多绿色噪点,不过还是有明显的噪点存在。
考虑到HDMI输出的视频源是由HDMI输入获得的,而原工程并未对输入信号做打拍处理,容易出现数据亚稳态的情况导致数据某些bit采集有误。因此在引脚约束界面,先对HDMI相关输入信号勾选上IO_REGISTER。
然后在原先的代码的基础上,对输入信号做打两拍处理,具体如下。
完成上述操作后,重新编译后上板验证,可以发现HDMI输出的绿色噪点已经消失。
3. 以太网通信
先介绍一下以太网通信碰到的问题。将原先开发板的例程移植到新板子,并修改好相应的管脚约束后上板验证,发现始终无法ping通。打开wireshark,将开发板进行重新上电,发现wireshark未抓取到任何信号。通过cmd窗口去ping相应的IP地址,并通过debuger软件抓取信号发现FPGA是能够正常接收并解析相应的以太网包的。因此在移植的工程中,以太网接收是正常的,而以太网发送则不正常。
经过一系列瞎捣鼓后发现,将rgmii接口相关tx信号的DRIVE等级设置为16,即设置该IO输出时能提供的最大电流,即可正常ping通。
4. 总结
本文总结了一些FPGA调试过程中不易被发现的问题。对于输入信号,尽可能去添加IO_REGISTER和做打拍处理,保证输入信号的稳定。对于输出信号,驱动电流等级的设置也会影响到系统的正常运行。这些问题可能对于经验老道的工程师来说几分钟就解决了,而对于刚接触的新人来说,可能动辄几个月都毫无头绪。这里对这些问题做个总结,希望能对后来者有所帮助。