《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > 在KeyStone 器件實(shí)現(xiàn)IEEE1588 時(shí)鐘方案

在KeyStone 器件實(shí)現(xiàn)IEEE1588 時(shí)鐘方案

2015-03-06
關(guān)鍵詞: KeyStone IEEE1588 時(shí)鐘

概述 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

圖片2.jpg 

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

 

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

 

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

 

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

 

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

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

Tdelta = t2 - (t1 + Ttripdelay)

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

對(duì)于時(shí)鐘源設(shè)備,,如果在發(fā)送sync 報(bào)文時(shí)所帶的時(shí)間戳就是報(bào)文發(fā)送時(shí)采集的準(zhǔn)確時(shí)間,這種模式叫做single step 模式,。如果發(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è)follow up消息報(bào)文,,用來(lái)傳遞sync 報(bào)文的準(zhǔn)確發(fā)送時(shí)間,,這種模式叫做two step 模式。下面介紹的PHY 方案支持時(shí)鐘源single step,,TI KeyStone 架構(gòu)支持時(shí)鐘源two step 模式,。 

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

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

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

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

圖片3.jpg 

2DP83640 高精度時(shí)鐘同步硬件模塊 

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

83640 timestamp 模塊維護(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)文解析模塊用來(lái)匹配解析PTP 報(bào)文,。83640 支持1588 Annex D & E Annex F 格式的報(bào)文。當(dāng)PTP 報(bào)文送至PHY 時(shí),,報(bào)文解析硬件檢測(cè)到這個(gè)PTP 報(bào)文的時(shí)鐘,,在報(bào)文發(fā)出時(shí),把本地的時(shí)間戳寫(xiě)到PTP 報(bào)文里面,,并修改相關(guān)的CRC CHKSUM 值,。83640 支持1588 single step 模式的時(shí)鐘源。在報(bào)文接收方向,,同樣有報(bào)文解析硬件,。在解析到PTP 報(bào)文以后,接收?qǐng)?bào)文的準(zhǔn)確時(shí)間戳可以插入在報(bào)文里,,或者通過(guò)控制接口上報(bào),。 

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

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

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

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

3.2 KeyStone1 1588 方案 

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 支持two step 的時(shí)間戳模式,,同時(shí)也能支持1588 協(xié)議中Annex D & E Annex F規(guī)定的PTP 報(bào)文解析。 

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

對(duì)于同步信號(hào)的輸出,,KeyStone1 里面需要通過(guò)Timer64[14]來(lái)完成。 

軟件通過(guò)CPTS 或者PA 獲取到時(shí)間戳后,,計(jì)算需要調(diào)整的頻率和相位,,然后通過(guò)配置Timer64 的周期寄存器來(lái)更改Timer64 的輸出周期,,調(diào)整輸出的相位信息;通過(guò)SPI 接口調(diào)整外部的VCXO 的輸出頻率,,矯正本地時(shí)鐘頻率,。 

圖片4.jpg 

3KeyStone1 IEEE1588 時(shí)鐘同步方案 

 

3.2.1 Annex D & E PTP 報(bào)文處理 

 

PA 內(nèi)部會(huì)維護(hù)一個(gè)48bit 的計(jì)時(shí)器,該計(jì)時(shí)器的頻率與PA 的頻率一致(一般是

350MHz),。由于Annex D & E 報(bào)文的承載方式為IP/UDP 承載(報(bào)文模式為IPv4 IPv6),,當(dāng)用戶(hù)收到或者發(fā)送一個(gè) IPv4 或 IPv6 的 PTP 報(bào)文時(shí),在 PA 側(cè)會(huì)記錄一個(gè)報(bào)文接收(或發(fā)送)的時(shí)間戳,,這個(gè)時(shí)間戳只有32bit(為48bit 中的低32bit),。這個(gè)時(shí)間戳保存在用戶(hù)指定的QMSS 的某個(gè)Queue 的描述符里面。 

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

3.2.2 Annex F PTP 報(bào)文處理 

GE Switch 模塊上的CPTS 模塊支持對(duì)1588 Annex F(以太網(wǎng)封裝)的PTP 報(bào)文解析,,

支持VLAN,。在CPSW 邏輯匹配到PTP 報(bào)文時(shí),,會(huì)觸發(fā)一個(gè)硬件信號(hào)給CPTS 模塊用來(lái)觸發(fā)時(shí)間戳獲取,。 

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

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

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

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

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

2.  輸出時(shí)鐘方案需使用KeyStone1 芯片上的定時(shí)器的輸出,。因?yàn)?/span>CPTS(或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 問(wèn)題以及硬件總線(xiàn)上的競(jìng)爭(zhēng)可能性,,軟件應(yīng)在一個(gè)循環(huán)內(nèi)多次執(zhí)行這個(gè)操作,保證執(zhí)行程序加載到 L1  cache 中,,兩個(gè)時(shí)鐘之間的相位差應(yīng)該可以通過(guò)循環(huán)幾次獲得的值平均得到。 

3.3 KeyStone2 1588 方案 

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

圖片5.jpg 

4:  KeyStone2 IEEE1588 時(shí)鐘同步方案 

    

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

1.  方案簡(jiǎn)單,,涉及到的硬件和底層器件更少 

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

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

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

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

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

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

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

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

4.1 Gbe Switch 配置 

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

4.1.1 CPTS 配置 

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

圖片6.jpg 

5:  KeyStone1 CPTS 寄存器列表 

 

CPTS 配置步驟如下: 

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

CPTS 的復(fù)位通過(guò)將TS_CONTROL 寄存器中的CPTS_EN 位域?qū)?/span>來(lái)實(shí)現(xiàn)。 

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

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

 

3) 使能CPTS 模塊,; 

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

4) 使能CPTS 中斷; 

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

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

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

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

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

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

4.1.2 CPSW 的配置 

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

圖片7.jpg 

6:  KeyStone1 CPSW 寄存器列表 

配置步驟如下: 

1)配置LTYPE,; 

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

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

用戶(hù)可以定義需要的VLAN ID,,在Pn_TS_VLAN 寄存器里面配置,。 

3)使能CPSW 檢測(cè)模塊; 

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

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

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

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

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

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

4.png 

 

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

5.png 

 

其中TIME_STAMP_TIMER 代表當(dāng)前Timer64 的時(shí)間戳 

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

6.png 

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

1588 的時(shí)間調(diào)整包括調(diào)頻和調(diào)相兩部分,。通常來(lái)說(shuō),需要先保證頻率同步,,然后再進(jìn)行相位調(diào)整,。 

調(diào)頻的部分不需要Timer64 的參與,需要比對(duì)PTP 報(bào)文中的時(shí)間戳差值和CPTS 記錄的時(shí)間戳,,處理如下: 

7.png 

 

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

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

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

8.png 

 

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

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

9.png 

 

4.3 KeyStone1 1588 方案的說(shuō)明 

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

小結(jié) 

從目前來(lái)看,,IEEE1588v2 標(biāo)準(zhǔn)已經(jīng)越來(lái)越多的應(yīng)用在通訊網(wǎng)絡(luò)中。由于IEEE1588v2 標(biāo)準(zhǔn)也還在不斷的完善中,,因此從技術(shù)角度出發(fā),,熟悉1588 同步原理,了解并設(shè)計(jì)不同場(chǎng)景中的1588 方案,,不論是從芯片設(shè)計(jì)角度或者基站整體解決方案角度來(lái)說(shuō),,都是十分必要的。 

本文簡(jiǎn)要的介紹了IEEE1588 的原理,,并分類(lèi)分析了1588 同步功能在PHY 以及KeyStone1 KeyStone2 芯片上的應(yīng)用方案,。以太網(wǎng)PHY 實(shí)現(xiàn)1588 同步的精度最高,但是成本相對(duì)比較昂貴,;德州儀器的KeyStone 架構(gòu)上集成了支持1588 Switch,,用戶(hù)可以通過(guò)KeyStone 架構(gòu)靈活實(shí)現(xiàn)1588 同步功能,也為用戶(hù)的方案設(shè)計(jì)提供了更多的選擇,。 

參考文獻(xiàn)  

[1] IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems 

[2] http://www.ti.com/product/tms320tci6616 

[3] http://www.ti.com/product/tms320tci6618 

[4] http://www.ti.com/product/tms320tci6614 

[5] http://www.ti.com/product/tms320tci6612 

[6] http://www.ti.com/product/tms320c6670 

[7] http://www.ti.com/product/tci6636k2h 

[8] http://www.ti.com/product/tci6634k2k 

[9] http://www.ti.com/product/tci6638k2k 

[10] http://www.ti.com/product/tci6630k2l  

[11] DP83640 Precision PHYTERTM 

[12] KeyStone Architecture Gigabit Etherent (GbE) Switch Subsystem (SPRUGV9B) 

[13] Packet Accelerator (PA) for KeyStone Devices User's Guide (SPRUGS4A)  

[14] 64-Bit Timer (Timer64) for KeyStone Devices User's Guide (SPRUGV5A)  


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話(huà)通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話(huà):010-82306118,;郵箱:[email protected],。