找回密码
 注册
关于网站域名变更的通知
查看: 618|回复: 1
打印 上一主题 下一主题

 转——【FPGA开源教程连载】第十四章 嵌入式RAM使用之ROM

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-4-1 08:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
嵌入式RAM使用之ROM
课程目标: 1.学会调用Quartus II软件中提供的ROM核并进行仿真
2.学会使用Signal Tap II软件以及In System Memory Content Editor
实验平台:芯航线FPGA学习套件核心板

$ a$ @" K) {) @9 n9 ]
实验原理:
       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保存至工程目录下。

& [5 H" Z9 _9 a- x% g" }
14-1创建mif文件
为了生成三角波的数据,便捷的方式是使用excel,在一列工具栏里使数据从0加到255再减为0。然后直接复制此列粘贴到生成的mif中即可。
单击Tools—MegaWizard Plug-In Manager来启动Mega Wizard插件管理器,并新建一个IP核。选择MemoryCompiler下的ROM:1-PORT,并将输出目录确定为工程文件夹下的ip文件夹,并以rom保存,单击Next。
5 m! R, Y' V4 t% |: C: j
14-2新建一个单端口的ROM
       这里将ROM的数据个数与位度设置为与mif文件大小一致,存储块类型自动,单时钟操作。
, b1 e; T3 U. W4 o# Z5 I7 G' v
14-3设置数据个数与位度
         选择输出端口q寄存。

! l! l" X( x8 [$ v; J
14-4端口寄存方式选择
         ROM初始化设置,这里可以看出必须进行初始化即leaveit blank不可选,这里与上一讲的RAM不同。通过Browse选择初始化文件,初始化文件可以选择为hex或者mif格式,这里选择前面生成的三角波mif文件。为了在调试的时候使用系统内存储器内容编辑器这里对其使能,并命名为ROM
. I( B2 ], f3 v7 p: G9 v0 W& [
14-5ROM初始化
       然后预览汇总信息,确认后即可点击Finish来完成此IP的配置并将其加入工程中设置为顶层文件。
为了测试仿真编写测试激励文件,新建rom_tb.v文件并输入以下内容再次进行分析和综合直至没有错误以及警告,保存到testbench文件夹下。这里除了实现例化需要仿真的文件以及时钟创建,还实现了地址数从0自加到2555,但是由于本ROM的最大数据个数是255,因此在address第一次加满255后会重新从0开始自加,这样就有十个地址数循环。

, B! R9 ^! L% q+ z/ ~" |( H, v  ?4 n8 n2 Z( e
设置好仿真脚本后进行功能仿真,可以看到如图14-6所示的数据写入时的波形文件。发现数据发生变化了,但是不能直观看到三角波,这里将所有信号均切换到无符号数,并把输出数据格式改为模拟的自动模式,即可看到图14-7所示的十个周期三角波波形文件。
) s+ w9 p- N& A: N
* n% _( ~+ F" H' S* h" u$ Y9 Z) i
14-6修改输出数据显示格式

2 ?1 G& s' Z7 x5 i
14-7三角波仿真波形
       这里使用Sin3e生成一个正弦波的mif文件,并以此初始化ROM。再次启动仿真可能看到如图14-8-1的波形文件,这是由于数据格式为有符号整型,只需要修改为无符号整型即可。如果看到如图14-8-2所示的波形,是因为这里当前波形数据的范围设置问题,只需右键打开Properties按照图14-9修改即可。设置无误后,即可看到如图14-10所示的正弦波波形。
$ k! _8 E, Q* m% m+ {
14-8-1正弦波仿真波形
5 [% E$ C3 j: F  u7 I- E0 K3 U
14-8-2 正弦波仿真波形

% ^- X1 f" N! K8 |- f7 g. u% K* o5 o
14-9修改波形数据范围
0 \: I2 L: Q# r5 d
14-10正弦波仿真波形
       这样ROM的仿真即为通过,现在为了实现用SignaTap II逻辑分析仪以及In-System Memory Content Editor,进行板级测试,编写一个顶层文件并以ROM_top.v保存至rtl下。这里除了实现调用已经设计好的ROM IP核,还实现了每当系统时钟上升沿到来后,ROM地址进行加一。

) j! u1 a3 u0 A! E* L# C
* A4 F$ _0 s6 ?
* b* `5 C4 C6 O, u5 M4 A+ z
       单击File—New新建一个SignalTap II文件。并在Signal Configuration中选择采样时钟,先将筛选关键字设置为Pin:all,单击List列出所有符合筛选标准的引脚。这里选中Clk单击“>”将其确定为采样时钟,这里也可以直接双击Clk确定。

4 N. g  e% t, \) N' z* Q: j
14-11新建SignalTap II文件

4 e4 @, m& K) R
14-12-1设置采样时钟

# U8 ^& h8 V- ^/ u
14-12-2 设置采样时钟
现添加待采样信号,在Setup界面中双击空白处弹出如图14-13所示的界面。这里选择输出信号q作为待测信号,这里只需将总线加入即可。

8 Z) k8 c; G' Q  u
14-13-1添加待采样信号
8 c  t+ R0 C& A) b  m* s
14-13-2添加待测信号
设置好采样时钟以及待采样数据点击file save至工程目录下,名字可自取。这时即可以看出此时资源使用数据。
# Z, F6 L7 h( {
14-14深度256时资源使用数据
这里采样时钟为50M,一个周期的波形划分为256份,因此如果想看十个周期的波形这里深度最少256*10,这里直接设置为4K深度,如图14-15。修改后可以看到资源使用随之增加。

9 B; I; _/ l* W; Y0 L9 _
14-15深度修改为4K
保存SignalTapII设置后,分配引脚后进行全编译,这里需指出这里分配的Pin并没有实际意义,因此输出可以随意设置为板子的空闲引脚即可,这里设置在GPIO0。编译无误后,下载进开发板
4 p7 I8 v/ l/ O) S( @% B6 S" A' M4 B
图14-16 Pin Planner
下载后双击工程下的STP文件来使用SignalTap II逻辑分析仪并设置好JTAG。这里有两种采样方式,一种为单次采样这样是单次抓取数据直到4K深度填满;一种为循环采集。这里选择循环采集,可看到图14-18的数据。

" Y* ]  |' W# v7 L7 l3 X) M4 f: C$ P
14-17设置JTAG
14-18SignalTap II逻辑分析仪采样数据
         这里跟modelsim仿真时数据类似,也想看到更直观的波形。只需在信号q右键选择BusDisplay Fomat中的UnsignedLine Chart即可看到调整后的数据显示,如图14-20

' j1 t% M( G! e% {" n& F' N( h  _
14-19设置数据显示格式
9 q! l5 ]' v; a- M
14-20修改后数据显示格式的采样数据
       这样就成功实现了SignalTapII逻辑分析仪抓取数据,现在为了实现在线更改ROM中的数据,这里介绍In-System Memory Content Editor工具的使用。
单击Tools打开In-System Memory Content Editor。
- Q6 Z# G! t8 Y
图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文件进行比对是否一致。
( A# Z( ?: D9 }0 U: @1 x" ]

- B6 k# s8 B& O# a: E: O% w
14-21使用In-SystemMemory Content Editor读取ROM数据
8 _. P" o& J" B- ]+ D" H1 c% o
14-22在线修改ROM文件
+ o$ e( p: M' i* ?
14-23写入修改后的mif文件

2 Y* Y: z8 f1 t2 f9 q
14-24修改rom后的输出波形

4 e- ]2 `1 P0 @& T6 A
14-25读取更新后ROM数据
这样板级调试结束。这样就实现了将一组固定的数据(三角波形表)存储在FPGA中使用IP核构建的片上ROM中,开发板上电后,系统开始从ROM中读出数据,并将数据直接通过并口输出。通过使用Signal Tap II软件实时抓取并口上的数据,显示得到三角波形。然后使用Quartus II软件中提供的In-System Memory Content Editor工具在线更改ROM中的数据(将数据更改为正弦波形表),然后再次观察signal Tap II工具抓取到的波形数据。
9 ^) v7 P9 t+ n3 a
" w8 Z" r, p, a. l: I: c

" I' S' [3 ^# z3 h
" t$ b% {  V( M
小梅哥
芯航线电子工作室

7 H, ^' W! g, o5 D7 z9 Z$ o
游客,如果您要查看本帖隐藏内容请回复

# i" n: q& y# B/ y# I4 D

该用户从未签到

2#
发表于 2019-4-1 16:58 | 只看该作者
这一套教程很不错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-30 14:19 , Processed in 0.140625 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表