随机存取存储器(ram)是与CPU直接交换数据的内部存储器。它可以随时读写(刷新时除外)且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储介质。ram工作时可以随时从任何一个指定的地址写入(存入)或读出(取出)信息。存储器是数字系统中用以存储大量信息的设备或部件,是计算机和数字设备中的重要组成部分。随机存取存储器(ram)既可向指定单元存入信息又可从指定单元读出信息。任何ram中存储的信息在断电后均会丢失,所以ram是一款易失性存储器。
本篇文章存储芯片供应商英尚微电子简单介绍一下关于ram使用的注意事项。
(1)、资源
实际在项目中,我们需要弄清楚2个问题,方案设计上需要多大的buffer?这么大的buffer需要多少块ram?后一个问题前面已经详细说明了,前一个问题就只需要注意一点:别溢出了。写的时候控制好地址和使能信号,保证不翻转,读的时候先写后读。
(2)、ram的复位和初始化
首先要明确一点,ram中存放的内容是不会复位的。我们在例化ram的时候,输入的复位信号,仅仅是复位ram中的输出寄存器。那这就会带来一个问题:系统运行一段时间后复位的话,ram的值并不是我们想要的初始值。可以分2种情况考虑:
ram作为表项:可以在复位后,先自动对ram做一次初始化操作(即先写一遍ram),使得ram中的值变成我们想要的初始值。
ram作为缓存:要从方案上保证对ram的操作是先写后读,那就不会有上述的问题了。如果确实无法保证,也可以参考上述对ram初始化操作一次的方案。
(3)、性能
ram的输入输出一定要通过寄存器,记住这点,性能上不会有太大问题。
(4)、校验
FPGA中的ram存在一定的软失效或者器件故障(reg和LUT也一样),对于可靠性要求不严格的场景,不需要对ram中的数据进行校验。而对可靠性要求非常高的场景,就需要校验了。
常见的校验有2种,奇偶校验或者ECC,如果出现失效,大概率(好像是90%以上)是1bit错误。对于这种错误,奇偶和ECC校验都可行。通常的做法是在数据将要写入ram之前,先计算奇偶校验位或者ECC校验位,和原始数据一起写入ram中,读数据的时候再对读出的数据做检验,如果出现错误,上告系统软件,让上层业务决定如何处理。当前供应商的IP本身已经支持ECC校验。