<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于車(chē)載CAN總線(xiàn)記錄儀的大容量存儲系統設計

基于車(chē)載CAN總線(xiàn)記錄儀的大容量存儲系統設計

作者: 時(shí)間:2014-07-16 來(lái)源:網(wǎng)絡(luò ) 收藏

  引言

本文引用地址:http://dyxdggzs.com/article/249788.htm

  CAN(Controller Area Network,控制器局域網(wǎng))總線(xiàn)是德國B(niǎo)osch公司在20世紀80年代初,為了解決現代汽車(chē)中眾多的控制與測試儀器之間的數據交換而開(kāi)發(fā)的一種串行數據通信協(xié)議。它的短幀數據結構、非破壞性總線(xiàn)性仲裁技術(shù)以及靈活的通信方式適應了汽車(chē)的實(shí)時(shí)性和可靠性要求,倍受汽車(chē)生產(chǎn)廠(chǎng)商的青睞。隨著(zhù)汽車(chē)電子技術(shù)的發(fā)展,汽車(chē)上的ECU(Electronic Control Unit,電子控制單元)越來(lái)越多,如電控燃油噴射系統、防抱死制動(dòng)系統、防滑控制系統等,相應的數據量也越來(lái)越大,如何采用合理的存儲方案是記錄儀等大容量存儲系統的關(guān)鍵。本文詳細闡述了大容量存儲系統系統的整體結構、硬件電路設計。利用“+單片機”作為存儲控制器,采用基于LZW算法的數據壓縮技術(shù),以SDRAM作為周期存儲和緩存,SD卡作為最終存儲載體。實(shí)驗結果表明,該存儲系統可以很好地應用于車(chē)載信息記錄儀。

  1 系統整體結構設計

  如圖1所示,存儲系統主要包括以下模塊:主控模塊、監聽(tīng)控制模塊、數據壓縮模塊、SDRAM控制模塊和單片機控制CH376模塊。本文主要介紹存儲部分,監聽(tīng)控制模塊不做介紹。圖中,點(diǎn)畫(huà)線(xiàn)內的部分均由控制。后端SD卡由單片機控制,SD協(xié)議芯片采用CH376。FPGA控制控制芯片、CAN總線(xiàn)收發(fā)器從總線(xiàn)上獲取數據,經(jīng)過(guò)數據壓縮模塊壓縮,存入SDRAM里。這里采用兩種存儲模式:一種是利用SDRAM存儲的可覆蓋性進(jìn)行周期存儲,具體存儲周期由壓縮率和SDRAM容量決定;另一種是直接存儲,SDRAM作為緩存。當選擇直接存儲時(shí),FPGA與單片機通信,利用FIFO給單片機發(fā)送數據,單片機控制 CH376將數據存入SD卡(存儲時(shí)間由SD卡容量決定)。

  

 

  2 系統硬件設計

  2.1 FPGA主控模塊

  FPGA選用Altera公司的Cyclone II系列芯片EP2C5T14418N,它具有內部資源豐富、速度快的特點(diǎn)。上電后,主控模塊使能CAN總線(xiàn)監聽(tīng)控制模塊、數據壓縮模塊、SDRAM控制模塊。如果選擇周期存儲,則不使能單片機;若選擇直接存儲,則讓單片機處于低功耗狀態(tài),當SDRAM有數據時(shí)FPGA把數據發(fā)給單片機,并使其控制 CH376工作。

  2.2 數據壓縮模塊

  壓縮算法采用LZW算法。該算法是一種基于字典的壓縮算法,在數據的壓縮過(guò)程中會(huì )根據輸入的數據動(dòng)態(tài)地建立一個(gè)字典。后續輸入的數據都會(huì )在這個(gè)字典中進(jìn)行匹配查找,根據查找是否成功決定壓縮編碼的輸出。該算法的巧妙之處在于,壓縮過(guò)程中動(dòng)態(tài)建立的字典不需要與壓縮數據流一道進(jìn)行傳輸和存儲,然而在對數據進(jìn)行解壓時(shí)也能夠通過(guò)壓縮數據流重新建立一個(gè)字典,來(lái)完成解壓縮。 LZW壓縮算法流程如圖2所示。根據該流程,采用C語(yǔ)言設計壓縮與解壓縮軟件以驗證算法和硬件壓縮的正確性,用Verilog語(yǔ)言編寫(xiě)了壓縮代碼,利用 FPGA內部RAM資源建立字典。LZW壓縮算法的硬件邏輯功能框圖如圖3所示。

  

 

  

 

  2.3 SDRAM控制模塊

  SDRAM(同步動(dòng)態(tài)隨機存儲器)是一種易失性存儲器,以其容量大、價(jià)格低的特點(diǎn)得到越來(lái)越廣泛的應用。但其控制邏輯復雜,需要周期性刷新操作、行列管理、不同延時(shí)和命令序列等。圖4是SDRAM的控制狀態(tài)轉移圖。

  

 

  2.4 單片機控制CH376模塊

  CH376是一款國產(chǎn)文件管理控制芯片,用于單片機系統讀寫(xiě)U盤(pán)或者SD卡中的文件。CH376內置了SD卡的通信接口、 FATl6、FAT32以及FAT l2文件系統等固件,無(wú)需自己編寫(xiě)底層協(xié)議,控制簡(jiǎn)單,提供2 MB、24MHz的SPI設備接口,支持連接到單片機的SPI串行總線(xiàn)。CH376應用連接圖如圖5所示。

  

 

  3 系統仿真與測試

  程序編寫(xiě)完之后,利用Modelsim語(yǔ)言仿真軟件對其進(jìn)行仿真。ModelSim能提供友好的仿真環(huán)境,是單內核支持VHDL和Verilog混合仿真的仿真器。它采用直接優(yōu)化的編譯技術(shù)、Tcl/Tk技術(shù)和單一內核仿真技術(shù),編譯仿真速度快,編譯的代碼與平臺無(wú)關(guān),是FPGA/ASIC設計的首選仿真軟件。硬件壓縮與存儲模塊仿真如圖6所示。仿真結果表明,硬件壓縮與軟件壓縮完全符合。

  

 

  結語(yǔ)

  本文設計了基于“FPGA+單片機”的車(chē)載CAN總線(xiàn)采集系統。利用FPGA的優(yōu)勢編寫(xiě)了數據壓縮和SDRAM控制兩個(gè)模塊,作為存儲系統的核心部分;利用單片機控制能力強、簡(jiǎn)單的特點(diǎn)設計了SD卡存儲控制器,作為數據的最終存儲介質(zhì),以方便用戶(hù)在計算機上直接讀取數據。實(shí)驗表明,該系統工作穩定,適合長(cháng)時(shí)間記錄數據。



關(guān)鍵詞: CAN總線(xiàn) FPGA MSP430

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>