ATMEGA系列ATMEL芯片-亿配芯城-基于FPGA系统Register和Memory的复位
你的位置:ATMEGA系列ATMEL芯片-亿配芯城 > 芯片资讯 > 基于FPGA系统Register和Memory的复位
基于FPGA系统Register和Memory的复位
发布日期:2023-12-31 08:25     点击次数:181

Register 和 Memory 的复位

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

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

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

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

debug的发展步骤是这样的:

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

检查软件版本,发现同样的版本, 电子元器件PDF资料大全有的work, ATMEGA系列ATMEL芯片COM有的不work

检查FPGA版本, 芯片交易网IC交易网发现同样的版本,CMOS图像传感器集成电路芯片也是有的work, EEPROM带电可擦可编程存储器芯片大全ATMEGA系列-ATMEL芯片有的不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的逻辑。

编辑:黄飞