gPTP定義的五個封包中,Sync和Follow_UP為一組封包,週期發送,主要用來測量時鐘偏差。
雷射雷達與GPS時間同步主要有三種方案,分別是PPS GPRMC、PTP、gPTP
#GNSS輸出兩則訊息,一條是時間週期為1s的同步脈衝訊號PPS,脈衝寬度5ms~100ms;一是透過標準串列埠輸出GPRMC標準的時間同步訊息。
同步脈衝前緣時刻與GPRMC封包的傳送在同一時刻,誤差為ns級別,誤差可以忽略。 GPRMC是一條包含UTC時間(精確到秒),經緯度定位資料的標準格式封包。
PPS秒脈衝為物理電平輸出,接收及處理PPS訊號的時間在ns級別,依舊可以忽略。但GPRMC資料一般透過波特率9600的串列傳送,發送、接收、處理時間tx在ms級別,是時間同步的關鍵。
以下是使用PPS GPRMC進行時間同步的原理。
(1)設備收到PPS秒脈衝訊號後,將內部以晶振為時脈源的系統時間裡的毫秒及以下時間清零,並由此開始計算毫秒時間。
(2)當收到GPRMC資料後,提取封包裡的時、分、秒、年、月、日UTC時間。
(3)將收到秒脈衝到解析出GPRMC中UTC時間所用的時間tx,與UTC整秒時間相加,同步給系統時間,至此已完成一次時間同步。下一秒再進行相同的過程,每秒準確校準一次。
聰明的人可能已經恍然大悟,光達需要進行時間同步,就做兩根線接上這兩個物理接口就妥了,這種方式是可以的,也是很多廠商在用的方案,但是PPS GPRMC有下列問題。
(1)PPS是一個低功率的脈衝電平訊號,驅動電流少的只有0.5mA,多的也就20mA,帶幾個同步節點(雷射雷達和其他需要時間同步的節點) ,十幾個就很困難了。
(2)PPS是無屏蔽的單線脈衝訊號,十幾條PPS線穿梭在車內,極易受到車內惡劣電磁環境的干擾,屆時根本無法分辨出是乾擾脈衝還是同步脈衝。
(3)GPRMC透過RS232串列埠發送同步封包,RS232是一種1對1的全雙工通訊形式,也可以透過主從形式實現1對幾資料傳輸。但對十幾,實屬罕見,只能用試驗驗證到底可不可行。但至少線束工程師是打死不願答應的。
(4)當時鐘來源遺失的時候,所有需要時間同步的設備都一下子沒有了主心骨,每個小弟都可以自立門戶,沒有二當家的及時站出來,主持大局。這對功能安全要求極高的自動駕駛系統來說,根本無法接受。
因此基於單純的PPS和GPRMC實現整個自動駕駛系統的時間同步,具有理論可行性,但並不具有實際可操作性。
而基於網路的高精度時間同步協定PTP(Precision Time Protocol,1588 V2),同步精度可以達到亞微秒。這對於主幹網路為乙太網路的全域架構來說,簡直是萬事具備,只欠各域控制器的硬體PHY晶片支援了。
PTP是一種主從式的時間同步系統,採用硬體時間戳,因此可以大幅減少軟體處理時間。同時PTP可運作在L2層(MAC層)和L4層(UDP層),運作在L2層網路時,直接在MAC層進行封包解析,不用經過四層UDP協定棧,進而大幅減少協定棧駐留時間,進一步提高時間同步精度,對於自動駕駛系統來說非常友善。
全域架構下的一種架構方案如下圖。
設備中執行PTP協定的網路連接埠稱為PTP連接埠,PTP主連接埠用來發佈時間,PTP從連接埠用來接收時間。同時定義了三種時鐘節點,邊界時鐘節點(BC,Boundary Clock)、普通時鐘節點(OC,Ordinary Clock)和透明時鐘節點(TC,Transparent clock)。
(1)邊界時脈節點擁有多個PTP端口,其中一個用來同步上游設備時間,其餘端口則用來向下游設備發送時間。當邊界時鐘節點的上游時間同步設備是GNSS接收機時,此時的邊界時鐘節點就是一個主時鐘節點(最優時鐘)。
(2)普通時鐘節點只有一個PTP端口,用來同步上游時鐘節點的時間。
(3)透明時鐘,人如其名,具有多個PTP端口,收到什麼時間,轉發什麼時間,不進行協議解析,內部不參與時間同步。 PTP透過在主從裝置之間互動同步封包,並記錄下封包發送時間,從而計算網路傳輸延遲和主從裝置間時鐘的偏差。
PTP定義了四個同步訊息:Sync、Follow_Up、Delay_Req、Delay_Resp,精確同步過程如下。
(1)PTP主連接埠向從連接埠發送Sync封包,同步記錄下Sync發送的時間t1。從連接埠收到Sync封包後,記錄收到的時間t2。
(2)緊接著主端口將t1時間放到Follow_Up報文發送給從端口,從端口收到此報文後就可以解析出t1,並由此得到第一個方程式:t1網路延時時鐘偏差=t2。
(3)從連接埠向主連接埠發送Delay_Req封包,同步記錄下Delay_Req發送的時間t3。主連接埠收到封包後,記錄收到的時間t4。
(4)緊接著主端口將t4時間放到Delay_Resp封包發送給從端口,從端口收到此報文後就可以解析出t4,並由此得到第一個方程式:t3網路延時-時鐘偏差=t4。兩個未知數,兩個方程組,應用初中數學知識可以解出:網絡延時=[(t2-t1) (t4-t1)]/2,時鐘偏差=[(t2-t1)-(t4-t3 )]/2。
gPTP(generalized Precision Time Protocol,廣義精確時間同步協定),基於PTP(IEEE 1588v2)協定進行了一系列最佳化,形成了更具針對性的時間同步機制,可以實現μs等級的同步精度。
gPTP定義有兩種設備類型,Time-aware-end Station和Time-aware Bridge。每種設備都具有本地時鐘,本地時鐘都是透過晶振的振盪週期進行度量的,設備內部硬體計數器負責對振盪週期進行計數。設備中用來發佈時間同步訊息的網路連接埠稱為主端口,用來接收時間同步訊息的連接埠稱為從端口。
(1)Time-aware-end Station,既可以作為主時鐘,也可以作為從時鐘。
(2)Time-aware Bridge,既可以作為主時鐘,也可以作為橋接設備,類似交換器。橋接類設備收到gPTP訊息後,會請訊息搓個澡,然後再送出去。而報文在橋接設備內搓澡消耗的時間,稱為駐留時間。 gPTP要求橋接設備必須具備測量駐留時間的能力。
下圖展示了一個簡單的gPTP系統,包含一個時鐘來源、1個主時鐘,2個橋接設備,4個從時鐘。主時鐘是系統內的時間基準,一般具有更高精度的本地時鐘,同時需要能夠被高精度準時鐘源授時。主時鐘在系統內可以動態分配,也可以預先分配(對於車載固定拓樸應用場景,多採用預先分配的原則)。
gPTP中規定的主時鐘動態分配機制為BMCA(Best Master Clock Algorithm,最佳主時鐘選擇演算法)。系統上電喚醒之後,系統所有裝置都可以透過發送訊息來參與主時鐘競選,訊息中含有各自裝置的時鐘訊息。每個參選設備都會比較自己的時鐘資訊和其它設備的時鐘信息,並判斷是否具有優勢,如果不具有,則退出競選,直到綜合能力最強的武林盟主誕生。
gPTP定義有兩類報文,事件類型封包(包括Sync、Pdelay_Req、Pdelay_Resp三條)和一般類型封包(包括Follow_UP、Pdelay_Resp_Follow_UP二條)。 gPTP定義設備工作在網路七層模型中的第二層資料鏈結層的MAC(Media Acess Control,媒介存取控制)子層。
當設備MAC層接收或發送事件類型封包時,會觸發對硬體計數器進行取樣,從而獲得時脈振盪週期計數值,結合時脈振盪頻率及基準時間,可獲得此時的時間戳。而一般類型封包僅用來攜帶訊息,不會觸發內部硬體計數器的取樣操作。
gPTP定義的五條封包中,Sync和Follow_UP為一組封包,週期發送,主要用來測量時鐘偏差。 Sync由主連接埠傳送,當封包離開主連接埠MAC層時,觸發主連接埠記錄此時的時間戳t1。從連接埠MAC層收到Sync封包後會記錄此時的時間戳t2。隨後,主連接埠將t1值附到Follow_UP封包發送給從連接埠。
如果沒有網路傳輸延遲或延遲、可以忽略,則從連接埠將本機時鐘值加上時脈偏差(t1-t2的值)就完成時間同步,也就沒有後面的碎念了。但是對於μs級時間同步精度的gPTP來說,傳輸延遲顯然無法視若不見。
gPTP採用P2P(Peer to Peer)的方法來測量傳輸延遲。在P2P方法中,測量的是相鄰設備間的傳輸延遲,封包不允許跨設備傳輸,這也要求gPTP網路內的所有設備都需要支援gPTP功能。同時定義一組獨立的封包專門負責傳輸延遲測量,分別為週期發送的Pdelay_Req、Pdelay_Resp和Pdelay_Resp_Follow_UP。
從連接埠先傳送Pdelay_Req封包,標誌傳輸延遲測量的開始,當封包離開從連接埠MAC層時,觸發從連接埠記錄此時的時間戳t3 。主端口MAC層收到Pdelay_Req報文後會記錄此時的時間戳t4,隨後,主端口通過Pdelay_Resp報文將值t4發送給從端口,同時在Pdelay_Resp報文離開主端口的MAC層時,觸發主連接埠記錄此時的時間戳t5,從連接埠MAC層收到Pdelay_Resp封包後記錄此時的時間戳t6。隨後,相同的套路,主連接埠透過Pdelay_Resp_Follow_Up封包將值t5傳送給從連接埠。至此,一次傳輸延遲測量過程已經結束。在假設路徑傳輸延遲是對稱的前提下,可由下列公式計算相鄰設備間的傳輸延遲。
上文的傳輸延遲測量是基於從連接埠與主連接埠的時脈振盪頻率一致的前提下得到的。現在我們考慮一下如果主從連接埠時脈振盪頻率不一致的時候,會導致什麼靈異事件發生。假設從埠的時脈振盪頻率是25MHz,則一個時脈振盪週期是40ns。主埠的時脈振盪頻率是100MHz,則一個時脈時脈振盪週期是10ns。
假設在一次傳輸延遲測量過程中,從連接埠在t6和t3時刻記錄的振盪週期差值若為200個振盪週期。由於主埠的時脈頻率是從埠的4倍,因此從埠收到t5和t4時刻的振盪週期差值大概800個。以從連接埠的40ns一個時脈振盪週期為基準進行計算的話,傳輸延遲則為-24μs([200x40-800x40]/2)。傳輸不僅沒有延遲,反而提前知道了,從端口大仙無疑了。
除了主從埠時脈振盪頻率的先天不一致,溫度、老化等原因也會導致晶振振盪頻率的不穩定性。為了解決頻率不同步的問題,gPTP透過頻率同步來實現從連接埠對主連接埠的時脈振盪頻率同步。
頻率同步重複使用傳輸延遲測量過程的Pdelay_Resp和Pdelay_Resp_Follow_UP封包。透過採用兩組答复,最終可以獲得t5,t6,t9,t10的值,由下面公式可得主從端口的頻率比。
主從連接埠頻率同步的情況下,頻率比等於1。如果大於1,表示主連接埠走得快,如果小於1,表示主連接埠走的慢。從連接埠根據頻率比的值,調整自己的時基,從而獲得正確的時間戳記。
以上是自動駕駛汽車光達如何做到與GPS時間同步?的詳細內容。更多資訊請關注PHP中文網其他相關文章!