0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

想要对RAM初始化该怎么操作

FPGA技术驿站 来源:fqj 2019-06-06 14:36 次阅读

RAM的初始化并没有那么神秘,如果是采用Xilinx的IP Core,只需提供一个.coe文件,其内容就是RAM的初始值,只需要注意coe文件的格式就好,这里就不再赘述。

初始化方法

如果是自己写的RTL代码,如何初始化呢?这里提供两个常用方法。来看一个例子,如下图所示。

代码第16行,通过default将所有地址的初始值设置为0;

代码第17行,通过索引结合default的方式,将地址0的初始值设置为4,地址1的初始值设置为5,其余地址的初始值设置为0;

代码第19行至第25行,采用initial语句,通过调用readmemb(类似的还有readmemh)实现对RAM的初始化。使用$readmemb时,需要提供一个.mem文件,文件内容就是RAM的初始值,这里给出一个.mem的例子,如下图所示。

想要对RAM初始化该怎么操作

仿真问题

使用$readmemb时,需要把.mem文件加入到Vivado工程中,如下图所示。

想要对RAM初始化该怎么操作

如果没有添加此文件,会显示如下Warning信息

综合问题

无论是default还是readmemb定义的初始值,在综合时都是可以生效的。对于一个深度为4宽度为4的单端口RAM,综合后的网表如下图所示。

想要对RAM初始化该怎么操作

通过如下图所示的Tcl命令可获得相应的初始值,与init_data.mem中定义的初始值是一致的。

想要对RAM初始化该怎么操作

结论

两种RAM初始化的方式:

采用default或地址索引加default的方式;采用$readmemb或$readmemh的方式

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

    关注

    7

    文章

    1317

    浏览量

    113697
  • 初始化
    +关注

    关注

    0

    文章

    48

    浏览量

    11627

原文标题:对RAM初始化怎么做

文章出处:【微信号:Lauren_FPGA,微信公众号:FPGA技术驿站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    RT-Thread自动初始化详解

    是指初始化函数不需要被显式调用,只需要在函数定义处通过宏定义的方式进行申明,就会在系统启动过程中被执行,非常的方便。 1 普通初始化 前面也讲了,我们在写单片机的程序时,需要对硬件进行初始化
    的头像 发表于 06-25 21:38 9543次阅读
    RT-Thread自动<b class='flag-5'>初始化</b>详解

    想要调用相机的初始化函数如何操作

    我在调用库函数节点时遇到了困难,就是我想要调用相机的初始化函数,但是我不怎么明白它里面的参数,还有在参数设置哪里我怎么做,有几个参数,还有参数类型怎么设?下面有第一张图是相机
    发表于 07-31 17:27

    阻止RAM初始化文件

    嗨,大家好我对Xilinx板上的RAM有疑问。我正在寻找电路板上给定Block RAM的VHDL描述,在那里我可以直接将内存初始化文件的链接写入VHDL代码。上次我使用Altera板时,我可以写下
    发表于 05-08 14:38

    电源关闭几秒后,Ram数据不会初始化

    电源关闭几秒后,Ram数据不会初始化以上来自于谷歌翻译以下为原文 Ram data not init after power off for seconds
    发表于 07-10 14:03

    界面初始化(一)

    初始化会用到。因为我们在调试的时候,经常会移动窗口,一不小心,想要显示给用户的信息被移开到窗口看不到的地方了,为了避免这种情况,可以通过一个字符串控件来指定窗口显示位置。如下图:​图4-设置原点程序框图
    发表于 08-21 17:46

    端口初始化初始化中断

    目录PA9(TX),PA10(RX)1、端口初始化2、初始化外设3、初始化中断4、使能中断5、使能外设5、发送数据PA9(TX),PA10(RX)1、端口初始化1.开启PA时钟2.PA
    发表于 08-16 06:54

    初始化封装

    初始化封装您可以在 Mask Editor 的 Initialization 窗格中添加 MATLAB® 代码以初始化封装模块。Simulink® 将执行这些初始化命令以便在关键时刻(如模型加载
    发表于 08-27 07:17

    【原创分享】变量的初始化技巧

    没有声明,”abcde”所占用的只读数据区(RO Data)都是必需的,复制的过程也是必需的。方式4是直接把a定义为已初始化可读写的全局变量,在使用的时候直接操作。作为已初始化的全局变量(RW Data),将在
    发表于 09-08 15:28

    STM32是如何实现看门狗复位不初始化RAM区的?

    STM32是如何实现看门狗复位不初始化RAM区的?
    发表于 09-18 07:55

    USART初始化结构体详解

    ()调用,这些设定参数将会设置外设相应的寄存器,达到配置外设工作环境的目的。初始化结构体和初始化库函数配合使用是标准库精髓所在,理解了初始化结构体每个成员意义基本上就可以对外设运用自
    发表于 02-22 06:08

    如何多次初始化blufi?

    ,我如果再次调用该部分代码则会提示已经进行过初始化我现在想要实现的目标是1. 触发blufi配对的操作可以多次进行(我保证第一次配对结束后再调用第二次,希望第二次配对依然可以正常初始化
    发表于 02-21 06:55

    s32k146如何初始化RAM

    我在当前项目中使用 s32k146。因为我需要初始化 RAM,除了上电复位之外的每次复位的特定部分。(On Power On Reset 应初始化所有数据)。有什么办法可以做到这一点吗?
    发表于 03-31 07:36

    RAMFS初始化错误怎么解决呢?

    RAMFS初始化错误 [E/DFS] There is no space to register this file system (ram).
    发表于 05-17 10:44

    STM32外接RTC时钟芯片,怎么进行初始化操作

    怎么进行初始化操作
    发表于 10-09 07:37

    Nand Flash驱动(实现初始化以及读操作)

    Nand Flash驱动(实现初始化以及读操作)
    发表于 12-02 12:36 10次下载
    Nand Flash驱动(实现<b class='flag-5'>初始化</b>以及读<b class='flag-5'>操作</b>)