周二瑞,李 剛,楊少華,李斌康,嚴(yán) 明,劉 璐,郭明安
(強(qiáng)脈沖輻射環(huán)境模擬與效應(yīng)全國(guó)重點(diǎn)實(shí)驗(yàn)室;西北核技術(shù)研究所:西安710024)
高精度時(shí)間測(cè)量在高能物理實(shí)驗(yàn)和核醫(yī)學(xué)成像等領(lǐng)域有著廣泛應(yīng)用[1-5]。高精度時(shí)間測(cè)量既可使用專用集成電路(application specific integrated circuit,ASIC)芯片實(shí)現(xiàn),也可使用現(xiàn)場(chǎng)可編程邏輯門陣列(field programmable gate array,FPGA)實(shí)現(xiàn)。使用ASIC芯片可達(dá)到更高的時(shí)間測(cè)量精度、更高的能效及更優(yōu)的面積效率,但開(kāi)發(fā)周期長(zhǎng)、開(kāi)發(fā)成本高,不利于快速迭代與應(yīng)用[6-9]。使用FPGA實(shí)現(xiàn)具有開(kāi)發(fā)周期短、開(kāi)發(fā)成本低、易移植及可大規(guī)模擴(kuò)展的優(yōu)點(diǎn),隨著FPGA工藝的發(fā)展,能達(dá)到的時(shí)間測(cè)量精度也越來(lái)越高[10-17]。
利用FPGA實(shí)現(xiàn)時(shí)間測(cè)量的主流方法有進(jìn)位鏈法和時(shí)鐘相移法。FPGA中具有豐富的進(jìn)位鏈資源,可形成高精度時(shí)間測(cè)量所需的延遲線,使用進(jìn)位鏈實(shí)現(xiàn)是研究的一個(gè)重要方向。Wang等[12]基于Kintex-7 FPGA,使用多邊沿檢測(cè)方法實(shí)現(xiàn)了均方根(root mean square,RMS)精度為3.0 ps,采樣率為277 MHz的時(shí)間數(shù)字轉(zhuǎn)換器。Song等[13]基于Kintex-7 FPGA,使用時(shí)間抽樣結(jié)構(gòu)實(shí)現(xiàn)了RMS精度為5.3 ps,采樣率為350 MHz的時(shí)間數(shù)字轉(zhuǎn)換器。Kuang等[14]使用環(huán)形振蕩器多次測(cè)量結(jié)構(gòu)基于Kintex-7 FPGA實(shí)現(xiàn)了RMS精度為5.76 ps的時(shí)間數(shù)字轉(zhuǎn)換器。張孟翟等[15]基于Kintex-7 FPGA進(jìn)位鏈設(shè)計(jì)了一款RMS精度為36.8 ps的8通道時(shí)間數(shù)字轉(zhuǎn)換器。王巍等[16]基于Virtex-5 FPGA進(jìn)行布局布線,優(yōu)化實(shí)現(xiàn)了RMS精度為25 ps的時(shí)間數(shù)字轉(zhuǎn)換器。
使用進(jìn)位鏈進(jìn)行時(shí)間測(cè)量雖可獲得高時(shí)間精度,但易受溫度等因素的影響,而使用時(shí)鐘相移法進(jìn)行時(shí)間測(cè)量則不易受這些因素的影響。Palani等[17]提出了一種面積高效的時(shí)間數(shù)字轉(zhuǎn)換器,該方法使用寄存器時(shí)鐘相移法和多種溫度計(jì)碼編碼方法,時(shí)間精度為2.2 ns且受溫度變化影響很小。Sano等[18]基于4相時(shí)鐘采樣在Kintex-7 FPGA上實(shí)現(xiàn)了時(shí)間分辨率為0.28 ns的時(shí)間數(shù)字轉(zhuǎn)換器。王巍等[19]基于16相時(shí)鐘采樣在Virtex-5 FPGA上實(shí)現(xiàn)了RMS精度為64 ps的時(shí)間數(shù)字轉(zhuǎn)換器,且資源使用率更高。
本文提出一種基于FPGA的48通道高精度時(shí)間測(cè)量系統(tǒng)。該測(cè)量系統(tǒng)在PC端對(duì)溫度計(jì)碼進(jìn)行處理,設(shè)計(jì)了基于對(duì)數(shù)取整的溫度計(jì)碼時(shí)間轉(zhuǎn)換方法。系統(tǒng)的每個(gè)輸入通道都具有閾值可編程設(shè)置,一方面能實(shí)現(xiàn)不同閾值下脈沖時(shí)間的測(cè)量,另一方面可多通道對(duì)多脈沖同時(shí)測(cè)量實(shí)現(xiàn)多脈沖時(shí)間關(guān)聯(lián),還可多通道多閾值同時(shí)對(duì)一個(gè)脈沖測(cè)量實(shí)現(xiàn)對(duì)脈沖形狀的繪制。系統(tǒng)使用粗粒度與細(xì)粒度結(jié)合的方式進(jìn)行時(shí)間測(cè)量,使用4相800 MHz時(shí)鐘進(jìn)行細(xì)粒度時(shí)間測(cè)量,使用100 MHz時(shí)鐘進(jìn)行粗粒度時(shí)間測(cè)量。該系統(tǒng)還具有遠(yuǎn)程傳輸功能,因此該系統(tǒng)可用于遠(yuǎn)程多通道多閾值時(shí)間測(cè)量等應(yīng)用中,如高能物理實(shí)驗(yàn)中的輻射探測(cè)等。
本文的時(shí)間測(cè)量系統(tǒng)采用粗粒度與細(xì)粒度測(cè)量結(jié)合的方式進(jìn)行時(shí)間測(cè)量,圖1為時(shí)間測(cè)量示意圖。圖1中,Fine time為溫度計(jì)碼,表示細(xì)粒度時(shí)間;黑色虛線框?yàn)榧?xì)粒度測(cè)量模塊。粗粒度測(cè)量使用二進(jìn)制計(jì)數(shù)器實(shí)現(xiàn),可達(dá)到很大的時(shí)間量程。與文獻(xiàn)中微秒或毫秒量級(jí)的時(shí)間量程相比,本文的時(shí)間測(cè)量系統(tǒng)在100 MHz時(shí)鐘下量程可達(dá)到10 min,能滿足大量程應(yīng)用的需求。細(xì)粒度測(cè)量使用4相時(shí)鐘(0°,90°,180°,270°)實(shí)現(xiàn),時(shí)鐘頻率為800 MHz。由于粗粒度測(cè)量和細(xì)粒度測(cè)量的時(shí)鐘頻率差8倍,因此細(xì)粒度測(cè)量的傳播鏈上有8級(jí)寄存器。4相時(shí)鐘和8級(jí)寄存器將一個(gè)粗粒度時(shí)鐘周期分為32份,則理論上細(xì)粒度測(cè)量的時(shí)間分辨率可達(dá)312.5 ps,若增加時(shí)鐘的相位數(shù)則可獲得更高的時(shí)間分辨率。在每個(gè)粗粒度時(shí)鐘的上升沿分別對(duì)細(xì)粒度傳播鏈的寄存器和粗粒度二進(jìn)制計(jì)數(shù)器進(jìn)行采樣,若檢測(cè)到輸入則將采樣值存入通道buffer中。
圖1 時(shí)間測(cè)量示意圖
實(shí)現(xiàn)細(xì)粒度測(cè)量的關(guān)鍵是獲取每相時(shí)鐘下的溫度計(jì)碼。寄存器在細(xì)粒度時(shí)鐘上升沿對(duì)輸入進(jìn)行采樣并向下傳播,當(dāng)輸入為低電平時(shí),寄存器的采樣值為0,當(dāng)輸入為高電平時(shí),寄存器的采樣值為1。在粗粒度時(shí)鐘的上升沿對(duì)每條傳播鏈上的8個(gè)寄存器進(jìn)行采樣,獲得溫度計(jì)碼,圖2為溫度計(jì)碼產(chǎn)生示意圖。
圖2 溫度計(jì)碼產(chǎn)生示意圖
獲得溫度計(jì)碼后需將其轉(zhuǎn)換成時(shí)間。大部分時(shí)間數(shù)字轉(zhuǎn)換器直接在FPGA內(nèi)實(shí)現(xiàn)溫度計(jì)碼到二進(jìn)制數(shù)的轉(zhuǎn)換,為此要設(shè)計(jì)相應(yīng)的轉(zhuǎn)換電路。由于溫度計(jì)碼在采樣時(shí)易產(chǎn)生“氣泡”問(wèn)題,還需設(shè)計(jì)除“氣泡”電路。當(dāng)溫度計(jì)碼無(wú)須在FPGA內(nèi)直接轉(zhuǎn)換成二進(jìn)制數(shù)時(shí),則可在PC端采取更靈活的轉(zhuǎn)換方式。本文的時(shí)間測(cè)量系統(tǒng)在PC端通過(guò)對(duì)數(shù)取整法實(shí)現(xiàn)對(duì)溫度計(jì)碼的時(shí)間轉(zhuǎn)換。當(dāng)溫度計(jì)碼中存在“氣泡”時(shí),正常的“00011111”可能會(huì)變成“00010111”等形式,但實(shí)現(xiàn)正確轉(zhuǎn)換的關(guān)鍵是找到最高位的“1”。對(duì)數(shù)取整法可表示為
(1)
其中:Bn為溫度計(jì)碼中最高位“1”的位置;Mn為溫度計(jì)碼;n=1,2,3,4分別對(duì)應(yīng)0°,90°,180°,270°的相移時(shí)鐘。“氣泡”也可能會(huì)影響最高位“1”,因此需對(duì)Bn進(jìn)行修正。由圖2可見(jiàn),在不同相位細(xì)粒度時(shí)鐘下,寄存器鏈最高位“1”的位置最多相差一位,因此對(duì)Bn的修正方法可表示為
(2)
其中:Bmax為Bn中的最大值。修正完后,將溫度計(jì)碼轉(zhuǎn)換成輸入信號(hào)上升沿的測(cè)量時(shí)間t1,表示為
(3)
其中:P為粗粒度計(jì)數(shù)器的值;T為粗粒度時(shí)鐘周期。
為實(shí)現(xiàn)對(duì)輸入信號(hào)下降沿時(shí)間的測(cè)量,將輸入信號(hào)取反后接入與上升沿同樣的測(cè)量電路。輸入型號(hào)的脈沖寬度tw可表示為
tw=t2-t1
(4)
其中,t2分別為下降沿的測(cè)量時(shí)間。
本文的時(shí)間測(cè)量系統(tǒng)能實(shí)現(xiàn)3種功能:(1)不同閾值下脈沖時(shí)間測(cè)量;(2)多通道對(duì)多脈沖同時(shí)測(cè)量,實(shí)現(xiàn)多脈沖時(shí)間關(guān)聯(lián);(3)多通道多閾值同時(shí)對(duì)一個(gè)脈沖測(cè)量,實(shí)現(xiàn)對(duì)脈沖形狀的繪制。實(shí)現(xiàn)這些功能的基礎(chǔ)是每個(gè)通道的閾值可編程。圖3為多閾值測(cè)量示意圖。由圖3(a)可見(jiàn),電壓比較器的參考電壓(即閾值)可編程,當(dāng)輸入的模擬信號(hào)電壓高于閾值時(shí),輸出為高電平;當(dāng)電壓低于閾值時(shí),輸出為低電平。由圖3(b)可見(jiàn),實(shí)現(xiàn)不同閾值下脈沖時(shí)間測(cè)量,同一通道可設(shè)置不同的閾值,測(cè)量出輸入信號(hào)在達(dá)到該閾值時(shí)的時(shí)間。由圖3(c)可見(jiàn),多通道多脈沖同時(shí)測(cè)量,實(shí)現(xiàn)多脈沖時(shí)間關(guān)聯(lián),將多個(gè)通道的閾值設(shè)置為相同值,測(cè)量出多脈沖之間的時(shí)間關(guān)系。由圖3(d)可見(jiàn),多通道多閾值同時(shí)對(duì)一個(gè)脈沖測(cè)量實(shí)現(xiàn)對(duì)脈沖形狀的估計(jì),將多個(gè)通道的閾值設(shè)置成階梯分布,分別測(cè)量同一輸入信號(hào)達(dá)到相應(yīng)閾值的時(shí)間,再根據(jù)閾值和對(duì)應(yīng)的時(shí)間完成對(duì)輸入信號(hào)的估計(jì)。
(a)Threshold voltage setting
(b)Single-channel with multi-threshold-voltage
(c)Multi-channel with the same threshold voltage
(d)Multi-channel with multi-threshold-voltage
測(cè)量系統(tǒng)框架如圖4所示,包括獲取端、傳輸端和PC端。獲取端完成時(shí)間信息的獲取;傳輸端完成時(shí)間信息及獲取端指令的傳輸;PC端完成時(shí)間信息的轉(zhuǎn)換與指令發(fā)送。
獲取端共有48路輸入,每路輸入均通過(guò)電壓比較器(CAP)與FPGA相連。FPGA對(duì)數(shù)字模擬轉(zhuǎn)換器(DAC)進(jìn)行控制并接收CAP輸出的信號(hào),實(shí)現(xiàn)時(shí)間信息的獲取。主控模塊與獲取端的其他模塊進(jìn)行交互并控制其狀態(tài)。電壓控制模塊通過(guò)輸出SPI指令控制DAC的輸出電壓,DAC的輸出電壓作為CAP的參考電壓,CAP的輸出作為FPGA的輸入信號(hào)。時(shí)鐘模塊提供100 MHz時(shí)鐘作為粗粒度時(shí)鐘,提供4相800 MHz時(shí)鐘作為細(xì)粒度時(shí)鐘。時(shí)間轉(zhuǎn)換模塊接收輸入信號(hào)并獲取對(duì)應(yīng)的溫度計(jì)碼和二進(jìn)制計(jì)數(shù)器值,該模塊的內(nèi)部結(jié)構(gòu)對(duì)應(yīng)圖1。獲取的溫度計(jì)碼和二進(jìn)制計(jì)數(shù)器值經(jīng)過(guò)FIFO初步緩存與時(shí)鐘域轉(zhuǎn)換后由傳輸模塊進(jìn)行遠(yuǎn)程傳輸。
傳輸端完成遠(yuǎn)程傳輸功能,與獲取端通過(guò)光纖連接,進(jìn)行時(shí)間信息的傳輸與相關(guān)指令的發(fā)送。傳輸端對(duì)接收的時(shí)間信息進(jìn)行緩存,并通過(guò)USB接口與PC端進(jìn)行交互。傳輸端具有遠(yuǎn)程傳輸功能,適用于需遠(yuǎn)程獲取時(shí)間信息的應(yīng)用。
PC端接收傳輸端發(fā)送的時(shí)間信息,將溫度計(jì)碼和二進(jìn)制計(jì)數(shù)器值轉(zhuǎn)換成時(shí)間,進(jìn)行顯示與下一步應(yīng)用。同時(shí)PC端發(fā)送指令設(shè)置獲取端的閾值電壓及對(duì)時(shí)間獲取模塊進(jìn)行初始化。
本文選用符合條件的FPGA及其他器件實(shí)現(xiàn)48通道高精度時(shí)間測(cè)量系統(tǒng),圖5為測(cè)量系統(tǒng)實(shí)物圖。外部晶振給FPGA提供時(shí)鐘,FPGA內(nèi)部時(shí)鐘管理模塊對(duì)時(shí)鐘進(jìn)行分頻,得到粗粒度計(jì)時(shí)和細(xì)粒度計(jì)時(shí)所需時(shí)鐘。使用碼密度法測(cè)試每個(gè)延時(shí)單元的延時(shí)時(shí)間,測(cè)試信號(hào)由FPGA內(nèi)部LUT組成的環(huán)形振蕩器給出。由于粗粒度計(jì)時(shí)的每個(gè)時(shí)鐘周期被細(xì)粒度計(jì)時(shí)分為32份,因此共有32個(gè)延時(shí)單元。通道1每個(gè)延時(shí)單元的延時(shí)時(shí)間,即Bin寬分布如圖6所示。由圖6可見(jiàn),每個(gè)延時(shí)單元的延時(shí)約為0.312 5 ns,與設(shè)計(jì)基本一致。
圖4 測(cè)量系統(tǒng)框架
圖5 測(cè)量系統(tǒng)實(shí)物圖
圖6 Bin寬分布
使用脈沖信號(hào)發(fā)生器產(chǎn)生兩路脈沖信號(hào)分別提供給通道1和通道2,通過(guò)電纜延遲調(diào)整兩路脈沖信號(hào)的時(shí)間間隔,得到RMS精度隨時(shí)間間隔的變化關(guān)系,如圖7所示。
圖7 RMS精度隨時(shí)間間隔的變化關(guān)系
由圖7可見(jiàn),RMS精度最大約為0.27 ns,最小約為0.18 ns且RMS精度隨兩個(gè)通道間的時(shí)間間隔有一定周期性的變化,周期為10 ns,與粗粒度計(jì)時(shí)的時(shí)鐘周期相同。原因?yàn)檠訒r(shí)單元的延時(shí)時(shí)間分布不均勻。
使用脈沖信號(hào)發(fā)生器產(chǎn)生脈沖信號(hào)給通道1和通道2~8,時(shí)間間隔通過(guò)電纜延遲設(shè)置為2 ns,得到不同通道的RMS精度,如圖8所示。由圖8可見(jiàn),不同通道的RMS精度為0.12~0.27 ns之間,其他通道也基本在此范圍內(nèi)。
圖8 不同通道的RMS精度
本系統(tǒng)的一個(gè)重要特色是可進(jìn)行多閾值比較,從而測(cè)量一個(gè)或多個(gè)輸入脈沖信號(hào)到達(dá)不同閾值時(shí)的時(shí)間。將測(cè)量系統(tǒng)不同通道閾值設(shè)置為不同值,對(duì)同一脈沖信號(hào)到達(dá)不同閾值電壓的時(shí)間進(jìn)行測(cè)量,得到多閾值測(cè)量結(jié)果,如圖9所示。
圖9 多閾值測(cè)量結(jié)果
由圖9可見(jiàn),輸入的脈沖信號(hào)從0變化到3.3 V時(shí)間為2 ns,變化趨勢(shì)為中間快,前后慢;當(dāng)閾值電壓較低時(shí),測(cè)量的波形與實(shí)際輸入的吻合度較差;當(dāng)閾值電壓較高時(shí),測(cè)量的波形與實(shí)際輸入吻合得較好,原因?yàn)殚撝惦妷狠^低時(shí)受外部噪聲影響大。閾值電壓較低時(shí),波形吻合度雖不是很好,但總體時(shí)間關(guān)系均正確,在不適合高頻示波器的場(chǎng)景下可用于估計(jì)輸入脈沖的形狀。圖9也可作為多脈沖時(shí)間關(guān)聯(lián)的測(cè)試結(jié)果,此時(shí)不同通道的脈沖一致,但閾值不同,從而可測(cè)量出不同通道脈沖信號(hào)到達(dá)相應(yīng)閾值先后關(guān)系。
表1為不同時(shí)間測(cè)量系統(tǒng)的對(duì)比。表1中,時(shí)間測(cè)量系統(tǒng)均基于時(shí)鐘相移法,因此,影響測(cè)量精度的主要因素為細(xì)粒度時(shí)鐘頻率與相位數(shù)。
表1 不同時(shí)間測(cè)量系統(tǒng)的對(duì)比
由表1可知,當(dāng)使用4相時(shí)鐘進(jìn)行細(xì)粒度測(cè)量時(shí),本文時(shí)間測(cè)量系統(tǒng)的測(cè)量精度略高于文獻(xiàn)[18],明顯高于文獻(xiàn)[17]。由于文獻(xiàn)[19]采用了16相時(shí)鐘,因此,在400 MHz時(shí)鐘下獲得了更高的性能。但本文時(shí)間測(cè)量系統(tǒng)具有多閾值測(cè)量和遠(yuǎn)程測(cè)量功能,能用于更多特殊場(chǎng)景。
本文提出了一種48通道高精度時(shí)間測(cè)量系統(tǒng),在FPGA上進(jìn)行了實(shí)現(xiàn)和測(cè)試。提出了一種基于對(duì)數(shù)取整的溫度計(jì)碼轉(zhuǎn)換方法,在PC端實(shí)現(xiàn)溫度計(jì)碼與時(shí)間的快速轉(zhuǎn)換。測(cè)量系統(tǒng)設(shè)計(jì)了多閾值設(shè)置功能,從而能實(shí)現(xiàn)對(duì)脈沖達(dá)到不同電壓的時(shí)間的測(cè)量。測(cè)試結(jié)果表明測(cè)量系統(tǒng)的時(shí)間分辨率約為0.31 ns,RMS精度優(yōu)于0.27 ns,能實(shí)現(xiàn)多閾值脈沖時(shí)間測(cè)量。同時(shí)測(cè)量系統(tǒng)具有遠(yuǎn)程數(shù)據(jù)傳輸和閾值設(shè)置功能,適用于遠(yuǎn)程多通道多閾值時(shí)間測(cè)量等場(chǎng)景中。