基于IEEE 1588的時鐘同步技術(shù)在分布式系統(tǒng)中的應(yīng)用
5 基于FPGA的硬件同步方案
因為采用硬件電路獲取時間戳,從而獲得更高的同步精度,這里采用FPGA實現(xiàn)時間戳的獲取和從時鐘相對主時鐘的頻率糾偏。分布式系統(tǒng)中節(jié)點時鐘同步模塊的內(nèi)部結(jié)構(gòu)如圖5所示。
每個節(jié)點包含CPU、以太網(wǎng)媒體訪問控制器(MAC)、以太網(wǎng)物理層收發(fā)器(PHY)、FPGA等4種主要器件。物理層收發(fā)器和MAC控制器通過標(biāo)準(zhǔn)的MII接口相連,CPU通過總線與MAC控制器和FPGA相連。物理層收發(fā)器、MAC控制器和CPU構(gòu)成通訊協(xié)議棧完成數(shù)據(jù)包的發(fā)送和接收。
為了使從時鐘的晶振頻率與主時鐘保持一致,F(xiàn)PGA中需要有一個頻率可調(diào)的時鐘以實現(xiàn)晶振糾偏,如圖6所示,由r位頻率補(bǔ)償值寄存器、g位分頻累加器、p位系統(tǒng)時鐘計數(shù)器組成,一個普通晶體振蕩信號輸入FPGA模塊。在每個晶振周期,r位頻率補(bǔ)償值寄存器內(nèi)保存的頻率補(bǔ)償值累加到q位分頻累加器中,與累加器中的值相加。
如果發(fā)生溢出,則在下一個晶振周期,時鐘計數(shù)器增加一個增量,這個增量就是整個頻率補(bǔ)償時鐘的分辨率;如果沒有溢出,則在下一個晶振周期,時鐘計數(shù)器保持原值。計數(shù)器的當(dāng)前值即為調(diào)整后的本地時鐘。因此可以通過改變頻率補(bǔ)償值來改變時鐘計數(shù)器數(shù)值增加的頻率,實現(xiàn)對晶振頻率的補(bǔ)償。q和r越大,頻率補(bǔ)償值的改變對累加器發(fā)生溢出的頻率的影響越小,對晶振頻率的補(bǔ)償越精細(xì)。本系統(tǒng)選擇r=32,q=32,p=64。
使用FPGA不但能夠獲得最精確的時間戳,而且能夠采用數(shù)字電路的方法精確補(bǔ)償從時鐘的晶振頻率。FPGA的控制器實現(xiàn)時鐘調(diào)節(jié)算法,并由得到的時間戳和本地時鐘相比較,得到頻率補(bǔ)償值,從而控制時鐘計數(shù)器數(shù)值,補(bǔ)償晶振的頻率。而CPU則主要負(fù)責(zé)驅(qū)動MAC控制器完成相關(guān)的通訊功能。
6結(jié)束語
采用IEEE 1588精確時鐘同步協(xié)議的以太網(wǎng)時鐘同步技術(shù),解決了通用以太網(wǎng)實時性和同步性差的問題。為基于多播技術(shù)的標(biāo)準(zhǔn)以太網(wǎng)的實時應(yīng)用提供了有效的解決方案。IEEE 1588精確時鐘同步協(xié)議的制定滿足網(wǎng)絡(luò)化分布式系統(tǒng)的需求,利用IEEE 1588時鐘同步技術(shù)可以在不增加網(wǎng)絡(luò)負(fù)荷的情況下,實現(xiàn)整個分布式系統(tǒng)的高精度時鐘同步,從而可以有效解決分布式系統(tǒng)的實時性問題,進(jìn)而改善和提高系統(tǒng)的同步精度。
評論