對(duì)于本文,我們將繼續(xù)討論全局時(shí)鐘恢復(fù)、分布式時(shí)鐘同步和事件同步的主題。
全局時(shí)鐘恢復(fù)
假設(shè)在一個(gè)復(fù)雜系統(tǒng)中有多個(gè)代理。每一個(gè)都有自己的參考時(shí)鐘,給它一種時(shí)間感。代理的時(shí)間概念由自啟動(dòng)以來經(jīng)過的參考時(shí)鐘滴答數(shù)給出。
為了同步動(dòng)作和共享時(shí)鐘,代理需要有一個(gè)共同的、全局的時(shí)間感。使用 USB 或 Firewire 之類的總線系統(tǒng)很容易做到這一點(diǎn),因?yàn)榭偩€往往帶有自己的時(shí)鐘。然而,對(duì)于分布式、基于數(shù)據(jù)包的互連,事情變得更加困難。IEEE 標(biāo)準(zhǔn) 1588、1588v2 和 802.1as 以及 IETF NTP 標(biāo)準(zhǔn)旨在專門解決分布式全局時(shí)鐘恢復(fù)問題。
系統(tǒng)的第一個(gè)任務(wù)是選擇一個(gè)代理作為主代理。正是這個(gè)代理的時(shí)鐘將成為通用的全局時(shí)鐘。IEEE 1588 及其變體使用點(diǎn)對(duì)點(diǎn)領(lǐng)導(dǎo)選舉協(xié)議,試圖在代理中選擇最高質(zhì)量的時(shí)鐘。保證會(huì)選出一位,而且只有一位,master。
Once the master is elected, each agent needs to know the following information:
我的時(shí)鐘是否比全球主時(shí)鐘慢/快?如果是這樣,多少?
根據(jù)主時(shí)鐘,現(xiàn)在是幾點(diǎn)鐘?
使用的基本方法是定期將同步消息從主代理傳輸?shù)狡渌?。消息包含發(fā)送消息的全球時(shí)間。下圖顯示了這種情況:
從站知道主站執(zhí)行的傳出時(shí)間戳(Tm1、Tm2 和 Tm3),以及從站執(zhí)行的入站時(shí)間戳(Ts1、Ts2 和 Ts3)。給定這些時(shí)間戳,它可以計(jì)算出主時(shí)鐘與其自己的本地時(shí)鐘之間的比率。例如,以下計(jì)算會(huì)測(cè)量?jī)蓚€(gè)時(shí)鐘之間的比率:
可以過濾該值的多個(gè)測(cè)量值以平均傳輸時(shí)間的變化。隨著時(shí)間的推移跟蹤該值還將跟蹤所涉及的兩個(gè)時(shí)鐘中的任何漂移。
為了在全球時(shí)間和本地時(shí)間之間進(jìn)行完全轉(zhuǎn)換,slave 還需要知道它與 master 的時(shí)間偏移量,這意味著它需要知道同步消息的傳輸時(shí)間。為此,主機(jī)和從機(jī)執(zhí)行兩種方式的消息交換:
假設(shè)傳輸時(shí)間是對(duì)稱的:
這里需要小心,因?yàn)闀r(shí)間戳 Tm2 和 Tm1 參考與 Ts2 和 Ts1 不同的時(shí)鐘。所以從機(jī)需要進(jìn)行計(jì)算:
知道這個(gè)傳輸時(shí)間允許從機(jī)計(jì)算出它與主時(shí)鐘的偏移量。它現(xiàn)在擁有在全球和本地時(shí)間之間轉(zhuǎn)換所需的所有信息,反之亦然。
實(shí)際上,像 802.1as 這樣的時(shí)間同步協(xié)議比這里描述的要復(fù)雜一些,但基本思想是一樣的。
事件同步
一旦全局時(shí)鐘同步到位。本地代理可以將全球時(shí)間轉(zhuǎn)換為本地時(shí)間:
這意味著兩個(gè)代理可以同步他們的動(dòng)作。每個(gè)人都有一個(gè)全局時(shí)間來執(zhí)行一個(gè)事件。代理將此全球時(shí)間轉(zhuǎn)換為本地時(shí)間,然后安排事件在該時(shí)間發(fā)生。當(dāng)然,這些事件不會(huì)同時(shí)發(fā)生。會(huì)有一些同步錯(cuò)誤。此錯(cuò)誤包括:
由于全局時(shí)鐘恢復(fù)導(dǎo)致的錯(cuò)誤
由于代理在特定本地時(shí)間觸發(fā)事件的能力的可變性而導(dǎo)致的錯(cuò)誤。
自上次同步以來代理的本地時(shí)鐘變化導(dǎo)致的錯(cuò)誤
這些錯(cuò)誤的大小將取決于通信技術(shù)、同步協(xié)議、代理之間的消息時(shí)間戳的準(zhǔn)確性以及代理內(nèi)的本地事件同步。
在以太網(wǎng)通信的情況下,使用 IEEE 802.1as 作為時(shí)間同步協(xié)議,XMOS XCore 設(shè)備作為代理,同步誤差可以小于 150 ns。
基于全局時(shí)鐘恢復(fù)其他時(shí)鐘
有時(shí)需要使用全局時(shí)間作為參考來恢復(fù)輔助時(shí)鐘。IEEE AVB 1722 標(biāo)準(zhǔn)就是這種情況,需要恢復(fù)媒體時(shí)鐘以將音頻或視頻從一個(gè)端點(diǎn)傳輸?shù)搅硪粋€(gè)端點(diǎn)。
在這種情況下,使用我之前關(guān)于軟件時(shí)鐘的文章中描述的控制環(huán)路來恢復(fù)時(shí)鐘。這種情況下的區(qū)別在于如何檢測(cè)錯(cuò)誤。
發(fā)送時(shí)鐘的代理也可以發(fā)送某些時(shí)鐘邊沿應(yīng)該出現(xiàn)的預(yù)期時(shí)間。當(dāng)從機(jī)恢復(fù)并輸出時(shí)鐘時(shí),它可以跟蹤該邊沿實(shí)際發(fā)生的時(shí)間,并獲得預(yù)期時(shí)間和實(shí)際時(shí)間之間的差值。全局時(shí)鐘的存在允許代理有一個(gè)共同的時(shí)基來計(jì)算增量。
該增量給出了饋入 PID 控制回路的誤差項(xiàng)。然而,還有一個(gè)“陷阱”需要注意。目的是恢復(fù)時(shí)鐘周期;這使得預(yù)期邊緣時(shí)間和實(shí)際邊緣時(shí)間之間的增量成為積分誤差而不是比例誤差。這意味著比例誤差是增量的變化率。一旦理解了這一點(diǎn),就可以以標(biāo)準(zhǔn)方式調(diào)整控制回路。
-
以太網(wǎng)
+關(guān)注
關(guān)注
40文章
5450瀏覽量
172177 -
usb
+關(guān)注
關(guān)注
60文章
7965瀏覽量
265278 -
時(shí)鐘
+關(guān)注
關(guān)注
11文章
1740瀏覽量
131633
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論