2237|0

69

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

炼狱传奇-ROM之战 [复制链接]

炼狱传奇-ROM之战
在前面的课程,我们已经学习了锁相环,接下来我们一起来学习另一个IP核的使用—片内存储器ROM。
首先,还是新建一个工程

然后建立起顶层文件

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

弹出如下界面

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

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

点击OK,弹出如下界面

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

我们这里采用默认设置即可,接下来我们需要在配置文件中填充具体数据,填充具体数据的方法有以下三种,大家可以去尝试                                                                 
1. 直接手动输入
2. 从别的文本中复制、粘贴
3. 利用软件自带功能,直接推译出所有数据
由于前两种方法相对简单,在此不再赘述,我们主要来学习一下第三种方法的实现方式,如图所示,右键点击任意单元格,弹出如下界面:

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

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

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

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

点击Save,保存

到此为止,ROM的初始化文件已经建立好,接下来我们就可以开始调用ROM,点击TOOLS-> file:///C:\Users\Eric\AppData\Local\Temp\ksohtml\wpsEDEA.tmp.jpg,弹出如下界面

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

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

点击Next,弹出如下界面

设置空间大小为1024*8

点击Next

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

点击Next

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

点击Next

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

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

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

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

调用modelsim,查看仿真波形

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

图片2.png (104.85 KB, 下载次数: 0)

图片2.png
此帖出自FPGA/CPLD论坛
点赞 关注(1)
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表