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