新聞中心

EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > 組合壓縮在存儲測試系統(tǒng)中的應(yīng)用

組合壓縮在存儲測試系統(tǒng)中的應(yīng)用

作者: 時間:2011-08-17 來源:網(wǎng)絡(luò) 收藏

存儲測試系統(tǒng)是為完成特殊環(huán)境下測試而設(shè)計的電子物理系統(tǒng),它可在高溫、高壓、強(qiáng)沖擊振動、高過載等惡劣環(huán)境下自動完成被測信息的實(shí)時采集與存儲記憶[1]。在某些星載、彈載測試系統(tǒng)中,測試環(huán)境惡劣、測試時間長,所需記錄的數(shù)據(jù)量較大。但測試裝置受到體積的限制,要在現(xiàn)有存儲容量基礎(chǔ)上獲取更多的信息,就需要進(jìn)行相關(guān)的數(shù)據(jù)處理。數(shù)據(jù)壓縮是減少數(shù)據(jù)量的有效手段之一。數(shù)據(jù)壓縮通常分為有損壓縮和無損壓縮兩大類。為準(zhǔn)確恢復(fù)出原始數(shù)據(jù)并結(jié)合測試數(shù)據(jù)的特點(diǎn),本文選用游程(RLE)和LZW兩種無損壓縮算法對數(shù)據(jù)進(jìn)行。
1 數(shù)據(jù)壓縮理論
存儲測試系統(tǒng)作為一種信息采集系統(tǒng),目的是向使用者傳遞信息。由于A/D轉(zhuǎn)換的位數(shù)是有限的,所以信息采集系統(tǒng)只能產(chǎn)生有限的數(shù)據(jù),可以把數(shù)據(jù)采集系統(tǒng)看作是一種離散信源。根據(jù)香農(nóng)信息論[2],某離散消息xi所攜帶的信息量:

平均信息量也稱為信息熵,是在采用無損壓縮時所能達(dá)到的壓縮的最小極限。
 實(shí)際上,消息序列的符號間往往還存在著一定的統(tǒng)計相關(guān)性[3],這將使得消息序列攜帶的信息量減少。例如,對一個標(biāo)準(zhǔn)余弦函數(shù)進(jìn)行數(shù)據(jù)采集,不論采樣的數(shù)據(jù)量有多大,只需要知道這個函數(shù)的幅度、頻率和起始相位就可以精確地表示這一數(shù)據(jù)。這在具體數(shù)據(jù)中就表現(xiàn)為重復(fù)出現(xiàn)的數(shù)據(jù)串,消除這些重復(fù)串,降低數(shù)據(jù)中的統(tǒng)計相關(guān)性,也是數(shù)據(jù)壓縮算法一般遵循的準(zhǔn)則。實(shí)際的壓縮器在設(shè)計上往往不是單獨(dú)采用統(tǒng)計式或字典式壓縮法,一般將幾種算法結(jié)合起來,以達(dá)到高效率的壓縮比。
2 算法設(shè)計
2.1 算法選擇

  在對多組實(shí)測的數(shù)據(jù)進(jìn)行分析后,可以看出測試數(shù)據(jù)有一些典型的特征。圖1是一典型的石油井下壓力測試數(shù)據(jù),由圖可以看出,測試數(shù)據(jù)一般都具有以下特征:
  (1)測試數(shù)據(jù)幅值比較連續(xù),相鄰數(shù)據(jù)差值較小,具有很強(qiáng)的統(tǒng)計相關(guān)性。
  (2)大部分?jǐn)?shù)據(jù)波動不大,只有少部分?jǐn)?shù)據(jù)變化輻度較大。

針對上述的測試數(shù)據(jù)(12 bit的AD轉(zhuǎn)換器)大部分波動很小(高4位數(shù)據(jù)基本保持不變),這樣的大量重復(fù)數(shù)據(jù)非常適合游程壓縮。對于低8 bit數(shù)據(jù),雖然相鄰時刻的值不可能完全相同,但其值會在測試過程中多次出現(xiàn)。無損數(shù)據(jù)壓縮中,LZW是基于字典模型的一種壓縮算法,具有自適應(yīng)的特點(diǎn),非常適合這種數(shù)據(jù)的壓縮。表1是兩種算法組合與單獨(dú)使用LZW算法的對比。從表1中可以看出,采用這兩種算法結(jié)合的方式對數(shù)據(jù)進(jìn)行可以獲得較好的壓縮效果。

2.2 游程壓縮算法
游程編碼(RLE)是一種相對比較簡單的數(shù)據(jù)壓縮技術(shù),容易以硬件實(shí)現(xiàn)壓縮。實(shí)現(xiàn)游程編碼分為定長游程編碼和變長游程編碼兩種。本文采用8 bit定長游程編碼,編碼流程如下:
(1)初始化計數(shù)器cnt=1,輸入首字節(jié)P;
(2)判斷文件是否結(jié)束。若結(jié)束,輸出P和cnt,壓縮完成;若沒有結(jié)束,輸入次字節(jié)C,如果P=C且cnt255,cnt=cnt+1,則重復(fù)步驟(2);如果P≠C,則輸出P和cnt,重復(fù)步驟(1)。直到壓縮完成。
2.3 LZW壓縮算法
LZW算法是一種面向通用數(shù)據(jù)的即時、高效、簡單,易于實(shí)現(xiàn)的一種無損數(shù)據(jù)壓縮算法,不依賴于任何數(shù)據(jù)格式,具有很大的應(yīng)用范圍,且是基于字典模型的算法實(shí)現(xiàn)的關(guān)鍵在于字典的建立和查找。LZW算法的粗略描述如下[4]:
  Initialize Table
   STRING = get input character
   WHILE there are still input characters DO
   CHARACTER = get input character
   IF STRING+CHARACTER is in the string table then
   STRING = STRING+character
   ELSE
   Output the code for STRING
   Add STRING+CHARACTER to the string table
   STRING = CHARACTER
   END of IF
   END of WHILE
Output the code for STRING
Output End_flag
由算法描述可見,LZW算法邏輯過程簡單,能夠得到較快的壓縮速度,易于硬件壓縮。
3 硬件實(shí)現(xiàn)
3.1 系統(tǒng)整體設(shè)計

Cyclone II是Altera公司推出的新一代低成本系列FPGA器件[5],本設(shè)計選用Cyclone II系列的EP2C5T144I8芯片來實(shí)現(xiàn)數(shù)據(jù)的。EP2C5T144I8芯片具有4 608個LE(邏輯單元)、26個M4 K的RAM、13個嵌入式乘法器、2個PLL(鎖相環(huán))和158個用戶I/O引腳。系統(tǒng)的整體框圖如圖2所示。傳感器采集到信號后,經(jīng)過模擬適配電路進(jìn)行濾波、放大后進(jìn)入AD轉(zhuǎn)換器,由AD轉(zhuǎn)換器轉(zhuǎn)換輸出12 bit的數(shù)據(jù)流輸入到FPGA進(jìn)行壓縮。高4 bit數(shù)據(jù)進(jìn)行游程壓縮,低8 bit數(shù)據(jù)進(jìn)行LZW壓縮,最后將壓縮后的輸出數(shù)據(jù)流存儲到外部存儲器中。采集完成后,通過USB專用接口電路將壓縮后的數(shù)據(jù)從外部存儲器中讀入計算機(jī)保存下來,然后用專用軟件對壓縮后的數(shù)據(jù)進(jìn)行解壓,還原出原始采集到的數(shù)據(jù)以便進(jìn)一步進(jìn)行分析處理。


上一頁 1 2 下一頁

關(guān)鍵詞: 組合壓縮 組合壓縮

評論


技術(shù)專區(qū)

關(guān)閉