FPGA控制TDC-GPX2时间间隔测量(一)
距離上一次使用FPGA控制TDC芯片測量時間間隔已經過去一年多了,當時采用的TDC芯片是TI的一款芯片TDC7200,最后測量結果所能達到的精度為百皮秒級別,最近使用入手了AMS生產的TDC-GPX2這款芯片,單通道測量的精度達到有20ps,高精度模式理論測量精度達到10ps,本文于此介紹以下。以下附上之前寫的TDC7200博客:FPGA控制TDC7200時間間隔測量。希望對大家能有所幫助。好了,話不多說,下面直接進入正題。
芯片介紹
老規矩,在介紹使用之前我們先來扣一扣數據手冊。
如上所示,TDC-GPX2芯片有四路STOP脈沖輸入信號,各持所司的幾路電源(TVDD、CVDD等等),信號交互引腳還有各項使能、失能引腳。
重要引腳信息
以上是第一部分所介紹的一些重要的數據線的說明,本次設計采用SPI通信,所以對于LVDS引腳一律不使用。下面挑幾個重要的引腳進行講解:
寫時序
讀時序
配置寄存器一覽
上圖中的Fixed value,表示固定值,在寫入的時候需要按照上面的值寫入。
6. 重要寄存器介紹(重要!重要!重要)
1. 引腳使能
該寄存器用來使能對應的引腳,包括脈沖輸入引腳、時鐘輸入引腳、LVDS引腳、通道失能引腳還有數據復位引腳。
2. 功能選擇
這個寄存器用來選擇是否開啟通道、組合模式以及是否開啟高分辨率功能。本次設計選擇開啟通道1,單獨測試模式,不開啟高分辨率模式。
3. 位寬以及FIFO模式設置
這個寄存器對于使用SPI控制而言作用不大,當需要使用FIFO塊模式的情況下使用,其他情況下不用。本設計全部給0。
4. LSB設置寄存器
這個寄存器可以理解為設置精度,我的時鐘主頻是5M,周期為200ns,那么這個DIVISIONS我設置為200000,那么每一個單位就是 200ns / 200000 = 1ps,打個比方說,當我讀出來的數據為5500,那么時間間隔就是5500ps,不用再另作轉換計算。所以本設計就將其設置為200_000。
5. 電平設置計算
設置電平為CMOS,其他按照固定設置即可。
6. 讀寄存器一覽
上圖可見讀寄存器的地址是從8開始的,這個需要注意,后面要對都地址進行+8。
8. 單通道測量功能時序圖(重要!重要!重要)
于此將介紹測量的主要流程。(如果你只是想要應用,可以省略下面的一段文字,直接跳到示例,完全能看懂,也會用)如上所示,STOP脈沖進來后TDC芯片會輸出測量的主要信息,TDC芯片輸出的數據只有兩個,第一個是REFIDn,表示當前STOP脈沖處于第幾個時鐘周期。第二個數據TSTOP,表示 (tSTOP/tREF)× REFCLK_DIVISIONS,tSTOP表示當前進來的脈沖和所處的參考時鐘周期上升沿之間的間隔時長,tREF表示參考時鐘的周期,REFCLK_DIVISIONS就是上述設置的那個20位寄存器所設置的值,那邊我們說設置為200000,當時鐘頻率為5M的時候,每一次計數表示1ps,所以第二個讀出來的數據就是多少ps,可以直接當成時間間隔。每一個脈沖到來時,TDC都會將當前脈沖所處在第幾個時鐘周期、和上一個參考時鐘計算兩個脈沖之間的時間間隔輸出,并拉低INTERRUPT引腳,通知用戶讀取數據。我們只需要分別讀出兩個脈沖后的寄存器的值進行分析,即可得到時間間隔。
測試示例
(情形一)參數一表示第幾個參考時鐘周期,參數二表示脈沖和當前參考時鐘周期上升沿的時間間隔
測量上述STOP1和STOP2的時間間隔,當這兩個脈沖進入到TDC芯片中,TDC芯片的FIFO會分別儲存這兩個脈沖的信息,由上可見,這兩個脈沖處于同一個時鐘周期下,所以他們的第一個參數REFIDn相等,此時只需要分析第二個參數即可。假設我們讀到第二個脈沖的第二個參數為80000ps,第一個脈沖的第二個參數為40000ps,那么兩個脈沖的時間間隔就是80000ps-40000ps=40000ps=40ns,也不需要過多的轉換,這就是最終的時間間隔。
(情形二)參數一表示第幾個參考時鐘周期,參數二表示脈沖和當前參考時鐘周期上升沿的時間間隔
測量上述STOP1、2和STOP3的時間間隔,當這兩個脈沖進入到TDC芯片中,TDC芯片的FIFO會分別儲存這兩個脈沖的信息,由上可見,這兩個脈沖處于不同的時鐘周期下,那么我們為了得到時間間隔,只需要讓第二個脈沖的第二個參數減去第一個脈沖的第二個參數(這個值可能會是負的),在加上兩個脈沖第一個參數×周期時長,就得到時間間隔了,結合時序圖應該很好理解,以下是手冊的詳細說明,如果對我所述的有不明白的地方,可以結合手冊說明理解。
9. SPI通信說明
首先是極性和相位的設置,極性為0,相位為1,表示sck空閑狀態下為0,且在第二個時鐘沿寫入或讀出數據,也就是下降沿,我們只需要在下降沿的時候讀寫數據即可。
以上是對應的引腳說明。和我前面介紹的基本一致。
以上是操作碼,需要在寫入或者讀出的時候作為幀頭,后面帶上寄存器地址或者數據。
注意
當使用SPI通信的時候,注意要把LVDS的引腳關掉。
結語
本文講的很多了,對于控制FPGA進行實操的放到下一篇文章中介紹了。
總結
以上是生活随笔為你收集整理的FPGA控制TDC-GPX2时间间隔测量(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows10视频文件没有预览图的解
- 下一篇: 23年哪些企业不能申报高企