基于嵌入式处理器软核Nios II的IP复用技术及应用
引言:
嵌入式处理器是嵌入式系统的核心,有硬核和软核之分。其中,嵌入式处理器软核以其更大的使用灵活性,更低廉的成本,受到了研发人员和市场的广泛欢迎。Altera公司最新推出的嵌入式处理器软核Nios II更是软核处理器中的先进代表,它已经快速的渗透到教学、科研以及生产等各个方面,积极的推动着嵌入式技术、SOPC(可编程片上系统)的发展。
1 Nios II 简介
二十世纪九十年代末,可编程逻辑器件(PLD)的复杂度已经能够在单个可编程器件内实现整个系统,可编程片上系统(SOPC)已成为现实。Altera将可编程器件的优势拓展到嵌入处理器的开发设计中,推出了成功的产品。
2000年,Altera发布了Nios处理器,这是Altera Excalibur嵌入处理器计划中的第一个产品,是第一款用于可编程逻辑器件的可配置软核处理器。
2004年6月,Altera公司在第一代Nios取得巨大成功的基础上,又推出了更加强大的Nios II嵌入式处理器。它采用32位的RISC指令集,32位数据通道,5级流水线技术,可在一个时钟周期内完成一条指令的处理。与Nios相比,Nios II处理器拥有更高的性能和更小的FPGA占用率,并且提供了强大的软件集成开发环境Nios II IDE,所有软件开发任务包括编辑、编译、调试程序和下载都可以在该环境下完成。
Altera公司将Nios II处理器以IP( Intellectual Property知识产权)核的方式提供给设计者,有快速型(Nios II/f)、经济型(Nios II/e)和标准型(Nios II/f)三种处理器内核,每种内核都对应不同的性能范围和资源成本。设计者可以根据实际的情况来选择和配置处理器内核,轻松的创建一款“完美”的处理器。
2 Nios II系统的开发流程
Nios II系统的开发主要可以分为两大步:搭建硬件平台和针对目标平台编写应用软件程序。
Altera公司设计的开发工具SOPC Builder,将所有和处理器子系统相关的底层详细资料集中到这个工具中,让用户完全置身于直观的图形界面下添加和配置所需的处理器和功能部件,并自动完成包含定义存储器映射、中断控制和总线控制在内的系统配置工作,使得开发工作简单化,设计者能够更加着眼于系统的功能而无须拘泥于过多的细节。
集成于SOPC Builder中的Nios II IDE,采用绝大部分设计者非常熟悉的标准GNU环境,能够让设计者在其中完成所有的软件开发任务。
搭建硬件平台所需的工作如下:
(1)硬件开发的主要工作是构建Nios II系统模块。在SOPC Builder中选取合适的CPU、存储器以及外围器件(如片内存储器、PIO、UART和片外存储器接口),并通过参数的设计定制它们的功能。
部件选择完成后,使用Quartus II软件选取具体的Altera可编程器件系列,并对SOPC Builder生成的HDL设计文件进行布局布线,生成Nios II系统模块;
(2)将生成的Nios II系统模块加入到Quartus II工程下的顶层设计文件,为Nios II系统模块的I/O端口分配管脚或者连接FPGA内部逻辑。I/O管脚分配后,进行编译,系统生成配置文件;
(3)使用Quartus II编程器和Altera下载电缆,下载配置文件到开发板。当硬件设计校验完成后,可以将配置文件下载到开发板上的非易失存储器里。
下载完硬件配置文件后,软件开发者就可以把此开发板作为软件开发的初期硬件平台对软件功能进行开发验证。
软件开发流程归纳如下:
(1)在用SOPC Builder进行硬件设计的同时,就可以开始编写独立于器件的C/C++软件,比如算法或控制程序,并可以使用现成的软件库和开放的操作系统内核来加快开发进程。
(2)在NIOS II IDE中建立新的软件工程,这时,IDE会针对目标硬件平台自动生成一个定制HAL系统库,这个库能为程序和底层硬件的通信提供接口驱动程序。
(3) 使用NIOS II IDE对软件工程进行编译、调试,运行。[1]
3 Nios II 在汽车行驶记录仪中的应用
汽车行驶记录仪是对车辆行驶速度、时间、里程以及有关车辆行驶的其它状态信息进行记录、存储并可通过接口实现数据输出的数字式电子记录装置。
采用基于嵌入式处理器Nios II的SOPC技术来设计汽车行驶记录仪的优势如下:
汽车行驶记录仪需要存储、传输数据,必要时还需具备显示和警报功能,系统接口较多,SOPC Builder提供了大量的接口IP核供用户选择,使得设计方便快捷,能够大大的缩短开发工期。
汽车行驶记录仪因其特殊的工作环境,要求尽可能的减小产品体积并提高系统的可靠性,SOPC的特点
- Linux嵌入式系统开发平台选型探讨(11-09)
- 基于Winodws CE的嵌入式网络监控系统的设计与实现(03-05)
- 嵌入式系统实时性的问题(06-21)
- 嵌入式实时系统中的优先级反转问题(06-10)
- 嵌入式Linux系统中MMC卡驱动管理技术研究(06-10)
- FPGA的DSP性能揭秘(06-16)