楊晨曦
(電子科技大學(xué) 電子科學(xué)與工程學(xué)院,四川成都,611731)
在實(shí)際工程中,常常需要進(jìn)行微弱信號(hào)的檢測(cè)。而本數(shù)字式鎖定放大器采用相關(guān)檢測(cè)法實(shí)現(xiàn)了數(shù)字相敏的檢波,通過(guò)噪聲信號(hào)和確定性信號(hào)的相關(guān)特性實(shí)現(xiàn)有用信號(hào)的提取。一般情況下,有用信號(hào)在時(shí)域上不同時(shí)刻的取值具有相關(guān)性,而比如熱噪聲之類的干擾噪聲具有隨機(jī)性,因此,可以利用這一特性差異,區(qū)分出有用信號(hào)與干擾噪聲[1-2]。
采用數(shù)字相敏檢波,可以方便進(jìn)行低頻信號(hào)的檢測(cè)。在模擬式相敏檢測(cè)器中,當(dāng)參考信號(hào)頻率很低時(shí),相敏檢波器的Q值會(huì)嚴(yán)重下降,而數(shù)字相敏檢波不會(huì),而且由于數(shù)字信號(hào)處理的特性,使得數(shù)字相敏檢波有很高的線性度。且由于FPGA代碼便于修改,可以對(duì)工作頻率、時(shí)間常數(shù)、靈敏度等參數(shù)進(jìn)行靈活控制,使得數(shù)字相敏檢波有很好的靈活性[2]。
綜上,數(shù)字相敏檢波可以很好的抑制隨機(jī)噪聲的干擾,提取出微弱的有用信號(hào),并且使用起來(lái)比模擬相敏檢波更加的靈活方便[3]。數(shù)字相敏檢波的原理如圖1所示。
圖1 數(shù)字相敏檢波原理圖
在設(shè)計(jì)中采用ADS8320作為A/D轉(zhuǎn)換器,50MHz外部晶振作為系統(tǒng)時(shí)鐘,以12.8kHz的采樣頻率對(duì)200Hz的正弦信號(hào)進(jìn)行采樣,即每個(gè)正弦周期采樣64個(gè)點(diǎn)。正弦待測(cè)信號(hào)和參考信號(hào)通過(guò)直接數(shù)字頻率合成器(DDS)芯片AD9958生成。
數(shù)字式鎖定放大器的系統(tǒng)框圖如圖2所示。FPGA內(nèi)部有分頻模塊、數(shù)據(jù)采集控制模塊、DDS控制模塊和數(shù)據(jù)處理模塊四個(gè)部分組成。系統(tǒng)工作流程為FPGA通過(guò)DDS控制模塊對(duì)AD9958進(jìn)行控制,使其產(chǎn)生兩路正交的正弦信號(hào),一路正弦信號(hào)經(jīng)過(guò)會(huì)引入隨機(jī)噪聲的路徑后到達(dá)A/D轉(zhuǎn)換芯片,進(jìn)行數(shù)字化處理,另外原始的兩路正交的正弦信號(hào)直接送入A/D芯片。隨后FPGA采集控制模塊控制A/D芯片進(jìn)行數(shù)據(jù)的接收,并將接收到的數(shù)據(jù)送入數(shù)據(jù)處理模塊進(jìn)行相乘、累加等數(shù)據(jù)運(yùn)算,最終求出幅值和相位并進(jìn)行輸出。
圖2 數(shù)字式鎖定放大器系統(tǒng)框圖
在FPGA開發(fā)中,時(shí)鐘設(shè)計(jì)是時(shí)序電路非常重要的一部分。在本設(shè)計(jì)中FPGA芯片所使用的時(shí)鐘是由外部晶振提供的50MHz的時(shí)鐘。分頻模塊先調(diào)用PLL的IP核分出一個(gè)32MHz的主時(shí)鐘,該時(shí)鐘主要是用于后續(xù)數(shù)據(jù)處理模塊的乘法、開方和反三角函數(shù)的計(jì)算。同時(shí)該時(shí)鐘還可以很方便的通過(guò)計(jì)數(shù)的方式進(jìn)行分頻,產(chǎn)生用于控制DDS芯片的2MHz時(shí)鐘和用于A/D轉(zhuǎn)換芯片采樣的320kHz的時(shí)鐘。該設(shè)計(jì)共使用了4種頻率的同步時(shí)鐘,并不存在跨時(shí)鐘域數(shù)據(jù)傳輸,整體時(shí)鐘結(jié)構(gòu)比較簡(jiǎn)單。
數(shù)據(jù)采集模塊的功能主要是通過(guò)SPI協(xié)議與ADS8320進(jìn)行通信,由分頻模塊為ADS8320提供320kHz的采樣時(shí)鐘,每25個(gè)時(shí)鐘將CS管腳(片選)拉低21個(gè)時(shí)鐘。在CS剛被拉低的前5個(gè)時(shí)鐘,DOUT處于高阻態(tài),隨后輸出一個(gè)時(shí)鐘周期的低電平信號(hào)作為輸出轉(zhuǎn)換結(jié)果開始的標(biāo)志,接下來(lái)的16個(gè)時(shí)鐘由高到低的輸出16位的轉(zhuǎn)化結(jié)果。之后將CS端拉高,停止轉(zhuǎn)換。AD轉(zhuǎn)換器通過(guò)SPI協(xié)議輸出的數(shù)據(jù)由移位寄存器接收并進(jìn)行串并轉(zhuǎn)換。控制時(shí)序如圖3所示。
圖3 ADS8320控制時(shí)序圖
得到的數(shù)據(jù)送入數(shù)據(jù)處理模塊,實(shí)現(xiàn)幅值和相位的檢波運(yùn)算。整體的數(shù)據(jù)采集控制模塊采用狀態(tài)機(jī)進(jìn)行設(shè)計(jì)。狀態(tài)機(jī)有idle、start、receive、stop四個(gè)狀態(tài),通過(guò)計(jì)數(shù)器控制狀態(tài)的轉(zhuǎn)移,在idle狀態(tài)發(fā)現(xiàn)片選信號(hào)有效時(shí),進(jìn)入start狀態(tài),將計(jì)數(shù)器清零。計(jì)數(shù)器計(jì)數(shù)5個(gè)時(shí)鐘后進(jìn)入receive狀態(tài),開始接收數(shù)據(jù)。數(shù)據(jù)接收完成,計(jì)數(shù)器計(jì)數(shù)到21,進(jìn)入stop狀態(tài),停止采集數(shù)據(jù),將片選信號(hào)撤銷。計(jì)數(shù)到25后重新開始一輪數(shù)據(jù)采集。狀態(tài)轉(zhuǎn)移圖如圖4所示。
圖4 數(shù)據(jù)采集模塊狀態(tài)轉(zhuǎn)移圖
DDS控制模塊的功能是通過(guò)SPI協(xié)議對(duì)DDS芯片的片內(nèi)寄存器進(jìn)行配置,從而實(shí)現(xiàn)指定頻率正弦波的產(chǎn)生。AD9958內(nèi)部擁有10個(gè)寄存器,分別對(duì)應(yīng)著不同的地址,這些寄存器為:通道選擇寄存器CSR、線性掃描斜率LSRR、LSR上升增量RDW和LSR下降增量FDW、功能寄存器FR1和FR2、通道寄存器CFR、通道頻率調(diào)整字CFTW0、通道相位偏移字CPOW0、幅度控制字ACR[4]。本模塊采用單bit串行模式進(jìn)行數(shù)據(jù)寫入,實(shí)現(xiàn)對(duì)AD9958片內(nèi)寄存器的配置??刂茣r(shí)序圖如圖5所示。每次傳輸16bit的數(shù)據(jù),其中前8bit是指令周期,其中I7決定數(shù)據(jù)的讀寫模式,I0-I4是寄存器的地址,后8bit是寄存器中的數(shù)據(jù)。
圖5 AD9958串行寫入時(shí)序圖
DDS控制模塊通過(guò)控制CFTW0可以設(shè)置通道的頻率參數(shù),控制ACR可以對(duì)輸出信號(hào)的電壓幅度參數(shù)進(jìn)行設(shè)置,控制CPOW0設(shè)置相位偏移參數(shù),相位偏移字有14位精度可以調(diào)節(jié),分辨率為控制CSR設(shè)置SPI的指令控制的具體通道是哪個(gè),控制FR1設(shè)置PLL的分頻系數(shù)和VCO增益等等。每次進(jìn)行頻率的切換都需要對(duì)這些寄存器重新進(jìn)行配置。DDS控制模塊流程如圖6所示。
圖6 DDS控制模塊工作流程
數(shù)據(jù)處理模塊主要是對(duì)采集到的數(shù)字信號(hào)進(jìn)行計(jì)算,首先從數(shù)據(jù)采集模塊的移位寄存器中將同步采集到的兩組數(shù)據(jù)讀到乘法器的輸入寄存器中,對(duì)其進(jìn)行相乘后送入累加寄存器進(jìn)行累加。當(dāng)每個(gè)正弦信號(hào)的64個(gè)采樣點(diǎn)的數(shù)據(jù)相乘累加結(jié)束后,通過(guò)截位進(jìn)行平均操作,將低6位的數(shù)據(jù)直接舍棄,這樣做雖然會(huì)喪失一點(diǎn)精度,但是避免了使用除法器,節(jié)省了運(yùn)算時(shí)間和邏輯資源。截位得到的數(shù)據(jù)就是數(shù)字相敏檢波算法中的同向分量I和正交分量Q。然后計(jì)算對(duì)應(yīng)的就得到了待測(cè)信號(hào)的幅值和相位。數(shù)據(jù)處理流程圖如圖7所示。
圖7 數(shù)據(jù)處理流程圖
數(shù)據(jù)處理模塊所涉及到的乘法器、開平方根和反三角函數(shù)登運(yùn)算,都是通過(guò)調(diào)用ise工具提供的IP核實(shí)現(xiàn)的,在進(jìn)行FPGA開發(fā)的時(shí)候,調(diào)用成熟的IP核可以大大縮短程序開發(fā)的時(shí)間,同時(shí)還可以獲得更好的性能。
為了對(duì)基于FPGA實(shí)現(xiàn)的數(shù)字相敏檢波模塊進(jìn)行仿真分析,我編寫一個(gè)DDS模塊,用來(lái)生成頻率為200Hz的正弦信號(hào),輸出的結(jié)果加上隨機(jī)噪聲來(lái)模擬待測(cè)信號(hào),同時(shí)生成兩路正交的余弦信號(hào)作為參考信號(hào),送入數(shù)據(jù)處理模塊,改變待測(cè)信號(hào)的幅值和相位參數(shù),觀察輸出的結(jié)果與設(shè)置參數(shù)的區(qū)別,仿真的截圖如圖8所示,最終仿真數(shù)據(jù)如表1所示。
圖8 數(shù)字相敏檢波時(shí)序仿真圖
表1 仿真數(shù)據(jù)
本文設(shè)計(jì)了一款基于FPGA的數(shù)字式鎖定放大器,該系統(tǒng)能夠?qū)崿F(xiàn)對(duì)200Hz的低頻信號(hào)進(jìn)行檢波,由于A/D轉(zhuǎn)換芯片采樣率的限制,可以通過(guò)改變DDS控制模塊的程序參數(shù)實(shí)現(xiàn)最高約100kHz的信號(hào)幅相檢測(cè)。通過(guò)對(duì)FPGA程序進(jìn)行仿真發(fā)現(xiàn)數(shù)字相敏檢波算法可以達(dá)到預(yù)期目標(biāo),相信FPGA在微弱信號(hào)檢測(cè)領(lǐng)域會(huì)發(fā)揮越來(lái)越大的作用。