張道成
(91404部隊 秦皇島 066200)
從20世紀中葉開始,隨著超大規模數字集成電路的發展和計算機技術的廣泛應有,數字信號處理越來越多的被應用到了現代工業體系中[1],如通信、雷達等領域,尤其是在航天領域,導航衛星接收信號的實時處理[2~7],不僅需要簡單的實時處理,更加需要高速實時處理。
目前,市場上主要是三種信號處理器[8],DSP、ARM、FPGA,而FPGA主要存在功耗低、設計靈活并且工作頻率高的優點,相比較而言,開發起來更加簡單,而且穩定性高,可以很好地滿足導航衛星信號實施處理高速、高時效性及大數據的要求[9],故本文主要采取FPGA進行研究。
FPGA的開發,主要是使用電子設計軟件和編程工具對芯片進行設計實現的過程,根據實際需求和經驗,本文進行了以下的設計實現的過程。
FPGA實現與驗證的主要設計流程如下[10]:1)編寫VHDL代碼,遵照至頂向下的原則,按照Matlab定點仿真的思路編寫。
2)編好代碼后,用Modelsim仿真,來驗證程序流程是否正確,時序是否與設計時一致,基本功能是否實現。
3)把FPGA計算出的數據導出,與Matlab計算結果進行比較;需要注意的是,FPGA與Matlab輸入的數據要完全一致,Matlab中的運算要用定點,保證與FPGA中的運算完全一致。如果不一致,將返回代碼,查找原因。
4)FPGA與Matlab計算的結果一致后,將程序燒到板卡上,實際測試;在實際運行中,用Chipscope觀察實際運行的結果,并與Matlab仿真的結果進行比較。如果要與Matlab程序進行比對,就要保證兩者的輸入一致,這就要求FPGA程序在實際運行時要收集一段數據,作為Matlab數據源,然后比對結果。
5)總結測試結果,做出最后結論。具體算法如圖1。

圖1 FPGA實現與驗證算法
根據導航接收機抗干擾的不同的算法類型[11],本文的濾波器采用時域NLMS算法[12],需要根據干擾的變化,及時更新系數。但每進一個數據都更新一次系數的計算量太大,而且干擾不可能變化那么快,所以要找到一個合適的時間間隔來更新系數。初步用接收機給出的10ms中斷作為標志位來對系數更新。由于抗干擾后的數據要進入接收機用于定位,所以出來的數據要保證連續性,如果有延時需要保證每個數據延時的一樣。具體方法如圖2:

圖2 系數更新示意圖
接收機發出10ms中斷,fifo開始接收用于更新系數的信號源,接收完成后,開關閉合,停止接收;當系數完全更新后一次性送到抗干擾算法模塊,抗干擾模塊將用新系數來對信號源消除干擾。

圖3 Modelsim仿真系數更新
在Matlab中計算出的濾波器系數都是小于1的小數,如果直接取整就會造成系數全是0或1的結果,濾波器將會失去作用。所以在這里考慮首先將濾波系數擴大,然后取整計算,最后在輸出結果縮小相應的倍數。
根據算法定義,

FPGA中規定一個乘法器是18*18,如果數據位數超出18位,一次乘法就需要使用兩個乘法器。從式(2)中可以看出,將步長擴大128倍,實際上也是將系數h(k)擴大128倍,為了節省乘法器,就將系數的擴大倍數定位1024倍。這樣系數的位數就是1024*128位,輸入數據也將擴大1024*128位,最后在濾波器輸出結果上將數據縮小1024*128倍,數據仍然是8bit。程序設計基本流程如圖4所示。

圖4 抗干擾計算流程
驗證FPGA程序功能是否正確,主要分為兩個部分,一是Modelsim仿真結果與Matlab仿真結果比對;二是Chipscope實時觀測濾波器系數計算是否正確。這兩項都正確后說明FPGA程序能夠正常實現抗干擾功能。
將FPGA程序完全按照Matlab仿真程序編寫,如果FPGA程序編寫正確,那么FPGA程序應與Matlab程序輸出結果一致。將輸入源設為相同,觀測FPGA仿真結果,并與Matlab結果比對。由圖6所示,FPGA計算濾波器系數結果與Matlab計算結果完全一致。

圖5 FPGA計算系數(左)Matlab計算系數(右)

圖6 FPGA計算結果與Matlab計算結果比對
將程序下載到板卡上,Chipscope捕捉FPGA中計算出的系數、輸入中頻數據以及濾波器的輸出結果。在Matlab中進行數據轉換,可以看到濾波器的頻率響應及抗干擾效果。具體見圖7、圖8。
1)導航信號:由導航模擬源產生模擬信號,可根據需要調整信號功率;

圖7 FPGA計算的濾波器頻率響應

圖8 FPGA抗干擾前后信號頻譜對比
2)干擾信號:干擾由4438C模擬信號源產生。

表1 單載波干擾測試結果
從表1中可以看出,對于單載波干擾,大約可以抵抗干信比54dB的干擾,干擾頻率在中心頻點±100KHz與±1MHz的差別并不是很大,并沒有因為靠近中心頻點性能會變差,這也是插值濾波器的特點。
1)實際AD量化位數減少,見圖9。

圖9 FPGA采集信號幅度
由于AGC的作用,干擾增大會導致壓縮信號幅度,當干擾達到一定功率時,信號將被完全壓制。所以當量化位數少時,所能容納的干擾功率也就隨之減小。
2)實際干擾與理想干擾差別,見圖10。

圖10 實采干擾信號頻譜
由于硬件原因,在中頻輸出端干擾會出現二次諧波。當干擾為-70dBm時,由圖10所示,橢圓圈區域為二次諧波,這會造成載噪比的損失。
隨著信號處理器的不斷發展,利用FPGA實現信號的高速、髙時效處理,已經成為一種趨勢,本文在導航接收機抗干擾時域濾波的基礎上,編寫FPGA程序,并在Modelsim中仿真,與Matlab定點仿真程序進行比較,確定FPGA程序輸出與Maltab程序輸出完全一致,保證FPGA程序功能正確;并在接收機中實際調試,驗證FPGA程序。