在KeyStone器件實(shí)現(xiàn)IEEE1588時(shí)鐘方案-技術(shù)方案_第1頁
在KeyStone器件實(shí)現(xiàn)IEEE1588時(shí)鐘方案-技術(shù)方案_第2頁
在KeyStone器件實(shí)現(xiàn)IEEE1588時(shí)鐘方案-技術(shù)方案_第3頁
在KeyStone器件實(shí)現(xiàn)IEEE1588時(shí)鐘方案-技術(shù)方案_第4頁
在KeyStone器件實(shí)現(xiàn)IEEE1588時(shí)鐘方案-技術(shù)方案_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

精品文檔-下載后可編輯在KeyStone器件實(shí)現(xiàn)IEEE1588時(shí)鐘方案-技術(shù)方案摘要

IEEE1588標(biāo)準(zhǔn)又稱為網(wǎng)絡(luò)測量和控制系統(tǒng)的時(shí)鐘同步協(xié)議標(biāo)準(zhǔn),是IEEE標(biāo)準(zhǔn)委員會(huì)頒布的為了滿足定位服務(wù)和無線移動(dòng)通信系統(tǒng)高精度同步要求的標(biāo)準(zhǔn)。隨著Ethernet技術(shù)的廣泛應(yīng)用,采用IEEE1588方式通過以太網(wǎng)實(shí)現(xiàn)時(shí)鐘同步方案在網(wǎng)絡(luò)上的應(yīng)用越來越普遍。本文簡要介紹1588的原理和常見的實(shí)現(xiàn)方式,并詳細(xì)介紹TIKeyStone架構(gòu)上的1588實(shí)現(xiàn)方案。

1概述

1588是IEEE規(guī)范定義的網(wǎng)絡(luò)實(shí)時(shí)同步標(biāo)準(zhǔn)[1]。它提供一種通過網(wǎng)絡(luò)信息交互以獲得精準(zhǔn)時(shí)鐘信息的標(biāo)準(zhǔn)。和在廣域網(wǎng)上的NTP協(xié)議比較,1588標(biāo)準(zhǔn)提供高于納秒級(jí)別的時(shí)鐘精度,可以用來滿足要求在一個(gè)相對(duì)小的空間范圍內(nèi)對(duì)時(shí)鐘同步有嚴(yán)格要求的應(yīng)用場景,例如基站同步,音視頻網(wǎng)橋(AVB),工業(yè)控制,產(chǎn)線控制,軍事應(yīng)用等。

KeyStone架構(gòu)是TI推出的高性能多核架構(gòu),該架構(gòu)目前已演進(jìn)了兩代——KeyStone1和KeyStone2?;贙eyStone架構(gòu),TI推出多款針對(duì)基站和網(wǎng)絡(luò)應(yīng)用的多核芯片。

KeyStone1家族基于40nm工藝,包括如下器件型號(hào):

TCI6616,參見文獻(xiàn)[2]

TCI6618,參見文獻(xiàn)[3]

TCI6614和TCI6612,參見文獻(xiàn)[4]和[5]

TMS320C6678、TMS320C6674、TMS320C6672等,參見文獻(xiàn)[6]

KeyStone2家族基于28nm工藝,包括如下器件型號(hào):

TCI6636K2H,參見文獻(xiàn)[7]

TCI6634K2K,參見文獻(xiàn)[8]

TCI6638K2K,參見文獻(xiàn)[9]

TCI6630K2L(即將發(fā)布),參見文獻(xiàn)[10]

本文首先介紹IEEE1588的基本原理,然后以常見的基于PHY的IEEE1588實(shí)現(xiàn)方案為參考,介紹KeyStone架構(gòu)上支持IEEE1588的硬件功能。同時(shí),本文總結(jié)了在KeyStone1芯片上實(shí)現(xiàn)IEEE1588方案需要注意的實(shí)現(xiàn)細(xì)節(jié),并對(duì)KeyStone2芯片的1588方案做初步介紹。

2IEEE1588時(shí)鐘同步原理

IEEE1588使用精準(zhǔn)時(shí)間協(xié)議PTP(PrecisionTimingProtocol),通過端到端的報(bào)文交互獲得時(shí)鐘參考信息,矯正本地時(shí)鐘頻率和相位。1588協(xié)議基于兩個(gè)假設(shè)條件:,在時(shí)鐘源設(shè)備和受時(shí)鐘設(shè)備之間,網(wǎng)絡(luò)報(bào)文傳輸時(shí)間是對(duì)稱的。也就是說一個(gè)報(bào)文從時(shí)鐘源設(shè)備到受時(shí)鐘設(shè)備的傳輸時(shí)間等于報(bào)文從受時(shí)鐘設(shè)備到時(shí)鐘源設(shè)備的傳輸時(shí)間相同;第二,在PTP報(bào)文交換過程當(dāng)中,本地時(shí)鐘的漂移可以忽略不計(jì)。

如圖所示,在經(jīng)過sync-delay_request-delay_response消息交互以后,受時(shí)鐘設(shè)備獲得4個(gè)時(shí)間值。以太網(wǎng)報(bào)文在兩個(gè)設(shè)備之間的環(huán)路時(shí)延可以計(jì)算為:

Troundtrip=(t4-t1)-(t3-t2)

假設(shè)包傳輸時(shí)延是對(duì)稱的,那么單路時(shí)延是:

Ttripdelay=((t4-t1)-(t3-t2))/2

從時(shí)鐘設(shè)備的時(shí)鐘和主時(shí)鐘的差值是:

Tdelta=t2-(t1+Ttripdelay)

實(shí)際部署時(shí),時(shí)鐘源發(fā)送sync消息,從設(shè)備根據(jù)多個(gè)sync消息來計(jì)算本地時(shí)鐘的偏差。當(dāng)從設(shè)備需要同步本地時(shí)鐘相位的時(shí)候,發(fā)送delay_req消息,時(shí)鐘源發(fā)送delay_response,從設(shè)備根據(jù)獲得的4個(gè)時(shí)間值來估計(jì)相位的偏差。

對(duì)于時(shí)鐘源設(shè)備,如果在發(fā)送sync報(bào)文時(shí)所帶的時(shí)間戳就是報(bào)文發(fā)送時(shí)采集的準(zhǔn)確時(shí)間,這種模式叫做singlestep模式。如果發(fā)送sync報(bào)文的時(shí)候所帶的時(shí)間戳只是一個(gè)近似時(shí)間,sync報(bào)文發(fā)送的準(zhǔn)確時(shí)間不能在發(fā)送sync報(bào)文的時(shí)候獲得或者實(shí)時(shí)插入到sync報(bào)文中,時(shí)鐘源設(shè)備需要發(fā)一個(gè)followup消息報(bào)文,用來傳遞sync報(bào)文的準(zhǔn)確發(fā)送時(shí)間,這種模式叫做twostep模式。下面介紹的PHY方案支持時(shí)鐘源singlestep,TI的KeyStone架構(gòu)支持時(shí)鐘源twostep模式。

31588芯片實(shí)現(xiàn)方案

根據(jù)打時(shí)間戳的方式不同,常見的1588方案分為軟件時(shí)間戳方案和硬件時(shí)間戳方案。軟件方案通常是通過軟件手段在網(wǎng)絡(luò)報(bào)文的接收中記錄PTP報(bào)文接收或發(fā)送時(shí)間,處理靈活,可以根據(jù)應(yīng)用場景靈活處理PTP協(xié)議報(bào)文,支持多種封裝格式。但是因?yàn)檐浖袛嗟臅r(shí)間抖動(dòng)大,軟件時(shí)間戳方案的精度較差,在對(duì)精度要求不高的情況下使用。硬件方案通過特殊硬件解析PTP報(bào)文,并用硬件記錄報(bào)文發(fā)送或接收時(shí)間。硬件方案精度高,但是需要特殊硬件解析PTP報(bào)文,在特殊場景中,例如PTPoverIPSec,報(bào)文經(jīng)過加密,硬件無法解析PTP報(bào)文。根據(jù)硬件方案獲取報(bào)文收發(fā)時(shí)間地點(diǎn)不同,硬件方案又分在PHY上集成的1588方案和MII集成的1588方案等。

下面先簡單介紹一下TI基于PHY的硬件解決方案作為參考,然后著重介紹KeyStone架構(gòu)上的基于MII和PA的1588方案。

3.1以太網(wǎng)PHY1588方案(DP83640)

DP83640[11]是一款百兆網(wǎng)口PHY,集成1588功能,對(duì)外提供校準(zhǔn)過的時(shí)鐘和PPS信號(hào),同時(shí)還支持同步以太網(wǎng)功能,直接從物理層獲得遠(yuǎn)端時(shí)鐘。在支持同步以太網(wǎng)的情況下,使用1588做相位調(diào)整,實(shí)驗(yàn)表明終的時(shí)鐘偏差精度可以達(dá)到納秒以下。

83640timestamp模塊維護(hù)一個(gè)本地的1588計(jì)數(shù)器,包括32bit的秒計(jì)數(shù)和30bit的納秒計(jì)數(shù)。PTP報(bào)文中要求的48bit秒計(jì)數(shù)中的高16位需要軟件維護(hù)。上層軟件在發(fā)送一個(gè)1588報(bào)文的時(shí)候,時(shí)間戳中秒計(jì)數(shù)的高16位由軟件設(shè)置的,低32位設(shè)置為0。

報(bào)文解析模塊用來匹配解析PTP報(bào)文。83640支持1588AnnexDE和AnnexF格式的報(bào)文。當(dāng)PTP報(bào)文送至PHY時(shí),報(bào)文解析硬件檢測到這個(gè)PTP報(bào)文的時(shí)鐘,在報(bào)文發(fā)出時(shí),把本地的時(shí)間戳寫到PTP報(bào)文里面,并修改相關(guān)的CRC和CHKSUM值。83640支持1588singlestep模式的時(shí)鐘源。在報(bào)文接收方向,同樣有報(bào)文解析硬件。在解析到PTP報(bào)文以后,接收?qǐng)?bào)文的準(zhǔn)確時(shí)間戳可以插入在報(bào)文里,或者通過控制接口上報(bào)。

83640的1588時(shí)鐘模塊對(duì)外提供頻率控制接口,軟件通過控制寄存器可以調(diào)整輸出的時(shí)鐘頻率。1588時(shí)鐘模塊根據(jù)上層軟件的配置,對(duì)1588時(shí)鐘模塊的輸入時(shí)鐘信號(hào)微調(diào),然后分頻輸出。時(shí)鐘調(diào)整是通過調(diào)整每個(gè)時(shí)鐘周期的時(shí)間來實(shí)現(xiàn)的。在每個(gè)時(shí)鐘周期調(diào)整的單位是2-32ns。在正常模式下,這個(gè)調(diào)整機(jī)制用來補(bǔ)償本地時(shí)鐘和時(shí)鐘源的差距。在長期工作以后產(chǎn)生累積同步誤差時(shí),軟件可以調(diào)整寄存器的值,在一定時(shí)間內(nèi),對(duì)頻率向上或者向下微調(diào),以補(bǔ)償相位差距。當(dāng)在相位補(bǔ)償以后,恢復(fù)正常頻率補(bǔ)償模式。

軟件協(xié)議棧通過協(xié)議處理以后獲得本地的時(shí)鐘與時(shí)鐘源的時(shí)間差值,然后通過寄存器調(diào)整本地時(shí)間戳。在修改時(shí),軟件把時(shí)間差值寫入寄存器,然后使能修改。這種方法適用初始同步時(shí)單次校正本地時(shí)間戳。如在正常工作中出現(xiàn)累積相位偏差,應(yīng)該使用前面介紹的微調(diào)方法,避免輸出時(shí)鐘抖動(dòng)。

應(yīng)用層通過設(shè)置83640的triggercontrol模塊來控制輸出PPS或者其他同步信號(hào)。應(yīng)用可以設(shè)置在timestamp的哪些具體時(shí)刻某個(gè)GPIO管腳可以發(fā)生反轉(zhuǎn)。trigger的輸出可以線與并輸出到GPIO管腳,通過線與可以是輸出復(fù)雜的周期波形。

83640方案實(shí)現(xiàn)簡單,直接輸出矯正時(shí)鐘及相位信號(hào),但是對(duì)于復(fù)雜傳輸場景支持困難;而且相比不包含IEEE1588功能的PHY芯片,83640的成本要高出許多。

3.2KeyStone11588方案

KeyStone架構(gòu)是TI推出的高性能多核架構(gòu),現(xiàn)在已經(jīng)有KeyStone1和KeyStone2兩種架構(gòu)。KeyStone架構(gòu)中也包含了對(duì)IEEE1588功能的支持。

KeyStone1系列芯片的1588方案包括兩個(gè)硬件部分:記錄時(shí)間戳,發(fā)送同步脈沖。KeyStone1支持twostep的時(shí)間戳模式,同時(shí)也能支持1588協(xié)議中AnnexDE和AnnexF規(guī)定的PTP報(bào)文解析。

對(duì)于記錄時(shí)間戳,KeyStone1對(duì)于AnnexDE和AnnexF采用不同的硬件來支持。AnnexDE使用以太網(wǎng)協(xié)處理(NetCP)里面的包加速器(PA)來支持;AnnexF報(bào)文使用以太網(wǎng)交換機(jī)(GESwitch)里面的CPTS模塊來支持[12-13]。

對(duì)于同步信號(hào)的輸出,KeyStone1里面需要通過Timer64[14]來完成。軟件通過CPTS或者PA獲取到時(shí)間戳后,計(jì)算需要調(diào)整的頻率和相位,然后通過配置Timer64的周期寄存器來更改Timer64的輸出周期,調(diào)整輸出的相位信息;通過SPI接口調(diào)整外部的VCXO的輸出頻率,矯正本地時(shí)鐘頻率。

3.2.1AnnexDEPTP報(bào)文處理

PA內(nèi)部會(huì)維護(hù)一個(gè)48bit的計(jì)時(shí)器,該計(jì)時(shí)器的頻率與PA的頻率一致(一般是350MHz)。由于AnnexDE報(bào)文的承載方式為IP/UDP承載(報(bào)文模式為IPv4和IPv6),當(dāng)用戶收到或者發(fā)送一個(gè)IPv4或IPv6的PTP報(bào)文時(shí),在PA側(cè)會(huì)記錄一個(gè)報(bào)文接收(或發(fā)送)的時(shí)間戳,這個(gè)時(shí)間戳只有32bit(為48bit中的低32bit)。這個(gè)時(shí)間戳保存在用戶指定的QMSS的某個(gè)Queue的描述符里面。

用戶從Queue中提取出該描述符:如果是接收,用戶可根據(jù)描述符信息解析報(bào)文類型,獲取報(bào)文內(nèi)容,同時(shí)讀取32bit時(shí)間戳并換算成時(shí)間。如果是發(fā)送,用戶只需讀取時(shí)間戳,轉(zhuǎn)換為158848bit時(shí)間后按照1588twostep的規(guī)則再做報(bào)文發(fā)送。

3.2.2AnnexFPTP報(bào)文處理

GESwitch模塊上的CPTS模塊支持對(duì)1588AnnexF(以太網(wǎng)封裝)的PTP報(bào)文解析,支持VLAN。在CPSW邏輯匹配到PTP報(bào)文時(shí),會(huì)觸發(fā)一個(gè)硬件信號(hào)給CPTS模塊用來觸發(fā)時(shí)間戳獲取。

CPTS的時(shí)間戳模塊維護(hù)一個(gè)32bit的timer,根據(jù)配置,這個(gè)timer可以工作在二分之一CPU主頻上。這個(gè)timer是一個(gè)freeruntimer。軟件通過這個(gè)timer換算得到1588的32bit納秒時(shí)鐘和48bit秒時(shí)鐘。因?yàn)閠imer只有32bit,所以軟件需要處理timer反轉(zhuǎn)事件,用來維護(hù)秒信息。CPTS得到時(shí)間事件以后,會(huì)將PTP報(bào)文的消息類型和SequenceID等信息壓入EVENTFIFO中,并觸發(fā)中斷讓用戶處理。

3.2.3同步信號(hào)的產(chǎn)生

同步信號(hào)需要通過Timer64來產(chǎn)生。由于Timer64,PA以及CPTS都是共用KeyStone外部的VCXO,因此從時(shí)間源上保證各個(gè)計(jì)時(shí)器之間沒有累積誤差。這樣計(jì)算出來的各個(gè)時(shí)間也是固定不變的。

關(guān)于同步信號(hào)的時(shí)間戳,有兩點(diǎn)需要說明:

1.KeyStone芯片的1588功能不維護(hù)時(shí)間戳,時(shí)間信息是從CPTStimer或者PA的timer換算出來。這樣也不支持對(duì)1588報(bào)文發(fā)送時(shí)實(shí)時(shí)修改,所以在用KeyStone芯片做時(shí)鐘源時(shí),芯片只支持twostep模式。

2.輸出時(shí)鐘方案需使用KeyStone1芯片上的定時(shí)器的輸出。因?yàn)镃PTS(或PA)上打時(shí)間戳的計(jì)數(shù)器和定時(shí)器使用的時(shí)鐘雖然是同源,但是相位不同,產(chǎn)生的PPS時(shí)鐘時(shí),需要軟件參與校正兩個(gè)計(jì)數(shù)器,并對(duì)記錄相應(yīng)的相位差。具體實(shí)現(xiàn)時(shí),需要首先對(duì)CPTS(或PA)里面的計(jì)數(shù)器和選定的Timer64計(jì)數(shù)器相差相位進(jìn)行計(jì)算。軟件首先操作CPTS(或PA)寄存器,觸發(fā)一個(gè)CPTS時(shí)間戳記錄事件(或者發(fā)起一個(gè)讀取PA時(shí)間戳寄存器的命令),然后馬上讀取timer64的值??紤]到cache問題以及硬件總線上的競爭可能性,軟件應(yīng)在一個(gè)循環(huán)內(nèi)多次執(zhí)行這個(gè)操作,保證執(zhí)行程序加載到L1cache中,兩個(gè)時(shí)鐘之間的相位差應(yīng)該可以通過循環(huán)幾次獲得的值平均得到。

3.3KeyStone21588方案

KeyStone2架構(gòu)的TI芯片對(duì)1588的支持做了改進(jìn)和增強(qiáng)。CPTS模塊支持同步以太網(wǎng)(AnnexF)和1588AnnexDE的報(bào)文。在KeyStone2芯片中,PPS輸出是直接由CPTS邏輯驅(qū)動(dòng)的。軟件通過設(shè)置相關(guān)寄存器設(shè)置下一個(gè)PPS輸出時(shí)timestamp的值,當(dāng)計(jì)數(shù)器跑到設(shè)置的值的時(shí)候,硬件觸發(fā)PPS信號(hào)輸出。

相比KeyStone1的方案,KeyStone2的主要優(yōu)點(diǎn)在于:

1.方案簡單,涉及到的硬件和底層器件更少

KeyStone1需要PA,CPTS,Timer64,QMSS等外設(shè)和加速器來支持整套方案,而KeyStone2只需要CPTS一個(gè)模塊就可以支持AnnexDE和AnnexF的PTP報(bào)文,同時(shí)也支持同步信號(hào)的輸出;

2.時(shí)間戳個(gè)數(shù)減少,降低了計(jì)算復(fù)雜度

KeyStone1里面需要計(jì)算包括PA時(shí)間戳,CPTS時(shí)間戳以及Timer64的時(shí)間戳在內(nèi)的共計(jì)3個(gè)時(shí)間戳與PTP報(bào)文的真實(shí)時(shí)間的時(shí)間相差;KeyStone2里面只有CPTS一個(gè)時(shí)間戳需要計(jì)算;

3.方案全由硬件邏輯完成,徹底避免了軟件干預(yù)同時(shí)也提高了同步精度

KeyStone1的方案由于記錄時(shí)間戳的時(shí)間源(PA和CPTS)與發(fā)送同步信號(hào)的時(shí)間源(Timer64)是不同的,因此在系統(tǒng)運(yùn)行的時(shí)候需要軟件計(jì)算不同時(shí)間源的時(shí)間差,這樣才能在后面的時(shí)間同步中調(diào)整時(shí)間。這里有軟件讀取并計(jì)算時(shí)間差的工作,這部分工作不可避免的存在軟件誤差,雖然可以通過多次計(jì)算取平均等統(tǒng)計(jì)手段縮小誤差,但還是對(duì)精度存在一定的影響。KeyStone2中,記錄時(shí)間戳和發(fā)送同步脈沖都在CPTS中,因此無需計(jì)算兩者的時(shí)間差,這樣就避免了軟件干預(yù),也提高了同步精度。

4KeyStone11588方案實(shí)現(xiàn)

前文從原理和方案上描述了KeyStone中如何實(shí)現(xiàn)1588方案,本章節(jié)以KeyStone1為例,從技術(shù)細(xì)節(jié)方面來闡述1588實(shí)現(xiàn)方式。

以AnnexF的PTP報(bào)文為例,1588的實(shí)現(xiàn)主要分為配置GbeSwitch[3]和計(jì)算時(shí)間偏差兩部分。整體流程如下:當(dāng)接收(或發(fā)送)一個(gè)802.3的PTP報(bào)文時(shí),GbeSwitch會(huì)自動(dòng)偵測到PTP報(bào)文的接收(或發(fā)送)時(shí)間,并將該時(shí)間戳記錄下來;用戶根據(jù)記錄下來的時(shí)間戳,配置Timer64的時(shí)間輸出信號(hào),獲取當(dāng)前需要調(diào)整的時(shí)間偏差。

4.1GbeSwitch配置

KeyStone1中的GbeSwitch是一個(gè)集成了1588PTP報(bào)文檢測的交換機(jī),其中CPTS用來記錄時(shí)間戳,CPSW用來偵測1588報(bào)文。因此1588實(shí)現(xiàn)方式主要通過配置CPTS和配置CPSW來實(shí)現(xiàn)。

4.1.1CPTS配置

CPTS是KeyStone1架構(gòu)中GbeSwitch中的一個(gè)模塊,請(qǐng)參考文獻(xiàn)[12]中的2.3.5章節(jié)。該章節(jié)詳細(xì)介紹了CPTS模塊的工作場景和寄存器列表。

CPTS配置步驟如下:

1)復(fù)位CPTS模塊;

CPTS的復(fù)位通過將TS_CONTROL寄存器中的CPTS_EN位域?qū)?來實(shí)現(xiàn)。

2)選擇CPTS時(shí)鐘源;

CPTS時(shí)鐘源在CPTS_RFTCLK_SEL寄存器中選擇,有四種時(shí)鐘源可以選擇:SYSCLK3,SYSCLK4,TIMI0和TIMI1。其中SYSCLK3是1/2CPU時(shí)鐘,SYSCLK4是1/3CPU時(shí)鐘,TIMI0和TIMI1分別是兩個(gè)外部時(shí)鐘輸入pin腳,原本是作為Timer64的輸入時(shí)鐘,這里也可以復(fù)用為CPTS的時(shí)鐘源。

3)使能CPTS模塊;

CPTS的使能通過將TS_CONTROL寄存器中的CPTS_EN位域?qū)?來實(shí)現(xiàn)。當(dāng)CPTS使能后,CPTS內(nèi)部的時(shí)間記數(shù)器就會(huì)根據(jù)輸入時(shí)鐘的頻率開始記數(shù)。

4)使能CPTS中斷;

CPTS模塊中斷使能通過配置INT_EABLE來完成。CPTS可以產(chǎn)生多種事件的中斷,主要有:

Push中斷:用戶手動(dòng)觸發(fā)一個(gè)Push事件,該事件會(huì)記錄當(dāng)前CPTS的時(shí)間戳,并觸發(fā)中斷;

記數(shù)器翻轉(zhuǎn)中斷:當(dāng)CPTS的32bit記數(shù)器從0xFFFFFFFF變?yōu)?x00000000時(shí)會(huì)自動(dòng)觸發(fā)一個(gè)中斷;

記數(shù)器半翻轉(zhuǎn)中斷:當(dāng)CPTS的32bit記數(shù)器從0x7FFFFFFF變?yōu)?x80000000時(shí)會(huì)自動(dòng)觸發(fā)一個(gè)中斷;

以太網(wǎng)PTP報(bào)文接收中斷:當(dāng)接受1個(gè)以太網(wǎng)PTP報(bào)文時(shí)觸發(fā)中斷;

以太網(wǎng)PTP報(bào)文發(fā)送中斷:當(dāng)發(fā)送1個(gè)以太網(wǎng)PTP報(bào)文時(shí)觸發(fā)中斷;

4.1.2CPSW的配置

CPSW是屬于Switch的組成部分,可以通過配置CPSW讓Switch識(shí)別PTP報(bào)文。CPSW的報(bào)文識(shí)別功能也通過配置寄存器的方式來實(shí)現(xiàn)。需要說明的是,由于Switch對(duì)外有兩個(gè)接口(port1和port2),因此對(duì)應(yīng)的寄存器也有兩份。其寄存器列表如下圖所示:

配置步驟如下:

1)配置LTYPE;

每種以太網(wǎng)報(bào)文都有一個(gè)類型,CPSW將根據(jù)這個(gè)類型配置偵測用戶需要的報(bào)文。根據(jù)以太網(wǎng)報(bào)文的定義,IEEE1588的PTP報(bào)文的類型為0x88F7。用戶需要將這個(gè)類型寫入Pn_TS_SEQ_LTYPE中(n表示端口號(hào))。

2)配置VLANID(如果使能了VLAN報(bào)文的話);

用戶可以定義需要的VLANID,在Pn_TS_VLAN寄存器里面配置。

3)使能CPSW檢測模塊;

CPSW的使能包括接收和發(fā)送的使能,需要用戶配置Pn_TS_CTL里面對(duì)應(yīng)的位域。

4.2時(shí)間偏差的計(jì)算和調(diào)整

GbeSwitch完成對(duì)PTP報(bào)文的時(shí)間戳記錄之后,用戶需要根據(jù)時(shí)間戳計(jì)算當(dāng)前需要調(diào)整的時(shí)間數(shù)。由于真實(shí)系統(tǒng)時(shí)間是基于Timer64的時(shí)間戳,因此用戶在計(jì)算CPTS的時(shí)間戳之后需要換算到真實(shí)系統(tǒng)時(shí)間。

為了方便說明和計(jì)算,在下面的配置中,假定CPU時(shí)鐘為1GHz,CPTS采用1/3CPU時(shí)鐘,Timer64的定時(shí)周期為1ms。

4.2.1CPTS時(shí)鐘到系統(tǒng)時(shí)鐘

由于CPTS的時(shí)間戳只有32bit,因此CPTS翻轉(zhuǎn)后時(shí)間戳不能代表真實(shí)時(shí)間,用戶需要記錄翻轉(zhuǎn)的次數(shù)以獲得Tcpts。那么換算關(guān)系如下:

其中,N代表CPTS翻轉(zhuǎn)次數(shù),TIME_STAMP_CPTS代表當(dāng)前CPTS的32bit時(shí)間戳。Timer64是以1ms為周期進(jìn)行記數(shù)的定時(shí)器,其輸入時(shí)鐘為固定的1/6CPU時(shí)鐘,因此可以算出Timer64的記數(shù)器范圍為0~166666(Timer64采用連續(xù)記數(shù)方式)。因此可以得出如下公式:

其中TIME_STAMP_TIMER代表當(dāng)前Timer64的時(shí)間戳。當(dāng)Timer64和CPTS完成使能,用戶可以通過讀取兩者時(shí)間戳的方式獲取兩者的在1ms內(nèi)的基本時(shí)間戳。假設(shè)讀取之后兩者時(shí)間戳偏差為Toffset,由于Timer64和CPTS同源,因此可以認(rèn)為此偏差在CPTS或Timer64復(fù)位前保持不變。

4.2.2時(shí)間調(diào)整

1588的時(shí)間調(diào)整包括調(diào)頻和調(diào)相兩部分。通常來說,需要先保證頻率同步,然后再進(jìn)行相位調(diào)整。調(diào)頻的部分不需要Timer64的參與,需要比對(duì)PTP報(bào)文中的時(shí)間戳差值和CPTS記錄的時(shí)間戳,處理如下:

其中Teth1和Teth0分別表示收到的兩個(gè)PTP報(bào)文中自帶的主時(shí)鐘時(shí)間戳(納秒級(jí)),而Tcpts1和Tcpts0代表這接收這兩個(gè)PTP報(bào)文時(shí)由CPTS得到的時(shí)間。考慮到傳輸對(duì)稱性,這里可以不考慮傳輸過程時(shí)延的影響。

用戶通過比對(duì)?eth和?cpts來確定當(dāng)前系統(tǒng)頻率與主時(shí)鐘頻率的差別。

當(dāng)調(diào)頻過程基本完成,即?eth≈?cpts時(shí)可以進(jìn)行相位調(diào)整。調(diào)相的主要工作是調(diào)整Timer64的輸出脈沖,由于輸出脈沖以1ms為周期,因此只需計(jì)算在1ms內(nèi)的偏差即可。相位調(diào)整的主要原理如下:

其中,Teth表示接收到的PTP報(bào)文的主時(shí)鐘時(shí)間,Tcpts表示該P(yáng)TP報(bào)文對(duì)應(yīng)的CPTS時(shí)間,Toffset表示CPTS和Timer64的時(shí)間差,Ttripdelay表示網(wǎng)絡(luò)傳輸時(shí)間。

按照計(jì)算后,Timer64的輸出周期需要滿足如下條件:

4.3KeyStone11588方案的說明

KeyStone1的1588方案主要依靠配置GbeSwitch和軟件換算時(shí)間戳兩部分來完成。需要強(qiáng)調(diào)的是,在軟件換算時(shí)間的部分,這涉及到具體的1588時(shí)間戳計(jì)算算法。基于應(yīng)用的需求和精度需求,許多算法往往比這里介紹的更復(fù)雜,但是原理上來說都是相同的。這也是KeyStone架構(gòu)使用軟件實(shí)現(xiàn)1588部分的一個(gè)優(yōu)勢,用戶可以靈活使用軟件功能來提高1588的同步精度。

5小結(jié)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論