一種基于fpga的時間數字變換器的制造方法
【技術領域】
[0001] 本發明屬于時間量的數字化測量領域,具體涉及一種基于FPGA的時間數字變換 器。
【背景技術】
[0002] 時間測量是指測量一個事件發生的時刻,或者是測量兩個事件之間的時間間隔。 時間測量技術在許多領域都具有重要應用,例如高能物理實驗研宄、核醫學成像、軍事和 民用雷達,以及激光測距等領域都需要高精度的時間測量技術。時間數字變換器(TDC: Time-Digital-Convertor)就是一種將時間量轉化為數字量以實現一個事件發生時刻的 記錄的功能器件。對于兩個事件之間的時間間隔的測量,一般可以由兩個TDC分別測量 兩個事件的發生時刻,兩個發生時刻的差值就是該兩個事件的時間間隔。目前,TDC的實 現載體可分為基于ASIC(Application Specific Integrated Circuit)專用芯片和基于 FPGA(Field Programmable Gate Array)可編程器件兩種。隨著FPGA技術的不斷發展,單 片FPGA能夠提供的邏輯資源量越來越大,其可編程配置的靈活性也越來越強,FPGA已經成 為數字系統集成設計的平臺。在此平臺上,如果能夠同時實現一些物理量的測量,例如時間 量的測量,無疑對基于FPGA的用戶特制的數據獲取和處理系統有重要意義。近年來,基于 FPGA的TDC設計技術有很大發展,其中最重要的一種途徑是利用FPGA基本邏輯資源中的進 位鏈構成多抽頭的信號傳輸延遲鏈(TDL:Tapped Delay Line),從而實現時間量的內插來 提高TDC的測量精度。
[0003] 基于FPGA的TDL型TDC有多種可能的具體實現方案,不同方案能夠實現的TDC測 量精度和測量死時間不同,單通道TDC所占用的FPGA邏輯資源量也不同。小的測量死時間 可以提高TDC的測量吞吐量,少的邏輯資源占用量可以節省FPGA資源用于用戶設計的數據 獲取和處理系統的其他部分,或者可以實現單片FPGA上的多通道TDC系統。然而,當前的 TDC實現方案不能在提高測量精度、降低測量死時間和減少資源占用量這三個方面均得到 好的指標。
[0004] 為便于理解,先對利用FPGA芯片的進位鏈邏輯資源構成多抽頭傳輸延遲鏈(TDL : Tapped Delay Line)實現時間內插,從而提高TDC測量精度的原理進行簡單介紹。
[0005] 事件發生時刻的數字化測量的最簡單實現方法可以是用一個高速時鐘計數器來 實現。在被測信號到來時,記錄下當時的計數器的狀態,該狀態就是事件發生時刻的時間 測量值。該方法的TDC精度就是計數器時鐘信號的周期。為了獲得高測量精度,必須使用 非常高的時鐘頻率。目前基于FPGA的最高時鐘頻率大約為710MHz,即最高測量精度約為 1.408ns。為了提高TDC的測量精度,目前基于FPGA技術的一種常用方法是設法構造出一 條由多個延遲單元聯成的延遲鏈。該延遲鏈的總延遲時間要大于一個系統時鐘的周期,每 個延遲單元的狀態由抽頭引出。將被測信號饋入該延遲鏈中傳輸,在每個系統時鐘的到來 時刻同時記錄下時鐘計數器的狀態和延遲鏈的狀態。前者是被測信號的粗時間標記,后者 是被測信號的細時間標記,將兩者結合就是被測信號的精確測量結果。使用這種時間內插 技術,TDC的測量精度主要取決于延遲鏈中延遲單元的大小和精度。目前,大多是利用FPGA 算術邏輯運算資源中的進位鏈來構成延遲鏈,每一個延遲單元的長度就是對應進位鏈的傳 輸延遲量。使用和進位鏈處于同一資源單位中的觸發器可以把延遲量各抽頭的狀態引出, 以用于后續電路對延遲量狀態的編碼輸出。對于要求測量兩個事件的時間間隔的情況,可 以采用兩個TDC通道,分別記錄兩個事件的發生時刻,二者之間的差值就是時間間隔。
【發明內容】
[0006] 本發明旨在有效地提高TDC的測量精度的同時,減小其測量死時間和降低單個 TDC通道所要占用的FPGA邏輯資源量。
[0007] 為實現上述目的,本發明提出一種基于FPGA的時間數字變換器,包括粗時鐘計數 器、脈沖信號發生器、信號延遲鏈、觸發器陣列、并行的信號上升沿尋找電路和下降沿尋找 電路、并行的上升沿"one-hot"編碼電路和下降沿"one-hot"編碼電路、標定電路和變換結 果輸出電路,其中,所述粗時鐘計數器由用于根據被測信號產生計數信號;所述脈沖信號發 生器用于在被測信號的觸發下產生一個負脈沖并饋入到所述信號延遲鏈中;所述信號延遲 鏈用于對被測信號進行延時傳輸,由多個延遲單元組成,且在每個延遲單元的前端具有抽 頭;所述觸發器陣列用于對信號延遲鏈的各抽頭狀態進行鎖存,在被測信號到來的前提下, 將鎖存的抽頭狀態同時傳遞給所述并行的上升沿尋找電路和下降沿尋找電路;所述上升沿 尋找電路和和下降沿尋找電路分別用于根據所述鎖存的抽頭狀態尋找在信號延遲鏈中傳 輸的負脈沖的上升沿和下降沿,分別生成用于表示上升沿和下降沿的位置的"one-hot"碼; 所述并行的上升沿"one-hot"編碼電路和下降沿"one-hot"編碼電路分別用于將所述表示 上升沿和下降沿的位置的"one-hot"碼轉換為二進制碼;所述標定電路用于將所述二進制 碼轉換成時間內插值;所述變換結果輸出電路用于根據所述時間內插值和所述粗時鐘計數 器輸出的計數信號一起換算成被測信號的到來時間。
[0008] 根據本發明的【具體實施方式】,所述觸發器陣列將所述鎖存的抽頭狀態傳遞給所述 上升沿尋找電路和下降沿尋找電路的過程中,所述抽頭經過一個重排序過程,該重排序是 根據所述信號延遲鏈的各抽頭之間的延遲量的分布結果進行的重排序。
[0009] 根據本發明的【具體實施方式】,所述重排序的規則是:將0寬度延遲單元的抽頭和 下一個延遲單元的抽頭位置互換。
[0010] 根據本發明的【具體實施方式】,所述重排序過程重復多次進行,在一次調整順序之 后測量各延遲單元的延遲寬度,判斷0寬度的延遲單元個數是否超過一個閾值,如果是,則 再次調整順序,直到0寬度延遲單元的個數不超過該閾值為止。
[0011] 根據本發明的【具體實施方式】,在所述重排序的過程中采用碼密度法測量各延遲單 元的延遲寬度。
[0012] 根據本發明的【具體實施方式】,所述信號上升沿尋找電路和/或下降沿尋找電路通 過一個逐位移動的窗口將所述溫度計碼切分得到2N個窗口值,2N=n,n為延遲單元的個數, 所述窗口的位寬為m,m為自然數且2 < m < 2N,并通過依序排列所述窗口值所對應的真值 得到與所述溫度計碼對應的"one-hot"碼。
[0013] 根據本發明的【具體實施方式】,所有可能的窗口值與對應的真值之間轉換的真值表 存儲在FPGA中的基本邏輯單元LUT中。
[0014] 根據本發明的【具體實施方式】,當所述上升沿尋找電路用于尋找溫度計碼的上升沿 時,在所述真值表中,只有第一位是0、其余位均為1的窗口值對應的真值為1,其余窗口值 對應的真值均為0 ;或者,只有第一位是0、其余位均為1的窗口值對應的真值為0,其余窗 口值對應的真值均為1 ;當所述下降沿尋找電路用于尋找溫度計碼的下降沿時,在所述真 值表中,只有最后一位是0、其余位均為1的窗口值對應的真值為1,其余窗口值對應的真值 均為0 ;或者,只有最后一位是0、其余位均為1的窗口值對應的真值為0,其余窗口值對應 的真值均為1。
[0015] 根據本發明的【具體實施方式】,所述上升沿"one-hot"編碼電路和下降沿 "one-hot"編碼電路對于用" 1"表示的"one-hot"碼,通過計算個"one-hot"碼字的邏