01引言
你有沒有想過,我們怎么才能精確地測量“時(shí)間”?
你可能會(huì)說,掐秒表不就完事了?那如果我們要測量的不是“秒”,而是皮秒(ps)——萬億分之一秒的時(shí)候,該怎么辦?這可不是什么科幻情節(jié),在雷達(dá)、激光測距、高能物理實(shí)驗(yàn)里,精確到皮秒級(jí)的時(shí)間測量,是家常便飯。想達(dá)到 20 ps 的測量精度,傳統(tǒng)“脈沖計(jì)數(shù)法”(也就是掐秒表)需要 50 GHz 的時(shí)鐘,如果非得這樣的話,你得精通光學(xué)和應(yīng)用物理學(xué),好好讀一讀這篇《基于克爾光孤子晶體微梳的 49GHz 微波 Q 波段振蕩器》,我們貼心的為你放出DOI號(hào):doi: 10.1109/JLT.2019.2930466。
今天我們不談高大上的物理學(xué),只聊聊如何在 FPGA 中,用一串加法器和 D 觸發(fā)器,“數(shù)清楚時(shí)間”——這就是時(shí)間數(shù)字轉(zhuǎn)換器(TDC)的魅力。
02時(shí)間的多米諾骨牌
想象你有一串多米諾骨牌,推倒第一塊,它就會(huì)一塊接一塊地倒下去。這個(gè)“倒下去”的速度,就是骨牌之間的“傳播延遲”。FPGA里的加法器也有類似的“骨牌”——它叫進(jìn)位鏈(Carry Chain)。在FPGA里,為了把兩個(gè)數(shù)加起來又快又穩(wěn),芯片廠商把加法器的“進(jìn)位”信號(hào)做成了一個(gè)專用的、超高速的“高速公路”。這條“高速公路”的延遲,可以短到 20ps!
我們設(shè)計(jì)一個(gè)特殊的加法器串。正常情況下,它在算 111...111 + 000...000,結(jié)果是 111...111,風(fēng)平浪靜。但就在某一瞬間,我們給它一個(gè)“開始”信號(hào)(Start),讓它突然開始算 111...111 + 000...001。這個(gè)小小的“1”,就像推倒了第一塊骨牌,一個(gè)“進(jìn)位”信號(hào)會(huì)從最低位開始,一級(jí)一級(jí)地向高位“鏈?zhǔn)絺鬟f”。這個(gè)“進(jìn)位”信號(hào)在鏈上傳播的距離,就代表了從“開始”到“現(xiàn)在”過去了多少時(shí)間。
但問題來了:我們怎么“看到”這個(gè)傳播到哪里了呢?答案是:“拍照”!我們在每一個(gè)加法器后面,都接一個(gè)“小相機(jī)”(D觸發(fā)器),這個(gè)“小相機(jī)”的快門,由另一個(gè)時(shí)鐘信號(hào)(我們叫它“采樣時(shí)鐘”或Strobe)控制。當(dāng)“快門”一閃,所有“小相機(jī)”就同時(shí)拍下一張照片,記錄下此刻進(jìn)位信號(hào)傳播到了哪一級(jí)。比如,照片顯示前10級(jí)都變“0”了,那我們就知道,從“開始”到“拍照”這一刻,進(jìn)位信號(hào)跑了10級(jí)。

關(guān)鍵問題來了:每一級(jí)進(jìn)位鏈到底有多長?我們可以使用一個(gè)標(biāo)準(zhǔn)時(shí)間來預(yù)先測量,例如說看 1 us 內(nèi)傳播了多少級(jí)進(jìn)位鏈,從而得到每一級(jí)的延遲??涩F(xiàn)實(shí)是,每一級(jí)的延遲并不完全一樣!FPGA 內(nèi)部的進(jìn)位鏈并不是一顆顆“標(biāo)準(zhǔn)骨牌”。有的塊近(Slice 內(nèi)),有的遠(yuǎn)(跨 Slice)。這怎么辦?別慌,我們可以像攝影測量那樣,對每個(gè)“骨牌段”單獨(dú)標(biāo)尺!
03碼密度法:時(shí)間標(biāo)尺的“數(shù)豆子法”
我們用了一個(gè)很巧妙的方法——碼密度法,聽起來高大上,其實(shí)就像……數(shù)豆子!我們讓 Start 和 Strobe 信號(hào)變成兩個(gè)不同頻率的、不相關(guān)的時(shí)鐘(clk_i 和 clk_d),拍照的頻率要顯著大于 Start 對應(yīng)時(shí)鐘的頻率(可以理解為骨牌重新擺放好的操作頻率),然后持續(xù)反復(fù)的擺好、推倒、再拍照。這樣操作的目的是為了保證每次拍照的傳播時(shí)間是隨機(jī)的,也就是下圖中的 t 是在 [0, Tc) 之間隨機(jī)分布的,Tc 是 clk_d 的周期,也就是拍照的周期。

每次拍,骨牌只倒到某一塊,這個(gè)“最后倒下的塊”的編號(hào)是我們關(guān)心的。我們反復(fù)拍了很多很多次,記錄每一塊“成為最后倒下者”的次數(shù)。次數(shù)越多,說明這塊延遲時(shí)間越長——就像誰碗里的豆子最多,誰“最拖沓”。
這樣,我們就得到了整條進(jìn)位鏈的延遲分布圖,堪比給骨牌鏈打上精確刻度線!通過這種方法,我們就能精確地測量出每一級(jí)進(jìn)位鏈的真實(shí)延遲時(shí)間,無論它是快是慢。然后,我們把這些數(shù)據(jù)存成一個(gè)“查找表”。
一旦我們有了這個(gè)“查找表”,TDC就真正“畢業(yè)”了,以后再要測量一個(gè)時(shí)間間隔,我們只需要:給一個(gè)“開始”信號(hào),用“快門”拍一張照,得到進(jìn)位信號(hào)傳播的“級(jí)數(shù)”,最后查表把每一級(jí)的延遲加起來,就能得到精確的時(shí)間!
04總結(jié)一下這個(gè)妙招
1. 把 TDC 的 Start 和 Strobe 信號(hào)換成兩個(gè)“頻率不搭”的時(shí)鐘;
2. 一次次拍照,記錄骨牌(進(jìn)位鏈)傳播的終點(diǎn);
3. 每個(gè)位置被“命中”的次數(shù)越多,說明它的延遲越長;
4. 統(tǒng)計(jì)出每一級(jí)進(jìn)位單元的真實(shí)延遲,形成查找表,實(shí)現(xiàn)時(shí)間間隔的高精度換算。
Tip
(本文基于西安智多晶微電子《基于碼密度法的TDC_DEMO用戶指南》整理,想了解技術(shù)細(xì)節(jié)的朋友可以訪問智多晶官網(wǎng)獲?。?/p>
-
FPGA
+關(guān)注
關(guān)注
1663文章
22491瀏覽量
638894 -
振蕩器
+關(guān)注
關(guān)注
28文章
4191瀏覽量
143151 -
TDC
+關(guān)注
關(guān)注
0文章
42瀏覽量
15004 -
時(shí)間數(shù)字轉(zhuǎn)換器
+關(guān)注
關(guān)注
0文章
6瀏覽量
1613
原文標(biāo)題:高精度時(shí)間測量就像數(shù)碗里的豆子?聊聊FPGA中的TDC原理
文章出處:【微信號(hào):智多晶,微信公眾號(hào):智多晶】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
MCU如何配置固定TDC?
TDC1000-TDC7200EVM外接START和STOP信號(hào)時(shí)如何不受TDC1000的信號(hào)影響?
海信TDC3488彩電電路圖
海信TDC2901彩電電路圖
AN0014_高精度低功耗芯片 TDC-GP2在熱表中的應(yīng)用
TDC-GP2在超聲波流量計(jì)時(shí)差法中的應(yīng)用
TDC1011 TDC1011 用于液位感測、流量感測的超聲波感測模擬前端 (AFE)
TDC7200 TDC7200 面向水、燃?xì)?、熱量?jì)量應(yīng)用的時(shí)間數(shù)字轉(zhuǎn)換器
TDC1000 TDC1000:超聲波模擬前端
TDC7201 適用于飛行時(shí)間應(yīng)用的 TDC7201 時(shí)間數(shù)字轉(zhuǎn)換器
使用FPGA實(shí)現(xiàn)TDC的設(shè)計(jì)報(bào)告資料說明
fpga實(shí)現(xiàn)tdc的設(shè)計(jì)開題報(bào)告
聊聊FPGA中的TDC原理
評論