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

2009-4-2 23:12 4244 13 14 分类: FPGA/CPLD

 


学习NIOS-II的流程-3——完全定制


——艾米电子工作室







3——定制你自己的NIOS


到这个过程确实是学习 NIOS中比较高级的实验了,周立功的《SOPC 嵌入式系统实验教程(一)》中把这一知识点放在第7章-“SOPC硬件系统高级教程”


这里再次向广大网友推荐周立功的这本书,非常好,可以说是学习NIOS的教科书,定价29元,很值得!


这一讲,引用网上的几篇文章,摘录如下:


 自定义外设作为NiosII软核处理器超强灵活性的体现,其开发遵循一定的规律。一个用户自定义外设必须进行硬件设计,也就是说,必须用硬件描述语言来描述出硬件的逻辑组成。一般来说,一个自定义外设主要由下列部分组成:

       ①  描述自定义外设逻辑的硬件描述文件部分(主要是HDL程序)。
       ②  软件文件,一个用来定义外设寄存器的C语言头文件,以及让程序员控制这个元件的软件驱动程序。
       ③  元件的描述文件(class.ptf)。该文件定义了元件的架构,提供了SOPC。

       Builder将该元件集成到一个系统的各种信息。该文件由元件编辑器根据用户提供的硬件和软件文件以及在图形用户界面中设置的各个选项和参数自动生成。图1给出了带Avalon从端口的自定义外设组成框图。


200942194346320.jpg


       从图中可以看出,一个典型的自定义外设主要由下列功能模块组成:
      
       ①  任务逻辑。任务逻辑实现外设的基本功能,是必不可少的组成部分。
       ②  寄存器文件。寄存器文件部分提供任务逻辑和外界交换信息的桥梁。有了寄存器文件,用户就可以通过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所示。




200942194149269.jpg

(4)单独验证元件的硬件功能;


(5)写用于描述寄存器的C头文件来为软件定义硬件寄存器映像;


(6)写元件的驱动软件;


(7)把通过测试的源代码使用元件编辑器封装硬件HDL和软件文件,完成元件定制。






用户学习到这一步,基本上NIOS 的开发也就没什么难点了,可以完全自己定制系统,以后的开发就是时间问题,以及经验的积累!


预祝各位网友都能够早日成为这一领域的英才!






引用文章如下:


http://www.eepw.com.cn/article/75559.htm


http://article.ednchina.com/EDA/20081213100217.htm


 

文章评论3条评论)

登录后参与讨论

用户427821 2012-11-1 09:25

这个是我认为学校NIOS最难的,希望自己能早日攻破呀!

用户301449 2010-4-30 10:51

楼主我想请教一下,就是我用SOPC builder建用户自定义外设PWM时,没有输出,生成系统后没有pwm的输出脚。在见外设时和周立功那书上信号形式不一样,他那上面有EXPORT,而我建外设时,avalon端口里却没有。

用户1150231 2009-8-22 09:21

#7 请教 贴子回复于:2009/8/22 9:20:22 楼主我想请教一下,我也试图学习nios,买过两三本书,我现在的问题是,编程时对符号不知道从哪里查,因为我买的书都是介绍nios硬件,对其中的常量名,代码都没有详细介绍,比如alt_u8 ,随然这个能猜到,还有 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]); 不直到哪本书能详细介绍软件呢?摆脱楼主帮我一下 吧
相关推荐阅读
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时间不长,水平有限,教程中肯定会出现这样或那样的...
我要评论
3
13
关闭 站长推荐上一条 /2 下一条