高 嵩,胥劍濤
(成都理工大學(xué) 信息科學(xué)與技術(shù)學(xué)院(網(wǎng)絡(luò)安全學(xué)院、牛津布魯克斯學(xué)院),四川 成都 610059)
相控陣天線是相控陣?yán)走_(dá)的重要組成部分,其天線陣面上排列著許多天線陣元[1]。每一個(gè)天線陣元后都配置有移相器來改變陣元通道間的相位關(guān)系。在波束控制(下稱“波控”)系統(tǒng)的控制下,改變天線陣元通道之間的幅度和相位關(guān)系可以快速地改變天線波束的形狀以及波束的指向[2],波控系統(tǒng)的優(yōu)良與否是衡量相控陣性能的重要標(biāo)準(zhǔn)之一[3-4]。
對(duì)于要求安全快速布相的產(chǎn)品來說,能夠快速并行運(yùn)算的FPGA 芯片是設(shè)計(jì)波控系統(tǒng)最好的選擇[5]。但FPGA 存在難以實(shí)現(xiàn)浮點(diǎn)運(yùn)算的問題[6],對(duì)于波控算法中三角函數(shù)的計(jì)算很不方便,現(xiàn)FPGA 實(shí)現(xiàn)波控算法的方式通常有兩種:一是通過調(diào)用IP core CORDIC 計(jì)算的方法;二是通過查表的方法。以上兩種方法中,方法一在FPGA中實(shí)現(xiàn)比較困難,在調(diào)用CORDIC 運(yùn)算前,需要先將輸入角度轉(zhuǎn)換為16 bit 量化的相位值,且相位值需滿足θ∈[-π,π],并且輸出值的小數(shù)也難以直接代入公式計(jì)算,這種方法不僅浪費(fèi)資源而且耗時(shí)長(zhǎng)。而單一的查表法雖然結(jié)構(gòu)簡(jiǎn)單,工作穩(wěn)定,波束形成快速,但如若陣元數(shù)目過多或指向角精度要求過高,需要存儲(chǔ)的碼值太多,數(shù)據(jù)量太大,也難以實(shí)現(xiàn)在大型陣列高指向精度的場(chǎng)合[7]。張延曹等人使用直接查表法實(shí)現(xiàn)了對(duì)16 通道相控陣天線系統(tǒng)的控制[8]。但單一的查表法只對(duì)這種陣元數(shù)目少,指向精度不高的場(chǎng)合適用[9]。隨后郭立俊提出了一種查表法與實(shí)時(shí)計(jì)算相結(jié)合的方法,這種方法雖然規(guī)避了FPGA 難以實(shí)現(xiàn)浮點(diǎn)運(yùn)算的缺陷,但在設(shè)計(jì)中生成了多個(gè)ROM 表,增加了FPGA 資源占用率的同時(shí)也增加了系統(tǒng)功耗。航空航天產(chǎn)品對(duì)設(shè)備功耗要求很嚴(yán)格,增加設(shè)備的功耗等于降低了設(shè)備有效作戰(zhàn)時(shí)間[10]。
因此本文以8×8 矩形相控陣天線為控制對(duì)象,提出一種查表與FPGA 計(jì)算相結(jié)合的優(yōu)化型算法。由于三角函數(shù)的計(jì)算對(duì)FPGA 來說比較困難,因此有針對(duì)性地在MATLAB中生成方向角和俯仰角的三角函數(shù)樣本,并在FPGA 算法設(shè)計(jì)中利用三角函數(shù)的誘導(dǎo)公式,減少了ROM 表數(shù)量的同時(shí)也縮減了儲(chǔ)存空間。系統(tǒng)工作時(shí),F(xiàn)PGA 所需要做的僅僅是根據(jù)上位機(jī)信號(hào)查表取數(shù)據(jù)做有限的運(yùn)算,這種優(yōu)化型方法更節(jié)約資源,速度快而且誤差也相對(duì)小。
根據(jù)陣列天線理論,相鄰兩個(gè)陣元之間接收的信號(hào)存在由于路程差引起的相位差[11]:
式中:d 為兩個(gè)天線陣元之間的距離;λ 為信號(hào)的波長(zhǎng),θ 為波束方向與兩個(gè)天線陣元垂直平面之間的夾角[12]。反之,只需要改變陣內(nèi)相鄰陣元之間的相位差φ,就可以改變波束的最大指向角θ,即實(shí)現(xiàn)天線的波束掃描[13]。
矩形相控陣天線陣面坐標(biāo)如圖1 所示,陣面位于xoy平面,以方向角和俯仰角來表示目標(biāo)所在的方向,其中θ 為俯仰角,范圍為0°~90°,φ 為方向角,范圍為0°~360°。
圖1 相控陣天線陣面坐標(biāo)圖
圖2 為坐標(biāo)的xoy 平面,矩形天線陣面由M×N 個(gè)天線陣元組成,dx和dy分別是x 方向和y 方向的天線陣元間距。
圖2 天線xoy 平面圖
陣列天線中,相鄰兩陣元間的x 軸方向和y 軸方向的相位差分別為β′和α′[8]。以(m′,n′)陣元為參考陣元時(shí),(m,n)陣元相對(duì)于參考陣元的移相碼可由式(2)計(jì)算[14]:
其中:m=1,2,…,M-1;n=1,2,…,N-1。
其中λ=c/f,c 為 光速,f 為頻率。
圖3 為8×8 矩形相控陣天線的xoy 平面圖。
圖3 8×8 矩形天線陣面圖
以8×8 矩形相控陣天線為控制對(duì)象,簡(jiǎn)要分析波控算法的計(jì)算過程。以左下角點(diǎn)O 為坐標(biāo)原點(diǎn),以原點(diǎn)(0,0)作為式(2)的(m′,n′),其余通道陣元的移相碼都相對(duì)于O 點(diǎn)進(jìn)行運(yùn)算,可知:原點(diǎn)天線陣元O(0,0)=0·β′+0·α′;則天線陣元A(2,0)=2·β′+0·α′;B(0,2)=0·β′+2·α′;C(2,2)=2·β′+2·α′;顯然:C(2,2)=A(2,0)+B(0,2)。
在計(jì)算整個(gè)陣列時(shí),帶有三角函數(shù)的β′和α′可以通過查表和運(yùn)算得到,F(xiàn)PGA 只需要簡(jiǎn)單地計(jì)算出x 軸和y 軸上面的陣元移相碼,其余陣元均可通過對(duì)應(yīng)點(diǎn)相加得到。
根據(jù)天線陣面要求,對(duì)樣本生成和FPGA 算法進(jìn)行了設(shè)計(jì)優(yōu)化。在樣本生成前,分析式(3)、式(4)中含有2π可知其計(jì)算結(jié)果為弧度值,而要求的移相碼為角度值,因此需要進(jìn)行單位轉(zhuǎn)換;其次,移相角度范圍是0°~360°,而本設(shè)計(jì)采用的控制芯片為CETC13 所的NC-15359C-1418SD 和NC-15359C-1418SDM,兩支路,6 位數(shù)控移相,因此需要將360°量化為6 bit的移相碼,則1LSB=360/26=5.625°。具體單位轉(zhuǎn)化及量化過程如下:
單位轉(zhuǎn)化:由弧度轉(zhuǎn)角度公式“角度值1°=360/2π”可知,角度值公式如下[15]:
同理,
量化:由β′(量化值)=β′(角度)/1LSB,6 bit 量化值公式如下:
同理,
根據(jù)量化后的公式,MATLAB 樣本文件生成部分代碼如圖4 所示。
圖4 樣本生成MATLAB 部分代碼
以圖4 簡(jiǎn)要介紹采用MATLAB 生成三角函數(shù)樣本的流程,俯仰角θ 以步進(jìn)step 0.001 變化,為了減少FPGA計(jì)算時(shí)間和資源,將公式中的定值c、26一并乘入在樣本中,之后再將樣本值擴(kuò)大并四舍五入取整生成coe 文件,并存入FPGA的ROM1中。擴(kuò)大樣本值是由于FPGA實(shí)現(xiàn)小數(shù)乘法很困難,無論使用CORDIC 或者DSP48E計(jì)算均比較復(fù)雜,并且這兩種IP core 輸出的小數(shù)數(shù)據(jù)格式也難以直接帶入波控公式[8]。
同理把系統(tǒng)將輸入的方向角φ 也以步進(jìn)step 0.001變化,最后也以整數(shù)的形式生成正弦值和余弦值樣本存入ROM中。但此處存在一個(gè)問題,由于方向角φ的范圍為0°~360°,若正弦值和余弦值樣本都以步進(jìn)0.001 變化,ROM 表數(shù)據(jù)會(huì)達(dá)到720 000 個(gè),若指向角精度要求更高,需要存儲(chǔ)的碼值將會(huì)成倍增加。
針對(duì)此問題,本文提出的優(yōu)化算法部分代碼如圖5、圖6 所示。
圖5 優(yōu)化算法正弦部分代碼
圖6 優(yōu)化算法余弦部分代碼
通過三角函數(shù)的誘導(dǎo)公式可知,只需要生成第一象限的樣本值,便可以得到整個(gè)周期的三角函數(shù)值。通過優(yōu)化算法可以將正弦函數(shù)樣本和余弦函數(shù)樣本的數(shù)據(jù)量都縮減為1/4 并在查表時(shí)共用一個(gè)ROM 表,減少ROM 表數(shù)量的同時(shí)數(shù)據(jù)量也從優(yōu)化前的720 000 個(gè)縮減到90 000 個(gè),減少了FPGA 芯片的LUT 和BRAM 資源占用率,降低整個(gè)波控系統(tǒng)的功耗。
根據(jù)優(yōu)化型算法對(duì)算法模塊進(jìn)行了邏輯設(shè)計(jì),F(xiàn)PGA算法模塊邏輯設(shè)計(jì)框圖如圖7 所示。
圖7 FPGA 算法模塊設(shè)計(jì)框圖
算法模塊包括mul 模塊、div 模塊、add 模塊和spi 模塊。算法模塊的輸入為從上位機(jī)接收到俯仰角、方向角以及頻率等參數(shù)。mul 模塊中調(diào)用了Block Memory Generator ROM IP core 存儲(chǔ)三角函數(shù)值,mul 模塊的作用在于根據(jù)角度值進(jìn)行查表取值,以及做乘法運(yùn)算得到β′、α′和x 軸、y 軸上的基底值。div 模塊用于接收mul 模塊處理好的基底值x_part 和y_part,為數(shù)據(jù)進(jìn)行除法截位操作,還原在MATLAB中的擴(kuò)大操作并進(jìn)行四舍五入。add 模塊的輸入數(shù)據(jù)為x_div 和y_div,該模塊的主要功能是將還原后的基底值相加得到各個(gè)陣元通道的移相碼,在程序中例化add 模塊4 次,每一個(gè)模塊計(jì)算兩行通道的移相碼,并行計(jì)算4 個(gè)add 模塊,加快移相碼計(jì)算速度,在得到各通道移相碼后,根據(jù)數(shù)字移相器位數(shù)截位截取低6 bit 送入spi 模塊進(jìn)行spi 分發(fā)。T/R 組件和波控系統(tǒng)之間采用spi 接口連接,波控系統(tǒng)為主設(shè)備,T/R 組件作為從設(shè)備,spi 模塊在程序中例化8 次,產(chǎn)生8 路spi 時(shí)鐘,每路spi 時(shí)鐘同時(shí)驅(qū)動(dòng)4 路移相器,加快移相碼分發(fā)速度。
算法模塊具體工作流程如下:波控系統(tǒng)從上位機(jī)通過UART 接收到下發(fā)的俯仰角、方向角以及頻率值等參數(shù),收到參數(shù)后系統(tǒng)通過查表的方式獲得方向角和俯仰角的三角函數(shù)值,根據(jù)式(3)、式(4)做乘法運(yùn)算得到β′、α′,再根據(jù)式(2)分別乘上坐標(biāo)值0~7 計(jì)算出陣列中x軸和y 軸上的基底值,還原在MATLAB中進(jìn)行的擴(kuò)大操作并進(jìn)行四舍五入后,其他坐標(biāo)的值可通過x、y 軸上的基底值兩兩相加得到,當(dāng)所有天線陣元通道都計(jì)算完成后,根據(jù)數(shù)字移相器位數(shù)截位得到各個(gè)通道最終的移相碼,最后將移相碼通過spi 按照控制芯片順序分發(fā)給T/R組件即可實(shí)現(xiàn)整個(gè)天線陣面的移相控制。
FPGA 開發(fā)基于Vivado2016.4,利用Vivado 自帶的仿真工具Xsim 進(jìn)行仿真。設(shè)定俯仰角為45°,方向角為30°,頻率值為15.5 GHz。
仿真得到分發(fā)的移相碼結(jié)果和MATLAB 計(jì)算得到的理論移相碼如圖8、圖9 所示。
圖8 Xsim 仿真結(jié)果
圖9 MATLAB 計(jì)算結(jié)果
6 bit 數(shù)據(jù)out_xy_data_end 為波控系統(tǒng)最終通過spi分發(fā)給各天線通道的移相碼,為了方便分析比較,命名方式設(shè)置為可與MATLAB 矩陣坐標(biāo)對(duì)應(yīng)。例如:Xsim中移相碼out_78_data_end 為分發(fā)給陣面坐標(biāo)(6,7)的移相碼,對(duì)應(yīng)MATLAB 生成的矩陣第7 行第8 列,其結(jié)果為53。通過對(duì)比,Xsim 仿真結(jié)果與MATLAB 計(jì)算結(jié)果無誤差。
圖10 為算法模塊頂層仿真圖。
圖10 算法模塊仿真圖
波控系統(tǒng)為移相器提供了32 個(gè)獨(dú)立的移相器控制信號(hào)(spi_data),8 個(gè)時(shí)鐘信號(hào)(spi_clk)以及8 個(gè)鎖存信號(hào)(spi_ld),一路spi 時(shí)鐘同時(shí)驅(qū)動(dòng)控制四路移相器,節(jié)約了接口資源,加快了布相速度。如圖10 所示,在0.205 μs 時(shí),read_ov 為高,表示系統(tǒng)接收完畢下發(fā)的參數(shù);在2.325 μs時(shí)移相碼計(jì)算完成開始通過spi 分發(fā)移相碼;在6.345 μs時(shí),spi_ld 拉低,移相碼分發(fā)完成,完成了對(duì)天線陣面各陣元的控制。將仿真結(jié)果與類似文獻(xiàn)對(duì)比發(fā)現(xiàn)[10],本文所設(shè)計(jì)的算法模塊具有更快的移相碼計(jì)算速度以及分發(fā)速度。仿真結(jié)果證明,根據(jù)優(yōu)化型算法所設(shè)計(jì)的算法模塊在保證控制準(zhǔn)確性的同時(shí)也具有高效的計(jì)算速度和布相速度。
波控系統(tǒng)是相控陣?yán)走_(dá)重要系統(tǒng)之一,在規(guī)定時(shí)間內(nèi)完成移相碼計(jì)算和移相碼分發(fā),控制天線波束快速掃描是波控系統(tǒng)主要的功能[16]。本文運(yùn)用能快速并行運(yùn)算的FPGA芯片設(shè)計(jì)波控系統(tǒng),加快了移相碼計(jì)算速度和布相速度,采用查表與FPGA 計(jì)算相結(jié)合的優(yōu)化型波控算法,降低系統(tǒng)功耗的同時(shí)又解決了FPGA 難以實(shí)現(xiàn)浮點(diǎn)計(jì)算的問題。最終仿真結(jié)果證明了該方案的正確性和高效性,目前該方案已成功應(yīng)用于某KU 寬帶數(shù)據(jù)鏈相控陣天線系統(tǒng)中。