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

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

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

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