在KeyStone 器件實(shí)現(xiàn)IEEE1588 時(shí)鐘方案
摘要
本文引用地址:http://www.ex-cimer.com/article/201610/307404.htmIEEE1588 標(biāo)準(zhǔn)又稱為網(wǎng)絡(luò)測(cè)量和控制系統(tǒng)的精確時(shí)鐘同步協(xié)議標(biāo)準(zhǔn),是 IEEE 標(biāo)準(zhǔn)委員會(huì)頒布的為了滿足定位服務(wù)和無(wú)線移動(dòng)通信系統(tǒng)高精度同步要求的標(biāo)準(zhǔn)。隨著 Ethernet 技術(shù)的廣泛應(yīng)用,采用 IEEE1588 方式通過(guò)以太網(wǎng)實(shí)現(xiàn)時(shí)鐘同步方案在網(wǎng)絡(luò)上的應(yīng)用越來(lái)越普遍。本文簡(jiǎn)要介紹 1588 的原理和常見(jiàn)的實(shí)現(xiàn)方式,并詳細(xì)介紹 TI KeyStone 架構(gòu)上的1588 實(shí)現(xiàn)方案。
1 概述
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)滿足要求在一個(gè)相對(duì)小的空間范圍內(nèi)對(duì)時(shí)鐘同步有嚴(yán)格要求的應(yīng)用場(chǎ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,參見(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ì)稱的。也就是說(shuō)一個(gè)報(bào)文從時(shí)鐘源設(shè)備到受時(shí)鐘設(shè)備的傳輸時(shí)間等于報(bào)文從受時(shí)鐘設(shè)備到時(shí)鐘源設(shè)備的傳輸時(shí)間相同;第二,在PTP 報(bào)文交換過(guò)程當(dāng)中,本地時(shí)鐘的漂移可以忽略不計(jì)。
實(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ù)獲得的4 個(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)
圖2:DP83640 高精度時(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 的輸出可以線與并輸出到GPIO 管腳,通過(guò)線與可以是輸出復(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í)鐘頻率。
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 模塊用來(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)閠imer 只有32bit,所以軟件需要處理timer 反轉(zhuǎn)事件,用來(lái)維護(hù)秒信息。CPTS 得到時(shí)間事件以后,會(huì)將PTP 報(bào)文的消息類型和Sequence ID 等信息壓入EVENT FIFO 中,并觸發(fā)中斷讓用戶處理。
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)镃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 問(wè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)輸出。
相比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ì)3 個(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);用戶根據(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.5 章節(jié)。該章節(jié)詳細(xì)介紹了CPTS 模塊的工作場(chǎng)景和寄存器列表。
CPTS 配置步驟如下:
1) 復(fù)位CPTS 模塊;
CPTS 的復(fù)位通過(guò)將TS_CONTROL 寄存器中的CPTS_EN 位域?qū)? 來(lái)實(shí)現(xiàn)。
2) 選擇CPTS 時(shí)鐘源;
CPTS 時(shí)鐘源在CPTS_RFTCLK_SEL 寄存器中選擇,有四種時(shí)鐘源可以選擇:SYSCLK3,SYSCLK4,TIMI0 和TIMI1。其中SYSCLK3 是1/2 CPU 時(shí)鐘,SYSCLK4是1/3 CPU 時(shí)鐘,TIMI0 和TIMI1 分別是兩個(gè)外部時(shí)鐘輸入pin 腳,原本是作為T(mén)imer64 的輸入時(shí)鐘,這里也可以復(fù)用為CPTS 的時(shí)鐘源。
3) 使能CPTS 模塊;
CPTS 的使能通過(guò)將TS_CONTROL 寄存器中的CPTS_EN 位域?qū)? 來(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 中斷:用戶手動(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.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)的寄存器也有兩份。其寄存器列表如下圖所示:
配置步驟如下:
1)配置LTYPE;
每種以太網(wǎng)報(bào)文都有一個(gè)類型,CPSW 將根據(jù)這個(gè)類型配置偵測(cè)用戶需要的報(bào)文。根據(jù)以太網(wǎng)報(bào)文的定義,IEEE1588 的PTP 報(bào)文的類型為0x88F7。用戶需要將這個(gè)類型寫(xiě)入Pn_TS_SEQ_LTYPE 中(n 表示端口號(hào))。
2)配置VLAN ID(如果使能了VLAN 報(bào)文的話);
用戶可以定義需要的VLAN ID,在Pn_TS_VLAN 寄存器里面配置。
3)使能CPSW 檢測(cè)模塊;
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í)間。
為了方便說(shuō)明和計(jì)算,在下面的配置中,假定CPU 時(shí)鐘為1GHz,CPTS 采用1/3 CPU 時(shí)鐘,Timer64 的定時(shí)周期為1ms。
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ì),用戶可以靈活使用軟件功能來(lái)提高 1588 的同步精度。
5 小結(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 的原理,并分類分析了1588 同步功能在PHY 以及KeyStone1 和KeyStone2 芯片上的應(yīng)用方案。以太網(wǎng)PHY 實(shí)現(xiàn)1588 同步的精度最高,但是成本相對(duì)比較昂貴;德州儀器的KeyStone 架構(gòu)上集成了支持1588 的Switch,用戶可以通過(guò)KeyStone 架構(gòu)靈活實(shí)現(xiàn)1588 同步功能,也為用戶的方案設(shè)計(jì)提供了更多的選擇。
評(píng)論