Altera中rom的使用

一、ROM简介

       由于工作需要,需要持续发送一些固定数据,所以需要使用ROM,在quartus中,ROM可以分为两类,其一为单端口,其二为双端口,如下图所示:

Altera中rom的使用

ROM是一种嵌入式memory,在实际中只能对其进行读数据,而不能写数据,而ROM中的数据是在生成IP时候进行配置的。在ROM初始化时候,可以选择两种数据,其一为mif文件,其二为hex文件。
       而mif和hex文件可以通过quartus生成,具体生成方法:打开quartus,然后新建文件,如下图所示,上面的生成的是hex文件,下面生成的是hex文件。

Altera中rom的使用

Hex文件格式如下图所示:

Altera中rom的使用

Mif文件格式如下图所示,其中WIDTH为数据位宽,DEPTH表示ROM的深度,和address相关,4096表示地址位宽为12.

Altera中rom的使用

二、ROM的仿真

ROM的仿真和其他IP仿真不同,此时需要做一些修改,这个是因为modelsim无法识别mif文件,如果需要使用modelsim仿真,rom的初始值必须为hex文件。如果需要仿真ROM需要先做以下几个步骤:

1、  下载convert_hex2ver.dll

该文件功能为将hex转换为modelsim能够识别的ver文件,该文件可以在网上下载。

2、  修改modelsim.ini文件

1、  将convert_hex2ver.dll文件放在modelsim安装路径的win32目录下

2、  修改ini文件

需要注意的是,网上有些教程是错误的!!!在ini文件中找到[vsim]

在它下一行输入:Veriuser = C:/modeltech_10.1c/win32/convert_hex2ver.dll

如下图所示,具体路径根据modelsim的安装路径进行修改。

Altera中rom的使用

3、生成rom IP和hex文件

该部分由quartus完成,首先生成rom初始化文件,然后生成rom的IP核。打开quartus,然后新建文件,选择Hex文件如下图所示:

Altera中rom的使用

弹出下图,选择默认,点击OK

Altera中rom的使用

此时hex文件里面的值都为0,鼠标点中数据部分的任意一个格子,例如我选择第二个,然后右击,弹出下图,然后选择custom fill cells。

Altera中rom的使用

弹出下图,并修改如下,然后保存,就完成hex生成和初始化。

Altera中rom的使用

接着生成rom IP,如果单纯仿真IP,可以不用新建工程,直接新建IP,按一般的方式生成IP,直到这一步,需要点击browse,选择刚刚保存的hex文件

Altera中rom的使用

Altera中rom的使用

点击finish,完成IP的生成。

4、编写testbench

Altera中rom的使用

5、新建modelsim工程

这里需要注意的是,在工程中需要添加的文件:

1、  IP核的v文件

2、  Testbench文件

3、  Hex文件

4、  altera_mf.v文件

第四个文件为altera的库文件,可以在quartus安装路径下搜索获得。

最后仿真结果如下图所示,如何看图形,可以在FFT文档中查看。

Altera中rom的使用

6、仿真正弦波

在实际使用中,我们需要使用的更多的是sin或者cos信号,如果要仿真sin信号,就需要修改hex文件的初始化文件。具体做法使用matlab生成sin或者cos信号。

Matlab生成sin信号:

网上的代码如下:

index = linspace(0,2*pi,257);

temp1 = sin(index);

temp2= temp1*63+64;

temp2=temp2+0.5;

temp3=fix(temp2);

dlmwrite('d:\\sin.txt',temp3,'delimiter','\t');

Altera中rom的使用

还可以使用其他的代码:

fc=10e6;

nn=1/fc/256

t=[0:256]*nn;

x=sin(2*pi*fc*t);

xx=fix(128+(2^7-1)*x);

dlmwrite('d:\\sin.txt',xx,'delimiter','\t');

Altera中rom的使用

这里需要注意的是,由于我们的rom深度为256,但是我们生成的txt文件的长度为257,所以txt文件的长度要比rom多一个数据,否则无法对hex文件赋值。

Altera中rom的使用

三、ROM下板测试

最后还是可以将rom生成bit文件,然后下到FPGA中,然后使用signaltap进行抓取数据,结果如下图所示。

Altera中rom的使用

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值