今天遇到了一个难得一见的问题。FPGA温度过高,导致程序跑飞了图片。
先说一下现象:程序在跑稳定性,但是每次跑到三分钟之后就挂掉了,从软件抓到出错包的情况,感觉非常的离谱,出错时数据包每次都不一样;并且通过ila观察不到出错点。一直认为是时序或者程序代码的问题,尝试修改了几次都不行。后来观察到出错时ila核就无法正常工作了,当时想只要有时钟有ila核就可以工作了,这个现象也是有点奇怪;再看了一下板子发现FPGA的done信号变低了,这就更奇怪了。根据经验done信号拉低只有在program_B信号拉低后才会再次拉低,但是原理图中program_B引脚直接连接的是上拉电阻,不会拉低的。
解决方法:通过分析认为大概率是硬件的问题(虽然之前的很多板子从未出现过这个问题)。问了硬件工程师,他们说是不是温度过高了导致的。后来通过JTAG查看了xilinx内部的XADC的温度值,发现温度已经超过110度了,所以认为是FPGA内部自动shutdown了。之后给板子增加风扇,程序就可以正常跑了。图片
分析一下:FPGA内部的XADC会实时监测FPGA内部的温度,当温度超过阈值(125度)时,FPGA会自动shutdown以防止芯片被烧坏,同时FPGA会将program_B引脚拉低来重新配置FPGA,所以才会出现运行期间done信号拉低的情况。
从OT之后10msFPGA就开始重新初始化了。
默认的OT的阈值是125度,但是这个值可以设置。
没有回复内容