赛灵思
直播中

王敏

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

如何锁定DCM

你好
在DCM中有一个RESET输入引脚。
我已将RESET引脚指定为
分配RESET = ~LOCKED // DCM锁定,希望这将使RESET从开始起至少保持三个时钟周期。
当我使用这种类型的赋值时,一些如何锁定DCM
有些事情是错的。
我还发现使用SRL16可以获得DCM的RESET脉冲。
一旦DCM锁定到高电平,并假设示波器正在向DCM供电而没有任何中断,DCM是否有可能锁定为低电平?
如果是,则应至少有三个时钟周期的高RESET脉冲才能重新获得锁定,这是正确的吗?
请改正
问候
费萨尔

以上来自于谷歌翻译


以下为原文

Hi

In DCM there is a RESET  input pin.

I have assigned the RESET pin as

assign RESET = ~ LOCKED // DCM lock , Hope this will keep RESET to high at  least three clock cycles from the begining.

Some how DCM is not get locked , when I use this type of assignment

Some thing is wrong.

Also I have found that using SRL16  ,it is possible to get a RESET pulse for DCM . Once the DCM get locked to high ,and assume that oscilltor is feeding the DCM without any interruption , Is there any posiibility for DCM locked to go low ?.

If it is yes , there should be a high RESET pulse for atleast three clock cycles to re acquire the lock, Is that correct?



Please correct

Regards

Faisal

回帖(10)

刘瑞

2019-6-6 07:33:29
DCM在开机时不会被锁定,因此您的分配将导致它永远不会从重置中释放。
使用状态机检测失锁,在适当的时间内置位复位,然后暂停一段时间以使DCM有时间获取锁定。

以上来自于谷歌翻译


以下为原文

The DCM will not be locked at power on, so your assignment will cause it to never be released from reset.
 
Use a state machine to detect loss of lock, assert reset for the appropriate amount of time, then hold off for a while to give the DCM time to acquire the lock.
举报

卿洁

2019-6-6 07:51:30
谢谢
使用状态机检测失锁,断言重置
适当的时间,然后暂缓一段时间给DCM
获得锁定的时间。
我用过
总是@(posedge CLKFX)开始lock_shift如果(lock_shift == 4'b1111)开始lock_real
高电平有效RST引脚必须连接到动态信号或必须接地。
RST输入必须置位三个有效CLKIN周期或更长时间。
因此有必要将RESET作为外部输入(接地),我是否正确?
如何使用RESET for DCM和其余逻辑?
任何帮助,将不胜感激?
问候
费萨尔

以上来自于谷歌翻译


以下为原文

Thanks
 
Use a state machine to detect loss of lock, assert reset for the appropriate amount of time, then hold off for a while to give the DCM time to acquire the lock.
 
I have used as
 
always@(posedge CLKFX)
begin
    lock_shift <= {lock_shift[2:0], LOCKED};
        if(lock_shift == 4'b1111)
                begin
                lock_real <= 1'b1; // DCM stable
                end
        else
                begin
                lock_real <= 1'b0; // Unstable
                end
end
 
 
In this i did not use  any external RESET . What I did is
 
rst_reg=1'b0;
assign RESET = rst_reg;
 
Did I miss anything ?
 
From the datasheet
 
If the DCM loses lock—i.e., the LOCKED output was High then goes Low—then the FPGA
application must assert RST to force the DCM to reacquire the input clock frequency.


The active-High RST pin either must connect to a dynamic signal or must be
tied to ground. The RST input must be asserted for three valid CLKIN cycles or longer.

 
 
So it is necessary to have a RESET as external input (ground) , Am I correct ?
 
How to use the RESET for DCM and rest of the logic ?
 
Any help would be appreciated?
 
Regards
 
Faisal
 
 
举报

张晓宁

2019-6-6 08:09:25
我认为断言RESET输入会导致时钟输出停止,并导致LOCK输出被置低。
如果您依靠PLL或DCM时钟输出来同步清除RESET信号,则可能需要等待很长时间。
我对正确使用RESET输入到PLL或DCM的理解是: 
当LOCK因CLOCK输入中断或干扰而丢失时,在输入CLOCK重新建立并稳定后,短暂置位RESET以复位内部LOCK电路。
这将加速重新获取LOCK到新的输入时钟。
- 鲍勃埃尔金德
签名:新手的自述文件在这里:http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369总结:1。
阅读手册或用户指南。
你读过手册了吗?
你能找到手册吗?2。
搜索论坛(并搜索网页)以寻找类似的主题。
不要在多个论坛上发布相同的问题。
不要在别人的主题上发布新主题或问题,开始新的主题!5。
学生:复制代码与学习设计不同.6“它不起作用”不是一个可以回答的问题。
提供有用的详细信息(请与网页,数据表链接).7。
您的代码中的评论不需要支付额外费用。
我没有支付论坛帖子的费用。
如果我写一篇好文章,那么我一无所获。

以上来自于谷歌翻译


以下为原文

I believe that asserting RESET input causes clock outputs to halt, and causes LOCK output to be de-asserted.
If you are relying on PLL or DCM clock outputs to synchronously clear the RESET signal, you might be waiting a very long time.
 
My understanding of the proper use of RESET input to PLL or DCM is:
when LOCK has been lost due to CLOCK input interruption or disturbance, assert RESET briefly to reset the internal LOCK circuitry after the input CLOCK has been re-established and stabilised.  This will speed up re-acquisition of LOCK to the new input clock.
- Bob Elkind
SIGNATURE:
README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369

Summary:
1. Read the manual or user guide.  Have you read the manual? Can you find the manual?
2. Search the forums (and search the web) for similar topics.
3. Do not post the same question on multiple forums.
4. Do not post a new topic or question on someone else's thread, start a new thread!
5. Students: Copying code is not the same as learning to design.
6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please).
7. You are not charged extra fees for comments in your code.
8. I am not paid for forum posts.  If I write a good post, then I have been good for nothing.
举报

刘瑞

2019-6-6 08:21:05
pfaisalbe写道:
因此有必要将RESET作为外部输入(接地),我是否正确?
在那段代码中,您根本没有重置DCM。
手册说你必须将RST连接到动态控制信号(状态机或其他东西)或接地(如果你不想打扰它,也许你的输入时钟非常稳定)。
只要输入时钟良好,您的代码就可以正常工作。
也许其他人可以评论是否依赖任何DCM永远锁定是一个好主意?
我想它不是。
DS162规定,LOCK_DLL是DCM获取锁定所需的最长时间,为5 ms,因此您的逻辑必须至少在重置之间暂停一段时间,否则它有可能无法锁定。

以上来自于谷歌翻译


以下为原文

 
pfaisalbe wrote:
[size=11.8056px] 
So it is necessary to have a RESET as external input (ground) , Am I correct ?
 
In that piece of code, you didn't reset the DCM at all. The manual says you have to connect RST to a dynamic control signal (a state machine, or something else) OR ground (if you don't want to bother with resetting it, perhaps if your input clock is very stable). Your code should work, as long as your input clock is good. Maybe someone else can comment on whether it's a good idea to ever rely on any DCM remaining locked forever? I imagine it's not.
 
DS162 states that LOCK_DLL, the maximum time that the DCM can take to acquire a lock, is 5 ms, so your logic must pause for at least this amount of time between resets or else there's a chance it won't ever lock.
举报

更多回帖

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