施蕾



摘 要:測(cè)距穩(wěn)定性是影響激光測(cè)距儀性能的重要指標(biāo),信噪比是影響測(cè)距穩(wěn)定性的重要因素。本文基于現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)提出一種低信噪比下的測(cè)距方法,可有效提高反射率低或遠(yuǎn)距離目標(biāo)測(cè)距的穩(wěn)定性。該方法在FPGA上集成冒泡排序、數(shù)據(jù)分析提取、取平均等模塊,其中冒泡排序采用乒乓緩存比較的方法,數(shù)據(jù)分析提取通過(guò)分段、標(biāo)識(shí)、反推方法實(shí)現(xiàn)。本文對(duì)1200米處建筑物進(jìn)行測(cè)試,可實(shí)現(xiàn)小于±1m的測(cè)距波動(dòng)。算法可實(shí)現(xiàn)低信噪比下距離的穩(wěn)定測(cè)量,在強(qiáng)噪聲或弱信號(hào)情況下均可得到較好穩(wěn)定效果,可廣泛用于激光測(cè)距。
關(guān)鍵詞:低信噪比;測(cè)距;冒泡排序;數(shù)據(jù)分析提取;平均;現(xiàn)場(chǎng)可編程門(mén)陣列
1 引言
在激光測(cè)距應(yīng)用中,低信噪比下微弱信號(hào)的檢測(cè)是影響最遠(yuǎn)有效測(cè)程及測(cè)距穩(wěn)定性的關(guān)鍵問(wèn)題。造成信噪比低的原因,一方面目標(biāo)返回信號(hào)本身就已特別微弱;另一方面由于強(qiáng)噪聲干擾,比如背景噪聲,使得信噪比降低。目前,基于TDC專用芯片和FPGA是實(shí)現(xiàn)高分辨率測(cè)距的主流研究方向。閆菲菲等人利用FPGA控制AMS公司的TDC-GPX2芯片,實(shí)現(xiàn)了一款4通道同時(shí)測(cè)量,測(cè)量精度達(dá)到60ps[1];張彬彬等采用兩片時(shí)間-數(shù)字轉(zhuǎn)換芯片TDC-GP2,將脈沖計(jì)數(shù)法和數(shù)字內(nèi)插法相結(jié)合,使測(cè)量精確度能夠達(dá)到1ns,分辨率可以達(dá)到100ps[2];王巍等利用Virtex-5中專用進(jìn)位鏈CARRY4構(gòu)造的延遲鏈,對(duì)時(shí)鐘周期進(jìn)行內(nèi)插以得到更高精度的測(cè)量,精度約為25ps[3];雷琳君等采用數(shù)字計(jì)數(shù)法結(jié)合數(shù)字延遲線插入法的技術(shù),時(shí)間分辨率為500ps,標(biāo)準(zhǔn)偏差小于270ps[4]。以上文獻(xiàn)雖然都已經(jīng)實(shí)現(xiàn)了較高的時(shí)間分辨率,但是都沒(méi)有對(duì)低信噪比下測(cè)距的處理方法進(jìn)行研究和說(shuō)明。在實(shí)際測(cè)距應(yīng)用中,低信噪比情況下,由于噪聲的影響,鑒別出的回波stop數(shù)字信號(hào)的位置會(huì)出現(xiàn)較大抖動(dòng);噪聲過(guò)大時(shí),非目標(biāo)位置也會(huì)出現(xiàn)stop,這樣會(huì)導(dǎo)致測(cè)距結(jié)果有較大波動(dòng),甚至出現(xiàn)錯(cuò)誤的值。現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)以其靈活可編程性、低延遲和低功耗等特性目前已成為電子系統(tǒng)的重要組成部分。本文基于Altera CycloneII系列FPGA,設(shè)計(jì)并實(shí)現(xiàn)了一種適合低信噪比情況下使用的測(cè)距算法,可有效提高測(cè)距穩(wěn)定性,無(wú)需改動(dòng)硬件,可直接應(yīng)用于激光測(cè)距中。
2 算法原理
實(shí)際測(cè)距應(yīng)用中,一般情況下,噪聲是隨機(jī)的,而信號(hào)的位置相對(duì)固定。所以,在低信噪比情況下,即使多次測(cè)距存在較大波動(dòng),但多數(shù)測(cè)距結(jié)果還是圍繞在實(shí)際測(cè)距結(jié)果周圍的,算法可以提取出這些有效數(shù)據(jù),通過(guò)平均計(jì)算得到相對(duì)穩(wěn)定的測(cè)距結(jié)果;即使出現(xiàn)測(cè)距結(jié)果大概率都是錯(cuò)誤的情況,算法也可以進(jìn)行分析處理,使當(dāng)前測(cè)距結(jié)果無(wú)效。算法首先對(duì)N個(gè)距離結(jié)果進(jìn)行從大到小的排序;然后按照允許最大偏差進(jìn)行分段處理并對(duì)段內(nèi)數(shù)據(jù)進(jìn)行標(biāo)記;對(duì)分段后數(shù)據(jù)分析得到最小有效距離;再根據(jù)最小有效距離反推并提取出接近實(shí)際距離的有效數(shù)據(jù)及個(gè)數(shù),剔除掉偏離實(shí)際距離過(guò)大的數(shù)據(jù);接下來(lái)判斷有效數(shù)據(jù)個(gè)數(shù)是否大于閾值,若大于閾值則對(duì)挑選出來(lái)的有效數(shù)據(jù)進(jìn)行平均運(yùn)算,得到最終測(cè)距結(jié)果;如果有效數(shù)據(jù)個(gè)數(shù)不大于閾值,則測(cè)距結(jié)果無(wú)效。這里設(shè)置閾值,是防止信噪比過(guò)低時(shí),噪聲的個(gè)數(shù)可能大于信號(hào)的個(gè)數(shù),如果閾值過(guò)低,則測(cè)距會(huì)出現(xiàn)錯(cuò)值。
為了驗(yàn)證本文算法,對(duì)1200米處建筑物進(jìn)行測(cè)試,共測(cè)試10組,每組測(cè)量20次。由表1看到,每組內(nèi)數(shù)據(jù)波動(dòng)較大,最大最小差值在15m;將20個(gè)數(shù)據(jù)取平均后,再比較10組的平均結(jié)果,最大1218.5m和最小1217.2m,差值僅為1.3米。由此可見(jiàn),本算法可有效提高測(cè)距穩(wěn)定性,減小距離波動(dòng)。
3 算法實(shí)現(xiàn)
本文選用Altera公司CycloneII系列的EP4CE22E22I7芯片來(lái)實(shí)現(xiàn)測(cè)距算法,基于QuartusII13.0平臺(tái)進(jìn)行開(kāi)發(fā),采用VHDL語(yǔ)言結(jié)合電路圖輸入法完成最終設(shè)計(jì)。外部輸入時(shí)鐘采用40MHz晶振,通過(guò)PLL得到200MHz時(shí)鐘,供算法單元使用。下面結(jié)合表2闡述算法的實(shí)現(xiàn)。
冒泡排序是本算法的核心和基礎(chǔ),必須對(duì)N個(gè)隨機(jī)且大小不等的結(jié)果進(jìn)行排序,才能準(zhǔn)確找到實(shí)際距離對(duì)應(yīng)的有效數(shù)據(jù)。本部分實(shí)現(xiàn)表2中A列到B列的轉(zhuǎn)換。如圖2,該模塊通過(guò)兩個(gè)FIFO、兩個(gè)最大值檢測(cè)模塊、FIFO1控制模塊、排序數(shù)據(jù)輸出模塊完成排序功能。這部分重點(diǎn)在于冒泡排序的邏輯關(guān)系控制,包括數(shù)據(jù)、FIFO的讀寫(xiě)信號(hào)、比較結(jié)束標(biāo)志信號(hào)等。整體上看,F(xiàn)IFO1控制模塊輸出測(cè)距結(jié)果給FIFO1,F(xiàn)IFO1的輸出給到最大值檢測(cè)模塊1,最大值檢測(cè)模塊1將最大值maxout1輸出給排序數(shù)據(jù)輸出模塊,其余數(shù)據(jù)elsedata1傳給FIFO2,完成一次最大值檢測(cè);同樣,F(xiàn)IFO2的輸出給到最大值檢測(cè)模塊2,再將最大值檢測(cè)模塊2的最大值maxout2輸出給排序數(shù)據(jù)輸出模塊,其余數(shù)據(jù)elsedata2通過(guò)FIFO1控制模塊傳給FIFO1,如此反復(fù),直到所有距離數(shù)據(jù)比較完成。
FIFO1控制模塊負(fù)責(zé)輸出數(shù)據(jù)和寫(xiě)信號(hào)給FIFO1。該模塊有兩個(gè)數(shù)據(jù)輸入,一個(gè)是N次全部測(cè)距數(shù)據(jù),一個(gè)是最大值檢測(cè)2模塊的輸出elsedata2。該模塊只在首次循環(huán)比較輸出N次測(cè)距結(jié)果,同時(shí)輸出FIFO1的寫(xiě)信號(hào),其余循環(huán)全部選擇輸出elsedata2及相應(yīng)的FIFO1寫(xiě)信號(hào)。FIFO1和FIFO2為緩存模塊,雖然比較的數(shù)據(jù)不定長(zhǎng),但由于最大值為N,F(xiàn)IFO的深度可以取定值。本文N為20,F(xiàn)IFO深度均設(shè)置為32。
最大值檢測(cè)模塊,與FIFO配合,得到當(dāng)前FIFO緩存中最大的數(shù)據(jù),其余數(shù)據(jù)輸出傳給另一個(gè)FIFO,同時(shí)輸出另一個(gè)FIFO的寫(xiě)信號(hào)以及比較結(jié)束標(biāo)志信號(hào)。以最大值檢測(cè)1模塊為例,其需要輸出讀控制信號(hào)fiford1給FIFO1,當(dāng)前讀出的數(shù)據(jù)與上一個(gè)數(shù)據(jù)進(jìn)行比較,若當(dāng)前數(shù)據(jù)較大,則認(rèn)為其為最大值(相等時(shí)本文算法仍認(rèn)為當(dāng)前數(shù)據(jù)為最大),將上一個(gè)數(shù)據(jù)輸出給FIFO2;若當(dāng)前數(shù)據(jù)較小,將上一個(gè)數(shù)據(jù)認(rèn)為是最大值,將當(dāng)前數(shù)據(jù)輸出給FIFO2。這里需要注意,在輸出數(shù)據(jù)給FIFO2的同時(shí),要同時(shí)輸出FIFO2的寫(xiě)控制信號(hào)fifowr2,保證數(shù)據(jù)能夠有效緩存到FIFO2中。另外,最大值檢測(cè)模塊1還需輸出數(shù)據(jù)比較結(jié)束標(biāo)志信號(hào)maxend1,只要FIFO1的空標(biāo)志信號(hào)empty1有效,則maxend1拉高,該標(biāo)志信號(hào)提供給排序數(shù)據(jù)輸出模塊。
排序數(shù)據(jù)輸出模塊,負(fù)責(zé)將兩個(gè)最大值檢測(cè)模塊的數(shù)據(jù)整合,由大到小順序輸出。數(shù)據(jù)整合的時(shí)序是依靠?jī)蓚€(gè)最大值檢測(cè)模塊的比較完成標(biāo)志信號(hào)maxend判斷的,只要maxend1或maxend2任意一個(gè)有效,則存儲(chǔ)對(duì)應(yīng)的數(shù)據(jù)。該模塊內(nèi)部也是需要一個(gè)FIFO配合的,即maxend1或maxend2有效,則FIFO進(jìn)行寫(xiě)操作,直至N個(gè)數(shù)據(jù)全部寫(xiě)完。
分段模塊,對(duì)排序結(jié)果以允許最大偏差為依據(jù)進(jìn)行分段處理,并對(duì)段內(nèi)數(shù)據(jù)進(jìn)行位置標(biāo)記。本部分實(shí)現(xiàn)表2中B列到C列的轉(zhuǎn)換。如圖3為分段模塊的流程圖,dataout是分段輸出,segbegin是當(dāng)前段的首位數(shù)據(jù),datain是FIFO當(dāng)前輸出,cnt為段位置。若接收到開(kāi)始分段信號(hào),則開(kāi)始FIFO讀操作,此時(shí)cnt、segbegin初始值全部為0,dataout為當(dāng)前FIFO輸出并上cnt;接下來(lái)判斷empty信號(hào)是否為0,是則再讀FIFO,讀出的數(shù)據(jù)datain與segbegin做差,并判斷差值是否小于最大偏差,是則將segbegin仍作為當(dāng)前段段首,cnt加1,dataout為datain并上cnt;若差值小于最大偏差,則datain作為當(dāng)前段段首,cnt為0,dataout為datain并上cnt。反復(fù)比較輸出,直到FIFO為空,即empty為1。如表2,假設(shè)允許最大偏差為10m,B列中1521后面的數(shù)是1328,差值大于10,則分別為1段,所在段位置均為0;又如1221.7為當(dāng)前段首位數(shù)據(jù),與1220.2之差小于最大偏差,段位置分別為0和1;直到第19個(gè)數(shù)據(jù)1205.2,其與段首位數(shù)據(jù)1221.7差值大于最大偏差,則將1205.2歸為下一段,段位置為0。
最小有效距離模塊,就是將最大的段位置對(duì)應(yīng)的數(shù)據(jù)找出來(lái),如表2,C列中最大位置為14,對(duì)應(yīng)的數(shù)據(jù)為1213.5,則D列最小有效距離為1213.5m。本文算法將cnt取8位,則比較時(shí)比較數(shù)據(jù)的低八位即可。
提取有效距離數(shù)據(jù)模塊,根據(jù)最小有效距離數(shù)據(jù),反推出冒泡排序后的有效數(shù)據(jù)并得到其個(gè)數(shù)。即所有數(shù)據(jù)依次與最小有效數(shù)據(jù)比較,若差值小于允許最大偏差,則將數(shù)據(jù)輸出,否則剔除。本部分實(shí)現(xiàn)表2中B列到E列和F列的轉(zhuǎn)換。如圖4,為該模塊實(shí)現(xiàn)流程圖,data1s到data20s為20個(gè)數(shù)據(jù)的中間變量,data1到data20為輸出的20個(gè)數(shù)據(jù),cntout為有效數(shù)據(jù)個(gè)數(shù)。首先判斷是否接收到開(kāi)始提取信號(hào),若收到,則判斷empty是否為0,是則繼續(xù)讀FIFO,若FIFO輸出當(dāng)前數(shù)據(jù)datain大于最小有效距離,且差值小于允許最大偏差,則cnt加1,data20s到data1s移位1次,將datain賦值給data1s,這樣能保證滿足條件的datain循環(huán)移位輸出;若datain不符合判斷條件,則data20s到data1s保持不變。如此循環(huán),直至empty為1,所有有效數(shù)據(jù)提取完成,最后將變量data1s到data20s的數(shù)據(jù)給到20個(gè)輸出端,同時(shí)將cnt+1賦值給cntout。如表2,將B列數(shù)據(jù)與D中1213.5比較,B列中大于1213.5且差值小于最大偏差的,即為有效距離數(shù)據(jù),見(jiàn)E列;F列為有效數(shù)據(jù)個(gè)數(shù)。
平均模塊,首先判斷個(gè)數(shù)是否大于閾值,是則認(rèn)為本次測(cè)距有效,進(jìn)行平均運(yùn)算;否則認(rèn)為本次測(cè)距無(wú)效。平均運(yùn)算實(shí)現(xiàn)相對(duì)簡(jiǎn)單,本文利用FPGA內(nèi)部的加法和除法IP核實(shí)現(xiàn)。本文閾值設(shè)置為10,如 F列中數(shù)據(jù)為15大于10,則本次測(cè)距有效。將E列中的15個(gè)數(shù)據(jù)取和,然后除以F列個(gè)數(shù)即可得到平均結(jié)果G列的數(shù)據(jù)。
4 測(cè)試結(jié)果及分析
基于本公司研制的激光測(cè)距儀,對(duì)本文算法程序進(jìn)行驗(yàn)證測(cè)試。對(duì)1200米處建筑物目標(biāo)進(jìn)行測(cè)試,圖5為示波器采集的激光器觸發(fā)信號(hào)(1通道)和回波信號(hào)(2通道),延遲約為8us,上面為取樣結(jié)果,下面為平均16次結(jié)果。由圖5可看到,取樣時(shí)基本無(wú)法辨別信號(hào)位置,而平均后信號(hào)位置則相對(duì)明顯,進(jìn)一步驗(yàn)證了平均算法的有效性。圖6為改算法前后對(duì)1200米處建筑物的20次測(cè)距結(jié)果對(duì)比,可看到,改算法后距離波動(dòng)由改算法前的約±7m減小到約±1m。
5 結(jié)論
基于現(xiàn)場(chǎng)可編程門(mén)陣列,設(shè)計(jì)并實(shí)現(xiàn)了提高低信噪比情況下測(cè)距穩(wěn)定性的算法,可有效提高反射率低或遠(yuǎn)距離目標(biāo)測(cè)距的穩(wěn)定性。經(jīng)測(cè)試,1200米處建筑物目標(biāo)波動(dòng)可控制在±1m。算法完全在一片F(xiàn)PGA上實(shí)現(xiàn),可根據(jù)應(yīng)用場(chǎng)合靈活增加或修改功能,促進(jìn)測(cè)距單元的小型化,適合激光測(cè)距的應(yīng)用。目前測(cè)距波動(dòng)通過(guò)平均法可控制在±1m內(nèi),在以后的改進(jìn)中可對(duì)算法進(jìn)行優(yōu)化,將波動(dòng)進(jìn)一步降低。
參考文獻(xiàn):
[1]閆菲菲, 馬紅皎, 何在民, 等.基于FPGA和TDC芯片的高精度時(shí)間間隔計(jì)數(shù)器研制.時(shí)間頻率學(xué)報(bào).2019,42(1):33~42.
[2]張彬彬, 崔永俊, 楊兵.基于TDC-GP2的高精度時(shí)間間隔測(cè)量系統(tǒng)設(shè)計(jì).電子器件.2016,39(5): 1108~1112.
[3]王巍, 周浩, 熊拼搏, 等.一種基于FPGA進(jìn)位鏈的時(shí)間數(shù)字轉(zhuǎn)換器.微電子學(xué).2016,46(6): 778~781.
[4]雷琳君, 楊燕, 陳衛(wèi)標(biāo). 星載激光測(cè)距儀的高精度時(shí)間間隔測(cè)量單元. 中國(guó)激光. 2007, 34(10):1422~1426.
[5]范歡歡. 基于 FPGA 的時(shí)間數(shù)字轉(zhuǎn)換電路的若干關(guān)鍵技術(shù)的研究[D]. 合肥:中國(guó)科學(xué)技術(shù)大學(xué)博士論文, 2015:14~18.
[6]黃海艦. 基于 FPGA 時(shí)間內(nèi)插技術(shù)的TDC設(shè)計(jì)[D]. 武漢:華中師范大學(xué)物理科學(xué)與技術(shù)學(xué)院碩士論文, 2013:6~8.
[7]徐振. 基于TDC的時(shí)間間隔測(cè)量技術(shù)的研究[M].哈爾濱:哈爾濱工業(yè)大學(xué).2008(1) :10~15.