电源问题使得CPLD寄存器清零

2320阅读 0评论2015-03-27 sunhenu
分类:嵌入式

    最近做了一个关于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次就会出现寄存器为零的现象。还好没有把插座踢坏的。   自己给自己的一个教训吧。
   
上一篇:max5477数字电位器使用过程遇到的困难2
下一篇:FPGA时钟约束时钟余量超差解决方法