針對FPGA優(yōu)化的高分辨率時(shí)間數字轉換陣列電路
數字時(shí)間轉換電路TDC(Time-to-Digital Converter)是精密時(shí)間測量中的核心模塊,在粒子物理、激光測距、遙感成像等方面有非常廣泛的應用。
時(shí)間數字轉換電路起源于20世紀60年代的核技術(shù)與航空航天領(lǐng)域,文獻[1]首次提出數字時(shí)間測量的概念。時(shí)間間隔測量的方法可以大致分為模擬測量與數字測量?jì)纱箢?lèi)。模擬測量方法,包括時(shí)間幅度轉換TAC(Time-to-Amplitude Converter)法[2]與模擬時(shí)間放大法,都是通過(guò)電容充放電的特性把時(shí)間量轉換為可以測量的電壓量或者電荷量,從而達到測量時(shí)間的目的。但是在多數模擬測量方法中還需要進(jìn)行模數(AD)轉換來(lái)進(jìn)行數據的后續處理。此種方法通常由印制電路板上的不同分立元件與芯片構成,因此功耗面積較大,依賴(lài)環(huán)境溫度且易受電磁干擾,電路調試也相對比較困難[3]。隨著(zhù)大規模集成電路技術(shù)的成熟,單個(gè)芯片集成的晶體管數量成倍增長(cháng),計算能力與處理能力也大大提高。文獻[5]首次采用CMOS工藝設計出了一種基于環(huán)形延遲線(xiàn)的全數字時(shí)間數字轉換器,此外還有如延遲鎖定環(huán)[4]DLL(Delay Lock Loop)方法、高速計數器[7]方法、時(shí)間延遲線(xiàn)[8-13]方法等,都是利用器件本身的延遲來(lái)達到時(shí)間測量的目的。
近年來(lái),由于FPGA技術(shù)的迅猛發(fā)展,在低成本低設計周期方面,FPGA已經(jīng)可以部分取代ASIC。它所特有的可重用性不僅增加了系統的靈活性、適應性,也大大減小了系統的規模,極具開(kāi)發(fā)和研究的潛力。因此,針對FPGA進(jìn)行優(yōu)化的TDC設計方案成為研究人員關(guān)注的焦點(diǎn)。文獻[4]針對FPGA中延遲的一致性問(wèn)題,提出了采用類(lèi)似環(huán)形延時(shí)門(mén)設計的粗計數與細計數兩部分電路來(lái)完成時(shí)間數字轉換,達到了3.3 ns的時(shí)鐘分辨率。文獻[6]通過(guò)對文獻[5]的方法進(jìn)行改進(jìn),在CPLD上實(shí)現了時(shí)鐘分辨率達3.5 ns的TDC。本文針對解決FPGA延遲特性不確定的問(wèn)題,提出了一種采用時(shí)鐘狀態(tài)譯碼的方法進(jìn)行時(shí)間數字轉換的陣列電路CDTDC(Clock Decoder based TDC),陣列規模為16×16。在A(yíng)ltera公司的Cyclone II EP2C15上進(jìn)行仿真測試,工作頻率50 MHz,時(shí)鐘分辨率可達1.73 ns。
1 CDTDC陣列的工作原理
1.1 CDTDC計數模塊
由于FPGA的硬件結構限制,計數器在較高頻率下的工作不穩定,在狀態(tài)轉換過(guò)程中易產(chǎn)生毛刺、跳碼,影響正確的系統輸出,時(shí)間分辨率很難提高[14]。為了避免此類(lèi)情況發(fā)生,加入結構簡(jiǎn)單、占用資源少的細計數功能模塊來(lái)提高時(shí)間分辨率。本設計中采用二進(jìn)制計數器與時(shí)鐘狀態(tài)譯碼分別完成粗計數與細計數,從而對時(shí)間間隔進(jìn)行測量。
CDTDC陣列中單元電路的原理框圖如圖1所示,每個(gè)單元電路具有獨立的時(shí)間間隔測量功能。為了減小電路規模,粗計數模塊采用10 bit線(xiàn)性反饋移位寄存器(LFSR)實(shí)現。LFSR對計數時(shí)鐘進(jìn)行計數,后續再對LFSR進(jìn)行狀態(tài)譯碼即可得到所計的時(shí)鐘數。計數時(shí)鐘來(lái)自片上鎖相環(huán)(PLL)對外部時(shí)鐘的倍頻。當起始信號達到時(shí),接入系統時(shí)鐘開(kāi)始計數;當停止信號到達時(shí),計數/讀出時(shí)鐘使能信號變?yōu)檫壿嫷?,關(guān)閉連接LFSR時(shí)鐘輸入端的與門(mén),達到停止計數的功能。計數時(shí)鐘的工作頻率為150 MHz,因而粗計數模塊可以達到的時(shí)間測量范圍為6.8 μs。
細計數模塊由上升沿觸發(fā)的鎖存器1、鎖存器2、計數時(shí)鐘與移相時(shí)鐘組成。為了提高時(shí)鐘分辨率,將計數時(shí)鐘移相90°,通過(guò)鎖存器鎖存兩個(gè)時(shí)鐘在停止信號到達時(shí)的邏輯電平作為狀態(tài)碼,進(jìn)而提高時(shí)間分辨率。具體過(guò)程是:當停止信號達到時(shí),連接鎖存器時(shí)鐘輸入端的與門(mén)產(chǎn)生電平跳變,在上升沿把計數時(shí)鐘與移相時(shí)鐘的邏輯電平鎖存進(jìn)鎖存器中,時(shí)序圖如圖2所示。鎖存器1保持了停止信號到達時(shí)計數時(shí)鐘的時(shí)鐘狀態(tài),從而可將時(shí)鐘分辨率提高至時(shí)鐘周期的1/2;鎖存器2保持了移相時(shí)鐘在停止信號達到時(shí)的狀態(tài),從而將時(shí)鐘分辨率提高至時(shí)鐘周期的1/4。故在計數時(shí)鐘為150 MHz的情況下,時(shí)間分辨率的理論值為1.667 ns。
1.2 CDTDC讀出模塊
當對記錄的時(shí)間進(jìn)行數據讀出時(shí),需要輸入讀出時(shí)鐘。時(shí)鐘切換模塊在系統進(jìn)入讀出狀態(tài)時(shí)對移位寄存器的輸入時(shí)鐘進(jìn)行切換,完成數據的正確讀出。為了節約邏輯資源,采用組合邏輯電路對時(shí)鐘信號進(jìn)行切換控制。
如圖1所示,當系統工作在讀出模式時(shí),計數/讀出模式切換信號變?yōu)檫壿嫷?,關(guān)閉輸入計數時(shí)鐘的與門(mén),同時(shí)打開(kāi)輸入讀出時(shí)鐘的或門(mén),在計數/讀出使能信號允許的條件下,輸入讀出時(shí)鐘至LFSR的時(shí)鐘端口。多功能移位寄存器的時(shí)鐘切換同理。
在計數/讀出模式切換信號允許的條件下,通過(guò)切換多路復用器斷開(kāi)LFSR的反饋輸入端,將多功能移位寄存器的輸出輸入LFSR中。多功能移位寄存器會(huì )自動(dòng)在并入串出與串入串出模式下進(jìn)行切換,首先將時(shí)鐘狀態(tài),即鎖存器的輸出移入,然后輸入前一個(gè)單元電路的輸出,如此每行相鄰的單元電路串聯(lián)直至數據輸出端。圖3為陣列電路結構圖,對于16×16的陣列,每行一個(gè)數據讀出鏈。每個(gè)單元電路的讀出數據為12 bit,故每行信號的數據量為192 bit。如果數據讀出時(shí)鐘為10 MHz,則讀出時(shí)間為1/10 MHz×192=19.2 μs。如果陣列規模增大,則可提高讀出時(shí)鐘頻率。
1.3 CDTDC控制模塊
鑒于系統需要自動(dòng)在計數與讀出兩種模式下進(jìn)行切換,并需復位相應寄存器,本設計采用狀態(tài)機來(lái)控制CDTDC的模式切換??刂颇K狀態(tài)機示意圖如圖4所示。
系統上電復位后,處于復位(10)狀態(tài)。在此狀態(tài)下,進(jìn)行移位寄存器的清零,同時(shí)復位所有控制信號至初始狀態(tài)。復位狀態(tài)持續4個(gè)時(shí)鐘周期,狀態(tài)跳轉到計數狀態(tài)。在計數(00)狀態(tài)下,計數/讀出模式切換信號禁止,系統工作在計數模式。接入計數時(shí)鐘,LFSR開(kāi)始計數。同時(shí),為使系統具有可配置性,在計數狀態(tài)中加入一個(gè)10 bit計數器來(lái)配置系統可以記錄的最大時(shí)間間隔。若屏蔽此計數器,則此狀態(tài)持續時(shí)間為系統可以達到的最大時(shí)間測量范圍,即6.8 μs。實(shí)際應用中可根據用戶(hù)實(shí)際需要對計數器進(jìn)行配置來(lái)限制計數狀態(tài)的持續時(shí)間。計數狀態(tài)結束后跳轉到讀出(01)狀態(tài),計數/讀出模式切換信號允許,啟動(dòng)數據讀出模塊,完成記錄時(shí)間的讀出。如前所述,單行數據鏈需要的讀出時(shí)間約為20 μs。此后系統回到復位狀態(tài)準備下次計數。
2 仿真測試與硬件實(shí)現
2.1 仿真結果分析
本設計采用Altera公司的Quartus II與Mentor Graphics公司的Modelsim作為主要的設計工具。Cyclone系列FPGA具有片上鎖相環(huán)(PLL)模塊,可以對輸入時(shí)鐘進(jìn)行精確的倍頻、分頻、相位偏移、可編程占空比等操作。系統外部時(shí)鐘輸入頻率為50 MHz,通過(guò)配置片上PLL,可獲得3倍頻的計數時(shí)鐘與移相時(shí)鐘,5分頻的讀出時(shí)鐘。
圖5為單元電路計數狀態(tài)仿真結果。rst為系統復位信號,start為計數起始信號,stop為計數停止信號,cnt_clk為計數時(shí)鐘,shifted_clk為移相時(shí)鐘,state為狀態(tài)機狀態(tài)碼,shift_reg為多功能移位寄存器并行輸入端口,q為線(xiàn)性反饋移位寄存器輸出。在計數狀態(tài)下,當stop產(chǎn)生正脈沖時(shí),LFSR停止計數,多功能移位寄存器并行輸入鎖存器1與鎖存器2輸出的時(shí)鐘邏輯電平,記錄時(shí)鐘狀態(tài)。圖6為單元電路數據讀出狀態(tài)仿真時(shí)序圖,rd_out為讀出引腳,在讀出時(shí)鐘作用下,數據從移位寄存器中依次移出。
2.2 硬件測試
時(shí)間數字轉換陣列在Cyclone II EP2C15芯片實(shí)現,系統外部時(shí)鐘50 MHz。由函數發(fā)生器提供頻率為F的脈沖信號,信號上升沿作為系統的起始信號,下降沿作為系統的停止信號,測得在不同頻率下的時(shí)鐘分辨率。測試數據表明時(shí)間分辨率的算術(shù)平均值為1.73 ns。
通過(guò)仿真與硬件測試表明,本設計能夠準確進(jìn)行時(shí)間數字轉換,各項功能均達到預期要求。以低密度低成本的Altera Cyclone II EP2C15作為目標芯片的綜合報告顯示,單元電路占用FPGA邏輯資源約為0.375%,具有極低的資源占用率。本設計時(shí)間分辨率最高可達1.73 ns,并且實(shí)現原理簡(jiǎn)單,具有可行性。
評論