在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2457|回复: 0

[原创] 【FPGA开源教程连载】第十四章 嵌入式RAM使用之ROM

[复制链接]
发表于 2017-1-4 01:58:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
嵌入式RAM使用之ROM





课程目标: 1.学会调用Quartus II软件中提供的ROM核并进行仿真
2.学会使用Signal Tap II软件以及In System Memory Content Editor
实验平台:芯航线FPGA学习套件核心板
图片1.jpg
实验原理:
       FPGA内部并没有严格意义上的ROM,其都是有RAM经过适当的配置来实现一个ROM
在进行系统调试时除了示波器还会经常用的逻辑分析仪,这里Altera提供了一组FPGA的偏上调试工具集:SignaTapII逻辑分析仪、SignalProbe(信号探测器)、逻辑分析仪接口(LAI)In-System Memory Content Editor(系统内存储器内容编辑器)ISSP(系统内的源和探针)以及虚拟JTAG接口。
       SignaTap II逻辑分析仪,用于辅助设计调试过程,提供了用户设计全速运行在FPGA芯片上时不使用外部I/O引脚就能检查内部信号状态的解决方案。其与传统的外部物理逻辑分析仪类似,因此可以在不使用硬件测试设备的前提下调试正常FPGA操作期间的FPGA设计。
实验步骤:
新建一个以名为rom的工程保存在prj下,单击File—New,或者工具栏中的New,弹出图14-1的选择框。此处选择Memory Files中的Memory Initialization File,来创建一个mif文件。这里选择数据个数为256,数据位度为8。以ROM.mif保存至工程目录下。
图片2.jpg 图片3.jpg
14-1创建mif文件
为了生成三角波的数据,便捷的方式是使用excel,在一列工具栏里使数据从0加到255再减为0。然后直接复制此列粘贴到生成的mif中即可。
单击Tools—MegaWizard Plug-In Manager来启动Mega Wizard插件管理器,并新建一个IP核。选择MemoryCompiler下的ROM:1-PORT,并将输出目录确定为工程文件夹下的ip文件夹,并以rom保存,单击Next。
图片4.jpg
14-2新建一个单端口的ROM
       这里将ROM的数据个数与位度设置为与mif文件大小一致,存储块类型自动,单时钟操作。
图片5.jpg
14-3设置数据个数与位度
         选择输出端口q寄存。
图片6.jpg
14-4端口寄存方式选择
         ROM初始化设置,这里可以看出必须进行初始化即leaveit blank不可选,这里与上一讲的RAM不同。通过Browse选择初始化文件,初始化文件可以选择为hex或者mif格式,这里选择前面生成的三角波mif文件。为了在调试的时候使用系统内存储器内容编辑器这里对其使能,并命名为ROM
图片7.jpg
14-5ROM初始化
       然后预览汇总信息,确认后即可点击Finish来完成此IP的配置并将其加入工程中设置为顶层文件。
为了测试仿真编写测试激励文件,新建rom_tb.v文件并输入以下内容再次进行分析和综合直至没有错误以及警告,保存到testbench文件夹下。这里除了实现例化需要仿真的文件以及时钟创建,还实现了地址数从0自加到2555,但是由于本ROM的最大数据个数是255,因此在address第一次加满255后会重新从0开始自加,这样就有十个地址数循环。
图片8.jpg 图片9.jpg

设置好仿真脚本后进行功能仿真,可以看到如图14-6所示的数据写入时的波形文件。发现数据发生变化了,但是不能直观看到三角波,这里将所有信号均切换到无符号数,并把输出数据格式改为模拟的自动模式,即可看到图14-7所示的十个周期三角波波形文件。

图片10.jpg
14-6修改输出数据显示格式
图片11.jpg
14-7三角波仿真波形
       这里使用Sin3e生成一个正弦波的mif文件,并以此初始化ROM。再次启动仿真可能看到如图14-8-1的波形文件,这是由于数据格式为有符号整型,只需要修改为无符号整型即可。如果看到如图14-8-2所示的波形,是因为这里当前波形数据的范围设置问题,只需右键打开Properties按照图14-9修改即可。设置无误后,即可看到如图14-10所示的正弦波波形。
图片12.jpg
14-8-1正弦波仿真波形
图片13.jpg
14-8-2 正弦波仿真波形
图片14.jpg
14-9修改波形数据范围
图片15.jpg
14-10正弦波仿真波形
       这样ROM的仿真即为通过,现在为了实现用SignaTap II逻辑分析仪以及In-System Memory Content Editor,进行板级测试,编写一个顶层文件并以ROM_top.v保存至rtl下。这里除了实现调用已经设计好的ROM IP核,还实现了每当系统时钟上升沿到来后,ROM地址进行加一。
图片16.jpg


       单击File—New新建一个SignalTap II文件。并在Signal Configuration中选择采样时钟,先将筛选关键字设置为Pin:all,单击List列出所有符合筛选标准的引脚。这里选中Clk单击“>”将其确定为采样时钟,这里也可以直接双击Clk确定。
图片17.jpg
14-11新建SignalTap II文件
图片18.jpg
14-12-1设置采样时钟
图片19.jpg
14-12-2 设置采样时钟
现添加待采样信号,在Setup界面中双击空白处弹出如图14-13所示的界面。这里选择输出信号q作为待测信号,这里只需将总线加入即可。
图片20.jpg
14-13-1添加待采样信号
图片21.jpg
14-13-2添加待测信号
设置好采样时钟以及待采样数据点击file save至工程目录下,名字可自取。这时即可以看出此时资源使用数据。
图片22.jpg
14-14深度256时资源使用数据
这里采样时钟为50M,一个周期的波形划分为256份,因此如果想看十个周期的波形这里深度最少256*10,这里直接设置为4K深度,如图14-15。修改后可以看到资源使用随之增加。
图片23.jpg
14-15深度修改为4K
保存SignalTapII设置后,分配引脚后进行全编译,这里需指出这里分配的Pin并没有实际意义,因此输出可以随意设置为板子的空闲引脚即可,这里设置在GPIO0。编译无误后,下载进开发板。
图片24.jpg
图14-16 Pin Planner
下载后双击工程下的STP文件来使用SignalTap II逻辑分析仪并设置好JTAG。这里有两种采样方式,一种为单次采样这样是单次抓取数据直到4K深度填满;一种为循环采集。这里选择循环采集,可看到图14-18的数据。
图片25.jpg
14-17设置JTAG
图片26.jpg
14-18SignalTap II逻辑分析仪采样数据
         这里跟modelsim仿真时数据类似,也想看到更直观的波形。只需在信号q右键选择BusDisplay Fomat中的UnsignedLine Chart即可看到调整后的数据显示,如图14-20
图片27.jpg
14-19设置数据显示格式
图片28.jpg
14-20修改后数据显示格式的采样数据
       这样就成功实现了SignalTapII逻辑分析仪抓取数据,现在为了实现在线更改ROM中的数据,这里介绍In-System Memory Content Editor工具的使用。
单击Tools打开In-System Memory Content Editor。
图片29.jpg
图14-20 启动In-System Memory Content Editor
选择好调试器待界面状态变成JTAG ready,此时会看到数据框全为??,这是由于尚未对ROM进行读取,只需单击读取键即可,ROM中的数据就会被读取出来如图14-21,可与mif文件进行比对是否一致。
实现在线数据读取后,现在实现数据写入。可直接在rom右键找到InportData From File,如图14-22所示选择需要替换的三角波mif文件即可。选择后点击写入,这时回到SignalTap II 界面即可以看到更改ROM后的输出q的波形已切换为三角波。
这时可以回到In-SystemMemory Content Editor界面,点击读取,ROM中的数据就会被再次读取出来如图14-25,可与此时的mif文件进行比对是否一致。

图片30.jpg
14-21使用In-SystemMemory Content Editor读取ROM数据
图片31.jpg
14-22在线修改ROM文件
图片32.jpg
14-23写入修改后的mif文件
图片33.jpg
14-24修改rom后的输出波形
图片34.jpg
14-25读取更新后ROM数据
这样板级调试结束。这样就实现了将一组固定的数据(三角波形表)存储在FPGA中使用IP核构建的片上ROM中,开发板上电后,系统开始从ROM中读出数据,并将数据直接通过并口输出。通过使用Signal Tap II软件实时抓取并口上的数据,显示得到三角波形。然后使用Quartus II软件中提供的In-System Memory Content Editor工具在线更改ROM中的数据(将数据更改为正弦波形表),然后再次观察signal Tap II工具抓取到的波形数据。




小梅哥
芯航线电子工作室


关于学习资料,小梅哥系列所有能够开放的资料和更新(包括视频教程,程序代码,教程文档,工具软件,开发板资料)都会发布在我的云分享。(记得订阅)链接:http://yun.baidu.com/share/home?uk=402885837&view=share#category/type=0
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-28 20:49 , Processed in 0.023491 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表