??? 摘? 要: 介紹了基于多路遙測數據采集系統在數據存儲過程中的特點,提出了數據包的數據結構,并基于該數據包結構設計了低硬件復雜度的實時壓縮算法。該數據壓縮算法已成功應用于某艦船振動信號檢測中,仿真及實際測試結果表明,該算法在滿足數據處理精度要求的前提下,可獲得較高的壓縮因子。?
??? 關鍵詞: 遙測數據; 數據包; 實時壓縮
?
??? 隨著遙感技術的飛速發展,新型航天遙感器、未來地球資源探測平臺以及用于軍事領域的各種傳感器所獲取的數據量急劇增長。為了有效傳輸和存儲海量遙測數據,遙測數據壓縮已經成為遙測技術應用的一個重要課題[1]。?
??? 對于數據壓縮,根據失真率可分為無失真壓縮和失真壓縮兩大類,無失真壓縮法有霍夫曼編碼、算數編碼等。而對于允許一定失真率的遙測數據而言,采用游程編碼可獲得較好的壓縮效果。同時數據的結構、數據的信息熵也直接影響數據傳輸速度、記錄器的容量以及邏輯的布局。為了對遙測數據進行有效壓縮,本文提出了數據包的數據結構,并在數據包的基礎上提出了基于改進游程編碼、低硬件復雜度的實時數據壓縮方法。通過仿真實驗,證明了該算法在處理特定遙測數據過程中具有良好的可靠性和有效性。?
1 多路遙測數據編幀結構?
??? 彈上遙測系統將反映各分系統工作情況以及工作環境的各種電量、非電量信號都轉化成在規定范圍內變化的電信號,然后由彈上遙測系統采集、編碼、調制后傳輸得到遙測數據。遙測系統的幀格式是典型的PCM幀格式。每幀以一個特定的幀同步碼組開始,幀同步碼組之后排列著固定碼長的各路數據,幀長和幀結構在飛行中是固定的。遙測系統以固定的采樣率對每路模擬量進行采樣,并依次對每路信號進行編碼。為了既不丟失信號的信息又能合理利用信道,對于不同速率的參數,應在主幀基礎上用不同的副幀來實現[2]。一個主幀由若干個副幀構成, 副幀分成多個波道, 存儲不同信息。?
??? 圖1所示為具體數據結構,其中包括N路速變信號和N+M路緩變信號,本實驗采用16位的AD7667進行采樣,其最高采樣率為1MS/s,信號采樣率遠高于實際變化頻率,從而使數據變化較為緩慢,為數據壓縮提供了可行性。而一些緩變信號,當沒有信號時,一般以固定值表示,這也為信息壓縮提供了方便。?
?
?
2 多路遙測數據包結構?
??? 遙測系統中相鄰幀之間即每通道間相鄰數據具有很強的相關性,故設計了數據包結構來實現多路數據采集系統的數據壓縮。打包法是將每通道數據單獨打包。與編幀法相比,數據包結構的采集控制過程相同,但數據的組織方法不同[3]。?
??? 各個通道的輸入信號選用多選一電子開關按時分方式依次采樣,即相應通道被選中,經過模數轉換器,形成PCM輸出。在采編器中開設n個緩存區(一級緩存),每個通道的緩存區為k字節,依次編號且與通道號對應,對應通道采集的數據對應存放到對應的緩存區。當緩存區滿后,將數據轉移到下一級存儲器(二級緩存),二級緩存采用FIFO結構。每組緩存區存儲的數據在轉移時,都冠以通道號標記和同步標記。當二級緩存FIFO達到一定的深度時,將二級緩存中的數據轉移到下一級存儲器(主存儲器)。類似于一級緩存到二級緩存的打包過程,每組二級緩存的數據在轉移時,也要冠以時間標記、卡標記和同步標記。數據包結構的具體實現方式如圖2所示。?
?
?
??? 除了壓縮效率,數據壓縮所要考慮的另一個重要方面是算法執行的復雜度。通過上述分析可知,該硬件電路易于實現打包數據的存儲和轉移,為打包壓縮算法的可行性提供了條件。?
3 實驗結果分析?
3.1壓縮/解壓算法設計?
??? 游程編碼的原理十分簡單:將一行數據中數值相同或相近的相鄰點用一個計數字節和一個表示該數據值的數據字節來代替。然而該算法存在一個致命弱點:如果數據中每兩個相鄰點的數值都不同,用這種算法不但不能壓縮,數據量反而增加一倍。為了避免上述病態數據的出現,在算法上對計數字節和數據字節進行了區分,本實驗是以16位ADC數據為例,對進入FPGA的數據進行預處理。先將數據除以2,然后加上8 000H,確保數據的最高位為1,而計數字節的最高位為0。具體的壓縮編碼與解碼恢復的算法流程圖分別如圖3和圖4所示。?
?
?
?
??? 將16位ADC數據進行有損壓縮后的數據格式如表1所示。用該壓縮算法,數據結構同編幀法相比,由于各通道物理過程不盡相同,壓縮因子較大的通道在大包中出現的概率較小,各通道壓縮因子介于[1,16 384]之間。?
?
?
3.2仿真結果?
??? 壓縮率與誤差參數△的關系仿真曲線如圖5所示。
?
?
3.3 實際測試結果?
??? 在硬件電路設計中采用16位的AD7667進行采樣,則系統理論上的最高分辨率為2.5/216。從上述流程中可知:AD連續兩次采樣的差值小于△時,便認為這兩次的值是一致的,取前一個值,因此△的不同,使得AD的分辨率也跟著變化。△與AD分辨率的關系如表2所示。?
?
?
??? 由表2得出:△值越小,經壓縮后其分辨率越高;反之,△值越大,經壓縮后其分辨率越低。?
??? 在艦船振動的檢測過程中,要求艦船振動加速度超過100g,記錄器就能識別出來。振動傳感器的靈敏度約為0.5pc/g。?
??? 最小輸入電荷量為:?
??? Q=100g×0.5pc/g=50pc?
??? 電荷經過放大器,輸出電壓Vo為:?
??? ?
??? AD7667的采集電壓范圍為0~2.5V,所以AD的最小分辨率為0.005V。當△=64,其數據壓縮以后的分辨率為其數據壓縮以后的分辨率為
通過以上分析,將△值確定在{0,64}。?
??? 設計人員可以根據實際需要改變△來改變算法的壓縮比,△值越小,壓縮比越低,波形失真越小;△值越大,壓縮比越高,波形失真越嚴重。因此,在保證精度的條件下,△值越大壓縮比越高。?
??? 根據以上的分析,此算法屬于有損壓縮算法,在應用中,設定不同的△值 ,對于差值小于△時的冗余數據,都認為是同一個數據壓縮后的數據如圖6所示。?
?
?
??? 由于采集系統會受到系統、外界和本身的紋波干擾,若△選得太小,則壓縮效果不明顯,如上表中的△為64的壓縮數據所示:AD的編碼值為1000 0000 0100 110X(80 4X),經過移位以后,編碼變為0100 0000 0001 0011(40 13),緊接著為計數器1111 1111 1111 1111(FFFF),最高位“1”代表計數器,其余15位代表計數值(7FFF),每隔一秒鐘寫入一個幀標志XX XX XX EB 90;已知AD的采樣率為200KS/s,綜上,在無突變信號的情況下本算法的壓縮比為:?
?????
??? 通過以上理論分析、仿真結果及硬件實驗測試結果可知,采用數據壓縮技術可以減少多余數據,從而在有限的存儲容量下獲得盡可能多的非多余數據。算法硬件實現簡單,采用低功耗的FPGA實現硬件壓縮,對所采集數據的壓縮和解壓時間短,在符合系統精度要求的前提下,采用該壓縮算法,可以獲得較高的壓縮比。?
參考文獻?
[1] 王崛.遙測數據壓縮算法的設計與實現. 遙測遙控,2002,23(2):16-22.?
[2] 馬寧,朱福蔭,尹志軍,等.改進游程編碼在天氣雷達數據壓縮中的應用.解放軍理工大學學報,2004,5(6):88-90.?
[3] 賈緯敏.一種可編程PCM遙測編碼器的設計.電子工程師,2004,30(5):71-73.