引言:
嵌入式处理器是嵌入式系统的核心,有硬核和软核之分。其中,嵌入式处理器软核以其更大的使用灵活性,更低廉的成本,受到了研发人员和市场的广泛欢迎。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的特点就是在FPGA上高度集成,尽量减少芯片外部连线,十分符合汽车行驶记录仪对体积和可靠性的要求。
汽车行驶记录仪应该具备适应用户需求变化的能力,具备良好的可扩展性和升级特性。可编程逻辑器件FPGA以及Nios II的特点使得通过对软件代码的更新就可以完成系统的维护和升级。
3.1 硬件平台的搭建
根据汽车行驶记录仪的功能,将整个系统划分为四个部分,如图1所示。
图1 系统整体框图
图1中各部分的功能如下:
Nios II系统模块:中央控制单元。包含Nios II处理器,Avalon总线,中断时钟以及与外设的接口。控制程序由运行在Nios II CPU上的软件完成,负责对信号的采集,处理和存储操作,并控制通信过程;
信号输入部分:接收外部传感器和开关量信号,并进行处理,将处理后的数据送到Nios II系统模块的数据采集端口(PIO);
存储器部分:存储采集的数据;
通信模块:采用RS-232,负责与分析仪之间的通信。
根据各个部分的功能和开发板的配置(本项目所用的开发板为Stratix 1s10,FPGA的型号为:EP1S10F780C6),需要用到的外围器件有:对模拟输入信号进行模数转换的ADC0809;用于试验中存储数据的 SRAM存储器;用于试验数据备份的Flash存储器;装载软件程序、异常处理的SDRAM存储器;记录仪与分析仪之间的通信接口RS232;用于超速报警的LED;等等。
按照系统的硬件规划,在SOPC Builder需要添加如下IP模块:
l Nios II 32位CPU 软核处理器;
l Interval_timer 中断时钟,每0.2秒发出中断;
l Keydoor_pio 接收钥匙门信号的输入;
l Power_off_pio 接收掉电信号的输入;
l Vehicle_speed_pio 连接车速传感器输出脉冲计数器的输出端;
l Over_speed_alarm_pio连接超速报警LED;
l Rotate_speed_pio 连接曲轴传感器输出脉冲计数器的输出端;
l Initial_pio 系统复位端口;
l Adc_control_pio ADC 0809控制端口;
l Adc_eoc_pio连接ADC 0809转换结束指示引脚;
l Adc_data_pio 连接ADC 0809的8个数据输出引脚;
l Switch_input_pio 接收开关量的输入;
l Sdram 软件程序,异常处理存储器;
l Ext_ram_bus 外部存储器总线;
l Ext_ram 外部RAM接口;
l Ext_flash 外部flash接口;
l Uart通用异步接收发送器,实现RS_232接口;
l Jtag_uart 调试用接口;
3.2 软件实现
汽车行驶记录仪的各种应用功能是由C/C++语言编写的软件程序来完成。在Nios II IDE中新建一个工程时,系统会针对目标硬件平台自动生成硬件抽象层的应用程序接口(HAL API)供程序编写人员调用。
汽车行驶记录仪的工作过程如下:
1.汽车行驶过程中,记录仪每0.2秒采集并记录事故疑点数据;每分钟记录行驶状态数据;在记录的过程中要记录最高车速。
2. 汽车停驶时,记录仪并没有停止工作,但此时不进行数据的采集和记录。在停车过程中,分析仪可以采集记录仪的数据。
3.车辆,驾驶员基本信息采取系统初始化时预置进记录仪的形式。
4.记录仪是否采集数据用钥匙门控制,接收到钥匙门启动车辆的信号,记录仪开始记录;接收到钥匙门的熄火信号,停止记录。
5.记录仪掉电,备份数据,停止工作。
根据上述记录仪的工作过程,软件程序整体流程设计如图2所示。
图2 汽车行驶记录仪工作整体流程图
结论:本文所介绍的新一代汽车行驶记录仪,采用了基于嵌入式处理器Nios II的SOPC设计技术,能够更完整,更精确,更多样化的记录汽车在行驶过程中的各种数据,符合国家标准,取得了较满意的效果。在设计过程中大量复用成熟的IP软核,很大程度上提高了系统的稳定性,大大节省了系统开发时间,充分体现了IP复用技术带来的好处。
来源:电子产品世界
评论
查看更多