This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

LMK05318B: 搭配intel i210 SDP引脚实现PTP时钟时,LOPL_DPLL无法清除,此时时钟频率是否有效?

Part Number: LMK05318B

我目前正在尝试通过intel i210来同步一台Aes67音频设备输出的PTP时钟,i210输出的参考时钟再通过LMK05318B过滤/倍频后输出I2S时钟给下游设备。

i210由一台x86 linux pc控制,通过linux的ptp4l同步外部时钟,testptp程序来控制i210的sdp引脚输出2Khz的方波信号作为LMK05318B的参考时钟,LMK05318B的XO晶振是12.288M的TCXO

测试用的PCB是我自己绘制的,目前测试所使用的寄存器配置如下:

R0	0x000010
R1	0x00010B
R2	0x000235
R3	0x000342
R4	0x000412
R5	0x00051D
R6	0x000619
R7	0x00072F
R8	0x000802
R10	0x000ACA
R11	0x000B00
R12	0x000C1B
R13	0x000D00
R14	0x000E80
R15	0x000F00
R16	0x001040
R17	0x00111D
R18	0x0012FF
R19	0x001300
R20	0x001480
R21	0x001501
R22	0x001600
R23	0x001755
R24	0x001855
R25	0x001900
R26	0x001A00
R27	0x001B00
R28	0x001C01
R29	0x001D13
R30	0x001E40
R32	0x002044
R35	0x002300
R36	0x002403
R37	0x002500
R38	0x002600
R39	0x002702
R40	0x00280F
R41	0x002900
R42	0x002A11
R43	0x002BC2
R44	0x002C00
R45	0x002D04
R46	0x002E88
R47	0x002F07
R48	0x00300A
R49	0x00314A
R50	0x003202
R51	0x003300
R52	0x003400
R53	0x00350F
R54	0x003680
R55	0x003700
R56	0x003824
R57	0x003900
R58	0x003A0F
R59	0x003B00
R60	0x003C0F
R61	0x003D00
R62	0x003E0F
R63	0x003FBC
R64	0x004000
R65	0x004101
R66	0x004212
R67	0x004358
R68	0x004408
R69	0x004500
R70	0x004600
R71	0x004700
R72	0x004820
R73	0x004900
R74	0x004A00
R75	0x004B00
R76	0x004C00
R77	0x004D0F
R78	0x004E00
R79	0x004F01
R80	0x005000
R81	0x00510A
R82	0x005200
R83	0x005307
R84	0x005433
R85	0x005534
R86	0x005600
R87	0x00571E
R88	0x005884
R89	0x005983
R90	0x005A00
R91	0x005B14
R92	0x005C00
R93	0x005D07
R94	0x005E33
R95	0x005F34
R96	0x006000
R97	0x00611E
R98	0x006284
R99	0x006383
R100	0x006428
R101	0x006501
R102	0x006644
R103	0x00670F
R104	0x00681F
R105	0x00690D
R106	0x006A00
R107	0x006B64
R108	0x006C00
R109	0x006D65
R110	0x006EB9
R111	0x006FAA
R112	0x0070AA
R113	0x0071AA
R114	0x0072AB
R115	0x007303
R116	0x007401
R117	0x007500
R118	0x007600
R119	0x007700
R120	0x007800
R121	0x007900
R122	0x007A00
R123	0x007BB9
R124	0x007C76
R125	0x007D96
R126	0x007EB5
R127	0x007FFA
R128	0x008000
R129	0x008101
R130	0x008200
R131	0x008301
R132	0x008401
R133	0x008577
R134	0x008600
R135	0x00872A
R136	0x008800
R137	0x008947
R138	0x008A7C
R139	0x008B03
R140	0x008C02
R141	0x008D00
R142	0x008E01
R143	0x008F01
R144	0x009077
R145	0x009101
R146	0x0092C6
R147	0x00930B
R149	0x00950D
R150	0x009600
R151	0x009701
R152	0x00980D
R153	0x009929
R154	0x009A24
R155	0x009B7B
R156	0x009C04
R157	0x009D00
R158	0x009E7B
R159	0x009F00
R160	0x00A000
R161	0x00A12F
R162	0x00A27B
R164	0x00A400
R165	0x00A500
R167	0x00A701
R178	0x00B200
R180	0x00B400
R181	0x00B500
R182	0x00B600
R183	0x00B700
R184	0x00B800
R185	0x00B904
R186	0x00BA08
R187	0x00BB00
R188	0x00BC00
R189	0x00BD00
R190	0x00BE2C
R191	0x00BF00
R192	0x00C070
R193	0x00C12B
R194	0x00C200
R195	0x00C304
R196	0x00C4C4
R197	0x00C5CB
R198	0x00C600
R199	0x00C700
R200	0x00C81D
R201	0x00C900
R202	0x00CA04
R203	0x00CBC4
R204	0x00CC9D
R205	0x00CD00
R206	0x00CE00
R207	0x00CF15
R208	0x00D000
R209	0x00D114
R210	0x00D200
R211	0x00D316
R212	0x00D400
R213	0x00D514
R214	0x00D600
R215	0x00D716
R216	0x00D800
R217	0x00D900
R218	0x00DA00
R219	0x00DB19
R220	0x00DC6E
R221	0x00DD00
R222	0x00DE03
R223	0x00DF0D
R224	0x00E047
R225	0x00E100
R226	0x00E200
R227	0x00E319
R228	0x00E46E
R229	0x00E500
R230	0x00E603
R231	0x00E70D
R232	0x00E847
R233	0x00E90F
R234	0x00EA10
R235	0x00EB00
R236	0x00EC01
R237	0x00EDE0
R238	0x00EE00
R239	0x00EF02
R240	0x00F0DC
R241	0x00F16C
R242	0x00F200
R243	0x00F300
R244	0x00F400
R249	0x00F921
R250	0x00FA00
R251	0x00FB03
R252	0x00FC2D
R253	0x00FD00
R254	0x00FE00
R255	0x00FF00
R256	0x010000
R257	0x010101
R258	0x010200
R259	0x010300
R260	0x010402
R261	0x010580
R262	0x010600
R263	0x010700
R264	0x010826
R265	0x010925
R266	0x010AA0
R267	0x010BA0
R268	0x010C04
R269	0x010D00
R270	0x010E03
R271	0x010F6E
R272	0x01101F
R273	0x01111F
R274	0x01121F
R275	0x011313
R276	0x011413
R277	0x011513
R278	0x011609
R279	0x011709
R280	0x011809
R281	0x011907
R282	0x011A07
R283	0x011B07
R284	0x011C1E
R285	0x011D1E
R286	0x011E00
R287	0x011F00
R288	0x012000
R289	0x012100
R290	0x012203
R291	0x0123C6
R292	0x012401
R293	0x012501
R294	0x012600
R295	0x012724
R296	0x012807
R297	0x012907
R298	0x012A07
R299	0x012B01
R300	0x012C00
R301	0x012D17
R302	0x012E1C
R303	0x012F01
R304	0x013001
R305	0x013100
R306	0x013203
R307	0x01332D
R308	0x0134CD
R309	0x013555
R310	0x013655
R311	0x013755
R312	0x013855
R313	0x013955
R314	0x013AFF
R315	0x013BFF
R316	0x013CFF
R317	0x013DFF
R318	0x013EFF
R319	0x013F03
R320	0x014000
R321	0x01410A
R322	0x014200
R323	0x014300
R324	0x014400
R325	0x0145C0
R326	0x014600
R327	0x014798
R328	0x014896
R329	0x014980
R330	0x014A00
R331	0x014B64
R332	0x014C00
R333	0x014D00
R334	0x014EF4
R335	0x014F24
R336	0x015000
R337	0x015198
R338	0x015296
R339	0x015380
R340	0x015400
R341	0x015500
R342	0x015600
R343	0x015700
R344	0x015800
R345	0x015900
R346	0x015A02
R347	0x015B00
R348	0x015C00
R349	0x015D00
R350	0x015E00
R351	0x015F00
R352	0x016000
R357	0x016528
R367	0x016F28
R411	0x019B04

目前观察到的现象是:在大多数情况下,LOPL_DPLL无法被清除(即使等待超过一个小时),而LOFL_DPLL则会在i210输出2Khz时钟后很快清除。

我的问题是:

1. LOPL_DPLL代表什么含义?

2. 在LOFL_DPLL保持清除但是LOPL_DPLL被标记时,输出的时钟信号频率是否有效(即,已经跟随REF信号的频率)?

  • 已经收到了您的案例,调查需要些时间,感谢您的耐心等待。

  • 补充一些信息:

    在ptp4l还未运行时,可以观察到LOPL_DPLL会有较多时间处于被清除的状态,下图是我在这种状态下用逻辑分析仪采集设置为LOPL输出时的status引脚信号(时长约为5分钟):

    一旦开始运行ptp4l将网卡时钟同步到外部时钟后,LOPL_DPLL将会持续处于标记状态,除非增大DPLL phase lock detect中的lock and unlock thresholds.

    一个新问题:
    手册中明确提到了不应修改DPLL phase lock detect中的参数,这些参数只用于debug,那么如果修改了这些参数会给输出的时钟带来什么样的影响?

  • 是否也可以共享用于导出十六进制文件的.tcs文件?

    此外,请确保您使用的是最新的TICS Pro(v1.7.9.0)来生成文件。

    LOPL参数用于状态标志。如果你扩大阈值,那么你就允许LOPL标志随着更多的REF输入到VCO输出相位误差而清除。如果收紧阈值,则LOPL标志需要更长的时间才能清除,因为DPLL需要更多的时间来更新和减少REF到VCO的相位误差。

    我会查看你的档案,并在下周初回复调查结果。

  • 据我所知,i210的频率输出会不断更新LMK。

    我更怀疑ptp的锁定。
    假设i210电路基于英特尔i210-T1板等参考设计。
    使用上游igb驱动程序,可以使用perpps用户空间工具在SDP引脚头上使用任意频率功能。
    #perpps-d/dev/ptp0-P 1500000

    但是i210锁相环对ptp主站的跟随程度如何?
    将i210直接连接到GM或BC,可以实现10-100ns左右的ptp4l抖动。

    完全不同的方法是定制i210板,LMK直接向i210提供25MHz时钟。
    最好使用具有新DCO功能的改进型igb驱动程序。
    “igb_ptp.c函数igb-ptp_adjfine_82580()”


    在没有运行ptp4l的情况下,LMK是否会在您的设置中锁定?
    消除ptp带来的抖动。

  • 没有运行PTP4l的情况下可以可以锁定,但会存在偶尔失锁的情况(LOPL_DPLL被短暂标记后清除)。

    我的其中一台设备输出的ptp时钟存在明显的抖动,可以看到RMS的值会频繁变化。

    我会尝试更新ptp4l的启动配置项并检查锁定的情况。

  • PTPv2的均方根值波动的固有抖动通常在10-100ns左右。也许稍微低一点。
    i210具有1000BASE-T链路能力,核心时钟为125MHz(125Mbaud 5级编码PAM信令)
    因此需要8ns的时间戳和触发步骤。调整(i210 TIMINCA寄存器)以2-32nS的分辨率进行,但这是通过计算/插值,即脉冲跳过。

    我希望与大家分享我的测试,以获得实用的数字。
    使用SDP引脚上的ptp约束i210 PPS作为LMK05318B的1Hz参考进行测试。
    这些是今天在广播制作环境中测试的数字。
    Telestream SPG8000 GM(GPS锁定)->Arista交换机BC->Netgear AV交换机BC->i210 PPS->LMK05318B

    #ptp4l -f /etc/linuxptp.cfg -l 6 -m
    ptp4l[560.164]: selected /dev/ptp0 as PTP clock
    ptp4l[560.166]: port 1: INITIALIZING to LISTENING on INIT_COMPLETE
    ptp4l[560.166]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE
    ptp4l[560.276]: port 1: new foreign master 28993a.ffff.7697d7-310
    ptp4l[560.776]: selected best master clock 080011.fffe.233914
    ptp4l[560.777]: updating UTC offset to 37
    ptp4l[560.777]: port 1: LISTENING to UNCALIBRATED on RS_SLAVE
    ptp4l[561.161]: port 1: UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED
    ptp4l[561.913]: rms  159 max  196 freq   +128 +/- 102 delay  1961 +/-  10
    ptp4l[562.912]: rms   53 max   82 freq   +114 +/-  39 delay  1972 +/-   5
    ptp4l[563.912]: rms   46 max   82 freq    +59 +/-  63 delay  1967 +/-   7
    ptp4l[564.921]: rms   44 max   85 freq    +32 +/-  58 delay  1975 +/-   4
    ptp4l[565.922]: rms   47 max   87 freq    +70 +/-  62 delay  1971 +/-   3
    ptp4l[566.923]: rms   46 max  106 freq    +23 +/-  58 delay  1979 +/-   2
    ptp4l[567.924]: rms   43 max   71 freq    +56 +/-  57 delay  1965 +/-   4
    ptp4l[568.927]: rms   48 max   96 freq   +119 +/-  37 delay  1958 +/-   3
    ptp4l[569.926]: rms   44 max   65 freq    +17 +/-  38 delay  1967 +/-   5
    ptp4l[570.931]: rms   35 max   65 freq    +48 +/-  48 delay  1970 +/-   2
    ptp4l[571.931]: rms   52 max  121 freq    +54 +/-  72 delay  1967 +/-   4
    ptp4l[572.932]: rms   44 max   68 freq    +59 +/-  60 delay  1968 +/-   6
    ptp4l[573.937]: rms   37 max   61 freq    +27 +/-  45 delay  1967 +/-   3
    ptp4l[574.937]: rms   61 max  151 freq    +52 +/-  85 delay  1956 +/-   9
    ptp4l[575.944]: rms   34 max   54 freq    +81 +/-  42 delay  1963 +/-  13
    ptp4l[576.941]: rms   32 max   70 freq    +44 +/-  41 delay  1972 +/-  11
    ptp4l[577.943]: rms   38 max   82 freq    +24 +/-  48 delay  1969 +/-   4
    ptp4l[578.945]: rms   36 max   88 freq    +55 +/-  48 delay  1968 +/-   5

    Jun 12 13:55:46 buildroot kernel: [  522.659066] igb 0000:0a:00.0 eth0: igb: eth0 NIC Link is Up 1000 Mbps Full Duplex
    Jun 12 14:06:27 buildroot kernel: [ 1220.096709] igb_ptp_enable_i210 (980): PPS enabled on eth0 SDP1
    Jun 12 14:06:37 buildroot kernel: [ 1230.509340] igb 0000:0a:00.0: DPLL SECREF valid
    Jun 12 14:06:37 buildroot kernel: [ 1230.511142] igb 0000:0a:00.0: DPLL Holdover event end
    Jun 12 14:06:40 buildroot kernel: [ 1233.582262] igb 0000:0a:00.0: DPLL frequency locked
    Jun 12 14:09:00 buildroot kernel: [ 1373.863621] igb 0000:0a:00.0: DPLL phase locked
    Jun 12 16:23:20 buildroot kernel: [ 9433.444128] igb 0000:0a:00.0: DPLL Tuning word history update
    Jun 12 18:39:52 buildroot kernel: [17625.115360] igb 0000:0a:00.0: DPLL Tuning word history update
    Jun 12 20:56:24 buildroot kernel: [25816.787711] igb 0000:0a:00.0: DPLL Tuning word history update

    前三次历史更新没有丢失锁相。(每8192秒)
    因此,在ptp上锁定LMK应该是非常可行的。
    当遵循PTP GM时,i210 PPS输出的PPM频率偏移与SDP引脚上的2KHz频率偏移相同。

    您在开机或配置后是否应用了LMK软重置?

  • 我会在配置后使用LMK软重置,如果烧录EEPROM则会断电硬重启。

    在我的测试过程中,当有非PTP的数据包时(这是日常的使用情况),PTP4l的输出日志中可以看到存在短时间内RMS值突增的情况:

    ptp4l[28807.082]: rms 46 max 86 freq +10130 +/- 63
    ptp4l[28808.082]: rms 62 max 95 freq +10139 +/- 86
    ptp4l[28809.081]: rms 44 max 85 freq +10173 +/- 57
    ptp4l[28810.081]: rms 56 max 86 freq +10142 +/- 76
    ptp4l[28811.081]: rms 56 max 98 freq +10162 +/- 77
    ptp4l[28812.081]: rms 39 max 72 freq +10175 +/- 53
    ptp4l[28813.081]: rms 59 max 101 freq +10157 +/- 80
    ptp4l[28814.081]: rms 48 max 112 freq +10134 +/- 63
    ptp4l[28815.081]: rms 34 max 58 freq +10124 +/- 44
    ptp4l[28816.082]: rms 33 max 65 freq +10149 +/- 44
    ptp4l[28817.081]: rms 1444 max 4016 freq +10865 +/- 1929 delay 4336 +/- 0
    ptp4l[28818.081]: rms 482 max 674 freq +9695 +/- 91
    ptp4l[28819.082]: rms 108 max 188 freq +9947 +/- 71
    ptp4l[28820.082]: rms 68 max 112 freq +10089 +/- 88
    ptp4l[28821.082]: rms 85 max 138 freq +10184 +/- 87
    ptp4l[28822.081]: rms 54 max 95 freq +10210 +/- 53
    ptp4l[28823.082]: rms 46 max 83 freq +10168 +/- 64
    ptp4l[28824.082]: rms 52 max 86 freq +10181 +/- 72

    如果关闭其他类型的数据通信而只有PTP数据时,RMS会相对稳定的维持在100以内,但这在实际使用的场景中不可行。

    我尝试过多种不同的ptp4l配置,但目前来看,还是会存在让LMK短暂标记LOPL的情况,时间从几百毫秒到十几秒不等。

    这种短暂的LOPL标记是否会影响最终输出时钟的稳定性和精度?

  • “如果关闭了其他类型的数据通信”
    您是指SPI或I2C总线仅在PTP DCO事务中处于活动状态吗?
    “这种简短的LOPL标记会影响最终输出时钟的稳定性和准确性吗?”
    在简短的LOPL标记过程中,你能检查LOFL和HOLDVR是否保持为0吗?
    如果LOFL=HOLDVR=0且LOPL=1,则输出具有REF输入的频率稳定性和精度。
    如果LOFL=HOLDVR=1且LOPL=1,则设备处于搁置状态。在短期停留期间,基于累积的调谐字历史数据,输出继续遵循REF输入的稳定性和准确性。在长期滞留期间,历史数据已经过时,输出具有XO输入的频率稳定性和准确性。
    此外,如果您使用所需的配置对EEPROM进行编程,则启动后不需要SWRST,因为APLL校准会在启动时从EEPROM加载后自动发生。如果执行启动后编程并修改APLL寄存器,建议使用SWRST。
    回到TCXO,你能分享一下你正在使用的零件的数据表和规格吗?
    感谢Jennifer的DPLL部分。我将更深入地探讨此案的PTP部分。

    查看ptp4l日志,我看到了一些东西。
    使用这种特殊的i210 nic,LMK只有在看到PTP GM后才能具有稳定的锁相,因为i210 XO的静态频率偏移为+10142 ppb。(10.142ppm>5.12ppm容许误差)
    rms和峰值抖动数看起来并不奇怪。这种差异可能是由于网络拥塞、数据包重新排序、不对称延迟造成的。或者可能是一个不太明显的配置错误,比如在GM或交换机BC中混合不同的PTP配置文件。(IEEE 1588第19.3.1.1条)但这个异常值看起来像是一个系统性错误。我相信,它也会在没有其他交通的情况下发生,但频率较低,也许几天一次。PTP是为定时+其他流量而设计的。


    https://pub.smpte.org/pub/st2059-2/st2059-2-2021.pdf

    另一方面,我们的目标是创建一个符合SMPTE ST2059标准的PTP跟随器,LMK05318B可以作为抖动清洁器+定时飞轮来挽救局面。
    另请参见ptp4l滤波效果,其频率跳跃为10.149->10.865->9.695->9.947ppm,而ptp在早期/晚期出现了近4000ns的毛刺。
    ptp4l软件算法有一个pi循环,其中kp_exports=-0.3,ki_exporte=-0.4。

    如果跟随器比开关的TC/BC贡献的时间误差更适合中断和相位步长,那就太好了。我的经验是,音频比视频对时间失真更敏感。

    顺便说一句:我记得有一个i210驱动程序错误。共享中断,由两个可能导致外部事件的例程处理
    或者错过时间戳。请确保使用最新的驱动程序。

    为了排除GM、网络交换机甚至可疑的“双重清除”驱动程序错误,您可以让ptp4l运行,然后断开网络。i210产生空转但调整后的2KHz波和LMK应锁定频率+相位稳定。务必完成电源循环。
    #使用此NIC,phc_ctl eth1频率应显示约10142 ppb

  • “如果关闭了其他类型的数据通信” 指的是在网络上,尽可能不传输其他类型的网络数据,其中最主要的是AES67协议所使用的RTP组播协议数据包。

    “在简短的LOPL标记过程中,你能检查LOFL和HOLDVR是否保持为0吗?”在整个运行过程中,LOFL和HOLDVR均保持为0

    “我记得有一个i210驱动程序错误。共享中断,由两个可能导致外部事件的例程处理” 我尝试了使用更新的i226v,两者的表现几乎相同,我遇到的问题应该不是i210的驱动程序错误所导致。

    “为了排除GM、网络交换机甚至可疑的“双重清除”驱动程序错误,您可以让ptp4l运行,然后断开网络。i210产生空转但调整后的2KHz波和LMK应锁定频率+相位稳定。务必完成电源循环。” 我尝试过,在此状态下LMK可以锁定且LOPL保持为0

    “回到TCXO,你能分享一下你正在使用的零件的数据表和规格吗?” 提供给LMK的晶振并没有数据表,外壳上印有3.3-5v,±0.1ppm的参数

  • 1: 其他以太网流量
    2: 在整个操作过程中,LOFL和HOLDVR保持在0
    好的

    3: i226是i210的一个很好的继承者,我同意你的观点,它不是NIC或它的驱动程序。
    它使用不同的内核驱动程序igc而不是igb。
    这两款芯片都设计得很好,i210用于1GBASE-T,i226用于2.5GBASE-T,具有更好的抖动规格、更低的功耗和PCIe PTM。

    4: 排除GM,网络交换机。..“在此状态下,LMK可以锁定,LOPL保持在0”
    有趣。通过断开(链路断开)或不运行ptp4l,不再进行PHC频率调整。事实上,i210/i226然后是自由运行的发电机,之前通过遵循GM进行调整,接近0 PPM。

    5: TCXO参数为3.3-5v和±0.1ppm。
    这个TCXO应该很好。如果你有一个好的参考和计数器,也许你可以验证频率偏移。


    在延迟计算过程中,ptp4l伺服算法似乎受到网络路径延迟变化的影响。
    作为PTPv2协议的一部分,通过delay\u REQ/delay\u RESP数据包连续跟踪路径延迟。
    但是,如果开关缓冲区在DELAY\u REQ和DELAY\u RESP数据包之间进行调整,就会出现异常值。
    也许将PTP模式BC切换为TC(边界时钟/TransparantClock)可以解决这种情况下的异常值。
    很明显,LMK和i210配合得很好。这个以太网交换机上的所有ptp设备都会有这些异常值,但这取决于它们在看到/听到失真时的工作精度。
    linux ptp社区也在讨论并致力于过滤异常值[1][2]。但另一方面,异常值不应该发生在支持PTP的工业网络上。Linuxptp堆栈过滤是受欢迎的,希望他们能引入这一点。

    问题是:即使使用LOPL,PTP频率/相位跟踪是否符合EAS67广播规范?
    您是否有能力根据AES67+ST2110-10标准进行测量?
    或者,当接收到的AES67音频转换为AES/EBU或SPDIF时,您是否听到失真?

    [1] sourceforge.net/.../
    [2] gist.github.com/.../5a4dff7e089bd429c5d208d9276e1683