DP83640 IEEE 1588 PTP同步時(shí)鐘輸出

1.0 引言

許多工業(yè)、測(cè)試和測(cè)量、通信應(yīng)用都要求高精度的時(shí)鐘信號(hào)以便同步控制信號(hào)和捕捉數(shù)據(jù)等。在標(biāo)準(zhǔn)以太網(wǎng)中應(yīng)用的IEEE 1588精密時(shí)間協(xié)議(PTP)為傳播主時(shí)鐘時(shí)序給系統(tǒng)中的許多結(jié)點(diǎn)提供了一種方法。當(dāng)前的實(shí)現(xiàn)方法單純依靠軟件,或軟件和FPGA或ASIC的混合。盡管用這些實(shí)現(xiàn)方法的結(jié)點(diǎn)能基于主時(shí)鐘來(lái)產(chǎn)生時(shí)鐘輸出信號(hào),但這樣的信號(hào)精度不足以滿足系統(tǒng)對(duì)極低的時(shí)鐘抖動(dòng)的要求。此外,系統(tǒng)上的時(shí)鐘相位對(duì)準(zhǔn)也有嚴(yán)格要求。DP83640精密PHYTER®提供了這兩個(gè)問題的解決方案。本應(yīng)用注釋適用于產(chǎn)品DP83640。

2.0 背景

DP83640包括一個(gè)高度可配置的時(shí)鐘輸出信號(hào),其與內(nèi)置的IEEE 1588時(shí)鐘諧振。注意到諧振意味著頻率相同而相位則不必相同。這個(gè)時(shí)鐘的標(biāo)稱頻率是250 MHz的整除結(jié)果,例如250 MHz/N,其中N為從2到255的整數(shù)。因此標(biāo)稱頻率取980.4 kHz到125 MHz之間的離散值。

DP83640采用軟件輔助的速率糾正來(lái)限制本地時(shí)鐘和主參考時(shí)鐘之間的頻率失調(diào)。最終輸出頻率結(jié)合的速率糾正參數(shù)(例如ppm失調(diào))與內(nèi)置IEEE 1588時(shí)鐘時(shí)序上的相同。因?yàn)樗俾始m正的單位是亞毫微秒(1亞毫微秒=2-32納秒),對(duì)時(shí)鐘輸出頻率進(jìn)行精細(xì)調(diào)諧(達(dá)十億分之一的數(shù)量級(jí))。

除了固定速率糾正以外,對(duì)速率糾正編程使其工作在某特定值,持續(xù)時(shí)間短達(dá)1/2秒(一個(gè)“臨時(shí)速率”)。在臨時(shí)速率持續(xù)時(shí)間結(jié)束后,速率糾正返回至固定速率糾正值。通過(guò)在短時(shí)時(shí)間隔內(nèi)糾正額外的頻率失調(diào),時(shí)鐘輸出信號(hào)不會(huì)在頻率或者相位上表現(xiàn)出離散階躍。DP83640也提供了一種使時(shí)鐘輸出信號(hào)相位對(duì)準(zhǔn)主時(shí)鐘相位的方法。與采用8 ns離散精度產(chǎn)生的器件觸發(fā)輸出不同,時(shí)鐘輸出由可調(diào)諧的模擬源,即頻率控制振蕩器(FCO)或相位產(chǎn)生模塊(PGM)來(lái)產(chǎn)生。默認(rèn)情況為,在上電時(shí)激活時(shí)鐘輸出,工作頻率為25MHz,但是1588邏輯,包括1588時(shí)鐘,必須在工作前作初始化。因此時(shí)鐘輸出和1588主時(shí)鐘之間的初始相位關(guān)系是未知的。然而,明智地使用DP83640的特性可使時(shí)鐘輸出相位對(duì)準(zhǔn)1588時(shí)鐘的相位。

兩種1588時(shí)鐘源各有優(yōu)點(diǎn)。FCO方法提供了更好的抖動(dòng)性能,但糾正范圍較小,而且為了在鏈接丟失事件發(fā)生時(shí)保留時(shí)鐘相位,在使用上有所限制。PGM方法沒有上述限制并能提供較大的糾正范圍,但其長(zhǎng)時(shí)間抖動(dòng)性能不如FCO方法那么好。

3.0 理論

3.1 速率糾正

IEEE 1588時(shí)鐘輸出速率糾正功能利用了與內(nèi)置1588時(shí)鐘相同的邏輯。DP83640包括26位速率糾正參數(shù),以每個(gè)參考時(shí)鐘周期內(nèi)的亞毫微秒數(shù)為單位。在軟件控制下,當(dāng)本地參考時(shí)鐘比主時(shí)鐘運(yùn)行較慢時(shí),速率糾正為正值,當(dāng)本地參考時(shí)鐘比主時(shí)鐘運(yùn)行更快時(shí),速率糾正表現(xiàn)為負(fù)值。以每8納秒時(shí)鐘周期1亞毫微秒的速率糾正間隔,時(shí)鐘輸出是可調(diào)的,增量為2-32亞毫微秒 / 8納秒 = 十億分之0.029(ppb)。

采用P T P 速率控制寄存器( P T P _ R AT E H 和PTP_RATEL)和PTP臨時(shí)速率控制寄存器(PTP_TRDH和PTP_TRDL)來(lái)控制PTP速率。

固定速率糾正可以如下方式編程:

1. 將速率方向(0x8000表示更高,0x0000表示更低)和該值的上10位寫入PTP_RATEH寄存器中。

2. 將該值的低16位寫入PTP_RATEL寄存器。在速率寫到PTP_RATEL時(shí)即生效。

舉例:設(shè)定固定速率糾正至相對(duì)于主時(shí)鐘的-100 ppm1. 因?yàn)闃?biāo)稱參考時(shí)鐘周期為8 ns,100 ppm為0.0008 ns,即0.0008 * 232 亞毫微秒,大約等于3435974亞毫微秒(0x346DC6)。

2. 將0x8034寫入PTP_RATEH。

3. 將0x6DC6寫入PTP_RATEL。

除了也必須設(shè)定PTP_RATEH的第14位(0x4000)以
外,一個(gè)臨時(shí)的速率糾正以編程固定速率糾正類似的方法得以編成。因?yàn)榕R時(shí)速率在寫入PTP_RATEL寄存器時(shí)立即生效,所以在設(shè)定臨時(shí)速率前必須對(duì)PTP臨時(shí)速率延時(shí)寄存器進(jìn)行編程。在臨時(shí)速率持續(xù)時(shí)間結(jié)束后,將速率糾正數(shù)值切換回到固定速率糾正數(shù)值。臨時(shí)速率延時(shí)必須按以下方式配置:

1. 臨時(shí)速率持續(xù)時(shí)間為一個(gè)26位的數(shù),單位是時(shí)鐘周期。在默認(rèn)的8 ns參考時(shí)鐘周期時(shí),最大持續(xù)時(shí)間約為537 ms。

2. 將臨時(shí)速率持續(xù)時(shí)間的上10位寫入PTP_TRDH。

3. 將臨時(shí)速率持續(xù)時(shí)間的低16位寫入PTP_TRDL。在寫該寄存器時(shí)臨時(shí)速率持續(xù)時(shí)間立即生效,并且會(huì)保持恒定,直到通過(guò)寫寄存器操作進(jìn)行修改。通常不需要改變臨時(shí)速率的持續(xù)時(shí)間。

舉例:在10 ms內(nèi)設(shè)定臨時(shí)速率糾正持續(xù)時(shí)間為+3 ns:

1. 若要在默認(rèn)參考時(shí)鐘周期下實(shí)現(xiàn)1 ms的臨時(shí)速率持續(xù)時(shí)間,我們需要10 ms / 8 ns = 1250000個(gè)時(shí)鐘周期(0x1312D0)。若要在1250000個(gè)時(shí)鐘周期實(shí)現(xiàn)+3ns的糾正,需要3 ns / 1250000 = 0.0000024 ns =10308亞毫微秒/時(shí)鐘周期(0x2844)。

2. 將0x0013寫入PTP_TRDH。

3. 將0x12D0寫入PTP_TRDL。

4. 將0xC000寫入PTP_RATEH。

5. 將0x2844寫入PTP_RATEL。

3.1.1 最大速率糾正

由于通常不需要較大的速率糾正(如大于100 ppm),為1588時(shí)鐘輸出而對(duì)源信號(hào)的選擇決定了最大速率糾正。

當(dāng)使用FCO時(shí),最大有效速率糾正為0x1555555,即+/- 651ppm。當(dāng)使用PGM時(shí),最大有效速率糾正為0x3FFFFFF,也即 +/- 1953 ppm。

3.2 相位對(duì)準(zhǔn)

時(shí)鐘輸出相位的對(duì)準(zhǔn)要求執(zhí)行下列步驟:

1. 確保已使能時(shí)鐘輸出引腳。

2. 在使能PTP同步協(xié)議之前,使能時(shí)鐘輸出和PTP時(shí)鐘。

3. 使能單個(gè)事件的事件監(jiān)控器以捕捉時(shí)鐘輸出引腳的上升沿。

4. 通過(guò)對(duì)準(zhǔn)的期望時(shí)間確定時(shí)鐘輸出失調(diào):時(shí)鐘輸出周期,即事件時(shí)間標(biāo)記模時(shí)鐘輸出周期。

5. 執(zhí)行一個(gè)步長(zhǎng)調(diào)整以對(duì)準(zhǔn)時(shí)鐘輸出。

6. 在同步期間,所有的步長(zhǎng)調(diào)節(jié)都應(yīng)以時(shí)鐘輸出周期為單位。

舉例:一個(gè)10 MHz時(shí)鐘輸出的相位對(duì)準(zhǔn):

1. 確保時(shí)鐘輸出引腳是使能的。在上電之前將GPIO1引腳拉到高電平,或清除PHYCR2寄存器(頁(yè)面0,寄存器0x1C)的CLK_OUT_DISABLE位(第2位)來(lái)實(shí)現(xiàn)該操作。

2. 在10 MHz處使能時(shí)鐘輸出: 將0 x 8 0 1 9 寫入PTP_COC寄存器中。注意到0x19的十進(jìn)制為25,用25去除250MHz時(shí)鐘。使能PTP時(shí)鐘:將0x0004寫入PTP_CTL寄存器。

3. 取CLK_OUT相位錯(cuò)誤的100個(gè)樣值

— 使能事件監(jiān)控并得到事件的時(shí)間標(biāo)記:

— 將0x1CE1寫入PTP_EVNT寄存器。

— 將0x5CE1寫入PTP_EVNT寄存器中。

第一個(gè)寫操作為CLK_OUT/GPIO12(時(shí)鐘輸出引腳)與事件7(盡管可使用任何事件)設(shè)置一個(gè)單獨(dú)的事件捕捉。第二個(gè)寫操作執(zhí)行相同的操作,并使能了捕捉。

— 讀取PTP_ESTS寄存器檢查0位是否被設(shè)置。如果沒有,請(qǐng)等待并重復(fù)這一步。

— 一旦TP_ESTS的0位被設(shè)定,通過(guò)對(duì)PTP_ESTS值的7:6位加1,從而確定事件時(shí)間標(biāo)記長(zhǎng)度(1到4個(gè)16位字)。

— 確保事件數(shù)目為7,既PTP_ESTS的4:2位的值等于7。

— 確保事件為上升沿。通過(guò)PTP_ESTS第5位的數(shù)值等于1來(lái)指示。

— 讀取PTP_EDATA寄存器。事件時(shí)間標(biāo)記返回如下:

i. 事件納秒位15:0
ii. 事件納秒位29:16
iii. 事件秒位15:0
iv. 事件秒位31:16

— 從時(shí)間標(biāo)記中減去三倍的參考時(shí)鐘周期和11 ns;對(duì)于通常為8 ns的參考時(shí)鐘周期,這個(gè)值為35 ns。由此對(duì)引腳輸入延時(shí)和邊沿檢測(cè)進(jìn)行了糾正。

— 計(jì)算相位誤差為(100–(事件時(shí)間標(biāo)記模100))。

若結(jié)果與時(shí)鐘周期相等(在此為100 ns),則相位誤差為0。若相位誤差在時(shí)鐘周期的10 ns之內(nèi)(在此為91-99 ns),則設(shè)置”高值”標(biāo)志。這等同與負(fù)相位誤差在-9到-1 ns內(nèi)的情況。

4. 平均相位誤差。如果有小的正和負(fù)相位誤差的樣值,比如已設(shè)了高值(HighValue),并且相位誤差的樣值小于10 ns,則必須將時(shí)鐘周期加到樣值上,以便正確地做樣值平均:

— If(HighValue & error[sample]<10)error[sample] +=clkout_period

5. 若平均相位誤差大于時(shí)鐘周期,則減去時(shí)鐘周期以得到最終的平均相位誤差。

 

作者:美國(guó)國(guó)家半導(dǎo)體公司   來(lái)源:維庫(kù)開發(fā)網(wǎng)
微信掃描分享本文到朋友圈
掃碼關(guān)注5G通信官方公眾號(hào),免費(fèi)領(lǐng)取以下5G精品資料
  • 1、回復(fù)“YD5GAI”免費(fèi)領(lǐng)取《中國(guó)移動(dòng):5G網(wǎng)絡(luò)AI應(yīng)用典型場(chǎng)景技術(shù)解決方案白皮書
  • 2、回復(fù)“5G6G”免費(fèi)領(lǐng)取《5G_6G毫米波測(cè)試技術(shù)白皮書-2022_03-21
  • 3、回復(fù)“YD6G”免費(fèi)領(lǐng)取《中國(guó)移動(dòng):6G至簡(jiǎn)無(wú)線接入網(wǎng)白皮書
  • 4、回復(fù)“LTBPS”免費(fèi)領(lǐng)取《《中國(guó)聯(lián)通5G終端白皮書》
  • 5、回復(fù)“ZGDX”免費(fèi)領(lǐng)取《中國(guó)電信5GNTN技術(shù)白皮書
  • 6、回復(fù)“TXSB”免費(fèi)領(lǐng)取《通信設(shè)備安裝工程施工工藝圖解
  • 7、回復(fù)“YDSL”免費(fèi)領(lǐng)取《中國(guó)移動(dòng)算力并網(wǎng)白皮書
  • 8、回復(fù)“5GX3”免費(fèi)領(lǐng)取《R1623501-g605G的系統(tǒng)架構(gòu)1
  • 本周熱點(diǎn)本月熱點(diǎn)

     

      最熱通信招聘

    業(yè)界最新資訊


      最新招聘信息