<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 電源與新能源 > 設計應用 > 基于FPGA的高精度同步時鐘系統(tǒng)設計

          基于FPGA的高精度同步時鐘系統(tǒng)設計

          作者: 時間:2018-08-30 來源:網(wǎng)絡 收藏

          摘要: 介紹了精密時鐘同步協(xié)議(PTP)的原理。本文精簡了該協(xié)議,設計并實現(xiàn)了一種低成本、高精度的時鐘同步系統(tǒng)方案。該方案中,本地時鐘單元、時鐘協(xié)議模塊、發(fā)送緩沖、接收緩沖以及系統(tǒng)打時標等功能都在中實現(xiàn)。經(jīng)過,該方案能夠實現(xiàn)ns級同步精度。該方案成本低,并且易于擴展,非常適合局域網(wǎng)絡時鐘同步的應用領域。

          本文引用地址:http://www.ex-cimer.com/article/201808/388116.htm

          在很多大型物理實驗和工業(yè)應用中,時鐘同步技術都扮演著舉足輕重的作用。比如在中國四川錦屏暗物質探測實驗中,需要為多個獨立探測裝置提供相應的時間信息,這些探測器包括中心探測器(HpGe)、液氬反符合探測器、實驗室外部宇宙線反符合探測器[1]。又比如在大亞灣中微子實驗中,需要為三個實驗廳的子探測器提供同步時鐘和時間戳,也需要為未來的長基線中微子振蕩實驗提供同步時鐘和時間戳[2]。

          為此,本文基于可編程邏輯器件,設計了一套高精度、低成本、易于擴展的時間戳同步系統(tǒng)。

          1 PTP協(xié)議簡介

          PTP精密時鐘定時協(xié)議又稱為IEEE 1588協(xié)議。它的基本功能是利用基于時間戳的報文通信的方法,使得分布式網(wǎng)絡中的所有的時鐘都與特定的某個時鐘保持精確同步。IEEE 1588協(xié)議可以用軟件實現(xiàn),也可以用專門的硬件實現(xiàn)。很顯然,用硬件實現(xiàn)能達到更高的精度。本文中的同步系統(tǒng)就是基于純硬件實現(xiàn)的。

          IEEE 1588協(xié)議中定義了5種類型的傳輸報文[3]:同步報文(sync)、跟隨報文(follow_up)、延時請求報文(delay_req)、延時響應報文(delay_resp)和管理報文(management)。其中前4種報文主要用于時間戳交換,具體的時間戳交換的過程示意圖如圖1所示。

          圖1 PTP協(xié)議同步過程示意圖

          如圖1所示,時間戳同步過程包括主節(jié)點和從節(jié)點,主節(jié)點和從節(jié)點都利用晶振維持本地時鐘。同步的目的是使從節(jié)點的本地時鐘的時間戳與主節(jié)點本地時鐘的時間戳達到相對同步。未同步時,從節(jié)點相對主節(jié)點有一個時間偏差offset。同步的過程能夠計算出這個偏差。

          主時鐘周期性地向從時鐘發(fā)送同步報文SYNC,這個報文中沒有任何有效數(shù)據(jù),但是當SYNC發(fā)出時,主節(jié)點能夠記錄下來時間戳t1,當從節(jié)點接收到SYNC,從節(jié)點能夠記錄下來時間戳t2。為了讓從節(jié)點也知道t1,稍后主節(jié)點向從節(jié)點發(fā)送跟隨報文FOLLOW_UP,這個報文中包含了t1這個有效數(shù)據(jù)。

          然后,為了計算主節(jié)點到從節(jié)點的延時,在從節(jié)點接收到FOLLOW_UP后一段時間,從節(jié)點向主節(jié)點發(fā)送一個DELAY_REQ報文。和SYNC類似,當DELAY_REQ離開時得到時間戳t3,當DELAY_REQ到達主節(jié)點時,主節(jié)點得到時間戳t4。一段時間后,主節(jié)點再向從節(jié)點發(fā)送DELAY_RESP報文,這個報文中包含了t4,從而從節(jié)點得到了4個時間戳t1~t4。

          有了以上4個時間戳之后,假設主節(jié)點到從節(jié)點與從節(jié)點到主節(jié)點傳輸和網(wǎng)絡延時不變,可以得到傳輸延時和時鐘偏差的計算方法:

          如果PTP主從鏈路對稱,即Dm2s=Ds2m=delay,則:

          由以上分析方法可知,PTP主從節(jié)點鏈路對稱與否會影響offset的計算,從而會影響時間戳的同步精度。

          另外,由于主節(jié)點和從節(jié)點需要用本地晶振維護本地時鐘。而隨著時間的積累,晶振存在頻率漂移,并且不同晶振的固有頻率也會有偏差,這兩個屬性都會影響時鐘同步的精度。

          為了實現(xiàn)高精度時間同步,設計同步系統(tǒng)時應該同時考慮到主從節(jié)點鏈路的對稱性和晶振的特性。

          2 電子學設計

          時鐘同步系統(tǒng)的整體結構設計如圖2所示。

          圖2 時鐘同步系統(tǒng)的硬件結構圖

          本方案中主節(jié)點和從節(jié)點使用同一塊硬件電路,在設計的時候,硬件電路板上設計了一個跳線器,可以選擇一塊硬件電路是主節(jié)點或者從節(jié)點。為了保證主從節(jié)點的鏈路對稱, PCB電路板時鐘收發(fā)路徑以及PTP報文收發(fā)路徑的長度都應該用蛇形線設計來保證長度一致。另外,為了消除晶振的頻率漂移以及頻率偏差帶來的影響,本方案中從節(jié)點不使用本地晶振,而是直接使用主節(jié)點傳輸來時鐘信號作為時間戳的時鐘,也就是說主節(jié)點和從節(jié)點使用了同源時鐘。

          雖然主從節(jié)點使用的本地clock是同源的,但是由于clock的傳輸路徑的差異,主從節(jié)點的clock是有相位差異的。這個相位差如果不考慮在設計方案中的話,會嚴重影響整個時鐘系統(tǒng)能夠實現(xiàn)的同步精度。如圖3所示,如果系統(tǒng)中沒有考慮主從節(jié)點的本地clock的相位差,也就是圖中phase,那時鐘系統(tǒng)所能達到的同步精度最好也就是相位差的值。假設,主從節(jié)點的周期T為100 ns,主從節(jié)點的相位差為60 ns,那說明同步系統(tǒng)所能達到的最高精度為60 ns。

          圖3 主從節(jié)點時鐘相位差測量的重要性示意圖

          為了進一步提高時間戳同步的精度,必須設計相位測量模塊,消除主從時鐘相位差對時間戳的同步精度帶來的影響。所以,主節(jié)點中包括了相位鑒別芯片以及ADC芯片,用來精確測量主從節(jié)點時間戳的時鐘相位差。

          有了這個相位差測量模塊,就真的可以消除主從節(jié)點時間戳的時鐘相位差帶來的影響嗎?答案是肯定的。圖4為主從節(jié)點時鐘傳播示意圖,AD8302即為本文中所用的相位鑒別芯片。

          圖4 主從節(jié)點時鐘傳播示意圖

          我們已經(jīng)知道,為了使從節(jié)點與主節(jié)點的時間戳實現(xiàn)精確同步,最直接的方法就是算出盡量精確的offset值,也就是要得出盡量精確的t1~t4的值。

          圖4中,Clk1為主節(jié)點晶振時鐘,Clk2為從節(jié)點從主節(jié)點接收到的時鐘,由于有一段長的傳播路徑,因而Clk2相對Clk1會有一個相位差。為了在主節(jié)點測量相位差,Clk3是從節(jié)點將Clk2直接發(fā)送到主節(jié)點而得到的時鐘,因而Clk3相對于Clk2又會有一個相位差。具體Clk1~Clk3的示意圖如圖5所示。

          圖5 主從節(jié)點時鐘關系圖

          對于時間戳t1而言,t1指的是SYNC包從主節(jié)點發(fā)出的時刻,觸發(fā)時鐘為Clk1,而時間戳時鐘是主節(jié)點的系統(tǒng)時鐘Clk1,因而t1是精確的。對于時間戳t2而言,t2指的是SYNC包到達從節(jié)點的時刻,觸發(fā)時鐘為Clk2,而時間戳時鐘是從節(jié)點的系統(tǒng)時鐘Clk2,因而t2也是精確的。對于時間戳t3而言,t3指的是DELAY_REQ包從從節(jié)點觸發(fā)出的時刻,觸發(fā)時鐘為Clk2,而時間戳時鐘為從節(jié)點的系統(tǒng)時鐘Clk2,因而t3也是精確的。對于時間戳t4而言,t4指的是DELAY_REQ包到達主節(jié)點時的時刻,觸發(fā)時鐘為Clk3,而時間戳時鐘為主節(jié)點的系統(tǒng)時鐘Clk1,因而t4不是精確的,是有偏差的。由圖5的時鐘關系圖可知,精確的t4p應該在t4之前:

          可見,相位差測量模塊在整個時間戳同步方案中取到了舉足輕重的作用。

          3 固件程序設計

          3.1 主節(jié)點固件設計

          主節(jié)點的固件結構框圖如圖6所示,A/D控制模塊和相位測量模塊是用來控制幅相鑒別芯片和ADC芯片。發(fā)送緩沖的作用是將主節(jié)點時鐘同步協(xié)議中的通信報文以曼徹斯特編碼方式發(fā)送出去,接收緩沖的作用是從接收路徑中解碼出相應的通信報文。本地時鐘模塊的作用就是維護一個本地時鐘。主節(jié)點時鐘同步協(xié)議的主要作用是控制報文的發(fā)送和接收。

          圖6 主節(jié)點固件結構框圖

          圖7為主節(jié)點時鐘同步協(xié)議模塊的狀態(tài)機轉換圖。

          圖7 主節(jié)點同步協(xié)議模塊的狀態(tài)機轉換圖

          idle狀態(tài)下,當檢測到pps信號的上升沿,則開始整個同步周期。首先,開始ADC的讀取操作,當?shù)鹊紸D_ready=’1’,則說明ADC的數(shù)據(jù)已經(jīng)準備好,然后進行讀取保存即可。然后,進入到sync狀態(tài),這個狀態(tài)下,主節(jié)點會向從節(jié)點發(fā)送SYNC同步包,之后模塊進入sync_wait狀態(tài)。等一段固定的時間之后,模塊進入follow狀態(tài),在這個狀態(tài)下,主節(jié)點會向從節(jié)點發(fā)送FOLLOW_UP同步包。之后模塊進入after_follow_wait,等待一段固定的時間之后,模塊進入delay_req_pre,這個狀態(tài)下,主節(jié)點會通知從節(jié)點可以發(fā)DELAY_REQ包了。之后,模塊等待DELAY_REQ包,如果很長時間都沒有等到DELAY_REQ包,即等待超時,則模塊返回idle狀態(tài);如果接收到了DELAY_REQ包,主節(jié)點就向從節(jié)點發(fā)送DELAY_RESP。最后,等一段時間后,模塊返回到idle狀態(tài)。

          3.2 從節(jié)點固件設計

          從節(jié)點固件的結構框圖如圖8所示,相位部分計算模塊用來計算出前文說到的phase值,offset計算模塊的作用是用t1~t4和phase值計算出精確的offset值。從節(jié)點時鐘同步協(xié)議的主要作用是控制報文的發(fā)送和接收和更新本地時鐘。

          圖8 從節(jié)點固件結構框圖

          圖9為從節(jié)點時鐘同步協(xié)議模塊的狀態(tài)機轉換圖。

          圖9 從節(jié)點時鐘同步協(xié)議模塊的狀態(tài)機轉換圖

          當處在idle狀態(tài)時,從節(jié)點監(jiān)測接收到的數(shù)據(jù)流,直到監(jiān)測到sync包后立即進入wait_follow狀態(tài)。在wait_follow狀態(tài),從節(jié)點同樣監(jiān)測接收的數(shù)據(jù)流,直到監(jiān)測到follow_up包后,立即進入wait_pre狀態(tài),如果在這個狀態(tài)很久都沒有接收到follow_up包,將等待超時返回到idle狀態(tài)。同樣,wait_pre狀態(tài)下,直到監(jiān)測到delay_req_pre包后,跳入delay_req狀態(tài);如果等待超時,則返回idle狀態(tài)。delay_req狀態(tài)下,從節(jié)點向主節(jié)點發(fā)送delay_req包后立即進入wait_delay_resp狀態(tài)。在wait_delay_resp狀態(tài)下,監(jiān)測到delay_resp包后,從節(jié)點立即進入phase_cacul狀態(tài);如果長時間沒有監(jiān)測到delay_resp包,則返回idle狀態(tài)。在phase_cacul狀態(tài)下,開始相位差計算模塊后,立即進入wait_phase_result狀態(tài)。在wait_phase_result狀態(tài)下,等到相位測量結果準備好后,進入delay_cacul狀態(tài);如果長時間,相位結果都沒有準備好,或者相位結果錯誤,則返回idle狀態(tài)。在delay_cacul狀態(tài)下,開啟offset計算模塊后,進入wait_result狀態(tài)。在wait_result狀態(tài)下,當檢測到偏移測量結果準備好信號后,進入offset_update狀態(tài);否則返回到idle狀態(tài)。在offset_update狀態(tài)下,從節(jié)點時鐘同步協(xié)議向本地時鐘模塊發(fā)送偏移校正信號,從而更新從節(jié)點的本地時鐘,然后進入idle狀態(tài)。

          4 結果

          實際環(huán)境包括一個主節(jié)點和一個從節(jié)點,之間用光纖連接。示波器用來觀察主節(jié)點和從節(jié)點輸出的pps信號。由于主從節(jié)點的時鐘相位不一致,示波器觀察到的就是這個相位差。pps上升沿到來時,主從節(jié)點時間戳通過串口模塊輸出給PC機。通過對比示波器測得的主從相位差以及pps上升沿主從時間戳的差值,就可以得出真實的時間戳同步精度。

          本次測試使用了三種不同長度(3 m、6 m、5.15 m)的光纖,然后通過觀察在不同長度光纖下的實驗結果,從而可以判斷時鐘同步系統(tǒng)所能達到的精度。主從節(jié)點相位差直方圖以及相應的時間戳的差值直方圖略——編者注。

          由這三種不同長度光纖所得出的結果來看,本文實現(xiàn)的同步時鐘系統(tǒng)的時間戳同步精度可達1 ns。

          結語

          本方案實現(xiàn)的時鐘同步系統(tǒng),以IEEE 1588協(xié)議中基于時間戳的報文通信為基本原理,在純硬件電路()中實現(xiàn)。通過在主節(jié)點添加了相位差測試模塊,消除了主從節(jié)點相位不同的影響,最后實現(xiàn)的時間戳同步精度高達1ns。

          本文設計出來的時鐘同步系統(tǒng)所需成本低,同步精度非常高,非常適合應用在需要高精度時間戳的場合。



          關鍵詞: 測試 FPGA

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();