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

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

配置成单端口的ROM

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

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


初始化代码:

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。

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
  1. 仿真文件的设计
    接下来进行最后一步:写仿真文件,点击+号添加仿真文件,将刚刚的设计文件中的端口进行例化,并写上测试的方式,仿真文件的代码如下,保存即可看见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 beginsys_clk = 1'b1;sys_rst_n <= 1'b0;#20sys_rst_n <= 1'b1;end
//change sys_clk
always #10 sys_clk = ~sys_clk;always @(posedge sys_clk or negedge sys_rst_n) beginif (sys_rst_n == 1'b0) beginaddra <= 8'b0;endelse if (addra == 8'd255) beginaddra <= 8'b0;endelse beginaddra <= addra + 1'b1;end
end
//例化
rom tb_rom(.addra(addra),.douta(douta),.sys_clk(sys_clk)
);
endmodule


5. 进行仿真
点击左侧菜单栏中的simulation即可看到仿真结果与设计的想法一致,可以看到输出是相对于地址延时两拍的,这是因为在之前配置IP核的时候添加了输出寄存器(primitive output register),导致延时多了一拍,如果将这个输出寄存器去掉,则输出的数据就会只延时一拍。


本实验基于zedboard、vivado 2018.2实现。

Vivado ROM IP核相关推荐

  1. vivado ROM IP核简单使用

    vivado ROM IP核简单使用 vivado配置 下面选择数据的存储深度和数据的位宽 ROM内存储的数据由coe文件初始化 下面是初始化coe文件的内容 memory_initializatio ...

  2. Vivado 下 IP核 之ROM 读写

    目录 Vivado 下 IP核 之ROM 读写 1.实验简介 2.ROM IP 核简介 3.ROM IP 核配置 3.1.创建 ROM 初始化文件 3.2.单端口 ROM 的配置 加载数据文件,将 . ...

  3. Xilinx vivado 常用IP核使用

    目录 1. Accumulator 12.0 2. Aurora 8B10B 11.1 3. Clocking Wizard 3.1. 时钟资源 4. Divider Generator 5.1 5. ...

  4. (44)Xilinx ROM IP核配置(五)(第9天)

    (44)Xilinx ROM IP核配置(五)(第9天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)Xilinx ROM IP核配置(五)(第9天) 5)技术 ...

  5. Vivado FIFO IP核接口信号介绍

    1.1 Vivado FIFO IP核接口信号介绍 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)Vivado FIFO IP核接口信号介绍: 5)结束语. 1.1.2 ...

  6. Vivado MMCM IP核接口信号介绍

    1.1 Vivado MMCM IP核接口信号介绍 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)Vivado MMCM IP核接口信号介绍: 5)结束语. 1.1.2 ...

  7. vivado dds IP核笔记

    vivado dds IP核笔记 DDS IP核在vivado提供的GUI界面中,可以选择三种配置: Phase Generator and SIN/COS LUT (DDS) SIN/COS LUT ...

  8. Quartus ii 中ROM ip核的应用

    ROM: read only memory: 掉电不丢失数据 RAM可以被配置为ROM 实验内容: 将一组固定数据(三角波)存储在FPGA中使用IP核构建的片上ROM中,开发板上电后,系统开始从ROM ...

  9. 【Verilog基础】ROM IP 核基础知识

    本小节为大家介绍一种较为常用的存储类 IP 核--ROM 的使用方法. ROM 是只读存储器(Read-Only Memory)的简称,是一种只能读出事先所存数据的固态半导体存储器.其特性是一旦储存资 ...

  10. 基于vivado DDS ip核的DDS信号发生器(可调频调相)

    基于Vivado DDS ip核的DDS信号发生器: 在Vivado软件中调出DDS ip核进行设置,很多参数可以参考xilinx官方手册,比较重要的是System Clock系统时钟和Phase W ...

最新文章

  1. Oracle11g_同义词
  2. vsftpd学习笔记
  3. 解决Word出错--一打开就反复重启的问题
  4. RDA8955的新版本SDK串口接收数据的问题记录
  5. java try finally connectoin close_Java I/O流详解
  6. 让物联网真正起飞的关键:无线充电
  7. VC++ CString互转double
  8. gc:C语言的垃圾回收库-英文
  9. Windows 10 归档、对于一些问题的解决与软件推荐
  10. 如何实现分布式锁?赶紧收藏备战金三银四!
  11. php mysql中华图书购物商城
  12. 深度学习之----各种学习策略
  13. samba服务的原理与搭建(转的别人的)
  14. Oracle JDBC 驱动
  15. ADS软件仿真的问题
  16. 《证券市场的风险与心理》
  17. X轴间隔显示-长江水位
  18. mysql 指数 类型_利用MYSQL挑选指数基金
  19. Eclipse反编译插件 Enhanced Class Decompiler
  20. IIC总线最多能接几个设备

热门文章

  1. 1vcpu等于几核?vcpu是什么意思
  2. linux下常用的dns软件,Linux常见应用--DNS服务器常见应用实现
  3. 一个好用的鼠标连点器
  4. 秒杀系统设计与关键技术剖析
  5. linux 下修改文件夹的用户权限和所属组,为文件建立软连接
  6. 2020年下半年软件设计师上午真题及答案解析
  7. digester解析rule详解
  8. win10 jFrameDesigner安装
  9. 基于STM32MINI板步进电机程序(有代码)
  10. Java后台+微信小程序实现推送 “服务通知”