原创 学习NIOS-II的经验分享(一)

2009-4-2 23:06 5566 13 13 分类: FPGA/CPLD

学习NIOS-II的流程-1——资料的准备


——艾米电子工作室







声明:本文系站长的个人经验分享,不是专业人士的评论,如有瑕疵,还望见谅!


NIOS 即为 NIOS II的缩写!


 


本人学习NIOS的时间不算很长,也就2年多,开始接触NIOS 就是从我们的一个实际项目出发的,以前一直学习逻辑的FPGA知识。很多网友学习NIOS之前,都或多或少的接触过其他MCU,比如51、AVR、ARM等等,但是为什么还要学习NIOS呢,这之间有哪些区别呢 ?


先来看一下官方的介绍:







Nios II处理器——世界上最通用的嵌入式处理器


迅速构建最合适的处理器系统


嵌入式开发人员面临的主要挑战是如何选择一款最合适的处理器,既不会为了提高性能而超过预算,又不会牺牲功能特性。理想的嵌入式解决方案帮助您:



  • 选择最适合您应用的CPU、外设和接口
  • 现场远程更新,保持竞争,满足需求的变化。
  • 不必改动电路板设计,提升性能——针对需要的功能进行加速。
  • 避免处理器和ASSP过时的风险
  • 将多种功能在一个芯片中实现,降低了总成本、复杂度和功耗。

通过最合适的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 即可!


有了开发板,那么软件上,需要你设置那些呢?<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


Altera公司从最开始的Quartus 4.0 到现在的Quartus8.1甚至 9.0版本都出来了,你可以根据自己的情况选择软件,建议还是采用高版本的软件,都是向下兼容的!


Altera软件的下载链接通常都有很多,到网上随便搜索一下都可以找到,但是最后下载的源都是Altera的FTP。7.2版本需要下载如下三个文件,从8.0开始IP-core已经集成到Quartus中,也就是下载Quartus和nios2eds即可,至于DSP-Builder以及Modelsim 是否需要下载就看个人喜好了。本人还是习惯用Quartus的仿真。


 


20081030193139611.jpg





分别简单介绍一下:

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中的!


这几者之间的关系如下图所示


20081030194735923.jpg


Quartus 建立系统工程,完成综合、编译、管脚配置、sof下载等工作


SOPC Builder 完成 软核系统的配置,IP-core的添加各个模块之间的地址、中断的分配


NIOS IDE 完成 软件开发的工程建立,程序的编译、连接 以及最后软核代码的生成下载,仿真调试等!


 


 


 


 

文章评论1条评论)

登录后参与讨论

用户1078415 2012-11-20 13:43

值得学习
相关推荐阅读
zhaoliang_0801_926809075 2009-07-28 09:13
基于FPGA和avr单片机的DDS信号发生器
基于FPGA和avr单片机的DDS信号发生器1、项目简介本设计提出了一种使用经济有效的低频信号发生器的设计方法,系统可以实现各种频率各种相位的输出,可以实现ASK、FSK调制信号的输出,其他的调制信号...
zhaoliang_0801_926809075 2009-07-27 23:30
出售msp430uif usb 仿真器
电路板稍有瑕疵,背面需要跳根线,请追求完美的朋友绕到,谢谢 :)此次一共有39块PCBPCB 定价 12元 (瑕疵修改后,定价15元)成品 定价 140元(瑕疵修改后,定价150元)芯片封装:MSP4...
zhaoliang_0801_926809075 2009-07-27 23:15
开源项目-基于FPGA的等精度频率计
开源项目-基于FPGA的等精度频率计1、项目简介:这是本人06年的一个课程设计,当时做完之后,总结了一个片论文发表《电子工程师》有兴趣的朋友可以看看,论文写的比较详细。利用51单片机和FPGA控制实现...
zhaoliang_0801_926809075 2009-07-04 23:38
FPGA入门系列实验教程——实验三 LED流水灯
FPGA入门系列实验教程——实验三 LED流水灯声明:本实验教程编写的目的就是为了指导FPGA初学者轻松入门,让初学者少走些弯路,但由于版主学习FPGA时间不长,水平有限,教程中肯定会出现这样或那样的...
zhaoliang_0801_926809075 2009-07-04 23:37
FPGA入门系列实验教程——实验一 点亮LED
FPGA入门系列实验教程——实验一 点亮LED声明:本实验教程编写的目的就是为了指导FPGA初学者轻松入门,让初学者少走些弯路,但由于版主学习FPGA时间不长,水平有限,教程中肯定会出现这样或那样的错...
zhaoliang_0801_926809075 2009-07-04 23:37
FPGA入门系列实验教程——实验二 LED闪烁灯
FPGA入门系列实验教程——实验二 LED闪烁灯声明:本实验教程编写的目的就是为了指导FPGA初学者轻松入门,让初学者少走些弯路,但由于版主学习FPGA时间不长,水平有限,教程中肯定会出现这样或那样的...
我要评论
1
13
关闭 站长推荐上一条 /2 下一条