EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
转——Monitor Program在线仿真器的使用
: q" S* _0 V* J$ W
, I- c+ u! |9 Q大家好,拿到DE1-SOC板子已经快两个月了,之前由于一些原因,虽然一直在熟悉板子官方手册里面的历程,但一直没有好好写点东西总结一下,从现在开始会陆陆续续发一些帖子,希望和大家多多交流。
) G+ V) i$ P z4 Y, P 一、概要: 今天详细介绍Altera Monitor Program这个工具 ![]() ,它是Altera大学计划的一部分,可从官网免费下载,界面如下图1所示。明眼人一看就知道,这其实就是一个simulator,可以进行编译、trace、修改功能。这些功能也许NIOSEDS和DS-5也有而且更强大,但是我想说,从学习 ARM和NIOS体系结构的角度,这个工具无疑是最简单,最好用的工具,你可以在上面在线仿真你的每一句汇编指令或者是C指令,看具体Memory或Register的使用情况,甚至实时修改它。闲话不多说,让我们开始学习使用这个软件。
' k- s" }' Y- ^2 F% C图1 1 c! S: |) S3 z/ h! \
二、使用思路 先用Qsys建立硬件系统,然后用文本编辑器编写软件代码,最后下载和调试。 图1 5 C( q* J/ K: w# D. ~4 i" p
/ z9 q9 e! ]1 B
三、 第一步让我们建立一个qsys硬件系统, , X/ [8 Q) Z: \$ _" K6 n
图2 首先添加上图所示ip单元:clk, nios2(含jtag_debug),jtag_uart, memory, pio(2个)
1 l3 ^! y ]# U图3 " ~- B) a; w8 {& h0 K+ C
- W7 A4 J1 y9 M8 r6 p: @0 T+ |1 I6 y
% O' l" F3 d' j: R接下来进行参数定义和连线: 1.设置clk: 50MHZ 然后将所有ip的clk和reset端都连接至clk模块的clk端口和clk_reset端口。 2.nios2: (1)将data_master端口接至jtag_uart的avalon_jtag_slave端、memory的s1端、leds的s1端和switches的s1端。 (2)将instruction_master端口接至memory端的s1端(因为memory需要得到pc的指令地址作取指令用)。 (3)将jtag_debug_module_reset端口截至nios2的reset_n端,memory的reset1端,led的reset端和switches的reset端。 3. jtag_uart: 将jtag_uart的irq端接至nios2的d_irq端。以达到PC可以对nios2产生中断的要求。 4 n0 d' \5 |( u* o4 C, V/ [
4. nios2参数设置,设为e型,Reset_Vector为memory;Exception_Vector为memory, Advanced Features下RAM memory protection去除勾选(否则导致Monitor Program下载时出错)。 5. leds设为10位,output。Switches设为10位, input。并将leds和switches的externel_connection行的Export列双击命名,随即定义外部引脚。 6.固定memory基地址为0x0000,在base列小锁前双击。 7. 在JTAG UART的IRQ栏设置其中断号为5 8. 点选System Assign baseadresses,进行其余地址的自动分配。 至此,qsys系统就全部定义完毕了。 地下Message栏显示 0 Errors,0 Warning. 图4 最后,总结一下,现有模块的地址分配: Leds: 0x2010 switches:0x2000 2 c5 A4 _8 f+ e
- ?5 o* V& f4 ` Q+ h+ I/ }
& i/ u8 r% r/ R6 O [5 ?+ I点选 GENERATE HDL
' n; O- H: k% z# {四、在quartus外围进行配置和全编译。 1.在工程目录下的..\synthesis文件夹下找到.qip(quartus ip)文件,这里我命名的是qsys.qip将其添加到工程文件中。 % s8 w% J" X2 M0 L6 a1 s* m& m
图 5
4 Q0 @6 u7 Q" x9 Y+ X( P
) U4 x7 Z2 X# A# Y' m1 v! T这个文件是刚刚创建的qsys系统,是最重要的文件,缺少它在编译综合时就会提示缺少文件。
7 H5 F; f. e; A& E" \9 q* c" A2.创建top顶层文件: 首先创建最基本的顶层文件,把CLOCK, LED, SW信号定义好, 然后,这里有一个例化qsys系统最快速的方法,在..\synthesis文件夹下找到xxx_inst.v这个文件(这里是qsys_inst.v),打开,发现generate hdl的时候人性化地已经生成了例化的格式文件。将其copy到顶层文件中,并稍作改动就可以快速完成端口定义。 最后效果如下图所示
) N. c/ K1 D F, Q图6 最后进行一下pinassignment后,进行全编译了。 4 a* V# i) S3 c: l" N# p
五、软件代码的编写: 图7 这是一段汇编代码,首先将switches和leds的地址赋值给变量。然后将switches赋值给r3,leds赋值给r3, 并完成将(r2)地址的数据读入至r4寄存器,将r4寄存器的数据写入至(r3)这个地址。不断循环。 x; [8 e& s& d* Z! w
e0 ?5 L9 Q7 H4 o4 f8 f. B, e3 G 图8 这是一段与图7功能一样的c代码,具体用法显然,就不解释了。 4 u( W4 n; O8 [3 o; ?# m) \5 i
六、下载与综合调试 (1 )打开Altera Monitor Program 图标 ,随即打开软件。选File ànew project, 指定路径和工程名。如图9 。(qsys 系统基于HPS 时Architectuer 也可选ARM) 3 y# M( S* ~! m7 X. X1 N
图9
+ x" [. p: ~2 b
5 G# ~5 R) u5 h3 y9 I(2)点选Next, Select a System选择Custom System。其余都是默认示例,可以学习里面的示例代码。不过对于非友晶公司出品的DE系列板子,就不适用了,故这里选择的是定制系统。然后在下面两个空格中选中工程文件中的.sopcinfo文件(qsys中generate hdl后生成)和.sof文件(全编译后生成)。再点选Next。
2 W" z ]) @$ j! S+ T
{! K2 I% y: Z( y图10
" F" P7 u- y8 K7 c3 b
3 Z! G+ ?+ Q5 g O% l
" p# _% E- U8 j7 f4 c2 `! X% n7 b' |' _% }5 D6 p% B
(3)选择软件语言种类。这里先选Assembly Program。 图11 (4)add选中汇编语言代码start.s。 图12 下面框中的_start是默认的,表示汇编代码中程序开头的地方。 (5)再点Next。如图下图所示,此时连上开发板,上电。 图13 (6)Next,出现下图所示,这里是存储器的设置,这个要配合qsys中的来,当初qsys中添加memory的时候都是使用的是默认大小4096x32bits。故这里可以看到memory地址范围在0x00000000-0x00000fff,正好4096个,对应起来了。点选Next。 图14 2 C9 K( ~" {- C- U, x" W9 ~
插一句,LinkerSection Presets还可以设置为Exception异常,就会如下图所示,这种情况下下可以允许系统有中断。不过这里我们先选Basic类型的做测试。 图15 (7)点选Next,会自动提示是否下载相关硬件进入系统。点选“是”。 图16
- n7 T2 }+ R! Q1 a(8)稍作等待,提示下载成功。这里的system其实就是.sof硬件。
) |# B+ I- {; p8 s
3 Y5 y* Y$ P5 w! e& @(9)点选确定后问,是否暂停系统,如选是,会使程序下载后马上暂停,等待仿真器单步、全速执行等调试指令。反之,程序下载后则全速运行。这里点选是。 (10)稍作等待后,可见右下角Sucessfully halted nios2。说明系统已挂起。注意,这里软件程序还没下载呢,选Action->Compile & load,对软件程序先编译、后下载。 4 W$ Q& L8 Y* }- b9 {
3 H5 Z! X1 n# R9 O) r6 z 图17 & W$ s5 L: r8 ~, q
(11)最后可以看到仿真器成功了。点选工具栏中的单步、全速运行按钮查看效果。 右边有详细的寄存器的查看栏。点选全速运行后,即可看到程序正常运作了。Switch一一对应控制小灯。
% r- K- V5 V' h! T
. c& R2 C" d5 I( P! t5 H; x$ |" t; J七、总结 这一次演示了利用Altera Monitor Program仿真器进行软件的流程。我发现,仿真器工具对于学习NIOS和HPS的体系结构非常有用。 如果进一步需要学习NIOS和ARM详细的指令集用法,请参考附件 Instruction toAltera NiosII soft Prosessor .pdf Introduction toARM Processor Using Altera Toolchain.pdf 5 l- k$ I% s* G' T
|