引言
CAN(Controller Area Network,控制器局域網(wǎng))總線是德國(guó)Bosch公司在20世紀(jì)80年代初,,為了解決現(xiàn)代汽車中眾多的控制與測(cè)試儀器之間的數(shù)據(jù)交換而開(kāi)發(fā)的一種串行數(shù)據(jù)通信協(xié)議,。它的短幀數(shù)據(jù)結(jié)構(gòu),、非破壞性總線性仲裁技術(shù)以及靈活的通信方式適應(yīng)了汽車的實(shí)時(shí)性和可靠性要求,倍受汽車生產(chǎn)廠商的青睞,。隨著汽車電子技術(shù)的發(fā)展,,汽車上的ECU(Electronic Control Unit,電子控制單元)越來(lái)越多,,如電控燃油噴射系統(tǒng),、防抱死制動(dòng)系統(tǒng)、防滑控制系統(tǒng)等,,相應(yīng)的數(shù)據(jù)量也越來(lái)越大,,如何采用合理的存儲(chǔ)" title="存儲(chǔ)">存儲(chǔ)方案是記錄儀等大容量存儲(chǔ)系統(tǒng)的關(guān)鍵。本文詳細(xì)闡述了大容量存儲(chǔ)系統(tǒng)系統(tǒng)的整體結(jié)構(gòu),、硬件電路設(shè)計(jì),。利用“FPGA+單片機(jī)”作為存儲(chǔ)控制器,采用基于LZW算法的數(shù)據(jù)壓縮技術(shù),,以SDRAM作為周期存儲(chǔ)和緩存,,SD卡作為最終存儲(chǔ)載體。實(shí)驗(yàn)結(jié)果表明,,該存儲(chǔ)系統(tǒng)可以很好地應(yīng)用于車載信息記錄儀,。
1 系統(tǒng)整體結(jié)構(gòu)設(shè)計(jì)
如圖1所示,存儲(chǔ)系統(tǒng)主要包括以下模塊:FPGA主控模塊,、CAN總線" title="CAN總線">CAN總線監(jiān)聽(tīng)控制模塊,、數(shù)據(jù)壓縮模塊、SDRAM控制模塊和單片機(jī)控制CH376模塊,。本文主要介紹存儲(chǔ)部分,,CAN總線監(jiān)聽(tīng)控制模塊不做介紹。圖中,,點(diǎn)畫(huà)線內(nèi)的部分均由FPGA控制,。后端SD卡由MSP430單片機(jī)控制,SD協(xié)議芯片采用CH376,。FPGA控制CAN總線控制芯片,、CAN總線收發(fā)器" title="收發(fā)器">收發(fā)器從總線上獲取數(shù)據(jù),,經(jīng)過(guò)數(shù)據(jù)壓縮模塊壓縮,,存入SDRAM里,。這里采用兩種存儲(chǔ)模式:一種是利用SDRAM存儲(chǔ)的可覆蓋性進(jìn)行周期存儲(chǔ),,具體存儲(chǔ)周期由壓縮率和SDRAM容量決定;另一種是直接存儲(chǔ),,SDRAM作為緩存,。當(dāng)選擇直接存儲(chǔ)時(shí),,F(xiàn)PGA與單片機(jī)通信,,利用FIFO給單片機(jī)發(fā)送數(shù)據(jù),,單片機(jī)控制CH376將數(shù)據(jù)存入SD卡(存儲(chǔ)時(shí)間由SD卡容量決定),。
2 系統(tǒng)硬件設(shè)計(jì)
2.1 FPGA主控模塊
FPGA選用Altera公司的Cyclone II" title="Cyclone II">Cyclone II系列芯片EP2C5T14418N" title="EP2C5T14418N">EP2C5T14418N,它具有內(nèi)部資源豐富,、速度快的特點(diǎn),。上電后,主控模塊使能CAN總線監(jiān)聽(tīng)控制模塊,、數(shù)據(jù)壓縮模塊,、SDRAM控制模塊。如果選擇周期存儲(chǔ),,則不使能單片機(jī),;若選擇直接存儲(chǔ),則讓單片機(jī)處于低功耗狀態(tài),,當(dāng)SDRAM有數(shù)據(jù)時(shí)FPGA把數(shù)據(jù)發(fā)給單片機(jī),并使其控制CH376工作,。
2.2 數(shù)據(jù)壓縮模塊
壓縮算法采用LZW算法,。該算法是一種基于字典的壓縮算法,在數(shù)據(jù)的壓縮過(guò)程中會(huì)根據(jù)輸入的數(shù)據(jù)動(dòng)態(tài)地建立一個(gè)字典,。后續(xù)輸入的數(shù)據(jù)都會(huì)在這個(gè)字典中進(jìn)行匹配查找,,根據(jù)查找是否成功決定壓縮編碼的輸出。該算法的巧妙之處在于,,壓縮過(guò)程中動(dòng)態(tài)建立的字典不需要與壓縮數(shù)據(jù)流一道進(jìn)行傳輸和存儲(chǔ),,然而在對(duì)數(shù)據(jù)進(jìn)行解壓時(shí)也能夠通過(guò)壓縮數(shù)據(jù)流重新建立一個(gè)字典,來(lái)完成解壓縮,。LZW壓縮算法流程如圖2所示,。根據(jù)該流程,采用C語(yǔ)言設(shè)計(jì)壓縮與解壓縮軟件以驗(yàn)證算法和硬件壓縮的正確性,,用Verilog語(yǔ)言編寫(xiě)了壓縮代碼,,利用FPGA內(nèi)部RAM資源建立字典。LZW壓縮算法的硬件邏輯功能框圖如圖3所示,。
2.3 SDRAM控制模塊
SDRAM(同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器)是一種易失性存儲(chǔ)器,,以其容量大、價(jià)格低的特點(diǎn)得到越來(lái)越廣泛的應(yīng)用,。但其控制邏輯復(fù)雜,,需要周期性刷新操作、行列管理,、不同延時(shí)和命令序列等,。圖4是SDRAM的控制狀態(tài)轉(zhuǎn)移圖。
2.4 單片機(jī)控制CH376模塊
CH376是一款國(guó)產(chǎn)文件管理控制芯片,,用于單片機(jī)系統(tǒng)讀寫(xiě)U盤(pán)或者SD卡中的文件,。CH376內(nèi)置了SD卡的通信接口,、FATl6、FAT32以及FAT l2文件系統(tǒng)等固件,,無(wú)需自己編寫(xiě)底層協(xié)議,,控制簡(jiǎn)單,提供2 MB,、24MHz的SPI設(shè)備接口,,支持連接到單片機(jī)的SPI串行總線。CH376應(yīng)用連接圖如圖5所示,。
3 系統(tǒng)仿真與測(cè)試
程序編寫(xiě)完之后,,利用Modelsim" title="Modelsim">Modelsim語(yǔ)言仿真軟件對(duì)其進(jìn)行仿真。ModelSim能提供友好的仿真環(huán)境,,是單內(nèi)核支持VHDL和Verilog混合仿真的仿真器,。它采用直接優(yōu)化的編譯技術(shù)、Tcl/Tk技術(shù)和單一內(nèi)核仿真技術(shù),,編譯仿真速度快,,編譯的代碼與平臺(tái)無(wú)關(guān),是FPGA/ASIC設(shè)計(jì)的首選仿真軟件,。硬件壓縮與存儲(chǔ)模塊仿真如圖6所示,。仿真結(jié)果表明,硬件壓縮與軟件壓縮完全符合,。
結(jié)語(yǔ)
本文設(shè)計(jì)了基于“FPGA+單片機(jī)”的車載CAN總線采集系統(tǒng),。利用FPGA的優(yōu)勢(shì)編寫(xiě)了數(shù)據(jù)壓縮和SDRAM控制兩個(gè)模塊,作為存儲(chǔ)系統(tǒng)的核心部分,;利用單片機(jī)控制能力強(qiáng),、簡(jiǎn)單的特點(diǎn)設(shè)計(jì)了SD卡存儲(chǔ)控制器,作為數(shù)據(jù)的最終存儲(chǔ)介質(zhì),,以方便用戶在計(jì)算機(jī)上直接讀取數(shù)據(jù),。實(shí)驗(yàn)表明,該系統(tǒng)工作穩(wěn)定,,適合長(zhǎng)時(shí)間記錄數(shù)據(jù),。