基于MCU和FPGA灵活设计车载信息娱乐系统
汽车工业蓬勃发展, 车载信息娱乐系统 已经不再是豪华轿车的独有设施,越来越多的中低端轿车开始拥有自己的信息娱乐系统。 然而,车载信息娱乐系统是一个高度集成的复杂系统,其中可以包括导航系统、影音系统、电话系统、空调通风系统,以及其他车内外舒适设备的控制系统等,这些系统涉及的通讯网络可以包括LINK_KEYWORD0、MOST、LIN、蓝牙和其他无线网络协议等。设计这样一个复杂系统,不但要考虑系统的性能和成本,更要考虑设计的灵活性,以保持产品在快速变化的市场中的竞争力。
汽车电子系统要求温度适应范围大、有利于生产标准化和很长的设计寿命。车载信息娱乐系统是一个快速发展和适应各种用户的系统,如果既要保持一个设计具有长的寿命又要有高度的灵活性,那么这种设计在软硬件,特别是在硬件方面要有很强的可扩展性。 一般来说,车载信息娱乐系统具有复杂的人机界面(按键和旋钮),带一个可以显示地图、影像和汽车信息的液晶显示器,有时还会是触摸屏。这种系统一般以一个高性能 MCU 为中心,加上各种标准接口以及一个视频加速器件。 DSP、ASSP和 FPGA 都可以用来实现多种接口和视频处理。DSP专为信号处理而设计,具有灵活度高和功耗低的特点。然而,目前DSP的运算能力尚不能同时满足更高的图像处理和无线通讯的要求。ASSP通常为某个标准的图像处理和无线通讯而设计,换言之,它不具有适应多种标准的可编程性。FPGA同时具有高的运算能力和内部逻辑的现场可编程性,它能够适应车载信息娱乐系统的灵活性。另外,FPGA的现场可编程性使之能够代替很多原来要ASIC来实现的功能单元,这样就给硬件设计带来很大自由度。
应用MCU+FPGA的设计,软件和外设硬件都可以在FPGA中变化,整个系统相当于一个很容易进行升级的软件,改变硬件就像改变软件一样简单。这样的系统可以满足从低端到中高端汽车电子产品的设计、测试和生产的要求。所以,基于MCU+FPGA的设计给车载信息娱乐系统带来了很大的灵活性。 在确立了基本硬件框架之后,接着就要考虑基于这种框架的芯片的选择。对于车载娱乐信息系统这样一个复杂的人机交互系统,高性能和高安全的嵌入式实时操作系统是首选的软件基础。而该操作系统支持的芯片组将是MCU的主要候选者。目前,在汽车工业界普遍接受的组合是SH4(MCU)加上QNX(操作系统)。 考虑了硬件之后,软件的架构就变得明晰了。由于QNX支持POSIX规范,所以基于它编写的模块化的应用程序和应用开发库具有良好的可移植性,这对支持同类软件架构的其他平台的开发无疑是一件节约成本的好事。
图1:硬件的基本构成示意图。 软件架构的概念设计实际上可以在操作系统明确之前就开始。软件设计不一定非要遵从POSIX规范,而是要满足系统的高性能、设计的模块化、应用的可伸缩性和代码的可重用性及可移植性。 通常一个基于MCU的复杂软件系统应该定义以下的软件层: BSP:处理和MCU初始化相关的事务,如IPL(Initial Program Loader)和Startup Program等; 设备驱动:所有和硬件相关的程序,如FLASH driver、CAN driver和图形图像驱动等; OS:核心操作系统,负责提供资源管理和安全任务调度等服务,它甚至也可以包含一些高层次的驱动设备,如标准输入输出设备驱动等; 中间件:介于操作系统和应用程序之间的程序,如各种API和FPGA Loader等; 应用程序:具有高度可重用性的、完成特定功能的程序模块,如媒体播放器和导航软件。 在MCU+FPGA的架构之下,每个和FPGA相关的应用程序都自带一个初始化例程。该初始化例程在需要启动该应用程序之前将该应用程序映射到FPGA,然后该应用程序在FPGA上运行。根据应用程序的要求,MCU可以在完成映射之后,保持和FPGA强的或弱的通讯联系。这种结构部分解放了MCU,使之能够有效地进行任务调度和资源管理,而FPGA也能够在特定环境下高效运行。这种系统的另外一个好处就是非常稳定且容易维护。运行在FPGA中的应用程序的不良动作或崩溃通常不会影响到运行在MCU中的操作系统。在发现某个应用程序失效之后,操作系统可以从容地重新开始该应用程序的新例程,而不必重启整个系统。 运行在FPGA中的应用程序,虽然看起来和普通运行在ASIC或ASSP中的系统并无区别,但是这些应用程序的结构实际上有很大的区别。运行在ASIC或ASSP中的系统是根据已经确定的具有特定功能硬件环境设计的,而运行在FPGA中的应用程序是根据将要完成的功能,自己调整FPGA的逻辑单元,使之能够适应环境。正是FPGA这种现场可编程性,使我们能够在适当的时候启动适当的应用程序,这大大增加了设计的灵活性。
|