6205|2

35

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【Altera SOC 体验之旅】Monitor Program在线仿真器的使用 [复制链接]

  本帖最后由 Jackzhang1992 于 2015-2-23 21:01 编辑

大家好,拿到DE1-SOC板子已经快两个月了,之前由于一些原因,虽然一直在熟悉板子官方手册里面的历程,但一直没有好好写点东西总结一下,从现在开始会陆陆续续发一些帖子,希望和大家多多交流。

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

1

       二、使用思路
              先用Qsys建立硬件系统,然后用文本编辑器编写软件代码,最后下载和调试。
1


三、
第一步让我们建立一个qsys硬件系统,

2
首先添加上图所示ip单元:clk, nios2(jtag_debug)jtag_uart, memory, pio2个)

3



接下来进行参数定义和连线:
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. 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



点选  GENERATE HDL

四、在quartus外围进行配置和全编译。
1.在工程目录下的..\synthesis文件夹下找到.qipquartus ip)文件,这里我命名的是qsys.qip将其添加到工程文件中。

图 5


这个文件是刚刚创建的qsys系统,是最重要的文件,缺少它在编译综合时就会提示缺少文件。

2.创建top顶层文件:
   首先创建最基本的顶层文件,把CLOCK, LED, SW信号定义好,
   然后,这里有一个例化qsys系统最快速的方法,在..\synthesis文件夹下找到xxx_inst.v这个文件(这里是qsys_inst.v),打开,发现generate hdl的时候人性化地已经生成了例化的格式文件。将其copy到顶层文件中,并稍作改动就可以快速完成端口定义。
       最后效果如下图所示

6
最后进行一下pinassignment后,进行全编译了。

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


        图8
这是一段与图7功能一样的c代码,具体用法显然,就不解释了。

六、下载与综合调试
1)打开Altera Monitor Program图标 ,随即打开软件。选Fileànew project, 指定路径和工程名。如图9(qsys系统基于HPSArchitectuer也可选ARM)

9


2)点选Next, Select a System选择Custom System。其余都是默认示例,可以学习里面的示例代码。不过对于非友晶公司出品的DE系列板子,就不适用了,故这里选择的是定制系统。然后在下面两个空格中选中工程文件中的.sopcinfo文件(qsysgenerate hdl后生成)和.sof文件(全编译后生成)。再点选Next


图10  




3)选择软件语言种类。这里先选Assembly Program
图11
4add选中汇编语言代码start.s
图12
下面框中的_start是默认的,表示汇编代码中程序开头的地方。
5)再点Next。如图下图所示,此时连上开发板,上电。
图13
6Next,出现下图所示,这里是存储器的设置,这个要配合qsys中的来,当初qsys中添加memory的时候都是使用的是默认大小4096x32bits。故这里可以看到memory地址范围在0x00000000-0x00000fff,正好4096个,对应起来了。点选Next
图14

插一句,LinkerSection Presets还可以设置为Exception异常,就会如下图所示,这种情况下下可以允许系统有中断。不过这里我们先选Basic类型的做测试。
图15
7)点选Next,会自动提示是否下载相关硬件进入系统。点选“是”。
图16

8)稍作等待,提示下载成功。这里的system其实就是.sof硬件。


9)点选确定后问,是否暂停系统,如选是,会使程序下载后马上暂停,等待仿真器单步、全速执行等调试指令。反之,程序下载后则全速运行。这里点选是。
10)稍作等待后,可见右下角Sucessfully halted nios2。说明系统已挂起。注意,这里软件程序还没下载呢,选Action->Compile & load,对软件程序先编译、后下载。


                                                                                                                                                     图17

11)最后可以看到仿真器成功了。点选工具栏中的单步、全速运行按钮查看效果。
右边有详细的寄存器的查看栏。点选全速运行后,即可看到程序正常运作了。Switch一一对应控制小灯。

                                   

七、总结
这一次演示了利用Altera Monitor Program仿真器进行软件的流程。我发现,仿真器工具对于学习NIOS和HPS的体系结构非常有用。
如果进一步需要学习NIOS和ARM详细的指令集用法,请参考附件
Instruction toAltera NiosII soft Prosessor .pdf
Introduction toARM Processor Using Altera Toolchain.pdf

谢谢。

Instruction to Altera NiosII soft Prosessor .pdf (578.38 KB, 下载次数: 19)
Introduction to ARM Processor Using Altera Toolchain.pdf (291.32 KB, 下载次数: 25)

此帖出自Altera SoC论坛

最新回复

这个不错啊,是通过USB blaster仿真的吗  详情 回复 发表于 2015-3-6 09:28

赞赏

1

查看全部赞赏

点赞 关注
 
 

回复
举报

1173

帖子

3

TA的资源

五彩晶圆(初级)

沙发
 
这个不错啊,是通过USB blaster仿真的吗
此帖出自Altera SoC论坛

点评

是的,是通过usb blaster仿真的  详情 回复 发表于 2015-4-17 10:45
 
 
 

回复

35

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
ou513 发表于 2015-3-6 09:28
这个不错啊,是通过USB blaster仿真的吗

是的,是通过usb blaster仿真的
此帖出自Altera SoC论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表