李海濤 ,李斌康 ,2,田 耕 ,2,阮林波 ,2,呂宗瞡
(1.西北核技術(shù)研究所,陜西 西安 710024;2.強(qiáng)脈沖輻射環(huán)境模擬與效應(yīng)國(guó)家重點(diǎn)實(shí)驗(yàn)室,陜西 西安 710024)
時(shí)間是物理學(xué)的7 個(gè)基本物理量之一[1],在物理學(xué)發(fā)展中起到重要作用,精確地獲取研究對(duì)象的時(shí)間信息具有重要意義。對(duì)時(shí)間信息的獲取可以由時(shí)間數(shù)字轉(zhuǎn)換器(Time to Digital Converter,TDC)來(lái)實(shí)現(xiàn),TDC 將時(shí)間信息轉(zhuǎn)換為二進(jìn)制數(shù)字編碼,輸出到后端分析,得到具體時(shí)間信息。TDC 廣泛應(yīng)用在高能物理、衛(wèi)星授時(shí)、導(dǎo)航定位、數(shù)字通信、醫(yī)學(xué)成像等領(lǐng)域[2-5]。
TDC 有多種實(shí)現(xiàn)方法,包括直接計(jì)數(shù)法、時(shí)間間隔擴(kuò)展法、時(shí)間幅度轉(zhuǎn)換法、多相位時(shí)鐘法、游標(biāo)法、抽頭延遲鏈法、差分延遲鏈法等,各種方法既可以獨(dú)立使用,又可以配合使用,實(shí)現(xiàn)從低精度到高精度、從細(xì)時(shí)間到粗時(shí)間的時(shí)間測(cè)量。從技術(shù)上劃分,TDC 的實(shí)現(xiàn)可以分為模擬方法和數(shù)字方法;從平臺(tái)上劃分,TDC 可以在專用集成電路平臺(tái) (Application Specific Integrated Circuit,ASIC)、FPGA 等平臺(tái)上實(shí)現(xiàn)。ASIC-TDC 的測(cè)量精度、穩(wěn)定性較高,一般都是針對(duì)某一特定場(chǎng)景應(yīng)用設(shè)計(jì),不具有通用性和可擴(kuò)展能力,并且開(kāi)發(fā)ASIC 芯片的周期很長(zhǎng);FPGA-TDC 具有開(kāi)發(fā)周期短、成本低、設(shè)計(jì)靈活等優(yōu)點(diǎn),但是精度和穩(wěn)定性較差。隨著半導(dǎo)體制造工藝的進(jìn)步,F(xiàn)PGA-TDC 的測(cè)量精度和穩(wěn)定性等同步提高,實(shí)現(xiàn)高精度FPGA-TDC 具有重要研究意義。
目前,實(shí)現(xiàn)高精度FPGA-TDC 的研究主要集中在幾個(gè)方面[2,6-9]:(1)FPGA-TDC 的實(shí)現(xiàn),使用FPGA 內(nèi)部資源實(shí)現(xiàn)高精度TDC,把時(shí)間信息轉(zhuǎn)換成二進(jìn)制數(shù)字編碼;(2)TDC 碼寬的自動(dòng)校準(zhǔn),選擇合適的校準(zhǔn)方法,校準(zhǔn)TDC碼寬,降低FPGA 制造工藝、工作電壓、工作溫度(Process、Voltage、Temperature,PVT)等對(duì)TDC 的影響;(3)針對(duì)TDC碼寬的不一致性,如何降低測(cè)量誤差,進(jìn)一步提高測(cè)試精度;(4)動(dòng)態(tài)監(jiān)測(cè)并實(shí)時(shí)校準(zhǔn)TDC 碼寬,針對(duì)特殊要求(如航天等)進(jìn)行冗余設(shè)計(jì)等。對(duì)FPGA-TDC 的研究主要集中在前述的第1、第3 方面,在不同F(xiàn)PGA 平臺(tái)上實(shí)現(xiàn)進(jìn)位鏈TDC。受限于進(jìn)位鏈的線性度,TDC 的線性較差,導(dǎo)致時(shí)間測(cè)量精度下降。通過(guò)多鏈單次測(cè)量求平均[1,8,10]或者單鏈多次測(cè)量求平均[11-12]的方法,可以提高TDC 的線性和時(shí)間測(cè)量精度。對(duì)TDC 的碼寬的動(dòng)態(tài)監(jiān)測(cè)、冗余設(shè)計(jì)等,一般應(yīng)用在航空航天等特殊領(lǐng)域[2]。對(duì)于單鏈TDC 的碼寬校準(zhǔn)和抽頭方式方面(前述第2 方面),缺少較為深入的研究。
本文利用Xilinx 公司28 nm 工藝的Kintex-7 FPGA內(nèi)部的進(jìn)位鏈資源,通過(guò)進(jìn)位鏈實(shí)現(xiàn)TDC,共使用128個(gè)進(jìn)位鏈,細(xì)時(shí)間測(cè)量范圍大于5 ns。并給出碼寬校準(zhǔn)的誤差計(jì)算公式,采用碼密度校準(zhǔn)方法對(duì)TDC 進(jìn)行逐位校準(zhǔn),測(cè)量得到4 抽頭模式、2 抽頭模式下的TDC 典型碼寬,給出不同抽頭模式的TDC 典型性能參數(shù)。
典型的進(jìn)位鏈TDC 原理如圖1 所示,包含了脈沖信號(hào)調(diào)理、時(shí)鐘產(chǎn)生分發(fā)設(shè)計(jì)、進(jìn)位鏈設(shè)計(jì)、溫度計(jì)碼轉(zhuǎn)二進(jìn)制編碼編碼電路設(shè)計(jì)、自動(dòng)校準(zhǔn)設(shè)計(jì)等。脈沖信號(hào)(待測(cè)信號(hào)或隨機(jī)校準(zhǔn)信號(hào))經(jīng)過(guò)脈沖信號(hào)調(diào)理單元稱為待測(cè)信號(hào),從下方進(jìn)入到進(jìn)位鏈中;待測(cè)信號(hào)一般小于一個(gè)TDC 主時(shí)鐘周期,確保級(jí)聯(lián)延遲鏈輸出為溫度計(jì)碼;溫度計(jì)碼經(jīng)過(guò)2 拍寄存以避免亞穩(wěn)態(tài)傳播,進(jìn)入到編碼部分,采用改進(jìn)的折半查找法完成溫度計(jì)碼的編碼,輸出對(duì)應(yīng)的二進(jìn)制碼;采用碼密度校準(zhǔn)方法建立查找表,將二進(jìn)制碼對(duì)應(yīng)的查找表的結(jié)果輸出到后端處理,便可獲得高精度的時(shí)間信息。接下來(lái)結(jié)合FPGA 的具體邏輯資源,介紹進(jìn)位鏈TDC 的實(shí)現(xiàn)。
圖1 進(jìn)位鏈TDC 典型原理
基于Kintex-7 芯片內(nèi)部的進(jìn)位鏈資源實(shí)現(xiàn)TDC,Kintex-7 系列FPGA 的基本邏輯單元為可配置邏輯塊(Configurable Logic Block,CLB),每個(gè)CLB 中包含兩個(gè)Slice 結(jié)構(gòu),每個(gè)Slice 內(nèi)部進(jìn)位鏈結(jié)構(gòu)如圖2 所示,設(shè)計(jì)時(shí)可直接調(diào)用Xilinx 提供的原語(yǔ)例化進(jìn)位鏈。hit 信號(hào)從第一個(gè)進(jìn)位鏈的CYINIT 端口輸入[13],輸入的hit 脈沖經(jīng)過(guò)脈沖信號(hào)調(diào)理之后,待測(cè)信號(hào)沿著進(jìn)位鏈向上傳播,CIN 和COUT 用來(lái)連接上下相鄰的進(jìn)位鏈形成進(jìn)位鏈,其附近的4 個(gè)寄存器可分別寄存O0~O3 或CO0~CO3抽頭的4 個(gè)輸出,進(jìn)位鏈的綜合版圖如圖3 所示,可以采用多種抽頭方式引出數(shù)據(jù)并寄存,不同抽頭方式對(duì)應(yīng)的時(shí)間分辨率不同,包括1 抽頭、2 抽頭、4 抽頭等,圖中顯示為2 抽頭方式,抽頭分別為CO0、CO3。
圖2 slice 內(nèi)部典型進(jìn)位鏈?zhǔn)疽?/p>
圖3 進(jìn)位鏈綜合后版圖(跨時(shí)鐘域)
進(jìn)位鏈TDC 中觸發(fā)器陣列寄存的數(shù)據(jù)是溫度計(jì)碼,當(dāng)沒(méi)有脈沖信號(hào)時(shí),進(jìn)位鏈中所有的抽頭輸出均為0;當(dāng)有脈沖信號(hào)進(jìn)入進(jìn)位鏈時(shí),進(jìn)位鏈輸出信號(hào)將從最低級(jí)開(kāi)始逐級(jí)發(fā)生0-1 跳變,待測(cè)信號(hào)經(jīng)過(guò)的進(jìn)位鏈抽頭將輸出數(shù)字編碼1,沒(méi)有經(jīng)過(guò)的進(jìn)位鏈抽頭將輸出數(shù)字編碼0,可以根據(jù)進(jìn)位鏈抽頭輸出的1 的個(gè)數(shù)來(lái)判斷待測(cè)信號(hào)在進(jìn)位鏈中的延時(shí)[14]。當(dāng)抽頭較多時(shí),溫度計(jì)碼位數(shù)很多,會(huì)占用大量存儲(chǔ)資源,且不便于下一步的數(shù)據(jù)運(yùn)算處理,故常常需要將溫度計(jì)碼轉(zhuǎn)換為二進(jìn)制碼。
有多種方法可以把溫度計(jì)碼轉(zhuǎn)換成二進(jìn)制碼,如順序查找法、折半查找法、累加查找法等[11-12,15-16],轉(zhuǎn)換的核心思想都是通過(guò)查找溫度計(jì)碼中1-0(0-1)跳變的位置,達(dá)到統(tǒng)計(jì)溫度計(jì)碼中1 或0 的個(gè)數(shù)的目的。根據(jù)文獻(xiàn)[1]的研究結(jié)果,受到進(jìn)位鏈固有的超前進(jìn)位特性影響,抽頭數(shù)據(jù)的溫度計(jì)碼可能會(huì)發(fā)生冒泡(bubble)現(xiàn)象,即是抽頭所在的物理位置和時(shí)間的對(duì)應(yīng)關(guān)系并非嚴(yán)格遞增,如對(duì)同一個(gè)延時(shí)的溫度計(jì)碼,沒(méi)有冒泡的溫度計(jì)碼是“0000…1111…1111”,冒泡的溫度計(jì)碼是“0000…1101…1111”。在編碼時(shí)充分考慮了冒泡的問(wèn)題,使用改進(jìn)的折半查找法進(jìn)行編碼,編碼時(shí)采用對(duì)最后16 bit 溫度計(jì)碼直接數(shù)1 的方法解決溫度計(jì)碼的冒泡問(wèn)題,采用pipeline 的方式進(jìn)行逐級(jí)編碼以減小TDC 的死時(shí)間,改進(jìn)的折半查找法具有效率高、資源占用少等優(yōu)點(diǎn)。
如前述,進(jìn)位鏈TDC 受PVT 等因素的影響[17-18],其包含的延遲單元延時(shí)會(huì)發(fā)生變化,每次使用之前需要進(jìn)行校準(zhǔn),建立新的查找表,TDC 的校準(zhǔn)方法主要有平均校準(zhǔn)和逐位(bin-by-bin)校準(zhǔn)兩種方法。平均校準(zhǔn)的優(yōu)點(diǎn)是可以對(duì)TDC 進(jìn)行快速校準(zhǔn),但是所得到的只是所有延遲單元抽頭的平均延遲時(shí)間,無(wú)法對(duì)TDC 中每個(gè)延遲單元進(jìn)行校準(zhǔn),會(huì)導(dǎo)致較大的測(cè)量誤差;碼密度法可以對(duì)進(jìn)位鏈中每一個(gè)延遲單元抽頭進(jìn)行逐位校準(zhǔn),通過(guò)碼密度測(cè)試可以精確標(biāo)定每個(gè)延遲單元的延時(shí)。
碼密度校準(zhǔn)方法采用和TDC 主時(shí)鐘不相干的隨機(jī)信號(hào),以確保在多次測(cè)量之中,隨機(jī)信號(hào)近似均勻地落在TDC 的延時(shí)路徑上。研究表明[1],為了盡可能降低延遲單元的時(shí)間誤差,需要增加校準(zhǔn)次數(shù),增加校準(zhǔn)次就會(huì)增加校準(zhǔn)時(shí)間、增加資源占用量,使用時(shí)需要根據(jù)項(xiàng)目指標(biāo)要求折中考慮。校準(zhǔn)誤差和校準(zhǔn)次數(shù)之間的關(guān)系式如式(1)所示:式中,N 為校準(zhǔn)次數(shù);k 為級(jí)聯(lián)鏈抽頭數(shù)目;T 為參考時(shí)鐘周期,T=5 ns;σi為單個(gè)延遲單元的標(biāo)準(zhǔn)差;στ為平最大標(biāo)準(zhǔn)差。根據(jù)式(1)推導(dǎo)可知:本文實(shí)現(xiàn)的碼密度校準(zhǔn)次數(shù)為106,對(duì)應(yīng)的TDC 延遲時(shí)間的最大標(biāo)準(zhǔn)差小于5 ps。
在Kintex-7 FPGA 平臺(tái)上,通過(guò)進(jìn)位鏈實(shí)現(xiàn)了TDC,使用128 個(gè)進(jìn)位鏈,細(xì)時(shí)間測(cè)量范圍大于5 ns,5 ns 為TDC 主時(shí)鐘周期。進(jìn)位鏈延時(shí)大于5 ns,這是因?yàn)椋?1)可以保證TDC 輸出為溫度計(jì)碼,不會(huì)出現(xiàn)全1 碼;(2)進(jìn)位鏈自身的延時(shí)受到PVT 等因素的影響,本身延時(shí)就有變化,5 ns 延遲鏈對(duì)應(yīng)的抽頭數(shù)目并不是一個(gè)固定值196(這也正是每次上電都需要自動(dòng)校準(zhǔn)TDC 延時(shí)的原因之一);(3)進(jìn)位鏈數(shù)目為2 的冪指數(shù),方便后續(xù)的編碼解碼工作等。
從圖2 中可以看到,每個(gè)進(jìn)位鏈最多可以輸出4 個(gè)抽頭,可以從CO0~CO3、O0~O3 共8 個(gè)抽頭中的抽出任意4 個(gè),一般采用CO0~CO3 共4 個(gè)抽頭,輸出編碼為溫度計(jì)碼,可以達(dá)到較高的時(shí)間分辨,4 抽頭方式的TDC的典型碼寬值如圖4 所示,(1)4 抽頭方式的碼寬差別過(guò)大,非線性較差;(2)根據(jù)文獻(xiàn)[1]、[3]、[5]的研究成果,使用該抽頭方式,受到進(jìn)位鏈固有的超前進(jìn)位特性影響,溫度計(jì)碼會(huì)發(fā)生冒泡現(xiàn)象,即在編碼時(shí)需要充分考慮冒泡問(wèn)題,增加了編碼電路的復(fù)雜度,增加編碼時(shí)間;(3)抽頭過(guò)多,也會(huì)增加編碼部分的資源占有量??梢钥吹?,在4 抽頭方式下,一個(gè)進(jìn)位鏈總的典型延時(shí)約53 ps,后續(xù)的2 個(gè)抽頭方式下,一個(gè)進(jìn)位鏈總的典型延時(shí)平均約50 ps(如圖5 所示),兩者之間的差別是統(tǒng)計(jì)誤差導(dǎo)致的,延時(shí)誤差值(3 ps)也在文中提到的平均校準(zhǔn)誤差值(5 ps)分布之內(nèi)。
圖4 進(jìn)位鏈4 抽頭典型碼寬
利用布局布線約束,研究1 個(gè)進(jìn)位鏈只引出2 個(gè)抽頭的方式(CO1、CO3),即“1tap+3tap”,如圖2 所示的結(jié)構(gòu)1(粗虛線框),第1 個(gè)抽頭的延遲單元包括asymmetry factor+2MUXCY,第2 個(gè)抽頭的延遲單元包括2MUXCY。這種2抽頭方式的TDC 的非線性要強(qiáng)于4 抽頭方式的TDC,其碼寬如圖5 所示,其非線性如圖6、圖7 所示。
圖5 兩種2 抽頭方式的碼寬
圖6 兩種2 抽頭方式的微分非線性
圖7 兩種2 抽頭方式的積分非線性
為了提高TDC 的線性,本文還研究了另外一種2 抽頭的引出方式(CO0、CO3),即“0tap+3tap”,如圖2 所示結(jié)構(gòu)2(實(shí)線框),第1 個(gè)抽頭的延遲單元包括asymmetry factor+MUXCY,第2 個(gè)抽頭的延遲單元包括3MUXCY。這種抽頭方式的TDC 的非線性較以上兩種抽頭方式的TDC 都好,其碼寬如圖5 所示,其非線性如圖6、圖7 所示。可以看到,“0tap+3tap”的2 抽頭方式的碼寬更均勻,非線性也更好一些,時(shí)間分辨率約25 ps(對(duì)應(yīng)最低有效位(Least Significant Bit,LSB)),微分非線性范圍為-0.84~3.1 LSB,積分非線性范圍為-5.2~2.2 LSB。
在圖5~圖7 中可以看到,每隔100 個(gè)抽頭就會(huì)有兩個(gè)超寬碼(ultra-wide bin),平均的碼寬約為25 ps,超寬碼約為110 ps。這是因?yàn)镕PGA 上每個(gè)時(shí)鐘域中最多含有50 個(gè)進(jìn)位鏈結(jié)構(gòu),每個(gè)進(jìn)位鏈引出2 個(gè)抽頭,共100個(gè)抽頭,之后再進(jìn)位鏈就需要跨時(shí)鐘域,超寬碼就是跨時(shí)鐘域時(shí)產(chǎn)生的,如圖3 虛線框所示,本文實(shí)現(xiàn)的TDC共使用128 個(gè)進(jìn)位鏈,上下跨越了3 個(gè)時(shí)鐘域,虛線框即是兩個(gè)時(shí)鐘域的交界處,兩個(gè)時(shí)鐘域交界處共產(chǎn)生了4 個(gè)超寬碼,分別是94、95、193、194。
本文在Kintex-7 FPGA 上,通過(guò)進(jìn)位鏈實(shí)現(xiàn)TDC,共使用128 個(gè)進(jìn)位鏈,細(xì)時(shí)間測(cè)量范圍大于5 ns。給出TDC碼寬校準(zhǔn)的誤差計(jì)算公式,校準(zhǔn)次數(shù)106,采用碼密度校準(zhǔn)方法對(duì)TDC 碼寬進(jìn)行逐位校準(zhǔn);研究進(jìn)位鏈的兩種抽頭方式(“0tap+3tap”“1tap+3tap”),并測(cè)量其碼寬、非線性等。在滿足測(cè)量指標(biāo)要求的情況,推薦使用“0tap+3tap”的2 抽頭方式,該抽頭方式的TDC 可以獲得較優(yōu)的非線性和較高的時(shí)間測(cè)量精度,時(shí)間分辨率約為25 ps(對(duì)應(yīng)LSB),微分非線性范圍為-0.84~3.1 LSB,積分非線性范圍為-5.2~2.2 LSB。研究發(fā)現(xiàn),進(jìn)位鏈TDC 一旦跨時(shí)鐘域,就不可避免引入超寬碼(ultra-wide bin)的問(wèn)題,這會(huì)降低TDC 的時(shí)間測(cè)量精度,可以采用多種方法降低這種影響,包括多鏈單次平均測(cè)量[1,8,10]、單鏈多次平均測(cè)量(wave union A、wave union B、Ripple method)[11-12]等方法。