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

          新聞中心

          EEPW首頁 > 手機與無線通信 > 設(shè)計應(yīng)用 > 基于IEEE 1588的時鐘同步技術(shù)在分布式系統(tǒng)中的應(yīng)用

          基于IEEE 1588的時鐘同步技術(shù)在分布式系統(tǒng)中的應(yīng)用

          作者: 時間:2010-08-11 來源:網(wǎng)絡(luò) 收藏




          5 FPGA的硬件方案

          因為采用硬件電路獲取時間戳,從而獲得更高的精度,這里采用FPGA實現(xiàn)時間戳的獲取和從相對主的頻率糾偏。中節(jié)點模塊的內(nèi)部結(jié)構(gòu)如圖5所示。


          每個節(jié)點包含CPU、以太網(wǎng)媒體訪問控制器(MAC)、以太網(wǎng)物理層(PHY)、FPGA等4種主要器件。物理層和MAC控制器通過標(biāo)準(zhǔn)的MII接口相連,CPU通過總線與MAC控制器和FPGA相連。物理層、MAC控制器和CPU構(gòu)成通訊協(xié)議棧完成數(shù)據(jù)包的發(fā)送和接收。

          為了使從時鐘的晶振頻率與主時鐘保持一致,F(xiàn)PGA中需要有一個頻率可調(diào)的時鐘以實現(xiàn)晶振糾偏,如圖6所示,由r位頻率補償值寄存器、g位分頻累加器、p位時鐘計數(shù)器組成,一個普通晶體振蕩信號輸入FPGA模塊。在每個晶振周期,r位頻率補償值寄存器內(nèi)保存的頻率補償值累加到q位分頻累加器中,與累加器中的值相加。



          如果發(fā)生溢出,則在下一個晶振周期,時鐘計數(shù)器增加一個增量,這個增量就是整個頻率補償時鐘的分辨率;如果沒有溢出,則在下一個晶振周期,時鐘計數(shù)器保持原值。計數(shù)器的當(dāng)前值即為調(diào)整后的本地時鐘。因此可以通過改變頻率補償值來改變時鐘計數(shù)器數(shù)值增加的頻率,實現(xiàn)對晶振頻率的補償。q和r越大,頻率補償值的改變對累加器發(fā)生溢出的頻率的影響越小,對晶振頻率的補償越精細。本選擇r=32,q=32,p=64。

          使用FPGA不但能夠獲得最精確的時間戳,而且能夠采用數(shù)字電路的方法精確補償從時鐘的晶振頻率。FPGA的控制器實現(xiàn)時鐘調(diào)節(jié)算法,并由得到的時間戳和本地時鐘相比較,得到頻率補償值,從而控制時鐘計數(shù)器數(shù)值,補償晶振的頻率。而CPU則主要負責(zé)驅(qū)動MAC控制器完成相關(guān)的通訊功能。

          6結(jié)束語

          采用 1588精確時鐘同步協(xié)議的以太網(wǎng)時鐘同步,解決了通用以太網(wǎng)實時性和同步性差的問題。為多播的標(biāo)準(zhǔn)以太網(wǎng)的實時提供了有效的解決方案。 1588精確時鐘同步協(xié)議的制定滿足網(wǎng)絡(luò)化系統(tǒng)的需求,利用 1588時鐘同步可以在不增加網(wǎng)絡(luò)負荷的情況下,實現(xiàn)整個系統(tǒng)的高精度時鐘同步,從而可以有效解決分布式系統(tǒng)的實時性問題,進而改善和提高系統(tǒng)的同步精度。

          上一頁 1 2 3 下一頁

          評論


          相關(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); })();