周成英,李 睿,張 櫓,馮國平,王翠蓮,蔣 帥
(1.北京空間飛行器總體設(shè)計部,北京 100094;2.中國空間技術(shù)研究院,北京 100094)
相控陣天線是由許多輻射單元排成陣列形式構(gòu)成的天線,利用計算及控制移相器改變天線孔徑上的相位分布來實現(xiàn)波束在空間掃描[1],具有無物理運動的轉(zhuǎn)向、高的二維掃描靈活性以及極準確的波束指向、可靠性高、抗干擾能力強等特點[2]。相控陣技術(shù)目前已廣泛應(yīng)用于搜索、火控、制導(dǎo)等各種戰(zhàn)術(shù)雷達和著陸、氣象等民用雷達、通信衛(wèi)星、電子對抗等領(lǐng)域[3-5]。
在相控陣天線中,波束控制技術(shù)作為關(guān)鍵技術(shù)之一,直接影響系統(tǒng)效能的發(fā)揮[6],尤其是支持跳波束多區(qū)域時分通信模式[7]的多波束相控陣天線,一次波束駐留時間最小50 us,即要求波束控制器在50 us內(nèi)完成256單元移相碼計算和將移相碼送到對應(yīng)的移相器上。波束控制器性能好壞直接影響整個相控陣系統(tǒng)的整體性能和技術(shù)指標。
256單元陣面規(guī)模決定了移相碼計算方法需使用集中式運算法。集中式運算法多采用查表預(yù)處理法和軟件計算法[8]。查表法將每個波位下所有移相碼存于存儲器中,工作時通過查表方式得到移相碼[9]。由于資源需求較大,存儲器需選用大容量NAND FLASH作為外部存儲器[10]??蛇x用的NAND FLASH在讀取數(shù)據(jù)時等待時間一般為25 us-30 us,甚至更高。將移相碼送到對應(yīng)移相器上需要20 us時間。在50 us內(nèi)可用于從外部存儲器讀取數(shù)據(jù)的時間很短,甚至沒有讀取數(shù)據(jù)時間。軟件計算法由DSP或單片機等計算移相碼,然后傳送至FPGA,F(xiàn)PGA將移相碼送到對應(yīng)的移相器。以運算速度較快的DSP為例,DSP計算256單元移相碼時間需要10 ms左右(頻率120 MHz),僅計算時間就是波束駐留時間的200倍。
本文針對移相碼快速計算問題,提出了一種基于FPGA的實時計算方法[11],該方法通過對算法進行分解和優(yōu)化,只需要3個時鐘周期即可計算出一個單元的移相碼,滿陣256單元計算時間約為26 us(時鐘30 MHz)。仿真結(jié)果表明,該方法計算速度快,實現(xiàn)了波束掃描快速響應(yīng)性能。
相控陣天線是由大量的輻射單元組成的陣列(正方形、三角形、稀疏矩陣等),輻射單元幾百、幾千,甚至上萬[12],輻射單元由數(shù)字移相器控制,工作時通過根據(jù)指向角度計算并配置相應(yīng)的移相碼,達到控制天線指向的目的[13]。
如圖1所示,設(shè)定天線共有m*n個天線單元,單元間距分別為dx和dy,λ為波長,θ和φ分別為對應(yīng)目標的俯仰角和方位角,m代表列,n代表行。
圖1 相控陣天線陣面布置圖
移相碼Ψ計算公式如下式所示:
dy(n-8.5)sinθsinφ}
(1)
由(1)計算出Ψ后,再按公式2進行操作。
D(m,n)=dec2bin{round[mod(Ψ,360)/5.625]}
(2)
式(2)中,mod(Ψ,360)代表將中間結(jié)果Ψ歸一化到(0-360)之間,5.625為相移,相移值選取與精度有關(guān)。
計算結(jié)果與初始校正值累加,得到最終的移相碼。
移相碼計算有sinθ、cosφ、sinφ正余弦求解、有小數(shù)加減法和乘除法計算、歸一化處理,算法比較復(fù)雜。對于不同的方位角、俯仰角,計算出輻射單元移相碼,并將移相碼送到移相器中,才能保證相控陣雷達的靈活性和多樣性,快速準確計算移相碼是波束控制器的難點。
為了快速而準確計算移相碼,設(shè)計了以FPGA為核心的波束控制器,F(xiàn)PGA進行算法運算和時序控制[14],省去DSP處理芯片,簡化了硬件電路設(shè)計。組成框圖如圖2所示。
圖2 波束控制器組成框圖
波束控制器從數(shù)管計算機通過RS422串口接收到控制命令后,根據(jù)輸入角度計算出相對應(yīng)的移相碼,同時從外部存儲器中讀出相位校正值,將兩者相加并發(fā)送給移相器,移相器在控制信號的作用下,偏移到指定相位,從而達到改變波束的目的。
波束控制器硬件電路主要包括FPGA、電源管理、接口驅(qū)動電路、存儲器、時鐘電路。各部分電路作用如下:
1)FPGA為核心器件,負責(zé)接收并解析數(shù)管計算機發(fā)送的控制指令、管理外部存儲器單元、計算移相碼、給組件發(fā)送移相碼等控制指令;
2)接口驅(qū)動電路實現(xiàn)信號的電平轉(zhuǎn)換和隔離;
3)時鐘電路為FPGA提供所需時鐘信號;
4)存儲器中存儲相控陣天線初始相位校正值。
為滿足快速計算需求,本設(shè)計對算法進行分解優(yōu)化,采取面積換速度的思想,每一步設(shè)計都采用時間需求最小的設(shè)計方法,計算流程圖如圖3所示。首先,需要求解出公共因子三角函數(shù)值,并進行三角函數(shù)值乘法運算。本設(shè)計采用cordic IP核計算三角函數(shù)值[15],需要1個時鐘周期,然后對數(shù)據(jù)進行鎖存,需要1個時鐘周期,三角函數(shù)乘法運算需要1個時鐘周期,共3個時鐘周期。完成三角函數(shù)值乘法運算后,需要分別計算每個單元的移相碼,該計算過程包含3個步驟,分別是小數(shù)乘加運算、歸一化處理和除法計算,每個步驟只需要1個時鐘周期即可完成。因此,僅需要3個時鐘周期即可完成一個單元的移相碼計算。
圖3 算法流程圖
根據(jù)本設(shè)計方案,全部的計算過程共計需要3個時鐘周期完成公共因子三角函數(shù)值計算和三角函數(shù)值乘法運算,需要256×3個時鐘周期完成全部256個單元的移相碼計算,總計需要3+256×3=771個時鐘周期。在本設(shè)計中采用30 MHz系統(tǒng)時鐘,771個時鐘周期所占時間為771÷30=25.7 us。
計算流程圖如下:
(1)三角函數(shù)值計算
當FPGA接收到指向角輸入時,先進行指向角的三角函數(shù)運算。三角函數(shù)運算采用FPGA的cordic IP核進行計算,1個時鐘周期就可得出三角函數(shù)值。
(2)三角函數(shù)值乘法
得到三角函數(shù)值后,進行sinθ與cosφ,sinθ與sinφ乘積運算。采用乘法器核進行有符號小數(shù)乘法運算。
(3)小數(shù)乘加運算
接下來按照公式(1)進行移相碼計算,公式可拆分成
(3)
(4)
(4)歸一化處理
計算的結(jié)果要歸一化到0-360之間。如計算結(jié)果為正數(shù),與360比較,大于360,則減去360,繼續(xù)與360進行比較,直到數(shù)據(jù)在0-360之間;如計算結(jié)果為負數(shù),則加上360,比較數(shù)據(jù)是否在0-360之間,不在,則繼續(xù)加360,直到數(shù)據(jù)在0-360之間。采取傳統(tǒng)的比較、加減循環(huán)操作,將數(shù)據(jù)歸一化到0-360之間,每次數(shù)據(jù)歸一化時間不定。如遇到一個很大的數(shù),要多個時鐘周期才能完成歸一化。例如計算結(jié)果為3500,則需要9次比較和減法才能完成數(shù)據(jù)歸一化。按平均1個數(shù)據(jù)9個周期計算,系統(tǒng)時鐘30 MHz,僅歸一化256個數(shù)據(jù)就需要76.7 us。為避免多次比較和加減運算,本設(shè)計采用分區(qū)比較方法,以360為一個區(qū)間大小,以360的整數(shù)倍值作為區(qū)間邊界,劃分多個數(shù)據(jù)區(qū)間,數(shù)據(jù)分區(qū)包含所有可能計算出來的數(shù)據(jù)。將計算出來的數(shù)據(jù)與數(shù)據(jù)分區(qū)邊界值進行比較,如果計算出來的數(shù)據(jù)為負值,加上左邊界值的絕對值;如果為正值,則減去左邊界值,加或減后的數(shù)據(jù)就在0-360之間。與數(shù)據(jù)分區(qū)左邊界值絕對值相加或左邊界值相減,相當于進行了多次比較和加減,所以無論數(shù)據(jù)多大,都只需要1次比較和加減即可完成歸一化處理。例如對于特定的天線,公式(1)中的參數(shù)都是已知的,根據(jù)這些參數(shù)可以估算出由公式(1)計算的結(jié)果最大值和最小值。假設(shè)估算出最大值為5330,最小值為-5330。我們將數(shù)據(jù)分成[-5400,-5040)、[-5040,-4680)、…、[-3600,-3240)、 … [-360,0)、[0,360)、[360,720)、…、[3240,3600)、…、[4680,5040) 、[5040,5400]等數(shù)據(jù)分區(qū),這些數(shù)據(jù)區(qū)間大小都是360,區(qū)間邊界值是360的-15、-14、-13、…、-10、-9、…、-1、0、1、2、…、9、10、…、13、14、15倍。同樣計算結(jié)果是3500,將3500與區(qū)間邊界-5400、-5040、-4680、…、3240、3600、…、4680、5040、5400等比較,3500大于3240,小于3600,3500在[3240,3600)數(shù)據(jù)區(qū)間內(nèi),3500為正值,用3500減去數(shù)據(jù)區(qū)間的左邊界值3240,就相當于做了9次與360的比較和減法,比較和減法在FPGA內(nèi)只需要1個時鐘周期就能實現(xiàn),即1個時鐘周期得出歸一化結(jié)果為260。同樣系統(tǒng)時鐘30MHz,歸一化256個數(shù)據(jù)只需要8.533 us。
(5)除法計算除法計算是歸一化的數(shù)據(jù)除以相移5.625,然后四舍五入得出相位數(shù)據(jù),傳統(tǒng)的移位比較減方法,算出一個數(shù)據(jù)需要多個時鐘周期。本設(shè)計依然采用分區(qū)比較的方法,將歸一化的數(shù)據(jù)與事先計算好的數(shù)據(jù)區(qū)間進行比較,一個時鐘周期即可得出移相碼。如計算結(jié)果為260,比較數(shù)據(jù)在261.5625與267.1875之間,得出移相碼為101111。
為方便運算和保證精度需求,本設(shè)計中小數(shù)運算采用擴大為整數(shù)的方式[16],擴大倍數(shù)取決于所需要的計算精度。
MATLAB計算值如圖4所示,其中Theta為8度俯仰角,Phi為44.8度方位角,F(xiàn)req為29.7 GHz頻率,A為輸出的移相碼。
圖4 MATLAB仿真結(jié)果
ISE軟件仿真結(jié)果如圖5所示,激勵文件中phase_inthe代表theta,phase_inphi代表phi,單位均為弧度。輸入角度采用16位表示,為定點補碼2QN格式,0X0478轉(zhuǎn)換成二進制“0000010001111000”,按照IP核定義相當于000.0010001111000,小數(shù)后第三位為1,代表2-3,以此類推,所有為1的位代表的值之和,就是所表示的值,即2-3+2-7+2-8+2-9+2-10之和為0.1396484375弧度,轉(zhuǎn)換成角度是8度,同理0X1900轉(zhuǎn)換成角度是44.8度。29.7GHz頻率體現(xiàn)在查找表里。通過圖4和圖5進行比較,F(xiàn)PGA計算出來的值與MATLAB計算出來的值是相同的。由此可見,此方案計算出了正確的移相碼。從圖5中可以看出,在復(fù)位后,經(jīng)過3個時鐘周期的三角函數(shù)求解和乘積運算后,再經(jīng)過3個時鐘周期計算,共計6個周期后得出第一個移相碼54。其后每經(jīng)過3個周期,依次計算出移相碼63、7、15、24等,每個移相碼計算周期僅需要3個時鐘周期,完全滿足快速計算需求。
圖5 FPGA仿真結(jié)果
波束掃描響應(yīng)時間是相控陣天線的重要性能指標,相控陣各種先進的工作方式對波束掃描的響應(yīng)時間提出了越來越高的要求。采用本方案設(shè)計的波束控制器,硬件電路簡單,軟件上對算法進行分解和優(yōu)化,計算一個單元移相碼只需要3個時鐘周期,滿陣256單元移相碼計算時間縮短至26 us(時鐘30 MHz),具有非常短的波束響應(yīng)時間,提高了波束掃描的速度和靈活性。