1.ROM介绍
ROM是只读存储器(only read memory)的简称,是一种只能读出事先所存储数据的固态半导体存储器。FPGA中是没有非易性存储器的,ROM ip核其实是使用到FPGA中的RAM资源。在 FPGA 运行时通过数据文件给 ROM 模块初始化,模拟成非易失存储器。
Altera 推出的 ROM IP 核分为两种类型:单端口 ROM 和双端口 ROM。对于单端口ROM 提供一个读地址端口和一个读数据端口,只能进行读操作;双端口 ROM 与单端口ROM 类似,区别是其提供两个读地址端口和两个读数据端口。
ROM是只读存储器(Read-Only Memory)的简称,是一种只能读出事先所存数据的固态半导体存储器。其特性是一旦储存资料就无法再将之改变或删除,且资料不会因为电源关闭而消失。
单端口ROM
双端口ROM
2.1.单端口参数配置
2.1.1.How wide should the 'q' output bus be?
How many x-bit words of memory?
配置ROM的位宽和深度
2.1.2.What should the memory block type be?
使用什么类型的内存
在官方资料中,有提及什么类型的芯片适合用什么类型的内存,一般不使用Logic Cell即LCS
本人使用的是Cyclone IV芯片,只支持M9K或LCS,选择Auto(自动)即选择M9K
2.1.3.What docking method would you like to use?
选择单时钟控制输入输出,还是选择双时钟分别控制输入输出
2.1.4.建议命名规则:rom_(数据宽度)x(数据深度)
例如:rom_8x256
2.2.寄存器时钟和复位信号的设置
2.2.1.Create one dock enable signal for each dock signal. Note: All registered ports are controlled by the enable signal(s)
是否创建一个时钟使能信号
2.2.1.Create an 'adr'asynchronous dear for the registered ports
是否创建一个清零信号
2.3.存储器的初始化

2.3.1.使用mif文件对ROM进行初始化
文件名为黑色,则为添加成功,文件名为红色则为添加失败
2.4.仿真文件的设置
本次按照默认参数
2.5.总体设计
取个所需生成文件,本人此次只生成inst文件
最后可观察左上角图片,是否配置正确,点击FInsh配置完成
3.双端口ROM配置
建议命名规则:rom_(数据宽度)x(数据深度)_double
例如:rom_8x256_double
3.1.宽度设置
3.1.1.How do you want to specify the memory size?
As a number of words第一种使用word类型,即和单端口ROM一样
As a number of bits第二种使用bit类型。
这里使用word类型
3.1.2.How many 8-bit words of memory?
数据深度,即数据容量的选择,本次我设计的为256
3.1.3.Use different data widths on different ports
是否对两个输出端口使用不同的大小,勾选即可分别设计两个端口的大小,不勾选,则使用相同大小
3.1.4.What should the memory block type be?
使用的寄存器类型,可以参考单端口配置的第1点
3.2.时钟/使能信号的设置
3.2.1.What docking method do you want to use?
Single dock:单时钟,即所有的输入输出信号使用同一时钟
Dual dock: use separate 'read' and 'write' docks:“读取”和“写入”分别使用同一的时钟
Dual dock: use separate 'input' and 'output' docks:的“输入”和“输出”分别使用同一时钟
No dock(fully asynchronous):完全异步
Dual dock: use separate docks for A and B ports:A和B端口分别使用同一的时钟
3.2.2.Create 'rden_a' and 'rden_b'read enable signals Byte Enable Ports
是否创建A、B端口的读使能信号
3.3.寄存器、时钟使能信号、清零信号的设置
3.3.1.Read output port(s)'q_a'and'q_b'
是否将两个输出端口添加寄存器
注意:若选否,则我们的输出端口将会延后输入信号一个时钟周期,
若选是,则我们的输出端口将会延后输入信号两个时钟周期,并且时钟信号clock可以输入更高的频率
3.3.2.Create one dock enable signal for each dlock signal
是否给时钟信号添加使能信号
3.3.3.Create an 'adr'asynchronous dear for the registered ports
是否给寄存器(两输出端口的寄存器)添加清零信号
3.3.4.使用mif文件对ROM初始化
文件名为黑色,则为添加成功,文件名为红色则为添加失败
3.4.文件的设置
本次按照默认参数
3.5.总体设计
取个所需生成文件,本人此次只生成inst文件
最后可观察左上角图片,是否配置正确,点击Finsh配置完成
参考文章链接:
《FPGA——ROM》:https://blog.csdn.net/a17377547725/article/details/125949625