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