車載CAN總線記錄儀的大容量存儲系統(tǒng)設計
引言
CAN(Controller Area Network,控制器局域網(wǎng))總線是德國Bosch公司在20世紀80年代初,為了解決現(xiàn)代汽車中眾多的控制與測試儀器之間的數(shù)據(jù)交換而開發(fā)的一種串行數(shù)據(jù)通信協(xié)議。它的短幀數(shù)據(jù)結構、非破壞性總線性仲裁技術以及靈活的通信方式適應了汽車的實時性和可靠性要求,倍受汽車生產(chǎn)廠商的青睞。隨著汽車電子技術的發(fā)展,汽車上的ECU(Electronic Control Unit,電子控制單元)越來越多,如電控燃油噴射系統(tǒng)、防抱死制動系統(tǒng)、防滑控制系統(tǒng)等,相應的數(shù)據(jù)量也越來越大,如何采用合理的存儲方案是記錄儀等大容量存儲系統(tǒng)的關鍵。本文詳細闡述了大容量存儲系統(tǒng)系統(tǒng)的整體結構、硬件電路設計。利用“FPGA+單片機”作為存儲控制器,采用基于LZW算法的數(shù)據(jù)壓縮技術,以SDRAM作為周期存儲和緩存,SD卡作為最終存儲載體。實驗結果表明,該存儲系統(tǒng)可以很好地應用于車載信息記錄儀。
1 系統(tǒng)整體結構設計
如圖1所示,存儲系統(tǒng)主要包括以下模塊:FPGA主控模塊、CAN總線監(jiān)聽控制模塊、數(shù)據(jù)壓縮模塊、SDRAM控制模塊和單片機控制CH376模塊。本文主要介紹存儲部分,CAN總線監(jiān)聽控制模塊不做介紹。圖中,點畫線內(nèi)的部分均由FPGA控制。后端SD卡由MSP430單片機控制,SD協(xié)議芯片采用CH376。FPGA控制CAN總線控制芯片、CAN總線收發(fā)器從總線上獲取數(shù)據(jù),經(jīng)過數(shù)據(jù)壓縮模塊壓縮,存入SDRAM里。這里采用兩種存儲模式:一種是利用SDRAM存儲的可覆蓋性進行周期存儲,具體存儲周期由壓縮率和SDRAM容量決定;另一種是直接存儲,SDRAM作為緩存。當選擇直接存儲時,F(xiàn)PGA與單片機通信,利用FIFO給單片機發(fā)送數(shù)據(jù),單片機控制CH376將數(shù)據(jù)存入SD卡(存儲時間由SD卡容量決定)。
2 系統(tǒng)硬件設計
2.1 FPGA主控模塊
FPGA選用Altera公司的Cyclone II系列芯片EP2C5T14418N,它具有內(nèi)部資源豐富、速度快的特點。上電后,主控模塊使能CAN總線監(jiān)聽控制模塊、數(shù)據(jù)壓縮模塊、SDRAM控制模塊。如果選擇周期存儲,則不使能單片機;若選擇直接存儲,則讓單片機處于低功耗狀態(tài),當SDRAM有數(shù)據(jù)時FPGA把數(shù)據(jù)發(fā)給單片機,并使其控制CH376工作。
2.2 數(shù)據(jù)壓縮模塊
壓縮算法采用LZW算法。該算法是一種基于字典的壓縮算法,在數(shù)據(jù)的壓縮過程中會根據(jù)輸入的數(shù)據(jù)動態(tài)地建立一個字典。后續(xù)輸入的數(shù)據(jù)都會在這個字典中進行匹配查找,根據(jù)查找是否成功決定壓縮編碼的輸出。該算法的巧妙之處在于,壓縮過程中動態(tài)建立的字典不需要與壓縮數(shù)據(jù)流一道進行傳輸和存儲,然而在對數(shù)據(jù)進行解壓時也能夠通過壓縮數(shù)據(jù)流重新建立一個字典,來完成解壓縮。LZW壓縮算法流程如圖2所示。根據(jù)該流程,采用C語言設計壓縮與解壓縮軟件以驗證算法和硬件壓縮的正確性,用Verilog語言編寫了壓縮代碼,利用FPGA內(nèi)部RAM資源建立字典。LZW壓縮算法的硬件邏輯功能框圖如圖3所示。
評論