赛灵思
直播中

潘础功

7年用户 142经验值
私信 关注
[问答]

Spartan 6 DCM LOCKED没有输出时钟

所以这很奇怪而且很间歇。
我有一个S6LX45的设计。
它使用一个PLL和八个DCM。
8个DCM时钟输入来自馈送BUFIO2的GCLK引脚。
BUFIO2分频器被禁用,DIVCLK输出进入DCM的时钟输入。
DCM仅用于相移(用于处理源同步输入数据)。
这8个DCM时钟输入来自ADC,它采用内部重新驱动的输入时钟,以便将数据时钟提供给FPGA
FPGA中的PLL提供ADC输入时钟(它们很常见)。
八个DCM保持复位状态,直到PLL锁定为止,然后持续更长时间以确保所有ADC输出时钟(到FPGA)都在运行。
然后移除DCM重置并且所有内容都应锁定。
有一些逻辑监视每个DCM的LOCKED输出,如果它们中的任何一个消失,则DCM的复位被置位几个时钟,然后我等待大约650微秒(比指定的最大锁定时间长)并测试LOCKED
再次。
如果LOCKED仍然不为真,则重置/等待再次运行。
问题:
每隔一段时间,也许每20个电源周期,其中一个DCM拒绝工作。
它的输出时钟永远不会切换,但其DCM LOCKED标志变为真。
我已经确认输入时钟始终存在。
有什么可能导致这种情况?
----------------------------是的,我这样做是为了谋生。

以上来自于谷歌翻译


以下为原文

So this is very weird and very intermittent. I have a design in an S6LX45. It uses one PLL and eight DCMs. The eight DCM clock inputs each come from a GCLK pin feeding a BUFIO2. The BUFIO2 divider is disabled, and the DIVCLK out goes to the DCM's clock input. The DCM is used only for phase shift (to deal with source synchronous input data). These eight DCM clock inputs come from an ADC, which takes an input clock which is redriven internally to provide the data clock back to the FPGA.

The PLL in the FPGA sources the ADC input clocks (they're common). The eight DCMs are held in reset until the PLL locks, and then for longer to ensure that all of the ADC output clocks (to the FPGA) are running. Then the DCM reset is removed and everything should lock.

There is logic which monitors each of the DCM's LOCKED outputs, and if any one of them goes away, that DCM's reset is asserted for several clocks, and then I wait for some 650 microseconds (longer than the specified maximum lock time) and test LOCKED again. If LOCKED is still not true, the reset/wait runs again.

The problem:

Every so often, perhaps every 20th power cycle, one of the DCMs refuses to work. Its output clock never toggles but its DCM LOCKED flag goes true. I have verified that the input clock is always present.

What could possibly cause this?
----------------------------Yes, I do this for a living.

回帖(3)

潘晶燕

2019-7-26 13:21:21
b,
使用的DCM是否具有CLKFX输出?
在DFS模式(合成)中,失败是停止转换(当LOCKED保持为真时)。
当时钟源的抖动超出DFS能够跟踪的抖动时,就会发生这种情况。
输入时钟丢失有一个状态标志,这对我们没有帮助,但检查是否需要复位也很好。
您可能必须创建一个活动检测器来强制重置。
在DLL相关的DCM输出的情况下,我不知道输入时钟是好的任何情况,并且输出时钟被卡住。
这可能是一个不好的部分(这一部分有这个问题)?
Austin Lesea主要工程师Xilinx San Jose

以上来自于谷歌翻译


以下为原文

b,
 
Is that DCM in use have a CLKFX output?
 
In the DFS mode (synthesis) the failure is to stop transistioning (while LOCKED remains true).  It happens when the clock source has jitter beyond what the DFS is able to track.
 
There is a status flag for the loss of input clock, and that is not going to help, but that also is good to check to see if a reset is required.
 
You may have to create an activity detector to force a reset.
 
In the case of the DLL releated outputs of the DCM, I am unaware of any case where the input clock is good, and the output clock is stuck.  Might this be a bad part (this one part has this problem)?
 
 
Austin Lesea
Principal Engineer
Xilinx San Jose
举报

黄淳

2019-7-26 13:35:09
奥斯汀写道:
b,
使用的DCM是否具有CLKFX输出?
在DFS模式(合成)中,失败是停止转换(当LOCKED保持为真时)。
当时钟源的抖动超出DFS能够跟踪的抖动时,就会发生这种情况。
嗨,奥斯汀,谢谢你的阅读。
没有DFS,只有DLL。
输入时钟丢失有一个状态标志,这对我们没有帮助,但检查是否需要复位也很好。
在我挖掘并将DCM LOCKED带到测试点之前,我考虑过检查,然后我读了详细信息并意识到无输入时钟状态行保持复位状态,直到DCM锁定为止。
我曾假设DCM没有锁定,所以它不是一个有用的输出。
现在,我发现DCM已锁定,我应该重新评估。
您可能必须创建一个活动检测器来强制重置。
这就是我的想法。
很简单。
在DLL相关的DCM输出的情况下,我不知道输入时钟是好的任何情况,并且输出时钟被卡住。
这可能是一个不好的部分(这一部分有这个问题)?
“好”的消息是,这发生在不止一块板上!
(多个板上的可重复错误比在一块板上发生的要好。)
每个板有两个S6(总共16个ADC通道,8个馈送一个FPGA),问题主要发生在一个特定的FPGA和通道上。
有几次我看到它会影响另一个FPGA上的同一个通道。
尽管FPGA使用很少,但它们都是消防呼吸器,所以有一个冷却块,冷却水通过它安装在FPGA上。
好的,更深入研究报告。
----------------------------是的,我这样做是为了谋生。

以上来自于谷歌翻译


以下为原文

austin wrote:
b,
 
Is that DCM in use have a CLKFX output?
 
In the DFS mode (synthesis) the failure is to stop transistioning (while LOCKED remains true).  It happens when the clock source has jitter beyond what the DFS is able to track.
Hi, Austin, thanks for reading.
 
No DFS, just the DLL.
There is a status flag for the loss of input clock, and that is not going to help, but that also is good to check to see if a reset is required.
Before I dug in and brought out the DCM LOCKED to a test point, I had considered checking that, then I read the details and realized that the no-input-clock status line is held in reset until the DCM locks. I had assumed that the DCM wasn't locking, so it wasn't a useful output. Now that I see that the DCM locked goes true, I should reassess.
You may have to create an activity detector to force a reset.
That is what I figured. Simple enough.
In the case of the DLL releated outputs of the DCM, I am unaware of any case where the input clock is good, and the output clock is stuck. Might this be a bad part (this one part has this problem)?
The "good" news is that this this happens on more than one board! (Repeatable bugs across more than one board are better than it happening on one board.)
 
Each board has two of the S6s (total 16 ADC channels, 8 feeding one FPGA), and the problem occurs mostly on one specific FPGA and channel. A couple of times I have seen it affect the same channel on the other FPGA.
 
Even though the FPGAs are lightly utilized, they are firebreathers, so there is a cooling block with chilled water running through it mounted against the FPGAs.
 
OK, more delving into reports.
----------------------------Yes, I do this for a living.
举报

潘晶燕

2019-7-26 13:43:00
b,
在过去,我看到时钟振荡器有启动问题(跳跃,跳跃,下降直到稳定......)。
我建议您在开机后根据时间查看重置。
另外,JITTER_FILTER属性很有意思:DLL每6个时钟检查一次这个值(递减/递增?我忘了哪个 - 并检查)。
如果它为零,则对抽头进行更新(提前/延迟以保持同相)。
如果值为0xfffh,请尝试0x8000h(实际上,尝试不同的设置)。
我已经看到这个“修复”了一些与时钟振荡器相关的问题(以及通过更少地改变抽头来减少输出上的抖动)。
我没有验证S6上的DCM / DFS(我是在验证/表征V2,S3,V4 DCM的团队中)。
我不知道他们是否改变了输出逻辑。
如果他们这样做,则可能会出现一些故障停止输出(但我不知道先前实现中DLL中的那种行为)。
Austin Lesea主要工程师Xilinx San Jose

以上来自于谷歌翻译


以下为原文

b,
 
In the past, I have seen clock oscillators with start-up issues (jump, hop, drop until stable...).
 
I suggest you look at a reset just based on time after power on.
 
Also, the JITTER_FILTER attribute is interesting to look at:  the DLL checks this value every 6 clocks (decrement/increment? I forget which - and check).  If it is zero, then an update to the taps are made (advance/retard to stay in phase).  If the value is 0xfffh, try 0x8000h (in effect, try different settings).  I have seen this 'fix' some clock oscillator related issues (as well as reduce jitter on the output by changing taps much less often).
 
I did not verify the DCM/DFS on S6 (I was on the team that verified/characterized V2, S3's, V4 DCM's).  I do not know if they changed the output logic.  If they did, it then becomes possible that some glitch stops the outputs (but I am unaware of that behavior in the DLL in previous implementations).
 
 
Austin Lesea
Principal Engineer
Xilinx San Jose
举报

更多回帖

发帖
×
20
完善资料,
赚取积分