文獻標識碼: B
文章編號: 0258-7998(2011)08-090-04
多頻連續(xù)波雷達是一種新體制雷達,能夠同時發(fā)射多個頻率的連續(xù)波正弦信號對多個目標的速度、加速度、距離、方位角、俯仰角等多組參數(shù)目標進行探測。具有設備簡單、體積小、重量輕、功耗低等優(yōu)點[1]。
對于連續(xù)波體制雷達,目標參數(shù)多、信號處理的實時性強是其最顯著的特點。海量的回波數(shù)據(jù)使得存儲操作變得非常困難,并且也不易進行數(shù)據(jù)分析。數(shù)據(jù)的實時采集壓縮技術可以解決這一問題。由于雷達信號較為敏感,在大多數(shù)情況下雷達信號都需要先記錄,再事后取證、分析,所以只能采用實時無損壓縮。因此,要求多頻連續(xù)波雷達數(shù)據(jù)采集系統(tǒng)信號處理實時性好,處理數(shù)據(jù)量大,在追求目標采集測量精度的同時降低信號處理算法的復雜度,利于工程實現(xiàn)。
當前有很多壓縮與解壓縮方法都是基于軟件實現(xiàn)的,都是對數(shù)據(jù)進行后期處理。這種方法執(zhí)行速度慢,耗費大量的CPU資源。采用硬件實現(xiàn)數(shù)據(jù)的實時無損壓縮能夠?qū)⒏咚傩盘栕兂删徸冃盘栠M行傳輸,降低通信的信道容量,提高數(shù)據(jù)的可靠性。在雷達信號數(shù)據(jù)采集系統(tǒng)中,完成數(shù)據(jù)的海量存儲并提高總線的數(shù)據(jù)傳輸速度應采用硬件實現(xiàn)數(shù)據(jù)的實時無損壓縮。
1 數(shù)據(jù)壓縮算法比較
數(shù)據(jù)壓縮算法有不同的分類方法,根據(jù)壓縮算法是否可逆可以分為可逆壓縮與不可逆壓縮。其中可逆壓縮也叫無失真編碼或無損壓縮。不可逆壓縮叫做失真編碼或有損壓縮。由于人的感覺器官對于圖片、聲音或視頻中的某些信息的丟失難以察覺,一般采用有損壓縮算法可以節(jié)約大量的存儲空間。主要有預測編碼、多分辨率編碼、分型圖形編碼等。無損壓縮算法主要有哈夫曼編碼、算術編碼、游程編碼和LZ編碼等[2]。其中哈夫曼編碼與算術編碼均根據(jù)源數(shù)據(jù)發(fā)生的概率進行編碼,需要對壓縮數(shù)據(jù)進行統(tǒng)計,處理過程緩慢,實時性差;游程編碼只有在字符連續(xù)出現(xiàn)4次以上才能獲得比較好的壓縮效果,不適用于壓縮雷達回波信號。LZ編碼是基于字典的模式,用單個代碼代替字符串,數(shù)據(jù)流式輸入,對數(shù)據(jù)源無分塊要求,實時效果好,解壓完全可逆。LZ編碼包括LZ77、LZ78和LZW(Lempel-Ziv-Welch Encoding)。本文根據(jù)雷達回波數(shù)據(jù)的壓縮要求選用LZW無損壓縮算法。
2 雷達數(shù)據(jù)采集系統(tǒng)硬件實現(xiàn)
本文介紹的多頻連續(xù)波雷達數(shù)據(jù)采集系統(tǒng)中16路模擬信號經(jīng)過放大、跟隨、濾波處理后經(jīng)高速模擬電子開關進入高速ADC,輸出16 bit數(shù)字量。數(shù)字量的緩存與處理由采集處理模塊中的采集控制邏輯(FPGA)實現(xiàn)。壓縮后的數(shù)據(jù)在主控模塊的控制下經(jīng)高速系統(tǒng)總線寫入數(shù)據(jù)存儲模塊中的存儲器陣列。原理框圖如圖1所示。
3 基于FPGA的LZW算法設計
3.1 LZW數(shù)據(jù)壓縮算法
LZW數(shù)據(jù)壓縮算法是一種新穎的壓縮方法,具有實時性,壓縮效率高,可對不同的數(shù)據(jù)流進行自適應壓縮,對于緩變、重復性高的數(shù)據(jù)流,隨著數(shù)據(jù)量的增大, 壓縮效率能顯著提高。LZW算法有三個重要的對象:數(shù)據(jù)流(CharStream)、編碼流(CodeStream)和編譯表(String Table)。在編碼時,數(shù)據(jù)流是輸入對象,編碼流是輸出對象。數(shù)據(jù)流是指被壓縮數(shù)據(jù),編碼流是指壓縮后輸出的代碼流,編譯表存儲的是數(shù)據(jù)的索引號,相同塊的數(shù)據(jù)只輸出第一塊的索引號,從而實現(xiàn)數(shù)據(jù)的壓縮。
LZW壓縮算法的基本原理是提取出待壓縮數(shù)據(jù)中的不同字符,基于這些字符創(chuàng)建一個編譯表,然后用編譯表中的字符索引替代原始數(shù)據(jù)中的相應字符,從而減少原始數(shù)據(jù)的大小。其中編譯表不是事先創(chuàng)建好的,而是根據(jù)原始文件數(shù)據(jù)動態(tài)創(chuàng)建的。
LZW壓縮算法的基本思想是建立一個串表,將輸入字符串映射成定長的碼字輸出,通常碼長設置為12 bit,也可設置為15 bit或者18 bit。串表具有“前綴性”:假設任何一個字符串P和某一個字符S組成一個字符串PS,若PS在串表中,則S為P的擴展, P為S的前綴。字符串表是動態(tài)生成的,編碼前先將其初始化,使其包含所有的單字符串。在壓縮過程中,串表中不斷產(chǎn)生壓縮信息的新字符串,存儲新字符串時也保存新字符串PS的前綴P相對應的碼字。在解壓縮過程中,解碼器可根據(jù)編碼字恢復出同樣的字符串表,解出編碼數(shù)據(jù)流[3-4]。
3.2 FPGA模塊化設計
FPGA具有運行速率快,邏輯資源豐富,片內(nèi)RAM資源豐富,通用性好等特點。用FPGA實現(xiàn)LZW算法需要解決以下幾個關鍵問題[5-6]:(1)字典的生成。通常采用FPGA片內(nèi)存儲單元生成RAM; (2)字典的維護與更新:在壓縮過程中,對于一個新的字符串要在對字典進行查找后,根據(jù)字典中是否已經(jīng)存在來決定是否更新字典,這一過程必須利用FPGA片內(nèi)邏輯單元完成,因而過于復雜的字典需要耗費大量邏輯單元,不宜采用FPGA模塊化設計;(3)壓縮編碼流的處理:由于壓縮算法改變了原始數(shù)據(jù)的編碼格式,需要在壓縮過程中添加一些標識符,使得在解壓縮過程中能夠完全還原原始數(shù)據(jù)。并且在壓縮編碼輸出數(shù)據(jù)時,需要根據(jù)存儲器件或傳輸總線的數(shù)據(jù)位寬度進行重新編碼。
在雷達信號的采集系統(tǒng)中,信號采集與處理的控制時序是保證數(shù)據(jù)正確傳輸?shù)年P鍵。大多數(shù)雷達數(shù)據(jù)的信號處理都采用流水線的數(shù)據(jù)處理方式,如圖2所示。
雷達數(shù)據(jù)通過采集系統(tǒng)的高速A/D采集進入到存儲模塊時需要向控制器件發(fā)出中斷信號,再將數(shù)據(jù)寫入到存儲器中等待信號處理模塊對雷達數(shù)據(jù)進行分析、壓縮處理[7]。這種發(fā)出中斷信號的流水線采集方式由于受到采集數(shù)據(jù)周期長的限制,不利于數(shù)據(jù)的實時壓縮,必然導致數(shù)據(jù)總線實時傳輸速率的降低,不能滿足待采集信號量日益增大的要求。
為節(jié)約FPGA的I/O引腳,縮小系統(tǒng)體積,本文所設計的采集系統(tǒng)首先將高速ADC轉(zhuǎn)換后的16 bit數(shù)字量分高8 bit和低8 bit寫入FPGA內(nèi)的數(shù)據(jù)緩存模塊,時序控制模塊完成將緩存數(shù)據(jù)依次送入LZW算法模塊及各模塊之間的時序控制操作,壓縮后的數(shù)據(jù)再經(jīng)過數(shù)據(jù)寬度轉(zhuǎn)化模塊寫入到系統(tǒng)總線。
由于本系統(tǒng)需要大量的片內(nèi)的Block RAM構成數(shù)據(jù)緩存模塊和字典存儲模塊,因此采用Xilinx公司的Virtex-E系列的XCV400E,該器件具有豐富的RAM資源,共有40個Block RAM,每個Block RAM存儲容量為4 096 bit。Block RAM可以用作FPGA片上和片外緩沖的FIFO,高速并行訪問的緩沖存儲器和總線寬度轉(zhuǎn)換器等。設計選用的是雙口RAM,每個端口都有獨立的控制信號,并且每個端口的數(shù)據(jù)總線寬度可以獨立配置。在本文設計的采集系統(tǒng)中數(shù)據(jù)緩存模塊及數(shù)據(jù)寬度轉(zhuǎn)換模塊選用雙口RAM,對于字典存儲模塊選用單口RAM構成。FPGA片內(nèi)集成功能模塊如圖3所示。
由圖3可知,F(xiàn)PGA主控邏輯內(nèi)部主要有以下四個模塊。
(1)輸入緩存模塊:該模塊由FPGA片內(nèi)集成的2個高速FIFO構成,數(shù)據(jù)采用循環(huán)寫入方式,最大限度地實現(xiàn)數(shù)據(jù)的實時處理。
(2)時序控制模塊:完成對數(shù)據(jù)緩存模塊的讀寫操作和為其他模塊提供時序控制信號。
(3)壓縮算法實現(xiàn)模塊:實現(xiàn)字典的初始化,字符串查找、判斷、更新,輸入數(shù)據(jù)流的編碼,輸出代碼生成等功能;
(4)字典存儲模塊:用于存放字典數(shù)據(jù)信息。
在字典存儲模塊中選用20片Block RAM并聯(lián)構成20 bit數(shù)據(jù)寬度、4 K深度的字典存儲區(qū)。每個存儲區(qū)存放20 bit寬度字符,包含兩部分:頭部為12 bit的前綴字符P,尾部為8 bit的當前字符S。輸出為12 bit編碼。
(5)數(shù)據(jù)寬度轉(zhuǎn)換模塊:將壓縮后的12 bit編碼數(shù)據(jù)轉(zhuǎn)換為與系統(tǒng)背板總線對應的16 bit數(shù)據(jù)寬度。
設計中采用把4個雙口RAM并行連接構成16 bit數(shù)據(jù)寬度、1 K深度的高速FIFO。壓縮后的12 bit輸出碼流經(jīng)過數(shù)據(jù)寬度轉(zhuǎn)換模塊組合成16 bit數(shù)據(jù)寫入系統(tǒng)總線。
3.3 LZW算法工作流程
本文所設計的采集系統(tǒng)借鑒了流水線采集方式狀態(tài)機實現(xiàn)簡單的優(yōu)點,算法采用VHDL語言實現(xiàn)有限狀態(tài)機,壓縮算法流程如圖4所示。
狀態(tài)機首先完成初始化過程,物理地址000H~0FFH分別存放對應的0~255。初始化完成后,狀態(tài)機進入壓縮編碼循環(huán),讀入當前字符,若該字符與字典中的某個字符匹配,再讀入下一字符;若不匹配,把該字符加入到當前字符串中,輸出前綴的字典指針到輸出碼流。反復執(zhí)行該過程,直到編碼結束。
以字符串流97,24,1,97,24,232,1,255,97,24,232,46……為例,表1給出LZW壓縮算法的處理過程。輸出碼流為061,018,061,100,0E8,001,0FF,0E8……,其中字典指針及輸出碼流均以16進制表示。
3.4 測試結果分析
本文設計的多頻連續(xù)波雷達數(shù)據(jù)采集系統(tǒng)中的控制邏輯采用Xilinx公司的Virtex-E系列FPGA器件XCV400E,系統(tǒng)時鐘頻率100 MHz,分別選取三種不同類型的雷達數(shù)據(jù)幀進行壓縮算法測試,如表2所示。其中數(shù)據(jù)幀1為1 MB的雷達視頻回波文本文件數(shù)據(jù),雜波信號較多;數(shù)據(jù)幀2為5 MB的雷達視頻回波文本文件數(shù)據(jù),雜波信號較少;數(shù)據(jù)幀3為10 MB的二進制雷達數(shù)據(jù)。
由測試結果可以看出,LZW算法對于雜波信號較少的緩變雷達回波信號的壓縮效果最好。對于雜波較多的數(shù)據(jù)實現(xiàn)無損壓縮可進一步對LZW算法進行優(yōu)化。例如固化初始化過程,可以節(jié)約壓縮時間和簡化控制時序;或是對于出現(xiàn)頻率高的字符,記憶其字典指針及出現(xiàn)位置,不必每次都從字典的起始處開始查,簡化算法的復雜度。
本文介紹了基于FPGA的LZW算法在雷達回波信號壓縮中的應用,利用FPGA內(nèi)部豐富的Block RAM資源,在片內(nèi)集成高速數(shù)據(jù)緩存及字典存儲模塊實現(xiàn)對海量雷達數(shù)據(jù)的實時采集、壓縮處理。算法通過采用VHDL語言有限狀態(tài)機實現(xiàn),可移植性強,并可在線升級。該算法已成功應用于某飛行測試實驗中。
參考文獻
[1] 戴奉周,馮維婷,沈福民.數(shù)字多頻連續(xù)波雷達信號處理中的關鍵算法[J]. 雷達科學與技術, 2005,6(3):177-180.
[2] SALOMON D.數(shù)據(jù)壓縮原理與應用[M].吳樂南,等,譯.北京:電子工業(yè)出版社, 2003.
[3] 藍波,林小竹,籍俊偉.一種改進的LZW算法在圖像編碼中的應用[J].計算機工程與科學,2006,28(6):55-57.
[4] 郭曉巖,郝永勝. LZW無損壓縮算法在計 算機取證中的應用研究[J].測控技術,2006,25(11):64-67.
[5] LON M B, LEE J F, JAN G E. A lossless data compression anddecompression algorithm and its hardware architecture[J].IEEE Trans,VLSI. 2006,14(9):925-935.
[6] 陳晉敏,黃春明,周軍. 激光雷達數(shù)據(jù)無損壓縮的FPGA實現(xiàn)[J].計算機測量與控制,2007,15(1):100-102.
[7] 尹志勇,焦新泉,任勇峰.雷達視頻回波信號實時采集、壓縮轉(zhuǎn)發(fā)裝置[J].計算機測量與控制,2010,18(2):479-481.