vivado ROM IP核简单使用

vivado ROM IP核简单使用

vivado配置

image-20220323200345101

image-20220323205555101

下面选择数据的存储深度和数据的位宽

image-20220323205456206

ROM内存储的数据由coe文件初始化

image-20220323210020968

下面是初始化coe文件的内容

memory_initialization_radix=10;
memory_initialization_vector=
1,
2,
3,
4,
5,
6,
7,
8,
9,
10;       //每个数据后面用逗号或者空格或者换行符隔开,最后一个数据后面加分号

第一行定义的是数据的格式,可以是2进制,10进制,16进制数据,下面的数据要以分号结尾。

仿真结果

`timescale 1ns / 1ps

module tb_ROM();

//输入
reg           sys_clk;
reg           sys_rst_n;
reg ena;
//output
wire [15 : 0] douta;


//信号初始化
initial begin
    sys_clk = 1'b0;
	sys_rst_n = 1'b0;
	ena = 1'b1;
	#10
	sys_rst_n = 1'b1;

end

//生成时钟
always #10 sys_clk = ~sys_clk;

reg	 [3 : 0] rom_addr;      //ROM输入地址

always @ (posedge sys_clk or negedge sys_rst_n)
begin
    if(!sys_rst_n | (rom_addr >= 9))
        rom_addr <= 4'b0;
    else
        rom_addr <= rom_addr+1'b1;
end      

blk_mem_gen_0 u_blk_mem_gen_0 (
  .clka(sys_clk),    // input wire clka
  .ena(ena),      // input wire ena
  .addra(rom_addr),  // input wire [3 : 0] addra
  .douta(douta)  // output wire [15 : 0] douta
);

endmodule


image-20220323214922453


2022年3月29日
生成ROM有两种不同的方式,分别是Block RAM 和Distributed RAM。
简称是bram和dram。
其中bram是在芯片设计的时候就已经硬件实现了,无论是否使用,都在那里放着,而dram是利用FPGA中的逻辑资源实现的,可以实现使用多少就生成多少。
bram:

  • 存储容量大,且必须使用时钟触发

dram:

  • 使用灵活,且可以使用时钟也可以不使用时钟组合逻辑输出。

二者使用的简单原则一般是:

较大的存储应用,用bram;零星的小ram,用dram。当然只是一般原则,要结合实际项目考虑

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值