最近在做项目时,在实际运用环境中老出问题.在实验室跳没问题,仿真更是没有问题.
在实际运用环境中,比较苛刻,电磁干扰什么比较多,虽说FPGA是数字的,可靠的.但一旦干扰了就容易出错,甚至错误累加.在设计状态时,一般会考虑重新恢复的问题.
但这次遇到是数据流的可靠性恢复.一般数据流经过处理后或处理前都得用FIFO缓存一下.
(一) FIFO的设计很关键,有没有可能FIFO即处于满又处于空的情况,造成即不能写又不能读的假像.前来的设计错误就是FIFO的空满用不同的counter组合逻辑来判断.
(二)数据流用两个FIFO并行实现,这是错误的,尽量用一个FIFO来实现.在实现过程中原来的设计是:一个FIFO存数据流,一个FIFO存数据流的信息(如控制信息),两个FIFO的数据有一个对应关系.一旦某个时候打雷,一个FIFO多读一次,就会造成永远错误下去.永远不能恢复了.如果一个FIFO不能实现,可用一个FIFO来缓存控制信息,另一FIFO由自己控制的双端口RAM来实现.
总之,要保证数据流的可恢复时,仿真是发现不了问题的.
文章评论(0条评论)
登录后参与讨论