FPGA设计的上板调试
文章目录
一、开发板状态检查
系统出现问题时,首先需要检查开发板是否工作正常。开发板的正常运行是FPGA设计调试的基础。在进行FPGA设计调试之前,开发板必须经过预测试。预测试是指在开发板正式投入FPGA设计调试之前,编写一些功能较为简单的FPGA测试设计,通过运行这些测试设计来确保整个开发板的硬件环境运转正常。使用经过预测试的开发板可以避免因开发板硬件问题导致的FPGA设计调试困难,甚至避免烧毁芯片、引爆电容等严重后果。
然而,即使使用了经过预测试的开发板,在实际使用过程中,开发板的硬件仍然可能会出现问题。因此,当系统出现问题时,需要对开发板进行问题排查,基本步骤如下:
- 断电检测:在系统上电之前,先进行断电检测,主要检查电源和地之间是否有短路、同一网络之间是否有断路等情况。只有确认无误后,才能进行上电操作。
- 电源电压检查:“电路!电路!没有电就没有路!”上电后,立即使用万用表等工具确认开发板中各个电源网络的电压值是否正常。如果供电不正常,后续的调试工作将无法进行。
- 外围电路检查:确认FPGA的外围电路是否正确,包括是否有虚焊、短接、断开等现象;FPGA物理I/O管脚与外围电路连接是否符合管脚约束文件的要求;I/O端口电平标准是否符合设计要求等。
- 其他芯片检查:确认板上其他芯片(如ARM、DSP等)是否工作正常。
二、测试点监测
如果开发板工作正常,那么接下来需要集中精力对FPGA进行调试。一般开发板会为FPGA设计预留一些监测点,或者有一些探针可触及的焊点。可以利用示波器、逻辑分析仪等工具对这些监测点进行波形观察,查看是否存在异常。具体监测内容如下:
- 时钟信号监测:尽可能监测所有输入FPGA或从FPGA输出的时钟信号,检查时钟信号的频率、幅度、稳定性是否满足要求。
- 使能信号监测:监测一些使能信号,查看其是否处于错误状态。
- 数据信号监测:检测数据信号,查看数据线上是否有有意义的数据传递。如果传递的是数据帧,还需检查帧结构是否符合预期。
三、在线调试
FPGA芯片的管脚数量众多,内部信号数量更是庞大,开发板所能引出的监测点非常有限。因此,FPGA调试通常需要借助在线调试工具。FPGA芯片厂商一般会在其软件集成开发环境中加入在线调试功能,例如Xilinx公司的ISE集成开发环境中的Chipscope工具,Altera公司的Quartus II集成开发环境中的SignalTap等。这些在线调试工具的原理是在FPGA设计中添加专门的代码或IP核,用于实现对某些指定内部信号的条件监测(即当设定的条件满足时才开始采集数据),然后通过JTAG接口发送采集命令或接收采集到的数据。
在线调试工具的优点是只要有JTAG接口,就可以查看内部任意信号,对FPGA设计的上板调试帮助非常大。但缺点是需要改变FPGA设计,添加后可能会影响芯片内部的布局布线。
四、如何找到问题
(一)通过全面的测试查找问题
全面测试的思路类似于“时序仿真”,但由于运行在硬件实体上,执行效率非常高,可能只需要1秒的时间就能完成时序仿真需要几天才能完成的工作。一个FPGA项目通常由许多基本功能组成,为了便于查找问题,应先对系统功能进行细化,然后针对每个细节功能设计测试方案进行实际测试。这样可以提高测试覆盖率,更容易发现一些细节性问题。
(二)通过重复的测试查找问题
有些功能测试执行一次可能没有问题,但执行多次就不一定。因此,通过重复性测试,可以发现一些关乎系统稳定性的问题。
(三)通过综合的测试查找问题
有时单独测试功能一是正常的,单独测试功能二也是正常的,但同时测试这两个功能时,由于它们之间的相互影响,可能会导致FPGA设计出现问题。通过综合测试,可以发现设计中的一些缺陷问题。
(四)通过非法的测试查找问题
作为FPGA项目的开发者,我们清楚其所有细节,因此会不自觉地按照正确的方法进行测试,这会降低测试覆盖率。然而,产品的最终使用者是客户,他们可能不会严格按照产品操作指南使用产品。因此,在测试过程中,需要通过一些非常规的、不合法(注:此“法”非法律之法)的操作来找出系统在异常情况下暴露出的问题。
五、时间检验
时间是检验真理的第二标准。任何真理都必须能够经受得住时间的考验。在上板调试时,FPGA设计也必须经过时间的检验,例如让其连续运转48小时甚至更长时间,查看是否会出现问题。时间检验是一种查找问题的好方法,但它有其自身的特殊性,因此单独列出进行介绍。
六、注意事项
- 散热问题:在调试过程中,需要注意散热问题,以确保FPGA及相关器件在正常温度范围内工作。
- 器件寿命问题:同时,还要注意器件的寿命问题,避免因长期高负荷运行导致器件损坏。