ptp/gptp
在車載,vehicle time使用gptp來做vehicle time的同步,gptp算是ptp的簡化版,規(guī)范定義來源于IEEE 802.1AS,理論上可以達到ns級的誤差。針對不通的ptp版本和gptp的對比如下:
- gptp同步原理
針對gptp,所有slave節(jié)點,都與master(grandmaster)的時鐘保持同步;在車載領(lǐng)域,master節(jié)點都是靜態(tài)指定的,并且從功能安全的角度來看,會選擇具備功能安全的mcu來做為master節(jié)點。所以會一般選用gw(gateway)或者tbox來做master,而選擇gw或者tbox對后續(xù)整車整個時間管理是策略會有影響。
master節(jié)點的sync報文(sync+follow up,以下用sync報文代替)會使用二層報文傳遍整個時鐘樹,gptp中,sync報文使用二層報文,mac地址是指定的廣播mac地址,但是實際上sync報文都是以單播的形式發(fā)送到下一跳節(jié)點,如果下一條節(jié)點是Bridage,則將重新修正correctionField(路由處理所消耗的時間),然后再將原來信息添加到sync報文從而路由到下一跳節(jié)點,直至到終端節(jié)點--End-Station。sync報文會包含master preciseOriginTimestamp、correctionField等。如下圖:
slave節(jié)點會根據(jù)sync報文帶上的preciseOriginTimestamp、correctionField來調(diào)整自己的時鐘頻率以及偏移;為了消除總線上的傳輸時延,slave節(jié)點會發(fā)送延遲測量報文,由于在車載每一跳都會有g(shù)ptp協(xié)議棧,所以理論上測出的時鐘同步是單向、精確的,如下圖:
Pdelay=((t(4)-t(1)) - (t(3)-t(2)))/2
Pdelay測量的僅僅相鄰兩跳之間的傳輸時延,所以Pdelay是不會穿透Bridge的,從上面可以看到,gptp相對于can tsync不僅僅消除了傳輸延遲和路由報文時的處理延遲,同時時間戳是由硬件加上的,所以其時鐘同步精度遠遠大于can tsync。
有了上述基礎(chǔ)后,我們將所有g(shù)ptp報文放一起,如下所示,并推導(dǎo)出slave節(jié)點用于調(diào)幅和調(diào)相的公式。
C Pdelay = ((t6-t3)-(t5-t4))/2 Gm = t1 + Pdelay + CorrectionField //主時鐘時刻+線纜傳輸時間+路由報文花銷掉的時間 TimeOffset = t2 - Gm //用于調(diào)相或者調(diào)幅 Ratio = (Gm-Gm_last) /(t2-t2_last) //Gm_last和t2_last可以更久之前的。 FreqOffset = (1-Ratio)*1e9//用于調(diào)頻
根據(jù)規(guī)范,sync報文一般是125ms發(fā)送一次;而Pdelay報文是1s發(fā)送一次,也可以是每次sync報文觸發(fā)一次Pdelay報文,并且一般來說說同步精度是可配置的,當(dāng)超過threshold時才去調(diào)整本地時鐘。gptp調(diào)整的時鐘(gptp時鐘),是與網(wǎng)卡時鐘源同一層級的時鐘樹端點,在linux上一般會抽象成設(shè)備,也就是/dev/ptpx;在使用硬件時鐘戳?xí)r,當(dāng)網(wǎng)絡(luò)報文發(fā)送或者接收時的采樣點到達時,會從gptp時鐘上獲取時間戳。采樣點如下圖所示:
額外:上圖不僅僅展示了采樣點,還展示了latency,如果是為了追求超高精度的時鐘同步,需要將ingress_latency和egress_latency在實際計算時進行補償。
gptp報文格式略微復(fù)雜,在這里不再具體展開,對于了解gptp原理的角度來說,可以暫時不用關(guān)注報文格式。
-
車載
+關(guān)注
關(guān)注
18文章
613瀏覽量
83391 -
節(jié)點
+關(guān)注
關(guān)注
0文章
220瀏覽量
24443 -
時鐘同步
+關(guān)注
關(guān)注
0文章
87瀏覽量
12770 -
報文
+關(guān)注
關(guān)注
0文章
38瀏覽量
4041
發(fā)布評論請先 登錄
相關(guān)推薦
評論