湯易,孫向陽
(電子科技大學(xué)電子科學(xué)與工程學(xué)院,四川成都,611731)
在微弱信號的采集和處理中,鎖相放大技術(shù)一直是一種行之有效的方法,該技術(shù)是利用相關(guān)的原理設(shè)計(jì)的一種同步相干檢測,具有通頻帶窄,中心頻率穩(wěn)定,品質(zhì)因數(shù)高,信噪比高等特點(diǎn),在微弱信號的處理方面顯示出了非常好的性能,因此在各個(gè)領(lǐng)域得到了廣泛的應(yīng)用。
在采集微弱信號的過程中,常常會(huì)有由電磁輻射或傳輸渠道等各種原因產(chǎn)生的噪聲,設(shè)信號X(t)是伴有噪聲的周期信號,即:

式(1)中X(t)為輸入信號,由有用信號S(t)和隨機(jī)噪聲N(t)組成,有用信號的幅值為A,角頻率為ω,相位為φ;參考正弦信號為:

其中τ是參考正弦信號的相位,則兩者的相關(guān)函數(shù)為:

由于參考信號Y(t)與隨機(jī)噪聲N(t)互不相關(guān),所以RNY(τ)=0 ,于是就有:

從而得出RXY(τ) 正比于有用信號的幅值的結(jié)論。
由以上分析可知,利用參考信號與有用信號相關(guān)的同時(shí)與噪聲互不相關(guān)這一點(diǎn),可以通過相關(guān)運(yùn)算提高信噪比。
本數(shù)字鎖相放大器主要用于采集接收微弱信號系統(tǒng)中,整個(gè)系統(tǒng)主要分為兩個(gè)部分:模擬部分和數(shù)字部分,數(shù)字部分基于FPGA開發(fā),最終在硬件中進(jìn)行實(shí)現(xiàn),具體結(jié)構(gòu)如圖1所示。

圖1 系統(tǒng)總體框圖
圖1中的FPGA模塊即為數(shù)字鎖相放大器部分,主要由移相器,相關(guān)檢測,低通濾波和矢量運(yùn)算等部分構(gòu)成。在接收到前級AD模塊的數(shù)字信號后,鎖相放大器會(huì)將信號進(jìn)行移相,移相后的數(shù)據(jù)和接收數(shù)據(jù)分別于參考信號進(jìn)行乘法操作,經(jīng)過低通濾波后,兩路信號的比值反映了原始信號對應(yīng)時(shí)刻的相位,而兩者的模值反映了原始信號的幅度,從而實(shí)現(xiàn)了將小信號從噪聲中提取出來的功能。
在整個(gè)數(shù)字部分中,功能主要在FPGA內(nèi)實(shí)現(xiàn),這需要考慮到硬件系統(tǒng)與理論上的不同。移相器主要參考工作頻率,按照參考信號的頻率將接收到的信號延遲半個(gè)周期,從而達(dá)到移相90°的功能;相關(guān)檢測部分主要實(shí)現(xiàn)的是參考信號與接收信號的相乘,利用FPGA內(nèi)自帶的乘法器模塊進(jìn)行實(shí)現(xiàn),以便滿足時(shí)序與資源上的平衡;低通濾波器模塊實(shí)現(xiàn)濾波,在硬件中實(shí)現(xiàn)需要大量的乘法器與加法器,考慮到芯片內(nèi)部乘法器資源的有限性,這里采用了分布式算法,避免了乘法器的使用。
分布式算法由于用LUT和移位器代替乘法器,有效地節(jié)省了硬件資源,因此被廣泛運(yùn)用于FPGA的設(shè)計(jì)中,對于濾波器的計(jì)算:

其中,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ù)先存儲(chǔ)在LUT中,通過對二進(jìn)制位地址 [xb(0),xb(1), … ,xb(M- 1 )]尋址提取對應(yīng)系數(shù)組合,然后由移位器和加法器進(jìn)行實(shí)現(xiàn)移位求和,從而變相實(shí)現(xiàn)乘法累加運(yùn)算。
上述即為串行結(jié)構(gòu)的分布式算法,基于分布式算法的數(shù)字濾波器結(jié)構(gòu)框圖如圖2所示,由M位移位寄存器、LUT查找表和加減運(yùn)算部分組成,LUT查找表的地址由每一個(gè)輸入信號的同一位決定。
本文中我們采用FIR濾波器進(jìn)行濾波,借助Matlab中濾波器設(shè)計(jì)工具fdatool進(jìn)行設(shè)計(jì)。濾波器的參數(shù)如下:通帶從5kHz到35kHz,濾波器的階數(shù)為127階。阻帶容許最小衰減為50dB,根據(jù)這些設(shè)計(jì)指標(biāo),可以通過軟件生成濾波器系數(shù),同時(shí)繪制的幅頻響應(yīng),幅頻特性曲線如圖3所示。

圖2 數(shù)字濾波器結(jié)構(gòu)框圖

圖3 理想幅頻響應(yīng)

圖4 不同位寬幅頻響應(yīng)對比
Matlab生成的濾波器系數(shù)均為浮點(diǎn)數(shù),而FPGA中只能進(jìn)行整型運(yùn)算,因此需要對濾波器系數(shù)進(jìn)行量化。濾波器系數(shù)的量化位數(shù)越大,濾波器的幅頻響應(yīng)與原始濾波器幅頻響應(yīng)擬合程度越好,但是需要消耗更多硬件資源;反之,濾波器系數(shù)量化位數(shù)越小,消耗硬件資源越少,但其濾波效果越差,因此需要平衡硬件資源的使用和精度的選擇。我們選擇了三種位寬,分別是14位,12位,8位,在Matlab中通過對比不同位寬下的幅頻特性曲線與原始濾波器的幅頻特性,選取最佳系數(shù)量化位寬。圖4是不同位寬的幅頻特性仿真圖,從圖4可以看出12bit與14bit位寬量化的幅頻特性曲線和原本的幅頻特性曲線擬合程度較好,而當(dāng)采用8bit位寬量化時(shí),幅頻特性曲線失真較大。本著節(jié)約資源的想法我們選擇12bit位寬量化。
最后我們將量化之后的系數(shù)導(dǎo)入FPGA中,通過分布式算法的思想完成整個(gè)數(shù)字濾波器,由于階數(shù)較高,127階共有64個(gè)不同的濾波器系數(shù),若全部在一個(gè)LUT里查找需要存儲(chǔ)264個(gè)數(shù),因此本文將64個(gè)系數(shù)分成8組,每組系數(shù)中有8個(gè),這樣每個(gè)LUT只用存儲(chǔ)28個(gè)數(shù),在硬件資源上大大優(yōu)化。數(shù)據(jù)每輸入一次便會(huì)進(jìn)行17次查找操作、16次移位操作以及1次加法運(yùn)算,由于對數(shù)據(jù)進(jìn)行了移位累加,因此數(shù)據(jù)的位數(shù)會(huì)被擴(kuò)展,最后我們截取有效數(shù)據(jù)的高16位作為濾波結(jié)果。完成整個(gè)濾波器設(shè)計(jì)后我們在Modelsim進(jìn)行仿真,將500Hz、20kHz、50kHz的三個(gè)正弦波疊加組合作為輸入信號。結(jié)果如圖5所示。

圖5 數(shù)字濾波器仿真結(jié)果
從Modelsim仿真圖中可以看出,輸入信號中20kHz頻率成分被保留了下來,而其他的頻率成分均已被濾除,可見設(shè)計(jì)的濾波器基本滿足設(shè)計(jì)要求。
為了衡量鎖相放大器提取信號幅度的效果,本文將正弦調(diào)制信號作為仿真的輸入信號,其輸入信號和測試結(jié)果如圖6所示。
在圖6中,adc_data端口即為仿真的輸入信號端口,這是一個(gè)幅度調(diào)制信號,其幅度為一個(gè)正弦信號,圖中的x_out端口即為輸出信號端口,它代表數(shù)字鎖相放大器中的幅度,可以看到,仿真結(jié)果基本符合理論結(jié)果,經(jīng)過數(shù)字鎖相放大器,提取了輸入信號的幅度。
經(jīng)過上述的仿真結(jié)果后,我們將程序下載進(jìn)對應(yīng)的FPGA開發(fā)板中,輸入信號如圖7所示。

圖6 數(shù)字鎖相放大器仿真結(jié)果
輸入信號由信號源產(chǎn)生,經(jīng)過模數(shù)轉(zhuǎn)換器后接在FPGA的輸入端口,這里選擇使用幅度為三角波的調(diào)制信號,得到的結(jié)果如圖8所示。

圖7 實(shí)際輸入信號

圖8 示波器顯示輸出信號
通過示波器接收輸出信號并顯示,我們可以看到基本能完整的提取輸入信號的三角波幅度,與理論和仿真結(jié)果差距較小。
本文完成了一種數(shù)字鎖相放大器的設(shè)計(jì)并分析了相關(guān)檢測方法原理,完成了整體系統(tǒng)設(shè)計(jì)。通過上面的仿真和實(shí)際測試可以看到,數(shù)字鎖相放大器的效果明顯,實(shí)現(xiàn)后的結(jié)果與理論相比誤差較小,能廣泛運(yùn)用于微弱信號檢測中。