找回密码
 注册
关于网站域名变更的通知
查看: 617|回复: 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学习套件核心板
8 w, s6 T/ O/ M! `( H. h: V
实验原理:
       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保存至工程目录下。

/ E/ q( M; \4 `- K# Q: k
14-1创建mif文件
为了生成三角波的数据,便捷的方式是使用excel,在一列工具栏里使数据从0加到255再减为0。然后直接复制此列粘贴到生成的mif中即可。
单击Tools—MegaWizard Plug-In Manager来启动Mega Wizard插件管理器,并新建一个IP核。选择MemoryCompiler下的ROM:1-PORT,并将输出目录确定为工程文件夹下的ip文件夹,并以rom保存,单击Next。

2 ~, I0 @8 t1 \6 D# N" F; L
14-2新建一个单端口的ROM
       这里将ROM的数据个数与位度设置为与mif文件大小一致,存储块类型自动,单时钟操作。

; n+ d) ?* ~6 R5 f
14-3设置数据个数与位度
         选择输出端口q寄存。

3 b4 }; o, F4 \. x
14-4端口寄存方式选择
         ROM初始化设置,这里可以看出必须进行初始化即leaveit blank不可选,这里与上一讲的RAM不同。通过Browse选择初始化文件,初始化文件可以选择为hex或者mif格式,这里选择前面生成的三角波mif文件。为了在调试的时候使用系统内存储器内容编辑器这里对其使能,并命名为ROM

9 h# R$ _5 B, K
14-5ROM初始化
       然后预览汇总信息,确认后即可点击Finish来完成此IP的配置并将其加入工程中设置为顶层文件。
为了测试仿真编写测试激励文件,新建rom_tb.v文件并输入以下内容再次进行分析和综合直至没有错误以及警告,保存到testbench文件夹下。这里除了实现例化需要仿真的文件以及时钟创建,还实现了地址数从0自加到2555,但是由于本ROM的最大数据个数是255,因此在address第一次加满255后会重新从0开始自加,这样就有十个地址数循环。
  c$ _6 F9 z6 q, f2 y0 P

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

1 s6 U0 e6 i- ^# I/ H# \/ c
. w4 J% M0 d4 P5 n
14-6修改输出数据显示格式
% |' C1 N- l, H! Y
14-7三角波仿真波形
       这里使用Sin3e生成一个正弦波的mif文件,并以此初始化ROM。再次启动仿真可能看到如图14-8-1的波形文件,这是由于数据格式为有符号整型,只需要修改为无符号整型即可。如果看到如图14-8-2所示的波形,是因为这里当前波形数据的范围设置问题,只需右键打开Properties按照图14-9修改即可。设置无误后,即可看到如图14-10所示的正弦波波形。
7 Q+ w% L' S1 O- _" C: e
14-8-1正弦波仿真波形
4 z* `* B" O# x' h* N1 e% _$ }
14-8-2 正弦波仿真波形
4 M  f# H  X- F( K8 v- x
14-9修改波形数据范围
$ ^% L' x9 Q3 Q1 ~; o. L* i
14-10正弦波仿真波形
       这样ROM的仿真即为通过,现在为了实现用SignaTap II逻辑分析仪以及In-System Memory Content Editor,进行板级测试,编写一个顶层文件并以ROM_top.v保存至rtl下。这里除了实现调用已经设计好的ROM IP核,还实现了每当系统时钟上升沿到来后,ROM地址进行加一。

; `! c# x7 d2 S% W2 X8 q# C- t
, @/ [3 E& d! Z% P, N% E- e/ }$ A2 @
       单击File—New新建一个SignalTap II文件。并在Signal Configuration中选择采样时钟,先将筛选关键字设置为Pin:all,单击List列出所有符合筛选标准的引脚。这里选中Clk单击“>”将其确定为采样时钟,这里也可以直接双击Clk确定。

0 t3 b; y$ n+ e9 T2 v. R
14-11新建SignalTap II文件
1 i6 E2 E( m: ?( a
14-12-1设置采样时钟
6 U$ V- |, w5 A: L$ d
14-12-2 设置采样时钟
现添加待采样信号,在Setup界面中双击空白处弹出如图14-13所示的界面。这里选择输出信号q作为待测信号,这里只需将总线加入即可。

' b+ A& c. }5 M3 l6 g
14-13-1添加待采样信号

7 v' [0 T: W; K/ h. {. R" ?
14-13-2添加待测信号
设置好采样时钟以及待采样数据点击file save至工程目录下,名字可自取。这时即可以看出此时资源使用数据。

. H3 K0 i" L. _! O3 }) \
14-14深度256时资源使用数据
这里采样时钟为50M,一个周期的波形划分为256份,因此如果想看十个周期的波形这里深度最少256*10,这里直接设置为4K深度,如图14-15。修改后可以看到资源使用随之增加。

9 b+ Y: T! D. e6 |9 @: j/ X) R" X
14-15深度修改为4K
保存SignalTapII设置后,分配引脚后进行全编译,这里需指出这里分配的Pin并没有实际意义,因此输出可以随意设置为板子的空闲引脚即可,这里设置在GPIO0。编译无误后,下载进开发板

! c, C" A5 E- t$ f2 U2 \
图14-16 Pin Planner
下载后双击工程下的STP文件来使用SignalTap II逻辑分析仪并设置好JTAG。这里有两种采样方式,一种为单次采样这样是单次抓取数据直到4K深度填满;一种为循环采集。这里选择循环采集,可看到图14-18的数据。
; x9 @( X9 p# v; t: p& W
14-17设置JTAG
14-18SignalTap II逻辑分析仪采样数据
         这里跟modelsim仿真时数据类似,也想看到更直观的波形。只需在信号q右键选择BusDisplay Fomat中的UnsignedLine Chart即可看到调整后的数据显示,如图14-20
! j6 G! L3 P) K9 F
14-19设置数据显示格式

* B" r  J1 m& Z5 ?9 B$ I" z' c
14-20修改后数据显示格式的采样数据
       这样就成功实现了SignalTapII逻辑分析仪抓取数据,现在为了实现在线更改ROM中的数据,这里介绍In-System Memory Content Editor工具的使用。
单击Tools打开In-System Memory Content Editor。

0 G3 U  }  p0 }
图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文件进行比对是否一致。

$ W9 @- w/ S; w6 N; T+ O
; l' Q. I6 r# H
14-21使用In-SystemMemory Content Editor读取ROM数据

/ ^( S) e1 I0 A: T
14-22在线修改ROM文件

- I0 L5 G4 r9 O
14-23写入修改后的mif文件

3 ^5 ]$ e, N. i
14-24修改rom后的输出波形

3 q! v# g! v2 @
14-25读取更新后ROM数据
这样板级调试结束。这样就实现了将一组固定的数据(三角波形表)存储在FPGA中使用IP核构建的片上ROM中,开发板上电后,系统开始从ROM中读出数据,并将数据直接通过并口输出。通过使用Signal Tap II软件实时抓取并口上的数据,显示得到三角波形。然后使用Quartus II软件中提供的In-System Memory Content Editor工具在线更改ROM中的数据(将数据更改为正弦波形表),然后再次观察signal Tap II工具抓取到的波形数据。
' W9 m: H$ K' M9 U6 w
& a4 g) R3 f- W" @, I

4 {) ?0 l/ u5 X; I+ K6 F5 t$ O* t2 l" J# j
小梅哥
芯航线电子工作室

2 r% R' h3 a& t6 ~( S
游客,如果您要查看本帖隐藏内容请回复

% d$ U/ G9 p$ [, I

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-30 01:17 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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