• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 测试测量 > 技术文章 > DP83640 IEEE 1588 PTP同步时钟输出

DP83640 IEEE 1588 PTP同步时钟输出

录入:edatop.com    点击:

1.0 引言

许多工业、测试和测量、通信应用都要求高精度的时钟信号以便同步控制信号和捕捉数据等。在标准以太网中应用的IEEE 1588精密时间协议(PTP)为传播主时钟时序给系统中的许多结点提供了一种方法。当前的实现方法单纯依靠软件,或软件和FPGA或ASIC的混合。尽管用这些实现方法的结点能基于主时钟来产生时钟输出信号,但这样的信号精度不足以满足系统对极低的时钟抖动的要求。此外,系统上的时钟相位对准也有严格要求。DP83640精密PHYTER®提供了这两个问题的解决方案。本应用注释适用于产品DP83640。

2.0 背景

DP83640包括一个高度可配置的时钟输出信号,其与内置的IEEE 1588时钟谐振。注意到谐振意味着频率相同而相位则不必相同。这个时钟的标称频率是250 MHz的整除结果,例如250 MHz/N,其中N为从2到255的整数。因此标称频率取980.4 kHz到125 MHz之间的离散值。

DP83640采用软件辅助的速率纠正来限制本地时钟和主参考时钟之间的频率失调。最终输出频率结合的速率纠正参数(例如ppm失调)与内置IEEE 1588时钟时序上的相同。因为速率纠正的单位是亚毫微秒(1亚毫微秒=2-32纳秒),对时钟输出频率进行精细调谐(达十亿分之一的数量级)。

除了固定速率纠正以外,对速率纠正编程使其工作在某特定值,持续时间短达1/2秒(一个"临时速率")。在临时速率持续时间结束后,速率纠正返回至固定速率纠正值。通过在短时时间隔内纠正额外的频率失调,时钟输出信号不会在频率或者相位上表现出离散阶跃。DP83640也提供了一种使时钟输出信号相位对准主时钟相位的方法。与采用8 ns离散精度产生的器件触发输出不同,时钟输出由可调谐的模拟源,即频率控制振荡器(FCO)或相位产生模块(PGM)来产生。默认情况为,在上电时激活时钟输出,工作频率为25MHz,但是1588逻辑,包括1588时钟,必须在工作前作初始化。因此时钟输出和1588主时钟之间的初始相位关系是未知的。然而,明智地使用DP83640的特性可使时钟输出相位对准1588时钟的相位。

两种1588时钟源各有优点。FCO方法提供了更好的抖动性能,但纠正范围较小,而且为了在链接丢失事件发生时保留时钟相位,在使用上有所限制。PGM方法没有上述限制并能提供较大的纠正范围,但其长时间抖动性能不如FCO方法那么好。

3.0 理论

3.1 速率纠正

IEEE 1588时钟输出速率纠正功能利用了与内置1588时钟相同的逻辑。DP83640包括26位速率纠正参数,以每个参考时钟周期内的亚毫微秒数为单位。在软件控制下,当本地参考时钟比主时钟运行较慢时,速率纠正为正值,当本地参考时钟比主时钟运行更快时,速率纠正表现为负值。以每8纳秒时钟周期1亚毫微秒的速率纠正间隔,时钟输出是可调的,增量为2-32亚毫微秒 / 8纳秒 = 十亿分之0.029(ppb)。

采用P T P 速率控制寄存器( P T P _ R AT E H 和PTP_RATEL)和PTP临时速率控制寄存器(PTP_TRDH和PTP_TRDL)来控制PTP速率。

固定速率纠正可以如下方式编程:

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

2. 将该值的低16位写入PTP_RATEL寄存器。在速率写到PTP_RATEL时即生效。

举例:设定固定速率纠正至相对于主时钟的-100 ppm1. 因为标称参考时钟周期为8 ns,100 ppm为0.0008 ns,即0.0008 * 232 亚毫微秒,大约等于3435974亚毫微秒(0x346DC6)。

2. 将0x8034写入PTP_RATEH。

3. 将0x6DC6写入PTP_RATEL。

除了也必须设定PTP_RATEH的第14位(0x4000)以
外,一个临时的速率纠正以编程固定速率纠正类似的方法得以编成。因为临时速率在写入PTP_RATEL寄存器时立即生效,所以在设定临时速率前必须对PTP临时速率延时寄存器进行编程。在临时速率持续时间结束后,将速率纠正数值切换回到固定速率纠正数值。临时速率延时必须按以下方式配置:

1. 临时速率持续时间为一个26位的数,单位是时钟周期。在默认的8 ns参考时钟周期时,最大持续时间约为537 ms。

2. 将临时速率持续时间的上10位写入PTP_TRDH。

3. 将临时速率持续时间的低16位写入PTP_TRDL。在写该寄存器时临时速率持续时间立即生效,并且会保持恒定,直到通过写寄存器操作进行修改。通常不需要改变临时速率的持续时间。

举例:在10 ms内设定临时速率纠正持续时间为+3 ns:

1. 若要在默认参考时钟周期下实现1 ms的临时速率持续时间,我们需要10 ms / 8 ns = 1250000个时钟周期(0x1312D0)。若要在1250000个时钟周期实现+3ns的纠正,需要3 ns / 1250000 = 0.0000024 ns =10308亚毫微秒/时钟周期(0x2844)。

2. 将0x0013写入PTP_TRDH。

3. 将0x12D0写入PTP_TRDL。

4. 将0xC000写入PTP_RATEH。

5. 将0x2844写入PTP_RATEL。

3.1.1 最大速率纠正

由于通常不需要较大的速率纠正(如大于100 ppm),为1588时钟输出而对源信号的选择决定了最大速率纠正。

当使用FCO时,最大有效速率纠正为0x1555555,即+/- 651ppm。当使用PGM时,最大有效速率纠正为0x3FFFFFF,也即 +/- 1953 ppm。

3.2 相位对准

时钟输出相位的对准要求执行下列步骤:

1. 确保已使能时钟输出引脚。

2. 在使能PTP同步协议之前,使能时钟输出和PTP时钟。

3. 使能单个事件的事件监控器以捕捉时钟输出引脚的上升沿。

4. 通过对准的期望时间确定时钟输出失调:时钟输出周期,即事件时间标记模时钟输出周期。

5. 执行一个步长调整以对准时钟输出。

6. 在同步期间,所有的步长调节都应以时钟输出周期为单位。

举例:一个10 MHz时钟输出的相位对准:

1. 确保时钟输出引脚是使能的。在上电之前将GPIO1引脚拉到高电平,或清除PHYCR2寄存器(页面0,寄存器0x1C)的CLK_OUT_DISABLE位(第2位)来实现该操作。

2. 在10 MHz处使能时钟输出: 将0 x 8 0 1 9 写入PTP_COC寄存器中。注意到0x19的十进制为25,用25去除250MHz时钟。使能PTP时钟:将0x0004写入PTP_CTL寄存器。

3. 取CLK_OUT相位错误的100个样值

— 使能事件监控并得到事件的时间标记:

— 将0x1CE1写入PTP_EVNT寄存器。

— 将0x5CE1写入PTP_EVNT寄存器中。

第一个写操作为CLK_OUT/GPIO12(时钟输出引脚)与事件7(尽管可使用任何事件)设置一个单独的事件捕捉。第二个写操作执行相同的操作,并使能了捕捉。

— 读取PTP_ESTS寄存器检查0位是否被设置。如果没有,请等待并重复这一步。

— 一旦TP_ESTS的0位被设定,通过对PTP_ESTS值的7:6位加1,从而确定事件时间标记长度(1到4个16位字)。

— 确保事件数目为7,既PTP_ESTS的4:2位的值等于7。

— 确保事件为上升沿。通过PTP_ESTS第5位的数值等于1来指示。

— 读取PTP_EDATA寄存器。事件时间标记返回如下:

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

— 从时间标记中减去三倍的参考时钟周期和11 ns;对于通常为8 ns的参考时钟周期,这个值为35 ns。由此对引脚输入延时和边沿检测进行了纠正。

— 计算相位误差为(100–(事件时间标记模100))。

若结果与时钟周期相等(在此为100 ns),则相位误差为0。若相位误差在时钟周期的10 ns之内(在此为91-99 ns),则设置"高值"标志。这等同与负相位误差在-9到-1 ns内的情况。

4. 平均相位误差。如果有小的正和负相位误差的样值,比如已设了高值(HighValue),并且相位误差的样值小于10 ns,则必须将时钟周期加到样值上,以便正确地做样值平均:

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

5. 若平均相位误差大于时钟周期,则减去时钟周期以得到最终的平均相位误差。

作者:美国国家半导体公司   来源:维库开发网

点击浏览:矢量网络分析仪、频谱仪、示波器,使用操作培训教程

上一篇:利用差频电路实现微电容式传感器检测电路的温漂抑制
下一篇:一种高性价比等精度数字频率计方案设计

微波射频测量操作培训课程详情>>
射频和天线工程师培训课程详情>>

  网站地图