• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      嵌入式數據采集壓縮系統(tǒng)的設計

      2020-08-12 07:50:08李醒飛楊少波李洪宇
      儀表技術與傳感器 2020年7期
      關鍵詞:壓縮算法壓縮率信源

      魏 鵬,李醒飛,2,,3,楊少波,2,3,李洪宇

      (1.天津大學,精密測試技術及儀器國家重點實驗室,天津 300072;2.青島海洋科學與技術試點國家實驗室海洋觀測與探測聯合實驗室,山東青島 266237;3.天津大學青島海洋技術研究院,山東青島 266237;4.山東科技大學 機械電子工程學院,山東青島 266590)

      0 引言

      剖面浮標作為一種海洋觀測平臺,其上搭載多種傳感器,旨在通過在全球海洋布放衛(wèi)星跟蹤浮標,快速、準確、大范圍地收集全球海洋上層的海水溫度、鹽度等剖面資料[1]。在剖面浮標嵌入式系統(tǒng)的數據采集、存儲、通信過程中存在著諸多問題。例如剖面浮標在上浮過程中按照預定的時間間隔采集的海水溫度、鹽度、深度、標體內部電壓、電流、氣壓等大量數據均存儲在容量有限的TF卡中,一方面造成了數據冗余,存儲空間使用緊張,通信效率低下,另一方面由于衛(wèi)星通信方式費用高、單次通信容量有限(一般不超過幾百個字節(jié))[2],導致了較高的通信成本。因此,將剖面浮標的采集數據進行無失真壓縮,是降低通信費用、提高通信效率、減少數據存儲空間的一種行之有效的方法。

      雖然目前已經開發(fā)了許多成熟的數據壓縮算法,如基于統(tǒng)計模型的香農算法、Huffman算法、游程編碼等,基于字典模型的LZ系列及其改進型的算法,國際上也制定了很多數據壓縮標準,但針對不同的數據資料,其所包含的信源概率模型和冗余度表現形式都不一定相同,每種壓縮方式都有其優(yōu)越性和局限性,且嵌入式系統(tǒng)一般不具備PC機的環(huán)境,因此,本文根據海洋監(jiān)測平臺的數據特點,在兩種不同壓縮模型中各選取了一種較有代表性的壓縮算法,開展對剖面浮標數據存儲、通信數據的壓縮應用研究[3]。

      1 數據采集系統(tǒng)設計

      剖面浮標嵌入式數據采集系統(tǒng)以球形玻璃浮體為傳感器搭載平臺,以STM32F429微控制器為主控單元,將傳感器采集的數據進行解析、存儲和發(fā)送。整個系統(tǒng)由電平轉換電路、STM32控制器最小系統(tǒng)、數據存儲模塊、通信模塊和電源模塊組成,系統(tǒng)總體框圖如圖1所示。由于剖面浮標平臺搭載多種傳感器,本文選取較有代表性的溫鹽深儀(CTD)為例介紹數據采集過程。

      圖1 系統(tǒng)總體框圖

      1.1 電平轉換電路

      CTD傳感器、銥星通信模塊與主控板通過RS232串口通信,由于二者使用TTL電平,故需要經過MAX3232電平轉換電路之后連接至主控板。MAX3232適用電壓3~5.5 V,可以實現RS232到TTL電平轉換。電平轉換電路如圖2所示。

      圖2 電平轉換電路圖

      1.2 主控制器模塊

      STM32F429集成了Cortex-M4內核,工作頻率為180 MHz,片上集成了多達20個通信接口,包括4個USART、4個速度達11.25 Mbit/s的UART、6個速度達45 Mbit/s的SPI、3個具有新型可選數字濾波器功能的I2C、2個CAN以及SDIO接口;它包含2個12位DAC、3個速度為2.4 MSPS或7.2 MSPS(交錯模式下)的12位ADC;定時器多達17個,使用靈活的存儲控制器可以輕松擴展存儲范圍,該控制器通過一個32位的并行接口可達到90 MHz的頻率,能支持Compact Flash、SRAM、PSRAM、NOR、 NAND以及現在的SDRAM存儲器[4]。STM32F429資源豐富,能夠滿足浮標體整體功能的需求。

      1.3 數據存儲模塊

      存儲模塊使用容量為8 GB的TF卡。TF卡又稱microSD,是一種極細小的快閃存儲器卡,體積小,容量較大,存取速度快,采用SanDisk最新NAND MLC技術及控制器技術??刂破鲗D卡進行通信操作采用SDIO(安全數字輸入/輸出)接口。為了方便對數據的存儲和管理,在主控系統(tǒng)中引入了串行Flash文件系統(tǒng)FatFs,它是建立在存儲介質上的一種組織結構,這些結構包括操作系統(tǒng)引導區(qū)、目錄和文件,是一個為小型嵌入式系統(tǒng)設計的通用FAT(file allocation table)文件系統(tǒng)模塊[5]。存儲模塊電路圖如圖3所示。

      圖3 存儲模塊電路圖

      1.4 電源模塊

      剖面浮標采用大容量鋰電池,輸出電壓可達28 V,需要降壓之后才能供各模塊正常使用。系統(tǒng)需要將電源電壓VCC降至12 V后為CTD、銥星通訊模塊供電、由12 V降至5 V后為浮標其他模塊供電、由5 V降至3.3 V后為主控板、MAX3232、TF卡供電,電路圖如圖4所示。其中LMR33630是一種同步降壓直流/直流轉換芯片,能夠使用高達36 V的輸入電壓驅動高達3 A的負載電流;MAX604是低壓差線性穩(wěn)壓器,具有預置3.3 V電壓的輸出方式,其輸出電流可達500 mA,功耗很低。

      2 數據壓縮系統(tǒng)設計

      (a)VCC轉12 V電路

      (b)12 V轉5 V電路

      (c)5 V轉3.3 V電路圖4 電源模塊電路

      本系統(tǒng)設計中,采用的軟件開發(fā)平臺為集成開發(fā)環(huán)境Keil5軟件,并使用ST官方的集成開發(fā)庫。應用程序中主程序完成系統(tǒng)各個模塊的初始化;數據采集及處理程序依據各傳感器的通信協議,將采集的數據解析、存儲;數據壓縮模塊將存儲在TF卡中的TXT文件進行壓縮;通信模塊使用銥星通信,將壓縮數據通過衛(wèi)星傳至岸站接收端,軟件總體功能框圖如圖5所示。現將數據壓縮程序部分作為重點做詳細介紹。

      圖5 軟件總體功能框圖

      數據壓縮技術主要分為無損數據壓縮和有損數據壓縮兩大類,為保證海洋監(jiān)測數據的準確性,只能采用無損數據壓縮技術。無損壓縮從壓縮原理上大體可以分為基于統(tǒng)計的壓縮算法和基于字典的壓縮算法[6]。針對剖面浮標傳感器采集的數據特點和嵌入式系統(tǒng)的資源限制,在兩種模型中選取較有代表性的Huffman算法和miniLZO算法,對剖面浮標傳感器采集的數據進行壓縮對比并分析。

      2.1 Huffman算法及實現

      Huffman編碼是根據數據信息中字符重復出現的概率生成的一種前綴編碼方法。是目前用于壓縮的最普遍方法之一。它的核心是構造二叉樹,是一種自下向上的、非自適應的編碼算法,其思想是將經常出現的字母賦予較短的編碼,而不經常出現的字母賦予較長的編碼[7]。

      對于剖面浮標數據文件來說,文件系統(tǒng)存儲的數據主要是ASCII碼0~9,且每個字符均有概率出現,對該類數據分析比較簡單,因此可采用Huffman算法對數據文件進行壓縮。

      Huffman編碼步驟為:

      (1)統(tǒng)計信源符號出現的概率,并按從大到小的順序排列。

      (2)給兩個頻率最小的信源符號各分配一個碼元“0”和“1”,然后將這兩個信源符號合并成一個新符號,并用這兩個最小的頻率之和作為新符號的頻率,結果得到一個只有n-1個信源符號的新信源(假設原來所需編碼的符號數為n,稱為信源的第一次縮減信源S1;

      (3)將縮減信源S1的符號仍按頻率從大到小的順序進行排列,重復步驟2,得到只含n~2個符號的縮減信源S2;

      (4)重復上述步驟,直至縮減信源只剩2個符號為止,此時所剩2個符號的頻率之和必為1,將這2個符號各分配一個碼元“0”和“1”后,從最后一級縮減信源開始,依編碼路徑向前返回,就得到各信源符號所對應的Huffman碼字,形成壓縮數據。

      圖6為Huffman算法實現流程圖。經過編碼后的壓縮文件,主要包含2部分信息,第一部分為數據的統(tǒng)計信息,即Huffman碼表,另一部分為數據內容部分。當解壓數據時,首先從數據中提取Huffman碼表重建編碼樹,然后對壓縮碼進行解壓縮。在構建二叉樹時,將其定義為一個結構體可以方便的實現節(jié)點的遍歷和置換。

      圖6 Huffman算法實現流程圖

      2.2 miniLZO算法及實現

      LZO算法是一種基于字典的快速的無損數據壓縮解壓算法,其中LZO是lempel-ziv-oberhumer的縮寫[8],其原理是以較長的字符串或經常出現的字母組合構成字典中的各個詞條,并且用相對較短的數字或符號來表示,當再次遇到相同字符串或字母組合時,使用已知的字典中對應的數字或符號表示,如此反復,最后輸出經過字典翻譯后的壓縮數據。

      miniLZO是一個輕量級的壓縮/解壓縮庫,使用miniLZO的目的是為了某些只需包含一個小型的壓縮/解壓縮功能,而不包含LZO全部代碼的程序。編譯后的miniLZO庫少于5 KB,非常適合內嵌在主程序中。

      在剖面浮標數據文件中包含大量重復性數據,譬如溫度、鹽度、電流、殼內氣壓等數據,往往在一定的時間段內數值變化范圍很小,甚至相同,這為miniLZO算法提供了壓縮空間。

      miniLZO算法的執(zhí)行步驟為:

      (1)讀入帶壓縮文件,前兩字節(jié)無須壓縮直接輸出。

      (2)初始化數據流指針并設定查詢窗口大小、最小匹配串長度。

      (3)使用匹配函數在輸入數據流的前向緩沖區(qū)中查找與窗口中最長匹配串。

      (4)判斷最長匹配串長度是否不小于最小匹配串長度,如果是,則用(重復長度L,指回距離D)代替最長匹配串,如果否,則輸出原來的字符串并將其寫入字典中等待下一次匹配過程。

      (5)根據前向緩沖區(qū)是否為空循環(huán)執(zhí)行步驟(3)~(5)。miniLZO算法執(zhí)行流程圖如圖7所示。

      圖7 miniLZO算法實現流程圖

      3 數據測試和分析

      本文測試數據選取于“大洋4 000米深海自持式剖面浮標”項目在南海北部水域投放的一套剖面浮標。此套浮標使用銥星衛(wèi)星通信,其單包通信數據長度是定長的260字節(jié),包含的信息有時間、溫度、鹽度、深度、外油囊油量、電壓、電流。在剖面浮標的數據文件中隨機選取100組在ARM嵌入式系統(tǒng)中進行測試,對每組數據分別使用Huffman算法和miniLZO算法測試壓縮效果,其中壓縮率是衡量一個壓縮算法性能的重要指標,是壓縮后數據文件的大小與壓縮前源文件大小之比[9]。測試結果如圖8所示。

      圖8 2種算法壓縮率比較

      通過2種算法的測試結果分析,可以得出以下幾個判斷:

      (1)Huffman算法對浮標觀測數據的壓縮率在50%左右,miniLZO算法對浮標觀測數據的壓縮率在20%左右,2種方法均能對通信數據進行有效壓縮。

      (2)從壓縮率角度分析,miniLZO算法的壓縮效果明顯優(yōu)于Huffman算法。分析認為出現這種現象的原因是采集的數據中,重復的長字符串較多,部分采集參數數據變化緩慢,甚至變化的只是小數點之后的內容,因而能夠大量采用(重復長度L,指回距離D)代替較長的字符串。

      (3)從壓縮率穩(wěn)定性角度分析,2種壓縮算法壓縮率均具有一定的波動性,但Huffman算法的穩(wěn)定性要強于miniLZO算法,在沒有單包數據量限制的情況下尤其明顯。分析認為,隨著數據組的增加,各數據包中字符出現概率趨于平穩(wěn),而在隨機取出的單個數據包中,各測量要素波動范圍增大,造成已出現的字符串的長度變化增大,因而壓縮率波動范圍較大。

      (4)從算法復雜度上分析,miniLZO算法略優(yōu)于Huffman算法。首先,在時間復雜度上,由于每次發(fā)送的數據量較小,故而每次調用壓縮函數處理數據的時間都很少,甚至可以忽略不計;其次,在空間復雜度上,2種算法在處理數據的過程中都會產生類似于字典性質的數據存儲空間,但miniLZO算法在數據傳輸的過程中不需要此字典,而Huffman算法需要通過此字典來進行解碼,故miniLZO算法在空間復雜度方面要略優(yōu)于Huffman算法,因此總體上miniLZO算法復雜度略優(yōu)于Huffman算法。

      4 結束語

      本文將基于2種不同模型的數據壓縮算法應用在剖面浮標嵌入式數據采集壓縮系統(tǒng)中,并取得了較好的實際應用效果。實驗證明,2種算法均能能夠滿足剖面浮標數據壓縮的需求,在壓縮率方面,miniLZO算法的壓縮效果明顯好于Huffman算法。值得注意的是,在選擇壓縮算法時,要充分考慮壓縮耗時、內存及算法復雜度,根據具體情況進行選擇,結合自身所使用的軟硬件資源,達到數據壓縮的目的

      猜你喜歡
      壓縮算法壓縮率信源
      基于極化碼的分布式多信源信道聯合編碼
      無線電工程(2022年4期)2022-04-21 07:19:44
      基于參數識別的軌道電路監(jiān)測數據壓縮算法研究
      水密封連接器尾部接電纜的優(yōu)化設計
      纏繞墊片產品質量控制研究
      信源控制電路在功率容量測試系統(tǒng)中的應用
      電子世界(2017年16期)2017-09-03 10:57:36
      更正聲明
      電訊技術(2017年4期)2017-04-16 04:16:03
      多載波通信系統(tǒng)中CQI無損壓縮法研究
      分布式多視點視頻編碼在應急通信中的應用
      信源自動切換裝置的設計及控制原理
      PMU數據預處理及壓縮算法
      栾城县| 屯昌县| 峡江县| 邢台县| 麟游县| 东乌珠穆沁旗| 成都市| 新竹县| SHOW| 木兰县| 灵川县| 科尔| 手机| 邯郸县| 济南市| 徐闻县| 息烽县| 清新县| 洪湖市| 濮阳县| 宜兰县| 建昌县| 中江县| 金昌市| 榆中县| 揭西县| 普兰店市| 浦东新区| 崇左市| 临邑县| 黄大仙区| 邹平县| 伊宁市| 龙口市| 临泽县| 琼结县| 林口县| 通许县| 泗水县| 东安县| 水城县|