为什么我的Arria 10器件fPLL在分数“精确k”模式下报告解锁状态?-Altera-Intel社区-FPGA CPLD-ChipDebug

为什么我的Arria 10器件fPLL在分数“精确k”模式下报告解锁状态?

由于Arria®10器件分数PLL(fPLL)硬锁定检测电路存在问题,当使用分数“精确k”模式时,fPLL可能会报告解锁状态。

当fPLL处于分数模式时,反馈计数器值是M和K的函数(pll_dsm_fractional_division)。公式为“M(整数)+ K / 2 ^ 32”。 K的合法值是1到2 ^ 32-1

“K因子”定义为“ pll_dsm_fractional_division / 2 ^ 32 ”,

当K因子小于0.1或大于0.9时,fPLL硬锁定检测电路不可靠。

当K因子在0.1和0.9之间时,fPLL硬锁定检测电路是可靠的。

以下示例描述了Arria 10 fPLL锁定检测电路何时可靠且不可靠。

refclk(频率)= 100MHz

N计数器= 1

M计数器= 40

K计数器(pll_dsm_fractional_division)= 2147483648

L counter = 4

PLL输出(频率)=(refclk(频率)/ N)*((M +( K / 2 ^ 32 ))/ L)

在这种情况下,

PLL输出(频率)= 100 *((40 +(2147483648/2 ^ 32 ))/ 4)

= 100 *((40 + 0.5 )/ 4)

= 100 *(40.5 / 4)

= 100 * 10.125

= 1012.5 MHz

因为小数值是0.5 (2147483648/2 ^ 32,其中K = 2147483648)并且它在0.1和0.9之间,所以锁定信号是可靠的。

解决/修复方法

当分数值小于0.1或大于0.9时,fPLL锁定信号不可靠。在这种情况下,您可以实例化以下软IP锁定检测逻辑

下载此soft_lockppm_det.zip文件

soft_lckppm_det.v文件已加密,但可用于综合,仿真和硬件测试。

软锁检测电路文件的端口列表和描述如下

端口名称

输入输出

问题描述

REF_CLK

输入

fpll的参考时钟输入

clk_low

输入

时钟从fpll开始低电平,总是切换,频率可能会关闭输出reg pll_locked

dead_ref_clk

产量

表示引用clk没有足够快地切换并被视为已死。默认阈值由模块参数PPM_THRESHOLD_FOR_DEAD_CLK定义

calibration_done

输入

来自fpll的cal_done。可以认为是二次重置

config_en

输入

配置端口启用

config_clk

输入

配置端口时钟

config_data

输入

配置端口数据。当config_en为高电平时,数据在config_clk的上升沿采样,并移入内部寄存器,存储锁定和死区时钟条件的阈值。寄存器宽度由模块参数CLK_LOW_CNT_WIDTH定义。因此,需要在所有数据中移位的总周期为2 * CLK_LOW_CNT_WIDTH周期。移位操作从锁定条件的寄存器的LSB开始。在2 * CLK_LOW_CNT_WIDTH周期后,config_data上的值将成为dead_lock条件的寄存器的MSB

重启

输入

从fpll重置

请登录后发表评论

    没有回复内容