專利名稱:一種納秒級精度ptp實現方法
技術領域:
本發明涉及通信系統中的時鐘同步技術領域,尤其涉及一種納秒級精度PTP實現方法。
背景技術:
隨著網絡技術的發展,在分布式通信系統中對時間同步的要求越來越高,如目前的3G通信系統中設備間的同步精度需求達到了微秒級,電力系統中更是要求達到納秒級。 對于這些需求,傳統的NTP和SNTP已經不能滿足應用的需要,在這種情況了 IEEE1588就應運而生了。IEEE1588的全稱是“網絡測量和控制系統的精確時間同步協議”(Precision Clock Synchronization Protocol forNetworked Measurement and Control Systems), 簡稱PTP(!decision TimeProtocol,即精確時間協議),目前已經發展到v2版本。在IEEE1588v2中可以同時實現時間同步和頻率同步,它的基本原理是主時鐘周期性的發送Sync報文,然后發送R)llomip報文將上個Sync報文的精確發送時間Tl發送給從時鐘,從時鐘記錄Sync報文的到達時間T2 ;從時鐘在T3時刻發送Delay-Req報文,主時鐘記錄該報文的到達時刻T4,并將其通過Delay-Resp報文發送給從時鐘。從時鐘根據Tl、 T2、T3、T4,可以計算出主從時鐘之間的鏈路的延時和兩個時鐘之間的時間偏差,并據此調整本地時間,從而達到主從時鐘的時間同步。同時從時鐘也能根據這些時間戳來計算出主從時鐘間的頻率偏差,對從時鐘的頻率進行調整從而達到和主時鐘的頻率同步。IEEE1588 的精度主要取決于時間戳的精度和準確度,如果單純用軟件實現,時間戳在軟件層次獲取, 由于數據包的排隊延時以及軟件協議棧的抖動,都會導致精度的下降,因此IEEE1588 —般都用軟硬件結合的方法來實現。目前的硬件實現有兩種,一種是用FPGA的方法來實現。FPGA通過窺探物理層PHY 芯片和MAC層之間的MII總線的操作情況,識別出PTP報文并記錄其時間戳,這種方法的時間同步精度取決于PHY芯片內的時間延遲。另一種方法是在PHY芯片內部識別PTP報文并記錄時間戳。相比前一種方法,后者對時間戳的記錄位置更靠近底層,由于延時引入的誤差更小,并且實現起來更簡單靈活。目前已經有這樣的芯片開始應用。主從時鐘的頻率同步,可以采用1588v2協議通過軟件計算的方法來進行頻率偏差的計算和調整,也可以在物理層采用同步以太網技術(SyncE)的方法來實現頻率同步。同步以太網(SyncE)由ITU-TG. 8262定義,可以同IEEE1588—起使用來達到更高的精度。采用支持SyncE技術的PHY芯片能夠從以太網鏈路上提取恢復時鐘,同時將這個恢復時鐘經過鎖相處理后作為系統中所有PHY芯片的工作時鐘,從而達到本地時鐘頻率和上游時鐘頻率的一致性。
發明內容
本發明的主要目的在于提供一種納秒級精度PTP實現方法,可以滿足通信系統當中對時間同步精度的要求,使PTP的同步精度達到納秒級別。
為達到上述目的,本發明是通過以下技術方案來實現的一種納秒級精度PTP實現方法,在物理層芯片(PHY)識別PTP報文并記錄其離開或到達的時間戳;在物理層通過同步以太網(SyncE)技術實現頻率同步;通過PHY芯片和 FPGA相結合的方式管理時間戳,采用軟件處理的方法,保證PTP報文到來時刻PHY芯片內部時間和FPGA維護時間的一致性。采用軟件處理的方法,保證PTP報文到來時刻PHY芯片內部時間和FPGA維護時間的一致性,其步驟是讀取PHY芯片維護的PTP報文到達時刻鎖存的計數器值Tphy-ptp ;讀取FPGA維護的當前時間Tfpgal ;讀取PHY芯片的計數器當前值Tphy-cur (非PTP報文到達時刻鎖存值);如果Tphy-cur大于Tphy-ptp,則O)中讀取的Tfpgal就是PTP報文到達時刻所對應的FPGA維護的時間如果Tphy-cur小于Tphy-ptp,則再次讀取FPGA維護的時間計數值Tfpga2,則PTP 報文到達時刻的FPGA維護的時間計數值為Tfpga2-1。物理層芯片識別到達或離開的PTP報文,并將其到達或離開的時刻的時間值鎖存到物理層芯片內部的寄存器中,同時觸發中斷給CPU,CPU在中斷處理程序中讀取該時間戳并交由PTP協議軟件進行計算。物理層芯片通過同步以太網技術從以太網鏈路上提取恢復時鐘,并通過數字鎖相環鎖相后反饋給物理層芯片作為其工作時鐘。物理層芯片的內部時間計數器計滿溢出產生脈沖,FPGA對這一進位脈沖進行計數,物理層芯片內部的時間計數器和FPGA維護的時間計數器結合在一起組成PTP報文的硬件時間戳。PTP報文的時間戳有三部分組成PHY芯片維護的計數器值,FPGA維護的計數器值,軟件變量維護的主從間的時間偏差值。當系統中存在多顆PHY芯片時,在系統初始化時,FPGA保證同時給所有PHY芯片輸出一同步觸發脈沖,所有PHY芯片在這一同步脈沖的作用下將內部計數器值清零,使系統中的所有PHY芯片起始相位對齊。在PTP協議軟件計算過程中,對于鏈路延采用均值濾波,對于主從時鐘的時間偏差采用加權濾波。采用將通過PTP協議計算出的主從時鐘的偏差保存到軟件變量中的方法調整時間偏差。本發明所提供的一種納秒級精度PTP實現方法,所達到的有益效果通過在PHY 芯片中識別和記錄時間戳,最大程度的提高了時間戳的精度和準確度。通過在物理層采用 SyncE來實現頻率同步,實現了比軟件實現的更高精度的頻率同步精度。結合了軟件和硬件各自的優點來實現高精度的時間同步通過軟件的方法來調整主從時鐘的時間偏差;通過軟件濾波的方法來減小同步誤差的波動;通過通過PHY芯片和FPGA相結合的方法來管理報文的時間戳,并通過軟件的方法保證了二者的一致性對應。
下面根據附圖和實施例對本發明作進一步詳細說明。圖1為實施例的系統框圖;圖2為同步以太網功能框圖;圖3為時間戳管理功能框圖;圖4為PHY芯片內部時間和FPGA維護時間可能出現的一致性問題示意圖;圖5為用軟件處理的方法來保證PHY芯片內部時間和FPGA維護時間一致性流程圖;圖6為多顆PHY芯片時間同步示意圖。
具體實施例方式圖1為本實施例的系統框圖,其中包括CPU模塊10、Switch模塊12、PHY芯片模塊 14、FPGA 模塊 11 和 DPLL 模塊 13。CPU模塊10,運行系統軟件,管理整個系統;Switch模塊12,為系統的核心交換模塊,除完成轉發功能外,還負責將PTP報文送到CPU模塊進行處理;PHY芯片模塊14,除完成數據包編解碼和收發功能外,還負責識別PTP事件報文, 并將其時間戳鎖存到特定寄存器中,并產生中斷信號4通知CPU模塊來讀取;從以太網鏈路上提取時鐘,并將恢復時鐘1輸出給DPLL模塊進行處理;內部計數器計滿溢出產生脈沖信號2給FPGA ;FPGA模塊11,除外城外圍邏輯控制外,還負責接收PHY內部計數器計滿溢出產生的脈沖信號,對時間戳進行管理;DPLL模塊13,選擇接收一路從PHY芯片提取并輸出的恢復時鐘,進行鎖相處理后, 輸出高精度的時鐘給所有PHY芯片,從而達到頻率同步。圖2為本發明實施例中的物理層同步以太網框圖。其中系統中共有三顆PHY芯片, 每顆PHY芯片上有四個端口,都支持SyncE技術,但只能選擇其中的一個輸出恢復時鐘。每顆PHY芯片輸出的恢復時鐘引腳連接到一個多路選擇器上,時鐘選擇器選擇其中的一路輸入給數字鎖相環,數字鎖相環經過鎖相處理后再將之作為PHY芯片的工作時鐘。這樣,本地 PHY芯片的工作頻率就和上游時鐘的頻率達到了同步。圖3為時間戳管理模塊的實現框圖。在PTP中,時間戳由兩部分組成,48bit的秒部分和32bit的納秒部分。PHY芯片的時間計數器為32bit寄存器,計數器的粒度為8納秒,因此計數器的最大計數時間為2~32*8納秒,即34秒+359738368納秒。當PHY芯片時間計數器計滿溢出時,會產生一個脈沖輸出給FPGA,FPGA對這以脈沖進行計數(即FPGA的計數器的計數粒度為34秒+359738368納秒),從而形成完整的硬件時間戳。圖4為PHY芯片內部時間和FPGA維護時間可能出現的一致性問題示意圖。PTP報文到來的時候,PHY芯片內部時間部分被鎖存到了特定的寄存器中,但是對應的FPGA維護的時間部分并未鎖存,時間是在流動的,這樣會導致CPU讀取FPGA維護部分的時間的時候, 有可能已經被更新了,而不是PTP報文到達時刻時對應的FPGA維護部分時間,這樣就會導致FPGA維護時間值差1。圖5為用軟件處理的方法來保證PHY芯片內部時間和FPGA維護時間一致性流程圖。步驟如下步驟501,PTP報文到達,PHY芯片識別其為PTP報文,將當前PHY時間計數器值 Tphy-ptp鎖存到特定寄存器中,PHY時間計數器繼續遞增;步驟502,讀取PHY芯片內部鎖定的時間Tphy-ptp ;步驟503,讀取FPGA維護的當前時間Tfpgal ;步驟504,讀取PHY芯片內部時間計數器的當前值Tphy-cur (非PTP報文到達時刻鎖存值);步驟505,如果Tphy-cur大于Tphy-ptp,則說明PHY計數器值還沒有溢出,因此 FPGA內部的時間還沒有更新,則步驟503中讀取的Tfpgal就是PTP報文到達時刻所對應的 FPGA維護的時間;步驟506,將Tfpgal作為PTP報文到達時刻對應的FPGA內部維護時間,轉步驟 509 ;步驟507,如果Tphy-cur小于Tphy-ptp,則說明PHY計數器值已經有溢出,FPGA內部的時間計數值進行了加1的更新操作,即先前讀取的Tfpgal是無效的,因為不知道讀取的Tfpgal是在PHY計數器值溢出前(FPGA維護時間更新前)讀的還是在PHY計數器值溢出后(FPGA維護時間更新后)讀的,這時需要再次讀取FPGA內部維護時間值Tfpga2 ;步驟508,PTP報文到達時刻對應的FPGA內部維護時間為Tfpga2減1,記做 Tfpga ;步驟509,將Tphy-ptp和Tfpga相加作為PTP報文的硬件時間戳。圖6為多顆PHY芯片時間同步示意圖。當系統中有多顆PHY芯片時,每顆PHY芯片都由一個獨立的時間計數器。在系統啟動后,它們的起始值是有可能是不一樣的,即它們的初始相位是不一致的,這樣會造成從不通端口進入的PTP報文的時間戳的偏差,為了解決這一問題,硬件設計上采用了一種機制來進行多顆PHY芯片的起始相位同步。PHY芯片提供一種預置值功能,即在一個外部脈沖的觸發作用下,可以將一個預先設定的值加載到時間計數器中。這樣,在系統啟動的時候,將所有PHY芯片的預置值設定為 0,然后由FPGA輸出一個觸發脈沖,所有PHY芯片在這一觸發脈沖作用下,同時將預置值加載到計數器當中,這樣,就保證了系統中所有PHY芯片的初始相位是對齊的。在PTP協議的計算過程中,通過由Sync報文和Delay-Req報文產生的四個時間戳計算出主時鐘和從時鐘之間的時間偏差Toffset,以及鏈路延時Tdelay。對于一個具體的鏈路來說,理想情況下雙向的延時是一樣的,但實際情況并非如此,會有一些偏差,但不會太大,且Tdelay基本上不變化,因此對它的濾波采用了均值濾波;主從偏差Toffset反映的是主從時鐘之間的偏差,有一定的波動,因此對其采取了加權濾波的方法距離本次計算的時間越近,權值越大,越遠則越小,這里取本次計算的權值為1/2,前一次為1/4,以此類推。PHY芯片提供了一種機制來調整時間偏差,即通過調整PHY的內部時間計數器值來動態調整主從偏差,但這樣有兩個缺點(1)進行正向調整時(即對PHY計數器值進行加操作),當調整量大于PHY計數器溢出剩余值時,PHY不會產生溢出脈沖,導致FPGA不會進行累加操作,從而導致時間信息丟失。進行負向操作時(即對PHY計數器值進行減操作),當調整量大于PHY計數器值的當前值,導致PHY計數器值反向溢出,這時也不會產生脈沖,導致FPGA值不會減一,從而導致時間誤差。(2)系統中所有PHY需要同步,調整量需要對所有PHY進行,如果系統中PHY比較多,則操作就會經歷一段時間,在調整各顆PHY的時間間隙內進入的PTP數據包的時間戳就會不準確。鑒于上述兩個缺點,本實施例采用了軟件的方法來進行調整,即將調整量用一個軟件變量來表示,每次調整都針對該軟件變量進行,這樣就不會在對PHY計數器值調整時引入時間的信息丟失和錯誤;軟件調整是瞬間完成的,避免了對所有PHY進行操作,這樣同時也避免了調整各顆PHY的時間間隙內引入的誤差。
權利要求
1.一種納秒級精度PTP實現方法,在物理層芯片(PHY)識別PTP報文并記錄其離開或到達的時間戳;在物理層通過同步以太網(SyncE)技術實現頻率同步;其特征在于,通過 PHY芯片和FPGA相結合的方式管理時間戳,采用軟件處理的方法,保證PTP報文到來時刻 PHY芯片內部時間和FPGA維護時間的一致性。
2.根據權利要求1所述的納秒級精度PTP實現方法,其特征在于,采用軟件處理的方法,保證PTP報文到來時刻PHY芯片內部時間和FPGA維護時間的一致性,其步驟是1)讀取PHY芯片維護的PTP報文到達時刻鎖存的計數器值Tphy-ptp;2)讀取FPGA維護的當前時間Tfpgal;3)讀取PHY芯片的計數器當前值Tphy-cur(非PTP報文到達時刻鎖存值);4)如果Tphy-cur大于Tphy-ptp,則2)中讀取的Tfpgal就是PTP報文到達時刻所對應的FPGA維護的時間5)如果Tphy-cur小于Tphy-ptp,則再次讀取FPGA維護的時間計數值Tfpga2,則PTP 報文到達時刻的FPGA維護的時間計數值為Tfpga2-1。
3.根據權利要求1所述的納秒級精度PTP實現方法,其特征在于,物理層芯片識別到達或離開的PTP報文,并將其到達或離開的時刻的時間值鎖存到物理層芯片內部的寄存器中,同時觸發中斷給CPU,CPU在中斷處理程序中讀取該時間戳并交由PTP協議軟件進行計笪弁。
4.根據權利要求1所述的納秒級精度PTP實現方法,其特征在于,物理層芯片通過同步以太網技術從以太網鏈路上提取恢復時鐘,并通過數字鎖相環鎖相后反饋給物理層芯片作為其工作時鐘。
5.根據權利要求1所述的納秒級精度PTP實現方法,其特征在于,物理層芯片的內部時間計數器計滿溢出產生脈沖,FPGA對這一進位脈沖進行計數,物理層芯片內部的時間計數器和FPGA維護的時間計數器結合在一起組成PTP報文的硬件時間戳。
6.根據權利要求1、3或5任何一個所述的納秒級精度PTP實現方法,其特征在于,PTP 報文的時間戳有三部分組成PHY芯片維護的計數器值,FPGA維護的計數器值,軟件變量維護的主從間的時間偏差值。
7.根據權利要求1所述的納秒級精度PTP實現方法,其特征在于,當系統中存在多顆 PHY芯片時,在系統初始化時,FPGA保證同時給所有PHY芯片輸出一同步觸發脈沖,所有PHY 芯片在這一同步脈沖的作用下將內部計數器值清零,使系統中的所有PHY芯片起始相位對齊。
8.根據權利要求3所述的納秒級精度PTP實現方法,其特征在于,在PTP協議軟件計算過程中,對于鏈路延采用均值濾波,對于主從時鐘的時間偏差采用加權濾波。
9.根據權利要求3所述的納秒級精度PTP實現方法,其特征在于,采用將通過PTP協議計算出的主從時鐘的偏差保存到軟件變量中的方法調整時間偏差。
全文摘要
本發明公開一種納秒級精度PTP實現方法,在物理層芯片(PHY)識別PTP報文并記錄其離開或到達的時間戳;在物理層通過同步以太網(SyncE)技術實現頻率同步;通過PHY芯片和FPGA相結合的方式管理時間戳,采用軟件處理的方法,保證PTP報文到來時刻PHY芯片內部時間和FPGA維護時間的一致性。采用本發明的技術方案,可以滿足通信系統當中對時間同步精度的要求,使PTP的同步精度達到納秒級別。
文檔編號H04L29/06GK102195768SQ20111014332
公開日2011年9月21日 申請日期2011年5月30日 優先權日2011年5月30日
發明者冀朝陽 申請人:神州數碼網絡(北京)有限公司