毛有明,岱 欽,吳凱旋,耿 岳,李業(yè)秋
(沈陽(yáng)理工大學(xué) 理學(xué)院,遼寧 沈陽(yáng) 110159)
脈沖激光測(cè)距中基于多層嵌套狀態(tài)機(jī)的控制系統(tǒng)
毛有明,岱 欽,吳凱旋,耿 岳,李業(yè)秋
(沈陽(yáng)理工大學(xué) 理學(xué)院,遼寧 沈陽(yáng) 110159)
設(shè)計(jì)了基于FPGA與TDC-GP21的高精度、高重頻的激光飛行時(shí)間測(cè)量系統(tǒng)。采用多層嵌套狀態(tài)機(jī)作為控制系統(tǒng),構(gòu)建SPI通信接口實(shí)現(xiàn)對(duì)TDC-GP21的配置、控制以及讀取測(cè)量結(jié)果。使用TimeQuest時(shí)序分析工具對(duì)系統(tǒng)進(jìn)行時(shí)序約束分析。實(shí)驗(yàn)結(jié)果表明,系統(tǒng)重復(fù)測(cè)量頻率達(dá)40KHz,測(cè)量精度達(dá)±100ps,可以在高頻條件下穩(wěn)定工作。
激光測(cè)距;FPGA;TDC-GP21;有限同步狀態(tài)機(jī);Verilog HDL
脈沖激光測(cè)距技術(shù)廣泛應(yīng)用于現(xiàn)代軍工、工業(yè)、航天等領(lǐng)域[1],隨著集成電路的飛速發(fā)展,數(shù)字法插入法測(cè)量時(shí)間間隔已取得突破性進(jìn)展,并廣泛應(yīng)用于激光測(cè)距系統(tǒng)中,可以使用專用測(cè)量芯片或精密延遲線完成高精度時(shí)間間隔測(cè)量[2]。論文設(shè)計(jì)實(shí)現(xiàn)了基于FPGA和TDC-GP21的高速激光飛行時(shí)間測(cè)量系統(tǒng),通過(guò)多層嵌套狀態(tài)機(jī)構(gòu)成控制系統(tǒng),提高了測(cè)量頻率和精度。
激光測(cè)距系統(tǒng)主要由以下幾個(gè)部分組成:激光發(fā)射模塊、接收模塊、跨阻放大模塊、時(shí)刻鑒別模塊、時(shí)間間隔測(cè)量模塊以及核心控制元件FPGA,各個(gè)模塊之間的聯(lián)系如圖1所示。
激光二極管發(fā)射脈沖寬度為40ns的激光脈沖,通過(guò)分光將其中一小部分進(jìn)行光電轉(zhuǎn)換后作為開(kāi)始信號(hào),剩余激光經(jīng)過(guò)光學(xué)準(zhǔn)直系統(tǒng)后發(fā)射;當(dāng)激光到達(dá)被測(cè)目標(biāo)表面后部分能量被反射,經(jīng)過(guò)APD接收、跨阻放大和時(shí)刻鑒別電路后,作為結(jié)束信號(hào)送到時(shí)間間隔測(cè)量單元;根據(jù)測(cè)量光脈沖從發(fā)射到返回接收機(jī)的時(shí)間t,可以計(jì)算出測(cè)距機(jī)與待測(cè)目標(biāo)之間的距離。
圖1 激光測(cè)距系統(tǒng)原理框圖
激光測(cè)距精度主要取決于時(shí)間間隔測(cè)量精確度、接收電路的帶寬、激光脈沖的上升沿和探測(cè)器的信噪比[3],其中時(shí)間間隔測(cè)量精度對(duì)激光測(cè)距精度的影響至關(guān)重要。
高精度時(shí)間間隔測(cè)量技術(shù)的種類可以分成模擬法和數(shù)字法。數(shù)字插入法是在數(shù)字法的基礎(chǔ)上,通過(guò)插入法提高測(cè)量精度,包括延遲線插入法、時(shí)幅轉(zhuǎn)換插入法和時(shí)間放大插入法。數(shù)字插入法繼承了數(shù)字法的測(cè)量范圍大和線性好的優(yōu)點(diǎn),又提高了時(shí)間間隔測(cè)量的精度,因此數(shù)字插入法成為目前主要的高精度時(shí)間間隔測(cè)量方法[4]。
時(shí)間間隔測(cè)量原理[5]如圖2所示,時(shí)間間隔可以表示成Tc=Ts+nTd-Te,其中nTd為參考時(shí)鐘CLK的周期數(shù),Ts和Te分別為觸發(fā)信號(hào)和參考信號(hào)CLK的上升沿之間的時(shí)間差。
設(shè)計(jì)使用TDC-GP21,采用延遲線插入法技術(shù),以信號(hào)通過(guò)內(nèi)部延遲單元來(lái)測(cè)量時(shí)間間隔,如圖3所示。
TDC-GP21內(nèi)部延遲單元的單通道測(cè)量精度為45ps,由Start信號(hào)觸發(fā),Stop信號(hào)截止,由環(huán)形振蕩器的位置可得Ts和Te,由粗值計(jì)數(shù)器的計(jì)數(shù)值可得nTd,從而計(jì)算出Start信號(hào)和Stop信號(hào)之間時(shí)間間隔。
圖2 TDC-GP21時(shí)間間隔測(cè)量單元
圖3 TDC-GP21時(shí)間間隔測(cè)量單元
TDC-GP21通過(guò)內(nèi)部校準(zhǔn)測(cè)量來(lái)補(bǔ)償由溫度和電壓變化而引起的誤差,適用于高精度時(shí)間間隔測(cè)量。
圖4 TDC-GP21校準(zhǔn)測(cè)量原理圖
如圖4所示:由FPGA配置TDC-GP21進(jìn)行校準(zhǔn)測(cè)量,首先TDC-GP21通過(guò)內(nèi)部延遲單元測(cè)量時(shí)間間隔;然后測(cè)量一個(gè)和兩個(gè)外部基準(zhǔn)時(shí)鐘信號(hào)Cal1和Cal2;最后ALU單元通過(guò)Cal1和Cal2對(duì)測(cè)量結(jié)果進(jìn)行校準(zhǔn),補(bǔ)償由溫度和電壓變化而引起的誤差,并將校準(zhǔn)結(jié)果存到結(jié)果寄存器中。此時(shí)測(cè)量結(jié)果是外部時(shí)鐘的倍數(shù),即相對(duì)時(shí)間。校準(zhǔn)結(jié)果和待測(cè)時(shí)間間隔可表示為如下公式:
(1)
Time=RES_X×Tref×2CLKHSDIV
(2)
TDC-GP21提供4線SPI串行接口,支持時(shí)鐘相位(Clock Phase Bit)=1,時(shí)鐘極性(Clock Polarity Bit)=0的傳輸模式,TDC-GP21的讀寫時(shí)序如圖5和圖6所示。
圖5 TDC-GP21寫時(shí)序
圖6 TDC-GP21讀時(shí)序
其中SSN為讀寫使能信號(hào),低電平有效,SCK為串口通信時(shí)鐘,MOSI端口接收主機(jī)的配置信息和操作指令,MISO端口發(fā)送從機(jī)的狀態(tài)信息和測(cè)量結(jié)果。在通信過(guò)程中,由主機(jī)產(chǎn)生SSN使能信號(hào)和SCK時(shí)鐘信號(hào),MOSI和MISO在SCK時(shí)鐘的下降沿發(fā)送指令或接收數(shù)據(jù)。由于TDC-GP21不能連續(xù)進(jìn)行寫操作,每個(gè)寄存器必須單獨(dú)尋址,這也就意味著在每次讀寫操作時(shí)必須先由主機(jī)發(fā)送操作碼,并且讀寫操作之間的最小時(shí)間間隔大于16ns。
由TDC-GP21的時(shí)序要求可知,系統(tǒng)可以通過(guò)SPI接口讀取TDC的測(cè)量結(jié)果,但TDC-GP21規(guī)定了特定的讀寫時(shí)序和配置代碼,F(xiàn)PGA內(nèi)置的SPI接口不能靈活處理TDC的讀寫時(shí)序。通過(guò)以上分析,論文設(shè)計(jì)了基于多級(jí)嵌套狀態(tài)機(jī)的SPI通信接口,可以快速處理TDC的讀寫時(shí)序要求。
實(shí)驗(yàn)使用Altera公司的cyclone II系列器件EP2C5T114C6和TDC-GP21構(gòu)建測(cè)量系統(tǒng),如圖7所示。
圖7 FPGA與TDC-GP21硬件電路圖
系統(tǒng)工作時(shí)鐘為50MHz,通過(guò)FPGA模擬SPI接口,對(duì)TDC-GP21進(jìn)行配置和初始化;并發(fā)射觸發(fā)脈沖,觸發(fā)半導(dǎo)體激光二極管產(chǎn)生脈寬為40ns的激光脈沖,同時(shí)觸發(fā)TDC-GP21工作;FPGA通過(guò)SPI的主收從發(fā)端口(MISO)讀取測(cè)量結(jié)果進(jìn)行后續(xù)數(shù)據(jù)處理和傳輸;TDC-GP21通過(guò)測(cè)量4MHz外部基準(zhǔn)時(shí)鐘進(jìn)行數(shù)據(jù)校準(zhǔn)。
系統(tǒng)以FPGA作為核心控制器件,以TDC-GP21的測(cè)量流程為基礎(chǔ)構(gòu)建系統(tǒng),系統(tǒng)的工作流程如圖8所示。
圖8 系統(tǒng)流程圖
當(dāng)系統(tǒng)上電后,首先由FPGA通過(guò)SPI模塊對(duì)TDC-GP21進(jìn)行配置及初始化,然后系統(tǒng)進(jìn)入測(cè)量階段,當(dāng)TDC-GP21收到停止信號(hào)后對(duì)測(cè)量值進(jìn)行校準(zhǔn)測(cè)量和ALU校準(zhǔn),最后將測(cè)量結(jié)果存到結(jié)果寄存器中,并產(chǎn)生中斷。
FPGA接收到TDC的中斷標(biāo)志后,系統(tǒng)讀取TDC的狀態(tài)寄存器并判斷TDC的狀態(tài),當(dāng)TDC溢出時(shí),終端顯示TDC溢出信息,程序返回初始化階段;當(dāng)滿足系統(tǒng)測(cè)量范圍時(shí),F(xiàn)PGA通過(guò)SPI模塊讀取結(jié)果寄存器,然后返回初始化階段,準(zhǔn)備進(jìn)入下一次測(cè)量,同時(shí)將數(shù)據(jù)送到高速乘法器進(jìn)行計(jì)算并將結(jié)果通過(guò)RS485接口傳送給上位機(jī),在終端上顯示測(cè)量結(jié)果;當(dāng)接收到上位機(jī)的停止命令時(shí),F(xiàn)PGA控制TDC完成當(dāng)前測(cè)量后結(jié)束程序。
為了實(shí)現(xiàn)簡(jiǎn)潔有效的SPI通信時(shí)序,充分利用FPGA的內(nèi)部資源,實(shí)驗(yàn)采用Verilog HDL硬件描述語(yǔ)言設(shè)計(jì)有限同步狀態(tài)機(jī)(FSM)控制TDC-GP21進(jìn)行時(shí)間間隔測(cè)量,并在系統(tǒng)中嵌套了3個(gè)從狀態(tài)機(jī),分別實(shí)現(xiàn)收發(fā)8、16和32位的數(shù)據(jù)指令,主從狀態(tài)機(jī)轉(zhuǎn)換圖如圖9和圖10所示。
圖9 主狀態(tài)機(jī)的時(shí)序圖
圖10 多層嵌套狀態(tài)機(jī)的邏輯圖
如圖10所示,En為系統(tǒng)使能信號(hào),F(xiàn)為通信標(biāo)志位,當(dāng)F=1時(shí)主狀態(tài)機(jī)控制從機(jī)進(jìn)行通信,當(dāng)通信結(jié)束后標(biāo)志位置0,I為TDC-GP21的中斷端口,低電平有效。主狀態(tài)機(jī)輸出控制字及控制信號(hào)啟動(dòng)從狀態(tài)機(jī)進(jìn)入工作狀態(tài),操作完成后從機(jī)發(fā)出相應(yīng)狀態(tài)信號(hào)至主機(jī)進(jìn)行下一步操作。主從狀態(tài)機(jī)之間通過(guò)收發(fā)結(jié)束標(biāo)志位和收發(fā)數(shù)據(jù)位寬完成相互嵌套,同時(shí)為了避免SPI接口進(jìn)行雙全工通信時(shí)要同時(shí)捕捉時(shí)鐘的上升沿和下降沿,可能由于時(shí)鐘漂移導(dǎo)致?tīng)顟B(tài)機(jī)工作不可靠[6]。實(shí)驗(yàn)采用時(shí)鐘上升沿的工作方式,增強(qiáng)了狀態(tài)機(jī)的可靠性[7]。
實(shí)驗(yàn)基于QuartusII軟件平臺(tái)進(jìn)行開(kāi)發(fā)調(diào)試,使用TimeQuest時(shí)序分析工具對(duì)系統(tǒng)的時(shí)序進(jìn)行約束,時(shí)序約束是FPGA開(kāi)發(fā)過(guò)程中不可忽視的一個(gè)步驟,可以指導(dǎo)綜合和布局布線階段的優(yōu)化算法[8],獲得最優(yōu)的器件性能,使設(shè)計(jì)代碼最大可能反映設(shè)計(jì)意圖。實(shí)驗(yàn)通過(guò)TimeQuest時(shí)序分析工具,對(duì)全局時(shí)鐘、寄存器建立和保持時(shí)間分別進(jìn)行約束,確保系統(tǒng)的時(shí)序收斂。通過(guò)JTAG將程序下載到FPGA最小系統(tǒng)板中,使用示波器觀察系統(tǒng)通信波形,如圖10所示。
圖11 激光測(cè)距系統(tǒng)的波形圖
在圖11中,CH1通道為SCK通信時(shí)鐘信號(hào),CH2通道為SSN使能信號(hào),CH3通道為MISO端口信號(hào)。由圖可知系統(tǒng)通信波形良好,狀態(tài)機(jī)正常運(yùn)轉(zhuǎn),模擬SPI接口時(shí)序清晰,無(wú)明顯毛刺,系統(tǒng)在高頻測(cè)量情況下能夠保持穩(wěn)定的工作狀態(tài),系統(tǒng)重復(fù)測(cè)量頻率達(dá)40kHz。
實(shí)驗(yàn)采用FPGA脈沖信號(hào)模擬激光回波信號(hào)進(jìn)行時(shí)間間隔測(cè)量。在10~100ns范圍內(nèi)進(jìn)行重復(fù)測(cè)量,測(cè)量結(jié)果如表1所示。
表1 系統(tǒng)測(cè)量結(jié)果 ns
通過(guò)軟件修正,分析測(cè)量結(jié)果,并進(jìn)行線性誤差補(bǔ)償,減小電路延遲和光學(xué)接收系統(tǒng)的非線性因素對(duì)系統(tǒng)的影響,系統(tǒng)測(cè)量精度可達(dá)±100ps。
設(shè)計(jì)了基于FPGA和TDC-GP21的激光測(cè)距系統(tǒng)。構(gòu)建多層嵌套有限狀態(tài)機(jī),實(shí)現(xiàn)高速SPI通信接口,完成對(duì)TDC-GP21的配置和控制。使用TimeQuest時(shí)序分析工具對(duì)系統(tǒng)進(jìn)行時(shí)序約束,提高了系統(tǒng)的高頻穩(wěn)定性。系統(tǒng)重復(fù)測(cè)量頻率為40KHz,測(cè)量精度為±100ps,可以滿足快速精密的測(cè)距要求。
[1]張黎明,張毅,趙欣.基于TDC的激光測(cè)距傳感器飛行時(shí)間測(cè)量研究[J].傳感器與微系統(tǒng),2011,30(12):71-74.
[2]馮志輝,劉恩海,岳永堅(jiān).基于FPGA延遲線插入法的半導(dǎo)體激光測(cè)距[J].光電工程,2010,37(4):53-59.
[3]陳千頌,楊成偉,潘志文,等.激光飛行時(shí)間測(cè)距關(guān)鍵技術(shù)進(jìn)展[J].激光與紅外,2002,32(1):7-10.
[4]吳剛,李春來(lái),劉銀年.脈沖激光測(cè)距系統(tǒng)中高精度時(shí)間間隔測(cè)量模塊的研究[J].紅外與毫米波學(xué)報(bào),2007,26(3):214-216.
[5]張延,黃佩誠(chéng).高精度時(shí)間間隔測(cè)量技術(shù)與方法[J].天文學(xué)進(jìn)展,2006,24(1):3-4.
[6]黃新財(cái),佃松宜,汪道輝.基于FPGA的高速連續(xù)數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)[J].微計(jì)算機(jī)信息,2005,21(2):58-59.
[7]傘景輝,常青.基于FPGA的乘法器實(shí)現(xiàn)結(jié)構(gòu)分析與仿真[J].微處理機(jī),2004,(3):6-7.
[8]周海斌.靜態(tài)時(shí)序分析在高速FPGA設(shè)計(jì)中的應(yīng)用[J].電子工程師,2005,31(11):4-5.
AControlSystemBasedonMultiple-levelFSMofLaserDistanceMeasurement
MAO Youming,DAI Qin,WU Kaixuan,GENG Yue,LI Yeqiu
(Shenyang Ligong University,Shenyang 110159,China)
A high speed and high precision laser time of flight (TOF) distance measurement system based on FPGA and TDC-GP21 was introduced.Multiple-level FSM was used as control system,and SPI interface was established to configure and control TDC-GP21 and receive result of measurement.Timing constraints was analyzed by TimeQuest.The experiment results showed that measurement repetition rate of is 40 KHz,the ranging precision of is ±100ps and high frequency stability can be achieved.
laser distance measurement;FPGA;TDC-GP21;FSM;Verilog HDL
2013-11-01
國(guó)家自然科學(xué)基金(61378075,61378042);遼寧省高校杰出青年學(xué)者成長(zhǎng)計(jì)劃(LJQ2013022);遼寧省教育廳科技項(xiàng)目(L2012070)
毛有明(1988—),男,碩士研究生;通信作者:岱欽(1977—),男,副教授,博士,研究方向:固體激光技術(shù).
1003-1251(2014)05-0001-05
TN247
A
馬金發(fā))