"); //-->
学习NIOS-II的流程-1——资料的准备
——艾米电子工作室
声明:本文系站长的个人经验分享,不是专业人士的评论,如有瑕疵,还望见谅!
NIOS 即为 NIOS II的缩写!
本人学习NIOS的时间不算很长,也就2年多,开始接触NIOS 就是从我们的一个实际项目出发的,以前一直学习逻辑的FPGA知识。很多网友学习NIOS之前,都或多或少的接触过其他MCU,比如51、AVR、ARM等等,但是为什么还要学习NIOS呢,这之间有哪些区别呢 ?
先来看一下官方的介绍:
Nios II处理器——世界上最通用的嵌入式处理器 迅速构建最合适的处理器系统
嵌入式开发人员面临的主要挑战是如何选择一款最合适的处理器,既不会为了提高性能而超过预算,又不会牺牲功能特性。理想的嵌入式解决方案帮助您:
通过最合适的CPU、外设和存储器接口,以及定制硬件加速器,达到每一新设计周期的独特目标,Nios? II 处理器以极大的灵活性满足了您的需求。
世界上最流行的可配置处理器Nios II处理器在全世界已经发售了15,000多个开发套件,世界前20名OEM均采用了该处理器。Nios II处理器是目前最流行的可配置软核处理器。Nios II处理器具有很大的灵活性,得到了广泛应用,在特性、成本和性能上达到了最佳,是一款避免昂贵的产品过时、帮助您将产品尽快推向市场的处理器。
这里面是否言过其实,我们不去追究,只是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公司从最开始的Quartus 4.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公司提供的IP core ,官方的一些软核设备驱动,这些在SOPC Builder中可以看到,只要接口一样,这些都可以直接调用,节省开发时间,那如果用户自己在开发过程中遇到了一个设备,而官方的IP中没有该怎么办呢?这个工作就需要开发部门的硬件工程师自己来写对应的驱动了,之后按照一定的格式加载进去!
举个例子,我们做的一个机器人项目,用到了无线模块nRF2401,没有对应的发射和接收的例子,只好自己写,还有max197-AD采集芯片,同样要自己写驱动!
72_nios2eds_windows.exe,这个是软核的编译集成开发环境,编写软件的地方,一般开发直接采用C语言开发,此时开发NIOS的工程师一般都具备了单片机开发的基础,采用C语言的思想开发起来,应该没有太大难度,与单片机类似,就是速度快一点!不过要熟悉起来还是需要一段时间的,尤其是初学者采用的函数都是Altera公司提供的函数库,需要熟悉一段时间才能熟练应用,不要一口吃一个胖子,慢慢消化!
72_quartus_windows.exe,这个就不做过多介绍了,FPGA的开发就在这个软件下面进行的!这里面有一个软件没有介绍就是SOPC Builder ,他是集成在Quartus中的!
这几者之间的关系如下图所示
Quartus 建立系统工程,完成综合、编译、管脚配置、sof下载等工作
SOPC Builder 完成 软核系统的配置,IP-core的添加各个模块之间的地址、中断的分配
NIOS IDE 完成 软件开发的工程建立,程序的编译、连接 以及最后软核代码的生成下载,仿真调试等!
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。