<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 基于FPGA的高精度時(shí)間數(shù)字轉(zhuǎn)換電路設(shè)計(jì)

          基于FPGA的高精度時(shí)間數(shù)字轉(zhuǎn)換電路設(shè)計(jì)

          作者: 時(shí)間:2012-09-05 來源:網(wǎng)絡(luò) 收藏

          基于 的 TDC電路原理如圖 2所示,該電路包括 16位環(huán)形移位寄存器 (Ring Shift Register)、16位輸入 4位輸出的編碼電路 (Encoder)、時(shí)鐘管理模塊(Clockmgr)、8位通用計(jì)數(shù)器單元(Counter)、復(fù)位邏輯(Reset Logic)和輸出邏輯部分(Out Logic)。其中環(huán)型移位寄存器和編碼器組成該電路的細(xì)計(jì)數(shù)器部分,用來控制電路測量精度;通用計(jì)數(shù)器作為粗計(jì)數(shù)部分,決定電路的時(shí)間測量范圍;時(shí)鐘管理模塊通過調(diào)用 內(nèi)部 PLL資源用來為移位寄存器提供合適的工作時(shí)鐘;復(fù)位邏輯控制整個(gè) TDC電路的復(fù)位動作;輸出邏輯將轉(zhuǎn)換數(shù)字量的細(xì)計(jì)數(shù)和粗計(jì)數(shù)部分組合為昀終系統(tǒng)輸出。

          16位移位寄存器構(gòu)成如圖 3,由 16個(gè)帶異步復(fù)位和置位端的 D觸發(fā)器組成,初始狀態(tài)或復(fù)位后電路節(jié)點(diǎn) p15被置位高電平,其他節(jié)點(diǎn)(p14至 p0)被復(fù)位至低電平;正常工作時(shí),在移位脈沖 clk上升沿時(shí)高電平在 16個(gè)電路節(jié)點(diǎn)中循環(huán)出現(xiàn),通過檢查某時(shí)刻電路節(jié)點(diǎn)的狀態(tài)(高電平的位置)可以判斷系統(tǒng)所經(jīng)歷的移位脈沖 clk的數(shù)量,電路的時(shí)間分辨率即為 clk的時(shí)鐘周期。編碼器對移位寄存器節(jié)點(diǎn)狀態(tài)編碼并作為測量電路細(xì)計(jì)數(shù)部分的 4位輸出。通用計(jì)數(shù)器工作在移位寄存器節(jié)點(diǎn) p15的上升沿,其計(jì)數(shù)周期為移位脈沖周期的 16倍,完成低位到高位的進(jìn)位計(jì)數(shù),并作為測量電路的粗計(jì)數(shù)部分的 8位輸出。復(fù)位邏輯負(fù)責(zé)環(huán)形移位寄存器和通用計(jì)數(shù)器的復(fù)位操作。輸出邏輯分別將粗計(jì)數(shù)和細(xì)計(jì)數(shù)輸出的 8位和 4位數(shù)據(jù)組合為測量電路的昀終輸出,并完成數(shù)據(jù)的校驗(yàn)。

          基于 的單計(jì)數(shù)器脈寬測量電路采用在脈沖寬度對應(yīng)的時(shí)間內(nèi)記數(shù)的方法,因高頻工作時(shí)計(jì)數(shù)器會出現(xiàn)跳碼或漏計(jì)現(xiàn)象,造成系統(tǒng)錯(cuò)誤輸出,所以分辨率很難提高 [7]。與單計(jì)數(shù)器脈寬測量電路相比采用結(jié)構(gòu)簡單的細(xì)計(jì)數(shù)電路能大大提高電路的時(shí)間分辨率,并避免了通用計(jì)數(shù)器極限工作頻率下的跳碼現(xiàn)象,且細(xì)計(jì)數(shù)電路占用極少的片上資源。

          3系統(tǒng)實(shí)現(xiàn)及優(yōu)化

          Altera公司提供的 Stratix和 Cyclone系列 FPGA芯片具有嵌入式鎖相環(huán)( PLL)模塊,該模塊可對外部時(shí)鐘進(jìn)行倍頻分頻及相移操作,可編程占空比和外部時(shí)鐘輸出,進(jìn)行系統(tǒng)級的時(shí)鐘管理和偏移控制,常用于同步內(nèi)部器件時(shí)鐘和外部時(shí)鐘,使內(nèi)部工作的時(shí)鐘頻率比外部時(shí)鐘更高,時(shí)鐘延遲和時(shí)鐘偏移昀小,減小或調(diào)整時(shí)鐘到輸出(TCO)和建立(TSU)時(shí)間,從而提供完整的時(shí)鐘管理方案。使用 Altera Quartus? II軟件無需任何外部器件,就可以調(diào)用芯片內(nèi)部的 PLL來實(shí)現(xiàn)相應(yīng)功能。

          該系統(tǒng)時(shí)鐘管理模塊調(diào)用 FPGA內(nèi)部 PLL實(shí)現(xiàn),通過 QuartusII設(shè)置參數(shù)為:Ratio為倍頻/分頻因子(Ratio)為 4,輸出時(shí)鐘相移 (Ph) 為 0,輸出時(shí)鐘占空比 (DC)為 50%。

          該 TDC電路的時(shí)間分辨率取決于環(huán)形移位寄存器和編碼電路組成的細(xì)計(jì)數(shù)部分,要得到正確的測量數(shù)據(jù)必須保證對移位寄存器輸出狀態(tài)的正確編碼。與 ASIC設(shè)計(jì)不同,設(shè)計(jì)者很難預(yù)料 EDA軟件布局布線(Layout)后的情況,而且各種不同結(jié)構(gòu)和性能的可編程器件布局布線的結(jié)果也不盡相同,而且構(gòu)成移位寄存器的 D觸發(fā)器的時(shí)鐘到輸出時(shí)間(TCO)和 D觸發(fā)器輸入在金屬連線上穩(wěn)定建立的時(shí)間(TSU)也存在一定離散性,使得高頻移位脈沖(納秒級)工作下的移位寄存器在狀態(tài)轉(zhuǎn)換時(shí)出現(xiàn)毛刺現(xiàn)象,影響編碼正確輸出,同時(shí)編碼器的固有延時(shí)特性也限制系統(tǒng)的時(shí)間分辨率。該脈寬測量電路系統(tǒng)采用的優(yōu)化的編碼算法,使得高頻移位狀態(tài)下編碼輸出能準(zhǔn)確反映環(huán)形移位寄存器上各節(jié)點(diǎn)狀態(tài),從而保證了該系統(tǒng)的測量精度;移位時(shí)鐘為 333MHz(周期 3ns)時(shí)在 Altera公司 Stratix和 Cyclone系列芯片上實(shí)現(xiàn)了編碼器的正常工作。

          該系統(tǒng)包含了粗記數(shù)和細(xì)記數(shù)兩部分電路,粗記數(shù)電路在細(xì)記數(shù)字電路高位輸出(圖 3中 p15)的上升沿工作。但是由于粗記數(shù)電路的延時(shí)在被測脈沖( clks)上升沿時(shí)可能會造成對輸出數(shù)據(jù)的誤讀。

          為解決誤讀現(xiàn)象,在輸出邏輯模塊里加入糾錯(cuò)電路。對被測脈沖 clks延時(shí) clk周期后產(chǎn)生新時(shí)鐘 clks1,在 clks和 clks1的上升沿同時(shí)對 q1和 q0取樣并對取樣數(shù)據(jù)進(jìn)行處理后作為昀終數(shù)據(jù)輸出,從而有效地解決了誤讀現(xiàn)象。

          移位脈沖工作頻率即為該測量電路的時(shí)間分辨率,通過時(shí)鐘管理單元可采用不高的外部時(shí)鐘便可得到很高的測量精度。

          3仿真結(jié)果和測試數(shù)據(jù)

          為測試該系統(tǒng)的時(shí)間分辨率,為基本時(shí)間電路附加特定功能電路,使其具有連續(xù)測量時(shí)鐘脈沖寬度的功能,測試對象是 clks的高電平延續(xù)時(shí)間。通過改變時(shí)鐘脈沖源的頻率來記錄該電路對應(yīng)的測量數(shù)據(jù),從而得到該 TDC電路的時(shí)間分辨率。

          本文以 QuartusII Web Edition 4.2為軟件平臺,實(shí)驗(yàn)表明,本 TDC設(shè)計(jì)在 Altera各主流芯品上的時(shí)序仿真均能順利通過。適配 Cyclone EP1C3Q240C8芯片的時(shí)序仿真表明,移位時(shí)鐘為 333M(即分辨率為 3ns),所得到的測試數(shù)據(jù)輸出正確地反映了被測脈沖的寬度,被測脈沖下降沿到測量數(shù)據(jù)建立的延時(shí)為 5ns。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();