0731-84728105
15116127200
基于FAST的TSN交換(6)基于FPGA的PTP時間同步實現
發布時間:2019-1-24
     時間同步是TSN交換實現的前提。802.1AS規範定義了TSN網絡同步的方法,其基本思路(lù)還(hái)是利用IEEE 1588v2定義的PTP協議,将網絡中所有的時間從(cóng)設備與時間主設備的時間進行同步。在基于FAST流水(shuǐ)線的TSN實現中,與PTP協議相(xiàng)關的邏輯主要有接收控制邏輯(RXC),PTP-UDA模塊以及PTP-UDO模塊。這三個(gè)模塊密切協同實現PTP時間同步而不需要軟件(jiàn)參與。
一(yī)、FAST-TSN-04的PTP實現模型
      在FAST-TSN-04的PTP協議實現模型如下(xià)圖所示,主要由RxC、PTP-UDA和PTP-UDO模塊組成。其中RxC模塊位于FPGA OS内部,是FAST平台固有的邏輯,而PTP-UDA和PTP-UDO是FAST擴展的流水(shuǐ)線模塊,隻有需要支持PTP協議的流水(shuǐ)線才需要嵌入這兩個(gè)模塊。

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

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

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