利用IEEE 1588和Blackfin嵌入式處理器實現設備時鐘同步
簡介
本文引用地址:http://www.j9360.com/article/151125.htmIEEE 1588標準誕生于2002年,主要定義網絡分布式時鐘的同步協議。測試與測量、電信和多媒體流處理等許多不同應用,都開始首選這種時鐘同步方法。這種標準化時鐘同步法成本效益高,支持異構系統,并可提供納秒級同步精度。
本文介紹原版IEEE 1588-2002標準以及更新版本IEEE 1588-2008中的改進內容。由于IEEE 1588在一些目標應用中越來越重要,因此ADSP-BF518 Blackfin嵌入式處理器中也集成專用硬件來支持IEEE 1588。本文將概要介紹其功能,并通過一個示例來展示利用ADSP-BF518處理器解決方案獲得的時鐘同步性能結果。
現在幾點了?
大多數系統都需要利用本振來維護自己的時間概念。圖1顯示硬件和軟件如何組合,在系統內產生時間信息。
圖1. 本地計時
系統內的硬件和軟件資源均可使用此時間信息。對于硬件,振蕩器時鐘會產生一個或多個物理時鐘信號(時鐘輸出),并可利用這些時鐘信號驅動或觸發系統的其它部分。軟件中維護的時間通常稱為“系統時間”。系統時間可以用時鐘脈沖數或秒/納秒的形式表示。系統軟件利用振蕩器時鐘脈沖數及其頻率信息得出時間,并提供“應用程序編程接口”(API)函數,軟件的其它部分可以使用這些函數檢索并設置時間。如果需要絕對時間,則所提供的時間將與預定義時間點,即基準時間點相關聯。
時鐘同步
許多應用要求兩臺獨立的設備以同步方式工作。如果每臺設備僅依靠自己的振蕩器,則各振蕩器的特性與工作條件差異將會限制時鐘同步工作的能力。一些簡單可行的解決方案可以克服這些限制,包括:
●所有設備共用一個物理振蕩器。這種方法僅對距離很近的分布式系統可行;高頻時鐘信號無法實現長距離可靠傳輸。
●所有設備均使用特性幾乎完全相同的振蕩器。由于很難獲得幾乎完全一樣的振蕩器,并確保性能不隨時間飄移,因此這種方法不可行。更重要的是,各振蕩器的工作條件并不相同。
●如果所有設備均通過一個通信網絡(例如以太網)互連,則這些設備可以通過網絡交換時間消息,根據單個“主”時鐘動態調整各自的時鐘。利用傳統的時間同步協議——“網絡時間協議”(NTP),系統中的每臺設備根據它從NTP時間服務器獲取的時間信息調整其時鐘。然而,該協議只能實現毫秒級同步精度。
IEEE 1588定義了一個新協議,能夠實現納秒級同步精度。下面討論該標準如何實現這種水平的時鐘同步。
IEEE 1588有何作用
IEEE 1588標準定義了一種時間同步協議,適用于地理位置分散但通過某種通信技術(例如以太網)互連的設備。設備之間通過交換時序消息,從而保持相同的絕對系統時間(用秒和納秒表示)。
要實現此目標,一個直觀的方法是將一臺具有“最佳”(最精確)時鐘的設備指定為“主時鐘”設備,讓它向其它設備廣播其時間。其它設備將會調整各自的時間,與主時鐘所發送的時間保持一致。不過,這種解決方案也有幾點不足:
主時鐘設備無法以極短的間隔廣播時間,因此“從”時鐘設備必須使用自己獨立的“低劣”振蕩器,在主時鐘設備的兩次廣播之間插入時間點。這將導致主時鐘更新周期之間的同步精度下降。
廣播路徑難免存在延遲,延遲幅度取決于通信技術,例如物理信號沿導線從一臺設備傳輸至另一臺設備所需的時間。這種延遲會進一步擴大主時鐘與各從時鐘之間的失調。
主時鐘設備與各從時鐘設備之間的廣播路徑存在差異,這會進一步降低各從時鐘設備之間的同步精度。
IEEE 1588要求通過測量路徑延遲,解決第二個和第三個問題。它還要求待調整的從時鐘與主時鐘保持步調一致,從而減輕第一個問題。如果可能,使用更小的廣播間隔和更高質量的振蕩器,可以進一步減輕第一個問題。
IEEE 1588如何測量通信延遲
IEEE 1588-2002定義了四種消息Sync、Followup、DelayReq和DelayResp,用來測量前向(主時鐘至從時鐘)和后向(從時鐘至主時鐘)路徑的通信延遲。更新版本IEEE 1588-2008還提供其它機制,新增三種消息:PdelayReq、PdelayResp和 PdelayRespFollowup來測量“點對點延遲”。
這些消息中,Sync、DelayReq、PdelayReq和PdelayResp是所謂“事件”消息,在離開和到達一臺設備時必須加上“時間戳”(記錄本地時間)。給分組加上時間戳的方法有兩種:
1.消息由軟件處理時出現軟件時間戳。通常出現在消息的接收/發送“中斷服務程序”(ISR)中,該時間戳為系統時間的當前值。
2.消息實際到達或離開設備時出現硬件時間戳。該時間戳操作由硬件執行,硬件會維護自己的連續時間信息。
兩種時間戳方法均為IEEE 1588所接受,但硬件時間戳的精度明顯更高,如下文所述。
主時鐘設備到從時鐘設備的延遲
消息Sync和Followup由主時鐘設備發送,從時鐘設備負責接收這些消息,并計算主時鐘設備到從時鐘設備的通信路徑延遲。
圖2中,在時間點Tm1,主時鐘設備軟件讀取當前本地系統時間(Tm1,軟件時間戳),將其插入Sync消息中,并送出該消息。該消息在稍后的時間點Tm1'離開主時鐘設備,該時間點為硬件時間戳。該消息在時間點Ts1'(從時鐘設備本地時間)到達從時鐘硬件,從時鐘設備軟件在稍后的時間點Ts1收到該消息。該軟件將讀取硬件時間戳以獲得Ts1'。如果沒有通信延遲,Ts1'應等于(Tm1' + Tms),其中Tms為主時鐘與從時鐘之間的時間差。該協議的最終目標是補償此時間差。
圖2. 測量主時鐘設備與從時鐘設備之間的通信延遲
發送Sync消息之后,主時鐘設備軟件通過時間戳單元讀取Sync消息的離開時間Tm1',將其插入Followup消息中,然后在時間點Tm2發送該消息。從時鐘設備軟件在時間點Ts2收到此消息。此時,從時鐘設備軟件有兩個時間:Ts1'(Sync到達時間)和Tm1'(Sync離開時間)。主從路徑延遲Tmsd由公式1確定。
(1)
從時鐘設備到主時鐘設備的延遲
從時鐘設備發送DelayReq消息,主時鐘設備予以響應發送DelayResp消息。利用這些消息,從時鐘設備可以計算從時鐘設備到主時鐘設備的通信路徑延遲。
在時間點Ts3(圖3),從時鐘設備軟件讀取當前本地系統時間(Ts3),將其插入DelayReq消息中,并送出該消息。
圖3. 測量從主通信延遲
linux操作系統文章專題:linux操作系統詳解(linux不再難懂)
評論