当前位置:   article > 正文

ROM ip核的使用(vivado)_vivado rom ip核

vivado rom ip核

仿真简介

本次实验以XILINX-vivado2021.2为软件平台,以DDS为载体,介绍一下ROM核的使用。

ROM核

简介

ROM(Read-Only Memory,只读存储器)是一种只能读取存储内容而不能修改的存储器。事实上,在FPGA中,无论是ROM还是RAM本质上都是调用的RAM资源,掉电会丢失【很好理解,FPGA的内部存储器主要是基于静态随机存取存储器(SRAM)构建的。SRAM是一种易失性存储器,即在断电时存储的数据会丢失。】,用IP核生成的ROM核只是提前添加了数据文件(.COE),在掉电重启时,FPGA会将数据文件预先加载到ROM核中,实现ROM核的初始化,所以才让ROM核看起来像“掉电不丢失”的存储单元。故在调用之初就必须将要存储在ROM核中的内容放到数据文件(.COE)中写死,在后续的设计中无法修改。

调用

依次点击IP Catalog-->Search,输入ROM,能看到Distributed Memory Generator和Block Memory Generator,二者最主要的差别是生成的 Core所占用的 FPGA 资源不一样,从 Distributed Memory Generator 生成的 ROM/RAM Core 占用的资源是 LUT(查找表,查找表本质就是一个小的 RAM);从 Block Memory Generator 生成的 ROM/RAM Core 占用的资源是 Block Memory(嵌入式的硬件 RAM)。我们在这里使用块存储器,即 Block Memory。

9c873bfe7a5d4ba58ff0605650cf7e56.png

进入IP配置界面

aa3cf1c3b91f48ab8ba5e99c4cfdb093.png

在 "Basic" 栏目下

将 “blk_mem_gen_1” 改为 "ROM"。

在“Memory Type” 框中选择存储器类型,可供选择的类型有:Single Port RAM(单端口 RAM)、 Simple Dual Port RAM(简单双口 RAM)、True Dual Port RAM(真双口 RAM)、Singl Port ROM(单端口 ROM)、Doul Port ROM(双端口 ROM)。这里我们选择“Single Port Rom”单端口 ROM。 其他选择默认设置。

在“Port A Options”栏目下

f566b500d25d41c3bfd9246d2bdc5cc8.png

“Port A Width”数据宽度,表示位宽,例如我DA模块的精度为12位,那我的数据宽度即12。

“Port A Depth”数据深度,可以理解为数据的个数,表示可以存放多少个12位宽大小的数据,在此我取的为4096。

“Enable Port Type”使能端口,“Always Enabled”表示一直使能,用“Use ENA Pin”表示我在读取数据时需要接入使能端口。

下图可以理解成是ROM的内部结构,方便大家深入理解数据深度和数据宽度

8c9470e1dfb24457b33be06cdf951dcf.png

62df17959f5646c79cb04afb4301a835.png

在“Other Options”栏目下

点击Memory Initialization-->Load lnit File,把我们事先准备好的“.COE”文件(我用的是在小梅哥官网上的mif精灵生成的.COE文件,也可以用MATLAB生成)加载进去,其他选择默认值,一个简单的单口ROM就配置好了。

例化

按照下图序号依次点击,选中最后的“.veo”文件,里面就是配置好的ROM例化模板。到此,一个简单的单口ROM就配置好了。

ROM的用法比较简单,在此就不做过多的验证,验证放在后面的系列文章中。

c9c79b99f7bf47f8982b038d16a10a2d.png

双口ROM

双口ROM可以看成是两个单口ROM拼在一起,用法也一样。

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号