欢迎来到天天文库
浏览记录
ID:37639416
大小:1.28 MB
页数:17页
时间:2019-05-27
《NiosII的奇幻漂流-Chap04-PIO应用(2)——外部中断》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、NiosII的奇幻漂流Chap.4PIO应用(2)——外部中断byVITO老虎社区www.tigerbd.cn处心积虑地让FPGA好学好用NiosII的奇幻漂流工具版本:Windows7+QuartusII12.0+Qsys+NiosIISBT12.0作者:VITOE-Mail:vito943@qq.com老虎社区版权所有http://www.tigerbd.cnAllRightReserved2014.5PIO应用2——外部中断本章主要介绍PIO的应用——外部中断,通过用PIO连接的按键来触发NiosIICPU的外部中断,来点亮LED;同时介绍了N
2、iosII中断点调试的使用方法。通过本章的学习,您会学习到:(1)在NiosII中利用PIO实现外部中断。(2)按键的原理和使用方法。(3)在NiosII中进行断点调试。本章分为四个部分:一、概述二、硬件实现三、软件实现四、断点调试五、实验总结更多章节,请访问http://www.tigerbd.cn/forum-39-1.html1PIO应用2——外部中断上一章我们用PIO点亮了LED,终于看到开发板的现象了。不过话说回来,如果PIO只能用来点个LED,那也忒小看它了。接下来,我们来说说PIO的另一个应用:用PIO实现外部中断。小贴士Tips:关于
3、中断简单来说,中断指CPU在执行A任务时,发生了某个事件(程序自身或外界)使CPU暂停对A任务的处理,保留现场,去执行B任务;B任务完成后,回到A的现场,继续执行A任务。中断有优先级之分,优先级高的中断可以打断优先级低的中断,同级别中断按先后顺序执行。在嵌入式系统中,中断一般分为定时中断和外部中断,定时中断由程序定时产生,外部中断则由外设产生。有道是:有人的地方就有江湖,有CPU的地方就有中断,NiosIICPU自然也少不了中断嘛。这一章我们就利用PIO来实现对NiosIICPU的外部中断,方法为:NiosIICPU通过PIO连接到某个按键上,按键按
4、下后触发中断,CPU响应外部中断改变LED的亮灭(LED自然也是通过另一个PIO来控制的),下面就来具体介绍下实现。2PIO应用2——外部中断打开QuartusII和Qsys软件,我们在上一章工程的基础上再增加一个PIO(当然,不嫌麻烦重新再建一个工程也可以哈)。先切换到Qsys软件,导入kernel.qsys文件后,在左侧边栏的Library找到PIO模块,双击配置PIO,如下图,框1是PIO宽度、方向和输出初始值设置,我们把宽度设为1,方向设为输入,因为是输入,所以输出初始值就不用管啦。框3是中断选项,我们勾选上GenerateIRQ(生成中断)
5、,中断类型(IRQType)有两种:电平触发中断和边沿触发中断,我们选择电平触发中断。框2中是边沿触发中断寄存器的一些设置,如果要设置边沿触发中断,则需要勾选上Synchronouslycapture(同步捕获),再选择是捕获上升沿(RISING)还是下降沿(FALLING),因为我们在框3中选择的为电平触发中断,所以框2无需设置。点击Finish,完成PIO配置,我们将得到的新PIO改名为KEY,并进行连线、端口引出3PIO应用2——外部中断和中断连接工作,具体步骤就不讲啦,还没掌握的同学可以回顾下前几章哈。我们得到下图,要注意红框中的地址和中断号
6、:前面已经讲过,模块的地址区间(基地址和结束地址之间的部分)不能与其它模块的地址区间重合;对于中断号,EPCS已经设为0,JTAG_UART设为1,其它模块按照顺序依次增加即可(在对中断优先级无特殊要求的情况下),事实上这次Qsys还真“人性化”了一回,我们连接上中断后它自动分配了2,不容易啊!当然,为了稳妥我们还是给Qsys自动分配下地址和中断号(别忘了保存!),得到下图。最后自然是编译了,点击Generate,等待编译完成,休息一下吧。编译完成后我们回到QuartusII主界面,先介绍下按键的原理。在TIGERBOARD上面配有6个按键,如下图所
7、示,按键的一端连接FPGA的某个管脚,并通过上拉电阻接高电平;另一端接地。当该FPGA管脚作为输入时,按键松开时输入高电平,按下时则输入低电平。4PIO应用2——外部中断打顶层文件,我们先更新kernel模块,得到新生成的key。因为NiosIICPU只对高电平敏感,所以要给key加一个非门作电平转换,添加方法与加入kernel模块、输入输出管脚类似,如下图所示。接下来再添加输入管脚、连线,分配管脚,最终得到下图,大家注意下红框中的配置。5PIO应用2——外部中断保存下文件,我们开始编译QuartusII工程,编译成功后,硬件实现就OK了。6PIO应
8、用2——外部中断接下来进行软件工程的实现。新建一个NiosII工程,命名为int,在编写程序前先把三文件夹结
此文档下载收益归作者所有