基於FPGA的TDC 數字時間轉換 設計

2021-10-05 04:14:40 字數 1322 閱讀 8793

額,老師讓做乙個tdc的計時模組用fpga,那就做唄。。。

首先說一句,我在做的過程中發現有些人說vivado不太可以做tdc的後仿,我自己試著發現是可以的,當然也許我其實是錯的 哈哈哈 先不管了。

首先上一張後仿的圖 

大家不要在意我的傻吊命名。我設定的起始和結束訊號之間的差值是21ns,那我最後的結果是多少呢

(5-1)*4+(37+27)*76/1000=20.864ns 我不知道精度算不算高。**說解析度達到50ps左右 我表示訊號的延時的差可能都不止50ps。。。

其中5是粗計時,reg3是37代表起始時刻細技術和reg3_stop代表結束時刻細技術。76為乙個進製鏈的延遲(大概哈)

我的方法是這樣的:

假設上圖第乙個訊號是時鐘訊號,第二個是我們所要求的測量時間,我們可以把它分為如下的測距形式:

這也就解釋了為什麼我後仿的公式粗技術要減1了吧。

那麼細技術怎麼計,有很多方法,什麼相移法啊,游標法啊。。。這個大家看看**就知道了。fpga的話還是要用進製鏈來做,利用將進製鏈收尾相連實現計時。

以xilinx為例,進製鏈如下:

乙個slice裡有乙個carry4,起始原理很簡單,通過位選擇器mux賦予一定的控制訊號,使得我們的計時訊號的走向為

然後co3訊號接下一片的cin訊號,以此往復。這樣每乙個進製輸出co變會間隔一定的延時,而這個延時便是訊號在走線+位選擇器的邏輯延時,可以近似看成相等。如果以一整個carry作為一級延時,可以得到更好的延時一致性但會犧牲精度。這個大家可以取捨。

由於我只是進行了後仿所以對實際結果並不是很確定,暫時先更到這,也有可能就是錯的也不一定哈哈哈,疫情結束回去看看結果。

不過總結一下給需要的小夥伴:

1.訊號的走線延時很關鍵

2.進製鏈的布局,以及後續d觸發器的布局很關鍵,影響延時和一致性

3.進製鏈的原理要明白,起始輸入訊號一定要接cyint介面因為是第一片

4.inputdealy要充分考慮

C 數字轉時間格式

我們在匯入excel時是否會遇到以下問題,獲取時間格式資料時獲取到的往往是一串數字,而不是我們想要的資料。這種情況實屬正常,但這時候我們就需要將獲取到的資料轉換為我們需要的資料,以下提供幾種方法,也只是為了自己行個方便,不喜勿噴。首先需要判斷獲取的資料是否是正確的資料。string str date...

基於FPGA數字混頻器的設計(1)

混頻即兩個不同頻率之間的混合,得到第三個頻率。數字混頻器的設計也是fpga數字訊號處理中基礎入門的設計之一,混頻便是兩個訊號相乘得它們的和頻率和差頻率。數字混頻在通訊的調製 解調 duc 數字上變頻 ddc 數字下變頻 等系統中廣泛應用。通常把其中乙個訊號稱為本振訊號 local oscillato...

基於FPGA的秒錶

功能 四位數碼管顯示,從零開始計數,前兩位顯示秒 0 59 後兩位顯示0.01秒 0 99 計滿後從零開始,有開始鍵 暫停鍵 復位鍵。當第一次按下開始鍵,秒錶從初始開始計數,led顯示器上顯示當前計時值 當緊按下 按住 暫停鍵時,秒錶暫停計時,led上顯示當前計時值,放開則繼續計時 當按下復位鍵時,...