常永亮,黃曉革
(電子科技大學 電子工程學院,四川 成都 610054)
同步是指兩個或兩個以上信號之間,在頻率或相位上保持某種特定關系,即在相對應的有效瞬間,其相位差或頻率差保持在約定的允許范圍之內(nèi)。同步包括以下兩種:頻率同步和時間同步(相位同步)?,F(xiàn)在要做的就是達到時間同步即相位同步。為了解決以太網(wǎng)的定時同步能力不足的問題,NTP曾經(jīng)一直是用于以太網(wǎng)各分布節(jié)點時鐘同步的傳統(tǒng)方法,使用NTP協(xié)議可以使同步精度達到100 ms,提高網(wǎng)絡設備之間的定時同步能力,但是仍然不能滿足網(wǎng)絡通信和測量儀器所需的準確度。
IEEE1588精準時間同步協(xié)議的全稱是<<網(wǎng)絡測量和控制系統(tǒng)的精密時鐘同步協(xié)議標準>>(Standard for a Precision Clock Synchronization Protocol for Network Measurement and Control System)[1],鑒于網(wǎng)絡系統(tǒng)定時同步能力不足的問題,提出了IEEE1588協(xié)議,主要參考以太網(wǎng)來編制,但是不僅僅局限于以太網(wǎng),在RS232總線中也可以實現(xiàn),使分布式通信網(wǎng)絡能夠具有嚴格的定時同步,并且廣泛應用于網(wǎng)絡音頻傳輸系統(tǒng)和工業(yè)自動化系統(tǒng)。
2007年,美國國家半導體推出業(yè)界首款具備IEEE1588精準時間協(xié)議(PTP)硬件支持功能的高精度以太網(wǎng)收發(fā)器芯片DP83640[2],時鐘可以實現(xiàn)高達8 ns的精確度,無論選用何種微控制器,ARM、FPGA或DSP,都可以確保系統(tǒng)設計的靈活性。這款高精度PHYTER收發(fā)器可以確保分布式節(jié)點網(wǎng)絡通信系統(tǒng)能夠按照主時鐘同步。
系統(tǒng)設計框圖如圖1所示。
圖1 系統(tǒng)結構框圖Fig.1 Block diagram of system
TMS320DM642是TI公司推出的一款C6000系列32位定點數(shù)字信號處理器[3],片上帶有豐富的外圍設備和接口,主要由片內(nèi)存儲器、片上外設和CPU 3部分構成。具有完整網(wǎng)絡功能的以太網(wǎng)接口以及64位外部存儲器接口,特別適合于開發(fā)基于以太網(wǎng)的音頻實時傳輸系統(tǒng)。
DP83640芯片內(nèi)置高精度IEEE1588時鐘,與現(xiàn)有的軟件方案或硬件裝置不同,特別之處就是將IEEE1588高精度時間協(xié)議功能設于芯片的物理層內(nèi),因此可以在協(xié)議棧的最底層,靠近網(wǎng)線的位置記錄獲取時間標記,通過硬件執(zhí)行的時間標記功能,并為接受及發(fā)送的信息包印上時間標記,從而實現(xiàn)高達8 ns的精確度。
IEEE1588基本思想是通過硬件和軟件將網(wǎng)絡設備 (客戶機)的內(nèi)時鐘與主控機的主時鐘實現(xiàn)同步,提供同步建立時間小于10 μs的運用,與未執(zhí)行IEEE1588協(xié)議的以太網(wǎng)延遲時間1 000 μs相比,采用(精密時鐘同步)協(xié)議,精度可以達到微秒級,使整個網(wǎng)絡的定時同步指標有顯著地改善。此標準的目的是為精確地把測量與控制系統(tǒng)中分散、獨立運行的時鐘同步起來。
IEEE1588將分散在以太網(wǎng)中的網(wǎng)絡音頻傳輸設備,如集線器、交換機或者路由器等設備,在這些分離節(jié)點上獨立運行的從時鐘同步到一個高精度和準確度的主時鐘上的協(xié)議。通過最佳主時鐘算法,確立主從時鐘。IEEE1588通過主處理器發(fā)送PTP同步報文,與從時鐘交換同步報文,校正從時鐘的時間偏差,從而達到與主時鐘實現(xiàn)高精度同步的目的。
在以太網(wǎng)上實現(xiàn)IEEE1588協(xié)議僅僅需要在原有的網(wǎng)絡環(huán)境中增加時鐘同步報文,這些報文只占用少量的網(wǎng)絡資源,并不需要為時鐘傳遞建立特別的網(wǎng)絡,即只要更新軟件程序,而不用再添加額外的硬件資源。
IEEE1588精準時鐘同步協(xié)議為實現(xiàn)同步定義了四種同步報文和一種管理報文。同步過程可以分為兩個階段:偏移測量階段和延遲測量階段。
圖2 IEEE1588協(xié)議同步過程Fig.2 IEEE1588 protocol synchronization process
1)偏移測量階段:同步報文周期可以根據(jù)需要自行設定,一般設定為2 s。
①主時鐘周期性地讀取當前時間值,根據(jù)IEEE1588協(xié)議規(guī)定,構建Sync同步報文并向從時鐘發(fā)送,此時,主時鐘記錄下報文的精確發(fā)送時間Tm1,從時鐘接收同步報文,并在此時記錄下精確的接收到的時間值Ts1。
②緊接著主時鐘在軟件應用層構建Follow_Up跟隨報文,跟隨報文中嵌有主時鐘發(fā)送Sync同步報文的精確發(fā)送時間Tm1,從時鐘接受跟隨報文。
2)延遲測量階段:在特定網(wǎng)絡環(huán)境、負載變化不大的系統(tǒng)中,延遲測量不需要經(jīng)常頻繁的進行,一般根據(jù)需要可以設定4~60 s測量一次,這樣可以減輕網(wǎng)絡負荷,提高網(wǎng)絡通信質(zhì)量。
①從時鐘在應用層構建Delay-Req延遲請求報文,發(fā)送時記錄下精確的發(fā)送時刻Ts2,主時鐘監(jiān)聽延遲請求報文,當接收到報文時立即記錄下精確的接受時刻Tm2。
②緊接著主時鐘構建Delay-Resp延遲請求響應報文,報文中攜帶有Delay-Req報文精確的接受時刻Tm2,發(fā)送給從時鐘。
這樣從時鐘就得到了4個時間印章值,設定網(wǎng)絡時延為Delay,時鐘偏差為Offset,則有如下式子:
根據(jù)上述式子,可以精確的計算出網(wǎng)絡偏差和延遲時間[4]。
在以太網(wǎng)中,按照TCP/IP協(xié)議模型,IEEE1588規(guī)定:報文封裝在UDP中。Sync同步報文在應用層打包并由UDP傳輸,向下經(jīng)過IP層、數(shù)據(jù)鏈路層的逐層封裝,在以太網(wǎng)的物理層MII接口處,DP83640中的IEEE1588包發(fā)送解析器檢測數(shù)據(jù)包PTP事件消息,精確的捕獲發(fā)送時間印章到DP83640寄存器中,并由軟件通過串行管理接口(SMI)讀取時間印章,從而主時鐘獲得Sync同步報文精確的發(fā)送時間,從時鐘收到Sync同步報文,DP83640中IEEE1588包接受解析器檢測數(shù)據(jù)包PTP時間消息,捕獲接受時間印章以及其它信息,再由軟件通過SMI讀取時間印章。之后主時鐘構建Follow_Up報文,報文中含有Sync同步報文精確的發(fā)送時間,發(fā)送給從時鐘。除此之外,DP83640還可以通過在接受到的數(shù)據(jù)包中插入時間印章并遞送給軟件,這是一種比較簡單的方法傳送數(shù)據(jù)包給軟件而不需要匹配時間印章到正確的數(shù)據(jù)包,從而避免了通過SMI讀取DP83640寄存器中時間印章的必要。
在DP83640中增加了硬件輔助功能,對于Sync同步報文來說,可以采用一步操作,主時鐘在發(fā)送Sync同步報文時,在發(fā)送的時候DP83640在MII處自動嵌入時間印章,發(fā)送給從時鐘,從而避免了軟件讀取時間印章和發(fā)送Follow_Up報文的必要。
在延測量階段,當從時鐘發(fā)送Delay_Req報文時,報文同樣封裝在UDP中,經(jīng)過協(xié)議棧時逐層封裝,到達以太網(wǎng)物理層MII接口處時,發(fā)送時間印章被DP83640包發(fā)送解析器檢測到,存到相應寄存器中,并由軟件通過SMI讀取時間印章。到達主時鐘時,被接收包檢測器檢測到,捕獲時間印章到寄存器中并被軟件讀取,主時鐘同時構建Delay_Resp報文,報文中含有Delay_Req到達主時鐘MII處的精確時間,發(fā)送給從時鐘。
圖3 硬件嵌入DP83640的同步過程Fig.3 DP83640 Hardware embedded in the synchronization process
以太網(wǎng)應用于通信網(wǎng)絡的關鍵技術之一便是要求實現(xiàn)對實時性的保證,以太網(wǎng)自身的CSMA/CD機制以及從物理層傳輸?shù)綉脤拥难訒r不確定,低效率的交換、集線器、路由器的嵌入還有網(wǎng)絡流量的不適當協(xié)調(diào),還有在傳輸層上的誤差檢測以及翻譯障礙,程序運行處理時間不穩(wěn)定,操作系統(tǒng)和網(wǎng)絡協(xié)議棧的延時等。
PTP時鐘同步報文自主時鐘節(jié)點的應用層發(fā)送到從時鐘節(jié)點的應用層,要經(jīng)歷一系列延時,主要包括網(wǎng)絡協(xié)議棧和操作系統(tǒng)延時、網(wǎng)絡通信路徑的延時和網(wǎng)絡交換設備帶來的延時。從網(wǎng)絡協(xié)議棧的頂應用層向下層傳遞同步報文時,可以在如下圖所示的3個位置打上時間戳,在應用層C點標記時間戳,即通常說的SNTP所采取的方法,網(wǎng)絡協(xié)議棧延遲波動,同步精度低;在驅動層B點標記時間戳,會受到程序處理時間響應不確定的影響,同步精度也不高;采用硬件輔助的方式在MII處打上時間戳,并將獲取的時間戳送給軟件應用層,可以獲得極高的同步精度[5]。
圖4 可獲取時間戳的位置Fig.4 The available position of timestamps
每一層運算處理時間不確定導致同步精度差,為了獲得可靠的延時時間,需要盡可能的將獲取時間戳的位置在底層實現(xiàn),本文為了實現(xiàn)高精度亞微妙級同步的需求,采取DP83640芯片硬件輔助的方式在PHY層和MAC層的介質(zhì)無關接口處(MII)標記時間戳,此時將不會有網(wǎng)絡協(xié)議棧和操作系統(tǒng)的延時,而只是從標記時間戳的MII接口處和網(wǎng)線之間的延時,而這種延時是可以測量的,精確不變的。這個延時分為發(fā)送PTP數(shù)據(jù)包是從MII接口到網(wǎng)線之間的延時和接受PTP數(shù)據(jù)包時從網(wǎng)線到MII接口處標記時間戳的延時。
在軟件中實現(xiàn)這樣的功能,計算這個時間并插入到帶有時間戳的數(shù)據(jù)包中修正時間值,對于不同的傳輸模式,修正值不同,如下所示。
當發(fā)送PTP數(shù)據(jù)包時:
100Base-Tx:0 ns
100Base-Fx:0 ns+光纖發(fā)送器發(fā)送延時(常量)
10Base-T:95 ns
當接收PTP數(shù)據(jù)包時:
100Base-Tx:215 ns
100Base-Fx:120 ns+光纖發(fā)送器接收延時(常量)
10Base-T:300 ns
圖5 棧內(nèi)滯留時間Fig.5 Latency time within the stack
測試一個系統(tǒng)達到的同步精度是很困難的,因為不僅僅有一種方法,目前有3種不同的測試方法:軟件測試、PPS信號比較測試和輸出時鐘比較。
軟件測試依賴于PTP協(xié)議棧報告的結果在PC上顯示時間同步的質(zhì)量,軟件結果被PTP算法本身限制,不能糾正發(fā)送路徑和接受路徑的長度差異,再就是軟件報告的錯誤只是之前的時間同步,具有滯后性。
最普遍常用的方法分析時間同步是觀測PPS信號,傳統(tǒng)的測量方法就是用PPS來測量時間同步,這種測量方法的主要缺點是每一秒取樣可能存在錯誤,由于沒有一定的第二次轉型和時鐘同步更新之間的關系,很難得到可靠的結果,測量同步精度誤差較大。還有一個問題就是PPS信號通常是從一個數(shù)字輸出,對于同步結果的產(chǎn)生將增加額外的誤差,這些額外的誤差本不應該在同步測量中的。
最精確的測量時鐘同步的方法是觀測一個輸出時鐘,設定主時鐘和從時鐘在同一個頻率點上產(chǎn)生時鐘輸出信號并在示波器上比較這兩個時鐘信號,雖然在每秒內(nèi)產(chǎn)生了一定數(shù)量的錯誤,但是卻提供了一個更精確的時鐘同步,并且通過模擬輸出可以處理時鐘輸出,不增加額外的同步錯誤[6]。
圖6 同步測試裝置Fig.6 Synchronization test setup
本系統(tǒng)事先確定主從時鐘,主從時鐘之間通過CAT-5網(wǎng)線直接相連,測試時間為1 h左右,同步報文發(fā)送周期可以設定,室溫下測量,主從時鐘選用普通的晶振[7]。測試剛開始一段時間,主從時鐘偏差較大,當系統(tǒng)穩(wěn)定后,當同步間隔設定為0.2 s時,時鐘偏移就可以縮小到了8 ns之內(nèi),達到了預計的效果,能夠滿足實際的需求。
表1 測試結果Tab.1 Test results
本設計主處理器采用TI推出的內(nèi)置MAC功能的DSPC6000系列芯片TMS320DM642,PHY芯片選用美國國家半導體推出的以太網(wǎng)收發(fā)芯片DP83640,這樣做的好處是省卻了兩者之間的MAC芯片;DP83640芯片內(nèi)置高精度IEEE1588同步時鐘,可以在最靠近網(wǎng)線的位置獲取時間標記,通過硬件執(zhí)行時間標記,不用再依靠復雜的FPGA邏輯電路來實現(xiàn)硬件獲取時間標記;總之,本設計初步實現(xiàn)了在大規(guī)模的分布式以太網(wǎng)絡中極大地降低成本,并且降低了電路的復雜性,更易于PCB布線,性價比更高。
[1]IEEE Std.1588-2002,IEEE standard for a precision clock synchronization protocol for networked measurement and control systems[S].2002.
[2]DP83640 Precision PHYTER-IEEE 1588 Precision Time Protocol Transceiver[S].National Semiconductor Corporation,2008.
[3]Texas Instruments.TMS320DM642 Video/Imaging Fixed Point Digital signal Processor[EB/OL](2010-02-08)[2010-07-05].http://focus.ti.com/lit/ds/symlink/tms320dm642.pdf.
[4]戴寶峰,崔少輝,王巖,等.基于IEEE1588協(xié)議的時間戳的生成與分析[J].儀表技術,2007(7):15-17.DAI Bao-feng,CUI Shao-hui,WANG Yan,et al.Implementation and analysis oftime stamping techniques based on IEEE1588[J].Instrumentation Technology, 2007 (7):15-17.
[5]魏豐,孫文杰.IEEE-1588協(xié)議時鐘同步報文的精確時間標記方法研究[J].儀器儀表學報,2009(1):163-165.WEI Feng,SUN Wen-jie.Precise time stamping method for IEEE1588 clock synchronization message[J].Chinese Journal of Scientific Instrument, 2009(1):163-165.
[6]IEEE 1588 Precision Time Protocol Time Synchronization Performance.National Semiconductor Corporation[EB/OL].http://www.national.com/an/AN/AN-1728.pdf.
[7]李二鵬,文開章,汪為偉.基于比時法的晶振頻率測量建模與分析[J].現(xiàn)代電子技術,2010(16):119-121.LI Er-peng,WEN Kai-zhang,WANG Wei-wei.Modeling and analysis of crystal-oscillator frequency based on measuring time[J].Modern Electronics Technique,2010(16):119-121.