0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

三种种创建ROM的方法解析

454398 来源:csdn 作者:ferast 2020-11-23 14:13 次阅读

ROM是只读型存储器,写入数据之后就不能在对数据进行更改。下面提供3种创建ROM的方法:
一、自己动手通过readmemh或readmemb函数来将自己写的文件与ROM进行关联;有几点需要注意的地方:寄存器rom的大小(位宽和深度)如下面的代码中位宽为8,深度为1024

// An highlighted block
module myrom(
	clk,
	addr,
	q
);
input clk;
input [9:0] addr;
output reg[9:0] q;
reg [7:0] rom [1023:0];
initial begin 
	$readmemh("./xxx.txt",rom,0,1023);
	//读16进制的数据
	//格式$readmemh("file_name",memory_name[,start_addr[,finish_addr]]);
	//file_name:文件名;memory_name:ROM名;start_addr:开始地址;finish_addr:结束地址
	//[]的内容为可选内容,
	//readmemb 读2进制的数据
end
always(posedge clk)
	q<=rom[addr];
endmodule

二、第二中方法是通过ip核创建rom。选择菜单栏中的Tools下的ip核配置工具,搜索rom,选着Verilog语言,并命名文件。点击下一步

可以看到,在配置工具中依然需要设置位宽和深度。

在mem init中的文件名,这里需要注意的是文件必须是.mif和.hex文件。

三、第三中方法是直接生成代码,在代码段上进行修改。

生成的代码段如下:这里需要修改的是两个参数DATA_WIDTH、ADDR_WIDTH。然后将对应的文件名修改了就可以了。

// Quartus II Verilog Template
// Single Port ROM

module single_port_rom
#(parameter DATA_WIDTH=8, parameter ADDR_WIDTH=8)
(
	input [(ADDR_WIDTH-1):0] addr,
	input clk, 
	output reg [(DATA_WIDTH-1):0] q
);

	// Declare the ROM variable
	reg [DATA_WIDTH-1:0] rom[2**ADDR_WIDTH-1:0];

	// Initialize the ROM with $readmemb.  Put the memory contents
	// in the file single_port_rom_init.txt.  Without this file,
	// this design will not compile.

	// See Verilog LRM 1364-2001 Section 17.2.8 for details on the
	// format of this file, or see the "Using $readmemb and $readmemh"
	// template later in this section.

	initial
	begin
		$readmemb("single_port_rom_init.txt", rom);
	end

	always @ (posedge clk)
	begin
		q <= rom[addr];
	end

endmodule

编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储器
    +关注

    关注

    38

    文章

    7452

    浏览量

    163606
  • ROM
    ROM
    +关注

    关注

    4

    文章

    562

    浏览量

    85676
收藏 人收藏

    评论

    相关推荐

    光电耦合器的三种检测方法

    光电耦合器的三种检测方法
    发表于 05-22 11:26 939次阅读
    光电耦合器的<b class='flag-5'>三种</b>检测<b class='flag-5'>方法</b>

    启动Redis的三种方法

    Redis笔记(1)——安装、卸载、三种方法启动Redis,Redis命令使用(干货十足),Redis两种方法设置密码,时间复杂度(更完善哦~)
    发表于 06-08 16:09

    如何使用三种方式进行文件的创建

    新建文件在GUI的桌面环境中,创建文件是很简单的,例如Windows平台中,大多数情况下只需要点击右键,就可以新建文本文档等各类文件。在终端中创建文件,大体有这么三种方式,使用touch命令进行
    发表于 12-15 08:42

    STM32的三种Boot模式的差异

    如有错误,欢迎指正,谢谢!目录一、STM32的三种Boot模式的差异二、创建基于MDK创建纯汇编语言的STM32工程模板、汇编基本语法的学习四、编程练习一、STM32的
    发表于 12-20 07:54

    记录一下MCU存在ROM中的bootloader的三种方法

    网上查到的直接进入TIVA系列MCU存在ROM中的bootloader的三种方法,记录一下。使用 TM4C ROM bootloader 的種方式:Flash Empty當 MCU
    发表于 02-14 06:45

    噪声系数测量的三种方法

    噪声系数测量的三种方法 本文介绍了测量噪声系数的三种方法:增益法、Y
    发表于 05-07 13:38 2143次阅读

    解决电池问题有三种方法

    解决电池问题有三种方法      对于手机电池问题如何解决,业内人士指出有以下三种方法:   一、发明新型电池。目前有日本生产商已经展示了概念性的燃
    发表于 11-10 14:26 950次阅读

    三种不同的“防 Ping”技巧

    三种不同的“防 Ping”技巧 浅析三种不同的“防 Ping”方法   众所周知,Ping命令是一个非常有用的网络命令,大家常用它
    发表于 04-14 13:53 1121次阅读

    用示波器快速捕获异常的三种方法

    万事开头难!当你想用示波器来分析问题时,你一定有想过,我要如何才能把问题抓下来?当然,只有抓下来之后,才能进行后面种种的分析,否则一切都是空谈。本文将带你用三种最好用的方法将异常抓下来。
    的头像 发表于 01-04 09:26 6251次阅读
    用示波器快速捕获异常的<b class='flag-5'>三种方法</b>

    python统计词频的三种方法

    python统计词频的三种方法方法
    发表于 05-25 14:33 2次下载

    三种IGBT驱动电路和保护方法

    三种IGBT驱动电路和保护方法(新型电源技术作业答案)-三种IGBT驱动电路和保护方法,非常不错,受益颇多,感兴趣的可以看看,值得一看。
    发表于 09-17 17:01 295次下载
    <b class='flag-5'>三种</b>IGBT驱动电路和保护<b class='flag-5'>方法</b>

    直接进入TIVA系列MCU存在ROM中的bootloader的三种方法(转载)

    网上查到的直接进入TIVA系列MCU存在ROM中的bootloader的三种方法,记录一下。使用 TM4C ROM bootloader 的種方式:Flash Empty當 MCU
    发表于 12-09 12:51 7次下载
    直接进入TIVA系列MCU存在<b class='flag-5'>ROM</b>中的bootloader的<b class='flag-5'>三种方法</b>(转载)

    噪声系数测量的三种方法

    本文介绍了测量噪声系数的三种方法:增益法、Y系数法和噪声系数测试仪法。这三种方法的比较以表格的形式给出。
    的头像 发表于 05-18 11:02 1267次阅读
    噪声系数测量的<b class='flag-5'>三种方法</b>

    继电保护的三种状态解析

    继电保护的三种状态解析  继电保护系统是电力系统中非常重要的一个组成部分,其具有三种状态,包括:正常状态、故障状态和巡检状态。这些状态的作用不同,下面我们将对它们进行详尽、详实、细致的解析
    的头像 发表于 09-27 16:00 2709次阅读

    异步电机主要的三种调速方法解析

    异步电机主要的三种调速方法解析
    的头像 发表于 01-07 17:50 2249次阅读
    异步电机主要的<b class='flag-5'>三种</b>调速<b class='flag-5'>方法</b><b class='flag-5'>解析</b>