王 旭,陳 曄,2,鄭 賓,2
(1.中北大學(xué) 電氣與控制工程學(xué)院,太原 030051;2.中北大學(xué) 電子測(cè)試技術(shù)國家重點(diǎn)實(shí)驗(yàn)室,太原 030051)
隨著測(cè)試技術(shù)的發(fā)展,單一獨(dú)立測(cè)試設(shè)備已不能滿足現(xiàn)代測(cè)試要求,測(cè)試任務(wù)大多需要將不同測(cè)試設(shè)備連接起來構(gòu)成分布式測(cè)試系統(tǒng)才能完成。而對(duì)于分布式測(cè)試系統(tǒng)來說,時(shí)間同步是保證數(shù)據(jù)有效的重要前提。若各測(cè)試節(jié)點(diǎn)或測(cè)試子系統(tǒng)的時(shí)間同步精度不足,即使得到了測(cè)試數(shù)據(jù),也無法對(duì)測(cè)試結(jié)果(包括速度,壓力,加速度等)進(jìn)行準(zhǔn)確的分析。國內(nèi)外許多專家學(xué)者針對(duì)此問題進(jìn)行了大量研究和探索,如:文獻(xiàn)[2,5]研究了通過軟件實(shí)現(xiàn)PTP時(shí)鐘同步的方法。文獻(xiàn)[3,8]等進(jìn)行了基于Cortex-A8的LXI觸發(fā)盒的軟件和硬件開發(fā)。目前,該研究方向存在的不足和問題在于:對(duì)于分布式測(cè)試系統(tǒng)時(shí)鐘同步和同步觸發(fā)技術(shù)而言,仍停留在理論階段,未能有效的將理論應(yīng)用于實(shí)際測(cè)試系統(tǒng),并且上述提到的LXI 觸發(fā)盒技術(shù)在測(cè)試系統(tǒng)中并不通用,測(cè)試系統(tǒng)可以由不同的測(cè)試儀器構(gòu)成,需要具有不同的觸發(fā)模式和功能。針對(duì)上述存在的問題,本文采用PTP精密時(shí)間協(xié)議通過基于ARM(STM32F407)設(shè)計(jì)時(shí)鐘同步與觸發(fā)單元對(duì)該分布式測(cè)試系統(tǒng)進(jìn)行同步。
原分布式測(cè)試系統(tǒng)由若干個(gè)測(cè)試節(jié)點(diǎn)(每個(gè)測(cè)試節(jié)點(diǎn)即對(duì)應(yīng)一個(gè)PXI儀器)組成,每相鄰的兩個(gè)測(cè)試節(jié)點(diǎn)之間相隔一定距離。原有測(cè)試系統(tǒng)的結(jié)構(gòu)框圖如圖1。PXI儀器可以通過背板總線觸發(fā)實(shí)現(xiàn)同步測(cè)試,但是由于PXI 設(shè)備之間的時(shí)鐘同步精度不足,且觸發(fā)精度隨觸發(fā)線長(zhǎng)度的增加而降低,導(dǎo)致觸發(fā)信號(hào)的精度無法滿足高精度同步測(cè)試的需求,于是通過在原有測(cè)試系統(tǒng)結(jié)構(gòu)的基礎(chǔ)上改進(jìn),設(shè)計(jì)了基于ARM的時(shí)鐘同步與觸發(fā)單元為每個(gè)測(cè)試節(jié)點(diǎn)(每個(gè)測(cè)試節(jié)點(diǎn)對(duì)應(yīng)一個(gè)通用測(cè)試儀器)提供高精度的時(shí)間基準(zhǔn)信號(hào),從而滿足同步測(cè)試的需求。改進(jìn)后的分布式測(cè)試系統(tǒng)整體架構(gòu)框圖如圖2。
圖1 原分布式測(cè)試系統(tǒng)結(jié)構(gòu)框圖
PTP協(xié)議(Precision Time Protocol),又稱IEEE 1588協(xié)議,2002年由IEEE組織發(fā)布,并于2008年發(fā)布IEEE 1588V2標(biāo)準(zhǔn)。IEEE 1588實(shí)現(xiàn)時(shí)鐘同步過程為[1]:
1)主時(shí)鐘每隔一定時(shí)間(Sync_Interval)向從時(shí)鐘發(fā)送一條Sync(同步)報(bào)文,主節(jié)點(diǎn)記錄發(fā)送時(shí)間戳t1,但是t1不隨Sync一起發(fā)送,從時(shí)鐘在接收到Sync時(shí)記錄下時(shí)間戳t2。
2)主時(shí)鐘向從時(shí)鐘發(fā)送一條Follow_up(跟隨)報(bào)文,該報(bào)文內(nèi)部含有(1)中發(fā)送Sync時(shí)記錄的t1時(shí)間戳。
3)從時(shí)鐘向主時(shí)鐘發(fā)送Delay_Request(延遲請(qǐng)求)報(bào)文,從時(shí)鐘端會(huì)記錄報(bào)文發(fā)出時(shí)的時(shí)間戳t3。
4)主時(shí)鐘在接收到延遲請(qǐng)求報(bào)文后記錄當(dāng)前時(shí)間戳t4,并且返回給從時(shí)鐘Delay_Response(延遲請(qǐng)求響應(yīng)報(bào)文),該報(bào)文內(nèi)部包含時(shí)間戳t4,從時(shí)鐘收到此報(bào)文后,利用得到的t1,t2,t3,t4計(jì)算得到它和主時(shí)鐘的時(shí)間延遲[1],至此,一個(gè)同步周期結(jié)束。具體同步流程原理簡(jiǎn)圖如圖3。
圖2 改進(jìn)后分布式測(cè)試系統(tǒng)整體架構(gòu)框圖
圖3 主從時(shí)鐘同步流程原理簡(jiǎn)圖
同步計(jì)算過程包括延遲值(Delay)計(jì)算和偏移值(Offset)計(jì)算,延遲值為主從節(jié)點(diǎn)之間的報(bào)文傳輸延遲的平均值,偏移值為主從節(jié)點(diǎn)之間的時(shí)間偏差[2]。計(jì)算公式如下:
(1)
(2)
根據(jù)式(2)即可得到主從時(shí)鐘偏差。
根據(jù)IEEE 1588同步過程可知,決定時(shí)鐘同步精度的關(guān)鍵在于時(shí)間戳的獲取?,F(xiàn)有的獲取時(shí)間戳的方式有以下3種:
1)在網(wǎng)絡(luò)層獲取,這種方式是通過設(shè)置Linux內(nèi)核中的時(shí)間選項(xiàng)為SO_TIMESTAMPNS從而得到報(bào)文到達(dá)網(wǎng)絡(luò)驅(qū)動(dòng)層的精確時(shí)間,但實(shí)現(xiàn)的同步精度較差(最高達(dá)到10微秒級(jí))。
2)在數(shù)據(jù)鏈路層(MAC)通過硬件獲取時(shí)間戳,該種方式需要借助支持PTP協(xié)議的MCU芯片完成,例如:通過STM32F407 ARM芯片實(shí)現(xiàn)亞微秒量級(jí)的同步,該種設(shè)計(jì)優(yōu)點(diǎn)是通用性較強(qiáng)。
3)在PHY物理層獲取,利用支持PTP協(xié)議的PHY芯片當(dāng)接收到PTP事件報(bào)文時(shí)芯片會(huì)自動(dòng)對(duì)時(shí)間戳進(jìn)行標(biāo)記[3]。該種方式獲取的時(shí)間戳精度理論上可以達(dá)到納秒級(jí),但該種設(shè)計(jì)難度較大,并且增加設(shè)計(jì)成本。本文的設(shè)計(jì)采用基于在MAC層上獲取時(shí)間戳。
本設(shè)計(jì)基于對(duì)ARM的軟硬件設(shè)計(jì)實(shí)現(xiàn)主從節(jié)點(diǎn)之間的同步。
硬件系統(tǒng)的設(shè)計(jì)主要分為以下幾個(gè)模塊:電源/復(fù)位模塊,串口模塊,JTAG模塊,以太網(wǎng)通信模塊等。
而以太網(wǎng)通信模塊為整個(gè)硬件系統(tǒng)設(shè)計(jì)的核心,采用STM32F407 ARM芯片+LAN8720(普通以太網(wǎng)PHY芯片)組合實(shí)現(xiàn)以太網(wǎng)應(yīng)用。由于STM32F407芯片內(nèi)部集成MAC,則LAN8720(PHY芯片)可以直接和MCU相連。兩者之間通過RMII(簡(jiǎn)化媒體獨(dú)立接口)進(jìn)行通信。接口設(shè)計(jì)電路簡(jiǎn)圖如圖4。
圖4 以太網(wǎng)硬件接口設(shè)計(jì)電路簡(jiǎn)圖
下面簡(jiǎn)要介紹下STM32的PTP特性。其內(nèi)部集成的MAC能實(shí)現(xiàn)時(shí)間戳的獲取功能,支持發(fā)送幀和接受幀時(shí)間戳,主要特性包括以下兩個(gè)方面:
1)更新PTP時(shí)間。STM32使用 PTP 輸入?yún)⒖紩r(shí)鐘 HCLK 更新64位PTP時(shí)間[4]。
2)捕獲時(shí)間戳。當(dāng)對(duì)STM32使能IEEE1588功能時(shí),MAC通過識(shí)別報(bào)文的起始幀界定符SFD從而捕獲當(dāng)前時(shí)間戳,以太網(wǎng)硬件驅(qū)動(dòng)程序?qū)?duì)報(bào)頭進(jìn)行解析,以區(qū)分出普通報(bào)文和PTP事件報(bào)文[5]。
2.2.1系統(tǒng)軟件架構(gòu)
系統(tǒng)軟件架構(gòu)如圖5所示。整個(gè)軟件設(shè)計(jì)的關(guān)鍵是PTP應(yīng)用層軟件(PTP協(xié)議的實(shí)現(xiàn)),通過交換PTP報(bào)文信息實(shí)現(xiàn),而PTP協(xié)議報(bào)文使用UDP協(xié)議進(jìn)行封裝和傳輸。UDP協(xié)議的實(shí)現(xiàn)需要TCP/IP協(xié)議棧。所以首先需要進(jìn)行網(wǎng)絡(luò)協(xié)議棧的移植。本設(shè)計(jì)選用LwIP協(xié)議棧進(jìn)行移植,以實(shí)現(xiàn)數(shù)據(jù)包傳輸功能。CMSIS-RTOS實(shí)時(shí)操作系統(tǒng)負(fù)責(zé)任務(wù)的切換和調(diào)度。標(biāo)準(zhǔn)外設(shè)驅(qū)動(dòng)提供GPIO、定時(shí)器和串口等基本外設(shè)的驅(qū)動(dòng),以太網(wǎng)驅(qū)動(dòng)提供以太網(wǎng)硬件設(shè)備的驅(qū)動(dòng)。以太網(wǎng)驅(qū)動(dòng)程序采用ST公司提供的Eth_Driver庫文件。標(biāo)準(zhǔn)外設(shè)驅(qū)動(dòng)程序使用ST提供的Stm_std庫文件[6]。
圖5 系統(tǒng)軟件架構(gòu)
2.2.2CMSIS-RTOS實(shí)時(shí)操作系統(tǒng)移植和LwIP協(xié)議棧移植
CMSIS-RTOS針對(duì)RTX實(shí)時(shí)操作系統(tǒng)的內(nèi)核進(jìn)行封裝,并演變?yōu)镵eil的一個(gè)組件,因此使用起來很簡(jiǎn)便,具體移植工作主要分為兩部分。
1)添加內(nèi)核文件:包含文件RTX_HAL和RTX_Kernel,分別用于設(shè)置RTX接口和內(nèi)核。
2)配置RTX:通過RTX_Conf_CM.c對(duì)RTX進(jìn)行配置,本設(shè)計(jì)根據(jù)所使用的主控芯片特性進(jìn)行設(shè)置,配置操作系統(tǒng)主頻為168 MHz,設(shè)置系統(tǒng)時(shí)鐘節(jié)拍周期為1 000 μs,同時(shí)系統(tǒng)使能特權(quán)級(jí)模式[7]。
LwIP協(xié)議棧是一種輕型TCP/IP協(xié)議棧。其源碼內(nèi)容包含3部分:doc(協(xié)議棧說明文檔),src(socket接口函數(shù),LwIP內(nèi)核源碼以及相關(guān)的頭文件),test(LwIP的測(cè)試代碼)。而移植協(xié)議棧時(shí),需要修改系統(tǒng)文件以適配操作系統(tǒng)。
2.2.3以太網(wǎng)硬件驅(qū)動(dòng)實(shí)現(xiàn)
以太網(wǎng)硬件驅(qū)動(dòng)函數(shù)具體需要實(shí)現(xiàn)的功能及函數(shù)如下:
1)網(wǎng)卡初始化函數(shù):low_level_init(),該函數(shù)實(shí)現(xiàn)對(duì)網(wǎng)卡結(jié)構(gòu)體netif中相關(guān)字段的初始化操作,以建立穩(wěn)定的物理鏈路并建立接收線程[8]。
2)網(wǎng)絡(luò)數(shù)據(jù)發(fā)送函數(shù)low_level_output(),該函數(shù)的作用是將LwIP協(xié)議棧按網(wǎng)絡(luò)報(bào)文要求封裝好的數(shù)據(jù)報(bào)文通過網(wǎng)卡發(fā)送出去。
3)數(shù)據(jù)提取函數(shù)low_level_input(),該函數(shù)的作用是從網(wǎng)卡中提取接收到的網(wǎng)絡(luò)數(shù)據(jù),并將數(shù)據(jù)復(fù)制封裝在pbuf中,并返回pbuf結(jié)構(gòu)體指針。
4)PTP時(shí)鐘偏差函數(shù)ETH_PTPTime_UpdateOffset(),該函數(shù)實(shí)現(xiàn)從時(shí)鐘對(duì)主時(shí)鐘時(shí)鐘偏差的調(diào)節(jié)。
2.2.4基于PTP協(xié)議的時(shí)鐘同步應(yīng)用層軟件設(shè)計(jì)
1)時(shí)鐘同步軟件架構(gòu)。時(shí)鐘同步軟件的總體框架如圖6所示。來自其他PTP時(shí)鐘的報(bào)文通過UDP接口傳遞給PTP協(xié)議引擎進(jìn)行處理。PTP協(xié)議引擎將在設(shè)定端口接收和發(fā)送報(bào)文。MAC在接收到報(bào)文后對(duì)數(shù)據(jù)包進(jìn)行解封,以提取有用信息。通過運(yùn)行最佳主時(shí)鐘算法決定本地時(shí)鐘狀態(tài)[9]。若本地時(shí)鐘為主時(shí)鐘,則會(huì)向局域網(wǎng)內(nèi)發(fā)送Announce報(bào)文,和其他的外部時(shí)鐘數(shù)據(jù)集進(jìn)行比較。若本地時(shí)鐘為從時(shí)鐘,則通過運(yùn)行本地時(shí)鐘調(diào)節(jié)算法,最終達(dá)到和主時(shí)鐘之間的同步。
圖6 時(shí)鐘同步軟件總體框架
2)最佳主時(shí)鐘算法。最佳主時(shí)鐘算法由bmc.c實(shí)現(xiàn)。它是判別同一PTP域內(nèi)所有時(shí)鐘主從等級(jí)的一種算法。通過廣播Announce報(bào)文,比較本地時(shí)鐘和外部時(shí)鐘的數(shù)據(jù)集,從而得出局域網(wǎng)內(nèi)的主時(shí)鐘,并且在網(wǎng)絡(luò)發(fā)生變化時(shí),該算法能夠自動(dòng)運(yùn)行,并及時(shí)更新PTP域內(nèi)的主時(shí)鐘,使其他從時(shí)鐘與主時(shí)鐘實(shí)現(xiàn)同步。
3)IEEE 1588協(xié)議引擎。IEEE 1588協(xié)議引擎主要由protocol.c實(shí)現(xiàn)。該代碼主要運(yùn)行PTP協(xié)議狀態(tài)機(jī),完成協(xié)議端口狀態(tài)之間的正確轉(zhuǎn)換,核心函數(shù)為protocol()[10]。
PTP協(xié)議狀態(tài)機(jī)的運(yùn)行過程:首先各個(gè)時(shí)鐘端口上電后進(jìn)行初始化,然后同一PTP域內(nèi)的時(shí)鐘運(yùn)行BMC算法,程序根據(jù)運(yùn)行結(jié)果(端口狀態(tài))執(zhí)行相關(guān)操作。
4)時(shí)間戳獲取。PTP協(xié)議的關(guān)鍵在于時(shí)間戳的獲取。STM32F407的MAC支持以太網(wǎng)幀時(shí)間戳,每個(gè)幀在發(fā)送或接收狀態(tài)下都會(huì)對(duì)應(yīng)32位秒值時(shí)間戳和32位納秒值時(shí)間戳[11]。
5)IEEE1588系統(tǒng)時(shí)間校準(zhǔn)。IEEE1588系統(tǒng)時(shí)間校準(zhǔn)主要通過粗調(diào)和精調(diào)兩種方式進(jìn)行調(diào)節(jié)。粗調(diào)即把初始值或時(shí)間偏移值寫入時(shí)間戳更新寄存器[12]。校準(zhǔn)時(shí)通過將計(jì)算得到的offset值寫入時(shí)間戳更新寄存器,然后根據(jù)偏移量的正負(fù)進(jìn)而對(duì)系統(tǒng)時(shí)間進(jìn)行加減。使用精調(diào)即調(diào)節(jié)從時(shí)鐘的頻率,消除由于頻率漂移帶來的時(shí)鐘抖動(dòng),計(jì)算并校準(zhǔn)從時(shí)鐘頻率漂移的具體算法如下[13]:
① 在MSTime(n)時(shí)刻,主時(shí)鐘向從時(shí)鐘發(fā)送Sync報(bào)文,從時(shí)鐘在本地時(shí)鐘MSTime(n)時(shí)刻接收到該報(bào)文,假設(shè)主時(shí)鐘到從時(shí)鐘之間的網(wǎng)絡(luò)鏈路延遲為Delay(n),則主時(shí)鐘對(duì)應(yīng)從時(shí)鐘接收Sync報(bào)文的時(shí)間為
MCTime(n)=MSTime(n)+Delay(n)
(3)
② 當(dāng)前同步周期的主時(shí)鐘計(jì)數(shù)數(shù)目為
MCount(n)=MCTime(n)-MCTime(n-1)
(4)
③ 當(dāng)前同步周期的從時(shí)鐘計(jì)數(shù)數(shù)目為
SCount(n)=SCTime(n)-SCTime(n-1)
(5)
④ 當(dāng)前同步周期的主從時(shí)鐘計(jì)數(shù)差值的計(jì)算公式如下:
ClockDiffCount(n)=MCount(n)-SCount(n)
(6)
⑤ 從時(shí)鐘的分頻系數(shù)FreqScaleFactor(n)的計(jì)算公式如下:
(7)
通過之前設(shè)定主時(shí)鐘時(shí)間戳加數(shù)寄存器的值,根據(jù)式(7),可以計(jì)算出從時(shí)鐘時(shí)間戳加數(shù)寄存器的值。該算法在粗調(diào)的基礎(chǔ)上,進(jìn)一步減小主從時(shí)鐘偏差。
由于在分布式測(cè)試系統(tǒng)中,各被測(cè)物理量的測(cè)試及采集時(shí)間不同步,因此各測(cè)試單元的觸發(fā)信號(hào)的精確性顯得尤為重要。在上述實(shí)現(xiàn)時(shí)鐘同步的基礎(chǔ)上通過編寫上位機(jī)軟件,在計(jì)算機(jī)上運(yùn)行控制管理功能客戶端軟件,獲取時(shí)鐘單元的狀態(tài)信息并對(duì)時(shí)鐘單元的觸發(fā)功能進(jìn)行設(shè)置。本設(shè)計(jì)實(shí)現(xiàn)外部觸發(fā)捕獲,延時(shí)觸發(fā)輸出,定時(shí)觸發(fā)輸出功能。
外部觸發(fā)信號(hào)捕獲關(guān)鍵在于對(duì)脈沖寬度的測(cè)量以排除其他信號(hào)誤觸發(fā),并提供外部觸發(fā)信號(hào)抵達(dá)時(shí)準(zhǔn)確的時(shí)間戳,以滿足將分布式測(cè)試設(shè)備采集數(shù)據(jù)相互關(guān)聯(lián)的需求[14]。
對(duì)應(yīng)的軟件設(shè)計(jì)流程如下:使能外部觸發(fā)捕獲功能后,對(duì)應(yīng)的輸入信號(hào)通道開始檢測(cè)觸發(fā)信號(hào)的上升沿,檢測(cè)到上升沿則獲取此時(shí)的PTP時(shí)間戳external_timestamp,啟動(dòng)計(jì)數(shù)器對(duì)脈沖信號(hào)寬度進(jìn)行測(cè)量,當(dāng)檢測(cè)到觸發(fā)信號(hào)的下降沿時(shí),則計(jì)數(shù)器停止工作。通過計(jì)算脈沖寬度,判斷信號(hào)是否有效。若返回值為TRUE,則將external_timestamp賦值給valid_timestamp,并保存供上位機(jī)調(diào)取,否則直接丟棄,繼續(xù)檢測(cè)觸發(fā)信號(hào)。
該延時(shí)觸發(fā)功能需在一個(gè)激勵(lì)信號(hào)的觸發(fā)下啟動(dòng),使用同步后的PTP時(shí)間可以準(zhǔn)確實(shí)現(xiàn)延時(shí)觸發(fā)輸出。
設(shè)計(jì)流程如下:設(shè)置延時(shí)觸發(fā)時(shí)間后,新建PTP時(shí)鐘讀取線程,然后在輸入通道檢測(cè)觸發(fā)信號(hào),當(dāng)檢測(cè)到觸發(fā)信號(hào)之后,PTP時(shí)鐘讀取線程獲取當(dāng)前PTP時(shí)間PTP_timestamp,根據(jù)設(shè)置的延時(shí)觸發(fā)時(shí)間計(jì)算預(yù)定觸發(fā)時(shí)間trigger_time,到達(dá)觸發(fā)時(shí)間時(shí),輸出觸發(fā)信號(hào)。
定時(shí)觸發(fā)設(shè)計(jì)的目的是用于實(shí)現(xiàn)在某一特定時(shí)刻同時(shí)輸出脈沖信號(hào)使測(cè)試節(jié)點(diǎn)內(nèi)的測(cè)試設(shè)備實(shí)現(xiàn)同步測(cè)試。
設(shè)計(jì)流程如下:首先設(shè)置觸發(fā)時(shí)間,然后新建PTP時(shí)鐘讀取線程,判斷是否到達(dá)預(yù)設(shè)置的觸發(fā)時(shí)間,若達(dá)到觸發(fā)時(shí)間,則輸出觸發(fā)信號(hào)并kill當(dāng)前進(jìn)程,反之,則一直等待延遲時(shí)間。
首先,為排除網(wǎng)絡(luò)不對(duì)稱對(duì)對(duì)時(shí)精度的影響,采用網(wǎng)線將兩個(gè)時(shí)鐘節(jié)點(diǎn)(LAN口)相連,從時(shí)鐘端通過串口打印與主時(shí)鐘的實(shí)時(shí)偏差。
在此實(shí)驗(yàn)中,分別設(shè)置單個(gè)同步周期時(shí)間為4 s,2 s,1 s。待時(shí)鐘運(yùn)行穩(wěn)定后,使用串口實(shí)時(shí)打印時(shí)鐘偏差,測(cè)試結(jié)果如圖7所示。數(shù)據(jù)統(tǒng)計(jì)分析如表1所示。
圖7 兩時(shí)鐘節(jié)點(diǎn)網(wǎng)線直連測(cè)試結(jié)果
表1 兩時(shí)鐘節(jié)點(diǎn)網(wǎng)線直連測(cè)試數(shù)據(jù)統(tǒng)計(jì)分析
時(shí)鐘同步周期/s同步周期數(shù)絕對(duì)偏差平均值/ns最大正偏移/ns最大負(fù)偏移/ns4500301595-5622500221498-3521500176389-244
將兩個(gè)時(shí)鐘同步單元通過網(wǎng)線連入交換機(jī)的LAN口,并且將計(jì)算機(jī)的網(wǎng)口也連入交換機(jī),設(shè)置計(jì)算機(jī)的本地連接為DHCP,然后從時(shí)鐘端通過串口打印與主時(shí)鐘的實(shí)時(shí)偏差。本實(shí)驗(yàn)同樣分三次進(jìn)行,分別設(shè)置單個(gè)同步周期時(shí)間為4 s,2 s,1 s。測(cè)試結(jié)果如圖8所示。測(cè)試數(shù)據(jù)統(tǒng)計(jì)分析如表2所示。
圖8 兩時(shí)鐘節(jié)點(diǎn)交換機(jī)相連測(cè)試結(jié)果
表2 兩時(shí)鐘節(jié)點(diǎn)交換機(jī)相連測(cè)試數(shù)據(jù)統(tǒng)計(jì)
時(shí)鐘同步周期/s同步周期數(shù)絕對(duì)偏差平均值/ns最大正偏移/ns最大負(fù)偏移/ns4500328679-6252500261517-5081500193447-345
對(duì)比表1和表2,可以得出:當(dāng)同步周期越短,同步后的主從偏差則越?。划?dāng)同步周期設(shè)置相同的情況下,使用網(wǎng)絡(luò)元件(路由器或交換機(jī))會(huì)導(dǎo)致網(wǎng)絡(luò)鏈路不對(duì)稱,從而導(dǎo)致同步精度下降。
每個(gè)時(shí)鐘單元設(shè)計(jì)了外部觸發(fā)輸入捕獲口(IO口),能夠檢測(cè)外部觸發(fā)信號(hào),并記錄下觸發(fā)信號(hào)到達(dá)IO口的時(shí)間。此次實(shí)驗(yàn),將兩時(shí)鐘節(jié)點(diǎn)通過交換機(jī)組網(wǎng),等主從時(shí)鐘關(guān)系建立并運(yùn)行一段時(shí)間后,向各時(shí)鐘節(jié)點(diǎn)的外部輸入捕獲通道輸入觸發(fā)信號(hào),其中一個(gè)主時(shí)鐘作為PTP時(shí)間基準(zhǔn),另一個(gè)從時(shí)鐘通過主時(shí)鐘進(jìn)行校準(zhǔn),當(dāng)輸入通道在檢測(cè)到對(duì)應(yīng)的觸發(fā)信號(hào)后,會(huì)自動(dòng)記錄到達(dá)IO口的時(shí)間值,并通過串口打印。測(cè)試結(jié)果如圖9所示。其中,左邊的表示主時(shí)鐘接收觸發(fā)信號(hào)后輸出的時(shí)間戳,右邊的表示同步后的從時(shí)鐘接收觸發(fā)信號(hào)后輸出的時(shí)間戳,由數(shù)據(jù)可見,兩者的時(shí)間差小于200 ns。
圖9 外部觸發(fā)測(cè)試結(jié)果
每個(gè)時(shí)鐘同步單元均設(shè)計(jì)有延時(shí)/定時(shí)觸發(fā)輸出口,組網(wǎng)方式即將3個(gè)時(shí)鐘同步單元接入交換機(jī),并將計(jì)算機(jī)通過網(wǎng)口連入交換機(jī)。延時(shí)觸發(fā)測(cè)試即通過將觸發(fā)信號(hào)源接入從時(shí)鐘輸入端和示波器通道CH3,在計(jì)算機(jī)客戶端軟件中設(shè)置延時(shí)時(shí)間,待從時(shí)鐘檢測(cè)到符號(hào)要求的信號(hào)后,延遲一定時(shí)間通過觸發(fā)輸出口連接示波器的CH1通道。測(cè)試結(jié)果如圖10所示。從實(shí)驗(yàn)結(jié)果可看出,觸發(fā)信號(hào)延時(shí)200 ms后輸出。
定時(shí)觸發(fā)測(cè)試即將各時(shí)鐘單元的觸發(fā)輸出口連接到示波器的CH1、CH2和CH3通道,當(dāng)在計(jì)算機(jī)客戶端軟件中設(shè)置觸發(fā)時(shí)間后,3個(gè)時(shí)鐘同步單元在設(shè)定的時(shí)刻分別輸出觸發(fā)信號(hào),測(cè)試結(jié)果如圖11所示。由圖11可知,3個(gè)時(shí)鐘同步單元輸出的觸發(fā)信號(hào)之間時(shí)間間隔小于4 μs。
圖10 延時(shí)觸發(fā)測(cè)試結(jié)果
圖11 定時(shí)觸發(fā)測(cè)試結(jié)果
本文提出的基于ARM設(shè)計(jì)時(shí)鐘同步與觸發(fā)單元對(duì)分布式測(cè)試系統(tǒng)進(jìn)行同步,該方法通過引入PTP精密時(shí)間協(xié)議,分析其原理,然后基于ARM芯片及其相關(guān)的外圍電路設(shè)計(jì)了時(shí)鐘同步與觸發(fā)單元,進(jìn)而通過相關(guān)軟件(時(shí)鐘同步軟件、TCP/IP協(xié)議棧移植、同步觸發(fā)軟件等)的設(shè)計(jì),以及大量相關(guān)實(shí)驗(yàn)(兩時(shí)鐘節(jié)點(diǎn)網(wǎng)線直連,兩節(jié)點(diǎn)交換機(jī)相連,外部觸發(fā)捕獲,延時(shí)觸發(fā)輸出,定時(shí)觸發(fā)輸出測(cè)試)表明組網(wǎng)的各時(shí)鐘同步與觸發(fā)單元實(shí)現(xiàn)了亞微秒級(jí)時(shí)鐘同步精度和精確同步觸發(fā)功能,該設(shè)計(jì)方法具有通用性,滿足了一般分布式測(cè)試系統(tǒng)同步及觸發(fā)功能要求。