简介:

嵌入式处理器是嵌入式系统的核心,可分为硬核和软核。其中,嵌入式处理器软核以其更大的灵活性和更低的成本受到了研究人员和市场的广泛欢迎。Altera公司最新推出的嵌入式处理器软核Nios II是软核处理器的高级代表。它迅速渗透到教学、科研和生产中,积极推动了嵌入式技术和SOPC(可编程片上系统)的发展。

1 NIOS新协议简介

90年代末,复杂的可编程逻辑器件(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公司以IP( Intellectual Property知识产权)核的形式向设计师提供Nios II处理器。有三个处理器核心:快速(Nios II/f)、经济(Nios II/e)和标准(Nios II/f),每个核心对应不同的性能范围和资源成本。设计师可以根据实际情况选择和配置处理器内核,轻松打造“完美”的处理器。

2 NIOS新协议体系的开发过程

Nios II系统的开发可以分为两大步骤:搭建硬件平台和为目标平台编写应用软件程序。

Altera公司设计的开发工具SOPC Builder将所有与处理器子系统相关的底层细节集成到这个工具中,允许用户在直观的图形界面中完整地添加和配置所需的处理器和功能组件,并自动完成包括定义内存映射、中断控制和总线控制在内的系统配置工作,简化了开发工作,使设计人员能够更多地关注系统功能,而不必拘泥于过多的细节。

SOPC Builder中集成的Nios II IDE采用了大多数设计人员非常熟悉的标准GNU环境,使设计人员能够完成所有的软件开发任务。

构建硬件平台所需的工作如下:

(1)硬件开发的主要工作是构建Nios II系统模块。在SOPC构建器中选择合适的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集成开发环境编译、调试和运行软件项目。[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存储器,用于存储测试中的数据;用于备份测试数据的闪存;加载有软件程序和异常处理的SDRAM存储器;记录仪与分析仪之间的RS232通信接口;超速报警LED等一下。

根据系统的硬件规划,以下IP模块需要添加到SOPC生成器中:

L Nios II 32位CPU软核处理器;

L Interval_timer中断时钟,每0.2秒给出一次中断;

L Keydoor_pio接收钥匙门信号的输入;

L Power_off_pio接收掉电信号的输入;

L Vehicle_speed_pio与车速传感器的输出脉冲计数器的输出端相连;

l超速报警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外部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复用技术带来的好处。

来源:电子产品世界