湯易,孫向陽
(電子科技大學電子科學與工程學院,四川成都,611731)
在微弱信號的采集和處理中,鎖相放大技術一直是一種行之有效的方法,該技術是利用相關的原理設計的一種同步相干檢測,具有通頻帶窄,中心頻率穩(wěn)定,品質因數高,信噪比高等特點,在微弱信號的處理方面顯示出了非常好的性能,因此在各個領域得到了廣泛的應用。
在采集微弱信號的過程中,常常會有由電磁輻射或傳輸渠道等各種原因產生的噪聲,設信號X(t)是伴有噪聲的周期信號,即:
式(1)中X(t)為輸入信號,由有用信號S(t)和隨機噪聲N(t)組成,有用信號的幅值為A,角頻率為ω,相位為φ;參考正弦信號為:
其中τ是參考正弦信號的相位,則兩者的相關函數為:
由于參考信號Y(t)與隨機噪聲N(t)互不相關,所以RNY(τ)=0 ,于是就有:
從而得出RXY(τ) 正比于有用信號的幅值的結論。
由以上分析可知,利用參考信號與有用信號相關的同時與噪聲互不相關這一點,可以通過相關運算提高信噪比。
本數字鎖相放大器主要用于采集接收微弱信號系統(tǒng)中,整個系統(tǒng)主要分為兩個部分:模擬部分和數字部分,數字部分基于FPGA開發(fā),最終在硬件中進行實現,具體結構如圖1所示。
圖1 系統(tǒng)總體框圖
圖1中的FPGA模塊即為數字鎖相放大器部分,主要由移相器,相關檢測,低通濾波和矢量運算等部分構成。在接收到前級AD模塊的數字信號后,鎖相放大器會將信號進行移相,移相后的數據和接收數據分別于參考信號進行乘法操作,經過低通濾波后,兩路信號的比值反映了原始信號對應時刻的相位,而兩者的模值反映了原始信號的幅度,從而實現了將小信號從噪聲中提取出來的功能。
在整個數字部分中,功能主要在FPGA內實現,這需要考慮到硬件系統(tǒng)與理論上的不同。移相器主要參考工作頻率,按照參考信號的頻率將接收到的信號延遲半個周期,從而達到移相90°的功能;相關檢測部分主要實現的是參考信號與接收信號的相乘,利用FPGA內自帶的乘法器模塊進行實現,以便滿足時序與資源上的平衡;低通濾波器模塊實現濾波,在硬件中實現需要大量的乘法器與加法器,考慮到芯片內部乘法器資源的有限性,這里采用了分布式算法,避免了乘法器的使用。
分布式算法由于用LUT和移位器代替乘法器,有效地節(jié)省了硬件資源,因此被廣泛運用于FPGA的設計中,對于濾波器的計算:
其中,x(n)可以表示為:
式(6)中,xb(n)代表x(n)的第b位,B為信號的位寬,所以有:
式(7)中M為濾波器長度,上式中的w(n)xb(n)中的xb(n)為輸入信號的第b位,只有0和1兩種狀態(tài),因此分布式算法將w(n)的所有累加組合預先存儲在LUT中,通過對二進制位地址 [xb(0),xb(1), … ,xb(M- 1 )]尋址提取對應系數組合,然后由移位器和加法器進行實現移位求和,從而變相實現乘法累加運算。
上述即為串行結構的分布式算法,基于分布式算法的數字濾波器結構框圖如圖2所示,由M位移位寄存器、LUT查找表和加減運算部分組成,LUT查找表的地址由每一個輸入信號的同一位決定。
本文中我們采用FIR濾波器進行濾波,借助Matlab中濾波器設計工具fdatool進行設計。濾波器的參數如下:通帶從5kHz到35kHz,濾波器的階數為127階。阻帶容許最小衰減為50dB,根據這些設計指標,可以通過軟件生成濾波器系數,同時繪制的幅頻響應,幅頻特性曲線如圖3所示。
圖2 數字濾波器結構框圖
圖3 理想幅頻響應
圖4 不同位寬幅頻響應對比
Matlab生成的濾波器系數均為浮點數,而FPGA中只能進行整型運算,因此需要對濾波器系數進行量化。濾波器系數的量化位數越大,濾波器的幅頻響應與原始濾波器幅頻響應擬合程度越好,但是需要消耗更多硬件資源;反之,濾波器系數量化位數越小,消耗硬件資源越少,但其濾波效果越差,因此需要平衡硬件資源的使用和精度的選擇。我們選擇了三種位寬,分別是14位,12位,8位,在Matlab中通過對比不同位寬下的幅頻特性曲線與原始濾波器的幅頻特性,選取最佳系數量化位寬。圖4是不同位寬的幅頻特性仿真圖,從圖4可以看出12bit與14bit位寬量化的幅頻特性曲線和原本的幅頻特性曲線擬合程度較好,而當采用8bit位寬量化時,幅頻特性曲線失真較大。本著節(jié)約資源的想法我們選擇12bit位寬量化。
最后我們將量化之后的系數導入FPGA中,通過分布式算法的思想完成整個數字濾波器,由于階數較高,127階共有64個不同的濾波器系數,若全部在一個LUT里查找需要存儲264個數,因此本文將64個系數分成8組,每組系數中有8個,這樣每個LUT只用存儲28個數,在硬件資源上大大優(yōu)化。數據每輸入一次便會進行17次查找操作、16次移位操作以及1次加法運算,由于對數據進行了移位累加,因此數據的位數會被擴展,最后我們截取有效數據的高16位作為濾波結果。完成整個濾波器設計后我們在Modelsim進行仿真,將500Hz、20kHz、50kHz的三個正弦波疊加組合作為輸入信號。結果如圖5所示。
圖5 數字濾波器仿真結果
從Modelsim仿真圖中可以看出,輸入信號中20kHz頻率成分被保留了下來,而其他的頻率成分均已被濾除,可見設計的濾波器基本滿足設計要求。
為了衡量鎖相放大器提取信號幅度的效果,本文將正弦調制信號作為仿真的輸入信號,其輸入信號和測試結果如圖6所示。
在圖6中,adc_data端口即為仿真的輸入信號端口,這是一個幅度調制信號,其幅度為一個正弦信號,圖中的x_out端口即為輸出信號端口,它代表數字鎖相放大器中的幅度,可以看到,仿真結果基本符合理論結果,經過數字鎖相放大器,提取了輸入信號的幅度。
經過上述的仿真結果后,我們將程序下載進對應的FPGA開發(fā)板中,輸入信號如圖7所示。
圖6 數字鎖相放大器仿真結果
輸入信號由信號源產生,經過模數轉換器后接在FPGA的輸入端口,這里選擇使用幅度為三角波的調制信號,得到的結果如圖8所示。
圖7 實際輸入信號
圖8 示波器顯示輸出信號
通過示波器接收輸出信號并顯示,我們可以看到基本能完整的提取輸入信號的三角波幅度,與理論和仿真結果差距較小。
本文完成了一種數字鎖相放大器的設計并分析了相關檢測方法原理,完成了整體系統(tǒng)設計。通過上面的仿真和實際測試可以看到,數字鎖相放大器的效果明顯,實現后的結果與理論相比誤差較小,能廣泛運用于微弱信號檢測中。