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

转——Monitor Program在线仿真器的使用 

[复制链接]

该用户从未签到

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

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, pio2个)

1 l3 ^! y  ]# U3
" ~- 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 然后将所有ipclkreset端都连接至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_Vectormemory;Exception_Vectormemory, Advanced FeaturesRAM memory protection去除勾选(否则导致Monitor Program下载时出错)。
5. leds设为10位,outputSwitches设为10, input。并将ledsswitchesexternel_connection行的Export列双击命名,随即定义外部引脚。
6.固定memory基地址为0x0000,base列小锁前双击。
7. JTAG UARTIRQ栏设置其中断号为5
8. 点选System Assign baseadresses,进行其余地址的自动分配。
至此,qsys系统就全部定义完毕了。
地下Message栏显示 0 Errors,0 Warning.
4
最后,总结一下,现有模块的地址分配:
Leds:   0x2010   
switches0x2000
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文件夹下找到.qipquartus 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" A
2.创建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
这是一段汇编代码,首先将switchesleds的地址赋值给变量。然后将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系统基于HPSArchitectuer也可选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文件(qsysgenerate 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
4add选中汇编语言代码start.s
图12
下面框中的_start是默认的,表示汇编代码中程序开头的地方。
5)再点Next。如图下图所示,此时连上开发板,上电。
图13
6Next,出现下图所示,这里是存储器的设置,这个要配合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
游客,如果您要查看本帖隐藏内容请回复

该用户从未签到

2#
发表于 2019-4-19 17:57 | 只看该作者
发帖是心得 回帖是美德
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-9 03:27 , Processed in 0.156250 second(s), 26 queries , Gzip On.

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

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

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