基于FAST的TSN交換(6)基于FPGA的PTP時間同步實現
發布時間:2019-1-24
時間同步是TSN交換實現的前提。802.1AS規范定義了TSN網絡同步的方法,其基本思路還是利用IEEE 1588v2定義的PTP協議,將網絡中所有的時間從設備與時間主設備的時間進行同步。在基于FAST流水線的TSN實現中,與PTP協議相關的邏輯主要有接收控制邏輯(RXC),PTP-UDA模塊以及PTP-UDO模塊。這三個模塊密切協同實現PTP時間同步而不需要軟件參與。
一、FAST-TSN-04的PTP實現模型
在FAST-TSN-04的PTP協議實現模型如下圖所示,主要由RxC、PTP-UDA和PTP-UDO模塊組成。其中RxC模塊位于FPGA OS內部,是FAST平臺固有的邏輯,而PTP-UDA和PTP-UDO是FAST擴展的流水線模塊,只有需要支持PTP協議的流水線才需要嵌入這兩個模塊。

圖1 FAST-TSN-04的PTP實現模型
(1)主要功能模塊
每個從接口接收的分組首先進入RxC模塊。RxC模塊首先不加區分的為每個分組打上48比特接收時間戳。接收時間戳被填寫在分組的元數據中,隨著分組一同進入FAST流水線處理。由于接口時鐘頻率為125MHz,因此時間戳的精度為8ns。RxC模塊位于輸入緩存之前,因此輸出緩存的擁塞和調度機制不影響接收時間戳標記的準確度。
PTP-UDA模塊位于FAST流水線的開始,負責PTP協議的處理。根據軟件配置,PTP-UDA可以工作在時間主模式或是時間從模式。PTP-UDA內部的狀態機控制整個時間同步過程,由于時間同步完全由硬件實現,因此同步過程中不需要followup消息,主從之間只交換sync、delay_req和delay-resp三類消息,關于PTP消息詳細的交互流程以及offset的計算已有大量文章介紹,本文不再贅述。
若PTP-UDA工作在時間從模式,則每次同步都會產生一個本地時鐘與主時鐘的偏差offset,該offset用于修正本地的全局時間。
PTP-UDO模塊位于輸出緩存之后,PTP-UDO模塊根據輸出分組元數據中協議標準類型(PST)來判斷該分組是否為PTP的sync/delay-req/delay-resp分組。
如果輸出分組是上述PTP分組,則該分組在PTP協議頭中會攜帶透明時鐘(Transparent Clock)字段TC,PTP-UDO模塊會根據分組頭部攜帶的時間戳信息,當前時間信息計算分組從PTP-UDA發出經交換緩存和輸出緩存的延時,將該延時累計到透明時鐘字段中。如果分組不是上述PTP分組,則PTP-UDO模塊將該分組發出而不做任何修改。
(2)多時鐘域時鐘同步
在基于FPGA的FAST千兆交換實現過程中,FPGA內部最多有2N+1個時鐘域,其中N為接口數目。其中每個千兆接口都有一個獨立的接收時鐘,該時鐘頻率與通信對端的發送時鐘一致。每個接口都有一個發送時鐘,負責將數據通過GMII/RGMII接口發送給PHY芯片。同時還有一個獨立于接收和發送接口時鐘的核心時鐘,作為FAST流水線的工作時鐘。
雖然FAST-TSN-04的接口時鐘和核心時鐘都額定為125MHz,但可能存在細微的差別。例如兩個20ppm的125MHz晶振,設基于這兩個晶振的時間每秒偏差為D,則:
Dmax=8ns*(125M*(1+20ppm)-125M*(1-20ppm))=40us
因此FPGA內部不同時鐘域的時間信息之間也需要同步,片上跨時鐘域的時間同步有單信號同步和多信號同步等方式,這里不再贅述。
二、PTP協議同步實現
(1)時間信息的標記和處理
基于RxC、PTP-UDA和PTP-UDO模塊的FAST-TSN-04的PTP時間同步實現原理如下圖所示。每個sync/delay_req/delay-resp的協議分組都由PTP-UDA發出和接收。
FAST-TSN-04需要發送PTP分組時, PTP-UDA產生PTP分組,并將分組從PTP-UDA離開的時間t0填寫到分組的元數據中,假設該分組到達PTP-UDO時間為t1,則該分組在交換機內部的延時將會填寫到分組的透明時鐘域TC中,隨分組從網絡接口發出。

圖2 PTP協議分組處理流程
FAST-TSN-04接收PTP分組時首先將接收時間戳t2填寫到分組元數據中,然后送到FAST流水線的PTP-UDA模塊,設PTP-UDA模塊收到分組的時間為t3。后續的PTP分組處理有兩種情況。
一是分組的目的MAC是本地接口MAC地址,則該分組會送到本地PTP-UDA處理。本地PTP-UDA首先對分組的透明時鐘域進行修正,增加值為該分組進入FPGA后的延時t3-t2,然后再對分組數進行解析,根據PTP協議要求進行后續處理。
二是分組目的不是本地MAC,即該分組需要被TSN交換機轉發。PTP-UDA不處理該分組,直接將分組送FAST流水線進行后續交換處理。設分組到達輸出接口的PTP-UDO時間為t4,則分組在交換機中的延時t4-t2將被累加到TC域中。
(2)同步計算關鍵時間點的獲取
基于PTP的時間同步原理如下圖所示,時間從設備通過與時間主設備的三種類型分組的交互獲取四個關鍵的時間點信息,T1,T2,T3和T4,并根據這些關鍵時間點信息計算自己時間與時間主設備時間的偏差offset,并根據這個偏差調整自己的時間計數器。

圖3 一次PTP協議時間同步的過程
時間從設備與時間主設備的交互并獲取四個關鍵時間點的詳細方法如下表所示,時間點標記參見圖2。
(3)全局時間的表示與修正
PTP主和PTP從設備的全局時間計數器time_cnt均在PTP-UDA內部維護,長度為48比特。每隔8ns加1,因此計數器計數的時長超過200天,這對于TSN交換原型系統來說已經足夠。
TSN交換系統復位時,time_cnt置為全0,并隨時鐘自由增加。從設備在第一次接收到sync同步幀時,將自己的time_cnt設置為T1,后續同步過程使用offset修正自己的time_cnt計數器。此外,在每個時鐘同步周期內,每個TSN設備的time_cnt要與外圍時鐘域的時間進行一次同步。
三、進一步討論
(1)端系統PTP處理的實現
在TSN網絡中,時間主設備可以是TSN交換機,也可以是具有高精度時間的終端設備。由于FAST架構的核心就是基于軟硬件協同的方式進行分組處理,FPGA OS內部已經嵌入DMA通道,實現與CPU軟件進行通信,因此基于FAST擴展流水線的PTP協議處理可方便的在網卡上實現,而且不需要任何軟件參與。
(2)PTP同步頻率
由于所有的PTP同步邏輯由FPGA硬件實現,不會給軟件增加開銷,因此在規模有限的TSN網絡中,可以增加同步的頻度。根據上述分析,當兩個節點的晶振精度都為20ppm時,每秒時間偏差可達40us。若將同步間隔縮小到1ms,則同步誤差可縮小到40us左右,可以滿足絕大多數TSN場景的需求。