《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(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] 。它提供一種通過網(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?;?/span>KeyStone 架構(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 方案做初步介紹。

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

IEEE1588 使用精準(zhǔn)時(shí)間協(xié)議PTP (Precision Timing Protocol) ,通過端到端的報(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ì)。 

圖片2.jpg 

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

 

如圖所示,在經(jīng)過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ì)稱的,那么單路時(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ù)獲得的個(gè)時(shí)間值來估計(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)文,用來傳遞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í)間戳的方式不同,常見的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)文,在特殊場景中,例如 PTP over IPSec,報(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) 

圖片3.jpg 

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

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á)到納秒以下。 

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)文解析模塊用來匹配解析PTP 報(bào)文。83640 支持1588 Annex D & E Annex F 格式的報(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 支持1588 single step 模式的時(shí)鐘源。在報(bào)文接收方向,同樣有報(bào)文解析硬件。在解析到PTP 報(bào)文以后,接收報(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í)鐘源的絕對(duì)時(shí)間差值,然后通過寄存器調(diào)整本地絕對(duì)時(shí)間戳。在修改時(shí),軟件把絕對(duì)時(shí)間差值寫入寄存器,然后使能修改。這種方法適用初始同步時(shí)單次校正本地絕對(duì)時(shí)間戳。如在正常工作中出現(xiàn)累積相位偏差,應(yīng)該使用前面介紹的微調(diào)方法,避免輸出時(shí)鐘抖動(dòng)。 

應(yīng)用層通過設(shè)置83640 trigger control 模塊來控制輸出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.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 采用不同的硬件來支持。Annex D & E 使用以太網(wǎng)協(xié)處理(NetCP)里面的包加速器(PA)來支持;Annex F 報(bào)文使用以太網(wǎng)交換機(jī)(GE Switch)里面的CPTS 模塊來支持 [12-13] 。 

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

軟件通過CPTS 或者PA 獲取到時(shí)間戳后,計(jì)算需要調(diào)整的頻率和相位,然后通過配置Timer64 的周期寄存器來更改Timer64 的輸出周期,調(diào)整輸出的相位信息;通過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)用戶收到或者發(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í)間戳并換算成絕對(duì)時(shí)間。如果是發(fā)送,用戶只需讀取時(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 模塊用來觸發(fā)時(shí)間戳獲取。 

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

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

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

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

1.  KeyStone 芯片的1588 功能不維護(hù)絕對(duì)時(shí)間戳,時(shí)間信息是從CPTS timer 或者PA timer 換算出來。這樣也不支持對(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 問題以及硬件總線上的競爭可能性,軟件應(yīng)在一個(gè)循環(huán)內(nèi)多次執(zhí)行這個(gè)操作,保證執(zhí)行程序加載到 L1  cache 中,兩個(gè)時(shí)鐘之間的相位差應(yīng)該可以通過循環(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)的。軟件通過設(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.  方案簡單,涉及到的硬件和底層器件更少 

KeyStone1 需要PACPTS,Timer64,QMSS 等外設(shè)和加速器來支持整套方案,而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í)間差的工作,這部分工作不可避免的存在軟件誤差,雖然可以通過多次計(jì)算取平均等統(tǒng)計(jì)手段縮小誤差,但還是對(duì)精度存在一定的影響。KeyStone2 中,記錄時(shí)間戳和發(fā)送同步脈沖都在CPTS中,因此無需計(jì)算兩者的時(shí)間差,這樣就避免了軟件干預(yù),也提高了同步精度。 

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

前文從原理和方案上描述了KeyStone 中如何實(shí)現(xiàn)1588 方案,本章節(jié)以KeyStone1 為例,從技術(shù)細(xì)節(jié)方面來闡述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)偵測到PTP 報(bào)文的接收(或發(fā)送)時(shí)間,并將該時(shí)間戳記錄下來;用戶根據(jù)記錄下來的時(shí)間戳,配置Timer64 的時(shí)間輸出信號(hào),獲取當(dāng)前需要調(diào)整的時(shí)間偏差。 

4.1 Gbe Switch 配置 

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

4.1.1 CPTS 配置 

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

圖片6.jpg 

5:  KeyStone1 CPTS 寄存器列表 

 

CPTS 配置步驟如下: 

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

CPTS 的復(fù)位通過將TS_CONTROL 寄存器中的CPTS_EN 位域?qū)?/span>來實(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 的使能通過將TS_CONTROL 寄存器中的CPTS_EN 位域?qū)?/span>來實(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)?/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 的組成部分,可以通過配置CPSW Switch 識(shí)別PTP 報(bào)文。CPSW 的報(bào)文識(shí)別功能也通過配置寄存器的方式來實(shí)現(xiàn)。需要說明的是,由于Switch 對(duì)外有兩個(gè)接口(port1 port2),因此對(duì)應(yīng)的寄存器也有兩份。其寄存器列表如下圖所示: 

圖片7.jpg 

6:  KeyStone1 CPSW 寄存器列表 

配置步驟如下: 

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 中(表示端口號(hào))。 

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

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

3)使能CPSW 檢測模塊; 

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

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

Gbe Switch 完成對(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/3 CPU 時(shí)鐘,Timer64 的定時(shí)周期為1ms。 

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

由于CPTS 的時(shí)間戳只有32bit,因此CPTS 翻轉(zhuǎn)后時(shí)間戳不能代表真實(shí)時(shí)間,用戶需要記錄翻轉(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 完成使能,用戶可以通過讀取兩者時(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)相兩部分。通常來說,需要先保證頻率同步,然后再進(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ì)稱性,這里可以不考慮傳輸過程時(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)整的主要原理如下: 

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 的輸出周期需要滿足如下條件: 

9.png 

 

4.3 KeyStone1 1588 方案的說明 

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

小結(jié) 

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

本文簡要的介紹了IEEE1588 的原理,并分類分析了1588 同步功能在PHY 以及KeyStone1 KeyStone2 芯片上的應(yīng)用方案。以太網(wǎng)PHY 實(shí)現(xiàn)1588 同步的精度最高,但是成本相對(duì)比較昂貴;德州儀器的KeyStone 架構(gòu)上集成了支持1588 Switch,用戶可以通過KeyStone 架構(gòu)靈活實(shí)現(xiàn)1588 同步功能,也為用戶的方案設(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)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。