1. SYNC/SYSREF
为了正确使用JESD204B的SYNC或SYSREF,了解SYNC/SYSREF系统很重要。SYNC和SYSREF信号共享相同的时钟路径,SYNC_DISX位用于启用从SYSREF/SYNC到每个分压器复位端口的路径。
下图说明了包含SYNC电路的时钟输出块的结构。
包含SYNC电路的时钟输出块结构
下图说明了互连,并强调了用于控制器件的SYNC/SYSREF的一些重要寄存器。
互连结构
要复位或同步一个分压器,必须满足以下条件:
- SYNC_EN必须被设置。这可以确保同步电路的正常工作。
- SYSREF_MUX和SYNC_MODE必须被设置为适当的组合,以提供一个有效的SYNC/SYSREF信号。
- 如果使用SYSREF块,SYSREF_PD位必须被清除。
- 如果使用SYSREF脉冲器,SYSREF_PLSR_PD位必须被清除。
- 对于每个被用于SYSREF的SDCLKoutY,各自的SDCLKoutY_PD位必须被清除。
- SYSREF_DDLY_PD 和 DCLKoutX_DDLY_PD位必须清除,以便在SYNC期间给数字延迟电路供电。在 SYNC 事件之后,这些位可以被设置以减少功耗。
- SYNC_DISX位必须清零,以允许SYNC/SYSREF信号重置分频器电路。SYSREF_MUX寄存器选择SYNC源。
- 其他影响SYNC操作的位,如SYNC_1SHOT_EN,可以根据需要设置。
下表说明了SYSREF_MUX和SYNC_MODE的一些可能组合。
2. JEDEC、JESD204B
如何启用SYSREF
下表总结了SYSREF功能启用需要操作的寄存器位。
启用JESD204B操作包括将所有时钟分频器与SYSREF分频器同步,然后配置实际的SYSREF功能。
SYSREF的设置示例
下面的程序是一个以3000MHz的VCO频率运行的系统的编程例子。使用DCLKout0和DCLKout2来驱动1500MHz的转换器。使用DCLKout4以150MHz的频率驱动FPGA。使用两个10MHz的SYSREF脉冲来同步转换器和FPGA。
-
根据需要对寄存器0x000到0x1fff进行编程。为SYSREF操作做准备的关键(见推荐的编程顺序):
- 为手动同步做准备:SYNC_POL = 0, SYNC_MODE = 1, SYSREF_MUX = 0
- 按照例子设置输出分频器: DCLKout0_DIV和DCLKout2_DIV = 2,频率为1500MHz。DCLKout4_DIV = 20,频率为150MHz。
- 按照例子设置输出分频器: SYSREF_DIV = 300,频率为10 MHz SYSREF。
- 设置 SYSREF: SYSREF_PD = 0, SYSREF_DDLY_PD = 0,DCLKout0_DDLY_PD = 0,DCLKout2_DDLY_PD = 0,DCLKout4_DDLY_PD = 0,SYNC_EN = 1,SYSREF_PLSR_PD = 0,SYSREF_PULSE_CNT = 1(2个脉冲)。SDCLKout1_PD = 0, SDCLKout3_PD = 0。
- 清除本地SYSREF DDLY:SYSREF_CLR = 1。
-
在SYSREF和JESD204B的设备时钟之间建立确定性的相位关系:
-
设置设备时钟和SYSREF分频器的数字延时: DCLKout0_DDLY_CNTH,DCLKout0_DDLY_CNTL、DCLKout2_DDLY_CNTH, DCLKout2_DDLY_CNTL, DCLKout4_DDLY_CNTH, DCLKout4_DDLY_CNTL、SYSREF_DDLY。
-
设置设备时钟数字延迟的半步(half steps)值: DCLKout0_HS, DCLKout2_HS, DCLKout4_HS。
-
根据需要设置SYSREF时钟数字延迟,以实现已知的相位关系: SDCLKout1_DDLY、SDCLKout3_DDLY、SDCLKout5_DDLY。
-
为了让SYNC影响分频器: SYNC_DIS0 = 0,SYNC_DIS2 = 0,SYNC_DIS4 = 0,SYNC_DISSYSREF = 0。
-
通过切换SYNC_POL=1,然后SYNC_POL=0来执行SYNC。
-
当分频器被同步时,禁止SYNC重置这些分频器。我们不希望SYSREF重置它自己的分频器或输出时钟的分频器。
- 防止SYSREF影响分频器:SYNC_DIS0 = 1, SYNC_DIS2 = 1, SYNC_DIS4 = 1, SYNC_DISSYSREF = 1。
- 释放本地SYSREF数字延迟的复位。
- SYSREF_CLR = 0。注意这个位在SYSREF_PD = 0后只需要设置15个时钟分配路径周期。
- 设置SYSREF操作。
- 允许引脚SYNC事件来启动脉冲器: SYNC_MODE = 2。
- 选择脉冲器作为SYSREF信号:SYSREF_MUX = 2。
- 程序完成后,断言SYNC引脚或改变SYNC_POL会产生一系列的2个SYSREF脉冲。
SYSREF_CLR
SDCLK输出的本地数字延迟被实现为一个移位缓冲器。为了确保在使用SYSREF时,该SYSREF输出在启动时不会出现不需要的脉冲,通过设置SYSREF_CLR=1来清除缓冲器,持续15个VCO时钟周期。该位在复位后被设置,因此,在使用SYSREF输出前必须将其清除。
SYSREF模式
SYSREF 脉冲器
这种模式允许在每个SYNC引脚事件或SPI编程时输出1、2、4或8个SYSREF脉冲。这实现了JEDEC JESD204B规范中的间隙性周期功能。 当处于SYSREF脉冲模式时,在寄存器0x13E中对字段SYSREF_PULSE_CNT进行编程,导致脉冲器发送编程的脉冲数。
连续SYSREF
这种模式允许连续输出SYSREF时钟。**不建议连续操作SYSREF,因为SYSREF时钟与设备时钟之间存在串扰。**JESD204B的设计是在启动时用一个脉冲串来初始化系统,之后理论上不需要再发送SYSREF,因为系统会继续以确定性的相位运行。如果需要连续操作SYSREF,可以考虑使用来自非相邻输出的SYSREF输出或来自OSCout引脚的SYSREF,以减少串扰。
SYSREF请求
该模式允许外部信号源使用SYNC/SYSREF_REQ引脚同步开启或关闭连续的SYSREF脉冲流。
通过编程SYSREF_REQ_EN=1和SYSREF_MUX=2(脉冲器)来设置该模式。脉冲器不需要为这种操作模式供电。
当SYSREF_REQ引脚被断言时,SYSREF_MUX被同步设置为连续模式,以SYSREF的频率提供连续的脉冲,直到SYSREF_REQ引脚被解除主张,最后SYSREF脉冲同步完成发送。
3. 数字延时
数字(粗略)延迟允许一组输出被延迟4到32个VCO周期。通过使用DCLKoutX_HS位,延迟步骤可以小到VCO周期的一半。有两种方法来使用数字延迟:
- 固定数字延迟
- 动态数字延时
在这两种延迟模式中,常规的时钟分频器被替代的分频值所取代。替代除法值由两个值组成,DCLKoutX_DDLY_CNTH和DCLKoutX_DDLY_CNTL。minimum_CNTH/_CNTL
值为2,maximum_CNTH/_CNTL
值为16。这导致最小的替代除法值为4,最大为32。
固定数字延时
固定数字延迟值在同步事件后对时钟输出产生作用。因此,在SYNC事件中,输出会有一段时间处于低电平。在调整数字延迟时不能接受时钟中断的应用应该使用动态数字延迟。
固定数字延时实例
假设器件已经有了以下的初始配置,并且应该把DCLKout2比DCLKout0延迟一个VCO周期:
- VCO频率 = 2949.12 MHz
- DCLKout0 = 368.64 MHz (DCLKout0_DIV = 8)
- DCLKout2 = 368.64 MHz (DCLKout2_DIV = 8)
应该遵循这些步骤:
- 设置DCLKout0_DDLY_CNTH = 4 和 DCLKout2_DDLY_CNTH = 4。每个时钟的第一部分延迟。
- 设置DCLKout0_DDLY_CNTL=4,DCLKout2_DDLY_CNTL=5。每个时钟的第二部分延迟。
- 设置DCLKout0_DDLY_PD=0,DCLKout2_DDLY_PD=0,给数字延迟电路上电。
- 设置SYNC_DIS0=0和SYNC_DIS2=0,允许输出同步。
- 断言SYNC,然后在对SYNC进行取消断言。可以通过使用SYNC_POL位或SYNC引脚。
- 当SYNC完成后,关闭DCLKout0_DDLY_PD=1 和/或 DCLKout2_DDLY_PD=1 以节省电源。
- 设置SYNC_DIS0=1和SYNC_DIS2=1,以防止输出被其他SYNC/SYSREF事件同步。
固定数字延时实例
动态数字延时
动态数字延迟允许时钟的相位相互改变,而对时钟信号的影响很小。这是通过在一个周期内用一个替代的除法值代替常规的时钟除法来实现的。这种替代发生的次数等于在DDLYd_STEP_CNT字段中为所有DDLYdX_EN=1的输出编程的值。
- 通过编程一个较大的交替分频器(延迟)值,调整后的输出的相位相对于其他时钟来说是延迟的。
- 通过编程一个较小的备用分频器(延迟)值,调整后的输出的相位相对于其他时钟是提前的。
下表显示了推荐的DCLKoutX_DDLY_CNTH和DCLKoutX_DDLY_CNTL交替除法设置,用于延迟一个VCO周期。在DCLKoutX_DDLY_CNTH时间内,时钟输出为高电平,允许连续输出时钟。在DCLKoutX_DDLY_CNTL时间内,时钟输出为低电平。
为了实现_CNTH/_CNTL
值为16,必须在_CNTH/_CNTL
字段中编入0。
单个和多个动态数字延时实例
在这个例子中,对设备的时钟做了两个独立的调整。在第一次调整中,在DCLKout2和DCLKout0之间发生1个VCO周期的单一延迟。在第二个调整中,在DCLKout2和DCLKout0之间发生两个1 VCO周期的延迟。在例子的这一点上,DCLKout2比DCLKout0延迟了3个VCO周期。
假设设备已经有了以下的初始配置:
- VCO频率:2949.12 MHz
- DCLKout0 = 368.64 MHz, DCLKout0_DIV = 8
- DCLKout2 = 368.64 MHz, DCLKout2_DIV = 8
下面的步骤说明了上面的例子:
-
设置DCLKout2_DDLY_CNTH = 4。DCLKout2的第一部分延迟。
-
设置DCLKout2_DDLY_CNTL = 5。DCLKout2的第二部分延迟。
-
设置DCLKout2_DDLY_PD=0,启用DCLKout2的数字延迟。
-
设置DDLYd2_EN = 1。启用DCLKout2的动态数字延迟。
-
设置 SYNC_DIS0 = 1 和 SYNC_DIS2 = 0。同步应该被禁用到 DCLKout0,但不是 DCLKout2。
-
设置SYNC_MODE = 3。启用从SPI写到DDLYd_STEP_CNT寄存器的SYNC事件。
-
设置SYNC_MODE = 2, SYSREF_MUX = 2。设置适当的SYNC设置。
-
设置DDLYd_STEP_CNT = 1。这就开始了第一次调整。
- 在第8步之前,DCLKout2的时钟边缘与DCLKout0对齐。
- 在步骤8之后,DCLKout2按照DCLKout2_DDLY_CNTH和DCLKout2_DDLY_CNTL字段的编程,计数四个VCO周期高电平,然后五个VCO周期低电平,有效地将DCLKout2相对于DCLKout0延迟一个VCO周期。这是第一次调整。
-
设置DDLYd_STEP_CNT = 2。这就开始了第二次调整。
- 在步骤9之前,DCLKout2的时钟边沿比DCLKout0延迟了1个VCO周期。
- 在第9步之后,DCLKout2在高位计数4个VCO周期,然后在低位计数5个VCO周期,这是由DCLKout2_DDLY_CNTH和DCLKout2_DDLY_CNTL字段两次编程的,相对于DCLKout0,DCLKout2延迟了两个VCO周期。这是第二次调整。
单个和多个动态数字延时实例
4. SYSREF到设备时钟的对准
为了确保JESD204B的正常运行,必须调整SYSREF和设备时钟之间的时序关系,以获得最佳的设置和保持时间。
时钟偏斜
全局SYSREF数字延迟(SYSREF_DDLY)。本地SYSREF数字延迟(SDCLKoutY_DDLY),本地SYSREF半步(SDCLKoutY_HS)和本地SYSREF模拟延迟(SDCLKoutY_ADLY,SDCLKoutY_ADLY_EN)可以调整以提供SYSREF和器件时钟之间所需的建立和保持时间。还可以调整设备时钟数字延迟(DCLKoutX_DDLY_CNTH, DCLKoutX_DDLY_CNTL)、设备时钟半步(DCLKoutX_HS)、设备时钟模拟延迟(DCLKoutX_ADLY, DCLKoutX_ADLY_EN)和设备时钟复用(DCLKoutX_MUX, DCLKoutX_ADLY_MUX)来调整相对于SYSREF的相位。
根据DCLKoutX和SYSREF分频器的设置,可能需要一些调整来正确地将DCLKoutX与SDCLKoutY对齐。公式1和公式2预测了DCLKoutX到SDCLKoutY的相对延迟:
其中
- 如果sysref_div % 4 < 2,sysref_div_adjust = 2 ;否则sysref_div_adjust = 3
- 如果(占空比校正已启用),DCLKoutX_MUX_ADJUST = 1; 否则 DCLKoutX_MUX_ADJUST = 0
对于相对延迟方程,应该使用周期延迟而不是寄存器值,因为周期延迟并不总是等于寄存器值(例如:_CNTH/_CNTL=0
,延迟=16)。
器件时钟占空比校正可以通过设置DCLKoutX_MUX=1(仅数字)或设置DCLKoutX_MUX=3和DCLKoutX_ADLY_MUX=1来启用数字和模拟路径。如果在任一路径上启用了半步,延迟可以通过从启用的路径上减去0.5来计算。
举个例子,如果DCLKoutX_DDLY_CNTH=7,DCLKoutX_DDLY_CNTL=6,SYSREF_DDLY=8,SDCLKoutY_DDLY=2周期,SYSREF_DIV=30,DCLKoutX_MUX=1,DCLKoutX_HS=0,SDCLKoutX_HS=0:
要计算从DCLKoutX的第一个边缘到SDCLKoutY的第一个边缘的预期时间延迟,请参考下面的方程进行计算。用适当的时间值(以秒为单位)来代替模拟延迟(根据 DCLKoutX_ADLY、DCLKoutX_ADLY_MUX、DCLKout_MUX和SDCLKoutY_ADLY_EN, SDCLKoutY_ADLY的字段的设置数值)。
tsJESD204B在电气特性部分提供了上述例子中的条件,即-80 ps。
5. 输入时钟切换
手动、引脚选择和自动是三种时钟输入切换模式,可以通过CLKin_SEL_MODE寄存器来设置。下面将介绍如何选择有效的输入时钟,以及在各种时钟输入选择模式下导致切换事件的原因。
输入时钟切换 - 手动模式
当CLKin_SEL_MODE为0、1或2时,则CLKin0、CLKin1或CLKin2分别被选择为活动输入时钟。手动模式还覆盖了EN_CLKinX位,这样即使EN_CLKinX=0,CLKinX缓冲器也会工作。
如果在这种模式下进入保持状态,在保持状态退出后,设备会重新锁定到选定的CLKin。
输入时钟切换 - 引脚选择模式
当CLKin_SEL_MODE为3时,引脚CLKin_SEL0和CLKin_SEL1选择哪个时钟输入为有效。
配置引脚选择模式
- CLKin_SEL0_TYPE必须被编程为一个输入值,以便CLKin_SEL0引脚作为引脚选择模式的输入。
- CLKin_SEL1_TYPE必须被编程为一个输入值,以便CLKin_SEL1引脚作为引脚选择模式的输入。
- 如果CLKin_SELX_TYPE被设置为输出,则该引脚的输入值被视为低电平。
- CLKin_SEL0和CLKin_SEL1输入引脚的极性可以通过CLKin_SEL_INV位进行反转。
下表定义了根据CLKin_SEL0和CLKin_SEL1的状态,哪个输入时钟是有效的。
引脚选择模式忽略了EN_CLKinX位,这样,即使EN_CLKinX=0,CLKinX缓冲器也会工作。为了尽可能快地进行切换,请保持可切换的时钟输入缓冲器的启用(EN_CLKinX = 1)。
输入时钟切换 - 自动模式
当CLKin_SEL_MODE为4,LOS_EN = 1时,从输入时钟切换事件开始,按照启用的时钟输入的轮流顺序选择活动时钟。时钟的切换顺序是CLKin0 → CLKin1 → CLKin2 → CLKin0,以此类推。
为了使一个时钟输入有资格被切换通过,它必须使用EN_CLKinX使能。LOS_TIMEOUT也应该被设置为低于输入频率的频率。
为了确保LOS对交流耦合输入有效,必须为CLKinX设置MOS模式,除非有直流阻断,否则引脚之间不允许有终端。例如,对于进入CLKin0的LVDS差分信号,在交流耦合电容的IC侧的CLKin0和CLKin0*引脚之间不应直接放置100Ω的终端。100Ω可以放置在交流耦合电容的发射器一侧。
启动有效时钟
在对这种模式进行编程时,如果PLL1锁定检测为高电平,则当前的有效时钟保持有效。为了确保在启动这种模式时,某个特定的时钟输入是有效时钟,将CLKin_SEL_MODE编程为手动模式,选择所需的时钟输入(CLKin0、1或2)。等待PLL1锁定PLL1_DLD = 1,然后用CLKin_SEL_MODE = 4选择这种模式。
6. 数字锁定检测
PLL1和PLL2都支持数字锁定检测。数字锁定检测在相位检测器上比较PLL的参考路径(R)和反馈路径(N)之间的相位。当两个信号之间的时间误差(相位误差)小于指定的窗口大小(ε)时,锁定检测计数会增加。当锁定检测计数达到用户指定的值PLL1_DLD_CNT或PLL2_DLD_CNT时,锁定检测被断言(真)。当数字锁定检测为真时,在指定窗口之外的单相比较会导致数字锁定检测被取消(假)。
数字锁检测流程图
这个增量锁定检测计数功能作为一个数字滤波器,以确保在初始相位锁定期间,当R和N的相位在规定的公差内的短暂时间内,锁定检测不会被断言。数字锁定检测信号可以在Status_LD1或Status_LD2引脚上监测。该引脚可以被编程为输出PLL1、PLL2或PLL1和PLL2的锁定检测的状态。数字锁定检测功能也可以与保持器一起使用,以自动退出保持器模式。
在相位检测器频率的周期接近默认的PLL1_WND_SIZE增量值(40ns)的情况下,锁定检测电路将无法使用PLL1_WND_SIZE的默认值。对于频率在25 MHz或以上的PLL1相位检测器,TI建议将PLL1_WND_SIZE设置为小于或等于0x02(19 ns)。
7. 保持模式
当PLL1的输入时钟参考变为无效时,当PLL1失去锁定时,或当CPout1的电压超出用户指定的可接受范围时,保持模式使PLL2保持锁定频率,并使频率漂移最小。当处于保持模式时,PLL1的电荷泵是三态的,并且在CPout1上设置了一个固定的调谐电压,使PLL1在开环中运行。
启用保持模式
编程 HOLDOVER_EN = 1 以启用保持模式。启用保持模式不会使器件处于保持状态,除非满足相关条件(例如:PLL1失去锁定)。编程HOLDOVER_FORCE = 1,强制器件进入保持模式。保持模式可以被配置为在进入保持状态时将CPout1电压设置为一个固定的用户定义的电压或一个跟踪电压。
固定(手动)CPout1 保持模式
通过编程MAN_DAC_EN = 1,MAN_DAC值在保持期间被设置在CPout1引脚上。
用户可以选择启用CPout1电压跟踪(TRACK_EN = 1),回读跟踪的DAC值,然后根据以前DAC回读的信息,将MAN_DAC值重新编程为用户需要的值。这允许用户对保持的CPout1电压进行最大的控制,但也需要更多的用户干预。
跟踪的CPout1保持模式
通过编程 MAN_DAC_EN = 0 和 TRACK_EN = 1,CPout1 的跟踪电压在保持期间被设置在 CPout1 引脚上。当DAC获得当前CPout1电压时,DAC_Locked信号被设置,可以通过编程PLL1_LD_MUX或PLL2_LD_MUX分别在Status_LD1或Status_LD2引脚上观察。
跟踪CPout1子模式的DAC值的更新是以PLL1相位检测器频率除以(DAC_CLK_MULT × DAC_CLK_CNTR)的速率进行的。
DAC的更新速率应被编程为≤100 kHz,以确保DAC的保持精度。
对慢速DAC更新率进行编程的能力,例如,当使用1024kHz PLL1相位检测器频率,DAC_CLK_MULT = 16,384,DAC_CLK_CNTR = 255时,允许器件回看并将CPout1设置在导致保持发生的事件之前的 "良好 "CPout1调整电压值。使用RB_DAC_VALUE可以读回DAC值的当前电压。
进入保持模式
有几种方法可以进入保持状态。
- HOLDOVER_LOS_DET = 1,检测到活动参考的丢失。
- HOLDOVER_PLL1_DET = 1,检测到PLL1失去锁定。
- HOLDOVER_VTUNE_DET = 1,并且DAC在CPout1上监测到的电压小于DAC_TRIP_LOW设置的值,或大于DAC_TRIP_HIGH设置的值。
- holdover_force = 1。
在保持模式期间
PLL1以开环模式运行。
- PLL1充电泵被设置为TRI-STATE。
- PLL1的DLD被取消断言。
- HOLDOVER状态被断言。
- 在保持期间,如果PLL2在进入保持模式之前被锁定,PLL2 DLD继续被断言。
- CPout1电压被设置为:
- MAN_DAC寄存器中设置的电压(MAN_DAC_EN = 1)。
- 被确定为最后一个有效的CPout1电压(MAN_DAC_EN = 0)。
- PLL1试图与有效的时钟输入进行锁定。
通过将PLL1_DLD_MUX或PLL2_DLD_MUX寄存器编程为HOLDOVER状态,可以在Status_LD1或Status_LD2引脚上监测HOLDOVER状态信号。
退出保持模式
可以通过以下两种方式之一退出暂存模式。
- 手动,通过从主机对设备进行编程。
- 自动,通过在活动时钟输入上的当前PLL1频率的特定ppm范围内运行的时钟。
保持频率精度和 DAC 性能
当处于保持模式时,PLL1以开环方式运行,DAC设置CPout1电压。如果使用固定的CPout1模式,那么DAC的输出与MAN_DAC寄存器的电压有关。如果使用跟踪的CPout1模式,那么DAC的输出是进入保持模式前CPout1引脚的电压。当使用跟踪模式且MAN_DAC_EN=1时,在保持期间,DAC的值被加载到MAN_DAC中的编程值,而不是跟踪的值。
当处于跟踪CPout1模式时,当获得PLL1调谐电压时,DAC的最坏情况下的跟踪误差为±2 LSBs。步长约为3.2 mV,因此在保持模式下由DAC跟踪精度引起的VCXO频率误差为±6.4 mV × Kv,其中Kv是使用中的VCXO的调谐灵敏度。因此,当处于保持模式时,系统的精度以ppm计:
例如:考虑一个具有19.2MHz时钟输入的系统,和一个153.6MHz的VCXO,Kv为17 kHz/V。该系统的保持精度为ppm: ±0.71 ppm = ±6.4 mV × 17 kHz/V × 1e6 / 153.6 MHz
保持模式 - 自动退出保持模式
LMK0482x 器件可被编程为在活动时钟输入的频率达到指定精度时自动退出保持模式。可编程的变量包括 PLL1_WND_SIZE 和 HOLDOVER_DLD_CNT。计算寄存器的值,以便在参考信号恢复到用户指定的保持频率的ppm误差范围内时,使保持模式自动退出。
退出保持的时间可能有所不同,因为自动保持退出的条件是参考和反馈信号的时间/相位误差小于一个可编程的值。由于两个时钟信号的频率可能非常接近,但相位却不接近,因此在保持退出之前,时钟的相位可能需要很长时间才能在允许的时间/相位误差内对齐。