楊媛媛 王曉華 武健
【摘要】? ? 本文研究了FC網(wǎng)絡的時間同步問題,分析了系統(tǒng)RTC的同步誤差,提出了通過實時修正和維護客戶端在標準時間內(nèi)的晶振跳動次數(shù)來達到提高時鐘同步精度的方法。最后通過實驗測試了本文所提出的時鐘同步精度校準計算方法的有效性。
【關(guān)鍵詞】? ? FC? ? 時間同步
引言:
光纖通道(FC,F(xiàn)iber Channel)是1998年由美國國家標準委員會(ANSI)研究出的,用于連接工作站、大型機、巨型機、存儲設備、顯示器以及其他IO設備的高速串行數(shù)據(jù)傳輸協(xié)議。FC技術(shù)可同時支持同一接口上傳輸多種不同的協(xié)議,提供了一種通用數(shù)據(jù)傳輸機制;傳輸速度快;可以給計算機設備提供接近于設備處理速度的吞吐量;傳輸距離遠,采用單模光纖作為數(shù)據(jù)傳輸介質(zhì)時,傳輸距離可高達10KM;連接簡單靈活,支持點到點、仲裁環(huán)網(wǎng)、交換機結(jié)構(gòu)三種拓撲結(jié)構(gòu);提供一種能夠低誤碼率,低延遲數(shù)據(jù)傳輸?shù)氖侄?。在航空電子環(huán)境中,F(xiàn)C-AE[1]也可以用于綜合化模塊化航空電子[2](IMA,Integrated Modular Avionics)系統(tǒng)互聯(lián)。
對于越來越復雜的綜合化航電系統(tǒng)而言,全局或局部的時鐘同步是不可或缺的,也是FC網(wǎng)絡為上層應用提供的必要的基礎(chǔ)服務之一。目前廣泛使用的實現(xiàn)基礎(chǔ)時鐘同步的方法有兩種,即基于FC-ELS和基于時鐘同步原語[3]。但其基本思想是一致的,在網(wǎng)絡中存在一個節(jié)點作為時鐘服務器,其余節(jié)點作為時鐘客戶端,在一個同步周期到達時,由時鐘服務器向外發(fā)送攜帶時鐘信息的ELS幀或時鐘同步原語,客戶端在收到服務器的參考時鐘信息后,更新本地時鐘,從而實現(xiàn)時鐘同步。這種同步方法實現(xiàn)簡單,能夠保證在單一時鐘源的情況下保證基礎(chǔ)的全局時鐘同步,但其精度不夠,容易造成時鐘漂移。
本文通過仔細分析討論基礎(chǔ)時鐘同步原理的同時,提出一種校準時鐘同步的方法,提高時鐘同步精度。
一、簡單時鐘同步原理解析
航電系統(tǒng)所有節(jié)點在上電后,邏輯依據(jù)硬件晶振的頻率開始采樣,從0開始記錄本地RTC,晶振跳動一個TICK,RTC增加1。每個節(jié)點都維護一個本地RTC計數(shù)。當應用啟動后,設置其中一個節(jié)點角色為時鐘服務器,設置基準時間信息以及時鐘同步周期并使能,時間信息以時鐘服務器的RTC為標準逐步遞增,形成全局唯一時鐘信息源,其余節(jié)點均為時鐘客戶端并使能。每當時鐘服務器設置的時鐘同步周期到達時,就會將此刻服務器本地的時鐘信息及本地RTC信息通過FC-ELS消息或時鐘同步原語發(fā)送出去,當客戶端收到ELS幀或時鐘同步原語后,與本地RTC進行差值比較,將差值進行時間換算,并累加到服務器發(fā)來的標準時間上,形成時鐘客戶端的當前時間,時鐘同步精度計算的基礎(chǔ)是RTC同步計算的精度。由于節(jié)點啟動的時機不同,時鐘服務器和時鐘客戶端之間的本地RTC存在固定的初始相位差Δ1=RTCS(0)-RTCC(0)。另一方面,由于時鐘客服務器和時鐘客戶端由不同的硬件晶振驅(qū)動計數(shù),即使是同廠家同批次的晶振,也會存在相對標稱頻率的頻率誤差,且這個頻率誤差會隨著環(huán)境溫度、濕度、晶振壽命等客觀因素不斷發(fā)生變化,這種不斷變化的頻率誤差會導致時間同步過程中服務器和客戶端的晶振跳動不同步,繼而造成守時精度不同步,我們稱之為守時誤差,代表在一個同步周期內(nèi)存在時間保持誤差Δ0。在某個采樣點t,時鐘客戶端通過計算獲取的系統(tǒng)RTC為:
RTCS(t)=RTCC(t)+Δ1+Δ0
其中Δ1 為上電RTC差,為固定值,Δ0 由晶振的頻率準確度和穩(wěn)定度等硬件特性決定,Δ0 的值與工作當時的溫濕度、晶振壽命等不確定因素強相關(guān)。當連續(xù)同步兩次時,得到RTCS(t1)-RTCS(t0)=RTCC(t1)-RTCC(t0)+(Δ01-Δ00),即
Δf = (Δ01-Δ00)代表由于服務器和客戶端晶振特性偏差而導致的時間漂移,因此,Δf 是制約系統(tǒng)時鐘同步精度的關(guān)鍵因素,理想情況下,當服務器與客戶端的晶振頻率始終完全相同時,Δf =0。要想提高時間同步精度,就應該想辦法將Δf 盡可能縮小。
二、解決方案
時間同步的前提是全局以服務器的時間為標準時間,以服務器的晶振頻率為標準頻率。為時鐘服務器兩次同步之間的時間差,即為應用設置的全局時間同步周期T,為時鐘客戶端連續(xù)收到兩次同步原語之間的時間差,即以客戶端的晶振頻率計算得出的時間間隔差則(2)式演變?yōu)?/p>
理想方案下,如果服務器和客戶端晶振頻率一致,fs = fc,則。但事實上由于晶振頻率差,會導致客戶端計算得到的與上一次同步的時差產(chǎn)生偏移,同步誤差計算公式如下:
例如,應用設置系統(tǒng)時鐘服務器每50毫秒同步一次,但客戶端兩次同步間隔卻為49毫秒或51毫秒,最差的情況發(fā)生在時鐘客戶端晶振為正偏,即fc=fn(1+ft),而時鐘服務器晶振為負偏,即fs=fn(1-ft),反之,也成立,其中fn為晶振的標準頻率。假設當ft為10ppm時,同步周期TP等于10ms時,同步偏差Δ0約為200ns。如上所述,要解決晶振偏差導致的時鐘同步偏差就必須將服務器和客戶端的晶振頻率調(diào)整一致,但頻率是由硬件特性決定的,無法改變,因此我們采用調(diào)整客戶端晶振的單次跳動時間來達到守時的目的。
計算并記錄客戶端在1秒內(nèi)跳動的次數(shù)NC,之后就以1/NC作為客戶端的1個Tick的標準時長來進行同步時間計算。當客戶端晶振由于環(huán)境因素再次導致同步偏移時,就再次同步,通過這種實時監(jiān)測同步誤差的方法來持續(xù)守時。當時鐘服務器到達T開始同步時,時鐘客戶端跳動了n次,按初始條件時鐘客戶端1秒鐘跳動NC次,單次跳動時間(1000/NC),本次周期內(nèi)客戶端經(jīng)過的時間為n*(1000/NC)*T,晶振頻率一旦漂移,n會發(fā)生變化,此時通過實時人為更改NC,使得n*(1000/NC) = 1,即更改單次客戶端晶振的單次跳動時間1/NC,使得客戶端經(jīng)過的時間時鐘為T,即達到了與服務器同步的目的。實際實現(xiàn)中,邏輯可以記錄客戶端兩次同步周期內(nèi)經(jīng)過的時間差,也即TICK數(shù)n之差Δf,從而得到應在原先Nc基礎(chǔ)上調(diào)整的ΔN為? (5)
為了使得守時精度的調(diào)整更穩(wěn)妥,我們也可以采取二分法進行步進調(diào)整,即當邏輯檢測到同步周期出現(xiàn)偏差時,首先使用二分之一Δf偏差進行微調(diào),然后繼續(xù)監(jiān)控,若仍然存在偏差,再繼續(xù)使用二分之一偏差進行微調(diào),直至調(diào)整到可容忍偏差之內(nèi)。需要注意的是,由于晶振受環(huán)境因素影響,可能會隨機出現(xiàn)正偏或負偏,當前后兩次同步恰好一次正偏一次負偏,會導致邏輯監(jiān)測到的時間差非常大,若以此來計算,會與實際情況偏離越來越大,采用二分法逐步調(diào)整,能夠在一定程度上避免一次調(diào)整過大而造成的失誤。
三、測試驗證
基于以上理論,利用邏輯不斷監(jiān)測兩次同步周期之間的時間差Δf,當時間差超出容忍范圍后,開始調(diào)整晶振跳動次數(shù)。,調(diào)整后的客戶端1s跳動次數(shù)N'C=NC-ΔN,記錄新的跳動次數(shù)作為新的時鐘同步計算基準。
建立如圖1的測試環(huán)境,在系統(tǒng)時鐘服務器晶振周期為1/125000000的情況下,調(diào)整客戶端晶振周期為1/1258000000,采用二分法雖然使得調(diào)整的時間略微慢了一些,但同步誤差的確在不斷收斂,達到了預期目的。
四、結(jié)束語
本文研究了FC網(wǎng)絡的時間同步問題,分析了系統(tǒng)RTC的同步誤差,提出了通過實時修正和維護客戶端在標準時間內(nèi)的晶振跳動次數(shù)來達到提高時鐘同步精度的方法。最后通過實驗測試了本文所提出的時鐘同步精度校準計算方法的有效性。
本文僅分析了在航電局域網(wǎng)中的時間同步原理及提高守時精度的辦法,實際上,這種方法可以擴展至全局時鐘同步,多網(wǎng)絡時鐘同步等。
參? 考? 文? 獻
[1] INCTIS.T 11/ 02-041v 1 fibre channel avionics environment[S]. Englewood, USA: INCTIS, 2002.
[2] Wolfig, R著,牛文生等譯.綜合化模塊化航空電子系統(tǒng)的分布式平臺:對未來航空電子系統(tǒng)及其認證需求的見解.北京:航空工業(yè)出版社,2015.
[3] Fibre Channel: Framing and Signaling[S]. New York: American National Standards? Institute, 2003.
[4] John C. Eidson. IEEE Standard for a Precision Clock Syn-chronization Protocol for Networked Measurement and Control Systems[S].IEEE,2008.