基于FPGA系统Register和Memory的复位

可编程逻辑

1348人已加入

描述

Register 和 Memory 的复位

Register是有复位端口的,当我们assert复位端口,寄存器便被复位到0。

而FPGA中的Memory通常是没有复位端口的,假如我们想要clear memory中的内容,需要一行一行,一个地址一个地址去清除。如果没有memory clear的逻辑,那么之前写在memory中的数据会一直存在,直到整个FPGA上电复位。

一次Memory没有复位引起的歧义

首先我们的FPGA系统中有个feature是需要memory存储一些配置条件,这个配置条件是软件写下来的。

debug的发展步骤是这样的:

有一天我们发现这个feature不work了

检查软件版本,发现同样的版本,有的work,有的不work

检查FPGA版本,发现同样的版本,也是有的work,有的不work

但是有个FPGA刚好是上了新的FPGA版本后不work的

怀疑config文件有问题,检查后也没发现有错

追踪软硬件之间的通信,最终发现确实是软件的bug,软件没有发送配置信息给FPGA

那么为什么会出现2和3的歧义的?如果是软件的bug,不应该相同的软件版本都不work吗?

都是memory clear的锅。

这个feature的memory是没有clear逻辑的。步骤2的歧义是因为memory没有被clear,所以记录了之前的配置信息,导致有的软件版本看起来仍然是work的。步骤3的歧义是因为这个时候重新load新的FPGA版本,FPGA重新上电清除掉了memory中的内容,而有bug的软件版本又不会写新的配置信息,所以看起来新的FPGA版本就不work了。

总结

memory没有clear逻辑会留存之前写入的信息,可能会导致如本文所写的debug歧义,甚至在某些时候导致系统产生错误的行为。所以我们在使用memory的设计中,最好是能有memory clear的逻辑。

编辑:黄飞

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分