基于FAST的TSN交換(6)基于FPGA的PTP時(shí)間同步實現(xiàn)
發布時(shí)間:2019-1-24
時(shí)間同步是TSN交換實現(xiàn)的前提。802.1AS規範定義了(le)TSN網絡同步的方法,其基本思路還是利用(yòng)IEEE 1588v2定義的PTP協議(yì),将網絡中所有的時(shí)間從(cóng)設備與時(shí)間主設備的時(shí)間進行同步。在基于FAST流水(shuǐ)線的TSN實現(xiàn)中,與PTP協議(yì)相關的邏輯主要有接收控制邏輯(RXC),PTP-UDA模塊以及PTP-UDO模塊。這(zhè)三個模塊密切協同實現(xiàn)PTP時(shí)間同步而不需要軟件參與。
一、FAST-TSN-04的PTP實現(xiàn)模型
在FAST-TSN-04的PTP協議(yì)實現(xiàn)模型如下(xià)圖所示,主要由RxC、PTP-UDA和(hé)PTP-UDO模塊組成。其中RxC模塊位于FPGA OS内部,是FAST平台固有的邏輯,而PTP-UDA和(hé)PTP-UDO是FAST擴展的流水(shuǐ)線模塊,隻有需要支持PTP協議(yì)的流水(shuǐ)線才需要嵌入這(zhè)兩個模塊。
圖1 FAST-TSN-04的PTP實現(xiàn)模型
(1)主要功能(néng)模塊
每個從(cóng)接口接收的分組首先進入RxC模塊。RxC模塊首先不加區(qū)分的爲每個分組打上(shàng)48比特接收時(shí)間戳。接收時(shí)間戳被填寫在分組的元數據中,随着分組一同進入FAST流水(shuǐ)線處理(lǐ)。由于接口時(shí)鐘(zhōng)頻率爲125MHz,因此時(shí)間戳的精度爲8ns。RxC模塊位于輸入緩存之前,因此輸出緩存的擁塞和(hé)調度機制不影響接收時(shí)間戳标記的準确度。
PTP-UDA模塊位于FAST流水(shuǐ)線的開(kāi)始,負責PTP協議(yì)的處理(lǐ)。根據軟件配置,PTP-UDA可以工(gōng)作(zuò)在時(shí)間主模式或是時(shí)間從(cóng)模式。PTP-UDA内部的狀态機控制整個時(shí)間同步過程,由于時(shí)間同步完全由硬件實現(xiàn),因此同步過程中不需要followup消息,主從(cóng)之間隻交換sync、delay_req和(hé)delay-resp三類消息,關于PTP消息詳細的交互流程以及offset的計(jì)算(suàn)已有大(dà)量文(wén)章介紹,本文(wén)不再贅述。
若PTP-UDA工(gōng)作(zuò)在時(shí)間從(cóng)模式,則每次同步都會(huì)産生一個本地時(shí)鐘(zhōng)與主時(shí)鐘(zhōng)的偏差offset,該offset用(yòng)于修正本地的全局時(shí)間。
PTP-UDO模塊位于輸出緩存之後,PTP-UDO模塊根據輸出分組元數據中協議(yì)标準類型(PST)來(lái)判斷該分組是否爲PTP的sync/delay-req/delay-resp分組。
如果輸出分組是上(shàng)述PTP分組,則該分組在PTP協議(yì)頭中會(huì)攜帶透明(míng)時(shí)鐘(zhōng)(Transparent Clock)字段TC,PTP-UDO模塊會(huì)根據分組頭部攜帶的時(shí)間戳信息,當前時(shí)間信息計(jì)算(suàn)分組從(cóng)PTP-UDA發出經交換緩存和(hé)輸出緩存的延時(shí),将該延時(shí)累計(jì)到(dào)透明(míng)時(shí)鐘(zhōng)字段中。如果分組不是上(shàng)述PTP分組,則PTP-UDO模塊将該分組發出而不做任何修改。
(2)多時(shí)鐘(zhōng)域時(shí)鐘(zhōng)同步
在基于FPGA的FAST千兆交換實現(xiàn)過程中,FPGA内部最多有2N+1個時(shí)鐘(zhōng)域,其中N爲接口數目。其中每個千兆接口都有一個獨立的接收時(shí)鐘(zhōng),該時(shí)鐘(zhōng)頻率與通信對(duì)端的發送時(shí)鐘(zhōng)一緻。每個接口都有一個發送時(shí)鐘(zhōng),負責将數據通過GMII/RGMII接口發送給PHY芯片。同時(shí)還有一個獨立于接收和(hé)發送接口時(shí)鐘(zhōng)的核心時(shí)鐘(zhōng),作(zuò)爲FAST流水(shuǐ)線的工(gōng)作(zuò)時(shí)鐘(zhōng)。
雖然FAST-TSN-04的接口時(shí)鐘(zhōng)和(hé)核心時(shí)鐘(zhōng)都額定爲125MHz,但(dàn)可能(néng)存在細微的差别。例如兩個20ppm的125MHz晶振,設基于這(zhè)兩個晶振的時(shí)間每秒偏差爲D,則:
Dmax=8ns*(125M*(1+20ppm)-125M*(1-20ppm))=40us
因此FPGA内部不同時(shí)鐘(zhōng)域的時(shí)間信息之間也(yě)需要同步,片上(shàng)跨時(shí)鐘(zhōng)域的時(shí)間同步有單信号同步和(hé)多信号同步等方式,這(zhè)裏不再贅述。
二、PTP協議(yì)同步實現(xiàn)
(1)時(shí)間信息的标記和(hé)處理(lǐ)
基于RxC、PTP-UDA和(hé)PTP-UDO模塊的FAST-TSN-04的PTP時(shí)間同步實現(xiàn)原理(lǐ)如下(xià)圖所示。每個sync/delay_req/delay-resp的協議(yì)分組都由PTP-UDA發出和(hé)接收。
FAST-TSN-04需要發送PTP分組時(shí), PTP-UDA産生PTP分組,并将分組從(cóng)PTP-UDA離開(kāi)的時(shí)間t0填寫到(dào)分組的元數據中,假設該分組到(dào)達PTP-UDO時(shí)間爲t1,則該分組在交換機内部的延時(shí)将會(huì)填寫到(dào)分組的透明(míng)時(shí)鐘(zhōng)域TC中,随分組從(cóng)網絡接口發出。
圖2 PTP協議(yì)分組處理(lǐ)流程
FAST-TSN-04接收PTP分組時(shí)首先将接收時(shí)間戳t2填寫到(dào)分組元數據中,然後送到(dào)FAST流水(shuǐ)線的PTP-UDA模塊,設PTP-UDA模塊收到(dào)分組的時(shí)間爲t3。後續的PTP分組處理(lǐ)有兩種情況。
一是分組的目的MAC是本地接口MAC地址,則該分組會(huì)送到(dào)本地PTP-UDA處理(lǐ)。本地PTP-UDA首先對(duì)分組的透明(míng)時(shí)鐘(zhōng)域進行修正,增加值爲該分組進入FPGA後的延時(shí)t3-t2,然後再對(duì)分組數進行解析,根據PTP協議(yì)要求進行後續處理(lǐ)。
二是分組目的不是本地MAC,即該分組需要被TSN交換機轉發。PTP-UDA不處理(lǐ)該分組,直接将分組送FAST流水(shuǐ)線進行後續交換處理(lǐ)。設分組到(dào)達輸出接口的PTP-UDO時(shí)間爲t4,則分組在交換機中的延時(shí)t4-t2将被累加到(dào)TC域中。
(2)同步計(jì)算(suàn)關鍵時(shí)間點的獲取
基于PTP的時(shí)間同步原理(lǐ)如下(xià)圖所示,時(shí)間從(cóng)設備通過與時(shí)間主設備的三種類型分組的交互獲取四個關鍵的時(shí)間點信息,T1,T2,T3和(hé)T4,并根據這(zhè)些(xiē)關鍵時(shí)間點信息計(jì)算(suàn)自(zì)己時(shí)間與時(shí)間主設備時(shí)間的偏差offset,并根據這(zhè)個偏差調整自(zì)己的時(shí)間計(jì)數器。
圖3 一次PTP協議(yì)時(shí)間同步的過程
時(shí)間從(cóng)設備與時(shí)間主設備的交互并獲取四個關鍵時(shí)間點的詳細方法如下(xià)表所示,時(shí)間點标記參見圖2。
(3)全局時(shí)間的表示與修正
PTP主和(hé)PTP從(cóng)設備的全局時(shí)間計(jì)數器time_cnt均在PTP-UDA内部維護,長度爲48比特。每隔8ns加1,因此計(jì)數器計(jì)數的時(shí)長超過200天,這(zhè)對(duì)于TSN交換原型系統來(lái)說已經足夠。
TSN交換系統複位時(shí),time_cnt置爲全0,并随時(shí)鐘(zhōng)自(zì)由增加。從(cóng)設備在第一次接收到(dào)sync同步幀時(shí),将自(zì)己的time_cnt設置爲T1,後續同步過程使用(yòng)offset修正自(zì)己的time_cnt計(jì)數器。此外(wài),在每個時(shí)鐘(zhōng)同步周期内,每個TSN設備的time_cnt要與外(wài)圍時(shí)鐘(zhōng)域的時(shí)間進行一次同步。
三、進一步讨論
(1)端系統PTP處理(lǐ)的實現(xiàn)
在TSN網絡中,時(shí)間主設備可以是TSN交換機,也(yě)可以是具有高(gāo)精度時(shí)間的終端設備。由于FAST架構的核心就是基于軟硬件協同的方式進行分組處理(lǐ),FPGA OS内部已經嵌入DMA通道(dào),實現(xiàn)與CPU軟件進行通信,因此基于FAST擴展流水(shuǐ)線的PTP協議(yì)處理(lǐ)可方便的在網卡上(shàng)實現(xiàn),而且不需要任何軟件參與。
(2)PTP同步頻率
由于所有的PTP同步邏輯由FPGA硬件實現(xiàn),不會(huì)給軟件增加開(kāi)銷,因此在規模有限的TSN網絡中,可以增加同步的頻度。根據上(shàng)述分析,當兩個節點的晶振精度都爲20ppm時(shí),每秒時(shí)間偏差可達40us。若将同步間隔縮小(xiǎo)到(dào)1ms,則同步誤差可縮小(xiǎo)到(dào)40us左右,可以滿足絕大(dà)多數TSN場景的需求。