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