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
+关注
关注
4文章
562浏览量
85676
发布评论请先 登录
相关推荐
启动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
解决电池问题有三种方法
解决电池问题有三种方法
对于手机电池问题如何解决,业内人士指出有以下三种方法:
一、发明新型电池。目前有日本生产商已经展示了概念性的燃
发表于 11-10 14:26
•950次阅读
三种不同的“防 Ping”技巧
三种不同的“防 Ping”技巧
浅析三种不同的“防 Ping”方法
众所周知,Ping命令是一个非常有用的网络命令,大家常用它
发表于 04-14 13:53
•1121次阅读
用示波器快速捕获异常的三种方法
万事开头难!当你想用示波器来分析问题时,你一定有想过,我要如何才能把问题抓下来?当然,只有抓下来之后,才能进行后面种种的分析,否则一切都是空谈。本文将带你用三种最好用的方法将异常抓下来。
三种IGBT驱动电路和保护方法
三种IGBT驱动电路和保护方法(新型电源技术作业答案)-三种IGBT驱动电路和保护方法,非常不错,受益颇多,感兴趣的可以看看,值得一看。
发表于 09-17 17:01
•295次下载
直接进入TIVA系列MCU存在ROM中的bootloader的三种方法(转载)
网上查到的直接进入TIVA系列MCU存在ROM中的bootloader的三种方法,记录一下。使用 TM4C ROM bootloader 的三種方式:Flash Empty當 MCU
发表于 12-09 12:51
•7次下载
继电保护的三种状态解析
继电保护的三种状态解析 继电保护系统是电力系统中非常重要的一个组成部分,其具有三种状态,包括:正常状态、故障状态和巡检状态。这些状态的作用不同,下面我们将对它们进行详尽、详实、细致的解析
评论