李耀南 羅丁利
(西安電子工程研究所 西安 710100)
從提高相控陣雷達自適應(yīng)和抗干擾能力出發(fā),要使接收波束能受計算機實時控制且靈活可變。用數(shù)字方式來形成接收波束,使接收天線波束具有了自適應(yīng)的能力,所以要求波束形成導向矢量算法計算精度高、反應(yīng)速度快。
目前求取波束形成導向矢量的算法主要有查找表法和實時計算法兩類。查找表法是預(yù)先將所有頻點和波束指向角所對應(yīng)的導向矢量計算好并存儲在RAM中,系統(tǒng)加電后通過地址譯碼的方式直接讀取,特點是反應(yīng)速度快,但受RAM存儲空間限制,一般應(yīng)用在陣元數(shù)較少且頻率點、波束指向角變化范圍不大的系統(tǒng)中;實時計算法是根據(jù)當前中心機發(fā)送的控制指令,實時計算出波束的導向矢量并用于數(shù)字波束形成,優(yōu)點是控制靈活、不受存儲資源限制,尤其適用于大規(guī)模陣列且具有自適應(yīng)DBF設(shè)計的系統(tǒng)中。如果實時計算法在速度上能接近甚至超越查找表法,將無可替代的成為主流算法。
圖1 等距線陣波束形成
在窄帶條件下,同時刻采集信號,所有陣元上信號的復(fù)包絡(luò)相同,只需考慮相位的變化,而它只依賴于陣列的幾何結(jié)構(gòu)。對于等距線陣,則更簡單,只依賴于與x軸的夾角及陣元間距,如圖1所示。
假設(shè)等距線陣陣元間距為d,接收天線波束指向的入射角為θ,雷達工作波長為λ,工作頻率為f0,光速為c,則每個陣元之間相移量[2]為:
而對第n個陣元的導向系數(shù)為:
寫成矢量的形式:
由wn構(gòu)成的W稱為導向矢量,窄帶條件下,W只依賴于陣列的幾何結(jié)構(gòu)和波束指向;而寬帶條件下還要考慮工作頻率(或波長)。
某相控陣雷達數(shù)字波束形成導向矢量計算流程如圖2所示,其中c為光速,d為等距線陣陣元間距,f0為工作頻率,θ為波束指向角,共128個陣元,所得結(jié)果cosφ和sinφ分別為所求流水導向系數(shù)的實部和虛部,we為流水導向系數(shù)對應(yīng)的寫使能信號(所謂流水是指在時序上按陣元順序輸出運算結(jié)果)。
提供的硬件資源有1片Xilinx FPGA-xc5vsx95t,系統(tǒng)要求完成128陣元導向矢量輸出的時間必須小于20μs,波束指向的量化誤差小于1mil。
圖2 DBF導向矢量算法流程
如圖2所示,該算法流程要求前后2次用CORDIC進行求解正余弦,1次普通的定點數(shù)乘法,1次流水的定點數(shù)乘法和3次截位運算。
圖中所示的mQn為浮點數(shù)據(jù)對應(yīng)的有符號十六進制定點格式,m為整數(shù)部分的位寬,n為小數(shù)部分的位寬,整個數(shù)據(jù)的位寬k=1(位符號位)+m(位整數(shù)位)+n(位小數(shù)位),即為fixk-n格式。整個系統(tǒng)采用的輸入輸出數(shù)據(jù)位寬選取以滿足系統(tǒng)要求的測量精度為準則,均定為16bit,而輸入?yún)?shù)θ格式為2Q13,即整數(shù)部分的位寬為2bit,小數(shù)部分的位寬為13bit,因而可推算出的浮點精度為1/213rad(即1.2×10-4rad,滿足波束指向的量化誤差小于1mil的系統(tǒng)要求)。
由于CORDIC軟核的輸入數(shù)據(jù)格式需要為2Q13,取值范圍為區(qū)間[-π,π]或歸一化區(qū)間[-1,1],又當 df0/c≤0.5 時,2πdf0/c≤π,因而圖中的兩個CORDIC軟核的輸入數(shù)據(jù)顯然都應(yīng)在[-π,π]之內(nèi),然而流水乘法器在第3陣元以后的計算結(jié)果2πdf0sinθ(n-1)/c都有可能超過±π,所以需要對其結(jié)果進行適當?shù)慕匚?,以滿足后面CORDIC軟核的輸入數(shù)據(jù)在[-π,π]之內(nèi)的要求(這里的截位分為四種情況,k≠0且 k為自然數(shù),a.若2πdf0sinθ(n-1)/c∈[2kπ,2kπ+π],則保留符號位,截取部分低位和自定義位作為數(shù)據(jù)位,變?yōu)椋?,π];b.若2πdf0sinθ(n-1)/c∈[-2kπ -π,-2kπ],則截位同上,變?yōu)椋? π,0];c.若 2πdf0sinθ(n-1)/c ∈[2kπ+π,2kπ +2π],則同上述截位后,再減去 π,變?yōu)椋?,π];d.若 2πdf0sinθ(n-1)/c ∈[-2kπ -2π,-2kπ-π],則同上述第一種截位后,再加上π,變?yōu)椋?π,0])。
定點運算的延遲是固定的時鐘節(jié)拍數(shù),因此系統(tǒng)時鐘頻率越高,延遲越小。完成圖2所示的一個導向矢量計算的運算步驟及其時間延遲如表1所示。
表1 定點實時算法延遲估算
由于表中序號1和2.x屬于并行計算,取延遲節(jié)拍數(shù)多者計入總延遲,同樣,6和7也是并行計算。即使是僅對128組導向系數(shù)做流水輸出也要128個時鐘節(jié)拍,而上述定點算法也只用了181個時鐘節(jié)拍就完成了一個導向矢量的計算。系統(tǒng)時鐘為48MHz,因此該算法完成128組導向系數(shù)輸出的時間為3.771μs,遠小于系統(tǒng)要求的反應(yīng)時間。
由于上述算法中流水乘法器并非最優(yōu)計算模塊,且之后的截位運算也較為復(fù)雜,且只考慮了df0/c≤0.5的情況;完全可以采用延遲更小且計算資源更節(jié)省的流水累加器替換,而之后的截位運算也會因此變得簡單,且應(yīng)該同時將0.5<df0/c<1的情況考慮在內(nèi)(見圖3)。
圖3 定點實時優(yōu)化算法流程
因為CORDIC軟核支持的輸入相位區(qū)間除了[-π,π]以外還有[-1,1],也為了流水累加器截位的方便,所以在起始輸入的參數(shù)中可以去掉π因子變成2df0/c,然后只需在生成CORDIC1軟核的時候?qū)⑵?Phase Format參數(shù)從 Radians改為Scaled Radians,就可使用歸一化后的輸入相位,即[-1,1]。這里使用的流水累加器每次累加陣元間相移量2df0sinθ/c作為下一陣元的歸一化相位,就可算出第n個陣元的相位2df0sinθ(n-1)/c。因而該流水累加只需要3+128=131個時鐘節(jié)拍就可完成,而且只用FPGA中的邏輯資源就可代替前一種算法中乘法器所需的DSP48;同時考慮到0.5<df0/c<1的情況,輸入?yún)?shù)應(yīng)進一步去掉2因子變成df0/c,這樣才能滿足歸一化后的0Q15格式,而累加后的截位也不需分四種情況進行判斷,可左移一位(相當于補×2),優(yōu)化為取累加結(jié)果的[14,14,14,13∶1]位作為后面 CORDIC 核的 2Q13格式的輸入數(shù)據(jù),也減少了1拍延遲,只需1個時鐘節(jié)拍即可。相比使用流水乘法器的算法,一共節(jié)省了4拍延遲,并且擴大了系統(tǒng)可使用的載頻范圍。全局時鐘為48MHz,則總計177個時鐘節(jié)拍對應(yīng)的是3.688μs的延遲。
假設(shè)輸入?yún)?shù)取θ=-π/4rad,d=0.049m,c=3×108m/s,f0=3GHz,定點實時優(yōu)化算法在 Active-HDL中的仿真結(jié)果如圖4所示。同時在MATLAB下利用公式編寫程序浮點計算導向矢量,將兩種計算結(jié)果比較,可估算出定點實時優(yōu)化算法由于量化與截位帶來的誤差,如圖5所示,顯然計算誤差都在10-4數(shù)量級,滿足系統(tǒng)誤差的要求。
圖6 FPGA資源占用情況
使用Xilinx FPGA-xc5vsx95t進行布局布線,資源占用情況如圖6所示。
本文通過對幾種不同DBF導向矢量算法的仿真計算進行比較,在保證了系統(tǒng)精度和算法用時的前提下,得出了一種在FPGA中相對較快的定點實時算法,節(jié)約了資源,提高了運算效率和靈活度,對今后的工程實踐具有重大意義。
[1]張光義.相控陣雷達系統(tǒng)[M].北京:國防工業(yè)出版社,1994.
[2]Skolnik M.I.Radar handbook.Second edition[M].New York:McGraw-HillPublishing Company,1990.