Vivado ROM IP核
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
- 仿真文件的设计
接下来进行最后一步:写仿真文件,点击+号添加仿真文件,将刚刚的设计文件中的端口进行例化,并写上测试的方式,仿真文件的代码如下,保存即可看见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核相关推荐
- vivado ROM IP核简单使用
vivado ROM IP核简单使用 vivado配置 下面选择数据的存储深度和数据的位宽 ROM内存储的数据由coe文件初始化 下面是初始化coe文件的内容 memory_initializatio ...
- Vivado 下 IP核 之ROM 读写
目录 Vivado 下 IP核 之ROM 读写 1.实验简介 2.ROM IP 核简介 3.ROM IP 核配置 3.1.创建 ROM 初始化文件 3.2.单端口 ROM 的配置 加载数据文件,将 . ...
- Xilinx vivado 常用IP核使用
目录 1. Accumulator 12.0 2. Aurora 8B10B 11.1 3. Clocking Wizard 3.1. 时钟资源 4. Divider Generator 5.1 5. ...
- (44)Xilinx ROM IP核配置(五)(第9天)
(44)Xilinx ROM IP核配置(五)(第9天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)Xilinx ROM IP核配置(五)(第9天) 5)技术 ...
- Vivado FIFO IP核接口信号介绍
1.1 Vivado FIFO IP核接口信号介绍 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)Vivado FIFO IP核接口信号介绍: 5)结束语. 1.1.2 ...
- Vivado MMCM IP核接口信号介绍
1.1 Vivado MMCM IP核接口信号介绍 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)Vivado MMCM IP核接口信号介绍: 5)结束语. 1.1.2 ...
- vivado dds IP核笔记
vivado dds IP核笔记 DDS IP核在vivado提供的GUI界面中,可以选择三种配置: Phase Generator and SIN/COS LUT (DDS) SIN/COS LUT ...
- Quartus ii 中ROM ip核的应用
ROM: read only memory: 掉电不丢失数据 RAM可以被配置为ROM 实验内容: 将一组固定数据(三角波)存储在FPGA中使用IP核构建的片上ROM中,开发板上电后,系统开始从ROM ...
- 【Verilog基础】ROM IP 核基础知识
本小节为大家介绍一种较为常用的存储类 IP 核--ROM 的使用方法. ROM 是只读存储器(Read-Only Memory)的简称,是一种只能读出事先所存数据的固态半导体存储器.其特性是一旦储存资 ...
- 基于vivado DDS ip核的DDS信号发生器(可调频调相)
基于Vivado DDS ip核的DDS信号发生器: 在Vivado软件中调出DDS ip核进行设置,很多参数可以参考xilinx官方手册,比较重要的是System Clock系统时钟和Phase W ...
最新文章
- Oracle11g_同义词
- vsftpd学习笔记
- 解决Word出错--一打开就反复重启的问题
- RDA8955的新版本SDK串口接收数据的问题记录
- java try finally connectoin close_Java I/O流详解
- 让物联网真正起飞的关键:无线充电
- VC++ CString互转double
- gc:C语言的垃圾回收库-英文
- Windows 10 归档、对于一些问题的解决与软件推荐
- 如何实现分布式锁?赶紧收藏备战金三银四!
- php mysql中华图书购物商城
- 深度学习之----各种学习策略
- samba服务的原理与搭建(转的别人的)
- Oracle JDBC 驱动
- ADS软件仿真的问题
- 《证券市场的风险与心理》
- X轴间隔显示-长江水位
- mysql 指数 类型_利用MYSQL挑选指数基金
- Eclipse反编译插件 Enhanced Class Decompiler
- IIC总线最多能接几个设备