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文章
7148浏览量
161984 -
ROM
+关注
关注
4文章
524浏览量
84812
发布评论请先 登录
相关推荐
三种常见的光刻技术方法
三种常见的光刻技术方法根据暴光方法的不同,可以划分为接触式光刻,接近式光刻和投影式光刻三种光刻技术。 ◆投影式暴光是利用透镜或反射镜将掩膜版上的图形投影到衬底上的暴光
发表于 01-12 10:56
labview查看本机ip的三种方法
做TCP通讯的时候,有时候需要知道自己的IP虽然知道自己电脑ip可以不用这么麻烦,但是有时候就想用自己所学来获得自己所需,职业病 咳咳这里给出得到本地IP的三种方法。源程序,在附件里。
发表于 11-27 17:17
pcb板的三种敷铜方法解析
中,喜欢这么整。处理无线信号的时候,地线内部用第一种加上网格式覆铜。处理电源信号的时候,选择第二加全覆铜。处理电源层的时候,选第三种加全覆铜。处理大功率电源地线的时候,我会选择在铜箔层第二种加全覆铜
发表于 01-21 16:28
启动Redis的三种方法
Redis笔记(1)——安装、卸载、三种方法启动Redis,Redis命令使用(干货十足),Redis两种方法设置密码,时间复杂度(更完善哦~)
发表于 06-08 16:09
启动Spring Boot项目应用的三种方法
基础。我们知道了Spring Boot是个什么了,那么我们又该如何启动Spring Boot应用呢?这里小编给大家推荐常用的三种方法。分别是IDEA编辑器启动、命令启动、java命令jar文件启动。下面
发表于 01-14 17:33
LwIP协议栈开发嵌入式网络的三种方法有何关系
LwIP协议栈开发嵌入式网络的三种方法分析 轻量级的TCP/IP协议栈LwIP,提供了三种应用程序设计方法,且很容易被移植到多任务的操作系统中。本文结合μC/OS-II这一实时操作系统,以建立TCP
发表于 08-05 07:55
STM32的三种boot模式介绍
浅识STM32的三种boot模式文章目录浅识STM32的三种boot模式任务摘要一、认识boot1.三种BOOT模式介绍2.开发BOOT模式选择3.STM32三种启动模式4.
发表于 12-10 07:46
如何使用三种方式进行文件的创建
新建文件在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
评论