一種基于FPGA的激光雷達多脈沖時間間隔測量系統制作方法

一種基于FPGA的激光雷達多脈沖時間間隔測量系統制作方法

一種基于FPGA的激光雷達多脈沖時間間隔測量系統制作方法是由唐義 王軍 發明開發。

本發明公開一種基于FPGA的激光雷達多脈沖時間間隔測量系統,包含控制單元和計時單元兩部分;控制單元與外部主機通信,并對計時單元進行控制;計時單元包括門控信號生成模塊,時刻鑒別模塊,和延時鏈抽頭型TDC。門控信號生成模塊將起始信號start和終止信號stop合并成能被TDC正確測量的多脈沖信號gate,將其輸入到TDC延時鏈中,TDC的第一級鎖存單元連接到時刻鑒別單元,用于尋找gate信號的第一個上升沿和所有下降沿,并將對應的TDC結果保存。本發明能夠使用單一TDC完成激光雷達中多個脈沖時間間隔的測量,大大節約了FPGA的資源占用和外部電路的規模。

[0001] 本發明涉及數字化測量技術領域,具體涉及一種用于脈沖激光雷達的多脈沖時間間隔的測量系統。

背景技術

[0002] 時間測量技術用于測量多個事件的時間間隔或確定單一事件發生的具體時刻,其在通信,宇航,雷達等領域都有重要應用。高精度時間測量常用的器件為時間數字轉換器(TDC),其載體包括ASIC和FPGA兩種。

[0003] 目前使用FPGA實現的TDC方案有很多種,但都只能測量從起始時刻到單一事件發生的時間間隔,要想測量兩個及以上的事件時刻的時間間隔,只能使用多個TDC對這些事件分別進行測量,這將占用成倍的資源。

[0004] 對于脈沖激光雷達,考慮以下兩個場景:一是為了提高測量精度,連續發送多個激光脈沖,從而收到多個回波脈沖;二是由于穿透等原因,一束激光的回波脈沖可能有很多個。多個回波脈沖之間時間間隔的測量,起始事件是激光發射的時刻,結束事件是激光多個回波脈沖,因此多個結束事件在電路上使用的是同一個信號線,只是出現的時間有所間隔,這可以理解為同一事件連續出現了多次,傳統的TDC方案只能測量第一個回波脈沖出現的時間,而無法測量之后各個脈沖相對起始事件的時間間隔。

內容

[0005] 有鑒于此,本發明提供了一種基于FPGA的激光雷達多回波脈沖時間間隔的測量系統,能夠使用單個TDC對激光雷達多個回波脈沖的時間間隔進行測量。

[0006] 實現本發明的技術方案如下:

[0007] 整套系統包含控制單元和計時單元兩部分。

[0008] 第一方面,控制單元與外部主機通信,并對計時單元進行控制??刂茊卧ㄅ渲眉拇嫫?,狀態寄存器,結果寄存器和測量控制狀態機。配置寄存器接受外部主機寫入的測量配置信息,包括預期測量的脈沖數,測量使能,測量模式。結果寄存器有兩組,每完成一次測量后,就會切換到另一組結果寄存器,通過這種乒一乓的方式提升連續測量時測量結果的有效時間。狀態寄存器存儲本次測量實際得到的脈沖數,以及當前有效的結果寄存器是哪一組。測量控制狀態機根據配置寄存器的要求控制整個測量流程,包括計時單元復位,測量完成生成通知主機的INT信號,結果寄存器的切換和狀態寄存器的更新。

[0009] 第二方面,計時單元包括門控信號生成模塊,時刻鑒別模塊,和延時鏈抽頭型TDC。門控信號生成模塊將起始信號start(激光發射脈沖,上升沿表示起始時刻)和多個回波脈沖的終止信號stop(一個脈沖代表一個回波時刻)合并成能被TDC正確編碼的待測信號gate,再將其輸入到TDC的延時鏈中進行時間測量。時刻鑒別模塊用于提取起始時刻和每一個結束時刻,對應于gate信號中的第一個上升沿(起始時刻)和每一個下降沿(結束時刻),并將此時TDC的結果存入結果寄存器。延時鏈抽頭型TDC對輸入信號的脈寬進行測量,測量得到的脈寬為t=K*T +T -T ,K為粗粒度計數器的輸出,T 為同步時鐘的周期,Tclk start stop clk start和T 為開始時刻和結束時刻時對延時鏈編碼所得的值。stop

[0010] 所述gate信號是一個包含多脈沖信號,復位后為低電平,start上升沿到來后變為高電平,stop的每一個脈沖會在gate信號中產生一個由‘1’到‘0’的反向脈沖。這種待測波形可以被TDC的延時鏈正確編碼,從而使一個TDC能夠完成對多個回波脈沖的測量。

[0011] 所述時刻鑒別模塊的原理是檢測gate信號輸入到TDC第一級延時單元后的D觸發器D 的變化,因為D 由系統時鐘觸發,有效時間為一個同步時鐘周期,因此對gate的邊沿檢1 1測可以轉化為對D 在兩個時鐘周期的值的檢測。為了保證D 能正確的反應gate信號的變化,1 1要求gate信號中的高、低電平脈寬應大于一個同步時鐘周期。這里使用START_LOCK,CNTD,TDC_DONE來表示各個狀態,其檢測步驟如下:

[0012] 步驟1:復位后,上述START_LOCK,CNTD,TDC_DONE清0,gate信號為低電平,各級延時鏈均為低電平,因此D 的值為‘0’;start脈沖到來后,gate信號為高電平,D 從‘0’變為1 1‘1’,此時將START_LOCK置1,表明檢測到了起始信號,并將當前TDC的結果記錄到結果寄存器中。

[0013] 步驟2:在stop脈沖到來之前,gate保持為‘1’,因此D1也為‘1’;當stop脈沖到來時,由于gate由‘1’變為‘0’,D 也變為‘0’;因此當START_LOCK為‘1’且D 由‘1’變為‘0’時,將1 1CNTD寄存器的值加1,表示當前檢測到的stop脈沖數,并將當前TDC的結果記錄到結果寄存器中。

[0014] 步驟3:stop脈沖結束后,gate再次變為‘1’,之后D1也因此變為‘1’,這樣當新的stop脈沖到來時,會再次進入到步驟2。

[0015] 步驟4:隨測量的進行,計時單元在步驟2-3中重復,當CNTD的值等于配置寄存器中預期的脈沖數,或者TDC的粗粒度計數器發出超時信號時,計時單元將TDC_DONE置‘1’,通知控制單元本次測量完成。

[0016] 所述延時鏈抽頭型TDC由粗粒度計數器,延時鏈,鎖存陣列,編碼器構成。粗粒度計數器在時刻鑒別單元中START_LOCK為‘1’后開始計數;編碼器方案為多級加法器陣列,統計鎖存單元中‘1’的數目。若延時鏈和鎖存單元總共有M級,編碼器的輸出為N,每一級延時單元的平均延時時間為1LSB,則T =N*LSB,T =(M-N)*LSB。為了保證全加器能正確編start stop碼,要求延時鏈上只能有一個變化沿,即gate信號中的高、低電平脈寬應大于延時鏈的延時長度。時刻鑒別模塊對gate信號有類似要求,由于延時鏈的延時長度稍大于一個同步時鐘周期,因此gate信號最終只需滿足編碼器的要求即可。

[0017] 本發明的有益效果是:本發明使用單一TDC即可完成激光雷達中多個脈沖時間間隔的測量,大大節約了FPGA的資源占用和外部電路的規模,在激光雷達和相關時間測量領域有重要的應用價值。

技術要求書

1.一種基于FPGA的激光雷達多脈沖時間間隔測量系統,其特征在于,控制單元和計時單元兩部分;控制單元與外部主機通信,并對計時單元進行控制;控制單元包括配置寄存器,狀態寄存器,結果寄存器和測量控制狀態機;計時單元包括門控信號生成模塊,時刻鑒別模塊,和延時鏈抽頭型TDC。門控信號生成模塊將起始信號start和多個回波脈沖的終止信號stop合并成能被TDC正確編碼的待測信號gate;時刻鑒別模塊用于提取起始時刻和每一個結束時刻,并將此時TDC的結果存入結果寄存器。延時鏈抽頭型TDC對輸入信號的脈寬進行測量。

2.如權利要求1所述的激光雷達多脈沖時間間隔測量系統,其特征在于,配置寄存器接收外部主機寫入的測量配置信息,包括預期測量的脈沖數,測量使能,測量模式;測量模式包括連續測量和單次測量,連續測量時,一次測量完成后,測量控制狀態機將測量使能位置0,從而停止測量,直到主機再次將測量使能位置1。

3.如權利要求1所述的激光雷達多脈沖時間間隔測量系統,其特征在于,結果寄存器分為兩組,記為A、B,以乒-乓的方式工作。

4.如權利要求3所述的激光雷達多脈沖時間間隔測量系統,其特征在于,結果寄存器位于FPGA內部的雙口BRAM中。

5.如權利要求1所述的激光雷達多脈沖時間間隔測量系統,其特征在于,計時控制狀態機有3種狀態:STATE_RST、STATE_START、STATE_WRITE_DONE;STATE_RST為空閑狀態,這個狀態下,將通知主機的INT信號拉低,當檢測到計時單元START_LOCK信號為‘1’后,進入STATE_START狀態;在STATE_START狀態下,當檢測到計時單元TDC_DONE為‘1’后,進入STATE_WRITE_DONE狀態;在STATE_WRITE_DONE狀態下,立刻跳轉到STATE_RST狀態,同時執行以下操作:將INT信號拉高;向狀態寄存器寫入本次測量到的脈沖數和當前結果寄存器的組號;將結果寄存器切換到另一組;若沒有使能連續測量,將配置寄存器的測量使能位置0。

6.如權利要求1所述的激光雷達多脈沖時間間隔測量系統,其特征在于,門控信號生成模塊生成的gate信號是一個包含多脈沖的信號,復位后為低電平,start上升沿到來后變為高電平,stop的每一個脈沖會在gate信號中產生一個由‘1’到‘0’的反向脈沖。

7.如權利要求6所述的激光雷達多脈沖時間間隔測量系統,其特征在于,時刻鑒別模塊能檢測gate的第一個上升沿和所有下降沿。

8.如權利要求7所述的激光雷達多脈沖時間間隔測量系統,其特征在于,時刻鑒別模塊使用TDC第一級鎖存單元在本時鐘周期和上一個時鐘周期的值來檢測gate的邊沿。

9.如權利要求8所述的激光雷達多脈沖時間間隔測量系統,時刻鑒別模塊的檢測方法為:步驟1:復位后,START_LOCK,CNTD,TDC_DONE三個寄存器清零,D D 的值為“00”;start脈0 1沖到來后,gate出現第一個上升沿,D D 變為“01”;因此當D D 為“01”,且START_LOCK為0時,0 1 0 1將START_LOCK置1,表明檢測到了起始信號,將當前TDC的結果保存到結果寄存器中;步驟2:在stop脈沖到來之前,D D 的值為“11”;當stop脈沖到來時,gate出現下降沿,0 1D D 的值變為“10”;因此當START_LOCK為‘1’且D D 的值為“10”時,將CNTD寄存器的值加1,0 1 0 1表示當前檢測到的stop脈沖數,將當前TDC的結果保存到結果寄存器的相應地址中;步驟3:stop脈沖結束后,gate再次變為‘1’,D D 的值為“11”,這樣當新的stop脈沖到來0 1時,會再次進入到步驟2;步驟4:隨測量的進行,時刻鑒別模塊在步驟2-3中重復,當CNTD的值等于配置寄存器中預期的脈沖數,或者TDC的粗粒度計數器發出超時信號時,計時單元將TDC_DONE置‘1’,通知控制單元本次測量完成。

說明書附圖

圖1

圖2

圖3