周 磊,王春娥
(1.鹽城工學(xué)院 電氣工程學(xué)院,江蘇 鹽城 224051;2.鹽城工學(xué)院 材料工程學(xué)院,江蘇 鹽城 224051)
?
基于FPGA的時(shí)間數(shù)字轉(zhuǎn)換器的編碼器
周磊1,王春娥2
(1.鹽城工學(xué)院 電氣工程學(xué)院,江蘇 鹽城224051;2.鹽城工學(xué)院 材料工程學(xué)院,江蘇 鹽城224051)
摘要:時(shí)間數(shù)字轉(zhuǎn)換器的編碼器需要把溫度計(jì)碼轉(zhuǎn)換1-0(0-1)跳變處的二進(jìn)制位置碼。針對(duì)FPGA的查找表結(jié)構(gòu),實(shí)現(xiàn)了處理任意2m位溫度計(jì)碼的3種行為級(jí)編碼器(順序查找法、折半查找法和累加法)和4種數(shù)據(jù)流級(jí)編碼器(wallace樹(shù)、胖樹(shù)、MUX和ROM)的算法描述,并在EP3C25E144I7中實(shí)現(xiàn)。通過(guò)對(duì)比編碼器的LUT使用個(gè)數(shù)、最短路徑延時(shí)、最長(zhǎng)路徑延時(shí)和毛刺,發(fā)現(xiàn)在FPGA上性能相近且最優(yōu)的是胖樹(shù)結(jié)構(gòu)和ROM結(jié)構(gòu)的編碼器。ROM結(jié)構(gòu)比胖樹(shù)結(jié)構(gòu)更易于被編程實(shí)現(xiàn)和移植。
關(guān)鍵詞:編碼器;時(shí)間數(shù)字轉(zhuǎn)換器;FPGA;胖樹(shù);ROM
基于FPGA(Field Programming Gate Array,現(xiàn)場(chǎng)可編程門(mén)陣列)的時(shí)間數(shù)字轉(zhuǎn)換器[1-3](Time to Digital Converter, TDC)的基本結(jié)構(gòu)如圖1所示。在確保待測(cè)信號(hào)s到達(dá)延時(shí)鏈輸入端的傳輸延時(shí)和系統(tǒng)時(shí)鐘clk到達(dá)寄存器時(shí)鐘腳的傳輸延時(shí)一致的情況下,經(jīng)過(guò)延時(shí)鏈的s信號(hào)上升沿(下降沿)跳變被寄存器鎖存后的輸出tc[n-1:0]=1111…00000(0000…11111),稱(chēng)為溫度計(jì)碼(Thermometer Code)。tc的1-0(0-1)跳變位置反映了s的跳變沿到時(shí)鐘的上升沿之間的延時(shí),由溫度計(jì)碼編碼器(Thermometer Code Encoder,TCE)計(jì)算出tc跳變沿的位置bg[m-1:0],再累加tc跳變沿之前每個(gè)延時(shí)單元的延時(shí),可得到s跳變沿到clk上升沿下降沿之間的延時(shí)。
延時(shí)鏈的總延時(shí)tdl大于時(shí)鐘周期Tclk時(shí),TDC可以正確鎖存tc。TCE處于鎖存寄存器組和FIFO中間,為滿足寄存器的建立時(shí)間和保持時(shí)間約束,TCE最大路徑延時(shí)應(yīng)該小于Tclk。由此,TCE的最大路徑延時(shí)越小,TDC的死時(shí)間越小,fclk就越高,Tclk就越小,tdl就可以越小,延時(shí)鏈的長(zhǎng)度就可以越短,整個(gè)TDC的使用資源就越少,單片F(xiàn)PGA中的TDC通道數(shù)[3-4]就可以越多。而單周期的TCE允許TDC連續(xù)測(cè)量。
在ADC(Analog to Digital Converter,模數(shù)轉(zhuǎn)換器)設(shè)計(jì)中涉及的是16位及以下的TCE,主要實(shí)現(xiàn)方法有:Wallace樹(shù)[5-6]結(jié)構(gòu)、ROM結(jié)構(gòu)[7]、胖樹(shù)結(jié)構(gòu)[8]、MUX結(jié)構(gòu)[9]。設(shè)計(jì)選擇的目標(biāo)芯片為Altera公司的EP3C25E144I7,它每個(gè)LAB(Logic Array Block,邏輯陣列塊)中有16個(gè)LE(Logic Elements,邏輯單元),每個(gè)LE由1個(gè)LUT(Look Up Table,查找表)和1個(gè)觸發(fā)器組成[10]。這就意味著在FPGA中采用任何結(jié)構(gòu)來(lái)實(shí)現(xiàn)TCE,最終都是由LUT基本單元以及單元之間固定的可編程連線資源構(gòu)成。另外,由于FPGA中延時(shí)鏈多采用一列上位置相鄰的LAB中LUT順序級(jí)聯(lián)實(shí)現(xiàn),單元延時(shí)都在ps級(jí)別,tc[n-1:0]的長(zhǎng)度n=16k(k取決于Tclk,取自然數(shù))位。FPGA固定的連線資源、不變的最小組合邏輯單元LUT和任意的n,要求FPGA中的TCE設(shè)計(jì)需要對(duì)全定制ADC采用的編碼結(jié)構(gòu)進(jìn)行拓展,找到一種通用性強(qiáng)、人工干預(yù)少、糾錯(cuò)能力強(qiáng)、最大路徑延時(shí)小、使用LUT個(gè)數(shù)少和毛刺少的編碼算法。
1編碼器的實(shí)現(xiàn)
如圖1,TCE的輸入為n位的tc[n-1:0],輸出為m位的bg[m-1:0]。考慮n=16k,以及MUX的結(jié)構(gòu)要求n=2m,設(shè)計(jì)實(shí)現(xiàn)了 k=[1 2 4 8 16 32],m=[4 5 6 7 8 9],n=[16 32 64 128 256 512]這6種情況的TCE,其他n位TCE可按照算法或結(jié)構(gòu)簡(jiǎn)單的修改而得到。下文中如沒(méi)有特殊說(shuō)明,n表示輸入的tc位數(shù),m表示輸出的二進(jìn)制碼bg位數(shù)。
圖1 TDC原理框圖Fig.1 Schematic of TDC
由于隨機(jī)噪聲,或者違反時(shí)序造成的觸發(fā)器亞穩(wěn)態(tài)現(xiàn)象,在寄存器輸出的tc會(huì)有“火花”或者“氣泡”(bubble)現(xiàn)象[7],TCE應(yīng)該予以考慮。以下算法處理的tc[n-1:0]均是形如1111…00000。
直接從算法的角度來(lái)實(shí)現(xiàn)TCE,具體的硬件結(jié)構(gòu)完全交給EDA軟件來(lái)實(shí)現(xiàn),稱(chēng)為行為級(jí)編碼器。
1.1.1順序查找
利用for循環(huán),從tc的第0位依次遍歷到第1個(gè)0-1(1-0)跳變的位置,輸出跳變處的位置序號(hào),完成編碼。順序查找算法比較直觀,無(wú)需任何外加電路就可以抑制bubble現(xiàn)象,缺點(diǎn)是最大循環(huán)次數(shù)為n次。
1.1.2折半查找
根據(jù)tc的特征,可以使用折半查找法查找0-1(1-0)跳變的位置。折半查找法的循環(huán)次數(shù)最大為m次,但是bubble現(xiàn)象會(huì)導(dǎo)致錯(cuò)誤的輸出,故需要外加電路來(lái)消除bubble現(xiàn)象。
1.1.3累加法
通過(guò)累加tc中1的個(gè)數(shù)來(lái)判斷0-1(1-0)跳變的位置實(shí)現(xiàn)編碼。累加法需要循環(huán)累加n次,bubble現(xiàn)象引起的誤差在bg上體現(xiàn)為幾個(gè)LSB的誤差。
從硬件結(jié)構(gòu)上找到一種最適宜的編碼算法,稱(chēng)為數(shù)據(jù)流級(jí)編碼器。這不僅節(jié)省FPGA資源還能很好地控制最大路徑延時(shí)。
1.2.1Wallace 樹(shù)結(jié)構(gòu)
類(lèi)似于1.1.3的累加法,Wallace樹(shù)是利用全加器對(duì)tc[n-1:0]中的1進(jìn)行累加,區(qū)別是Wallace樹(shù)的每個(gè)全加器對(duì)應(yīng)2個(gè)LUT,故其使用的資源數(shù)和路徑延時(shí)均是可控的。不過(guò)要達(dá)到最優(yōu)的布局布線結(jié)果,需要人工鎖定每個(gè)全加器的位置,增加了其在FPGA中的實(shí)現(xiàn)難度。n-1位的Wallace樹(shù)結(jié)構(gòu)的TCE如圖2所示,使用的LUT個(gè)數(shù)x(m-1)w和關(guān)鍵路徑長(zhǎng)度c(m-1)w見(jiàn)公式(1)、(2)。Wallace樹(shù)結(jié)構(gòu)不能消除bubble現(xiàn)象帶來(lái)的編碼誤差。
圖2 Wallace樹(shù)結(jié)構(gòu)TCEFig.2 Wallace-tree TCE
(1)
(2)
1.2.2胖樹(shù)結(jié)構(gòu)
胖樹(shù)結(jié)構(gòu)TCE需要一個(gè)如圖3所示的1-out-of-n碼轉(zhuǎn)換電路,把tc[n-1:0]轉(zhuǎn)換成形如00010…00000的tcln[n-1:0],轉(zhuǎn)換電路可以消除2階及以下的bubble。n位胖樹(shù)結(jié)構(gòu)的TCE如公式(3)(4)所示。
(3)
圖3 1-out-of-n 轉(zhuǎn)換電路Fig.3 1-out-of-n circuit
其中OR表示每個(gè)元素連續(xù)相或。
tclni與tclni+1之間的關(guān)系如公式(4)所示,tcln0=tcln。
(4)
使用LUT的個(gè)數(shù)xmf和關(guān)鍵路徑長(zhǎng)度cmf如公式(5)~(7)所示。其中xmff為一級(jí)可復(fù)用的4輸入LUT個(gè)數(shù)。由于在m>6以后會(huì)有二級(jí)及以下的4輸入LUT復(fù)用情況,故xmf與實(shí)際的綜合結(jié)果在m>6以后的誤差會(huì)有所增大。
(5)
(6)
(7)
1.2.3MUX結(jié)構(gòu)
MUX結(jié)構(gòu)的TCE如公式(8)、(9)所示,它使用2選1選擇器個(gè)數(shù)x(m-1)m和關(guān)鍵路徑長(zhǎng)度c(m-1)m如公式(10)、(11)所示。MUX結(jié)構(gòu)的缺點(diǎn)是高位的bg扇出數(shù)較多,這個(gè)問(wèn)題在fpga中實(shí)現(xiàn)TCE顯得尤為突出。
(8)
其中,tcm=tc,nm=n。
(9)
(10)
(11)
1.2.4ROM結(jié)構(gòu)
ADC設(shè)計(jì)中的tc經(jīng)過(guò)圖3所示的1-out-of-n轉(zhuǎn)換電路轉(zhuǎn)換成tcln后經(jīng)ROM結(jié)構(gòu)編碼為二進(jìn)制碼。ROM結(jié)構(gòu)實(shí)現(xiàn)TCE的算法如公式(12)所示,它使用4輸入或門(mén)(1個(gè)LUT)個(gè)數(shù)xmr和關(guān)鍵路徑長(zhǎng)度cmr如公式(6)、(7)所示。
(12)
其中,OR表示多個(gè)元素連續(xù)相或,INT表示取整。ROM結(jié)構(gòu)的TCE最大優(yōu)點(diǎn)是,決定bg[i]的邏輯輸入直接取自tcln,并且每個(gè)bg[i]邏輯相或的tcln位數(shù)均為2m-1,每個(gè)bg[i]的路徑長(zhǎng)度均為cmr,這使得ROM結(jié)構(gòu)的TCE具有最小的毛刺和最小的路徑延時(shí)。
盡管公式(6)和公式(12)給出的TCE算法不一樣,但是由于bg[i]均是2m-1位tcln相或的結(jié)果,以及FPGA中組合邏輯的基本實(shí)現(xiàn)單元是LUT,導(dǎo)致了ROM結(jié)構(gòu)和胖樹(shù)結(jié)構(gòu)的TCE的最終布局布線結(jié)構(gòu)非常相似。
2編碼器仿真結(jié)果分析
仿真軟件采用的是64位的Quartus II 13.1和ModelSim 10.2c。目標(biāo)芯片是Altera 的Cyclone III系列中的EP3C25E144I7,仿真時(shí)序采用Fast 1200mV -40C Model,TCE時(shí)鐘為250 MHz。采用虛擬管腳和位置鎖定,使得TCE的輸入來(lái)自一列觸發(fā)器的輸出,TCE使用緊鄰觸發(fā)器所在列的后2列資源,個(gè)別需要3列。
取m∈{4,5,6,7,8,9},從LUT使用個(gè)數(shù)、最短路徑延時(shí)、最長(zhǎng)路徑延時(shí)和輸出毛刺4個(gè)方面對(duì)比3種行為級(jí)編碼器:順序查找法(sf)、折半查找法(hf)和累加法(af)和4種數(shù)據(jù)流級(jí)編碼器:wallace樹(shù)(wt)、胖樹(shù)(ft)、MUX結(jié)構(gòu)(mc)和ROM結(jié)構(gòu)(rc),最終仿真結(jié)果如圖4~圖7所示,圖中每條折線均對(duì)應(yīng)著同樣m值的不同編碼算法,相關(guān)的延時(shí)數(shù)據(jù)來(lái)自于TimeQuest分析。
圖4 使用LUT的個(gè)數(shù)Fig.4 The number of 4-LUT
圖5 最短路徑延時(shí)Fig.5 The minimum path delay
3結(jié)束語(yǔ)
比較7種TCE實(shí)現(xiàn)算法后發(fā)現(xiàn)胖樹(shù)結(jié)構(gòu)和ROM結(jié)構(gòu)在FPGA中布局布線的結(jié)果是一致的。圖4中可以看出胖樹(shù)結(jié)構(gòu)和ROM結(jié)構(gòu)的TCE使用的LUT個(gè)數(shù)均隨m的增加基本呈現(xiàn)倍增關(guān)系;圖5~圖7可以看出胖樹(shù)結(jié)構(gòu)和ROM結(jié)構(gòu)的TCE的最短路徑延時(shí)、最長(zhǎng)路徑延時(shí)和毛刺隨m
圖6 最長(zhǎng)路徑延時(shí)Fig.6 The maximum path delay
圖7 毛刺Fig.7 Noise
的增加變化不是很明顯,這說(shuō)明胖樹(shù)結(jié)構(gòu)和ROM結(jié)構(gòu)在處理超寬位的tc時(shí)占絕對(duì)優(yōu)勢(shì)。對(duì)比胖樹(shù)結(jié)構(gòu)的算法描述公式(3)、(4)和ROM結(jié)構(gòu)的算法描述公式(12),可以發(fā)現(xiàn)ROM結(jié)構(gòu)的TCE在編程上程序語(yǔ)句更簡(jiǎn)練,易于實(shí)現(xiàn)和在不同F(xiàn)PGA之間的移植。
參考文獻(xiàn):
[1]Kalisz J, Szplet R, Pasierbinski J, et al. Field-programmable-gate-array-based time-to-digital converter with 200-ps resolution[J].Instrumentation and Measurement, IEEE Transactions on, IEEE, 1997,46(1):51-55.
[2]Wu Jinyuan, Shi Zonghan, Wang Irena Y. Firmware-only implementation of Time-to-Digital Converter (TDC) in field-programmable gate array (FPGA)[C].Nuclear Science Symposium Conference Record, 2003 IEEE, IEEE, 2003,1:177-181.
[3]Lichard P, Konstantinou G, Vilanueva A V, et al. Performance evaluation of multiple (32 channels) sub-nanosecond TDC implemented in low-cost FPGA[J].Journal of Instrumentation, IOP Publishing for Sissa Medialab, 2014,9(3):C03013.
[4]Buechele M, Fischer H, Gorzellik M, et al. A 128-channel Time-to-Digital Converter (TDC) inside a Virtex-5 FPGA on the GANDALF module[J].Journal of Instrumentation, IOP Publishing for Sissa Medialab, 2012,7(3):3-8.
[5]Wallace C S. A Suggestion for a Fast Multiplier[J].Electronic Computers, IEEE Transactions on, IEEE, 1964,13(1):14-17.
[6]Kaess F, Kanan R, Hochet B, et al. New encoding scheme for high-speed flash ADC's[C].Circuits and Systems, 1997. ISCAS '97., Proceedings of 1997 IEEE International Symposium on. IEEE, 1997,1:5-8.
[7]Padoan S, Boni A, Morandi C, et al. A Novel coding schemes for the ROM of parallel ADCs, featuring reduced conversion noise in the case of single bubbles in the thermometer code[J].Electronics, Circuits and Systems, 1998 IEEE International Conference on. IEEE, 1998,2:271-274.
[8]Lee D,Yoo J,Choi k,et al. Fat tree encoder design for ultra-high speed flash A/D converters[J].IEEE Midwest Symposiumon Circuits & Symposium on. IEEE, 2002,2:II-87-II-90.
[9]Sail E, Vesterbacka M. A multiplexer based decoder for flash analog-to-digital converters[C]∥TENCON 2004. 2004 IEEE Region 10 Conference. IEEE, 2004(4):250-253.
[10]Altera. Cyclone III Device Handbook[EB/OL]. (2012-8).http://www.altera.com.cn/literature/hb/cyc3/cyclone3_handbook.pdf.
FPGA-based Encoder of Time to Digital Converter
ZHOU Lei1, WANG Chun′e2
(責(zé)任編輯:李華云)
Abstract:Time to digital converter encoder needs to transform the 1-0 (0-1) jump in thermometer code to the binary position code. For the lookup table structure of FPGA, it describes 3 behavior-level encoders(sequential search method, the binary search and accumulation method) and 4 dataflow-level encoders(Wallace tree, fat tree, MUX and ROM) algorithm, and implements in the EP3C25E144I7. By comparing the number of LUT, the shortest path delay, the longest path delay and noise, it is found that fat-tree and ROM encoder achieve the best performance on the FPGA, and have the similar performance. ROM encoder is easier to be programmed and transplanted. than fat-tree encoder.
Keywords:Encoder; TDC; FPGA; Fat Tree; ROM
作者簡(jiǎn)介:周磊(1980-),男,江蘇新沂人,講師,碩士,主要研究方向?yàn)镋DA技術(shù)與應(yīng)用。
基金項(xiàng)目:鹽城工學(xué)院校級(jí)科研項(xiàng)目(XKR2011073);2014年度鹽城工學(xué)院校級(jí)教改研究項(xiàng)目(JY2014C35)
收稿日期:2014-09-22
中圖分類(lèi)號(hào):TN791
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1671-5322(2015)02-0015-05
doi:10.16018/j.cnki.cn32-1650/n.201502003