引言
CAN(Controller Area Network,控制器局域网)总线是德国Bosch公司在20世纪80年代初,为了解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议。它的短帧数据结构、非破坏性总线性仲裁技术以及灵活的通信方式适应了汽车的实时性和可靠性要求,倍受汽车生产厂商的青睐。随着汽车电子技术的发展,汽车上的ECU(Electronic Control Unit,电子控制单元)越来越多,如电控燃油喷射系统、防抱死制动系统、防滑控制系统等,相应的数据量也越来越大,如何采用合理的存储方案是记录仪等大容量存储系统的关键。本文详细阐述了大容量存储系统系统的整体结构、硬件电路设计。利用“FPGA+单片机”作为存储控制器,采用基于LZW算法的数据压缩技术,以SDRAM作为周期存储和缓存,SD卡作为最终存储载体。实验结果表明,该存储系统可以很好地应用于车载信息记录仪。
1 系统整体结构设计
如图1所示,存储系统主要包括以下模块:FPGA主控模块、CAN总线监听控制模块、数据压缩模块、SDRAM控制模块和单片机控制CH376模块。本文主要介绍存储部分,CAN总线监听控制模块不做介绍。图中,点画线内的部分均由FPGA控制。后端SD卡由MSP430单片机控制,SD协议芯片采用CH376。FPGA控制CAN总线控制芯片、CAN总线收发器从总线上获取数据,经过数据压缩模块压缩,存入SDRAM里。这里采用两种存储模式:一种是利用SDRAM存储的可覆盖性进行周期存储,具体存储周期由压缩率和SDRAM容量决定;另一种是直接存储,SDRAM作为缓存。当选择直接存储时,FPGA与单片机通信,利用FIFO给单片机发送数据,单片机控制CH376将数据存入SD卡(存储时间由SD卡容量决定)。