您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 学习NIOS-II 的流程
学习学习学习学习NIOS-II的流程的流程的流程的流程-1——资料的准备资料的准备资料的准备资料的准备——艾米电子工作室艾米电子工作室艾米电子工作室艾米电子工作室声明:本文系站长的个人经验分享,不是专业人士的评论,如有瑕疵,还望见谅!NIOS即为NIOSII的缩写!本人学习NIOS的时间不算很长,也就2年多,开始接触NIOS就是从我们的一个实际项目出发的,以前一直学习逻辑的FPGA知识。很多网友学习NIOS之前,都或多或少的接触过其他MCU,比如51、AVR、ARM等等,但是为什么还要学习NIOS呢,这之间有哪些区别呢?先来看一下官方的介绍:NiosII处理器处理器处理器处理器——世界上最通用的嵌入式处理器世界上最通用的嵌入式处理器世界上最通用的嵌入式处理器世界上最通用的嵌入式处理器迅速构建最合适的处理器系统迅速构建最合适的处理器系统迅速构建最合适的处理器系统迅速构建最合适的处理器系统嵌入式开发人员面临的主要挑战是如何选择一款最合适的处理器,既不会为了提高性能而超过预算,又不会牺牲功能特性。理想的嵌入式解决方案帮助您:•选择最适合您应用的CPU、外设和接口•现场远程更新,保持竞争,满足需求的变化。•不必改动电路板设计,提升性能——针对需要的功能进行加速。•避免处理器和ASSP过时的风险•将多种功能在一个芯片中实现,降低了总成本、复杂度和功耗。通过最合适的CPU、外设和存储器接口,以及定制硬件加速器,达到每一新设计周期的独特目标,Nios®II处理器以极大的灵活性满足了您的需求。世界上最流行的可配置处理器世界上最流行的可配置处理器世界上最流行的可配置处理器世界上最流行的可配置处理器NiosII处理器在全世界已经发售了15,000多个开发套件,世界前20名OEM均采用了该处理器。NiosII处理器是目前最流行的可配置软核处理器。NiosII处理器具有很大的灵活性,得到了广泛应用,在特性、成本和性能上达到了最佳,是一款避免昂贵的产品过时、帮助您将产品尽快推向市场的处理器。这里面是否言过其实,我们不去追究,只是NIOS确实可以让你的开发变得简单些,也完全可以根据你自己的意愿来定制CPU!网友学习NIOS大体可以分为以下几类,在校学生为了丰富自己毕业就业的工作筹码,需要掌握更多的专业技能;参加工作不久的开发人员,给自己充电;产品开发前期选型,进行实验;参加专业的比赛,比如电子设计大赛等等。那么如何才能快速的掌握NIOS的开发流程,从而快速入门的?在网上可以找到很多建立一个简单的NIOS工程之类的文章以及视频,本人也做了一些开放式的入门教程。我总结学习NIOS分为以下几个阶段:1——资料的准备资料的准备资料的准备资料的准备::::巧妇难为无米之炊,再好的设计也需要一个实验平台,硬件上需要有一个FPGA的开发板,这个开发板要能够支持NIOS的开发,也就是说需要有SDRAM或者SRAM,这里再次解释一下NIOS的开发板需要哪些配置。很多网友对这个概念不是很清楚,只知道需要SDRAM和FLASH等等,但是为什么需要?NIOS是一个软核,他的开发可以采用C语言,最后生成的代码可执行文件需要一个运行的环境,比如计算机的程序运行在内存中一样,其实如果FPGA内部的RAM足够大的话,完全没有必要用外部的了,但是水涨船高,这样芯片价格就会剧增,性价比不好,因此还是需要外部加入SDRAM或者SRAM。近日见到网上有朋友说EP2C5T144的开发板也可以跑NIOS,这话不假,但是只能跑简单的NIOS实验,我见过这个板子,没有外部的SDRAM很多程序运行不了的,敬请广大网友注意!现在新的问题又出来了,到底是用SDRAM还是SRAM呢?个人分析,如果系统中对处理速度要求不是很高,选用SDRAM即可,也即是说程序最后在SDRAM中运行,如果要求频繁的数据处理、图像处理或者电机的PID控制等等,还是建议选用SRAM!一般单纯学习NIOS系统或者做些简单的运算,可以考虑SDRAM;毕竟两者的价格相差还是很多的。最后一个Flash,我们知道单片机的程序都是存在flash中的,掉电之后程序也不会丢失,再次上电可以正常运行,既然NIOS是软核,应该也是一样的。所以为了保存NIOS的配置文件(sof文件,即整个系统的架构配置)以及最后的C代码文件,需要一个这样的东东。那么是不是就一定需要一个外部的FLASH呢?其实不然,每个FPGA的开发板都有一个配置芯片,这个东东其实就是FLASH,用它完全可以实现程序的存储,本店销售的NIOS开发板完全使这种风格的设计,采用的均是EPCS4配置芯片。让大家看一个我们的NIOS系统实例,也是我第一次学习NIOS的东东。本人设计的开发板都本人设计的开发板都本人设计的开发板都本人设计的开发板都是根据实际经验出发是根据实际经验出发是根据实际经验出发是根据实际经验出发,,,,并不是网上的抄板并不是网上的抄板并不是网上的抄板并不是网上的抄板!!!!我们整个团队人员很多,我只是负责其中的电路部分,上面的核心板是我设计的,底下的大板是我一个师兄设计的。核心板上用到的芯片就是EP2C8Q208芯片,因为涉及到电机控制,我们采用了SRAM,同时测量外部电压采用了max197-AD芯片,无线模块等等,核心板很简洁。整个系统实现对一个机器人的底层控制,系统软件中用到了AD驱动、无线模块驱动、电机测速模块、机器人分号、击球跳球、电机驱动、PID控制等等,完全都是NIOS里面实现。其中,无线模块、AD驱动、电机驱动均是自己设计的底层verilog文件,然后再上层调用,这样执行效率高,底层的文件是并行执行的,如果都放在系统中跟单片机的开发模式差不多,就是一个大的while了。我们这个系统我们这个系统我们这个系统我们这个系统用用用用EP2C8Q208和和和和EPCS4可以搞定可以搞定可以搞定可以搞定,,,,网友可以思考一下自己学习的话网友可以思考一下自己学习的话网友可以思考一下自己学习的话网友可以思考一下自己学习的话,,,,这个板子完全可以胜任这个板子完全可以胜任这个板子完全可以胜任这个板子完全可以胜任了了了了,,,,初学者考虑初学者考虑初学者考虑初学者考虑EP2C5Q208即可即可即可即可!!!!有了开发板,那么软件上,需要你设置那些呢?Altera公司从最开始的Quartus4.0到现在的Quartus8.1甚至9.0版本都出来了,你可以根据自己的情况选择软件,建议还是采用高版本的软件,都是向下兼容的!Altera软件的下载链接通常都有很多,到网上随便搜索一下都可以找到,但是最后下载的源都是Altera的FTP。7.2版本需要下载如下三个文件,从8.0开始IP-core已经集成到Quartus中,也就是下载Quartus和nios2eds即可,至于DSP-Builder以及Modelsim是否需要下载就看个人喜好了。本人还是习惯用Quartus的仿真。分别简单介绍一下:72_ip_windows.exe首先第一个是altera公司提供的IPcore,官方的一些软核设备驱动,这些在SOPCBuilder中可以看到,只要接口一样,这些都可以直接调用,节省开发时间,那如果用户自己在开发过程中遇到了一个设备,而官方的IP中没有该怎么办呢?这个工作就需要开发部门的硬件工程师自己来写对应的驱动了,之后按照一定的格式加载进去!举个例子,我们做的一个机器人项目,用到了无线模块nRF2401,没有对应的发射和接收的例子,只好自己写,还有max197-AD采集芯片,同样要自己写驱动!72_nios2eds_windows.exe,这个是软核的编译集成开发环境,编写软件的地方,一般开发直接采用C语言开发,此时开发NIOS的工程师一般都具备了单片机开发的基础,采用C语言的思想开发起来,应该没有太大难度,与单片机类似,就是速度快一点!不过要熟悉起来还是需要一段时间的,尤其是初学者采用的函数都是Altera公司提供的函数库,需要熟悉一段时间才能熟练应用,不要一口吃一个胖子,慢慢消化!72_quartus_windows.exe,这个就不做过多介绍了,FPGA的开发就在这个软件下面进行的!这里面有一个软件没有介绍就是SOPCBuilder,他是集成在Quartus中的!这几者之间的关系如下图所示Quartus建立系统工程,完成综合、编译、管脚配置、sof下载等工作SOPCBuilder完成软核系统的配置,IP-core的添加各个模块之间的地址、中断的分配NIOSIDE完成软件开发的工程建立,程序的编译、连接以及最后软核代码的生成下载,仿真调试等!学习学习学习学习NIOS-II的流程的流程的流程的流程-2——初体验初体验初体验初体验——艾米电子工作室艾米电子工作室艾米电子工作室艾米电子工作室2——初步学习体验初步学习体验初步学习体验初步学习体验NIOS这里包括LED、串口、LCD、按键输入、中断、定时器等等,这个过程跟单片机开发其实没什么区别,只是注意一下NIOS中软件的开发特点即可,比如对IO的输入输出控制、方向控制等等。IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,led);】附一个程序如下:#includesystem.h#includealtera_avalon_pio_regs.h#includealt_types.hintmain(void)__attribute__((weak,alias(alt_main)));intalt_main(void){alt_u8led=0x2;alt_u8dir=0;volatileinti;while(1){if(led&0x81){dir=(dir^0x1);}if(dir){led=led1;}else{led=led1;}IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,led);i=0;while(i200000)i++;}return0;}如图所示,程序中的IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,led);对端口的输出进行操作,里面的base对应Quartus中的out_port_from_theLED[7..0]注意,NIOS编程时这个地址一定要大写,而在SOPCBuilder中可以小写命名。比如——SM_bit,而程序中必须大写,如下:IOWR_ALTERA_AVALON_PIO_DATA(SM_SEGMENT_BASE,leddata[i+1]);IOWR_ALTERA_AVALON_PIO_DATA(SM_BIT_BASE,bit_sel[i]);NIOS一个工程的操作步骤顺序:第一步,建立Quartus工程这里面包括,在SOPCBuilder中建立NIOS的软核,并定制系统外设,完成基本编译,配置引脚之后,修改一些没有用到的IO属性为三态输入,最后完全编译系统。此时生成系统的配置文件sof。第二步,建立NIOSIDE开发环境写C语言代码,并编译工程,开始仿真或者直接调试,调试的技巧需要一点一点的积累总结。不过玩过单片机的朋友,我相信都很熟悉这个的设置与技巧。第三步:系统的下载系统编译调试通过后,我们需要把sof文件和elf文件下载到EPCS配置芯片中,这样下次上电时候才能运行程序。点击tools》flashprogramer》第四步-重新定制系统如果在前三步发现问题,返回差错,然后分别重新编译工程,如果期间需要加入新的模块,也需要重新定制系统,然后重新编译。这期间由三个步骤的时间耗时非常长,所以为了节省开发时间,尽量不要反复编译工程1quartus的完全编译2SOPCBuilder生成系统文件3NIOS的第一次Build硬件系统完成后,NIOS也完成了第一次的完全编译,之后的软件开发工作就相对简单多了,每次只需要简单编译,很快就ok!补充补充补充补充::::run或者或者或者或者debug的时候的时候的时候的时候有可能会出现如下界面有可能会出现如下界面有可能会出现如下界面有可能会出现如下界面。。。。nios2-ter
本文标题:学习NIOS-II 的流程
链接地址:https://www.777doc.com/doc-650259 .html