FPGA-ROM存储器IP核使用

简介: FPGA-ROM存储器IP核使用

(转载至至芯科技的炼狱之战)

首先,还是新建一个工程(赛灵思同样适用)

image.png

然后建立起顶层文件

image.png

由于ROM是一种只读存储器,所以我们需要一个初始化文件来配置ROM中的存储数据,因此接下来,我们需要首先建立这样的配置文件,在Quartus中,配置文件可以选择MIF文件,具体操作如下

点击File->New

image.png

弹出如下界面

image.png

我们选择 ,点击OK,弹出如下界面

image.png

通过该界面,我们可以设置ROM中有效数据的位宽和数据深度,在这里我们选择数据深度为1024,数据位宽为8位,如下图所示

image.png

点击OK,弹出如下界面


image.png

右键点击addr行或列,可以改变行/列的进制显示,如图所示:

image.png

我们这里采用默认设置即可,接下来我们需要在配置文件中填充具体数据,填充具体数据的方法有以下三种,大家可以去尝试                                                                

  1. 直接手动输入
  2. 从别的文本中复制、粘贴
  3. 利用软件自带功能,直接推译出所有数据

由于前两种方法相对简单,在此不再赘述,我们主要来学习一下第三种方法的实现方式,如图所示,右键点击任意单元格,弹出如下界面:

image.png

点击选择 Custom Fill Cells,弹出如下界面

image.png

由于MIF文件的深度为1024,因此我们需要设置起始地址为0,截止地址为1023

image.png

接下来我们需要设置准备填充的具体数据,在这里我们设置数据从0开始递增,步进为1,如图所示

image.png

点击OK,可以看到数据填充完毕,如图所示

image.png

点击Save,保存

image.png

到此为止,ROM的初始化文件已经建立好,接下来我们就可以开始调用ROM,点击TOOLS-> ,弹出如下界面

image.png

点击Next,创建一个新的IP核,弹出如下界面:

image.png

我们选择单口ROM,如图所示

image.png

点击Next,弹出如下界面

image.png

设置空间大小为1024*8

image.png

点击Next

image.png

取消掉Q输出端的寄存器,如下图所示

image.png

点击Next

image.png

点击Browse,添加初始化配置文件

image.png

点击Next

点击Finish,结束配置。接下来我们需要编写ROM的驱动控制模块,具体代码如下:

image.png

ROM控制器的功能就是不断地输出0—1023递增的地址数据,遍历ROM所有存储空间,因此我们需要在顶层模块中实例化rom_contral和my_rom,具体代码如下

image.png

编译整个工程,检查是否有语法错误

编译通过,接下来我们需要编写测试代码,通过仿真查看ROM中数据读取是否正确。具体测试代码如下

image.png

调用modelsim,查看仿真波形

image.png

由波形图可以看出,数据从q端被正确读出

目录
相关文章
|
7月前
|
算法 异构计算 索引
m基于FPGA的Hamming汉明编译码verilog实现,包含testbench测试文件,不使用IP核
m基于FPGA的Hamming汉明编译码verilog实现,包含testbench测试文件,不使用IP核
122 1
|
7月前
|
算法 异构计算
m基于FPGA的RS+卷积级联编译码实现,RS用IP核实现,卷积用verilog实现,包含testbench测试文件
m基于FPGA的RS+卷积级联编译码实现,RS用IP核实现,卷积用verilog实现,包含testbench测试文件
70 0
|
5月前
|
缓存 异构计算
FPGA入门(7):IP核调用(二)
FPGA入门(7):IP核调用(二)
55 0
|
5月前
|
异构计算
FPGA入门(7):IP核调用(一)
FPGA入门(7):IP核调用(一)
111 0
|
7月前
|
芯片 异构计算
【FPGA】高云FPGA之IP核的使用->PLL锁相环(二)
【FPGA】高云FPGA之IP核的使用->PLL锁相环
137 1
|
7月前
|
算法 异构计算 Python
m基于FPGA的217卷积编码维特比译码verilog实现,包含testbench不使用IP核
该内容展示了使用Vivado 2019.2进行卷积编码和维特比译码的模拟。提供了编码、译码输出和RTL图的图片,以及Verilog实现的核心代码。卷积编码是一种前向纠错技术,基于生成多项式产生冗余数据;维特比译码利用动态规划恢复原始信息,最小化错误。Verilog程序包含了编码和译码模块,以及输入输出信号的时序操作。
117 0
|
7月前
|
缓存 监控 异构计算
|
7月前
|
芯片 异构计算
【FPGA】高云FPGA之IP核的使用->PLL锁相环(一)
【FPGA】高云FPGA之IP核的使用->PLL锁相环
303 0
|
7月前
|
存储 资源调度 算法
m基于FPGA和IP核的RS编译码verilog实现,包含testbench测试文件
m基于FPGA和IP核的RS编译码verilog实现,包含testbench测试文件
117 1
|
算法 异构计算
m基于FPGA的256点FFT傅里叶变换verilog实现,含testbench,不使用IP核
m基于FPGA的256点FFT傅里叶变换verilog实现,含testbench,不使用IP核
502 0

热门文章

最新文章