胡 慶, 羅孝杰
(成都大學 信息科學與工程學院, 四川 成都 610106)
隨著通信技術的發展及需求,對遠距離通信設備在信息交互時對時鐘同步的精確度提出了更高的要求,以確保收到的信息準確無誤.通信過程中若時鐘未同步,則會導致接收的信息幀字節錯位或接收失敗,從而產生嚴重的后果.時間同步所要解決的就是傳輸時間標準問題,是保證通信系統可靠工作的一項重要技術措施.系統能否有效且可靠工作,很大程度上取決于是否有良好的同步系統[1].現有的時間同步技術主要有:IRIG-B與DCLS技術、NTP技術、1PPS及串行口ASCII字符串技術、PTP技術等[2-4],可以滿足不同精度的時間同步需求.本項目采用1PPS及串行口ASCII字符串技術,用于局內時間傳送,并采用人工補償傳輸延時,精度達到100 ns量級.同時,使用基于微波的站間雙向時間頻率同步方法,在9~28 V DC工作電壓范圍內且兩基站相距超過10 km的情況下,實現兩基站時間同步,且其精度達到±10 ns.本研究重點探討了本項目中基于ZYNQ-7000芯片的遠距離無線時間同步系統的軟件設計與實現部分.
當兩站相距較近且可通視情況下,基于微波的站間雙向時間頻率同步方法是一種較為理想的站間時間頻率同步方法,其同步工作原理如圖1所示.

圖1基于微波的站間雙向時間頻率同步方法原理圖
參與雙向時間頻率傳遞的站A、B依據各自的時鐘,在同一鐘面時刻向對方發送代表時間起始點的1 pps信號脈沖.每個站測量從本地產生1 pps時標信號開始,到收到對方信號且恢復對方發送的1 pps時標信號為止這段時差.站A、B將各自測得的時差信息插入基帶數據中通過反向鏈路相互交換,由數據處理軟件對兩站測量的時差結果求差,可得到站A、B之間的時間差.
假設站A時鐘與站B時鐘之間的鐘差為δt,時基信號自站B發射到站A接收的傳播時延為TBA,自站B發射至站A接收的傳播時延為TAB,則由圖1可得,
TBA+TA=TAB+TB+2δt
(1)
因此,
(2)
式中,TA和TB作為觀測量,可以直接獲得;TBA和TAB為信號傳播路徑上的時延,不能精確測量,只能建立其數學模型.式(2)即為雙向時間同步解算公式.
雙向信號傳播時延的數學模型如式(3)、式(4)所示,
(3)
(4)
由于兩站同步信號的幾何傳輸距離相同,因此可得兩站時差測量公式為,
(5)
當獲取兩站的時間差后,則可方便地求出兩站相對頻率偏差為,
(6)
式(6)中,τ為取樣時間,x(0)為兩站初始時間差,x(τ)為兩站經過取樣時間τ后時間差,fA、fB分別為取樣時間內站A和站B時鐘的平均頻率.由于采用擴頻體制,時差測量的精度非常高,路徑上的誤差項大部分可以相互對消,因此雙向時間頻率傳遞技術可實現高精度的時間與頻率比對.
系統主函數實現結構如圖2所示,主要包括日志打印初始化、內存池初始化、狀態機初始化、平臺初始化、CPU計時器初始化與狀態機流程運行等方面.
程序從main函數入口,首先進行日志輪詢的初始化、內存池的初始化、軟件正常執行所需要的狀態機初始化與平臺初始化(即,針對ZYNQ-7000系列芯片對各種參數進行初始化,包括基本的ZYNQ-7000系列的系統配置初始化、GPIO初始化、IRQ中斷初始化等),然后開始CPU計時器初始化并運行CPU計時器,計時等待20 s后將中斷打開,判斷是否定義WatchDog.正常情況下,程序定義了WatchDog后就需要進行WatchDog的初始化,防止異常而導致死機.若程序異常,則中斷打開,Reboot自動重啟,系統啟動.通常,系統在調試時不會定義WatchDog,目的是方便調試.然后,系統直接進行狀態機流程的工作.

圖2系統主函數結構
系統軟件部分采用C語言編寫.C語言具有簡潔緊湊、靈活方便、運算符豐富、數據結構豐富、代碼量小及運行速度快等優點,尤其在Linux和單片機系統下,可靠性與規范性較強[5].
系統實現的流程為:主、從節點在不同時刻上電,開始時以自己的RTC時間運行,在同一鐘面時刻向對面發送代表時間起始點1 pps信號脈沖,即每秒的秒幀頭,然后由軟件控制可編程邏輯模塊(Field-programming gate array,FPGA)捕獲跟蹤,FPGA將得到的數據上報,軟件進行收集、組幀、處理,對兩節點的時差(雙向路徑延時、鏈路延時、AD9361延時等)進行補償,從而達到兩節點的時間頻率同步.兩節點精同步后,因為兩基站在海上運行且距離是變化的,所以從節點還需要在每秒進行一次微調,確保兩基站通信完整.
整個流程中,時間同步分為粗同步和精同步.粗同步保證兩節點在200 ms內對齊,能發現接收到數據且打印正確.精同步保證兩節點在±10 ns內對齊,通過示波器觀察兩節點脈沖信號距離相差不超過10 ns,且從節點脈沖信號抖動范圍在10 ns左右.
本設計1 s內發送幀排列的步驟為:1 s內5幀交替發送,且3幀為同步,2幀為數據.所以,需要收集3幀(300 bit數據)才能滿足收集到的3幀中至少有完整的2幀數據,且在2幀數據中至少有1幀為同步幀,才能滿足相關的需求.進行同步時,以主機的RTC時間為準,從機的RTC通過調整與主機的RTC時間對齊.
特別注意,本設計在每次代碼編輯完成且上板調試成功后,會使用Git版本管理工具[6]來管理代碼,以便在遇到問題時能盡快恢復到之前的代碼.
主節點狀態機流程圖如圖3所示.在板卡上電后,主機的狀態處于S-INI;當CPU中斷函數上報E-AD-READY后,執行setup-fpga函數;由S-INI狀態跳轉到S-FRAME-1狀態;當捕獲跟蹤完成后,再跟蹤完成中斷上報事件,執行frame-1-process;由S-FRAME-1狀態跳轉到S-FRAME-2狀態,之后跳轉依次如圖3所示.主機調整同步的目的,只是為保證收到從機發來的數據排列正確且對齊,并不判斷收到的數據本身是否正確.

圖3主節點狀態機流程圖
從節點狀態機流程圖如圖4所示,其跳轉與主機基本一致,不同之處在于:從機完成同步之后還需要進行精同步微調,才能達到時間偏差在10 ns左右,或者小于10 ns;精同步微調時的函數是將每幀都做出判斷與處理,而粗同步每次會處理3幀.

圖4 從節點狀態機流程圖
在系統調試時,將FPGA與軟件上板聯調,通過串口或網口用PUTTY終端連接軟件訪問,登錄進板卡,然后運行日志打印軟件,將存好的日志信息打印出來,通過打印信息來確認粗、精同步是否成功.圖5為主節點同步后數據打印情況,圖6為從節點同步后數據打印情況,精度均達到10 ns內同步要求.接著從系統引出導線連接至示波器,此處導線引出的脈沖信號是秒幀頭脈沖信號,主節點引出的脈沖信號基本固定不變.

圖5主節點同步后的輸出數據

圖6從節點同步后的輸出數據
圖7為主從節點同步后秒幀頭最遠的差距,如圖7所示,其值為4.400 ns.圖8為主從節點同步后微調時從節點秒幀頭抖動范圍,從節點脈沖信號在主節點脈沖信號旁,偏差很小,如圖8所示,從節點脈沖信號抖動范圍小于10 ns.

圖7主從節點同步后秒幀頭最遠的差距

圖8主從節點同步后微調時從節點秒幀頭抖動范圍
本研究基于微波的站間雙向時間頻率同步方法實現遠距無線時間同步系統的軟件設計,由軟件控制FPGA捕獲跟蹤,由FPGA將得到的數據上報,由軟件進行收集、組幀與處理,然后對兩節點的時差(雙向路徑延時、鏈路延時與AD9361延時等)進行補償,從而達到兩節點的時間頻率同步,且同步精度可達±10 ns.此遠距無線時間同步系統輸出的定時同步脈沖可供其他需要精確時鐘同步的無線通信設備使用,在實際項目和產品開發中具有一定的參考和實用價值.