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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

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

, [, c- _: `" I2 }. @$ ], F! O( d8 n5 k$ ]
大家好,拿到DE1-SOC板子已经快两个月了,之前由于一些原因,虽然一直在熟悉板子官方手册里面的历程,但一直没有好好写点东西总结一下,从现在开始会陆陆续续发一些帖子,希望和大家多多交流。

0 ~- Y. C" e! {+ W
       一、概要:
今天详细介绍Altera Monitor Program这个工具 ,它是Altera大学计划的一部分,可从官网免费下载,界面如下图1所示。明眼人一看就知道,这其实就是一个simulator,可以进行编译、trace、修改功能。这些功能也许NIOSEDS和DS-5也有而且更强大,但是我想说,从学习ARM和NIOS体系结构的角度,这个工具无疑是最简单,最好用的工具,你可以在上面在线仿真你的每一句汇编指令或者是C指令,看具体Memory或Register的使用情况,甚至实时修改它。闲话不多说,让我们开始学习使用这个软件。
/ t* N, ~5 {& X. l
1

, O" f# C1 c, f( _5 }
       二、使用思路
              先用Qsys建立硬件系统,然后用文本编辑器编写软件代码,最后下载和调试。
1

: B) g0 [4 I/ G. m7 w# z/ t  v6 O: N: V- O4 }1 E1 L
三、
第一步让我们建立一个qsys硬件系统,

! w( I6 c; h/ J& k& _3 x
2
首先添加上图所示ip单元:clk, nios2(jtag_debug)jtag_uart, memory, pio2个)
) X  e. q5 \4 |' ?2 |
3
$ k( e; l3 P1 G7 T! g6 G

& E0 j& G: d( W: J  @6 t
9 N8 T) Z( f+ [1 G) y! v. A
接下来进行参数定义和连线:
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产生中断的要求。
  z& ^" P6 ?$ O- [4 a
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

- D; x: d( R) X4 B
" ]1 y: z: j! U
9 a  p  w: J8 o  O
点选  GENERATE HDL
9 M5 V2 C6 j% s+ R, ^
四、在quartus外围进行配置和全编译。
1.在工程目录下的..\synthesis文件夹下找到.qipquartus ip)文件,这里我命名的是qsys.qip将其添加到工程文件中。
4 E0 g" n. @; }- c/ h! [4 S
图 5

& o7 \9 ?- K9 o$ i
5 X4 C+ k3 _1 h; m  g7 Y
这个文件是刚刚创建的qsys系统,是最重要的文件,缺少它在编译综合时就会提示缺少文件。
$ d" c- D+ T8 x! y
2.创建top顶层文件:
   首先创建最基本的顶层文件,把CLOCK, LED, SW信号定义好,
   然后,这里有一个例化qsys系统最快速的方法,在..\synthesis文件夹下找到xxx_inst.v这个文件(这里是qsys_inst.v),打开,发现generate hdl的时候人性化地已经生成了例化的格式文件。将其copy到顶层文件中,并稍作改动就可以快速完成端口定义。
       最后效果如下图所示

/ D; j  h8 ?8 a1 g) i2 f4 Q9 O
6
最后进行一下pinassignment后,进行全编译了。

, a$ m' n% W/ y9 l( x# Y
五、软件代码的编写:
图7
这是一段汇编代码,首先将switchesleds的地址赋值给变量。然后将switches赋值给r3,leds赋值给r3, 并完成将(r2)地址的数据读入至r4寄存器,将r4寄存器的数据写入至(r3)这个地址。不断循环。

+ b# g% u( @4 g. \! T: k
9 V1 m: c/ L, _: q9 K+ c0 ~( f) H
        图8
这是一段与图7功能一样的c代码,具体用法显然,就不解释了。
4 T; q* P4 |# T8 q
六、下载与综合调试
1)打开Altera Monitor Program图标 ,随即打开软件。选Fileànew project, 指定路径和工程名。如图9(qsys系统基于HPSArchitectuer也可选ARM)

4 Q' t* I: L$ w& o, N: ?
9

  h: E: g3 {% u! u2 y# y' U  \" W5 t+ }; M9 Q1 y$ H
2)点选Next, Select a System选择Custom System。其余都是默认示例,可以学习里面的示例代码。不过对于非友晶公司出品的DE系列板子,就不适用了,故这里选择的是定制系统。然后在下面两个空格中选中工程文件中的.sopcinfo文件(qsysgenerate hdl后生成)和.sof文件(全编译后生成)。再点选Next
0 k6 W+ x9 W* U" u, N# |+ a% \  o
2 F6 p3 X& u2 ?6 T+ B1 J
图10  
( ]9 C# _" j# b# r$ f, f

, k/ W. ^# d5 X  `2 L4 @6 R9 K% J% }) h, _# j
' u1 K1 J  S' m& D3 p$ g
3)选择软件语言种类。这里先选Assembly Program
图11
4add选中汇编语言代码start.s
图12
下面框中的_start是默认的,表示汇编代码中程序开头的地方。
5)再点Next。如图下图所示,此时连上开发板,上电。
图13
6Next,出现下图所示,这里是存储器的设置,这个要配合qsys中的来,当初qsys中添加memory的时候都是使用的是默认大小4096x32bits。故这里可以看到memory地址范围在0x00000000-0x00000fff,正好4096个,对应起来了。点选Next
图14

4 i# N8 Q. v' H) a6 v! _' p2 h0 ~/ D9 i
插一句,LinkerSection Presets还可以设置为Exception异常,就会如下图所示,这种情况下下可以允许系统有中断。不过这里我们先选Basic类型的做测试。
图15
7)点选Next,会自动提示是否下载相关硬件进入系统。点选“是”。
图16
1 R3 x  F* I; G0 Y; x
8)稍作等待,提示下载成功。这里的system其实就是.sof硬件。

+ s3 S! @: |# w7 P* x& }& i; z* W7 A5 v0 ?0 L% a
9)点选确定后问,是否暂停系统,如选是,会使程序下载后马上暂停,等待仿真器单步、全速执行等调试指令。反之,程序下载后则全速运行。这里点选是。
10)稍作等待后,可见右下角Sucessfully halted nios2。说明系统已挂起。注意,这里软件程序还没下载呢,选Action->Compile & load,对软件程序先编译、后下载。

7 o6 g) k8 I4 ^& q! M
7 M- D8 ]4 b( j7 \
                                                                                                                                                     图17
; X1 ]( j. T/ o& _; {( r
11)最后可以看到仿真器成功了。点选工具栏中的单步、全速运行按钮查看效果。
右边有详细的寄存器的查看栏。点选全速运行后,即可看到程序正常运作了。Switch一一对应控制小灯。
8 d9 _7 {8 r9 x3 K! e) C6 l
                                    

- U" b7 z5 U/ k! D# Q; F" X  ^
七、总结
这一次演示了利用Altera Monitor Program仿真器进行软件的流程。我发现,仿真器工具对于学习NIOS和HPS的体系结构非常有用。
如果进一步需要学习NIOS和ARM详细的指令集用法,请参考附件
Instruction toAltera NiosII soft Prosessor .pdf
Introduction toARM Processor Using Altera Toolchain.pdf
8 G: q" c, i3 Y5 A) x
游客,如果您要查看本帖隐藏内容请回复

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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