摘 要: 對(duì)無(wú)源雷達(dá)的直通信號(hào)和反射信號(hào)進(jìn)行互相關(guān)運(yùn)算可以檢測(cè)目標(biāo)是否存在。本文介紹了基于FPGA流水線操作的陣列運(yùn)算器,該運(yùn)算器有32個(gè)并行乘加運(yùn)算單元時(shí)分,完成256個(gè)探測(cè)距離的互相關(guān)值計(jì)算,在128MHz的時(shí)鐘下,能夠?qū)Χ沸盘?hào)進(jìn)行實(shí)時(shí)互相關(guān)處理。
關(guān)鍵詞: 互相關(guān)運(yùn)算器 現(xiàn)場(chǎng)可編程邏輯門(mén)陣列(FPGA) 硬件描述語(yǔ)言 無(wú)源雷達(dá)
同傳統(tǒng)雷達(dá)相比,無(wú)源雷達(dá)利用民用照射源(如FM調(diào)頻廣播,頻率在100MHz左右)作為發(fā)射源,使雷達(dá)成本大幅度下降,并且體積小、重量輕、耗電小,具有抗隱身和自身隱身等眾多優(yōu)點(diǎn)。但無(wú)源雷達(dá)最大的缺點(diǎn)就是對(duì)直通信號(hào)和反射信號(hào)做實(shí)時(shí)自相關(guān)運(yùn)算需要巨大的運(yùn)算能力。當(dāng)用500kHz的采樣頻率對(duì)無(wú)源雷達(dá)的二路信號(hào)進(jìn)行采樣時(shí),若距離分辨率為600m、探測(cè)距離為0~150km,則至少需要4GHz復(fù)數(shù)乘加/秒的計(jì)算能力才能實(shí)時(shí)地對(duì)二路信號(hào)做互相關(guān)處理。對(duì)信號(hào)處理所需的巨大運(yùn)算量限制了無(wú)源雷達(dá)的發(fā)展,而數(shù)字處理技術(shù)的發(fā)展,使無(wú)源雷達(dá)的實(shí)現(xiàn)成為可能。
本文重點(diǎn)介紹了基于FPGA的實(shí)時(shí)互相關(guān)運(yùn)算器的實(shí)現(xiàn)方案。互相關(guān)運(yùn)算器要計(jì)算的信號(hào)是直通信號(hào)(來(lái)自FM調(diào)頻廣播電臺(tái))和反射信號(hào)(飛行器或者其他運(yùn)動(dòng)的目標(biāo)反射FM調(diào)頻信號(hào)的反射信號(hào)),二路信號(hào)通過(guò)32個(gè)并行運(yùn)算單元的計(jì)算,流水線式地計(jì)算出每一時(shí)刻的256個(gè)互相關(guān)值,并把互相關(guān)值送往高速DSP處理器做進(jìn)一步處理,檢測(cè)出目標(biāo)在哪個(gè)距離上出現(xiàn)。
1 互相關(guān)運(yùn)算法則
計(jì)算目標(biāo)的位置,關(guān)鍵在于找到時(shí)延參數(shù)Δt取何值時(shí),二路信號(hào)的互相關(guān)值最大。時(shí)延參數(shù)Δt的計(jì)算方法描述如下。
x(t)和y(t)分別為接收到的直通信號(hào)和反射信號(hào):
式(1)中:a是衰減系數(shù),s(t)是源信號(hào),Δt是時(shí)延量,n1(t)、n2(t)為零均值平穩(wěn)白噪聲過(guò)程。在這個(gè)模型中,噪音信號(hào)是附加的。假設(shè)n1(t)、n2(t)與s(t)是相互獨(dú)立的變量,則二路信號(hào)的互相關(guān)運(yùn)算公式可以描述為:
2 互相關(guān)運(yùn)算器的硬件結(jié)構(gòu)
互相關(guān)運(yùn)算器的框架結(jié)構(gòu)如圖1所示。互相關(guān)運(yùn)算器由量化模塊(其中包括RAM部分)、控制模塊、互相關(guān)運(yùn)算模塊以及峰值查找模塊組成。量化模塊對(duì)直通信號(hào)x(t)和反射信號(hào)y(t)進(jìn)行A/D采樣,得到1路2位(包括實(shí)部和虛部)和1路12位(包括實(shí)部和虛部)的數(shù)字信號(hào)送往SRAM中,再由控制模塊把SRAM所存的數(shù)據(jù)按照一定的邏輯送給互相關(guān)運(yùn)算模塊(對(duì)FPGA編程實(shí)現(xiàn))做互相關(guān)運(yùn)算。互相關(guān)運(yùn)算模塊把每一時(shí)刻t0的所有互相關(guān)值,按A(t0,0)、A(t0,1)……A(t0,R)的順序送往峰值查找模塊中的雙端口異步FIFO中。以FIFO作為FPGA與DSP的接口,最后峰值查找模塊的DSP從FIFO中取出時(shí)刻t0的所有互相關(guān)值。比較這些值找出時(shí)刻t0有目標(biāo)出現(xiàn)的r,并把結(jié)果送往顯示終端顯示。峰值查找模塊由高速DSP來(lái)完成。
3 互相關(guān)運(yùn)算模塊的實(shí)現(xiàn)
若需要探測(cè)距離為0~150km的所有目標(biāo),距離分辨率為600m,則每一時(shí)刻需要計(jì)算256個(gè)互相關(guān)值。如果窗口T取32,采樣模塊的采樣頻率F設(shè)為1MHz,互相關(guān)運(yùn)算器的運(yùn)算能力需要達(dá)到F×T×R=500kHz×32×256=4GHz復(fù)數(shù)乘加/秒。這就決定FPGA芯片在不太高的工作頻率下需要并行盡可能多的運(yùn)算單元。圖2是本文所設(shè)計(jì)的互相關(guān)運(yùn)算模塊結(jié)構(gòu)圖。它有32個(gè)復(fù)數(shù)乘加運(yùn)算單元,每一個(gè)運(yùn)算單元都是相互獨(dú)立的,因此每個(gè)時(shí)鐘能進(jìn)行32次復(fù)數(shù)乘加運(yùn)算,在128MHz的工作頻率下,能夠達(dá)到128MHz×32=4GHz的復(fù)數(shù)乘加/秒的運(yùn)算能力。
若把方程式(4)映射到一個(gè)具有32個(gè)并行運(yùn)算單元的循環(huán)陣列,循環(huán)T次就可計(jì)算出32個(gè)距離上的互相關(guān)值,順序計(jì)算8個(gè)這樣的距離塊就可以完成256個(gè)單元的計(jì)算。把上述結(jié)構(gòu)映射到FPGA上實(shí)現(xiàn),則FPGA上并行32個(gè)運(yùn)算單元,且每1個(gè)運(yùn)算單元具有1個(gè)與其他運(yùn)算單元獨(dú)立的復(fù)數(shù)乘加模塊、寄存器組和1個(gè)互相關(guān)值輸出鎖存寄存器。這種并行結(jié)構(gòu)的最大優(yōu)點(diǎn)在于:使運(yùn)算模塊中的存儲(chǔ)單元獨(dú)立于32個(gè)運(yùn)算模塊之外,簡(jiǎn)化了FPGA的外圍電路,極大地方便了硬件的實(shí)現(xiàn)。
二路信號(hào)在接收信噪比條件下量化成直通信號(hào)x(t)和反射信號(hào)y(t)。在本系統(tǒng)中直通信號(hào)x(t)和反射信號(hào)y(t)的量化位寬分別是6位和1位,二路信號(hào)都是復(fù)變量,因此數(shù)據(jù)通路的寬度分別是12位和2位。由于反射信號(hào)僅需要1位量化,因此可以用組合加法操作代替乘法操作。加法的實(shí)現(xiàn)比乘法簡(jiǎn)單得多,在FPGA中占用的資源也比乘法器少得多,因而能夠在1塊50萬(wàn)門(mén)左右的FPGA中實(shí)現(xiàn)32個(gè)運(yùn)算單元或者更多的運(yùn)算單元。為了使窗口值T取128時(shí)計(jì)算的結(jié)果不會(huì)溢出,運(yùn)算器選取了26位位寬的加法器。在數(shù)據(jù)流上,直通信號(hào)x(t)傳送到32級(jí)距離的運(yùn)算單元,反射信號(hào)y(t)以逐步右移鎖存的方式送往每一個(gè)運(yùn)算單元上。x(t)和y(t)都由一個(gè)15位地址計(jì)數(shù)器來(lái)控制SRAMs,讀出所需要的數(shù)據(jù)。
為了消除計(jì)算不同時(shí)刻之間以及相同時(shí)刻不同距離塊之間互相關(guān)值所需要的額外時(shí)間,使FPGA中的計(jì)算資源不會(huì)因?yàn)闇?zhǔn)備運(yùn)算數(shù)據(jù)而閑置,本設(shè)計(jì)采用了一個(gè)寄存器組給每一個(gè)復(fù)數(shù)乘加模塊加載運(yùn)算數(shù)據(jù),其寄存器組的結(jié)構(gòu)如圖3所示。
每一個(gè)寄存器組由4個(gè)寄存器和7個(gè)2路復(fù)用器組成。寄存器組工作時(shí)的時(shí)序圖如圖4所示。4個(gè)寄存器分成2個(gè)小組,小組1:Reg1;Reg2,小組2:Reg3、Reg4。每次小組1動(dòng)作,小組2則預(yù)裝;反之亦然。圖4中第1階段為全部寄存器組的預(yù)裝(預(yù)裝t1時(shí)刻的數(shù)據(jù));從第2階段起開(kāi)始計(jì)算互相關(guān)值,這時(shí)小組1動(dòng)作,計(jì)算t1時(shí)的互相關(guān)值,
小組2預(yù)裝并計(jì)算t2時(shí)刻所需要的數(shù)據(jù);第3階段,小組1繼續(xù)動(dòng)作,直到計(jì)算完成256個(gè)互相關(guān)值,小組2不動(dòng)作;第4階段,小組2動(dòng)作,小組1預(yù)裝并計(jì)算t3時(shí)刻所需要的數(shù)據(jù);第5階段,小組2繼續(xù)動(dòng)作,小組1不動(dòng)作,直到計(jì)算完成t2時(shí)刻的256個(gè)互相關(guān)值后,整個(gè)寄存器組轉(zhuǎn)往第2階段。
在圖2中,復(fù)數(shù)乘法模塊根據(jù)Y寄存器組的輸出值對(duì)RegX傳送過(guò)來(lái)的值進(jìn)行累加。當(dāng)Y寄存器組的輸出值為0時(shí),CM送0值給累加器,這時(shí)累加器把當(dāng)前累加值與0相加,并把結(jié)果鎖存;當(dāng)Y寄存器組的輸出值為1時(shí),CM送RegX傳送過(guò)來(lái)的值給累加器,累加器則把當(dāng)前累加值與RegX傳送過(guò)來(lái)的值相加,并把結(jié)果鎖存。累加器進(jìn)行T(本文中T=32)次累加之后,把累加結(jié)果鎖存到互相關(guān)值輸出鎖存器(見(jiàn)圖2)對(duì)應(yīng)的寄存器中,這時(shí)發(fā)出reset命令把結(jié)果鎖存器清零,為計(jì)算下一個(gè)互相關(guān)值做初始為零的準(zhǔn)備工作。
當(dāng)屬于某一時(shí)刻t0上32個(gè)互相關(guān)值計(jì)算完畢之后,控制邏輯模塊發(fā)出鎖存信號(hào)把這32個(gè)互相關(guān)值送往互相關(guān)值輸出鎖存寄存器組中。假設(shè)從n0時(shí)鐘開(kāi)始計(jì)算t0時(shí)刻的某32個(gè)互相關(guān)值,在n0+31時(shí)刻下32個(gè)互相關(guān)值計(jì)算完成,這時(shí)的結(jié)果同時(shí)鎖存到互相關(guān)值輸出鎖存器中。在計(jì)算t0時(shí)刻下一組32個(gè)互相關(guān)值或者t0+1時(shí)刻0~31個(gè)互相關(guān)值時(shí),輸出鎖存寄存器組把計(jì)算結(jié)果加上幀的標(biāo)志(由控制邏輯模塊給出,如果t0時(shí)刻為0,則t0+1時(shí)刻為1,用于區(qū)分當(dāng)前互相關(guān)值是屬于前一時(shí)刻的互相關(guān)值還是屬于后一時(shí)刻的互相關(guān)值,便于峰值查找模塊的實(shí)現(xiàn))。數(shù)據(jù)按照A(t0,32k+0)、A(t0,32k+1)……A(t0,32k+31)(k=0~7)的順序送往峰值查找模塊的FIFO中?;ハ嚓P(guān)值輸出鎖存寄存器的時(shí)序如圖5所示。
互相關(guān)運(yùn)算器中的FPGA模塊采用的是1片Xilinx 2v500fg256芯片,500 000門(mén)的規(guī)模。其VHDL語(yǔ)言實(shí)現(xiàn)代碼已在Xilinx 2v500fg256上通過(guò)了Xilinx ISE5.1的仿真、綜合布局及布線?;ハ嚓P(guān)運(yùn)算模塊加上地址控制單元和邏輯控制單元總共占用了2317個(gè)Slices(75%),2952個(gè)Slice Flip Flops(48%),2792個(gè)4輸入查找表(Look-Up-Table,LUT)s(45%)和1個(gè)全局時(shí)鐘(7%)等。從互相關(guān)運(yùn)算器的結(jié)構(gòu)可以得到:FPGA芯片上集成的并行運(yùn)算單元越多,數(shù)據(jù)處理能力就越強(qiáng),但FPGA芯片的規(guī)模限制不能集成太多的并行運(yùn)算單元。
4 結(jié) 論
本文闡述了無(wú)源雷達(dá)系統(tǒng)中基于FPGA的實(shí)時(shí)互相關(guān)運(yùn)算器的一種實(shí)現(xiàn)方案。該運(yùn)算器由1塊500 000門(mén)的FPGA芯片完成2路信號(hào)的互相關(guān)運(yùn)算(或積分運(yùn)算)。經(jīng)實(shí)驗(yàn)?zāi)M,在探測(cè)距離為0~150km、距離分辨率為600m時(shí),互相關(guān)運(yùn)算器能夠?qū)崟r(shí)完成直通與反射2路信號(hào)的互相關(guān)運(yùn)算。該運(yùn)算器還可以擴(kuò)展到和其他的接收機(jī)相連,處理其他的數(shù)據(jù),例如目標(biāo)的方位角等。
參考文獻(xiàn)
1 Tuan T,Figueroa M,Lind F et al.An FPGA-Based Array Processor for an Ionospheric-Imaging Radar.California:
Proceedings of the IEEE Symposium on FPGAs for Custom Computing Machines.Napa Valley. 2000
2 Sahr J D,Gidner D M,Zhou C et al.Passive VHF radar for Ionospheric Physics.Journal of Atmospheric and Solar-Terrestrial Physics,2001;(63)
3 George P,Kostas E,Li Yiqi et al.Development of a Passive Acoustic System for Realime Source Detection,Tracking and Recognition.In:Proceedings of the IEEE International Symposium.Industrial Electronics,1992;(1)
4 唐小明,何友,夏明革.基于機(jī)會(huì)發(fā)射的無(wú)源雷達(dá)系統(tǒng)發(fā)展評(píng)述.現(xiàn)代雷達(dá),2002;24(2)
5 Xilinx Inc.Xilinx 5 Software Manuals Online.2002
6 盧毅,賴杰.VHDL與數(shù)字電路設(shè)計(jì).北京:科學(xué)出版社,2001