吳鑫淵,馮國英
(四川大學(xué)電子信息學(xué)院,成都 610065)
激光角分辨力高、抗干擾能力強,可以有效避免微波貼近地面的多徑效應(yīng)和地物干擾問題,被廣泛用于測距領(lǐng)域[1]。相位式激光測距作為一種高精度、非接觸的測量方式,在大地、空間位置高精度測量等領(lǐng)域起著很重要的作用[2]。鑒相方法可分為模擬法和數(shù)字法兩大類。模擬鑒相法適應(yīng)鑒別信號的頻率高,鑒相速度快,但是實現(xiàn)電路復(fù)雜、元器件要求高、精度差等缺點;數(shù)字法通過采樣模擬信號轉(zhuǎn)化為數(shù)字量進行鑒相,優(yōu)化了硬件結(jié)構(gòu),測量精度高。近年來,基于高速采樣和數(shù)字運算的數(shù)字鑒相方法越來越多的應(yīng)用在工程中。數(shù)字法主要包括自動數(shù)字鑒相法、數(shù)字相關(guān)法和FFT鑒相法。由于激光回波信號受測量范圍,光電探測器件等影響信噪比浮動較大,自動數(shù)字鑒相法誤差較大;而數(shù)字相關(guān)法限制了鑒相范圍為0~π;FFT鑒相法在進行頻譜分析時,若信號頻率不是頻譜分辨率的整數(shù)倍,則會出現(xiàn)嚴重的頻譜泄露和柵欄效應(yīng),造成鑒相誤差[3],故工程中多采用FFT算法的改進算法全相位FFT算法進行鑒相。2012年中國科學(xué)院光電研究所緱寧祎等人設(shè)計了全相位FFT法的FPGA信號處理方案,利用傅里葉的變換共軛性實現(xiàn)了高速實時鑒相,在500 KHz測距速率,頻率偏移1%時,鑒相精度可達0.09度[4],2015年該所張云雷等人在FPGA上實現(xiàn)了鑒相精度0.08度的雙頻測尺鑒相系統(tǒng),通過控制兩測尺之間的頻差,有效降低了測尺之間的干擾,滿足了大尺度空間中相位式激光測距的應(yīng)用需求[5];2018年上海理工大學(xué)吳丹丹等人在CycloneⅤ系列FPGA上實現(xiàn)了FFT算法鑒相,在0-100 KHz測量帶寬下,測量精度可達0.01度[6]。
目前,對于要求高速,實時且精度高的測距應(yīng)用場景,還沒有成熟的設(shè)計方案和相關(guān)產(chǎn)品,為了滿足該領(lǐng)域的需求,文中硬件部分選擇現(xiàn)場可編程邏輯器件FPGA,鑒相算法選擇全相位FFT算法,在FPGA上實現(xiàn)了從AD采集,數(shù)據(jù)流緩存、處理到鑒相結(jié)果的輸出顯示,并基于整個系統(tǒng)數(shù)據(jù)處理流程提出了一種流水線式的數(shù)據(jù)處理優(yōu)化方法。
全相位FFT具有良好的頻譜分析特性,能夠有效地抑制頻譜旁瓣泄漏[7];在能量中心多譜線范圍內(nèi),具有信號初相的“相位不變性”[8]。相比于傳統(tǒng)FFT,它不受信號頻率必須為頻率分辨整數(shù)倍的制約,在實際工程實踐中,能顯著提高測相精度。
全相位FFT相較于傳統(tǒng)FFT法鑒相[9-10],增加了一個數(shù)據(jù)預(yù)處理過程,通過對采樣數(shù)據(jù)的預(yù)處理得到一個新數(shù)字序列進行FFT變換。
設(shè)定初始信號頻率為f,初始相位為θ,A為幅值,t為時間變量,初始信號為:
X(t)=Acos(2πft+θ)
(1)
設(shè)采樣頻率fn=1/ΔT,ΔT為采樣時間間隔,n為采樣點數(shù),經(jīng)過AD采樣后得到信號的數(shù)字序列X(n):
(2)
全相位FFT的數(shù)據(jù)預(yù)處理過程如圖1所示。
圖1 全相位FFT預(yù)處理框圖
首先對2N-1個采樣點進行預(yù)處理,過程如下:
(1)兩個寬度為N的漢寧窗函數(shù)進行卷積得到新的函數(shù)w1*w2;
(2)新窗函數(shù)對中心樣點為x(0)的2N-1個采樣點進行加權(quán):
P(n)=(w1*w2)·S(n),n=0,1,…,2N-1
(3)
(3)加權(quán)后的2N-1個采樣點隔N相加得到新的N點序列:
Q(n)=P(n)+P(n+N),n=0,1,…,N-1
(4)
然后對新的N點序列Q進行傅里葉變換,并整理得:
(5)
其中k為傅里葉變換后的頻率點序數(shù),N為變換點數(shù)??梢缘玫叫盘柕某跏枷辔?/p>
(6)
此鑒相模塊應(yīng)用的相位式激光測距系統(tǒng)如圖2所示,大體分為激光調(diào)制發(fā)射端,激光回波接收端,F(xiàn)PGA鑒相模塊以及電腦數(shù)據(jù)分析4個部分。激光調(diào)制發(fā)射端包含函數(shù)信號發(fā)生器、激光二極管以及準直透鏡;激光回波接收端包含聚焦透鏡及光電探測器模塊;FPGA鑒相模塊包含雙路AD采集模塊、FPGA算法設(shè)計模塊以及液晶顯示模塊;電腦數(shù)據(jù)分析部分包含示波器以及電腦。系統(tǒng)工作流程如下,首先信號發(fā)生器發(fā)出高頻調(diào)制信號調(diào)制激光二極管發(fā)射強度隨時間變換的激光信號,經(jīng)過反射物反射后,光電探測器檢測反射的回波信號,進行信號整形、濾波、AD采集進入FPGA實現(xiàn)兩路正弦信號的相位差計算;同時示波器采集探測器的輸出信號,使用MATLAB軟件進行數(shù)據(jù)分析并鑒相。
圖2 相位式激光測距系統(tǒng)
為了研究FFT變換點數(shù),信噪比等因素對全相位FFT法鑒相的影響,通過控制變量的方法進行仿真設(shè)計,具體仿真流程如圖3所示。設(shè)置初始信號為:
圖3 仿真流程圖
(7)
其中A為信號振幅,f為調(diào)制頻率,P為初始相位(單位度),噪聲干擾分為三類,一類為Dc直流信號干擾,另一類為諧波干擾,最后一類為用高斯函數(shù)模擬的隨機噪聲。仿真流程為先設(shè)置初始信號的幅值、初相、FFT變換點數(shù)并加入設(shè)定信噪比的隨機噪聲,經(jīng)過采樣,F(xiàn)FT變換加反正切求出單次的相位差,由于FPGA鑒相模塊設(shè)置的平均次數(shù)為1024,所以這里每1024次計算求平均值,最終得出1024次鑒相的標準差,通過比較鑒相標準差判斷不同條件對于鑒相結(jié)果的影響。
設(shè)置變量為信噪比和FFT點數(shù),初始信號的調(diào)制頻率f為10 MHz,初始相位φ為30度,采樣頻率fs為64 MHz(調(diào)制頻率整數(shù)倍),信噪比的變化范圍從5-40 dB,全相位FFT變換點數(shù)為511-4095點,1024次仿真求鑒相平均值和鑒相標準差。
仿真結(jié)果如圖4所示,從圖中可以看出隨著FFT點數(shù)的增多,鑒相標準差明顯減小,點數(shù)超過4095點之后,對鑒相標準差影響達到較小可忽略的程度;信噪比越大,鑒相標準差亦越小。考慮到具體實驗環(huán)境(室內(nèi)信噪比約為30 dB)和實驗要達到的測距速率和精度,實際工程中選擇了1023點全相位FFT點數(shù)進行鑒相算法設(shè)計,對應(yīng)圖中的關(guān)鍵點(FFT點數(shù)1023,信噪比30 dB),既滿足了精度要求,也不會因為信號處理花費大量時間而影響鑒相速率。
圖4 信噪比與FFT點數(shù)影響
FPGA內(nèi)部的設(shè)計框架如圖5所示,主要分為三個部分,數(shù)據(jù)預(yù)處理模塊、相位計算模塊以及鑒相結(jié)果平均模塊。數(shù)據(jù)預(yù)處理主要是FPGA與外部雙路AD采集模塊進行交互,得到兩路12 bit的數(shù)據(jù)流,接著用含有窗系數(shù)的ROM IP核(經(jīng)卷積漢寧窗系數(shù)初始化)對數(shù)據(jù)流加權(quán),然后將數(shù)據(jù)流的前511個數(shù)據(jù)用FIFO緩存后與后511個數(shù)據(jù)隔N(N為變換點數(shù))相加進行數(shù)據(jù)的預(yù)處理;計算相位的部分主要包含F(xiàn)FT和Cordic IP核的初始化與調(diào)用,將兩路經(jīng)過預(yù)處理的數(shù)據(jù)流進行FFT變換后,調(diào)用Cordic IP核進行反正切求出信號初始相位,最后將兩路信號相位差得出;數(shù)據(jù)平均部分主要是將計算出的相位差緩存進行數(shù)據(jù)的平均以達到輸出一個穩(wěn)定的鑒相結(jié)果。
圖5 FPGA設(shè)計框圖
(1)FFT算法IP核設(shè)計
整個FPGA鑒相系統(tǒng)的最關(guān)鍵部分為相位計算模塊,其中最主要的為FFT IP核的調(diào)用與設(shè)計。如圖6所示,設(shè)置FFT的點數(shù)為512點,運算方式選擇Pipelined Streaming I/O,速度最快,但占用資源較多,系統(tǒng)時鐘及采樣頻率設(shè)置為64 MHz。
圖6 FFT IP核設(shè)計
Xilinx FFT IP核采用的是AXI4-Stream總線,主要由master(信號開頭為m)和slave(信號開頭為s)兩部分組成,生成后的IP核如圖7所示,其中較重要的端口功能描述如表1所示。
圖7 FFT IP核原理圖
表1 FFT IP核端口功能描述
在設(shè)計IP核時,配置信息s_config_tadata尤為重要,其包含四個部分,分別為:
①NFFT,變換點數(shù)。該值為log2(point_size),由于變換點數(shù)為512,這里該二進制值為1001。
②CP_LEN,循環(huán)前綴,該值僅在循環(huán)前綴加入時有效,這里設(shè)置為0。
③FWD_INV,F(xiàn)WD_INV為0表示IFFT運算,為1表示FFT運算,這里為1。
④SCALE_SCH,縮放因子,這里經(jīng)過多次測試,設(shè)置為二進制0110101010。
(2)流水線式數(shù)據(jù)處理優(yōu)化及仿真
從圖5可以得出,在FPGA處理流程的第三部分要進行鑒相結(jié)果的一個平均過程,文中提出了一種流水線式的數(shù)據(jù)處理方法,可以在進行多次平均的數(shù)據(jù)處理流程中,大大減少系統(tǒng)的數(shù)據(jù)處理時間,提高系統(tǒng)鑒相速率。
圖8可以形象地反映出在數(shù)據(jù)平均過程中此優(yōu)化方法節(jié)約時間的原理,一次鑒相循環(huán)包含三個信號處理過程,三種形狀分別代表信號預(yù)處理過程,F(xiàn)FT IP核運算過程以及Cordic IP核運算過程,紅線上方為未經(jīng)過優(yōu)化的數(shù)據(jù)處理流程,下方為優(yōu)化后的流程,通過在循環(huán)求平均的過程中復(fù)用數(shù)據(jù)預(yù)處理和Cordic IP核運算時間,達到節(jié)約整個系統(tǒng)的時間成本。
圖8 信號處理流程優(yōu)化
為了盡可能切合實際,在進行FPGA級仿真時,設(shè)置的參數(shù)基本與實際測距參數(shù)一致,設(shè)置系統(tǒng)時鐘64 MHz,AD采樣速率與系統(tǒng)時鐘一致,仿真的正弦波信號使用MATLAB進行模擬,雙路正弦波信號頻率為10 MHz,信噪比設(shè)定為30 dB,雙路信號相位分別設(shè)置為30度和45度,仿真時將全相位FFT點數(shù)設(shè)定為63個點,這樣即大大減少了仿真時間且能在FFT后頻譜譜線的10 MHz處存在一個參考點,便于采樣計算相位。
在FPGA級的仿真時,其中耗時最長的過程為進行FFT運算,因為處理的數(shù)據(jù)越多,F(xiàn)FT的時間越長,仿真時32點的FFT需要的處理時間為2.83微秒,實驗時的512點FFT需要的處理時間為25微秒,鑒相速率為20 KHz。所以在進行流水線式設(shè)計時把第二次循環(huán)開始的時間點設(shè)置到上一次FFT運算結(jié)果剛開始輸出的時間點,從而可以避免兩次循環(huán)導(dǎo)致FFT IP核的一個共用情形,且可以節(jié)約FFT運算后數(shù)據(jù)處理的時間。
在圖9的仿真結(jié)果圖中,Signal1,2分別為采樣后的兩個正弦波信號,Hanning window為初始化的窗函數(shù),三條標記線分別為第一次鑒相循環(huán)的起點標記線,第二次循環(huán)的起點標記線以及第一次循環(huán)的結(jié)束標記線,從底邊刻度可以看出,進行一次循環(huán)的時間大約為3.83 μs,優(yōu)化后的兩次循環(huán)的間隔時間大約為2.96 μs,可節(jié)約時間0.875 μs,約占一次循環(huán)時間的百分之三十,實際測試中,一次循環(huán)時間為30 μs,在1024次平均過程中,可節(jié)約時間約9.2 ms,由此可見,在進行大規(guī)模的平均過程中,節(jié)約的時間成倍增長,此流水線式的數(shù)據(jù)處理流程可大大節(jié)約系統(tǒng)的計算時間,提高整體鑒相速度。
圖9 FPGA仿真結(jié)果
本節(jié)將對FPGA鑒相模塊進行測試及功能驗證,驗證流程為:通過信號發(fā)生器(型號為普源DG1000Z系列)產(chǎn)生兩路頻率相同,相位不同的正弦波信號,由雙路AD模塊采樣并由FPGA進行相位差檢測及顯示。產(chǎn)生的正弦波信號類型由有兩種,一種為沒有直流偏置,幅度為3V的正弦波;另一種正弦波信號幅度為2V,并加上3V的直流偏置。由于激光二極管工作時的調(diào)制信號為直流偏置加上正弦波,第二種類型正弦波信號則是為模擬實驗時調(diào)制激光的正弦波信號。兩種類型的信號都分別測試3組不同頻率,分別為5 MHz、10 MHz、20MHz(AD采樣頻率64 MHz),每組信號從0-180度每隔10度變化,每次測量1024次,再進行相位差及鑒相誤差的計算。表2和表3分別為兩種類型不同頻率輸入信號的鑒相結(jié)果及鑒相誤差。
表2 無直流偏置輸入信號的鑒相結(jié)果及誤差
表3 有直流偏置輸入信號的鑒相結(jié)果及誤差
如圖10所示,可得出以下結(jié)論:此鑒相系統(tǒng)在不同頻率的輸入信號下,鑒相結(jié)果無明顯區(qū)別,鑒相誤差基本保持在±0.04度以內(nèi);輸入信號有無直流偏置時對鑒相結(jié)果基本無影響,符合實際激光測距中的實際應(yīng)用需求。
圖10(a)無直流偏置輸入信號鑒相結(jié)果(b)有直流偏置輸入信號鑒相結(jié)果
本文為了滿足高速高精度的激光測距應(yīng)用場景,在FPGA中實現(xiàn)了全相位FFT的鑒相算法,并通過仿真分析不同SNR和FFT變換點數(shù)下的鑒相標準差,對比實際實驗環(huán)境,選取了最符合條件的實驗參數(shù);同時在整個數(shù)據(jù)計算流程中提出了流水線式的數(shù)據(jù)處理優(yōu)化方法,通過FPGA仿真及實驗證明該方法可大大節(jié)約鑒相時間。實驗結(jié)果表明,該鑒相系統(tǒng)可在激光調(diào)制頻率為20 MHz的條件下,鑒相速率達到20 KHz,鑒相精度達到0.04度以下,基本達到高速高精度的測距場景應(yīng)用需求。