閆德立, 王偉明, 靳邵云, 何亞軒
(石家莊鐵道大學電氣與電子工程學院,河北 石家莊 050043)
?
基于FPGA與TDC-GP22的連續脈沖測距系統研究
閆德立,王偉明,靳邵云,何亞軒
(石家莊鐵道大學電氣與電子工程學院,河北 石家莊 050043)
摘要:針對傳統的硬件設計難以實現連續窄脈沖測距的難題,提出了一種FPGA與TDC-GP22相結合的連續脈沖測距的方案。詳細介紹了FPGA完成TDC-GP22初始化、工作方式配置以及測量結果讀取的具體實現方法,并根據TDC-GP22兩種不同的測量范圍設計了切換邏輯,實現了大動態范圍的連續脈沖測距。實驗結果表明,該方案脈沖間隔測量精度小于2 ns,滿足了脈沖測距的要求。
關鍵詞:TDC-GP22;FPGA;連續脈沖測距
精確魯棒的連續脈沖測距系統在工程、軍事等眾多領域有著重要的應用價值。傳統的脈沖測距系統大多采用MCU作為主控制器,存在擴展性差、實時性差等問題,且發射脈沖寬度較大,影響測量精度。文章設計并實現了一種基于GP22與FPGA相結合的方法來實現脈沖測距,較好的彌補了MCU系統方面存在的諸多不足。
TDC-GP22是德國ACM公司生產的一款高精度的時間數字轉換芯片,在激光脈沖測距、超聲波測距等領域有著廣泛應用[1-4]。設計采用FPGA為控制計算單元,利用其內部延時線產生的可調窄脈沖實現窄脈沖的發射。此外,FPGA除了可實現GP22的初始化、配置和讀取測量結果等功能外,還可很方便地在內部加入其他并行模塊實現更復雜的功能,特別適合于激光雷達系統中的連續脈沖測距和并行測角等應用。文章以Xilinx Virtex-4系列FPGA為核心,設計并實現了基于GP22的連續脈沖測距系統。
1 系統硬件設計
TDC-GP22有兩種工作方式:測量范圍1和測量范圍2,二者對應的最小測量時間分別是3.5 ns和500 ns,最大測量時間分別是2.4 μs和4 ms。測量范圍1應用內部邏輯門的延時來測量時間間隔,精度很高,但是測量的時間比較短;測量范圍2采用精確計數器與粗值計數器通過計時鐘周期來測量時間,精度較低,但測量時間較長。顯然,測量范圍1適用于較近的測量距離,而測量范圍2適合較遠的部分。若測量量程覆蓋兩個測量范圍,則在配置GP22時還需考慮二者的切換問題,設計的電路原理圖如圖1所示。
其中,GP22 I/O口電壓為2.5~3.6 V,因此需將FPGA對應的BANK設置為3.3 V供電。將GP22的各個功能腳與FPGA連接,控制其使能、對其進行配置,以及接收中斷信號并進行數據讀取。GP22的配置與數據讀取采用4線制SPI接口,其脈沖測量腳分別與發射脈沖輸入和接收脈沖輸入連接,測量二者的時間間隔;中斷輸出腳也連接至FPGA用于觸發數據讀取。此外,GP22為高端數字模擬混合器件,其電源應該具有高電容性和低電感性。
2 配置方法
系統配置主要包括窄脈沖的產生、下層模塊讀寫配置、上層模塊配置及基于狀態機總體配置四部分。首先利用FPGA內部窄脈沖發生電路產生觸發測距窄脈沖,然后建立FPGA與GP22的通信。FPGA連續產生測距脈沖和測量結果讀寫時序。GP22控制接口采用4線制SPI,需要按照嚴格時序,因此采用狀態機的方式進行配置,其讀寫操作由上層模塊與下層模塊組成。下層模塊分為并列的兩個,分別為讀時序與寫時序,來滿足SPI的時序要求。上層模塊協調SPI的讀寫操作,從而實現GP22的初始化、工作方式的配置以及測量結果的讀取。文章以初始化測量范圍1,當測量范圍不相符時進行測量范圍的切換為例,進行配置說明。整體流程如圖2所示。

圖1 電路原理圖

圖2 整體流程
2.1 窄脈沖的產生
脈沖測距系統需要窄脈沖實現對激光器的觸發,同時GP22也以該窄脈沖作為時間測量的觸發信號。如圖3所示,在FPGA中,采用LUT(Look-Up-Table)模塊,觸發信號先通過內部的延時線,然后將得到的延時信號與原信號相異或,可以方便地產生滿足要求的窄脈沖,窄脈沖的寬度為內部延時線的延時時間。

圖3 窄脈沖產生原理框圖
2.2 下層模塊讀寫時序
FPGA系統時鐘為25 MHz,SPI的SCK信號是系統時鐘的2分頻。由于只有在需要時才進行寫操作,在讀寫模塊中都加入了使能信號,該信號的上升沿觸發一次各自的讀或寫操作。為滿足讀或寫數據長度可變的要求,在模塊的端口設置輸入型變量,將寫入的數據長度傳遞到模塊內部,實現讀或寫不同數據長度的控制。讀操作需要向GP22發出指令,寫入操作碼,因此,在讀模塊中包含了寫入操作碼的功能。無論是讀時序還是寫時序,均采用狀態機的方式進行描述。讀時序如圖4所示,寫時序如圖5所示。

圖4 GP22讀時序

圖5 GP22寫時序
2.3 上層模塊整體配置
對于GP22的配置先要對其初始化,再經過延時10 ms,然后配置其中寄存器的值,從而確定GP22的工作方式,最后等待中斷信號,將測量的時間結果讀出。為了實現連續測距的要求,在結束后還需再次進行初始化,如此循環進行。
2.4 基于狀態機的總體配置流程
流程圖的整個過程用狀態機實現。由于讀寫操作共用SPI中的信號線,設置了一個rd_wr寄存器用于區分。rd_wr=1為讀操作,rd_wr=0為寫操作。
步驟1:初始化GP22,將rd_wr置0,確定為寫操作,送8位的數據50H到寫入寄存器data_write,寫操作的數據長度寄存器num_write賦值為15,該值由下層寫操作模塊寫入的數據位數決定,對應為8位數據。最后把寫操作使能信號en_ssn_write拉高,使能一次寫操作。以上操作并行執行之后,狀態機轉入下一個狀態,等待適當時間,保障數據寫入完成。跳出等待狀態時,拉低en_ssn_write,為下一次觸發寫操作做準備。
步驟2:數據寫入完成之后,狀態機進入延時的狀態,延時約100 ms,采用FPGA系統時鐘計數的方法確定延時時間,延時結束后,轉入GP22寄存器配置狀態。
步驟3:GP22有7個32位的配置寄存器。高24位是用作配置,只可以寫入。這些寄存器用于設置GP22的模式。H8X+24位數據將會在GP22兼容模式中寫入配置寄存器X中,用該方法配置相應寄存器。由于配置寄存器6對時間測量可有可無,因此,忽略配置寄存器6。首先在配置寄存器0寫入32位數據80000420H,寫入方法同步驟1,只是num_write賦值為63,其對應32為數據。該寄存器的值確定GP22工作在測量范圍1,自動校準,晶振上電后一直起振。寄存器0配置完之后,狀態機進入下一個狀態配置其他的寄存器。按照相同方法,配置寄存器1到5分別寫入81014100H、82E00000H、83000000H、84200000H、85080000H。
通過上述第一次上電配置后,系統初始化為測量范圍1。按照相同的方法,可以把6個寄存器分別配置為80008468H、81214200H、82E00000H、83000000H、84200000H和85080000H,使GP22工作在測量范圍2,自動校準的方式。設置一個測量范圍標志位,當出現測量范圍切換請求時,只需將該標志位取反,即可實現二者的切換。
步驟4:初始化測量。為實現連續測量,例如每50 ms觸發一次初始化測量,FPGA系統時鐘將分頻產生20 kHz的方波。程序模塊監測該方波的上升沿,檢測到后,一方面啟動計時,一旦超過預定的時間,就將超時標置位置高;另一方面,轉入下一個狀態,寫入8位初始化數據70H,完成初始化。
步驟5:狀態機在初始化測量之后進入等待中斷的狀態,即監測中斷信號的下降沿。除此之外,還監測超時標置位。若發現超時標置位置位,說明測量的范圍選擇與實際的測量距離不相符,則狀態機跳轉至步驟3的位置,配置另一種測量范圍,開始下一次測量;若在超時標置位未置位的前提下,檢測到中斷信號的下降沿,狀態機進入步驟6。
步驟6:狀態機讀取數據,先將rd_wr置1,把寫操作改為讀操作。操作碼賦值為B0H,發讀取信息指令,讀操作使能信號en_ssn_read拉高,使能一次讀操作。然后在下一個狀態延時適當的時間,使數據讀出,延時結束后將en_ssn_read信號拉低,便于下次使能讀時序,最后將測量結果讀出,狀態機切換到步驟4,進行下一次測量。
程序流程圖如圖6所示。

圖6 程序流程圖
3 實驗結果及分析
實驗采用FPGA內部的延時線路來模擬被測量的時間間隔,并用示波器進行了捕捉,為時間測量的結果提供依據。示波器圖像如圖7所示。FPGA將采集到的時間測量值通過串口發送到PC機,測量數據取平均值后為7 251.8 ps,由公式1得出。

圖7 示波器圖像
(1)
式中:t為測量時間;m為測量數據。計算可得時間為27 663.9 ps。經過與示波器上波形的時間差進行對比,二者基本相同。采集的數據如表1所示。
4結論
通過FPGA與TDC-GP22構建了連續脈沖測距硬件系統。通過上述配置方法,FPGA可將配置數據寫入TDC-GP22,并且還能將測量結果讀出,實現了脈沖測距中最核心的時間測量功能,并且易于擴展其他并行功能。通過超時檢測實現兩種測量范圍的切換,擴大了時間測量的動態范圍,減少了盲區,增強了連續測距的功能。實驗結果表明,該系統可滿足精確魯棒的脈沖測距要求。

表 1 采集數據
參考文獻
[1]張黎明,張 毅,趙 欣.基于TDC的激光測距傳感器飛行時間測量研究[J].傳感器與微系統,2011(12):71-74
[2]章堅武,張數明.TDC-GP2在激光測距傳感器中的應用[J]. 儀表技術與傳感器, 2009(8):74-76
[3]殷秀梅,張仁杰,吳 寧.基于時差法的高精度脈沖式激光測距系統[J].信息技術,2013(11):161-163,166
[4]宋 盛,郭 穎,洪光烈.TDC-GP2芯片在脈沖激光測距系統中的應用[J].紅外, 2014(11):10-14
收稿日期:2016-04-13
基金項目:河北省自然科學基金青年基金(E2016210104)
作者簡介:閆德立(1981—),男,博士,講師,主要從事電子信息工程的科研與教學工作yandl@stdu.edu.cn
DOI:10.13219/j.gjgyat.2016.04.004
中圖分類號:TN247
文獻標識碼:A
文章編號:1672-3953(2016)04-0014-04
A Study of an FPGA-and TGC-GP22-Based Continuous Pulse Ranging System
Yan Deli,Wang Weiming,Jin Shaoyun,He Yaxuan
(College of Electrical and Electronic Engineering, Shijiazhuang Tiedao University,Shijiazhuang 050043,China)
Abstract:Aiming at solving the problem of the traditional hardware being unable to realize the aim of the continuous shallow pulse ranging,a new scheme of a continuous pulse ranging combining the FPGA with the TDC-GP22 is proposed in the paper.Methods of using the FPGA to complete the initialization of the TDC-GP22,the configuration of working modes and the specific methods to acquire the measured results are dealt with in detail in the paper, and the switching logic is also designed according to the two different surveying ranges of the TDC-GP22,with the continuous pulse ranging in the larger dynamic scope realized.The experimental results show that the measuring accuracy of the proposed scheme is less than 2 ns,which meets the requirements for pulse ranging.
Key words:TDC-GP22;FPGA;continuous pulse ranging