【ROM IP】 Vivado ROM IP核调用实验 您所在的位置:网站首页 三星盖世手机官网 【ROM IP】 Vivado ROM IP核调用实验

【ROM IP】 Vivado ROM IP核调用实验

#【ROM IP】 Vivado ROM IP核调用实验| 来源: 网络整理| 查看: 265

ROM IP核调用实验 1. ROM IP核简介

ROM是只读存储器(read only memory)的简称,是一种只能读出事先所存数据的固态半导体存储器。其特性是一旦存储资料就无法再将其改变或删除,且资料不会因为电源关闭而消失。

2. ROM IP核的配置

首先点开vivado创建新的工程,点击左侧的IP catalog 搜索block双击打开,basic选项卡的配置如下:

配置成单端口的ROM

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

在第二个选项卡中配置端口,设置端口为位宽8、深度256,设置为读优先,时钟使能,其余默认。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

第三个选项卡other options,设置加载初始化文件(.coe),因为ROM是只读存储器,是不能在里面写入数据的,所以在初始化的时候将数据放置进去,再通过读操作读取出来,在源文件中添加自己写的初始化数据,(这个文件可以通过python或者matlab生成,这里由于数据量比较少,所以就手动输入)这里设置为数据的进制(radix)为10,填入的数据为从0到63共64个数据,之前设置的深度为256,所以是足够容纳的,将这个文件放置在对应的IP SRC文件中,在配置IP的界面中将此文件浏览进去即可。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

 初始化代码:

memory_initialization_radix = 10; memory_initialization_vector = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63;

其余设置保持默认即可,点击OK即可。

3. ROM IP核的调用

点击+号,添加设计文件,代码如下:

解释:可以在IP Sources中找到veo文件,可以复制ROM IP例化模板,点击复制到刚刚建立的设计文件,可以发现有三个端口需要声明,分别为输入的时钟和地址,以及输出的数据,并定义好地址和数据的位宽为8。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_18,color_FFFFFF,t_70,g_se,x_16

 

 

module rom( input wire sys_clk, input wire [7 : 0] addra, output wire [7 : 0] douta ); //例化单端rom rom_8_256 rom_inst ( .clka(sys_clk), // input wire clka .addra(addra), // input wire [7 : 0] addra .douta(douta) // output wire [7 : 0] douta ); endmodule 4. 仿真文件的设计

接下来进行最后一步:写仿真文件,点击+号添加仿真文件,将刚刚的设计文件中的端口进行例化,并写上测试的方式,仿真文件的代码如下,保存即可看见IP已经在仿真的层级中。

`timescale 1ns / 1ps // // Create Date: 2022/01/31 11:49:47 // Designer Name: linest // Module Name: tb_rom // Revision 0.01 - File Created // // module tb_rom( ); reg sys_clk; reg sys_rst_n; reg [7 : 0] addra; wire [7 : 0] douta; //init sys_clk initial begin sys_clk = 1'b1; sys_rst_n


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有