張承暢, 楊建鵬, 羅 元, 王富強(qiáng)
(重慶郵電大學(xué)光電工程學(xué)院,重慶 400065)
相關(guān)干涉儀無線電測(cè)向算法的FPGA實(shí)現(xiàn)中涉及大量的二進(jìn)制定點(diǎn)數(shù)矩陣運(yùn)算,增加了FPGA 設(shè)計(jì)的設(shè)計(jì)復(fù)雜度。在FPGA中廣泛使用帶有專用浮點(diǎn)單元(Float-Point Unit,F(xiàn)PU)的DSP來處理浮點(diǎn)數(shù),浮點(diǎn)數(shù)可以在更大的動(dòng)態(tài)范圍內(nèi)提供更高的分辨率,但是運(yùn)算速度慢,消耗邏輯資源較多;定點(diǎn)數(shù)計(jì)算相對(duì)消耗邏輯設(shè)計(jì)資源較少,運(yùn)算速度較快,但限制字長(zhǎng)的情況下精度較低,并且在HDL開發(fā)方式中不容易發(fā)現(xiàn)因?yàn)榻o定字長(zhǎng)和小數(shù)位不足造成溢出或誤差過大的問題[1]。另外FPGA 硬件驗(yàn)證時(shí),使用HDL 代碼開發(fā)的方法,在沒有完整硬件設(shè)備的條件下,無法提供復(fù)雜的波形輸入,難以發(fā)現(xiàn)算法中的錯(cuò)誤。
針對(duì)以上問題,本文使用軟硬件聯(lián)合仿真工具System Generator 來設(shè)計(jì)和實(shí)現(xiàn)相關(guān)干涉儀測(cè)向的FPGA算法,管理定點(diǎn)數(shù)并從Simulink 提供復(fù)雜的數(shù)字信號(hào)[1-3]。
平面波進(jìn)入天線陣時(shí),由于到達(dá)2 個(gè)天線單元的時(shí)間有先后,該時(shí)間差使兩天線單元的反應(yīng)波形產(chǎn)生一個(gè)射頻相位延遲或射頻相位差[4]。
圖1 所示為基本的相位延遲原理,波長(zhǎng)λ 的平面波以入射角θ入射到天線1 上,并在天線1 上產(chǎn)生感應(yīng)電壓U1ejωt,該平面波再經(jīng)過dcos θ(d稱為基線)這段距離的傳播到達(dá)天線2 并產(chǎn)生感應(yīng)電壓U2ejωt-τ,其相位延遲
圖1 相位差產(chǎn)生原理圖
因此,θ是τ的函數(shù)[5-6]。
圖2 所示為五元陣基線示意圖,考慮到天線遮擋和互耦效應(yīng),天線陣列中靠近的2 個(gè)陣元之間會(huì)相互影響。因此將五邊形的5 條對(duì)角線作為低頻段測(cè)向基線,這種方法與采用相鄰線作為測(cè)向基線相比,可使天線陣規(guī)模即各天線元之間的距離進(jìn)一步增大,減少了天線之間的互耦影響,并使測(cè)向精度得到改善。5 條基線代表的天線對(duì)分別為1-3,2-4,3-5,4-1,5-2。在測(cè)試高頻信號(hào)時(shí),為了防止相位模糊,基線代表的天線對(duì)切換為1-2,2-3,3-4,4-5,5-1,即采取短基線。這些組合的相位差信息稱為標(biāo)準(zhǔn)樣本[7-8]。
圖2 五元圓陣基線示意圖
由式(1)可推導(dǎo)出各基線的陣元之間的相位差[9]
式中:M為測(cè)向天線圓陣的陣元個(gè)數(shù);R為圓陣的半徑;λ為入射電磁波信號(hào)的波長(zhǎng);m、n分別為陣元。將5 組相位差組合為一個(gè)標(biāo)準(zhǔn)樣本向量
所有角度的標(biāo)準(zhǔn)樣本向量的組合即為標(biāo)準(zhǔn)樣本庫(kù)。待測(cè)來波信號(hào)從某一方向入射到天線陣列時(shí),選取與建立樣本庫(kù)時(shí)同樣的組合方式,以各基線的兩天線為1 次雙通道輸入,測(cè)得兩通道之間的相位差。5個(gè)基線的相位差組合為1 個(gè)實(shí)測(cè)樣本向量
得到待測(cè)真實(shí)入射信號(hào)的實(shí)測(cè)樣本向量后,在標(biāo)準(zhǔn)樣本庫(kù)的各角度對(duì)應(yīng)的標(biāo)準(zhǔn)相位差樣本中進(jìn)行搜索,可以找到一組同待測(cè)向量相似性最高的樣本向量,該樣本向量對(duì)應(yīng)的入射角度值即為實(shí)測(cè)信號(hào)的到達(dá)方向估計(jì)值[10-11]。最相似樣本的搜索方式將直接影響測(cè)向的準(zhǔn)確性,搜索方式一般為二者的相關(guān)匹配函數(shù)計(jì)算,用來評(píng)價(jià)待測(cè)相位差向量與標(biāo)準(zhǔn)相位差向量的相似性函數(shù)為代價(jià)函數(shù),即
圖3 所示為測(cè)向計(jì)算過程及輸入輸出的System Generator建模,其中輸入和參數(shù)通過gateway in 模塊二進(jìn)制量化以及轉(zhuǎn)化為在FPGA 中的數(shù)據(jù),經(jīng)過運(yùn)算后通過gateway out模塊回傳并轉(zhuǎn)化為Simulink軟件數(shù)據(jù)。
圖3 System Generator下相關(guān)干涉儀設(shè)計(jì)模型
將Simulink子系統(tǒng)添加封裝(Mask),以便使子系統(tǒng)擁有參數(shù)對(duì)話框、模塊說明、參數(shù)提示和幫助文本。在System Generator測(cè)向相位差矩陣運(yùn)算系統(tǒng)建模中,起著自頂向下管理著子系統(tǒng)內(nèi)模塊特定參數(shù)或多個(gè)模塊共同參數(shù)的作用,例如定點(diǎn)數(shù)字長(zhǎng)、定點(diǎn)數(shù)二進(jìn)制小數(shù)位數(shù)、寄存周期以及CORDIC算法的迭代次數(shù)等。
坐標(biāo)旋轉(zhuǎn)數(shù)字計(jì)算機(jī)(Coordinate Rotation Digital Computer,CORDIC)算法在數(shù)字信號(hào)處理的硬件系統(tǒng)中有著廣泛的應(yīng)用,通過迭代的坐標(biāo)系旋轉(zhuǎn)來逼近最終結(jié)果。通訊領(lǐng)域以及矩陣處理的三角函數(shù)、反三角函數(shù)、對(duì)數(shù)、平方根等計(jì)算都離不開CORDIC算法[12]。
本文設(shè)計(jì)的CORDIC算法模型以求取定點(diǎn)數(shù)的余弦函數(shù),在旋轉(zhuǎn)模式下使用并行結(jié)構(gòu)的迭代方法實(shí)現(xiàn),并增加流水線以改善性能。由于CORDIC 算法僅對(duì)-π/2 ~π/2 范圍內(nèi)的輸入角度z收斂,所以必須對(duì)范圍外的輸入角度進(jìn)行旋轉(zhuǎn)與映射,如圖4 所示為CORDIC模塊模型設(shè)計(jì)。首先是周期變換,在輸入前經(jīng)過加減運(yùn)算后的輸入角度范圍為-3π ~3π,經(jīng)過周期變換等價(jià)于-π ~π;其次是角度旋轉(zhuǎn),對(duì)于第2 象限的輸入角度,通過減去π/2 映射到第1 象限;對(duì)于第3 象限的輸入角度,通過加上π/2 映射到第4 象限,這就滿足了CORDIC算法的收斂要求。角度旋轉(zhuǎn)同時(shí)又造成了計(jì)算三角函數(shù)結(jié)果時(shí),與原本三角函數(shù)值相比產(chǎn)生了π/2 的相位差,所以應(yīng)當(dāng)應(yīng)用以下三角恒等式進(jìn)行校正[13-15]:
圖4 CORDIC模塊的模型設(shè)計(jì)
若輸入角度z>π/2,則有:
若輸入角度z<π/2,則有:
System Generator建模中,相位差系數(shù)的取值范圍為-2π ~2π,設(shè)定其定點(diǎn)數(shù)字長(zhǎng)m=18,二進(jìn)制小數(shù)位數(shù)n=14,符號(hào)位占用首位,定點(diǎn)數(shù)格式表示為SFIX_18_14。以0,5,10,…,360 角度向量為標(biāo)準(zhǔn)角,建立相位差標(biāo)準(zhǔn)庫(kù)。在System Generator 中進(jìn)行建立標(biāo)準(zhǔn)庫(kù)的定點(diǎn)數(shù)仿真,得到大小為5 ×73 的定點(diǎn)數(shù)矩陣,其中每一行向量,都代表對(duì)應(yīng)一條基線的相位差系數(shù)理論值,每一列向量,都代表對(duì)應(yīng)標(biāo)準(zhǔn)角下5 條基線的相位差系數(shù)理論值。
將System Generator建模仿真取得的樣本庫(kù)行向量,與理想化的樣本庫(kù)行向量相減,求取誤差,如圖5所示。由圖可知,誤差以0 為中心,準(zhǔn)確度較好,定點(diǎn)數(shù)計(jì)算的誤差不超過0.01,與相位差系數(shù)的取值范圍-2π ~2π相比可忽略不計(jì)。
圖5 樣本庫(kù)定點(diǎn)數(shù)仿真誤差
在Simulink平臺(tái)上,設(shè)定基帶信號(hào)頻率100 Hz,載波頻率100 MHz,構(gòu)造調(diào)制波形,并在仿真中加入了頻率偏移。根據(jù)調(diào)制波形到達(dá)5 根天線的距離不同,及天線陣列的形狀,計(jì)算信號(hào)到達(dá)5 根天線的延時(shí)。以此時(shí)延構(gòu)造5 信道初相不同的數(shù)字信號(hào)作為測(cè)向系統(tǒng)的輸入,計(jì)算5 條基線兩兩之間相位差,得到5 ×1 向量。將此向量與樣本庫(kù)5 ×73 矩陣的每一列向量對(duì)比,計(jì)算相關(guān)匹配函數(shù),得到1 ×73 向量,結(jié)果如圖6所示。相關(guān)匹配函數(shù)越大,代表該實(shí)際相位差與該標(biāo)準(zhǔn)角的理論相位差系數(shù)越接近。
圖6 相關(guān)匹配函數(shù)定點(diǎn)數(shù)仿真結(jié)果
為降低硬件資源消耗,采用的標(biāo)準(zhǔn)庫(kù)以5°為間隔建表,搜索得到的角度只是粗略估計(jì)。為了提高精度,進(jìn)一步提取相關(guān)匹配函數(shù)最大值的相鄰2 個(gè)值,作插值運(yùn)算,得到角度計(jì)算值。輸入按時(shí)間變化的角度值產(chǎn)生的相位輸入,System Generator輸出格式為時(shí)間序列,時(shí)間單位為5 ns,即指定Vivado 的時(shí)鐘頻率和采樣頻率200 MHz。
將測(cè)向功能的定點(diǎn)數(shù)仿真的結(jié)果與理論角度值的誤差,取絕對(duì)值,仿真結(jié)果如圖7 所示,平均誤差為1.167°。
圖7 角度仿真誤差
仿真成功后,將System Generator設(shè)計(jì)生成Vivado工程,F(xiàn)PGA 仿真結(jié)果如圖8 所示。進(jìn)一步生成比特流文件,通過JTAG連接FPGA與上位機(jī),進(jìn)行軟硬件協(xié)同運(yùn)行,在Simulink 中實(shí)時(shí)產(chǎn)生數(shù)字信號(hào)代替實(shí)際信號(hào),通過AXI總線提供給FPGA硬件,F(xiàn)PGA計(jì)算結(jié)果再通過AXI總線采樣將數(shù)據(jù)傳輸至上位機(jī)。FPGA測(cè)試的角度誤差如圖9 所示,平均誤差為2.609°。
圖8 Vivado仿真界面
圖9 FPGA測(cè)試角度誤差
本文設(shè)計(jì)并完成了相關(guān)干涉儀測(cè)向系統(tǒng)FPGA算法的建模,使用Simulink可視化FPGA進(jìn)行了仿真,進(jìn)一步生成Vivado 工程并完成FPGA 的軟硬件協(xié)同仿真運(yùn)行實(shí)驗(yàn)。結(jié)果表明:定點(diǎn)數(shù)仿真的平均誤差為1.167°;FPGA測(cè)試的平均誤差為2.609°,即定點(diǎn)數(shù)矩陣的FPGA設(shè)計(jì)方法,其仿真結(jié)果與實(shí)測(cè)數(shù)據(jù)接近。該流程為數(shù)字信號(hào)系統(tǒng)提供可視化的數(shù)據(jù)流和定點(diǎn)數(shù)管理,且可在測(cè)向項(xiàng)目場(chǎng)地測(cè)試前提供基于Simulink的復(fù)雜輸入信號(hào)用于提前測(cè)試,對(duì)于FPGA 工程的流程優(yōu)化的有一定的技術(shù)參考價(jià)值。