冯莹靓, 代寿刚, 顾万里, 王铭海, 李宝华
(吉林大学 电子科学与工程学院, 长春 130012)
现代社会中汽车已经不仅是交通工具, 而且需要具备娱乐、 办公和通讯等多种功能。伴随汽车工业和电子信息产业加速融合, 汽车开始向智能化方向发展, 由以机械产品为主向高级机电一体化产品方向演变。国外的顶级车型目前配备的车载电脑系统相对于其他轿车的车载系统具有更加人性化、 功能更强大等特点。随着人们对汽车智能水平的关注, 车载电脑系统的实时性与可靠性需求逐渐提高, 目前大部分基于ARM(Asynchronous Response Mode)处理器实现的车载电脑操作系统虽然功能完善, 但成本高昂, 系统稳定性需要进一步提高。另外, 很多系统启动时间较长, 代码和数据都是flash存储模式, 导致数据容易丢失等问题, 对使用这些系统的中低端车型会造成很多不便。
笔者提出一种面向中低端车型, 基于SOPC(System On a Programmable Chip)与乒乓存储技术的高稳定性与高安全性的嵌入式车载信息终端。系统以FPGA(Field Programmable Gate Array)作为硬件载体, 配置PowerPC软处理器, 并充分利用了自定义元件与自定义指令技术。处理器接收AXI(Advanced Extensible Interface)总线信号并实时地处理汽车状态信息, 以真彩图片的方式显示在LCD(Liquid Crystal Display)上。同时对行车记录进行分析与存储, 启动时间控制在3 s以内, 事件平均响应时间是500 ms, 同时实现了行车状态黑匣子功能。该设计能极大地提高系统的安全性与稳定性, 优化了车载终端的开机时间与响应时间, 实现了汽车状态的实时显示。
该系统的硬件平台基于SOPC技术。SOPC技术是所有嵌入式系统设计的有机集合[1]。在AXI总线上, 除了PowerPC处理器, 还有DDR2(Double Data Rate 2)控制器、 Nor Flash控制器、 Nand Flash控制器、 CAN(Controller Area Network)控制器、 EPCS(Erasable Programmable Configurable Serial)控制器以及显示模块等, 系统原理图如图1所示。
系统上电后, PowerPC处理器从Nor Flash读取程序并于DDR2内存中运行。当CAN总线控制器接收到行车状态信号时, PowerPC处理器根据信号类型从Nand Flash调用图片, 并通过FIFO(First In First Out)写入SRAM(Static RAM)存储器。LCD控制器则会自主地从SRAM控制器的读FIFO中读出图像信息, 控制行、 场扫描信号驱动LCD进行显示。PowerPC处理器根据情况, 在Nor Flash中使用环路存储的方式对行车信息进行记录。
AXI总线(32位)根据外围设备的数据量, 通过适当的仲裁连接各个功能部件。AXI仲裁逻辑采用加权轮转策略[2]。例如, 在程序运行中指定中断0(最高优先级)到JTAG(Joint Test Action Group)模块, 为了区分CAN总线的数据, 可以利用Xilinx Platform Studio制作自定义元件, 最后集成到PowerPC系统。CAN总线控制器,NAND(Nor AND)闪存控制器和显示模块是用户自定义组件, AXI总线能很好地解决仲裁问题[3], 这些外设的控制模块都使用Verilog语言描述定义。
该SOPC系统的硬件平台采用Xilinx公司的FPGA芯片XC6SLX09FTG256作为PowerPC软处理器的硬件载体, XC6SLX09FTG256拥有9 152个逻辑单元, 200个用户通用输入/输出口, 90 kByte的存储单元和16个DSP48A1单元。系统充分利用自定义元件与自定义指令逻辑, 增加系统的灵活性, 同时提高了可编程片上系统的性能。软处理器PowerPC的工作频率为400 MHz, 因此, 其精确整数计算能力可以达到2亿条指令/s。
由于系统存储器中设计了两个Micron公司的同步动态随机存储器(MT47H128M16RT-25E, BGA(Ball Grid Array), 200 MHz, 1 Gbit, 8 Banks), 而且每个同步动态随机存储器都具有一个16位宽的数据总线因此, 系统存储器接口的宽度是32位。使用Nynix的NAND闪存(H27UCG8T2MYR, BGA, 8 GByte)作为系统的主存储器。用于图片或大文件的存储。系统运行使用的软件程序(C语言)存储在Numonyx的NOR(Not or)闪存中(PC28F128J3D-75, BGA, 128 Mbite), 硬件内核(Verilog语言描述的硬件结构)存储在M25P64-VMF芯片中供FPGA使用。另外设计了一块NOR闪存作为汽车的黑盒子。
处理器和汽车的ECU(Electronic Control Unit)之间通过CAN总线进行通信。系统使用JTAG接口通过USB(Universal Serial BUS)下载线调试SOPC硬件结构、 外部设备的驱动程序(Verilog语言)和AXI总线之上的系统逻辑软件(C语言)。
除处理器外的外围设备使用Verilog HDL语言描述并开发成自定义构件, 最后以处理器的从总线设备形式集成在SOPC上。PowerPC处理器作为SOPC系统的主控单元, 所有模块通过AXI总线与处理器连接, 处理器中使用C语言设计软件逻辑控制外部硬件模块。
图2 LCD控制器状态机
LCD接口包括数据总线与控制总线。其中控制总线又包括行同步信号、 场同步信号、 数据使能信号和像素时钟信号; 数据总线包括红、 绿、 蓝共16根数据线, 其中红色为5线, 绿色为6线, 蓝色为5线。LCD_PCLK(Pixel Clock)的时钟频率为30 MHz。由于时钟频率足够使LCD画面更新速度达到60帧/s, 因而能很好地满足行车系统实时性的要求。LCD行场扫描范围是1 024(列)×512(行), 其中800(列)×480(行)为有效的显示区域。每行有224像素的行消隐时间(由于LCD像素时钟频率PCLK为30 MHz, 因此行消隐时间为224×33 ns, 即7.4 μs), 每帧有32行的场消隐时间。LCD控制器利用行消隐时间从SRAM控制器的读FIFO中读出显示一行需要的800个像素(800×16 bit), 每像素为R(Red)5 bit+G(Green)6 bit+B(Blue)5 bit, 并在行显示时间将读FIFO中的像素颜色值按像素时钟依次打到LCD上。如此循环480次, 即完成一帧图像的显示。LCD控制器工作原理如图2所示。
根据上述原理使用Verilog语言设计了一个完整的LCD控制器, 使用Xilinx公司的嵌入式逻辑分析仪ChipScope对该LCD控制器的控制时序中一部分的截取如图3所示。
图3 LCD控制器时序图
由于LCD为800×480像素, 且存储格式为R5G6B5, 因此, 一幅完整的图像需要750 kByte(800×480×16 bit)的存储空间。由于处理器向显存写入数据的时间相对于人眼的暂留效应时间较长, 因此, 人眼可以观察到屏幕从上到下刷新画面的过程, 影响用户体验, 使用乒乓存储方式可以有效地解决以上问题。乒乓缓存结构是一种常用于数据流控制的处理技巧[4], 笔者使用两片1 MByte的SRAM(分别标记为缓存1与缓存2)作为显示存储器, 以实现乒乓存储。当缓存1处于工作状态时, SRAM控制器根据LCD控制器提供的行同步信号、 地址信号和从SRAM特定地址读取像素色度信息, 并写入读FIFO, 以便LCD控制器读取。此时缓存2处于等待状态, 当需要更新LCD画面时, PowerPC处理器程序生成原始图片(来自NAND Flash、 SRAM或程序绘制), 通过写FIFO写入缓存2, 最后向显示模块发出更新画面的命令, 使缓存2处于工作状态, 缓存1进入等待状态。总之, 处理器总是向等待中的显存写入数据, 写入完毕后将等待中的显存与工作中的显存进行状态切换, 达到瞬间更新画面的目的。由于状态切换是瞬间完成的, 因此, 用户感觉不到画面的切换过程, 从而使显示效果更加流畅。乒乓存储示意图如图4所示。
图4 SRAM乒乓存储示意图
与NOR Flash相比, NAND Flash单元存储密度较大, 编程和擦除操作速率较快, 在大容量存储方面应用广泛[5]。笔者使用硬件描述语言将NAND Flash封装成一个自定义元件, 在软件层实现了NAND Flash的块擦除、 页读写和冗余校验等操作。
由于NAND Flash存在坏块, 如果要对坏块进行处理, 则首先应对坏块进行识别[6]。因此在操作前, 需要建立一个坏块列表[7]。编写坏块识别程序遍历NAND Flash的所有块, 查询每个块的第1和第2页行地址为2 048处的值。若该值为256, 则表明是好块, 不做任何操作; 若不是256, 则表明是坏块, 将块地址记录到坏块列表中以备后用。
ECC(Error Correcting Code)校验保障了NAND Flash的数据安全性[8]。NAND Flash控制器对读出的原始数据进行ECC计算, 得出ECC计算结果。将此结果与NAND Flash原有的ECC结果相较, 若相同, 则表明读出的数据可靠; 否则, 根据ECC值执行出错处理程序: 建立并标记坏块, 同时转移数据到安全区域。NAND Flash操作流程图如图5所示。
a NAND Flash创建初始化可用区块流程图 b NAND Flash Ecc流程图
CAN总线具有出色的可靠性和新颖的设计理念[9], 在汽车电控中被广泛使用。设计中使用的CAN总线芯片是Microchip公司的MCP2510。这是SPI接口的独立CAN总线控制器, 兼容CAN总线V2.0A和V2.0B标准, 编程速度可达到1 Mbit/s。在控制端, 处理器可实现5 Mbit/s的访问速度。信息终端的CAN总线控制器接收汽车电控单元发出的信号, 并根据分析结果在LCD上显示相应动作, 并将动作信息存储到NOR Flash的相应位置。汽车电控单元的CAN总线连接图如图6所示。
图6 汽车CAN总线连接示意图
图7 环路存储示意图
为实时记录行车状态, 以便必要时调取重要数据分析突发事件, 系统利用一片Dallas Semiconductor公司的DS1307芯片作为时间基准, 对实时事件与时间戳进行封装捆绑, 并实时地以环路存储方式存储到NOR Flash中, 实现行车实时记录的功能。主控程序在NOR Flash中定义一个固定的区域作为行车信息记录区, 并定义一个环路指针变量PTR(Pointer), PTR会随着事件的发生而增加。当PTR指向IB的末地址时, PTR被置为初始值, 此时新写入的行车信息将会被覆盖, NOR Flash环路存储的示意图如图7所示。当出现交通事故时, 为帮助分析事故原因, 可通过UART(Universal Asynchronous Receiver/Transmitter)接口读取行车记录, 以还原事故发生前的行车状态, 进而分析事故原因。
图8 加密与认证过程
为提高系统的安全性, 使用Atmel公司生产的加密芯片(型号为AT88SC0104C)对系统进行深度加密处理。加密芯片属于小容量EEPROM(Electrically Erasable Programmable Read-Only Memory)存储器, 用户可设定密钥和密码, 并存入少量的重要数据。加密芯片AT88SC0104C与处理器之间的通信方式为IIC(Inter Integrated Circuit)总线, 系统启动时, 加密芯片认证成功后, 才可进入加密传输状态。如果验证不成功, 则系统不能正常启动。加密传输中IIC的数据总线上传输的数据将按一定的规则加密, 即使数据被截获, 也无法解密[10,11]。同时, 当需要使用黑匣子的取证人员试图使用UART读取NOR Flash中的行车数据时, 须首先提供加密芯片的密钥和密码方可进行数据的访问[12], 否则视作非法盗取。当非法盗取次数超过8次时, 加密芯片将自我锁定, 此时任何对加密芯片的读写操作都无效。这个加密方式保证了片上系统的安全性, 难以被盗用或仿制, AT88SC0104C加密与认证过程如图8所示。
实机实验中采用一片5寸的LCD作为车载信息终端的显示器, 由于LCD接口的数据总线与控制总线都是单向的数据线, 因此, LCD控制器的数据LCD与FPGA之间只需要通过一片总线收发器芯片SN74LVC16T245连接。LCD可显示常用的车载多媒体程序, 用户也可利用粘贴在LCD表面的电阻式触摸板进行人机交互。使用C语言编写的片上系统运行界面如图9所示, 点击每个图标都能流畅地跳转到下一页面的图片中。实验表明, 乒乓存储可提供流畅的视觉体验。
图9 实验效果图
笔者提出一种以基于片上可编程系统SOPC和乒乓存储显示技术的车载信息终端设计,并具有用户友好图形界面, 为技术员提供了一种异步串行通信技术并且易于应用。该系统具有启动时间短、 低功耗、 低成本等优点。目前已通过了温度测试和振动测试。该系统的工作电压是12 V, 总功耗平均统计为7.5 W。启动时间控制在3 s以内, 事件平均响应时间是500 ms。因为FPGA的可重构性和SOPC易推广性, 该系统在中级汽车市场具有很强的竞争力。
参考文献:
[1]王乐井. 基于SOPC技术的实时图像处理系统的设计与研究 [D]. 长春: 吉林大学电子科学与工程学院, 2010.
WANG Le-jing. The Design and Research of Real Time Image Processing System Based on SOPC Technology [D]. Changchun: College of Electronic Science and Engineering, Jinlin University, 2010.
[2]潘宗树. 基于Nios Ⅱ的SOPC系统设计与研究 [D]. 武汉: 武汉科技大学信息科学与工程学院, 2007.
PAN Zong-shu. The Design and Research of SOPC System Based on Nios Ⅱ [D]. Wuhan: School of Information Science and Engineering, Wuhan University of Science and Technology, 2007.
[3]XIONG Sheng-jiang, DAI Wen-wen, YAN Wei. Design and Implementation of LWIP Ethernet Based on SOPC AXI Bus [C]∥Proceedings of 2012 International Conference on Electronic Information and Electrical Engineering(Part Ⅰ). Changsha: Hunan University, 2012: 268-270.
[4]邰林, 黄芝平, 唐贵林, 等. 并行缓存结构在高速海量数据记录系统中的应用 [J]. 计算机测量与控制, 2008(4): 527-530.
TAI Lin, HUANG Zhi-ping, TANG Gui-lin, et al. Application of Parallel Cache Structure in High-Speed Mass Data Recording System [J]. Computer Measurement & Control, 2008(4): 527-530.
[5]杨春林. 基于NAND Flash的嵌入式文件系统的研究与实现 [D]. 成都: 电子科技大学计算机科学与工程学院, 2008.
YANG Chun-lin. The Research and Implementation of Embedded File System Based on the Nand Flash [D]. Chengdu: School of Computer Science & Engieering, University of Electronic Science and Technology of China, 2008.
[6]贾源泉, 肖侬, 赖明澈, 等. 基于NAND Flash的多路并行存储系统中坏块策略的研究 [J]. 计算机研究与发展, 2012, 49(增刊): 68-72.
JIA Yuan-quan, XIAO Nong, LAI Ming-che, et al. Research on Bad Block of the Parallel Storage System Based on NAND Flash [J]. Journal of Computer Research and Development, 2012, 49(Sup): 68-72.
[7]张胜勇, 高世杰, 吴志勇, 等. 基于FPGA的NAND Flash坏块处理方法 [J]. 计算机工程, 2010, 36(6): 239-242.
ZHANG Sheng-yong, GAO Shi-jie, WU Zhi-yong, et al. Bad Block Handle Method of NAND Flash Memory Based on FPGA [J]. Computer Engineering, 2010, 36(6): 239-242.
[8]吕小微. 基于FPGA的NAND Flash ECC 校验 [J]. 电子科技, 2011, 24(6): 34-37.
LÜ Xiao-wei. NAND Flash ECC Check-out Based on FPGA [J]. Electronic Sci & Tech, 2011, 24(6): 34-37.
[9]代寿刚, 干莽, 宋占伟. 基于FPGA的CAN总线故障分析仪 [J]. 吉林大学学报: 信息科学版, 2012, 30(5): 503-509.
DAI Shou-gang, GAN Mang, SONG Zhan-wei. CAN-Bus Fault Analyzer Based on FPGA [J]. Journal of Jilin University: Information Science Edition, 2012, 30(5): 503-509.
[10]杨卫国, 张涛, 袁宏韬. 基于FPGA的高速加密芯片的设计与实现 [J]. 吉林大学学报: 信息科学版, 2005, 23(6): 595-600.
YANG Wei-guo, ZHANG Tao, YUAN Hong-tao. Design on High-Performance Encryption Chip Based on FPGA [J]. Journal of Jilin University: Information Science Edition, 2005, 23(6): 595-600.
[11]罗霄华, 张博. 视频图像采集及网络传输系统的设计 [J]. 吉林大学学报 :信息科学版, 2011, 29(5): 424-428.
LUO Xiao-hua, ZHANG Bo. Design of Video Acquisition and Network Transmission System [J]. Journal of Jilin University: Information Science Edition, 2011, 29(5): 424-428.
[12]刑野. 一种便捷有效的嵌入式系统加密方案 [C]∥第二十五届中国IT、 网络、 信息技术、 电子、 仪器仪表创新学术会议论文集. 天津: 天津市电子学会, 2011: 24-26.
XING Ye. An Convenient and Effective Encryption Solution for Embedded System [C]∥The 25 China(tianjin)2011 IT, Network, Information Technology, Electronic Instruments, Meters Innovative Academic Conference. Tianjin: Tianjin Electronic Committee, 2011: 24-26.