EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
课程目标: 1.学会调用Quartus II软件中提供的ROM核并进行仿真 2.学会使用Signal Tap II软件以及In System Memory Content Editor 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 |