最近做了一个关于CPLD的项目,其实也可以使用FPGA,但是为了成本就利用了CPLD,结果编译程序,时钟约束都是正常的,但是程序运行一段时间后出现异常,但是异常出现时间都不确定,最初还以为是自己程序的问题,改呀改呀,但是还是出现那个异常。郁闷了几天。
当然了也逼着自己将其算法精简再精简,逻辑单元使用率从95%降到80%,时序约束的余量也更大些了。但是异常还是出现,时间还是不确定。
很郁闷很火,后来也没有办法,只好想办法。像ARM芯片一些样,通过串口将数据读取出来,具体观察一下到底是那个寄存器的值发生了改变。
因为这个项目没有使用串口,就利用手里的ARM核心板和CPLD通信,将CPLD中的寄存器值读出来了。
正常数值是2和12250000。异常数据是0和0.CPLD板子使用的就是小的电源适配器,5-10元钱的那种,无意中我踢动那个电源适配器发现,CPLD寄存器值居然清零了,还好我一直监视CPLD的寄存器值,然后复位正常了,我再踢动那个220V交流插座,在这个过程没有断掉220V,我的计算机也是从这个插座供电的,前面提到的异常出现了,真的很高兴的。然后我利用ARM核心板给CPLD供电,ARM核心板使用计算机的USB端口供电,这样电源总该干净些了吧。我继续踢动220V插座,异常再也没有出现了,看上面图片,绿色的是USB供电,怎么踢动电源都没有出现异常。红色的是电源适配器供电,踢动2次就会出现寄存器为零的现象。还好没有把插座踢坏的。 自己给自己的一个教训吧。
阅读(2259) | 评论(0) | 转发(0) |