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