学习NIOS-II的经验分享

学习 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 即可! 有了开发板,那么软件上,需要你设置那些呢?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 完成 软件开发的工程建立,程序的编译、连接 以及最后软核代码的生成下载,仿真调试等!

学习 NIOS-II 的流程-2——初体验——艾米电子工作室2——初步学习体验 NIOS这里包括 LED、 串口、 LCD、 按键输入、 中断、 定时器等等,这个过程跟单片机开发其实没什么区别,只 是注意一下 NIOS 中软件的开发特点即可,比如对 IO 的输入输出控制、方向控制等等。 IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE, led);】附一个程序如下:#include "system.h" #include "altera_avalon_pio_regs.h" #include "alt_types.h" int main (void) __attribute__ ((weak, alias ("alt_main")));int alt_main (void) { alt_u8 led = 0x2; alt_u8 dir = 0; volatile int i;while (1) { if (led & 0x81) { dir = (dir ^ 0x1); } if (dir) { led = led >> 1; } else { led = led

如图所示,程序中的 IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE, led); 对端口的输出进行操作,里面的 base 对应 Quartus 中的 out_port_from_the LED[7..0] 注意,NIOS 编程时这个地址一定要大写,而在 SOPC Builder 中可以小写命名。比如——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 工程 这里面包括,在 SOPC Builder 中建立 NIOS 的软核,并定制系统外设,完成基本编译,配置引脚之后,修改一些没有用到的 IO 属性为三态输入,最后完全编译系统。此时生成系统的配置文件 sof。

第二步,建立 NIOS IDE 开发环境 写 C 语言代码,并编译工程,开始仿真或者直接调试,调试的技巧需要一点一点的积累总结。不过玩过单片机的 朋友,我相信都很熟悉这个的设置与技巧。

第三步:系统的下载 系统编译调试通过后, 我们需要把 sof 文件和 elf 文件下载到 EPCS 配置芯片中, 这样下次上电时候才能运行程序。 点击 tools》flash programer 》

第四步-重新定制系统 如果在前三步发现问题, 返回差错, 然后分别重新编译工程, 如果期间需要加入新的模块, 也需要重新定制系统, 然后重新编译。 这期间由三个步骤的时间耗时非常长,所以为了节省开发时间,尽量不要反复编译工程 1 quartus 的完全编译 2 SOPC Builder 生成系统文件 3 NIOS 的第一次 Build 硬件系统完成后,NIOS 也完成了第一次的完全编译,之后的软件开发工作就相对简单多了,每次只需要简单编 译,很快就 ok!补充: 有可能会出现如下界面。 补充:run 或者 debug 的时候 有可能会出现如下界面。nios2-terminal: connected to hardware target using JTAG UART on cable nios2-terminal: "USB-Blaster [USB-0]", device 1, instance 0 nios2-terminal: Warning: The JTAG cable you are using is not supported for Nios nios2-terminal: II systems. You may experience intermittent JTAG communication nios2-terminal: failures with this cable. Please use a USB Blaster revision B nios2-terminal: cable or another supported cable. Please refer to the file

nios2-terminal: errata.txt included in the Nios II development kit documents nios2-terminal: directory for more information. nios2-terminal: (Use the IDE stop button or Ctrl-C to terminate)提示 JTAG 的类型不匹配,但不影响使用,这里面用公版的 USB-Blaster 就没有问题的,具体的就不多说了,有 可能是软件里面做的手脚。

学习 NIOS-II 的流程-3——完全定制——艾米电子工作室3——定制你自己的 NIOS到这个过程确实是学习 NIOS 中比较高级的实验了,周立功的《SOPC 嵌入式系统实验教程(一)》中把这一知 识点放在第 7 章-“SOPC 硬件系统高级教程”这里再次向广大网友推荐周立功的这本书,非常好,可以说是学习 NIOS 的教科书,定价 29 元,很值得!这一讲,引用网上的几篇文章,摘录如下: 这一讲,引用网上的几篇文章,摘录如下: 自定义外设作为 NiosII 软核处理器超强灵活性的体现,其开发遵循一定的规律。一个用户自定义外设必须进行硬 件设计,也就是说,必须用硬件描述语言来描述出硬件的逻辑组成。一般来说,一个自定义外设主要由下列部分 组成: ① 描述自定义外设逻辑的硬件描述文件部分(主要是 HDL 程序)。 ② 软件文件,一个用来定义外设寄存器的 C 语言头文件,以及让程序员控制这个元件的软件驱动程序。 ③ 元件的描述文件(class.ptf)。该文件定义了元件的架构,提供了 SOPC。 Builder 将该元件集成到一个系统的各种信息。 该文件由元件编辑器根据用户提供的硬件和软件文件以及在图 形用户界面中设置的各个选项和参数自动生成。图 1 给出了带 Avalon 从端口的自定义外设组成框图。从图中可以看出,一个典型的自定义外设主要由下列功能模块组成: ① 任务逻辑。任务逻辑实现外设的基本功能,是必不可少的组成部分。 ② 寄存器文件。寄存器文件部分提供任务逻辑和外界交换信息的桥梁。有了寄存器文件,用户就可以通过 Avalon 接口采用“基地址+地址偏移量”的方法来访问外设内部的各个寄存器。 ③ Avalon 接口。Avalon 接口为寄存器文件提供了一个标准的 Avalon 前端。该模块使用 Avalon 规定的信号 来访问寄存器文件,并且支持任务逻辑的传输类型。

用户自定义 IP 核按照对 Avalon 总线操作的不同可分为 Avalon Master 外设、 Avalon Slaver 外设及 AvalonStreaming 外设。用户开发的外设大多为 Avalon Slaver 外设,Avalon Master 和 Avalon Streaming 外设的开发比 Avalon Slaver 外设要复杂,但开发流程相同。一个典型的 Avalon 外设的开发步骤如下: (1)规划元件的硬件功能。如果采用微控制器来控制该元件,则规划访问该硬件的应用程序接口(API); (2)在硬件和软件要求的基础上,定义一个恰当的 Avalon 接口(一般为 Avalon 从端口); (3)使用硬件描述语言描述硬件逻辑。一个典型元件的硬件架构一般 3 部分组成:接口模块(avalon interface)作为顶 层模块,定义总线接口信号;寄存器文件模块(register file)完成该元件与外部信号进行通信,提供访问与控制元件 的逻辑界面;行为模块(task logic)实现元件的硬件功能。片上总线 AvaIon 从端口的信号都不是必须的,一个典型 的 Avalon 从端口所包含的信号如表 1 所示。(4)单独验证元件的硬件功能; (5)写用于描述寄存器的 C 头文件来为软件定义硬件寄存器映像; (6)写元件的驱动软件; (7)把通过测试的源代码使用元件编辑器封装硬件 HDL 和软件文件,完成元件定制。用户学习到这一步, 的开发也就没什么难点了, 可以完全自己定制系统, 以后的开发就是时间问题, 用户学习到这一步, 基本上 NIOS 的开发也就没什么难点了, 可以完全自己定制系统, 以后的开发就是时间问题, 以及经验的积累! 以及经验的积累! 预祝各位网友都能够早日成为这一领域的英才! 预祝各位网友都能够早日成为这一领域的英才!引用文章如下: 引用文章如下:http://www.eepw.com.cn/article/75559.htm http://article.ednchina.com/EDA/[1**********]217.htm

学习 NIOS-II 的流程-4——体会——艾米电子工作室4——学习心得搞技术是一个枯燥的过程,同时也是一个很有意思的过程,当你一天甚至一周都在为一个问题发愁时, 搞技术是一个枯燥的过程,同时也是一个很有意思的过程,当你一天甚至一周都在为一个问题发愁时,你是枯燥 无味的,当你由点亮一个小灯到能够控制液晶显示的时候,这个过程是很有意思的! 无味的,当你由点亮一个小灯到能够控制液晶显示的时候,这个过程是很有意思的!每个人都有一个不同的学习方法,这里将我的方法与大家分享,不一定适用于你,但只要给你提供一个思路,就 达到我的目的了。 学习一门新的技术,尤其是以前没有接触过的,大家第一时间的想法都是搜集资料,大量的找资料,实际上我们 从网络上搜集到的资料,真正自己能用心看的不到 10%,真正精华的文章或者资料也就 5%,当然我所指的是 一个完全新的领域,比如 NIOS 的开发,一些简单的基本的资料随处可见,但是真正要找到一个高级点的可用的 程序或者 demo 就很难很难,最后还需要自己开发! 初学者,能够达到入门的目标足以,当你在平地数山上的台阶时你看到的是有限的,当你走上山腰再看的时候你 当你在平地数山上的台阶时你看到的是有限的 台阶时你看到的是有限的,会发现你在平地看到的台阶都已经在你的脚下了! 会发现你在平地看到的台阶都已经在你的脚下了!学习体会 1-做笔记开始学习 NIOS 一定要做笔记,写简单的记录,比如如何建立 Quartus 工程,如何创建 NIOS 工程,调试时候 哪些环节容易出问题,都一一记下,下次出现同样的问题可以很方便的解决!学习体会 2—利用网路互联网给我们带来的信息是不可估量的,遇到一个新的问题,首先不要问别人,至少我是这样,呵呵,当然我在 这里说这句话,有点推脱之嫌,但今天,我这里完全是以一个开发人员的身份来写这篇文章,而不是以一个卖开 发板的来推脱责任! 你遇到的所有问题, 尤其是初学者的问题, 有时候只是一个微不足道的问题, 简单的 google 一下就可以搞定了!学习体会 3-至少有一本好书

学习 NIOS 或者 FPGA 至少要有一本好书,本人从 51 到 FPGA 的书籍市价估计超过 1k,本人 03 年入学,04 年开始学习单片机至今学习过 51、avr、msp430、arm7、arm9、FPGA 等,购买的书籍很多。一本好书有的 时候就是一个好老师!学习体会 4-泡论坛泡论坛,我想很多网友都有经历,然而不知道大家发现一个问题没有,就是一个很简单的问题 ,可能会有很多网友提问,请大家记住,初学者所遇到的问题 80%在论坛中或者网路上都能够找到答案,至于说你找不到,那责任不在于别人,在于你的搜索能力!所以有问题,先搜索,然后再提问!写在最后 今晚连着写了四片文章,打字手都已经麻木了,所说的话完全是个人总结经验,希望对网友能有所帮助,也希望 大家看了能够有所收获! 转载请注明出处,谢谢合作!

学习 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 即可! 有了开发板,那么软件上,需要你设置那些呢?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 完成 软件开发的工程建立,程序的编译、连接 以及最后软核代码的生成下载,仿真调试等!

学习 NIOS-II 的流程-2——初体验——艾米电子工作室2——初步学习体验 NIOS这里包括 LED、 串口、 LCD、 按键输入、 中断、 定时器等等,这个过程跟单片机开发其实没什么区别,只 是注意一下 NIOS 中软件的开发特点即可,比如对 IO 的输入输出控制、方向控制等等。 IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE, led);】附一个程序如下:#include "system.h" #include "altera_avalon_pio_regs.h" #include "alt_types.h" int main (void) __attribute__ ((weak, alias ("alt_main")));int alt_main (void) { alt_u8 led = 0x2; alt_u8 dir = 0; volatile int i;while (1) { if (led & 0x81) { dir = (dir ^ 0x1); } if (dir) { led = led >> 1; } else { led = led

如图所示,程序中的 IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE, led); 对端口的输出进行操作,里面的 base 对应 Quartus 中的 out_port_from_the LED[7..0] 注意,NIOS 编程时这个地址一定要大写,而在 SOPC Builder 中可以小写命名。比如——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 工程 这里面包括,在 SOPC Builder 中建立 NIOS 的软核,并定制系统外设,完成基本编译,配置引脚之后,修改一些没有用到的 IO 属性为三态输入,最后完全编译系统。此时生成系统的配置文件 sof。

第二步,建立 NIOS IDE 开发环境 写 C 语言代码,并编译工程,开始仿真或者直接调试,调试的技巧需要一点一点的积累总结。不过玩过单片机的 朋友,我相信都很熟悉这个的设置与技巧。

第三步:系统的下载 系统编译调试通过后, 我们需要把 sof 文件和 elf 文件下载到 EPCS 配置芯片中, 这样下次上电时候才能运行程序。 点击 tools》flash programer 》

第四步-重新定制系统 如果在前三步发现问题, 返回差错, 然后分别重新编译工程, 如果期间需要加入新的模块, 也需要重新定制系统, 然后重新编译。 这期间由三个步骤的时间耗时非常长,所以为了节省开发时间,尽量不要反复编译工程 1 quartus 的完全编译 2 SOPC Builder 生成系统文件 3 NIOS 的第一次 Build 硬件系统完成后,NIOS 也完成了第一次的完全编译,之后的软件开发工作就相对简单多了,每次只需要简单编 译,很快就 ok!补充: 有可能会出现如下界面。 补充:run 或者 debug 的时候 有可能会出现如下界面。nios2-terminal: connected to hardware target using JTAG UART on cable nios2-terminal: "USB-Blaster [USB-0]", device 1, instance 0 nios2-terminal: Warning: The JTAG cable you are using is not supported for Nios nios2-terminal: II systems. You may experience intermittent JTAG communication nios2-terminal: failures with this cable. Please use a USB Blaster revision B nios2-terminal: cable or another supported cable. Please refer to the file

nios2-terminal: errata.txt included in the Nios II development kit documents nios2-terminal: directory for more information. nios2-terminal: (Use the IDE stop button or Ctrl-C to terminate)提示 JTAG 的类型不匹配,但不影响使用,这里面用公版的 USB-Blaster 就没有问题的,具体的就不多说了,有 可能是软件里面做的手脚。

学习 NIOS-II 的流程-3——完全定制——艾米电子工作室3——定制你自己的 NIOS到这个过程确实是学习 NIOS 中比较高级的实验了,周立功的《SOPC 嵌入式系统实验教程(一)》中把这一知 识点放在第 7 章-“SOPC 硬件系统高级教程”这里再次向广大网友推荐周立功的这本书,非常好,可以说是学习 NIOS 的教科书,定价 29 元,很值得!这一讲,引用网上的几篇文章,摘录如下: 这一讲,引用网上的几篇文章,摘录如下: 自定义外设作为 NiosII 软核处理器超强灵活性的体现,其开发遵循一定的规律。一个用户自定义外设必须进行硬 件设计,也就是说,必须用硬件描述语言来描述出硬件的逻辑组成。一般来说,一个自定义外设主要由下列部分 组成: ① 描述自定义外设逻辑的硬件描述文件部分(主要是 HDL 程序)。 ② 软件文件,一个用来定义外设寄存器的 C 语言头文件,以及让程序员控制这个元件的软件驱动程序。 ③ 元件的描述文件(class.ptf)。该文件定义了元件的架构,提供了 SOPC。 Builder 将该元件集成到一个系统的各种信息。 该文件由元件编辑器根据用户提供的硬件和软件文件以及在图 形用户界面中设置的各个选项和参数自动生成。图 1 给出了带 Avalon 从端口的自定义外设组成框图。从图中可以看出,一个典型的自定义外设主要由下列功能模块组成: ① 任务逻辑。任务逻辑实现外设的基本功能,是必不可少的组成部分。 ② 寄存器文件。寄存器文件部分提供任务逻辑和外界交换信息的桥梁。有了寄存器文件,用户就可以通过 Avalon 接口采用“基地址+地址偏移量”的方法来访问外设内部的各个寄存器。 ③ Avalon 接口。Avalon 接口为寄存器文件提供了一个标准的 Avalon 前端。该模块使用 Avalon 规定的信号 来访问寄存器文件,并且支持任务逻辑的传输类型。

用户自定义 IP 核按照对 Avalon 总线操作的不同可分为 Avalon Master 外设、 Avalon Slaver 外设及 AvalonStreaming 外设。用户开发的外设大多为 Avalon Slaver 外设,Avalon Master 和 Avalon Streaming 外设的开发比 Avalon Slaver 外设要复杂,但开发流程相同。一个典型的 Avalon 外设的开发步骤如下: (1)规划元件的硬件功能。如果采用微控制器来控制该元件,则规划访问该硬件的应用程序接口(API); (2)在硬件和软件要求的基础上,定义一个恰当的 Avalon 接口(一般为 Avalon 从端口); (3)使用硬件描述语言描述硬件逻辑。一个典型元件的硬件架构一般 3 部分组成:接口模块(avalon interface)作为顶 层模块,定义总线接口信号;寄存器文件模块(register file)完成该元件与外部信号进行通信,提供访问与控制元件 的逻辑界面;行为模块(task logic)实现元件的硬件功能。片上总线 AvaIon 从端口的信号都不是必须的,一个典型 的 Avalon 从端口所包含的信号如表 1 所示。(4)单独验证元件的硬件功能; (5)写用于描述寄存器的 C 头文件来为软件定义硬件寄存器映像; (6)写元件的驱动软件; (7)把通过测试的源代码使用元件编辑器封装硬件 HDL 和软件文件,完成元件定制。用户学习到这一步, 的开发也就没什么难点了, 可以完全自己定制系统, 以后的开发就是时间问题, 用户学习到这一步, 基本上 NIOS 的开发也就没什么难点了, 可以完全自己定制系统, 以后的开发就是时间问题, 以及经验的积累! 以及经验的积累! 预祝各位网友都能够早日成为这一领域的英才! 预祝各位网友都能够早日成为这一领域的英才!引用文章如下: 引用文章如下:http://www.eepw.com.cn/article/75559.htm http://article.ednchina.com/EDA/[1**********]217.htm

学习 NIOS-II 的流程-4——体会——艾米电子工作室4——学习心得搞技术是一个枯燥的过程,同时也是一个很有意思的过程,当你一天甚至一周都在为一个问题发愁时, 搞技术是一个枯燥的过程,同时也是一个很有意思的过程,当你一天甚至一周都在为一个问题发愁时,你是枯燥 无味的,当你由点亮一个小灯到能够控制液晶显示的时候,这个过程是很有意思的! 无味的,当你由点亮一个小灯到能够控制液晶显示的时候,这个过程是很有意思的!每个人都有一个不同的学习方法,这里将我的方法与大家分享,不一定适用于你,但只要给你提供一个思路,就 达到我的目的了。 学习一门新的技术,尤其是以前没有接触过的,大家第一时间的想法都是搜集资料,大量的找资料,实际上我们 从网络上搜集到的资料,真正自己能用心看的不到 10%,真正精华的文章或者资料也就 5%,当然我所指的是 一个完全新的领域,比如 NIOS 的开发,一些简单的基本的资料随处可见,但是真正要找到一个高级点的可用的 程序或者 demo 就很难很难,最后还需要自己开发! 初学者,能够达到入门的目标足以,当你在平地数山上的台阶时你看到的是有限的,当你走上山腰再看的时候你 当你在平地数山上的台阶时你看到的是有限的 台阶时你看到的是有限的,会发现你在平地看到的台阶都已经在你的脚下了! 会发现你在平地看到的台阶都已经在你的脚下了!学习体会 1-做笔记开始学习 NIOS 一定要做笔记,写简单的记录,比如如何建立 Quartus 工程,如何创建 NIOS 工程,调试时候 哪些环节容易出问题,都一一记下,下次出现同样的问题可以很方便的解决!学习体会 2—利用网路互联网给我们带来的信息是不可估量的,遇到一个新的问题,首先不要问别人,至少我是这样,呵呵,当然我在 这里说这句话,有点推脱之嫌,但今天,我这里完全是以一个开发人员的身份来写这篇文章,而不是以一个卖开 发板的来推脱责任! 你遇到的所有问题, 尤其是初学者的问题, 有时候只是一个微不足道的问题, 简单的 google 一下就可以搞定了!学习体会 3-至少有一本好书

学习 NIOS 或者 FPGA 至少要有一本好书,本人从 51 到 FPGA 的书籍市价估计超过 1k,本人 03 年入学,04 年开始学习单片机至今学习过 51、avr、msp430、arm7、arm9、FPGA 等,购买的书籍很多。一本好书有的 时候就是一个好老师!学习体会 4-泡论坛泡论坛,我想很多网友都有经历,然而不知道大家发现一个问题没有,就是一个很简单的问题 ,可能会有很多网友提问,请大家记住,初学者所遇到的问题 80%在论坛中或者网路上都能够找到答案,至于说你找不到,那责任不在于别人,在于你的搜索能力!所以有问题,先搜索,然后再提问!写在最后 今晚连着写了四片文章,打字手都已经麻木了,所说的话完全是个人总结经验,希望对网友能有所帮助,也希望 大家看了能够有所收获! 转载请注明出处,谢谢合作!


相关内容

  • 人际关系发展干预RDI
  • 专题四 人际关系发展干预(RDI ) [主要内容] ✧ RDI 的理论基础: 社交体系与技能的划分:人际交往的发展阶段:自闭症患者人际互动的缺陷 ✧ RDI 的介入模式:治疗目标.基本特点.治疗原则.评估与追踪.水平与阶段 针对自闭症患者最显著缺陷--社会性功能降碍,美国临床心理学博土.人际关系发展 ...

  • 分享活动在团体辅导中的重要性
  • 分享活动在团体辅导中的重要性(下载DOC檔) 壹.前言 「分享」是一种经验的交流,只要有人的地方就会有分享,因为人会 透过语言.文字.肢体动作与别人互动,在这互动过程中就会产生有一种 重要的要元素---「情感」,透过这个重要元素,分享让人有一种喜悦.成 长与减轻负担的感觉,透过分享,人与人的距离更接 ...

  • 安全经验分享案例
  • 未作风险识别,维护加油机碰坏顾客车辆 1.事件经过: 2007年我在北海小组工作期间,一次进行加油机日常维护中,认为加油机维护时间不长,抱着侥幸心理.未按要求事先做好危险因素识别,制定防护措施,设立作业区域,就对加油机进行检查维护.打开加油机的盖板随手就靠在旁边的立柱上,也就是一分钟左右的时间,忽然 ...

  • 个别化学习活动中的分享交流
  • 个别化学习活动中的分享交流 发布时间:2012年10月30日 来源: 字体:[大 中 小] 当幼儿在个别化学习活动中进行了探索.学习后,教师在哪些必要和可能的情况下,要组织幼儿交流体验与收获,分享快乐与成功? 问题与对策: 1.当新材料投放后只有部分幼儿尝试--分享基于引发兴趣 教师投放新材料后,无 ...

  • 优秀项目推荐:国内在线学习网站推荐
  • 时间:2012-11-05 00:41来源:web20share 作者:web20share - 一.什么是在线学习网站 在线学习是通过计算机互联网,或是通过手机无线网络,在一个网络虚拟教室与教室进行网络授课.学习的方式.在线学习网站(社区)跟多是通过互联网的方式实现教与学之间的沟通和互动,更好的通 ...

  • 一般儿童的团体辅导方案
  • 一般儿童的团体辅导方案 一般儿童的团体辅导方案 --扫落失落及悲伤 (彰化师大辅导与咨商学系 高淑贞著) 一.领导者须知 带领失落与悲伤团体的领导员应该要先检视自己过去的失落.悲伤经验,真诚地反省及面对自己的感受与信念,才有可能对团体的反应更开放,并减少负面影响团体成员的可能性. (一) 主要任务: ...

  • 通过教师资格证考试的经验分享
  • 通过教师资格证考试的经验分享 2015年,教师资格考试全国统考由教育部统一制定考试标准和考试大纲,组织笔试和面试试题,并建立试题库,考试将按照高考的要求来组织:按照教育部的要求,师范毕业生不再直接认定教师资格,统一纳入考试范围:在校学生专科大三,本科大四才能报考:教师资格考试合格证明有效期为三年,中 ...

  • 小班早期阅读活动教学策略
  • 小班早期阅读活动教学策略 [摘要]众所周知,阅读是一切学习的基础,我们80%的知识都来源于阅读.较早开始阅读的孩子,智力发展比较迅速,学前期是阅读教育的关键期,国内外有关阅读的各种理念层出不穷,有关阅读的争论也一直都未停止过.在小班分享阅读实践过程中,我边学习,边反思,总结出游戏法.多元导入法.情景 ...

  • 腾讯 用产品经理思维做培训
  • 在刚刚落幕的ATD全球大会上(参见本期"专题"<让学习与创新紧随时代步伐>),腾讯公司囊括了三项最高奖项――人才发展创新奖.卓越实践奖.卓越实践奖提名奖,成为ATD本年度奖项评选的最大赢家.ATD总裁兼首席执行官托尼・宾汉姆(TonyBingham)赞誉道:" ...